All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.debezium.ddl.parser.mysql.generated.MySqlParser Maven / Gradle / Ivy

There is a newer version: 3.0.2.Final
Show newest version
// Generated from io/debezium/ddl/parser/mysql/generated/MySqlParser.g4 by ANTLR 4.10.1
package io.debezium.ddl.parser.mysql.generated;
import org.antlr.v4.runtime.atn.*;
import org.antlr.v4.runtime.dfa.DFA;
import org.antlr.v4.runtime.*;
import org.antlr.v4.runtime.misc.*;
import org.antlr.v4.runtime.tree.*;
import java.util.List;
import java.util.Iterator;
import java.util.ArrayList;

@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"})
public class MySqlParser extends Parser {
	static { RuntimeMetaData.checkVersion("4.10.1", RuntimeMetaData.VERSION); }

	protected static final DFA[] _decisionToDFA;
	protected static final PredictionContextCache _sharedContextCache =
		new PredictionContextCache();
	public static final int
		SPACE=1, SPEC_MYSQL_COMMENT=2, COMMENT_INPUT=3, LINE_COMMENT=4, ADD=5, 
		ALL=6, ALTER=7, ALWAYS=8, ANALYZE=9, AND=10, ARRAY=11, AS=12, ASC=13, 
		ATTRIBUTE=14, AUTO=15, BEFORE=16, BETWEEN=17, BOTH=18, BUCKETS=19, BY=20, 
		CALL=21, CASCADE=22, CASE=23, CAST=24, CHANGE=25, CHARACTER=26, CHECK=27, 
		COLLATE=28, COLUMN=29, CONDITION=30, CONSTRAINT=31, CONTINUE=32, CONVERT=33, 
		CREATE=34, CROSS=35, CURRENT=36, CURRENT_ROLE=37, CURRENT_USER=38, CURSOR=39, 
		DATABASE=40, DATABASES=41, DECLARE=42, DEFAULT=43, DELAYED=44, DELETE=45, 
		DESC=46, DESCRIBE=47, DETERMINISTIC=48, DIAGNOSTICS=49, DISTINCT=50, DISTINCTROW=51, 
		DROP=52, EACH=53, ELSE=54, ELSEIF=55, EMPTY=56, ENCLOSED=57, ENFORCED=58, 
		ESCAPED=59, EXCEPT=60, EXISTS=61, EXIT=62, EXPLAIN=63, FALSE=64, FETCH=65, 
		FOR=66, FORCE=67, FOREIGN=68, FROM=69, FULLTEXT=70, GENERATED=71, GET=72, 
		GRANT=73, GROUP=74, GROUP_REPLICATION_STREAM=75, HAVING=76, HIGH_PRIORITY=77, 
		HISTOGRAM=78, IF=79, IGNORE=80, IGNORED=81, IN=82, INDEX=83, INFILE=84, 
		INNER=85, INOUT=86, INSERT=87, INTERVAL=88, INTO=89, IS=90, ITERATE=91, 
		JOIN=92, KEY=93, KEYS=94, KILL=95, LATERAL=96, LEADING=97, LEAVE=98, LEFT=99, 
		LIKE=100, LIMIT=101, LINEAR=102, LINES=103, LOAD=104, LOCK=105, LOCKED=106, 
		LOOP=107, LOW_PRIORITY=108, MASTER_BIND=109, MASTER_SSL_VERIFY_SERVER_CERT=110, 
		MATCH=111, MAXVALUE=112, MINVALUE=113, MODIFIES=114, NATURAL=115, NOT=116, 
		NO_WRITE_TO_BINLOG=117, NULL_LITERAL=118, NUMBER=119, ON=120, OPTIMIZE=121, 
		OPTION=122, OPTIONAL=123, OPTIONALLY=124, OR=125, ORDER=126, OUT=127, 
		OUTER=128, OUTFILE=129, OVER=130, PARTITION=131, PRIMARY=132, PROCEDURE=133, 
		PURGE=134, RANGE=135, READ=136, READS=137, REFERENCES=138, REGEXP=139, 
		RELEASE=140, RENAME=141, REPEAT=142, REPLACE=143, REQUIRE=144, RESIGNAL=145, 
		RESTRICT=146, RETAIN=147, RETURN=148, REVOKE=149, RIGHT=150, RLIKE=151, 
		SCHEMA=152, SCHEMAS=153, SELECT=154, SET=155, SEPARATOR=156, SHOW=157, 
		SIGNAL=158, SKIP_=159, SKIP_QUERY_REWRITE=160, SPATIAL=161, SQL=162, SQLEXCEPTION=163, 
		SQLSTATE=164, SQLWARNING=165, SQL_BIG_RESULT=166, SQL_CALC_FOUND_ROWS=167, 
		SQL_SMALL_RESULT=168, SSL=169, STACKED=170, STARTING=171, STATEMENT=172, 
		STRAIGHT_JOIN=173, SYSTEM_TIME=174, TABLE=175, TERMINATED=176, THEN=177, 
		TO=178, TRAILING=179, TRIGGER=180, TRUE=181, UNDO=182, UNION=183, UNIQUE=184, 
		UNLOCK=185, UNSIGNED=186, UPDATE=187, USAGE=188, USE=189, USING=190, VALUES=191, 
		WHEN=192, WHERE=193, WHILE=194, WITH=195, WRITE=196, XOR=197, ZEROFILL=198, 
		TINYINT=199, SMALLINT=200, MEDIUMINT=201, MIDDLEINT=202, INT=203, INT1=204, 
		INT2=205, INT3=206, INT4=207, INT8=208, INTEGER=209, BIGINT=210, REAL=211, 
		DOUBLE=212, PRECISION=213, FLOAT=214, FLOAT4=215, FLOAT8=216, DECIMAL=217, 
		DEC=218, NUMERIC=219, DATE=220, TIME=221, TIMESTAMP=222, DATETIME=223, 
		YEAR=224, CHAR=225, VARCHAR=226, NVARCHAR=227, NATIONAL=228, BINARY=229, 
		VARBINARY=230, TINYBLOB=231, BLOB=232, MEDIUMBLOB=233, LONG=234, LONGBLOB=235, 
		TINYTEXT=236, TEXT=237, MEDIUMTEXT=238, LONGTEXT=239, ENUM=240, VARYING=241, 
		SERIAL=242, YEAR_MONTH=243, DAY_HOUR=244, DAY_MINUTE=245, DAY_SECOND=246, 
		HOUR_MINUTE=247, HOUR_SECOND=248, MINUTE_SECOND=249, SECOND_MICROSECOND=250, 
		MINUTE_MICROSECOND=251, HOUR_MICROSECOND=252, DAY_MICROSECOND=253, JSON_ARRAY=254, 
		JSON_ARRAYAGG=255, JSON_ARRAY_APPEND=256, JSON_ARRAY_INSERT=257, JSON_CONTAINS=258, 
		JSON_CONTAINS_PATH=259, JSON_DEPTH=260, JSON_EXTRACT=261, JSON_INSERT=262, 
		JSON_KEYS=263, JSON_LENGTH=264, JSON_MERGE=265, JSON_MERGE_PATCH=266, 
		JSON_MERGE_PRESERVE=267, JSON_OBJECT=268, JSON_OBJECTAGG=269, JSON_OVERLAPS=270, 
		JSON_PRETTY=271, JSON_QUOTE=272, JSON_REMOVE=273, JSON_REPLACE=274, JSON_SCHEMA_VALID=275, 
		JSON_SCHEMA_VALIDATION_REPORT=276, JSON_SEARCH=277, JSON_SET=278, JSON_STORAGE_FREE=279, 
		JSON_STORAGE_SIZE=280, JSON_TABLE=281, JSON_TYPE=282, JSON_UNQUOTE=283, 
		JSON_VALID=284, JSON_VALUE=285, NESTED=286, ORDINALITY=287, PATH=288, 
		AVG=289, BIT_AND=290, BIT_OR=291, BIT_XOR=292, COUNT=293, CUME_DIST=294, 
		DENSE_RANK=295, FIRST_VALUE=296, GROUP_CONCAT=297, LAG=298, LAST_VALUE=299, 
		LEAD=300, MAX=301, MIN=302, NTILE=303, NTH_VALUE=304, PERCENT_RANK=305, 
		RANK=306, ROW_NUMBER=307, STD=308, STDDEV=309, STDDEV_POP=310, STDDEV_SAMP=311, 
		SUM=312, VAR_POP=313, VAR_SAMP=314, VARIANCE=315, CURRENT_DATE=316, CURRENT_TIME=317, 
		CURRENT_TIMESTAMP=318, LOCALTIME=319, CURDATE=320, CURTIME=321, DATE_ADD=322, 
		DATE_SUB=323, EXTRACT=324, LOCALTIMESTAMP=325, NOW=326, POSITION=327, 
		SUBSTR=328, SUBSTRING=329, SYSDATE=330, TRIM=331, UTC_DATE=332, UTC_TIME=333, 
		UTC_TIMESTAMP=334, ACCOUNT=335, ACTION=336, AFTER=337, AGGREGATE=338, 
		ALGORITHM=339, ANY=340, AT=341, AUTHORS=342, AUTOCOMMIT=343, AUTOEXTEND_SIZE=344, 
		AUTO_INCREMENT=345, AVG_ROW_LENGTH=346, BEGIN=347, BINLOG=348, BIT=349, 
		BLOCK=350, BOOL=351, BOOLEAN=352, BTREE=353, CACHE=354, CASCADED=355, 
		CHAIN=356, CHANGED=357, CHANNEL=358, CHECKSUM=359, PAGE_CHECKSUM=360, 
		CIPHER=361, CLASS_ORIGIN=362, CLIENT=363, CLOSE=364, CLUSTERING=365, COALESCE=366, 
		CODE=367, COLUMNS=368, COLUMN_FORMAT=369, COLUMN_NAME=370, COMMENT=371, 
		COMMIT=372, COMPACT=373, COMPLETION=374, COMPRESSED=375, COMPRESSION=376, 
		CONCURRENT=377, CONNECT=378, CONNECTION=379, CONSISTENT=380, CONSTRAINT_CATALOG=381, 
		CONSTRAINT_SCHEMA=382, CONSTRAINT_NAME=383, CONTAINS=384, CONTEXT=385, 
		CONTRIBUTORS=386, COPY=387, CPU=388, CYCLE=389, CURSOR_NAME=390, DATA=391, 
		DATAFILE=392, DEALLOCATE=393, DEFAULT_AUTH=394, DEFINER=395, DELAY_KEY_WRITE=396, 
		DES_KEY_FILE=397, DIRECTORY=398, DISABLE=399, DISCARD=400, DISK=401, DO=402, 
		DUMPFILE=403, DUPLICATE=404, DYNAMIC=405, ENABLE=406, ENCRYPTED=407, ENCRYPTION=408, 
		ENCRYPTION_KEY_ID=409, END=410, ENDS=411, ENGINE=412, ENGINES=413, ERROR=414, 
		ERRORS=415, ESCAPE=416, EVEN=417, EVENT=418, EVENTS=419, EVERY=420, EXCHANGE=421, 
		EXCLUSIVE=422, EXPIRE=423, EXPORT=424, EXTENDED=425, EXTENT_SIZE=426, 
		FAILED_LOGIN_ATTEMPTS=427, FAST=428, FAULTS=429, FIELDS=430, FILE_BLOCK_SIZE=431, 
		FILTER=432, FIRST=433, FIXED=434, FLUSH=435, FOLLOWING=436, FOLLOWS=437, 
		FOUND=438, FULL=439, FUNCTION=440, GENERAL=441, GLOBAL=442, GRANTS=443, 
		GROUP_REPLICATION=444, HANDLER=445, HASH=446, HELP=447, HISTORY=448, HOST=449, 
		HOSTS=450, IDENTIFIED=451, IGNORE_SERVER_IDS=452, IMPORT=453, INCREMENT=454, 
		INDEXES=455, INITIAL_SIZE=456, INPLACE=457, INSERT_METHOD=458, INSTALL=459, 
		INSTANCE=460, INSTANT=461, INVISIBLE=462, INVOKER=463, IO=464, IO_THREAD=465, 
		IPC=466, ISOLATION=467, ISSUER=468, JSON=469, KEY_BLOCK_SIZE=470, LANGUAGE=471, 
		LAST=472, LEAVES=473, LESS=474, LEVEL=475, LIST=476, LOCAL=477, LOGFILE=478, 
		LOGS=479, MASTER=480, MASTER_AUTO_POSITION=481, MASTER_CONNECT_RETRY=482, 
		MASTER_DELAY=483, MASTER_HEARTBEAT_PERIOD=484, MASTER_HOST=485, MASTER_LOG_FILE=486, 
		MASTER_LOG_POS=487, MASTER_PASSWORD=488, MASTER_PORT=489, MASTER_RETRY_COUNT=490, 
		MASTER_SSL=491, MASTER_SSL_CA=492, MASTER_SSL_CAPATH=493, MASTER_SSL_CERT=494, 
		MASTER_SSL_CIPHER=495, MASTER_SSL_CRL=496, MASTER_SSL_CRLPATH=497, MASTER_SSL_KEY=498, 
		MASTER_TLS_VERSION=499, MASTER_USER=500, MAX_CONNECTIONS_PER_HOUR=501, 
		MAX_QUERIES_PER_HOUR=502, MAX_ROWS=503, MAX_SIZE=504, MAX_UPDATES_PER_HOUR=505, 
		MAX_USER_CONNECTIONS=506, MEDIUM=507, MEMBER=508, MERGE=509, MESSAGE_TEXT=510, 
		MID=511, MIGRATE=512, MIN_ROWS=513, MODE=514, MODIFY=515, MUTEX=516, MYSQL=517, 
		MYSQL_ERRNO=518, NAME=519, NAMES=520, NCHAR=521, NEVER=522, NEXT=523, 
		NO=524, NOCACHE=525, NOCOPY=526, NOCYCLE=527, NOMAXVALUE=528, NOMINVALUE=529, 
		NOWAIT=530, NODEGROUP=531, NONE=532, ODBC=533, OFFLINE=534, OFFSET=535, 
		OF=536, OJ=537, OLD_PASSWORD=538, ONE=539, ONLINE=540, ONLY=541, OPEN=542, 
		OPTIMIZER_COSTS=543, OPTIONS=544, OWNER=545, PACK_KEYS=546, PAGE=547, 
		PAGE_COMPRESSED=548, PAGE_COMPRESSION_LEVEL=549, PARSER=550, PARTIAL=551, 
		PARTITIONING=552, PARTITIONS=553, PASSWORD=554, PASSWORD_LOCK_TIME=555, 
		PHASE=556, PLUGIN=557, PLUGIN_DIR=558, PLUGINS=559, PORT=560, PRECEDES=561, 
		PRECEDING=562, PREPARE=563, PRESERVE=564, PREV=565, PROCESSLIST=566, PROFILE=567, 
		PROFILES=568, PROXY=569, QUERY=570, QUICK=571, REBUILD=572, RECOVER=573, 
		RECURSIVE=574, REDO_BUFFER_SIZE=575, REDUNDANT=576, RELAY=577, RELAY_LOG_FILE=578, 
		RELAY_LOG_POS=579, RELAYLOG=580, REMOVE=581, REORGANIZE=582, REPAIR=583, 
		REPLICATE_DO_DB=584, REPLICATE_DO_TABLE=585, REPLICATE_IGNORE_DB=586, 
		REPLICATE_IGNORE_TABLE=587, REPLICATE_REWRITE_DB=588, REPLICATE_WILD_DO_TABLE=589, 
		REPLICATE_WILD_IGNORE_TABLE=590, REPLICATION=591, RESET=592, RESTART=593, 
		RESUME=594, RETURNED_SQLSTATE=595, RETURNING=596, RETURNS=597, REUSE=598, 
		ROLE=599, ROLLBACK=600, ROLLUP=601, ROTATE=602, ROW=603, ROWS=604, ROW_FORMAT=605, 
		RTREE=606, SAVEPOINT=607, SCHEDULE=608, SECURITY=609, SEQUENCE=610, SERVER=611, 
		SESSION=612, SHARE=613, SHARED=614, SIGNED=615, SIMPLE=616, SLAVE=617, 
		SLOW=618, SNAPSHOT=619, SOCKET=620, SOME=621, SONAME=622, SOUNDS=623, 
		SOURCE=624, SQL_AFTER_GTIDS=625, SQL_AFTER_MTS_GAPS=626, SQL_BEFORE_GTIDS=627, 
		SQL_BUFFER_RESULT=628, SQL_CACHE=629, SQL_NO_CACHE=630, SQL_THREAD=631, 
		START=632, STARTS=633, STATS_AUTO_RECALC=634, STATS_PERSISTENT=635, STATS_SAMPLE_PAGES=636, 
		STATUS=637, STOP=638, STORAGE=639, STORED=640, STRING=641, SUBCLASS_ORIGIN=642, 
		SUBJECT=643, SUBPARTITION=644, SUBPARTITIONS=645, SUSPEND=646, SWAPS=647, 
		SWITCHES=648, TABLE_NAME=649, TABLESPACE=650, TABLE_TYPE=651, TEMPORARY=652, 
		TEMPTABLE=653, THAN=654, TRADITIONAL=655, TRANSACTION=656, TRANSACTIONAL=657, 
		TRIGGERS=658, TRUNCATE=659, UNBOUNDED=660, UNDEFINED=661, UNDOFILE=662, 
		UNDO_BUFFER_SIZE=663, UNINSTALL=664, UNKNOWN=665, UNTIL=666, UPGRADE=667, 
		USER=668, USE_FRM=669, USER_RESOURCES=670, VALIDATION=671, VALUE=672, 
		VARIABLES=673, VIEW=674, VIRTUAL=675, VISIBLE=676, WAIT=677, WARNINGS=678, 
		WINDOW=679, WITHOUT=680, WORK=681, WRAPPER=682, X509=683, XA=684, XML=685, 
		YES=686, EUR=687, USA=688, JIS=689, ISO=690, INTERNAL=691, QUARTER=692, 
		MONTH=693, DAY=694, HOUR=695, MINUTE=696, WEEK=697, SECOND=698, MICROSECOND=699, 
		USER_STATISTICS=700, CLIENT_STATISTICS=701, INDEX_STATISTICS=702, TABLE_STATISTICS=703, 
		FIREWALL_RULES=704, ADMIN=705, APPLICATION_PASSWORD_ADMIN=706, AUDIT_ADMIN=707, 
		AUDIT_ABORT_EXEMPT=708, AUTHENTICATION_POLICY_ADMIN=709, BACKUP_ADMIN=710, 
		BINLOG_ADMIN=711, BINLOG_ENCRYPTION_ADMIN=712, CLONE_ADMIN=713, CONNECTION_ADMIN=714, 
		ENCRYPTION_KEY_ADMIN=715, EXECUTE=716, FILE=717, FIREWALL_ADMIN=718, FIREWALL_EXEMPT=719, 
		FIREWALL_USER=720, FLUSH_OPTIMIZER_COSTS=721, FLUSH_STATUS=722, FLUSH_TABLES=723, 
		FLUSH_USER_RESOURCES=724, GROUP_REPLICATION_ADMIN=725, INNODB_REDO_LOG_ARCHIVE=726, 
		INNODB_REDO_LOG_ENABLE=727, INVOKE=728, LAMBDA=729, NDB_STORED_USER=730, 
		PASSWORDLESS_USER_ADMIN=731, PERSIST_RO_VARIABLES_ADMIN=732, PRIVILEGES=733, 
		PROCESS=734, RELOAD=735, REPLICATION_APPLIER=736, REPLICATION_SLAVE_ADMIN=737, 
		RESOURCE_GROUP_ADMIN=738, RESOURCE_GROUP_USER=739, ROLE_ADMIN=740, ROUTINE=741, 
		S3=742, SERVICE_CONNECTION_ADMIN=743, SESSION_VARIABLES_ADMIN=744, SET_USER_ID=745, 
		SHOW_ROUTINE=746, SHUTDOWN=747, SUPER=748, SYSTEM_VARIABLES_ADMIN=749, 
		TABLES=750, TABLE_ENCRYPTION_ADMIN=751, VERSION_TOKEN_ADMIN=752, XA_RECOVER_ADMIN=753, 
		ARMSCII8=754, ASCII=755, BIG5=756, CP1250=757, CP1251=758, CP1256=759, 
		CP1257=760, CP850=761, CP852=762, CP866=763, CP932=764, DEC8=765, EUCJPMS=766, 
		EUCKR=767, GB18030=768, GB2312=769, GBK=770, GEOSTD8=771, GREEK=772, HEBREW=773, 
		HP8=774, KEYBCS2=775, KOI8R=776, KOI8U=777, LATIN1=778, LATIN2=779, LATIN5=780, 
		LATIN7=781, MACCE=782, MACROMAN=783, SJIS=784, SWE7=785, TIS620=786, UCS2=787, 
		UJIS=788, UTF16=789, UTF16LE=790, UTF32=791, UTF8=792, UTF8MB3=793, UTF8MB4=794, 
		ARCHIVE=795, BLACKHOLE=796, CSV=797, FEDERATED=798, INNODB=799, MEMORY=800, 
		MRG_MYISAM=801, MYISAM=802, NDB=803, NDBCLUSTER=804, PERFORMANCE_SCHEMA=805, 
		TOKUDB=806, REPEATABLE=807, COMMITTED=808, UNCOMMITTED=809, SERIALIZABLE=810, 
		GEOMETRYCOLLECTION=811, GEOMCOLLECTION=812, GEOMETRY=813, LINESTRING=814, 
		MULTILINESTRING=815, MULTIPOINT=816, MULTIPOLYGON=817, POINT=818, POLYGON=819, 
		ABS=820, ACOS=821, ADDDATE=822, ADDTIME=823, AES_DECRYPT=824, AES_ENCRYPT=825, 
		AREA=826, ASBINARY=827, ASIN=828, ASTEXT=829, ASWKB=830, ASWKT=831, ASYMMETRIC_DECRYPT=832, 
		ASYMMETRIC_DERIVE=833, ASYMMETRIC_ENCRYPT=834, ASYMMETRIC_SIGN=835, ASYMMETRIC_VERIFY=836, 
		ATAN=837, ATAN2=838, BENCHMARK=839, BIN=840, BIT_COUNT=841, BIT_LENGTH=842, 
		BUFFER=843, CATALOG_NAME=844, CEIL=845, CEILING=846, CENTROID=847, CHARACTER_LENGTH=848, 
		CHARSET=849, CHAR_LENGTH=850, COERCIBILITY=851, COLLATION=852, COMPRESS=853, 
		CONCAT=854, CONCAT_WS=855, CONNECTION_ID=856, CONV=857, CONVERT_TZ=858, 
		COS=859, COT=860, CRC32=861, CREATE_ASYMMETRIC_PRIV_KEY=862, CREATE_ASYMMETRIC_PUB_KEY=863, 
		CREATE_DH_PARAMETERS=864, CREATE_DIGEST=865, CROSSES=866, DATEDIFF=867, 
		DATE_FORMAT=868, DAYNAME=869, DAYOFMONTH=870, DAYOFWEEK=871, DAYOFYEAR=872, 
		DECODE=873, DEGREES=874, DES_DECRYPT=875, DES_ENCRYPT=876, DIMENSION=877, 
		DISJOINT=878, ELT=879, ENCODE=880, ENCRYPT=881, ENDPOINT=882, ENGINE_ATTRIBUTE=883, 
		ENVELOPE=884, EQUALS=885, EXP=886, EXPORT_SET=887, EXTERIORRING=888, EXTRACTVALUE=889, 
		FIELD=890, FIND_IN_SET=891, FLOOR=892, FORMAT=893, FOUND_ROWS=894, FROM_BASE64=895, 
		FROM_DAYS=896, FROM_UNIXTIME=897, GEOMCOLLFROMTEXT=898, GEOMCOLLFROMWKB=899, 
		GEOMETRYCOLLECTIONFROMTEXT=900, GEOMETRYCOLLECTIONFROMWKB=901, GEOMETRYFROMTEXT=902, 
		GEOMETRYFROMWKB=903, GEOMETRYN=904, GEOMETRYTYPE=905, GEOMFROMTEXT=906, 
		GEOMFROMWKB=907, GET_FORMAT=908, GET_LOCK=909, GLENGTH=910, GREATEST=911, 
		GTID_SUBSET=912, GTID_SUBTRACT=913, HEX=914, IFNULL=915, INET6_ATON=916, 
		INET6_NTOA=917, INET_ATON=918, INET_NTOA=919, INSTR=920, INTERIORRINGN=921, 
		INTERSECTS=922, ISCLOSED=923, ISEMPTY=924, ISNULL=925, ISSIMPLE=926, IS_FREE_LOCK=927, 
		IS_IPV4=928, IS_IPV4_COMPAT=929, IS_IPV4_MAPPED=930, IS_IPV6=931, IS_USED_LOCK=932, 
		LAST_INSERT_ID=933, LCASE=934, LEAST=935, LENGTH=936, LINEFROMTEXT=937, 
		LINEFROMWKB=938, LINESTRINGFROMTEXT=939, LINESTRINGFROMWKB=940, LN=941, 
		LOAD_FILE=942, LOCATE=943, LOG=944, LOG10=945, LOG2=946, LOWER=947, LPAD=948, 
		LTRIM=949, MAKEDATE=950, MAKETIME=951, MAKE_SET=952, MASTER_POS_WAIT=953, 
		MBRCONTAINS=954, MBRDISJOINT=955, MBREQUAL=956, MBRINTERSECTS=957, MBROVERLAPS=958, 
		MBRTOUCHES=959, MBRWITHIN=960, MD5=961, MLINEFROMTEXT=962, MLINEFROMWKB=963, 
		MONTHNAME=964, MPOINTFROMTEXT=965, MPOINTFROMWKB=966, MPOLYFROMTEXT=967, 
		MPOLYFROMWKB=968, MULTILINESTRINGFROMTEXT=969, MULTILINESTRINGFROMWKB=970, 
		MULTIPOINTFROMTEXT=971, MULTIPOINTFROMWKB=972, MULTIPOLYGONFROMTEXT=973, 
		MULTIPOLYGONFROMWKB=974, NAME_CONST=975, NULLIF=976, NUMGEOMETRIES=977, 
		NUMINTERIORRINGS=978, NUMPOINTS=979, OCT=980, OCTET_LENGTH=981, ORD=982, 
		OVERLAPS=983, PERIOD_ADD=984, PERIOD_DIFF=985, PI=986, POINTFROMTEXT=987, 
		POINTFROMWKB=988, POINTN=989, POLYFROMTEXT=990, POLYFROMWKB=991, POLYGONFROMTEXT=992, 
		POLYGONFROMWKB=993, POW=994, POWER=995, QUOTE=996, RADIANS=997, RAND=998, 
		RANDOM=999, RANDOM_BYTES=1000, RELEASE_LOCK=1001, REVERSE=1002, ROUND=1003, 
		ROW_COUNT=1004, RPAD=1005, RTRIM=1006, SEC_TO_TIME=1007, SECONDARY_ENGINE_ATTRIBUTE=1008, 
		SENSITIVE_VARIABLES_OBSERVER=1009, SESSION_USER=1010, SHA=1011, SHA1=1012, 
		SHA2=1013, SCHEMA_NAME=1014, SIGN=1015, SIN=1016, SLEEP=1017, SOUNDEX=1018, 
		SQL_THREAD_WAIT_AFTER_GTIDS=1019, SQRT=1020, SRID=1021, STARTPOINT=1022, 
		STRCMP=1023, STR_TO_DATE=1024, ST_AREA=1025, ST_ASBINARY=1026, ST_ASTEXT=1027, 
		ST_ASWKB=1028, ST_ASWKT=1029, ST_BUFFER=1030, ST_CENTROID=1031, ST_CONTAINS=1032, 
		ST_CROSSES=1033, ST_DIFFERENCE=1034, ST_DIMENSION=1035, ST_DISJOINT=1036, 
		ST_DISTANCE=1037, ST_ENDPOINT=1038, ST_ENVELOPE=1039, ST_EQUALS=1040, 
		ST_EXTERIORRING=1041, ST_GEOMCOLLFROMTEXT=1042, ST_GEOMCOLLFROMTXT=1043, 
		ST_GEOMCOLLFROMWKB=1044, ST_GEOMETRYCOLLECTIONFROMTEXT=1045, ST_GEOMETRYCOLLECTIONFROMWKB=1046, 
		ST_GEOMETRYFROMTEXT=1047, ST_GEOMETRYFROMWKB=1048, ST_GEOMETRYN=1049, 
		ST_GEOMETRYTYPE=1050, ST_GEOMFROMTEXT=1051, ST_GEOMFROMWKB=1052, ST_INTERIORRINGN=1053, 
		ST_INTERSECTION=1054, ST_INTERSECTS=1055, ST_ISCLOSED=1056, ST_ISEMPTY=1057, 
		ST_ISSIMPLE=1058, ST_LINEFROMTEXT=1059, ST_LINEFROMWKB=1060, ST_LINESTRINGFROMTEXT=1061, 
		ST_LINESTRINGFROMWKB=1062, ST_NUMGEOMETRIES=1063, ST_NUMINTERIORRING=1064, 
		ST_NUMINTERIORRINGS=1065, ST_NUMPOINTS=1066, ST_OVERLAPS=1067, ST_POINTFROMTEXT=1068, 
		ST_POINTFROMWKB=1069, ST_POINTN=1070, ST_POLYFROMTEXT=1071, ST_POLYFROMWKB=1072, 
		ST_POLYGONFROMTEXT=1073, ST_POLYGONFROMWKB=1074, ST_SRID=1075, ST_STARTPOINT=1076, 
		ST_SYMDIFFERENCE=1077, ST_TOUCHES=1078, ST_UNION=1079, ST_WITHIN=1080, 
		ST_X=1081, ST_Y=1082, SUBDATE=1083, SUBSTRING_INDEX=1084, SUBTIME=1085, 
		SYSTEM_USER=1086, SYSTEM=1087, TAN=1088, TELEMETRY_LOG_ADMIN=1089, TIMEDIFF=1090, 
		TIMESTAMPADD=1091, TIMESTAMPDIFF=1092, TIME_FORMAT=1093, TIME_TO_SEC=1094, 
		TOUCHES=1095, TO_BASE64=1096, TO_DAYS=1097, TO_SECONDS=1098, TP_CONNECTION_ADMIN=1099, 
		UCASE=1100, UNCOMPRESS=1101, UNCOMPRESSED_LENGTH=1102, UNHEX=1103, UNIX_TIMESTAMP=1104, 
		UPDATEXML=1105, UPPER=1106, UUID=1107, UUID_SHORT=1108, VALIDATE_PASSWORD_STRENGTH=1109, 
		VERSION=1110, VERSIONING=1111, WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS=1112, 
		WEEKDAY=1113, WEEKOFYEAR=1114, WEIGHT_STRING=1115, WITHIN=1116, YEARWEEK=1117, 
		Y_FUNCTION=1118, X_FUNCTION=1119, VIA=1120, LASTVAL=1121, NEXTVAL=1122, 
		SETVAL=1123, PREVIOUS=1124, PERSISTENT=1125, BINLOG_MONITOR=1126, BINLOG_REPLAY=1127, 
		FEDERATED_ADMIN=1128, READ_ONLY_ADMIN=1129, REPLICA=1130, REPLICATION_MASTER_ADMIN=1131, 
		MONITOR=1132, READ_ONLY=1133, REPLAY=1134, VAR_ASSIGN=1135, PLUS_ASSIGN=1136, 
		MINUS_ASSIGN=1137, MULT_ASSIGN=1138, DIV_ASSIGN=1139, MOD_ASSIGN=1140, 
		AND_ASSIGN=1141, XOR_ASSIGN=1142, OR_ASSIGN=1143, STAR=1144, DIVIDE=1145, 
		MODULE=1146, PLUS=1147, MINUS=1148, DIV=1149, MOD=1150, EQUAL_SYMBOL=1151, 
		GREATER_SYMBOL=1152, LESS_SYMBOL=1153, EXCLAMATION_SYMBOL=1154, BIT_NOT_OP=1155, 
		BIT_OR_OP=1156, BIT_AND_OP=1157, BIT_XOR_OP=1158, DOT=1159, LR_BRACKET=1160, 
		RR_BRACKET=1161, COMMA=1162, SEMI=1163, AT_SIGN=1164, ZERO_DECIMAL=1165, 
		ONE_DECIMAL=1166, TWO_DECIMAL=1167, SINGLE_QUOTE_SYMB=1168, DOUBLE_QUOTE_SYMB=1169, 
		REVERSE_QUOTE_SYMB=1170, COLON_SYMB=1171, CHARSET_REVERSE_QOUTE_STRING=1172, 
		FILESIZE_LITERAL=1173, START_NATIONAL_STRING_LITERAL=1174, STRING_LITERAL=1175, 
		DECIMAL_LITERAL=1176, HEXADECIMAL_LITERAL=1177, REAL_LITERAL=1178, NULL_SPEC_LITERAL=1179, 
		BIT_STRING=1180, STRING_CHARSET_NAME=1181, DOT_ID=1182, ID=1183, REVERSE_QUOTE_ID=1184, 
		HOST_IP_ADDRESS=1185, LOCAL_ID=1186, GLOBAL_ID=1187, ERROR_RECONGNIGION=1188;
	public static final int
		RULE_root = 0, RULE_sqlStatements = 1, RULE_sqlStatement = 2, RULE_setStatementFor = 3, 
		RULE_emptyStatement = 4, RULE_ddlStatement = 5, RULE_dmlStatement = 6, 
		RULE_transactionStatement = 7, RULE_replicationStatement = 8, RULE_preparedStatement = 9, 
		RULE_compoundStatement = 10, RULE_administrationStatement = 11, RULE_utilityStatement = 12, 
		RULE_createDatabase = 13, RULE_createEvent = 14, RULE_createIndex = 15, 
		RULE_createLogfileGroup = 16, RULE_createProcedure = 17, RULE_createFunction = 18, 
		RULE_createRole = 19, RULE_createServer = 20, RULE_createTable = 21, RULE_createTablespaceInnodb = 22, 
		RULE_createTablespaceNdb = 23, RULE_createTrigger = 24, RULE_withClause = 25, 
		RULE_commonTableExpressions = 26, RULE_cteName = 27, RULE_cteColumnName = 28, 
		RULE_createView = 29, RULE_createSequence = 30, RULE_sequenceSpec = 31, 
		RULE_createDatabaseOption = 32, RULE_charSet = 33, RULE_currentUserExpression = 34, 
		RULE_ownerStatement = 35, RULE_scheduleExpression = 36, RULE_timestampValue = 37, 
		RULE_intervalExpr = 38, RULE_intervalType = 39, RULE_enableType = 40, 
		RULE_indexType = 41, RULE_indexOption = 42, RULE_procedureParameter = 43, 
		RULE_functionParameter = 44, RULE_routineOption = 45, RULE_serverOption = 46, 
		RULE_createDefinitions = 47, RULE_createDefinition = 48, RULE_columnDefinition = 49, 
		RULE_columnConstraint = 50, RULE_tableConstraint = 51, RULE_referenceDefinition = 52, 
		RULE_referenceAction = 53, RULE_referenceControlType = 54, RULE_indexColumnDefinition = 55, 
		RULE_tableOption = 56, RULE_tableType = 57, RULE_tablespaceStorage = 58, 
		RULE_partitionDefinitions = 59, RULE_partitionFunctionDefinition = 60, 
		RULE_partitionSystemVersionDefinitions = 61, RULE_partitionSystemVersionDefinition = 62, 
		RULE_subpartitionFunctionDefinition = 63, RULE_partitionDefinition = 64, 
		RULE_partitionDefinerAtom = 65, RULE_partitionDefinerVector = 66, RULE_subpartitionDefinition = 67, 
		RULE_partitionOption = 68, RULE_alterDatabase = 69, RULE_alterEvent = 70, 
		RULE_alterFunction = 71, RULE_alterInstance = 72, RULE_alterLogfileGroup = 73, 
		RULE_alterProcedure = 74, RULE_alterServer = 75, RULE_alterTable = 76, 
		RULE_alterTablespace = 77, RULE_alterView = 78, RULE_alterSequence = 79, 
		RULE_alterSpecification = 80, RULE_alterPartitionSpecification = 81, RULE_dropDatabase = 82, 
		RULE_dropEvent = 83, RULE_dropIndex = 84, RULE_dropLogfileGroup = 85, 
		RULE_dropProcedure = 86, RULE_dropFunction = 87, RULE_dropServer = 88, 
		RULE_dropTable = 89, RULE_dropTablespace = 90, RULE_dropTrigger = 91, 
		RULE_dropView = 92, RULE_dropRole = 93, RULE_setRole = 94, RULE_dropSequence = 95, 
		RULE_renameTable = 96, RULE_renameTableClause = 97, RULE_truncateTable = 98, 
		RULE_callStatement = 99, RULE_deleteStatement = 100, RULE_doStatement = 101, 
		RULE_handlerStatement = 102, RULE_insertStatement = 103, RULE_loadDataStatement = 104, 
		RULE_loadXmlStatement = 105, RULE_replaceStatement = 106, RULE_selectStatement = 107, 
		RULE_valuesStatement = 108, RULE_withStatement = 109, RULE_tableStatement = 110, 
		RULE_updateStatement = 111, RULE_insertStatementValue = 112, RULE_updatedElement = 113, 
		RULE_assignmentField = 114, RULE_lockClause = 115, RULE_singleDeleteStatement = 116, 
		RULE_multipleDeleteStatement = 117, RULE_handlerOpenStatement = 118, RULE_handlerReadIndexStatement = 119, 
		RULE_handlerReadStatement = 120, RULE_handlerCloseStatement = 121, RULE_singleUpdateStatement = 122, 
		RULE_multipleUpdateStatement = 123, RULE_orderByClause = 124, RULE_orderByExpression = 125, 
		RULE_tableSources = 126, RULE_tableSource = 127, RULE_tableSourceItem = 128, 
		RULE_indexHint = 129, RULE_indexHintType = 130, RULE_joinPart = 131, RULE_joinSpec = 132, 
		RULE_queryExpression = 133, RULE_queryExpressionNointo = 134, RULE_querySpecification = 135, 
		RULE_querySpecificationNointo = 136, RULE_unionParenthesis = 137, RULE_unionStatement = 138, 
		RULE_lateralStatement = 139, RULE_jsonTable = 140, RULE_jsonColumnList = 141, 
		RULE_jsonColumn = 142, RULE_jsonOnEmpty = 143, RULE_jsonOnError = 144, 
		RULE_selectSpec = 145, RULE_selectElements = 146, RULE_selectElement = 147, 
		RULE_selectIntoExpression = 148, RULE_selectFieldsInto = 149, RULE_selectLinesInto = 150, 
		RULE_fromClause = 151, RULE_groupByClause = 152, RULE_havingClause = 153, 
		RULE_windowClause = 154, RULE_groupByItem = 155, RULE_limitClause = 156, 
		RULE_limitClauseAtom = 157, RULE_startTransaction = 158, RULE_beginWork = 159, 
		RULE_commitWork = 160, RULE_rollbackWork = 161, RULE_savepointStatement = 162, 
		RULE_rollbackStatement = 163, RULE_releaseStatement = 164, RULE_lockTables = 165, 
		RULE_unlockTables = 166, RULE_setAutocommitStatement = 167, RULE_setTransactionStatement = 168, 
		RULE_transactionMode = 169, RULE_lockTableElement = 170, RULE_lockAction = 171, 
		RULE_transactionOption = 172, RULE_transactionLevel = 173, RULE_changeMaster = 174, 
		RULE_changeReplicationFilter = 175, RULE_purgeBinaryLogs = 176, RULE_resetMaster = 177, 
		RULE_resetSlave = 178, RULE_startSlave = 179, RULE_stopSlave = 180, RULE_startGroupReplication = 181, 
		RULE_stopGroupReplication = 182, RULE_masterOption = 183, RULE_stringMasterOption = 184, 
		RULE_decimalMasterOption = 185, RULE_boolMasterOption = 186, RULE_channelOption = 187, 
		RULE_replicationFilter = 188, RULE_tablePair = 189, RULE_threadType = 190, 
		RULE_untilOption = 191, RULE_connectionOption = 192, RULE_gtuidSet = 193, 
		RULE_xaStartTransaction = 194, RULE_xaEndTransaction = 195, RULE_xaPrepareStatement = 196, 
		RULE_xaCommitWork = 197, RULE_xaRollbackWork = 198, RULE_xaRecoverWork = 199, 
		RULE_prepareStatement = 200, RULE_executeStatement = 201, RULE_deallocatePrepare = 202, 
		RULE_routineBody = 203, RULE_blockStatement = 204, RULE_caseStatement = 205, 
		RULE_ifStatement = 206, RULE_iterateStatement = 207, RULE_leaveStatement = 208, 
		RULE_loopStatement = 209, RULE_repeatStatement = 210, RULE_returnStatement = 211, 
		RULE_whileStatement = 212, RULE_cursorStatement = 213, RULE_declareVariable = 214, 
		RULE_declareCondition = 215, RULE_declareCursor = 216, RULE_declareHandler = 217, 
		RULE_handlerConditionValue = 218, RULE_procedureSqlStatement = 219, RULE_caseAlternative = 220, 
		RULE_elifAlternative = 221, RULE_alterUser = 222, RULE_createUser = 223, 
		RULE_dropUser = 224, RULE_grantStatement = 225, RULE_roleOption = 226, 
		RULE_grantProxy = 227, RULE_renameUser = 228, RULE_revokeStatement = 229, 
		RULE_revokeProxy = 230, RULE_setPasswordStatement = 231, RULE_userSpecification = 232, 
		RULE_userAuthOption = 233, RULE_authOptionClause = 234, RULE_authenticationRule = 235, 
		RULE_tlsOption = 236, RULE_userResourceOption = 237, RULE_userPasswordOption = 238, 
		RULE_userLockOption = 239, RULE_privelegeClause = 240, RULE_privilege = 241, 
		RULE_privilegeLevel = 242, RULE_renameUserClause = 243, RULE_analyzeTable = 244, 
		RULE_checkTable = 245, RULE_checksumTable = 246, RULE_optimizeTable = 247, 
		RULE_repairTable = 248, RULE_checkTableOption = 249, RULE_createUdfunction = 250, 
		RULE_installPlugin = 251, RULE_uninstallPlugin = 252, RULE_setStatement = 253, 
		RULE_showStatement = 254, RULE_variableClause = 255, RULE_showCommonEntity = 256, 
		RULE_showFilter = 257, RULE_showGlobalInfoClause = 258, RULE_showSchemaEntity = 259, 
		RULE_showProfileType = 260, RULE_binlogStatement = 261, RULE_cacheIndexStatement = 262, 
		RULE_flushStatement = 263, RULE_killStatement = 264, RULE_loadIndexIntoCache = 265, 
		RULE_resetStatement = 266, RULE_shutdownStatement = 267, RULE_tableIndexes = 268, 
		RULE_flushOption = 269, RULE_flushTableOption = 270, RULE_loadedTableIndexes = 271, 
		RULE_simpleDescribeStatement = 272, RULE_fullDescribeStatement = 273, 
		RULE_helpStatement = 274, RULE_useStatement = 275, RULE_signalStatement = 276, 
		RULE_resignalStatement = 277, RULE_signalConditionInformation = 278, RULE_diagnosticsStatement = 279, 
		RULE_diagnosticsConditionInformationName = 280, RULE_describeObjectClause = 281, 
		RULE_fullId = 282, RULE_tableName = 283, RULE_roleName = 284, RULE_fullColumnName = 285, 
		RULE_indexColumnName = 286, RULE_simpleUserName = 287, RULE_hostName = 288, 
		RULE_userName = 289, RULE_mysqlVariable = 290, RULE_charsetName = 291, 
		RULE_collationName = 292, RULE_engineName = 293, RULE_engineNameBase = 294, 
		RULE_encryptedLiteral = 295, RULE_uuidSet = 296, RULE_xid = 297, RULE_xuidStringId = 298, 
		RULE_authPlugin = 299, RULE_uid = 300, RULE_simpleId = 301, RULE_dottedId = 302, 
		RULE_decimalLiteral = 303, RULE_fileSizeLiteral = 304, RULE_stringLiteral = 305, 
		RULE_booleanLiteral = 306, RULE_hexadecimalLiteral = 307, RULE_nullNotnull = 308, 
		RULE_constant = 309, RULE_dataType = 310, RULE_collectionOptions = 311, 
		RULE_collectionOption = 312, RULE_convertedDataType = 313, RULE_lengthOneDimension = 314, 
		RULE_lengthTwoDimension = 315, RULE_lengthTwoOptionalDimension = 316, 
		RULE_uidList = 317, RULE_fullColumnNameList = 318, RULE_tables = 319, 
		RULE_indexColumnNames = 320, RULE_expressions = 321, RULE_expressionsWithDefaults = 322, 
		RULE_constants = 323, RULE_simpleStrings = 324, RULE_userVariables = 325, 
		RULE_defaultValue = 326, RULE_currentTimestamp = 327, RULE_expressionOrDefault = 328, 
		RULE_ifExists = 329, RULE_ifNotExists = 330, RULE_orReplace = 331, RULE_waitNowaitClause = 332, 
		RULE_lockOption = 333, RULE_functionCall = 334, RULE_specificFunction = 335, 
		RULE_caseFuncAlternative = 336, RULE_levelsInWeightString = 337, RULE_levelInWeightListElement = 338, 
		RULE_aggregateWindowedFunction = 339, RULE_nonAggregateWindowedFunction = 340, 
		RULE_overClause = 341, RULE_windowSpec = 342, RULE_windowName = 343, RULE_frameClause = 344, 
		RULE_frameUnits = 345, RULE_frameExtent = 346, RULE_frameBetween = 347, 
		RULE_frameRange = 348, RULE_partitionClause = 349, RULE_scalarFunctionName = 350, 
		RULE_passwordFunctionClause = 351, RULE_functionArgs = 352, RULE_functionArg = 353, 
		RULE_expression = 354, RULE_predicate = 355, RULE_expressionAtom = 356, 
		RULE_unaryOperator = 357, RULE_comparisonOperator = 358, RULE_logicalOperator = 359, 
		RULE_bitOperator = 360, RULE_multOperator = 361, RULE_addOperator = 362, 
		RULE_jsonOperator = 363, RULE_charsetNameBase = 364, RULE_transactionLevelBase = 365, 
		RULE_privilegesBase = 366, RULE_intervalTypeBase = 367, RULE_dataTypeBase = 368, 
		RULE_keywordsCanBeId = 369, RULE_functionNameBase = 370;
	private static String[] makeRuleNames() {
		return new String[] {
			"root", "sqlStatements", "sqlStatement", "setStatementFor", "emptyStatement", 
			"ddlStatement", "dmlStatement", "transactionStatement", "replicationStatement", 
			"preparedStatement", "compoundStatement", "administrationStatement", 
			"utilityStatement", "createDatabase", "createEvent", "createIndex", "createLogfileGroup", 
			"createProcedure", "createFunction", "createRole", "createServer", "createTable", 
			"createTablespaceInnodb", "createTablespaceNdb", "createTrigger", "withClause", 
			"commonTableExpressions", "cteName", "cteColumnName", "createView", "createSequence", 
			"sequenceSpec", "createDatabaseOption", "charSet", "currentUserExpression", 
			"ownerStatement", "scheduleExpression", "timestampValue", "intervalExpr", 
			"intervalType", "enableType", "indexType", "indexOption", "procedureParameter", 
			"functionParameter", "routineOption", "serverOption", "createDefinitions", 
			"createDefinition", "columnDefinition", "columnConstraint", "tableConstraint", 
			"referenceDefinition", "referenceAction", "referenceControlType", "indexColumnDefinition", 
			"tableOption", "tableType", "tablespaceStorage", "partitionDefinitions", 
			"partitionFunctionDefinition", "partitionSystemVersionDefinitions", "partitionSystemVersionDefinition", 
			"subpartitionFunctionDefinition", "partitionDefinition", "partitionDefinerAtom", 
			"partitionDefinerVector", "subpartitionDefinition", "partitionOption", 
			"alterDatabase", "alterEvent", "alterFunction", "alterInstance", "alterLogfileGroup", 
			"alterProcedure", "alterServer", "alterTable", "alterTablespace", "alterView", 
			"alterSequence", "alterSpecification", "alterPartitionSpecification", 
			"dropDatabase", "dropEvent", "dropIndex", "dropLogfileGroup", "dropProcedure", 
			"dropFunction", "dropServer", "dropTable", "dropTablespace", "dropTrigger", 
			"dropView", "dropRole", "setRole", "dropSequence", "renameTable", "renameTableClause", 
			"truncateTable", "callStatement", "deleteStatement", "doStatement", "handlerStatement", 
			"insertStatement", "loadDataStatement", "loadXmlStatement", "replaceStatement", 
			"selectStatement", "valuesStatement", "withStatement", "tableStatement", 
			"updateStatement", "insertStatementValue", "updatedElement", "assignmentField", 
			"lockClause", "singleDeleteStatement", "multipleDeleteStatement", "handlerOpenStatement", 
			"handlerReadIndexStatement", "handlerReadStatement", "handlerCloseStatement", 
			"singleUpdateStatement", "multipleUpdateStatement", "orderByClause", 
			"orderByExpression", "tableSources", "tableSource", "tableSourceItem", 
			"indexHint", "indexHintType", "joinPart", "joinSpec", "queryExpression", 
			"queryExpressionNointo", "querySpecification", "querySpecificationNointo", 
			"unionParenthesis", "unionStatement", "lateralStatement", "jsonTable", 
			"jsonColumnList", "jsonColumn", "jsonOnEmpty", "jsonOnError", "selectSpec", 
			"selectElements", "selectElement", "selectIntoExpression", "selectFieldsInto", 
			"selectLinesInto", "fromClause", "groupByClause", "havingClause", "windowClause", 
			"groupByItem", "limitClause", "limitClauseAtom", "startTransaction", 
			"beginWork", "commitWork", "rollbackWork", "savepointStatement", "rollbackStatement", 
			"releaseStatement", "lockTables", "unlockTables", "setAutocommitStatement", 
			"setTransactionStatement", "transactionMode", "lockTableElement", "lockAction", 
			"transactionOption", "transactionLevel", "changeMaster", "changeReplicationFilter", 
			"purgeBinaryLogs", "resetMaster", "resetSlave", "startSlave", "stopSlave", 
			"startGroupReplication", "stopGroupReplication", "masterOption", "stringMasterOption", 
			"decimalMasterOption", "boolMasterOption", "channelOption", "replicationFilter", 
			"tablePair", "threadType", "untilOption", "connectionOption", "gtuidSet", 
			"xaStartTransaction", "xaEndTransaction", "xaPrepareStatement", "xaCommitWork", 
			"xaRollbackWork", "xaRecoverWork", "prepareStatement", "executeStatement", 
			"deallocatePrepare", "routineBody", "blockStatement", "caseStatement", 
			"ifStatement", "iterateStatement", "leaveStatement", "loopStatement", 
			"repeatStatement", "returnStatement", "whileStatement", "cursorStatement", 
			"declareVariable", "declareCondition", "declareCursor", "declareHandler", 
			"handlerConditionValue", "procedureSqlStatement", "caseAlternative", 
			"elifAlternative", "alterUser", "createUser", "dropUser", "grantStatement", 
			"roleOption", "grantProxy", "renameUser", "revokeStatement", "revokeProxy", 
			"setPasswordStatement", "userSpecification", "userAuthOption", "authOptionClause", 
			"authenticationRule", "tlsOption", "userResourceOption", "userPasswordOption", 
			"userLockOption", "privelegeClause", "privilege", "privilegeLevel", "renameUserClause", 
			"analyzeTable", "checkTable", "checksumTable", "optimizeTable", "repairTable", 
			"checkTableOption", "createUdfunction", "installPlugin", "uninstallPlugin", 
			"setStatement", "showStatement", "variableClause", "showCommonEntity", 
			"showFilter", "showGlobalInfoClause", "showSchemaEntity", "showProfileType", 
			"binlogStatement", "cacheIndexStatement", "flushStatement", "killStatement", 
			"loadIndexIntoCache", "resetStatement", "shutdownStatement", "tableIndexes", 
			"flushOption", "flushTableOption", "loadedTableIndexes", "simpleDescribeStatement", 
			"fullDescribeStatement", "helpStatement", "useStatement", "signalStatement", 
			"resignalStatement", "signalConditionInformation", "diagnosticsStatement", 
			"diagnosticsConditionInformationName", "describeObjectClause", "fullId", 
			"tableName", "roleName", "fullColumnName", "indexColumnName", "simpleUserName", 
			"hostName", "userName", "mysqlVariable", "charsetName", "collationName", 
			"engineName", "engineNameBase", "encryptedLiteral", "uuidSet", "xid", 
			"xuidStringId", "authPlugin", "uid", "simpleId", "dottedId", "decimalLiteral", 
			"fileSizeLiteral", "stringLiteral", "booleanLiteral", "hexadecimalLiteral", 
			"nullNotnull", "constant", "dataType", "collectionOptions", "collectionOption", 
			"convertedDataType", "lengthOneDimension", "lengthTwoDimension", "lengthTwoOptionalDimension", 
			"uidList", "fullColumnNameList", "tables", "indexColumnNames", "expressions", 
			"expressionsWithDefaults", "constants", "simpleStrings", "userVariables", 
			"defaultValue", "currentTimestamp", "expressionOrDefault", "ifExists", 
			"ifNotExists", "orReplace", "waitNowaitClause", "lockOption", "functionCall", 
			"specificFunction", "caseFuncAlternative", "levelsInWeightString", "levelInWeightListElement", 
			"aggregateWindowedFunction", "nonAggregateWindowedFunction", "overClause", 
			"windowSpec", "windowName", "frameClause", "frameUnits", "frameExtent", 
			"frameBetween", "frameRange", "partitionClause", "scalarFunctionName", 
			"passwordFunctionClause", "functionArgs", "functionArg", "expression", 
			"predicate", "expressionAtom", "unaryOperator", "comparisonOperator", 
			"logicalOperator", "bitOperator", "multOperator", "addOperator", "jsonOperator", 
			"charsetNameBase", "transactionLevelBase", "privilegesBase", "intervalTypeBase", 
			"dataTypeBase", "keywordsCanBeId", "functionNameBase"
		};
	}
	public static final String[] ruleNames = makeRuleNames();

	private static String[] makeLiteralNames() {
		return new String[] {
			null, null, null, null, null, "'ADD'", "'ALL'", "'ALTER'", "'ALWAYS'", 
			"'ANALYZE'", "'AND'", "'ARRAY'", "'AS'", "'ASC'", "'ATTRIBUTE'", "'AUTO'", 
			"'BEFORE'", "'BETWEEN'", "'BOTH'", "'BUCKETS'", "'BY'", "'CALL'", "'CASCADE'", 
			"'CASE'", "'CAST'", "'CHANGE'", "'CHARACTER'", "'CHECK'", "'COLLATE'", 
			"'COLUMN'", "'CONDITION'", "'CONSTRAINT'", "'CONTINUE'", "'CONVERT'", 
			"'CREATE'", "'CROSS'", "'CURRENT'", "'CURRENT_ROLE'", "'CURRENT_USER'", 
			"'CURSOR'", "'DATABASE'", "'DATABASES'", "'DECLARE'", "'DEFAULT'", "'DELAYED'", 
			"'DELETE'", "'DESC'", "'DESCRIBE'", "'DETERMINISTIC'", "'DIAGNOSTICS'", 
			"'DISTINCT'", "'DISTINCTROW'", "'DROP'", "'EACH'", "'ELSE'", "'ELSEIF'", 
			"'EMPTY'", "'ENCLOSED'", "'ENFORCED'", "'ESCAPED'", "'EXCEPT'", "'EXISTS'", 
			"'EXIT'", "'EXPLAIN'", "'FALSE'", "'FETCH'", "'FOR'", "'FORCE'", "'FOREIGN'", 
			"'FROM'", "'FULLTEXT'", "'GENERATED'", "'GET'", "'GRANT'", "'GROUP'", 
			"'GROUP_REPLICATION_STREAM'", "'HAVING'", "'HIGH_PRIORITY'", "'HISTOGRAM'", 
			"'IF'", "'IGNORE'", "'IGNORED'", "'IN'", "'INDEX'", "'INFILE'", "'INNER'", 
			"'INOUT'", "'INSERT'", "'INTERVAL'", "'INTO'", "'IS'", "'ITERATE'", "'JOIN'", 
			"'KEY'", "'KEYS'", "'KILL'", "'LATERAL'", "'LEADING'", "'LEAVE'", "'LEFT'", 
			"'LIKE'", "'LIMIT'", "'LINEAR'", "'LINES'", "'LOAD'", "'LOCK'", "'LOCKED'", 
			"'LOOP'", "'LOW_PRIORITY'", "'MASTER_BIND'", "'MASTER_SSL_VERIFY_SERVER_CERT'", 
			"'MATCH'", "'MAXVALUE'", "'MINVALUE'", "'MODIFIES'", "'NATURAL'", "'NOT'", 
			"'NO_WRITE_TO_BINLOG'", "'NULL'", "'NUMBER'", "'ON'", "'OPTIMIZE'", "'OPTION'", 
			"'OPTIONAL'", "'OPTIONALLY'", "'OR'", "'ORDER'", "'OUT'", "'OUTER'", 
			"'OUTFILE'", "'OVER'", "'PARTITION'", "'PRIMARY'", "'PROCEDURE'", "'PURGE'", 
			"'RANGE'", "'READ'", "'READS'", "'REFERENCES'", "'REGEXP'", "'RELEASE'", 
			"'RENAME'", "'REPEAT'", "'REPLACE'", "'REQUIRE'", "'RESIGNAL'", "'RESTRICT'", 
			"'RETAIN'", "'RETURN'", "'REVOKE'", "'RIGHT'", "'RLIKE'", "'SCHEMA'", 
			"'SCHEMAS'", "'SELECT'", "'SET'", "'SEPARATOR'", "'SHOW'", "'SIGNAL'", 
			"'SKIP'", "'SKIP_QUERY_REWRITE'", "'SPATIAL'", "'SQL'", "'SQLEXCEPTION'", 
			"'SQLSTATE'", "'SQLWARNING'", "'SQL_BIG_RESULT'", "'SQL_CALC_FOUND_ROWS'", 
			"'SQL_SMALL_RESULT'", "'SSL'", "'STACKED'", "'STARTING'", "'STATEMENT'", 
			"'STRAIGHT_JOIN'", "'SYSTEM_TIME'", "'TABLE'", "'TERMINATED'", "'THEN'", 
			"'TO'", "'TRAILING'", "'TRIGGER'", "'TRUE'", "'UNDO'", "'UNION'", "'UNIQUE'", 
			"'UNLOCK'", "'UNSIGNED'", "'UPDATE'", "'USAGE'", "'USE'", "'USING'", 
			"'VALUES'", "'WHEN'", "'WHERE'", "'WHILE'", "'WITH'", "'WRITE'", "'XOR'", 
			"'ZEROFILL'", "'TINYINT'", "'SMALLINT'", "'MEDIUMINT'", "'MIDDLEINT'", 
			"'INT'", "'INT1'", "'INT2'", "'INT3'", "'INT4'", "'INT8'", "'INTEGER'", 
			"'BIGINT'", "'REAL'", "'DOUBLE'", "'PRECISION'", "'FLOAT'", "'FLOAT4'", 
			"'FLOAT8'", "'DECIMAL'", "'DEC'", "'NUMERIC'", "'DATE'", "'TIME'", "'TIMESTAMP'", 
			"'DATETIME'", "'YEAR'", "'CHAR'", "'VARCHAR'", "'NVARCHAR'", "'NATIONAL'", 
			"'BINARY'", "'VARBINARY'", "'TINYBLOB'", "'BLOB'", "'MEDIUMBLOB'", "'LONG'", 
			"'LONGBLOB'", "'TINYTEXT'", "'TEXT'", "'MEDIUMTEXT'", "'LONGTEXT'", "'ENUM'", 
			"'VARYING'", "'SERIAL'", "'YEAR_MONTH'", "'DAY_HOUR'", "'DAY_MINUTE'", 
			"'DAY_SECOND'", "'HOUR_MINUTE'", "'HOUR_SECOND'", "'MINUTE_SECOND'", 
			"'SECOND_MICROSECOND'", "'MINUTE_MICROSECOND'", "'HOUR_MICROSECOND'", 
			"'DAY_MICROSECOND'", "'JSON_ARRAY'", "'JSON_ARRAYAGG'", "'JSON_ARRAY_APPEND'", 
			"'JSON_ARRAY_INSERT'", "'JSON_CONTAINS'", "'JSON_CONTAINS_PATH'", "'JSON_DEPTH'", 
			"'JSON_EXTRACT'", "'JSON_INSERT'", "'JSON_KEYS'", "'JSON_LENGTH'", "'JSON_MERGE'", 
			"'JSON_MERGE_PATCH'", "'JSON_MERGE_PRESERVE'", "'JSON_OBJECT'", "'JSON_OBJECTAGG'", 
			"'JSON_OVERLAPS'", "'JSON_PRETTY'", "'JSON_QUOTE'", "'JSON_REMOVE'", 
			"'JSON_REPLACE'", "'JSON_SCHEMA_VALID'", "'JSON_SCHEMA_VALIDATION_REPORT'", 
			"'JSON_SEARCH'", "'JSON_SET'", "'JSON_STORAGE_FREE'", "'JSON_STORAGE_SIZE'", 
			"'JSON_TABLE'", "'JSON_TYPE'", "'JSON_UNQUOTE'", "'JSON_VALID'", "'JSON_VALUE'", 
			"'NESTED'", "'ORDINALITY'", "'PATH'", "'AVG'", "'BIT_AND'", "'BIT_OR'", 
			"'BIT_XOR'", "'COUNT'", "'CUME_DIST'", "'DENSE_RANK'", "'FIRST_VALUE'", 
			"'GROUP_CONCAT'", "'LAG'", "'LAST_VALUE'", "'LEAD'", "'MAX'", "'MIN'", 
			"'NTILE'", "'NTH_VALUE'", "'PERCENT_RANK'", "'RANK'", "'ROW_NUMBER'", 
			"'STD'", "'STDDEV'", "'STDDEV_POP'", "'STDDEV_SAMP'", "'SUM'", "'VAR_POP'", 
			"'VAR_SAMP'", "'VARIANCE'", "'CURRENT_DATE'", "'CURRENT_TIME'", "'CURRENT_TIMESTAMP'", 
			"'LOCALTIME'", "'CURDATE'", "'CURTIME'", "'DATE_ADD'", "'DATE_SUB'", 
			"'EXTRACT'", "'LOCALTIMESTAMP'", "'NOW'", "'POSITION'", "'SUBSTR'", "'SUBSTRING'", 
			"'SYSDATE'", "'TRIM'", "'UTC_DATE'", "'UTC_TIME'", "'UTC_TIMESTAMP'", 
			"'ACCOUNT'", "'ACTION'", "'AFTER'", "'AGGREGATE'", "'ALGORITHM'", "'ANY'", 
			"'AT'", "'AUTHORS'", "'AUTOCOMMIT'", "'AUTOEXTEND_SIZE'", "'AUTO_INCREMENT'", 
			"'AVG_ROW_LENGTH'", "'BEGIN'", "'BINLOG'", "'BIT'", "'BLOCK'", "'BOOL'", 
			"'BOOLEAN'", "'BTREE'", "'CACHE'", "'CASCADED'", "'CHAIN'", "'CHANGED'", 
			"'CHANNEL'", "'CHECKSUM'", "'PAGE_CHECKSUM'", "'CIPHER'", "'CLASS_ORIGIN'", 
			"'CLIENT'", "'CLOSE'", "'CLUSTERING'", "'COALESCE'", "'CODE'", "'COLUMNS'", 
			"'COLUMN_FORMAT'", "'COLUMN_NAME'", "'COMMENT'", "'COMMIT'", "'COMPACT'", 
			"'COMPLETION'", "'COMPRESSED'", null, "'CONCURRENT'", "'CONNECT'", "'CONNECTION'", 
			"'CONSISTENT'", "'CONSTRAINT_CATALOG'", "'CONSTRAINT_SCHEMA'", "'CONSTRAINT_NAME'", 
			"'CONTAINS'", "'CONTEXT'", "'CONTRIBUTORS'", "'COPY'", "'CPU'", "'CYCLE'", 
			"'CURSOR_NAME'", "'DATA'", "'DATAFILE'", "'DEALLOCATE'", "'DEFAULT_AUTH'", 
			"'DEFINER'", "'DELAY_KEY_WRITE'", "'DES_KEY_FILE'", "'DIRECTORY'", "'DISABLE'", 
			"'DISCARD'", "'DISK'", "'DO'", "'DUMPFILE'", "'DUPLICATE'", "'DYNAMIC'", 
			"'ENABLE'", "'ENCRYPTED'", "'ENCRYPTION'", "'ENCRYPTION_KEY_ID'", "'END'", 
			"'ENDS'", "'ENGINE'", "'ENGINES'", "'ERROR'", "'ERRORS'", "'ESCAPE'", 
			"'EVEN'", "'EVENT'", "'EVENTS'", "'EVERY'", "'EXCHANGE'", "'EXCLUSIVE'", 
			"'EXPIRE'", "'EXPORT'", "'EXTENDED'", "'EXTENT_SIZE'", "'FAILED_LOGIN_ATTEMPTS'", 
			"'FAST'", "'FAULTS'", "'FIELDS'", "'FILE_BLOCK_SIZE'", "'FILTER'", "'FIRST'", 
			"'FIXED'", "'FLUSH'", "'FOLLOWING'", "'FOLLOWS'", "'FOUND'", "'FULL'", 
			"'FUNCTION'", "'GENERAL'", "'GLOBAL'", "'GRANTS'", "'GROUP_REPLICATION'", 
			"'HANDLER'", "'HASH'", "'HELP'", "'HISTORY'", "'HOST'", "'HOSTS'", "'IDENTIFIED'", 
			"'IGNORE_SERVER_IDS'", "'IMPORT'", "'INCREMENT'", "'INDEXES'", "'INITIAL_SIZE'", 
			"'INPLACE'", "'INSERT_METHOD'", "'INSTALL'", "'INSTANCE'", "'INSTANT'", 
			"'INVISIBLE'", "'INVOKER'", "'IO'", "'IO_THREAD'", "'IPC'", "'ISOLATION'", 
			"'ISSUER'", "'JSON'", "'KEY_BLOCK_SIZE'", "'LANGUAGE'", "'LAST'", "'LEAVES'", 
			"'LESS'", "'LEVEL'", "'LIST'", "'LOCAL'", "'LOGFILE'", "'LOGS'", "'MASTER'", 
			"'MASTER_AUTO_POSITION'", "'MASTER_CONNECT_RETRY'", "'MASTER_DELAY'", 
			"'MASTER_HEARTBEAT_PERIOD'", "'MASTER_HOST'", "'MASTER_LOG_FILE'", "'MASTER_LOG_POS'", 
			"'MASTER_PASSWORD'", "'MASTER_PORT'", "'MASTER_RETRY_COUNT'", "'MASTER_SSL'", 
			"'MASTER_SSL_CA'", "'MASTER_SSL_CAPATH'", "'MASTER_SSL_CERT'", "'MASTER_SSL_CIPHER'", 
			"'MASTER_SSL_CRL'", "'MASTER_SSL_CRLPATH'", "'MASTER_SSL_KEY'", "'MASTER_TLS_VERSION'", 
			"'MASTER_USER'", "'MAX_CONNECTIONS_PER_HOUR'", "'MAX_QUERIES_PER_HOUR'", 
			"'MAX_ROWS'", "'MAX_SIZE'", "'MAX_UPDATES_PER_HOUR'", "'MAX_USER_CONNECTIONS'", 
			"'MEDIUM'", "'MEMBER'", "'MERGE'", "'MESSAGE_TEXT'", "'MID'", "'MIGRATE'", 
			"'MIN_ROWS'", "'MODE'", "'MODIFY'", "'MUTEX'", "'MYSQL'", "'MYSQL_ERRNO'", 
			"'NAME'", "'NAMES'", "'NCHAR'", "'NEVER'", "'NEXT'", "'NO'", "'NOCACHE'", 
			"'NOCOPY'", "'NOCYCLE'", "'NOMAXVALUE'", "'NOMINVALUE'", "'NOWAIT'", 
			"'NODEGROUP'", "'NONE'", "'ODBC'", "'OFFLINE'", "'OFFSET'", "'OF'", "'OJ'", 
			"'OLD_PASSWORD'", "'ONE'", "'ONLINE'", "'ONLY'", "'OPEN'", "'OPTIMIZER_COSTS'", 
			"'OPTIONS'", "'OWNER'", "'PACK_KEYS'", "'PAGE'", "'PAGE_COMPRESSED'", 
			"'PAGE_COMPRESSION_LEVEL'", "'PARSER'", "'PARTIAL'", "'PARTITIONING'", 
			"'PARTITIONS'", "'PASSWORD'", "'PASSWORD_LOCK_TIME'", "'PHASE'", "'PLUGIN'", 
			"'PLUGIN_DIR'", "'PLUGINS'", "'PORT'", "'PRECEDES'", "'PRECEDING'", "'PREPARE'", 
			"'PRESERVE'", "'PREV'", "'PROCESSLIST'", "'PROFILE'", "'PROFILES'", "'PROXY'", 
			"'QUERY'", "'QUICK'", "'REBUILD'", "'RECOVER'", "'RECURSIVE'", "'REDO_BUFFER_SIZE'", 
			"'REDUNDANT'", "'RELAY'", "'RELAY_LOG_FILE'", "'RELAY_LOG_POS'", "'RELAYLOG'", 
			"'REMOVE'", "'REORGANIZE'", "'REPAIR'", "'REPLICATE_DO_DB'", "'REPLICATE_DO_TABLE'", 
			"'REPLICATE_IGNORE_DB'", "'REPLICATE_IGNORE_TABLE'", "'REPLICATE_REWRITE_DB'", 
			"'REPLICATE_WILD_DO_TABLE'", "'REPLICATE_WILD_IGNORE_TABLE'", "'REPLICATION'", 
			"'RESET'", "'RESTART'", "'RESUME'", "'RETURNED_SQLSTATE'", "'RETURNING'", 
			"'RETURNS'", "'REUSE'", "'ROLE'", "'ROLLBACK'", "'ROLLUP'", "'ROTATE'", 
			"'ROW'", "'ROWS'", "'ROW_FORMAT'", "'RTREE'", "'SAVEPOINT'", "'SCHEDULE'", 
			"'SECURITY'", "'SEQUENCE'", "'SERVER'", "'SESSION'", "'SHARE'", "'SHARED'", 
			"'SIGNED'", "'SIMPLE'", "'SLAVE'", "'SLOW'", "'SNAPSHOT'", "'SOCKET'", 
			"'SOME'", "'SONAME'", "'SOUNDS'", "'SOURCE'", "'SQL_AFTER_GTIDS'", "'SQL_AFTER_MTS_GAPS'", 
			"'SQL_BEFORE_GTIDS'", "'SQL_BUFFER_RESULT'", "'SQL_CACHE'", "'SQL_NO_CACHE'", 
			"'SQL_THREAD'", "'START'", "'STARTS'", "'STATS_AUTO_RECALC'", "'STATS_PERSISTENT'", 
			"'STATS_SAMPLE_PAGES'", "'STATUS'", "'STOP'", "'STORAGE'", "'STORED'", 
			"'STRING'", "'SUBCLASS_ORIGIN'", "'SUBJECT'", "'SUBPARTITION'", "'SUBPARTITIONS'", 
			"'SUSPEND'", "'SWAPS'", "'SWITCHES'", "'TABLE_NAME'", "'TABLESPACE'", 
			"'TABLE_TYPE'", "'TEMPORARY'", "'TEMPTABLE'", "'THAN'", "'TRADITIONAL'", 
			"'TRANSACTION'", "'TRANSACTIONAL'", "'TRIGGERS'", "'TRUNCATE'", "'UNBOUNDED'", 
			"'UNDEFINED'", "'UNDOFILE'", "'UNDO_BUFFER_SIZE'", "'UNINSTALL'", "'UNKNOWN'", 
			"'UNTIL'", "'UPGRADE'", "'USER'", "'USE_FRM'", "'USER_RESOURCES'", "'VALIDATION'", 
			"'VALUE'", "'VARIABLES'", "'VIEW'", "'VIRTUAL'", "'VISIBLE'", "'WAIT'", 
			"'WARNINGS'", "'WINDOW'", "'WITHOUT'", "'WORK'", "'WRAPPER'", "'X509'", 
			"'XA'", "'XML'", "'YES'", "'EUR'", "'USA'", "'JIS'", "'ISO'", "'INTERNAL'", 
			"'QUARTER'", "'MONTH'", "'DAY'", "'HOUR'", "'MINUTE'", "'WEEK'", "'SECOND'", 
			"'MICROSECOND'", "'USER_STATISTICS'", "'CLIENT_STATISTICS'", "'INDEX_STATISTICS'", 
			"'TABLE_STATISTICS'", "'FIREWALL_RULES'", "'ADMIN'", "'APPLICATION_PASSWORD_ADMIN'", 
			"'AUDIT_ADMIN'", "'AUDIT_ABORT_EXEMPT'", "'AUTHENTICATION_POLICY_ADMIN'", 
			"'BACKUP_ADMIN'", "'BINLOG_ADMIN'", "'BINLOG_ENCRYPTION_ADMIN'", "'CLONE_ADMIN'", 
			"'CONNECTION_ADMIN'", "'ENCRYPTION_KEY_ADMIN'", "'EXECUTE'", "'FILE'", 
			"'FIREWALL_ADMIN'", "'FIREWALL_EXEMPT'", "'FIREWALL_USER'", "'FLUSH_OPTIMIZER_COSTS'", 
			"'FLUSH_STATUS'", "'FLUSH_TABLES'", "'FLUSH_USER_RESOURCES'", "'GROUP_REPLICATION_ADMIN'", 
			"'INNODB_REDO_LOG_ARCHIVE'", "'INNODB_REDO_LOG_ENABLE'", "'INVOKE'", 
			"'LAMBDA'", "'NDB_STORED_USER'", "'PASSWORDLESS_USER_ADMIN'", "'PERSIST_RO_VARIABLES_ADMIN'", 
			"'PRIVILEGES'", "'PROCESS'", "'RELOAD'", "'REPLICATION_APPLIER'", "'REPLICATION_SLAVE_ADMIN'", 
			"'RESOURCE_GROUP_ADMIN'", "'RESOURCE_GROUP_USER'", "'ROLE_ADMIN'", "'ROUTINE'", 
			"'S3'", "'SERVICE_CONNECTION_ADMIN'", null, "'SET_USER_ID'", "'SHOW_ROUTINE'", 
			"'SHUTDOWN'", "'SUPER'", "'SYSTEM_VARIABLES_ADMIN'", "'TABLES'", "'TABLE_ENCRYPTION_ADMIN'", 
			"'VERSION_TOKEN_ADMIN'", "'XA_RECOVER_ADMIN'", "'ARMSCII8'", "'ASCII'", 
			"'BIG5'", "'CP1250'", "'CP1251'", "'CP1256'", "'CP1257'", "'CP850'", 
			"'CP852'", "'CP866'", "'CP932'", "'DEC8'", "'EUCJPMS'", "'EUCKR'", "'GB18030'", 
			"'GB2312'", "'GBK'", "'GEOSTD8'", "'GREEK'", "'HEBREW'", "'HP8'", "'KEYBCS2'", 
			"'KOI8R'", "'KOI8U'", "'LATIN1'", "'LATIN2'", "'LATIN5'", "'LATIN7'", 
			"'MACCE'", "'MACROMAN'", "'SJIS'", "'SWE7'", "'TIS620'", "'UCS2'", "'UJIS'", 
			"'UTF16'", "'UTF16LE'", "'UTF32'", "'UTF8'", "'UTF8MB3'", "'UTF8MB4'", 
			"'ARCHIVE'", "'BLACKHOLE'", "'CSV'", "'FEDERATED'", "'INNODB'", "'MEMORY'", 
			"'MRG_MYISAM'", "'MYISAM'", "'NDB'", "'NDBCLUSTER'", "'PERFORMANCE_SCHEMA'", 
			"'TOKUDB'", "'REPEATABLE'", "'COMMITTED'", "'UNCOMMITTED'", "'SERIALIZABLE'", 
			"'GEOMETRYCOLLECTION'", "'GEOMCOLLECTION'", "'GEOMETRY'", "'LINESTRING'", 
			"'MULTILINESTRING'", "'MULTIPOINT'", "'MULTIPOLYGON'", "'POINT'", "'POLYGON'", 
			"'ABS'", "'ACOS'", "'ADDDATE'", "'ADDTIME'", "'AES_DECRYPT'", "'AES_ENCRYPT'", 
			"'AREA'", "'ASBINARY'", "'ASIN'", "'ASTEXT'", "'ASWKB'", "'ASWKT'", "'ASYMMETRIC_DECRYPT'", 
			"'ASYMMETRIC_DERIVE'", "'ASYMMETRIC_ENCRYPT'", "'ASYMMETRIC_SIGN'", "'ASYMMETRIC_VERIFY'", 
			"'ATAN'", "'ATAN2'", "'BENCHMARK'", "'BIN'", "'BIT_COUNT'", "'BIT_LENGTH'", 
			"'BUFFER'", "'CATALOG_NAME'", "'CEIL'", "'CEILING'", "'CENTROID'", "'CHARACTER_LENGTH'", 
			"'CHARSET'", "'CHAR_LENGTH'", "'COERCIBILITY'", "'COLLATION'", "'COMPRESS'", 
			"'CONCAT'", "'CONCAT_WS'", "'CONNECTION_ID'", "'CONV'", "'CONVERT_TZ'", 
			"'COS'", "'COT'", "'CRC32'", "'CREATE_ASYMMETRIC_PRIV_KEY'", "'CREATE_ASYMMETRIC_PUB_KEY'", 
			"'CREATE_DH_PARAMETERS'", "'CREATE_DIGEST'", "'CROSSES'", "'DATEDIFF'", 
			"'DATE_FORMAT'", "'DAYNAME'", "'DAYOFMONTH'", "'DAYOFWEEK'", "'DAYOFYEAR'", 
			"'DECODE'", "'DEGREES'", "'DES_DECRYPT'", "'DES_ENCRYPT'", "'DIMENSION'", 
			"'DISJOINT'", "'ELT'", "'ENCODE'", "'ENCRYPT'", "'ENDPOINT'", "'ENGINE_ATTRIBUTE'", 
			"'ENVELOPE'", "'EQUALS'", "'EXP'", "'EXPORT_SET'", "'EXTERIORRING'", 
			"'EXTRACTVALUE'", "'FIELD'", "'FIND_IN_SET'", "'FLOOR'", "'FORMAT'", 
			"'FOUND_ROWS'", "'FROM_BASE64'", "'FROM_DAYS'", "'FROM_UNIXTIME'", "'GEOMCOLLFROMTEXT'", 
			"'GEOMCOLLFROMWKB'", "'GEOMETRYCOLLECTIONFROMTEXT'", "'GEOMETRYCOLLECTIONFROMWKB'", 
			"'GEOMETRYFROMTEXT'", "'GEOMETRYFROMWKB'", "'GEOMETRYN'", "'GEOMETRYTYPE'", 
			"'GEOMFROMTEXT'", "'GEOMFROMWKB'", "'GET_FORMAT'", "'GET_LOCK'", "'GLENGTH'", 
			"'GREATEST'", "'GTID_SUBSET'", "'GTID_SUBTRACT'", "'HEX'", "'IFNULL'", 
			"'INET6_ATON'", "'INET6_NTOA'", "'INET_ATON'", "'INET_NTOA'", "'INSTR'", 
			"'INTERIORRINGN'", "'INTERSECTS'", "'ISCLOSED'", "'ISEMPTY'", "'ISNULL'", 
			"'ISSIMPLE'", "'IS_FREE_LOCK'", "'IS_IPV4'", "'IS_IPV4_COMPAT'", "'IS_IPV4_MAPPED'", 
			"'IS_IPV6'", "'IS_USED_LOCK'", "'LAST_INSERT_ID'", "'LCASE'", "'LEAST'", 
			"'LENGTH'", "'LINEFROMTEXT'", "'LINEFROMWKB'", "'LINESTRINGFROMTEXT'", 
			"'LINESTRINGFROMWKB'", "'LN'", "'LOAD_FILE'", "'LOCATE'", "'LOG'", "'LOG10'", 
			"'LOG2'", "'LOWER'", "'LPAD'", "'LTRIM'", "'MAKEDATE'", "'MAKETIME'", 
			"'MAKE_SET'", "'MASTER_POS_WAIT'", "'MBRCONTAINS'", "'MBRDISJOINT'", 
			"'MBREQUAL'", "'MBRINTERSECTS'", "'MBROVERLAPS'", "'MBRTOUCHES'", "'MBRWITHIN'", 
			"'MD5'", "'MLINEFROMTEXT'", "'MLINEFROMWKB'", "'MONTHNAME'", "'MPOINTFROMTEXT'", 
			"'MPOINTFROMWKB'", "'MPOLYFROMTEXT'", "'MPOLYFROMWKB'", "'MULTILINESTRINGFROMTEXT'", 
			"'MULTILINESTRINGFROMWKB'", "'MULTIPOINTFROMTEXT'", "'MULTIPOINTFROMWKB'", 
			"'MULTIPOLYGONFROMTEXT'", "'MULTIPOLYGONFROMWKB'", "'NAME_CONST'", "'NULLIF'", 
			"'NUMGEOMETRIES'", "'NUMINTERIORRINGS'", "'NUMPOINTS'", "'OCT'", "'OCTET_LENGTH'", 
			"'ORD'", "'OVERLAPS'", "'PERIOD_ADD'", "'PERIOD_DIFF'", "'PI'", "'POINTFROMTEXT'", 
			"'POINTFROMWKB'", "'POINTN'", "'POLYFROMTEXT'", "'POLYFROMWKB'", "'POLYGONFROMTEXT'", 
			"'POLYGONFROMWKB'", "'POW'", "'POWER'", "'QUOTE'", "'RADIANS'", "'RAND'", 
			"'RANDOM'", "'RANDOM_BYTES'", "'RELEASE_LOCK'", "'REVERSE'", "'ROUND'", 
			"'ROW_COUNT'", "'RPAD'", "'RTRIM'", "'SEC_TO_TIME'", "'SECONDARY_ENGINE_ATTRIBUTE'", 
			"'SENSITIVE_VARIABLES_OBSERVER'", "'SESSION_USER'", "'SHA'", "'SHA1'", 
			"'SHA2'", "'SCHEMA_NAME'", "'SIGN'", "'SIN'", "'SLEEP'", "'SOUNDEX'", 
			"'SQL_THREAD_WAIT_AFTER_GTIDS'", "'SQRT'", "'SRID'", "'STARTPOINT'", 
			"'STRCMP'", "'STR_TO_DATE'", "'ST_AREA'", "'ST_ASBINARY'", "'ST_ASTEXT'", 
			"'ST_ASWKB'", "'ST_ASWKT'", "'ST_BUFFER'", "'ST_CENTROID'", "'ST_CONTAINS'", 
			"'ST_CROSSES'", "'ST_DIFFERENCE'", "'ST_DIMENSION'", "'ST_DISJOINT'", 
			"'ST_DISTANCE'", "'ST_ENDPOINT'", "'ST_ENVELOPE'", "'ST_EQUALS'", "'ST_EXTERIORRING'", 
			"'ST_GEOMCOLLFROMTEXT'", "'ST_GEOMCOLLFROMTXT'", "'ST_GEOMCOLLFROMWKB'", 
			"'ST_GEOMETRYCOLLECTIONFROMTEXT'", "'ST_GEOMETRYCOLLECTIONFROMWKB'", 
			"'ST_GEOMETRYFROMTEXT'", "'ST_GEOMETRYFROMWKB'", "'ST_GEOMETRYN'", "'ST_GEOMETRYTYPE'", 
			"'ST_GEOMFROMTEXT'", "'ST_GEOMFROMWKB'", "'ST_INTERIORRINGN'", "'ST_INTERSECTION'", 
			"'ST_INTERSECTS'", "'ST_ISCLOSED'", "'ST_ISEMPTY'", "'ST_ISSIMPLE'", 
			"'ST_LINEFROMTEXT'", "'ST_LINEFROMWKB'", "'ST_LINESTRINGFROMTEXT'", "'ST_LINESTRINGFROMWKB'", 
			"'ST_NUMGEOMETRIES'", "'ST_NUMINTERIORRING'", "'ST_NUMINTERIORRINGS'", 
			"'ST_NUMPOINTS'", "'ST_OVERLAPS'", "'ST_POINTFROMTEXT'", "'ST_POINTFROMWKB'", 
			"'ST_POINTN'", "'ST_POLYFROMTEXT'", "'ST_POLYFROMWKB'", "'ST_POLYGONFROMTEXT'", 
			"'ST_POLYGONFROMWKB'", "'ST_SRID'", "'ST_STARTPOINT'", "'ST_SYMDIFFERENCE'", 
			"'ST_TOUCHES'", "'ST_UNION'", "'ST_WITHIN'", "'ST_X'", "'ST_Y'", "'SUBDATE'", 
			"'SUBSTRING_INDEX'", "'SUBTIME'", "'SYSTEM_USER'", "'SYSTEM'", "'TAN'", 
			"'TELEMETRY_LOG_ADMIN'", "'TIMEDIFF'", "'TIMESTAMPADD'", "'TIMESTAMPDIFF'", 
			"'TIME_FORMAT'", "'TIME_TO_SEC'", "'TOUCHES'", "'TO_BASE64'", "'TO_DAYS'", 
			"'TO_SECONDS'", "'TP_CONNECTION_ADMIN'", "'UCASE'", "'UNCOMPRESS'", "'UNCOMPRESSED_LENGTH'", 
			"'UNHEX'", "'UNIX_TIMESTAMP'", "'UPDATEXML'", "'UPPER'", "'UUID'", "'UUID_SHORT'", 
			"'VALIDATE_PASSWORD_STRENGTH'", "'VERSION'", "'VERSIONING'", "'WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS'", 
			"'WEEKDAY'", "'WEEKOFYEAR'", "'WEIGHT_STRING'", "'WITHIN'", "'YEARWEEK'", 
			"'Y'", "'X'", "'VIA'", "'LASTVAL'", "'NEXTVAL'", "'SETVAL'", "'PREVIOUS'", 
			"'PERSISTENT'", "'BINLOG_MONITOR'", "'BINLOG_REPLAY'", "'FEDERATED_ADMIN'", 
			"'READ_ONLY_ADMIN'", "'REPLICA'", "'REPLICATION_MASTER_ADMIN'", "'MONITOR'", 
			"'READ_ONLY'", "'REPLAY'", "':='", "'+='", "'-='", "'*='", "'/='", "'%='", 
			"'&='", "'^='", "'|='", "'*'", "'/'", "'%'", "'+'", "'-'", "'DIV'", "'MOD'", 
			"'='", "'>'", "'<'", "'!'", "'~'", "'|'", "'&'", "'^'", "'.'", "'('", 
			"')'", "','", "';'", "'@'", "'0'", "'1'", "'2'", "'''", "'\"'", "'`'", 
			"':'"
		};
	}
	private static final String[] _LITERAL_NAMES = makeLiteralNames();
	private static String[] makeSymbolicNames() {
		return new String[] {
			null, "SPACE", "SPEC_MYSQL_COMMENT", "COMMENT_INPUT", "LINE_COMMENT", 
			"ADD", "ALL", "ALTER", "ALWAYS", "ANALYZE", "AND", "ARRAY", "AS", "ASC", 
			"ATTRIBUTE", "AUTO", "BEFORE", "BETWEEN", "BOTH", "BUCKETS", "BY", "CALL", 
			"CASCADE", "CASE", "CAST", "CHANGE", "CHARACTER", "CHECK", "COLLATE", 
			"COLUMN", "CONDITION", "CONSTRAINT", "CONTINUE", "CONVERT", "CREATE", 
			"CROSS", "CURRENT", "CURRENT_ROLE", "CURRENT_USER", "CURSOR", "DATABASE", 
			"DATABASES", "DECLARE", "DEFAULT", "DELAYED", "DELETE", "DESC", "DESCRIBE", 
			"DETERMINISTIC", "DIAGNOSTICS", "DISTINCT", "DISTINCTROW", "DROP", "EACH", 
			"ELSE", "ELSEIF", "EMPTY", "ENCLOSED", "ENFORCED", "ESCAPED", "EXCEPT", 
			"EXISTS", "EXIT", "EXPLAIN", "FALSE", "FETCH", "FOR", "FORCE", "FOREIGN", 
			"FROM", "FULLTEXT", "GENERATED", "GET", "GRANT", "GROUP", "GROUP_REPLICATION_STREAM", 
			"HAVING", "HIGH_PRIORITY", "HISTOGRAM", "IF", "IGNORE", "IGNORED", "IN", 
			"INDEX", "INFILE", "INNER", "INOUT", "INSERT", "INTERVAL", "INTO", "IS", 
			"ITERATE", "JOIN", "KEY", "KEYS", "KILL", "LATERAL", "LEADING", "LEAVE", 
			"LEFT", "LIKE", "LIMIT", "LINEAR", "LINES", "LOAD", "LOCK", "LOCKED", 
			"LOOP", "LOW_PRIORITY", "MASTER_BIND", "MASTER_SSL_VERIFY_SERVER_CERT", 
			"MATCH", "MAXVALUE", "MINVALUE", "MODIFIES", "NATURAL", "NOT", "NO_WRITE_TO_BINLOG", 
			"NULL_LITERAL", "NUMBER", "ON", "OPTIMIZE", "OPTION", "OPTIONAL", "OPTIONALLY", 
			"OR", "ORDER", "OUT", "OUTER", "OUTFILE", "OVER", "PARTITION", "PRIMARY", 
			"PROCEDURE", "PURGE", "RANGE", "READ", "READS", "REFERENCES", "REGEXP", 
			"RELEASE", "RENAME", "REPEAT", "REPLACE", "REQUIRE", "RESIGNAL", "RESTRICT", 
			"RETAIN", "RETURN", "REVOKE", "RIGHT", "RLIKE", "SCHEMA", "SCHEMAS", 
			"SELECT", "SET", "SEPARATOR", "SHOW", "SIGNAL", "SKIP_", "SKIP_QUERY_REWRITE", 
			"SPATIAL", "SQL", "SQLEXCEPTION", "SQLSTATE", "SQLWARNING", "SQL_BIG_RESULT", 
			"SQL_CALC_FOUND_ROWS", "SQL_SMALL_RESULT", "SSL", "STACKED", "STARTING", 
			"STATEMENT", "STRAIGHT_JOIN", "SYSTEM_TIME", "TABLE", "TERMINATED", "THEN", 
			"TO", "TRAILING", "TRIGGER", "TRUE", "UNDO", "UNION", "UNIQUE", "UNLOCK", 
			"UNSIGNED", "UPDATE", "USAGE", "USE", "USING", "VALUES", "WHEN", "WHERE", 
			"WHILE", "WITH", "WRITE", "XOR", "ZEROFILL", "TINYINT", "SMALLINT", "MEDIUMINT", 
			"MIDDLEINT", "INT", "INT1", "INT2", "INT3", "INT4", "INT8", "INTEGER", 
			"BIGINT", "REAL", "DOUBLE", "PRECISION", "FLOAT", "FLOAT4", "FLOAT8", 
			"DECIMAL", "DEC", "NUMERIC", "DATE", "TIME", "TIMESTAMP", "DATETIME", 
			"YEAR", "CHAR", "VARCHAR", "NVARCHAR", "NATIONAL", "BINARY", "VARBINARY", 
			"TINYBLOB", "BLOB", "MEDIUMBLOB", "LONG", "LONGBLOB", "TINYTEXT", "TEXT", 
			"MEDIUMTEXT", "LONGTEXT", "ENUM", "VARYING", "SERIAL", "YEAR_MONTH", 
			"DAY_HOUR", "DAY_MINUTE", "DAY_SECOND", "HOUR_MINUTE", "HOUR_SECOND", 
			"MINUTE_SECOND", "SECOND_MICROSECOND", "MINUTE_MICROSECOND", "HOUR_MICROSECOND", 
			"DAY_MICROSECOND", "JSON_ARRAY", "JSON_ARRAYAGG", "JSON_ARRAY_APPEND", 
			"JSON_ARRAY_INSERT", "JSON_CONTAINS", "JSON_CONTAINS_PATH", "JSON_DEPTH", 
			"JSON_EXTRACT", "JSON_INSERT", "JSON_KEYS", "JSON_LENGTH", "JSON_MERGE", 
			"JSON_MERGE_PATCH", "JSON_MERGE_PRESERVE", "JSON_OBJECT", "JSON_OBJECTAGG", 
			"JSON_OVERLAPS", "JSON_PRETTY", "JSON_QUOTE", "JSON_REMOVE", "JSON_REPLACE", 
			"JSON_SCHEMA_VALID", "JSON_SCHEMA_VALIDATION_REPORT", "JSON_SEARCH", 
			"JSON_SET", "JSON_STORAGE_FREE", "JSON_STORAGE_SIZE", "JSON_TABLE", "JSON_TYPE", 
			"JSON_UNQUOTE", "JSON_VALID", "JSON_VALUE", "NESTED", "ORDINALITY", "PATH", 
			"AVG", "BIT_AND", "BIT_OR", "BIT_XOR", "COUNT", "CUME_DIST", "DENSE_RANK", 
			"FIRST_VALUE", "GROUP_CONCAT", "LAG", "LAST_VALUE", "LEAD", "MAX", "MIN", 
			"NTILE", "NTH_VALUE", "PERCENT_RANK", "RANK", "ROW_NUMBER", "STD", "STDDEV", 
			"STDDEV_POP", "STDDEV_SAMP", "SUM", "VAR_POP", "VAR_SAMP", "VARIANCE", 
			"CURRENT_DATE", "CURRENT_TIME", "CURRENT_TIMESTAMP", "LOCALTIME", "CURDATE", 
			"CURTIME", "DATE_ADD", "DATE_SUB", "EXTRACT", "LOCALTIMESTAMP", "NOW", 
			"POSITION", "SUBSTR", "SUBSTRING", "SYSDATE", "TRIM", "UTC_DATE", "UTC_TIME", 
			"UTC_TIMESTAMP", "ACCOUNT", "ACTION", "AFTER", "AGGREGATE", "ALGORITHM", 
			"ANY", "AT", "AUTHORS", "AUTOCOMMIT", "AUTOEXTEND_SIZE", "AUTO_INCREMENT", 
			"AVG_ROW_LENGTH", "BEGIN", "BINLOG", "BIT", "BLOCK", "BOOL", "BOOLEAN", 
			"BTREE", "CACHE", "CASCADED", "CHAIN", "CHANGED", "CHANNEL", "CHECKSUM", 
			"PAGE_CHECKSUM", "CIPHER", "CLASS_ORIGIN", "CLIENT", "CLOSE", "CLUSTERING", 
			"COALESCE", "CODE", "COLUMNS", "COLUMN_FORMAT", "COLUMN_NAME", "COMMENT", 
			"COMMIT", "COMPACT", "COMPLETION", "COMPRESSED", "COMPRESSION", "CONCURRENT", 
			"CONNECT", "CONNECTION", "CONSISTENT", "CONSTRAINT_CATALOG", "CONSTRAINT_SCHEMA", 
			"CONSTRAINT_NAME", "CONTAINS", "CONTEXT", "CONTRIBUTORS", "COPY", "CPU", 
			"CYCLE", "CURSOR_NAME", "DATA", "DATAFILE", "DEALLOCATE", "DEFAULT_AUTH", 
			"DEFINER", "DELAY_KEY_WRITE", "DES_KEY_FILE", "DIRECTORY", "DISABLE", 
			"DISCARD", "DISK", "DO", "DUMPFILE", "DUPLICATE", "DYNAMIC", "ENABLE", 
			"ENCRYPTED", "ENCRYPTION", "ENCRYPTION_KEY_ID", "END", "ENDS", "ENGINE", 
			"ENGINES", "ERROR", "ERRORS", "ESCAPE", "EVEN", "EVENT", "EVENTS", "EVERY", 
			"EXCHANGE", "EXCLUSIVE", "EXPIRE", "EXPORT", "EXTENDED", "EXTENT_SIZE", 
			"FAILED_LOGIN_ATTEMPTS", "FAST", "FAULTS", "FIELDS", "FILE_BLOCK_SIZE", 
			"FILTER", "FIRST", "FIXED", "FLUSH", "FOLLOWING", "FOLLOWS", "FOUND", 
			"FULL", "FUNCTION", "GENERAL", "GLOBAL", "GRANTS", "GROUP_REPLICATION", 
			"HANDLER", "HASH", "HELP", "HISTORY", "HOST", "HOSTS", "IDENTIFIED", 
			"IGNORE_SERVER_IDS", "IMPORT", "INCREMENT", "INDEXES", "INITIAL_SIZE", 
			"INPLACE", "INSERT_METHOD", "INSTALL", "INSTANCE", "INSTANT", "INVISIBLE", 
			"INVOKER", "IO", "IO_THREAD", "IPC", "ISOLATION", "ISSUER", "JSON", "KEY_BLOCK_SIZE", 
			"LANGUAGE", "LAST", "LEAVES", "LESS", "LEVEL", "LIST", "LOCAL", "LOGFILE", 
			"LOGS", "MASTER", "MASTER_AUTO_POSITION", "MASTER_CONNECT_RETRY", "MASTER_DELAY", 
			"MASTER_HEARTBEAT_PERIOD", "MASTER_HOST", "MASTER_LOG_FILE", "MASTER_LOG_POS", 
			"MASTER_PASSWORD", "MASTER_PORT", "MASTER_RETRY_COUNT", "MASTER_SSL", 
			"MASTER_SSL_CA", "MASTER_SSL_CAPATH", "MASTER_SSL_CERT", "MASTER_SSL_CIPHER", 
			"MASTER_SSL_CRL", "MASTER_SSL_CRLPATH", "MASTER_SSL_KEY", "MASTER_TLS_VERSION", 
			"MASTER_USER", "MAX_CONNECTIONS_PER_HOUR", "MAX_QUERIES_PER_HOUR", "MAX_ROWS", 
			"MAX_SIZE", "MAX_UPDATES_PER_HOUR", "MAX_USER_CONNECTIONS", "MEDIUM", 
			"MEMBER", "MERGE", "MESSAGE_TEXT", "MID", "MIGRATE", "MIN_ROWS", "MODE", 
			"MODIFY", "MUTEX", "MYSQL", "MYSQL_ERRNO", "NAME", "NAMES", "NCHAR", 
			"NEVER", "NEXT", "NO", "NOCACHE", "NOCOPY", "NOCYCLE", "NOMAXVALUE", 
			"NOMINVALUE", "NOWAIT", "NODEGROUP", "NONE", "ODBC", "OFFLINE", "OFFSET", 
			"OF", "OJ", "OLD_PASSWORD", "ONE", "ONLINE", "ONLY", "OPEN", "OPTIMIZER_COSTS", 
			"OPTIONS", "OWNER", "PACK_KEYS", "PAGE", "PAGE_COMPRESSED", "PAGE_COMPRESSION_LEVEL", 
			"PARSER", "PARTIAL", "PARTITIONING", "PARTITIONS", "PASSWORD", "PASSWORD_LOCK_TIME", 
			"PHASE", "PLUGIN", "PLUGIN_DIR", "PLUGINS", "PORT", "PRECEDES", "PRECEDING", 
			"PREPARE", "PRESERVE", "PREV", "PROCESSLIST", "PROFILE", "PROFILES", 
			"PROXY", "QUERY", "QUICK", "REBUILD", "RECOVER", "RECURSIVE", "REDO_BUFFER_SIZE", 
			"REDUNDANT", "RELAY", "RELAY_LOG_FILE", "RELAY_LOG_POS", "RELAYLOG", 
			"REMOVE", "REORGANIZE", "REPAIR", "REPLICATE_DO_DB", "REPLICATE_DO_TABLE", 
			"REPLICATE_IGNORE_DB", "REPLICATE_IGNORE_TABLE", "REPLICATE_REWRITE_DB", 
			"REPLICATE_WILD_DO_TABLE", "REPLICATE_WILD_IGNORE_TABLE", "REPLICATION", 
			"RESET", "RESTART", "RESUME", "RETURNED_SQLSTATE", "RETURNING", "RETURNS", 
			"REUSE", "ROLE", "ROLLBACK", "ROLLUP", "ROTATE", "ROW", "ROWS", "ROW_FORMAT", 
			"RTREE", "SAVEPOINT", "SCHEDULE", "SECURITY", "SEQUENCE", "SERVER", "SESSION", 
			"SHARE", "SHARED", "SIGNED", "SIMPLE", "SLAVE", "SLOW", "SNAPSHOT", "SOCKET", 
			"SOME", "SONAME", "SOUNDS", "SOURCE", "SQL_AFTER_GTIDS", "SQL_AFTER_MTS_GAPS", 
			"SQL_BEFORE_GTIDS", "SQL_BUFFER_RESULT", "SQL_CACHE", "SQL_NO_CACHE", 
			"SQL_THREAD", "START", "STARTS", "STATS_AUTO_RECALC", "STATS_PERSISTENT", 
			"STATS_SAMPLE_PAGES", "STATUS", "STOP", "STORAGE", "STORED", "STRING", 
			"SUBCLASS_ORIGIN", "SUBJECT", "SUBPARTITION", "SUBPARTITIONS", "SUSPEND", 
			"SWAPS", "SWITCHES", "TABLE_NAME", "TABLESPACE", "TABLE_TYPE", "TEMPORARY", 
			"TEMPTABLE", "THAN", "TRADITIONAL", "TRANSACTION", "TRANSACTIONAL", "TRIGGERS", 
			"TRUNCATE", "UNBOUNDED", "UNDEFINED", "UNDOFILE", "UNDO_BUFFER_SIZE", 
			"UNINSTALL", "UNKNOWN", "UNTIL", "UPGRADE", "USER", "USE_FRM", "USER_RESOURCES", 
			"VALIDATION", "VALUE", "VARIABLES", "VIEW", "VIRTUAL", "VISIBLE", "WAIT", 
			"WARNINGS", "WINDOW", "WITHOUT", "WORK", "WRAPPER", "X509", "XA", "XML", 
			"YES", "EUR", "USA", "JIS", "ISO", "INTERNAL", "QUARTER", "MONTH", "DAY", 
			"HOUR", "MINUTE", "WEEK", "SECOND", "MICROSECOND", "USER_STATISTICS", 
			"CLIENT_STATISTICS", "INDEX_STATISTICS", "TABLE_STATISTICS", "FIREWALL_RULES", 
			"ADMIN", "APPLICATION_PASSWORD_ADMIN", "AUDIT_ADMIN", "AUDIT_ABORT_EXEMPT", 
			"AUTHENTICATION_POLICY_ADMIN", "BACKUP_ADMIN", "BINLOG_ADMIN", "BINLOG_ENCRYPTION_ADMIN", 
			"CLONE_ADMIN", "CONNECTION_ADMIN", "ENCRYPTION_KEY_ADMIN", "EXECUTE", 
			"FILE", "FIREWALL_ADMIN", "FIREWALL_EXEMPT", "FIREWALL_USER", "FLUSH_OPTIMIZER_COSTS", 
			"FLUSH_STATUS", "FLUSH_TABLES", "FLUSH_USER_RESOURCES", "GROUP_REPLICATION_ADMIN", 
			"INNODB_REDO_LOG_ARCHIVE", "INNODB_REDO_LOG_ENABLE", "INVOKE", "LAMBDA", 
			"NDB_STORED_USER", "PASSWORDLESS_USER_ADMIN", "PERSIST_RO_VARIABLES_ADMIN", 
			"PRIVILEGES", "PROCESS", "RELOAD", "REPLICATION_APPLIER", "REPLICATION_SLAVE_ADMIN", 
			"RESOURCE_GROUP_ADMIN", "RESOURCE_GROUP_USER", "ROLE_ADMIN", "ROUTINE", 
			"S3", "SERVICE_CONNECTION_ADMIN", "SESSION_VARIABLES_ADMIN", "SET_USER_ID", 
			"SHOW_ROUTINE", "SHUTDOWN", "SUPER", "SYSTEM_VARIABLES_ADMIN", "TABLES", 
			"TABLE_ENCRYPTION_ADMIN", "VERSION_TOKEN_ADMIN", "XA_RECOVER_ADMIN", 
			"ARMSCII8", "ASCII", "BIG5", "CP1250", "CP1251", "CP1256", "CP1257", 
			"CP850", "CP852", "CP866", "CP932", "DEC8", "EUCJPMS", "EUCKR", "GB18030", 
			"GB2312", "GBK", "GEOSTD8", "GREEK", "HEBREW", "HP8", "KEYBCS2", "KOI8R", 
			"KOI8U", "LATIN1", "LATIN2", "LATIN5", "LATIN7", "MACCE", "MACROMAN", 
			"SJIS", "SWE7", "TIS620", "UCS2", "UJIS", "UTF16", "UTF16LE", "UTF32", 
			"UTF8", "UTF8MB3", "UTF8MB4", "ARCHIVE", "BLACKHOLE", "CSV", "FEDERATED", 
			"INNODB", "MEMORY", "MRG_MYISAM", "MYISAM", "NDB", "NDBCLUSTER", "PERFORMANCE_SCHEMA", 
			"TOKUDB", "REPEATABLE", "COMMITTED", "UNCOMMITTED", "SERIALIZABLE", "GEOMETRYCOLLECTION", 
			"GEOMCOLLECTION", "GEOMETRY", "LINESTRING", "MULTILINESTRING", "MULTIPOINT", 
			"MULTIPOLYGON", "POINT", "POLYGON", "ABS", "ACOS", "ADDDATE", "ADDTIME", 
			"AES_DECRYPT", "AES_ENCRYPT", "AREA", "ASBINARY", "ASIN", "ASTEXT", "ASWKB", 
			"ASWKT", "ASYMMETRIC_DECRYPT", "ASYMMETRIC_DERIVE", "ASYMMETRIC_ENCRYPT", 
			"ASYMMETRIC_SIGN", "ASYMMETRIC_VERIFY", "ATAN", "ATAN2", "BENCHMARK", 
			"BIN", "BIT_COUNT", "BIT_LENGTH", "BUFFER", "CATALOG_NAME", "CEIL", "CEILING", 
			"CENTROID", "CHARACTER_LENGTH", "CHARSET", "CHAR_LENGTH", "COERCIBILITY", 
			"COLLATION", "COMPRESS", "CONCAT", "CONCAT_WS", "CONNECTION_ID", "CONV", 
			"CONVERT_TZ", "COS", "COT", "CRC32", "CREATE_ASYMMETRIC_PRIV_KEY", "CREATE_ASYMMETRIC_PUB_KEY", 
			"CREATE_DH_PARAMETERS", "CREATE_DIGEST", "CROSSES", "DATEDIFF", "DATE_FORMAT", 
			"DAYNAME", "DAYOFMONTH", "DAYOFWEEK", "DAYOFYEAR", "DECODE", "DEGREES", 
			"DES_DECRYPT", "DES_ENCRYPT", "DIMENSION", "DISJOINT", "ELT", "ENCODE", 
			"ENCRYPT", "ENDPOINT", "ENGINE_ATTRIBUTE", "ENVELOPE", "EQUALS", "EXP", 
			"EXPORT_SET", "EXTERIORRING", "EXTRACTVALUE", "FIELD", "FIND_IN_SET", 
			"FLOOR", "FORMAT", "FOUND_ROWS", "FROM_BASE64", "FROM_DAYS", "FROM_UNIXTIME", 
			"GEOMCOLLFROMTEXT", "GEOMCOLLFROMWKB", "GEOMETRYCOLLECTIONFROMTEXT", 
			"GEOMETRYCOLLECTIONFROMWKB", "GEOMETRYFROMTEXT", "GEOMETRYFROMWKB", "GEOMETRYN", 
			"GEOMETRYTYPE", "GEOMFROMTEXT", "GEOMFROMWKB", "GET_FORMAT", "GET_LOCK", 
			"GLENGTH", "GREATEST", "GTID_SUBSET", "GTID_SUBTRACT", "HEX", "IFNULL", 
			"INET6_ATON", "INET6_NTOA", "INET_ATON", "INET_NTOA", "INSTR", "INTERIORRINGN", 
			"INTERSECTS", "ISCLOSED", "ISEMPTY", "ISNULL", "ISSIMPLE", "IS_FREE_LOCK", 
			"IS_IPV4", "IS_IPV4_COMPAT", "IS_IPV4_MAPPED", "IS_IPV6", "IS_USED_LOCK", 
			"LAST_INSERT_ID", "LCASE", "LEAST", "LENGTH", "LINEFROMTEXT", "LINEFROMWKB", 
			"LINESTRINGFROMTEXT", "LINESTRINGFROMWKB", "LN", "LOAD_FILE", "LOCATE", 
			"LOG", "LOG10", "LOG2", "LOWER", "LPAD", "LTRIM", "MAKEDATE", "MAKETIME", 
			"MAKE_SET", "MASTER_POS_WAIT", "MBRCONTAINS", "MBRDISJOINT", "MBREQUAL", 
			"MBRINTERSECTS", "MBROVERLAPS", "MBRTOUCHES", "MBRWITHIN", "MD5", "MLINEFROMTEXT", 
			"MLINEFROMWKB", "MONTHNAME", "MPOINTFROMTEXT", "MPOINTFROMWKB", "MPOLYFROMTEXT", 
			"MPOLYFROMWKB", "MULTILINESTRINGFROMTEXT", "MULTILINESTRINGFROMWKB", 
			"MULTIPOINTFROMTEXT", "MULTIPOINTFROMWKB", "MULTIPOLYGONFROMTEXT", "MULTIPOLYGONFROMWKB", 
			"NAME_CONST", "NULLIF", "NUMGEOMETRIES", "NUMINTERIORRINGS", "NUMPOINTS", 
			"OCT", "OCTET_LENGTH", "ORD", "OVERLAPS", "PERIOD_ADD", "PERIOD_DIFF", 
			"PI", "POINTFROMTEXT", "POINTFROMWKB", "POINTN", "POLYFROMTEXT", "POLYFROMWKB", 
			"POLYGONFROMTEXT", "POLYGONFROMWKB", "POW", "POWER", "QUOTE", "RADIANS", 
			"RAND", "RANDOM", "RANDOM_BYTES", "RELEASE_LOCK", "REVERSE", "ROUND", 
			"ROW_COUNT", "RPAD", "RTRIM", "SEC_TO_TIME", "SECONDARY_ENGINE_ATTRIBUTE", 
			"SENSITIVE_VARIABLES_OBSERVER", "SESSION_USER", "SHA", "SHA1", "SHA2", 
			"SCHEMA_NAME", "SIGN", "SIN", "SLEEP", "SOUNDEX", "SQL_THREAD_WAIT_AFTER_GTIDS", 
			"SQRT", "SRID", "STARTPOINT", "STRCMP", "STR_TO_DATE", "ST_AREA", "ST_ASBINARY", 
			"ST_ASTEXT", "ST_ASWKB", "ST_ASWKT", "ST_BUFFER", "ST_CENTROID", "ST_CONTAINS", 
			"ST_CROSSES", "ST_DIFFERENCE", "ST_DIMENSION", "ST_DISJOINT", "ST_DISTANCE", 
			"ST_ENDPOINT", "ST_ENVELOPE", "ST_EQUALS", "ST_EXTERIORRING", "ST_GEOMCOLLFROMTEXT", 
			"ST_GEOMCOLLFROMTXT", "ST_GEOMCOLLFROMWKB", "ST_GEOMETRYCOLLECTIONFROMTEXT", 
			"ST_GEOMETRYCOLLECTIONFROMWKB", "ST_GEOMETRYFROMTEXT", "ST_GEOMETRYFROMWKB", 
			"ST_GEOMETRYN", "ST_GEOMETRYTYPE", "ST_GEOMFROMTEXT", "ST_GEOMFROMWKB", 
			"ST_INTERIORRINGN", "ST_INTERSECTION", "ST_INTERSECTS", "ST_ISCLOSED", 
			"ST_ISEMPTY", "ST_ISSIMPLE", "ST_LINEFROMTEXT", "ST_LINEFROMWKB", "ST_LINESTRINGFROMTEXT", 
			"ST_LINESTRINGFROMWKB", "ST_NUMGEOMETRIES", "ST_NUMINTERIORRING", "ST_NUMINTERIORRINGS", 
			"ST_NUMPOINTS", "ST_OVERLAPS", "ST_POINTFROMTEXT", "ST_POINTFROMWKB", 
			"ST_POINTN", "ST_POLYFROMTEXT", "ST_POLYFROMWKB", "ST_POLYGONFROMTEXT", 
			"ST_POLYGONFROMWKB", "ST_SRID", "ST_STARTPOINT", "ST_SYMDIFFERENCE", 
			"ST_TOUCHES", "ST_UNION", "ST_WITHIN", "ST_X", "ST_Y", "SUBDATE", "SUBSTRING_INDEX", 
			"SUBTIME", "SYSTEM_USER", "SYSTEM", "TAN", "TELEMETRY_LOG_ADMIN", "TIMEDIFF", 
			"TIMESTAMPADD", "TIMESTAMPDIFF", "TIME_FORMAT", "TIME_TO_SEC", "TOUCHES", 
			"TO_BASE64", "TO_DAYS", "TO_SECONDS", "TP_CONNECTION_ADMIN", "UCASE", 
			"UNCOMPRESS", "UNCOMPRESSED_LENGTH", "UNHEX", "UNIX_TIMESTAMP", "UPDATEXML", 
			"UPPER", "UUID", "UUID_SHORT", "VALIDATE_PASSWORD_STRENGTH", "VERSION", 
			"VERSIONING", "WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS", "WEEKDAY", "WEEKOFYEAR", 
			"WEIGHT_STRING", "WITHIN", "YEARWEEK", "Y_FUNCTION", "X_FUNCTION", "VIA", 
			"LASTVAL", "NEXTVAL", "SETVAL", "PREVIOUS", "PERSISTENT", "BINLOG_MONITOR", 
			"BINLOG_REPLAY", "FEDERATED_ADMIN", "READ_ONLY_ADMIN", "REPLICA", "REPLICATION_MASTER_ADMIN", 
			"MONITOR", "READ_ONLY", "REPLAY", "VAR_ASSIGN", "PLUS_ASSIGN", "MINUS_ASSIGN", 
			"MULT_ASSIGN", "DIV_ASSIGN", "MOD_ASSIGN", "AND_ASSIGN", "XOR_ASSIGN", 
			"OR_ASSIGN", "STAR", "DIVIDE", "MODULE", "PLUS", "MINUS", "DIV", "MOD", 
			"EQUAL_SYMBOL", "GREATER_SYMBOL", "LESS_SYMBOL", "EXCLAMATION_SYMBOL", 
			"BIT_NOT_OP", "BIT_OR_OP", "BIT_AND_OP", "BIT_XOR_OP", "DOT", "LR_BRACKET", 
			"RR_BRACKET", "COMMA", "SEMI", "AT_SIGN", "ZERO_DECIMAL", "ONE_DECIMAL", 
			"TWO_DECIMAL", "SINGLE_QUOTE_SYMB", "DOUBLE_QUOTE_SYMB", "REVERSE_QUOTE_SYMB", 
			"COLON_SYMB", "CHARSET_REVERSE_QOUTE_STRING", "FILESIZE_LITERAL", "START_NATIONAL_STRING_LITERAL", 
			"STRING_LITERAL", "DECIMAL_LITERAL", "HEXADECIMAL_LITERAL", "REAL_LITERAL", 
			"NULL_SPEC_LITERAL", "BIT_STRING", "STRING_CHARSET_NAME", "DOT_ID", "ID", 
			"REVERSE_QUOTE_ID", "HOST_IP_ADDRESS", "LOCAL_ID", "GLOBAL_ID", "ERROR_RECONGNIGION"
		};
	}
	private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames();
	public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES);

	/**
	 * @deprecated Use {@link #VOCABULARY} instead.
	 */
	@Deprecated
	public static final String[] tokenNames;
	static {
		tokenNames = new String[_SYMBOLIC_NAMES.length];
		for (int i = 0; i < tokenNames.length; i++) {
			tokenNames[i] = VOCABULARY.getLiteralName(i);
			if (tokenNames[i] == null) {
				tokenNames[i] = VOCABULARY.getSymbolicName(i);
			}

			if (tokenNames[i] == null) {
				tokenNames[i] = "";
			}
		}
	}

	@Override
	@Deprecated
	public String[] getTokenNames() {
		return tokenNames;
	}

	@Override

	public Vocabulary getVocabulary() {
		return VOCABULARY;
	}

	@Override
	public String getGrammarFileName() { return "MySqlParser.g4"; }

	@Override
	public String[] getRuleNames() { return ruleNames; }

	@Override
	public String getSerializedATN() { return _serializedATN; }

	@Override
	public ATN getATN() { return _ATN; }

	public MySqlParser(TokenStream input) {
		super(input);
		_interp = new ParserATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache);
	}

	public static class RootContext extends ParserRuleContext {
		public TerminalNode EOF() { return getToken(MySqlParser.EOF, 0); }
		public SqlStatementsContext sqlStatements() {
			return getRuleContext(SqlStatementsContext.class,0);
		}
		public List MINUS() { return getTokens(MySqlParser.MINUS); }
		public TerminalNode MINUS(int i) {
			return getToken(MySqlParser.MINUS, i);
		}
		public RootContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_root; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterRoot(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitRoot(this);
		}
	}

	public final RootContext root() throws RecognitionException {
		RootContext _localctx = new RootContext(_ctx, getState());
		enterRule(_localctx, 0, RULE_root);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(743);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ALTER) | (1L << ANALYZE) | (1L << CALL) | (1L << CHANGE) | (1L << CHECK) | (1L << CREATE) | (1L << DELETE) | (1L << DESC) | (1L << DESCRIBE) | (1L << DROP) | (1L << EXPLAIN))) != 0) || ((((_la - 72)) & ~0x3f) == 0 && ((1L << (_la - 72)) & ((1L << (GET - 72)) | (1L << (GRANT - 72)) | (1L << (INSERT - 72)) | (1L << (KILL - 72)) | (1L << (LOAD - 72)) | (1L << (LOCK - 72)) | (1L << (OPTIMIZE - 72)) | (1L << (PURGE - 72)))) != 0) || ((((_la - 140)) & ~0x3f) == 0 && ((1L << (_la - 140)) & ((1L << (RELEASE - 140)) | (1L << (RENAME - 140)) | (1L << (REPLACE - 140)) | (1L << (RESIGNAL - 140)) | (1L << (REVOKE - 140)) | (1L << (SELECT - 140)) | (1L << (SET - 140)) | (1L << (SHOW - 140)) | (1L << (SIGNAL - 140)) | (1L << (TABLE - 140)) | (1L << (UNLOCK - 140)) | (1L << (UPDATE - 140)) | (1L << (USE - 140)) | (1L << (VALUES - 140)) | (1L << (WITH - 140)))) != 0) || ((((_la - 347)) & ~0x3f) == 0 && ((1L << (_la - 347)) & ((1L << (BEGIN - 347)) | (1L << (BINLOG - 347)) | (1L << (CACHE - 347)) | (1L << (CHECKSUM - 347)) | (1L << (COMMIT - 347)) | (1L << (DEALLOCATE - 347)) | (1L << (DO - 347)))) != 0) || ((((_la - 435)) & ~0x3f) == 0 && ((1L << (_la - 435)) & ((1L << (FLUSH - 435)) | (1L << (HANDLER - 435)) | (1L << (HELP - 435)) | (1L << (INSTALL - 435)))) != 0) || ((((_la - 563)) & ~0x3f) == 0 && ((1L << (_la - 563)) & ((1L << (PREPARE - 563)) | (1L << (REPAIR - 563)) | (1L << (RESET - 563)) | (1L << (ROLLBACK - 563)) | (1L << (SAVEPOINT - 563)))) != 0) || ((((_la - 632)) & ~0x3f) == 0 && ((1L << (_la - 632)) & ((1L << (START - 632)) | (1L << (STOP - 632)) | (1L << (TRUNCATE - 632)) | (1L << (UNINSTALL - 632)) | (1L << (XA - 632)))) != 0) || _la==EXECUTE || _la==SHUTDOWN || _la==LR_BRACKET || _la==SEMI) {
				{
				setState(742);
				sqlStatements();
				}
			}

			setState(747);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==MINUS) {
				{
				setState(745);
				match(MINUS);
				setState(746);
				match(MINUS);
				}
			}

			setState(749);
			match(EOF);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SqlStatementsContext extends ParserRuleContext {
		public List sqlStatement() {
			return getRuleContexts(SqlStatementContext.class);
		}
		public SqlStatementContext sqlStatement(int i) {
			return getRuleContext(SqlStatementContext.class,i);
		}
		public List emptyStatement() {
			return getRuleContexts(EmptyStatementContext.class);
		}
		public EmptyStatementContext emptyStatement(int i) {
			return getRuleContext(EmptyStatementContext.class,i);
		}
		public List SEMI() { return getTokens(MySqlParser.SEMI); }
		public TerminalNode SEMI(int i) {
			return getToken(MySqlParser.SEMI, i);
		}
		public List MINUS() { return getTokens(MySqlParser.MINUS); }
		public TerminalNode MINUS(int i) {
			return getToken(MySqlParser.MINUS, i);
		}
		public SqlStatementsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_sqlStatements; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSqlStatements(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSqlStatements(this);
		}
	}

	public final SqlStatementsContext sqlStatements() throws RecognitionException {
		SqlStatementsContext _localctx = new SqlStatementsContext(_ctx, getState());
		enterRule(_localctx, 2, RULE_sqlStatements);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(762);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,5,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					{
					setState(760);
					_errHandler.sync(this);
					switch (_input.LA(1)) {
					case ALTER:
					case ANALYZE:
					case CALL:
					case CHANGE:
					case CHECK:
					case CREATE:
					case DELETE:
					case DESC:
					case DESCRIBE:
					case DROP:
					case EXPLAIN:
					case GET:
					case GRANT:
					case INSERT:
					case KILL:
					case LOAD:
					case LOCK:
					case OPTIMIZE:
					case PURGE:
					case RELEASE:
					case RENAME:
					case REPLACE:
					case RESIGNAL:
					case REVOKE:
					case SELECT:
					case SET:
					case SHOW:
					case SIGNAL:
					case TABLE:
					case UNLOCK:
					case UPDATE:
					case USE:
					case VALUES:
					case WITH:
					case BEGIN:
					case BINLOG:
					case CACHE:
					case CHECKSUM:
					case COMMIT:
					case DEALLOCATE:
					case DO:
					case FLUSH:
					case HANDLER:
					case HELP:
					case INSTALL:
					case PREPARE:
					case REPAIR:
					case RESET:
					case ROLLBACK:
					case SAVEPOINT:
					case START:
					case STOP:
					case TRUNCATE:
					case UNINSTALL:
					case XA:
					case EXECUTE:
					case SHUTDOWN:
					case LR_BRACKET:
						{
						setState(751);
						sqlStatement();
						setState(754);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==MINUS) {
							{
							setState(752);
							match(MINUS);
							setState(753);
							match(MINUS);
							}
						}

						setState(757);
						_errHandler.sync(this);
						switch ( getInterpreter().adaptivePredict(_input,3,_ctx) ) {
						case 1:
							{
							setState(756);
							match(SEMI);
							}
							break;
						}
						}
						break;
					case SEMI:
						{
						setState(759);
						emptyStatement();
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					} 
				}
				setState(764);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,5,_ctx);
			}
			setState(774);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case ALTER:
			case ANALYZE:
			case CALL:
			case CHANGE:
			case CHECK:
			case CREATE:
			case DELETE:
			case DESC:
			case DESCRIBE:
			case DROP:
			case EXPLAIN:
			case GET:
			case GRANT:
			case INSERT:
			case KILL:
			case LOAD:
			case LOCK:
			case OPTIMIZE:
			case PURGE:
			case RELEASE:
			case RENAME:
			case REPLACE:
			case RESIGNAL:
			case REVOKE:
			case SELECT:
			case SET:
			case SHOW:
			case SIGNAL:
			case TABLE:
			case UNLOCK:
			case UPDATE:
			case USE:
			case VALUES:
			case WITH:
			case BEGIN:
			case BINLOG:
			case CACHE:
			case CHECKSUM:
			case COMMIT:
			case DEALLOCATE:
			case DO:
			case FLUSH:
			case HANDLER:
			case HELP:
			case INSTALL:
			case PREPARE:
			case REPAIR:
			case RESET:
			case ROLLBACK:
			case SAVEPOINT:
			case START:
			case STOP:
			case TRUNCATE:
			case UNINSTALL:
			case XA:
			case EXECUTE:
			case SHUTDOWN:
			case LR_BRACKET:
				{
				setState(765);
				sqlStatement();
				setState(771);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,7,_ctx) ) {
				case 1:
					{
					setState(768);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==MINUS) {
						{
						setState(766);
						match(MINUS);
						setState(767);
						match(MINUS);
						}
					}

					setState(770);
					match(SEMI);
					}
					break;
				}
				}
				break;
			case SEMI:
				{
				setState(773);
				emptyStatement();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SqlStatementContext extends ParserRuleContext {
		public DdlStatementContext ddlStatement() {
			return getRuleContext(DdlStatementContext.class,0);
		}
		public DmlStatementContext dmlStatement() {
			return getRuleContext(DmlStatementContext.class,0);
		}
		public TransactionStatementContext transactionStatement() {
			return getRuleContext(TransactionStatementContext.class,0);
		}
		public ReplicationStatementContext replicationStatement() {
			return getRuleContext(ReplicationStatementContext.class,0);
		}
		public PreparedStatementContext preparedStatement() {
			return getRuleContext(PreparedStatementContext.class,0);
		}
		public AdministrationStatementContext administrationStatement() {
			return getRuleContext(AdministrationStatementContext.class,0);
		}
		public UtilityStatementContext utilityStatement() {
			return getRuleContext(UtilityStatementContext.class,0);
		}
		public SetStatementForContext setStatementFor() {
			return getRuleContext(SetStatementForContext.class,0);
		}
		public SqlStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_sqlStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSqlStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSqlStatement(this);
		}
	}

	public final SqlStatementContext sqlStatement() throws RecognitionException {
		SqlStatementContext _localctx = new SqlStatementContext(_ctx, getState());
		enterRule(_localctx, 4, RULE_sqlStatement);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(777);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,9,_ctx) ) {
			case 1:
				{
				setState(776);
				setStatementFor();
				}
				break;
			}
			setState(786);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,10,_ctx) ) {
			case 1:
				{
				setState(779);
				ddlStatement();
				}
				break;
			case 2:
				{
				setState(780);
				dmlStatement();
				}
				break;
			case 3:
				{
				setState(781);
				transactionStatement();
				}
				break;
			case 4:
				{
				setState(782);
				replicationStatement();
				}
				break;
			case 5:
				{
				setState(783);
				preparedStatement();
				}
				break;
			case 6:
				{
				setState(784);
				administrationStatement();
				}
				break;
			case 7:
				{
				setState(785);
				utilityStatement();
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SetStatementForContext extends ParserRuleContext {
		public TerminalNode SET() { return getToken(MySqlParser.SET, 0); }
		public TerminalNode STATEMENT() { return getToken(MySqlParser.STATEMENT, 0); }
		public List ID() { return getTokens(MySqlParser.ID); }
		public TerminalNode ID(int i) {
			return getToken(MySqlParser.ID, i);
		}
		public List EQUAL_SYMBOL() { return getTokens(MySqlParser.EQUAL_SYMBOL); }
		public TerminalNode EQUAL_SYMBOL(int i) {
			return getToken(MySqlParser.EQUAL_SYMBOL, i);
		}
		public List constant() {
			return getRuleContexts(ConstantContext.class);
		}
		public ConstantContext constant(int i) {
			return getRuleContext(ConstantContext.class,i);
		}
		public TerminalNode FOR() { return getToken(MySqlParser.FOR, 0); }
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public SetStatementForContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_setStatementFor; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSetStatementFor(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSetStatementFor(this);
		}
	}

	public final SetStatementForContext setStatementFor() throws RecognitionException {
		SetStatementForContext _localctx = new SetStatementForContext(_ctx, getState());
		enterRule(_localctx, 6, RULE_setStatementFor);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(788);
			match(SET);
			setState(789);
			match(STATEMENT);
			setState(790);
			match(ID);
			setState(791);
			match(EQUAL_SYMBOL);
			setState(792);
			constant();
			setState(799);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(793);
				match(COMMA);
				setState(794);
				match(ID);
				setState(795);
				match(EQUAL_SYMBOL);
				setState(796);
				constant();
				}
				}
				setState(801);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(802);
			match(FOR);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class EmptyStatementContext extends ParserRuleContext {
		public TerminalNode SEMI() { return getToken(MySqlParser.SEMI, 0); }
		public EmptyStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_emptyStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterEmptyStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitEmptyStatement(this);
		}
	}

	public final EmptyStatementContext emptyStatement() throws RecognitionException {
		EmptyStatementContext _localctx = new EmptyStatementContext(_ctx, getState());
		enterRule(_localctx, 8, RULE_emptyStatement);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(804);
			match(SEMI);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DdlStatementContext extends ParserRuleContext {
		public CreateDatabaseContext createDatabase() {
			return getRuleContext(CreateDatabaseContext.class,0);
		}
		public CreateEventContext createEvent() {
			return getRuleContext(CreateEventContext.class,0);
		}
		public CreateIndexContext createIndex() {
			return getRuleContext(CreateIndexContext.class,0);
		}
		public CreateLogfileGroupContext createLogfileGroup() {
			return getRuleContext(CreateLogfileGroupContext.class,0);
		}
		public CreateProcedureContext createProcedure() {
			return getRuleContext(CreateProcedureContext.class,0);
		}
		public CreateFunctionContext createFunction() {
			return getRuleContext(CreateFunctionContext.class,0);
		}
		public CreateServerContext createServer() {
			return getRuleContext(CreateServerContext.class,0);
		}
		public CreateTableContext createTable() {
			return getRuleContext(CreateTableContext.class,0);
		}
		public CreateTablespaceInnodbContext createTablespaceInnodb() {
			return getRuleContext(CreateTablespaceInnodbContext.class,0);
		}
		public CreateTablespaceNdbContext createTablespaceNdb() {
			return getRuleContext(CreateTablespaceNdbContext.class,0);
		}
		public CreateTriggerContext createTrigger() {
			return getRuleContext(CreateTriggerContext.class,0);
		}
		public CreateViewContext createView() {
			return getRuleContext(CreateViewContext.class,0);
		}
		public CreateRoleContext createRole() {
			return getRuleContext(CreateRoleContext.class,0);
		}
		public CreateSequenceContext createSequence() {
			return getRuleContext(CreateSequenceContext.class,0);
		}
		public AlterDatabaseContext alterDatabase() {
			return getRuleContext(AlterDatabaseContext.class,0);
		}
		public AlterEventContext alterEvent() {
			return getRuleContext(AlterEventContext.class,0);
		}
		public AlterFunctionContext alterFunction() {
			return getRuleContext(AlterFunctionContext.class,0);
		}
		public AlterInstanceContext alterInstance() {
			return getRuleContext(AlterInstanceContext.class,0);
		}
		public AlterLogfileGroupContext alterLogfileGroup() {
			return getRuleContext(AlterLogfileGroupContext.class,0);
		}
		public AlterProcedureContext alterProcedure() {
			return getRuleContext(AlterProcedureContext.class,0);
		}
		public AlterServerContext alterServer() {
			return getRuleContext(AlterServerContext.class,0);
		}
		public AlterTableContext alterTable() {
			return getRuleContext(AlterTableContext.class,0);
		}
		public AlterTablespaceContext alterTablespace() {
			return getRuleContext(AlterTablespaceContext.class,0);
		}
		public AlterViewContext alterView() {
			return getRuleContext(AlterViewContext.class,0);
		}
		public AlterSequenceContext alterSequence() {
			return getRuleContext(AlterSequenceContext.class,0);
		}
		public DropDatabaseContext dropDatabase() {
			return getRuleContext(DropDatabaseContext.class,0);
		}
		public DropEventContext dropEvent() {
			return getRuleContext(DropEventContext.class,0);
		}
		public DropIndexContext dropIndex() {
			return getRuleContext(DropIndexContext.class,0);
		}
		public DropLogfileGroupContext dropLogfileGroup() {
			return getRuleContext(DropLogfileGroupContext.class,0);
		}
		public DropProcedureContext dropProcedure() {
			return getRuleContext(DropProcedureContext.class,0);
		}
		public DropFunctionContext dropFunction() {
			return getRuleContext(DropFunctionContext.class,0);
		}
		public DropServerContext dropServer() {
			return getRuleContext(DropServerContext.class,0);
		}
		public DropTableContext dropTable() {
			return getRuleContext(DropTableContext.class,0);
		}
		public DropTablespaceContext dropTablespace() {
			return getRuleContext(DropTablespaceContext.class,0);
		}
		public DropTriggerContext dropTrigger() {
			return getRuleContext(DropTriggerContext.class,0);
		}
		public DropViewContext dropView() {
			return getRuleContext(DropViewContext.class,0);
		}
		public DropRoleContext dropRole() {
			return getRuleContext(DropRoleContext.class,0);
		}
		public DropSequenceContext dropSequence() {
			return getRuleContext(DropSequenceContext.class,0);
		}
		public SetRoleContext setRole() {
			return getRuleContext(SetRoleContext.class,0);
		}
		public RenameTableContext renameTable() {
			return getRuleContext(RenameTableContext.class,0);
		}
		public TruncateTableContext truncateTable() {
			return getRuleContext(TruncateTableContext.class,0);
		}
		public DdlStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_ddlStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDdlStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDdlStatement(this);
		}
	}

	public final DdlStatementContext ddlStatement() throws RecognitionException {
		DdlStatementContext _localctx = new DdlStatementContext(_ctx, getState());
		enterRule(_localctx, 10, RULE_ddlStatement);
		try {
			setState(847);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,12,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(806);
				createDatabase();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(807);
				createEvent();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(808);
				createIndex();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(809);
				createLogfileGroup();
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(810);
				createProcedure();
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(811);
				createFunction();
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(812);
				createServer();
				}
				break;
			case 8:
				enterOuterAlt(_localctx, 8);
				{
				setState(813);
				createTable();
				}
				break;
			case 9:
				enterOuterAlt(_localctx, 9);
				{
				setState(814);
				createTablespaceInnodb();
				}
				break;
			case 10:
				enterOuterAlt(_localctx, 10);
				{
				setState(815);
				createTablespaceNdb();
				}
				break;
			case 11:
				enterOuterAlt(_localctx, 11);
				{
				setState(816);
				createTrigger();
				}
				break;
			case 12:
				enterOuterAlt(_localctx, 12);
				{
				setState(817);
				createView();
				}
				break;
			case 13:
				enterOuterAlt(_localctx, 13);
				{
				setState(818);
				createRole();
				}
				break;
			case 14:
				enterOuterAlt(_localctx, 14);
				{
				setState(819);
				createSequence();
				}
				break;
			case 15:
				enterOuterAlt(_localctx, 15);
				{
				setState(820);
				alterDatabase();
				}
				break;
			case 16:
				enterOuterAlt(_localctx, 16);
				{
				setState(821);
				alterEvent();
				}
				break;
			case 17:
				enterOuterAlt(_localctx, 17);
				{
				setState(822);
				alterFunction();
				}
				break;
			case 18:
				enterOuterAlt(_localctx, 18);
				{
				setState(823);
				alterInstance();
				}
				break;
			case 19:
				enterOuterAlt(_localctx, 19);
				{
				setState(824);
				alterLogfileGroup();
				}
				break;
			case 20:
				enterOuterAlt(_localctx, 20);
				{
				setState(825);
				alterProcedure();
				}
				break;
			case 21:
				enterOuterAlt(_localctx, 21);
				{
				setState(826);
				alterServer();
				}
				break;
			case 22:
				enterOuterAlt(_localctx, 22);
				{
				setState(827);
				alterTable();
				}
				break;
			case 23:
				enterOuterAlt(_localctx, 23);
				{
				setState(828);
				alterTablespace();
				}
				break;
			case 24:
				enterOuterAlt(_localctx, 24);
				{
				setState(829);
				alterView();
				}
				break;
			case 25:
				enterOuterAlt(_localctx, 25);
				{
				setState(830);
				alterSequence();
				}
				break;
			case 26:
				enterOuterAlt(_localctx, 26);
				{
				setState(831);
				dropDatabase();
				}
				break;
			case 27:
				enterOuterAlt(_localctx, 27);
				{
				setState(832);
				dropEvent();
				}
				break;
			case 28:
				enterOuterAlt(_localctx, 28);
				{
				setState(833);
				dropIndex();
				}
				break;
			case 29:
				enterOuterAlt(_localctx, 29);
				{
				setState(834);
				dropLogfileGroup();
				}
				break;
			case 30:
				enterOuterAlt(_localctx, 30);
				{
				setState(835);
				dropProcedure();
				}
				break;
			case 31:
				enterOuterAlt(_localctx, 31);
				{
				setState(836);
				dropFunction();
				}
				break;
			case 32:
				enterOuterAlt(_localctx, 32);
				{
				setState(837);
				dropServer();
				}
				break;
			case 33:
				enterOuterAlt(_localctx, 33);
				{
				setState(838);
				dropTable();
				}
				break;
			case 34:
				enterOuterAlt(_localctx, 34);
				{
				setState(839);
				dropTablespace();
				}
				break;
			case 35:
				enterOuterAlt(_localctx, 35);
				{
				setState(840);
				dropTrigger();
				}
				break;
			case 36:
				enterOuterAlt(_localctx, 36);
				{
				setState(841);
				dropView();
				}
				break;
			case 37:
				enterOuterAlt(_localctx, 37);
				{
				setState(842);
				dropRole();
				}
				break;
			case 38:
				enterOuterAlt(_localctx, 38);
				{
				setState(843);
				dropSequence();
				}
				break;
			case 39:
				enterOuterAlt(_localctx, 39);
				{
				setState(844);
				setRole();
				}
				break;
			case 40:
				enterOuterAlt(_localctx, 40);
				{
				setState(845);
				renameTable();
				}
				break;
			case 41:
				enterOuterAlt(_localctx, 41);
				{
				setState(846);
				truncateTable();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DmlStatementContext extends ParserRuleContext {
		public SelectStatementContext selectStatement() {
			return getRuleContext(SelectStatementContext.class,0);
		}
		public InsertStatementContext insertStatement() {
			return getRuleContext(InsertStatementContext.class,0);
		}
		public UpdateStatementContext updateStatement() {
			return getRuleContext(UpdateStatementContext.class,0);
		}
		public DeleteStatementContext deleteStatement() {
			return getRuleContext(DeleteStatementContext.class,0);
		}
		public ReplaceStatementContext replaceStatement() {
			return getRuleContext(ReplaceStatementContext.class,0);
		}
		public CallStatementContext callStatement() {
			return getRuleContext(CallStatementContext.class,0);
		}
		public LoadDataStatementContext loadDataStatement() {
			return getRuleContext(LoadDataStatementContext.class,0);
		}
		public LoadXmlStatementContext loadXmlStatement() {
			return getRuleContext(LoadXmlStatementContext.class,0);
		}
		public DoStatementContext doStatement() {
			return getRuleContext(DoStatementContext.class,0);
		}
		public HandlerStatementContext handlerStatement() {
			return getRuleContext(HandlerStatementContext.class,0);
		}
		public ValuesStatementContext valuesStatement() {
			return getRuleContext(ValuesStatementContext.class,0);
		}
		public WithStatementContext withStatement() {
			return getRuleContext(WithStatementContext.class,0);
		}
		public TableStatementContext tableStatement() {
			return getRuleContext(TableStatementContext.class,0);
		}
		public DmlStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dmlStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDmlStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDmlStatement(this);
		}
	}

	public final DmlStatementContext dmlStatement() throws RecognitionException {
		DmlStatementContext _localctx = new DmlStatementContext(_ctx, getState());
		enterRule(_localctx, 12, RULE_dmlStatement);
		try {
			setState(862);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,13,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(849);
				selectStatement();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(850);
				insertStatement();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(851);
				updateStatement();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(852);
				deleteStatement();
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(853);
				replaceStatement();
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(854);
				callStatement();
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(855);
				loadDataStatement();
				}
				break;
			case 8:
				enterOuterAlt(_localctx, 8);
				{
				setState(856);
				loadXmlStatement();
				}
				break;
			case 9:
				enterOuterAlt(_localctx, 9);
				{
				setState(857);
				doStatement();
				}
				break;
			case 10:
				enterOuterAlt(_localctx, 10);
				{
				setState(858);
				handlerStatement();
				}
				break;
			case 11:
				enterOuterAlt(_localctx, 11);
				{
				setState(859);
				valuesStatement();
				}
				break;
			case 12:
				enterOuterAlt(_localctx, 12);
				{
				setState(860);
				withStatement();
				}
				break;
			case 13:
				enterOuterAlt(_localctx, 13);
				{
				setState(861);
				tableStatement();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TransactionStatementContext extends ParserRuleContext {
		public StartTransactionContext startTransaction() {
			return getRuleContext(StartTransactionContext.class,0);
		}
		public BeginWorkContext beginWork() {
			return getRuleContext(BeginWorkContext.class,0);
		}
		public CommitWorkContext commitWork() {
			return getRuleContext(CommitWorkContext.class,0);
		}
		public RollbackWorkContext rollbackWork() {
			return getRuleContext(RollbackWorkContext.class,0);
		}
		public SavepointStatementContext savepointStatement() {
			return getRuleContext(SavepointStatementContext.class,0);
		}
		public RollbackStatementContext rollbackStatement() {
			return getRuleContext(RollbackStatementContext.class,0);
		}
		public ReleaseStatementContext releaseStatement() {
			return getRuleContext(ReleaseStatementContext.class,0);
		}
		public LockTablesContext lockTables() {
			return getRuleContext(LockTablesContext.class,0);
		}
		public UnlockTablesContext unlockTables() {
			return getRuleContext(UnlockTablesContext.class,0);
		}
		public TransactionStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_transactionStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTransactionStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTransactionStatement(this);
		}
	}

	public final TransactionStatementContext transactionStatement() throws RecognitionException {
		TransactionStatementContext _localctx = new TransactionStatementContext(_ctx, getState());
		enterRule(_localctx, 14, RULE_transactionStatement);
		try {
			setState(873);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,14,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(864);
				startTransaction();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(865);
				beginWork();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(866);
				commitWork();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(867);
				rollbackWork();
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(868);
				savepointStatement();
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(869);
				rollbackStatement();
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(870);
				releaseStatement();
				}
				break;
			case 8:
				enterOuterAlt(_localctx, 8);
				{
				setState(871);
				lockTables();
				}
				break;
			case 9:
				enterOuterAlt(_localctx, 9);
				{
				setState(872);
				unlockTables();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ReplicationStatementContext extends ParserRuleContext {
		public ChangeMasterContext changeMaster() {
			return getRuleContext(ChangeMasterContext.class,0);
		}
		public ChangeReplicationFilterContext changeReplicationFilter() {
			return getRuleContext(ChangeReplicationFilterContext.class,0);
		}
		public PurgeBinaryLogsContext purgeBinaryLogs() {
			return getRuleContext(PurgeBinaryLogsContext.class,0);
		}
		public ResetMasterContext resetMaster() {
			return getRuleContext(ResetMasterContext.class,0);
		}
		public ResetSlaveContext resetSlave() {
			return getRuleContext(ResetSlaveContext.class,0);
		}
		public StartSlaveContext startSlave() {
			return getRuleContext(StartSlaveContext.class,0);
		}
		public StopSlaveContext stopSlave() {
			return getRuleContext(StopSlaveContext.class,0);
		}
		public StartGroupReplicationContext startGroupReplication() {
			return getRuleContext(StartGroupReplicationContext.class,0);
		}
		public StopGroupReplicationContext stopGroupReplication() {
			return getRuleContext(StopGroupReplicationContext.class,0);
		}
		public XaStartTransactionContext xaStartTransaction() {
			return getRuleContext(XaStartTransactionContext.class,0);
		}
		public XaEndTransactionContext xaEndTransaction() {
			return getRuleContext(XaEndTransactionContext.class,0);
		}
		public XaPrepareStatementContext xaPrepareStatement() {
			return getRuleContext(XaPrepareStatementContext.class,0);
		}
		public XaCommitWorkContext xaCommitWork() {
			return getRuleContext(XaCommitWorkContext.class,0);
		}
		public XaRollbackWorkContext xaRollbackWork() {
			return getRuleContext(XaRollbackWorkContext.class,0);
		}
		public XaRecoverWorkContext xaRecoverWork() {
			return getRuleContext(XaRecoverWorkContext.class,0);
		}
		public ReplicationStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_replicationStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterReplicationStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitReplicationStatement(this);
		}
	}

	public final ReplicationStatementContext replicationStatement() throws RecognitionException {
		ReplicationStatementContext _localctx = new ReplicationStatementContext(_ctx, getState());
		enterRule(_localctx, 16, RULE_replicationStatement);
		try {
			setState(890);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,15,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(875);
				changeMaster();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(876);
				changeReplicationFilter();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(877);
				purgeBinaryLogs();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(878);
				resetMaster();
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(879);
				resetSlave();
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(880);
				startSlave();
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(881);
				stopSlave();
				}
				break;
			case 8:
				enterOuterAlt(_localctx, 8);
				{
				setState(882);
				startGroupReplication();
				}
				break;
			case 9:
				enterOuterAlt(_localctx, 9);
				{
				setState(883);
				stopGroupReplication();
				}
				break;
			case 10:
				enterOuterAlt(_localctx, 10);
				{
				setState(884);
				xaStartTransaction();
				}
				break;
			case 11:
				enterOuterAlt(_localctx, 11);
				{
				setState(885);
				xaEndTransaction();
				}
				break;
			case 12:
				enterOuterAlt(_localctx, 12);
				{
				setState(886);
				xaPrepareStatement();
				}
				break;
			case 13:
				enterOuterAlt(_localctx, 13);
				{
				setState(887);
				xaCommitWork();
				}
				break;
			case 14:
				enterOuterAlt(_localctx, 14);
				{
				setState(888);
				xaRollbackWork();
				}
				break;
			case 15:
				enterOuterAlt(_localctx, 15);
				{
				setState(889);
				xaRecoverWork();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PreparedStatementContext extends ParserRuleContext {
		public PrepareStatementContext prepareStatement() {
			return getRuleContext(PrepareStatementContext.class,0);
		}
		public ExecuteStatementContext executeStatement() {
			return getRuleContext(ExecuteStatementContext.class,0);
		}
		public DeallocatePrepareContext deallocatePrepare() {
			return getRuleContext(DeallocatePrepareContext.class,0);
		}
		public PreparedStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_preparedStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPreparedStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPreparedStatement(this);
		}
	}

	public final PreparedStatementContext preparedStatement() throws RecognitionException {
		PreparedStatementContext _localctx = new PreparedStatementContext(_ctx, getState());
		enterRule(_localctx, 18, RULE_preparedStatement);
		try {
			setState(895);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case PREPARE:
				enterOuterAlt(_localctx, 1);
				{
				setState(892);
				prepareStatement();
				}
				break;
			case EXECUTE:
				enterOuterAlt(_localctx, 2);
				{
				setState(893);
				executeStatement();
				}
				break;
			case DROP:
			case DEALLOCATE:
				enterOuterAlt(_localctx, 3);
				{
				setState(894);
				deallocatePrepare();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CompoundStatementContext extends ParserRuleContext {
		public BlockStatementContext blockStatement() {
			return getRuleContext(BlockStatementContext.class,0);
		}
		public CaseStatementContext caseStatement() {
			return getRuleContext(CaseStatementContext.class,0);
		}
		public IfStatementContext ifStatement() {
			return getRuleContext(IfStatementContext.class,0);
		}
		public LeaveStatementContext leaveStatement() {
			return getRuleContext(LeaveStatementContext.class,0);
		}
		public LoopStatementContext loopStatement() {
			return getRuleContext(LoopStatementContext.class,0);
		}
		public RepeatStatementContext repeatStatement() {
			return getRuleContext(RepeatStatementContext.class,0);
		}
		public WhileStatementContext whileStatement() {
			return getRuleContext(WhileStatementContext.class,0);
		}
		public IterateStatementContext iterateStatement() {
			return getRuleContext(IterateStatementContext.class,0);
		}
		public ReturnStatementContext returnStatement() {
			return getRuleContext(ReturnStatementContext.class,0);
		}
		public CursorStatementContext cursorStatement() {
			return getRuleContext(CursorStatementContext.class,0);
		}
		public WithStatementContext withStatement() {
			return getRuleContext(WithStatementContext.class,0);
		}
		public DmlStatementContext dmlStatement() {
			return getRuleContext(DmlStatementContext.class,0);
		}
		public CompoundStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_compoundStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCompoundStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCompoundStatement(this);
		}
	}

	public final CompoundStatementContext compoundStatement() throws RecognitionException {
		CompoundStatementContext _localctx = new CompoundStatementContext(_ctx, getState());
		enterRule(_localctx, 20, RULE_compoundStatement);
		try {
			setState(910);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,17,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(897);
				blockStatement();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(898);
				caseStatement();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(899);
				ifStatement();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(900);
				leaveStatement();
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(901);
				loopStatement();
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(902);
				repeatStatement();
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(903);
				whileStatement();
				}
				break;
			case 8:
				enterOuterAlt(_localctx, 8);
				{
				setState(904);
				iterateStatement();
				}
				break;
			case 9:
				enterOuterAlt(_localctx, 9);
				{
				setState(905);
				returnStatement();
				}
				break;
			case 10:
				enterOuterAlt(_localctx, 10);
				{
				setState(906);
				cursorStatement();
				}
				break;
			case 11:
				enterOuterAlt(_localctx, 11);
				{
				setState(907);
				withStatement();
				setState(908);
				dmlStatement();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AdministrationStatementContext extends ParserRuleContext {
		public AlterUserContext alterUser() {
			return getRuleContext(AlterUserContext.class,0);
		}
		public CreateUserContext createUser() {
			return getRuleContext(CreateUserContext.class,0);
		}
		public DropUserContext dropUser() {
			return getRuleContext(DropUserContext.class,0);
		}
		public GrantStatementContext grantStatement() {
			return getRuleContext(GrantStatementContext.class,0);
		}
		public GrantProxyContext grantProxy() {
			return getRuleContext(GrantProxyContext.class,0);
		}
		public RenameUserContext renameUser() {
			return getRuleContext(RenameUserContext.class,0);
		}
		public RevokeStatementContext revokeStatement() {
			return getRuleContext(RevokeStatementContext.class,0);
		}
		public RevokeProxyContext revokeProxy() {
			return getRuleContext(RevokeProxyContext.class,0);
		}
		public AnalyzeTableContext analyzeTable() {
			return getRuleContext(AnalyzeTableContext.class,0);
		}
		public CheckTableContext checkTable() {
			return getRuleContext(CheckTableContext.class,0);
		}
		public ChecksumTableContext checksumTable() {
			return getRuleContext(ChecksumTableContext.class,0);
		}
		public OptimizeTableContext optimizeTable() {
			return getRuleContext(OptimizeTableContext.class,0);
		}
		public RepairTableContext repairTable() {
			return getRuleContext(RepairTableContext.class,0);
		}
		public CreateUdfunctionContext createUdfunction() {
			return getRuleContext(CreateUdfunctionContext.class,0);
		}
		public InstallPluginContext installPlugin() {
			return getRuleContext(InstallPluginContext.class,0);
		}
		public UninstallPluginContext uninstallPlugin() {
			return getRuleContext(UninstallPluginContext.class,0);
		}
		public SetStatementContext setStatement() {
			return getRuleContext(SetStatementContext.class,0);
		}
		public ShowStatementContext showStatement() {
			return getRuleContext(ShowStatementContext.class,0);
		}
		public BinlogStatementContext binlogStatement() {
			return getRuleContext(BinlogStatementContext.class,0);
		}
		public CacheIndexStatementContext cacheIndexStatement() {
			return getRuleContext(CacheIndexStatementContext.class,0);
		}
		public FlushStatementContext flushStatement() {
			return getRuleContext(FlushStatementContext.class,0);
		}
		public KillStatementContext killStatement() {
			return getRuleContext(KillStatementContext.class,0);
		}
		public LoadIndexIntoCacheContext loadIndexIntoCache() {
			return getRuleContext(LoadIndexIntoCacheContext.class,0);
		}
		public ResetStatementContext resetStatement() {
			return getRuleContext(ResetStatementContext.class,0);
		}
		public ShutdownStatementContext shutdownStatement() {
			return getRuleContext(ShutdownStatementContext.class,0);
		}
		public AdministrationStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_administrationStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAdministrationStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAdministrationStatement(this);
		}
	}

	public final AdministrationStatementContext administrationStatement() throws RecognitionException {
		AdministrationStatementContext _localctx = new AdministrationStatementContext(_ctx, getState());
		enterRule(_localctx, 22, RULE_administrationStatement);
		try {
			setState(937);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,18,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(912);
				alterUser();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(913);
				createUser();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(914);
				dropUser();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(915);
				grantStatement();
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(916);
				grantProxy();
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(917);
				renameUser();
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(918);
				revokeStatement();
				}
				break;
			case 8:
				enterOuterAlt(_localctx, 8);
				{
				setState(919);
				revokeProxy();
				}
				break;
			case 9:
				enterOuterAlt(_localctx, 9);
				{
				setState(920);
				analyzeTable();
				}
				break;
			case 10:
				enterOuterAlt(_localctx, 10);
				{
				setState(921);
				checkTable();
				}
				break;
			case 11:
				enterOuterAlt(_localctx, 11);
				{
				setState(922);
				checksumTable();
				}
				break;
			case 12:
				enterOuterAlt(_localctx, 12);
				{
				setState(923);
				optimizeTable();
				}
				break;
			case 13:
				enterOuterAlt(_localctx, 13);
				{
				setState(924);
				repairTable();
				}
				break;
			case 14:
				enterOuterAlt(_localctx, 14);
				{
				setState(925);
				createUdfunction();
				}
				break;
			case 15:
				enterOuterAlt(_localctx, 15);
				{
				setState(926);
				installPlugin();
				}
				break;
			case 16:
				enterOuterAlt(_localctx, 16);
				{
				setState(927);
				uninstallPlugin();
				}
				break;
			case 17:
				enterOuterAlt(_localctx, 17);
				{
				setState(928);
				setStatement();
				}
				break;
			case 18:
				enterOuterAlt(_localctx, 18);
				{
				setState(929);
				showStatement();
				}
				break;
			case 19:
				enterOuterAlt(_localctx, 19);
				{
				setState(930);
				binlogStatement();
				}
				break;
			case 20:
				enterOuterAlt(_localctx, 20);
				{
				setState(931);
				cacheIndexStatement();
				}
				break;
			case 21:
				enterOuterAlt(_localctx, 21);
				{
				setState(932);
				flushStatement();
				}
				break;
			case 22:
				enterOuterAlt(_localctx, 22);
				{
				setState(933);
				killStatement();
				}
				break;
			case 23:
				enterOuterAlt(_localctx, 23);
				{
				setState(934);
				loadIndexIntoCache();
				}
				break;
			case 24:
				enterOuterAlt(_localctx, 24);
				{
				setState(935);
				resetStatement();
				}
				break;
			case 25:
				enterOuterAlt(_localctx, 25);
				{
				setState(936);
				shutdownStatement();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class UtilityStatementContext extends ParserRuleContext {
		public SimpleDescribeStatementContext simpleDescribeStatement() {
			return getRuleContext(SimpleDescribeStatementContext.class,0);
		}
		public FullDescribeStatementContext fullDescribeStatement() {
			return getRuleContext(FullDescribeStatementContext.class,0);
		}
		public HelpStatementContext helpStatement() {
			return getRuleContext(HelpStatementContext.class,0);
		}
		public UseStatementContext useStatement() {
			return getRuleContext(UseStatementContext.class,0);
		}
		public SignalStatementContext signalStatement() {
			return getRuleContext(SignalStatementContext.class,0);
		}
		public ResignalStatementContext resignalStatement() {
			return getRuleContext(ResignalStatementContext.class,0);
		}
		public DiagnosticsStatementContext diagnosticsStatement() {
			return getRuleContext(DiagnosticsStatementContext.class,0);
		}
		public UtilityStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_utilityStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterUtilityStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitUtilityStatement(this);
		}
	}

	public final UtilityStatementContext utilityStatement() throws RecognitionException {
		UtilityStatementContext _localctx = new UtilityStatementContext(_ctx, getState());
		enterRule(_localctx, 24, RULE_utilityStatement);
		try {
			setState(946);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,19,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(939);
				simpleDescribeStatement();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(940);
				fullDescribeStatement();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(941);
				helpStatement();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(942);
				useStatement();
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(943);
				signalStatement();
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(944);
				resignalStatement();
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(945);
				diagnosticsStatement();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateDatabaseContext extends ParserRuleContext {
		public Token dbFormat;
		public TerminalNode CREATE() { return getToken(MySqlParser.CREATE, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode DATABASE() { return getToken(MySqlParser.DATABASE, 0); }
		public TerminalNode SCHEMA() { return getToken(MySqlParser.SCHEMA, 0); }
		public IfNotExistsContext ifNotExists() {
			return getRuleContext(IfNotExistsContext.class,0);
		}
		public List createDatabaseOption() {
			return getRuleContexts(CreateDatabaseOptionContext.class);
		}
		public CreateDatabaseOptionContext createDatabaseOption(int i) {
			return getRuleContext(CreateDatabaseOptionContext.class,i);
		}
		public CreateDatabaseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createDatabase; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCreateDatabase(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCreateDatabase(this);
		}
	}

	public final CreateDatabaseContext createDatabase() throws RecognitionException {
		CreateDatabaseContext _localctx = new CreateDatabaseContext(_ctx, getState());
		enterRule(_localctx, 26, RULE_createDatabase);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(948);
			match(CREATE);
			setState(949);
			((CreateDatabaseContext)_localctx).dbFormat = _input.LT(1);
			_la = _input.LA(1);
			if ( !(_la==DATABASE || _la==SCHEMA) ) {
				((CreateDatabaseContext)_localctx).dbFormat = (Token)_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(951);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,20,_ctx) ) {
			case 1:
				{
				setState(950);
				ifNotExists();
				}
				break;
			}
			setState(953);
			uid();
			setState(957);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CHARACTER) | (1L << COLLATE) | (1L << DEFAULT))) != 0) || _la==READ || _la==CHAR || _la==ENCRYPTION || _la==CHARSET) {
				{
				{
				setState(954);
				createDatabaseOption();
				}
				}
				setState(959);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateEventContext extends ParserRuleContext {
		public TerminalNode CREATE() { return getToken(MySqlParser.CREATE, 0); }
		public TerminalNode EVENT() { return getToken(MySqlParser.EVENT, 0); }
		public FullIdContext fullId() {
			return getRuleContext(FullIdContext.class,0);
		}
		public List ON() { return getTokens(MySqlParser.ON); }
		public TerminalNode ON(int i) {
			return getToken(MySqlParser.ON, i);
		}
		public TerminalNode SCHEDULE() { return getToken(MySqlParser.SCHEDULE, 0); }
		public ScheduleExpressionContext scheduleExpression() {
			return getRuleContext(ScheduleExpressionContext.class,0);
		}
		public TerminalNode DO() { return getToken(MySqlParser.DO, 0); }
		public RoutineBodyContext routineBody() {
			return getRuleContext(RoutineBodyContext.class,0);
		}
		public OwnerStatementContext ownerStatement() {
			return getRuleContext(OwnerStatementContext.class,0);
		}
		public IfNotExistsContext ifNotExists() {
			return getRuleContext(IfNotExistsContext.class,0);
		}
		public TerminalNode COMPLETION() { return getToken(MySqlParser.COMPLETION, 0); }
		public TerminalNode PRESERVE() { return getToken(MySqlParser.PRESERVE, 0); }
		public EnableTypeContext enableType() {
			return getRuleContext(EnableTypeContext.class,0);
		}
		public TerminalNode COMMENT() { return getToken(MySqlParser.COMMENT, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode NOT() { return getToken(MySqlParser.NOT, 0); }
		public CreateEventContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createEvent; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCreateEvent(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCreateEvent(this);
		}
	}

	public final CreateEventContext createEvent() throws RecognitionException {
		CreateEventContext _localctx = new CreateEventContext(_ctx, getState());
		enterRule(_localctx, 28, RULE_createEvent);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(960);
			match(CREATE);
			setState(962);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==DEFINER) {
				{
				setState(961);
				ownerStatement();
				}
			}

			setState(964);
			match(EVENT);
			setState(966);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,23,_ctx) ) {
			case 1:
				{
				setState(965);
				ifNotExists();
				}
				break;
			}
			setState(968);
			fullId();
			setState(969);
			match(ON);
			setState(970);
			match(SCHEDULE);
			setState(971);
			scheduleExpression();
			setState(978);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ON) {
				{
				setState(972);
				match(ON);
				setState(973);
				match(COMPLETION);
				setState(975);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==NOT) {
					{
					setState(974);
					match(NOT);
					}
				}

				setState(977);
				match(PRESERVE);
				}
			}

			setState(981);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==DISABLE || _la==ENABLE) {
				{
				setState(980);
				enableType();
				}
			}

			setState(985);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==COMMENT) {
				{
				setState(983);
				match(COMMENT);
				setState(984);
				match(STRING_LITERAL);
				}
			}

			setState(987);
			match(DO);
			setState(988);
			routineBody();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateIndexContext extends ParserRuleContext {
		public Token intimeAction;
		public Token indexCategory;
		public Token algType;
		public Token lockType;
		public TerminalNode CREATE() { return getToken(MySqlParser.CREATE, 0); }
		public TerminalNode INDEX() { return getToken(MySqlParser.INDEX, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode ON() { return getToken(MySqlParser.ON, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public IndexColumnNamesContext indexColumnNames() {
			return getRuleContext(IndexColumnNamesContext.class,0);
		}
		public OrReplaceContext orReplace() {
			return getRuleContext(OrReplaceContext.class,0);
		}
		public IfNotExistsContext ifNotExists() {
			return getRuleContext(IfNotExistsContext.class,0);
		}
		public IndexTypeContext indexType() {
			return getRuleContext(IndexTypeContext.class,0);
		}
		public WaitNowaitClauseContext waitNowaitClause() {
			return getRuleContext(WaitNowaitClauseContext.class,0);
		}
		public List indexOption() {
			return getRuleContexts(IndexOptionContext.class);
		}
		public IndexOptionContext indexOption(int i) {
			return getRuleContext(IndexOptionContext.class,i);
		}
		public List ALGORITHM() { return getTokens(MySqlParser.ALGORITHM); }
		public TerminalNode ALGORITHM(int i) {
			return getToken(MySqlParser.ALGORITHM, i);
		}
		public List LOCK() { return getTokens(MySqlParser.LOCK); }
		public TerminalNode LOCK(int i) {
			return getToken(MySqlParser.LOCK, i);
		}
		public TerminalNode ONLINE() { return getToken(MySqlParser.ONLINE, 0); }
		public TerminalNode OFFLINE() { return getToken(MySqlParser.OFFLINE, 0); }
		public TerminalNode UNIQUE() { return getToken(MySqlParser.UNIQUE, 0); }
		public TerminalNode FULLTEXT() { return getToken(MySqlParser.FULLTEXT, 0); }
		public TerminalNode SPATIAL() { return getToken(MySqlParser.SPATIAL, 0); }
		public List DEFAULT() { return getTokens(MySqlParser.DEFAULT); }
		public TerminalNode DEFAULT(int i) {
			return getToken(MySqlParser.DEFAULT, i);
		}
		public List INPLACE() { return getTokens(MySqlParser.INPLACE); }
		public TerminalNode INPLACE(int i) {
			return getToken(MySqlParser.INPLACE, i);
		}
		public List COPY() { return getTokens(MySqlParser.COPY); }
		public TerminalNode COPY(int i) {
			return getToken(MySqlParser.COPY, i);
		}
		public List NOCOPY() { return getTokens(MySqlParser.NOCOPY); }
		public TerminalNode NOCOPY(int i) {
			return getToken(MySqlParser.NOCOPY, i);
		}
		public List INSTANT() { return getTokens(MySqlParser.INSTANT); }
		public TerminalNode INSTANT(int i) {
			return getToken(MySqlParser.INSTANT, i);
		}
		public List NONE() { return getTokens(MySqlParser.NONE); }
		public TerminalNode NONE(int i) {
			return getToken(MySqlParser.NONE, i);
		}
		public List SHARED() { return getTokens(MySqlParser.SHARED); }
		public TerminalNode SHARED(int i) {
			return getToken(MySqlParser.SHARED, i);
		}
		public List EXCLUSIVE() { return getTokens(MySqlParser.EXCLUSIVE); }
		public TerminalNode EXCLUSIVE(int i) {
			return getToken(MySqlParser.EXCLUSIVE, i);
		}
		public List EQUAL_SYMBOL() { return getTokens(MySqlParser.EQUAL_SYMBOL); }
		public TerminalNode EQUAL_SYMBOL(int i) {
			return getToken(MySqlParser.EQUAL_SYMBOL, i);
		}
		public CreateIndexContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createIndex; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCreateIndex(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCreateIndex(this);
		}
	}

	public final CreateIndexContext createIndex() throws RecognitionException {
		CreateIndexContext _localctx = new CreateIndexContext(_ctx, getState());
		enterRule(_localctx, 30, RULE_createIndex);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(990);
			match(CREATE);
			setState(992);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==OR) {
				{
				setState(991);
				orReplace();
				}
			}

			setState(995);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==OFFLINE || _la==ONLINE) {
				{
				setState(994);
				((CreateIndexContext)_localctx).intimeAction = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==OFFLINE || _la==ONLINE) ) {
					((CreateIndexContext)_localctx).intimeAction = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(998);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==FULLTEXT || _la==SPATIAL || _la==UNIQUE) {
				{
				setState(997);
				((CreateIndexContext)_localctx).indexCategory = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==FULLTEXT || _la==SPATIAL || _la==UNIQUE) ) {
					((CreateIndexContext)_localctx).indexCategory = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(1000);
			match(INDEX);
			setState(1002);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,31,_ctx) ) {
			case 1:
				{
				setState(1001);
				ifNotExists();
				}
				break;
			}
			setState(1004);
			uid();
			setState(1006);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==USING) {
				{
				setState(1005);
				indexType();
				}
			}

			setState(1008);
			match(ON);
			setState(1009);
			tableName();
			setState(1010);
			indexColumnNames();
			setState(1012);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==NOWAIT || _la==WAIT) {
				{
				setState(1011);
				waitNowaitClause();
				}
			}

			setState(1017);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,34,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					{
					{
					setState(1014);
					indexOption();
					}
					} 
				}
				setState(1019);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,34,_ctx);
			}
			setState(1032);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,38,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					{
					setState(1030);
					_errHandler.sync(this);
					switch (_input.LA(1)) {
					case ALGORITHM:
						{
						setState(1020);
						match(ALGORITHM);
						setState(1022);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==EQUAL_SYMBOL) {
							{
							setState(1021);
							match(EQUAL_SYMBOL);
							}
						}

						setState(1024);
						((CreateIndexContext)_localctx).algType = _input.LT(1);
						_la = _input.LA(1);
						if ( !(_la==DEFAULT || _la==COPY || _la==INPLACE || _la==INSTANT || _la==NOCOPY) ) {
							((CreateIndexContext)_localctx).algType = (Token)_errHandler.recoverInline(this);
						}
						else {
							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
							_errHandler.reportMatch(this);
							consume();
						}
						}
						break;
					case LOCK:
						{
						setState(1025);
						match(LOCK);
						setState(1027);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==EQUAL_SYMBOL) {
							{
							setState(1026);
							match(EQUAL_SYMBOL);
							}
						}

						setState(1029);
						((CreateIndexContext)_localctx).lockType = _input.LT(1);
						_la = _input.LA(1);
						if ( !(_la==DEFAULT || _la==EXCLUSIVE || _la==NONE || _la==SHARED) ) {
							((CreateIndexContext)_localctx).lockType = (Token)_errHandler.recoverInline(this);
						}
						else {
							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
							_errHandler.reportMatch(this);
							consume();
						}
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					} 
				}
				setState(1034);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,38,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateLogfileGroupContext extends ParserRuleContext {
		public Token undoFile;
		public FileSizeLiteralContext initSize;
		public FileSizeLiteralContext undoSize;
		public FileSizeLiteralContext redoSize;
		public Token comment;
		public TerminalNode CREATE() { return getToken(MySqlParser.CREATE, 0); }
		public TerminalNode LOGFILE() { return getToken(MySqlParser.LOGFILE, 0); }
		public TerminalNode GROUP() { return getToken(MySqlParser.GROUP, 0); }
		public List uid() {
			return getRuleContexts(UidContext.class);
		}
		public UidContext uid(int i) {
			return getRuleContext(UidContext.class,i);
		}
		public TerminalNode ADD() { return getToken(MySqlParser.ADD, 0); }
		public TerminalNode UNDOFILE() { return getToken(MySqlParser.UNDOFILE, 0); }
		public TerminalNode ENGINE() { return getToken(MySqlParser.ENGINE, 0); }
		public EngineNameContext engineName() {
			return getRuleContext(EngineNameContext.class,0);
		}
		public List STRING_LITERAL() { return getTokens(MySqlParser.STRING_LITERAL); }
		public TerminalNode STRING_LITERAL(int i) {
			return getToken(MySqlParser.STRING_LITERAL, i);
		}
		public TerminalNode INITIAL_SIZE() { return getToken(MySqlParser.INITIAL_SIZE, 0); }
		public TerminalNode UNDO_BUFFER_SIZE() { return getToken(MySqlParser.UNDO_BUFFER_SIZE, 0); }
		public TerminalNode REDO_BUFFER_SIZE() { return getToken(MySqlParser.REDO_BUFFER_SIZE, 0); }
		public TerminalNode NODEGROUP() { return getToken(MySqlParser.NODEGROUP, 0); }
		public TerminalNode WAIT() { return getToken(MySqlParser.WAIT, 0); }
		public TerminalNode COMMENT() { return getToken(MySqlParser.COMMENT, 0); }
		public List EQUAL_SYMBOL() { return getTokens(MySqlParser.EQUAL_SYMBOL); }
		public TerminalNode EQUAL_SYMBOL(int i) {
			return getToken(MySqlParser.EQUAL_SYMBOL, i);
		}
		public List fileSizeLiteral() {
			return getRuleContexts(FileSizeLiteralContext.class);
		}
		public FileSizeLiteralContext fileSizeLiteral(int i) {
			return getRuleContext(FileSizeLiteralContext.class,i);
		}
		public CreateLogfileGroupContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createLogfileGroup; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCreateLogfileGroup(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCreateLogfileGroup(this);
		}
	}

	public final CreateLogfileGroupContext createLogfileGroup() throws RecognitionException {
		CreateLogfileGroupContext _localctx = new CreateLogfileGroupContext(_ctx, getState());
		enterRule(_localctx, 32, RULE_createLogfileGroup);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1035);
			match(CREATE);
			setState(1036);
			match(LOGFILE);
			setState(1037);
			match(GROUP);
			setState(1038);
			uid();
			setState(1039);
			match(ADD);
			setState(1040);
			match(UNDOFILE);
			setState(1041);
			((CreateLogfileGroupContext)_localctx).undoFile = match(STRING_LITERAL);
			setState(1047);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==INITIAL_SIZE) {
				{
				setState(1042);
				match(INITIAL_SIZE);
				setState(1044);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(1043);
					match(EQUAL_SYMBOL);
					}
				}

				setState(1046);
				((CreateLogfileGroupContext)_localctx).initSize = fileSizeLiteral();
				}
			}

			setState(1054);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==UNDO_BUFFER_SIZE) {
				{
				setState(1049);
				match(UNDO_BUFFER_SIZE);
				setState(1051);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(1050);
					match(EQUAL_SYMBOL);
					}
				}

				setState(1053);
				((CreateLogfileGroupContext)_localctx).undoSize = fileSizeLiteral();
				}
			}

			setState(1061);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==REDO_BUFFER_SIZE) {
				{
				setState(1056);
				match(REDO_BUFFER_SIZE);
				setState(1058);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(1057);
					match(EQUAL_SYMBOL);
					}
				}

				setState(1060);
				((CreateLogfileGroupContext)_localctx).redoSize = fileSizeLiteral();
				}
			}

			setState(1068);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==NODEGROUP) {
				{
				setState(1063);
				match(NODEGROUP);
				setState(1065);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(1064);
					match(EQUAL_SYMBOL);
					}
				}

				setState(1067);
				uid();
				}
			}

			setState(1071);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WAIT) {
				{
				setState(1070);
				match(WAIT);
				}
			}

			setState(1078);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==COMMENT) {
				{
				setState(1073);
				match(COMMENT);
				setState(1075);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(1074);
					match(EQUAL_SYMBOL);
					}
				}

				setState(1077);
				((CreateLogfileGroupContext)_localctx).comment = match(STRING_LITERAL);
				}
			}

			setState(1080);
			match(ENGINE);
			setState(1082);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==EQUAL_SYMBOL) {
				{
				setState(1081);
				match(EQUAL_SYMBOL);
				}
			}

			setState(1084);
			engineName();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateProcedureContext extends ParserRuleContext {
		public TerminalNode CREATE() { return getToken(MySqlParser.CREATE, 0); }
		public TerminalNode PROCEDURE() { return getToken(MySqlParser.PROCEDURE, 0); }
		public FullIdContext fullId() {
			return getRuleContext(FullIdContext.class,0);
		}
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public RoutineBodyContext routineBody() {
			return getRuleContext(RoutineBodyContext.class,0);
		}
		public OrReplaceContext orReplace() {
			return getRuleContext(OrReplaceContext.class,0);
		}
		public OwnerStatementContext ownerStatement() {
			return getRuleContext(OwnerStatementContext.class,0);
		}
		public List procedureParameter() {
			return getRuleContexts(ProcedureParameterContext.class);
		}
		public ProcedureParameterContext procedureParameter(int i) {
			return getRuleContext(ProcedureParameterContext.class,i);
		}
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public List routineOption() {
			return getRuleContexts(RoutineOptionContext.class);
		}
		public RoutineOptionContext routineOption(int i) {
			return getRuleContext(RoutineOptionContext.class,i);
		}
		public CreateProcedureContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createProcedure; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCreateProcedure(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCreateProcedure(this);
		}
	}

	public final CreateProcedureContext createProcedure() throws RecognitionException {
		CreateProcedureContext _localctx = new CreateProcedureContext(_ctx, getState());
		enterRule(_localctx, 34, RULE_createProcedure);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(1086);
			match(CREATE);
			setState(1088);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==OR) {
				{
				setState(1087);
				orReplace();
				}
			}

			setState(1091);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==DEFINER) {
				{
				setState(1090);
				ownerStatement();
				}
			}

			setState(1093);
			match(PROCEDURE);
			setState(1094);
			fullId();
			setState(1095);
			match(LR_BRACKET);
			setState(1097);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ARRAY) | (1L << ATTRIBUTE) | (1L << BUCKETS) | (1L << CONDITION) | (1L << CURRENT) | (1L << CURRENT_ROLE) | (1L << CURRENT_USER) | (1L << DATABASE) | (1L << DEFAULT) | (1L << DIAGNOSTICS) | (1L << EMPTY) | (1L << ENFORCED) | (1L << EXCEPT))) != 0) || ((((_la - 74)) & ~0x3f) == 0 && ((1L << (_la - 74)) & ((1L << (GROUP - 74)) | (1L << (GROUP_REPLICATION_STREAM - 74)) | (1L << (IF - 74)) | (1L << (IGNORED - 74)) | (1L << (IN - 74)) | (1L << (INOUT - 74)) | (1L << (INSERT - 74)) | (1L << (LATERAL - 74)) | (1L << (LEFT - 74)) | (1L << (LOCKED - 74)) | (1L << (MAXVALUE - 74)) | (1L << (MINVALUE - 74)) | (1L << (NUMBER - 74)) | (1L << (OPTIONAL - 74)) | (1L << (ORDER - 74)) | (1L << (OUT - 74)) | (1L << (PRIMARY - 74)))) != 0) || ((((_la - 142)) & ~0x3f) == 0 && ((1L << (_la - 142)) & ((1L << (REPEAT - 142)) | (1L << (REPLACE - 142)) | (1L << (RIGHT - 142)) | (1L << (SCHEMA - 142)) | (1L << (SKIP_ - 142)) | (1L << (SKIP_QUERY_REWRITE - 142)) | (1L << (STACKED - 142)) | (1L << (STATEMENT - 142)))) != 0) || ((((_la - 220)) & ~0x3f) == 0 && ((1L << (_la - 220)) & ((1L << (DATE - 220)) | (1L << (TIME - 220)) | (1L << (TIMESTAMP - 220)) | (1L << (DATETIME - 220)) | (1L << (YEAR - 220)) | (1L << (NATIONAL - 220)) | (1L << (BINARY - 220)) | (1L << (TEXT - 220)) | (1L << (ENUM - 220)) | (1L << (SERIAL - 220)) | (1L << (JSON_ARRAY - 220)) | (1L << (JSON_ARRAYAGG - 220)) | (1L << (JSON_ARRAY_APPEND - 220)) | (1L << (JSON_ARRAY_INSERT - 220)) | (1L << (JSON_CONTAINS - 220)) | (1L << (JSON_CONTAINS_PATH - 220)) | (1L << (JSON_DEPTH - 220)) | (1L << (JSON_EXTRACT - 220)) | (1L << (JSON_INSERT - 220)) | (1L << (JSON_KEYS - 220)) | (1L << (JSON_LENGTH - 220)) | (1L << (JSON_MERGE - 220)) | (1L << (JSON_MERGE_PATCH - 220)) | (1L << (JSON_MERGE_PRESERVE - 220)) | (1L << (JSON_OBJECT - 220)) | (1L << (JSON_OBJECTAGG - 220)) | (1L << (JSON_OVERLAPS - 220)) | (1L << (JSON_PRETTY - 220)) | (1L << (JSON_QUOTE - 220)) | (1L << (JSON_REMOVE - 220)) | (1L << (JSON_REPLACE - 220)) | (1L << (JSON_SCHEMA_VALID - 220)) | (1L << (JSON_SCHEMA_VALIDATION_REPORT - 220)) | (1L << (JSON_SEARCH - 220)) | (1L << (JSON_SET - 220)) | (1L << (JSON_STORAGE_FREE - 220)) | (1L << (JSON_STORAGE_SIZE - 220)) | (1L << (JSON_TABLE - 220)) | (1L << (JSON_TYPE - 220)) | (1L << (JSON_UNQUOTE - 220)))) != 0) || ((((_la - 284)) & ~0x3f) == 0 && ((1L << (_la - 284)) & ((1L << (JSON_VALID - 284)) | (1L << (JSON_VALUE - 284)) | (1L << (NESTED - 284)) | (1L << (ORDINALITY - 284)) | (1L << (PATH - 284)) | (1L << (AVG - 284)) | (1L << (BIT_AND - 284)) | (1L << (BIT_OR - 284)) | (1L << (BIT_XOR - 284)) | (1L << (COUNT - 284)) | (1L << (CUME_DIST - 284)) | (1L << (DENSE_RANK - 284)) | (1L << (FIRST_VALUE - 284)) | (1L << (GROUP_CONCAT - 284)) | (1L << (LAG - 284)) | (1L << (LAST_VALUE - 284)) | (1L << (LEAD - 284)) | (1L << (MAX - 284)) | (1L << (MIN - 284)) | (1L << (NTILE - 284)) | (1L << (NTH_VALUE - 284)) | (1L << (PERCENT_RANK - 284)) | (1L << (RANK - 284)) | (1L << (ROW_NUMBER - 284)) | (1L << (STD - 284)) | (1L << (STDDEV - 284)) | (1L << (STDDEV_POP - 284)) | (1L << (STDDEV_SAMP - 284)) | (1L << (SUM - 284)) | (1L << (VAR_POP - 284)) | (1L << (VAR_SAMP - 284)) | (1L << (VARIANCE - 284)) | (1L << (CURRENT_DATE - 284)) | (1L << (CURRENT_TIME - 284)) | (1L << (CURRENT_TIMESTAMP - 284)) | (1L << (LOCALTIME - 284)) | (1L << (CURDATE - 284)) | (1L << (CURTIME - 284)) | (1L << (DATE_ADD - 284)) | (1L << (DATE_SUB - 284)) | (1L << (LOCALTIMESTAMP - 284)) | (1L << (NOW - 284)) | (1L << (POSITION - 284)) | (1L << (SUBSTR - 284)) | (1L << (SUBSTRING - 284)) | (1L << (SYSDATE - 284)) | (1L << (TRIM - 284)) | (1L << (UTC_DATE - 284)) | (1L << (UTC_TIME - 284)) | (1L << (UTC_TIMESTAMP - 284)) | (1L << (ACCOUNT - 284)) | (1L << (ACTION - 284)) | (1L << (AFTER - 284)) | (1L << (AGGREGATE - 284)) | (1L << (ALGORITHM - 284)) | (1L << (ANY - 284)) | (1L << (AT - 284)) | (1L << (AUTHORS - 284)) | (1L << (AUTOCOMMIT - 284)) | (1L << (AUTOEXTEND_SIZE - 284)) | (1L << (AUTO_INCREMENT - 284)) | (1L << (AVG_ROW_LENGTH - 284)) | (1L << (BEGIN - 284)))) != 0) || ((((_la - 348)) & ~0x3f) == 0 && ((1L << (_la - 348)) & ((1L << (BINLOG - 348)) | (1L << (BIT - 348)) | (1L << (BLOCK - 348)) | (1L << (BOOL - 348)) | (1L << (BOOLEAN - 348)) | (1L << (BTREE - 348)) | (1L << (CACHE - 348)) | (1L << (CASCADED - 348)) | (1L << (CHAIN - 348)) | (1L << (CHANGED - 348)) | (1L << (CHANNEL - 348)) | (1L << (CHECKSUM - 348)) | (1L << (PAGE_CHECKSUM - 348)) | (1L << (CIPHER - 348)) | (1L << (CLASS_ORIGIN - 348)) | (1L << (CLIENT - 348)) | (1L << (CLOSE - 348)) | (1L << (CLUSTERING - 348)) | (1L << (COALESCE - 348)) | (1L << (CODE - 348)) | (1L << (COLUMNS - 348)) | (1L << (COLUMN_FORMAT - 348)) | (1L << (COLUMN_NAME - 348)) | (1L << (COMMENT - 348)) | (1L << (COMMIT - 348)) | (1L << (COMPACT - 348)) | (1L << (COMPLETION - 348)) | (1L << (COMPRESSED - 348)) | (1L << (COMPRESSION - 348)) | (1L << (CONCURRENT - 348)) | (1L << (CONNECT - 348)) | (1L << (CONNECTION - 348)) | (1L << (CONSISTENT - 348)) | (1L << (CONSTRAINT_CATALOG - 348)) | (1L << (CONSTRAINT_SCHEMA - 348)) | (1L << (CONSTRAINT_NAME - 348)) | (1L << (CONTAINS - 348)) | (1L << (CONTEXT - 348)) | (1L << (CONTRIBUTORS - 348)) | (1L << (COPY - 348)) | (1L << (CPU - 348)) | (1L << (CYCLE - 348)) | (1L << (CURSOR_NAME - 348)) | (1L << (DATA - 348)) | (1L << (DATAFILE - 348)) | (1L << (DEALLOCATE - 348)) | (1L << (DEFAULT_AUTH - 348)) | (1L << (DEFINER - 348)) | (1L << (DELAY_KEY_WRITE - 348)) | (1L << (DES_KEY_FILE - 348)) | (1L << (DIRECTORY - 348)) | (1L << (DISABLE - 348)) | (1L << (DISCARD - 348)) | (1L << (DISK - 348)) | (1L << (DO - 348)) | (1L << (DUMPFILE - 348)) | (1L << (DUPLICATE - 348)) | (1L << (DYNAMIC - 348)) | (1L << (ENABLE - 348)) | (1L << (ENCRYPTED - 348)) | (1L << (ENCRYPTION - 348)) | (1L << (ENCRYPTION_KEY_ID - 348)) | (1L << (END - 348)) | (1L << (ENDS - 348)))) != 0) || ((((_la - 412)) & ~0x3f) == 0 && ((1L << (_la - 412)) & ((1L << (ENGINE - 412)) | (1L << (ENGINES - 412)) | (1L << (ERROR - 412)) | (1L << (ERRORS - 412)) | (1L << (ESCAPE - 412)) | (1L << (EVEN - 412)) | (1L << (EVENT - 412)) | (1L << (EVENTS - 412)) | (1L << (EVERY - 412)) | (1L << (EXCHANGE - 412)) | (1L << (EXCLUSIVE - 412)) | (1L << (EXPIRE - 412)) | (1L << (EXPORT - 412)) | (1L << (EXTENDED - 412)) | (1L << (EXTENT_SIZE - 412)) | (1L << (FAILED_LOGIN_ATTEMPTS - 412)) | (1L << (FAST - 412)) | (1L << (FAULTS - 412)) | (1L << (FIELDS - 412)) | (1L << (FILE_BLOCK_SIZE - 412)) | (1L << (FILTER - 412)) | (1L << (FIRST - 412)) | (1L << (FIXED - 412)) | (1L << (FLUSH - 412)) | (1L << (FOLLOWS - 412)) | (1L << (FOUND - 412)) | (1L << (FULL - 412)) | (1L << (FUNCTION - 412)) | (1L << (GENERAL - 412)) | (1L << (GLOBAL - 412)) | (1L << (GRANTS - 412)) | (1L << (GROUP_REPLICATION - 412)) | (1L << (HANDLER - 412)) | (1L << (HASH - 412)) | (1L << (HELP - 412)) | (1L << (HISTORY - 412)) | (1L << (HOST - 412)) | (1L << (HOSTS - 412)) | (1L << (IDENTIFIED - 412)) | (1L << (IGNORE_SERVER_IDS - 412)) | (1L << (IMPORT - 412)) | (1L << (INCREMENT - 412)) | (1L << (INDEXES - 412)) | (1L << (INITIAL_SIZE - 412)) | (1L << (INPLACE - 412)) | (1L << (INSERT_METHOD - 412)) | (1L << (INSTALL - 412)) | (1L << (INSTANCE - 412)) | (1L << (INSTANT - 412)) | (1L << (INVISIBLE - 412)) | (1L << (INVOKER - 412)) | (1L << (IO - 412)) | (1L << (IO_THREAD - 412)) | (1L << (IPC - 412)) | (1L << (ISOLATION - 412)) | (1L << (ISSUER - 412)) | (1L << (JSON - 412)) | (1L << (KEY_BLOCK_SIZE - 412)) | (1L << (LANGUAGE - 412)) | (1L << (LAST - 412)) | (1L << (LEAVES - 412)) | (1L << (LESS - 412)) | (1L << (LEVEL - 412)))) != 0) || ((((_la - 476)) & ~0x3f) == 0 && ((1L << (_la - 476)) & ((1L << (LIST - 476)) | (1L << (LOCAL - 476)) | (1L << (LOGFILE - 476)) | (1L << (LOGS - 476)) | (1L << (MASTER - 476)) | (1L << (MASTER_AUTO_POSITION - 476)) | (1L << (MASTER_CONNECT_RETRY - 476)) | (1L << (MASTER_DELAY - 476)) | (1L << (MASTER_HEARTBEAT_PERIOD - 476)) | (1L << (MASTER_HOST - 476)) | (1L << (MASTER_LOG_FILE - 476)) | (1L << (MASTER_LOG_POS - 476)) | (1L << (MASTER_PASSWORD - 476)) | (1L << (MASTER_PORT - 476)) | (1L << (MASTER_RETRY_COUNT - 476)) | (1L << (MASTER_SSL - 476)) | (1L << (MASTER_SSL_CA - 476)) | (1L << (MASTER_SSL_CAPATH - 476)) | (1L << (MASTER_SSL_CERT - 476)) | (1L << (MASTER_SSL_CIPHER - 476)) | (1L << (MASTER_SSL_CRL - 476)) | (1L << (MASTER_SSL_CRLPATH - 476)) | (1L << (MASTER_SSL_KEY - 476)) | (1L << (MASTER_TLS_VERSION - 476)) | (1L << (MASTER_USER - 476)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 476)) | (1L << (MAX_QUERIES_PER_HOUR - 476)) | (1L << (MAX_ROWS - 476)) | (1L << (MAX_SIZE - 476)) | (1L << (MAX_UPDATES_PER_HOUR - 476)) | (1L << (MAX_USER_CONNECTIONS - 476)) | (1L << (MEDIUM - 476)) | (1L << (MEMBER - 476)) | (1L << (MERGE - 476)) | (1L << (MESSAGE_TEXT - 476)) | (1L << (MID - 476)) | (1L << (MIGRATE - 476)) | (1L << (MIN_ROWS - 476)) | (1L << (MODE - 476)) | (1L << (MODIFY - 476)) | (1L << (MUTEX - 476)) | (1L << (MYSQL - 476)) | (1L << (MYSQL_ERRNO - 476)) | (1L << (NAME - 476)) | (1L << (NAMES - 476)) | (1L << (NCHAR - 476)) | (1L << (NEVER - 476)) | (1L << (NEXT - 476)) | (1L << (NO - 476)) | (1L << (NOCACHE - 476)) | (1L << (NOCOPY - 476)) | (1L << (NOCYCLE - 476)) | (1L << (NOMAXVALUE - 476)) | (1L << (NOMINVALUE - 476)) | (1L << (NOWAIT - 476)) | (1L << (NODEGROUP - 476)) | (1L << (NONE - 476)) | (1L << (ODBC - 476)) | (1L << (OFFLINE - 476)) | (1L << (OFFSET - 476)) | (1L << (OF - 476)) | (1L << (OJ - 476)) | (1L << (OLD_PASSWORD - 476)) | (1L << (ONE - 476)))) != 0) || ((((_la - 540)) & ~0x3f) == 0 && ((1L << (_la - 540)) & ((1L << (ONLINE - 540)) | (1L << (ONLY - 540)) | (1L << (OPEN - 540)) | (1L << (OPTIMIZER_COSTS - 540)) | (1L << (OPTIONS - 540)) | (1L << (OWNER - 540)) | (1L << (PACK_KEYS - 540)) | (1L << (PAGE - 540)) | (1L << (PARSER - 540)) | (1L << (PARTIAL - 540)) | (1L << (PARTITIONING - 540)) | (1L << (PARTITIONS - 540)) | (1L << (PASSWORD - 540)) | (1L << (PASSWORD_LOCK_TIME - 540)) | (1L << (PHASE - 540)) | (1L << (PLUGIN - 540)) | (1L << (PLUGIN_DIR - 540)) | (1L << (PLUGINS - 540)) | (1L << (PORT - 540)) | (1L << (PRECEDES - 540)) | (1L << (PREPARE - 540)) | (1L << (PRESERVE - 540)) | (1L << (PREV - 540)) | (1L << (PROCESSLIST - 540)) | (1L << (PROFILE - 540)) | (1L << (PROFILES - 540)) | (1L << (PROXY - 540)) | (1L << (QUERY - 540)) | (1L << (QUICK - 540)) | (1L << (REBUILD - 540)) | (1L << (RECOVER - 540)) | (1L << (RECURSIVE - 540)) | (1L << (REDO_BUFFER_SIZE - 540)) | (1L << (REDUNDANT - 540)) | (1L << (RELAY - 540)) | (1L << (RELAY_LOG_FILE - 540)) | (1L << (RELAY_LOG_POS - 540)) | (1L << (RELAYLOG - 540)) | (1L << (REMOVE - 540)) | (1L << (REORGANIZE - 540)) | (1L << (REPAIR - 540)) | (1L << (REPLICATE_DO_DB - 540)) | (1L << (REPLICATE_DO_TABLE - 540)) | (1L << (REPLICATE_IGNORE_DB - 540)) | (1L << (REPLICATE_IGNORE_TABLE - 540)) | (1L << (REPLICATE_REWRITE_DB - 540)) | (1L << (REPLICATE_WILD_DO_TABLE - 540)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 540)) | (1L << (REPLICATION - 540)) | (1L << (RESET - 540)) | (1L << (RESTART - 540)) | (1L << (RESUME - 540)) | (1L << (RETURNED_SQLSTATE - 540)) | (1L << (RETURNING - 540)) | (1L << (RETURNS - 540)) | (1L << (REUSE - 540)) | (1L << (ROLE - 540)) | (1L << (ROLLBACK - 540)) | (1L << (ROLLUP - 540)) | (1L << (ROTATE - 540)) | (1L << (ROW - 540)))) != 0) || ((((_la - 604)) & ~0x3f) == 0 && ((1L << (_la - 604)) & ((1L << (ROWS - 604)) | (1L << (ROW_FORMAT - 604)) | (1L << (RTREE - 604)) | (1L << (SAVEPOINT - 604)) | (1L << (SCHEDULE - 604)) | (1L << (SECURITY - 604)) | (1L << (SEQUENCE - 604)) | (1L << (SERVER - 604)) | (1L << (SESSION - 604)) | (1L << (SHARE - 604)) | (1L << (SHARED - 604)) | (1L << (SIGNED - 604)) | (1L << (SIMPLE - 604)) | (1L << (SLAVE - 604)) | (1L << (SLOW - 604)) | (1L << (SNAPSHOT - 604)) | (1L << (SOCKET - 604)) | (1L << (SOME - 604)) | (1L << (SONAME - 604)) | (1L << (SOUNDS - 604)) | (1L << (SOURCE - 604)) | (1L << (SQL_AFTER_GTIDS - 604)) | (1L << (SQL_AFTER_MTS_GAPS - 604)) | (1L << (SQL_BEFORE_GTIDS - 604)) | (1L << (SQL_BUFFER_RESULT - 604)) | (1L << (SQL_CACHE - 604)) | (1L << (SQL_NO_CACHE - 604)) | (1L << (SQL_THREAD - 604)) | (1L << (START - 604)) | (1L << (STARTS - 604)) | (1L << (STATS_AUTO_RECALC - 604)) | (1L << (STATS_PERSISTENT - 604)) | (1L << (STATS_SAMPLE_PAGES - 604)) | (1L << (STATUS - 604)) | (1L << (STOP - 604)) | (1L << (STORAGE - 604)) | (1L << (STRING - 604)) | (1L << (SUBCLASS_ORIGIN - 604)) | (1L << (SUBJECT - 604)) | (1L << (SUBPARTITION - 604)) | (1L << (SUBPARTITIONS - 604)) | (1L << (SUSPEND - 604)) | (1L << (SWAPS - 604)) | (1L << (SWITCHES - 604)) | (1L << (TABLE_NAME - 604)) | (1L << (TABLESPACE - 604)) | (1L << (TABLE_TYPE - 604)) | (1L << (TEMPORARY - 604)) | (1L << (TEMPTABLE - 604)) | (1L << (THAN - 604)) | (1L << (TRADITIONAL - 604)) | (1L << (TRANSACTION - 604)) | (1L << (TRANSACTIONAL - 604)) | (1L << (TRIGGERS - 604)) | (1L << (TRUNCATE - 604)) | (1L << (UNBOUNDED - 604)) | (1L << (UNDEFINED - 604)) | (1L << (UNDOFILE - 604)) | (1L << (UNDO_BUFFER_SIZE - 604)) | (1L << (UNINSTALL - 604)) | (1L << (UNKNOWN - 604)) | (1L << (UNTIL - 604)) | (1L << (UPGRADE - 604)))) != 0) || ((((_la - 668)) & ~0x3f) == 0 && ((1L << (_la - 668)) & ((1L << (USER - 668)) | (1L << (USE_FRM - 668)) | (1L << (USER_RESOURCES - 668)) | (1L << (VALIDATION - 668)) | (1L << (VALUE - 668)) | (1L << (VARIABLES - 668)) | (1L << (VIEW - 668)) | (1L << (VIRTUAL - 668)) | (1L << (VISIBLE - 668)) | (1L << (WAIT - 668)) | (1L << (WARNINGS - 668)) | (1L << (WITHOUT - 668)) | (1L << (WORK - 668)) | (1L << (WRAPPER - 668)) | (1L << (X509 - 668)) | (1L << (XA - 668)) | (1L << (XML - 668)) | (1L << (YES - 668)) | (1L << (EUR - 668)) | (1L << (USA - 668)) | (1L << (JIS - 668)) | (1L << (ISO - 668)) | (1L << (INTERNAL - 668)) | (1L << (QUARTER - 668)) | (1L << (MONTH - 668)) | (1L << (DAY - 668)) | (1L << (HOUR - 668)) | (1L << (MINUTE - 668)) | (1L << (WEEK - 668)) | (1L << (SECOND - 668)) | (1L << (MICROSECOND - 668)) | (1L << (USER_STATISTICS - 668)) | (1L << (CLIENT_STATISTICS - 668)) | (1L << (INDEX_STATISTICS - 668)) | (1L << (TABLE_STATISTICS - 668)) | (1L << (FIREWALL_RULES - 668)) | (1L << (ADMIN - 668)) | (1L << (APPLICATION_PASSWORD_ADMIN - 668)) | (1L << (AUDIT_ADMIN - 668)) | (1L << (AUDIT_ABORT_EXEMPT - 668)) | (1L << (AUTHENTICATION_POLICY_ADMIN - 668)) | (1L << (BACKUP_ADMIN - 668)) | (1L << (BINLOG_ADMIN - 668)) | (1L << (BINLOG_ENCRYPTION_ADMIN - 668)) | (1L << (CLONE_ADMIN - 668)) | (1L << (CONNECTION_ADMIN - 668)) | (1L << (ENCRYPTION_KEY_ADMIN - 668)) | (1L << (EXECUTE - 668)) | (1L << (FILE - 668)) | (1L << (FIREWALL_ADMIN - 668)) | (1L << (FIREWALL_EXEMPT - 668)) | (1L << (FIREWALL_USER - 668)) | (1L << (FLUSH_OPTIMIZER_COSTS - 668)) | (1L << (FLUSH_STATUS - 668)) | (1L << (FLUSH_TABLES - 668)) | (1L << (FLUSH_USER_RESOURCES - 668)) | (1L << (GROUP_REPLICATION_ADMIN - 668)) | (1L << (INNODB_REDO_LOG_ARCHIVE - 668)) | (1L << (INNODB_REDO_LOG_ENABLE - 668)) | (1L << (INVOKE - 668)) | (1L << (LAMBDA - 668)) | (1L << (NDB_STORED_USER - 668)) | (1L << (PASSWORDLESS_USER_ADMIN - 668)))) != 0) || ((((_la - 732)) & ~0x3f) == 0 && ((1L << (_la - 732)) & ((1L << (PERSIST_RO_VARIABLES_ADMIN - 732)) | (1L << (PRIVILEGES - 732)) | (1L << (PROCESS - 732)) | (1L << (RELOAD - 732)) | (1L << (REPLICATION_APPLIER - 732)) | (1L << (REPLICATION_SLAVE_ADMIN - 732)) | (1L << (RESOURCE_GROUP_ADMIN - 732)) | (1L << (RESOURCE_GROUP_USER - 732)) | (1L << (ROLE_ADMIN - 732)) | (1L << (ROUTINE - 732)) | (1L << (S3 - 732)) | (1L << (SESSION_VARIABLES_ADMIN - 732)) | (1L << (SET_USER_ID - 732)) | (1L << (SHOW_ROUTINE - 732)) | (1L << (SHUTDOWN - 732)) | (1L << (SUPER - 732)) | (1L << (SYSTEM_VARIABLES_ADMIN - 732)) | (1L << (TABLES - 732)) | (1L << (TABLE_ENCRYPTION_ADMIN - 732)) | (1L << (VERSION_TOKEN_ADMIN - 732)) | (1L << (XA_RECOVER_ADMIN - 732)) | (1L << (ARMSCII8 - 732)) | (1L << (ASCII - 732)) | (1L << (BIG5 - 732)) | (1L << (CP1250 - 732)) | (1L << (CP1251 - 732)) | (1L << (CP1256 - 732)) | (1L << (CP1257 - 732)) | (1L << (CP850 - 732)) | (1L << (CP852 - 732)) | (1L << (CP866 - 732)) | (1L << (CP932 - 732)) | (1L << (DEC8 - 732)) | (1L << (EUCJPMS - 732)) | (1L << (EUCKR - 732)) | (1L << (GB18030 - 732)) | (1L << (GB2312 - 732)) | (1L << (GBK - 732)) | (1L << (GEOSTD8 - 732)) | (1L << (GREEK - 732)) | (1L << (HEBREW - 732)) | (1L << (HP8 - 732)) | (1L << (KEYBCS2 - 732)) | (1L << (KOI8R - 732)) | (1L << (KOI8U - 732)) | (1L << (LATIN1 - 732)) | (1L << (LATIN2 - 732)) | (1L << (LATIN5 - 732)) | (1L << (LATIN7 - 732)) | (1L << (MACCE - 732)) | (1L << (MACROMAN - 732)) | (1L << (SJIS - 732)) | (1L << (SWE7 - 732)) | (1L << (TIS620 - 732)) | (1L << (UCS2 - 732)) | (1L << (UJIS - 732)) | (1L << (UTF16 - 732)) | (1L << (UTF16LE - 732)) | (1L << (UTF32 - 732)) | (1L << (UTF8 - 732)) | (1L << (UTF8MB3 - 732)) | (1L << (UTF8MB4 - 732)) | (1L << (ARCHIVE - 732)))) != 0) || ((((_la - 796)) & ~0x3f) == 0 && ((1L << (_la - 796)) & ((1L << (BLACKHOLE - 796)) | (1L << (CSV - 796)) | (1L << (FEDERATED - 796)) | (1L << (INNODB - 796)) | (1L << (MEMORY - 796)) | (1L << (MRG_MYISAM - 796)) | (1L << (MYISAM - 796)) | (1L << (NDB - 796)) | (1L << (NDBCLUSTER - 796)) | (1L << (PERFORMANCE_SCHEMA - 796)) | (1L << (TOKUDB - 796)) | (1L << (REPEATABLE - 796)) | (1L << (COMMITTED - 796)) | (1L << (UNCOMMITTED - 796)) | (1L << (SERIALIZABLE - 796)) | (1L << (GEOMETRYCOLLECTION - 796)) | (1L << (GEOMETRY - 796)) | (1L << (LINESTRING - 796)) | (1L << (MULTILINESTRING - 796)) | (1L << (MULTIPOINT - 796)) | (1L << (MULTIPOLYGON - 796)) | (1L << (POINT - 796)) | (1L << (POLYGON - 796)) | (1L << (ABS - 796)) | (1L << (ACOS - 796)) | (1L << (ADDDATE - 796)) | (1L << (ADDTIME - 796)) | (1L << (AES_DECRYPT - 796)) | (1L << (AES_ENCRYPT - 796)) | (1L << (AREA - 796)) | (1L << (ASBINARY - 796)) | (1L << (ASIN - 796)) | (1L << (ASTEXT - 796)) | (1L << (ASWKB - 796)) | (1L << (ASWKT - 796)) | (1L << (ASYMMETRIC_DECRYPT - 796)) | (1L << (ASYMMETRIC_DERIVE - 796)) | (1L << (ASYMMETRIC_ENCRYPT - 796)) | (1L << (ASYMMETRIC_SIGN - 796)) | (1L << (ASYMMETRIC_VERIFY - 796)) | (1L << (ATAN - 796)) | (1L << (ATAN2 - 796)) | (1L << (BENCHMARK - 796)) | (1L << (BIN - 796)) | (1L << (BIT_COUNT - 796)) | (1L << (BIT_LENGTH - 796)) | (1L << (BUFFER - 796)) | (1L << (CATALOG_NAME - 796)) | (1L << (CEIL - 796)) | (1L << (CEILING - 796)) | (1L << (CENTROID - 796)) | (1L << (CHARACTER_LENGTH - 796)) | (1L << (CHARSET - 796)) | (1L << (CHAR_LENGTH - 796)) | (1L << (COERCIBILITY - 796)) | (1L << (COLLATION - 796)) | (1L << (COMPRESS - 796)) | (1L << (CONCAT - 796)) | (1L << (CONCAT_WS - 796)) | (1L << (CONNECTION_ID - 796)) | (1L << (CONV - 796)) | (1L << (CONVERT_TZ - 796)) | (1L << (COS - 796)))) != 0) || ((((_la - 860)) & ~0x3f) == 0 && ((1L << (_la - 860)) & ((1L << (COT - 860)) | (1L << (CRC32 - 860)) | (1L << (CREATE_ASYMMETRIC_PRIV_KEY - 860)) | (1L << (CREATE_ASYMMETRIC_PUB_KEY - 860)) | (1L << (CREATE_DH_PARAMETERS - 860)) | (1L << (CREATE_DIGEST - 860)) | (1L << (CROSSES - 860)) | (1L << (DATEDIFF - 860)) | (1L << (DATE_FORMAT - 860)) | (1L << (DAYNAME - 860)) | (1L << (DAYOFMONTH - 860)) | (1L << (DAYOFWEEK - 860)) | (1L << (DAYOFYEAR - 860)) | (1L << (DECODE - 860)) | (1L << (DEGREES - 860)) | (1L << (DES_DECRYPT - 860)) | (1L << (DES_ENCRYPT - 860)) | (1L << (DIMENSION - 860)) | (1L << (DISJOINT - 860)) | (1L << (ELT - 860)) | (1L << (ENCODE - 860)) | (1L << (ENCRYPT - 860)) | (1L << (ENDPOINT - 860)) | (1L << (ENGINE_ATTRIBUTE - 860)) | (1L << (ENVELOPE - 860)) | (1L << (EQUALS - 860)) | (1L << (EXP - 860)) | (1L << (EXPORT_SET - 860)) | (1L << (EXTERIORRING - 860)) | (1L << (EXTRACTVALUE - 860)) | (1L << (FIELD - 860)) | (1L << (FIND_IN_SET - 860)) | (1L << (FLOOR - 860)) | (1L << (FORMAT - 860)) | (1L << (FOUND_ROWS - 860)) | (1L << (FROM_BASE64 - 860)) | (1L << (FROM_DAYS - 860)) | (1L << (FROM_UNIXTIME - 860)) | (1L << (GEOMCOLLFROMTEXT - 860)) | (1L << (GEOMCOLLFROMWKB - 860)) | (1L << (GEOMETRYCOLLECTIONFROMTEXT - 860)) | (1L << (GEOMETRYCOLLECTIONFROMWKB - 860)) | (1L << (GEOMETRYFROMTEXT - 860)) | (1L << (GEOMETRYFROMWKB - 860)) | (1L << (GEOMETRYN - 860)) | (1L << (GEOMETRYTYPE - 860)) | (1L << (GEOMFROMTEXT - 860)) | (1L << (GEOMFROMWKB - 860)) | (1L << (GET_FORMAT - 860)) | (1L << (GET_LOCK - 860)) | (1L << (GLENGTH - 860)) | (1L << (GREATEST - 860)) | (1L << (GTID_SUBSET - 860)) | (1L << (GTID_SUBTRACT - 860)) | (1L << (HEX - 860)) | (1L << (IFNULL - 860)) | (1L << (INET6_ATON - 860)) | (1L << (INET6_NTOA - 860)) | (1L << (INET_ATON - 860)) | (1L << (INET_NTOA - 860)) | (1L << (INSTR - 860)) | (1L << (INTERIORRINGN - 860)) | (1L << (INTERSECTS - 860)) | (1L << (ISCLOSED - 860)))) != 0) || ((((_la - 924)) & ~0x3f) == 0 && ((1L << (_la - 924)) & ((1L << (ISEMPTY - 924)) | (1L << (ISNULL - 924)) | (1L << (ISSIMPLE - 924)) | (1L << (IS_FREE_LOCK - 924)) | (1L << (IS_IPV4 - 924)) | (1L << (IS_IPV4_COMPAT - 924)) | (1L << (IS_IPV4_MAPPED - 924)) | (1L << (IS_IPV6 - 924)) | (1L << (IS_USED_LOCK - 924)) | (1L << (LAST_INSERT_ID - 924)) | (1L << (LCASE - 924)) | (1L << (LEAST - 924)) | (1L << (LENGTH - 924)) | (1L << (LINEFROMTEXT - 924)) | (1L << (LINEFROMWKB - 924)) | (1L << (LINESTRINGFROMTEXT - 924)) | (1L << (LINESTRINGFROMWKB - 924)) | (1L << (LN - 924)) | (1L << (LOAD_FILE - 924)) | (1L << (LOCATE - 924)) | (1L << (LOG - 924)) | (1L << (LOG10 - 924)) | (1L << (LOG2 - 924)) | (1L << (LOWER - 924)) | (1L << (LPAD - 924)) | (1L << (LTRIM - 924)) | (1L << (MAKEDATE - 924)) | (1L << (MAKETIME - 924)) | (1L << (MAKE_SET - 924)) | (1L << (MASTER_POS_WAIT - 924)) | (1L << (MBRCONTAINS - 924)) | (1L << (MBRDISJOINT - 924)) | (1L << (MBREQUAL - 924)) | (1L << (MBRINTERSECTS - 924)) | (1L << (MBROVERLAPS - 924)) | (1L << (MBRTOUCHES - 924)) | (1L << (MBRWITHIN - 924)) | (1L << (MD5 - 924)) | (1L << (MLINEFROMTEXT - 924)) | (1L << (MLINEFROMWKB - 924)) | (1L << (MONTHNAME - 924)) | (1L << (MPOINTFROMTEXT - 924)) | (1L << (MPOINTFROMWKB - 924)) | (1L << (MPOLYFROMTEXT - 924)) | (1L << (MPOLYFROMWKB - 924)) | (1L << (MULTILINESTRINGFROMTEXT - 924)) | (1L << (MULTILINESTRINGFROMWKB - 924)) | (1L << (MULTIPOINTFROMTEXT - 924)) | (1L << (MULTIPOINTFROMWKB - 924)) | (1L << (MULTIPOLYGONFROMTEXT - 924)) | (1L << (MULTIPOLYGONFROMWKB - 924)) | (1L << (NAME_CONST - 924)) | (1L << (NULLIF - 924)) | (1L << (NUMGEOMETRIES - 924)) | (1L << (NUMINTERIORRINGS - 924)) | (1L << (NUMPOINTS - 924)) | (1L << (OCT - 924)) | (1L << (OCTET_LENGTH - 924)) | (1L << (ORD - 924)) | (1L << (OVERLAPS - 924)) | (1L << (PERIOD_ADD - 924)) | (1L << (PERIOD_DIFF - 924)) | (1L << (PI - 924)) | (1L << (POINTFROMTEXT - 924)))) != 0) || ((((_la - 988)) & ~0x3f) == 0 && ((1L << (_la - 988)) & ((1L << (POINTFROMWKB - 988)) | (1L << (POINTN - 988)) | (1L << (POLYFROMTEXT - 988)) | (1L << (POLYFROMWKB - 988)) | (1L << (POLYGONFROMTEXT - 988)) | (1L << (POLYGONFROMWKB - 988)) | (1L << (POW - 988)) | (1L << (POWER - 988)) | (1L << (QUOTE - 988)) | (1L << (RADIANS - 988)) | (1L << (RAND - 988)) | (1L << (RANDOM - 988)) | (1L << (RANDOM_BYTES - 988)) | (1L << (RELEASE_LOCK - 988)) | (1L << (REVERSE - 988)) | (1L << (ROUND - 988)) | (1L << (ROW_COUNT - 988)) | (1L << (RPAD - 988)) | (1L << (RTRIM - 988)) | (1L << (SEC_TO_TIME - 988)) | (1L << (SECONDARY_ENGINE_ATTRIBUTE - 988)) | (1L << (SENSITIVE_VARIABLES_OBSERVER - 988)) | (1L << (SESSION_USER - 988)) | (1L << (SHA - 988)) | (1L << (SHA1 - 988)) | (1L << (SHA2 - 988)) | (1L << (SCHEMA_NAME - 988)) | (1L << (SIGN - 988)) | (1L << (SIN - 988)) | (1L << (SLEEP - 988)) | (1L << (SOUNDEX - 988)) | (1L << (SQL_THREAD_WAIT_AFTER_GTIDS - 988)) | (1L << (SQRT - 988)) | (1L << (SRID - 988)) | (1L << (STARTPOINT - 988)) | (1L << (STRCMP - 988)) | (1L << (STR_TO_DATE - 988)) | (1L << (ST_AREA - 988)) | (1L << (ST_ASBINARY - 988)) | (1L << (ST_ASTEXT - 988)) | (1L << (ST_ASWKB - 988)) | (1L << (ST_ASWKT - 988)) | (1L << (ST_BUFFER - 988)) | (1L << (ST_CENTROID - 988)) | (1L << (ST_CONTAINS - 988)) | (1L << (ST_CROSSES - 988)) | (1L << (ST_DIFFERENCE - 988)) | (1L << (ST_DIMENSION - 988)) | (1L << (ST_DISJOINT - 988)) | (1L << (ST_DISTANCE - 988)) | (1L << (ST_ENDPOINT - 988)) | (1L << (ST_ENVELOPE - 988)) | (1L << (ST_EQUALS - 988)) | (1L << (ST_EXTERIORRING - 988)) | (1L << (ST_GEOMCOLLFROMTEXT - 988)) | (1L << (ST_GEOMCOLLFROMTXT - 988)) | (1L << (ST_GEOMCOLLFROMWKB - 988)) | (1L << (ST_GEOMETRYCOLLECTIONFROMTEXT - 988)) | (1L << (ST_GEOMETRYCOLLECTIONFROMWKB - 988)) | (1L << (ST_GEOMETRYFROMTEXT - 988)) | (1L << (ST_GEOMETRYFROMWKB - 988)) | (1L << (ST_GEOMETRYN - 988)) | (1L << (ST_GEOMETRYTYPE - 988)) | (1L << (ST_GEOMFROMTEXT - 988)))) != 0) || ((((_la - 1052)) & ~0x3f) == 0 && ((1L << (_la - 1052)) & ((1L << (ST_GEOMFROMWKB - 1052)) | (1L << (ST_INTERIORRINGN - 1052)) | (1L << (ST_INTERSECTION - 1052)) | (1L << (ST_INTERSECTS - 1052)) | (1L << (ST_ISCLOSED - 1052)) | (1L << (ST_ISEMPTY - 1052)) | (1L << (ST_ISSIMPLE - 1052)) | (1L << (ST_LINEFROMTEXT - 1052)) | (1L << (ST_LINEFROMWKB - 1052)) | (1L << (ST_LINESTRINGFROMTEXT - 1052)) | (1L << (ST_LINESTRINGFROMWKB - 1052)) | (1L << (ST_NUMGEOMETRIES - 1052)) | (1L << (ST_NUMINTERIORRING - 1052)) | (1L << (ST_NUMINTERIORRINGS - 1052)) | (1L << (ST_NUMPOINTS - 1052)) | (1L << (ST_OVERLAPS - 1052)) | (1L << (ST_POINTFROMTEXT - 1052)) | (1L << (ST_POINTFROMWKB - 1052)) | (1L << (ST_POINTN - 1052)) | (1L << (ST_POLYFROMTEXT - 1052)) | (1L << (ST_POLYFROMWKB - 1052)) | (1L << (ST_POLYGONFROMTEXT - 1052)) | (1L << (ST_POLYGONFROMWKB - 1052)) | (1L << (ST_SRID - 1052)) | (1L << (ST_STARTPOINT - 1052)) | (1L << (ST_SYMDIFFERENCE - 1052)) | (1L << (ST_TOUCHES - 1052)) | (1L << (ST_UNION - 1052)) | (1L << (ST_WITHIN - 1052)) | (1L << (ST_X - 1052)) | (1L << (ST_Y - 1052)) | (1L << (SUBDATE - 1052)) | (1L << (SUBSTRING_INDEX - 1052)) | (1L << (SUBTIME - 1052)) | (1L << (SYSTEM_USER - 1052)) | (1L << (SYSTEM - 1052)) | (1L << (TAN - 1052)) | (1L << (TELEMETRY_LOG_ADMIN - 1052)) | (1L << (TIMEDIFF - 1052)) | (1L << (TIMESTAMPADD - 1052)) | (1L << (TIMESTAMPDIFF - 1052)) | (1L << (TIME_FORMAT - 1052)) | (1L << (TIME_TO_SEC - 1052)) | (1L << (TOUCHES - 1052)) | (1L << (TO_BASE64 - 1052)) | (1L << (TO_DAYS - 1052)) | (1L << (TO_SECONDS - 1052)) | (1L << (TP_CONNECTION_ADMIN - 1052)) | (1L << (UCASE - 1052)) | (1L << (UNCOMPRESS - 1052)) | (1L << (UNCOMPRESSED_LENGTH - 1052)) | (1L << (UNHEX - 1052)) | (1L << (UNIX_TIMESTAMP - 1052)) | (1L << (UPDATEXML - 1052)) | (1L << (UPPER - 1052)) | (1L << (UUID - 1052)) | (1L << (UUID_SHORT - 1052)) | (1L << (VALIDATE_PASSWORD_STRENGTH - 1052)) | (1L << (VERSION - 1052)) | (1L << (VERSIONING - 1052)) | (1L << (WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS - 1052)) | (1L << (WEEKDAY - 1052)) | (1L << (WEEKOFYEAR - 1052)) | (1L << (WEIGHT_STRING - 1052)))) != 0) || ((((_la - 1116)) & ~0x3f) == 0 && ((1L << (_la - 1116)) & ((1L << (WITHIN - 1116)) | (1L << (YEARWEEK - 1116)) | (1L << (Y_FUNCTION - 1116)) | (1L << (X_FUNCTION - 1116)) | (1L << (VIA - 1116)) | (1L << (LASTVAL - 1116)) | (1L << (NEXTVAL - 1116)) | (1L << (SETVAL - 1116)) | (1L << (PREVIOUS - 1116)) | (1L << (PERSISTENT - 1116)) | (1L << (BINLOG_MONITOR - 1116)) | (1L << (BINLOG_REPLAY - 1116)) | (1L << (FEDERATED_ADMIN - 1116)) | (1L << (READ_ONLY_ADMIN - 1116)) | (1L << (REPLICA - 1116)) | (1L << (REPLICATION_MASTER_ADMIN - 1116)) | (1L << (MONITOR - 1116)) | (1L << (READ_ONLY - 1116)) | (1L << (REPLAY - 1116)) | (1L << (MOD - 1116)) | (1L << (CHARSET_REVERSE_QOUTE_STRING - 1116)) | (1L << (STRING_LITERAL - 1116)))) != 0) || _la==ID) {
				{
				setState(1096);
				procedureParameter();
				}
			}

			setState(1103);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(1099);
				match(COMMA);
				setState(1100);
				procedureParameter();
				}
				}
				setState(1105);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(1106);
			match(RR_BRACKET);
			setState(1110);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,55,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					{
					{
					setState(1107);
					routineOption();
					}
					} 
				}
				setState(1112);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,55,_ctx);
			}
			setState(1113);
			routineBody();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateFunctionContext extends ParserRuleContext {
		public TerminalNode CREATE() { return getToken(MySqlParser.CREATE, 0); }
		public TerminalNode FUNCTION() { return getToken(MySqlParser.FUNCTION, 0); }
		public FullIdContext fullId() {
			return getRuleContext(FullIdContext.class,0);
		}
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TerminalNode RETURNS() { return getToken(MySqlParser.RETURNS, 0); }
		public DataTypeContext dataType() {
			return getRuleContext(DataTypeContext.class,0);
		}
		public RoutineBodyContext routineBody() {
			return getRuleContext(RoutineBodyContext.class,0);
		}
		public ReturnStatementContext returnStatement() {
			return getRuleContext(ReturnStatementContext.class,0);
		}
		public OrReplaceContext orReplace() {
			return getRuleContext(OrReplaceContext.class,0);
		}
		public OwnerStatementContext ownerStatement() {
			return getRuleContext(OwnerStatementContext.class,0);
		}
		public TerminalNode AGGREGATE() { return getToken(MySqlParser.AGGREGATE, 0); }
		public IfNotExistsContext ifNotExists() {
			return getRuleContext(IfNotExistsContext.class,0);
		}
		public List functionParameter() {
			return getRuleContexts(FunctionParameterContext.class);
		}
		public FunctionParameterContext functionParameter(int i) {
			return getRuleContext(FunctionParameterContext.class,i);
		}
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public List routineOption() {
			return getRuleContexts(RoutineOptionContext.class);
		}
		public RoutineOptionContext routineOption(int i) {
			return getRuleContext(RoutineOptionContext.class,i);
		}
		public CreateFunctionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createFunction; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCreateFunction(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCreateFunction(this);
		}
	}

	public final CreateFunctionContext createFunction() throws RecognitionException {
		CreateFunctionContext _localctx = new CreateFunctionContext(_ctx, getState());
		enterRule(_localctx, 36, RULE_createFunction);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(1115);
			match(CREATE);
			setState(1117);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==OR) {
				{
				setState(1116);
				orReplace();
				}
			}

			setState(1120);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==DEFINER) {
				{
				setState(1119);
				ownerStatement();
				}
			}

			setState(1123);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==AGGREGATE) {
				{
				setState(1122);
				match(AGGREGATE);
				}
			}

			setState(1125);
			match(FUNCTION);
			setState(1127);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,59,_ctx) ) {
			case 1:
				{
				setState(1126);
				ifNotExists();
				}
				break;
			}
			setState(1129);
			fullId();
			setState(1130);
			match(LR_BRACKET);
			setState(1132);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ARRAY) | (1L << ATTRIBUTE) | (1L << BUCKETS) | (1L << CONDITION) | (1L << CURRENT) | (1L << CURRENT_ROLE) | (1L << CURRENT_USER) | (1L << DATABASE) | (1L << DEFAULT) | (1L << DIAGNOSTICS) | (1L << EMPTY) | (1L << ENFORCED) | (1L << EXCEPT))) != 0) || ((((_la - 74)) & ~0x3f) == 0 && ((1L << (_la - 74)) & ((1L << (GROUP - 74)) | (1L << (GROUP_REPLICATION_STREAM - 74)) | (1L << (IF - 74)) | (1L << (IGNORED - 74)) | (1L << (INSERT - 74)) | (1L << (LATERAL - 74)) | (1L << (LEFT - 74)) | (1L << (LOCKED - 74)) | (1L << (MAXVALUE - 74)) | (1L << (MINVALUE - 74)) | (1L << (NUMBER - 74)) | (1L << (OPTIONAL - 74)) | (1L << (ORDER - 74)) | (1L << (PRIMARY - 74)))) != 0) || ((((_la - 142)) & ~0x3f) == 0 && ((1L << (_la - 142)) & ((1L << (REPEAT - 142)) | (1L << (REPLACE - 142)) | (1L << (RIGHT - 142)) | (1L << (SCHEMA - 142)) | (1L << (SKIP_ - 142)) | (1L << (SKIP_QUERY_REWRITE - 142)) | (1L << (STACKED - 142)) | (1L << (STATEMENT - 142)))) != 0) || ((((_la - 220)) & ~0x3f) == 0 && ((1L << (_la - 220)) & ((1L << (DATE - 220)) | (1L << (TIME - 220)) | (1L << (TIMESTAMP - 220)) | (1L << (DATETIME - 220)) | (1L << (YEAR - 220)) | (1L << (NATIONAL - 220)) | (1L << (BINARY - 220)) | (1L << (TEXT - 220)) | (1L << (ENUM - 220)) | (1L << (SERIAL - 220)) | (1L << (JSON_ARRAY - 220)) | (1L << (JSON_ARRAYAGG - 220)) | (1L << (JSON_ARRAY_APPEND - 220)) | (1L << (JSON_ARRAY_INSERT - 220)) | (1L << (JSON_CONTAINS - 220)) | (1L << (JSON_CONTAINS_PATH - 220)) | (1L << (JSON_DEPTH - 220)) | (1L << (JSON_EXTRACT - 220)) | (1L << (JSON_INSERT - 220)) | (1L << (JSON_KEYS - 220)) | (1L << (JSON_LENGTH - 220)) | (1L << (JSON_MERGE - 220)) | (1L << (JSON_MERGE_PATCH - 220)) | (1L << (JSON_MERGE_PRESERVE - 220)) | (1L << (JSON_OBJECT - 220)) | (1L << (JSON_OBJECTAGG - 220)) | (1L << (JSON_OVERLAPS - 220)) | (1L << (JSON_PRETTY - 220)) | (1L << (JSON_QUOTE - 220)) | (1L << (JSON_REMOVE - 220)) | (1L << (JSON_REPLACE - 220)) | (1L << (JSON_SCHEMA_VALID - 220)) | (1L << (JSON_SCHEMA_VALIDATION_REPORT - 220)) | (1L << (JSON_SEARCH - 220)) | (1L << (JSON_SET - 220)) | (1L << (JSON_STORAGE_FREE - 220)) | (1L << (JSON_STORAGE_SIZE - 220)) | (1L << (JSON_TABLE - 220)) | (1L << (JSON_TYPE - 220)) | (1L << (JSON_UNQUOTE - 220)))) != 0) || ((((_la - 284)) & ~0x3f) == 0 && ((1L << (_la - 284)) & ((1L << (JSON_VALID - 284)) | (1L << (JSON_VALUE - 284)) | (1L << (NESTED - 284)) | (1L << (ORDINALITY - 284)) | (1L << (PATH - 284)) | (1L << (AVG - 284)) | (1L << (BIT_AND - 284)) | (1L << (BIT_OR - 284)) | (1L << (BIT_XOR - 284)) | (1L << (COUNT - 284)) | (1L << (CUME_DIST - 284)) | (1L << (DENSE_RANK - 284)) | (1L << (FIRST_VALUE - 284)) | (1L << (GROUP_CONCAT - 284)) | (1L << (LAG - 284)) | (1L << (LAST_VALUE - 284)) | (1L << (LEAD - 284)) | (1L << (MAX - 284)) | (1L << (MIN - 284)) | (1L << (NTILE - 284)) | (1L << (NTH_VALUE - 284)) | (1L << (PERCENT_RANK - 284)) | (1L << (RANK - 284)) | (1L << (ROW_NUMBER - 284)) | (1L << (STD - 284)) | (1L << (STDDEV - 284)) | (1L << (STDDEV_POP - 284)) | (1L << (STDDEV_SAMP - 284)) | (1L << (SUM - 284)) | (1L << (VAR_POP - 284)) | (1L << (VAR_SAMP - 284)) | (1L << (VARIANCE - 284)) | (1L << (CURRENT_DATE - 284)) | (1L << (CURRENT_TIME - 284)) | (1L << (CURRENT_TIMESTAMP - 284)) | (1L << (LOCALTIME - 284)) | (1L << (CURDATE - 284)) | (1L << (CURTIME - 284)) | (1L << (DATE_ADD - 284)) | (1L << (DATE_SUB - 284)) | (1L << (LOCALTIMESTAMP - 284)) | (1L << (NOW - 284)) | (1L << (POSITION - 284)) | (1L << (SUBSTR - 284)) | (1L << (SUBSTRING - 284)) | (1L << (SYSDATE - 284)) | (1L << (TRIM - 284)) | (1L << (UTC_DATE - 284)) | (1L << (UTC_TIME - 284)) | (1L << (UTC_TIMESTAMP - 284)) | (1L << (ACCOUNT - 284)) | (1L << (ACTION - 284)) | (1L << (AFTER - 284)) | (1L << (AGGREGATE - 284)) | (1L << (ALGORITHM - 284)) | (1L << (ANY - 284)) | (1L << (AT - 284)) | (1L << (AUTHORS - 284)) | (1L << (AUTOCOMMIT - 284)) | (1L << (AUTOEXTEND_SIZE - 284)) | (1L << (AUTO_INCREMENT - 284)) | (1L << (AVG_ROW_LENGTH - 284)) | (1L << (BEGIN - 284)))) != 0) || ((((_la - 348)) & ~0x3f) == 0 && ((1L << (_la - 348)) & ((1L << (BINLOG - 348)) | (1L << (BIT - 348)) | (1L << (BLOCK - 348)) | (1L << (BOOL - 348)) | (1L << (BOOLEAN - 348)) | (1L << (BTREE - 348)) | (1L << (CACHE - 348)) | (1L << (CASCADED - 348)) | (1L << (CHAIN - 348)) | (1L << (CHANGED - 348)) | (1L << (CHANNEL - 348)) | (1L << (CHECKSUM - 348)) | (1L << (PAGE_CHECKSUM - 348)) | (1L << (CIPHER - 348)) | (1L << (CLASS_ORIGIN - 348)) | (1L << (CLIENT - 348)) | (1L << (CLOSE - 348)) | (1L << (CLUSTERING - 348)) | (1L << (COALESCE - 348)) | (1L << (CODE - 348)) | (1L << (COLUMNS - 348)) | (1L << (COLUMN_FORMAT - 348)) | (1L << (COLUMN_NAME - 348)) | (1L << (COMMENT - 348)) | (1L << (COMMIT - 348)) | (1L << (COMPACT - 348)) | (1L << (COMPLETION - 348)) | (1L << (COMPRESSED - 348)) | (1L << (COMPRESSION - 348)) | (1L << (CONCURRENT - 348)) | (1L << (CONNECT - 348)) | (1L << (CONNECTION - 348)) | (1L << (CONSISTENT - 348)) | (1L << (CONSTRAINT_CATALOG - 348)) | (1L << (CONSTRAINT_SCHEMA - 348)) | (1L << (CONSTRAINT_NAME - 348)) | (1L << (CONTAINS - 348)) | (1L << (CONTEXT - 348)) | (1L << (CONTRIBUTORS - 348)) | (1L << (COPY - 348)) | (1L << (CPU - 348)) | (1L << (CYCLE - 348)) | (1L << (CURSOR_NAME - 348)) | (1L << (DATA - 348)) | (1L << (DATAFILE - 348)) | (1L << (DEALLOCATE - 348)) | (1L << (DEFAULT_AUTH - 348)) | (1L << (DEFINER - 348)) | (1L << (DELAY_KEY_WRITE - 348)) | (1L << (DES_KEY_FILE - 348)) | (1L << (DIRECTORY - 348)) | (1L << (DISABLE - 348)) | (1L << (DISCARD - 348)) | (1L << (DISK - 348)) | (1L << (DO - 348)) | (1L << (DUMPFILE - 348)) | (1L << (DUPLICATE - 348)) | (1L << (DYNAMIC - 348)) | (1L << (ENABLE - 348)) | (1L << (ENCRYPTED - 348)) | (1L << (ENCRYPTION - 348)) | (1L << (ENCRYPTION_KEY_ID - 348)) | (1L << (END - 348)) | (1L << (ENDS - 348)))) != 0) || ((((_la - 412)) & ~0x3f) == 0 && ((1L << (_la - 412)) & ((1L << (ENGINE - 412)) | (1L << (ENGINES - 412)) | (1L << (ERROR - 412)) | (1L << (ERRORS - 412)) | (1L << (ESCAPE - 412)) | (1L << (EVEN - 412)) | (1L << (EVENT - 412)) | (1L << (EVENTS - 412)) | (1L << (EVERY - 412)) | (1L << (EXCHANGE - 412)) | (1L << (EXCLUSIVE - 412)) | (1L << (EXPIRE - 412)) | (1L << (EXPORT - 412)) | (1L << (EXTENDED - 412)) | (1L << (EXTENT_SIZE - 412)) | (1L << (FAILED_LOGIN_ATTEMPTS - 412)) | (1L << (FAST - 412)) | (1L << (FAULTS - 412)) | (1L << (FIELDS - 412)) | (1L << (FILE_BLOCK_SIZE - 412)) | (1L << (FILTER - 412)) | (1L << (FIRST - 412)) | (1L << (FIXED - 412)) | (1L << (FLUSH - 412)) | (1L << (FOLLOWS - 412)) | (1L << (FOUND - 412)) | (1L << (FULL - 412)) | (1L << (FUNCTION - 412)) | (1L << (GENERAL - 412)) | (1L << (GLOBAL - 412)) | (1L << (GRANTS - 412)) | (1L << (GROUP_REPLICATION - 412)) | (1L << (HANDLER - 412)) | (1L << (HASH - 412)) | (1L << (HELP - 412)) | (1L << (HISTORY - 412)) | (1L << (HOST - 412)) | (1L << (HOSTS - 412)) | (1L << (IDENTIFIED - 412)) | (1L << (IGNORE_SERVER_IDS - 412)) | (1L << (IMPORT - 412)) | (1L << (INCREMENT - 412)) | (1L << (INDEXES - 412)) | (1L << (INITIAL_SIZE - 412)) | (1L << (INPLACE - 412)) | (1L << (INSERT_METHOD - 412)) | (1L << (INSTALL - 412)) | (1L << (INSTANCE - 412)) | (1L << (INSTANT - 412)) | (1L << (INVISIBLE - 412)) | (1L << (INVOKER - 412)) | (1L << (IO - 412)) | (1L << (IO_THREAD - 412)) | (1L << (IPC - 412)) | (1L << (ISOLATION - 412)) | (1L << (ISSUER - 412)) | (1L << (JSON - 412)) | (1L << (KEY_BLOCK_SIZE - 412)) | (1L << (LANGUAGE - 412)) | (1L << (LAST - 412)) | (1L << (LEAVES - 412)) | (1L << (LESS - 412)) | (1L << (LEVEL - 412)))) != 0) || ((((_la - 476)) & ~0x3f) == 0 && ((1L << (_la - 476)) & ((1L << (LIST - 476)) | (1L << (LOCAL - 476)) | (1L << (LOGFILE - 476)) | (1L << (LOGS - 476)) | (1L << (MASTER - 476)) | (1L << (MASTER_AUTO_POSITION - 476)) | (1L << (MASTER_CONNECT_RETRY - 476)) | (1L << (MASTER_DELAY - 476)) | (1L << (MASTER_HEARTBEAT_PERIOD - 476)) | (1L << (MASTER_HOST - 476)) | (1L << (MASTER_LOG_FILE - 476)) | (1L << (MASTER_LOG_POS - 476)) | (1L << (MASTER_PASSWORD - 476)) | (1L << (MASTER_PORT - 476)) | (1L << (MASTER_RETRY_COUNT - 476)) | (1L << (MASTER_SSL - 476)) | (1L << (MASTER_SSL_CA - 476)) | (1L << (MASTER_SSL_CAPATH - 476)) | (1L << (MASTER_SSL_CERT - 476)) | (1L << (MASTER_SSL_CIPHER - 476)) | (1L << (MASTER_SSL_CRL - 476)) | (1L << (MASTER_SSL_CRLPATH - 476)) | (1L << (MASTER_SSL_KEY - 476)) | (1L << (MASTER_TLS_VERSION - 476)) | (1L << (MASTER_USER - 476)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 476)) | (1L << (MAX_QUERIES_PER_HOUR - 476)) | (1L << (MAX_ROWS - 476)) | (1L << (MAX_SIZE - 476)) | (1L << (MAX_UPDATES_PER_HOUR - 476)) | (1L << (MAX_USER_CONNECTIONS - 476)) | (1L << (MEDIUM - 476)) | (1L << (MEMBER - 476)) | (1L << (MERGE - 476)) | (1L << (MESSAGE_TEXT - 476)) | (1L << (MID - 476)) | (1L << (MIGRATE - 476)) | (1L << (MIN_ROWS - 476)) | (1L << (MODE - 476)) | (1L << (MODIFY - 476)) | (1L << (MUTEX - 476)) | (1L << (MYSQL - 476)) | (1L << (MYSQL_ERRNO - 476)) | (1L << (NAME - 476)) | (1L << (NAMES - 476)) | (1L << (NCHAR - 476)) | (1L << (NEVER - 476)) | (1L << (NEXT - 476)) | (1L << (NO - 476)) | (1L << (NOCACHE - 476)) | (1L << (NOCOPY - 476)) | (1L << (NOCYCLE - 476)) | (1L << (NOMAXVALUE - 476)) | (1L << (NOMINVALUE - 476)) | (1L << (NOWAIT - 476)) | (1L << (NODEGROUP - 476)) | (1L << (NONE - 476)) | (1L << (ODBC - 476)) | (1L << (OFFLINE - 476)) | (1L << (OFFSET - 476)) | (1L << (OF - 476)) | (1L << (OJ - 476)) | (1L << (OLD_PASSWORD - 476)) | (1L << (ONE - 476)))) != 0) || ((((_la - 540)) & ~0x3f) == 0 && ((1L << (_la - 540)) & ((1L << (ONLINE - 540)) | (1L << (ONLY - 540)) | (1L << (OPEN - 540)) | (1L << (OPTIMIZER_COSTS - 540)) | (1L << (OPTIONS - 540)) | (1L << (OWNER - 540)) | (1L << (PACK_KEYS - 540)) | (1L << (PAGE - 540)) | (1L << (PARSER - 540)) | (1L << (PARTIAL - 540)) | (1L << (PARTITIONING - 540)) | (1L << (PARTITIONS - 540)) | (1L << (PASSWORD - 540)) | (1L << (PASSWORD_LOCK_TIME - 540)) | (1L << (PHASE - 540)) | (1L << (PLUGIN - 540)) | (1L << (PLUGIN_DIR - 540)) | (1L << (PLUGINS - 540)) | (1L << (PORT - 540)) | (1L << (PRECEDES - 540)) | (1L << (PREPARE - 540)) | (1L << (PRESERVE - 540)) | (1L << (PREV - 540)) | (1L << (PROCESSLIST - 540)) | (1L << (PROFILE - 540)) | (1L << (PROFILES - 540)) | (1L << (PROXY - 540)) | (1L << (QUERY - 540)) | (1L << (QUICK - 540)) | (1L << (REBUILD - 540)) | (1L << (RECOVER - 540)) | (1L << (RECURSIVE - 540)) | (1L << (REDO_BUFFER_SIZE - 540)) | (1L << (REDUNDANT - 540)) | (1L << (RELAY - 540)) | (1L << (RELAY_LOG_FILE - 540)) | (1L << (RELAY_LOG_POS - 540)) | (1L << (RELAYLOG - 540)) | (1L << (REMOVE - 540)) | (1L << (REORGANIZE - 540)) | (1L << (REPAIR - 540)) | (1L << (REPLICATE_DO_DB - 540)) | (1L << (REPLICATE_DO_TABLE - 540)) | (1L << (REPLICATE_IGNORE_DB - 540)) | (1L << (REPLICATE_IGNORE_TABLE - 540)) | (1L << (REPLICATE_REWRITE_DB - 540)) | (1L << (REPLICATE_WILD_DO_TABLE - 540)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 540)) | (1L << (REPLICATION - 540)) | (1L << (RESET - 540)) | (1L << (RESTART - 540)) | (1L << (RESUME - 540)) | (1L << (RETURNED_SQLSTATE - 540)) | (1L << (RETURNING - 540)) | (1L << (RETURNS - 540)) | (1L << (REUSE - 540)) | (1L << (ROLE - 540)) | (1L << (ROLLBACK - 540)) | (1L << (ROLLUP - 540)) | (1L << (ROTATE - 540)) | (1L << (ROW - 540)))) != 0) || ((((_la - 604)) & ~0x3f) == 0 && ((1L << (_la - 604)) & ((1L << (ROWS - 604)) | (1L << (ROW_FORMAT - 604)) | (1L << (RTREE - 604)) | (1L << (SAVEPOINT - 604)) | (1L << (SCHEDULE - 604)) | (1L << (SECURITY - 604)) | (1L << (SEQUENCE - 604)) | (1L << (SERVER - 604)) | (1L << (SESSION - 604)) | (1L << (SHARE - 604)) | (1L << (SHARED - 604)) | (1L << (SIGNED - 604)) | (1L << (SIMPLE - 604)) | (1L << (SLAVE - 604)) | (1L << (SLOW - 604)) | (1L << (SNAPSHOT - 604)) | (1L << (SOCKET - 604)) | (1L << (SOME - 604)) | (1L << (SONAME - 604)) | (1L << (SOUNDS - 604)) | (1L << (SOURCE - 604)) | (1L << (SQL_AFTER_GTIDS - 604)) | (1L << (SQL_AFTER_MTS_GAPS - 604)) | (1L << (SQL_BEFORE_GTIDS - 604)) | (1L << (SQL_BUFFER_RESULT - 604)) | (1L << (SQL_CACHE - 604)) | (1L << (SQL_NO_CACHE - 604)) | (1L << (SQL_THREAD - 604)) | (1L << (START - 604)) | (1L << (STARTS - 604)) | (1L << (STATS_AUTO_RECALC - 604)) | (1L << (STATS_PERSISTENT - 604)) | (1L << (STATS_SAMPLE_PAGES - 604)) | (1L << (STATUS - 604)) | (1L << (STOP - 604)) | (1L << (STORAGE - 604)) | (1L << (STRING - 604)) | (1L << (SUBCLASS_ORIGIN - 604)) | (1L << (SUBJECT - 604)) | (1L << (SUBPARTITION - 604)) | (1L << (SUBPARTITIONS - 604)) | (1L << (SUSPEND - 604)) | (1L << (SWAPS - 604)) | (1L << (SWITCHES - 604)) | (1L << (TABLE_NAME - 604)) | (1L << (TABLESPACE - 604)) | (1L << (TABLE_TYPE - 604)) | (1L << (TEMPORARY - 604)) | (1L << (TEMPTABLE - 604)) | (1L << (THAN - 604)) | (1L << (TRADITIONAL - 604)) | (1L << (TRANSACTION - 604)) | (1L << (TRANSACTIONAL - 604)) | (1L << (TRIGGERS - 604)) | (1L << (TRUNCATE - 604)) | (1L << (UNBOUNDED - 604)) | (1L << (UNDEFINED - 604)) | (1L << (UNDOFILE - 604)) | (1L << (UNDO_BUFFER_SIZE - 604)) | (1L << (UNINSTALL - 604)) | (1L << (UNKNOWN - 604)) | (1L << (UNTIL - 604)) | (1L << (UPGRADE - 604)))) != 0) || ((((_la - 668)) & ~0x3f) == 0 && ((1L << (_la - 668)) & ((1L << (USER - 668)) | (1L << (USE_FRM - 668)) | (1L << (USER_RESOURCES - 668)) | (1L << (VALIDATION - 668)) | (1L << (VALUE - 668)) | (1L << (VARIABLES - 668)) | (1L << (VIEW - 668)) | (1L << (VIRTUAL - 668)) | (1L << (VISIBLE - 668)) | (1L << (WAIT - 668)) | (1L << (WARNINGS - 668)) | (1L << (WITHOUT - 668)) | (1L << (WORK - 668)) | (1L << (WRAPPER - 668)) | (1L << (X509 - 668)) | (1L << (XA - 668)) | (1L << (XML - 668)) | (1L << (YES - 668)) | (1L << (EUR - 668)) | (1L << (USA - 668)) | (1L << (JIS - 668)) | (1L << (ISO - 668)) | (1L << (INTERNAL - 668)) | (1L << (QUARTER - 668)) | (1L << (MONTH - 668)) | (1L << (DAY - 668)) | (1L << (HOUR - 668)) | (1L << (MINUTE - 668)) | (1L << (WEEK - 668)) | (1L << (SECOND - 668)) | (1L << (MICROSECOND - 668)) | (1L << (USER_STATISTICS - 668)) | (1L << (CLIENT_STATISTICS - 668)) | (1L << (INDEX_STATISTICS - 668)) | (1L << (TABLE_STATISTICS - 668)) | (1L << (FIREWALL_RULES - 668)) | (1L << (ADMIN - 668)) | (1L << (APPLICATION_PASSWORD_ADMIN - 668)) | (1L << (AUDIT_ADMIN - 668)) | (1L << (AUDIT_ABORT_EXEMPT - 668)) | (1L << (AUTHENTICATION_POLICY_ADMIN - 668)) | (1L << (BACKUP_ADMIN - 668)) | (1L << (BINLOG_ADMIN - 668)) | (1L << (BINLOG_ENCRYPTION_ADMIN - 668)) | (1L << (CLONE_ADMIN - 668)) | (1L << (CONNECTION_ADMIN - 668)) | (1L << (ENCRYPTION_KEY_ADMIN - 668)) | (1L << (EXECUTE - 668)) | (1L << (FILE - 668)) | (1L << (FIREWALL_ADMIN - 668)) | (1L << (FIREWALL_EXEMPT - 668)) | (1L << (FIREWALL_USER - 668)) | (1L << (FLUSH_OPTIMIZER_COSTS - 668)) | (1L << (FLUSH_STATUS - 668)) | (1L << (FLUSH_TABLES - 668)) | (1L << (FLUSH_USER_RESOURCES - 668)) | (1L << (GROUP_REPLICATION_ADMIN - 668)) | (1L << (INNODB_REDO_LOG_ARCHIVE - 668)) | (1L << (INNODB_REDO_LOG_ENABLE - 668)) | (1L << (INVOKE - 668)) | (1L << (LAMBDA - 668)) | (1L << (NDB_STORED_USER - 668)) | (1L << (PASSWORDLESS_USER_ADMIN - 668)))) != 0) || ((((_la - 732)) & ~0x3f) == 0 && ((1L << (_la - 732)) & ((1L << (PERSIST_RO_VARIABLES_ADMIN - 732)) | (1L << (PRIVILEGES - 732)) | (1L << (PROCESS - 732)) | (1L << (RELOAD - 732)) | (1L << (REPLICATION_APPLIER - 732)) | (1L << (REPLICATION_SLAVE_ADMIN - 732)) | (1L << (RESOURCE_GROUP_ADMIN - 732)) | (1L << (RESOURCE_GROUP_USER - 732)) | (1L << (ROLE_ADMIN - 732)) | (1L << (ROUTINE - 732)) | (1L << (S3 - 732)) | (1L << (SESSION_VARIABLES_ADMIN - 732)) | (1L << (SET_USER_ID - 732)) | (1L << (SHOW_ROUTINE - 732)) | (1L << (SHUTDOWN - 732)) | (1L << (SUPER - 732)) | (1L << (SYSTEM_VARIABLES_ADMIN - 732)) | (1L << (TABLES - 732)) | (1L << (TABLE_ENCRYPTION_ADMIN - 732)) | (1L << (VERSION_TOKEN_ADMIN - 732)) | (1L << (XA_RECOVER_ADMIN - 732)) | (1L << (ARMSCII8 - 732)) | (1L << (ASCII - 732)) | (1L << (BIG5 - 732)) | (1L << (CP1250 - 732)) | (1L << (CP1251 - 732)) | (1L << (CP1256 - 732)) | (1L << (CP1257 - 732)) | (1L << (CP850 - 732)) | (1L << (CP852 - 732)) | (1L << (CP866 - 732)) | (1L << (CP932 - 732)) | (1L << (DEC8 - 732)) | (1L << (EUCJPMS - 732)) | (1L << (EUCKR - 732)) | (1L << (GB18030 - 732)) | (1L << (GB2312 - 732)) | (1L << (GBK - 732)) | (1L << (GEOSTD8 - 732)) | (1L << (GREEK - 732)) | (1L << (HEBREW - 732)) | (1L << (HP8 - 732)) | (1L << (KEYBCS2 - 732)) | (1L << (KOI8R - 732)) | (1L << (KOI8U - 732)) | (1L << (LATIN1 - 732)) | (1L << (LATIN2 - 732)) | (1L << (LATIN5 - 732)) | (1L << (LATIN7 - 732)) | (1L << (MACCE - 732)) | (1L << (MACROMAN - 732)) | (1L << (SJIS - 732)) | (1L << (SWE7 - 732)) | (1L << (TIS620 - 732)) | (1L << (UCS2 - 732)) | (1L << (UJIS - 732)) | (1L << (UTF16 - 732)) | (1L << (UTF16LE - 732)) | (1L << (UTF32 - 732)) | (1L << (UTF8 - 732)) | (1L << (UTF8MB3 - 732)) | (1L << (UTF8MB4 - 732)) | (1L << (ARCHIVE - 732)))) != 0) || ((((_la - 796)) & ~0x3f) == 0 && ((1L << (_la - 796)) & ((1L << (BLACKHOLE - 796)) | (1L << (CSV - 796)) | (1L << (FEDERATED - 796)) | (1L << (INNODB - 796)) | (1L << (MEMORY - 796)) | (1L << (MRG_MYISAM - 796)) | (1L << (MYISAM - 796)) | (1L << (NDB - 796)) | (1L << (NDBCLUSTER - 796)) | (1L << (PERFORMANCE_SCHEMA - 796)) | (1L << (TOKUDB - 796)) | (1L << (REPEATABLE - 796)) | (1L << (COMMITTED - 796)) | (1L << (UNCOMMITTED - 796)) | (1L << (SERIALIZABLE - 796)) | (1L << (GEOMETRYCOLLECTION - 796)) | (1L << (GEOMETRY - 796)) | (1L << (LINESTRING - 796)) | (1L << (MULTILINESTRING - 796)) | (1L << (MULTIPOINT - 796)) | (1L << (MULTIPOLYGON - 796)) | (1L << (POINT - 796)) | (1L << (POLYGON - 796)) | (1L << (ABS - 796)) | (1L << (ACOS - 796)) | (1L << (ADDDATE - 796)) | (1L << (ADDTIME - 796)) | (1L << (AES_DECRYPT - 796)) | (1L << (AES_ENCRYPT - 796)) | (1L << (AREA - 796)) | (1L << (ASBINARY - 796)) | (1L << (ASIN - 796)) | (1L << (ASTEXT - 796)) | (1L << (ASWKB - 796)) | (1L << (ASWKT - 796)) | (1L << (ASYMMETRIC_DECRYPT - 796)) | (1L << (ASYMMETRIC_DERIVE - 796)) | (1L << (ASYMMETRIC_ENCRYPT - 796)) | (1L << (ASYMMETRIC_SIGN - 796)) | (1L << (ASYMMETRIC_VERIFY - 796)) | (1L << (ATAN - 796)) | (1L << (ATAN2 - 796)) | (1L << (BENCHMARK - 796)) | (1L << (BIN - 796)) | (1L << (BIT_COUNT - 796)) | (1L << (BIT_LENGTH - 796)) | (1L << (BUFFER - 796)) | (1L << (CATALOG_NAME - 796)) | (1L << (CEIL - 796)) | (1L << (CEILING - 796)) | (1L << (CENTROID - 796)) | (1L << (CHARACTER_LENGTH - 796)) | (1L << (CHARSET - 796)) | (1L << (CHAR_LENGTH - 796)) | (1L << (COERCIBILITY - 796)) | (1L << (COLLATION - 796)) | (1L << (COMPRESS - 796)) | (1L << (CONCAT - 796)) | (1L << (CONCAT_WS - 796)) | (1L << (CONNECTION_ID - 796)) | (1L << (CONV - 796)) | (1L << (CONVERT_TZ - 796)) | (1L << (COS - 796)))) != 0) || ((((_la - 860)) & ~0x3f) == 0 && ((1L << (_la - 860)) & ((1L << (COT - 860)) | (1L << (CRC32 - 860)) | (1L << (CREATE_ASYMMETRIC_PRIV_KEY - 860)) | (1L << (CREATE_ASYMMETRIC_PUB_KEY - 860)) | (1L << (CREATE_DH_PARAMETERS - 860)) | (1L << (CREATE_DIGEST - 860)) | (1L << (CROSSES - 860)) | (1L << (DATEDIFF - 860)) | (1L << (DATE_FORMAT - 860)) | (1L << (DAYNAME - 860)) | (1L << (DAYOFMONTH - 860)) | (1L << (DAYOFWEEK - 860)) | (1L << (DAYOFYEAR - 860)) | (1L << (DECODE - 860)) | (1L << (DEGREES - 860)) | (1L << (DES_DECRYPT - 860)) | (1L << (DES_ENCRYPT - 860)) | (1L << (DIMENSION - 860)) | (1L << (DISJOINT - 860)) | (1L << (ELT - 860)) | (1L << (ENCODE - 860)) | (1L << (ENCRYPT - 860)) | (1L << (ENDPOINT - 860)) | (1L << (ENGINE_ATTRIBUTE - 860)) | (1L << (ENVELOPE - 860)) | (1L << (EQUALS - 860)) | (1L << (EXP - 860)) | (1L << (EXPORT_SET - 860)) | (1L << (EXTERIORRING - 860)) | (1L << (EXTRACTVALUE - 860)) | (1L << (FIELD - 860)) | (1L << (FIND_IN_SET - 860)) | (1L << (FLOOR - 860)) | (1L << (FORMAT - 860)) | (1L << (FOUND_ROWS - 860)) | (1L << (FROM_BASE64 - 860)) | (1L << (FROM_DAYS - 860)) | (1L << (FROM_UNIXTIME - 860)) | (1L << (GEOMCOLLFROMTEXT - 860)) | (1L << (GEOMCOLLFROMWKB - 860)) | (1L << (GEOMETRYCOLLECTIONFROMTEXT - 860)) | (1L << (GEOMETRYCOLLECTIONFROMWKB - 860)) | (1L << (GEOMETRYFROMTEXT - 860)) | (1L << (GEOMETRYFROMWKB - 860)) | (1L << (GEOMETRYN - 860)) | (1L << (GEOMETRYTYPE - 860)) | (1L << (GEOMFROMTEXT - 860)) | (1L << (GEOMFROMWKB - 860)) | (1L << (GET_FORMAT - 860)) | (1L << (GET_LOCK - 860)) | (1L << (GLENGTH - 860)) | (1L << (GREATEST - 860)) | (1L << (GTID_SUBSET - 860)) | (1L << (GTID_SUBTRACT - 860)) | (1L << (HEX - 860)) | (1L << (IFNULL - 860)) | (1L << (INET6_ATON - 860)) | (1L << (INET6_NTOA - 860)) | (1L << (INET_ATON - 860)) | (1L << (INET_NTOA - 860)) | (1L << (INSTR - 860)) | (1L << (INTERIORRINGN - 860)) | (1L << (INTERSECTS - 860)) | (1L << (ISCLOSED - 860)))) != 0) || ((((_la - 924)) & ~0x3f) == 0 && ((1L << (_la - 924)) & ((1L << (ISEMPTY - 924)) | (1L << (ISNULL - 924)) | (1L << (ISSIMPLE - 924)) | (1L << (IS_FREE_LOCK - 924)) | (1L << (IS_IPV4 - 924)) | (1L << (IS_IPV4_COMPAT - 924)) | (1L << (IS_IPV4_MAPPED - 924)) | (1L << (IS_IPV6 - 924)) | (1L << (IS_USED_LOCK - 924)) | (1L << (LAST_INSERT_ID - 924)) | (1L << (LCASE - 924)) | (1L << (LEAST - 924)) | (1L << (LENGTH - 924)) | (1L << (LINEFROMTEXT - 924)) | (1L << (LINEFROMWKB - 924)) | (1L << (LINESTRINGFROMTEXT - 924)) | (1L << (LINESTRINGFROMWKB - 924)) | (1L << (LN - 924)) | (1L << (LOAD_FILE - 924)) | (1L << (LOCATE - 924)) | (1L << (LOG - 924)) | (1L << (LOG10 - 924)) | (1L << (LOG2 - 924)) | (1L << (LOWER - 924)) | (1L << (LPAD - 924)) | (1L << (LTRIM - 924)) | (1L << (MAKEDATE - 924)) | (1L << (MAKETIME - 924)) | (1L << (MAKE_SET - 924)) | (1L << (MASTER_POS_WAIT - 924)) | (1L << (MBRCONTAINS - 924)) | (1L << (MBRDISJOINT - 924)) | (1L << (MBREQUAL - 924)) | (1L << (MBRINTERSECTS - 924)) | (1L << (MBROVERLAPS - 924)) | (1L << (MBRTOUCHES - 924)) | (1L << (MBRWITHIN - 924)) | (1L << (MD5 - 924)) | (1L << (MLINEFROMTEXT - 924)) | (1L << (MLINEFROMWKB - 924)) | (1L << (MONTHNAME - 924)) | (1L << (MPOINTFROMTEXT - 924)) | (1L << (MPOINTFROMWKB - 924)) | (1L << (MPOLYFROMTEXT - 924)) | (1L << (MPOLYFROMWKB - 924)) | (1L << (MULTILINESTRINGFROMTEXT - 924)) | (1L << (MULTILINESTRINGFROMWKB - 924)) | (1L << (MULTIPOINTFROMTEXT - 924)) | (1L << (MULTIPOINTFROMWKB - 924)) | (1L << (MULTIPOLYGONFROMTEXT - 924)) | (1L << (MULTIPOLYGONFROMWKB - 924)) | (1L << (NAME_CONST - 924)) | (1L << (NULLIF - 924)) | (1L << (NUMGEOMETRIES - 924)) | (1L << (NUMINTERIORRINGS - 924)) | (1L << (NUMPOINTS - 924)) | (1L << (OCT - 924)) | (1L << (OCTET_LENGTH - 924)) | (1L << (ORD - 924)) | (1L << (OVERLAPS - 924)) | (1L << (PERIOD_ADD - 924)) | (1L << (PERIOD_DIFF - 924)) | (1L << (PI - 924)) | (1L << (POINTFROMTEXT - 924)))) != 0) || ((((_la - 988)) & ~0x3f) == 0 && ((1L << (_la - 988)) & ((1L << (POINTFROMWKB - 988)) | (1L << (POINTN - 988)) | (1L << (POLYFROMTEXT - 988)) | (1L << (POLYFROMWKB - 988)) | (1L << (POLYGONFROMTEXT - 988)) | (1L << (POLYGONFROMWKB - 988)) | (1L << (POW - 988)) | (1L << (POWER - 988)) | (1L << (QUOTE - 988)) | (1L << (RADIANS - 988)) | (1L << (RAND - 988)) | (1L << (RANDOM - 988)) | (1L << (RANDOM_BYTES - 988)) | (1L << (RELEASE_LOCK - 988)) | (1L << (REVERSE - 988)) | (1L << (ROUND - 988)) | (1L << (ROW_COUNT - 988)) | (1L << (RPAD - 988)) | (1L << (RTRIM - 988)) | (1L << (SEC_TO_TIME - 988)) | (1L << (SECONDARY_ENGINE_ATTRIBUTE - 988)) | (1L << (SENSITIVE_VARIABLES_OBSERVER - 988)) | (1L << (SESSION_USER - 988)) | (1L << (SHA - 988)) | (1L << (SHA1 - 988)) | (1L << (SHA2 - 988)) | (1L << (SCHEMA_NAME - 988)) | (1L << (SIGN - 988)) | (1L << (SIN - 988)) | (1L << (SLEEP - 988)) | (1L << (SOUNDEX - 988)) | (1L << (SQL_THREAD_WAIT_AFTER_GTIDS - 988)) | (1L << (SQRT - 988)) | (1L << (SRID - 988)) | (1L << (STARTPOINT - 988)) | (1L << (STRCMP - 988)) | (1L << (STR_TO_DATE - 988)) | (1L << (ST_AREA - 988)) | (1L << (ST_ASBINARY - 988)) | (1L << (ST_ASTEXT - 988)) | (1L << (ST_ASWKB - 988)) | (1L << (ST_ASWKT - 988)) | (1L << (ST_BUFFER - 988)) | (1L << (ST_CENTROID - 988)) | (1L << (ST_CONTAINS - 988)) | (1L << (ST_CROSSES - 988)) | (1L << (ST_DIFFERENCE - 988)) | (1L << (ST_DIMENSION - 988)) | (1L << (ST_DISJOINT - 988)) | (1L << (ST_DISTANCE - 988)) | (1L << (ST_ENDPOINT - 988)) | (1L << (ST_ENVELOPE - 988)) | (1L << (ST_EQUALS - 988)) | (1L << (ST_EXTERIORRING - 988)) | (1L << (ST_GEOMCOLLFROMTEXT - 988)) | (1L << (ST_GEOMCOLLFROMTXT - 988)) | (1L << (ST_GEOMCOLLFROMWKB - 988)) | (1L << (ST_GEOMETRYCOLLECTIONFROMTEXT - 988)) | (1L << (ST_GEOMETRYCOLLECTIONFROMWKB - 988)) | (1L << (ST_GEOMETRYFROMTEXT - 988)) | (1L << (ST_GEOMETRYFROMWKB - 988)) | (1L << (ST_GEOMETRYN - 988)) | (1L << (ST_GEOMETRYTYPE - 988)) | (1L << (ST_GEOMFROMTEXT - 988)))) != 0) || ((((_la - 1052)) & ~0x3f) == 0 && ((1L << (_la - 1052)) & ((1L << (ST_GEOMFROMWKB - 1052)) | (1L << (ST_INTERIORRINGN - 1052)) | (1L << (ST_INTERSECTION - 1052)) | (1L << (ST_INTERSECTS - 1052)) | (1L << (ST_ISCLOSED - 1052)) | (1L << (ST_ISEMPTY - 1052)) | (1L << (ST_ISSIMPLE - 1052)) | (1L << (ST_LINEFROMTEXT - 1052)) | (1L << (ST_LINEFROMWKB - 1052)) | (1L << (ST_LINESTRINGFROMTEXT - 1052)) | (1L << (ST_LINESTRINGFROMWKB - 1052)) | (1L << (ST_NUMGEOMETRIES - 1052)) | (1L << (ST_NUMINTERIORRING - 1052)) | (1L << (ST_NUMINTERIORRINGS - 1052)) | (1L << (ST_NUMPOINTS - 1052)) | (1L << (ST_OVERLAPS - 1052)) | (1L << (ST_POINTFROMTEXT - 1052)) | (1L << (ST_POINTFROMWKB - 1052)) | (1L << (ST_POINTN - 1052)) | (1L << (ST_POLYFROMTEXT - 1052)) | (1L << (ST_POLYFROMWKB - 1052)) | (1L << (ST_POLYGONFROMTEXT - 1052)) | (1L << (ST_POLYGONFROMWKB - 1052)) | (1L << (ST_SRID - 1052)) | (1L << (ST_STARTPOINT - 1052)) | (1L << (ST_SYMDIFFERENCE - 1052)) | (1L << (ST_TOUCHES - 1052)) | (1L << (ST_UNION - 1052)) | (1L << (ST_WITHIN - 1052)) | (1L << (ST_X - 1052)) | (1L << (ST_Y - 1052)) | (1L << (SUBDATE - 1052)) | (1L << (SUBSTRING_INDEX - 1052)) | (1L << (SUBTIME - 1052)) | (1L << (SYSTEM_USER - 1052)) | (1L << (SYSTEM - 1052)) | (1L << (TAN - 1052)) | (1L << (TELEMETRY_LOG_ADMIN - 1052)) | (1L << (TIMEDIFF - 1052)) | (1L << (TIMESTAMPADD - 1052)) | (1L << (TIMESTAMPDIFF - 1052)) | (1L << (TIME_FORMAT - 1052)) | (1L << (TIME_TO_SEC - 1052)) | (1L << (TOUCHES - 1052)) | (1L << (TO_BASE64 - 1052)) | (1L << (TO_DAYS - 1052)) | (1L << (TO_SECONDS - 1052)) | (1L << (TP_CONNECTION_ADMIN - 1052)) | (1L << (UCASE - 1052)) | (1L << (UNCOMPRESS - 1052)) | (1L << (UNCOMPRESSED_LENGTH - 1052)) | (1L << (UNHEX - 1052)) | (1L << (UNIX_TIMESTAMP - 1052)) | (1L << (UPDATEXML - 1052)) | (1L << (UPPER - 1052)) | (1L << (UUID - 1052)) | (1L << (UUID_SHORT - 1052)) | (1L << (VALIDATE_PASSWORD_STRENGTH - 1052)) | (1L << (VERSION - 1052)) | (1L << (VERSIONING - 1052)) | (1L << (WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS - 1052)) | (1L << (WEEKDAY - 1052)) | (1L << (WEEKOFYEAR - 1052)) | (1L << (WEIGHT_STRING - 1052)))) != 0) || ((((_la - 1116)) & ~0x3f) == 0 && ((1L << (_la - 1116)) & ((1L << (WITHIN - 1116)) | (1L << (YEARWEEK - 1116)) | (1L << (Y_FUNCTION - 1116)) | (1L << (X_FUNCTION - 1116)) | (1L << (VIA - 1116)) | (1L << (LASTVAL - 1116)) | (1L << (NEXTVAL - 1116)) | (1L << (SETVAL - 1116)) | (1L << (PREVIOUS - 1116)) | (1L << (PERSISTENT - 1116)) | (1L << (BINLOG_MONITOR - 1116)) | (1L << (BINLOG_REPLAY - 1116)) | (1L << (FEDERATED_ADMIN - 1116)) | (1L << (READ_ONLY_ADMIN - 1116)) | (1L << (REPLICA - 1116)) | (1L << (REPLICATION_MASTER_ADMIN - 1116)) | (1L << (MONITOR - 1116)) | (1L << (READ_ONLY - 1116)) | (1L << (REPLAY - 1116)) | (1L << (MOD - 1116)) | (1L << (CHARSET_REVERSE_QOUTE_STRING - 1116)) | (1L << (STRING_LITERAL - 1116)))) != 0) || _la==ID) {
				{
				setState(1131);
				functionParameter();
				}
			}

			setState(1138);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(1134);
				match(COMMA);
				setState(1135);
				functionParameter();
				}
				}
				setState(1140);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(1141);
			match(RR_BRACKET);
			setState(1142);
			match(RETURNS);
			setState(1143);
			dataType();
			setState(1147);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,62,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					{
					{
					setState(1144);
					routineOption();
					}
					} 
				}
				setState(1149);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,62,_ctx);
			}
			setState(1152);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case ALTER:
			case ANALYZE:
			case ARRAY:
			case ATTRIBUTE:
			case BUCKETS:
			case CALL:
			case CHANGE:
			case CHECK:
			case CONDITION:
			case CREATE:
			case CURRENT:
			case CURRENT_ROLE:
			case CURRENT_USER:
			case DATABASE:
			case DEFAULT:
			case DELETE:
			case DESC:
			case DESCRIBE:
			case DIAGNOSTICS:
			case DROP:
			case EMPTY:
			case ENFORCED:
			case EXCEPT:
			case EXPLAIN:
			case GET:
			case GRANT:
			case GROUP:
			case GROUP_REPLICATION_STREAM:
			case IF:
			case IGNORED:
			case INSERT:
			case KILL:
			case LATERAL:
			case LEFT:
			case LOAD:
			case LOCK:
			case LOCKED:
			case MAXVALUE:
			case MINVALUE:
			case NUMBER:
			case OPTIMIZE:
			case OPTIONAL:
			case ORDER:
			case PRIMARY:
			case PURGE:
			case RELEASE:
			case RENAME:
			case REPEAT:
			case REPLACE:
			case RESIGNAL:
			case REVOKE:
			case RIGHT:
			case SCHEMA:
			case SELECT:
			case SET:
			case SHOW:
			case SIGNAL:
			case SKIP_:
			case SKIP_QUERY_REWRITE:
			case STACKED:
			case STATEMENT:
			case TABLE:
			case UNLOCK:
			case UPDATE:
			case USE:
			case VALUES:
			case WITH:
			case DATE:
			case TIME:
			case TIMESTAMP:
			case DATETIME:
			case YEAR:
			case NATIONAL:
			case BINARY:
			case TEXT:
			case ENUM:
			case SERIAL:
			case JSON_ARRAY:
			case JSON_ARRAYAGG:
			case JSON_ARRAY_APPEND:
			case JSON_ARRAY_INSERT:
			case JSON_CONTAINS:
			case JSON_CONTAINS_PATH:
			case JSON_DEPTH:
			case JSON_EXTRACT:
			case JSON_INSERT:
			case JSON_KEYS:
			case JSON_LENGTH:
			case JSON_MERGE:
			case JSON_MERGE_PATCH:
			case JSON_MERGE_PRESERVE:
			case JSON_OBJECT:
			case JSON_OBJECTAGG:
			case JSON_OVERLAPS:
			case JSON_PRETTY:
			case JSON_QUOTE:
			case JSON_REMOVE:
			case JSON_REPLACE:
			case JSON_SCHEMA_VALID:
			case JSON_SCHEMA_VALIDATION_REPORT:
			case JSON_SEARCH:
			case JSON_SET:
			case JSON_STORAGE_FREE:
			case JSON_STORAGE_SIZE:
			case JSON_TABLE:
			case JSON_TYPE:
			case JSON_UNQUOTE:
			case JSON_VALID:
			case JSON_VALUE:
			case NESTED:
			case ORDINALITY:
			case PATH:
			case AVG:
			case BIT_AND:
			case BIT_OR:
			case BIT_XOR:
			case COUNT:
			case CUME_DIST:
			case DENSE_RANK:
			case FIRST_VALUE:
			case GROUP_CONCAT:
			case LAG:
			case LAST_VALUE:
			case LEAD:
			case MAX:
			case MIN:
			case NTILE:
			case NTH_VALUE:
			case PERCENT_RANK:
			case RANK:
			case ROW_NUMBER:
			case STD:
			case STDDEV:
			case STDDEV_POP:
			case STDDEV_SAMP:
			case SUM:
			case VAR_POP:
			case VAR_SAMP:
			case VARIANCE:
			case CURRENT_DATE:
			case CURRENT_TIME:
			case CURRENT_TIMESTAMP:
			case LOCALTIME:
			case CURDATE:
			case CURTIME:
			case DATE_ADD:
			case DATE_SUB:
			case LOCALTIMESTAMP:
			case NOW:
			case POSITION:
			case SUBSTR:
			case SUBSTRING:
			case SYSDATE:
			case TRIM:
			case UTC_DATE:
			case UTC_TIME:
			case UTC_TIMESTAMP:
			case ACCOUNT:
			case ACTION:
			case AFTER:
			case AGGREGATE:
			case ALGORITHM:
			case ANY:
			case AT:
			case AUTHORS:
			case AUTOCOMMIT:
			case AUTOEXTEND_SIZE:
			case AUTO_INCREMENT:
			case AVG_ROW_LENGTH:
			case BEGIN:
			case BINLOG:
			case BIT:
			case BLOCK:
			case BOOL:
			case BOOLEAN:
			case BTREE:
			case CACHE:
			case CASCADED:
			case CHAIN:
			case CHANGED:
			case CHANNEL:
			case CHECKSUM:
			case PAGE_CHECKSUM:
			case CIPHER:
			case CLASS_ORIGIN:
			case CLIENT:
			case CLOSE:
			case CLUSTERING:
			case COALESCE:
			case CODE:
			case COLUMNS:
			case COLUMN_FORMAT:
			case COLUMN_NAME:
			case COMMENT:
			case COMMIT:
			case COMPACT:
			case COMPLETION:
			case COMPRESSED:
			case COMPRESSION:
			case CONCURRENT:
			case CONNECT:
			case CONNECTION:
			case CONSISTENT:
			case CONSTRAINT_CATALOG:
			case CONSTRAINT_SCHEMA:
			case CONSTRAINT_NAME:
			case CONTAINS:
			case CONTEXT:
			case CONTRIBUTORS:
			case COPY:
			case CPU:
			case CYCLE:
			case CURSOR_NAME:
			case DATA:
			case DATAFILE:
			case DEALLOCATE:
			case DEFAULT_AUTH:
			case DEFINER:
			case DELAY_KEY_WRITE:
			case DES_KEY_FILE:
			case DIRECTORY:
			case DISABLE:
			case DISCARD:
			case DISK:
			case DO:
			case DUMPFILE:
			case DUPLICATE:
			case DYNAMIC:
			case ENABLE:
			case ENCRYPTED:
			case ENCRYPTION:
			case ENCRYPTION_KEY_ID:
			case END:
			case ENDS:
			case ENGINE:
			case ENGINES:
			case ERROR:
			case ERRORS:
			case ESCAPE:
			case EVEN:
			case EVENT:
			case EVENTS:
			case EVERY:
			case EXCHANGE:
			case EXCLUSIVE:
			case EXPIRE:
			case EXPORT:
			case EXTENDED:
			case EXTENT_SIZE:
			case FAILED_LOGIN_ATTEMPTS:
			case FAST:
			case FAULTS:
			case FIELDS:
			case FILE_BLOCK_SIZE:
			case FILTER:
			case FIRST:
			case FIXED:
			case FLUSH:
			case FOLLOWS:
			case FOUND:
			case FULL:
			case FUNCTION:
			case GENERAL:
			case GLOBAL:
			case GRANTS:
			case GROUP_REPLICATION:
			case HANDLER:
			case HASH:
			case HELP:
			case HISTORY:
			case HOST:
			case HOSTS:
			case IDENTIFIED:
			case IGNORE_SERVER_IDS:
			case IMPORT:
			case INCREMENT:
			case INDEXES:
			case INITIAL_SIZE:
			case INPLACE:
			case INSERT_METHOD:
			case INSTALL:
			case INSTANCE:
			case INSTANT:
			case INVISIBLE:
			case INVOKER:
			case IO:
			case IO_THREAD:
			case IPC:
			case ISOLATION:
			case ISSUER:
			case JSON:
			case KEY_BLOCK_SIZE:
			case LANGUAGE:
			case LAST:
			case LEAVES:
			case LESS:
			case LEVEL:
			case LIST:
			case LOCAL:
			case LOGFILE:
			case LOGS:
			case MASTER:
			case MASTER_AUTO_POSITION:
			case MASTER_CONNECT_RETRY:
			case MASTER_DELAY:
			case MASTER_HEARTBEAT_PERIOD:
			case MASTER_HOST:
			case MASTER_LOG_FILE:
			case MASTER_LOG_POS:
			case MASTER_PASSWORD:
			case MASTER_PORT:
			case MASTER_RETRY_COUNT:
			case MASTER_SSL:
			case MASTER_SSL_CA:
			case MASTER_SSL_CAPATH:
			case MASTER_SSL_CERT:
			case MASTER_SSL_CIPHER:
			case MASTER_SSL_CRL:
			case MASTER_SSL_CRLPATH:
			case MASTER_SSL_KEY:
			case MASTER_TLS_VERSION:
			case MASTER_USER:
			case MAX_CONNECTIONS_PER_HOUR:
			case MAX_QUERIES_PER_HOUR:
			case MAX_ROWS:
			case MAX_SIZE:
			case MAX_UPDATES_PER_HOUR:
			case MAX_USER_CONNECTIONS:
			case MEDIUM:
			case MEMBER:
			case MERGE:
			case MESSAGE_TEXT:
			case MID:
			case MIGRATE:
			case MIN_ROWS:
			case MODE:
			case MODIFY:
			case MUTEX:
			case MYSQL:
			case MYSQL_ERRNO:
			case NAME:
			case NAMES:
			case NCHAR:
			case NEVER:
			case NEXT:
			case NO:
			case NOCACHE:
			case NOCOPY:
			case NOCYCLE:
			case NOMAXVALUE:
			case NOMINVALUE:
			case NOWAIT:
			case NODEGROUP:
			case NONE:
			case ODBC:
			case OFFLINE:
			case OFFSET:
			case OF:
			case OJ:
			case OLD_PASSWORD:
			case ONE:
			case ONLINE:
			case ONLY:
			case OPEN:
			case OPTIMIZER_COSTS:
			case OPTIONS:
			case OWNER:
			case PACK_KEYS:
			case PAGE:
			case PARSER:
			case PARTIAL:
			case PARTITIONING:
			case PARTITIONS:
			case PASSWORD:
			case PASSWORD_LOCK_TIME:
			case PHASE:
			case PLUGIN:
			case PLUGIN_DIR:
			case PLUGINS:
			case PORT:
			case PRECEDES:
			case PREPARE:
			case PRESERVE:
			case PREV:
			case PROCESSLIST:
			case PROFILE:
			case PROFILES:
			case PROXY:
			case QUERY:
			case QUICK:
			case REBUILD:
			case RECOVER:
			case RECURSIVE:
			case REDO_BUFFER_SIZE:
			case REDUNDANT:
			case RELAY:
			case RELAY_LOG_FILE:
			case RELAY_LOG_POS:
			case RELAYLOG:
			case REMOVE:
			case REORGANIZE:
			case REPAIR:
			case REPLICATE_DO_DB:
			case REPLICATE_DO_TABLE:
			case REPLICATE_IGNORE_DB:
			case REPLICATE_IGNORE_TABLE:
			case REPLICATE_REWRITE_DB:
			case REPLICATE_WILD_DO_TABLE:
			case REPLICATE_WILD_IGNORE_TABLE:
			case REPLICATION:
			case RESET:
			case RESTART:
			case RESUME:
			case RETURNED_SQLSTATE:
			case RETURNING:
			case RETURNS:
			case REUSE:
			case ROLE:
			case ROLLBACK:
			case ROLLUP:
			case ROTATE:
			case ROW:
			case ROWS:
			case ROW_FORMAT:
			case RTREE:
			case SAVEPOINT:
			case SCHEDULE:
			case SECURITY:
			case SEQUENCE:
			case SERVER:
			case SESSION:
			case SHARE:
			case SHARED:
			case SIGNED:
			case SIMPLE:
			case SLAVE:
			case SLOW:
			case SNAPSHOT:
			case SOCKET:
			case SOME:
			case SONAME:
			case SOUNDS:
			case SOURCE:
			case SQL_AFTER_GTIDS:
			case SQL_AFTER_MTS_GAPS:
			case SQL_BEFORE_GTIDS:
			case SQL_BUFFER_RESULT:
			case SQL_CACHE:
			case SQL_NO_CACHE:
			case SQL_THREAD:
			case START:
			case STARTS:
			case STATS_AUTO_RECALC:
			case STATS_PERSISTENT:
			case STATS_SAMPLE_PAGES:
			case STATUS:
			case STOP:
			case STORAGE:
			case STRING:
			case SUBCLASS_ORIGIN:
			case SUBJECT:
			case SUBPARTITION:
			case SUBPARTITIONS:
			case SUSPEND:
			case SWAPS:
			case SWITCHES:
			case TABLE_NAME:
			case TABLESPACE:
			case TABLE_TYPE:
			case TEMPORARY:
			case TEMPTABLE:
			case THAN:
			case TRADITIONAL:
			case TRANSACTION:
			case TRANSACTIONAL:
			case TRIGGERS:
			case TRUNCATE:
			case UNBOUNDED:
			case UNDEFINED:
			case UNDOFILE:
			case UNDO_BUFFER_SIZE:
			case UNINSTALL:
			case UNKNOWN:
			case UNTIL:
			case UPGRADE:
			case USER:
			case USE_FRM:
			case USER_RESOURCES:
			case VALIDATION:
			case VALUE:
			case VARIABLES:
			case VIEW:
			case VIRTUAL:
			case VISIBLE:
			case WAIT:
			case WARNINGS:
			case WITHOUT:
			case WORK:
			case WRAPPER:
			case X509:
			case XA:
			case XML:
			case YES:
			case EUR:
			case USA:
			case JIS:
			case ISO:
			case INTERNAL:
			case QUARTER:
			case MONTH:
			case DAY:
			case HOUR:
			case MINUTE:
			case WEEK:
			case SECOND:
			case MICROSECOND:
			case USER_STATISTICS:
			case CLIENT_STATISTICS:
			case INDEX_STATISTICS:
			case TABLE_STATISTICS:
			case FIREWALL_RULES:
			case ADMIN:
			case APPLICATION_PASSWORD_ADMIN:
			case AUDIT_ADMIN:
			case AUDIT_ABORT_EXEMPT:
			case AUTHENTICATION_POLICY_ADMIN:
			case BACKUP_ADMIN:
			case BINLOG_ADMIN:
			case BINLOG_ENCRYPTION_ADMIN:
			case CLONE_ADMIN:
			case CONNECTION_ADMIN:
			case ENCRYPTION_KEY_ADMIN:
			case EXECUTE:
			case FILE:
			case FIREWALL_ADMIN:
			case FIREWALL_EXEMPT:
			case FIREWALL_USER:
			case FLUSH_OPTIMIZER_COSTS:
			case FLUSH_STATUS:
			case FLUSH_TABLES:
			case FLUSH_USER_RESOURCES:
			case GROUP_REPLICATION_ADMIN:
			case INNODB_REDO_LOG_ARCHIVE:
			case INNODB_REDO_LOG_ENABLE:
			case INVOKE:
			case LAMBDA:
			case NDB_STORED_USER:
			case PASSWORDLESS_USER_ADMIN:
			case PERSIST_RO_VARIABLES_ADMIN:
			case PRIVILEGES:
			case PROCESS:
			case RELOAD:
			case REPLICATION_APPLIER:
			case REPLICATION_SLAVE_ADMIN:
			case RESOURCE_GROUP_ADMIN:
			case RESOURCE_GROUP_USER:
			case ROLE_ADMIN:
			case ROUTINE:
			case S3:
			case SESSION_VARIABLES_ADMIN:
			case SET_USER_ID:
			case SHOW_ROUTINE:
			case SHUTDOWN:
			case SUPER:
			case SYSTEM_VARIABLES_ADMIN:
			case TABLES:
			case TABLE_ENCRYPTION_ADMIN:
			case VERSION_TOKEN_ADMIN:
			case XA_RECOVER_ADMIN:
			case ARMSCII8:
			case ASCII:
			case BIG5:
			case CP1250:
			case CP1251:
			case CP1256:
			case CP1257:
			case CP850:
			case CP852:
			case CP866:
			case CP932:
			case DEC8:
			case EUCJPMS:
			case EUCKR:
			case GB18030:
			case GB2312:
			case GBK:
			case GEOSTD8:
			case GREEK:
			case HEBREW:
			case HP8:
			case KEYBCS2:
			case KOI8R:
			case KOI8U:
			case LATIN1:
			case LATIN2:
			case LATIN5:
			case LATIN7:
			case MACCE:
			case MACROMAN:
			case SJIS:
			case SWE7:
			case TIS620:
			case UCS2:
			case UJIS:
			case UTF16:
			case UTF16LE:
			case UTF32:
			case UTF8:
			case UTF8MB3:
			case UTF8MB4:
			case ARCHIVE:
			case BLACKHOLE:
			case CSV:
			case FEDERATED:
			case INNODB:
			case MEMORY:
			case MRG_MYISAM:
			case MYISAM:
			case NDB:
			case NDBCLUSTER:
			case PERFORMANCE_SCHEMA:
			case TOKUDB:
			case REPEATABLE:
			case COMMITTED:
			case UNCOMMITTED:
			case SERIALIZABLE:
			case GEOMETRYCOLLECTION:
			case GEOMETRY:
			case LINESTRING:
			case MULTILINESTRING:
			case MULTIPOINT:
			case MULTIPOLYGON:
			case POINT:
			case POLYGON:
			case ABS:
			case ACOS:
			case ADDDATE:
			case ADDTIME:
			case AES_DECRYPT:
			case AES_ENCRYPT:
			case AREA:
			case ASBINARY:
			case ASIN:
			case ASTEXT:
			case ASWKB:
			case ASWKT:
			case ASYMMETRIC_DECRYPT:
			case ASYMMETRIC_DERIVE:
			case ASYMMETRIC_ENCRYPT:
			case ASYMMETRIC_SIGN:
			case ASYMMETRIC_VERIFY:
			case ATAN:
			case ATAN2:
			case BENCHMARK:
			case BIN:
			case BIT_COUNT:
			case BIT_LENGTH:
			case BUFFER:
			case CATALOG_NAME:
			case CEIL:
			case CEILING:
			case CENTROID:
			case CHARACTER_LENGTH:
			case CHARSET:
			case CHAR_LENGTH:
			case COERCIBILITY:
			case COLLATION:
			case COMPRESS:
			case CONCAT:
			case CONCAT_WS:
			case CONNECTION_ID:
			case CONV:
			case CONVERT_TZ:
			case COS:
			case COT:
			case CRC32:
			case CREATE_ASYMMETRIC_PRIV_KEY:
			case CREATE_ASYMMETRIC_PUB_KEY:
			case CREATE_DH_PARAMETERS:
			case CREATE_DIGEST:
			case CROSSES:
			case DATEDIFF:
			case DATE_FORMAT:
			case DAYNAME:
			case DAYOFMONTH:
			case DAYOFWEEK:
			case DAYOFYEAR:
			case DECODE:
			case DEGREES:
			case DES_DECRYPT:
			case DES_ENCRYPT:
			case DIMENSION:
			case DISJOINT:
			case ELT:
			case ENCODE:
			case ENCRYPT:
			case ENDPOINT:
			case ENGINE_ATTRIBUTE:
			case ENVELOPE:
			case EQUALS:
			case EXP:
			case EXPORT_SET:
			case EXTERIORRING:
			case EXTRACTVALUE:
			case FIELD:
			case FIND_IN_SET:
			case FLOOR:
			case FORMAT:
			case FOUND_ROWS:
			case FROM_BASE64:
			case FROM_DAYS:
			case FROM_UNIXTIME:
			case GEOMCOLLFROMTEXT:
			case GEOMCOLLFROMWKB:
			case GEOMETRYCOLLECTIONFROMTEXT:
			case GEOMETRYCOLLECTIONFROMWKB:
			case GEOMETRYFROMTEXT:
			case GEOMETRYFROMWKB:
			case GEOMETRYN:
			case GEOMETRYTYPE:
			case GEOMFROMTEXT:
			case GEOMFROMWKB:
			case GET_FORMAT:
			case GET_LOCK:
			case GLENGTH:
			case GREATEST:
			case GTID_SUBSET:
			case GTID_SUBTRACT:
			case HEX:
			case IFNULL:
			case INET6_ATON:
			case INET6_NTOA:
			case INET_ATON:
			case INET_NTOA:
			case INSTR:
			case INTERIORRINGN:
			case INTERSECTS:
			case ISCLOSED:
			case ISEMPTY:
			case ISNULL:
			case ISSIMPLE:
			case IS_FREE_LOCK:
			case IS_IPV4:
			case IS_IPV4_COMPAT:
			case IS_IPV4_MAPPED:
			case IS_IPV6:
			case IS_USED_LOCK:
			case LAST_INSERT_ID:
			case LCASE:
			case LEAST:
			case LENGTH:
			case LINEFROMTEXT:
			case LINEFROMWKB:
			case LINESTRINGFROMTEXT:
			case LINESTRINGFROMWKB:
			case LN:
			case LOAD_FILE:
			case LOCATE:
			case LOG:
			case LOG10:
			case LOG2:
			case LOWER:
			case LPAD:
			case LTRIM:
			case MAKEDATE:
			case MAKETIME:
			case MAKE_SET:
			case MASTER_POS_WAIT:
			case MBRCONTAINS:
			case MBRDISJOINT:
			case MBREQUAL:
			case MBRINTERSECTS:
			case MBROVERLAPS:
			case MBRTOUCHES:
			case MBRWITHIN:
			case MD5:
			case MLINEFROMTEXT:
			case MLINEFROMWKB:
			case MONTHNAME:
			case MPOINTFROMTEXT:
			case MPOINTFROMWKB:
			case MPOLYFROMTEXT:
			case MPOLYFROMWKB:
			case MULTILINESTRINGFROMTEXT:
			case MULTILINESTRINGFROMWKB:
			case MULTIPOINTFROMTEXT:
			case MULTIPOINTFROMWKB:
			case MULTIPOLYGONFROMTEXT:
			case MULTIPOLYGONFROMWKB:
			case NAME_CONST:
			case NULLIF:
			case NUMGEOMETRIES:
			case NUMINTERIORRINGS:
			case NUMPOINTS:
			case OCT:
			case OCTET_LENGTH:
			case ORD:
			case OVERLAPS:
			case PERIOD_ADD:
			case PERIOD_DIFF:
			case PI:
			case POINTFROMTEXT:
			case POINTFROMWKB:
			case POINTN:
			case POLYFROMTEXT:
			case POLYFROMWKB:
			case POLYGONFROMTEXT:
			case POLYGONFROMWKB:
			case POW:
			case POWER:
			case QUOTE:
			case RADIANS:
			case RAND:
			case RANDOM:
			case RANDOM_BYTES:
			case RELEASE_LOCK:
			case REVERSE:
			case ROUND:
			case ROW_COUNT:
			case RPAD:
			case RTRIM:
			case SEC_TO_TIME:
			case SECONDARY_ENGINE_ATTRIBUTE:
			case SENSITIVE_VARIABLES_OBSERVER:
			case SESSION_USER:
			case SHA:
			case SHA1:
			case SHA2:
			case SCHEMA_NAME:
			case SIGN:
			case SIN:
			case SLEEP:
			case SOUNDEX:
			case SQL_THREAD_WAIT_AFTER_GTIDS:
			case SQRT:
			case SRID:
			case STARTPOINT:
			case STRCMP:
			case STR_TO_DATE:
			case ST_AREA:
			case ST_ASBINARY:
			case ST_ASTEXT:
			case ST_ASWKB:
			case ST_ASWKT:
			case ST_BUFFER:
			case ST_CENTROID:
			case ST_CONTAINS:
			case ST_CROSSES:
			case ST_DIFFERENCE:
			case ST_DIMENSION:
			case ST_DISJOINT:
			case ST_DISTANCE:
			case ST_ENDPOINT:
			case ST_ENVELOPE:
			case ST_EQUALS:
			case ST_EXTERIORRING:
			case ST_GEOMCOLLFROMTEXT:
			case ST_GEOMCOLLFROMTXT:
			case ST_GEOMCOLLFROMWKB:
			case ST_GEOMETRYCOLLECTIONFROMTEXT:
			case ST_GEOMETRYCOLLECTIONFROMWKB:
			case ST_GEOMETRYFROMTEXT:
			case ST_GEOMETRYFROMWKB:
			case ST_GEOMETRYN:
			case ST_GEOMETRYTYPE:
			case ST_GEOMFROMTEXT:
			case ST_GEOMFROMWKB:
			case ST_INTERIORRINGN:
			case ST_INTERSECTION:
			case ST_INTERSECTS:
			case ST_ISCLOSED:
			case ST_ISEMPTY:
			case ST_ISSIMPLE:
			case ST_LINEFROMTEXT:
			case ST_LINEFROMWKB:
			case ST_LINESTRINGFROMTEXT:
			case ST_LINESTRINGFROMWKB:
			case ST_NUMGEOMETRIES:
			case ST_NUMINTERIORRING:
			case ST_NUMINTERIORRINGS:
			case ST_NUMPOINTS:
			case ST_OVERLAPS:
			case ST_POINTFROMTEXT:
			case ST_POINTFROMWKB:
			case ST_POINTN:
			case ST_POLYFROMTEXT:
			case ST_POLYFROMWKB:
			case ST_POLYGONFROMTEXT:
			case ST_POLYGONFROMWKB:
			case ST_SRID:
			case ST_STARTPOINT:
			case ST_SYMDIFFERENCE:
			case ST_TOUCHES:
			case ST_UNION:
			case ST_WITHIN:
			case ST_X:
			case ST_Y:
			case SUBDATE:
			case SUBSTRING_INDEX:
			case SUBTIME:
			case SYSTEM_USER:
			case SYSTEM:
			case TAN:
			case TELEMETRY_LOG_ADMIN:
			case TIMEDIFF:
			case TIMESTAMPADD:
			case TIMESTAMPDIFF:
			case TIME_FORMAT:
			case TIME_TO_SEC:
			case TOUCHES:
			case TO_BASE64:
			case TO_DAYS:
			case TO_SECONDS:
			case TP_CONNECTION_ADMIN:
			case UCASE:
			case UNCOMPRESS:
			case UNCOMPRESSED_LENGTH:
			case UNHEX:
			case UNIX_TIMESTAMP:
			case UPDATEXML:
			case UPPER:
			case UUID:
			case UUID_SHORT:
			case VALIDATE_PASSWORD_STRENGTH:
			case VERSION:
			case VERSIONING:
			case WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS:
			case WEEKDAY:
			case WEEKOFYEAR:
			case WEIGHT_STRING:
			case WITHIN:
			case YEARWEEK:
			case Y_FUNCTION:
			case X_FUNCTION:
			case VIA:
			case LASTVAL:
			case NEXTVAL:
			case SETVAL:
			case PREVIOUS:
			case PERSISTENT:
			case BINLOG_MONITOR:
			case BINLOG_REPLAY:
			case FEDERATED_ADMIN:
			case READ_ONLY_ADMIN:
			case REPLICA:
			case REPLICATION_MASTER_ADMIN:
			case MONITOR:
			case READ_ONLY:
			case REPLAY:
			case MOD:
			case LR_BRACKET:
			case CHARSET_REVERSE_QOUTE_STRING:
			case STRING_LITERAL:
			case ID:
				{
				setState(1150);
				routineBody();
				}
				break;
			case RETURN:
				{
				setState(1151);
				returnStatement();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateRoleContext extends ParserRuleContext {
		public TerminalNode CREATE() { return getToken(MySqlParser.CREATE, 0); }
		public TerminalNode ROLE() { return getToken(MySqlParser.ROLE, 0); }
		public List roleName() {
			return getRuleContexts(RoleNameContext.class);
		}
		public RoleNameContext roleName(int i) {
			return getRuleContext(RoleNameContext.class,i);
		}
		public IfNotExistsContext ifNotExists() {
			return getRuleContext(IfNotExistsContext.class,0);
		}
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public CreateRoleContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createRole; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCreateRole(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCreateRole(this);
		}
	}

	public final CreateRoleContext createRole() throws RecognitionException {
		CreateRoleContext _localctx = new CreateRoleContext(_ctx, getState());
		enterRule(_localctx, 38, RULE_createRole);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1154);
			match(CREATE);
			setState(1155);
			match(ROLE);
			setState(1157);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,64,_ctx) ) {
			case 1:
				{
				setState(1156);
				ifNotExists();
				}
				break;
			}
			setState(1159);
			roleName();
			setState(1164);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(1160);
				match(COMMA);
				setState(1161);
				roleName();
				}
				}
				setState(1166);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateServerContext extends ParserRuleContext {
		public Token wrapperName;
		public TerminalNode CREATE() { return getToken(MySqlParser.CREATE, 0); }
		public TerminalNode SERVER() { return getToken(MySqlParser.SERVER, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode FOREIGN() { return getToken(MySqlParser.FOREIGN, 0); }
		public TerminalNode DATA() { return getToken(MySqlParser.DATA, 0); }
		public TerminalNode WRAPPER() { return getToken(MySqlParser.WRAPPER, 0); }
		public TerminalNode OPTIONS() { return getToken(MySqlParser.OPTIONS, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public List serverOption() {
			return getRuleContexts(ServerOptionContext.class);
		}
		public ServerOptionContext serverOption(int i) {
			return getRuleContext(ServerOptionContext.class,i);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TerminalNode MYSQL() { return getToken(MySqlParser.MYSQL, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public CreateServerContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createServer; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCreateServer(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCreateServer(this);
		}
	}

	public final CreateServerContext createServer() throws RecognitionException {
		CreateServerContext _localctx = new CreateServerContext(_ctx, getState());
		enterRule(_localctx, 40, RULE_createServer);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1167);
			match(CREATE);
			setState(1168);
			match(SERVER);
			setState(1169);
			uid();
			setState(1170);
			match(FOREIGN);
			setState(1171);
			match(DATA);
			setState(1172);
			match(WRAPPER);
			setState(1173);
			((CreateServerContext)_localctx).wrapperName = _input.LT(1);
			_la = _input.LA(1);
			if ( !(_la==MYSQL || _la==STRING_LITERAL) ) {
				((CreateServerContext)_localctx).wrapperName = (Token)_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(1174);
			match(OPTIONS);
			setState(1175);
			match(LR_BRACKET);
			setState(1176);
			serverOption();
			setState(1181);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(1177);
				match(COMMA);
				setState(1178);
				serverOption();
				}
				}
				setState(1183);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(1184);
			match(RR_BRACKET);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateTableContext extends ParserRuleContext {
		public CreateTableContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createTable; }
	 
		public CreateTableContext() { }
		public void copyFrom(CreateTableContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class CopyCreateTableContext extends CreateTableContext {
		public TableNameContext parenthesisTable;
		public TerminalNode CREATE() { return getToken(MySqlParser.CREATE, 0); }
		public TerminalNode TABLE() { return getToken(MySqlParser.TABLE, 0); }
		public List tableName() {
			return getRuleContexts(TableNameContext.class);
		}
		public TableNameContext tableName(int i) {
			return getRuleContext(TableNameContext.class,i);
		}
		public TerminalNode LIKE() { return getToken(MySqlParser.LIKE, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public OrReplaceContext orReplace() {
			return getRuleContext(OrReplaceContext.class,0);
		}
		public TerminalNode TEMPORARY() { return getToken(MySqlParser.TEMPORARY, 0); }
		public IfNotExistsContext ifNotExists() {
			return getRuleContext(IfNotExistsContext.class,0);
		}
		public CopyCreateTableContext(CreateTableContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCopyCreateTable(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCopyCreateTable(this);
		}
	}
	public static class ColumnCreateTableContext extends CreateTableContext {
		public TerminalNode CREATE() { return getToken(MySqlParser.CREATE, 0); }
		public TerminalNode TABLE() { return getToken(MySqlParser.TABLE, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public CreateDefinitionsContext createDefinitions() {
			return getRuleContext(CreateDefinitionsContext.class,0);
		}
		public OrReplaceContext orReplace() {
			return getRuleContext(OrReplaceContext.class,0);
		}
		public TerminalNode TEMPORARY() { return getToken(MySqlParser.TEMPORARY, 0); }
		public IfNotExistsContext ifNotExists() {
			return getRuleContext(IfNotExistsContext.class,0);
		}
		public List tableOption() {
			return getRuleContexts(TableOptionContext.class);
		}
		public TableOptionContext tableOption(int i) {
			return getRuleContext(TableOptionContext.class,i);
		}
		public PartitionDefinitionsContext partitionDefinitions() {
			return getRuleContext(PartitionDefinitionsContext.class,0);
		}
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public ColumnCreateTableContext(CreateTableContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterColumnCreateTable(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitColumnCreateTable(this);
		}
	}
	public static class QueryCreateTableContext extends CreateTableContext {
		public Token keyViolate;
		public TerminalNode CREATE() { return getToken(MySqlParser.CREATE, 0); }
		public TerminalNode TABLE() { return getToken(MySqlParser.TABLE, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public SelectStatementContext selectStatement() {
			return getRuleContext(SelectStatementContext.class,0);
		}
		public OrReplaceContext orReplace() {
			return getRuleContext(OrReplaceContext.class,0);
		}
		public TerminalNode TEMPORARY() { return getToken(MySqlParser.TEMPORARY, 0); }
		public IfNotExistsContext ifNotExists() {
			return getRuleContext(IfNotExistsContext.class,0);
		}
		public CreateDefinitionsContext createDefinitions() {
			return getRuleContext(CreateDefinitionsContext.class,0);
		}
		public List tableOption() {
			return getRuleContexts(TableOptionContext.class);
		}
		public TableOptionContext tableOption(int i) {
			return getRuleContext(TableOptionContext.class,i);
		}
		public PartitionDefinitionsContext partitionDefinitions() {
			return getRuleContext(PartitionDefinitionsContext.class,0);
		}
		public TerminalNode AS() { return getToken(MySqlParser.AS, 0); }
		public TerminalNode IGNORE() { return getToken(MySqlParser.IGNORE, 0); }
		public TerminalNode REPLACE() { return getToken(MySqlParser.REPLACE, 0); }
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public QueryCreateTableContext(CreateTableContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterQueryCreateTable(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitQueryCreateTable(this);
		}
	}

	public final CreateTableContext createTable() throws RecognitionException {
		CreateTableContext _localctx = new CreateTableContext(_ctx, getState());
		enterRule(_localctx, 42, RULE_createTable);
		int _la;
		try {
			int _alt;
			setState(1273);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,88,_ctx) ) {
			case 1:
				_localctx = new CopyCreateTableContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(1186);
				match(CREATE);
				setState(1188);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==OR) {
					{
					setState(1187);
					orReplace();
					}
				}

				setState(1191);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==TEMPORARY) {
					{
					setState(1190);
					match(TEMPORARY);
					}
				}

				setState(1193);
				match(TABLE);
				setState(1195);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,69,_ctx) ) {
				case 1:
					{
					setState(1194);
					ifNotExists();
					}
					break;
				}
				setState(1197);
				tableName();
				setState(1205);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case LIKE:
					{
					setState(1198);
					match(LIKE);
					setState(1199);
					tableName();
					}
					break;
				case LR_BRACKET:
					{
					setState(1200);
					match(LR_BRACKET);
					setState(1201);
					match(LIKE);
					setState(1202);
					((CopyCreateTableContext)_localctx).parenthesisTable = tableName();
					setState(1203);
					match(RR_BRACKET);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case 2:
				_localctx = new QueryCreateTableContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(1207);
				match(CREATE);
				setState(1209);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==OR) {
					{
					setState(1208);
					orReplace();
					}
				}

				setState(1212);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==TEMPORARY) {
					{
					setState(1211);
					match(TEMPORARY);
					}
				}

				setState(1214);
				match(TABLE);
				setState(1216);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,73,_ctx) ) {
				case 1:
					{
					setState(1215);
					ifNotExists();
					}
					break;
				}
				setState(1218);
				tableName();
				setState(1220);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,74,_ctx) ) {
				case 1:
					{
					setState(1219);
					createDefinitions();
					}
					break;
				}
				setState(1232);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (((((_la - 26)) & ~0x3f) == 0 && ((1L << (_la - 26)) & ((1L << (CHARACTER - 26)) | (1L << (COLLATE - 26)) | (1L << (DEFAULT - 26)) | (1L << (INDEX - 26)))) != 0) || ((((_la - 183)) & ~0x3f) == 0 && ((1L << (_la - 183)) & ((1L << (UNION - 183)) | (1L << (WITH - 183)) | (1L << (CHAR - 183)))) != 0) || ((((_la - 344)) & ~0x3f) == 0 && ((1L << (_la - 344)) & ((1L << (AUTOEXTEND_SIZE - 344)) | (1L << (AUTO_INCREMENT - 344)) | (1L << (AVG_ROW_LENGTH - 344)) | (1L << (CHECKSUM - 344)) | (1L << (PAGE_CHECKSUM - 344)) | (1L << (COMMENT - 344)) | (1L << (COMPRESSION - 344)) | (1L << (CONNECTION - 344)) | (1L << (DATA - 344)) | (1L << (DELAY_KEY_WRITE - 344)) | (1L << (ENCRYPTED - 344)))) != 0) || ((((_la - 408)) & ~0x3f) == 0 && ((1L << (_la - 408)) & ((1L << (ENCRYPTION - 408)) | (1L << (ENCRYPTION_KEY_ID - 408)) | (1L << (ENGINE - 408)) | (1L << (INSERT_METHOD - 408)) | (1L << (KEY_BLOCK_SIZE - 408)))) != 0) || ((((_la - 503)) & ~0x3f) == 0 && ((1L << (_la - 503)) & ((1L << (MAX_ROWS - 503)) | (1L << (MIN_ROWS - 503)) | (1L << (PACK_KEYS - 503)) | (1L << (PAGE_COMPRESSED - 503)) | (1L << (PAGE_COMPRESSION_LEVEL - 503)) | (1L << (PASSWORD - 503)))) != 0) || ((((_la - 605)) & ~0x3f) == 0 && ((1L << (_la - 605)) & ((1L << (ROW_FORMAT - 605)) | (1L << (START - 605)) | (1L << (STATS_AUTO_RECALC - 605)) | (1L << (STATS_PERSISTENT - 605)) | (1L << (STATS_SAMPLE_PAGES - 605)) | (1L << (STORAGE - 605)) | (1L << (TABLESPACE - 605)) | (1L << (TABLE_TYPE - 605)) | (1L << (TRANSACTIONAL - 605)))) != 0) || _la==CHARSET || _la==ENGINE_ATTRIBUTE || _la==SECONDARY_ENGINE_ATTRIBUTE || _la==STRING_LITERAL) {
					{
					setState(1222);
					tableOption();
					setState(1229);
					_errHandler.sync(this);
					_la = _input.LA(1);
					while (((((_la - 26)) & ~0x3f) == 0 && ((1L << (_la - 26)) & ((1L << (CHARACTER - 26)) | (1L << (COLLATE - 26)) | (1L << (DEFAULT - 26)) | (1L << (INDEX - 26)))) != 0) || ((((_la - 183)) & ~0x3f) == 0 && ((1L << (_la - 183)) & ((1L << (UNION - 183)) | (1L << (WITH - 183)) | (1L << (CHAR - 183)))) != 0) || ((((_la - 344)) & ~0x3f) == 0 && ((1L << (_la - 344)) & ((1L << (AUTOEXTEND_SIZE - 344)) | (1L << (AUTO_INCREMENT - 344)) | (1L << (AVG_ROW_LENGTH - 344)) | (1L << (CHECKSUM - 344)) | (1L << (PAGE_CHECKSUM - 344)) | (1L << (COMMENT - 344)) | (1L << (COMPRESSION - 344)) | (1L << (CONNECTION - 344)) | (1L << (DATA - 344)) | (1L << (DELAY_KEY_WRITE - 344)) | (1L << (ENCRYPTED - 344)))) != 0) || ((((_la - 408)) & ~0x3f) == 0 && ((1L << (_la - 408)) & ((1L << (ENCRYPTION - 408)) | (1L << (ENCRYPTION_KEY_ID - 408)) | (1L << (ENGINE - 408)) | (1L << (INSERT_METHOD - 408)) | (1L << (KEY_BLOCK_SIZE - 408)))) != 0) || ((((_la - 503)) & ~0x3f) == 0 && ((1L << (_la - 503)) & ((1L << (MAX_ROWS - 503)) | (1L << (MIN_ROWS - 503)) | (1L << (PACK_KEYS - 503)) | (1L << (PAGE_COMPRESSED - 503)) | (1L << (PAGE_COMPRESSION_LEVEL - 503)) | (1L << (PASSWORD - 503)))) != 0) || ((((_la - 605)) & ~0x3f) == 0 && ((1L << (_la - 605)) & ((1L << (ROW_FORMAT - 605)) | (1L << (START - 605)) | (1L << (STATS_AUTO_RECALC - 605)) | (1L << (STATS_PERSISTENT - 605)) | (1L << (STATS_SAMPLE_PAGES - 605)) | (1L << (STORAGE - 605)) | (1L << (TABLESPACE - 605)) | (1L << (TABLE_TYPE - 605)) | (1L << (TRANSACTIONAL - 605)))) != 0) || _la==CHARSET || _la==ENGINE_ATTRIBUTE || _la==SECONDARY_ENGINE_ATTRIBUTE || _la==COMMA || _la==STRING_LITERAL) {
						{
						{
						setState(1224);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==COMMA) {
							{
							setState(1223);
							match(COMMA);
							}
						}

						setState(1226);
						tableOption();
						}
						}
						setState(1231);
						_errHandler.sync(this);
						_la = _input.LA(1);
					}
					}
				}

				setState(1235);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==PARTITION) {
					{
					setState(1234);
					partitionDefinitions();
					}
				}

				setState(1238);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==IGNORE || _la==REPLACE) {
					{
					setState(1237);
					((QueryCreateTableContext)_localctx).keyViolate = _input.LT(1);
					_la = _input.LA(1);
					if ( !(_la==IGNORE || _la==REPLACE) ) {
						((QueryCreateTableContext)_localctx).keyViolate = (Token)_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
				}

				setState(1241);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==AS) {
					{
					setState(1240);
					match(AS);
					}
				}

				setState(1243);
				selectStatement();
				}
				break;
			case 3:
				_localctx = new ColumnCreateTableContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(1245);
				match(CREATE);
				setState(1247);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==OR) {
					{
					setState(1246);
					orReplace();
					}
				}

				setState(1250);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==TEMPORARY) {
					{
					setState(1249);
					match(TEMPORARY);
					}
				}

				setState(1252);
				match(TABLE);
				setState(1254);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,83,_ctx) ) {
				case 1:
					{
					setState(1253);
					ifNotExists();
					}
					break;
				}
				setState(1256);
				tableName();
				setState(1257);
				createDefinitions();
				setState(1268);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,86,_ctx) ) {
				case 1:
					{
					setState(1258);
					tableOption();
					setState(1265);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,85,_ctx);
					while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
						if ( _alt==1 ) {
							{
							{
							setState(1260);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==COMMA) {
								{
								setState(1259);
								match(COMMA);
								}
							}

							setState(1262);
							tableOption();
							}
							} 
						}
						setState(1267);
						_errHandler.sync(this);
						_alt = getInterpreter().adaptivePredict(_input,85,_ctx);
					}
					}
					break;
				}
				setState(1271);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==PARTITION) {
					{
					setState(1270);
					partitionDefinitions();
					}
				}

				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateTablespaceInnodbContext extends ParserRuleContext {
		public Token datafile;
		public FileSizeLiteralContext fileBlockSize;
		public TerminalNode CREATE() { return getToken(MySqlParser.CREATE, 0); }
		public TerminalNode TABLESPACE() { return getToken(MySqlParser.TABLESPACE, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode ADD() { return getToken(MySqlParser.ADD, 0); }
		public TerminalNode DATAFILE() { return getToken(MySqlParser.DATAFILE, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode FILE_BLOCK_SIZE() { return getToken(MySqlParser.FILE_BLOCK_SIZE, 0); }
		public List EQUAL_SYMBOL() { return getTokens(MySqlParser.EQUAL_SYMBOL); }
		public TerminalNode EQUAL_SYMBOL(int i) {
			return getToken(MySqlParser.EQUAL_SYMBOL, i);
		}
		public TerminalNode ENGINE() { return getToken(MySqlParser.ENGINE, 0); }
		public EngineNameContext engineName() {
			return getRuleContext(EngineNameContext.class,0);
		}
		public FileSizeLiteralContext fileSizeLiteral() {
			return getRuleContext(FileSizeLiteralContext.class,0);
		}
		public CreateTablespaceInnodbContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createTablespaceInnodb; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCreateTablespaceInnodb(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCreateTablespaceInnodb(this);
		}
	}

	public final CreateTablespaceInnodbContext createTablespaceInnodb() throws RecognitionException {
		CreateTablespaceInnodbContext _localctx = new CreateTablespaceInnodbContext(_ctx, getState());
		enterRule(_localctx, 44, RULE_createTablespaceInnodb);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1275);
			match(CREATE);
			setState(1276);
			match(TABLESPACE);
			setState(1277);
			uid();
			setState(1278);
			match(ADD);
			setState(1279);
			match(DATAFILE);
			setState(1280);
			((CreateTablespaceInnodbContext)_localctx).datafile = match(STRING_LITERAL);
			setState(1284);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==FILE_BLOCK_SIZE) {
				{
				setState(1281);
				match(FILE_BLOCK_SIZE);
				setState(1282);
				match(EQUAL_SYMBOL);
				setState(1283);
				((CreateTablespaceInnodbContext)_localctx).fileBlockSize = fileSizeLiteral();
				}
			}

			setState(1291);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ENGINE) {
				{
				setState(1286);
				match(ENGINE);
				setState(1288);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(1287);
					match(EQUAL_SYMBOL);
					}
				}

				setState(1290);
				engineName();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateTablespaceNdbContext extends ParserRuleContext {
		public Token datafile;
		public FileSizeLiteralContext extentSize;
		public FileSizeLiteralContext initialSize;
		public FileSizeLiteralContext autoextendSize;
		public FileSizeLiteralContext maxSize;
		public Token comment;
		public TerminalNode CREATE() { return getToken(MySqlParser.CREATE, 0); }
		public TerminalNode TABLESPACE() { return getToken(MySqlParser.TABLESPACE, 0); }
		public List uid() {
			return getRuleContexts(UidContext.class);
		}
		public UidContext uid(int i) {
			return getRuleContext(UidContext.class,i);
		}
		public TerminalNode ADD() { return getToken(MySqlParser.ADD, 0); }
		public TerminalNode DATAFILE() { return getToken(MySqlParser.DATAFILE, 0); }
		public TerminalNode USE() { return getToken(MySqlParser.USE, 0); }
		public TerminalNode LOGFILE() { return getToken(MySqlParser.LOGFILE, 0); }
		public TerminalNode GROUP() { return getToken(MySqlParser.GROUP, 0); }
		public TerminalNode ENGINE() { return getToken(MySqlParser.ENGINE, 0); }
		public EngineNameContext engineName() {
			return getRuleContext(EngineNameContext.class,0);
		}
		public List STRING_LITERAL() { return getTokens(MySqlParser.STRING_LITERAL); }
		public TerminalNode STRING_LITERAL(int i) {
			return getToken(MySqlParser.STRING_LITERAL, i);
		}
		public TerminalNode EXTENT_SIZE() { return getToken(MySqlParser.EXTENT_SIZE, 0); }
		public TerminalNode INITIAL_SIZE() { return getToken(MySqlParser.INITIAL_SIZE, 0); }
		public TerminalNode AUTOEXTEND_SIZE() { return getToken(MySqlParser.AUTOEXTEND_SIZE, 0); }
		public TerminalNode MAX_SIZE() { return getToken(MySqlParser.MAX_SIZE, 0); }
		public TerminalNode NODEGROUP() { return getToken(MySqlParser.NODEGROUP, 0); }
		public TerminalNode WAIT() { return getToken(MySqlParser.WAIT, 0); }
		public TerminalNode COMMENT() { return getToken(MySqlParser.COMMENT, 0); }
		public List EQUAL_SYMBOL() { return getTokens(MySqlParser.EQUAL_SYMBOL); }
		public TerminalNode EQUAL_SYMBOL(int i) {
			return getToken(MySqlParser.EQUAL_SYMBOL, i);
		}
		public List fileSizeLiteral() {
			return getRuleContexts(FileSizeLiteralContext.class);
		}
		public FileSizeLiteralContext fileSizeLiteral(int i) {
			return getRuleContext(FileSizeLiteralContext.class,i);
		}
		public CreateTablespaceNdbContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createTablespaceNdb; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCreateTablespaceNdb(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCreateTablespaceNdb(this);
		}
	}

	public final CreateTablespaceNdbContext createTablespaceNdb() throws RecognitionException {
		CreateTablespaceNdbContext _localctx = new CreateTablespaceNdbContext(_ctx, getState());
		enterRule(_localctx, 46, RULE_createTablespaceNdb);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1293);
			match(CREATE);
			setState(1294);
			match(TABLESPACE);
			setState(1295);
			uid();
			setState(1296);
			match(ADD);
			setState(1297);
			match(DATAFILE);
			setState(1298);
			((CreateTablespaceNdbContext)_localctx).datafile = match(STRING_LITERAL);
			setState(1299);
			match(USE);
			setState(1300);
			match(LOGFILE);
			setState(1301);
			match(GROUP);
			setState(1302);
			uid();
			setState(1308);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==EXTENT_SIZE) {
				{
				setState(1303);
				match(EXTENT_SIZE);
				setState(1305);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(1304);
					match(EQUAL_SYMBOL);
					}
				}

				setState(1307);
				((CreateTablespaceNdbContext)_localctx).extentSize = fileSizeLiteral();
				}
			}

			setState(1315);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==INITIAL_SIZE) {
				{
				setState(1310);
				match(INITIAL_SIZE);
				setState(1312);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(1311);
					match(EQUAL_SYMBOL);
					}
				}

				setState(1314);
				((CreateTablespaceNdbContext)_localctx).initialSize = fileSizeLiteral();
				}
			}

			setState(1322);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==AUTOEXTEND_SIZE) {
				{
				setState(1317);
				match(AUTOEXTEND_SIZE);
				setState(1319);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(1318);
					match(EQUAL_SYMBOL);
					}
				}

				setState(1321);
				((CreateTablespaceNdbContext)_localctx).autoextendSize = fileSizeLiteral();
				}
			}

			setState(1329);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==MAX_SIZE) {
				{
				setState(1324);
				match(MAX_SIZE);
				setState(1326);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(1325);
					match(EQUAL_SYMBOL);
					}
				}

				setState(1328);
				((CreateTablespaceNdbContext)_localctx).maxSize = fileSizeLiteral();
				}
			}

			setState(1336);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==NODEGROUP) {
				{
				setState(1331);
				match(NODEGROUP);
				setState(1333);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(1332);
					match(EQUAL_SYMBOL);
					}
				}

				setState(1335);
				uid();
				}
			}

			setState(1339);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WAIT) {
				{
				setState(1338);
				match(WAIT);
				}
			}

			setState(1346);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==COMMENT) {
				{
				setState(1341);
				match(COMMENT);
				setState(1343);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(1342);
					match(EQUAL_SYMBOL);
					}
				}

				setState(1345);
				((CreateTablespaceNdbContext)_localctx).comment = match(STRING_LITERAL);
				}
			}

			setState(1348);
			match(ENGINE);
			setState(1350);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==EQUAL_SYMBOL) {
				{
				setState(1349);
				match(EQUAL_SYMBOL);
				}
			}

			setState(1352);
			engineName();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateTriggerContext extends ParserRuleContext {
		public FullIdContext thisTrigger;
		public Token triggerTime;
		public Token triggerEvent;
		public Token triggerPlace;
		public FullIdContext otherTrigger;
		public TerminalNode CREATE() { return getToken(MySqlParser.CREATE, 0); }
		public TerminalNode TRIGGER() { return getToken(MySqlParser.TRIGGER, 0); }
		public TerminalNode ON() { return getToken(MySqlParser.ON, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public TerminalNode FOR() { return getToken(MySqlParser.FOR, 0); }
		public TerminalNode EACH() { return getToken(MySqlParser.EACH, 0); }
		public TerminalNode ROW() { return getToken(MySqlParser.ROW, 0); }
		public RoutineBodyContext routineBody() {
			return getRuleContext(RoutineBodyContext.class,0);
		}
		public List fullId() {
			return getRuleContexts(FullIdContext.class);
		}
		public FullIdContext fullId(int i) {
			return getRuleContext(FullIdContext.class,i);
		}
		public TerminalNode BEFORE() { return getToken(MySqlParser.BEFORE, 0); }
		public TerminalNode AFTER() { return getToken(MySqlParser.AFTER, 0); }
		public TerminalNode INSERT() { return getToken(MySqlParser.INSERT, 0); }
		public TerminalNode UPDATE() { return getToken(MySqlParser.UPDATE, 0); }
		public TerminalNode DELETE() { return getToken(MySqlParser.DELETE, 0); }
		public OrReplaceContext orReplace() {
			return getRuleContext(OrReplaceContext.class,0);
		}
		public OwnerStatementContext ownerStatement() {
			return getRuleContext(OwnerStatementContext.class,0);
		}
		public IfNotExistsContext ifNotExists() {
			return getRuleContext(IfNotExistsContext.class,0);
		}
		public TerminalNode FOLLOWS() { return getToken(MySqlParser.FOLLOWS, 0); }
		public TerminalNode PRECEDES() { return getToken(MySqlParser.PRECEDES, 0); }
		public CreateTriggerContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createTrigger; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCreateTrigger(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCreateTrigger(this);
		}
	}

	public final CreateTriggerContext createTrigger() throws RecognitionException {
		CreateTriggerContext _localctx = new CreateTriggerContext(_ctx, getState());
		enterRule(_localctx, 48, RULE_createTrigger);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1354);
			match(CREATE);
			setState(1356);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==OR) {
				{
				setState(1355);
				orReplace();
				}
			}

			setState(1359);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==DEFINER) {
				{
				setState(1358);
				ownerStatement();
				}
			}

			setState(1361);
			match(TRIGGER);
			setState(1363);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,108,_ctx) ) {
			case 1:
				{
				setState(1362);
				ifNotExists();
				}
				break;
			}
			setState(1365);
			((CreateTriggerContext)_localctx).thisTrigger = fullId();
			setState(1366);
			((CreateTriggerContext)_localctx).triggerTime = _input.LT(1);
			_la = _input.LA(1);
			if ( !(_la==BEFORE || _la==AFTER) ) {
				((CreateTriggerContext)_localctx).triggerTime = (Token)_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(1367);
			((CreateTriggerContext)_localctx).triggerEvent = _input.LT(1);
			_la = _input.LA(1);
			if ( !(_la==DELETE || _la==INSERT || _la==UPDATE) ) {
				((CreateTriggerContext)_localctx).triggerEvent = (Token)_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(1368);
			match(ON);
			setState(1369);
			tableName();
			setState(1370);
			match(FOR);
			setState(1371);
			match(EACH);
			setState(1372);
			match(ROW);
			setState(1375);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,109,_ctx) ) {
			case 1:
				{
				setState(1373);
				((CreateTriggerContext)_localctx).triggerPlace = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==FOLLOWS || _la==PRECEDES) ) {
					((CreateTriggerContext)_localctx).triggerPlace = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(1374);
				((CreateTriggerContext)_localctx).otherTrigger = fullId();
				}
				break;
			}
			setState(1377);
			routineBody();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class WithClauseContext extends ParserRuleContext {
		public TerminalNode WITH() { return getToken(MySqlParser.WITH, 0); }
		public CommonTableExpressionsContext commonTableExpressions() {
			return getRuleContext(CommonTableExpressionsContext.class,0);
		}
		public TerminalNode RECURSIVE() { return getToken(MySqlParser.RECURSIVE, 0); }
		public WithClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_withClause; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterWithClause(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitWithClause(this);
		}
	}

	public final WithClauseContext withClause() throws RecognitionException {
		WithClauseContext _localctx = new WithClauseContext(_ctx, getState());
		enterRule(_localctx, 50, RULE_withClause);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1379);
			match(WITH);
			setState(1381);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,110,_ctx) ) {
			case 1:
				{
				setState(1380);
				match(RECURSIVE);
				}
				break;
			}
			setState(1383);
			commonTableExpressions();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CommonTableExpressionsContext extends ParserRuleContext {
		public CteNameContext cteName() {
			return getRuleContext(CteNameContext.class,0);
		}
		public TerminalNode AS() { return getToken(MySqlParser.AS, 0); }
		public List LR_BRACKET() { return getTokens(MySqlParser.LR_BRACKET); }
		public TerminalNode LR_BRACKET(int i) {
			return getToken(MySqlParser.LR_BRACKET, i);
		}
		public DmlStatementContext dmlStatement() {
			return getRuleContext(DmlStatementContext.class,0);
		}
		public List RR_BRACKET() { return getTokens(MySqlParser.RR_BRACKET); }
		public TerminalNode RR_BRACKET(int i) {
			return getToken(MySqlParser.RR_BRACKET, i);
		}
		public List cteColumnName() {
			return getRuleContexts(CteColumnNameContext.class);
		}
		public CteColumnNameContext cteColumnName(int i) {
			return getRuleContext(CteColumnNameContext.class,i);
		}
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public CommonTableExpressionsContext commonTableExpressions() {
			return getRuleContext(CommonTableExpressionsContext.class,0);
		}
		public CommonTableExpressionsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_commonTableExpressions; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCommonTableExpressions(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCommonTableExpressions(this);
		}
	}

	public final CommonTableExpressionsContext commonTableExpressions() throws RecognitionException {
		CommonTableExpressionsContext _localctx = new CommonTableExpressionsContext(_ctx, getState());
		enterRule(_localctx, 52, RULE_commonTableExpressions);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1385);
			cteName();
			setState(1397);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LR_BRACKET) {
				{
				setState(1386);
				match(LR_BRACKET);
				setState(1387);
				cteColumnName();
				setState(1392);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(1388);
					match(COMMA);
					setState(1389);
					cteColumnName();
					}
					}
					setState(1394);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(1395);
				match(RR_BRACKET);
				}
			}

			setState(1399);
			match(AS);
			setState(1400);
			match(LR_BRACKET);
			setState(1401);
			dmlStatement();
			setState(1402);
			match(RR_BRACKET);
			setState(1405);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,113,_ctx) ) {
			case 1:
				{
				setState(1403);
				match(COMMA);
				setState(1404);
				commonTableExpressions();
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CteNameContext extends ParserRuleContext {
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public CteNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_cteName; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCteName(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCteName(this);
		}
	}

	public final CteNameContext cteName() throws RecognitionException {
		CteNameContext _localctx = new CteNameContext(_ctx, getState());
		enterRule(_localctx, 54, RULE_cteName);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1407);
			uid();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CteColumnNameContext extends ParserRuleContext {
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public CteColumnNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_cteColumnName; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCteColumnName(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCteColumnName(this);
		}
	}

	public final CteColumnNameContext cteColumnName() throws RecognitionException {
		CteColumnNameContext _localctx = new CteColumnNameContext(_ctx, getState());
		enterRule(_localctx, 56, RULE_cteColumnName);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1409);
			uid();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateViewContext extends ParserRuleContext {
		public Token algType;
		public Token secContext;
		public Token checkOption;
		public TerminalNode CREATE() { return getToken(MySqlParser.CREATE, 0); }
		public TerminalNode VIEW() { return getToken(MySqlParser.VIEW, 0); }
		public FullIdContext fullId() {
			return getRuleContext(FullIdContext.class,0);
		}
		public TerminalNode AS() { return getToken(MySqlParser.AS, 0); }
		public List LR_BRACKET() { return getTokens(MySqlParser.LR_BRACKET); }
		public TerminalNode LR_BRACKET(int i) {
			return getToken(MySqlParser.LR_BRACKET, i);
		}
		public SelectStatementContext selectStatement() {
			return getRuleContext(SelectStatementContext.class,0);
		}
		public List RR_BRACKET() { return getTokens(MySqlParser.RR_BRACKET); }
		public TerminalNode RR_BRACKET(int i) {
			return getToken(MySqlParser.RR_BRACKET, i);
		}
		public OrReplaceContext orReplace() {
			return getRuleContext(OrReplaceContext.class,0);
		}
		public TerminalNode ALGORITHM() { return getToken(MySqlParser.ALGORITHM, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public OwnerStatementContext ownerStatement() {
			return getRuleContext(OwnerStatementContext.class,0);
		}
		public TerminalNode SQL() { return getToken(MySqlParser.SQL, 0); }
		public TerminalNode SECURITY() { return getToken(MySqlParser.SECURITY, 0); }
		public UidListContext uidList() {
			return getRuleContext(UidListContext.class,0);
		}
		public TerminalNode UNDEFINED() { return getToken(MySqlParser.UNDEFINED, 0); }
		public TerminalNode MERGE() { return getToken(MySqlParser.MERGE, 0); }
		public TerminalNode TEMPTABLE() { return getToken(MySqlParser.TEMPTABLE, 0); }
		public TerminalNode DEFINER() { return getToken(MySqlParser.DEFINER, 0); }
		public TerminalNode INVOKER() { return getToken(MySqlParser.INVOKER, 0); }
		public WithClauseContext withClause() {
			return getRuleContext(WithClauseContext.class,0);
		}
		public TerminalNode WITH() { return getToken(MySqlParser.WITH, 0); }
		public TerminalNode CHECK() { return getToken(MySqlParser.CHECK, 0); }
		public TerminalNode OPTION() { return getToken(MySqlParser.OPTION, 0); }
		public TerminalNode CASCADED() { return getToken(MySqlParser.CASCADED, 0); }
		public TerminalNode LOCAL() { return getToken(MySqlParser.LOCAL, 0); }
		public CreateViewContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createView; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCreateView(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCreateView(this);
		}
	}

	public final CreateViewContext createView() throws RecognitionException {
		CreateViewContext _localctx = new CreateViewContext(_ctx, getState());
		enterRule(_localctx, 58, RULE_createView);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1411);
			match(CREATE);
			setState(1413);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==OR) {
				{
				setState(1412);
				orReplace();
				}
			}

			setState(1418);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ALGORITHM) {
				{
				setState(1415);
				match(ALGORITHM);
				setState(1416);
				match(EQUAL_SYMBOL);
				setState(1417);
				((CreateViewContext)_localctx).algType = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==MERGE || _la==TEMPTABLE || _la==UNDEFINED) ) {
					((CreateViewContext)_localctx).algType = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(1421);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==DEFINER) {
				{
				setState(1420);
				ownerStatement();
				}
			}

			setState(1426);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==SQL) {
				{
				setState(1423);
				match(SQL);
				setState(1424);
				match(SECURITY);
				setState(1425);
				((CreateViewContext)_localctx).secContext = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==DEFINER || _la==INVOKER) ) {
					((CreateViewContext)_localctx).secContext = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(1428);
			match(VIEW);
			setState(1429);
			fullId();
			setState(1434);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LR_BRACKET) {
				{
				setState(1430);
				match(LR_BRACKET);
				setState(1431);
				uidList();
				setState(1432);
				match(RR_BRACKET);
				}
			}

			setState(1436);
			match(AS);
			setState(1456);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,123,_ctx) ) {
			case 1:
				{
				setState(1437);
				match(LR_BRACKET);
				setState(1439);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==WITH) {
					{
					setState(1438);
					withClause();
					}
				}

				setState(1441);
				selectStatement();
				setState(1442);
				match(RR_BRACKET);
				}
				break;
			case 2:
				{
				setState(1445);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==WITH) {
					{
					setState(1444);
					withClause();
					}
				}

				setState(1447);
				selectStatement();
				setState(1454);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,122,_ctx) ) {
				case 1:
					{
					setState(1448);
					match(WITH);
					setState(1450);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==CASCADED || _la==LOCAL) {
						{
						setState(1449);
						((CreateViewContext)_localctx).checkOption = _input.LT(1);
						_la = _input.LA(1);
						if ( !(_la==CASCADED || _la==LOCAL) ) {
							((CreateViewContext)_localctx).checkOption = (Token)_errHandler.recoverInline(this);
						}
						else {
							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
							_errHandler.reportMatch(this);
							consume();
						}
						}
					}

					setState(1452);
					match(CHECK);
					setState(1453);
					match(OPTION);
					}
					break;
				}
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateSequenceContext extends ParserRuleContext {
		public TerminalNode CREATE() { return getToken(MySqlParser.CREATE, 0); }
		public TerminalNode SEQUENCE() { return getToken(MySqlParser.SEQUENCE, 0); }
		public FullIdContext fullId() {
			return getRuleContext(FullIdContext.class,0);
		}
		public OrReplaceContext orReplace() {
			return getRuleContext(OrReplaceContext.class,0);
		}
		public TerminalNode TEMPORARY() { return getToken(MySqlParser.TEMPORARY, 0); }
		public IfNotExistsContext ifNotExists() {
			return getRuleContext(IfNotExistsContext.class,0);
		}
		public List sequenceSpec() {
			return getRuleContexts(SequenceSpecContext.class);
		}
		public SequenceSpecContext sequenceSpec(int i) {
			return getRuleContext(SequenceSpecContext.class,i);
		}
		public List tableOption() {
			return getRuleContexts(TableOptionContext.class);
		}
		public TableOptionContext tableOption(int i) {
			return getRuleContext(TableOptionContext.class,i);
		}
		public CreateSequenceContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createSequence; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCreateSequence(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCreateSequence(this);
		}
	}

	public final CreateSequenceContext createSequence() throws RecognitionException {
		CreateSequenceContext _localctx = new CreateSequenceContext(_ctx, getState());
		enterRule(_localctx, 60, RULE_createSequence);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(1458);
			match(CREATE);
			setState(1460);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==OR) {
				{
				setState(1459);
				orReplace();
				}
			}

			setState(1463);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==TEMPORARY) {
				{
				setState(1462);
				match(TEMPORARY);
				}
			}

			setState(1465);
			match(SEQUENCE);
			setState(1467);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,126,_ctx) ) {
			case 1:
				{
				setState(1466);
				ifNotExists();
				}
				break;
			}
			setState(1469);
			fullId();
			setState(1474);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,128,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					{
					setState(1472);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,127,_ctx) ) {
					case 1:
						{
						setState(1470);
						sequenceSpec();
						}
						break;
					case 2:
						{
						setState(1471);
						tableOption();
						}
						break;
					}
					} 
				}
				setState(1476);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,128,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SequenceSpecContext extends ParserRuleContext {
		public TerminalNode INCREMENT() { return getToken(MySqlParser.INCREMENT, 0); }
		public DecimalLiteralContext decimalLiteral() {
			return getRuleContext(DecimalLiteralContext.class,0);
		}
		public TerminalNode BY() { return getToken(MySqlParser.BY, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TerminalNode MINVALUE() { return getToken(MySqlParser.MINVALUE, 0); }
		public TerminalNode NO() { return getToken(MySqlParser.NO, 0); }
		public TerminalNode NOMINVALUE() { return getToken(MySqlParser.NOMINVALUE, 0); }
		public TerminalNode MAXVALUE() { return getToken(MySqlParser.MAXVALUE, 0); }
		public TerminalNode NOMAXVALUE() { return getToken(MySqlParser.NOMAXVALUE, 0); }
		public TerminalNode START() { return getToken(MySqlParser.START, 0); }
		public TerminalNode WITH() { return getToken(MySqlParser.WITH, 0); }
		public TerminalNode CACHE() { return getToken(MySqlParser.CACHE, 0); }
		public TerminalNode NOCACHE() { return getToken(MySqlParser.NOCACHE, 0); }
		public TerminalNode CYCLE() { return getToken(MySqlParser.CYCLE, 0); }
		public TerminalNode NOCYCLE() { return getToken(MySqlParser.NOCYCLE, 0); }
		public TerminalNode RESTART() { return getToken(MySqlParser.RESTART, 0); }
		public SequenceSpecContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_sequenceSpec; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSequenceSpec(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSequenceSpec(this);
		}
	}

	public final SequenceSpecContext sequenceSpec() throws RecognitionException {
		SequenceSpecContext _localctx = new SequenceSpecContext(_ctx, getState());
		enterRule(_localctx, 62, RULE_sequenceSpec);
		int _la;
		try {
			setState(1516);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,135,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(1477);
				match(INCREMENT);
				setState(1479);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==BY || _la==EQUAL_SYMBOL) {
					{
					setState(1478);
					_la = _input.LA(1);
					if ( !(_la==BY || _la==EQUAL_SYMBOL) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
				}

				setState(1481);
				decimalLiteral();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(1482);
				match(MINVALUE);
				setState(1484);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(1483);
					match(EQUAL_SYMBOL);
					}
				}

				setState(1486);
				decimalLiteral();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(1487);
				match(NO);
				setState(1488);
				match(MINVALUE);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(1489);
				match(NOMINVALUE);
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(1490);
				match(MAXVALUE);
				setState(1492);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(1491);
					match(EQUAL_SYMBOL);
					}
				}

				setState(1494);
				decimalLiteral();
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(1495);
				match(NO);
				setState(1496);
				match(MAXVALUE);
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(1497);
				match(NOMAXVALUE);
				}
				break;
			case 8:
				enterOuterAlt(_localctx, 8);
				{
				setState(1498);
				match(START);
				setState(1500);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==WITH || _la==EQUAL_SYMBOL) {
					{
					setState(1499);
					_la = _input.LA(1);
					if ( !(_la==WITH || _la==EQUAL_SYMBOL) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
				}

				setState(1502);
				decimalLiteral();
				}
				break;
			case 9:
				enterOuterAlt(_localctx, 9);
				{
				setState(1503);
				match(CACHE);
				setState(1505);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(1504);
					match(EQUAL_SYMBOL);
					}
				}

				setState(1507);
				decimalLiteral();
				}
				break;
			case 10:
				enterOuterAlt(_localctx, 10);
				{
				setState(1508);
				match(NOCACHE);
				}
				break;
			case 11:
				enterOuterAlt(_localctx, 11);
				{
				setState(1509);
				match(CYCLE);
				}
				break;
			case 12:
				enterOuterAlt(_localctx, 12);
				{
				setState(1510);
				match(NOCYCLE);
				}
				break;
			case 13:
				enterOuterAlt(_localctx, 13);
				{
				setState(1511);
				match(RESTART);
				setState(1513);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==WITH || _la==EQUAL_SYMBOL) {
					{
					setState(1512);
					_la = _input.LA(1);
					if ( !(_la==WITH || _la==EQUAL_SYMBOL) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
				}

				setState(1515);
				decimalLiteral();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateDatabaseOptionContext extends ParserRuleContext {
		public CharSetContext charSet() {
			return getRuleContext(CharSetContext.class,0);
		}
		public CharsetNameContext charsetName() {
			return getRuleContext(CharsetNameContext.class,0);
		}
		public List DEFAULT() { return getTokens(MySqlParser.DEFAULT); }
		public TerminalNode DEFAULT(int i) {
			return getToken(MySqlParser.DEFAULT, i);
		}
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TerminalNode COLLATE() { return getToken(MySqlParser.COLLATE, 0); }
		public CollationNameContext collationName() {
			return getRuleContext(CollationNameContext.class,0);
		}
		public TerminalNode ENCRYPTION() { return getToken(MySqlParser.ENCRYPTION, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode READ() { return getToken(MySqlParser.READ, 0); }
		public TerminalNode ONLY() { return getToken(MySqlParser.ONLY, 0); }
		public TerminalNode ZERO_DECIMAL() { return getToken(MySqlParser.ZERO_DECIMAL, 0); }
		public TerminalNode ONE_DECIMAL() { return getToken(MySqlParser.ONE_DECIMAL, 0); }
		public CreateDatabaseOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createDatabaseOption; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCreateDatabaseOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCreateDatabaseOption(this);
		}
	}

	public final CreateDatabaseOptionContext createDatabaseOption() throws RecognitionException {
		CreateDatabaseOptionContext _localctx = new CreateDatabaseOptionContext(_ctx, getState());
		enterRule(_localctx, 64, RULE_createDatabaseOption);
		int _la;
		try {
			setState(1551);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,144,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(1519);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==DEFAULT) {
					{
					setState(1518);
					match(DEFAULT);
					}
				}

				setState(1521);
				charSet();
				setState(1523);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(1522);
					match(EQUAL_SYMBOL);
					}
				}

				setState(1527);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case BINARY:
				case ARMSCII8:
				case ASCII:
				case BIG5:
				case CP1250:
				case CP1251:
				case CP1256:
				case CP1257:
				case CP850:
				case CP852:
				case CP866:
				case CP932:
				case DEC8:
				case EUCJPMS:
				case EUCKR:
				case GB18030:
				case GB2312:
				case GBK:
				case GEOSTD8:
				case GREEK:
				case HEBREW:
				case HP8:
				case KEYBCS2:
				case KOI8R:
				case KOI8U:
				case LATIN1:
				case LATIN2:
				case LATIN5:
				case LATIN7:
				case MACCE:
				case MACROMAN:
				case SJIS:
				case SWE7:
				case TIS620:
				case UCS2:
				case UJIS:
				case UTF16:
				case UTF16LE:
				case UTF32:
				case UTF8:
				case UTF8MB3:
				case UTF8MB4:
				case CHARSET_REVERSE_QOUTE_STRING:
				case STRING_LITERAL:
					{
					setState(1525);
					charsetName();
					}
					break;
				case DEFAULT:
					{
					setState(1526);
					match(DEFAULT);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(1530);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==DEFAULT) {
					{
					setState(1529);
					match(DEFAULT);
					}
				}

				setState(1532);
				match(COLLATE);
				setState(1534);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(1533);
					match(EQUAL_SYMBOL);
					}
				}

				setState(1536);
				collationName();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(1538);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==DEFAULT) {
					{
					setState(1537);
					match(DEFAULT);
					}
				}

				setState(1540);
				match(ENCRYPTION);
				setState(1542);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(1541);
					match(EQUAL_SYMBOL);
					}
				}

				setState(1544);
				match(STRING_LITERAL);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(1545);
				match(READ);
				setState(1546);
				match(ONLY);
				setState(1548);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(1547);
					match(EQUAL_SYMBOL);
					}
				}

				setState(1550);
				_la = _input.LA(1);
				if ( !(_la==DEFAULT || _la==ZERO_DECIMAL || _la==ONE_DECIMAL) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CharSetContext extends ParserRuleContext {
		public TerminalNode CHARACTER() { return getToken(MySqlParser.CHARACTER, 0); }
		public TerminalNode SET() { return getToken(MySqlParser.SET, 0); }
		public TerminalNode CHARSET() { return getToken(MySqlParser.CHARSET, 0); }
		public TerminalNode CHAR() { return getToken(MySqlParser.CHAR, 0); }
		public CharSetContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_charSet; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCharSet(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCharSet(this);
		}
	}

	public final CharSetContext charSet() throws RecognitionException {
		CharSetContext _localctx = new CharSetContext(_ctx, getState());
		enterRule(_localctx, 66, RULE_charSet);
		try {
			setState(1558);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case CHARACTER:
				enterOuterAlt(_localctx, 1);
				{
				setState(1553);
				match(CHARACTER);
				setState(1554);
				match(SET);
				}
				break;
			case CHARSET:
				enterOuterAlt(_localctx, 2);
				{
				setState(1555);
				match(CHARSET);
				}
				break;
			case CHAR:
				enterOuterAlt(_localctx, 3);
				{
				setState(1556);
				match(CHAR);
				setState(1557);
				match(SET);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CurrentUserExpressionContext extends ParserRuleContext {
		public TerminalNode CURRENT_USER() { return getToken(MySqlParser.CURRENT_USER, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public CurrentUserExpressionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_currentUserExpression; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCurrentUserExpression(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCurrentUserExpression(this);
		}
	}

	public final CurrentUserExpressionContext currentUserExpression() throws RecognitionException {
		CurrentUserExpressionContext _localctx = new CurrentUserExpressionContext(_ctx, getState());
		enterRule(_localctx, 68, RULE_currentUserExpression);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1560);
			match(CURRENT_USER);
			setState(1563);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,146,_ctx) ) {
			case 1:
				{
				setState(1561);
				match(LR_BRACKET);
				setState(1562);
				match(RR_BRACKET);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class OwnerStatementContext extends ParserRuleContext {
		public TerminalNode DEFINER() { return getToken(MySqlParser.DEFINER, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public UserNameContext userName() {
			return getRuleContext(UserNameContext.class,0);
		}
		public CurrentUserExpressionContext currentUserExpression() {
			return getRuleContext(CurrentUserExpressionContext.class,0);
		}
		public TerminalNode CURRENT_ROLE() { return getToken(MySqlParser.CURRENT_ROLE, 0); }
		public OwnerStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_ownerStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterOwnerStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitOwnerStatement(this);
		}
	}

	public final OwnerStatementContext ownerStatement() throws RecognitionException {
		OwnerStatementContext _localctx = new OwnerStatementContext(_ctx, getState());
		enterRule(_localctx, 70, RULE_ownerStatement);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1565);
			match(DEFINER);
			setState(1566);
			match(EQUAL_SYMBOL);
			setState(1570);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,147,_ctx) ) {
			case 1:
				{
				setState(1567);
				userName();
				}
				break;
			case 2:
				{
				setState(1568);
				currentUserExpression();
				}
				break;
			case 3:
				{
				setState(1569);
				match(CURRENT_ROLE);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ScheduleExpressionContext extends ParserRuleContext {
		public ScheduleExpressionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_scheduleExpression; }
	 
		public ScheduleExpressionContext() { }
		public void copyFrom(ScheduleExpressionContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class PreciseScheduleContext extends ScheduleExpressionContext {
		public TerminalNode AT() { return getToken(MySqlParser.AT, 0); }
		public TimestampValueContext timestampValue() {
			return getRuleContext(TimestampValueContext.class,0);
		}
		public List intervalExpr() {
			return getRuleContexts(IntervalExprContext.class);
		}
		public IntervalExprContext intervalExpr(int i) {
			return getRuleContext(IntervalExprContext.class,i);
		}
		public PreciseScheduleContext(ScheduleExpressionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPreciseSchedule(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPreciseSchedule(this);
		}
	}
	public static class IntervalScheduleContext extends ScheduleExpressionContext {
		public TimestampValueContext startTimestamp;
		public IntervalExprContext intervalExpr;
		public List startIntervals = new ArrayList();
		public TimestampValueContext endTimestamp;
		public List endIntervals = new ArrayList();
		public TerminalNode EVERY() { return getToken(MySqlParser.EVERY, 0); }
		public IntervalTypeContext intervalType() {
			return getRuleContext(IntervalTypeContext.class,0);
		}
		public DecimalLiteralContext decimalLiteral() {
			return getRuleContext(DecimalLiteralContext.class,0);
		}
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode STARTS() { return getToken(MySqlParser.STARTS, 0); }
		public TerminalNode ENDS() { return getToken(MySqlParser.ENDS, 0); }
		public List timestampValue() {
			return getRuleContexts(TimestampValueContext.class);
		}
		public TimestampValueContext timestampValue(int i) {
			return getRuleContext(TimestampValueContext.class,i);
		}
		public List intervalExpr() {
			return getRuleContexts(IntervalExprContext.class);
		}
		public IntervalExprContext intervalExpr(int i) {
			return getRuleContext(IntervalExprContext.class,i);
		}
		public IntervalScheduleContext(ScheduleExpressionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterIntervalSchedule(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitIntervalSchedule(this);
		}
	}

	public final ScheduleExpressionContext scheduleExpression() throws RecognitionException {
		ScheduleExpressionContext _localctx = new ScheduleExpressionContext(_ctx, getState());
		enterRule(_localctx, 72, RULE_scheduleExpression);
		int _la;
		try {
			setState(1606);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case AT:
				_localctx = new PreciseScheduleContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(1572);
				match(AT);
				setState(1573);
				timestampValue();
				setState(1577);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==PLUS) {
					{
					{
					setState(1574);
					intervalExpr();
					}
					}
					setState(1579);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			case EVERY:
				_localctx = new IntervalScheduleContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(1580);
				match(EVERY);
				setState(1583);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,149,_ctx) ) {
				case 1:
					{
					setState(1581);
					decimalLiteral();
					}
					break;
				case 2:
					{
					setState(1582);
					expression(0);
					}
					break;
				}
				setState(1585);
				intervalType();
				setState(1594);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==STARTS) {
					{
					setState(1586);
					match(STARTS);
					setState(1587);
					((IntervalScheduleContext)_localctx).startTimestamp = timestampValue();
					setState(1591);
					_errHandler.sync(this);
					_la = _input.LA(1);
					while (_la==PLUS) {
						{
						{
						setState(1588);
						((IntervalScheduleContext)_localctx).intervalExpr = intervalExpr();
						((IntervalScheduleContext)_localctx).startIntervals.add(((IntervalScheduleContext)_localctx).intervalExpr);
						}
						}
						setState(1593);
						_errHandler.sync(this);
						_la = _input.LA(1);
					}
					}
				}

				setState(1604);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==ENDS) {
					{
					setState(1596);
					match(ENDS);
					setState(1597);
					((IntervalScheduleContext)_localctx).endTimestamp = timestampValue();
					setState(1601);
					_errHandler.sync(this);
					_la = _input.LA(1);
					while (_la==PLUS) {
						{
						{
						setState(1598);
						((IntervalScheduleContext)_localctx).intervalExpr = intervalExpr();
						((IntervalScheduleContext)_localctx).endIntervals.add(((IntervalScheduleContext)_localctx).intervalExpr);
						}
						}
						setState(1603);
						_errHandler.sync(this);
						_la = _input.LA(1);
					}
					}
				}

				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TimestampValueContext extends ParserRuleContext {
		public TerminalNode CURRENT_TIMESTAMP() { return getToken(MySqlParser.CURRENT_TIMESTAMP, 0); }
		public StringLiteralContext stringLiteral() {
			return getRuleContext(StringLiteralContext.class,0);
		}
		public DecimalLiteralContext decimalLiteral() {
			return getRuleContext(DecimalLiteralContext.class,0);
		}
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TimestampValueContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_timestampValue; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTimestampValue(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTimestampValue(this);
		}
	}

	public final TimestampValueContext timestampValue() throws RecognitionException {
		TimestampValueContext _localctx = new TimestampValueContext(_ctx, getState());
		enterRule(_localctx, 74, RULE_timestampValue);
		try {
			setState(1612);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,155,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(1608);
				match(CURRENT_TIMESTAMP);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(1609);
				stringLiteral();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(1610);
				decimalLiteral();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(1611);
				expression(0);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IntervalExprContext extends ParserRuleContext {
		public TerminalNode PLUS() { return getToken(MySqlParser.PLUS, 0); }
		public TerminalNode INTERVAL() { return getToken(MySqlParser.INTERVAL, 0); }
		public IntervalTypeContext intervalType() {
			return getRuleContext(IntervalTypeContext.class,0);
		}
		public DecimalLiteralContext decimalLiteral() {
			return getRuleContext(DecimalLiteralContext.class,0);
		}
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public IntervalExprContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_intervalExpr; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterIntervalExpr(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitIntervalExpr(this);
		}
	}

	public final IntervalExprContext intervalExpr() throws RecognitionException {
		IntervalExprContext _localctx = new IntervalExprContext(_ctx, getState());
		enterRule(_localctx, 76, RULE_intervalExpr);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1614);
			match(PLUS);
			setState(1615);
			match(INTERVAL);
			setState(1618);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,156,_ctx) ) {
			case 1:
				{
				setState(1616);
				decimalLiteral();
				}
				break;
			case 2:
				{
				setState(1617);
				expression(0);
				}
				break;
			}
			setState(1620);
			intervalType();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IntervalTypeContext extends ParserRuleContext {
		public IntervalTypeBaseContext intervalTypeBase() {
			return getRuleContext(IntervalTypeBaseContext.class,0);
		}
		public TerminalNode YEAR() { return getToken(MySqlParser.YEAR, 0); }
		public TerminalNode YEAR_MONTH() { return getToken(MySqlParser.YEAR_MONTH, 0); }
		public TerminalNode DAY_HOUR() { return getToken(MySqlParser.DAY_HOUR, 0); }
		public TerminalNode DAY_MINUTE() { return getToken(MySqlParser.DAY_MINUTE, 0); }
		public TerminalNode DAY_SECOND() { return getToken(MySqlParser.DAY_SECOND, 0); }
		public TerminalNode HOUR_MINUTE() { return getToken(MySqlParser.HOUR_MINUTE, 0); }
		public TerminalNode HOUR_SECOND() { return getToken(MySqlParser.HOUR_SECOND, 0); }
		public TerminalNode MINUTE_SECOND() { return getToken(MySqlParser.MINUTE_SECOND, 0); }
		public TerminalNode SECOND_MICROSECOND() { return getToken(MySqlParser.SECOND_MICROSECOND, 0); }
		public TerminalNode MINUTE_MICROSECOND() { return getToken(MySqlParser.MINUTE_MICROSECOND, 0); }
		public TerminalNode HOUR_MICROSECOND() { return getToken(MySqlParser.HOUR_MICROSECOND, 0); }
		public TerminalNode DAY_MICROSECOND() { return getToken(MySqlParser.DAY_MICROSECOND, 0); }
		public IntervalTypeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_intervalType; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterIntervalType(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitIntervalType(this);
		}
	}

	public final IntervalTypeContext intervalType() throws RecognitionException {
		IntervalTypeContext _localctx = new IntervalTypeContext(_ctx, getState());
		enterRule(_localctx, 78, RULE_intervalType);
		try {
			setState(1635);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case QUARTER:
			case MONTH:
			case DAY:
			case HOUR:
			case MINUTE:
			case WEEK:
			case SECOND:
			case MICROSECOND:
				enterOuterAlt(_localctx, 1);
				{
				setState(1622);
				intervalTypeBase();
				}
				break;
			case YEAR:
				enterOuterAlt(_localctx, 2);
				{
				setState(1623);
				match(YEAR);
				}
				break;
			case YEAR_MONTH:
				enterOuterAlt(_localctx, 3);
				{
				setState(1624);
				match(YEAR_MONTH);
				}
				break;
			case DAY_HOUR:
				enterOuterAlt(_localctx, 4);
				{
				setState(1625);
				match(DAY_HOUR);
				}
				break;
			case DAY_MINUTE:
				enterOuterAlt(_localctx, 5);
				{
				setState(1626);
				match(DAY_MINUTE);
				}
				break;
			case DAY_SECOND:
				enterOuterAlt(_localctx, 6);
				{
				setState(1627);
				match(DAY_SECOND);
				}
				break;
			case HOUR_MINUTE:
				enterOuterAlt(_localctx, 7);
				{
				setState(1628);
				match(HOUR_MINUTE);
				}
				break;
			case HOUR_SECOND:
				enterOuterAlt(_localctx, 8);
				{
				setState(1629);
				match(HOUR_SECOND);
				}
				break;
			case MINUTE_SECOND:
				enterOuterAlt(_localctx, 9);
				{
				setState(1630);
				match(MINUTE_SECOND);
				}
				break;
			case SECOND_MICROSECOND:
				enterOuterAlt(_localctx, 10);
				{
				setState(1631);
				match(SECOND_MICROSECOND);
				}
				break;
			case MINUTE_MICROSECOND:
				enterOuterAlt(_localctx, 11);
				{
				setState(1632);
				match(MINUTE_MICROSECOND);
				}
				break;
			case HOUR_MICROSECOND:
				enterOuterAlt(_localctx, 12);
				{
				setState(1633);
				match(HOUR_MICROSECOND);
				}
				break;
			case DAY_MICROSECOND:
				enterOuterAlt(_localctx, 13);
				{
				setState(1634);
				match(DAY_MICROSECOND);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class EnableTypeContext extends ParserRuleContext {
		public TerminalNode ENABLE() { return getToken(MySqlParser.ENABLE, 0); }
		public TerminalNode DISABLE() { return getToken(MySqlParser.DISABLE, 0); }
		public TerminalNode ON() { return getToken(MySqlParser.ON, 0); }
		public TerminalNode SLAVE() { return getToken(MySqlParser.SLAVE, 0); }
		public EnableTypeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_enableType; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterEnableType(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitEnableType(this);
		}
	}

	public final EnableTypeContext enableType() throws RecognitionException {
		EnableTypeContext _localctx = new EnableTypeContext(_ctx, getState());
		enterRule(_localctx, 80, RULE_enableType);
		try {
			setState(1642);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,158,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(1637);
				match(ENABLE);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(1638);
				match(DISABLE);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(1639);
				match(DISABLE);
				setState(1640);
				match(ON);
				setState(1641);
				match(SLAVE);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IndexTypeContext extends ParserRuleContext {
		public TerminalNode USING() { return getToken(MySqlParser.USING, 0); }
		public TerminalNode BTREE() { return getToken(MySqlParser.BTREE, 0); }
		public TerminalNode HASH() { return getToken(MySqlParser.HASH, 0); }
		public TerminalNode RTREE() { return getToken(MySqlParser.RTREE, 0); }
		public IndexTypeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_indexType; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterIndexType(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitIndexType(this);
		}
	}

	public final IndexTypeContext indexType() throws RecognitionException {
		IndexTypeContext _localctx = new IndexTypeContext(_ctx, getState());
		enterRule(_localctx, 82, RULE_indexType);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1644);
			match(USING);
			setState(1645);
			_la = _input.LA(1);
			if ( !(_la==BTREE || _la==HASH || _la==RTREE) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IndexOptionContext extends ParserRuleContext {
		public TerminalNode KEY_BLOCK_SIZE() { return getToken(MySqlParser.KEY_BLOCK_SIZE, 0); }
		public FileSizeLiteralContext fileSizeLiteral() {
			return getRuleContext(FileSizeLiteralContext.class,0);
		}
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public IndexTypeContext indexType() {
			return getRuleContext(IndexTypeContext.class,0);
		}
		public TerminalNode WITH() { return getToken(MySqlParser.WITH, 0); }
		public TerminalNode PARSER() { return getToken(MySqlParser.PARSER, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode COMMENT() { return getToken(MySqlParser.COMMENT, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode VISIBLE() { return getToken(MySqlParser.VISIBLE, 0); }
		public TerminalNode INVISIBLE() { return getToken(MySqlParser.INVISIBLE, 0); }
		public TerminalNode ENGINE_ATTRIBUTE() { return getToken(MySqlParser.ENGINE_ATTRIBUTE, 0); }
		public TerminalNode SECONDARY_ENGINE_ATTRIBUTE() { return getToken(MySqlParser.SECONDARY_ENGINE_ATTRIBUTE, 0); }
		public TerminalNode CLUSTERING() { return getToken(MySqlParser.CLUSTERING, 0); }
		public TerminalNode YES() { return getToken(MySqlParser.YES, 0); }
		public TerminalNode NO() { return getToken(MySqlParser.NO, 0); }
		public TerminalNode IGNORED() { return getToken(MySqlParser.IGNORED, 0); }
		public TerminalNode NOT() { return getToken(MySqlParser.NOT, 0); }
		public IndexOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_indexOption; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterIndexOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitIndexOption(this);
		}
	}

	public final IndexOptionContext indexOption() throws RecognitionException {
		IndexOptionContext _localctx = new IndexOptionContext(_ctx, getState());
		enterRule(_localctx, 84, RULE_indexOption);
		int _la;
		try {
			setState(1677);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case KEY_BLOCK_SIZE:
				enterOuterAlt(_localctx, 1);
				{
				setState(1647);
				match(KEY_BLOCK_SIZE);
				setState(1649);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(1648);
					match(EQUAL_SYMBOL);
					}
				}

				setState(1651);
				fileSizeLiteral();
				}
				break;
			case USING:
				enterOuterAlt(_localctx, 2);
				{
				setState(1652);
				indexType();
				}
				break;
			case WITH:
				enterOuterAlt(_localctx, 3);
				{
				setState(1653);
				match(WITH);
				setState(1654);
				match(PARSER);
				setState(1655);
				uid();
				}
				break;
			case COMMENT:
				enterOuterAlt(_localctx, 4);
				{
				setState(1656);
				match(COMMENT);
				setState(1657);
				match(STRING_LITERAL);
				}
				break;
			case INVISIBLE:
			case VISIBLE:
				enterOuterAlt(_localctx, 5);
				{
				setState(1658);
				_la = _input.LA(1);
				if ( !(_la==INVISIBLE || _la==VISIBLE) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case ENGINE_ATTRIBUTE:
				enterOuterAlt(_localctx, 6);
				{
				setState(1659);
				match(ENGINE_ATTRIBUTE);
				setState(1661);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(1660);
					match(EQUAL_SYMBOL);
					}
				}

				setState(1663);
				match(STRING_LITERAL);
				}
				break;
			case SECONDARY_ENGINE_ATTRIBUTE:
				enterOuterAlt(_localctx, 7);
				{
				setState(1664);
				match(SECONDARY_ENGINE_ATTRIBUTE);
				setState(1666);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(1665);
					match(EQUAL_SYMBOL);
					}
				}

				setState(1668);
				match(STRING_LITERAL);
				}
				break;
			case CLUSTERING:
				enterOuterAlt(_localctx, 8);
				{
				setState(1669);
				match(CLUSTERING);
				setState(1670);
				match(EQUAL_SYMBOL);
				setState(1671);
				_la = _input.LA(1);
				if ( !(_la==NO || _la==YES) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case IGNORED:
			case NOT:
				enterOuterAlt(_localctx, 9);
				{
				setState(1675);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case IGNORED:
					{
					setState(1672);
					match(IGNORED);
					}
					break;
				case NOT:
					{
					setState(1673);
					match(NOT);
					setState(1674);
					match(IGNORED);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ProcedureParameterContext extends ParserRuleContext {
		public Token direction;
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public DataTypeContext dataType() {
			return getRuleContext(DataTypeContext.class,0);
		}
		public TerminalNode IN() { return getToken(MySqlParser.IN, 0); }
		public TerminalNode OUT() { return getToken(MySqlParser.OUT, 0); }
		public TerminalNode INOUT() { return getToken(MySqlParser.INOUT, 0); }
		public ProcedureParameterContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_procedureParameter; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterProcedureParameter(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitProcedureParameter(this);
		}
	}

	public final ProcedureParameterContext procedureParameter() throws RecognitionException {
		ProcedureParameterContext _localctx = new ProcedureParameterContext(_ctx, getState());
		enterRule(_localctx, 86, RULE_procedureParameter);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1680);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (((((_la - 82)) & ~0x3f) == 0 && ((1L << (_la - 82)) & ((1L << (IN - 82)) | (1L << (INOUT - 82)) | (1L << (OUT - 82)))) != 0)) {
				{
				setState(1679);
				((ProcedureParameterContext)_localctx).direction = _input.LT(1);
				_la = _input.LA(1);
				if ( !(((((_la - 82)) & ~0x3f) == 0 && ((1L << (_la - 82)) & ((1L << (IN - 82)) | (1L << (INOUT - 82)) | (1L << (OUT - 82)))) != 0)) ) {
					((ProcedureParameterContext)_localctx).direction = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(1682);
			uid();
			setState(1683);
			dataType();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FunctionParameterContext extends ParserRuleContext {
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public DataTypeContext dataType() {
			return getRuleContext(DataTypeContext.class,0);
		}
		public FunctionParameterContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_functionParameter; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterFunctionParameter(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitFunctionParameter(this);
		}
	}

	public final FunctionParameterContext functionParameter() throws RecognitionException {
		FunctionParameterContext _localctx = new FunctionParameterContext(_ctx, getState());
		enterRule(_localctx, 88, RULE_functionParameter);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1685);
			uid();
			setState(1686);
			dataType();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RoutineOptionContext extends ParserRuleContext {
		public RoutineOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_routineOption; }
	 
		public RoutineOptionContext() { }
		public void copyFrom(RoutineOptionContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class RoutineBehaviorContext extends RoutineOptionContext {
		public TerminalNode DETERMINISTIC() { return getToken(MySqlParser.DETERMINISTIC, 0); }
		public TerminalNode NOT() { return getToken(MySqlParser.NOT, 0); }
		public RoutineBehaviorContext(RoutineOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterRoutineBehavior(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitRoutineBehavior(this);
		}
	}
	public static class RoutineLanguageContext extends RoutineOptionContext {
		public TerminalNode LANGUAGE() { return getToken(MySqlParser.LANGUAGE, 0); }
		public TerminalNode SQL() { return getToken(MySqlParser.SQL, 0); }
		public RoutineLanguageContext(RoutineOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterRoutineLanguage(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitRoutineLanguage(this);
		}
	}
	public static class RoutineCommentContext extends RoutineOptionContext {
		public TerminalNode COMMENT() { return getToken(MySqlParser.COMMENT, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public RoutineCommentContext(RoutineOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterRoutineComment(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitRoutineComment(this);
		}
	}
	public static class RoutineSecurityContext extends RoutineOptionContext {
		public Token context;
		public TerminalNode SQL() { return getToken(MySqlParser.SQL, 0); }
		public TerminalNode SECURITY() { return getToken(MySqlParser.SECURITY, 0); }
		public TerminalNode DEFINER() { return getToken(MySqlParser.DEFINER, 0); }
		public TerminalNode INVOKER() { return getToken(MySqlParser.INVOKER, 0); }
		public RoutineSecurityContext(RoutineOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterRoutineSecurity(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitRoutineSecurity(this);
		}
	}
	public static class RoutineDataContext extends RoutineOptionContext {
		public TerminalNode CONTAINS() { return getToken(MySqlParser.CONTAINS, 0); }
		public TerminalNode SQL() { return getToken(MySqlParser.SQL, 0); }
		public TerminalNode NO() { return getToken(MySqlParser.NO, 0); }
		public TerminalNode READS() { return getToken(MySqlParser.READS, 0); }
		public TerminalNode DATA() { return getToken(MySqlParser.DATA, 0); }
		public TerminalNode MODIFIES() { return getToken(MySqlParser.MODIFIES, 0); }
		public RoutineDataContext(RoutineOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterRoutineData(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitRoutineData(this);
		}
	}

	public final RoutineOptionContext routineOption() throws RecognitionException {
		RoutineOptionContext _localctx = new RoutineOptionContext(_ctx, getState());
		enterRule(_localctx, 90, RULE_routineOption);
		int _la;
		try {
			setState(1711);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case COMMENT:
				_localctx = new RoutineCommentContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(1688);
				match(COMMENT);
				setState(1689);
				match(STRING_LITERAL);
				}
				break;
			case LANGUAGE:
				_localctx = new RoutineLanguageContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(1690);
				match(LANGUAGE);
				setState(1691);
				match(SQL);
				}
				break;
			case DETERMINISTIC:
			case NOT:
				_localctx = new RoutineBehaviorContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(1693);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==NOT) {
					{
					setState(1692);
					match(NOT);
					}
				}

				setState(1695);
				match(DETERMINISTIC);
				}
				break;
			case MODIFIES:
			case READS:
			case CONTAINS:
			case NO:
				_localctx = new RoutineDataContext(_localctx);
				enterOuterAlt(_localctx, 4);
				{
				setState(1706);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case CONTAINS:
					{
					setState(1696);
					match(CONTAINS);
					setState(1697);
					match(SQL);
					}
					break;
				case NO:
					{
					setState(1698);
					match(NO);
					setState(1699);
					match(SQL);
					}
					break;
				case READS:
					{
					setState(1700);
					match(READS);
					setState(1701);
					match(SQL);
					setState(1702);
					match(DATA);
					}
					break;
				case MODIFIES:
					{
					setState(1703);
					match(MODIFIES);
					setState(1704);
					match(SQL);
					setState(1705);
					match(DATA);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case SQL:
				_localctx = new RoutineSecurityContext(_localctx);
				enterOuterAlt(_localctx, 5);
				{
				setState(1708);
				match(SQL);
				setState(1709);
				match(SECURITY);
				setState(1710);
				((RoutineSecurityContext)_localctx).context = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==DEFINER || _la==INVOKER) ) {
					((RoutineSecurityContext)_localctx).context = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ServerOptionContext extends ParserRuleContext {
		public TerminalNode HOST() { return getToken(MySqlParser.HOST, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode DATABASE() { return getToken(MySqlParser.DATABASE, 0); }
		public TerminalNode USER() { return getToken(MySqlParser.USER, 0); }
		public TerminalNode PASSWORD() { return getToken(MySqlParser.PASSWORD, 0); }
		public TerminalNode SOCKET() { return getToken(MySqlParser.SOCKET, 0); }
		public TerminalNode OWNER() { return getToken(MySqlParser.OWNER, 0); }
		public TerminalNode PORT() { return getToken(MySqlParser.PORT, 0); }
		public DecimalLiteralContext decimalLiteral() {
			return getRuleContext(DecimalLiteralContext.class,0);
		}
		public ServerOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_serverOption; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterServerOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitServerOption(this);
		}
	}

	public final ServerOptionContext serverOption() throws RecognitionException {
		ServerOptionContext _localctx = new ServerOptionContext(_ctx, getState());
		enterRule(_localctx, 92, RULE_serverOption);
		try {
			setState(1727);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case HOST:
				enterOuterAlt(_localctx, 1);
				{
				setState(1713);
				match(HOST);
				setState(1714);
				match(STRING_LITERAL);
				}
				break;
			case DATABASE:
				enterOuterAlt(_localctx, 2);
				{
				setState(1715);
				match(DATABASE);
				setState(1716);
				match(STRING_LITERAL);
				}
				break;
			case USER:
				enterOuterAlt(_localctx, 3);
				{
				setState(1717);
				match(USER);
				setState(1718);
				match(STRING_LITERAL);
				}
				break;
			case PASSWORD:
				enterOuterAlt(_localctx, 4);
				{
				setState(1719);
				match(PASSWORD);
				setState(1720);
				match(STRING_LITERAL);
				}
				break;
			case SOCKET:
				enterOuterAlt(_localctx, 5);
				{
				setState(1721);
				match(SOCKET);
				setState(1722);
				match(STRING_LITERAL);
				}
				break;
			case OWNER:
				enterOuterAlt(_localctx, 6);
				{
				setState(1723);
				match(OWNER);
				setState(1724);
				match(STRING_LITERAL);
				}
				break;
			case PORT:
				enterOuterAlt(_localctx, 7);
				{
				setState(1725);
				match(PORT);
				setState(1726);
				decimalLiteral();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateDefinitionsContext extends ParserRuleContext {
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public List createDefinition() {
			return getRuleContexts(CreateDefinitionContext.class);
		}
		public CreateDefinitionContext createDefinition(int i) {
			return getRuleContext(CreateDefinitionContext.class,i);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public CreateDefinitionsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createDefinitions; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCreateDefinitions(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCreateDefinitions(this);
		}
	}

	public final CreateDefinitionsContext createDefinitions() throws RecognitionException {
		CreateDefinitionsContext _localctx = new CreateDefinitionsContext(_ctx, getState());
		enterRule(_localctx, 94, RULE_createDefinitions);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1729);
			match(LR_BRACKET);
			setState(1730);
			createDefinition();
			setState(1735);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(1731);
				match(COMMA);
				setState(1732);
				createDefinition();
				}
				}
				setState(1737);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(1738);
			match(RR_BRACKET);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateDefinitionContext extends ParserRuleContext {
		public CreateDefinitionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createDefinition; }
	 
		public CreateDefinitionContext() { }
		public void copyFrom(CreateDefinitionContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class ColumnDeclarationContext extends CreateDefinitionContext {
		public FullColumnNameContext fullColumnName() {
			return getRuleContext(FullColumnNameContext.class,0);
		}
		public ColumnDefinitionContext columnDefinition() {
			return getRuleContext(ColumnDefinitionContext.class,0);
		}
		public ColumnDeclarationContext(CreateDefinitionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterColumnDeclaration(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitColumnDeclaration(this);
		}
	}
	public static class ConstraintDeclarationContext extends CreateDefinitionContext {
		public TableConstraintContext tableConstraint() {
			return getRuleContext(TableConstraintContext.class,0);
		}
		public TerminalNode NOT() { return getToken(MySqlParser.NOT, 0); }
		public TerminalNode ENFORCED() { return getToken(MySqlParser.ENFORCED, 0); }
		public ConstraintDeclarationContext(CreateDefinitionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterConstraintDeclaration(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitConstraintDeclaration(this);
		}
	}
	public static class IndexDeclarationContext extends CreateDefinitionContext {
		public IndexColumnDefinitionContext indexColumnDefinition() {
			return getRuleContext(IndexColumnDefinitionContext.class,0);
		}
		public IndexDeclarationContext(CreateDefinitionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterIndexDeclaration(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitIndexDeclaration(this);
		}
	}

	public final CreateDefinitionContext createDefinition() throws RecognitionException {
		CreateDefinitionContext _localctx = new CreateDefinitionContext(_ctx, getState());
		enterRule(_localctx, 96, RULE_createDefinition);
		int _la;
		try {
			setState(1751);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,172,_ctx) ) {
			case 1:
				_localctx = new ColumnDeclarationContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(1740);
				fullColumnName();
				setState(1741);
				columnDefinition();
				}
				break;
			case 2:
				_localctx = new ConstraintDeclarationContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(1743);
				tableConstraint();
				setState(1745);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==NOT) {
					{
					setState(1744);
					match(NOT);
					}
				}

				setState(1748);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==ENFORCED) {
					{
					setState(1747);
					match(ENFORCED);
					}
				}

				}
				break;
			case 3:
				_localctx = new IndexDeclarationContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(1750);
				indexColumnDefinition();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ColumnDefinitionContext extends ParserRuleContext {
		public DataTypeContext dataType() {
			return getRuleContext(DataTypeContext.class,0);
		}
		public List columnConstraint() {
			return getRuleContexts(ColumnConstraintContext.class);
		}
		public ColumnConstraintContext columnConstraint(int i) {
			return getRuleContext(ColumnConstraintContext.class,i);
		}
		public TerminalNode NOT() { return getToken(MySqlParser.NOT, 0); }
		public TerminalNode ENFORCED() { return getToken(MySqlParser.ENFORCED, 0); }
		public ColumnDefinitionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_columnDefinition; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterColumnDefinition(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitColumnDefinition(this);
		}
	}

	public final ColumnDefinitionContext columnDefinition() throws RecognitionException {
		ColumnDefinitionContext _localctx = new ColumnDefinitionContext(_ctx, getState());
		enterRule(_localctx, 98, RULE_columnDefinition);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(1753);
			dataType();
			setState(1757);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,173,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					{
					{
					setState(1754);
					columnConstraint();
					}
					} 
				}
				setState(1759);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,173,_ctx);
			}
			setState(1761);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==NOT) {
				{
				setState(1760);
				match(NOT);
				}
			}

			setState(1764);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ENFORCED) {
				{
				setState(1763);
				match(ENFORCED);
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ColumnConstraintContext extends ParserRuleContext {
		public ColumnConstraintContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_columnConstraint; }
	 
		public ColumnConstraintContext() { }
		public void copyFrom(ColumnConstraintContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class StorageColumnConstraintContext extends ColumnConstraintContext {
		public Token storageval;
		public TerminalNode STORAGE() { return getToken(MySqlParser.STORAGE, 0); }
		public TerminalNode DISK() { return getToken(MySqlParser.DISK, 0); }
		public TerminalNode MEMORY() { return getToken(MySqlParser.MEMORY, 0); }
		public TerminalNode DEFAULT() { return getToken(MySqlParser.DEFAULT, 0); }
		public StorageColumnConstraintContext(ColumnConstraintContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterStorageColumnConstraint(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitStorageColumnConstraint(this);
		}
	}
	public static class VisibilityColumnConstraintContext extends ColumnConstraintContext {
		public TerminalNode VISIBLE() { return getToken(MySqlParser.VISIBLE, 0); }
		public VisibilityColumnConstraintContext(ColumnConstraintContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterVisibilityColumnConstraint(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitVisibilityColumnConstraint(this);
		}
	}
	public static class AutoIncrementColumnConstraintContext extends ColumnConstraintContext {
		public TerminalNode AUTO_INCREMENT() { return getToken(MySqlParser.AUTO_INCREMENT, 0); }
		public TerminalNode ON() { return getToken(MySqlParser.ON, 0); }
		public TerminalNode UPDATE() { return getToken(MySqlParser.UPDATE, 0); }
		public CurrentTimestampContext currentTimestamp() {
			return getRuleContext(CurrentTimestampContext.class,0);
		}
		public AutoIncrementColumnConstraintContext(ColumnConstraintContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAutoIncrementColumnConstraint(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAutoIncrementColumnConstraint(this);
		}
	}
	public static class ClusteringKeyColumnConstraintContext extends ColumnConstraintContext {
		public TerminalNode CLUSTERING() { return getToken(MySqlParser.CLUSTERING, 0); }
		public TerminalNode KEY() { return getToken(MySqlParser.KEY, 0); }
		public ClusteringKeyColumnConstraintContext(ColumnConstraintContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterClusteringKeyColumnConstraint(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitClusteringKeyColumnConstraint(this);
		}
	}
	public static class CommentColumnConstraintContext extends ColumnConstraintContext {
		public TerminalNode COMMENT() { return getToken(MySqlParser.COMMENT, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public CommentColumnConstraintContext(ColumnConstraintContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCommentColumnConstraint(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCommentColumnConstraint(this);
		}
	}
	public static class UniqueKeyColumnConstraintContext extends ColumnConstraintContext {
		public TerminalNode UNIQUE() { return getToken(MySqlParser.UNIQUE, 0); }
		public TerminalNode KEY() { return getToken(MySqlParser.KEY, 0); }
		public UniqueKeyColumnConstraintContext(ColumnConstraintContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterUniqueKeyColumnConstraint(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitUniqueKeyColumnConstraint(this);
		}
	}
	public static class SerialDefaultColumnConstraintContext extends ColumnConstraintContext {
		public TerminalNode SERIAL() { return getToken(MySqlParser.SERIAL, 0); }
		public TerminalNode DEFAULT() { return getToken(MySqlParser.DEFAULT, 0); }
		public TerminalNode VALUE() { return getToken(MySqlParser.VALUE, 0); }
		public SerialDefaultColumnConstraintContext(ColumnConstraintContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSerialDefaultColumnConstraint(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSerialDefaultColumnConstraint(this);
		}
	}
	public static class GeneratedColumnConstraintContext extends ColumnConstraintContext {
		public TerminalNode AS() { return getToken(MySqlParser.AS, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TerminalNode GENERATED() { return getToken(MySqlParser.GENERATED, 0); }
		public TerminalNode ALWAYS() { return getToken(MySqlParser.ALWAYS, 0); }
		public TerminalNode VIRTUAL() { return getToken(MySqlParser.VIRTUAL, 0); }
		public TerminalNode STORED() { return getToken(MySqlParser.STORED, 0); }
		public TerminalNode PERSISTENT() { return getToken(MySqlParser.PERSISTENT, 0); }
		public GeneratedColumnConstraintContext(ColumnConstraintContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterGeneratedColumnConstraint(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitGeneratedColumnConstraint(this);
		}
	}
	public static class FormatColumnConstraintContext extends ColumnConstraintContext {
		public Token colformat;
		public TerminalNode COLUMN_FORMAT() { return getToken(MySqlParser.COLUMN_FORMAT, 0); }
		public TerminalNode FIXED() { return getToken(MySqlParser.FIXED, 0); }
		public TerminalNode DYNAMIC() { return getToken(MySqlParser.DYNAMIC, 0); }
		public TerminalNode DEFAULT() { return getToken(MySqlParser.DEFAULT, 0); }
		public FormatColumnConstraintContext(ColumnConstraintContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterFormatColumnConstraint(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitFormatColumnConstraint(this);
		}
	}
	public static class CollateColumnConstraintContext extends ColumnConstraintContext {
		public TerminalNode COLLATE() { return getToken(MySqlParser.COLLATE, 0); }
		public CollationNameContext collationName() {
			return getRuleContext(CollationNameContext.class,0);
		}
		public CollateColumnConstraintContext(ColumnConstraintContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCollateColumnConstraint(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCollateColumnConstraint(this);
		}
	}
	public static class PrimaryKeyColumnConstraintContext extends ColumnConstraintContext {
		public TerminalNode KEY() { return getToken(MySqlParser.KEY, 0); }
		public TerminalNode PRIMARY() { return getToken(MySqlParser.PRIMARY, 0); }
		public PrimaryKeyColumnConstraintContext(ColumnConstraintContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPrimaryKeyColumnConstraint(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPrimaryKeyColumnConstraint(this);
		}
	}
	public static class CheckColumnConstraintContext extends ColumnConstraintContext {
		public UidContext name;
		public TerminalNode CHECK() { return getToken(MySqlParser.CHECK, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TerminalNode CONSTRAINT() { return getToken(MySqlParser.CONSTRAINT, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public CheckColumnConstraintContext(ColumnConstraintContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCheckColumnConstraint(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCheckColumnConstraint(this);
		}
	}
	public static class NullColumnConstraintContext extends ColumnConstraintContext {
		public NullNotnullContext nullNotnull() {
			return getRuleContext(NullNotnullContext.class,0);
		}
		public NullColumnConstraintContext(ColumnConstraintContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterNullColumnConstraint(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitNullColumnConstraint(this);
		}
	}
	public static class DefaultColumnConstraintContext extends ColumnConstraintContext {
		public TerminalNode DEFAULT() { return getToken(MySqlParser.DEFAULT, 0); }
		public DefaultValueContext defaultValue() {
			return getRuleContext(DefaultValueContext.class,0);
		}
		public DefaultColumnConstraintContext(ColumnConstraintContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDefaultColumnConstraint(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDefaultColumnConstraint(this);
		}
	}
	public static class ReferenceColumnConstraintContext extends ColumnConstraintContext {
		public ReferenceDefinitionContext referenceDefinition() {
			return getRuleContext(ReferenceDefinitionContext.class,0);
		}
		public ReferenceColumnConstraintContext(ColumnConstraintContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterReferenceColumnConstraint(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitReferenceColumnConstraint(this);
		}
	}
	public static class InvisibilityColumnConstraintContext extends ColumnConstraintContext {
		public TerminalNode INVISIBLE() { return getToken(MySqlParser.INVISIBLE, 0); }
		public InvisibilityColumnConstraintContext(ColumnConstraintContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterInvisibilityColumnConstraint(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitInvisibilityColumnConstraint(this);
		}
	}

	public final ColumnConstraintContext columnConstraint() throws RecognitionException {
		ColumnConstraintContext _localctx = new ColumnConstraintContext(_ctx, getState());
		enterRule(_localctx, 100, RULE_columnConstraint);
		int _la;
		try {
			setState(1821);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case NOT:
			case NULL_LITERAL:
			case NULL_SPEC_LITERAL:
				_localctx = new NullColumnConstraintContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(1766);
				nullNotnull();
				}
				break;
			case DEFAULT:
				_localctx = new DefaultColumnConstraintContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(1767);
				match(DEFAULT);
				setState(1768);
				defaultValue();
				}
				break;
			case VISIBLE:
				_localctx = new VisibilityColumnConstraintContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(1769);
				match(VISIBLE);
				}
				break;
			case INVISIBLE:
				_localctx = new InvisibilityColumnConstraintContext(_localctx);
				enterOuterAlt(_localctx, 4);
				{
				setState(1770);
				match(INVISIBLE);
				}
				break;
			case ON:
			case AUTO_INCREMENT:
				_localctx = new AutoIncrementColumnConstraintContext(_localctx);
				enterOuterAlt(_localctx, 5);
				{
				setState(1775);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case AUTO_INCREMENT:
					{
					setState(1771);
					match(AUTO_INCREMENT);
					}
					break;
				case ON:
					{
					setState(1772);
					match(ON);
					setState(1773);
					match(UPDATE);
					setState(1774);
					currentTimestamp();
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case KEY:
			case PRIMARY:
				_localctx = new PrimaryKeyColumnConstraintContext(_localctx);
				enterOuterAlt(_localctx, 6);
				{
				setState(1778);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==PRIMARY) {
					{
					setState(1777);
					match(PRIMARY);
					}
				}

				setState(1780);
				match(KEY);
				}
				break;
			case CLUSTERING:
				_localctx = new ClusteringKeyColumnConstraintContext(_localctx);
				enterOuterAlt(_localctx, 7);
				{
				setState(1781);
				match(CLUSTERING);
				setState(1782);
				match(KEY);
				}
				break;
			case UNIQUE:
				_localctx = new UniqueKeyColumnConstraintContext(_localctx);
				enterOuterAlt(_localctx, 8);
				{
				setState(1783);
				match(UNIQUE);
				setState(1785);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,178,_ctx) ) {
				case 1:
					{
					setState(1784);
					match(KEY);
					}
					break;
				}
				}
				break;
			case COMMENT:
				_localctx = new CommentColumnConstraintContext(_localctx);
				enterOuterAlt(_localctx, 9);
				{
				setState(1787);
				match(COMMENT);
				setState(1788);
				match(STRING_LITERAL);
				}
				break;
			case COLUMN_FORMAT:
				_localctx = new FormatColumnConstraintContext(_localctx);
				enterOuterAlt(_localctx, 10);
				{
				setState(1789);
				match(COLUMN_FORMAT);
				setState(1790);
				((FormatColumnConstraintContext)_localctx).colformat = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==DEFAULT || _la==DYNAMIC || _la==FIXED) ) {
					((FormatColumnConstraintContext)_localctx).colformat = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case STORAGE:
				_localctx = new StorageColumnConstraintContext(_localctx);
				enterOuterAlt(_localctx, 11);
				{
				setState(1791);
				match(STORAGE);
				setState(1792);
				((StorageColumnConstraintContext)_localctx).storageval = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==DEFAULT || _la==DISK || _la==MEMORY) ) {
					((StorageColumnConstraintContext)_localctx).storageval = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case REFERENCES:
				_localctx = new ReferenceColumnConstraintContext(_localctx);
				enterOuterAlt(_localctx, 12);
				{
				setState(1793);
				referenceDefinition();
				}
				break;
			case COLLATE:
				_localctx = new CollateColumnConstraintContext(_localctx);
				enterOuterAlt(_localctx, 13);
				{
				setState(1794);
				match(COLLATE);
				setState(1795);
				collationName();
				}
				break;
			case AS:
			case GENERATED:
				_localctx = new GeneratedColumnConstraintContext(_localctx);
				enterOuterAlt(_localctx, 14);
				{
				setState(1798);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==GENERATED) {
					{
					setState(1796);
					match(GENERATED);
					setState(1797);
					match(ALWAYS);
					}
				}

				setState(1800);
				match(AS);
				setState(1801);
				match(LR_BRACKET);
				setState(1802);
				expression(0);
				setState(1803);
				match(RR_BRACKET);
				setState(1805);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==STORED || _la==VIRTUAL || _la==PERSISTENT) {
					{
					setState(1804);
					_la = _input.LA(1);
					if ( !(_la==STORED || _la==VIRTUAL || _la==PERSISTENT) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
				}

				}
				break;
			case SERIAL:
				_localctx = new SerialDefaultColumnConstraintContext(_localctx);
				enterOuterAlt(_localctx, 15);
				{
				setState(1807);
				match(SERIAL);
				setState(1808);
				match(DEFAULT);
				setState(1809);
				match(VALUE);
				}
				break;
			case CHECK:
			case CONSTRAINT:
				_localctx = new CheckColumnConstraintContext(_localctx);
				enterOuterAlt(_localctx, 16);
				{
				setState(1814);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==CONSTRAINT) {
					{
					setState(1810);
					match(CONSTRAINT);
					setState(1812);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ARRAY) | (1L << ATTRIBUTE) | (1L << BUCKETS) | (1L << CONDITION) | (1L << CURRENT) | (1L << CURRENT_ROLE) | (1L << CURRENT_USER) | (1L << DATABASE) | (1L << DEFAULT) | (1L << DIAGNOSTICS) | (1L << EMPTY) | (1L << ENFORCED) | (1L << EXCEPT))) != 0) || ((((_la - 74)) & ~0x3f) == 0 && ((1L << (_la - 74)) & ((1L << (GROUP - 74)) | (1L << (GROUP_REPLICATION_STREAM - 74)) | (1L << (IF - 74)) | (1L << (IGNORED - 74)) | (1L << (INSERT - 74)) | (1L << (LATERAL - 74)) | (1L << (LEFT - 74)) | (1L << (LOCKED - 74)) | (1L << (MAXVALUE - 74)) | (1L << (MINVALUE - 74)) | (1L << (NUMBER - 74)) | (1L << (OPTIONAL - 74)) | (1L << (ORDER - 74)) | (1L << (PRIMARY - 74)))) != 0) || ((((_la - 142)) & ~0x3f) == 0 && ((1L << (_la - 142)) & ((1L << (REPEAT - 142)) | (1L << (REPLACE - 142)) | (1L << (RIGHT - 142)) | (1L << (SCHEMA - 142)) | (1L << (SKIP_ - 142)) | (1L << (SKIP_QUERY_REWRITE - 142)) | (1L << (STACKED - 142)) | (1L << (STATEMENT - 142)))) != 0) || ((((_la - 220)) & ~0x3f) == 0 && ((1L << (_la - 220)) & ((1L << (DATE - 220)) | (1L << (TIME - 220)) | (1L << (TIMESTAMP - 220)) | (1L << (DATETIME - 220)) | (1L << (YEAR - 220)) | (1L << (NATIONAL - 220)) | (1L << (BINARY - 220)) | (1L << (TEXT - 220)) | (1L << (ENUM - 220)) | (1L << (SERIAL - 220)) | (1L << (JSON_ARRAY - 220)) | (1L << (JSON_ARRAYAGG - 220)) | (1L << (JSON_ARRAY_APPEND - 220)) | (1L << (JSON_ARRAY_INSERT - 220)) | (1L << (JSON_CONTAINS - 220)) | (1L << (JSON_CONTAINS_PATH - 220)) | (1L << (JSON_DEPTH - 220)) | (1L << (JSON_EXTRACT - 220)) | (1L << (JSON_INSERT - 220)) | (1L << (JSON_KEYS - 220)) | (1L << (JSON_LENGTH - 220)) | (1L << (JSON_MERGE - 220)) | (1L << (JSON_MERGE_PATCH - 220)) | (1L << (JSON_MERGE_PRESERVE - 220)) | (1L << (JSON_OBJECT - 220)) | (1L << (JSON_OBJECTAGG - 220)) | (1L << (JSON_OVERLAPS - 220)) | (1L << (JSON_PRETTY - 220)) | (1L << (JSON_QUOTE - 220)) | (1L << (JSON_REMOVE - 220)) | (1L << (JSON_REPLACE - 220)) | (1L << (JSON_SCHEMA_VALID - 220)) | (1L << (JSON_SCHEMA_VALIDATION_REPORT - 220)) | (1L << (JSON_SEARCH - 220)) | (1L << (JSON_SET - 220)) | (1L << (JSON_STORAGE_FREE - 220)) | (1L << (JSON_STORAGE_SIZE - 220)) | (1L << (JSON_TABLE - 220)) | (1L << (JSON_TYPE - 220)) | (1L << (JSON_UNQUOTE - 220)))) != 0) || ((((_la - 284)) & ~0x3f) == 0 && ((1L << (_la - 284)) & ((1L << (JSON_VALID - 284)) | (1L << (JSON_VALUE - 284)) | (1L << (NESTED - 284)) | (1L << (ORDINALITY - 284)) | (1L << (PATH - 284)) | (1L << (AVG - 284)) | (1L << (BIT_AND - 284)) | (1L << (BIT_OR - 284)) | (1L << (BIT_XOR - 284)) | (1L << (COUNT - 284)) | (1L << (CUME_DIST - 284)) | (1L << (DENSE_RANK - 284)) | (1L << (FIRST_VALUE - 284)) | (1L << (GROUP_CONCAT - 284)) | (1L << (LAG - 284)) | (1L << (LAST_VALUE - 284)) | (1L << (LEAD - 284)) | (1L << (MAX - 284)) | (1L << (MIN - 284)) | (1L << (NTILE - 284)) | (1L << (NTH_VALUE - 284)) | (1L << (PERCENT_RANK - 284)) | (1L << (RANK - 284)) | (1L << (ROW_NUMBER - 284)) | (1L << (STD - 284)) | (1L << (STDDEV - 284)) | (1L << (STDDEV_POP - 284)) | (1L << (STDDEV_SAMP - 284)) | (1L << (SUM - 284)) | (1L << (VAR_POP - 284)) | (1L << (VAR_SAMP - 284)) | (1L << (VARIANCE - 284)) | (1L << (CURRENT_DATE - 284)) | (1L << (CURRENT_TIME - 284)) | (1L << (CURRENT_TIMESTAMP - 284)) | (1L << (LOCALTIME - 284)) | (1L << (CURDATE - 284)) | (1L << (CURTIME - 284)) | (1L << (DATE_ADD - 284)) | (1L << (DATE_SUB - 284)) | (1L << (LOCALTIMESTAMP - 284)) | (1L << (NOW - 284)) | (1L << (POSITION - 284)) | (1L << (SUBSTR - 284)) | (1L << (SUBSTRING - 284)) | (1L << (SYSDATE - 284)) | (1L << (TRIM - 284)) | (1L << (UTC_DATE - 284)) | (1L << (UTC_TIME - 284)) | (1L << (UTC_TIMESTAMP - 284)) | (1L << (ACCOUNT - 284)) | (1L << (ACTION - 284)) | (1L << (AFTER - 284)) | (1L << (AGGREGATE - 284)) | (1L << (ALGORITHM - 284)) | (1L << (ANY - 284)) | (1L << (AT - 284)) | (1L << (AUTHORS - 284)) | (1L << (AUTOCOMMIT - 284)) | (1L << (AUTOEXTEND_SIZE - 284)) | (1L << (AUTO_INCREMENT - 284)) | (1L << (AVG_ROW_LENGTH - 284)) | (1L << (BEGIN - 284)))) != 0) || ((((_la - 348)) & ~0x3f) == 0 && ((1L << (_la - 348)) & ((1L << (BINLOG - 348)) | (1L << (BIT - 348)) | (1L << (BLOCK - 348)) | (1L << (BOOL - 348)) | (1L << (BOOLEAN - 348)) | (1L << (BTREE - 348)) | (1L << (CACHE - 348)) | (1L << (CASCADED - 348)) | (1L << (CHAIN - 348)) | (1L << (CHANGED - 348)) | (1L << (CHANNEL - 348)) | (1L << (CHECKSUM - 348)) | (1L << (PAGE_CHECKSUM - 348)) | (1L << (CIPHER - 348)) | (1L << (CLASS_ORIGIN - 348)) | (1L << (CLIENT - 348)) | (1L << (CLOSE - 348)) | (1L << (CLUSTERING - 348)) | (1L << (COALESCE - 348)) | (1L << (CODE - 348)) | (1L << (COLUMNS - 348)) | (1L << (COLUMN_FORMAT - 348)) | (1L << (COLUMN_NAME - 348)) | (1L << (COMMENT - 348)) | (1L << (COMMIT - 348)) | (1L << (COMPACT - 348)) | (1L << (COMPLETION - 348)) | (1L << (COMPRESSED - 348)) | (1L << (COMPRESSION - 348)) | (1L << (CONCURRENT - 348)) | (1L << (CONNECT - 348)) | (1L << (CONNECTION - 348)) | (1L << (CONSISTENT - 348)) | (1L << (CONSTRAINT_CATALOG - 348)) | (1L << (CONSTRAINT_SCHEMA - 348)) | (1L << (CONSTRAINT_NAME - 348)) | (1L << (CONTAINS - 348)) | (1L << (CONTEXT - 348)) | (1L << (CONTRIBUTORS - 348)) | (1L << (COPY - 348)) | (1L << (CPU - 348)) | (1L << (CYCLE - 348)) | (1L << (CURSOR_NAME - 348)) | (1L << (DATA - 348)) | (1L << (DATAFILE - 348)) | (1L << (DEALLOCATE - 348)) | (1L << (DEFAULT_AUTH - 348)) | (1L << (DEFINER - 348)) | (1L << (DELAY_KEY_WRITE - 348)) | (1L << (DES_KEY_FILE - 348)) | (1L << (DIRECTORY - 348)) | (1L << (DISABLE - 348)) | (1L << (DISCARD - 348)) | (1L << (DISK - 348)) | (1L << (DO - 348)) | (1L << (DUMPFILE - 348)) | (1L << (DUPLICATE - 348)) | (1L << (DYNAMIC - 348)) | (1L << (ENABLE - 348)) | (1L << (ENCRYPTED - 348)) | (1L << (ENCRYPTION - 348)) | (1L << (ENCRYPTION_KEY_ID - 348)) | (1L << (END - 348)) | (1L << (ENDS - 348)))) != 0) || ((((_la - 412)) & ~0x3f) == 0 && ((1L << (_la - 412)) & ((1L << (ENGINE - 412)) | (1L << (ENGINES - 412)) | (1L << (ERROR - 412)) | (1L << (ERRORS - 412)) | (1L << (ESCAPE - 412)) | (1L << (EVEN - 412)) | (1L << (EVENT - 412)) | (1L << (EVENTS - 412)) | (1L << (EVERY - 412)) | (1L << (EXCHANGE - 412)) | (1L << (EXCLUSIVE - 412)) | (1L << (EXPIRE - 412)) | (1L << (EXPORT - 412)) | (1L << (EXTENDED - 412)) | (1L << (EXTENT_SIZE - 412)) | (1L << (FAILED_LOGIN_ATTEMPTS - 412)) | (1L << (FAST - 412)) | (1L << (FAULTS - 412)) | (1L << (FIELDS - 412)) | (1L << (FILE_BLOCK_SIZE - 412)) | (1L << (FILTER - 412)) | (1L << (FIRST - 412)) | (1L << (FIXED - 412)) | (1L << (FLUSH - 412)) | (1L << (FOLLOWS - 412)) | (1L << (FOUND - 412)) | (1L << (FULL - 412)) | (1L << (FUNCTION - 412)) | (1L << (GENERAL - 412)) | (1L << (GLOBAL - 412)) | (1L << (GRANTS - 412)) | (1L << (GROUP_REPLICATION - 412)) | (1L << (HANDLER - 412)) | (1L << (HASH - 412)) | (1L << (HELP - 412)) | (1L << (HISTORY - 412)) | (1L << (HOST - 412)) | (1L << (HOSTS - 412)) | (1L << (IDENTIFIED - 412)) | (1L << (IGNORE_SERVER_IDS - 412)) | (1L << (IMPORT - 412)) | (1L << (INCREMENT - 412)) | (1L << (INDEXES - 412)) | (1L << (INITIAL_SIZE - 412)) | (1L << (INPLACE - 412)) | (1L << (INSERT_METHOD - 412)) | (1L << (INSTALL - 412)) | (1L << (INSTANCE - 412)) | (1L << (INSTANT - 412)) | (1L << (INVISIBLE - 412)) | (1L << (INVOKER - 412)) | (1L << (IO - 412)) | (1L << (IO_THREAD - 412)) | (1L << (IPC - 412)) | (1L << (ISOLATION - 412)) | (1L << (ISSUER - 412)) | (1L << (JSON - 412)) | (1L << (KEY_BLOCK_SIZE - 412)) | (1L << (LANGUAGE - 412)) | (1L << (LAST - 412)) | (1L << (LEAVES - 412)) | (1L << (LESS - 412)) | (1L << (LEVEL - 412)))) != 0) || ((((_la - 476)) & ~0x3f) == 0 && ((1L << (_la - 476)) & ((1L << (LIST - 476)) | (1L << (LOCAL - 476)) | (1L << (LOGFILE - 476)) | (1L << (LOGS - 476)) | (1L << (MASTER - 476)) | (1L << (MASTER_AUTO_POSITION - 476)) | (1L << (MASTER_CONNECT_RETRY - 476)) | (1L << (MASTER_DELAY - 476)) | (1L << (MASTER_HEARTBEAT_PERIOD - 476)) | (1L << (MASTER_HOST - 476)) | (1L << (MASTER_LOG_FILE - 476)) | (1L << (MASTER_LOG_POS - 476)) | (1L << (MASTER_PASSWORD - 476)) | (1L << (MASTER_PORT - 476)) | (1L << (MASTER_RETRY_COUNT - 476)) | (1L << (MASTER_SSL - 476)) | (1L << (MASTER_SSL_CA - 476)) | (1L << (MASTER_SSL_CAPATH - 476)) | (1L << (MASTER_SSL_CERT - 476)) | (1L << (MASTER_SSL_CIPHER - 476)) | (1L << (MASTER_SSL_CRL - 476)) | (1L << (MASTER_SSL_CRLPATH - 476)) | (1L << (MASTER_SSL_KEY - 476)) | (1L << (MASTER_TLS_VERSION - 476)) | (1L << (MASTER_USER - 476)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 476)) | (1L << (MAX_QUERIES_PER_HOUR - 476)) | (1L << (MAX_ROWS - 476)) | (1L << (MAX_SIZE - 476)) | (1L << (MAX_UPDATES_PER_HOUR - 476)) | (1L << (MAX_USER_CONNECTIONS - 476)) | (1L << (MEDIUM - 476)) | (1L << (MEMBER - 476)) | (1L << (MERGE - 476)) | (1L << (MESSAGE_TEXT - 476)) | (1L << (MID - 476)) | (1L << (MIGRATE - 476)) | (1L << (MIN_ROWS - 476)) | (1L << (MODE - 476)) | (1L << (MODIFY - 476)) | (1L << (MUTEX - 476)) | (1L << (MYSQL - 476)) | (1L << (MYSQL_ERRNO - 476)) | (1L << (NAME - 476)) | (1L << (NAMES - 476)) | (1L << (NCHAR - 476)) | (1L << (NEVER - 476)) | (1L << (NEXT - 476)) | (1L << (NO - 476)) | (1L << (NOCACHE - 476)) | (1L << (NOCOPY - 476)) | (1L << (NOCYCLE - 476)) | (1L << (NOMAXVALUE - 476)) | (1L << (NOMINVALUE - 476)) | (1L << (NOWAIT - 476)) | (1L << (NODEGROUP - 476)) | (1L << (NONE - 476)) | (1L << (ODBC - 476)) | (1L << (OFFLINE - 476)) | (1L << (OFFSET - 476)) | (1L << (OF - 476)) | (1L << (OJ - 476)) | (1L << (OLD_PASSWORD - 476)) | (1L << (ONE - 476)))) != 0) || ((((_la - 540)) & ~0x3f) == 0 && ((1L << (_la - 540)) & ((1L << (ONLINE - 540)) | (1L << (ONLY - 540)) | (1L << (OPEN - 540)) | (1L << (OPTIMIZER_COSTS - 540)) | (1L << (OPTIONS - 540)) | (1L << (OWNER - 540)) | (1L << (PACK_KEYS - 540)) | (1L << (PAGE - 540)) | (1L << (PARSER - 540)) | (1L << (PARTIAL - 540)) | (1L << (PARTITIONING - 540)) | (1L << (PARTITIONS - 540)) | (1L << (PASSWORD - 540)) | (1L << (PASSWORD_LOCK_TIME - 540)) | (1L << (PHASE - 540)) | (1L << (PLUGIN - 540)) | (1L << (PLUGIN_DIR - 540)) | (1L << (PLUGINS - 540)) | (1L << (PORT - 540)) | (1L << (PRECEDES - 540)) | (1L << (PREPARE - 540)) | (1L << (PRESERVE - 540)) | (1L << (PREV - 540)) | (1L << (PROCESSLIST - 540)) | (1L << (PROFILE - 540)) | (1L << (PROFILES - 540)) | (1L << (PROXY - 540)) | (1L << (QUERY - 540)) | (1L << (QUICK - 540)) | (1L << (REBUILD - 540)) | (1L << (RECOVER - 540)) | (1L << (RECURSIVE - 540)) | (1L << (REDO_BUFFER_SIZE - 540)) | (1L << (REDUNDANT - 540)) | (1L << (RELAY - 540)) | (1L << (RELAY_LOG_FILE - 540)) | (1L << (RELAY_LOG_POS - 540)) | (1L << (RELAYLOG - 540)) | (1L << (REMOVE - 540)) | (1L << (REORGANIZE - 540)) | (1L << (REPAIR - 540)) | (1L << (REPLICATE_DO_DB - 540)) | (1L << (REPLICATE_DO_TABLE - 540)) | (1L << (REPLICATE_IGNORE_DB - 540)) | (1L << (REPLICATE_IGNORE_TABLE - 540)) | (1L << (REPLICATE_REWRITE_DB - 540)) | (1L << (REPLICATE_WILD_DO_TABLE - 540)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 540)) | (1L << (REPLICATION - 540)) | (1L << (RESET - 540)) | (1L << (RESTART - 540)) | (1L << (RESUME - 540)) | (1L << (RETURNED_SQLSTATE - 540)) | (1L << (RETURNING - 540)) | (1L << (RETURNS - 540)) | (1L << (REUSE - 540)) | (1L << (ROLE - 540)) | (1L << (ROLLBACK - 540)) | (1L << (ROLLUP - 540)) | (1L << (ROTATE - 540)) | (1L << (ROW - 540)))) != 0) || ((((_la - 604)) & ~0x3f) == 0 && ((1L << (_la - 604)) & ((1L << (ROWS - 604)) | (1L << (ROW_FORMAT - 604)) | (1L << (RTREE - 604)) | (1L << (SAVEPOINT - 604)) | (1L << (SCHEDULE - 604)) | (1L << (SECURITY - 604)) | (1L << (SEQUENCE - 604)) | (1L << (SERVER - 604)) | (1L << (SESSION - 604)) | (1L << (SHARE - 604)) | (1L << (SHARED - 604)) | (1L << (SIGNED - 604)) | (1L << (SIMPLE - 604)) | (1L << (SLAVE - 604)) | (1L << (SLOW - 604)) | (1L << (SNAPSHOT - 604)) | (1L << (SOCKET - 604)) | (1L << (SOME - 604)) | (1L << (SONAME - 604)) | (1L << (SOUNDS - 604)) | (1L << (SOURCE - 604)) | (1L << (SQL_AFTER_GTIDS - 604)) | (1L << (SQL_AFTER_MTS_GAPS - 604)) | (1L << (SQL_BEFORE_GTIDS - 604)) | (1L << (SQL_BUFFER_RESULT - 604)) | (1L << (SQL_CACHE - 604)) | (1L << (SQL_NO_CACHE - 604)) | (1L << (SQL_THREAD - 604)) | (1L << (START - 604)) | (1L << (STARTS - 604)) | (1L << (STATS_AUTO_RECALC - 604)) | (1L << (STATS_PERSISTENT - 604)) | (1L << (STATS_SAMPLE_PAGES - 604)) | (1L << (STATUS - 604)) | (1L << (STOP - 604)) | (1L << (STORAGE - 604)) | (1L << (STRING - 604)) | (1L << (SUBCLASS_ORIGIN - 604)) | (1L << (SUBJECT - 604)) | (1L << (SUBPARTITION - 604)) | (1L << (SUBPARTITIONS - 604)) | (1L << (SUSPEND - 604)) | (1L << (SWAPS - 604)) | (1L << (SWITCHES - 604)) | (1L << (TABLE_NAME - 604)) | (1L << (TABLESPACE - 604)) | (1L << (TABLE_TYPE - 604)) | (1L << (TEMPORARY - 604)) | (1L << (TEMPTABLE - 604)) | (1L << (THAN - 604)) | (1L << (TRADITIONAL - 604)) | (1L << (TRANSACTION - 604)) | (1L << (TRANSACTIONAL - 604)) | (1L << (TRIGGERS - 604)) | (1L << (TRUNCATE - 604)) | (1L << (UNBOUNDED - 604)) | (1L << (UNDEFINED - 604)) | (1L << (UNDOFILE - 604)) | (1L << (UNDO_BUFFER_SIZE - 604)) | (1L << (UNINSTALL - 604)) | (1L << (UNKNOWN - 604)) | (1L << (UNTIL - 604)) | (1L << (UPGRADE - 604)))) != 0) || ((((_la - 668)) & ~0x3f) == 0 && ((1L << (_la - 668)) & ((1L << (USER - 668)) | (1L << (USE_FRM - 668)) | (1L << (USER_RESOURCES - 668)) | (1L << (VALIDATION - 668)) | (1L << (VALUE - 668)) | (1L << (VARIABLES - 668)) | (1L << (VIEW - 668)) | (1L << (VIRTUAL - 668)) | (1L << (VISIBLE - 668)) | (1L << (WAIT - 668)) | (1L << (WARNINGS - 668)) | (1L << (WITHOUT - 668)) | (1L << (WORK - 668)) | (1L << (WRAPPER - 668)) | (1L << (X509 - 668)) | (1L << (XA - 668)) | (1L << (XML - 668)) | (1L << (YES - 668)) | (1L << (EUR - 668)) | (1L << (USA - 668)) | (1L << (JIS - 668)) | (1L << (ISO - 668)) | (1L << (INTERNAL - 668)) | (1L << (QUARTER - 668)) | (1L << (MONTH - 668)) | (1L << (DAY - 668)) | (1L << (HOUR - 668)) | (1L << (MINUTE - 668)) | (1L << (WEEK - 668)) | (1L << (SECOND - 668)) | (1L << (MICROSECOND - 668)) | (1L << (USER_STATISTICS - 668)) | (1L << (CLIENT_STATISTICS - 668)) | (1L << (INDEX_STATISTICS - 668)) | (1L << (TABLE_STATISTICS - 668)) | (1L << (FIREWALL_RULES - 668)) | (1L << (ADMIN - 668)) | (1L << (APPLICATION_PASSWORD_ADMIN - 668)) | (1L << (AUDIT_ADMIN - 668)) | (1L << (AUDIT_ABORT_EXEMPT - 668)) | (1L << (AUTHENTICATION_POLICY_ADMIN - 668)) | (1L << (BACKUP_ADMIN - 668)) | (1L << (BINLOG_ADMIN - 668)) | (1L << (BINLOG_ENCRYPTION_ADMIN - 668)) | (1L << (CLONE_ADMIN - 668)) | (1L << (CONNECTION_ADMIN - 668)) | (1L << (ENCRYPTION_KEY_ADMIN - 668)) | (1L << (EXECUTE - 668)) | (1L << (FILE - 668)) | (1L << (FIREWALL_ADMIN - 668)) | (1L << (FIREWALL_EXEMPT - 668)) | (1L << (FIREWALL_USER - 668)) | (1L << (FLUSH_OPTIMIZER_COSTS - 668)) | (1L << (FLUSH_STATUS - 668)) | (1L << (FLUSH_TABLES - 668)) | (1L << (FLUSH_USER_RESOURCES - 668)) | (1L << (GROUP_REPLICATION_ADMIN - 668)) | (1L << (INNODB_REDO_LOG_ARCHIVE - 668)) | (1L << (INNODB_REDO_LOG_ENABLE - 668)) | (1L << (INVOKE - 668)) | (1L << (LAMBDA - 668)) | (1L << (NDB_STORED_USER - 668)) | (1L << (PASSWORDLESS_USER_ADMIN - 668)))) != 0) || ((((_la - 732)) & ~0x3f) == 0 && ((1L << (_la - 732)) & ((1L << (PERSIST_RO_VARIABLES_ADMIN - 732)) | (1L << (PRIVILEGES - 732)) | (1L << (PROCESS - 732)) | (1L << (RELOAD - 732)) | (1L << (REPLICATION_APPLIER - 732)) | (1L << (REPLICATION_SLAVE_ADMIN - 732)) | (1L << (RESOURCE_GROUP_ADMIN - 732)) | (1L << (RESOURCE_GROUP_USER - 732)) | (1L << (ROLE_ADMIN - 732)) | (1L << (ROUTINE - 732)) | (1L << (S3 - 732)) | (1L << (SESSION_VARIABLES_ADMIN - 732)) | (1L << (SET_USER_ID - 732)) | (1L << (SHOW_ROUTINE - 732)) | (1L << (SHUTDOWN - 732)) | (1L << (SUPER - 732)) | (1L << (SYSTEM_VARIABLES_ADMIN - 732)) | (1L << (TABLES - 732)) | (1L << (TABLE_ENCRYPTION_ADMIN - 732)) | (1L << (VERSION_TOKEN_ADMIN - 732)) | (1L << (XA_RECOVER_ADMIN - 732)) | (1L << (ARMSCII8 - 732)) | (1L << (ASCII - 732)) | (1L << (BIG5 - 732)) | (1L << (CP1250 - 732)) | (1L << (CP1251 - 732)) | (1L << (CP1256 - 732)) | (1L << (CP1257 - 732)) | (1L << (CP850 - 732)) | (1L << (CP852 - 732)) | (1L << (CP866 - 732)) | (1L << (CP932 - 732)) | (1L << (DEC8 - 732)) | (1L << (EUCJPMS - 732)) | (1L << (EUCKR - 732)) | (1L << (GB18030 - 732)) | (1L << (GB2312 - 732)) | (1L << (GBK - 732)) | (1L << (GEOSTD8 - 732)) | (1L << (GREEK - 732)) | (1L << (HEBREW - 732)) | (1L << (HP8 - 732)) | (1L << (KEYBCS2 - 732)) | (1L << (KOI8R - 732)) | (1L << (KOI8U - 732)) | (1L << (LATIN1 - 732)) | (1L << (LATIN2 - 732)) | (1L << (LATIN5 - 732)) | (1L << (LATIN7 - 732)) | (1L << (MACCE - 732)) | (1L << (MACROMAN - 732)) | (1L << (SJIS - 732)) | (1L << (SWE7 - 732)) | (1L << (TIS620 - 732)) | (1L << (UCS2 - 732)) | (1L << (UJIS - 732)) | (1L << (UTF16 - 732)) | (1L << (UTF16LE - 732)) | (1L << (UTF32 - 732)) | (1L << (UTF8 - 732)) | (1L << (UTF8MB3 - 732)) | (1L << (UTF8MB4 - 732)) | (1L << (ARCHIVE - 732)))) != 0) || ((((_la - 796)) & ~0x3f) == 0 && ((1L << (_la - 796)) & ((1L << (BLACKHOLE - 796)) | (1L << (CSV - 796)) | (1L << (FEDERATED - 796)) | (1L << (INNODB - 796)) | (1L << (MEMORY - 796)) | (1L << (MRG_MYISAM - 796)) | (1L << (MYISAM - 796)) | (1L << (NDB - 796)) | (1L << (NDBCLUSTER - 796)) | (1L << (PERFORMANCE_SCHEMA - 796)) | (1L << (TOKUDB - 796)) | (1L << (REPEATABLE - 796)) | (1L << (COMMITTED - 796)) | (1L << (UNCOMMITTED - 796)) | (1L << (SERIALIZABLE - 796)) | (1L << (GEOMETRYCOLLECTION - 796)) | (1L << (GEOMETRY - 796)) | (1L << (LINESTRING - 796)) | (1L << (MULTILINESTRING - 796)) | (1L << (MULTIPOINT - 796)) | (1L << (MULTIPOLYGON - 796)) | (1L << (POINT - 796)) | (1L << (POLYGON - 796)) | (1L << (ABS - 796)) | (1L << (ACOS - 796)) | (1L << (ADDDATE - 796)) | (1L << (ADDTIME - 796)) | (1L << (AES_DECRYPT - 796)) | (1L << (AES_ENCRYPT - 796)) | (1L << (AREA - 796)) | (1L << (ASBINARY - 796)) | (1L << (ASIN - 796)) | (1L << (ASTEXT - 796)) | (1L << (ASWKB - 796)) | (1L << (ASWKT - 796)) | (1L << (ASYMMETRIC_DECRYPT - 796)) | (1L << (ASYMMETRIC_DERIVE - 796)) | (1L << (ASYMMETRIC_ENCRYPT - 796)) | (1L << (ASYMMETRIC_SIGN - 796)) | (1L << (ASYMMETRIC_VERIFY - 796)) | (1L << (ATAN - 796)) | (1L << (ATAN2 - 796)) | (1L << (BENCHMARK - 796)) | (1L << (BIN - 796)) | (1L << (BIT_COUNT - 796)) | (1L << (BIT_LENGTH - 796)) | (1L << (BUFFER - 796)) | (1L << (CATALOG_NAME - 796)) | (1L << (CEIL - 796)) | (1L << (CEILING - 796)) | (1L << (CENTROID - 796)) | (1L << (CHARACTER_LENGTH - 796)) | (1L << (CHARSET - 796)) | (1L << (CHAR_LENGTH - 796)) | (1L << (COERCIBILITY - 796)) | (1L << (COLLATION - 796)) | (1L << (COMPRESS - 796)) | (1L << (CONCAT - 796)) | (1L << (CONCAT_WS - 796)) | (1L << (CONNECTION_ID - 796)) | (1L << (CONV - 796)) | (1L << (CONVERT_TZ - 796)) | (1L << (COS - 796)))) != 0) || ((((_la - 860)) & ~0x3f) == 0 && ((1L << (_la - 860)) & ((1L << (COT - 860)) | (1L << (CRC32 - 860)) | (1L << (CREATE_ASYMMETRIC_PRIV_KEY - 860)) | (1L << (CREATE_ASYMMETRIC_PUB_KEY - 860)) | (1L << (CREATE_DH_PARAMETERS - 860)) | (1L << (CREATE_DIGEST - 860)) | (1L << (CROSSES - 860)) | (1L << (DATEDIFF - 860)) | (1L << (DATE_FORMAT - 860)) | (1L << (DAYNAME - 860)) | (1L << (DAYOFMONTH - 860)) | (1L << (DAYOFWEEK - 860)) | (1L << (DAYOFYEAR - 860)) | (1L << (DECODE - 860)) | (1L << (DEGREES - 860)) | (1L << (DES_DECRYPT - 860)) | (1L << (DES_ENCRYPT - 860)) | (1L << (DIMENSION - 860)) | (1L << (DISJOINT - 860)) | (1L << (ELT - 860)) | (1L << (ENCODE - 860)) | (1L << (ENCRYPT - 860)) | (1L << (ENDPOINT - 860)) | (1L << (ENGINE_ATTRIBUTE - 860)) | (1L << (ENVELOPE - 860)) | (1L << (EQUALS - 860)) | (1L << (EXP - 860)) | (1L << (EXPORT_SET - 860)) | (1L << (EXTERIORRING - 860)) | (1L << (EXTRACTVALUE - 860)) | (1L << (FIELD - 860)) | (1L << (FIND_IN_SET - 860)) | (1L << (FLOOR - 860)) | (1L << (FORMAT - 860)) | (1L << (FOUND_ROWS - 860)) | (1L << (FROM_BASE64 - 860)) | (1L << (FROM_DAYS - 860)) | (1L << (FROM_UNIXTIME - 860)) | (1L << (GEOMCOLLFROMTEXT - 860)) | (1L << (GEOMCOLLFROMWKB - 860)) | (1L << (GEOMETRYCOLLECTIONFROMTEXT - 860)) | (1L << (GEOMETRYCOLLECTIONFROMWKB - 860)) | (1L << (GEOMETRYFROMTEXT - 860)) | (1L << (GEOMETRYFROMWKB - 860)) | (1L << (GEOMETRYN - 860)) | (1L << (GEOMETRYTYPE - 860)) | (1L << (GEOMFROMTEXT - 860)) | (1L << (GEOMFROMWKB - 860)) | (1L << (GET_FORMAT - 860)) | (1L << (GET_LOCK - 860)) | (1L << (GLENGTH - 860)) | (1L << (GREATEST - 860)) | (1L << (GTID_SUBSET - 860)) | (1L << (GTID_SUBTRACT - 860)) | (1L << (HEX - 860)) | (1L << (IFNULL - 860)) | (1L << (INET6_ATON - 860)) | (1L << (INET6_NTOA - 860)) | (1L << (INET_ATON - 860)) | (1L << (INET_NTOA - 860)) | (1L << (INSTR - 860)) | (1L << (INTERIORRINGN - 860)) | (1L << (INTERSECTS - 860)) | (1L << (ISCLOSED - 860)))) != 0) || ((((_la - 924)) & ~0x3f) == 0 && ((1L << (_la - 924)) & ((1L << (ISEMPTY - 924)) | (1L << (ISNULL - 924)) | (1L << (ISSIMPLE - 924)) | (1L << (IS_FREE_LOCK - 924)) | (1L << (IS_IPV4 - 924)) | (1L << (IS_IPV4_COMPAT - 924)) | (1L << (IS_IPV4_MAPPED - 924)) | (1L << (IS_IPV6 - 924)) | (1L << (IS_USED_LOCK - 924)) | (1L << (LAST_INSERT_ID - 924)) | (1L << (LCASE - 924)) | (1L << (LEAST - 924)) | (1L << (LENGTH - 924)) | (1L << (LINEFROMTEXT - 924)) | (1L << (LINEFROMWKB - 924)) | (1L << (LINESTRINGFROMTEXT - 924)) | (1L << (LINESTRINGFROMWKB - 924)) | (1L << (LN - 924)) | (1L << (LOAD_FILE - 924)) | (1L << (LOCATE - 924)) | (1L << (LOG - 924)) | (1L << (LOG10 - 924)) | (1L << (LOG2 - 924)) | (1L << (LOWER - 924)) | (1L << (LPAD - 924)) | (1L << (LTRIM - 924)) | (1L << (MAKEDATE - 924)) | (1L << (MAKETIME - 924)) | (1L << (MAKE_SET - 924)) | (1L << (MASTER_POS_WAIT - 924)) | (1L << (MBRCONTAINS - 924)) | (1L << (MBRDISJOINT - 924)) | (1L << (MBREQUAL - 924)) | (1L << (MBRINTERSECTS - 924)) | (1L << (MBROVERLAPS - 924)) | (1L << (MBRTOUCHES - 924)) | (1L << (MBRWITHIN - 924)) | (1L << (MD5 - 924)) | (1L << (MLINEFROMTEXT - 924)) | (1L << (MLINEFROMWKB - 924)) | (1L << (MONTHNAME - 924)) | (1L << (MPOINTFROMTEXT - 924)) | (1L << (MPOINTFROMWKB - 924)) | (1L << (MPOLYFROMTEXT - 924)) | (1L << (MPOLYFROMWKB - 924)) | (1L << (MULTILINESTRINGFROMTEXT - 924)) | (1L << (MULTILINESTRINGFROMWKB - 924)) | (1L << (MULTIPOINTFROMTEXT - 924)) | (1L << (MULTIPOINTFROMWKB - 924)) | (1L << (MULTIPOLYGONFROMTEXT - 924)) | (1L << (MULTIPOLYGONFROMWKB - 924)) | (1L << (NAME_CONST - 924)) | (1L << (NULLIF - 924)) | (1L << (NUMGEOMETRIES - 924)) | (1L << (NUMINTERIORRINGS - 924)) | (1L << (NUMPOINTS - 924)) | (1L << (OCT - 924)) | (1L << (OCTET_LENGTH - 924)) | (1L << (ORD - 924)) | (1L << (OVERLAPS - 924)) | (1L << (PERIOD_ADD - 924)) | (1L << (PERIOD_DIFF - 924)) | (1L << (PI - 924)) | (1L << (POINTFROMTEXT - 924)))) != 0) || ((((_la - 988)) & ~0x3f) == 0 && ((1L << (_la - 988)) & ((1L << (POINTFROMWKB - 988)) | (1L << (POINTN - 988)) | (1L << (POLYFROMTEXT - 988)) | (1L << (POLYFROMWKB - 988)) | (1L << (POLYGONFROMTEXT - 988)) | (1L << (POLYGONFROMWKB - 988)) | (1L << (POW - 988)) | (1L << (POWER - 988)) | (1L << (QUOTE - 988)) | (1L << (RADIANS - 988)) | (1L << (RAND - 988)) | (1L << (RANDOM - 988)) | (1L << (RANDOM_BYTES - 988)) | (1L << (RELEASE_LOCK - 988)) | (1L << (REVERSE - 988)) | (1L << (ROUND - 988)) | (1L << (ROW_COUNT - 988)) | (1L << (RPAD - 988)) | (1L << (RTRIM - 988)) | (1L << (SEC_TO_TIME - 988)) | (1L << (SECONDARY_ENGINE_ATTRIBUTE - 988)) | (1L << (SENSITIVE_VARIABLES_OBSERVER - 988)) | (1L << (SESSION_USER - 988)) | (1L << (SHA - 988)) | (1L << (SHA1 - 988)) | (1L << (SHA2 - 988)) | (1L << (SCHEMA_NAME - 988)) | (1L << (SIGN - 988)) | (1L << (SIN - 988)) | (1L << (SLEEP - 988)) | (1L << (SOUNDEX - 988)) | (1L << (SQL_THREAD_WAIT_AFTER_GTIDS - 988)) | (1L << (SQRT - 988)) | (1L << (SRID - 988)) | (1L << (STARTPOINT - 988)) | (1L << (STRCMP - 988)) | (1L << (STR_TO_DATE - 988)) | (1L << (ST_AREA - 988)) | (1L << (ST_ASBINARY - 988)) | (1L << (ST_ASTEXT - 988)) | (1L << (ST_ASWKB - 988)) | (1L << (ST_ASWKT - 988)) | (1L << (ST_BUFFER - 988)) | (1L << (ST_CENTROID - 988)) | (1L << (ST_CONTAINS - 988)) | (1L << (ST_CROSSES - 988)) | (1L << (ST_DIFFERENCE - 988)) | (1L << (ST_DIMENSION - 988)) | (1L << (ST_DISJOINT - 988)) | (1L << (ST_DISTANCE - 988)) | (1L << (ST_ENDPOINT - 988)) | (1L << (ST_ENVELOPE - 988)) | (1L << (ST_EQUALS - 988)) | (1L << (ST_EXTERIORRING - 988)) | (1L << (ST_GEOMCOLLFROMTEXT - 988)) | (1L << (ST_GEOMCOLLFROMTXT - 988)) | (1L << (ST_GEOMCOLLFROMWKB - 988)) | (1L << (ST_GEOMETRYCOLLECTIONFROMTEXT - 988)) | (1L << (ST_GEOMETRYCOLLECTIONFROMWKB - 988)) | (1L << (ST_GEOMETRYFROMTEXT - 988)) | (1L << (ST_GEOMETRYFROMWKB - 988)) | (1L << (ST_GEOMETRYN - 988)) | (1L << (ST_GEOMETRYTYPE - 988)) | (1L << (ST_GEOMFROMTEXT - 988)))) != 0) || ((((_la - 1052)) & ~0x3f) == 0 && ((1L << (_la - 1052)) & ((1L << (ST_GEOMFROMWKB - 1052)) | (1L << (ST_INTERIORRINGN - 1052)) | (1L << (ST_INTERSECTION - 1052)) | (1L << (ST_INTERSECTS - 1052)) | (1L << (ST_ISCLOSED - 1052)) | (1L << (ST_ISEMPTY - 1052)) | (1L << (ST_ISSIMPLE - 1052)) | (1L << (ST_LINEFROMTEXT - 1052)) | (1L << (ST_LINEFROMWKB - 1052)) | (1L << (ST_LINESTRINGFROMTEXT - 1052)) | (1L << (ST_LINESTRINGFROMWKB - 1052)) | (1L << (ST_NUMGEOMETRIES - 1052)) | (1L << (ST_NUMINTERIORRING - 1052)) | (1L << (ST_NUMINTERIORRINGS - 1052)) | (1L << (ST_NUMPOINTS - 1052)) | (1L << (ST_OVERLAPS - 1052)) | (1L << (ST_POINTFROMTEXT - 1052)) | (1L << (ST_POINTFROMWKB - 1052)) | (1L << (ST_POINTN - 1052)) | (1L << (ST_POLYFROMTEXT - 1052)) | (1L << (ST_POLYFROMWKB - 1052)) | (1L << (ST_POLYGONFROMTEXT - 1052)) | (1L << (ST_POLYGONFROMWKB - 1052)) | (1L << (ST_SRID - 1052)) | (1L << (ST_STARTPOINT - 1052)) | (1L << (ST_SYMDIFFERENCE - 1052)) | (1L << (ST_TOUCHES - 1052)) | (1L << (ST_UNION - 1052)) | (1L << (ST_WITHIN - 1052)) | (1L << (ST_X - 1052)) | (1L << (ST_Y - 1052)) | (1L << (SUBDATE - 1052)) | (1L << (SUBSTRING_INDEX - 1052)) | (1L << (SUBTIME - 1052)) | (1L << (SYSTEM_USER - 1052)) | (1L << (SYSTEM - 1052)) | (1L << (TAN - 1052)) | (1L << (TELEMETRY_LOG_ADMIN - 1052)) | (1L << (TIMEDIFF - 1052)) | (1L << (TIMESTAMPADD - 1052)) | (1L << (TIMESTAMPDIFF - 1052)) | (1L << (TIME_FORMAT - 1052)) | (1L << (TIME_TO_SEC - 1052)) | (1L << (TOUCHES - 1052)) | (1L << (TO_BASE64 - 1052)) | (1L << (TO_DAYS - 1052)) | (1L << (TO_SECONDS - 1052)) | (1L << (TP_CONNECTION_ADMIN - 1052)) | (1L << (UCASE - 1052)) | (1L << (UNCOMPRESS - 1052)) | (1L << (UNCOMPRESSED_LENGTH - 1052)) | (1L << (UNHEX - 1052)) | (1L << (UNIX_TIMESTAMP - 1052)) | (1L << (UPDATEXML - 1052)) | (1L << (UPPER - 1052)) | (1L << (UUID - 1052)) | (1L << (UUID_SHORT - 1052)) | (1L << (VALIDATE_PASSWORD_STRENGTH - 1052)) | (1L << (VERSION - 1052)) | (1L << (VERSIONING - 1052)) | (1L << (WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS - 1052)) | (1L << (WEEKDAY - 1052)) | (1L << (WEEKOFYEAR - 1052)) | (1L << (WEIGHT_STRING - 1052)))) != 0) || ((((_la - 1116)) & ~0x3f) == 0 && ((1L << (_la - 1116)) & ((1L << (WITHIN - 1116)) | (1L << (YEARWEEK - 1116)) | (1L << (Y_FUNCTION - 1116)) | (1L << (X_FUNCTION - 1116)) | (1L << (VIA - 1116)) | (1L << (LASTVAL - 1116)) | (1L << (NEXTVAL - 1116)) | (1L << (SETVAL - 1116)) | (1L << (PREVIOUS - 1116)) | (1L << (PERSISTENT - 1116)) | (1L << (BINLOG_MONITOR - 1116)) | (1L << (BINLOG_REPLAY - 1116)) | (1L << (FEDERATED_ADMIN - 1116)) | (1L << (READ_ONLY_ADMIN - 1116)) | (1L << (REPLICA - 1116)) | (1L << (REPLICATION_MASTER_ADMIN - 1116)) | (1L << (MONITOR - 1116)) | (1L << (READ_ONLY - 1116)) | (1L << (REPLAY - 1116)) | (1L << (MOD - 1116)) | (1L << (CHARSET_REVERSE_QOUTE_STRING - 1116)) | (1L << (STRING_LITERAL - 1116)))) != 0) || _la==ID) {
						{
						setState(1811);
						((CheckColumnConstraintContext)_localctx).name = uid();
						}
					}

					}
				}

				setState(1816);
				match(CHECK);
				setState(1817);
				match(LR_BRACKET);
				setState(1818);
				expression(0);
				setState(1819);
				match(RR_BRACKET);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TableConstraintContext extends ParserRuleContext {
		public TableConstraintContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_tableConstraint; }
	 
		public TableConstraintContext() { }
		public void copyFrom(TableConstraintContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class UniqueKeyTableConstraintContext extends TableConstraintContext {
		public UidContext name;
		public Token indexFormat;
		public UidContext index;
		public TerminalNode UNIQUE() { return getToken(MySqlParser.UNIQUE, 0); }
		public IndexColumnNamesContext indexColumnNames() {
			return getRuleContext(IndexColumnNamesContext.class,0);
		}
		public TerminalNode CONSTRAINT() { return getToken(MySqlParser.CONSTRAINT, 0); }
		public IndexTypeContext indexType() {
			return getRuleContext(IndexTypeContext.class,0);
		}
		public List indexOption() {
			return getRuleContexts(IndexOptionContext.class);
		}
		public IndexOptionContext indexOption(int i) {
			return getRuleContext(IndexOptionContext.class,i);
		}
		public List uid() {
			return getRuleContexts(UidContext.class);
		}
		public UidContext uid(int i) {
			return getRuleContext(UidContext.class,i);
		}
		public TerminalNode INDEX() { return getToken(MySqlParser.INDEX, 0); }
		public TerminalNode KEY() { return getToken(MySqlParser.KEY, 0); }
		public UniqueKeyTableConstraintContext(TableConstraintContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterUniqueKeyTableConstraint(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitUniqueKeyTableConstraint(this);
		}
	}
	public static class CheckTableConstraintContext extends TableConstraintContext {
		public UidContext name;
		public TerminalNode CHECK() { return getToken(MySqlParser.CHECK, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TerminalNode CONSTRAINT() { return getToken(MySqlParser.CONSTRAINT, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public CheckTableConstraintContext(TableConstraintContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCheckTableConstraint(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCheckTableConstraint(this);
		}
	}
	public static class PrimaryKeyTableConstraintContext extends TableConstraintContext {
		public UidContext name;
		public UidContext index;
		public TerminalNode PRIMARY() { return getToken(MySqlParser.PRIMARY, 0); }
		public TerminalNode KEY() { return getToken(MySqlParser.KEY, 0); }
		public IndexColumnNamesContext indexColumnNames() {
			return getRuleContext(IndexColumnNamesContext.class,0);
		}
		public TerminalNode CONSTRAINT() { return getToken(MySqlParser.CONSTRAINT, 0); }
		public IndexTypeContext indexType() {
			return getRuleContext(IndexTypeContext.class,0);
		}
		public List indexOption() {
			return getRuleContexts(IndexOptionContext.class);
		}
		public IndexOptionContext indexOption(int i) {
			return getRuleContext(IndexOptionContext.class,i);
		}
		public List uid() {
			return getRuleContexts(UidContext.class);
		}
		public UidContext uid(int i) {
			return getRuleContext(UidContext.class,i);
		}
		public PrimaryKeyTableConstraintContext(TableConstraintContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPrimaryKeyTableConstraint(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPrimaryKeyTableConstraint(this);
		}
	}
	public static class ClusteringKeyTableConstraintContext extends TableConstraintContext {
		public UidContext index;
		public TerminalNode CLUSTERING() { return getToken(MySqlParser.CLUSTERING, 0); }
		public TerminalNode KEY() { return getToken(MySqlParser.KEY, 0); }
		public IndexColumnNamesContext indexColumnNames() {
			return getRuleContext(IndexColumnNamesContext.class,0);
		}
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public ClusteringKeyTableConstraintContext(TableConstraintContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterClusteringKeyTableConstraint(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitClusteringKeyTableConstraint(this);
		}
	}
	public static class ForeignKeyTableConstraintContext extends TableConstraintContext {
		public UidContext name;
		public UidContext index;
		public TerminalNode FOREIGN() { return getToken(MySqlParser.FOREIGN, 0); }
		public TerminalNode KEY() { return getToken(MySqlParser.KEY, 0); }
		public IndexColumnNamesContext indexColumnNames() {
			return getRuleContext(IndexColumnNamesContext.class,0);
		}
		public ReferenceDefinitionContext referenceDefinition() {
			return getRuleContext(ReferenceDefinitionContext.class,0);
		}
		public TerminalNode CONSTRAINT() { return getToken(MySqlParser.CONSTRAINT, 0); }
		public List uid() {
			return getRuleContexts(UidContext.class);
		}
		public UidContext uid(int i) {
			return getRuleContext(UidContext.class,i);
		}
		public ForeignKeyTableConstraintContext(TableConstraintContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterForeignKeyTableConstraint(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitForeignKeyTableConstraint(this);
		}
	}

	public final TableConstraintContext tableConstraint() throws RecognitionException {
		TableConstraintContext _localctx = new TableConstraintContext(_ctx, getState());
		enterRule(_localctx, 102, RULE_tableConstraint);
		int _la;
		try {
			int _alt;
			setState(1898);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,201,_ctx) ) {
			case 1:
				_localctx = new PrimaryKeyTableConstraintContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(1827);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==CONSTRAINT) {
					{
					setState(1823);
					match(CONSTRAINT);
					setState(1825);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,184,_ctx) ) {
					case 1:
						{
						setState(1824);
						((PrimaryKeyTableConstraintContext)_localctx).name = uid();
						}
						break;
					}
					}
				}

				setState(1829);
				match(PRIMARY);
				setState(1830);
				match(KEY);
				setState(1832);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ARRAY) | (1L << ATTRIBUTE) | (1L << BUCKETS) | (1L << CONDITION) | (1L << CURRENT) | (1L << CURRENT_ROLE) | (1L << CURRENT_USER) | (1L << DATABASE) | (1L << DEFAULT) | (1L << DIAGNOSTICS) | (1L << EMPTY) | (1L << ENFORCED) | (1L << EXCEPT))) != 0) || ((((_la - 74)) & ~0x3f) == 0 && ((1L << (_la - 74)) & ((1L << (GROUP - 74)) | (1L << (GROUP_REPLICATION_STREAM - 74)) | (1L << (IF - 74)) | (1L << (IGNORED - 74)) | (1L << (INSERT - 74)) | (1L << (LATERAL - 74)) | (1L << (LEFT - 74)) | (1L << (LOCKED - 74)) | (1L << (MAXVALUE - 74)) | (1L << (MINVALUE - 74)) | (1L << (NUMBER - 74)) | (1L << (OPTIONAL - 74)) | (1L << (ORDER - 74)) | (1L << (PRIMARY - 74)))) != 0) || ((((_la - 142)) & ~0x3f) == 0 && ((1L << (_la - 142)) & ((1L << (REPEAT - 142)) | (1L << (REPLACE - 142)) | (1L << (RIGHT - 142)) | (1L << (SCHEMA - 142)) | (1L << (SKIP_ - 142)) | (1L << (SKIP_QUERY_REWRITE - 142)) | (1L << (STACKED - 142)) | (1L << (STATEMENT - 142)))) != 0) || ((((_la - 220)) & ~0x3f) == 0 && ((1L << (_la - 220)) & ((1L << (DATE - 220)) | (1L << (TIME - 220)) | (1L << (TIMESTAMP - 220)) | (1L << (DATETIME - 220)) | (1L << (YEAR - 220)) | (1L << (NATIONAL - 220)) | (1L << (BINARY - 220)) | (1L << (TEXT - 220)) | (1L << (ENUM - 220)) | (1L << (SERIAL - 220)) | (1L << (JSON_ARRAY - 220)) | (1L << (JSON_ARRAYAGG - 220)) | (1L << (JSON_ARRAY_APPEND - 220)) | (1L << (JSON_ARRAY_INSERT - 220)) | (1L << (JSON_CONTAINS - 220)) | (1L << (JSON_CONTAINS_PATH - 220)) | (1L << (JSON_DEPTH - 220)) | (1L << (JSON_EXTRACT - 220)) | (1L << (JSON_INSERT - 220)) | (1L << (JSON_KEYS - 220)) | (1L << (JSON_LENGTH - 220)) | (1L << (JSON_MERGE - 220)) | (1L << (JSON_MERGE_PATCH - 220)) | (1L << (JSON_MERGE_PRESERVE - 220)) | (1L << (JSON_OBJECT - 220)) | (1L << (JSON_OBJECTAGG - 220)) | (1L << (JSON_OVERLAPS - 220)) | (1L << (JSON_PRETTY - 220)) | (1L << (JSON_QUOTE - 220)) | (1L << (JSON_REMOVE - 220)) | (1L << (JSON_REPLACE - 220)) | (1L << (JSON_SCHEMA_VALID - 220)) | (1L << (JSON_SCHEMA_VALIDATION_REPORT - 220)) | (1L << (JSON_SEARCH - 220)) | (1L << (JSON_SET - 220)) | (1L << (JSON_STORAGE_FREE - 220)) | (1L << (JSON_STORAGE_SIZE - 220)) | (1L << (JSON_TABLE - 220)) | (1L << (JSON_TYPE - 220)) | (1L << (JSON_UNQUOTE - 220)))) != 0) || ((((_la - 284)) & ~0x3f) == 0 && ((1L << (_la - 284)) & ((1L << (JSON_VALID - 284)) | (1L << (JSON_VALUE - 284)) | (1L << (NESTED - 284)) | (1L << (ORDINALITY - 284)) | (1L << (PATH - 284)) | (1L << (AVG - 284)) | (1L << (BIT_AND - 284)) | (1L << (BIT_OR - 284)) | (1L << (BIT_XOR - 284)) | (1L << (COUNT - 284)) | (1L << (CUME_DIST - 284)) | (1L << (DENSE_RANK - 284)) | (1L << (FIRST_VALUE - 284)) | (1L << (GROUP_CONCAT - 284)) | (1L << (LAG - 284)) | (1L << (LAST_VALUE - 284)) | (1L << (LEAD - 284)) | (1L << (MAX - 284)) | (1L << (MIN - 284)) | (1L << (NTILE - 284)) | (1L << (NTH_VALUE - 284)) | (1L << (PERCENT_RANK - 284)) | (1L << (RANK - 284)) | (1L << (ROW_NUMBER - 284)) | (1L << (STD - 284)) | (1L << (STDDEV - 284)) | (1L << (STDDEV_POP - 284)) | (1L << (STDDEV_SAMP - 284)) | (1L << (SUM - 284)) | (1L << (VAR_POP - 284)) | (1L << (VAR_SAMP - 284)) | (1L << (VARIANCE - 284)) | (1L << (CURRENT_DATE - 284)) | (1L << (CURRENT_TIME - 284)) | (1L << (CURRENT_TIMESTAMP - 284)) | (1L << (LOCALTIME - 284)) | (1L << (CURDATE - 284)) | (1L << (CURTIME - 284)) | (1L << (DATE_ADD - 284)) | (1L << (DATE_SUB - 284)) | (1L << (LOCALTIMESTAMP - 284)) | (1L << (NOW - 284)) | (1L << (POSITION - 284)) | (1L << (SUBSTR - 284)) | (1L << (SUBSTRING - 284)) | (1L << (SYSDATE - 284)) | (1L << (TRIM - 284)) | (1L << (UTC_DATE - 284)) | (1L << (UTC_TIME - 284)) | (1L << (UTC_TIMESTAMP - 284)) | (1L << (ACCOUNT - 284)) | (1L << (ACTION - 284)) | (1L << (AFTER - 284)) | (1L << (AGGREGATE - 284)) | (1L << (ALGORITHM - 284)) | (1L << (ANY - 284)) | (1L << (AT - 284)) | (1L << (AUTHORS - 284)) | (1L << (AUTOCOMMIT - 284)) | (1L << (AUTOEXTEND_SIZE - 284)) | (1L << (AUTO_INCREMENT - 284)) | (1L << (AVG_ROW_LENGTH - 284)) | (1L << (BEGIN - 284)))) != 0) || ((((_la - 348)) & ~0x3f) == 0 && ((1L << (_la - 348)) & ((1L << (BINLOG - 348)) | (1L << (BIT - 348)) | (1L << (BLOCK - 348)) | (1L << (BOOL - 348)) | (1L << (BOOLEAN - 348)) | (1L << (BTREE - 348)) | (1L << (CACHE - 348)) | (1L << (CASCADED - 348)) | (1L << (CHAIN - 348)) | (1L << (CHANGED - 348)) | (1L << (CHANNEL - 348)) | (1L << (CHECKSUM - 348)) | (1L << (PAGE_CHECKSUM - 348)) | (1L << (CIPHER - 348)) | (1L << (CLASS_ORIGIN - 348)) | (1L << (CLIENT - 348)) | (1L << (CLOSE - 348)) | (1L << (CLUSTERING - 348)) | (1L << (COALESCE - 348)) | (1L << (CODE - 348)) | (1L << (COLUMNS - 348)) | (1L << (COLUMN_FORMAT - 348)) | (1L << (COLUMN_NAME - 348)) | (1L << (COMMENT - 348)) | (1L << (COMMIT - 348)) | (1L << (COMPACT - 348)) | (1L << (COMPLETION - 348)) | (1L << (COMPRESSED - 348)) | (1L << (COMPRESSION - 348)) | (1L << (CONCURRENT - 348)) | (1L << (CONNECT - 348)) | (1L << (CONNECTION - 348)) | (1L << (CONSISTENT - 348)) | (1L << (CONSTRAINT_CATALOG - 348)) | (1L << (CONSTRAINT_SCHEMA - 348)) | (1L << (CONSTRAINT_NAME - 348)) | (1L << (CONTAINS - 348)) | (1L << (CONTEXT - 348)) | (1L << (CONTRIBUTORS - 348)) | (1L << (COPY - 348)) | (1L << (CPU - 348)) | (1L << (CYCLE - 348)) | (1L << (CURSOR_NAME - 348)) | (1L << (DATA - 348)) | (1L << (DATAFILE - 348)) | (1L << (DEALLOCATE - 348)) | (1L << (DEFAULT_AUTH - 348)) | (1L << (DEFINER - 348)) | (1L << (DELAY_KEY_WRITE - 348)) | (1L << (DES_KEY_FILE - 348)) | (1L << (DIRECTORY - 348)) | (1L << (DISABLE - 348)) | (1L << (DISCARD - 348)) | (1L << (DISK - 348)) | (1L << (DO - 348)) | (1L << (DUMPFILE - 348)) | (1L << (DUPLICATE - 348)) | (1L << (DYNAMIC - 348)) | (1L << (ENABLE - 348)) | (1L << (ENCRYPTED - 348)) | (1L << (ENCRYPTION - 348)) | (1L << (ENCRYPTION_KEY_ID - 348)) | (1L << (END - 348)) | (1L << (ENDS - 348)))) != 0) || ((((_la - 412)) & ~0x3f) == 0 && ((1L << (_la - 412)) & ((1L << (ENGINE - 412)) | (1L << (ENGINES - 412)) | (1L << (ERROR - 412)) | (1L << (ERRORS - 412)) | (1L << (ESCAPE - 412)) | (1L << (EVEN - 412)) | (1L << (EVENT - 412)) | (1L << (EVENTS - 412)) | (1L << (EVERY - 412)) | (1L << (EXCHANGE - 412)) | (1L << (EXCLUSIVE - 412)) | (1L << (EXPIRE - 412)) | (1L << (EXPORT - 412)) | (1L << (EXTENDED - 412)) | (1L << (EXTENT_SIZE - 412)) | (1L << (FAILED_LOGIN_ATTEMPTS - 412)) | (1L << (FAST - 412)) | (1L << (FAULTS - 412)) | (1L << (FIELDS - 412)) | (1L << (FILE_BLOCK_SIZE - 412)) | (1L << (FILTER - 412)) | (1L << (FIRST - 412)) | (1L << (FIXED - 412)) | (1L << (FLUSH - 412)) | (1L << (FOLLOWS - 412)) | (1L << (FOUND - 412)) | (1L << (FULL - 412)) | (1L << (FUNCTION - 412)) | (1L << (GENERAL - 412)) | (1L << (GLOBAL - 412)) | (1L << (GRANTS - 412)) | (1L << (GROUP_REPLICATION - 412)) | (1L << (HANDLER - 412)) | (1L << (HASH - 412)) | (1L << (HELP - 412)) | (1L << (HISTORY - 412)) | (1L << (HOST - 412)) | (1L << (HOSTS - 412)) | (1L << (IDENTIFIED - 412)) | (1L << (IGNORE_SERVER_IDS - 412)) | (1L << (IMPORT - 412)) | (1L << (INCREMENT - 412)) | (1L << (INDEXES - 412)) | (1L << (INITIAL_SIZE - 412)) | (1L << (INPLACE - 412)) | (1L << (INSERT_METHOD - 412)) | (1L << (INSTALL - 412)) | (1L << (INSTANCE - 412)) | (1L << (INSTANT - 412)) | (1L << (INVISIBLE - 412)) | (1L << (INVOKER - 412)) | (1L << (IO - 412)) | (1L << (IO_THREAD - 412)) | (1L << (IPC - 412)) | (1L << (ISOLATION - 412)) | (1L << (ISSUER - 412)) | (1L << (JSON - 412)) | (1L << (KEY_BLOCK_SIZE - 412)) | (1L << (LANGUAGE - 412)) | (1L << (LAST - 412)) | (1L << (LEAVES - 412)) | (1L << (LESS - 412)) | (1L << (LEVEL - 412)))) != 0) || ((((_la - 476)) & ~0x3f) == 0 && ((1L << (_la - 476)) & ((1L << (LIST - 476)) | (1L << (LOCAL - 476)) | (1L << (LOGFILE - 476)) | (1L << (LOGS - 476)) | (1L << (MASTER - 476)) | (1L << (MASTER_AUTO_POSITION - 476)) | (1L << (MASTER_CONNECT_RETRY - 476)) | (1L << (MASTER_DELAY - 476)) | (1L << (MASTER_HEARTBEAT_PERIOD - 476)) | (1L << (MASTER_HOST - 476)) | (1L << (MASTER_LOG_FILE - 476)) | (1L << (MASTER_LOG_POS - 476)) | (1L << (MASTER_PASSWORD - 476)) | (1L << (MASTER_PORT - 476)) | (1L << (MASTER_RETRY_COUNT - 476)) | (1L << (MASTER_SSL - 476)) | (1L << (MASTER_SSL_CA - 476)) | (1L << (MASTER_SSL_CAPATH - 476)) | (1L << (MASTER_SSL_CERT - 476)) | (1L << (MASTER_SSL_CIPHER - 476)) | (1L << (MASTER_SSL_CRL - 476)) | (1L << (MASTER_SSL_CRLPATH - 476)) | (1L << (MASTER_SSL_KEY - 476)) | (1L << (MASTER_TLS_VERSION - 476)) | (1L << (MASTER_USER - 476)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 476)) | (1L << (MAX_QUERIES_PER_HOUR - 476)) | (1L << (MAX_ROWS - 476)) | (1L << (MAX_SIZE - 476)) | (1L << (MAX_UPDATES_PER_HOUR - 476)) | (1L << (MAX_USER_CONNECTIONS - 476)) | (1L << (MEDIUM - 476)) | (1L << (MEMBER - 476)) | (1L << (MERGE - 476)) | (1L << (MESSAGE_TEXT - 476)) | (1L << (MID - 476)) | (1L << (MIGRATE - 476)) | (1L << (MIN_ROWS - 476)) | (1L << (MODE - 476)) | (1L << (MODIFY - 476)) | (1L << (MUTEX - 476)) | (1L << (MYSQL - 476)) | (1L << (MYSQL_ERRNO - 476)) | (1L << (NAME - 476)) | (1L << (NAMES - 476)) | (1L << (NCHAR - 476)) | (1L << (NEVER - 476)) | (1L << (NEXT - 476)) | (1L << (NO - 476)) | (1L << (NOCACHE - 476)) | (1L << (NOCOPY - 476)) | (1L << (NOCYCLE - 476)) | (1L << (NOMAXVALUE - 476)) | (1L << (NOMINVALUE - 476)) | (1L << (NOWAIT - 476)) | (1L << (NODEGROUP - 476)) | (1L << (NONE - 476)) | (1L << (ODBC - 476)) | (1L << (OFFLINE - 476)) | (1L << (OFFSET - 476)) | (1L << (OF - 476)) | (1L << (OJ - 476)) | (1L << (OLD_PASSWORD - 476)) | (1L << (ONE - 476)))) != 0) || ((((_la - 540)) & ~0x3f) == 0 && ((1L << (_la - 540)) & ((1L << (ONLINE - 540)) | (1L << (ONLY - 540)) | (1L << (OPEN - 540)) | (1L << (OPTIMIZER_COSTS - 540)) | (1L << (OPTIONS - 540)) | (1L << (OWNER - 540)) | (1L << (PACK_KEYS - 540)) | (1L << (PAGE - 540)) | (1L << (PARSER - 540)) | (1L << (PARTIAL - 540)) | (1L << (PARTITIONING - 540)) | (1L << (PARTITIONS - 540)) | (1L << (PASSWORD - 540)) | (1L << (PASSWORD_LOCK_TIME - 540)) | (1L << (PHASE - 540)) | (1L << (PLUGIN - 540)) | (1L << (PLUGIN_DIR - 540)) | (1L << (PLUGINS - 540)) | (1L << (PORT - 540)) | (1L << (PRECEDES - 540)) | (1L << (PREPARE - 540)) | (1L << (PRESERVE - 540)) | (1L << (PREV - 540)) | (1L << (PROCESSLIST - 540)) | (1L << (PROFILE - 540)) | (1L << (PROFILES - 540)) | (1L << (PROXY - 540)) | (1L << (QUERY - 540)) | (1L << (QUICK - 540)) | (1L << (REBUILD - 540)) | (1L << (RECOVER - 540)) | (1L << (RECURSIVE - 540)) | (1L << (REDO_BUFFER_SIZE - 540)) | (1L << (REDUNDANT - 540)) | (1L << (RELAY - 540)) | (1L << (RELAY_LOG_FILE - 540)) | (1L << (RELAY_LOG_POS - 540)) | (1L << (RELAYLOG - 540)) | (1L << (REMOVE - 540)) | (1L << (REORGANIZE - 540)) | (1L << (REPAIR - 540)) | (1L << (REPLICATE_DO_DB - 540)) | (1L << (REPLICATE_DO_TABLE - 540)) | (1L << (REPLICATE_IGNORE_DB - 540)) | (1L << (REPLICATE_IGNORE_TABLE - 540)) | (1L << (REPLICATE_REWRITE_DB - 540)) | (1L << (REPLICATE_WILD_DO_TABLE - 540)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 540)) | (1L << (REPLICATION - 540)) | (1L << (RESET - 540)) | (1L << (RESTART - 540)) | (1L << (RESUME - 540)) | (1L << (RETURNED_SQLSTATE - 540)) | (1L << (RETURNING - 540)) | (1L << (RETURNS - 540)) | (1L << (REUSE - 540)) | (1L << (ROLE - 540)) | (1L << (ROLLBACK - 540)) | (1L << (ROLLUP - 540)) | (1L << (ROTATE - 540)) | (1L << (ROW - 540)))) != 0) || ((((_la - 604)) & ~0x3f) == 0 && ((1L << (_la - 604)) & ((1L << (ROWS - 604)) | (1L << (ROW_FORMAT - 604)) | (1L << (RTREE - 604)) | (1L << (SAVEPOINT - 604)) | (1L << (SCHEDULE - 604)) | (1L << (SECURITY - 604)) | (1L << (SEQUENCE - 604)) | (1L << (SERVER - 604)) | (1L << (SESSION - 604)) | (1L << (SHARE - 604)) | (1L << (SHARED - 604)) | (1L << (SIGNED - 604)) | (1L << (SIMPLE - 604)) | (1L << (SLAVE - 604)) | (1L << (SLOW - 604)) | (1L << (SNAPSHOT - 604)) | (1L << (SOCKET - 604)) | (1L << (SOME - 604)) | (1L << (SONAME - 604)) | (1L << (SOUNDS - 604)) | (1L << (SOURCE - 604)) | (1L << (SQL_AFTER_GTIDS - 604)) | (1L << (SQL_AFTER_MTS_GAPS - 604)) | (1L << (SQL_BEFORE_GTIDS - 604)) | (1L << (SQL_BUFFER_RESULT - 604)) | (1L << (SQL_CACHE - 604)) | (1L << (SQL_NO_CACHE - 604)) | (1L << (SQL_THREAD - 604)) | (1L << (START - 604)) | (1L << (STARTS - 604)) | (1L << (STATS_AUTO_RECALC - 604)) | (1L << (STATS_PERSISTENT - 604)) | (1L << (STATS_SAMPLE_PAGES - 604)) | (1L << (STATUS - 604)) | (1L << (STOP - 604)) | (1L << (STORAGE - 604)) | (1L << (STRING - 604)) | (1L << (SUBCLASS_ORIGIN - 604)) | (1L << (SUBJECT - 604)) | (1L << (SUBPARTITION - 604)) | (1L << (SUBPARTITIONS - 604)) | (1L << (SUSPEND - 604)) | (1L << (SWAPS - 604)) | (1L << (SWITCHES - 604)) | (1L << (TABLE_NAME - 604)) | (1L << (TABLESPACE - 604)) | (1L << (TABLE_TYPE - 604)) | (1L << (TEMPORARY - 604)) | (1L << (TEMPTABLE - 604)) | (1L << (THAN - 604)) | (1L << (TRADITIONAL - 604)) | (1L << (TRANSACTION - 604)) | (1L << (TRANSACTIONAL - 604)) | (1L << (TRIGGERS - 604)) | (1L << (TRUNCATE - 604)) | (1L << (UNBOUNDED - 604)) | (1L << (UNDEFINED - 604)) | (1L << (UNDOFILE - 604)) | (1L << (UNDO_BUFFER_SIZE - 604)) | (1L << (UNINSTALL - 604)) | (1L << (UNKNOWN - 604)) | (1L << (UNTIL - 604)) | (1L << (UPGRADE - 604)))) != 0) || ((((_la - 668)) & ~0x3f) == 0 && ((1L << (_la - 668)) & ((1L << (USER - 668)) | (1L << (USE_FRM - 668)) | (1L << (USER_RESOURCES - 668)) | (1L << (VALIDATION - 668)) | (1L << (VALUE - 668)) | (1L << (VARIABLES - 668)) | (1L << (VIEW - 668)) | (1L << (VIRTUAL - 668)) | (1L << (VISIBLE - 668)) | (1L << (WAIT - 668)) | (1L << (WARNINGS - 668)) | (1L << (WITHOUT - 668)) | (1L << (WORK - 668)) | (1L << (WRAPPER - 668)) | (1L << (X509 - 668)) | (1L << (XA - 668)) | (1L << (XML - 668)) | (1L << (YES - 668)) | (1L << (EUR - 668)) | (1L << (USA - 668)) | (1L << (JIS - 668)) | (1L << (ISO - 668)) | (1L << (INTERNAL - 668)) | (1L << (QUARTER - 668)) | (1L << (MONTH - 668)) | (1L << (DAY - 668)) | (1L << (HOUR - 668)) | (1L << (MINUTE - 668)) | (1L << (WEEK - 668)) | (1L << (SECOND - 668)) | (1L << (MICROSECOND - 668)) | (1L << (USER_STATISTICS - 668)) | (1L << (CLIENT_STATISTICS - 668)) | (1L << (INDEX_STATISTICS - 668)) | (1L << (TABLE_STATISTICS - 668)) | (1L << (FIREWALL_RULES - 668)) | (1L << (ADMIN - 668)) | (1L << (APPLICATION_PASSWORD_ADMIN - 668)) | (1L << (AUDIT_ADMIN - 668)) | (1L << (AUDIT_ABORT_EXEMPT - 668)) | (1L << (AUTHENTICATION_POLICY_ADMIN - 668)) | (1L << (BACKUP_ADMIN - 668)) | (1L << (BINLOG_ADMIN - 668)) | (1L << (BINLOG_ENCRYPTION_ADMIN - 668)) | (1L << (CLONE_ADMIN - 668)) | (1L << (CONNECTION_ADMIN - 668)) | (1L << (ENCRYPTION_KEY_ADMIN - 668)) | (1L << (EXECUTE - 668)) | (1L << (FILE - 668)) | (1L << (FIREWALL_ADMIN - 668)) | (1L << (FIREWALL_EXEMPT - 668)) | (1L << (FIREWALL_USER - 668)) | (1L << (FLUSH_OPTIMIZER_COSTS - 668)) | (1L << (FLUSH_STATUS - 668)) | (1L << (FLUSH_TABLES - 668)) | (1L << (FLUSH_USER_RESOURCES - 668)) | (1L << (GROUP_REPLICATION_ADMIN - 668)) | (1L << (INNODB_REDO_LOG_ARCHIVE - 668)) | (1L << (INNODB_REDO_LOG_ENABLE - 668)) | (1L << (INVOKE - 668)) | (1L << (LAMBDA - 668)) | (1L << (NDB_STORED_USER - 668)) | (1L << (PASSWORDLESS_USER_ADMIN - 668)))) != 0) || ((((_la - 732)) & ~0x3f) == 0 && ((1L << (_la - 732)) & ((1L << (PERSIST_RO_VARIABLES_ADMIN - 732)) | (1L << (PRIVILEGES - 732)) | (1L << (PROCESS - 732)) | (1L << (RELOAD - 732)) | (1L << (REPLICATION_APPLIER - 732)) | (1L << (REPLICATION_SLAVE_ADMIN - 732)) | (1L << (RESOURCE_GROUP_ADMIN - 732)) | (1L << (RESOURCE_GROUP_USER - 732)) | (1L << (ROLE_ADMIN - 732)) | (1L << (ROUTINE - 732)) | (1L << (S3 - 732)) | (1L << (SESSION_VARIABLES_ADMIN - 732)) | (1L << (SET_USER_ID - 732)) | (1L << (SHOW_ROUTINE - 732)) | (1L << (SHUTDOWN - 732)) | (1L << (SUPER - 732)) | (1L << (SYSTEM_VARIABLES_ADMIN - 732)) | (1L << (TABLES - 732)) | (1L << (TABLE_ENCRYPTION_ADMIN - 732)) | (1L << (VERSION_TOKEN_ADMIN - 732)) | (1L << (XA_RECOVER_ADMIN - 732)) | (1L << (ARMSCII8 - 732)) | (1L << (ASCII - 732)) | (1L << (BIG5 - 732)) | (1L << (CP1250 - 732)) | (1L << (CP1251 - 732)) | (1L << (CP1256 - 732)) | (1L << (CP1257 - 732)) | (1L << (CP850 - 732)) | (1L << (CP852 - 732)) | (1L << (CP866 - 732)) | (1L << (CP932 - 732)) | (1L << (DEC8 - 732)) | (1L << (EUCJPMS - 732)) | (1L << (EUCKR - 732)) | (1L << (GB18030 - 732)) | (1L << (GB2312 - 732)) | (1L << (GBK - 732)) | (1L << (GEOSTD8 - 732)) | (1L << (GREEK - 732)) | (1L << (HEBREW - 732)) | (1L << (HP8 - 732)) | (1L << (KEYBCS2 - 732)) | (1L << (KOI8R - 732)) | (1L << (KOI8U - 732)) | (1L << (LATIN1 - 732)) | (1L << (LATIN2 - 732)) | (1L << (LATIN5 - 732)) | (1L << (LATIN7 - 732)) | (1L << (MACCE - 732)) | (1L << (MACROMAN - 732)) | (1L << (SJIS - 732)) | (1L << (SWE7 - 732)) | (1L << (TIS620 - 732)) | (1L << (UCS2 - 732)) | (1L << (UJIS - 732)) | (1L << (UTF16 - 732)) | (1L << (UTF16LE - 732)) | (1L << (UTF32 - 732)) | (1L << (UTF8 - 732)) | (1L << (UTF8MB3 - 732)) | (1L << (UTF8MB4 - 732)) | (1L << (ARCHIVE - 732)))) != 0) || ((((_la - 796)) & ~0x3f) == 0 && ((1L << (_la - 796)) & ((1L << (BLACKHOLE - 796)) | (1L << (CSV - 796)) | (1L << (FEDERATED - 796)) | (1L << (INNODB - 796)) | (1L << (MEMORY - 796)) | (1L << (MRG_MYISAM - 796)) | (1L << (MYISAM - 796)) | (1L << (NDB - 796)) | (1L << (NDBCLUSTER - 796)) | (1L << (PERFORMANCE_SCHEMA - 796)) | (1L << (TOKUDB - 796)) | (1L << (REPEATABLE - 796)) | (1L << (COMMITTED - 796)) | (1L << (UNCOMMITTED - 796)) | (1L << (SERIALIZABLE - 796)) | (1L << (GEOMETRYCOLLECTION - 796)) | (1L << (GEOMETRY - 796)) | (1L << (LINESTRING - 796)) | (1L << (MULTILINESTRING - 796)) | (1L << (MULTIPOINT - 796)) | (1L << (MULTIPOLYGON - 796)) | (1L << (POINT - 796)) | (1L << (POLYGON - 796)) | (1L << (ABS - 796)) | (1L << (ACOS - 796)) | (1L << (ADDDATE - 796)) | (1L << (ADDTIME - 796)) | (1L << (AES_DECRYPT - 796)) | (1L << (AES_ENCRYPT - 796)) | (1L << (AREA - 796)) | (1L << (ASBINARY - 796)) | (1L << (ASIN - 796)) | (1L << (ASTEXT - 796)) | (1L << (ASWKB - 796)) | (1L << (ASWKT - 796)) | (1L << (ASYMMETRIC_DECRYPT - 796)) | (1L << (ASYMMETRIC_DERIVE - 796)) | (1L << (ASYMMETRIC_ENCRYPT - 796)) | (1L << (ASYMMETRIC_SIGN - 796)) | (1L << (ASYMMETRIC_VERIFY - 796)) | (1L << (ATAN - 796)) | (1L << (ATAN2 - 796)) | (1L << (BENCHMARK - 796)) | (1L << (BIN - 796)) | (1L << (BIT_COUNT - 796)) | (1L << (BIT_LENGTH - 796)) | (1L << (BUFFER - 796)) | (1L << (CATALOG_NAME - 796)) | (1L << (CEIL - 796)) | (1L << (CEILING - 796)) | (1L << (CENTROID - 796)) | (1L << (CHARACTER_LENGTH - 796)) | (1L << (CHARSET - 796)) | (1L << (CHAR_LENGTH - 796)) | (1L << (COERCIBILITY - 796)) | (1L << (COLLATION - 796)) | (1L << (COMPRESS - 796)) | (1L << (CONCAT - 796)) | (1L << (CONCAT_WS - 796)) | (1L << (CONNECTION_ID - 796)) | (1L << (CONV - 796)) | (1L << (CONVERT_TZ - 796)) | (1L << (COS - 796)))) != 0) || ((((_la - 860)) & ~0x3f) == 0 && ((1L << (_la - 860)) & ((1L << (COT - 860)) | (1L << (CRC32 - 860)) | (1L << (CREATE_ASYMMETRIC_PRIV_KEY - 860)) | (1L << (CREATE_ASYMMETRIC_PUB_KEY - 860)) | (1L << (CREATE_DH_PARAMETERS - 860)) | (1L << (CREATE_DIGEST - 860)) | (1L << (CROSSES - 860)) | (1L << (DATEDIFF - 860)) | (1L << (DATE_FORMAT - 860)) | (1L << (DAYNAME - 860)) | (1L << (DAYOFMONTH - 860)) | (1L << (DAYOFWEEK - 860)) | (1L << (DAYOFYEAR - 860)) | (1L << (DECODE - 860)) | (1L << (DEGREES - 860)) | (1L << (DES_DECRYPT - 860)) | (1L << (DES_ENCRYPT - 860)) | (1L << (DIMENSION - 860)) | (1L << (DISJOINT - 860)) | (1L << (ELT - 860)) | (1L << (ENCODE - 860)) | (1L << (ENCRYPT - 860)) | (1L << (ENDPOINT - 860)) | (1L << (ENGINE_ATTRIBUTE - 860)) | (1L << (ENVELOPE - 860)) | (1L << (EQUALS - 860)) | (1L << (EXP - 860)) | (1L << (EXPORT_SET - 860)) | (1L << (EXTERIORRING - 860)) | (1L << (EXTRACTVALUE - 860)) | (1L << (FIELD - 860)) | (1L << (FIND_IN_SET - 860)) | (1L << (FLOOR - 860)) | (1L << (FORMAT - 860)) | (1L << (FOUND_ROWS - 860)) | (1L << (FROM_BASE64 - 860)) | (1L << (FROM_DAYS - 860)) | (1L << (FROM_UNIXTIME - 860)) | (1L << (GEOMCOLLFROMTEXT - 860)) | (1L << (GEOMCOLLFROMWKB - 860)) | (1L << (GEOMETRYCOLLECTIONFROMTEXT - 860)) | (1L << (GEOMETRYCOLLECTIONFROMWKB - 860)) | (1L << (GEOMETRYFROMTEXT - 860)) | (1L << (GEOMETRYFROMWKB - 860)) | (1L << (GEOMETRYN - 860)) | (1L << (GEOMETRYTYPE - 860)) | (1L << (GEOMFROMTEXT - 860)) | (1L << (GEOMFROMWKB - 860)) | (1L << (GET_FORMAT - 860)) | (1L << (GET_LOCK - 860)) | (1L << (GLENGTH - 860)) | (1L << (GREATEST - 860)) | (1L << (GTID_SUBSET - 860)) | (1L << (GTID_SUBTRACT - 860)) | (1L << (HEX - 860)) | (1L << (IFNULL - 860)) | (1L << (INET6_ATON - 860)) | (1L << (INET6_NTOA - 860)) | (1L << (INET_ATON - 860)) | (1L << (INET_NTOA - 860)) | (1L << (INSTR - 860)) | (1L << (INTERIORRINGN - 860)) | (1L << (INTERSECTS - 860)) | (1L << (ISCLOSED - 860)))) != 0) || ((((_la - 924)) & ~0x3f) == 0 && ((1L << (_la - 924)) & ((1L << (ISEMPTY - 924)) | (1L << (ISNULL - 924)) | (1L << (ISSIMPLE - 924)) | (1L << (IS_FREE_LOCK - 924)) | (1L << (IS_IPV4 - 924)) | (1L << (IS_IPV4_COMPAT - 924)) | (1L << (IS_IPV4_MAPPED - 924)) | (1L << (IS_IPV6 - 924)) | (1L << (IS_USED_LOCK - 924)) | (1L << (LAST_INSERT_ID - 924)) | (1L << (LCASE - 924)) | (1L << (LEAST - 924)) | (1L << (LENGTH - 924)) | (1L << (LINEFROMTEXT - 924)) | (1L << (LINEFROMWKB - 924)) | (1L << (LINESTRINGFROMTEXT - 924)) | (1L << (LINESTRINGFROMWKB - 924)) | (1L << (LN - 924)) | (1L << (LOAD_FILE - 924)) | (1L << (LOCATE - 924)) | (1L << (LOG - 924)) | (1L << (LOG10 - 924)) | (1L << (LOG2 - 924)) | (1L << (LOWER - 924)) | (1L << (LPAD - 924)) | (1L << (LTRIM - 924)) | (1L << (MAKEDATE - 924)) | (1L << (MAKETIME - 924)) | (1L << (MAKE_SET - 924)) | (1L << (MASTER_POS_WAIT - 924)) | (1L << (MBRCONTAINS - 924)) | (1L << (MBRDISJOINT - 924)) | (1L << (MBREQUAL - 924)) | (1L << (MBRINTERSECTS - 924)) | (1L << (MBROVERLAPS - 924)) | (1L << (MBRTOUCHES - 924)) | (1L << (MBRWITHIN - 924)) | (1L << (MD5 - 924)) | (1L << (MLINEFROMTEXT - 924)) | (1L << (MLINEFROMWKB - 924)) | (1L << (MONTHNAME - 924)) | (1L << (MPOINTFROMTEXT - 924)) | (1L << (MPOINTFROMWKB - 924)) | (1L << (MPOLYFROMTEXT - 924)) | (1L << (MPOLYFROMWKB - 924)) | (1L << (MULTILINESTRINGFROMTEXT - 924)) | (1L << (MULTILINESTRINGFROMWKB - 924)) | (1L << (MULTIPOINTFROMTEXT - 924)) | (1L << (MULTIPOINTFROMWKB - 924)) | (1L << (MULTIPOLYGONFROMTEXT - 924)) | (1L << (MULTIPOLYGONFROMWKB - 924)) | (1L << (NAME_CONST - 924)) | (1L << (NULLIF - 924)) | (1L << (NUMGEOMETRIES - 924)) | (1L << (NUMINTERIORRINGS - 924)) | (1L << (NUMPOINTS - 924)) | (1L << (OCT - 924)) | (1L << (OCTET_LENGTH - 924)) | (1L << (ORD - 924)) | (1L << (OVERLAPS - 924)) | (1L << (PERIOD_ADD - 924)) | (1L << (PERIOD_DIFF - 924)) | (1L << (PI - 924)) | (1L << (POINTFROMTEXT - 924)))) != 0) || ((((_la - 988)) & ~0x3f) == 0 && ((1L << (_la - 988)) & ((1L << (POINTFROMWKB - 988)) | (1L << (POINTN - 988)) | (1L << (POLYFROMTEXT - 988)) | (1L << (POLYFROMWKB - 988)) | (1L << (POLYGONFROMTEXT - 988)) | (1L << (POLYGONFROMWKB - 988)) | (1L << (POW - 988)) | (1L << (POWER - 988)) | (1L << (QUOTE - 988)) | (1L << (RADIANS - 988)) | (1L << (RAND - 988)) | (1L << (RANDOM - 988)) | (1L << (RANDOM_BYTES - 988)) | (1L << (RELEASE_LOCK - 988)) | (1L << (REVERSE - 988)) | (1L << (ROUND - 988)) | (1L << (ROW_COUNT - 988)) | (1L << (RPAD - 988)) | (1L << (RTRIM - 988)) | (1L << (SEC_TO_TIME - 988)) | (1L << (SECONDARY_ENGINE_ATTRIBUTE - 988)) | (1L << (SENSITIVE_VARIABLES_OBSERVER - 988)) | (1L << (SESSION_USER - 988)) | (1L << (SHA - 988)) | (1L << (SHA1 - 988)) | (1L << (SHA2 - 988)) | (1L << (SCHEMA_NAME - 988)) | (1L << (SIGN - 988)) | (1L << (SIN - 988)) | (1L << (SLEEP - 988)) | (1L << (SOUNDEX - 988)) | (1L << (SQL_THREAD_WAIT_AFTER_GTIDS - 988)) | (1L << (SQRT - 988)) | (1L << (SRID - 988)) | (1L << (STARTPOINT - 988)) | (1L << (STRCMP - 988)) | (1L << (STR_TO_DATE - 988)) | (1L << (ST_AREA - 988)) | (1L << (ST_ASBINARY - 988)) | (1L << (ST_ASTEXT - 988)) | (1L << (ST_ASWKB - 988)) | (1L << (ST_ASWKT - 988)) | (1L << (ST_BUFFER - 988)) | (1L << (ST_CENTROID - 988)) | (1L << (ST_CONTAINS - 988)) | (1L << (ST_CROSSES - 988)) | (1L << (ST_DIFFERENCE - 988)) | (1L << (ST_DIMENSION - 988)) | (1L << (ST_DISJOINT - 988)) | (1L << (ST_DISTANCE - 988)) | (1L << (ST_ENDPOINT - 988)) | (1L << (ST_ENVELOPE - 988)) | (1L << (ST_EQUALS - 988)) | (1L << (ST_EXTERIORRING - 988)) | (1L << (ST_GEOMCOLLFROMTEXT - 988)) | (1L << (ST_GEOMCOLLFROMTXT - 988)) | (1L << (ST_GEOMCOLLFROMWKB - 988)) | (1L << (ST_GEOMETRYCOLLECTIONFROMTEXT - 988)) | (1L << (ST_GEOMETRYCOLLECTIONFROMWKB - 988)) | (1L << (ST_GEOMETRYFROMTEXT - 988)) | (1L << (ST_GEOMETRYFROMWKB - 988)) | (1L << (ST_GEOMETRYN - 988)) | (1L << (ST_GEOMETRYTYPE - 988)) | (1L << (ST_GEOMFROMTEXT - 988)))) != 0) || ((((_la - 1052)) & ~0x3f) == 0 && ((1L << (_la - 1052)) & ((1L << (ST_GEOMFROMWKB - 1052)) | (1L << (ST_INTERIORRINGN - 1052)) | (1L << (ST_INTERSECTION - 1052)) | (1L << (ST_INTERSECTS - 1052)) | (1L << (ST_ISCLOSED - 1052)) | (1L << (ST_ISEMPTY - 1052)) | (1L << (ST_ISSIMPLE - 1052)) | (1L << (ST_LINEFROMTEXT - 1052)) | (1L << (ST_LINEFROMWKB - 1052)) | (1L << (ST_LINESTRINGFROMTEXT - 1052)) | (1L << (ST_LINESTRINGFROMWKB - 1052)) | (1L << (ST_NUMGEOMETRIES - 1052)) | (1L << (ST_NUMINTERIORRING - 1052)) | (1L << (ST_NUMINTERIORRINGS - 1052)) | (1L << (ST_NUMPOINTS - 1052)) | (1L << (ST_OVERLAPS - 1052)) | (1L << (ST_POINTFROMTEXT - 1052)) | (1L << (ST_POINTFROMWKB - 1052)) | (1L << (ST_POINTN - 1052)) | (1L << (ST_POLYFROMTEXT - 1052)) | (1L << (ST_POLYFROMWKB - 1052)) | (1L << (ST_POLYGONFROMTEXT - 1052)) | (1L << (ST_POLYGONFROMWKB - 1052)) | (1L << (ST_SRID - 1052)) | (1L << (ST_STARTPOINT - 1052)) | (1L << (ST_SYMDIFFERENCE - 1052)) | (1L << (ST_TOUCHES - 1052)) | (1L << (ST_UNION - 1052)) | (1L << (ST_WITHIN - 1052)) | (1L << (ST_X - 1052)) | (1L << (ST_Y - 1052)) | (1L << (SUBDATE - 1052)) | (1L << (SUBSTRING_INDEX - 1052)) | (1L << (SUBTIME - 1052)) | (1L << (SYSTEM_USER - 1052)) | (1L << (SYSTEM - 1052)) | (1L << (TAN - 1052)) | (1L << (TELEMETRY_LOG_ADMIN - 1052)) | (1L << (TIMEDIFF - 1052)) | (1L << (TIMESTAMPADD - 1052)) | (1L << (TIMESTAMPDIFF - 1052)) | (1L << (TIME_FORMAT - 1052)) | (1L << (TIME_TO_SEC - 1052)) | (1L << (TOUCHES - 1052)) | (1L << (TO_BASE64 - 1052)) | (1L << (TO_DAYS - 1052)) | (1L << (TO_SECONDS - 1052)) | (1L << (TP_CONNECTION_ADMIN - 1052)) | (1L << (UCASE - 1052)) | (1L << (UNCOMPRESS - 1052)) | (1L << (UNCOMPRESSED_LENGTH - 1052)) | (1L << (UNHEX - 1052)) | (1L << (UNIX_TIMESTAMP - 1052)) | (1L << (UPDATEXML - 1052)) | (1L << (UPPER - 1052)) | (1L << (UUID - 1052)) | (1L << (UUID_SHORT - 1052)) | (1L << (VALIDATE_PASSWORD_STRENGTH - 1052)) | (1L << (VERSION - 1052)) | (1L << (VERSIONING - 1052)) | (1L << (WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS - 1052)) | (1L << (WEEKDAY - 1052)) | (1L << (WEEKOFYEAR - 1052)) | (1L << (WEIGHT_STRING - 1052)))) != 0) || ((((_la - 1116)) & ~0x3f) == 0 && ((1L << (_la - 1116)) & ((1L << (WITHIN - 1116)) | (1L << (YEARWEEK - 1116)) | (1L << (Y_FUNCTION - 1116)) | (1L << (X_FUNCTION - 1116)) | (1L << (VIA - 1116)) | (1L << (LASTVAL - 1116)) | (1L << (NEXTVAL - 1116)) | (1L << (SETVAL - 1116)) | (1L << (PREVIOUS - 1116)) | (1L << (PERSISTENT - 1116)) | (1L << (BINLOG_MONITOR - 1116)) | (1L << (BINLOG_REPLAY - 1116)) | (1L << (FEDERATED_ADMIN - 1116)) | (1L << (READ_ONLY_ADMIN - 1116)) | (1L << (REPLICA - 1116)) | (1L << (REPLICATION_MASTER_ADMIN - 1116)) | (1L << (MONITOR - 1116)) | (1L << (READ_ONLY - 1116)) | (1L << (REPLAY - 1116)) | (1L << (MOD - 1116)) | (1L << (CHARSET_REVERSE_QOUTE_STRING - 1116)) | (1L << (STRING_LITERAL - 1116)))) != 0) || _la==ID) {
					{
					setState(1831);
					((PrimaryKeyTableConstraintContext)_localctx).index = uid();
					}
				}

				setState(1835);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==USING) {
					{
					setState(1834);
					indexType();
					}
				}

				setState(1837);
				indexColumnNames();
				setState(1841);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,188,_ctx);
				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
					if ( _alt==1 ) {
						{
						{
						setState(1838);
						indexOption();
						}
						} 
					}
					setState(1843);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,188,_ctx);
				}
				}
				break;
			case 2:
				_localctx = new UniqueKeyTableConstraintContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(1848);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==CONSTRAINT) {
					{
					setState(1844);
					match(CONSTRAINT);
					setState(1846);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ARRAY) | (1L << ATTRIBUTE) | (1L << BUCKETS) | (1L << CONDITION) | (1L << CURRENT) | (1L << CURRENT_ROLE) | (1L << CURRENT_USER) | (1L << DATABASE) | (1L << DEFAULT) | (1L << DIAGNOSTICS) | (1L << EMPTY) | (1L << ENFORCED) | (1L << EXCEPT))) != 0) || ((((_la - 74)) & ~0x3f) == 0 && ((1L << (_la - 74)) & ((1L << (GROUP - 74)) | (1L << (GROUP_REPLICATION_STREAM - 74)) | (1L << (IF - 74)) | (1L << (IGNORED - 74)) | (1L << (INSERT - 74)) | (1L << (LATERAL - 74)) | (1L << (LEFT - 74)) | (1L << (LOCKED - 74)) | (1L << (MAXVALUE - 74)) | (1L << (MINVALUE - 74)) | (1L << (NUMBER - 74)) | (1L << (OPTIONAL - 74)) | (1L << (ORDER - 74)) | (1L << (PRIMARY - 74)))) != 0) || ((((_la - 142)) & ~0x3f) == 0 && ((1L << (_la - 142)) & ((1L << (REPEAT - 142)) | (1L << (REPLACE - 142)) | (1L << (RIGHT - 142)) | (1L << (SCHEMA - 142)) | (1L << (SKIP_ - 142)) | (1L << (SKIP_QUERY_REWRITE - 142)) | (1L << (STACKED - 142)) | (1L << (STATEMENT - 142)))) != 0) || ((((_la - 220)) & ~0x3f) == 0 && ((1L << (_la - 220)) & ((1L << (DATE - 220)) | (1L << (TIME - 220)) | (1L << (TIMESTAMP - 220)) | (1L << (DATETIME - 220)) | (1L << (YEAR - 220)) | (1L << (NATIONAL - 220)) | (1L << (BINARY - 220)) | (1L << (TEXT - 220)) | (1L << (ENUM - 220)) | (1L << (SERIAL - 220)) | (1L << (JSON_ARRAY - 220)) | (1L << (JSON_ARRAYAGG - 220)) | (1L << (JSON_ARRAY_APPEND - 220)) | (1L << (JSON_ARRAY_INSERT - 220)) | (1L << (JSON_CONTAINS - 220)) | (1L << (JSON_CONTAINS_PATH - 220)) | (1L << (JSON_DEPTH - 220)) | (1L << (JSON_EXTRACT - 220)) | (1L << (JSON_INSERT - 220)) | (1L << (JSON_KEYS - 220)) | (1L << (JSON_LENGTH - 220)) | (1L << (JSON_MERGE - 220)) | (1L << (JSON_MERGE_PATCH - 220)) | (1L << (JSON_MERGE_PRESERVE - 220)) | (1L << (JSON_OBJECT - 220)) | (1L << (JSON_OBJECTAGG - 220)) | (1L << (JSON_OVERLAPS - 220)) | (1L << (JSON_PRETTY - 220)) | (1L << (JSON_QUOTE - 220)) | (1L << (JSON_REMOVE - 220)) | (1L << (JSON_REPLACE - 220)) | (1L << (JSON_SCHEMA_VALID - 220)) | (1L << (JSON_SCHEMA_VALIDATION_REPORT - 220)) | (1L << (JSON_SEARCH - 220)) | (1L << (JSON_SET - 220)) | (1L << (JSON_STORAGE_FREE - 220)) | (1L << (JSON_STORAGE_SIZE - 220)) | (1L << (JSON_TABLE - 220)) | (1L << (JSON_TYPE - 220)) | (1L << (JSON_UNQUOTE - 220)))) != 0) || ((((_la - 284)) & ~0x3f) == 0 && ((1L << (_la - 284)) & ((1L << (JSON_VALID - 284)) | (1L << (JSON_VALUE - 284)) | (1L << (NESTED - 284)) | (1L << (ORDINALITY - 284)) | (1L << (PATH - 284)) | (1L << (AVG - 284)) | (1L << (BIT_AND - 284)) | (1L << (BIT_OR - 284)) | (1L << (BIT_XOR - 284)) | (1L << (COUNT - 284)) | (1L << (CUME_DIST - 284)) | (1L << (DENSE_RANK - 284)) | (1L << (FIRST_VALUE - 284)) | (1L << (GROUP_CONCAT - 284)) | (1L << (LAG - 284)) | (1L << (LAST_VALUE - 284)) | (1L << (LEAD - 284)) | (1L << (MAX - 284)) | (1L << (MIN - 284)) | (1L << (NTILE - 284)) | (1L << (NTH_VALUE - 284)) | (1L << (PERCENT_RANK - 284)) | (1L << (RANK - 284)) | (1L << (ROW_NUMBER - 284)) | (1L << (STD - 284)) | (1L << (STDDEV - 284)) | (1L << (STDDEV_POP - 284)) | (1L << (STDDEV_SAMP - 284)) | (1L << (SUM - 284)) | (1L << (VAR_POP - 284)) | (1L << (VAR_SAMP - 284)) | (1L << (VARIANCE - 284)) | (1L << (CURRENT_DATE - 284)) | (1L << (CURRENT_TIME - 284)) | (1L << (CURRENT_TIMESTAMP - 284)) | (1L << (LOCALTIME - 284)) | (1L << (CURDATE - 284)) | (1L << (CURTIME - 284)) | (1L << (DATE_ADD - 284)) | (1L << (DATE_SUB - 284)) | (1L << (LOCALTIMESTAMP - 284)) | (1L << (NOW - 284)) | (1L << (POSITION - 284)) | (1L << (SUBSTR - 284)) | (1L << (SUBSTRING - 284)) | (1L << (SYSDATE - 284)) | (1L << (TRIM - 284)) | (1L << (UTC_DATE - 284)) | (1L << (UTC_TIME - 284)) | (1L << (UTC_TIMESTAMP - 284)) | (1L << (ACCOUNT - 284)) | (1L << (ACTION - 284)) | (1L << (AFTER - 284)) | (1L << (AGGREGATE - 284)) | (1L << (ALGORITHM - 284)) | (1L << (ANY - 284)) | (1L << (AT - 284)) | (1L << (AUTHORS - 284)) | (1L << (AUTOCOMMIT - 284)) | (1L << (AUTOEXTEND_SIZE - 284)) | (1L << (AUTO_INCREMENT - 284)) | (1L << (AVG_ROW_LENGTH - 284)) | (1L << (BEGIN - 284)))) != 0) || ((((_la - 348)) & ~0x3f) == 0 && ((1L << (_la - 348)) & ((1L << (BINLOG - 348)) | (1L << (BIT - 348)) | (1L << (BLOCK - 348)) | (1L << (BOOL - 348)) | (1L << (BOOLEAN - 348)) | (1L << (BTREE - 348)) | (1L << (CACHE - 348)) | (1L << (CASCADED - 348)) | (1L << (CHAIN - 348)) | (1L << (CHANGED - 348)) | (1L << (CHANNEL - 348)) | (1L << (CHECKSUM - 348)) | (1L << (PAGE_CHECKSUM - 348)) | (1L << (CIPHER - 348)) | (1L << (CLASS_ORIGIN - 348)) | (1L << (CLIENT - 348)) | (1L << (CLOSE - 348)) | (1L << (CLUSTERING - 348)) | (1L << (COALESCE - 348)) | (1L << (CODE - 348)) | (1L << (COLUMNS - 348)) | (1L << (COLUMN_FORMAT - 348)) | (1L << (COLUMN_NAME - 348)) | (1L << (COMMENT - 348)) | (1L << (COMMIT - 348)) | (1L << (COMPACT - 348)) | (1L << (COMPLETION - 348)) | (1L << (COMPRESSED - 348)) | (1L << (COMPRESSION - 348)) | (1L << (CONCURRENT - 348)) | (1L << (CONNECT - 348)) | (1L << (CONNECTION - 348)) | (1L << (CONSISTENT - 348)) | (1L << (CONSTRAINT_CATALOG - 348)) | (1L << (CONSTRAINT_SCHEMA - 348)) | (1L << (CONSTRAINT_NAME - 348)) | (1L << (CONTAINS - 348)) | (1L << (CONTEXT - 348)) | (1L << (CONTRIBUTORS - 348)) | (1L << (COPY - 348)) | (1L << (CPU - 348)) | (1L << (CYCLE - 348)) | (1L << (CURSOR_NAME - 348)) | (1L << (DATA - 348)) | (1L << (DATAFILE - 348)) | (1L << (DEALLOCATE - 348)) | (1L << (DEFAULT_AUTH - 348)) | (1L << (DEFINER - 348)) | (1L << (DELAY_KEY_WRITE - 348)) | (1L << (DES_KEY_FILE - 348)) | (1L << (DIRECTORY - 348)) | (1L << (DISABLE - 348)) | (1L << (DISCARD - 348)) | (1L << (DISK - 348)) | (1L << (DO - 348)) | (1L << (DUMPFILE - 348)) | (1L << (DUPLICATE - 348)) | (1L << (DYNAMIC - 348)) | (1L << (ENABLE - 348)) | (1L << (ENCRYPTED - 348)) | (1L << (ENCRYPTION - 348)) | (1L << (ENCRYPTION_KEY_ID - 348)) | (1L << (END - 348)) | (1L << (ENDS - 348)))) != 0) || ((((_la - 412)) & ~0x3f) == 0 && ((1L << (_la - 412)) & ((1L << (ENGINE - 412)) | (1L << (ENGINES - 412)) | (1L << (ERROR - 412)) | (1L << (ERRORS - 412)) | (1L << (ESCAPE - 412)) | (1L << (EVEN - 412)) | (1L << (EVENT - 412)) | (1L << (EVENTS - 412)) | (1L << (EVERY - 412)) | (1L << (EXCHANGE - 412)) | (1L << (EXCLUSIVE - 412)) | (1L << (EXPIRE - 412)) | (1L << (EXPORT - 412)) | (1L << (EXTENDED - 412)) | (1L << (EXTENT_SIZE - 412)) | (1L << (FAILED_LOGIN_ATTEMPTS - 412)) | (1L << (FAST - 412)) | (1L << (FAULTS - 412)) | (1L << (FIELDS - 412)) | (1L << (FILE_BLOCK_SIZE - 412)) | (1L << (FILTER - 412)) | (1L << (FIRST - 412)) | (1L << (FIXED - 412)) | (1L << (FLUSH - 412)) | (1L << (FOLLOWS - 412)) | (1L << (FOUND - 412)) | (1L << (FULL - 412)) | (1L << (FUNCTION - 412)) | (1L << (GENERAL - 412)) | (1L << (GLOBAL - 412)) | (1L << (GRANTS - 412)) | (1L << (GROUP_REPLICATION - 412)) | (1L << (HANDLER - 412)) | (1L << (HASH - 412)) | (1L << (HELP - 412)) | (1L << (HISTORY - 412)) | (1L << (HOST - 412)) | (1L << (HOSTS - 412)) | (1L << (IDENTIFIED - 412)) | (1L << (IGNORE_SERVER_IDS - 412)) | (1L << (IMPORT - 412)) | (1L << (INCREMENT - 412)) | (1L << (INDEXES - 412)) | (1L << (INITIAL_SIZE - 412)) | (1L << (INPLACE - 412)) | (1L << (INSERT_METHOD - 412)) | (1L << (INSTALL - 412)) | (1L << (INSTANCE - 412)) | (1L << (INSTANT - 412)) | (1L << (INVISIBLE - 412)) | (1L << (INVOKER - 412)) | (1L << (IO - 412)) | (1L << (IO_THREAD - 412)) | (1L << (IPC - 412)) | (1L << (ISOLATION - 412)) | (1L << (ISSUER - 412)) | (1L << (JSON - 412)) | (1L << (KEY_BLOCK_SIZE - 412)) | (1L << (LANGUAGE - 412)) | (1L << (LAST - 412)) | (1L << (LEAVES - 412)) | (1L << (LESS - 412)) | (1L << (LEVEL - 412)))) != 0) || ((((_la - 476)) & ~0x3f) == 0 && ((1L << (_la - 476)) & ((1L << (LIST - 476)) | (1L << (LOCAL - 476)) | (1L << (LOGFILE - 476)) | (1L << (LOGS - 476)) | (1L << (MASTER - 476)) | (1L << (MASTER_AUTO_POSITION - 476)) | (1L << (MASTER_CONNECT_RETRY - 476)) | (1L << (MASTER_DELAY - 476)) | (1L << (MASTER_HEARTBEAT_PERIOD - 476)) | (1L << (MASTER_HOST - 476)) | (1L << (MASTER_LOG_FILE - 476)) | (1L << (MASTER_LOG_POS - 476)) | (1L << (MASTER_PASSWORD - 476)) | (1L << (MASTER_PORT - 476)) | (1L << (MASTER_RETRY_COUNT - 476)) | (1L << (MASTER_SSL - 476)) | (1L << (MASTER_SSL_CA - 476)) | (1L << (MASTER_SSL_CAPATH - 476)) | (1L << (MASTER_SSL_CERT - 476)) | (1L << (MASTER_SSL_CIPHER - 476)) | (1L << (MASTER_SSL_CRL - 476)) | (1L << (MASTER_SSL_CRLPATH - 476)) | (1L << (MASTER_SSL_KEY - 476)) | (1L << (MASTER_TLS_VERSION - 476)) | (1L << (MASTER_USER - 476)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 476)) | (1L << (MAX_QUERIES_PER_HOUR - 476)) | (1L << (MAX_ROWS - 476)) | (1L << (MAX_SIZE - 476)) | (1L << (MAX_UPDATES_PER_HOUR - 476)) | (1L << (MAX_USER_CONNECTIONS - 476)) | (1L << (MEDIUM - 476)) | (1L << (MEMBER - 476)) | (1L << (MERGE - 476)) | (1L << (MESSAGE_TEXT - 476)) | (1L << (MID - 476)) | (1L << (MIGRATE - 476)) | (1L << (MIN_ROWS - 476)) | (1L << (MODE - 476)) | (1L << (MODIFY - 476)) | (1L << (MUTEX - 476)) | (1L << (MYSQL - 476)) | (1L << (MYSQL_ERRNO - 476)) | (1L << (NAME - 476)) | (1L << (NAMES - 476)) | (1L << (NCHAR - 476)) | (1L << (NEVER - 476)) | (1L << (NEXT - 476)) | (1L << (NO - 476)) | (1L << (NOCACHE - 476)) | (1L << (NOCOPY - 476)) | (1L << (NOCYCLE - 476)) | (1L << (NOMAXVALUE - 476)) | (1L << (NOMINVALUE - 476)) | (1L << (NOWAIT - 476)) | (1L << (NODEGROUP - 476)) | (1L << (NONE - 476)) | (1L << (ODBC - 476)) | (1L << (OFFLINE - 476)) | (1L << (OFFSET - 476)) | (1L << (OF - 476)) | (1L << (OJ - 476)) | (1L << (OLD_PASSWORD - 476)) | (1L << (ONE - 476)))) != 0) || ((((_la - 540)) & ~0x3f) == 0 && ((1L << (_la - 540)) & ((1L << (ONLINE - 540)) | (1L << (ONLY - 540)) | (1L << (OPEN - 540)) | (1L << (OPTIMIZER_COSTS - 540)) | (1L << (OPTIONS - 540)) | (1L << (OWNER - 540)) | (1L << (PACK_KEYS - 540)) | (1L << (PAGE - 540)) | (1L << (PARSER - 540)) | (1L << (PARTIAL - 540)) | (1L << (PARTITIONING - 540)) | (1L << (PARTITIONS - 540)) | (1L << (PASSWORD - 540)) | (1L << (PASSWORD_LOCK_TIME - 540)) | (1L << (PHASE - 540)) | (1L << (PLUGIN - 540)) | (1L << (PLUGIN_DIR - 540)) | (1L << (PLUGINS - 540)) | (1L << (PORT - 540)) | (1L << (PRECEDES - 540)) | (1L << (PREPARE - 540)) | (1L << (PRESERVE - 540)) | (1L << (PREV - 540)) | (1L << (PROCESSLIST - 540)) | (1L << (PROFILE - 540)) | (1L << (PROFILES - 540)) | (1L << (PROXY - 540)) | (1L << (QUERY - 540)) | (1L << (QUICK - 540)) | (1L << (REBUILD - 540)) | (1L << (RECOVER - 540)) | (1L << (RECURSIVE - 540)) | (1L << (REDO_BUFFER_SIZE - 540)) | (1L << (REDUNDANT - 540)) | (1L << (RELAY - 540)) | (1L << (RELAY_LOG_FILE - 540)) | (1L << (RELAY_LOG_POS - 540)) | (1L << (RELAYLOG - 540)) | (1L << (REMOVE - 540)) | (1L << (REORGANIZE - 540)) | (1L << (REPAIR - 540)) | (1L << (REPLICATE_DO_DB - 540)) | (1L << (REPLICATE_DO_TABLE - 540)) | (1L << (REPLICATE_IGNORE_DB - 540)) | (1L << (REPLICATE_IGNORE_TABLE - 540)) | (1L << (REPLICATE_REWRITE_DB - 540)) | (1L << (REPLICATE_WILD_DO_TABLE - 540)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 540)) | (1L << (REPLICATION - 540)) | (1L << (RESET - 540)) | (1L << (RESTART - 540)) | (1L << (RESUME - 540)) | (1L << (RETURNED_SQLSTATE - 540)) | (1L << (RETURNING - 540)) | (1L << (RETURNS - 540)) | (1L << (REUSE - 540)) | (1L << (ROLE - 540)) | (1L << (ROLLBACK - 540)) | (1L << (ROLLUP - 540)) | (1L << (ROTATE - 540)) | (1L << (ROW - 540)))) != 0) || ((((_la - 604)) & ~0x3f) == 0 && ((1L << (_la - 604)) & ((1L << (ROWS - 604)) | (1L << (ROW_FORMAT - 604)) | (1L << (RTREE - 604)) | (1L << (SAVEPOINT - 604)) | (1L << (SCHEDULE - 604)) | (1L << (SECURITY - 604)) | (1L << (SEQUENCE - 604)) | (1L << (SERVER - 604)) | (1L << (SESSION - 604)) | (1L << (SHARE - 604)) | (1L << (SHARED - 604)) | (1L << (SIGNED - 604)) | (1L << (SIMPLE - 604)) | (1L << (SLAVE - 604)) | (1L << (SLOW - 604)) | (1L << (SNAPSHOT - 604)) | (1L << (SOCKET - 604)) | (1L << (SOME - 604)) | (1L << (SONAME - 604)) | (1L << (SOUNDS - 604)) | (1L << (SOURCE - 604)) | (1L << (SQL_AFTER_GTIDS - 604)) | (1L << (SQL_AFTER_MTS_GAPS - 604)) | (1L << (SQL_BEFORE_GTIDS - 604)) | (1L << (SQL_BUFFER_RESULT - 604)) | (1L << (SQL_CACHE - 604)) | (1L << (SQL_NO_CACHE - 604)) | (1L << (SQL_THREAD - 604)) | (1L << (START - 604)) | (1L << (STARTS - 604)) | (1L << (STATS_AUTO_RECALC - 604)) | (1L << (STATS_PERSISTENT - 604)) | (1L << (STATS_SAMPLE_PAGES - 604)) | (1L << (STATUS - 604)) | (1L << (STOP - 604)) | (1L << (STORAGE - 604)) | (1L << (STRING - 604)) | (1L << (SUBCLASS_ORIGIN - 604)) | (1L << (SUBJECT - 604)) | (1L << (SUBPARTITION - 604)) | (1L << (SUBPARTITIONS - 604)) | (1L << (SUSPEND - 604)) | (1L << (SWAPS - 604)) | (1L << (SWITCHES - 604)) | (1L << (TABLE_NAME - 604)) | (1L << (TABLESPACE - 604)) | (1L << (TABLE_TYPE - 604)) | (1L << (TEMPORARY - 604)) | (1L << (TEMPTABLE - 604)) | (1L << (THAN - 604)) | (1L << (TRADITIONAL - 604)) | (1L << (TRANSACTION - 604)) | (1L << (TRANSACTIONAL - 604)) | (1L << (TRIGGERS - 604)) | (1L << (TRUNCATE - 604)) | (1L << (UNBOUNDED - 604)) | (1L << (UNDEFINED - 604)) | (1L << (UNDOFILE - 604)) | (1L << (UNDO_BUFFER_SIZE - 604)) | (1L << (UNINSTALL - 604)) | (1L << (UNKNOWN - 604)) | (1L << (UNTIL - 604)) | (1L << (UPGRADE - 604)))) != 0) || ((((_la - 668)) & ~0x3f) == 0 && ((1L << (_la - 668)) & ((1L << (USER - 668)) | (1L << (USE_FRM - 668)) | (1L << (USER_RESOURCES - 668)) | (1L << (VALIDATION - 668)) | (1L << (VALUE - 668)) | (1L << (VARIABLES - 668)) | (1L << (VIEW - 668)) | (1L << (VIRTUAL - 668)) | (1L << (VISIBLE - 668)) | (1L << (WAIT - 668)) | (1L << (WARNINGS - 668)) | (1L << (WITHOUT - 668)) | (1L << (WORK - 668)) | (1L << (WRAPPER - 668)) | (1L << (X509 - 668)) | (1L << (XA - 668)) | (1L << (XML - 668)) | (1L << (YES - 668)) | (1L << (EUR - 668)) | (1L << (USA - 668)) | (1L << (JIS - 668)) | (1L << (ISO - 668)) | (1L << (INTERNAL - 668)) | (1L << (QUARTER - 668)) | (1L << (MONTH - 668)) | (1L << (DAY - 668)) | (1L << (HOUR - 668)) | (1L << (MINUTE - 668)) | (1L << (WEEK - 668)) | (1L << (SECOND - 668)) | (1L << (MICROSECOND - 668)) | (1L << (USER_STATISTICS - 668)) | (1L << (CLIENT_STATISTICS - 668)) | (1L << (INDEX_STATISTICS - 668)) | (1L << (TABLE_STATISTICS - 668)) | (1L << (FIREWALL_RULES - 668)) | (1L << (ADMIN - 668)) | (1L << (APPLICATION_PASSWORD_ADMIN - 668)) | (1L << (AUDIT_ADMIN - 668)) | (1L << (AUDIT_ABORT_EXEMPT - 668)) | (1L << (AUTHENTICATION_POLICY_ADMIN - 668)) | (1L << (BACKUP_ADMIN - 668)) | (1L << (BINLOG_ADMIN - 668)) | (1L << (BINLOG_ENCRYPTION_ADMIN - 668)) | (1L << (CLONE_ADMIN - 668)) | (1L << (CONNECTION_ADMIN - 668)) | (1L << (ENCRYPTION_KEY_ADMIN - 668)) | (1L << (EXECUTE - 668)) | (1L << (FILE - 668)) | (1L << (FIREWALL_ADMIN - 668)) | (1L << (FIREWALL_EXEMPT - 668)) | (1L << (FIREWALL_USER - 668)) | (1L << (FLUSH_OPTIMIZER_COSTS - 668)) | (1L << (FLUSH_STATUS - 668)) | (1L << (FLUSH_TABLES - 668)) | (1L << (FLUSH_USER_RESOURCES - 668)) | (1L << (GROUP_REPLICATION_ADMIN - 668)) | (1L << (INNODB_REDO_LOG_ARCHIVE - 668)) | (1L << (INNODB_REDO_LOG_ENABLE - 668)) | (1L << (INVOKE - 668)) | (1L << (LAMBDA - 668)) | (1L << (NDB_STORED_USER - 668)) | (1L << (PASSWORDLESS_USER_ADMIN - 668)))) != 0) || ((((_la - 732)) & ~0x3f) == 0 && ((1L << (_la - 732)) & ((1L << (PERSIST_RO_VARIABLES_ADMIN - 732)) | (1L << (PRIVILEGES - 732)) | (1L << (PROCESS - 732)) | (1L << (RELOAD - 732)) | (1L << (REPLICATION_APPLIER - 732)) | (1L << (REPLICATION_SLAVE_ADMIN - 732)) | (1L << (RESOURCE_GROUP_ADMIN - 732)) | (1L << (RESOURCE_GROUP_USER - 732)) | (1L << (ROLE_ADMIN - 732)) | (1L << (ROUTINE - 732)) | (1L << (S3 - 732)) | (1L << (SESSION_VARIABLES_ADMIN - 732)) | (1L << (SET_USER_ID - 732)) | (1L << (SHOW_ROUTINE - 732)) | (1L << (SHUTDOWN - 732)) | (1L << (SUPER - 732)) | (1L << (SYSTEM_VARIABLES_ADMIN - 732)) | (1L << (TABLES - 732)) | (1L << (TABLE_ENCRYPTION_ADMIN - 732)) | (1L << (VERSION_TOKEN_ADMIN - 732)) | (1L << (XA_RECOVER_ADMIN - 732)) | (1L << (ARMSCII8 - 732)) | (1L << (ASCII - 732)) | (1L << (BIG5 - 732)) | (1L << (CP1250 - 732)) | (1L << (CP1251 - 732)) | (1L << (CP1256 - 732)) | (1L << (CP1257 - 732)) | (1L << (CP850 - 732)) | (1L << (CP852 - 732)) | (1L << (CP866 - 732)) | (1L << (CP932 - 732)) | (1L << (DEC8 - 732)) | (1L << (EUCJPMS - 732)) | (1L << (EUCKR - 732)) | (1L << (GB18030 - 732)) | (1L << (GB2312 - 732)) | (1L << (GBK - 732)) | (1L << (GEOSTD8 - 732)) | (1L << (GREEK - 732)) | (1L << (HEBREW - 732)) | (1L << (HP8 - 732)) | (1L << (KEYBCS2 - 732)) | (1L << (KOI8R - 732)) | (1L << (KOI8U - 732)) | (1L << (LATIN1 - 732)) | (1L << (LATIN2 - 732)) | (1L << (LATIN5 - 732)) | (1L << (LATIN7 - 732)) | (1L << (MACCE - 732)) | (1L << (MACROMAN - 732)) | (1L << (SJIS - 732)) | (1L << (SWE7 - 732)) | (1L << (TIS620 - 732)) | (1L << (UCS2 - 732)) | (1L << (UJIS - 732)) | (1L << (UTF16 - 732)) | (1L << (UTF16LE - 732)) | (1L << (UTF32 - 732)) | (1L << (UTF8 - 732)) | (1L << (UTF8MB3 - 732)) | (1L << (UTF8MB4 - 732)) | (1L << (ARCHIVE - 732)))) != 0) || ((((_la - 796)) & ~0x3f) == 0 && ((1L << (_la - 796)) & ((1L << (BLACKHOLE - 796)) | (1L << (CSV - 796)) | (1L << (FEDERATED - 796)) | (1L << (INNODB - 796)) | (1L << (MEMORY - 796)) | (1L << (MRG_MYISAM - 796)) | (1L << (MYISAM - 796)) | (1L << (NDB - 796)) | (1L << (NDBCLUSTER - 796)) | (1L << (PERFORMANCE_SCHEMA - 796)) | (1L << (TOKUDB - 796)) | (1L << (REPEATABLE - 796)) | (1L << (COMMITTED - 796)) | (1L << (UNCOMMITTED - 796)) | (1L << (SERIALIZABLE - 796)) | (1L << (GEOMETRYCOLLECTION - 796)) | (1L << (GEOMETRY - 796)) | (1L << (LINESTRING - 796)) | (1L << (MULTILINESTRING - 796)) | (1L << (MULTIPOINT - 796)) | (1L << (MULTIPOLYGON - 796)) | (1L << (POINT - 796)) | (1L << (POLYGON - 796)) | (1L << (ABS - 796)) | (1L << (ACOS - 796)) | (1L << (ADDDATE - 796)) | (1L << (ADDTIME - 796)) | (1L << (AES_DECRYPT - 796)) | (1L << (AES_ENCRYPT - 796)) | (1L << (AREA - 796)) | (1L << (ASBINARY - 796)) | (1L << (ASIN - 796)) | (1L << (ASTEXT - 796)) | (1L << (ASWKB - 796)) | (1L << (ASWKT - 796)) | (1L << (ASYMMETRIC_DECRYPT - 796)) | (1L << (ASYMMETRIC_DERIVE - 796)) | (1L << (ASYMMETRIC_ENCRYPT - 796)) | (1L << (ASYMMETRIC_SIGN - 796)) | (1L << (ASYMMETRIC_VERIFY - 796)) | (1L << (ATAN - 796)) | (1L << (ATAN2 - 796)) | (1L << (BENCHMARK - 796)) | (1L << (BIN - 796)) | (1L << (BIT_COUNT - 796)) | (1L << (BIT_LENGTH - 796)) | (1L << (BUFFER - 796)) | (1L << (CATALOG_NAME - 796)) | (1L << (CEIL - 796)) | (1L << (CEILING - 796)) | (1L << (CENTROID - 796)) | (1L << (CHARACTER_LENGTH - 796)) | (1L << (CHARSET - 796)) | (1L << (CHAR_LENGTH - 796)) | (1L << (COERCIBILITY - 796)) | (1L << (COLLATION - 796)) | (1L << (COMPRESS - 796)) | (1L << (CONCAT - 796)) | (1L << (CONCAT_WS - 796)) | (1L << (CONNECTION_ID - 796)) | (1L << (CONV - 796)) | (1L << (CONVERT_TZ - 796)) | (1L << (COS - 796)))) != 0) || ((((_la - 860)) & ~0x3f) == 0 && ((1L << (_la - 860)) & ((1L << (COT - 860)) | (1L << (CRC32 - 860)) | (1L << (CREATE_ASYMMETRIC_PRIV_KEY - 860)) | (1L << (CREATE_ASYMMETRIC_PUB_KEY - 860)) | (1L << (CREATE_DH_PARAMETERS - 860)) | (1L << (CREATE_DIGEST - 860)) | (1L << (CROSSES - 860)) | (1L << (DATEDIFF - 860)) | (1L << (DATE_FORMAT - 860)) | (1L << (DAYNAME - 860)) | (1L << (DAYOFMONTH - 860)) | (1L << (DAYOFWEEK - 860)) | (1L << (DAYOFYEAR - 860)) | (1L << (DECODE - 860)) | (1L << (DEGREES - 860)) | (1L << (DES_DECRYPT - 860)) | (1L << (DES_ENCRYPT - 860)) | (1L << (DIMENSION - 860)) | (1L << (DISJOINT - 860)) | (1L << (ELT - 860)) | (1L << (ENCODE - 860)) | (1L << (ENCRYPT - 860)) | (1L << (ENDPOINT - 860)) | (1L << (ENGINE_ATTRIBUTE - 860)) | (1L << (ENVELOPE - 860)) | (1L << (EQUALS - 860)) | (1L << (EXP - 860)) | (1L << (EXPORT_SET - 860)) | (1L << (EXTERIORRING - 860)) | (1L << (EXTRACTVALUE - 860)) | (1L << (FIELD - 860)) | (1L << (FIND_IN_SET - 860)) | (1L << (FLOOR - 860)) | (1L << (FORMAT - 860)) | (1L << (FOUND_ROWS - 860)) | (1L << (FROM_BASE64 - 860)) | (1L << (FROM_DAYS - 860)) | (1L << (FROM_UNIXTIME - 860)) | (1L << (GEOMCOLLFROMTEXT - 860)) | (1L << (GEOMCOLLFROMWKB - 860)) | (1L << (GEOMETRYCOLLECTIONFROMTEXT - 860)) | (1L << (GEOMETRYCOLLECTIONFROMWKB - 860)) | (1L << (GEOMETRYFROMTEXT - 860)) | (1L << (GEOMETRYFROMWKB - 860)) | (1L << (GEOMETRYN - 860)) | (1L << (GEOMETRYTYPE - 860)) | (1L << (GEOMFROMTEXT - 860)) | (1L << (GEOMFROMWKB - 860)) | (1L << (GET_FORMAT - 860)) | (1L << (GET_LOCK - 860)) | (1L << (GLENGTH - 860)) | (1L << (GREATEST - 860)) | (1L << (GTID_SUBSET - 860)) | (1L << (GTID_SUBTRACT - 860)) | (1L << (HEX - 860)) | (1L << (IFNULL - 860)) | (1L << (INET6_ATON - 860)) | (1L << (INET6_NTOA - 860)) | (1L << (INET_ATON - 860)) | (1L << (INET_NTOA - 860)) | (1L << (INSTR - 860)) | (1L << (INTERIORRINGN - 860)) | (1L << (INTERSECTS - 860)) | (1L << (ISCLOSED - 860)))) != 0) || ((((_la - 924)) & ~0x3f) == 0 && ((1L << (_la - 924)) & ((1L << (ISEMPTY - 924)) | (1L << (ISNULL - 924)) | (1L << (ISSIMPLE - 924)) | (1L << (IS_FREE_LOCK - 924)) | (1L << (IS_IPV4 - 924)) | (1L << (IS_IPV4_COMPAT - 924)) | (1L << (IS_IPV4_MAPPED - 924)) | (1L << (IS_IPV6 - 924)) | (1L << (IS_USED_LOCK - 924)) | (1L << (LAST_INSERT_ID - 924)) | (1L << (LCASE - 924)) | (1L << (LEAST - 924)) | (1L << (LENGTH - 924)) | (1L << (LINEFROMTEXT - 924)) | (1L << (LINEFROMWKB - 924)) | (1L << (LINESTRINGFROMTEXT - 924)) | (1L << (LINESTRINGFROMWKB - 924)) | (1L << (LN - 924)) | (1L << (LOAD_FILE - 924)) | (1L << (LOCATE - 924)) | (1L << (LOG - 924)) | (1L << (LOG10 - 924)) | (1L << (LOG2 - 924)) | (1L << (LOWER - 924)) | (1L << (LPAD - 924)) | (1L << (LTRIM - 924)) | (1L << (MAKEDATE - 924)) | (1L << (MAKETIME - 924)) | (1L << (MAKE_SET - 924)) | (1L << (MASTER_POS_WAIT - 924)) | (1L << (MBRCONTAINS - 924)) | (1L << (MBRDISJOINT - 924)) | (1L << (MBREQUAL - 924)) | (1L << (MBRINTERSECTS - 924)) | (1L << (MBROVERLAPS - 924)) | (1L << (MBRTOUCHES - 924)) | (1L << (MBRWITHIN - 924)) | (1L << (MD5 - 924)) | (1L << (MLINEFROMTEXT - 924)) | (1L << (MLINEFROMWKB - 924)) | (1L << (MONTHNAME - 924)) | (1L << (MPOINTFROMTEXT - 924)) | (1L << (MPOINTFROMWKB - 924)) | (1L << (MPOLYFROMTEXT - 924)) | (1L << (MPOLYFROMWKB - 924)) | (1L << (MULTILINESTRINGFROMTEXT - 924)) | (1L << (MULTILINESTRINGFROMWKB - 924)) | (1L << (MULTIPOINTFROMTEXT - 924)) | (1L << (MULTIPOINTFROMWKB - 924)) | (1L << (MULTIPOLYGONFROMTEXT - 924)) | (1L << (MULTIPOLYGONFROMWKB - 924)) | (1L << (NAME_CONST - 924)) | (1L << (NULLIF - 924)) | (1L << (NUMGEOMETRIES - 924)) | (1L << (NUMINTERIORRINGS - 924)) | (1L << (NUMPOINTS - 924)) | (1L << (OCT - 924)) | (1L << (OCTET_LENGTH - 924)) | (1L << (ORD - 924)) | (1L << (OVERLAPS - 924)) | (1L << (PERIOD_ADD - 924)) | (1L << (PERIOD_DIFF - 924)) | (1L << (PI - 924)) | (1L << (POINTFROMTEXT - 924)))) != 0) || ((((_la - 988)) & ~0x3f) == 0 && ((1L << (_la - 988)) & ((1L << (POINTFROMWKB - 988)) | (1L << (POINTN - 988)) | (1L << (POLYFROMTEXT - 988)) | (1L << (POLYFROMWKB - 988)) | (1L << (POLYGONFROMTEXT - 988)) | (1L << (POLYGONFROMWKB - 988)) | (1L << (POW - 988)) | (1L << (POWER - 988)) | (1L << (QUOTE - 988)) | (1L << (RADIANS - 988)) | (1L << (RAND - 988)) | (1L << (RANDOM - 988)) | (1L << (RANDOM_BYTES - 988)) | (1L << (RELEASE_LOCK - 988)) | (1L << (REVERSE - 988)) | (1L << (ROUND - 988)) | (1L << (ROW_COUNT - 988)) | (1L << (RPAD - 988)) | (1L << (RTRIM - 988)) | (1L << (SEC_TO_TIME - 988)) | (1L << (SECONDARY_ENGINE_ATTRIBUTE - 988)) | (1L << (SENSITIVE_VARIABLES_OBSERVER - 988)) | (1L << (SESSION_USER - 988)) | (1L << (SHA - 988)) | (1L << (SHA1 - 988)) | (1L << (SHA2 - 988)) | (1L << (SCHEMA_NAME - 988)) | (1L << (SIGN - 988)) | (1L << (SIN - 988)) | (1L << (SLEEP - 988)) | (1L << (SOUNDEX - 988)) | (1L << (SQL_THREAD_WAIT_AFTER_GTIDS - 988)) | (1L << (SQRT - 988)) | (1L << (SRID - 988)) | (1L << (STARTPOINT - 988)) | (1L << (STRCMP - 988)) | (1L << (STR_TO_DATE - 988)) | (1L << (ST_AREA - 988)) | (1L << (ST_ASBINARY - 988)) | (1L << (ST_ASTEXT - 988)) | (1L << (ST_ASWKB - 988)) | (1L << (ST_ASWKT - 988)) | (1L << (ST_BUFFER - 988)) | (1L << (ST_CENTROID - 988)) | (1L << (ST_CONTAINS - 988)) | (1L << (ST_CROSSES - 988)) | (1L << (ST_DIFFERENCE - 988)) | (1L << (ST_DIMENSION - 988)) | (1L << (ST_DISJOINT - 988)) | (1L << (ST_DISTANCE - 988)) | (1L << (ST_ENDPOINT - 988)) | (1L << (ST_ENVELOPE - 988)) | (1L << (ST_EQUALS - 988)) | (1L << (ST_EXTERIORRING - 988)) | (1L << (ST_GEOMCOLLFROMTEXT - 988)) | (1L << (ST_GEOMCOLLFROMTXT - 988)) | (1L << (ST_GEOMCOLLFROMWKB - 988)) | (1L << (ST_GEOMETRYCOLLECTIONFROMTEXT - 988)) | (1L << (ST_GEOMETRYCOLLECTIONFROMWKB - 988)) | (1L << (ST_GEOMETRYFROMTEXT - 988)) | (1L << (ST_GEOMETRYFROMWKB - 988)) | (1L << (ST_GEOMETRYN - 988)) | (1L << (ST_GEOMETRYTYPE - 988)) | (1L << (ST_GEOMFROMTEXT - 988)))) != 0) || ((((_la - 1052)) & ~0x3f) == 0 && ((1L << (_la - 1052)) & ((1L << (ST_GEOMFROMWKB - 1052)) | (1L << (ST_INTERIORRINGN - 1052)) | (1L << (ST_INTERSECTION - 1052)) | (1L << (ST_INTERSECTS - 1052)) | (1L << (ST_ISCLOSED - 1052)) | (1L << (ST_ISEMPTY - 1052)) | (1L << (ST_ISSIMPLE - 1052)) | (1L << (ST_LINEFROMTEXT - 1052)) | (1L << (ST_LINEFROMWKB - 1052)) | (1L << (ST_LINESTRINGFROMTEXT - 1052)) | (1L << (ST_LINESTRINGFROMWKB - 1052)) | (1L << (ST_NUMGEOMETRIES - 1052)) | (1L << (ST_NUMINTERIORRING - 1052)) | (1L << (ST_NUMINTERIORRINGS - 1052)) | (1L << (ST_NUMPOINTS - 1052)) | (1L << (ST_OVERLAPS - 1052)) | (1L << (ST_POINTFROMTEXT - 1052)) | (1L << (ST_POINTFROMWKB - 1052)) | (1L << (ST_POINTN - 1052)) | (1L << (ST_POLYFROMTEXT - 1052)) | (1L << (ST_POLYFROMWKB - 1052)) | (1L << (ST_POLYGONFROMTEXT - 1052)) | (1L << (ST_POLYGONFROMWKB - 1052)) | (1L << (ST_SRID - 1052)) | (1L << (ST_STARTPOINT - 1052)) | (1L << (ST_SYMDIFFERENCE - 1052)) | (1L << (ST_TOUCHES - 1052)) | (1L << (ST_UNION - 1052)) | (1L << (ST_WITHIN - 1052)) | (1L << (ST_X - 1052)) | (1L << (ST_Y - 1052)) | (1L << (SUBDATE - 1052)) | (1L << (SUBSTRING_INDEX - 1052)) | (1L << (SUBTIME - 1052)) | (1L << (SYSTEM_USER - 1052)) | (1L << (SYSTEM - 1052)) | (1L << (TAN - 1052)) | (1L << (TELEMETRY_LOG_ADMIN - 1052)) | (1L << (TIMEDIFF - 1052)) | (1L << (TIMESTAMPADD - 1052)) | (1L << (TIMESTAMPDIFF - 1052)) | (1L << (TIME_FORMAT - 1052)) | (1L << (TIME_TO_SEC - 1052)) | (1L << (TOUCHES - 1052)) | (1L << (TO_BASE64 - 1052)) | (1L << (TO_DAYS - 1052)) | (1L << (TO_SECONDS - 1052)) | (1L << (TP_CONNECTION_ADMIN - 1052)) | (1L << (UCASE - 1052)) | (1L << (UNCOMPRESS - 1052)) | (1L << (UNCOMPRESSED_LENGTH - 1052)) | (1L << (UNHEX - 1052)) | (1L << (UNIX_TIMESTAMP - 1052)) | (1L << (UPDATEXML - 1052)) | (1L << (UPPER - 1052)) | (1L << (UUID - 1052)) | (1L << (UUID_SHORT - 1052)) | (1L << (VALIDATE_PASSWORD_STRENGTH - 1052)) | (1L << (VERSION - 1052)) | (1L << (VERSIONING - 1052)) | (1L << (WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS - 1052)) | (1L << (WEEKDAY - 1052)) | (1L << (WEEKOFYEAR - 1052)) | (1L << (WEIGHT_STRING - 1052)))) != 0) || ((((_la - 1116)) & ~0x3f) == 0 && ((1L << (_la - 1116)) & ((1L << (WITHIN - 1116)) | (1L << (YEARWEEK - 1116)) | (1L << (Y_FUNCTION - 1116)) | (1L << (X_FUNCTION - 1116)) | (1L << (VIA - 1116)) | (1L << (LASTVAL - 1116)) | (1L << (NEXTVAL - 1116)) | (1L << (SETVAL - 1116)) | (1L << (PREVIOUS - 1116)) | (1L << (PERSISTENT - 1116)) | (1L << (BINLOG_MONITOR - 1116)) | (1L << (BINLOG_REPLAY - 1116)) | (1L << (FEDERATED_ADMIN - 1116)) | (1L << (READ_ONLY_ADMIN - 1116)) | (1L << (REPLICA - 1116)) | (1L << (REPLICATION_MASTER_ADMIN - 1116)) | (1L << (MONITOR - 1116)) | (1L << (READ_ONLY - 1116)) | (1L << (REPLAY - 1116)) | (1L << (MOD - 1116)) | (1L << (CHARSET_REVERSE_QOUTE_STRING - 1116)) | (1L << (STRING_LITERAL - 1116)))) != 0) || _la==ID) {
						{
						setState(1845);
						((UniqueKeyTableConstraintContext)_localctx).name = uid();
						}
					}

					}
				}

				setState(1850);
				match(UNIQUE);
				setState(1852);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==INDEX || _la==KEY) {
					{
					setState(1851);
					((UniqueKeyTableConstraintContext)_localctx).indexFormat = _input.LT(1);
					_la = _input.LA(1);
					if ( !(_la==INDEX || _la==KEY) ) {
						((UniqueKeyTableConstraintContext)_localctx).indexFormat = (Token)_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
				}

				setState(1855);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ARRAY) | (1L << ATTRIBUTE) | (1L << BUCKETS) | (1L << CONDITION) | (1L << CURRENT) | (1L << CURRENT_ROLE) | (1L << CURRENT_USER) | (1L << DATABASE) | (1L << DEFAULT) | (1L << DIAGNOSTICS) | (1L << EMPTY) | (1L << ENFORCED) | (1L << EXCEPT))) != 0) || ((((_la - 74)) & ~0x3f) == 0 && ((1L << (_la - 74)) & ((1L << (GROUP - 74)) | (1L << (GROUP_REPLICATION_STREAM - 74)) | (1L << (IF - 74)) | (1L << (IGNORED - 74)) | (1L << (INSERT - 74)) | (1L << (LATERAL - 74)) | (1L << (LEFT - 74)) | (1L << (LOCKED - 74)) | (1L << (MAXVALUE - 74)) | (1L << (MINVALUE - 74)) | (1L << (NUMBER - 74)) | (1L << (OPTIONAL - 74)) | (1L << (ORDER - 74)) | (1L << (PRIMARY - 74)))) != 0) || ((((_la - 142)) & ~0x3f) == 0 && ((1L << (_la - 142)) & ((1L << (REPEAT - 142)) | (1L << (REPLACE - 142)) | (1L << (RIGHT - 142)) | (1L << (SCHEMA - 142)) | (1L << (SKIP_ - 142)) | (1L << (SKIP_QUERY_REWRITE - 142)) | (1L << (STACKED - 142)) | (1L << (STATEMENT - 142)))) != 0) || ((((_la - 220)) & ~0x3f) == 0 && ((1L << (_la - 220)) & ((1L << (DATE - 220)) | (1L << (TIME - 220)) | (1L << (TIMESTAMP - 220)) | (1L << (DATETIME - 220)) | (1L << (YEAR - 220)) | (1L << (NATIONAL - 220)) | (1L << (BINARY - 220)) | (1L << (TEXT - 220)) | (1L << (ENUM - 220)) | (1L << (SERIAL - 220)) | (1L << (JSON_ARRAY - 220)) | (1L << (JSON_ARRAYAGG - 220)) | (1L << (JSON_ARRAY_APPEND - 220)) | (1L << (JSON_ARRAY_INSERT - 220)) | (1L << (JSON_CONTAINS - 220)) | (1L << (JSON_CONTAINS_PATH - 220)) | (1L << (JSON_DEPTH - 220)) | (1L << (JSON_EXTRACT - 220)) | (1L << (JSON_INSERT - 220)) | (1L << (JSON_KEYS - 220)) | (1L << (JSON_LENGTH - 220)) | (1L << (JSON_MERGE - 220)) | (1L << (JSON_MERGE_PATCH - 220)) | (1L << (JSON_MERGE_PRESERVE - 220)) | (1L << (JSON_OBJECT - 220)) | (1L << (JSON_OBJECTAGG - 220)) | (1L << (JSON_OVERLAPS - 220)) | (1L << (JSON_PRETTY - 220)) | (1L << (JSON_QUOTE - 220)) | (1L << (JSON_REMOVE - 220)) | (1L << (JSON_REPLACE - 220)) | (1L << (JSON_SCHEMA_VALID - 220)) | (1L << (JSON_SCHEMA_VALIDATION_REPORT - 220)) | (1L << (JSON_SEARCH - 220)) | (1L << (JSON_SET - 220)) | (1L << (JSON_STORAGE_FREE - 220)) | (1L << (JSON_STORAGE_SIZE - 220)) | (1L << (JSON_TABLE - 220)) | (1L << (JSON_TYPE - 220)) | (1L << (JSON_UNQUOTE - 220)))) != 0) || ((((_la - 284)) & ~0x3f) == 0 && ((1L << (_la - 284)) & ((1L << (JSON_VALID - 284)) | (1L << (JSON_VALUE - 284)) | (1L << (NESTED - 284)) | (1L << (ORDINALITY - 284)) | (1L << (PATH - 284)) | (1L << (AVG - 284)) | (1L << (BIT_AND - 284)) | (1L << (BIT_OR - 284)) | (1L << (BIT_XOR - 284)) | (1L << (COUNT - 284)) | (1L << (CUME_DIST - 284)) | (1L << (DENSE_RANK - 284)) | (1L << (FIRST_VALUE - 284)) | (1L << (GROUP_CONCAT - 284)) | (1L << (LAG - 284)) | (1L << (LAST_VALUE - 284)) | (1L << (LEAD - 284)) | (1L << (MAX - 284)) | (1L << (MIN - 284)) | (1L << (NTILE - 284)) | (1L << (NTH_VALUE - 284)) | (1L << (PERCENT_RANK - 284)) | (1L << (RANK - 284)) | (1L << (ROW_NUMBER - 284)) | (1L << (STD - 284)) | (1L << (STDDEV - 284)) | (1L << (STDDEV_POP - 284)) | (1L << (STDDEV_SAMP - 284)) | (1L << (SUM - 284)) | (1L << (VAR_POP - 284)) | (1L << (VAR_SAMP - 284)) | (1L << (VARIANCE - 284)) | (1L << (CURRENT_DATE - 284)) | (1L << (CURRENT_TIME - 284)) | (1L << (CURRENT_TIMESTAMP - 284)) | (1L << (LOCALTIME - 284)) | (1L << (CURDATE - 284)) | (1L << (CURTIME - 284)) | (1L << (DATE_ADD - 284)) | (1L << (DATE_SUB - 284)) | (1L << (LOCALTIMESTAMP - 284)) | (1L << (NOW - 284)) | (1L << (POSITION - 284)) | (1L << (SUBSTR - 284)) | (1L << (SUBSTRING - 284)) | (1L << (SYSDATE - 284)) | (1L << (TRIM - 284)) | (1L << (UTC_DATE - 284)) | (1L << (UTC_TIME - 284)) | (1L << (UTC_TIMESTAMP - 284)) | (1L << (ACCOUNT - 284)) | (1L << (ACTION - 284)) | (1L << (AFTER - 284)) | (1L << (AGGREGATE - 284)) | (1L << (ALGORITHM - 284)) | (1L << (ANY - 284)) | (1L << (AT - 284)) | (1L << (AUTHORS - 284)) | (1L << (AUTOCOMMIT - 284)) | (1L << (AUTOEXTEND_SIZE - 284)) | (1L << (AUTO_INCREMENT - 284)) | (1L << (AVG_ROW_LENGTH - 284)) | (1L << (BEGIN - 284)))) != 0) || ((((_la - 348)) & ~0x3f) == 0 && ((1L << (_la - 348)) & ((1L << (BINLOG - 348)) | (1L << (BIT - 348)) | (1L << (BLOCK - 348)) | (1L << (BOOL - 348)) | (1L << (BOOLEAN - 348)) | (1L << (BTREE - 348)) | (1L << (CACHE - 348)) | (1L << (CASCADED - 348)) | (1L << (CHAIN - 348)) | (1L << (CHANGED - 348)) | (1L << (CHANNEL - 348)) | (1L << (CHECKSUM - 348)) | (1L << (PAGE_CHECKSUM - 348)) | (1L << (CIPHER - 348)) | (1L << (CLASS_ORIGIN - 348)) | (1L << (CLIENT - 348)) | (1L << (CLOSE - 348)) | (1L << (CLUSTERING - 348)) | (1L << (COALESCE - 348)) | (1L << (CODE - 348)) | (1L << (COLUMNS - 348)) | (1L << (COLUMN_FORMAT - 348)) | (1L << (COLUMN_NAME - 348)) | (1L << (COMMENT - 348)) | (1L << (COMMIT - 348)) | (1L << (COMPACT - 348)) | (1L << (COMPLETION - 348)) | (1L << (COMPRESSED - 348)) | (1L << (COMPRESSION - 348)) | (1L << (CONCURRENT - 348)) | (1L << (CONNECT - 348)) | (1L << (CONNECTION - 348)) | (1L << (CONSISTENT - 348)) | (1L << (CONSTRAINT_CATALOG - 348)) | (1L << (CONSTRAINT_SCHEMA - 348)) | (1L << (CONSTRAINT_NAME - 348)) | (1L << (CONTAINS - 348)) | (1L << (CONTEXT - 348)) | (1L << (CONTRIBUTORS - 348)) | (1L << (COPY - 348)) | (1L << (CPU - 348)) | (1L << (CYCLE - 348)) | (1L << (CURSOR_NAME - 348)) | (1L << (DATA - 348)) | (1L << (DATAFILE - 348)) | (1L << (DEALLOCATE - 348)) | (1L << (DEFAULT_AUTH - 348)) | (1L << (DEFINER - 348)) | (1L << (DELAY_KEY_WRITE - 348)) | (1L << (DES_KEY_FILE - 348)) | (1L << (DIRECTORY - 348)) | (1L << (DISABLE - 348)) | (1L << (DISCARD - 348)) | (1L << (DISK - 348)) | (1L << (DO - 348)) | (1L << (DUMPFILE - 348)) | (1L << (DUPLICATE - 348)) | (1L << (DYNAMIC - 348)) | (1L << (ENABLE - 348)) | (1L << (ENCRYPTED - 348)) | (1L << (ENCRYPTION - 348)) | (1L << (ENCRYPTION_KEY_ID - 348)) | (1L << (END - 348)) | (1L << (ENDS - 348)))) != 0) || ((((_la - 412)) & ~0x3f) == 0 && ((1L << (_la - 412)) & ((1L << (ENGINE - 412)) | (1L << (ENGINES - 412)) | (1L << (ERROR - 412)) | (1L << (ERRORS - 412)) | (1L << (ESCAPE - 412)) | (1L << (EVEN - 412)) | (1L << (EVENT - 412)) | (1L << (EVENTS - 412)) | (1L << (EVERY - 412)) | (1L << (EXCHANGE - 412)) | (1L << (EXCLUSIVE - 412)) | (1L << (EXPIRE - 412)) | (1L << (EXPORT - 412)) | (1L << (EXTENDED - 412)) | (1L << (EXTENT_SIZE - 412)) | (1L << (FAILED_LOGIN_ATTEMPTS - 412)) | (1L << (FAST - 412)) | (1L << (FAULTS - 412)) | (1L << (FIELDS - 412)) | (1L << (FILE_BLOCK_SIZE - 412)) | (1L << (FILTER - 412)) | (1L << (FIRST - 412)) | (1L << (FIXED - 412)) | (1L << (FLUSH - 412)) | (1L << (FOLLOWS - 412)) | (1L << (FOUND - 412)) | (1L << (FULL - 412)) | (1L << (FUNCTION - 412)) | (1L << (GENERAL - 412)) | (1L << (GLOBAL - 412)) | (1L << (GRANTS - 412)) | (1L << (GROUP_REPLICATION - 412)) | (1L << (HANDLER - 412)) | (1L << (HASH - 412)) | (1L << (HELP - 412)) | (1L << (HISTORY - 412)) | (1L << (HOST - 412)) | (1L << (HOSTS - 412)) | (1L << (IDENTIFIED - 412)) | (1L << (IGNORE_SERVER_IDS - 412)) | (1L << (IMPORT - 412)) | (1L << (INCREMENT - 412)) | (1L << (INDEXES - 412)) | (1L << (INITIAL_SIZE - 412)) | (1L << (INPLACE - 412)) | (1L << (INSERT_METHOD - 412)) | (1L << (INSTALL - 412)) | (1L << (INSTANCE - 412)) | (1L << (INSTANT - 412)) | (1L << (INVISIBLE - 412)) | (1L << (INVOKER - 412)) | (1L << (IO - 412)) | (1L << (IO_THREAD - 412)) | (1L << (IPC - 412)) | (1L << (ISOLATION - 412)) | (1L << (ISSUER - 412)) | (1L << (JSON - 412)) | (1L << (KEY_BLOCK_SIZE - 412)) | (1L << (LANGUAGE - 412)) | (1L << (LAST - 412)) | (1L << (LEAVES - 412)) | (1L << (LESS - 412)) | (1L << (LEVEL - 412)))) != 0) || ((((_la - 476)) & ~0x3f) == 0 && ((1L << (_la - 476)) & ((1L << (LIST - 476)) | (1L << (LOCAL - 476)) | (1L << (LOGFILE - 476)) | (1L << (LOGS - 476)) | (1L << (MASTER - 476)) | (1L << (MASTER_AUTO_POSITION - 476)) | (1L << (MASTER_CONNECT_RETRY - 476)) | (1L << (MASTER_DELAY - 476)) | (1L << (MASTER_HEARTBEAT_PERIOD - 476)) | (1L << (MASTER_HOST - 476)) | (1L << (MASTER_LOG_FILE - 476)) | (1L << (MASTER_LOG_POS - 476)) | (1L << (MASTER_PASSWORD - 476)) | (1L << (MASTER_PORT - 476)) | (1L << (MASTER_RETRY_COUNT - 476)) | (1L << (MASTER_SSL - 476)) | (1L << (MASTER_SSL_CA - 476)) | (1L << (MASTER_SSL_CAPATH - 476)) | (1L << (MASTER_SSL_CERT - 476)) | (1L << (MASTER_SSL_CIPHER - 476)) | (1L << (MASTER_SSL_CRL - 476)) | (1L << (MASTER_SSL_CRLPATH - 476)) | (1L << (MASTER_SSL_KEY - 476)) | (1L << (MASTER_TLS_VERSION - 476)) | (1L << (MASTER_USER - 476)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 476)) | (1L << (MAX_QUERIES_PER_HOUR - 476)) | (1L << (MAX_ROWS - 476)) | (1L << (MAX_SIZE - 476)) | (1L << (MAX_UPDATES_PER_HOUR - 476)) | (1L << (MAX_USER_CONNECTIONS - 476)) | (1L << (MEDIUM - 476)) | (1L << (MEMBER - 476)) | (1L << (MERGE - 476)) | (1L << (MESSAGE_TEXT - 476)) | (1L << (MID - 476)) | (1L << (MIGRATE - 476)) | (1L << (MIN_ROWS - 476)) | (1L << (MODE - 476)) | (1L << (MODIFY - 476)) | (1L << (MUTEX - 476)) | (1L << (MYSQL - 476)) | (1L << (MYSQL_ERRNO - 476)) | (1L << (NAME - 476)) | (1L << (NAMES - 476)) | (1L << (NCHAR - 476)) | (1L << (NEVER - 476)) | (1L << (NEXT - 476)) | (1L << (NO - 476)) | (1L << (NOCACHE - 476)) | (1L << (NOCOPY - 476)) | (1L << (NOCYCLE - 476)) | (1L << (NOMAXVALUE - 476)) | (1L << (NOMINVALUE - 476)) | (1L << (NOWAIT - 476)) | (1L << (NODEGROUP - 476)) | (1L << (NONE - 476)) | (1L << (ODBC - 476)) | (1L << (OFFLINE - 476)) | (1L << (OFFSET - 476)) | (1L << (OF - 476)) | (1L << (OJ - 476)) | (1L << (OLD_PASSWORD - 476)) | (1L << (ONE - 476)))) != 0) || ((((_la - 540)) & ~0x3f) == 0 && ((1L << (_la - 540)) & ((1L << (ONLINE - 540)) | (1L << (ONLY - 540)) | (1L << (OPEN - 540)) | (1L << (OPTIMIZER_COSTS - 540)) | (1L << (OPTIONS - 540)) | (1L << (OWNER - 540)) | (1L << (PACK_KEYS - 540)) | (1L << (PAGE - 540)) | (1L << (PARSER - 540)) | (1L << (PARTIAL - 540)) | (1L << (PARTITIONING - 540)) | (1L << (PARTITIONS - 540)) | (1L << (PASSWORD - 540)) | (1L << (PASSWORD_LOCK_TIME - 540)) | (1L << (PHASE - 540)) | (1L << (PLUGIN - 540)) | (1L << (PLUGIN_DIR - 540)) | (1L << (PLUGINS - 540)) | (1L << (PORT - 540)) | (1L << (PRECEDES - 540)) | (1L << (PREPARE - 540)) | (1L << (PRESERVE - 540)) | (1L << (PREV - 540)) | (1L << (PROCESSLIST - 540)) | (1L << (PROFILE - 540)) | (1L << (PROFILES - 540)) | (1L << (PROXY - 540)) | (1L << (QUERY - 540)) | (1L << (QUICK - 540)) | (1L << (REBUILD - 540)) | (1L << (RECOVER - 540)) | (1L << (RECURSIVE - 540)) | (1L << (REDO_BUFFER_SIZE - 540)) | (1L << (REDUNDANT - 540)) | (1L << (RELAY - 540)) | (1L << (RELAY_LOG_FILE - 540)) | (1L << (RELAY_LOG_POS - 540)) | (1L << (RELAYLOG - 540)) | (1L << (REMOVE - 540)) | (1L << (REORGANIZE - 540)) | (1L << (REPAIR - 540)) | (1L << (REPLICATE_DO_DB - 540)) | (1L << (REPLICATE_DO_TABLE - 540)) | (1L << (REPLICATE_IGNORE_DB - 540)) | (1L << (REPLICATE_IGNORE_TABLE - 540)) | (1L << (REPLICATE_REWRITE_DB - 540)) | (1L << (REPLICATE_WILD_DO_TABLE - 540)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 540)) | (1L << (REPLICATION - 540)) | (1L << (RESET - 540)) | (1L << (RESTART - 540)) | (1L << (RESUME - 540)) | (1L << (RETURNED_SQLSTATE - 540)) | (1L << (RETURNING - 540)) | (1L << (RETURNS - 540)) | (1L << (REUSE - 540)) | (1L << (ROLE - 540)) | (1L << (ROLLBACK - 540)) | (1L << (ROLLUP - 540)) | (1L << (ROTATE - 540)) | (1L << (ROW - 540)))) != 0) || ((((_la - 604)) & ~0x3f) == 0 && ((1L << (_la - 604)) & ((1L << (ROWS - 604)) | (1L << (ROW_FORMAT - 604)) | (1L << (RTREE - 604)) | (1L << (SAVEPOINT - 604)) | (1L << (SCHEDULE - 604)) | (1L << (SECURITY - 604)) | (1L << (SEQUENCE - 604)) | (1L << (SERVER - 604)) | (1L << (SESSION - 604)) | (1L << (SHARE - 604)) | (1L << (SHARED - 604)) | (1L << (SIGNED - 604)) | (1L << (SIMPLE - 604)) | (1L << (SLAVE - 604)) | (1L << (SLOW - 604)) | (1L << (SNAPSHOT - 604)) | (1L << (SOCKET - 604)) | (1L << (SOME - 604)) | (1L << (SONAME - 604)) | (1L << (SOUNDS - 604)) | (1L << (SOURCE - 604)) | (1L << (SQL_AFTER_GTIDS - 604)) | (1L << (SQL_AFTER_MTS_GAPS - 604)) | (1L << (SQL_BEFORE_GTIDS - 604)) | (1L << (SQL_BUFFER_RESULT - 604)) | (1L << (SQL_CACHE - 604)) | (1L << (SQL_NO_CACHE - 604)) | (1L << (SQL_THREAD - 604)) | (1L << (START - 604)) | (1L << (STARTS - 604)) | (1L << (STATS_AUTO_RECALC - 604)) | (1L << (STATS_PERSISTENT - 604)) | (1L << (STATS_SAMPLE_PAGES - 604)) | (1L << (STATUS - 604)) | (1L << (STOP - 604)) | (1L << (STORAGE - 604)) | (1L << (STRING - 604)) | (1L << (SUBCLASS_ORIGIN - 604)) | (1L << (SUBJECT - 604)) | (1L << (SUBPARTITION - 604)) | (1L << (SUBPARTITIONS - 604)) | (1L << (SUSPEND - 604)) | (1L << (SWAPS - 604)) | (1L << (SWITCHES - 604)) | (1L << (TABLE_NAME - 604)) | (1L << (TABLESPACE - 604)) | (1L << (TABLE_TYPE - 604)) | (1L << (TEMPORARY - 604)) | (1L << (TEMPTABLE - 604)) | (1L << (THAN - 604)) | (1L << (TRADITIONAL - 604)) | (1L << (TRANSACTION - 604)) | (1L << (TRANSACTIONAL - 604)) | (1L << (TRIGGERS - 604)) | (1L << (TRUNCATE - 604)) | (1L << (UNBOUNDED - 604)) | (1L << (UNDEFINED - 604)) | (1L << (UNDOFILE - 604)) | (1L << (UNDO_BUFFER_SIZE - 604)) | (1L << (UNINSTALL - 604)) | (1L << (UNKNOWN - 604)) | (1L << (UNTIL - 604)) | (1L << (UPGRADE - 604)))) != 0) || ((((_la - 668)) & ~0x3f) == 0 && ((1L << (_la - 668)) & ((1L << (USER - 668)) | (1L << (USE_FRM - 668)) | (1L << (USER_RESOURCES - 668)) | (1L << (VALIDATION - 668)) | (1L << (VALUE - 668)) | (1L << (VARIABLES - 668)) | (1L << (VIEW - 668)) | (1L << (VIRTUAL - 668)) | (1L << (VISIBLE - 668)) | (1L << (WAIT - 668)) | (1L << (WARNINGS - 668)) | (1L << (WITHOUT - 668)) | (1L << (WORK - 668)) | (1L << (WRAPPER - 668)) | (1L << (X509 - 668)) | (1L << (XA - 668)) | (1L << (XML - 668)) | (1L << (YES - 668)) | (1L << (EUR - 668)) | (1L << (USA - 668)) | (1L << (JIS - 668)) | (1L << (ISO - 668)) | (1L << (INTERNAL - 668)) | (1L << (QUARTER - 668)) | (1L << (MONTH - 668)) | (1L << (DAY - 668)) | (1L << (HOUR - 668)) | (1L << (MINUTE - 668)) | (1L << (WEEK - 668)) | (1L << (SECOND - 668)) | (1L << (MICROSECOND - 668)) | (1L << (USER_STATISTICS - 668)) | (1L << (CLIENT_STATISTICS - 668)) | (1L << (INDEX_STATISTICS - 668)) | (1L << (TABLE_STATISTICS - 668)) | (1L << (FIREWALL_RULES - 668)) | (1L << (ADMIN - 668)) | (1L << (APPLICATION_PASSWORD_ADMIN - 668)) | (1L << (AUDIT_ADMIN - 668)) | (1L << (AUDIT_ABORT_EXEMPT - 668)) | (1L << (AUTHENTICATION_POLICY_ADMIN - 668)) | (1L << (BACKUP_ADMIN - 668)) | (1L << (BINLOG_ADMIN - 668)) | (1L << (BINLOG_ENCRYPTION_ADMIN - 668)) | (1L << (CLONE_ADMIN - 668)) | (1L << (CONNECTION_ADMIN - 668)) | (1L << (ENCRYPTION_KEY_ADMIN - 668)) | (1L << (EXECUTE - 668)) | (1L << (FILE - 668)) | (1L << (FIREWALL_ADMIN - 668)) | (1L << (FIREWALL_EXEMPT - 668)) | (1L << (FIREWALL_USER - 668)) | (1L << (FLUSH_OPTIMIZER_COSTS - 668)) | (1L << (FLUSH_STATUS - 668)) | (1L << (FLUSH_TABLES - 668)) | (1L << (FLUSH_USER_RESOURCES - 668)) | (1L << (GROUP_REPLICATION_ADMIN - 668)) | (1L << (INNODB_REDO_LOG_ARCHIVE - 668)) | (1L << (INNODB_REDO_LOG_ENABLE - 668)) | (1L << (INVOKE - 668)) | (1L << (LAMBDA - 668)) | (1L << (NDB_STORED_USER - 668)) | (1L << (PASSWORDLESS_USER_ADMIN - 668)))) != 0) || ((((_la - 732)) & ~0x3f) == 0 && ((1L << (_la - 732)) & ((1L << (PERSIST_RO_VARIABLES_ADMIN - 732)) | (1L << (PRIVILEGES - 732)) | (1L << (PROCESS - 732)) | (1L << (RELOAD - 732)) | (1L << (REPLICATION_APPLIER - 732)) | (1L << (REPLICATION_SLAVE_ADMIN - 732)) | (1L << (RESOURCE_GROUP_ADMIN - 732)) | (1L << (RESOURCE_GROUP_USER - 732)) | (1L << (ROLE_ADMIN - 732)) | (1L << (ROUTINE - 732)) | (1L << (S3 - 732)) | (1L << (SESSION_VARIABLES_ADMIN - 732)) | (1L << (SET_USER_ID - 732)) | (1L << (SHOW_ROUTINE - 732)) | (1L << (SHUTDOWN - 732)) | (1L << (SUPER - 732)) | (1L << (SYSTEM_VARIABLES_ADMIN - 732)) | (1L << (TABLES - 732)) | (1L << (TABLE_ENCRYPTION_ADMIN - 732)) | (1L << (VERSION_TOKEN_ADMIN - 732)) | (1L << (XA_RECOVER_ADMIN - 732)) | (1L << (ARMSCII8 - 732)) | (1L << (ASCII - 732)) | (1L << (BIG5 - 732)) | (1L << (CP1250 - 732)) | (1L << (CP1251 - 732)) | (1L << (CP1256 - 732)) | (1L << (CP1257 - 732)) | (1L << (CP850 - 732)) | (1L << (CP852 - 732)) | (1L << (CP866 - 732)) | (1L << (CP932 - 732)) | (1L << (DEC8 - 732)) | (1L << (EUCJPMS - 732)) | (1L << (EUCKR - 732)) | (1L << (GB18030 - 732)) | (1L << (GB2312 - 732)) | (1L << (GBK - 732)) | (1L << (GEOSTD8 - 732)) | (1L << (GREEK - 732)) | (1L << (HEBREW - 732)) | (1L << (HP8 - 732)) | (1L << (KEYBCS2 - 732)) | (1L << (KOI8R - 732)) | (1L << (KOI8U - 732)) | (1L << (LATIN1 - 732)) | (1L << (LATIN2 - 732)) | (1L << (LATIN5 - 732)) | (1L << (LATIN7 - 732)) | (1L << (MACCE - 732)) | (1L << (MACROMAN - 732)) | (1L << (SJIS - 732)) | (1L << (SWE7 - 732)) | (1L << (TIS620 - 732)) | (1L << (UCS2 - 732)) | (1L << (UJIS - 732)) | (1L << (UTF16 - 732)) | (1L << (UTF16LE - 732)) | (1L << (UTF32 - 732)) | (1L << (UTF8 - 732)) | (1L << (UTF8MB3 - 732)) | (1L << (UTF8MB4 - 732)) | (1L << (ARCHIVE - 732)))) != 0) || ((((_la - 796)) & ~0x3f) == 0 && ((1L << (_la - 796)) & ((1L << (BLACKHOLE - 796)) | (1L << (CSV - 796)) | (1L << (FEDERATED - 796)) | (1L << (INNODB - 796)) | (1L << (MEMORY - 796)) | (1L << (MRG_MYISAM - 796)) | (1L << (MYISAM - 796)) | (1L << (NDB - 796)) | (1L << (NDBCLUSTER - 796)) | (1L << (PERFORMANCE_SCHEMA - 796)) | (1L << (TOKUDB - 796)) | (1L << (REPEATABLE - 796)) | (1L << (COMMITTED - 796)) | (1L << (UNCOMMITTED - 796)) | (1L << (SERIALIZABLE - 796)) | (1L << (GEOMETRYCOLLECTION - 796)) | (1L << (GEOMETRY - 796)) | (1L << (LINESTRING - 796)) | (1L << (MULTILINESTRING - 796)) | (1L << (MULTIPOINT - 796)) | (1L << (MULTIPOLYGON - 796)) | (1L << (POINT - 796)) | (1L << (POLYGON - 796)) | (1L << (ABS - 796)) | (1L << (ACOS - 796)) | (1L << (ADDDATE - 796)) | (1L << (ADDTIME - 796)) | (1L << (AES_DECRYPT - 796)) | (1L << (AES_ENCRYPT - 796)) | (1L << (AREA - 796)) | (1L << (ASBINARY - 796)) | (1L << (ASIN - 796)) | (1L << (ASTEXT - 796)) | (1L << (ASWKB - 796)) | (1L << (ASWKT - 796)) | (1L << (ASYMMETRIC_DECRYPT - 796)) | (1L << (ASYMMETRIC_DERIVE - 796)) | (1L << (ASYMMETRIC_ENCRYPT - 796)) | (1L << (ASYMMETRIC_SIGN - 796)) | (1L << (ASYMMETRIC_VERIFY - 796)) | (1L << (ATAN - 796)) | (1L << (ATAN2 - 796)) | (1L << (BENCHMARK - 796)) | (1L << (BIN - 796)) | (1L << (BIT_COUNT - 796)) | (1L << (BIT_LENGTH - 796)) | (1L << (BUFFER - 796)) | (1L << (CATALOG_NAME - 796)) | (1L << (CEIL - 796)) | (1L << (CEILING - 796)) | (1L << (CENTROID - 796)) | (1L << (CHARACTER_LENGTH - 796)) | (1L << (CHARSET - 796)) | (1L << (CHAR_LENGTH - 796)) | (1L << (COERCIBILITY - 796)) | (1L << (COLLATION - 796)) | (1L << (COMPRESS - 796)) | (1L << (CONCAT - 796)) | (1L << (CONCAT_WS - 796)) | (1L << (CONNECTION_ID - 796)) | (1L << (CONV - 796)) | (1L << (CONVERT_TZ - 796)) | (1L << (COS - 796)))) != 0) || ((((_la - 860)) & ~0x3f) == 0 && ((1L << (_la - 860)) & ((1L << (COT - 860)) | (1L << (CRC32 - 860)) | (1L << (CREATE_ASYMMETRIC_PRIV_KEY - 860)) | (1L << (CREATE_ASYMMETRIC_PUB_KEY - 860)) | (1L << (CREATE_DH_PARAMETERS - 860)) | (1L << (CREATE_DIGEST - 860)) | (1L << (CROSSES - 860)) | (1L << (DATEDIFF - 860)) | (1L << (DATE_FORMAT - 860)) | (1L << (DAYNAME - 860)) | (1L << (DAYOFMONTH - 860)) | (1L << (DAYOFWEEK - 860)) | (1L << (DAYOFYEAR - 860)) | (1L << (DECODE - 860)) | (1L << (DEGREES - 860)) | (1L << (DES_DECRYPT - 860)) | (1L << (DES_ENCRYPT - 860)) | (1L << (DIMENSION - 860)) | (1L << (DISJOINT - 860)) | (1L << (ELT - 860)) | (1L << (ENCODE - 860)) | (1L << (ENCRYPT - 860)) | (1L << (ENDPOINT - 860)) | (1L << (ENGINE_ATTRIBUTE - 860)) | (1L << (ENVELOPE - 860)) | (1L << (EQUALS - 860)) | (1L << (EXP - 860)) | (1L << (EXPORT_SET - 860)) | (1L << (EXTERIORRING - 860)) | (1L << (EXTRACTVALUE - 860)) | (1L << (FIELD - 860)) | (1L << (FIND_IN_SET - 860)) | (1L << (FLOOR - 860)) | (1L << (FORMAT - 860)) | (1L << (FOUND_ROWS - 860)) | (1L << (FROM_BASE64 - 860)) | (1L << (FROM_DAYS - 860)) | (1L << (FROM_UNIXTIME - 860)) | (1L << (GEOMCOLLFROMTEXT - 860)) | (1L << (GEOMCOLLFROMWKB - 860)) | (1L << (GEOMETRYCOLLECTIONFROMTEXT - 860)) | (1L << (GEOMETRYCOLLECTIONFROMWKB - 860)) | (1L << (GEOMETRYFROMTEXT - 860)) | (1L << (GEOMETRYFROMWKB - 860)) | (1L << (GEOMETRYN - 860)) | (1L << (GEOMETRYTYPE - 860)) | (1L << (GEOMFROMTEXT - 860)) | (1L << (GEOMFROMWKB - 860)) | (1L << (GET_FORMAT - 860)) | (1L << (GET_LOCK - 860)) | (1L << (GLENGTH - 860)) | (1L << (GREATEST - 860)) | (1L << (GTID_SUBSET - 860)) | (1L << (GTID_SUBTRACT - 860)) | (1L << (HEX - 860)) | (1L << (IFNULL - 860)) | (1L << (INET6_ATON - 860)) | (1L << (INET6_NTOA - 860)) | (1L << (INET_ATON - 860)) | (1L << (INET_NTOA - 860)) | (1L << (INSTR - 860)) | (1L << (INTERIORRINGN - 860)) | (1L << (INTERSECTS - 860)) | (1L << (ISCLOSED - 860)))) != 0) || ((((_la - 924)) & ~0x3f) == 0 && ((1L << (_la - 924)) & ((1L << (ISEMPTY - 924)) | (1L << (ISNULL - 924)) | (1L << (ISSIMPLE - 924)) | (1L << (IS_FREE_LOCK - 924)) | (1L << (IS_IPV4 - 924)) | (1L << (IS_IPV4_COMPAT - 924)) | (1L << (IS_IPV4_MAPPED - 924)) | (1L << (IS_IPV6 - 924)) | (1L << (IS_USED_LOCK - 924)) | (1L << (LAST_INSERT_ID - 924)) | (1L << (LCASE - 924)) | (1L << (LEAST - 924)) | (1L << (LENGTH - 924)) | (1L << (LINEFROMTEXT - 924)) | (1L << (LINEFROMWKB - 924)) | (1L << (LINESTRINGFROMTEXT - 924)) | (1L << (LINESTRINGFROMWKB - 924)) | (1L << (LN - 924)) | (1L << (LOAD_FILE - 924)) | (1L << (LOCATE - 924)) | (1L << (LOG - 924)) | (1L << (LOG10 - 924)) | (1L << (LOG2 - 924)) | (1L << (LOWER - 924)) | (1L << (LPAD - 924)) | (1L << (LTRIM - 924)) | (1L << (MAKEDATE - 924)) | (1L << (MAKETIME - 924)) | (1L << (MAKE_SET - 924)) | (1L << (MASTER_POS_WAIT - 924)) | (1L << (MBRCONTAINS - 924)) | (1L << (MBRDISJOINT - 924)) | (1L << (MBREQUAL - 924)) | (1L << (MBRINTERSECTS - 924)) | (1L << (MBROVERLAPS - 924)) | (1L << (MBRTOUCHES - 924)) | (1L << (MBRWITHIN - 924)) | (1L << (MD5 - 924)) | (1L << (MLINEFROMTEXT - 924)) | (1L << (MLINEFROMWKB - 924)) | (1L << (MONTHNAME - 924)) | (1L << (MPOINTFROMTEXT - 924)) | (1L << (MPOINTFROMWKB - 924)) | (1L << (MPOLYFROMTEXT - 924)) | (1L << (MPOLYFROMWKB - 924)) | (1L << (MULTILINESTRINGFROMTEXT - 924)) | (1L << (MULTILINESTRINGFROMWKB - 924)) | (1L << (MULTIPOINTFROMTEXT - 924)) | (1L << (MULTIPOINTFROMWKB - 924)) | (1L << (MULTIPOLYGONFROMTEXT - 924)) | (1L << (MULTIPOLYGONFROMWKB - 924)) | (1L << (NAME_CONST - 924)) | (1L << (NULLIF - 924)) | (1L << (NUMGEOMETRIES - 924)) | (1L << (NUMINTERIORRINGS - 924)) | (1L << (NUMPOINTS - 924)) | (1L << (OCT - 924)) | (1L << (OCTET_LENGTH - 924)) | (1L << (ORD - 924)) | (1L << (OVERLAPS - 924)) | (1L << (PERIOD_ADD - 924)) | (1L << (PERIOD_DIFF - 924)) | (1L << (PI - 924)) | (1L << (POINTFROMTEXT - 924)))) != 0) || ((((_la - 988)) & ~0x3f) == 0 && ((1L << (_la - 988)) & ((1L << (POINTFROMWKB - 988)) | (1L << (POINTN - 988)) | (1L << (POLYFROMTEXT - 988)) | (1L << (POLYFROMWKB - 988)) | (1L << (POLYGONFROMTEXT - 988)) | (1L << (POLYGONFROMWKB - 988)) | (1L << (POW - 988)) | (1L << (POWER - 988)) | (1L << (QUOTE - 988)) | (1L << (RADIANS - 988)) | (1L << (RAND - 988)) | (1L << (RANDOM - 988)) | (1L << (RANDOM_BYTES - 988)) | (1L << (RELEASE_LOCK - 988)) | (1L << (REVERSE - 988)) | (1L << (ROUND - 988)) | (1L << (ROW_COUNT - 988)) | (1L << (RPAD - 988)) | (1L << (RTRIM - 988)) | (1L << (SEC_TO_TIME - 988)) | (1L << (SECONDARY_ENGINE_ATTRIBUTE - 988)) | (1L << (SENSITIVE_VARIABLES_OBSERVER - 988)) | (1L << (SESSION_USER - 988)) | (1L << (SHA - 988)) | (1L << (SHA1 - 988)) | (1L << (SHA2 - 988)) | (1L << (SCHEMA_NAME - 988)) | (1L << (SIGN - 988)) | (1L << (SIN - 988)) | (1L << (SLEEP - 988)) | (1L << (SOUNDEX - 988)) | (1L << (SQL_THREAD_WAIT_AFTER_GTIDS - 988)) | (1L << (SQRT - 988)) | (1L << (SRID - 988)) | (1L << (STARTPOINT - 988)) | (1L << (STRCMP - 988)) | (1L << (STR_TO_DATE - 988)) | (1L << (ST_AREA - 988)) | (1L << (ST_ASBINARY - 988)) | (1L << (ST_ASTEXT - 988)) | (1L << (ST_ASWKB - 988)) | (1L << (ST_ASWKT - 988)) | (1L << (ST_BUFFER - 988)) | (1L << (ST_CENTROID - 988)) | (1L << (ST_CONTAINS - 988)) | (1L << (ST_CROSSES - 988)) | (1L << (ST_DIFFERENCE - 988)) | (1L << (ST_DIMENSION - 988)) | (1L << (ST_DISJOINT - 988)) | (1L << (ST_DISTANCE - 988)) | (1L << (ST_ENDPOINT - 988)) | (1L << (ST_ENVELOPE - 988)) | (1L << (ST_EQUALS - 988)) | (1L << (ST_EXTERIORRING - 988)) | (1L << (ST_GEOMCOLLFROMTEXT - 988)) | (1L << (ST_GEOMCOLLFROMTXT - 988)) | (1L << (ST_GEOMCOLLFROMWKB - 988)) | (1L << (ST_GEOMETRYCOLLECTIONFROMTEXT - 988)) | (1L << (ST_GEOMETRYCOLLECTIONFROMWKB - 988)) | (1L << (ST_GEOMETRYFROMTEXT - 988)) | (1L << (ST_GEOMETRYFROMWKB - 988)) | (1L << (ST_GEOMETRYN - 988)) | (1L << (ST_GEOMETRYTYPE - 988)) | (1L << (ST_GEOMFROMTEXT - 988)))) != 0) || ((((_la - 1052)) & ~0x3f) == 0 && ((1L << (_la - 1052)) & ((1L << (ST_GEOMFROMWKB - 1052)) | (1L << (ST_INTERIORRINGN - 1052)) | (1L << (ST_INTERSECTION - 1052)) | (1L << (ST_INTERSECTS - 1052)) | (1L << (ST_ISCLOSED - 1052)) | (1L << (ST_ISEMPTY - 1052)) | (1L << (ST_ISSIMPLE - 1052)) | (1L << (ST_LINEFROMTEXT - 1052)) | (1L << (ST_LINEFROMWKB - 1052)) | (1L << (ST_LINESTRINGFROMTEXT - 1052)) | (1L << (ST_LINESTRINGFROMWKB - 1052)) | (1L << (ST_NUMGEOMETRIES - 1052)) | (1L << (ST_NUMINTERIORRING - 1052)) | (1L << (ST_NUMINTERIORRINGS - 1052)) | (1L << (ST_NUMPOINTS - 1052)) | (1L << (ST_OVERLAPS - 1052)) | (1L << (ST_POINTFROMTEXT - 1052)) | (1L << (ST_POINTFROMWKB - 1052)) | (1L << (ST_POINTN - 1052)) | (1L << (ST_POLYFROMTEXT - 1052)) | (1L << (ST_POLYFROMWKB - 1052)) | (1L << (ST_POLYGONFROMTEXT - 1052)) | (1L << (ST_POLYGONFROMWKB - 1052)) | (1L << (ST_SRID - 1052)) | (1L << (ST_STARTPOINT - 1052)) | (1L << (ST_SYMDIFFERENCE - 1052)) | (1L << (ST_TOUCHES - 1052)) | (1L << (ST_UNION - 1052)) | (1L << (ST_WITHIN - 1052)) | (1L << (ST_X - 1052)) | (1L << (ST_Y - 1052)) | (1L << (SUBDATE - 1052)) | (1L << (SUBSTRING_INDEX - 1052)) | (1L << (SUBTIME - 1052)) | (1L << (SYSTEM_USER - 1052)) | (1L << (SYSTEM - 1052)) | (1L << (TAN - 1052)) | (1L << (TELEMETRY_LOG_ADMIN - 1052)) | (1L << (TIMEDIFF - 1052)) | (1L << (TIMESTAMPADD - 1052)) | (1L << (TIMESTAMPDIFF - 1052)) | (1L << (TIME_FORMAT - 1052)) | (1L << (TIME_TO_SEC - 1052)) | (1L << (TOUCHES - 1052)) | (1L << (TO_BASE64 - 1052)) | (1L << (TO_DAYS - 1052)) | (1L << (TO_SECONDS - 1052)) | (1L << (TP_CONNECTION_ADMIN - 1052)) | (1L << (UCASE - 1052)) | (1L << (UNCOMPRESS - 1052)) | (1L << (UNCOMPRESSED_LENGTH - 1052)) | (1L << (UNHEX - 1052)) | (1L << (UNIX_TIMESTAMP - 1052)) | (1L << (UPDATEXML - 1052)) | (1L << (UPPER - 1052)) | (1L << (UUID - 1052)) | (1L << (UUID_SHORT - 1052)) | (1L << (VALIDATE_PASSWORD_STRENGTH - 1052)) | (1L << (VERSION - 1052)) | (1L << (VERSIONING - 1052)) | (1L << (WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS - 1052)) | (1L << (WEEKDAY - 1052)) | (1L << (WEEKOFYEAR - 1052)) | (1L << (WEIGHT_STRING - 1052)))) != 0) || ((((_la - 1116)) & ~0x3f) == 0 && ((1L << (_la - 1116)) & ((1L << (WITHIN - 1116)) | (1L << (YEARWEEK - 1116)) | (1L << (Y_FUNCTION - 1116)) | (1L << (X_FUNCTION - 1116)) | (1L << (VIA - 1116)) | (1L << (LASTVAL - 1116)) | (1L << (NEXTVAL - 1116)) | (1L << (SETVAL - 1116)) | (1L << (PREVIOUS - 1116)) | (1L << (PERSISTENT - 1116)) | (1L << (BINLOG_MONITOR - 1116)) | (1L << (BINLOG_REPLAY - 1116)) | (1L << (FEDERATED_ADMIN - 1116)) | (1L << (READ_ONLY_ADMIN - 1116)) | (1L << (REPLICA - 1116)) | (1L << (REPLICATION_MASTER_ADMIN - 1116)) | (1L << (MONITOR - 1116)) | (1L << (READ_ONLY - 1116)) | (1L << (REPLAY - 1116)) | (1L << (MOD - 1116)) | (1L << (CHARSET_REVERSE_QOUTE_STRING - 1116)) | (1L << (STRING_LITERAL - 1116)))) != 0) || _la==ID) {
					{
					setState(1854);
					((UniqueKeyTableConstraintContext)_localctx).index = uid();
					}
				}

				setState(1858);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==USING) {
					{
					setState(1857);
					indexType();
					}
				}

				setState(1860);
				indexColumnNames();
				setState(1864);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,194,_ctx);
				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
					if ( _alt==1 ) {
						{
						{
						setState(1861);
						indexOption();
						}
						} 
					}
					setState(1866);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,194,_ctx);
				}
				}
				break;
			case 3:
				_localctx = new ForeignKeyTableConstraintContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(1871);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==CONSTRAINT) {
					{
					setState(1867);
					match(CONSTRAINT);
					setState(1869);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ARRAY) | (1L << ATTRIBUTE) | (1L << BUCKETS) | (1L << CONDITION) | (1L << CURRENT) | (1L << CURRENT_ROLE) | (1L << CURRENT_USER) | (1L << DATABASE) | (1L << DEFAULT) | (1L << DIAGNOSTICS) | (1L << EMPTY) | (1L << ENFORCED) | (1L << EXCEPT))) != 0) || ((((_la - 74)) & ~0x3f) == 0 && ((1L << (_la - 74)) & ((1L << (GROUP - 74)) | (1L << (GROUP_REPLICATION_STREAM - 74)) | (1L << (IF - 74)) | (1L << (IGNORED - 74)) | (1L << (INSERT - 74)) | (1L << (LATERAL - 74)) | (1L << (LEFT - 74)) | (1L << (LOCKED - 74)) | (1L << (MAXVALUE - 74)) | (1L << (MINVALUE - 74)) | (1L << (NUMBER - 74)) | (1L << (OPTIONAL - 74)) | (1L << (ORDER - 74)) | (1L << (PRIMARY - 74)))) != 0) || ((((_la - 142)) & ~0x3f) == 0 && ((1L << (_la - 142)) & ((1L << (REPEAT - 142)) | (1L << (REPLACE - 142)) | (1L << (RIGHT - 142)) | (1L << (SCHEMA - 142)) | (1L << (SKIP_ - 142)) | (1L << (SKIP_QUERY_REWRITE - 142)) | (1L << (STACKED - 142)) | (1L << (STATEMENT - 142)))) != 0) || ((((_la - 220)) & ~0x3f) == 0 && ((1L << (_la - 220)) & ((1L << (DATE - 220)) | (1L << (TIME - 220)) | (1L << (TIMESTAMP - 220)) | (1L << (DATETIME - 220)) | (1L << (YEAR - 220)) | (1L << (NATIONAL - 220)) | (1L << (BINARY - 220)) | (1L << (TEXT - 220)) | (1L << (ENUM - 220)) | (1L << (SERIAL - 220)) | (1L << (JSON_ARRAY - 220)) | (1L << (JSON_ARRAYAGG - 220)) | (1L << (JSON_ARRAY_APPEND - 220)) | (1L << (JSON_ARRAY_INSERT - 220)) | (1L << (JSON_CONTAINS - 220)) | (1L << (JSON_CONTAINS_PATH - 220)) | (1L << (JSON_DEPTH - 220)) | (1L << (JSON_EXTRACT - 220)) | (1L << (JSON_INSERT - 220)) | (1L << (JSON_KEYS - 220)) | (1L << (JSON_LENGTH - 220)) | (1L << (JSON_MERGE - 220)) | (1L << (JSON_MERGE_PATCH - 220)) | (1L << (JSON_MERGE_PRESERVE - 220)) | (1L << (JSON_OBJECT - 220)) | (1L << (JSON_OBJECTAGG - 220)) | (1L << (JSON_OVERLAPS - 220)) | (1L << (JSON_PRETTY - 220)) | (1L << (JSON_QUOTE - 220)) | (1L << (JSON_REMOVE - 220)) | (1L << (JSON_REPLACE - 220)) | (1L << (JSON_SCHEMA_VALID - 220)) | (1L << (JSON_SCHEMA_VALIDATION_REPORT - 220)) | (1L << (JSON_SEARCH - 220)) | (1L << (JSON_SET - 220)) | (1L << (JSON_STORAGE_FREE - 220)) | (1L << (JSON_STORAGE_SIZE - 220)) | (1L << (JSON_TABLE - 220)) | (1L << (JSON_TYPE - 220)) | (1L << (JSON_UNQUOTE - 220)))) != 0) || ((((_la - 284)) & ~0x3f) == 0 && ((1L << (_la - 284)) & ((1L << (JSON_VALID - 284)) | (1L << (JSON_VALUE - 284)) | (1L << (NESTED - 284)) | (1L << (ORDINALITY - 284)) | (1L << (PATH - 284)) | (1L << (AVG - 284)) | (1L << (BIT_AND - 284)) | (1L << (BIT_OR - 284)) | (1L << (BIT_XOR - 284)) | (1L << (COUNT - 284)) | (1L << (CUME_DIST - 284)) | (1L << (DENSE_RANK - 284)) | (1L << (FIRST_VALUE - 284)) | (1L << (GROUP_CONCAT - 284)) | (1L << (LAG - 284)) | (1L << (LAST_VALUE - 284)) | (1L << (LEAD - 284)) | (1L << (MAX - 284)) | (1L << (MIN - 284)) | (1L << (NTILE - 284)) | (1L << (NTH_VALUE - 284)) | (1L << (PERCENT_RANK - 284)) | (1L << (RANK - 284)) | (1L << (ROW_NUMBER - 284)) | (1L << (STD - 284)) | (1L << (STDDEV - 284)) | (1L << (STDDEV_POP - 284)) | (1L << (STDDEV_SAMP - 284)) | (1L << (SUM - 284)) | (1L << (VAR_POP - 284)) | (1L << (VAR_SAMP - 284)) | (1L << (VARIANCE - 284)) | (1L << (CURRENT_DATE - 284)) | (1L << (CURRENT_TIME - 284)) | (1L << (CURRENT_TIMESTAMP - 284)) | (1L << (LOCALTIME - 284)) | (1L << (CURDATE - 284)) | (1L << (CURTIME - 284)) | (1L << (DATE_ADD - 284)) | (1L << (DATE_SUB - 284)) | (1L << (LOCALTIMESTAMP - 284)) | (1L << (NOW - 284)) | (1L << (POSITION - 284)) | (1L << (SUBSTR - 284)) | (1L << (SUBSTRING - 284)) | (1L << (SYSDATE - 284)) | (1L << (TRIM - 284)) | (1L << (UTC_DATE - 284)) | (1L << (UTC_TIME - 284)) | (1L << (UTC_TIMESTAMP - 284)) | (1L << (ACCOUNT - 284)) | (1L << (ACTION - 284)) | (1L << (AFTER - 284)) | (1L << (AGGREGATE - 284)) | (1L << (ALGORITHM - 284)) | (1L << (ANY - 284)) | (1L << (AT - 284)) | (1L << (AUTHORS - 284)) | (1L << (AUTOCOMMIT - 284)) | (1L << (AUTOEXTEND_SIZE - 284)) | (1L << (AUTO_INCREMENT - 284)) | (1L << (AVG_ROW_LENGTH - 284)) | (1L << (BEGIN - 284)))) != 0) || ((((_la - 348)) & ~0x3f) == 0 && ((1L << (_la - 348)) & ((1L << (BINLOG - 348)) | (1L << (BIT - 348)) | (1L << (BLOCK - 348)) | (1L << (BOOL - 348)) | (1L << (BOOLEAN - 348)) | (1L << (BTREE - 348)) | (1L << (CACHE - 348)) | (1L << (CASCADED - 348)) | (1L << (CHAIN - 348)) | (1L << (CHANGED - 348)) | (1L << (CHANNEL - 348)) | (1L << (CHECKSUM - 348)) | (1L << (PAGE_CHECKSUM - 348)) | (1L << (CIPHER - 348)) | (1L << (CLASS_ORIGIN - 348)) | (1L << (CLIENT - 348)) | (1L << (CLOSE - 348)) | (1L << (CLUSTERING - 348)) | (1L << (COALESCE - 348)) | (1L << (CODE - 348)) | (1L << (COLUMNS - 348)) | (1L << (COLUMN_FORMAT - 348)) | (1L << (COLUMN_NAME - 348)) | (1L << (COMMENT - 348)) | (1L << (COMMIT - 348)) | (1L << (COMPACT - 348)) | (1L << (COMPLETION - 348)) | (1L << (COMPRESSED - 348)) | (1L << (COMPRESSION - 348)) | (1L << (CONCURRENT - 348)) | (1L << (CONNECT - 348)) | (1L << (CONNECTION - 348)) | (1L << (CONSISTENT - 348)) | (1L << (CONSTRAINT_CATALOG - 348)) | (1L << (CONSTRAINT_SCHEMA - 348)) | (1L << (CONSTRAINT_NAME - 348)) | (1L << (CONTAINS - 348)) | (1L << (CONTEXT - 348)) | (1L << (CONTRIBUTORS - 348)) | (1L << (COPY - 348)) | (1L << (CPU - 348)) | (1L << (CYCLE - 348)) | (1L << (CURSOR_NAME - 348)) | (1L << (DATA - 348)) | (1L << (DATAFILE - 348)) | (1L << (DEALLOCATE - 348)) | (1L << (DEFAULT_AUTH - 348)) | (1L << (DEFINER - 348)) | (1L << (DELAY_KEY_WRITE - 348)) | (1L << (DES_KEY_FILE - 348)) | (1L << (DIRECTORY - 348)) | (1L << (DISABLE - 348)) | (1L << (DISCARD - 348)) | (1L << (DISK - 348)) | (1L << (DO - 348)) | (1L << (DUMPFILE - 348)) | (1L << (DUPLICATE - 348)) | (1L << (DYNAMIC - 348)) | (1L << (ENABLE - 348)) | (1L << (ENCRYPTED - 348)) | (1L << (ENCRYPTION - 348)) | (1L << (ENCRYPTION_KEY_ID - 348)) | (1L << (END - 348)) | (1L << (ENDS - 348)))) != 0) || ((((_la - 412)) & ~0x3f) == 0 && ((1L << (_la - 412)) & ((1L << (ENGINE - 412)) | (1L << (ENGINES - 412)) | (1L << (ERROR - 412)) | (1L << (ERRORS - 412)) | (1L << (ESCAPE - 412)) | (1L << (EVEN - 412)) | (1L << (EVENT - 412)) | (1L << (EVENTS - 412)) | (1L << (EVERY - 412)) | (1L << (EXCHANGE - 412)) | (1L << (EXCLUSIVE - 412)) | (1L << (EXPIRE - 412)) | (1L << (EXPORT - 412)) | (1L << (EXTENDED - 412)) | (1L << (EXTENT_SIZE - 412)) | (1L << (FAILED_LOGIN_ATTEMPTS - 412)) | (1L << (FAST - 412)) | (1L << (FAULTS - 412)) | (1L << (FIELDS - 412)) | (1L << (FILE_BLOCK_SIZE - 412)) | (1L << (FILTER - 412)) | (1L << (FIRST - 412)) | (1L << (FIXED - 412)) | (1L << (FLUSH - 412)) | (1L << (FOLLOWS - 412)) | (1L << (FOUND - 412)) | (1L << (FULL - 412)) | (1L << (FUNCTION - 412)) | (1L << (GENERAL - 412)) | (1L << (GLOBAL - 412)) | (1L << (GRANTS - 412)) | (1L << (GROUP_REPLICATION - 412)) | (1L << (HANDLER - 412)) | (1L << (HASH - 412)) | (1L << (HELP - 412)) | (1L << (HISTORY - 412)) | (1L << (HOST - 412)) | (1L << (HOSTS - 412)) | (1L << (IDENTIFIED - 412)) | (1L << (IGNORE_SERVER_IDS - 412)) | (1L << (IMPORT - 412)) | (1L << (INCREMENT - 412)) | (1L << (INDEXES - 412)) | (1L << (INITIAL_SIZE - 412)) | (1L << (INPLACE - 412)) | (1L << (INSERT_METHOD - 412)) | (1L << (INSTALL - 412)) | (1L << (INSTANCE - 412)) | (1L << (INSTANT - 412)) | (1L << (INVISIBLE - 412)) | (1L << (INVOKER - 412)) | (1L << (IO - 412)) | (1L << (IO_THREAD - 412)) | (1L << (IPC - 412)) | (1L << (ISOLATION - 412)) | (1L << (ISSUER - 412)) | (1L << (JSON - 412)) | (1L << (KEY_BLOCK_SIZE - 412)) | (1L << (LANGUAGE - 412)) | (1L << (LAST - 412)) | (1L << (LEAVES - 412)) | (1L << (LESS - 412)) | (1L << (LEVEL - 412)))) != 0) || ((((_la - 476)) & ~0x3f) == 0 && ((1L << (_la - 476)) & ((1L << (LIST - 476)) | (1L << (LOCAL - 476)) | (1L << (LOGFILE - 476)) | (1L << (LOGS - 476)) | (1L << (MASTER - 476)) | (1L << (MASTER_AUTO_POSITION - 476)) | (1L << (MASTER_CONNECT_RETRY - 476)) | (1L << (MASTER_DELAY - 476)) | (1L << (MASTER_HEARTBEAT_PERIOD - 476)) | (1L << (MASTER_HOST - 476)) | (1L << (MASTER_LOG_FILE - 476)) | (1L << (MASTER_LOG_POS - 476)) | (1L << (MASTER_PASSWORD - 476)) | (1L << (MASTER_PORT - 476)) | (1L << (MASTER_RETRY_COUNT - 476)) | (1L << (MASTER_SSL - 476)) | (1L << (MASTER_SSL_CA - 476)) | (1L << (MASTER_SSL_CAPATH - 476)) | (1L << (MASTER_SSL_CERT - 476)) | (1L << (MASTER_SSL_CIPHER - 476)) | (1L << (MASTER_SSL_CRL - 476)) | (1L << (MASTER_SSL_CRLPATH - 476)) | (1L << (MASTER_SSL_KEY - 476)) | (1L << (MASTER_TLS_VERSION - 476)) | (1L << (MASTER_USER - 476)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 476)) | (1L << (MAX_QUERIES_PER_HOUR - 476)) | (1L << (MAX_ROWS - 476)) | (1L << (MAX_SIZE - 476)) | (1L << (MAX_UPDATES_PER_HOUR - 476)) | (1L << (MAX_USER_CONNECTIONS - 476)) | (1L << (MEDIUM - 476)) | (1L << (MEMBER - 476)) | (1L << (MERGE - 476)) | (1L << (MESSAGE_TEXT - 476)) | (1L << (MID - 476)) | (1L << (MIGRATE - 476)) | (1L << (MIN_ROWS - 476)) | (1L << (MODE - 476)) | (1L << (MODIFY - 476)) | (1L << (MUTEX - 476)) | (1L << (MYSQL - 476)) | (1L << (MYSQL_ERRNO - 476)) | (1L << (NAME - 476)) | (1L << (NAMES - 476)) | (1L << (NCHAR - 476)) | (1L << (NEVER - 476)) | (1L << (NEXT - 476)) | (1L << (NO - 476)) | (1L << (NOCACHE - 476)) | (1L << (NOCOPY - 476)) | (1L << (NOCYCLE - 476)) | (1L << (NOMAXVALUE - 476)) | (1L << (NOMINVALUE - 476)) | (1L << (NOWAIT - 476)) | (1L << (NODEGROUP - 476)) | (1L << (NONE - 476)) | (1L << (ODBC - 476)) | (1L << (OFFLINE - 476)) | (1L << (OFFSET - 476)) | (1L << (OF - 476)) | (1L << (OJ - 476)) | (1L << (OLD_PASSWORD - 476)) | (1L << (ONE - 476)))) != 0) || ((((_la - 540)) & ~0x3f) == 0 && ((1L << (_la - 540)) & ((1L << (ONLINE - 540)) | (1L << (ONLY - 540)) | (1L << (OPEN - 540)) | (1L << (OPTIMIZER_COSTS - 540)) | (1L << (OPTIONS - 540)) | (1L << (OWNER - 540)) | (1L << (PACK_KEYS - 540)) | (1L << (PAGE - 540)) | (1L << (PARSER - 540)) | (1L << (PARTIAL - 540)) | (1L << (PARTITIONING - 540)) | (1L << (PARTITIONS - 540)) | (1L << (PASSWORD - 540)) | (1L << (PASSWORD_LOCK_TIME - 540)) | (1L << (PHASE - 540)) | (1L << (PLUGIN - 540)) | (1L << (PLUGIN_DIR - 540)) | (1L << (PLUGINS - 540)) | (1L << (PORT - 540)) | (1L << (PRECEDES - 540)) | (1L << (PREPARE - 540)) | (1L << (PRESERVE - 540)) | (1L << (PREV - 540)) | (1L << (PROCESSLIST - 540)) | (1L << (PROFILE - 540)) | (1L << (PROFILES - 540)) | (1L << (PROXY - 540)) | (1L << (QUERY - 540)) | (1L << (QUICK - 540)) | (1L << (REBUILD - 540)) | (1L << (RECOVER - 540)) | (1L << (RECURSIVE - 540)) | (1L << (REDO_BUFFER_SIZE - 540)) | (1L << (REDUNDANT - 540)) | (1L << (RELAY - 540)) | (1L << (RELAY_LOG_FILE - 540)) | (1L << (RELAY_LOG_POS - 540)) | (1L << (RELAYLOG - 540)) | (1L << (REMOVE - 540)) | (1L << (REORGANIZE - 540)) | (1L << (REPAIR - 540)) | (1L << (REPLICATE_DO_DB - 540)) | (1L << (REPLICATE_DO_TABLE - 540)) | (1L << (REPLICATE_IGNORE_DB - 540)) | (1L << (REPLICATE_IGNORE_TABLE - 540)) | (1L << (REPLICATE_REWRITE_DB - 540)) | (1L << (REPLICATE_WILD_DO_TABLE - 540)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 540)) | (1L << (REPLICATION - 540)) | (1L << (RESET - 540)) | (1L << (RESTART - 540)) | (1L << (RESUME - 540)) | (1L << (RETURNED_SQLSTATE - 540)) | (1L << (RETURNING - 540)) | (1L << (RETURNS - 540)) | (1L << (REUSE - 540)) | (1L << (ROLE - 540)) | (1L << (ROLLBACK - 540)) | (1L << (ROLLUP - 540)) | (1L << (ROTATE - 540)) | (1L << (ROW - 540)))) != 0) || ((((_la - 604)) & ~0x3f) == 0 && ((1L << (_la - 604)) & ((1L << (ROWS - 604)) | (1L << (ROW_FORMAT - 604)) | (1L << (RTREE - 604)) | (1L << (SAVEPOINT - 604)) | (1L << (SCHEDULE - 604)) | (1L << (SECURITY - 604)) | (1L << (SEQUENCE - 604)) | (1L << (SERVER - 604)) | (1L << (SESSION - 604)) | (1L << (SHARE - 604)) | (1L << (SHARED - 604)) | (1L << (SIGNED - 604)) | (1L << (SIMPLE - 604)) | (1L << (SLAVE - 604)) | (1L << (SLOW - 604)) | (1L << (SNAPSHOT - 604)) | (1L << (SOCKET - 604)) | (1L << (SOME - 604)) | (1L << (SONAME - 604)) | (1L << (SOUNDS - 604)) | (1L << (SOURCE - 604)) | (1L << (SQL_AFTER_GTIDS - 604)) | (1L << (SQL_AFTER_MTS_GAPS - 604)) | (1L << (SQL_BEFORE_GTIDS - 604)) | (1L << (SQL_BUFFER_RESULT - 604)) | (1L << (SQL_CACHE - 604)) | (1L << (SQL_NO_CACHE - 604)) | (1L << (SQL_THREAD - 604)) | (1L << (START - 604)) | (1L << (STARTS - 604)) | (1L << (STATS_AUTO_RECALC - 604)) | (1L << (STATS_PERSISTENT - 604)) | (1L << (STATS_SAMPLE_PAGES - 604)) | (1L << (STATUS - 604)) | (1L << (STOP - 604)) | (1L << (STORAGE - 604)) | (1L << (STRING - 604)) | (1L << (SUBCLASS_ORIGIN - 604)) | (1L << (SUBJECT - 604)) | (1L << (SUBPARTITION - 604)) | (1L << (SUBPARTITIONS - 604)) | (1L << (SUSPEND - 604)) | (1L << (SWAPS - 604)) | (1L << (SWITCHES - 604)) | (1L << (TABLE_NAME - 604)) | (1L << (TABLESPACE - 604)) | (1L << (TABLE_TYPE - 604)) | (1L << (TEMPORARY - 604)) | (1L << (TEMPTABLE - 604)) | (1L << (THAN - 604)) | (1L << (TRADITIONAL - 604)) | (1L << (TRANSACTION - 604)) | (1L << (TRANSACTIONAL - 604)) | (1L << (TRIGGERS - 604)) | (1L << (TRUNCATE - 604)) | (1L << (UNBOUNDED - 604)) | (1L << (UNDEFINED - 604)) | (1L << (UNDOFILE - 604)) | (1L << (UNDO_BUFFER_SIZE - 604)) | (1L << (UNINSTALL - 604)) | (1L << (UNKNOWN - 604)) | (1L << (UNTIL - 604)) | (1L << (UPGRADE - 604)))) != 0) || ((((_la - 668)) & ~0x3f) == 0 && ((1L << (_la - 668)) & ((1L << (USER - 668)) | (1L << (USE_FRM - 668)) | (1L << (USER_RESOURCES - 668)) | (1L << (VALIDATION - 668)) | (1L << (VALUE - 668)) | (1L << (VARIABLES - 668)) | (1L << (VIEW - 668)) | (1L << (VIRTUAL - 668)) | (1L << (VISIBLE - 668)) | (1L << (WAIT - 668)) | (1L << (WARNINGS - 668)) | (1L << (WITHOUT - 668)) | (1L << (WORK - 668)) | (1L << (WRAPPER - 668)) | (1L << (X509 - 668)) | (1L << (XA - 668)) | (1L << (XML - 668)) | (1L << (YES - 668)) | (1L << (EUR - 668)) | (1L << (USA - 668)) | (1L << (JIS - 668)) | (1L << (ISO - 668)) | (1L << (INTERNAL - 668)) | (1L << (QUARTER - 668)) | (1L << (MONTH - 668)) | (1L << (DAY - 668)) | (1L << (HOUR - 668)) | (1L << (MINUTE - 668)) | (1L << (WEEK - 668)) | (1L << (SECOND - 668)) | (1L << (MICROSECOND - 668)) | (1L << (USER_STATISTICS - 668)) | (1L << (CLIENT_STATISTICS - 668)) | (1L << (INDEX_STATISTICS - 668)) | (1L << (TABLE_STATISTICS - 668)) | (1L << (FIREWALL_RULES - 668)) | (1L << (ADMIN - 668)) | (1L << (APPLICATION_PASSWORD_ADMIN - 668)) | (1L << (AUDIT_ADMIN - 668)) | (1L << (AUDIT_ABORT_EXEMPT - 668)) | (1L << (AUTHENTICATION_POLICY_ADMIN - 668)) | (1L << (BACKUP_ADMIN - 668)) | (1L << (BINLOG_ADMIN - 668)) | (1L << (BINLOG_ENCRYPTION_ADMIN - 668)) | (1L << (CLONE_ADMIN - 668)) | (1L << (CONNECTION_ADMIN - 668)) | (1L << (ENCRYPTION_KEY_ADMIN - 668)) | (1L << (EXECUTE - 668)) | (1L << (FILE - 668)) | (1L << (FIREWALL_ADMIN - 668)) | (1L << (FIREWALL_EXEMPT - 668)) | (1L << (FIREWALL_USER - 668)) | (1L << (FLUSH_OPTIMIZER_COSTS - 668)) | (1L << (FLUSH_STATUS - 668)) | (1L << (FLUSH_TABLES - 668)) | (1L << (FLUSH_USER_RESOURCES - 668)) | (1L << (GROUP_REPLICATION_ADMIN - 668)) | (1L << (INNODB_REDO_LOG_ARCHIVE - 668)) | (1L << (INNODB_REDO_LOG_ENABLE - 668)) | (1L << (INVOKE - 668)) | (1L << (LAMBDA - 668)) | (1L << (NDB_STORED_USER - 668)) | (1L << (PASSWORDLESS_USER_ADMIN - 668)))) != 0) || ((((_la - 732)) & ~0x3f) == 0 && ((1L << (_la - 732)) & ((1L << (PERSIST_RO_VARIABLES_ADMIN - 732)) | (1L << (PRIVILEGES - 732)) | (1L << (PROCESS - 732)) | (1L << (RELOAD - 732)) | (1L << (REPLICATION_APPLIER - 732)) | (1L << (REPLICATION_SLAVE_ADMIN - 732)) | (1L << (RESOURCE_GROUP_ADMIN - 732)) | (1L << (RESOURCE_GROUP_USER - 732)) | (1L << (ROLE_ADMIN - 732)) | (1L << (ROUTINE - 732)) | (1L << (S3 - 732)) | (1L << (SESSION_VARIABLES_ADMIN - 732)) | (1L << (SET_USER_ID - 732)) | (1L << (SHOW_ROUTINE - 732)) | (1L << (SHUTDOWN - 732)) | (1L << (SUPER - 732)) | (1L << (SYSTEM_VARIABLES_ADMIN - 732)) | (1L << (TABLES - 732)) | (1L << (TABLE_ENCRYPTION_ADMIN - 732)) | (1L << (VERSION_TOKEN_ADMIN - 732)) | (1L << (XA_RECOVER_ADMIN - 732)) | (1L << (ARMSCII8 - 732)) | (1L << (ASCII - 732)) | (1L << (BIG5 - 732)) | (1L << (CP1250 - 732)) | (1L << (CP1251 - 732)) | (1L << (CP1256 - 732)) | (1L << (CP1257 - 732)) | (1L << (CP850 - 732)) | (1L << (CP852 - 732)) | (1L << (CP866 - 732)) | (1L << (CP932 - 732)) | (1L << (DEC8 - 732)) | (1L << (EUCJPMS - 732)) | (1L << (EUCKR - 732)) | (1L << (GB18030 - 732)) | (1L << (GB2312 - 732)) | (1L << (GBK - 732)) | (1L << (GEOSTD8 - 732)) | (1L << (GREEK - 732)) | (1L << (HEBREW - 732)) | (1L << (HP8 - 732)) | (1L << (KEYBCS2 - 732)) | (1L << (KOI8R - 732)) | (1L << (KOI8U - 732)) | (1L << (LATIN1 - 732)) | (1L << (LATIN2 - 732)) | (1L << (LATIN5 - 732)) | (1L << (LATIN7 - 732)) | (1L << (MACCE - 732)) | (1L << (MACROMAN - 732)) | (1L << (SJIS - 732)) | (1L << (SWE7 - 732)) | (1L << (TIS620 - 732)) | (1L << (UCS2 - 732)) | (1L << (UJIS - 732)) | (1L << (UTF16 - 732)) | (1L << (UTF16LE - 732)) | (1L << (UTF32 - 732)) | (1L << (UTF8 - 732)) | (1L << (UTF8MB3 - 732)) | (1L << (UTF8MB4 - 732)) | (1L << (ARCHIVE - 732)))) != 0) || ((((_la - 796)) & ~0x3f) == 0 && ((1L << (_la - 796)) & ((1L << (BLACKHOLE - 796)) | (1L << (CSV - 796)) | (1L << (FEDERATED - 796)) | (1L << (INNODB - 796)) | (1L << (MEMORY - 796)) | (1L << (MRG_MYISAM - 796)) | (1L << (MYISAM - 796)) | (1L << (NDB - 796)) | (1L << (NDBCLUSTER - 796)) | (1L << (PERFORMANCE_SCHEMA - 796)) | (1L << (TOKUDB - 796)) | (1L << (REPEATABLE - 796)) | (1L << (COMMITTED - 796)) | (1L << (UNCOMMITTED - 796)) | (1L << (SERIALIZABLE - 796)) | (1L << (GEOMETRYCOLLECTION - 796)) | (1L << (GEOMETRY - 796)) | (1L << (LINESTRING - 796)) | (1L << (MULTILINESTRING - 796)) | (1L << (MULTIPOINT - 796)) | (1L << (MULTIPOLYGON - 796)) | (1L << (POINT - 796)) | (1L << (POLYGON - 796)) | (1L << (ABS - 796)) | (1L << (ACOS - 796)) | (1L << (ADDDATE - 796)) | (1L << (ADDTIME - 796)) | (1L << (AES_DECRYPT - 796)) | (1L << (AES_ENCRYPT - 796)) | (1L << (AREA - 796)) | (1L << (ASBINARY - 796)) | (1L << (ASIN - 796)) | (1L << (ASTEXT - 796)) | (1L << (ASWKB - 796)) | (1L << (ASWKT - 796)) | (1L << (ASYMMETRIC_DECRYPT - 796)) | (1L << (ASYMMETRIC_DERIVE - 796)) | (1L << (ASYMMETRIC_ENCRYPT - 796)) | (1L << (ASYMMETRIC_SIGN - 796)) | (1L << (ASYMMETRIC_VERIFY - 796)) | (1L << (ATAN - 796)) | (1L << (ATAN2 - 796)) | (1L << (BENCHMARK - 796)) | (1L << (BIN - 796)) | (1L << (BIT_COUNT - 796)) | (1L << (BIT_LENGTH - 796)) | (1L << (BUFFER - 796)) | (1L << (CATALOG_NAME - 796)) | (1L << (CEIL - 796)) | (1L << (CEILING - 796)) | (1L << (CENTROID - 796)) | (1L << (CHARACTER_LENGTH - 796)) | (1L << (CHARSET - 796)) | (1L << (CHAR_LENGTH - 796)) | (1L << (COERCIBILITY - 796)) | (1L << (COLLATION - 796)) | (1L << (COMPRESS - 796)) | (1L << (CONCAT - 796)) | (1L << (CONCAT_WS - 796)) | (1L << (CONNECTION_ID - 796)) | (1L << (CONV - 796)) | (1L << (CONVERT_TZ - 796)) | (1L << (COS - 796)))) != 0) || ((((_la - 860)) & ~0x3f) == 0 && ((1L << (_la - 860)) & ((1L << (COT - 860)) | (1L << (CRC32 - 860)) | (1L << (CREATE_ASYMMETRIC_PRIV_KEY - 860)) | (1L << (CREATE_ASYMMETRIC_PUB_KEY - 860)) | (1L << (CREATE_DH_PARAMETERS - 860)) | (1L << (CREATE_DIGEST - 860)) | (1L << (CROSSES - 860)) | (1L << (DATEDIFF - 860)) | (1L << (DATE_FORMAT - 860)) | (1L << (DAYNAME - 860)) | (1L << (DAYOFMONTH - 860)) | (1L << (DAYOFWEEK - 860)) | (1L << (DAYOFYEAR - 860)) | (1L << (DECODE - 860)) | (1L << (DEGREES - 860)) | (1L << (DES_DECRYPT - 860)) | (1L << (DES_ENCRYPT - 860)) | (1L << (DIMENSION - 860)) | (1L << (DISJOINT - 860)) | (1L << (ELT - 860)) | (1L << (ENCODE - 860)) | (1L << (ENCRYPT - 860)) | (1L << (ENDPOINT - 860)) | (1L << (ENGINE_ATTRIBUTE - 860)) | (1L << (ENVELOPE - 860)) | (1L << (EQUALS - 860)) | (1L << (EXP - 860)) | (1L << (EXPORT_SET - 860)) | (1L << (EXTERIORRING - 860)) | (1L << (EXTRACTVALUE - 860)) | (1L << (FIELD - 860)) | (1L << (FIND_IN_SET - 860)) | (1L << (FLOOR - 860)) | (1L << (FORMAT - 860)) | (1L << (FOUND_ROWS - 860)) | (1L << (FROM_BASE64 - 860)) | (1L << (FROM_DAYS - 860)) | (1L << (FROM_UNIXTIME - 860)) | (1L << (GEOMCOLLFROMTEXT - 860)) | (1L << (GEOMCOLLFROMWKB - 860)) | (1L << (GEOMETRYCOLLECTIONFROMTEXT - 860)) | (1L << (GEOMETRYCOLLECTIONFROMWKB - 860)) | (1L << (GEOMETRYFROMTEXT - 860)) | (1L << (GEOMETRYFROMWKB - 860)) | (1L << (GEOMETRYN - 860)) | (1L << (GEOMETRYTYPE - 860)) | (1L << (GEOMFROMTEXT - 860)) | (1L << (GEOMFROMWKB - 860)) | (1L << (GET_FORMAT - 860)) | (1L << (GET_LOCK - 860)) | (1L << (GLENGTH - 860)) | (1L << (GREATEST - 860)) | (1L << (GTID_SUBSET - 860)) | (1L << (GTID_SUBTRACT - 860)) | (1L << (HEX - 860)) | (1L << (IFNULL - 860)) | (1L << (INET6_ATON - 860)) | (1L << (INET6_NTOA - 860)) | (1L << (INET_ATON - 860)) | (1L << (INET_NTOA - 860)) | (1L << (INSTR - 860)) | (1L << (INTERIORRINGN - 860)) | (1L << (INTERSECTS - 860)) | (1L << (ISCLOSED - 860)))) != 0) || ((((_la - 924)) & ~0x3f) == 0 && ((1L << (_la - 924)) & ((1L << (ISEMPTY - 924)) | (1L << (ISNULL - 924)) | (1L << (ISSIMPLE - 924)) | (1L << (IS_FREE_LOCK - 924)) | (1L << (IS_IPV4 - 924)) | (1L << (IS_IPV4_COMPAT - 924)) | (1L << (IS_IPV4_MAPPED - 924)) | (1L << (IS_IPV6 - 924)) | (1L << (IS_USED_LOCK - 924)) | (1L << (LAST_INSERT_ID - 924)) | (1L << (LCASE - 924)) | (1L << (LEAST - 924)) | (1L << (LENGTH - 924)) | (1L << (LINEFROMTEXT - 924)) | (1L << (LINEFROMWKB - 924)) | (1L << (LINESTRINGFROMTEXT - 924)) | (1L << (LINESTRINGFROMWKB - 924)) | (1L << (LN - 924)) | (1L << (LOAD_FILE - 924)) | (1L << (LOCATE - 924)) | (1L << (LOG - 924)) | (1L << (LOG10 - 924)) | (1L << (LOG2 - 924)) | (1L << (LOWER - 924)) | (1L << (LPAD - 924)) | (1L << (LTRIM - 924)) | (1L << (MAKEDATE - 924)) | (1L << (MAKETIME - 924)) | (1L << (MAKE_SET - 924)) | (1L << (MASTER_POS_WAIT - 924)) | (1L << (MBRCONTAINS - 924)) | (1L << (MBRDISJOINT - 924)) | (1L << (MBREQUAL - 924)) | (1L << (MBRINTERSECTS - 924)) | (1L << (MBROVERLAPS - 924)) | (1L << (MBRTOUCHES - 924)) | (1L << (MBRWITHIN - 924)) | (1L << (MD5 - 924)) | (1L << (MLINEFROMTEXT - 924)) | (1L << (MLINEFROMWKB - 924)) | (1L << (MONTHNAME - 924)) | (1L << (MPOINTFROMTEXT - 924)) | (1L << (MPOINTFROMWKB - 924)) | (1L << (MPOLYFROMTEXT - 924)) | (1L << (MPOLYFROMWKB - 924)) | (1L << (MULTILINESTRINGFROMTEXT - 924)) | (1L << (MULTILINESTRINGFROMWKB - 924)) | (1L << (MULTIPOINTFROMTEXT - 924)) | (1L << (MULTIPOINTFROMWKB - 924)) | (1L << (MULTIPOLYGONFROMTEXT - 924)) | (1L << (MULTIPOLYGONFROMWKB - 924)) | (1L << (NAME_CONST - 924)) | (1L << (NULLIF - 924)) | (1L << (NUMGEOMETRIES - 924)) | (1L << (NUMINTERIORRINGS - 924)) | (1L << (NUMPOINTS - 924)) | (1L << (OCT - 924)) | (1L << (OCTET_LENGTH - 924)) | (1L << (ORD - 924)) | (1L << (OVERLAPS - 924)) | (1L << (PERIOD_ADD - 924)) | (1L << (PERIOD_DIFF - 924)) | (1L << (PI - 924)) | (1L << (POINTFROMTEXT - 924)))) != 0) || ((((_la - 988)) & ~0x3f) == 0 && ((1L << (_la - 988)) & ((1L << (POINTFROMWKB - 988)) | (1L << (POINTN - 988)) | (1L << (POLYFROMTEXT - 988)) | (1L << (POLYFROMWKB - 988)) | (1L << (POLYGONFROMTEXT - 988)) | (1L << (POLYGONFROMWKB - 988)) | (1L << (POW - 988)) | (1L << (POWER - 988)) | (1L << (QUOTE - 988)) | (1L << (RADIANS - 988)) | (1L << (RAND - 988)) | (1L << (RANDOM - 988)) | (1L << (RANDOM_BYTES - 988)) | (1L << (RELEASE_LOCK - 988)) | (1L << (REVERSE - 988)) | (1L << (ROUND - 988)) | (1L << (ROW_COUNT - 988)) | (1L << (RPAD - 988)) | (1L << (RTRIM - 988)) | (1L << (SEC_TO_TIME - 988)) | (1L << (SECONDARY_ENGINE_ATTRIBUTE - 988)) | (1L << (SENSITIVE_VARIABLES_OBSERVER - 988)) | (1L << (SESSION_USER - 988)) | (1L << (SHA - 988)) | (1L << (SHA1 - 988)) | (1L << (SHA2 - 988)) | (1L << (SCHEMA_NAME - 988)) | (1L << (SIGN - 988)) | (1L << (SIN - 988)) | (1L << (SLEEP - 988)) | (1L << (SOUNDEX - 988)) | (1L << (SQL_THREAD_WAIT_AFTER_GTIDS - 988)) | (1L << (SQRT - 988)) | (1L << (SRID - 988)) | (1L << (STARTPOINT - 988)) | (1L << (STRCMP - 988)) | (1L << (STR_TO_DATE - 988)) | (1L << (ST_AREA - 988)) | (1L << (ST_ASBINARY - 988)) | (1L << (ST_ASTEXT - 988)) | (1L << (ST_ASWKB - 988)) | (1L << (ST_ASWKT - 988)) | (1L << (ST_BUFFER - 988)) | (1L << (ST_CENTROID - 988)) | (1L << (ST_CONTAINS - 988)) | (1L << (ST_CROSSES - 988)) | (1L << (ST_DIFFERENCE - 988)) | (1L << (ST_DIMENSION - 988)) | (1L << (ST_DISJOINT - 988)) | (1L << (ST_DISTANCE - 988)) | (1L << (ST_ENDPOINT - 988)) | (1L << (ST_ENVELOPE - 988)) | (1L << (ST_EQUALS - 988)) | (1L << (ST_EXTERIORRING - 988)) | (1L << (ST_GEOMCOLLFROMTEXT - 988)) | (1L << (ST_GEOMCOLLFROMTXT - 988)) | (1L << (ST_GEOMCOLLFROMWKB - 988)) | (1L << (ST_GEOMETRYCOLLECTIONFROMTEXT - 988)) | (1L << (ST_GEOMETRYCOLLECTIONFROMWKB - 988)) | (1L << (ST_GEOMETRYFROMTEXT - 988)) | (1L << (ST_GEOMETRYFROMWKB - 988)) | (1L << (ST_GEOMETRYN - 988)) | (1L << (ST_GEOMETRYTYPE - 988)) | (1L << (ST_GEOMFROMTEXT - 988)))) != 0) || ((((_la - 1052)) & ~0x3f) == 0 && ((1L << (_la - 1052)) & ((1L << (ST_GEOMFROMWKB - 1052)) | (1L << (ST_INTERIORRINGN - 1052)) | (1L << (ST_INTERSECTION - 1052)) | (1L << (ST_INTERSECTS - 1052)) | (1L << (ST_ISCLOSED - 1052)) | (1L << (ST_ISEMPTY - 1052)) | (1L << (ST_ISSIMPLE - 1052)) | (1L << (ST_LINEFROMTEXT - 1052)) | (1L << (ST_LINEFROMWKB - 1052)) | (1L << (ST_LINESTRINGFROMTEXT - 1052)) | (1L << (ST_LINESTRINGFROMWKB - 1052)) | (1L << (ST_NUMGEOMETRIES - 1052)) | (1L << (ST_NUMINTERIORRING - 1052)) | (1L << (ST_NUMINTERIORRINGS - 1052)) | (1L << (ST_NUMPOINTS - 1052)) | (1L << (ST_OVERLAPS - 1052)) | (1L << (ST_POINTFROMTEXT - 1052)) | (1L << (ST_POINTFROMWKB - 1052)) | (1L << (ST_POINTN - 1052)) | (1L << (ST_POLYFROMTEXT - 1052)) | (1L << (ST_POLYFROMWKB - 1052)) | (1L << (ST_POLYGONFROMTEXT - 1052)) | (1L << (ST_POLYGONFROMWKB - 1052)) | (1L << (ST_SRID - 1052)) | (1L << (ST_STARTPOINT - 1052)) | (1L << (ST_SYMDIFFERENCE - 1052)) | (1L << (ST_TOUCHES - 1052)) | (1L << (ST_UNION - 1052)) | (1L << (ST_WITHIN - 1052)) | (1L << (ST_X - 1052)) | (1L << (ST_Y - 1052)) | (1L << (SUBDATE - 1052)) | (1L << (SUBSTRING_INDEX - 1052)) | (1L << (SUBTIME - 1052)) | (1L << (SYSTEM_USER - 1052)) | (1L << (SYSTEM - 1052)) | (1L << (TAN - 1052)) | (1L << (TELEMETRY_LOG_ADMIN - 1052)) | (1L << (TIMEDIFF - 1052)) | (1L << (TIMESTAMPADD - 1052)) | (1L << (TIMESTAMPDIFF - 1052)) | (1L << (TIME_FORMAT - 1052)) | (1L << (TIME_TO_SEC - 1052)) | (1L << (TOUCHES - 1052)) | (1L << (TO_BASE64 - 1052)) | (1L << (TO_DAYS - 1052)) | (1L << (TO_SECONDS - 1052)) | (1L << (TP_CONNECTION_ADMIN - 1052)) | (1L << (UCASE - 1052)) | (1L << (UNCOMPRESS - 1052)) | (1L << (UNCOMPRESSED_LENGTH - 1052)) | (1L << (UNHEX - 1052)) | (1L << (UNIX_TIMESTAMP - 1052)) | (1L << (UPDATEXML - 1052)) | (1L << (UPPER - 1052)) | (1L << (UUID - 1052)) | (1L << (UUID_SHORT - 1052)) | (1L << (VALIDATE_PASSWORD_STRENGTH - 1052)) | (1L << (VERSION - 1052)) | (1L << (VERSIONING - 1052)) | (1L << (WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS - 1052)) | (1L << (WEEKDAY - 1052)) | (1L << (WEEKOFYEAR - 1052)) | (1L << (WEIGHT_STRING - 1052)))) != 0) || ((((_la - 1116)) & ~0x3f) == 0 && ((1L << (_la - 1116)) & ((1L << (WITHIN - 1116)) | (1L << (YEARWEEK - 1116)) | (1L << (Y_FUNCTION - 1116)) | (1L << (X_FUNCTION - 1116)) | (1L << (VIA - 1116)) | (1L << (LASTVAL - 1116)) | (1L << (NEXTVAL - 1116)) | (1L << (SETVAL - 1116)) | (1L << (PREVIOUS - 1116)) | (1L << (PERSISTENT - 1116)) | (1L << (BINLOG_MONITOR - 1116)) | (1L << (BINLOG_REPLAY - 1116)) | (1L << (FEDERATED_ADMIN - 1116)) | (1L << (READ_ONLY_ADMIN - 1116)) | (1L << (REPLICA - 1116)) | (1L << (REPLICATION_MASTER_ADMIN - 1116)) | (1L << (MONITOR - 1116)) | (1L << (READ_ONLY - 1116)) | (1L << (REPLAY - 1116)) | (1L << (MOD - 1116)) | (1L << (CHARSET_REVERSE_QOUTE_STRING - 1116)) | (1L << (STRING_LITERAL - 1116)))) != 0) || _la==ID) {
						{
						setState(1868);
						((ForeignKeyTableConstraintContext)_localctx).name = uid();
						}
					}

					}
				}

				setState(1873);
				match(FOREIGN);
				setState(1874);
				match(KEY);
				setState(1876);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ARRAY) | (1L << ATTRIBUTE) | (1L << BUCKETS) | (1L << CONDITION) | (1L << CURRENT) | (1L << CURRENT_ROLE) | (1L << CURRENT_USER) | (1L << DATABASE) | (1L << DEFAULT) | (1L << DIAGNOSTICS) | (1L << EMPTY) | (1L << ENFORCED) | (1L << EXCEPT))) != 0) || ((((_la - 74)) & ~0x3f) == 0 && ((1L << (_la - 74)) & ((1L << (GROUP - 74)) | (1L << (GROUP_REPLICATION_STREAM - 74)) | (1L << (IF - 74)) | (1L << (IGNORED - 74)) | (1L << (INSERT - 74)) | (1L << (LATERAL - 74)) | (1L << (LEFT - 74)) | (1L << (LOCKED - 74)) | (1L << (MAXVALUE - 74)) | (1L << (MINVALUE - 74)) | (1L << (NUMBER - 74)) | (1L << (OPTIONAL - 74)) | (1L << (ORDER - 74)) | (1L << (PRIMARY - 74)))) != 0) || ((((_la - 142)) & ~0x3f) == 0 && ((1L << (_la - 142)) & ((1L << (REPEAT - 142)) | (1L << (REPLACE - 142)) | (1L << (RIGHT - 142)) | (1L << (SCHEMA - 142)) | (1L << (SKIP_ - 142)) | (1L << (SKIP_QUERY_REWRITE - 142)) | (1L << (STACKED - 142)) | (1L << (STATEMENT - 142)))) != 0) || ((((_la - 220)) & ~0x3f) == 0 && ((1L << (_la - 220)) & ((1L << (DATE - 220)) | (1L << (TIME - 220)) | (1L << (TIMESTAMP - 220)) | (1L << (DATETIME - 220)) | (1L << (YEAR - 220)) | (1L << (NATIONAL - 220)) | (1L << (BINARY - 220)) | (1L << (TEXT - 220)) | (1L << (ENUM - 220)) | (1L << (SERIAL - 220)) | (1L << (JSON_ARRAY - 220)) | (1L << (JSON_ARRAYAGG - 220)) | (1L << (JSON_ARRAY_APPEND - 220)) | (1L << (JSON_ARRAY_INSERT - 220)) | (1L << (JSON_CONTAINS - 220)) | (1L << (JSON_CONTAINS_PATH - 220)) | (1L << (JSON_DEPTH - 220)) | (1L << (JSON_EXTRACT - 220)) | (1L << (JSON_INSERT - 220)) | (1L << (JSON_KEYS - 220)) | (1L << (JSON_LENGTH - 220)) | (1L << (JSON_MERGE - 220)) | (1L << (JSON_MERGE_PATCH - 220)) | (1L << (JSON_MERGE_PRESERVE - 220)) | (1L << (JSON_OBJECT - 220)) | (1L << (JSON_OBJECTAGG - 220)) | (1L << (JSON_OVERLAPS - 220)) | (1L << (JSON_PRETTY - 220)) | (1L << (JSON_QUOTE - 220)) | (1L << (JSON_REMOVE - 220)) | (1L << (JSON_REPLACE - 220)) | (1L << (JSON_SCHEMA_VALID - 220)) | (1L << (JSON_SCHEMA_VALIDATION_REPORT - 220)) | (1L << (JSON_SEARCH - 220)) | (1L << (JSON_SET - 220)) | (1L << (JSON_STORAGE_FREE - 220)) | (1L << (JSON_STORAGE_SIZE - 220)) | (1L << (JSON_TABLE - 220)) | (1L << (JSON_TYPE - 220)) | (1L << (JSON_UNQUOTE - 220)))) != 0) || ((((_la - 284)) & ~0x3f) == 0 && ((1L << (_la - 284)) & ((1L << (JSON_VALID - 284)) | (1L << (JSON_VALUE - 284)) | (1L << (NESTED - 284)) | (1L << (ORDINALITY - 284)) | (1L << (PATH - 284)) | (1L << (AVG - 284)) | (1L << (BIT_AND - 284)) | (1L << (BIT_OR - 284)) | (1L << (BIT_XOR - 284)) | (1L << (COUNT - 284)) | (1L << (CUME_DIST - 284)) | (1L << (DENSE_RANK - 284)) | (1L << (FIRST_VALUE - 284)) | (1L << (GROUP_CONCAT - 284)) | (1L << (LAG - 284)) | (1L << (LAST_VALUE - 284)) | (1L << (LEAD - 284)) | (1L << (MAX - 284)) | (1L << (MIN - 284)) | (1L << (NTILE - 284)) | (1L << (NTH_VALUE - 284)) | (1L << (PERCENT_RANK - 284)) | (1L << (RANK - 284)) | (1L << (ROW_NUMBER - 284)) | (1L << (STD - 284)) | (1L << (STDDEV - 284)) | (1L << (STDDEV_POP - 284)) | (1L << (STDDEV_SAMP - 284)) | (1L << (SUM - 284)) | (1L << (VAR_POP - 284)) | (1L << (VAR_SAMP - 284)) | (1L << (VARIANCE - 284)) | (1L << (CURRENT_DATE - 284)) | (1L << (CURRENT_TIME - 284)) | (1L << (CURRENT_TIMESTAMP - 284)) | (1L << (LOCALTIME - 284)) | (1L << (CURDATE - 284)) | (1L << (CURTIME - 284)) | (1L << (DATE_ADD - 284)) | (1L << (DATE_SUB - 284)) | (1L << (LOCALTIMESTAMP - 284)) | (1L << (NOW - 284)) | (1L << (POSITION - 284)) | (1L << (SUBSTR - 284)) | (1L << (SUBSTRING - 284)) | (1L << (SYSDATE - 284)) | (1L << (TRIM - 284)) | (1L << (UTC_DATE - 284)) | (1L << (UTC_TIME - 284)) | (1L << (UTC_TIMESTAMP - 284)) | (1L << (ACCOUNT - 284)) | (1L << (ACTION - 284)) | (1L << (AFTER - 284)) | (1L << (AGGREGATE - 284)) | (1L << (ALGORITHM - 284)) | (1L << (ANY - 284)) | (1L << (AT - 284)) | (1L << (AUTHORS - 284)) | (1L << (AUTOCOMMIT - 284)) | (1L << (AUTOEXTEND_SIZE - 284)) | (1L << (AUTO_INCREMENT - 284)) | (1L << (AVG_ROW_LENGTH - 284)) | (1L << (BEGIN - 284)))) != 0) || ((((_la - 348)) & ~0x3f) == 0 && ((1L << (_la - 348)) & ((1L << (BINLOG - 348)) | (1L << (BIT - 348)) | (1L << (BLOCK - 348)) | (1L << (BOOL - 348)) | (1L << (BOOLEAN - 348)) | (1L << (BTREE - 348)) | (1L << (CACHE - 348)) | (1L << (CASCADED - 348)) | (1L << (CHAIN - 348)) | (1L << (CHANGED - 348)) | (1L << (CHANNEL - 348)) | (1L << (CHECKSUM - 348)) | (1L << (PAGE_CHECKSUM - 348)) | (1L << (CIPHER - 348)) | (1L << (CLASS_ORIGIN - 348)) | (1L << (CLIENT - 348)) | (1L << (CLOSE - 348)) | (1L << (CLUSTERING - 348)) | (1L << (COALESCE - 348)) | (1L << (CODE - 348)) | (1L << (COLUMNS - 348)) | (1L << (COLUMN_FORMAT - 348)) | (1L << (COLUMN_NAME - 348)) | (1L << (COMMENT - 348)) | (1L << (COMMIT - 348)) | (1L << (COMPACT - 348)) | (1L << (COMPLETION - 348)) | (1L << (COMPRESSED - 348)) | (1L << (COMPRESSION - 348)) | (1L << (CONCURRENT - 348)) | (1L << (CONNECT - 348)) | (1L << (CONNECTION - 348)) | (1L << (CONSISTENT - 348)) | (1L << (CONSTRAINT_CATALOG - 348)) | (1L << (CONSTRAINT_SCHEMA - 348)) | (1L << (CONSTRAINT_NAME - 348)) | (1L << (CONTAINS - 348)) | (1L << (CONTEXT - 348)) | (1L << (CONTRIBUTORS - 348)) | (1L << (COPY - 348)) | (1L << (CPU - 348)) | (1L << (CYCLE - 348)) | (1L << (CURSOR_NAME - 348)) | (1L << (DATA - 348)) | (1L << (DATAFILE - 348)) | (1L << (DEALLOCATE - 348)) | (1L << (DEFAULT_AUTH - 348)) | (1L << (DEFINER - 348)) | (1L << (DELAY_KEY_WRITE - 348)) | (1L << (DES_KEY_FILE - 348)) | (1L << (DIRECTORY - 348)) | (1L << (DISABLE - 348)) | (1L << (DISCARD - 348)) | (1L << (DISK - 348)) | (1L << (DO - 348)) | (1L << (DUMPFILE - 348)) | (1L << (DUPLICATE - 348)) | (1L << (DYNAMIC - 348)) | (1L << (ENABLE - 348)) | (1L << (ENCRYPTED - 348)) | (1L << (ENCRYPTION - 348)) | (1L << (ENCRYPTION_KEY_ID - 348)) | (1L << (END - 348)) | (1L << (ENDS - 348)))) != 0) || ((((_la - 412)) & ~0x3f) == 0 && ((1L << (_la - 412)) & ((1L << (ENGINE - 412)) | (1L << (ENGINES - 412)) | (1L << (ERROR - 412)) | (1L << (ERRORS - 412)) | (1L << (ESCAPE - 412)) | (1L << (EVEN - 412)) | (1L << (EVENT - 412)) | (1L << (EVENTS - 412)) | (1L << (EVERY - 412)) | (1L << (EXCHANGE - 412)) | (1L << (EXCLUSIVE - 412)) | (1L << (EXPIRE - 412)) | (1L << (EXPORT - 412)) | (1L << (EXTENDED - 412)) | (1L << (EXTENT_SIZE - 412)) | (1L << (FAILED_LOGIN_ATTEMPTS - 412)) | (1L << (FAST - 412)) | (1L << (FAULTS - 412)) | (1L << (FIELDS - 412)) | (1L << (FILE_BLOCK_SIZE - 412)) | (1L << (FILTER - 412)) | (1L << (FIRST - 412)) | (1L << (FIXED - 412)) | (1L << (FLUSH - 412)) | (1L << (FOLLOWS - 412)) | (1L << (FOUND - 412)) | (1L << (FULL - 412)) | (1L << (FUNCTION - 412)) | (1L << (GENERAL - 412)) | (1L << (GLOBAL - 412)) | (1L << (GRANTS - 412)) | (1L << (GROUP_REPLICATION - 412)) | (1L << (HANDLER - 412)) | (1L << (HASH - 412)) | (1L << (HELP - 412)) | (1L << (HISTORY - 412)) | (1L << (HOST - 412)) | (1L << (HOSTS - 412)) | (1L << (IDENTIFIED - 412)) | (1L << (IGNORE_SERVER_IDS - 412)) | (1L << (IMPORT - 412)) | (1L << (INCREMENT - 412)) | (1L << (INDEXES - 412)) | (1L << (INITIAL_SIZE - 412)) | (1L << (INPLACE - 412)) | (1L << (INSERT_METHOD - 412)) | (1L << (INSTALL - 412)) | (1L << (INSTANCE - 412)) | (1L << (INSTANT - 412)) | (1L << (INVISIBLE - 412)) | (1L << (INVOKER - 412)) | (1L << (IO - 412)) | (1L << (IO_THREAD - 412)) | (1L << (IPC - 412)) | (1L << (ISOLATION - 412)) | (1L << (ISSUER - 412)) | (1L << (JSON - 412)) | (1L << (KEY_BLOCK_SIZE - 412)) | (1L << (LANGUAGE - 412)) | (1L << (LAST - 412)) | (1L << (LEAVES - 412)) | (1L << (LESS - 412)) | (1L << (LEVEL - 412)))) != 0) || ((((_la - 476)) & ~0x3f) == 0 && ((1L << (_la - 476)) & ((1L << (LIST - 476)) | (1L << (LOCAL - 476)) | (1L << (LOGFILE - 476)) | (1L << (LOGS - 476)) | (1L << (MASTER - 476)) | (1L << (MASTER_AUTO_POSITION - 476)) | (1L << (MASTER_CONNECT_RETRY - 476)) | (1L << (MASTER_DELAY - 476)) | (1L << (MASTER_HEARTBEAT_PERIOD - 476)) | (1L << (MASTER_HOST - 476)) | (1L << (MASTER_LOG_FILE - 476)) | (1L << (MASTER_LOG_POS - 476)) | (1L << (MASTER_PASSWORD - 476)) | (1L << (MASTER_PORT - 476)) | (1L << (MASTER_RETRY_COUNT - 476)) | (1L << (MASTER_SSL - 476)) | (1L << (MASTER_SSL_CA - 476)) | (1L << (MASTER_SSL_CAPATH - 476)) | (1L << (MASTER_SSL_CERT - 476)) | (1L << (MASTER_SSL_CIPHER - 476)) | (1L << (MASTER_SSL_CRL - 476)) | (1L << (MASTER_SSL_CRLPATH - 476)) | (1L << (MASTER_SSL_KEY - 476)) | (1L << (MASTER_TLS_VERSION - 476)) | (1L << (MASTER_USER - 476)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 476)) | (1L << (MAX_QUERIES_PER_HOUR - 476)) | (1L << (MAX_ROWS - 476)) | (1L << (MAX_SIZE - 476)) | (1L << (MAX_UPDATES_PER_HOUR - 476)) | (1L << (MAX_USER_CONNECTIONS - 476)) | (1L << (MEDIUM - 476)) | (1L << (MEMBER - 476)) | (1L << (MERGE - 476)) | (1L << (MESSAGE_TEXT - 476)) | (1L << (MID - 476)) | (1L << (MIGRATE - 476)) | (1L << (MIN_ROWS - 476)) | (1L << (MODE - 476)) | (1L << (MODIFY - 476)) | (1L << (MUTEX - 476)) | (1L << (MYSQL - 476)) | (1L << (MYSQL_ERRNO - 476)) | (1L << (NAME - 476)) | (1L << (NAMES - 476)) | (1L << (NCHAR - 476)) | (1L << (NEVER - 476)) | (1L << (NEXT - 476)) | (1L << (NO - 476)) | (1L << (NOCACHE - 476)) | (1L << (NOCOPY - 476)) | (1L << (NOCYCLE - 476)) | (1L << (NOMAXVALUE - 476)) | (1L << (NOMINVALUE - 476)) | (1L << (NOWAIT - 476)) | (1L << (NODEGROUP - 476)) | (1L << (NONE - 476)) | (1L << (ODBC - 476)) | (1L << (OFFLINE - 476)) | (1L << (OFFSET - 476)) | (1L << (OF - 476)) | (1L << (OJ - 476)) | (1L << (OLD_PASSWORD - 476)) | (1L << (ONE - 476)))) != 0) || ((((_la - 540)) & ~0x3f) == 0 && ((1L << (_la - 540)) & ((1L << (ONLINE - 540)) | (1L << (ONLY - 540)) | (1L << (OPEN - 540)) | (1L << (OPTIMIZER_COSTS - 540)) | (1L << (OPTIONS - 540)) | (1L << (OWNER - 540)) | (1L << (PACK_KEYS - 540)) | (1L << (PAGE - 540)) | (1L << (PARSER - 540)) | (1L << (PARTIAL - 540)) | (1L << (PARTITIONING - 540)) | (1L << (PARTITIONS - 540)) | (1L << (PASSWORD - 540)) | (1L << (PASSWORD_LOCK_TIME - 540)) | (1L << (PHASE - 540)) | (1L << (PLUGIN - 540)) | (1L << (PLUGIN_DIR - 540)) | (1L << (PLUGINS - 540)) | (1L << (PORT - 540)) | (1L << (PRECEDES - 540)) | (1L << (PREPARE - 540)) | (1L << (PRESERVE - 540)) | (1L << (PREV - 540)) | (1L << (PROCESSLIST - 540)) | (1L << (PROFILE - 540)) | (1L << (PROFILES - 540)) | (1L << (PROXY - 540)) | (1L << (QUERY - 540)) | (1L << (QUICK - 540)) | (1L << (REBUILD - 540)) | (1L << (RECOVER - 540)) | (1L << (RECURSIVE - 540)) | (1L << (REDO_BUFFER_SIZE - 540)) | (1L << (REDUNDANT - 540)) | (1L << (RELAY - 540)) | (1L << (RELAY_LOG_FILE - 540)) | (1L << (RELAY_LOG_POS - 540)) | (1L << (RELAYLOG - 540)) | (1L << (REMOVE - 540)) | (1L << (REORGANIZE - 540)) | (1L << (REPAIR - 540)) | (1L << (REPLICATE_DO_DB - 540)) | (1L << (REPLICATE_DO_TABLE - 540)) | (1L << (REPLICATE_IGNORE_DB - 540)) | (1L << (REPLICATE_IGNORE_TABLE - 540)) | (1L << (REPLICATE_REWRITE_DB - 540)) | (1L << (REPLICATE_WILD_DO_TABLE - 540)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 540)) | (1L << (REPLICATION - 540)) | (1L << (RESET - 540)) | (1L << (RESTART - 540)) | (1L << (RESUME - 540)) | (1L << (RETURNED_SQLSTATE - 540)) | (1L << (RETURNING - 540)) | (1L << (RETURNS - 540)) | (1L << (REUSE - 540)) | (1L << (ROLE - 540)) | (1L << (ROLLBACK - 540)) | (1L << (ROLLUP - 540)) | (1L << (ROTATE - 540)) | (1L << (ROW - 540)))) != 0) || ((((_la - 604)) & ~0x3f) == 0 && ((1L << (_la - 604)) & ((1L << (ROWS - 604)) | (1L << (ROW_FORMAT - 604)) | (1L << (RTREE - 604)) | (1L << (SAVEPOINT - 604)) | (1L << (SCHEDULE - 604)) | (1L << (SECURITY - 604)) | (1L << (SEQUENCE - 604)) | (1L << (SERVER - 604)) | (1L << (SESSION - 604)) | (1L << (SHARE - 604)) | (1L << (SHARED - 604)) | (1L << (SIGNED - 604)) | (1L << (SIMPLE - 604)) | (1L << (SLAVE - 604)) | (1L << (SLOW - 604)) | (1L << (SNAPSHOT - 604)) | (1L << (SOCKET - 604)) | (1L << (SOME - 604)) | (1L << (SONAME - 604)) | (1L << (SOUNDS - 604)) | (1L << (SOURCE - 604)) | (1L << (SQL_AFTER_GTIDS - 604)) | (1L << (SQL_AFTER_MTS_GAPS - 604)) | (1L << (SQL_BEFORE_GTIDS - 604)) | (1L << (SQL_BUFFER_RESULT - 604)) | (1L << (SQL_CACHE - 604)) | (1L << (SQL_NO_CACHE - 604)) | (1L << (SQL_THREAD - 604)) | (1L << (START - 604)) | (1L << (STARTS - 604)) | (1L << (STATS_AUTO_RECALC - 604)) | (1L << (STATS_PERSISTENT - 604)) | (1L << (STATS_SAMPLE_PAGES - 604)) | (1L << (STATUS - 604)) | (1L << (STOP - 604)) | (1L << (STORAGE - 604)) | (1L << (STRING - 604)) | (1L << (SUBCLASS_ORIGIN - 604)) | (1L << (SUBJECT - 604)) | (1L << (SUBPARTITION - 604)) | (1L << (SUBPARTITIONS - 604)) | (1L << (SUSPEND - 604)) | (1L << (SWAPS - 604)) | (1L << (SWITCHES - 604)) | (1L << (TABLE_NAME - 604)) | (1L << (TABLESPACE - 604)) | (1L << (TABLE_TYPE - 604)) | (1L << (TEMPORARY - 604)) | (1L << (TEMPTABLE - 604)) | (1L << (THAN - 604)) | (1L << (TRADITIONAL - 604)) | (1L << (TRANSACTION - 604)) | (1L << (TRANSACTIONAL - 604)) | (1L << (TRIGGERS - 604)) | (1L << (TRUNCATE - 604)) | (1L << (UNBOUNDED - 604)) | (1L << (UNDEFINED - 604)) | (1L << (UNDOFILE - 604)) | (1L << (UNDO_BUFFER_SIZE - 604)) | (1L << (UNINSTALL - 604)) | (1L << (UNKNOWN - 604)) | (1L << (UNTIL - 604)) | (1L << (UPGRADE - 604)))) != 0) || ((((_la - 668)) & ~0x3f) == 0 && ((1L << (_la - 668)) & ((1L << (USER - 668)) | (1L << (USE_FRM - 668)) | (1L << (USER_RESOURCES - 668)) | (1L << (VALIDATION - 668)) | (1L << (VALUE - 668)) | (1L << (VARIABLES - 668)) | (1L << (VIEW - 668)) | (1L << (VIRTUAL - 668)) | (1L << (VISIBLE - 668)) | (1L << (WAIT - 668)) | (1L << (WARNINGS - 668)) | (1L << (WITHOUT - 668)) | (1L << (WORK - 668)) | (1L << (WRAPPER - 668)) | (1L << (X509 - 668)) | (1L << (XA - 668)) | (1L << (XML - 668)) | (1L << (YES - 668)) | (1L << (EUR - 668)) | (1L << (USA - 668)) | (1L << (JIS - 668)) | (1L << (ISO - 668)) | (1L << (INTERNAL - 668)) | (1L << (QUARTER - 668)) | (1L << (MONTH - 668)) | (1L << (DAY - 668)) | (1L << (HOUR - 668)) | (1L << (MINUTE - 668)) | (1L << (WEEK - 668)) | (1L << (SECOND - 668)) | (1L << (MICROSECOND - 668)) | (1L << (USER_STATISTICS - 668)) | (1L << (CLIENT_STATISTICS - 668)) | (1L << (INDEX_STATISTICS - 668)) | (1L << (TABLE_STATISTICS - 668)) | (1L << (FIREWALL_RULES - 668)) | (1L << (ADMIN - 668)) | (1L << (APPLICATION_PASSWORD_ADMIN - 668)) | (1L << (AUDIT_ADMIN - 668)) | (1L << (AUDIT_ABORT_EXEMPT - 668)) | (1L << (AUTHENTICATION_POLICY_ADMIN - 668)) | (1L << (BACKUP_ADMIN - 668)) | (1L << (BINLOG_ADMIN - 668)) | (1L << (BINLOG_ENCRYPTION_ADMIN - 668)) | (1L << (CLONE_ADMIN - 668)) | (1L << (CONNECTION_ADMIN - 668)) | (1L << (ENCRYPTION_KEY_ADMIN - 668)) | (1L << (EXECUTE - 668)) | (1L << (FILE - 668)) | (1L << (FIREWALL_ADMIN - 668)) | (1L << (FIREWALL_EXEMPT - 668)) | (1L << (FIREWALL_USER - 668)) | (1L << (FLUSH_OPTIMIZER_COSTS - 668)) | (1L << (FLUSH_STATUS - 668)) | (1L << (FLUSH_TABLES - 668)) | (1L << (FLUSH_USER_RESOURCES - 668)) | (1L << (GROUP_REPLICATION_ADMIN - 668)) | (1L << (INNODB_REDO_LOG_ARCHIVE - 668)) | (1L << (INNODB_REDO_LOG_ENABLE - 668)) | (1L << (INVOKE - 668)) | (1L << (LAMBDA - 668)) | (1L << (NDB_STORED_USER - 668)) | (1L << (PASSWORDLESS_USER_ADMIN - 668)))) != 0) || ((((_la - 732)) & ~0x3f) == 0 && ((1L << (_la - 732)) & ((1L << (PERSIST_RO_VARIABLES_ADMIN - 732)) | (1L << (PRIVILEGES - 732)) | (1L << (PROCESS - 732)) | (1L << (RELOAD - 732)) | (1L << (REPLICATION_APPLIER - 732)) | (1L << (REPLICATION_SLAVE_ADMIN - 732)) | (1L << (RESOURCE_GROUP_ADMIN - 732)) | (1L << (RESOURCE_GROUP_USER - 732)) | (1L << (ROLE_ADMIN - 732)) | (1L << (ROUTINE - 732)) | (1L << (S3 - 732)) | (1L << (SESSION_VARIABLES_ADMIN - 732)) | (1L << (SET_USER_ID - 732)) | (1L << (SHOW_ROUTINE - 732)) | (1L << (SHUTDOWN - 732)) | (1L << (SUPER - 732)) | (1L << (SYSTEM_VARIABLES_ADMIN - 732)) | (1L << (TABLES - 732)) | (1L << (TABLE_ENCRYPTION_ADMIN - 732)) | (1L << (VERSION_TOKEN_ADMIN - 732)) | (1L << (XA_RECOVER_ADMIN - 732)) | (1L << (ARMSCII8 - 732)) | (1L << (ASCII - 732)) | (1L << (BIG5 - 732)) | (1L << (CP1250 - 732)) | (1L << (CP1251 - 732)) | (1L << (CP1256 - 732)) | (1L << (CP1257 - 732)) | (1L << (CP850 - 732)) | (1L << (CP852 - 732)) | (1L << (CP866 - 732)) | (1L << (CP932 - 732)) | (1L << (DEC8 - 732)) | (1L << (EUCJPMS - 732)) | (1L << (EUCKR - 732)) | (1L << (GB18030 - 732)) | (1L << (GB2312 - 732)) | (1L << (GBK - 732)) | (1L << (GEOSTD8 - 732)) | (1L << (GREEK - 732)) | (1L << (HEBREW - 732)) | (1L << (HP8 - 732)) | (1L << (KEYBCS2 - 732)) | (1L << (KOI8R - 732)) | (1L << (KOI8U - 732)) | (1L << (LATIN1 - 732)) | (1L << (LATIN2 - 732)) | (1L << (LATIN5 - 732)) | (1L << (LATIN7 - 732)) | (1L << (MACCE - 732)) | (1L << (MACROMAN - 732)) | (1L << (SJIS - 732)) | (1L << (SWE7 - 732)) | (1L << (TIS620 - 732)) | (1L << (UCS2 - 732)) | (1L << (UJIS - 732)) | (1L << (UTF16 - 732)) | (1L << (UTF16LE - 732)) | (1L << (UTF32 - 732)) | (1L << (UTF8 - 732)) | (1L << (UTF8MB3 - 732)) | (1L << (UTF8MB4 - 732)) | (1L << (ARCHIVE - 732)))) != 0) || ((((_la - 796)) & ~0x3f) == 0 && ((1L << (_la - 796)) & ((1L << (BLACKHOLE - 796)) | (1L << (CSV - 796)) | (1L << (FEDERATED - 796)) | (1L << (INNODB - 796)) | (1L << (MEMORY - 796)) | (1L << (MRG_MYISAM - 796)) | (1L << (MYISAM - 796)) | (1L << (NDB - 796)) | (1L << (NDBCLUSTER - 796)) | (1L << (PERFORMANCE_SCHEMA - 796)) | (1L << (TOKUDB - 796)) | (1L << (REPEATABLE - 796)) | (1L << (COMMITTED - 796)) | (1L << (UNCOMMITTED - 796)) | (1L << (SERIALIZABLE - 796)) | (1L << (GEOMETRYCOLLECTION - 796)) | (1L << (GEOMETRY - 796)) | (1L << (LINESTRING - 796)) | (1L << (MULTILINESTRING - 796)) | (1L << (MULTIPOINT - 796)) | (1L << (MULTIPOLYGON - 796)) | (1L << (POINT - 796)) | (1L << (POLYGON - 796)) | (1L << (ABS - 796)) | (1L << (ACOS - 796)) | (1L << (ADDDATE - 796)) | (1L << (ADDTIME - 796)) | (1L << (AES_DECRYPT - 796)) | (1L << (AES_ENCRYPT - 796)) | (1L << (AREA - 796)) | (1L << (ASBINARY - 796)) | (1L << (ASIN - 796)) | (1L << (ASTEXT - 796)) | (1L << (ASWKB - 796)) | (1L << (ASWKT - 796)) | (1L << (ASYMMETRIC_DECRYPT - 796)) | (1L << (ASYMMETRIC_DERIVE - 796)) | (1L << (ASYMMETRIC_ENCRYPT - 796)) | (1L << (ASYMMETRIC_SIGN - 796)) | (1L << (ASYMMETRIC_VERIFY - 796)) | (1L << (ATAN - 796)) | (1L << (ATAN2 - 796)) | (1L << (BENCHMARK - 796)) | (1L << (BIN - 796)) | (1L << (BIT_COUNT - 796)) | (1L << (BIT_LENGTH - 796)) | (1L << (BUFFER - 796)) | (1L << (CATALOG_NAME - 796)) | (1L << (CEIL - 796)) | (1L << (CEILING - 796)) | (1L << (CENTROID - 796)) | (1L << (CHARACTER_LENGTH - 796)) | (1L << (CHARSET - 796)) | (1L << (CHAR_LENGTH - 796)) | (1L << (COERCIBILITY - 796)) | (1L << (COLLATION - 796)) | (1L << (COMPRESS - 796)) | (1L << (CONCAT - 796)) | (1L << (CONCAT_WS - 796)) | (1L << (CONNECTION_ID - 796)) | (1L << (CONV - 796)) | (1L << (CONVERT_TZ - 796)) | (1L << (COS - 796)))) != 0) || ((((_la - 860)) & ~0x3f) == 0 && ((1L << (_la - 860)) & ((1L << (COT - 860)) | (1L << (CRC32 - 860)) | (1L << (CREATE_ASYMMETRIC_PRIV_KEY - 860)) | (1L << (CREATE_ASYMMETRIC_PUB_KEY - 860)) | (1L << (CREATE_DH_PARAMETERS - 860)) | (1L << (CREATE_DIGEST - 860)) | (1L << (CROSSES - 860)) | (1L << (DATEDIFF - 860)) | (1L << (DATE_FORMAT - 860)) | (1L << (DAYNAME - 860)) | (1L << (DAYOFMONTH - 860)) | (1L << (DAYOFWEEK - 860)) | (1L << (DAYOFYEAR - 860)) | (1L << (DECODE - 860)) | (1L << (DEGREES - 860)) | (1L << (DES_DECRYPT - 860)) | (1L << (DES_ENCRYPT - 860)) | (1L << (DIMENSION - 860)) | (1L << (DISJOINT - 860)) | (1L << (ELT - 860)) | (1L << (ENCODE - 860)) | (1L << (ENCRYPT - 860)) | (1L << (ENDPOINT - 860)) | (1L << (ENGINE_ATTRIBUTE - 860)) | (1L << (ENVELOPE - 860)) | (1L << (EQUALS - 860)) | (1L << (EXP - 860)) | (1L << (EXPORT_SET - 860)) | (1L << (EXTERIORRING - 860)) | (1L << (EXTRACTVALUE - 860)) | (1L << (FIELD - 860)) | (1L << (FIND_IN_SET - 860)) | (1L << (FLOOR - 860)) | (1L << (FORMAT - 860)) | (1L << (FOUND_ROWS - 860)) | (1L << (FROM_BASE64 - 860)) | (1L << (FROM_DAYS - 860)) | (1L << (FROM_UNIXTIME - 860)) | (1L << (GEOMCOLLFROMTEXT - 860)) | (1L << (GEOMCOLLFROMWKB - 860)) | (1L << (GEOMETRYCOLLECTIONFROMTEXT - 860)) | (1L << (GEOMETRYCOLLECTIONFROMWKB - 860)) | (1L << (GEOMETRYFROMTEXT - 860)) | (1L << (GEOMETRYFROMWKB - 860)) | (1L << (GEOMETRYN - 860)) | (1L << (GEOMETRYTYPE - 860)) | (1L << (GEOMFROMTEXT - 860)) | (1L << (GEOMFROMWKB - 860)) | (1L << (GET_FORMAT - 860)) | (1L << (GET_LOCK - 860)) | (1L << (GLENGTH - 860)) | (1L << (GREATEST - 860)) | (1L << (GTID_SUBSET - 860)) | (1L << (GTID_SUBTRACT - 860)) | (1L << (HEX - 860)) | (1L << (IFNULL - 860)) | (1L << (INET6_ATON - 860)) | (1L << (INET6_NTOA - 860)) | (1L << (INET_ATON - 860)) | (1L << (INET_NTOA - 860)) | (1L << (INSTR - 860)) | (1L << (INTERIORRINGN - 860)) | (1L << (INTERSECTS - 860)) | (1L << (ISCLOSED - 860)))) != 0) || ((((_la - 924)) & ~0x3f) == 0 && ((1L << (_la - 924)) & ((1L << (ISEMPTY - 924)) | (1L << (ISNULL - 924)) | (1L << (ISSIMPLE - 924)) | (1L << (IS_FREE_LOCK - 924)) | (1L << (IS_IPV4 - 924)) | (1L << (IS_IPV4_COMPAT - 924)) | (1L << (IS_IPV4_MAPPED - 924)) | (1L << (IS_IPV6 - 924)) | (1L << (IS_USED_LOCK - 924)) | (1L << (LAST_INSERT_ID - 924)) | (1L << (LCASE - 924)) | (1L << (LEAST - 924)) | (1L << (LENGTH - 924)) | (1L << (LINEFROMTEXT - 924)) | (1L << (LINEFROMWKB - 924)) | (1L << (LINESTRINGFROMTEXT - 924)) | (1L << (LINESTRINGFROMWKB - 924)) | (1L << (LN - 924)) | (1L << (LOAD_FILE - 924)) | (1L << (LOCATE - 924)) | (1L << (LOG - 924)) | (1L << (LOG10 - 924)) | (1L << (LOG2 - 924)) | (1L << (LOWER - 924)) | (1L << (LPAD - 924)) | (1L << (LTRIM - 924)) | (1L << (MAKEDATE - 924)) | (1L << (MAKETIME - 924)) | (1L << (MAKE_SET - 924)) | (1L << (MASTER_POS_WAIT - 924)) | (1L << (MBRCONTAINS - 924)) | (1L << (MBRDISJOINT - 924)) | (1L << (MBREQUAL - 924)) | (1L << (MBRINTERSECTS - 924)) | (1L << (MBROVERLAPS - 924)) | (1L << (MBRTOUCHES - 924)) | (1L << (MBRWITHIN - 924)) | (1L << (MD5 - 924)) | (1L << (MLINEFROMTEXT - 924)) | (1L << (MLINEFROMWKB - 924)) | (1L << (MONTHNAME - 924)) | (1L << (MPOINTFROMTEXT - 924)) | (1L << (MPOINTFROMWKB - 924)) | (1L << (MPOLYFROMTEXT - 924)) | (1L << (MPOLYFROMWKB - 924)) | (1L << (MULTILINESTRINGFROMTEXT - 924)) | (1L << (MULTILINESTRINGFROMWKB - 924)) | (1L << (MULTIPOINTFROMTEXT - 924)) | (1L << (MULTIPOINTFROMWKB - 924)) | (1L << (MULTIPOLYGONFROMTEXT - 924)) | (1L << (MULTIPOLYGONFROMWKB - 924)) | (1L << (NAME_CONST - 924)) | (1L << (NULLIF - 924)) | (1L << (NUMGEOMETRIES - 924)) | (1L << (NUMINTERIORRINGS - 924)) | (1L << (NUMPOINTS - 924)) | (1L << (OCT - 924)) | (1L << (OCTET_LENGTH - 924)) | (1L << (ORD - 924)) | (1L << (OVERLAPS - 924)) | (1L << (PERIOD_ADD - 924)) | (1L << (PERIOD_DIFF - 924)) | (1L << (PI - 924)) | (1L << (POINTFROMTEXT - 924)))) != 0) || ((((_la - 988)) & ~0x3f) == 0 && ((1L << (_la - 988)) & ((1L << (POINTFROMWKB - 988)) | (1L << (POINTN - 988)) | (1L << (POLYFROMTEXT - 988)) | (1L << (POLYFROMWKB - 988)) | (1L << (POLYGONFROMTEXT - 988)) | (1L << (POLYGONFROMWKB - 988)) | (1L << (POW - 988)) | (1L << (POWER - 988)) | (1L << (QUOTE - 988)) | (1L << (RADIANS - 988)) | (1L << (RAND - 988)) | (1L << (RANDOM - 988)) | (1L << (RANDOM_BYTES - 988)) | (1L << (RELEASE_LOCK - 988)) | (1L << (REVERSE - 988)) | (1L << (ROUND - 988)) | (1L << (ROW_COUNT - 988)) | (1L << (RPAD - 988)) | (1L << (RTRIM - 988)) | (1L << (SEC_TO_TIME - 988)) | (1L << (SECONDARY_ENGINE_ATTRIBUTE - 988)) | (1L << (SENSITIVE_VARIABLES_OBSERVER - 988)) | (1L << (SESSION_USER - 988)) | (1L << (SHA - 988)) | (1L << (SHA1 - 988)) | (1L << (SHA2 - 988)) | (1L << (SCHEMA_NAME - 988)) | (1L << (SIGN - 988)) | (1L << (SIN - 988)) | (1L << (SLEEP - 988)) | (1L << (SOUNDEX - 988)) | (1L << (SQL_THREAD_WAIT_AFTER_GTIDS - 988)) | (1L << (SQRT - 988)) | (1L << (SRID - 988)) | (1L << (STARTPOINT - 988)) | (1L << (STRCMP - 988)) | (1L << (STR_TO_DATE - 988)) | (1L << (ST_AREA - 988)) | (1L << (ST_ASBINARY - 988)) | (1L << (ST_ASTEXT - 988)) | (1L << (ST_ASWKB - 988)) | (1L << (ST_ASWKT - 988)) | (1L << (ST_BUFFER - 988)) | (1L << (ST_CENTROID - 988)) | (1L << (ST_CONTAINS - 988)) | (1L << (ST_CROSSES - 988)) | (1L << (ST_DIFFERENCE - 988)) | (1L << (ST_DIMENSION - 988)) | (1L << (ST_DISJOINT - 988)) | (1L << (ST_DISTANCE - 988)) | (1L << (ST_ENDPOINT - 988)) | (1L << (ST_ENVELOPE - 988)) | (1L << (ST_EQUALS - 988)) | (1L << (ST_EXTERIORRING - 988)) | (1L << (ST_GEOMCOLLFROMTEXT - 988)) | (1L << (ST_GEOMCOLLFROMTXT - 988)) | (1L << (ST_GEOMCOLLFROMWKB - 988)) | (1L << (ST_GEOMETRYCOLLECTIONFROMTEXT - 988)) | (1L << (ST_GEOMETRYCOLLECTIONFROMWKB - 988)) | (1L << (ST_GEOMETRYFROMTEXT - 988)) | (1L << (ST_GEOMETRYFROMWKB - 988)) | (1L << (ST_GEOMETRYN - 988)) | (1L << (ST_GEOMETRYTYPE - 988)) | (1L << (ST_GEOMFROMTEXT - 988)))) != 0) || ((((_la - 1052)) & ~0x3f) == 0 && ((1L << (_la - 1052)) & ((1L << (ST_GEOMFROMWKB - 1052)) | (1L << (ST_INTERIORRINGN - 1052)) | (1L << (ST_INTERSECTION - 1052)) | (1L << (ST_INTERSECTS - 1052)) | (1L << (ST_ISCLOSED - 1052)) | (1L << (ST_ISEMPTY - 1052)) | (1L << (ST_ISSIMPLE - 1052)) | (1L << (ST_LINEFROMTEXT - 1052)) | (1L << (ST_LINEFROMWKB - 1052)) | (1L << (ST_LINESTRINGFROMTEXT - 1052)) | (1L << (ST_LINESTRINGFROMWKB - 1052)) | (1L << (ST_NUMGEOMETRIES - 1052)) | (1L << (ST_NUMINTERIORRING - 1052)) | (1L << (ST_NUMINTERIORRINGS - 1052)) | (1L << (ST_NUMPOINTS - 1052)) | (1L << (ST_OVERLAPS - 1052)) | (1L << (ST_POINTFROMTEXT - 1052)) | (1L << (ST_POINTFROMWKB - 1052)) | (1L << (ST_POINTN - 1052)) | (1L << (ST_POLYFROMTEXT - 1052)) | (1L << (ST_POLYFROMWKB - 1052)) | (1L << (ST_POLYGONFROMTEXT - 1052)) | (1L << (ST_POLYGONFROMWKB - 1052)) | (1L << (ST_SRID - 1052)) | (1L << (ST_STARTPOINT - 1052)) | (1L << (ST_SYMDIFFERENCE - 1052)) | (1L << (ST_TOUCHES - 1052)) | (1L << (ST_UNION - 1052)) | (1L << (ST_WITHIN - 1052)) | (1L << (ST_X - 1052)) | (1L << (ST_Y - 1052)) | (1L << (SUBDATE - 1052)) | (1L << (SUBSTRING_INDEX - 1052)) | (1L << (SUBTIME - 1052)) | (1L << (SYSTEM_USER - 1052)) | (1L << (SYSTEM - 1052)) | (1L << (TAN - 1052)) | (1L << (TELEMETRY_LOG_ADMIN - 1052)) | (1L << (TIMEDIFF - 1052)) | (1L << (TIMESTAMPADD - 1052)) | (1L << (TIMESTAMPDIFF - 1052)) | (1L << (TIME_FORMAT - 1052)) | (1L << (TIME_TO_SEC - 1052)) | (1L << (TOUCHES - 1052)) | (1L << (TO_BASE64 - 1052)) | (1L << (TO_DAYS - 1052)) | (1L << (TO_SECONDS - 1052)) | (1L << (TP_CONNECTION_ADMIN - 1052)) | (1L << (UCASE - 1052)) | (1L << (UNCOMPRESS - 1052)) | (1L << (UNCOMPRESSED_LENGTH - 1052)) | (1L << (UNHEX - 1052)) | (1L << (UNIX_TIMESTAMP - 1052)) | (1L << (UPDATEXML - 1052)) | (1L << (UPPER - 1052)) | (1L << (UUID - 1052)) | (1L << (UUID_SHORT - 1052)) | (1L << (VALIDATE_PASSWORD_STRENGTH - 1052)) | (1L << (VERSION - 1052)) | (1L << (VERSIONING - 1052)) | (1L << (WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS - 1052)) | (1L << (WEEKDAY - 1052)) | (1L << (WEEKOFYEAR - 1052)) | (1L << (WEIGHT_STRING - 1052)))) != 0) || ((((_la - 1116)) & ~0x3f) == 0 && ((1L << (_la - 1116)) & ((1L << (WITHIN - 1116)) | (1L << (YEARWEEK - 1116)) | (1L << (Y_FUNCTION - 1116)) | (1L << (X_FUNCTION - 1116)) | (1L << (VIA - 1116)) | (1L << (LASTVAL - 1116)) | (1L << (NEXTVAL - 1116)) | (1L << (SETVAL - 1116)) | (1L << (PREVIOUS - 1116)) | (1L << (PERSISTENT - 1116)) | (1L << (BINLOG_MONITOR - 1116)) | (1L << (BINLOG_REPLAY - 1116)) | (1L << (FEDERATED_ADMIN - 1116)) | (1L << (READ_ONLY_ADMIN - 1116)) | (1L << (REPLICA - 1116)) | (1L << (REPLICATION_MASTER_ADMIN - 1116)) | (1L << (MONITOR - 1116)) | (1L << (READ_ONLY - 1116)) | (1L << (REPLAY - 1116)) | (1L << (MOD - 1116)) | (1L << (CHARSET_REVERSE_QOUTE_STRING - 1116)) | (1L << (STRING_LITERAL - 1116)))) != 0) || _la==ID) {
					{
					setState(1875);
					((ForeignKeyTableConstraintContext)_localctx).index = uid();
					}
				}

				setState(1878);
				indexColumnNames();
				setState(1879);
				referenceDefinition();
				}
				break;
			case 4:
				_localctx = new CheckTableConstraintContext(_localctx);
				enterOuterAlt(_localctx, 4);
				{
				setState(1885);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==CONSTRAINT) {
					{
					setState(1881);
					match(CONSTRAINT);
					setState(1883);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ARRAY) | (1L << ATTRIBUTE) | (1L << BUCKETS) | (1L << CONDITION) | (1L << CURRENT) | (1L << CURRENT_ROLE) | (1L << CURRENT_USER) | (1L << DATABASE) | (1L << DEFAULT) | (1L << DIAGNOSTICS) | (1L << EMPTY) | (1L << ENFORCED) | (1L << EXCEPT))) != 0) || ((((_la - 74)) & ~0x3f) == 0 && ((1L << (_la - 74)) & ((1L << (GROUP - 74)) | (1L << (GROUP_REPLICATION_STREAM - 74)) | (1L << (IF - 74)) | (1L << (IGNORED - 74)) | (1L << (INSERT - 74)) | (1L << (LATERAL - 74)) | (1L << (LEFT - 74)) | (1L << (LOCKED - 74)) | (1L << (MAXVALUE - 74)) | (1L << (MINVALUE - 74)) | (1L << (NUMBER - 74)) | (1L << (OPTIONAL - 74)) | (1L << (ORDER - 74)) | (1L << (PRIMARY - 74)))) != 0) || ((((_la - 142)) & ~0x3f) == 0 && ((1L << (_la - 142)) & ((1L << (REPEAT - 142)) | (1L << (REPLACE - 142)) | (1L << (RIGHT - 142)) | (1L << (SCHEMA - 142)) | (1L << (SKIP_ - 142)) | (1L << (SKIP_QUERY_REWRITE - 142)) | (1L << (STACKED - 142)) | (1L << (STATEMENT - 142)))) != 0) || ((((_la - 220)) & ~0x3f) == 0 && ((1L << (_la - 220)) & ((1L << (DATE - 220)) | (1L << (TIME - 220)) | (1L << (TIMESTAMP - 220)) | (1L << (DATETIME - 220)) | (1L << (YEAR - 220)) | (1L << (NATIONAL - 220)) | (1L << (BINARY - 220)) | (1L << (TEXT - 220)) | (1L << (ENUM - 220)) | (1L << (SERIAL - 220)) | (1L << (JSON_ARRAY - 220)) | (1L << (JSON_ARRAYAGG - 220)) | (1L << (JSON_ARRAY_APPEND - 220)) | (1L << (JSON_ARRAY_INSERT - 220)) | (1L << (JSON_CONTAINS - 220)) | (1L << (JSON_CONTAINS_PATH - 220)) | (1L << (JSON_DEPTH - 220)) | (1L << (JSON_EXTRACT - 220)) | (1L << (JSON_INSERT - 220)) | (1L << (JSON_KEYS - 220)) | (1L << (JSON_LENGTH - 220)) | (1L << (JSON_MERGE - 220)) | (1L << (JSON_MERGE_PATCH - 220)) | (1L << (JSON_MERGE_PRESERVE - 220)) | (1L << (JSON_OBJECT - 220)) | (1L << (JSON_OBJECTAGG - 220)) | (1L << (JSON_OVERLAPS - 220)) | (1L << (JSON_PRETTY - 220)) | (1L << (JSON_QUOTE - 220)) | (1L << (JSON_REMOVE - 220)) | (1L << (JSON_REPLACE - 220)) | (1L << (JSON_SCHEMA_VALID - 220)) | (1L << (JSON_SCHEMA_VALIDATION_REPORT - 220)) | (1L << (JSON_SEARCH - 220)) | (1L << (JSON_SET - 220)) | (1L << (JSON_STORAGE_FREE - 220)) | (1L << (JSON_STORAGE_SIZE - 220)) | (1L << (JSON_TABLE - 220)) | (1L << (JSON_TYPE - 220)) | (1L << (JSON_UNQUOTE - 220)))) != 0) || ((((_la - 284)) & ~0x3f) == 0 && ((1L << (_la - 284)) & ((1L << (JSON_VALID - 284)) | (1L << (JSON_VALUE - 284)) | (1L << (NESTED - 284)) | (1L << (ORDINALITY - 284)) | (1L << (PATH - 284)) | (1L << (AVG - 284)) | (1L << (BIT_AND - 284)) | (1L << (BIT_OR - 284)) | (1L << (BIT_XOR - 284)) | (1L << (COUNT - 284)) | (1L << (CUME_DIST - 284)) | (1L << (DENSE_RANK - 284)) | (1L << (FIRST_VALUE - 284)) | (1L << (GROUP_CONCAT - 284)) | (1L << (LAG - 284)) | (1L << (LAST_VALUE - 284)) | (1L << (LEAD - 284)) | (1L << (MAX - 284)) | (1L << (MIN - 284)) | (1L << (NTILE - 284)) | (1L << (NTH_VALUE - 284)) | (1L << (PERCENT_RANK - 284)) | (1L << (RANK - 284)) | (1L << (ROW_NUMBER - 284)) | (1L << (STD - 284)) | (1L << (STDDEV - 284)) | (1L << (STDDEV_POP - 284)) | (1L << (STDDEV_SAMP - 284)) | (1L << (SUM - 284)) | (1L << (VAR_POP - 284)) | (1L << (VAR_SAMP - 284)) | (1L << (VARIANCE - 284)) | (1L << (CURRENT_DATE - 284)) | (1L << (CURRENT_TIME - 284)) | (1L << (CURRENT_TIMESTAMP - 284)) | (1L << (LOCALTIME - 284)) | (1L << (CURDATE - 284)) | (1L << (CURTIME - 284)) | (1L << (DATE_ADD - 284)) | (1L << (DATE_SUB - 284)) | (1L << (LOCALTIMESTAMP - 284)) | (1L << (NOW - 284)) | (1L << (POSITION - 284)) | (1L << (SUBSTR - 284)) | (1L << (SUBSTRING - 284)) | (1L << (SYSDATE - 284)) | (1L << (TRIM - 284)) | (1L << (UTC_DATE - 284)) | (1L << (UTC_TIME - 284)) | (1L << (UTC_TIMESTAMP - 284)) | (1L << (ACCOUNT - 284)) | (1L << (ACTION - 284)) | (1L << (AFTER - 284)) | (1L << (AGGREGATE - 284)) | (1L << (ALGORITHM - 284)) | (1L << (ANY - 284)) | (1L << (AT - 284)) | (1L << (AUTHORS - 284)) | (1L << (AUTOCOMMIT - 284)) | (1L << (AUTOEXTEND_SIZE - 284)) | (1L << (AUTO_INCREMENT - 284)) | (1L << (AVG_ROW_LENGTH - 284)) | (1L << (BEGIN - 284)))) != 0) || ((((_la - 348)) & ~0x3f) == 0 && ((1L << (_la - 348)) & ((1L << (BINLOG - 348)) | (1L << (BIT - 348)) | (1L << (BLOCK - 348)) | (1L << (BOOL - 348)) | (1L << (BOOLEAN - 348)) | (1L << (BTREE - 348)) | (1L << (CACHE - 348)) | (1L << (CASCADED - 348)) | (1L << (CHAIN - 348)) | (1L << (CHANGED - 348)) | (1L << (CHANNEL - 348)) | (1L << (CHECKSUM - 348)) | (1L << (PAGE_CHECKSUM - 348)) | (1L << (CIPHER - 348)) | (1L << (CLASS_ORIGIN - 348)) | (1L << (CLIENT - 348)) | (1L << (CLOSE - 348)) | (1L << (CLUSTERING - 348)) | (1L << (COALESCE - 348)) | (1L << (CODE - 348)) | (1L << (COLUMNS - 348)) | (1L << (COLUMN_FORMAT - 348)) | (1L << (COLUMN_NAME - 348)) | (1L << (COMMENT - 348)) | (1L << (COMMIT - 348)) | (1L << (COMPACT - 348)) | (1L << (COMPLETION - 348)) | (1L << (COMPRESSED - 348)) | (1L << (COMPRESSION - 348)) | (1L << (CONCURRENT - 348)) | (1L << (CONNECT - 348)) | (1L << (CONNECTION - 348)) | (1L << (CONSISTENT - 348)) | (1L << (CONSTRAINT_CATALOG - 348)) | (1L << (CONSTRAINT_SCHEMA - 348)) | (1L << (CONSTRAINT_NAME - 348)) | (1L << (CONTAINS - 348)) | (1L << (CONTEXT - 348)) | (1L << (CONTRIBUTORS - 348)) | (1L << (COPY - 348)) | (1L << (CPU - 348)) | (1L << (CYCLE - 348)) | (1L << (CURSOR_NAME - 348)) | (1L << (DATA - 348)) | (1L << (DATAFILE - 348)) | (1L << (DEALLOCATE - 348)) | (1L << (DEFAULT_AUTH - 348)) | (1L << (DEFINER - 348)) | (1L << (DELAY_KEY_WRITE - 348)) | (1L << (DES_KEY_FILE - 348)) | (1L << (DIRECTORY - 348)) | (1L << (DISABLE - 348)) | (1L << (DISCARD - 348)) | (1L << (DISK - 348)) | (1L << (DO - 348)) | (1L << (DUMPFILE - 348)) | (1L << (DUPLICATE - 348)) | (1L << (DYNAMIC - 348)) | (1L << (ENABLE - 348)) | (1L << (ENCRYPTED - 348)) | (1L << (ENCRYPTION - 348)) | (1L << (ENCRYPTION_KEY_ID - 348)) | (1L << (END - 348)) | (1L << (ENDS - 348)))) != 0) || ((((_la - 412)) & ~0x3f) == 0 && ((1L << (_la - 412)) & ((1L << (ENGINE - 412)) | (1L << (ENGINES - 412)) | (1L << (ERROR - 412)) | (1L << (ERRORS - 412)) | (1L << (ESCAPE - 412)) | (1L << (EVEN - 412)) | (1L << (EVENT - 412)) | (1L << (EVENTS - 412)) | (1L << (EVERY - 412)) | (1L << (EXCHANGE - 412)) | (1L << (EXCLUSIVE - 412)) | (1L << (EXPIRE - 412)) | (1L << (EXPORT - 412)) | (1L << (EXTENDED - 412)) | (1L << (EXTENT_SIZE - 412)) | (1L << (FAILED_LOGIN_ATTEMPTS - 412)) | (1L << (FAST - 412)) | (1L << (FAULTS - 412)) | (1L << (FIELDS - 412)) | (1L << (FILE_BLOCK_SIZE - 412)) | (1L << (FILTER - 412)) | (1L << (FIRST - 412)) | (1L << (FIXED - 412)) | (1L << (FLUSH - 412)) | (1L << (FOLLOWS - 412)) | (1L << (FOUND - 412)) | (1L << (FULL - 412)) | (1L << (FUNCTION - 412)) | (1L << (GENERAL - 412)) | (1L << (GLOBAL - 412)) | (1L << (GRANTS - 412)) | (1L << (GROUP_REPLICATION - 412)) | (1L << (HANDLER - 412)) | (1L << (HASH - 412)) | (1L << (HELP - 412)) | (1L << (HISTORY - 412)) | (1L << (HOST - 412)) | (1L << (HOSTS - 412)) | (1L << (IDENTIFIED - 412)) | (1L << (IGNORE_SERVER_IDS - 412)) | (1L << (IMPORT - 412)) | (1L << (INCREMENT - 412)) | (1L << (INDEXES - 412)) | (1L << (INITIAL_SIZE - 412)) | (1L << (INPLACE - 412)) | (1L << (INSERT_METHOD - 412)) | (1L << (INSTALL - 412)) | (1L << (INSTANCE - 412)) | (1L << (INSTANT - 412)) | (1L << (INVISIBLE - 412)) | (1L << (INVOKER - 412)) | (1L << (IO - 412)) | (1L << (IO_THREAD - 412)) | (1L << (IPC - 412)) | (1L << (ISOLATION - 412)) | (1L << (ISSUER - 412)) | (1L << (JSON - 412)) | (1L << (KEY_BLOCK_SIZE - 412)) | (1L << (LANGUAGE - 412)) | (1L << (LAST - 412)) | (1L << (LEAVES - 412)) | (1L << (LESS - 412)) | (1L << (LEVEL - 412)))) != 0) || ((((_la - 476)) & ~0x3f) == 0 && ((1L << (_la - 476)) & ((1L << (LIST - 476)) | (1L << (LOCAL - 476)) | (1L << (LOGFILE - 476)) | (1L << (LOGS - 476)) | (1L << (MASTER - 476)) | (1L << (MASTER_AUTO_POSITION - 476)) | (1L << (MASTER_CONNECT_RETRY - 476)) | (1L << (MASTER_DELAY - 476)) | (1L << (MASTER_HEARTBEAT_PERIOD - 476)) | (1L << (MASTER_HOST - 476)) | (1L << (MASTER_LOG_FILE - 476)) | (1L << (MASTER_LOG_POS - 476)) | (1L << (MASTER_PASSWORD - 476)) | (1L << (MASTER_PORT - 476)) | (1L << (MASTER_RETRY_COUNT - 476)) | (1L << (MASTER_SSL - 476)) | (1L << (MASTER_SSL_CA - 476)) | (1L << (MASTER_SSL_CAPATH - 476)) | (1L << (MASTER_SSL_CERT - 476)) | (1L << (MASTER_SSL_CIPHER - 476)) | (1L << (MASTER_SSL_CRL - 476)) | (1L << (MASTER_SSL_CRLPATH - 476)) | (1L << (MASTER_SSL_KEY - 476)) | (1L << (MASTER_TLS_VERSION - 476)) | (1L << (MASTER_USER - 476)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 476)) | (1L << (MAX_QUERIES_PER_HOUR - 476)) | (1L << (MAX_ROWS - 476)) | (1L << (MAX_SIZE - 476)) | (1L << (MAX_UPDATES_PER_HOUR - 476)) | (1L << (MAX_USER_CONNECTIONS - 476)) | (1L << (MEDIUM - 476)) | (1L << (MEMBER - 476)) | (1L << (MERGE - 476)) | (1L << (MESSAGE_TEXT - 476)) | (1L << (MID - 476)) | (1L << (MIGRATE - 476)) | (1L << (MIN_ROWS - 476)) | (1L << (MODE - 476)) | (1L << (MODIFY - 476)) | (1L << (MUTEX - 476)) | (1L << (MYSQL - 476)) | (1L << (MYSQL_ERRNO - 476)) | (1L << (NAME - 476)) | (1L << (NAMES - 476)) | (1L << (NCHAR - 476)) | (1L << (NEVER - 476)) | (1L << (NEXT - 476)) | (1L << (NO - 476)) | (1L << (NOCACHE - 476)) | (1L << (NOCOPY - 476)) | (1L << (NOCYCLE - 476)) | (1L << (NOMAXVALUE - 476)) | (1L << (NOMINVALUE - 476)) | (1L << (NOWAIT - 476)) | (1L << (NODEGROUP - 476)) | (1L << (NONE - 476)) | (1L << (ODBC - 476)) | (1L << (OFFLINE - 476)) | (1L << (OFFSET - 476)) | (1L << (OF - 476)) | (1L << (OJ - 476)) | (1L << (OLD_PASSWORD - 476)) | (1L << (ONE - 476)))) != 0) || ((((_la - 540)) & ~0x3f) == 0 && ((1L << (_la - 540)) & ((1L << (ONLINE - 540)) | (1L << (ONLY - 540)) | (1L << (OPEN - 540)) | (1L << (OPTIMIZER_COSTS - 540)) | (1L << (OPTIONS - 540)) | (1L << (OWNER - 540)) | (1L << (PACK_KEYS - 540)) | (1L << (PAGE - 540)) | (1L << (PARSER - 540)) | (1L << (PARTIAL - 540)) | (1L << (PARTITIONING - 540)) | (1L << (PARTITIONS - 540)) | (1L << (PASSWORD - 540)) | (1L << (PASSWORD_LOCK_TIME - 540)) | (1L << (PHASE - 540)) | (1L << (PLUGIN - 540)) | (1L << (PLUGIN_DIR - 540)) | (1L << (PLUGINS - 540)) | (1L << (PORT - 540)) | (1L << (PRECEDES - 540)) | (1L << (PREPARE - 540)) | (1L << (PRESERVE - 540)) | (1L << (PREV - 540)) | (1L << (PROCESSLIST - 540)) | (1L << (PROFILE - 540)) | (1L << (PROFILES - 540)) | (1L << (PROXY - 540)) | (1L << (QUERY - 540)) | (1L << (QUICK - 540)) | (1L << (REBUILD - 540)) | (1L << (RECOVER - 540)) | (1L << (RECURSIVE - 540)) | (1L << (REDO_BUFFER_SIZE - 540)) | (1L << (REDUNDANT - 540)) | (1L << (RELAY - 540)) | (1L << (RELAY_LOG_FILE - 540)) | (1L << (RELAY_LOG_POS - 540)) | (1L << (RELAYLOG - 540)) | (1L << (REMOVE - 540)) | (1L << (REORGANIZE - 540)) | (1L << (REPAIR - 540)) | (1L << (REPLICATE_DO_DB - 540)) | (1L << (REPLICATE_DO_TABLE - 540)) | (1L << (REPLICATE_IGNORE_DB - 540)) | (1L << (REPLICATE_IGNORE_TABLE - 540)) | (1L << (REPLICATE_REWRITE_DB - 540)) | (1L << (REPLICATE_WILD_DO_TABLE - 540)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 540)) | (1L << (REPLICATION - 540)) | (1L << (RESET - 540)) | (1L << (RESTART - 540)) | (1L << (RESUME - 540)) | (1L << (RETURNED_SQLSTATE - 540)) | (1L << (RETURNING - 540)) | (1L << (RETURNS - 540)) | (1L << (REUSE - 540)) | (1L << (ROLE - 540)) | (1L << (ROLLBACK - 540)) | (1L << (ROLLUP - 540)) | (1L << (ROTATE - 540)) | (1L << (ROW - 540)))) != 0) || ((((_la - 604)) & ~0x3f) == 0 && ((1L << (_la - 604)) & ((1L << (ROWS - 604)) | (1L << (ROW_FORMAT - 604)) | (1L << (RTREE - 604)) | (1L << (SAVEPOINT - 604)) | (1L << (SCHEDULE - 604)) | (1L << (SECURITY - 604)) | (1L << (SEQUENCE - 604)) | (1L << (SERVER - 604)) | (1L << (SESSION - 604)) | (1L << (SHARE - 604)) | (1L << (SHARED - 604)) | (1L << (SIGNED - 604)) | (1L << (SIMPLE - 604)) | (1L << (SLAVE - 604)) | (1L << (SLOW - 604)) | (1L << (SNAPSHOT - 604)) | (1L << (SOCKET - 604)) | (1L << (SOME - 604)) | (1L << (SONAME - 604)) | (1L << (SOUNDS - 604)) | (1L << (SOURCE - 604)) | (1L << (SQL_AFTER_GTIDS - 604)) | (1L << (SQL_AFTER_MTS_GAPS - 604)) | (1L << (SQL_BEFORE_GTIDS - 604)) | (1L << (SQL_BUFFER_RESULT - 604)) | (1L << (SQL_CACHE - 604)) | (1L << (SQL_NO_CACHE - 604)) | (1L << (SQL_THREAD - 604)) | (1L << (START - 604)) | (1L << (STARTS - 604)) | (1L << (STATS_AUTO_RECALC - 604)) | (1L << (STATS_PERSISTENT - 604)) | (1L << (STATS_SAMPLE_PAGES - 604)) | (1L << (STATUS - 604)) | (1L << (STOP - 604)) | (1L << (STORAGE - 604)) | (1L << (STRING - 604)) | (1L << (SUBCLASS_ORIGIN - 604)) | (1L << (SUBJECT - 604)) | (1L << (SUBPARTITION - 604)) | (1L << (SUBPARTITIONS - 604)) | (1L << (SUSPEND - 604)) | (1L << (SWAPS - 604)) | (1L << (SWITCHES - 604)) | (1L << (TABLE_NAME - 604)) | (1L << (TABLESPACE - 604)) | (1L << (TABLE_TYPE - 604)) | (1L << (TEMPORARY - 604)) | (1L << (TEMPTABLE - 604)) | (1L << (THAN - 604)) | (1L << (TRADITIONAL - 604)) | (1L << (TRANSACTION - 604)) | (1L << (TRANSACTIONAL - 604)) | (1L << (TRIGGERS - 604)) | (1L << (TRUNCATE - 604)) | (1L << (UNBOUNDED - 604)) | (1L << (UNDEFINED - 604)) | (1L << (UNDOFILE - 604)) | (1L << (UNDO_BUFFER_SIZE - 604)) | (1L << (UNINSTALL - 604)) | (1L << (UNKNOWN - 604)) | (1L << (UNTIL - 604)) | (1L << (UPGRADE - 604)))) != 0) || ((((_la - 668)) & ~0x3f) == 0 && ((1L << (_la - 668)) & ((1L << (USER - 668)) | (1L << (USE_FRM - 668)) | (1L << (USER_RESOURCES - 668)) | (1L << (VALIDATION - 668)) | (1L << (VALUE - 668)) | (1L << (VARIABLES - 668)) | (1L << (VIEW - 668)) | (1L << (VIRTUAL - 668)) | (1L << (VISIBLE - 668)) | (1L << (WAIT - 668)) | (1L << (WARNINGS - 668)) | (1L << (WITHOUT - 668)) | (1L << (WORK - 668)) | (1L << (WRAPPER - 668)) | (1L << (X509 - 668)) | (1L << (XA - 668)) | (1L << (XML - 668)) | (1L << (YES - 668)) | (1L << (EUR - 668)) | (1L << (USA - 668)) | (1L << (JIS - 668)) | (1L << (ISO - 668)) | (1L << (INTERNAL - 668)) | (1L << (QUARTER - 668)) | (1L << (MONTH - 668)) | (1L << (DAY - 668)) | (1L << (HOUR - 668)) | (1L << (MINUTE - 668)) | (1L << (WEEK - 668)) | (1L << (SECOND - 668)) | (1L << (MICROSECOND - 668)) | (1L << (USER_STATISTICS - 668)) | (1L << (CLIENT_STATISTICS - 668)) | (1L << (INDEX_STATISTICS - 668)) | (1L << (TABLE_STATISTICS - 668)) | (1L << (FIREWALL_RULES - 668)) | (1L << (ADMIN - 668)) | (1L << (APPLICATION_PASSWORD_ADMIN - 668)) | (1L << (AUDIT_ADMIN - 668)) | (1L << (AUDIT_ABORT_EXEMPT - 668)) | (1L << (AUTHENTICATION_POLICY_ADMIN - 668)) | (1L << (BACKUP_ADMIN - 668)) | (1L << (BINLOG_ADMIN - 668)) | (1L << (BINLOG_ENCRYPTION_ADMIN - 668)) | (1L << (CLONE_ADMIN - 668)) | (1L << (CONNECTION_ADMIN - 668)) | (1L << (ENCRYPTION_KEY_ADMIN - 668)) | (1L << (EXECUTE - 668)) | (1L << (FILE - 668)) | (1L << (FIREWALL_ADMIN - 668)) | (1L << (FIREWALL_EXEMPT - 668)) | (1L << (FIREWALL_USER - 668)) | (1L << (FLUSH_OPTIMIZER_COSTS - 668)) | (1L << (FLUSH_STATUS - 668)) | (1L << (FLUSH_TABLES - 668)) | (1L << (FLUSH_USER_RESOURCES - 668)) | (1L << (GROUP_REPLICATION_ADMIN - 668)) | (1L << (INNODB_REDO_LOG_ARCHIVE - 668)) | (1L << (INNODB_REDO_LOG_ENABLE - 668)) | (1L << (INVOKE - 668)) | (1L << (LAMBDA - 668)) | (1L << (NDB_STORED_USER - 668)) | (1L << (PASSWORDLESS_USER_ADMIN - 668)))) != 0) || ((((_la - 732)) & ~0x3f) == 0 && ((1L << (_la - 732)) & ((1L << (PERSIST_RO_VARIABLES_ADMIN - 732)) | (1L << (PRIVILEGES - 732)) | (1L << (PROCESS - 732)) | (1L << (RELOAD - 732)) | (1L << (REPLICATION_APPLIER - 732)) | (1L << (REPLICATION_SLAVE_ADMIN - 732)) | (1L << (RESOURCE_GROUP_ADMIN - 732)) | (1L << (RESOURCE_GROUP_USER - 732)) | (1L << (ROLE_ADMIN - 732)) | (1L << (ROUTINE - 732)) | (1L << (S3 - 732)) | (1L << (SESSION_VARIABLES_ADMIN - 732)) | (1L << (SET_USER_ID - 732)) | (1L << (SHOW_ROUTINE - 732)) | (1L << (SHUTDOWN - 732)) | (1L << (SUPER - 732)) | (1L << (SYSTEM_VARIABLES_ADMIN - 732)) | (1L << (TABLES - 732)) | (1L << (TABLE_ENCRYPTION_ADMIN - 732)) | (1L << (VERSION_TOKEN_ADMIN - 732)) | (1L << (XA_RECOVER_ADMIN - 732)) | (1L << (ARMSCII8 - 732)) | (1L << (ASCII - 732)) | (1L << (BIG5 - 732)) | (1L << (CP1250 - 732)) | (1L << (CP1251 - 732)) | (1L << (CP1256 - 732)) | (1L << (CP1257 - 732)) | (1L << (CP850 - 732)) | (1L << (CP852 - 732)) | (1L << (CP866 - 732)) | (1L << (CP932 - 732)) | (1L << (DEC8 - 732)) | (1L << (EUCJPMS - 732)) | (1L << (EUCKR - 732)) | (1L << (GB18030 - 732)) | (1L << (GB2312 - 732)) | (1L << (GBK - 732)) | (1L << (GEOSTD8 - 732)) | (1L << (GREEK - 732)) | (1L << (HEBREW - 732)) | (1L << (HP8 - 732)) | (1L << (KEYBCS2 - 732)) | (1L << (KOI8R - 732)) | (1L << (KOI8U - 732)) | (1L << (LATIN1 - 732)) | (1L << (LATIN2 - 732)) | (1L << (LATIN5 - 732)) | (1L << (LATIN7 - 732)) | (1L << (MACCE - 732)) | (1L << (MACROMAN - 732)) | (1L << (SJIS - 732)) | (1L << (SWE7 - 732)) | (1L << (TIS620 - 732)) | (1L << (UCS2 - 732)) | (1L << (UJIS - 732)) | (1L << (UTF16 - 732)) | (1L << (UTF16LE - 732)) | (1L << (UTF32 - 732)) | (1L << (UTF8 - 732)) | (1L << (UTF8MB3 - 732)) | (1L << (UTF8MB4 - 732)) | (1L << (ARCHIVE - 732)))) != 0) || ((((_la - 796)) & ~0x3f) == 0 && ((1L << (_la - 796)) & ((1L << (BLACKHOLE - 796)) | (1L << (CSV - 796)) | (1L << (FEDERATED - 796)) | (1L << (INNODB - 796)) | (1L << (MEMORY - 796)) | (1L << (MRG_MYISAM - 796)) | (1L << (MYISAM - 796)) | (1L << (NDB - 796)) | (1L << (NDBCLUSTER - 796)) | (1L << (PERFORMANCE_SCHEMA - 796)) | (1L << (TOKUDB - 796)) | (1L << (REPEATABLE - 796)) | (1L << (COMMITTED - 796)) | (1L << (UNCOMMITTED - 796)) | (1L << (SERIALIZABLE - 796)) | (1L << (GEOMETRYCOLLECTION - 796)) | (1L << (GEOMETRY - 796)) | (1L << (LINESTRING - 796)) | (1L << (MULTILINESTRING - 796)) | (1L << (MULTIPOINT - 796)) | (1L << (MULTIPOLYGON - 796)) | (1L << (POINT - 796)) | (1L << (POLYGON - 796)) | (1L << (ABS - 796)) | (1L << (ACOS - 796)) | (1L << (ADDDATE - 796)) | (1L << (ADDTIME - 796)) | (1L << (AES_DECRYPT - 796)) | (1L << (AES_ENCRYPT - 796)) | (1L << (AREA - 796)) | (1L << (ASBINARY - 796)) | (1L << (ASIN - 796)) | (1L << (ASTEXT - 796)) | (1L << (ASWKB - 796)) | (1L << (ASWKT - 796)) | (1L << (ASYMMETRIC_DECRYPT - 796)) | (1L << (ASYMMETRIC_DERIVE - 796)) | (1L << (ASYMMETRIC_ENCRYPT - 796)) | (1L << (ASYMMETRIC_SIGN - 796)) | (1L << (ASYMMETRIC_VERIFY - 796)) | (1L << (ATAN - 796)) | (1L << (ATAN2 - 796)) | (1L << (BENCHMARK - 796)) | (1L << (BIN - 796)) | (1L << (BIT_COUNT - 796)) | (1L << (BIT_LENGTH - 796)) | (1L << (BUFFER - 796)) | (1L << (CATALOG_NAME - 796)) | (1L << (CEIL - 796)) | (1L << (CEILING - 796)) | (1L << (CENTROID - 796)) | (1L << (CHARACTER_LENGTH - 796)) | (1L << (CHARSET - 796)) | (1L << (CHAR_LENGTH - 796)) | (1L << (COERCIBILITY - 796)) | (1L << (COLLATION - 796)) | (1L << (COMPRESS - 796)) | (1L << (CONCAT - 796)) | (1L << (CONCAT_WS - 796)) | (1L << (CONNECTION_ID - 796)) | (1L << (CONV - 796)) | (1L << (CONVERT_TZ - 796)) | (1L << (COS - 796)))) != 0) || ((((_la - 860)) & ~0x3f) == 0 && ((1L << (_la - 860)) & ((1L << (COT - 860)) | (1L << (CRC32 - 860)) | (1L << (CREATE_ASYMMETRIC_PRIV_KEY - 860)) | (1L << (CREATE_ASYMMETRIC_PUB_KEY - 860)) | (1L << (CREATE_DH_PARAMETERS - 860)) | (1L << (CREATE_DIGEST - 860)) | (1L << (CROSSES - 860)) | (1L << (DATEDIFF - 860)) | (1L << (DATE_FORMAT - 860)) | (1L << (DAYNAME - 860)) | (1L << (DAYOFMONTH - 860)) | (1L << (DAYOFWEEK - 860)) | (1L << (DAYOFYEAR - 860)) | (1L << (DECODE - 860)) | (1L << (DEGREES - 860)) | (1L << (DES_DECRYPT - 860)) | (1L << (DES_ENCRYPT - 860)) | (1L << (DIMENSION - 860)) | (1L << (DISJOINT - 860)) | (1L << (ELT - 860)) | (1L << (ENCODE - 860)) | (1L << (ENCRYPT - 860)) | (1L << (ENDPOINT - 860)) | (1L << (ENGINE_ATTRIBUTE - 860)) | (1L << (ENVELOPE - 860)) | (1L << (EQUALS - 860)) | (1L << (EXP - 860)) | (1L << (EXPORT_SET - 860)) | (1L << (EXTERIORRING - 860)) | (1L << (EXTRACTVALUE - 860)) | (1L << (FIELD - 860)) | (1L << (FIND_IN_SET - 860)) | (1L << (FLOOR - 860)) | (1L << (FORMAT - 860)) | (1L << (FOUND_ROWS - 860)) | (1L << (FROM_BASE64 - 860)) | (1L << (FROM_DAYS - 860)) | (1L << (FROM_UNIXTIME - 860)) | (1L << (GEOMCOLLFROMTEXT - 860)) | (1L << (GEOMCOLLFROMWKB - 860)) | (1L << (GEOMETRYCOLLECTIONFROMTEXT - 860)) | (1L << (GEOMETRYCOLLECTIONFROMWKB - 860)) | (1L << (GEOMETRYFROMTEXT - 860)) | (1L << (GEOMETRYFROMWKB - 860)) | (1L << (GEOMETRYN - 860)) | (1L << (GEOMETRYTYPE - 860)) | (1L << (GEOMFROMTEXT - 860)) | (1L << (GEOMFROMWKB - 860)) | (1L << (GET_FORMAT - 860)) | (1L << (GET_LOCK - 860)) | (1L << (GLENGTH - 860)) | (1L << (GREATEST - 860)) | (1L << (GTID_SUBSET - 860)) | (1L << (GTID_SUBTRACT - 860)) | (1L << (HEX - 860)) | (1L << (IFNULL - 860)) | (1L << (INET6_ATON - 860)) | (1L << (INET6_NTOA - 860)) | (1L << (INET_ATON - 860)) | (1L << (INET_NTOA - 860)) | (1L << (INSTR - 860)) | (1L << (INTERIORRINGN - 860)) | (1L << (INTERSECTS - 860)) | (1L << (ISCLOSED - 860)))) != 0) || ((((_la - 924)) & ~0x3f) == 0 && ((1L << (_la - 924)) & ((1L << (ISEMPTY - 924)) | (1L << (ISNULL - 924)) | (1L << (ISSIMPLE - 924)) | (1L << (IS_FREE_LOCK - 924)) | (1L << (IS_IPV4 - 924)) | (1L << (IS_IPV4_COMPAT - 924)) | (1L << (IS_IPV4_MAPPED - 924)) | (1L << (IS_IPV6 - 924)) | (1L << (IS_USED_LOCK - 924)) | (1L << (LAST_INSERT_ID - 924)) | (1L << (LCASE - 924)) | (1L << (LEAST - 924)) | (1L << (LENGTH - 924)) | (1L << (LINEFROMTEXT - 924)) | (1L << (LINEFROMWKB - 924)) | (1L << (LINESTRINGFROMTEXT - 924)) | (1L << (LINESTRINGFROMWKB - 924)) | (1L << (LN - 924)) | (1L << (LOAD_FILE - 924)) | (1L << (LOCATE - 924)) | (1L << (LOG - 924)) | (1L << (LOG10 - 924)) | (1L << (LOG2 - 924)) | (1L << (LOWER - 924)) | (1L << (LPAD - 924)) | (1L << (LTRIM - 924)) | (1L << (MAKEDATE - 924)) | (1L << (MAKETIME - 924)) | (1L << (MAKE_SET - 924)) | (1L << (MASTER_POS_WAIT - 924)) | (1L << (MBRCONTAINS - 924)) | (1L << (MBRDISJOINT - 924)) | (1L << (MBREQUAL - 924)) | (1L << (MBRINTERSECTS - 924)) | (1L << (MBROVERLAPS - 924)) | (1L << (MBRTOUCHES - 924)) | (1L << (MBRWITHIN - 924)) | (1L << (MD5 - 924)) | (1L << (MLINEFROMTEXT - 924)) | (1L << (MLINEFROMWKB - 924)) | (1L << (MONTHNAME - 924)) | (1L << (MPOINTFROMTEXT - 924)) | (1L << (MPOINTFROMWKB - 924)) | (1L << (MPOLYFROMTEXT - 924)) | (1L << (MPOLYFROMWKB - 924)) | (1L << (MULTILINESTRINGFROMTEXT - 924)) | (1L << (MULTILINESTRINGFROMWKB - 924)) | (1L << (MULTIPOINTFROMTEXT - 924)) | (1L << (MULTIPOINTFROMWKB - 924)) | (1L << (MULTIPOLYGONFROMTEXT - 924)) | (1L << (MULTIPOLYGONFROMWKB - 924)) | (1L << (NAME_CONST - 924)) | (1L << (NULLIF - 924)) | (1L << (NUMGEOMETRIES - 924)) | (1L << (NUMINTERIORRINGS - 924)) | (1L << (NUMPOINTS - 924)) | (1L << (OCT - 924)) | (1L << (OCTET_LENGTH - 924)) | (1L << (ORD - 924)) | (1L << (OVERLAPS - 924)) | (1L << (PERIOD_ADD - 924)) | (1L << (PERIOD_DIFF - 924)) | (1L << (PI - 924)) | (1L << (POINTFROMTEXT - 924)))) != 0) || ((((_la - 988)) & ~0x3f) == 0 && ((1L << (_la - 988)) & ((1L << (POINTFROMWKB - 988)) | (1L << (POINTN - 988)) | (1L << (POLYFROMTEXT - 988)) | (1L << (POLYFROMWKB - 988)) | (1L << (POLYGONFROMTEXT - 988)) | (1L << (POLYGONFROMWKB - 988)) | (1L << (POW - 988)) | (1L << (POWER - 988)) | (1L << (QUOTE - 988)) | (1L << (RADIANS - 988)) | (1L << (RAND - 988)) | (1L << (RANDOM - 988)) | (1L << (RANDOM_BYTES - 988)) | (1L << (RELEASE_LOCK - 988)) | (1L << (REVERSE - 988)) | (1L << (ROUND - 988)) | (1L << (ROW_COUNT - 988)) | (1L << (RPAD - 988)) | (1L << (RTRIM - 988)) | (1L << (SEC_TO_TIME - 988)) | (1L << (SECONDARY_ENGINE_ATTRIBUTE - 988)) | (1L << (SENSITIVE_VARIABLES_OBSERVER - 988)) | (1L << (SESSION_USER - 988)) | (1L << (SHA - 988)) | (1L << (SHA1 - 988)) | (1L << (SHA2 - 988)) | (1L << (SCHEMA_NAME - 988)) | (1L << (SIGN - 988)) | (1L << (SIN - 988)) | (1L << (SLEEP - 988)) | (1L << (SOUNDEX - 988)) | (1L << (SQL_THREAD_WAIT_AFTER_GTIDS - 988)) | (1L << (SQRT - 988)) | (1L << (SRID - 988)) | (1L << (STARTPOINT - 988)) | (1L << (STRCMP - 988)) | (1L << (STR_TO_DATE - 988)) | (1L << (ST_AREA - 988)) | (1L << (ST_ASBINARY - 988)) | (1L << (ST_ASTEXT - 988)) | (1L << (ST_ASWKB - 988)) | (1L << (ST_ASWKT - 988)) | (1L << (ST_BUFFER - 988)) | (1L << (ST_CENTROID - 988)) | (1L << (ST_CONTAINS - 988)) | (1L << (ST_CROSSES - 988)) | (1L << (ST_DIFFERENCE - 988)) | (1L << (ST_DIMENSION - 988)) | (1L << (ST_DISJOINT - 988)) | (1L << (ST_DISTANCE - 988)) | (1L << (ST_ENDPOINT - 988)) | (1L << (ST_ENVELOPE - 988)) | (1L << (ST_EQUALS - 988)) | (1L << (ST_EXTERIORRING - 988)) | (1L << (ST_GEOMCOLLFROMTEXT - 988)) | (1L << (ST_GEOMCOLLFROMTXT - 988)) | (1L << (ST_GEOMCOLLFROMWKB - 988)) | (1L << (ST_GEOMETRYCOLLECTIONFROMTEXT - 988)) | (1L << (ST_GEOMETRYCOLLECTIONFROMWKB - 988)) | (1L << (ST_GEOMETRYFROMTEXT - 988)) | (1L << (ST_GEOMETRYFROMWKB - 988)) | (1L << (ST_GEOMETRYN - 988)) | (1L << (ST_GEOMETRYTYPE - 988)) | (1L << (ST_GEOMFROMTEXT - 988)))) != 0) || ((((_la - 1052)) & ~0x3f) == 0 && ((1L << (_la - 1052)) & ((1L << (ST_GEOMFROMWKB - 1052)) | (1L << (ST_INTERIORRINGN - 1052)) | (1L << (ST_INTERSECTION - 1052)) | (1L << (ST_INTERSECTS - 1052)) | (1L << (ST_ISCLOSED - 1052)) | (1L << (ST_ISEMPTY - 1052)) | (1L << (ST_ISSIMPLE - 1052)) | (1L << (ST_LINEFROMTEXT - 1052)) | (1L << (ST_LINEFROMWKB - 1052)) | (1L << (ST_LINESTRINGFROMTEXT - 1052)) | (1L << (ST_LINESTRINGFROMWKB - 1052)) | (1L << (ST_NUMGEOMETRIES - 1052)) | (1L << (ST_NUMINTERIORRING - 1052)) | (1L << (ST_NUMINTERIORRINGS - 1052)) | (1L << (ST_NUMPOINTS - 1052)) | (1L << (ST_OVERLAPS - 1052)) | (1L << (ST_POINTFROMTEXT - 1052)) | (1L << (ST_POINTFROMWKB - 1052)) | (1L << (ST_POINTN - 1052)) | (1L << (ST_POLYFROMTEXT - 1052)) | (1L << (ST_POLYFROMWKB - 1052)) | (1L << (ST_POLYGONFROMTEXT - 1052)) | (1L << (ST_POLYGONFROMWKB - 1052)) | (1L << (ST_SRID - 1052)) | (1L << (ST_STARTPOINT - 1052)) | (1L << (ST_SYMDIFFERENCE - 1052)) | (1L << (ST_TOUCHES - 1052)) | (1L << (ST_UNION - 1052)) | (1L << (ST_WITHIN - 1052)) | (1L << (ST_X - 1052)) | (1L << (ST_Y - 1052)) | (1L << (SUBDATE - 1052)) | (1L << (SUBSTRING_INDEX - 1052)) | (1L << (SUBTIME - 1052)) | (1L << (SYSTEM_USER - 1052)) | (1L << (SYSTEM - 1052)) | (1L << (TAN - 1052)) | (1L << (TELEMETRY_LOG_ADMIN - 1052)) | (1L << (TIMEDIFF - 1052)) | (1L << (TIMESTAMPADD - 1052)) | (1L << (TIMESTAMPDIFF - 1052)) | (1L << (TIME_FORMAT - 1052)) | (1L << (TIME_TO_SEC - 1052)) | (1L << (TOUCHES - 1052)) | (1L << (TO_BASE64 - 1052)) | (1L << (TO_DAYS - 1052)) | (1L << (TO_SECONDS - 1052)) | (1L << (TP_CONNECTION_ADMIN - 1052)) | (1L << (UCASE - 1052)) | (1L << (UNCOMPRESS - 1052)) | (1L << (UNCOMPRESSED_LENGTH - 1052)) | (1L << (UNHEX - 1052)) | (1L << (UNIX_TIMESTAMP - 1052)) | (1L << (UPDATEXML - 1052)) | (1L << (UPPER - 1052)) | (1L << (UUID - 1052)) | (1L << (UUID_SHORT - 1052)) | (1L << (VALIDATE_PASSWORD_STRENGTH - 1052)) | (1L << (VERSION - 1052)) | (1L << (VERSIONING - 1052)) | (1L << (WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS - 1052)) | (1L << (WEEKDAY - 1052)) | (1L << (WEEKOFYEAR - 1052)) | (1L << (WEIGHT_STRING - 1052)))) != 0) || ((((_la - 1116)) & ~0x3f) == 0 && ((1L << (_la - 1116)) & ((1L << (WITHIN - 1116)) | (1L << (YEARWEEK - 1116)) | (1L << (Y_FUNCTION - 1116)) | (1L << (X_FUNCTION - 1116)) | (1L << (VIA - 1116)) | (1L << (LASTVAL - 1116)) | (1L << (NEXTVAL - 1116)) | (1L << (SETVAL - 1116)) | (1L << (PREVIOUS - 1116)) | (1L << (PERSISTENT - 1116)) | (1L << (BINLOG_MONITOR - 1116)) | (1L << (BINLOG_REPLAY - 1116)) | (1L << (FEDERATED_ADMIN - 1116)) | (1L << (READ_ONLY_ADMIN - 1116)) | (1L << (REPLICA - 1116)) | (1L << (REPLICATION_MASTER_ADMIN - 1116)) | (1L << (MONITOR - 1116)) | (1L << (READ_ONLY - 1116)) | (1L << (REPLAY - 1116)) | (1L << (MOD - 1116)) | (1L << (CHARSET_REVERSE_QOUTE_STRING - 1116)) | (1L << (STRING_LITERAL - 1116)))) != 0) || _la==ID) {
						{
						setState(1882);
						((CheckTableConstraintContext)_localctx).name = uid();
						}
					}

					}
				}

				setState(1887);
				match(CHECK);
				setState(1888);
				match(LR_BRACKET);
				setState(1889);
				expression(0);
				setState(1890);
				match(RR_BRACKET);
				}
				break;
			case 5:
				_localctx = new ClusteringKeyTableConstraintContext(_localctx);
				enterOuterAlt(_localctx, 5);
				{
				setState(1892);
				match(CLUSTERING);
				setState(1893);
				match(KEY);
				setState(1895);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ARRAY) | (1L << ATTRIBUTE) | (1L << BUCKETS) | (1L << CONDITION) | (1L << CURRENT) | (1L << CURRENT_ROLE) | (1L << CURRENT_USER) | (1L << DATABASE) | (1L << DEFAULT) | (1L << DIAGNOSTICS) | (1L << EMPTY) | (1L << ENFORCED) | (1L << EXCEPT))) != 0) || ((((_la - 74)) & ~0x3f) == 0 && ((1L << (_la - 74)) & ((1L << (GROUP - 74)) | (1L << (GROUP_REPLICATION_STREAM - 74)) | (1L << (IF - 74)) | (1L << (IGNORED - 74)) | (1L << (INSERT - 74)) | (1L << (LATERAL - 74)) | (1L << (LEFT - 74)) | (1L << (LOCKED - 74)) | (1L << (MAXVALUE - 74)) | (1L << (MINVALUE - 74)) | (1L << (NUMBER - 74)) | (1L << (OPTIONAL - 74)) | (1L << (ORDER - 74)) | (1L << (PRIMARY - 74)))) != 0) || ((((_la - 142)) & ~0x3f) == 0 && ((1L << (_la - 142)) & ((1L << (REPEAT - 142)) | (1L << (REPLACE - 142)) | (1L << (RIGHT - 142)) | (1L << (SCHEMA - 142)) | (1L << (SKIP_ - 142)) | (1L << (SKIP_QUERY_REWRITE - 142)) | (1L << (STACKED - 142)) | (1L << (STATEMENT - 142)))) != 0) || ((((_la - 220)) & ~0x3f) == 0 && ((1L << (_la - 220)) & ((1L << (DATE - 220)) | (1L << (TIME - 220)) | (1L << (TIMESTAMP - 220)) | (1L << (DATETIME - 220)) | (1L << (YEAR - 220)) | (1L << (NATIONAL - 220)) | (1L << (BINARY - 220)) | (1L << (TEXT - 220)) | (1L << (ENUM - 220)) | (1L << (SERIAL - 220)) | (1L << (JSON_ARRAY - 220)) | (1L << (JSON_ARRAYAGG - 220)) | (1L << (JSON_ARRAY_APPEND - 220)) | (1L << (JSON_ARRAY_INSERT - 220)) | (1L << (JSON_CONTAINS - 220)) | (1L << (JSON_CONTAINS_PATH - 220)) | (1L << (JSON_DEPTH - 220)) | (1L << (JSON_EXTRACT - 220)) | (1L << (JSON_INSERT - 220)) | (1L << (JSON_KEYS - 220)) | (1L << (JSON_LENGTH - 220)) | (1L << (JSON_MERGE - 220)) | (1L << (JSON_MERGE_PATCH - 220)) | (1L << (JSON_MERGE_PRESERVE - 220)) | (1L << (JSON_OBJECT - 220)) | (1L << (JSON_OBJECTAGG - 220)) | (1L << (JSON_OVERLAPS - 220)) | (1L << (JSON_PRETTY - 220)) | (1L << (JSON_QUOTE - 220)) | (1L << (JSON_REMOVE - 220)) | (1L << (JSON_REPLACE - 220)) | (1L << (JSON_SCHEMA_VALID - 220)) | (1L << (JSON_SCHEMA_VALIDATION_REPORT - 220)) | (1L << (JSON_SEARCH - 220)) | (1L << (JSON_SET - 220)) | (1L << (JSON_STORAGE_FREE - 220)) | (1L << (JSON_STORAGE_SIZE - 220)) | (1L << (JSON_TABLE - 220)) | (1L << (JSON_TYPE - 220)) | (1L << (JSON_UNQUOTE - 220)))) != 0) || ((((_la - 284)) & ~0x3f) == 0 && ((1L << (_la - 284)) & ((1L << (JSON_VALID - 284)) | (1L << (JSON_VALUE - 284)) | (1L << (NESTED - 284)) | (1L << (ORDINALITY - 284)) | (1L << (PATH - 284)) | (1L << (AVG - 284)) | (1L << (BIT_AND - 284)) | (1L << (BIT_OR - 284)) | (1L << (BIT_XOR - 284)) | (1L << (COUNT - 284)) | (1L << (CUME_DIST - 284)) | (1L << (DENSE_RANK - 284)) | (1L << (FIRST_VALUE - 284)) | (1L << (GROUP_CONCAT - 284)) | (1L << (LAG - 284)) | (1L << (LAST_VALUE - 284)) | (1L << (LEAD - 284)) | (1L << (MAX - 284)) | (1L << (MIN - 284)) | (1L << (NTILE - 284)) | (1L << (NTH_VALUE - 284)) | (1L << (PERCENT_RANK - 284)) | (1L << (RANK - 284)) | (1L << (ROW_NUMBER - 284)) | (1L << (STD - 284)) | (1L << (STDDEV - 284)) | (1L << (STDDEV_POP - 284)) | (1L << (STDDEV_SAMP - 284)) | (1L << (SUM - 284)) | (1L << (VAR_POP - 284)) | (1L << (VAR_SAMP - 284)) | (1L << (VARIANCE - 284)) | (1L << (CURRENT_DATE - 284)) | (1L << (CURRENT_TIME - 284)) | (1L << (CURRENT_TIMESTAMP - 284)) | (1L << (LOCALTIME - 284)) | (1L << (CURDATE - 284)) | (1L << (CURTIME - 284)) | (1L << (DATE_ADD - 284)) | (1L << (DATE_SUB - 284)) | (1L << (LOCALTIMESTAMP - 284)) | (1L << (NOW - 284)) | (1L << (POSITION - 284)) | (1L << (SUBSTR - 284)) | (1L << (SUBSTRING - 284)) | (1L << (SYSDATE - 284)) | (1L << (TRIM - 284)) | (1L << (UTC_DATE - 284)) | (1L << (UTC_TIME - 284)) | (1L << (UTC_TIMESTAMP - 284)) | (1L << (ACCOUNT - 284)) | (1L << (ACTION - 284)) | (1L << (AFTER - 284)) | (1L << (AGGREGATE - 284)) | (1L << (ALGORITHM - 284)) | (1L << (ANY - 284)) | (1L << (AT - 284)) | (1L << (AUTHORS - 284)) | (1L << (AUTOCOMMIT - 284)) | (1L << (AUTOEXTEND_SIZE - 284)) | (1L << (AUTO_INCREMENT - 284)) | (1L << (AVG_ROW_LENGTH - 284)) | (1L << (BEGIN - 284)))) != 0) || ((((_la - 348)) & ~0x3f) == 0 && ((1L << (_la - 348)) & ((1L << (BINLOG - 348)) | (1L << (BIT - 348)) | (1L << (BLOCK - 348)) | (1L << (BOOL - 348)) | (1L << (BOOLEAN - 348)) | (1L << (BTREE - 348)) | (1L << (CACHE - 348)) | (1L << (CASCADED - 348)) | (1L << (CHAIN - 348)) | (1L << (CHANGED - 348)) | (1L << (CHANNEL - 348)) | (1L << (CHECKSUM - 348)) | (1L << (PAGE_CHECKSUM - 348)) | (1L << (CIPHER - 348)) | (1L << (CLASS_ORIGIN - 348)) | (1L << (CLIENT - 348)) | (1L << (CLOSE - 348)) | (1L << (CLUSTERING - 348)) | (1L << (COALESCE - 348)) | (1L << (CODE - 348)) | (1L << (COLUMNS - 348)) | (1L << (COLUMN_FORMAT - 348)) | (1L << (COLUMN_NAME - 348)) | (1L << (COMMENT - 348)) | (1L << (COMMIT - 348)) | (1L << (COMPACT - 348)) | (1L << (COMPLETION - 348)) | (1L << (COMPRESSED - 348)) | (1L << (COMPRESSION - 348)) | (1L << (CONCURRENT - 348)) | (1L << (CONNECT - 348)) | (1L << (CONNECTION - 348)) | (1L << (CONSISTENT - 348)) | (1L << (CONSTRAINT_CATALOG - 348)) | (1L << (CONSTRAINT_SCHEMA - 348)) | (1L << (CONSTRAINT_NAME - 348)) | (1L << (CONTAINS - 348)) | (1L << (CONTEXT - 348)) | (1L << (CONTRIBUTORS - 348)) | (1L << (COPY - 348)) | (1L << (CPU - 348)) | (1L << (CYCLE - 348)) | (1L << (CURSOR_NAME - 348)) | (1L << (DATA - 348)) | (1L << (DATAFILE - 348)) | (1L << (DEALLOCATE - 348)) | (1L << (DEFAULT_AUTH - 348)) | (1L << (DEFINER - 348)) | (1L << (DELAY_KEY_WRITE - 348)) | (1L << (DES_KEY_FILE - 348)) | (1L << (DIRECTORY - 348)) | (1L << (DISABLE - 348)) | (1L << (DISCARD - 348)) | (1L << (DISK - 348)) | (1L << (DO - 348)) | (1L << (DUMPFILE - 348)) | (1L << (DUPLICATE - 348)) | (1L << (DYNAMIC - 348)) | (1L << (ENABLE - 348)) | (1L << (ENCRYPTED - 348)) | (1L << (ENCRYPTION - 348)) | (1L << (ENCRYPTION_KEY_ID - 348)) | (1L << (END - 348)) | (1L << (ENDS - 348)))) != 0) || ((((_la - 412)) & ~0x3f) == 0 && ((1L << (_la - 412)) & ((1L << (ENGINE - 412)) | (1L << (ENGINES - 412)) | (1L << (ERROR - 412)) | (1L << (ERRORS - 412)) | (1L << (ESCAPE - 412)) | (1L << (EVEN - 412)) | (1L << (EVENT - 412)) | (1L << (EVENTS - 412)) | (1L << (EVERY - 412)) | (1L << (EXCHANGE - 412)) | (1L << (EXCLUSIVE - 412)) | (1L << (EXPIRE - 412)) | (1L << (EXPORT - 412)) | (1L << (EXTENDED - 412)) | (1L << (EXTENT_SIZE - 412)) | (1L << (FAILED_LOGIN_ATTEMPTS - 412)) | (1L << (FAST - 412)) | (1L << (FAULTS - 412)) | (1L << (FIELDS - 412)) | (1L << (FILE_BLOCK_SIZE - 412)) | (1L << (FILTER - 412)) | (1L << (FIRST - 412)) | (1L << (FIXED - 412)) | (1L << (FLUSH - 412)) | (1L << (FOLLOWS - 412)) | (1L << (FOUND - 412)) | (1L << (FULL - 412)) | (1L << (FUNCTION - 412)) | (1L << (GENERAL - 412)) | (1L << (GLOBAL - 412)) | (1L << (GRANTS - 412)) | (1L << (GROUP_REPLICATION - 412)) | (1L << (HANDLER - 412)) | (1L << (HASH - 412)) | (1L << (HELP - 412)) | (1L << (HISTORY - 412)) | (1L << (HOST - 412)) | (1L << (HOSTS - 412)) | (1L << (IDENTIFIED - 412)) | (1L << (IGNORE_SERVER_IDS - 412)) | (1L << (IMPORT - 412)) | (1L << (INCREMENT - 412)) | (1L << (INDEXES - 412)) | (1L << (INITIAL_SIZE - 412)) | (1L << (INPLACE - 412)) | (1L << (INSERT_METHOD - 412)) | (1L << (INSTALL - 412)) | (1L << (INSTANCE - 412)) | (1L << (INSTANT - 412)) | (1L << (INVISIBLE - 412)) | (1L << (INVOKER - 412)) | (1L << (IO - 412)) | (1L << (IO_THREAD - 412)) | (1L << (IPC - 412)) | (1L << (ISOLATION - 412)) | (1L << (ISSUER - 412)) | (1L << (JSON - 412)) | (1L << (KEY_BLOCK_SIZE - 412)) | (1L << (LANGUAGE - 412)) | (1L << (LAST - 412)) | (1L << (LEAVES - 412)) | (1L << (LESS - 412)) | (1L << (LEVEL - 412)))) != 0) || ((((_la - 476)) & ~0x3f) == 0 && ((1L << (_la - 476)) & ((1L << (LIST - 476)) | (1L << (LOCAL - 476)) | (1L << (LOGFILE - 476)) | (1L << (LOGS - 476)) | (1L << (MASTER - 476)) | (1L << (MASTER_AUTO_POSITION - 476)) | (1L << (MASTER_CONNECT_RETRY - 476)) | (1L << (MASTER_DELAY - 476)) | (1L << (MASTER_HEARTBEAT_PERIOD - 476)) | (1L << (MASTER_HOST - 476)) | (1L << (MASTER_LOG_FILE - 476)) | (1L << (MASTER_LOG_POS - 476)) | (1L << (MASTER_PASSWORD - 476)) | (1L << (MASTER_PORT - 476)) | (1L << (MASTER_RETRY_COUNT - 476)) | (1L << (MASTER_SSL - 476)) | (1L << (MASTER_SSL_CA - 476)) | (1L << (MASTER_SSL_CAPATH - 476)) | (1L << (MASTER_SSL_CERT - 476)) | (1L << (MASTER_SSL_CIPHER - 476)) | (1L << (MASTER_SSL_CRL - 476)) | (1L << (MASTER_SSL_CRLPATH - 476)) | (1L << (MASTER_SSL_KEY - 476)) | (1L << (MASTER_TLS_VERSION - 476)) | (1L << (MASTER_USER - 476)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 476)) | (1L << (MAX_QUERIES_PER_HOUR - 476)) | (1L << (MAX_ROWS - 476)) | (1L << (MAX_SIZE - 476)) | (1L << (MAX_UPDATES_PER_HOUR - 476)) | (1L << (MAX_USER_CONNECTIONS - 476)) | (1L << (MEDIUM - 476)) | (1L << (MEMBER - 476)) | (1L << (MERGE - 476)) | (1L << (MESSAGE_TEXT - 476)) | (1L << (MID - 476)) | (1L << (MIGRATE - 476)) | (1L << (MIN_ROWS - 476)) | (1L << (MODE - 476)) | (1L << (MODIFY - 476)) | (1L << (MUTEX - 476)) | (1L << (MYSQL - 476)) | (1L << (MYSQL_ERRNO - 476)) | (1L << (NAME - 476)) | (1L << (NAMES - 476)) | (1L << (NCHAR - 476)) | (1L << (NEVER - 476)) | (1L << (NEXT - 476)) | (1L << (NO - 476)) | (1L << (NOCACHE - 476)) | (1L << (NOCOPY - 476)) | (1L << (NOCYCLE - 476)) | (1L << (NOMAXVALUE - 476)) | (1L << (NOMINVALUE - 476)) | (1L << (NOWAIT - 476)) | (1L << (NODEGROUP - 476)) | (1L << (NONE - 476)) | (1L << (ODBC - 476)) | (1L << (OFFLINE - 476)) | (1L << (OFFSET - 476)) | (1L << (OF - 476)) | (1L << (OJ - 476)) | (1L << (OLD_PASSWORD - 476)) | (1L << (ONE - 476)))) != 0) || ((((_la - 540)) & ~0x3f) == 0 && ((1L << (_la - 540)) & ((1L << (ONLINE - 540)) | (1L << (ONLY - 540)) | (1L << (OPEN - 540)) | (1L << (OPTIMIZER_COSTS - 540)) | (1L << (OPTIONS - 540)) | (1L << (OWNER - 540)) | (1L << (PACK_KEYS - 540)) | (1L << (PAGE - 540)) | (1L << (PARSER - 540)) | (1L << (PARTIAL - 540)) | (1L << (PARTITIONING - 540)) | (1L << (PARTITIONS - 540)) | (1L << (PASSWORD - 540)) | (1L << (PASSWORD_LOCK_TIME - 540)) | (1L << (PHASE - 540)) | (1L << (PLUGIN - 540)) | (1L << (PLUGIN_DIR - 540)) | (1L << (PLUGINS - 540)) | (1L << (PORT - 540)) | (1L << (PRECEDES - 540)) | (1L << (PREPARE - 540)) | (1L << (PRESERVE - 540)) | (1L << (PREV - 540)) | (1L << (PROCESSLIST - 540)) | (1L << (PROFILE - 540)) | (1L << (PROFILES - 540)) | (1L << (PROXY - 540)) | (1L << (QUERY - 540)) | (1L << (QUICK - 540)) | (1L << (REBUILD - 540)) | (1L << (RECOVER - 540)) | (1L << (RECURSIVE - 540)) | (1L << (REDO_BUFFER_SIZE - 540)) | (1L << (REDUNDANT - 540)) | (1L << (RELAY - 540)) | (1L << (RELAY_LOG_FILE - 540)) | (1L << (RELAY_LOG_POS - 540)) | (1L << (RELAYLOG - 540)) | (1L << (REMOVE - 540)) | (1L << (REORGANIZE - 540)) | (1L << (REPAIR - 540)) | (1L << (REPLICATE_DO_DB - 540)) | (1L << (REPLICATE_DO_TABLE - 540)) | (1L << (REPLICATE_IGNORE_DB - 540)) | (1L << (REPLICATE_IGNORE_TABLE - 540)) | (1L << (REPLICATE_REWRITE_DB - 540)) | (1L << (REPLICATE_WILD_DO_TABLE - 540)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 540)) | (1L << (REPLICATION - 540)) | (1L << (RESET - 540)) | (1L << (RESTART - 540)) | (1L << (RESUME - 540)) | (1L << (RETURNED_SQLSTATE - 540)) | (1L << (RETURNING - 540)) | (1L << (RETURNS - 540)) | (1L << (REUSE - 540)) | (1L << (ROLE - 540)) | (1L << (ROLLBACK - 540)) | (1L << (ROLLUP - 540)) | (1L << (ROTATE - 540)) | (1L << (ROW - 540)))) != 0) || ((((_la - 604)) & ~0x3f) == 0 && ((1L << (_la - 604)) & ((1L << (ROWS - 604)) | (1L << (ROW_FORMAT - 604)) | (1L << (RTREE - 604)) | (1L << (SAVEPOINT - 604)) | (1L << (SCHEDULE - 604)) | (1L << (SECURITY - 604)) | (1L << (SEQUENCE - 604)) | (1L << (SERVER - 604)) | (1L << (SESSION - 604)) | (1L << (SHARE - 604)) | (1L << (SHARED - 604)) | (1L << (SIGNED - 604)) | (1L << (SIMPLE - 604)) | (1L << (SLAVE - 604)) | (1L << (SLOW - 604)) | (1L << (SNAPSHOT - 604)) | (1L << (SOCKET - 604)) | (1L << (SOME - 604)) | (1L << (SONAME - 604)) | (1L << (SOUNDS - 604)) | (1L << (SOURCE - 604)) | (1L << (SQL_AFTER_GTIDS - 604)) | (1L << (SQL_AFTER_MTS_GAPS - 604)) | (1L << (SQL_BEFORE_GTIDS - 604)) | (1L << (SQL_BUFFER_RESULT - 604)) | (1L << (SQL_CACHE - 604)) | (1L << (SQL_NO_CACHE - 604)) | (1L << (SQL_THREAD - 604)) | (1L << (START - 604)) | (1L << (STARTS - 604)) | (1L << (STATS_AUTO_RECALC - 604)) | (1L << (STATS_PERSISTENT - 604)) | (1L << (STATS_SAMPLE_PAGES - 604)) | (1L << (STATUS - 604)) | (1L << (STOP - 604)) | (1L << (STORAGE - 604)) | (1L << (STRING - 604)) | (1L << (SUBCLASS_ORIGIN - 604)) | (1L << (SUBJECT - 604)) | (1L << (SUBPARTITION - 604)) | (1L << (SUBPARTITIONS - 604)) | (1L << (SUSPEND - 604)) | (1L << (SWAPS - 604)) | (1L << (SWITCHES - 604)) | (1L << (TABLE_NAME - 604)) | (1L << (TABLESPACE - 604)) | (1L << (TABLE_TYPE - 604)) | (1L << (TEMPORARY - 604)) | (1L << (TEMPTABLE - 604)) | (1L << (THAN - 604)) | (1L << (TRADITIONAL - 604)) | (1L << (TRANSACTION - 604)) | (1L << (TRANSACTIONAL - 604)) | (1L << (TRIGGERS - 604)) | (1L << (TRUNCATE - 604)) | (1L << (UNBOUNDED - 604)) | (1L << (UNDEFINED - 604)) | (1L << (UNDOFILE - 604)) | (1L << (UNDO_BUFFER_SIZE - 604)) | (1L << (UNINSTALL - 604)) | (1L << (UNKNOWN - 604)) | (1L << (UNTIL - 604)) | (1L << (UPGRADE - 604)))) != 0) || ((((_la - 668)) & ~0x3f) == 0 && ((1L << (_la - 668)) & ((1L << (USER - 668)) | (1L << (USE_FRM - 668)) | (1L << (USER_RESOURCES - 668)) | (1L << (VALIDATION - 668)) | (1L << (VALUE - 668)) | (1L << (VARIABLES - 668)) | (1L << (VIEW - 668)) | (1L << (VIRTUAL - 668)) | (1L << (VISIBLE - 668)) | (1L << (WAIT - 668)) | (1L << (WARNINGS - 668)) | (1L << (WITHOUT - 668)) | (1L << (WORK - 668)) | (1L << (WRAPPER - 668)) | (1L << (X509 - 668)) | (1L << (XA - 668)) | (1L << (XML - 668)) | (1L << (YES - 668)) | (1L << (EUR - 668)) | (1L << (USA - 668)) | (1L << (JIS - 668)) | (1L << (ISO - 668)) | (1L << (INTERNAL - 668)) | (1L << (QUARTER - 668)) | (1L << (MONTH - 668)) | (1L << (DAY - 668)) | (1L << (HOUR - 668)) | (1L << (MINUTE - 668)) | (1L << (WEEK - 668)) | (1L << (SECOND - 668)) | (1L << (MICROSECOND - 668)) | (1L << (USER_STATISTICS - 668)) | (1L << (CLIENT_STATISTICS - 668)) | (1L << (INDEX_STATISTICS - 668)) | (1L << (TABLE_STATISTICS - 668)) | (1L << (FIREWALL_RULES - 668)) | (1L << (ADMIN - 668)) | (1L << (APPLICATION_PASSWORD_ADMIN - 668)) | (1L << (AUDIT_ADMIN - 668)) | (1L << (AUDIT_ABORT_EXEMPT - 668)) | (1L << (AUTHENTICATION_POLICY_ADMIN - 668)) | (1L << (BACKUP_ADMIN - 668)) | (1L << (BINLOG_ADMIN - 668)) | (1L << (BINLOG_ENCRYPTION_ADMIN - 668)) | (1L << (CLONE_ADMIN - 668)) | (1L << (CONNECTION_ADMIN - 668)) | (1L << (ENCRYPTION_KEY_ADMIN - 668)) | (1L << (EXECUTE - 668)) | (1L << (FILE - 668)) | (1L << (FIREWALL_ADMIN - 668)) | (1L << (FIREWALL_EXEMPT - 668)) | (1L << (FIREWALL_USER - 668)) | (1L << (FLUSH_OPTIMIZER_COSTS - 668)) | (1L << (FLUSH_STATUS - 668)) | (1L << (FLUSH_TABLES - 668)) | (1L << (FLUSH_USER_RESOURCES - 668)) | (1L << (GROUP_REPLICATION_ADMIN - 668)) | (1L << (INNODB_REDO_LOG_ARCHIVE - 668)) | (1L << (INNODB_REDO_LOG_ENABLE - 668)) | (1L << (INVOKE - 668)) | (1L << (LAMBDA - 668)) | (1L << (NDB_STORED_USER - 668)) | (1L << (PASSWORDLESS_USER_ADMIN - 668)))) != 0) || ((((_la - 732)) & ~0x3f) == 0 && ((1L << (_la - 732)) & ((1L << (PERSIST_RO_VARIABLES_ADMIN - 732)) | (1L << (PRIVILEGES - 732)) | (1L << (PROCESS - 732)) | (1L << (RELOAD - 732)) | (1L << (REPLICATION_APPLIER - 732)) | (1L << (REPLICATION_SLAVE_ADMIN - 732)) | (1L << (RESOURCE_GROUP_ADMIN - 732)) | (1L << (RESOURCE_GROUP_USER - 732)) | (1L << (ROLE_ADMIN - 732)) | (1L << (ROUTINE - 732)) | (1L << (S3 - 732)) | (1L << (SESSION_VARIABLES_ADMIN - 732)) | (1L << (SET_USER_ID - 732)) | (1L << (SHOW_ROUTINE - 732)) | (1L << (SHUTDOWN - 732)) | (1L << (SUPER - 732)) | (1L << (SYSTEM_VARIABLES_ADMIN - 732)) | (1L << (TABLES - 732)) | (1L << (TABLE_ENCRYPTION_ADMIN - 732)) | (1L << (VERSION_TOKEN_ADMIN - 732)) | (1L << (XA_RECOVER_ADMIN - 732)) | (1L << (ARMSCII8 - 732)) | (1L << (ASCII - 732)) | (1L << (BIG5 - 732)) | (1L << (CP1250 - 732)) | (1L << (CP1251 - 732)) | (1L << (CP1256 - 732)) | (1L << (CP1257 - 732)) | (1L << (CP850 - 732)) | (1L << (CP852 - 732)) | (1L << (CP866 - 732)) | (1L << (CP932 - 732)) | (1L << (DEC8 - 732)) | (1L << (EUCJPMS - 732)) | (1L << (EUCKR - 732)) | (1L << (GB18030 - 732)) | (1L << (GB2312 - 732)) | (1L << (GBK - 732)) | (1L << (GEOSTD8 - 732)) | (1L << (GREEK - 732)) | (1L << (HEBREW - 732)) | (1L << (HP8 - 732)) | (1L << (KEYBCS2 - 732)) | (1L << (KOI8R - 732)) | (1L << (KOI8U - 732)) | (1L << (LATIN1 - 732)) | (1L << (LATIN2 - 732)) | (1L << (LATIN5 - 732)) | (1L << (LATIN7 - 732)) | (1L << (MACCE - 732)) | (1L << (MACROMAN - 732)) | (1L << (SJIS - 732)) | (1L << (SWE7 - 732)) | (1L << (TIS620 - 732)) | (1L << (UCS2 - 732)) | (1L << (UJIS - 732)) | (1L << (UTF16 - 732)) | (1L << (UTF16LE - 732)) | (1L << (UTF32 - 732)) | (1L << (UTF8 - 732)) | (1L << (UTF8MB3 - 732)) | (1L << (UTF8MB4 - 732)) | (1L << (ARCHIVE - 732)))) != 0) || ((((_la - 796)) & ~0x3f) == 0 && ((1L << (_la - 796)) & ((1L << (BLACKHOLE - 796)) | (1L << (CSV - 796)) | (1L << (FEDERATED - 796)) | (1L << (INNODB - 796)) | (1L << (MEMORY - 796)) | (1L << (MRG_MYISAM - 796)) | (1L << (MYISAM - 796)) | (1L << (NDB - 796)) | (1L << (NDBCLUSTER - 796)) | (1L << (PERFORMANCE_SCHEMA - 796)) | (1L << (TOKUDB - 796)) | (1L << (REPEATABLE - 796)) | (1L << (COMMITTED - 796)) | (1L << (UNCOMMITTED - 796)) | (1L << (SERIALIZABLE - 796)) | (1L << (GEOMETRYCOLLECTION - 796)) | (1L << (GEOMETRY - 796)) | (1L << (LINESTRING - 796)) | (1L << (MULTILINESTRING - 796)) | (1L << (MULTIPOINT - 796)) | (1L << (MULTIPOLYGON - 796)) | (1L << (POINT - 796)) | (1L << (POLYGON - 796)) | (1L << (ABS - 796)) | (1L << (ACOS - 796)) | (1L << (ADDDATE - 796)) | (1L << (ADDTIME - 796)) | (1L << (AES_DECRYPT - 796)) | (1L << (AES_ENCRYPT - 796)) | (1L << (AREA - 796)) | (1L << (ASBINARY - 796)) | (1L << (ASIN - 796)) | (1L << (ASTEXT - 796)) | (1L << (ASWKB - 796)) | (1L << (ASWKT - 796)) | (1L << (ASYMMETRIC_DECRYPT - 796)) | (1L << (ASYMMETRIC_DERIVE - 796)) | (1L << (ASYMMETRIC_ENCRYPT - 796)) | (1L << (ASYMMETRIC_SIGN - 796)) | (1L << (ASYMMETRIC_VERIFY - 796)) | (1L << (ATAN - 796)) | (1L << (ATAN2 - 796)) | (1L << (BENCHMARK - 796)) | (1L << (BIN - 796)) | (1L << (BIT_COUNT - 796)) | (1L << (BIT_LENGTH - 796)) | (1L << (BUFFER - 796)) | (1L << (CATALOG_NAME - 796)) | (1L << (CEIL - 796)) | (1L << (CEILING - 796)) | (1L << (CENTROID - 796)) | (1L << (CHARACTER_LENGTH - 796)) | (1L << (CHARSET - 796)) | (1L << (CHAR_LENGTH - 796)) | (1L << (COERCIBILITY - 796)) | (1L << (COLLATION - 796)) | (1L << (COMPRESS - 796)) | (1L << (CONCAT - 796)) | (1L << (CONCAT_WS - 796)) | (1L << (CONNECTION_ID - 796)) | (1L << (CONV - 796)) | (1L << (CONVERT_TZ - 796)) | (1L << (COS - 796)))) != 0) || ((((_la - 860)) & ~0x3f) == 0 && ((1L << (_la - 860)) & ((1L << (COT - 860)) | (1L << (CRC32 - 860)) | (1L << (CREATE_ASYMMETRIC_PRIV_KEY - 860)) | (1L << (CREATE_ASYMMETRIC_PUB_KEY - 860)) | (1L << (CREATE_DH_PARAMETERS - 860)) | (1L << (CREATE_DIGEST - 860)) | (1L << (CROSSES - 860)) | (1L << (DATEDIFF - 860)) | (1L << (DATE_FORMAT - 860)) | (1L << (DAYNAME - 860)) | (1L << (DAYOFMONTH - 860)) | (1L << (DAYOFWEEK - 860)) | (1L << (DAYOFYEAR - 860)) | (1L << (DECODE - 860)) | (1L << (DEGREES - 860)) | (1L << (DES_DECRYPT - 860)) | (1L << (DES_ENCRYPT - 860)) | (1L << (DIMENSION - 860)) | (1L << (DISJOINT - 860)) | (1L << (ELT - 860)) | (1L << (ENCODE - 860)) | (1L << (ENCRYPT - 860)) | (1L << (ENDPOINT - 860)) | (1L << (ENGINE_ATTRIBUTE - 860)) | (1L << (ENVELOPE - 860)) | (1L << (EQUALS - 860)) | (1L << (EXP - 860)) | (1L << (EXPORT_SET - 860)) | (1L << (EXTERIORRING - 860)) | (1L << (EXTRACTVALUE - 860)) | (1L << (FIELD - 860)) | (1L << (FIND_IN_SET - 860)) | (1L << (FLOOR - 860)) | (1L << (FORMAT - 860)) | (1L << (FOUND_ROWS - 860)) | (1L << (FROM_BASE64 - 860)) | (1L << (FROM_DAYS - 860)) | (1L << (FROM_UNIXTIME - 860)) | (1L << (GEOMCOLLFROMTEXT - 860)) | (1L << (GEOMCOLLFROMWKB - 860)) | (1L << (GEOMETRYCOLLECTIONFROMTEXT - 860)) | (1L << (GEOMETRYCOLLECTIONFROMWKB - 860)) | (1L << (GEOMETRYFROMTEXT - 860)) | (1L << (GEOMETRYFROMWKB - 860)) | (1L << (GEOMETRYN - 860)) | (1L << (GEOMETRYTYPE - 860)) | (1L << (GEOMFROMTEXT - 860)) | (1L << (GEOMFROMWKB - 860)) | (1L << (GET_FORMAT - 860)) | (1L << (GET_LOCK - 860)) | (1L << (GLENGTH - 860)) | (1L << (GREATEST - 860)) | (1L << (GTID_SUBSET - 860)) | (1L << (GTID_SUBTRACT - 860)) | (1L << (HEX - 860)) | (1L << (IFNULL - 860)) | (1L << (INET6_ATON - 860)) | (1L << (INET6_NTOA - 860)) | (1L << (INET_ATON - 860)) | (1L << (INET_NTOA - 860)) | (1L << (INSTR - 860)) | (1L << (INTERIORRINGN - 860)) | (1L << (INTERSECTS - 860)) | (1L << (ISCLOSED - 860)))) != 0) || ((((_la - 924)) & ~0x3f) == 0 && ((1L << (_la - 924)) & ((1L << (ISEMPTY - 924)) | (1L << (ISNULL - 924)) | (1L << (ISSIMPLE - 924)) | (1L << (IS_FREE_LOCK - 924)) | (1L << (IS_IPV4 - 924)) | (1L << (IS_IPV4_COMPAT - 924)) | (1L << (IS_IPV4_MAPPED - 924)) | (1L << (IS_IPV6 - 924)) | (1L << (IS_USED_LOCK - 924)) | (1L << (LAST_INSERT_ID - 924)) | (1L << (LCASE - 924)) | (1L << (LEAST - 924)) | (1L << (LENGTH - 924)) | (1L << (LINEFROMTEXT - 924)) | (1L << (LINEFROMWKB - 924)) | (1L << (LINESTRINGFROMTEXT - 924)) | (1L << (LINESTRINGFROMWKB - 924)) | (1L << (LN - 924)) | (1L << (LOAD_FILE - 924)) | (1L << (LOCATE - 924)) | (1L << (LOG - 924)) | (1L << (LOG10 - 924)) | (1L << (LOG2 - 924)) | (1L << (LOWER - 924)) | (1L << (LPAD - 924)) | (1L << (LTRIM - 924)) | (1L << (MAKEDATE - 924)) | (1L << (MAKETIME - 924)) | (1L << (MAKE_SET - 924)) | (1L << (MASTER_POS_WAIT - 924)) | (1L << (MBRCONTAINS - 924)) | (1L << (MBRDISJOINT - 924)) | (1L << (MBREQUAL - 924)) | (1L << (MBRINTERSECTS - 924)) | (1L << (MBROVERLAPS - 924)) | (1L << (MBRTOUCHES - 924)) | (1L << (MBRWITHIN - 924)) | (1L << (MD5 - 924)) | (1L << (MLINEFROMTEXT - 924)) | (1L << (MLINEFROMWKB - 924)) | (1L << (MONTHNAME - 924)) | (1L << (MPOINTFROMTEXT - 924)) | (1L << (MPOINTFROMWKB - 924)) | (1L << (MPOLYFROMTEXT - 924)) | (1L << (MPOLYFROMWKB - 924)) | (1L << (MULTILINESTRINGFROMTEXT - 924)) | (1L << (MULTILINESTRINGFROMWKB - 924)) | (1L << (MULTIPOINTFROMTEXT - 924)) | (1L << (MULTIPOINTFROMWKB - 924)) | (1L << (MULTIPOLYGONFROMTEXT - 924)) | (1L << (MULTIPOLYGONFROMWKB - 924)) | (1L << (NAME_CONST - 924)) | (1L << (NULLIF - 924)) | (1L << (NUMGEOMETRIES - 924)) | (1L << (NUMINTERIORRINGS - 924)) | (1L << (NUMPOINTS - 924)) | (1L << (OCT - 924)) | (1L << (OCTET_LENGTH - 924)) | (1L << (ORD - 924)) | (1L << (OVERLAPS - 924)) | (1L << (PERIOD_ADD - 924)) | (1L << (PERIOD_DIFF - 924)) | (1L << (PI - 924)) | (1L << (POINTFROMTEXT - 924)))) != 0) || ((((_la - 988)) & ~0x3f) == 0 && ((1L << (_la - 988)) & ((1L << (POINTFROMWKB - 988)) | (1L << (POINTN - 988)) | (1L << (POLYFROMTEXT - 988)) | (1L << (POLYFROMWKB - 988)) | (1L << (POLYGONFROMTEXT - 988)) | (1L << (POLYGONFROMWKB - 988)) | (1L << (POW - 988)) | (1L << (POWER - 988)) | (1L << (QUOTE - 988)) | (1L << (RADIANS - 988)) | (1L << (RAND - 988)) | (1L << (RANDOM - 988)) | (1L << (RANDOM_BYTES - 988)) | (1L << (RELEASE_LOCK - 988)) | (1L << (REVERSE - 988)) | (1L << (ROUND - 988)) | (1L << (ROW_COUNT - 988)) | (1L << (RPAD - 988)) | (1L << (RTRIM - 988)) | (1L << (SEC_TO_TIME - 988)) | (1L << (SECONDARY_ENGINE_ATTRIBUTE - 988)) | (1L << (SENSITIVE_VARIABLES_OBSERVER - 988)) | (1L << (SESSION_USER - 988)) | (1L << (SHA - 988)) | (1L << (SHA1 - 988)) | (1L << (SHA2 - 988)) | (1L << (SCHEMA_NAME - 988)) | (1L << (SIGN - 988)) | (1L << (SIN - 988)) | (1L << (SLEEP - 988)) | (1L << (SOUNDEX - 988)) | (1L << (SQL_THREAD_WAIT_AFTER_GTIDS - 988)) | (1L << (SQRT - 988)) | (1L << (SRID - 988)) | (1L << (STARTPOINT - 988)) | (1L << (STRCMP - 988)) | (1L << (STR_TO_DATE - 988)) | (1L << (ST_AREA - 988)) | (1L << (ST_ASBINARY - 988)) | (1L << (ST_ASTEXT - 988)) | (1L << (ST_ASWKB - 988)) | (1L << (ST_ASWKT - 988)) | (1L << (ST_BUFFER - 988)) | (1L << (ST_CENTROID - 988)) | (1L << (ST_CONTAINS - 988)) | (1L << (ST_CROSSES - 988)) | (1L << (ST_DIFFERENCE - 988)) | (1L << (ST_DIMENSION - 988)) | (1L << (ST_DISJOINT - 988)) | (1L << (ST_DISTANCE - 988)) | (1L << (ST_ENDPOINT - 988)) | (1L << (ST_ENVELOPE - 988)) | (1L << (ST_EQUALS - 988)) | (1L << (ST_EXTERIORRING - 988)) | (1L << (ST_GEOMCOLLFROMTEXT - 988)) | (1L << (ST_GEOMCOLLFROMTXT - 988)) | (1L << (ST_GEOMCOLLFROMWKB - 988)) | (1L << (ST_GEOMETRYCOLLECTIONFROMTEXT - 988)) | (1L << (ST_GEOMETRYCOLLECTIONFROMWKB - 988)) | (1L << (ST_GEOMETRYFROMTEXT - 988)) | (1L << (ST_GEOMETRYFROMWKB - 988)) | (1L << (ST_GEOMETRYN - 988)) | (1L << (ST_GEOMETRYTYPE - 988)) | (1L << (ST_GEOMFROMTEXT - 988)))) != 0) || ((((_la - 1052)) & ~0x3f) == 0 && ((1L << (_la - 1052)) & ((1L << (ST_GEOMFROMWKB - 1052)) | (1L << (ST_INTERIORRINGN - 1052)) | (1L << (ST_INTERSECTION - 1052)) | (1L << (ST_INTERSECTS - 1052)) | (1L << (ST_ISCLOSED - 1052)) | (1L << (ST_ISEMPTY - 1052)) | (1L << (ST_ISSIMPLE - 1052)) | (1L << (ST_LINEFROMTEXT - 1052)) | (1L << (ST_LINEFROMWKB - 1052)) | (1L << (ST_LINESTRINGFROMTEXT - 1052)) | (1L << (ST_LINESTRINGFROMWKB - 1052)) | (1L << (ST_NUMGEOMETRIES - 1052)) | (1L << (ST_NUMINTERIORRING - 1052)) | (1L << (ST_NUMINTERIORRINGS - 1052)) | (1L << (ST_NUMPOINTS - 1052)) | (1L << (ST_OVERLAPS - 1052)) | (1L << (ST_POINTFROMTEXT - 1052)) | (1L << (ST_POINTFROMWKB - 1052)) | (1L << (ST_POINTN - 1052)) | (1L << (ST_POLYFROMTEXT - 1052)) | (1L << (ST_POLYFROMWKB - 1052)) | (1L << (ST_POLYGONFROMTEXT - 1052)) | (1L << (ST_POLYGONFROMWKB - 1052)) | (1L << (ST_SRID - 1052)) | (1L << (ST_STARTPOINT - 1052)) | (1L << (ST_SYMDIFFERENCE - 1052)) | (1L << (ST_TOUCHES - 1052)) | (1L << (ST_UNION - 1052)) | (1L << (ST_WITHIN - 1052)) | (1L << (ST_X - 1052)) | (1L << (ST_Y - 1052)) | (1L << (SUBDATE - 1052)) | (1L << (SUBSTRING_INDEX - 1052)) | (1L << (SUBTIME - 1052)) | (1L << (SYSTEM_USER - 1052)) | (1L << (SYSTEM - 1052)) | (1L << (TAN - 1052)) | (1L << (TELEMETRY_LOG_ADMIN - 1052)) | (1L << (TIMEDIFF - 1052)) | (1L << (TIMESTAMPADD - 1052)) | (1L << (TIMESTAMPDIFF - 1052)) | (1L << (TIME_FORMAT - 1052)) | (1L << (TIME_TO_SEC - 1052)) | (1L << (TOUCHES - 1052)) | (1L << (TO_BASE64 - 1052)) | (1L << (TO_DAYS - 1052)) | (1L << (TO_SECONDS - 1052)) | (1L << (TP_CONNECTION_ADMIN - 1052)) | (1L << (UCASE - 1052)) | (1L << (UNCOMPRESS - 1052)) | (1L << (UNCOMPRESSED_LENGTH - 1052)) | (1L << (UNHEX - 1052)) | (1L << (UNIX_TIMESTAMP - 1052)) | (1L << (UPDATEXML - 1052)) | (1L << (UPPER - 1052)) | (1L << (UUID - 1052)) | (1L << (UUID_SHORT - 1052)) | (1L << (VALIDATE_PASSWORD_STRENGTH - 1052)) | (1L << (VERSION - 1052)) | (1L << (VERSIONING - 1052)) | (1L << (WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS - 1052)) | (1L << (WEEKDAY - 1052)) | (1L << (WEEKOFYEAR - 1052)) | (1L << (WEIGHT_STRING - 1052)))) != 0) || ((((_la - 1116)) & ~0x3f) == 0 && ((1L << (_la - 1116)) & ((1L << (WITHIN - 1116)) | (1L << (YEARWEEK - 1116)) | (1L << (Y_FUNCTION - 1116)) | (1L << (X_FUNCTION - 1116)) | (1L << (VIA - 1116)) | (1L << (LASTVAL - 1116)) | (1L << (NEXTVAL - 1116)) | (1L << (SETVAL - 1116)) | (1L << (PREVIOUS - 1116)) | (1L << (PERSISTENT - 1116)) | (1L << (BINLOG_MONITOR - 1116)) | (1L << (BINLOG_REPLAY - 1116)) | (1L << (FEDERATED_ADMIN - 1116)) | (1L << (READ_ONLY_ADMIN - 1116)) | (1L << (REPLICA - 1116)) | (1L << (REPLICATION_MASTER_ADMIN - 1116)) | (1L << (MONITOR - 1116)) | (1L << (READ_ONLY - 1116)) | (1L << (REPLAY - 1116)) | (1L << (MOD - 1116)) | (1L << (CHARSET_REVERSE_QOUTE_STRING - 1116)) | (1L << (STRING_LITERAL - 1116)))) != 0) || _la==ID) {
					{
					setState(1894);
					((ClusteringKeyTableConstraintContext)_localctx).index = uid();
					}
				}

				setState(1897);
				indexColumnNames();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ReferenceDefinitionContext extends ParserRuleContext {
		public Token matchType;
		public TerminalNode REFERENCES() { return getToken(MySqlParser.REFERENCES, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public IndexColumnNamesContext indexColumnNames() {
			return getRuleContext(IndexColumnNamesContext.class,0);
		}
		public TerminalNode MATCH() { return getToken(MySqlParser.MATCH, 0); }
		public ReferenceActionContext referenceAction() {
			return getRuleContext(ReferenceActionContext.class,0);
		}
		public TerminalNode FULL() { return getToken(MySqlParser.FULL, 0); }
		public TerminalNode PARTIAL() { return getToken(MySqlParser.PARTIAL, 0); }
		public TerminalNode SIMPLE() { return getToken(MySqlParser.SIMPLE, 0); }
		public ReferenceDefinitionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_referenceDefinition; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterReferenceDefinition(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitReferenceDefinition(this);
		}
	}

	public final ReferenceDefinitionContext referenceDefinition() throws RecognitionException {
		ReferenceDefinitionContext _localctx = new ReferenceDefinitionContext(_ctx, getState());
		enterRule(_localctx, 104, RULE_referenceDefinition);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1900);
			match(REFERENCES);
			setState(1901);
			tableName();
			setState(1903);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,202,_ctx) ) {
			case 1:
				{
				setState(1902);
				indexColumnNames();
				}
				break;
			}
			setState(1907);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==MATCH) {
				{
				setState(1905);
				match(MATCH);
				setState(1906);
				((ReferenceDefinitionContext)_localctx).matchType = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==FULL || _la==PARTIAL || _la==SIMPLE) ) {
					((ReferenceDefinitionContext)_localctx).matchType = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(1910);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,204,_ctx) ) {
			case 1:
				{
				setState(1909);
				referenceAction();
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ReferenceActionContext extends ParserRuleContext {
		public ReferenceControlTypeContext onDelete;
		public ReferenceControlTypeContext onUpdate;
		public List ON() { return getTokens(MySqlParser.ON); }
		public TerminalNode ON(int i) {
			return getToken(MySqlParser.ON, i);
		}
		public TerminalNode DELETE() { return getToken(MySqlParser.DELETE, 0); }
		public List referenceControlType() {
			return getRuleContexts(ReferenceControlTypeContext.class);
		}
		public ReferenceControlTypeContext referenceControlType(int i) {
			return getRuleContext(ReferenceControlTypeContext.class,i);
		}
		public TerminalNode UPDATE() { return getToken(MySqlParser.UPDATE, 0); }
		public ReferenceActionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_referenceAction; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterReferenceAction(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitReferenceAction(this);
		}
	}

	public final ReferenceActionContext referenceAction() throws RecognitionException {
		ReferenceActionContext _localctx = new ReferenceActionContext(_ctx, getState());
		enterRule(_localctx, 106, RULE_referenceAction);
		try {
			setState(1928);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,207,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(1912);
				match(ON);
				setState(1913);
				match(DELETE);
				setState(1914);
				((ReferenceActionContext)_localctx).onDelete = referenceControlType();
				setState(1918);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,205,_ctx) ) {
				case 1:
					{
					setState(1915);
					match(ON);
					setState(1916);
					match(UPDATE);
					setState(1917);
					((ReferenceActionContext)_localctx).onUpdate = referenceControlType();
					}
					break;
				}
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(1920);
				match(ON);
				setState(1921);
				match(UPDATE);
				setState(1922);
				((ReferenceActionContext)_localctx).onUpdate = referenceControlType();
				setState(1926);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,206,_ctx) ) {
				case 1:
					{
					setState(1923);
					match(ON);
					setState(1924);
					match(DELETE);
					setState(1925);
					((ReferenceActionContext)_localctx).onDelete = referenceControlType();
					}
					break;
				}
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ReferenceControlTypeContext extends ParserRuleContext {
		public TerminalNode RESTRICT() { return getToken(MySqlParser.RESTRICT, 0); }
		public TerminalNode CASCADE() { return getToken(MySqlParser.CASCADE, 0); }
		public TerminalNode SET() { return getToken(MySqlParser.SET, 0); }
		public TerminalNode NULL_LITERAL() { return getToken(MySqlParser.NULL_LITERAL, 0); }
		public TerminalNode NO() { return getToken(MySqlParser.NO, 0); }
		public TerminalNode ACTION() { return getToken(MySqlParser.ACTION, 0); }
		public TerminalNode DEFAULT() { return getToken(MySqlParser.DEFAULT, 0); }
		public ReferenceControlTypeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_referenceControlType; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterReferenceControlType(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitReferenceControlType(this);
		}
	}

	public final ReferenceControlTypeContext referenceControlType() throws RecognitionException {
		ReferenceControlTypeContext _localctx = new ReferenceControlTypeContext(_ctx, getState());
		enterRule(_localctx, 108, RULE_referenceControlType);
		try {
			setState(1938);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,208,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(1930);
				match(RESTRICT);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(1931);
				match(CASCADE);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(1932);
				match(SET);
				setState(1933);
				match(NULL_LITERAL);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(1934);
				match(NO);
				setState(1935);
				match(ACTION);
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(1936);
				match(SET);
				setState(1937);
				match(DEFAULT);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IndexColumnDefinitionContext extends ParserRuleContext {
		public IndexColumnDefinitionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_indexColumnDefinition; }
	 
		public IndexColumnDefinitionContext() { }
		public void copyFrom(IndexColumnDefinitionContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class SpecialIndexDeclarationContext extends IndexColumnDefinitionContext {
		public Token indexFormat;
		public IndexColumnNamesContext indexColumnNames() {
			return getRuleContext(IndexColumnNamesContext.class,0);
		}
		public TerminalNode FULLTEXT() { return getToken(MySqlParser.FULLTEXT, 0); }
		public TerminalNode SPATIAL() { return getToken(MySqlParser.SPATIAL, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public List indexOption() {
			return getRuleContexts(IndexOptionContext.class);
		}
		public IndexOptionContext indexOption(int i) {
			return getRuleContext(IndexOptionContext.class,i);
		}
		public TerminalNode INDEX() { return getToken(MySqlParser.INDEX, 0); }
		public TerminalNode KEY() { return getToken(MySqlParser.KEY, 0); }
		public SpecialIndexDeclarationContext(IndexColumnDefinitionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSpecialIndexDeclaration(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSpecialIndexDeclaration(this);
		}
	}
	public static class SimpleIndexDeclarationContext extends IndexColumnDefinitionContext {
		public Token indexFormat;
		public IndexColumnNamesContext indexColumnNames() {
			return getRuleContext(IndexColumnNamesContext.class,0);
		}
		public TerminalNode INDEX() { return getToken(MySqlParser.INDEX, 0); }
		public TerminalNode KEY() { return getToken(MySqlParser.KEY, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public IndexTypeContext indexType() {
			return getRuleContext(IndexTypeContext.class,0);
		}
		public List indexOption() {
			return getRuleContexts(IndexOptionContext.class);
		}
		public IndexOptionContext indexOption(int i) {
			return getRuleContext(IndexOptionContext.class,i);
		}
		public SimpleIndexDeclarationContext(IndexColumnDefinitionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSimpleIndexDeclaration(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSimpleIndexDeclaration(this);
		}
	}

	public final IndexColumnDefinitionContext indexColumnDefinition() throws RecognitionException {
		IndexColumnDefinitionContext _localctx = new IndexColumnDefinitionContext(_ctx, getState());
		enterRule(_localctx, 110, RULE_indexColumnDefinition);
		int _la;
		try {
			setState(1968);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case INDEX:
			case KEY:
				_localctx = new SimpleIndexDeclarationContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(1940);
				((SimpleIndexDeclarationContext)_localctx).indexFormat = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==INDEX || _la==KEY) ) {
					((SimpleIndexDeclarationContext)_localctx).indexFormat = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(1942);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ARRAY) | (1L << ATTRIBUTE) | (1L << BUCKETS) | (1L << CONDITION) | (1L << CURRENT) | (1L << CURRENT_ROLE) | (1L << CURRENT_USER) | (1L << DATABASE) | (1L << DEFAULT) | (1L << DIAGNOSTICS) | (1L << EMPTY) | (1L << ENFORCED) | (1L << EXCEPT))) != 0) || ((((_la - 74)) & ~0x3f) == 0 && ((1L << (_la - 74)) & ((1L << (GROUP - 74)) | (1L << (GROUP_REPLICATION_STREAM - 74)) | (1L << (IF - 74)) | (1L << (IGNORED - 74)) | (1L << (INSERT - 74)) | (1L << (LATERAL - 74)) | (1L << (LEFT - 74)) | (1L << (LOCKED - 74)) | (1L << (MAXVALUE - 74)) | (1L << (MINVALUE - 74)) | (1L << (NUMBER - 74)) | (1L << (OPTIONAL - 74)) | (1L << (ORDER - 74)) | (1L << (PRIMARY - 74)))) != 0) || ((((_la - 142)) & ~0x3f) == 0 && ((1L << (_la - 142)) & ((1L << (REPEAT - 142)) | (1L << (REPLACE - 142)) | (1L << (RIGHT - 142)) | (1L << (SCHEMA - 142)) | (1L << (SKIP_ - 142)) | (1L << (SKIP_QUERY_REWRITE - 142)) | (1L << (STACKED - 142)) | (1L << (STATEMENT - 142)))) != 0) || ((((_la - 220)) & ~0x3f) == 0 && ((1L << (_la - 220)) & ((1L << (DATE - 220)) | (1L << (TIME - 220)) | (1L << (TIMESTAMP - 220)) | (1L << (DATETIME - 220)) | (1L << (YEAR - 220)) | (1L << (NATIONAL - 220)) | (1L << (BINARY - 220)) | (1L << (TEXT - 220)) | (1L << (ENUM - 220)) | (1L << (SERIAL - 220)) | (1L << (JSON_ARRAY - 220)) | (1L << (JSON_ARRAYAGG - 220)) | (1L << (JSON_ARRAY_APPEND - 220)) | (1L << (JSON_ARRAY_INSERT - 220)) | (1L << (JSON_CONTAINS - 220)) | (1L << (JSON_CONTAINS_PATH - 220)) | (1L << (JSON_DEPTH - 220)) | (1L << (JSON_EXTRACT - 220)) | (1L << (JSON_INSERT - 220)) | (1L << (JSON_KEYS - 220)) | (1L << (JSON_LENGTH - 220)) | (1L << (JSON_MERGE - 220)) | (1L << (JSON_MERGE_PATCH - 220)) | (1L << (JSON_MERGE_PRESERVE - 220)) | (1L << (JSON_OBJECT - 220)) | (1L << (JSON_OBJECTAGG - 220)) | (1L << (JSON_OVERLAPS - 220)) | (1L << (JSON_PRETTY - 220)) | (1L << (JSON_QUOTE - 220)) | (1L << (JSON_REMOVE - 220)) | (1L << (JSON_REPLACE - 220)) | (1L << (JSON_SCHEMA_VALID - 220)) | (1L << (JSON_SCHEMA_VALIDATION_REPORT - 220)) | (1L << (JSON_SEARCH - 220)) | (1L << (JSON_SET - 220)) | (1L << (JSON_STORAGE_FREE - 220)) | (1L << (JSON_STORAGE_SIZE - 220)) | (1L << (JSON_TABLE - 220)) | (1L << (JSON_TYPE - 220)) | (1L << (JSON_UNQUOTE - 220)))) != 0) || ((((_la - 284)) & ~0x3f) == 0 && ((1L << (_la - 284)) & ((1L << (JSON_VALID - 284)) | (1L << (JSON_VALUE - 284)) | (1L << (NESTED - 284)) | (1L << (ORDINALITY - 284)) | (1L << (PATH - 284)) | (1L << (AVG - 284)) | (1L << (BIT_AND - 284)) | (1L << (BIT_OR - 284)) | (1L << (BIT_XOR - 284)) | (1L << (COUNT - 284)) | (1L << (CUME_DIST - 284)) | (1L << (DENSE_RANK - 284)) | (1L << (FIRST_VALUE - 284)) | (1L << (GROUP_CONCAT - 284)) | (1L << (LAG - 284)) | (1L << (LAST_VALUE - 284)) | (1L << (LEAD - 284)) | (1L << (MAX - 284)) | (1L << (MIN - 284)) | (1L << (NTILE - 284)) | (1L << (NTH_VALUE - 284)) | (1L << (PERCENT_RANK - 284)) | (1L << (RANK - 284)) | (1L << (ROW_NUMBER - 284)) | (1L << (STD - 284)) | (1L << (STDDEV - 284)) | (1L << (STDDEV_POP - 284)) | (1L << (STDDEV_SAMP - 284)) | (1L << (SUM - 284)) | (1L << (VAR_POP - 284)) | (1L << (VAR_SAMP - 284)) | (1L << (VARIANCE - 284)) | (1L << (CURRENT_DATE - 284)) | (1L << (CURRENT_TIME - 284)) | (1L << (CURRENT_TIMESTAMP - 284)) | (1L << (LOCALTIME - 284)) | (1L << (CURDATE - 284)) | (1L << (CURTIME - 284)) | (1L << (DATE_ADD - 284)) | (1L << (DATE_SUB - 284)) | (1L << (LOCALTIMESTAMP - 284)) | (1L << (NOW - 284)) | (1L << (POSITION - 284)) | (1L << (SUBSTR - 284)) | (1L << (SUBSTRING - 284)) | (1L << (SYSDATE - 284)) | (1L << (TRIM - 284)) | (1L << (UTC_DATE - 284)) | (1L << (UTC_TIME - 284)) | (1L << (UTC_TIMESTAMP - 284)) | (1L << (ACCOUNT - 284)) | (1L << (ACTION - 284)) | (1L << (AFTER - 284)) | (1L << (AGGREGATE - 284)) | (1L << (ALGORITHM - 284)) | (1L << (ANY - 284)) | (1L << (AT - 284)) | (1L << (AUTHORS - 284)) | (1L << (AUTOCOMMIT - 284)) | (1L << (AUTOEXTEND_SIZE - 284)) | (1L << (AUTO_INCREMENT - 284)) | (1L << (AVG_ROW_LENGTH - 284)) | (1L << (BEGIN - 284)))) != 0) || ((((_la - 348)) & ~0x3f) == 0 && ((1L << (_la - 348)) & ((1L << (BINLOG - 348)) | (1L << (BIT - 348)) | (1L << (BLOCK - 348)) | (1L << (BOOL - 348)) | (1L << (BOOLEAN - 348)) | (1L << (BTREE - 348)) | (1L << (CACHE - 348)) | (1L << (CASCADED - 348)) | (1L << (CHAIN - 348)) | (1L << (CHANGED - 348)) | (1L << (CHANNEL - 348)) | (1L << (CHECKSUM - 348)) | (1L << (PAGE_CHECKSUM - 348)) | (1L << (CIPHER - 348)) | (1L << (CLASS_ORIGIN - 348)) | (1L << (CLIENT - 348)) | (1L << (CLOSE - 348)) | (1L << (CLUSTERING - 348)) | (1L << (COALESCE - 348)) | (1L << (CODE - 348)) | (1L << (COLUMNS - 348)) | (1L << (COLUMN_FORMAT - 348)) | (1L << (COLUMN_NAME - 348)) | (1L << (COMMENT - 348)) | (1L << (COMMIT - 348)) | (1L << (COMPACT - 348)) | (1L << (COMPLETION - 348)) | (1L << (COMPRESSED - 348)) | (1L << (COMPRESSION - 348)) | (1L << (CONCURRENT - 348)) | (1L << (CONNECT - 348)) | (1L << (CONNECTION - 348)) | (1L << (CONSISTENT - 348)) | (1L << (CONSTRAINT_CATALOG - 348)) | (1L << (CONSTRAINT_SCHEMA - 348)) | (1L << (CONSTRAINT_NAME - 348)) | (1L << (CONTAINS - 348)) | (1L << (CONTEXT - 348)) | (1L << (CONTRIBUTORS - 348)) | (1L << (COPY - 348)) | (1L << (CPU - 348)) | (1L << (CYCLE - 348)) | (1L << (CURSOR_NAME - 348)) | (1L << (DATA - 348)) | (1L << (DATAFILE - 348)) | (1L << (DEALLOCATE - 348)) | (1L << (DEFAULT_AUTH - 348)) | (1L << (DEFINER - 348)) | (1L << (DELAY_KEY_WRITE - 348)) | (1L << (DES_KEY_FILE - 348)) | (1L << (DIRECTORY - 348)) | (1L << (DISABLE - 348)) | (1L << (DISCARD - 348)) | (1L << (DISK - 348)) | (1L << (DO - 348)) | (1L << (DUMPFILE - 348)) | (1L << (DUPLICATE - 348)) | (1L << (DYNAMIC - 348)) | (1L << (ENABLE - 348)) | (1L << (ENCRYPTED - 348)) | (1L << (ENCRYPTION - 348)) | (1L << (ENCRYPTION_KEY_ID - 348)) | (1L << (END - 348)) | (1L << (ENDS - 348)))) != 0) || ((((_la - 412)) & ~0x3f) == 0 && ((1L << (_la - 412)) & ((1L << (ENGINE - 412)) | (1L << (ENGINES - 412)) | (1L << (ERROR - 412)) | (1L << (ERRORS - 412)) | (1L << (ESCAPE - 412)) | (1L << (EVEN - 412)) | (1L << (EVENT - 412)) | (1L << (EVENTS - 412)) | (1L << (EVERY - 412)) | (1L << (EXCHANGE - 412)) | (1L << (EXCLUSIVE - 412)) | (1L << (EXPIRE - 412)) | (1L << (EXPORT - 412)) | (1L << (EXTENDED - 412)) | (1L << (EXTENT_SIZE - 412)) | (1L << (FAILED_LOGIN_ATTEMPTS - 412)) | (1L << (FAST - 412)) | (1L << (FAULTS - 412)) | (1L << (FIELDS - 412)) | (1L << (FILE_BLOCK_SIZE - 412)) | (1L << (FILTER - 412)) | (1L << (FIRST - 412)) | (1L << (FIXED - 412)) | (1L << (FLUSH - 412)) | (1L << (FOLLOWS - 412)) | (1L << (FOUND - 412)) | (1L << (FULL - 412)) | (1L << (FUNCTION - 412)) | (1L << (GENERAL - 412)) | (1L << (GLOBAL - 412)) | (1L << (GRANTS - 412)) | (1L << (GROUP_REPLICATION - 412)) | (1L << (HANDLER - 412)) | (1L << (HASH - 412)) | (1L << (HELP - 412)) | (1L << (HISTORY - 412)) | (1L << (HOST - 412)) | (1L << (HOSTS - 412)) | (1L << (IDENTIFIED - 412)) | (1L << (IGNORE_SERVER_IDS - 412)) | (1L << (IMPORT - 412)) | (1L << (INCREMENT - 412)) | (1L << (INDEXES - 412)) | (1L << (INITIAL_SIZE - 412)) | (1L << (INPLACE - 412)) | (1L << (INSERT_METHOD - 412)) | (1L << (INSTALL - 412)) | (1L << (INSTANCE - 412)) | (1L << (INSTANT - 412)) | (1L << (INVISIBLE - 412)) | (1L << (INVOKER - 412)) | (1L << (IO - 412)) | (1L << (IO_THREAD - 412)) | (1L << (IPC - 412)) | (1L << (ISOLATION - 412)) | (1L << (ISSUER - 412)) | (1L << (JSON - 412)) | (1L << (KEY_BLOCK_SIZE - 412)) | (1L << (LANGUAGE - 412)) | (1L << (LAST - 412)) | (1L << (LEAVES - 412)) | (1L << (LESS - 412)) | (1L << (LEVEL - 412)))) != 0) || ((((_la - 476)) & ~0x3f) == 0 && ((1L << (_la - 476)) & ((1L << (LIST - 476)) | (1L << (LOCAL - 476)) | (1L << (LOGFILE - 476)) | (1L << (LOGS - 476)) | (1L << (MASTER - 476)) | (1L << (MASTER_AUTO_POSITION - 476)) | (1L << (MASTER_CONNECT_RETRY - 476)) | (1L << (MASTER_DELAY - 476)) | (1L << (MASTER_HEARTBEAT_PERIOD - 476)) | (1L << (MASTER_HOST - 476)) | (1L << (MASTER_LOG_FILE - 476)) | (1L << (MASTER_LOG_POS - 476)) | (1L << (MASTER_PASSWORD - 476)) | (1L << (MASTER_PORT - 476)) | (1L << (MASTER_RETRY_COUNT - 476)) | (1L << (MASTER_SSL - 476)) | (1L << (MASTER_SSL_CA - 476)) | (1L << (MASTER_SSL_CAPATH - 476)) | (1L << (MASTER_SSL_CERT - 476)) | (1L << (MASTER_SSL_CIPHER - 476)) | (1L << (MASTER_SSL_CRL - 476)) | (1L << (MASTER_SSL_CRLPATH - 476)) | (1L << (MASTER_SSL_KEY - 476)) | (1L << (MASTER_TLS_VERSION - 476)) | (1L << (MASTER_USER - 476)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 476)) | (1L << (MAX_QUERIES_PER_HOUR - 476)) | (1L << (MAX_ROWS - 476)) | (1L << (MAX_SIZE - 476)) | (1L << (MAX_UPDATES_PER_HOUR - 476)) | (1L << (MAX_USER_CONNECTIONS - 476)) | (1L << (MEDIUM - 476)) | (1L << (MEMBER - 476)) | (1L << (MERGE - 476)) | (1L << (MESSAGE_TEXT - 476)) | (1L << (MID - 476)) | (1L << (MIGRATE - 476)) | (1L << (MIN_ROWS - 476)) | (1L << (MODE - 476)) | (1L << (MODIFY - 476)) | (1L << (MUTEX - 476)) | (1L << (MYSQL - 476)) | (1L << (MYSQL_ERRNO - 476)) | (1L << (NAME - 476)) | (1L << (NAMES - 476)) | (1L << (NCHAR - 476)) | (1L << (NEVER - 476)) | (1L << (NEXT - 476)) | (1L << (NO - 476)) | (1L << (NOCACHE - 476)) | (1L << (NOCOPY - 476)) | (1L << (NOCYCLE - 476)) | (1L << (NOMAXVALUE - 476)) | (1L << (NOMINVALUE - 476)) | (1L << (NOWAIT - 476)) | (1L << (NODEGROUP - 476)) | (1L << (NONE - 476)) | (1L << (ODBC - 476)) | (1L << (OFFLINE - 476)) | (1L << (OFFSET - 476)) | (1L << (OF - 476)) | (1L << (OJ - 476)) | (1L << (OLD_PASSWORD - 476)) | (1L << (ONE - 476)))) != 0) || ((((_la - 540)) & ~0x3f) == 0 && ((1L << (_la - 540)) & ((1L << (ONLINE - 540)) | (1L << (ONLY - 540)) | (1L << (OPEN - 540)) | (1L << (OPTIMIZER_COSTS - 540)) | (1L << (OPTIONS - 540)) | (1L << (OWNER - 540)) | (1L << (PACK_KEYS - 540)) | (1L << (PAGE - 540)) | (1L << (PARSER - 540)) | (1L << (PARTIAL - 540)) | (1L << (PARTITIONING - 540)) | (1L << (PARTITIONS - 540)) | (1L << (PASSWORD - 540)) | (1L << (PASSWORD_LOCK_TIME - 540)) | (1L << (PHASE - 540)) | (1L << (PLUGIN - 540)) | (1L << (PLUGIN_DIR - 540)) | (1L << (PLUGINS - 540)) | (1L << (PORT - 540)) | (1L << (PRECEDES - 540)) | (1L << (PREPARE - 540)) | (1L << (PRESERVE - 540)) | (1L << (PREV - 540)) | (1L << (PROCESSLIST - 540)) | (1L << (PROFILE - 540)) | (1L << (PROFILES - 540)) | (1L << (PROXY - 540)) | (1L << (QUERY - 540)) | (1L << (QUICK - 540)) | (1L << (REBUILD - 540)) | (1L << (RECOVER - 540)) | (1L << (RECURSIVE - 540)) | (1L << (REDO_BUFFER_SIZE - 540)) | (1L << (REDUNDANT - 540)) | (1L << (RELAY - 540)) | (1L << (RELAY_LOG_FILE - 540)) | (1L << (RELAY_LOG_POS - 540)) | (1L << (RELAYLOG - 540)) | (1L << (REMOVE - 540)) | (1L << (REORGANIZE - 540)) | (1L << (REPAIR - 540)) | (1L << (REPLICATE_DO_DB - 540)) | (1L << (REPLICATE_DO_TABLE - 540)) | (1L << (REPLICATE_IGNORE_DB - 540)) | (1L << (REPLICATE_IGNORE_TABLE - 540)) | (1L << (REPLICATE_REWRITE_DB - 540)) | (1L << (REPLICATE_WILD_DO_TABLE - 540)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 540)) | (1L << (REPLICATION - 540)) | (1L << (RESET - 540)) | (1L << (RESTART - 540)) | (1L << (RESUME - 540)) | (1L << (RETURNED_SQLSTATE - 540)) | (1L << (RETURNING - 540)) | (1L << (RETURNS - 540)) | (1L << (REUSE - 540)) | (1L << (ROLE - 540)) | (1L << (ROLLBACK - 540)) | (1L << (ROLLUP - 540)) | (1L << (ROTATE - 540)) | (1L << (ROW - 540)))) != 0) || ((((_la - 604)) & ~0x3f) == 0 && ((1L << (_la - 604)) & ((1L << (ROWS - 604)) | (1L << (ROW_FORMAT - 604)) | (1L << (RTREE - 604)) | (1L << (SAVEPOINT - 604)) | (1L << (SCHEDULE - 604)) | (1L << (SECURITY - 604)) | (1L << (SEQUENCE - 604)) | (1L << (SERVER - 604)) | (1L << (SESSION - 604)) | (1L << (SHARE - 604)) | (1L << (SHARED - 604)) | (1L << (SIGNED - 604)) | (1L << (SIMPLE - 604)) | (1L << (SLAVE - 604)) | (1L << (SLOW - 604)) | (1L << (SNAPSHOT - 604)) | (1L << (SOCKET - 604)) | (1L << (SOME - 604)) | (1L << (SONAME - 604)) | (1L << (SOUNDS - 604)) | (1L << (SOURCE - 604)) | (1L << (SQL_AFTER_GTIDS - 604)) | (1L << (SQL_AFTER_MTS_GAPS - 604)) | (1L << (SQL_BEFORE_GTIDS - 604)) | (1L << (SQL_BUFFER_RESULT - 604)) | (1L << (SQL_CACHE - 604)) | (1L << (SQL_NO_CACHE - 604)) | (1L << (SQL_THREAD - 604)) | (1L << (START - 604)) | (1L << (STARTS - 604)) | (1L << (STATS_AUTO_RECALC - 604)) | (1L << (STATS_PERSISTENT - 604)) | (1L << (STATS_SAMPLE_PAGES - 604)) | (1L << (STATUS - 604)) | (1L << (STOP - 604)) | (1L << (STORAGE - 604)) | (1L << (STRING - 604)) | (1L << (SUBCLASS_ORIGIN - 604)) | (1L << (SUBJECT - 604)) | (1L << (SUBPARTITION - 604)) | (1L << (SUBPARTITIONS - 604)) | (1L << (SUSPEND - 604)) | (1L << (SWAPS - 604)) | (1L << (SWITCHES - 604)) | (1L << (TABLE_NAME - 604)) | (1L << (TABLESPACE - 604)) | (1L << (TABLE_TYPE - 604)) | (1L << (TEMPORARY - 604)) | (1L << (TEMPTABLE - 604)) | (1L << (THAN - 604)) | (1L << (TRADITIONAL - 604)) | (1L << (TRANSACTION - 604)) | (1L << (TRANSACTIONAL - 604)) | (1L << (TRIGGERS - 604)) | (1L << (TRUNCATE - 604)) | (1L << (UNBOUNDED - 604)) | (1L << (UNDEFINED - 604)) | (1L << (UNDOFILE - 604)) | (1L << (UNDO_BUFFER_SIZE - 604)) | (1L << (UNINSTALL - 604)) | (1L << (UNKNOWN - 604)) | (1L << (UNTIL - 604)) | (1L << (UPGRADE - 604)))) != 0) || ((((_la - 668)) & ~0x3f) == 0 && ((1L << (_la - 668)) & ((1L << (USER - 668)) | (1L << (USE_FRM - 668)) | (1L << (USER_RESOURCES - 668)) | (1L << (VALIDATION - 668)) | (1L << (VALUE - 668)) | (1L << (VARIABLES - 668)) | (1L << (VIEW - 668)) | (1L << (VIRTUAL - 668)) | (1L << (VISIBLE - 668)) | (1L << (WAIT - 668)) | (1L << (WARNINGS - 668)) | (1L << (WITHOUT - 668)) | (1L << (WORK - 668)) | (1L << (WRAPPER - 668)) | (1L << (X509 - 668)) | (1L << (XA - 668)) | (1L << (XML - 668)) | (1L << (YES - 668)) | (1L << (EUR - 668)) | (1L << (USA - 668)) | (1L << (JIS - 668)) | (1L << (ISO - 668)) | (1L << (INTERNAL - 668)) | (1L << (QUARTER - 668)) | (1L << (MONTH - 668)) | (1L << (DAY - 668)) | (1L << (HOUR - 668)) | (1L << (MINUTE - 668)) | (1L << (WEEK - 668)) | (1L << (SECOND - 668)) | (1L << (MICROSECOND - 668)) | (1L << (USER_STATISTICS - 668)) | (1L << (CLIENT_STATISTICS - 668)) | (1L << (INDEX_STATISTICS - 668)) | (1L << (TABLE_STATISTICS - 668)) | (1L << (FIREWALL_RULES - 668)) | (1L << (ADMIN - 668)) | (1L << (APPLICATION_PASSWORD_ADMIN - 668)) | (1L << (AUDIT_ADMIN - 668)) | (1L << (AUDIT_ABORT_EXEMPT - 668)) | (1L << (AUTHENTICATION_POLICY_ADMIN - 668)) | (1L << (BACKUP_ADMIN - 668)) | (1L << (BINLOG_ADMIN - 668)) | (1L << (BINLOG_ENCRYPTION_ADMIN - 668)) | (1L << (CLONE_ADMIN - 668)) | (1L << (CONNECTION_ADMIN - 668)) | (1L << (ENCRYPTION_KEY_ADMIN - 668)) | (1L << (EXECUTE - 668)) | (1L << (FILE - 668)) | (1L << (FIREWALL_ADMIN - 668)) | (1L << (FIREWALL_EXEMPT - 668)) | (1L << (FIREWALL_USER - 668)) | (1L << (FLUSH_OPTIMIZER_COSTS - 668)) | (1L << (FLUSH_STATUS - 668)) | (1L << (FLUSH_TABLES - 668)) | (1L << (FLUSH_USER_RESOURCES - 668)) | (1L << (GROUP_REPLICATION_ADMIN - 668)) | (1L << (INNODB_REDO_LOG_ARCHIVE - 668)) | (1L << (INNODB_REDO_LOG_ENABLE - 668)) | (1L << (INVOKE - 668)) | (1L << (LAMBDA - 668)) | (1L << (NDB_STORED_USER - 668)) | (1L << (PASSWORDLESS_USER_ADMIN - 668)))) != 0) || ((((_la - 732)) & ~0x3f) == 0 && ((1L << (_la - 732)) & ((1L << (PERSIST_RO_VARIABLES_ADMIN - 732)) | (1L << (PRIVILEGES - 732)) | (1L << (PROCESS - 732)) | (1L << (RELOAD - 732)) | (1L << (REPLICATION_APPLIER - 732)) | (1L << (REPLICATION_SLAVE_ADMIN - 732)) | (1L << (RESOURCE_GROUP_ADMIN - 732)) | (1L << (RESOURCE_GROUP_USER - 732)) | (1L << (ROLE_ADMIN - 732)) | (1L << (ROUTINE - 732)) | (1L << (S3 - 732)) | (1L << (SESSION_VARIABLES_ADMIN - 732)) | (1L << (SET_USER_ID - 732)) | (1L << (SHOW_ROUTINE - 732)) | (1L << (SHUTDOWN - 732)) | (1L << (SUPER - 732)) | (1L << (SYSTEM_VARIABLES_ADMIN - 732)) | (1L << (TABLES - 732)) | (1L << (TABLE_ENCRYPTION_ADMIN - 732)) | (1L << (VERSION_TOKEN_ADMIN - 732)) | (1L << (XA_RECOVER_ADMIN - 732)) | (1L << (ARMSCII8 - 732)) | (1L << (ASCII - 732)) | (1L << (BIG5 - 732)) | (1L << (CP1250 - 732)) | (1L << (CP1251 - 732)) | (1L << (CP1256 - 732)) | (1L << (CP1257 - 732)) | (1L << (CP850 - 732)) | (1L << (CP852 - 732)) | (1L << (CP866 - 732)) | (1L << (CP932 - 732)) | (1L << (DEC8 - 732)) | (1L << (EUCJPMS - 732)) | (1L << (EUCKR - 732)) | (1L << (GB18030 - 732)) | (1L << (GB2312 - 732)) | (1L << (GBK - 732)) | (1L << (GEOSTD8 - 732)) | (1L << (GREEK - 732)) | (1L << (HEBREW - 732)) | (1L << (HP8 - 732)) | (1L << (KEYBCS2 - 732)) | (1L << (KOI8R - 732)) | (1L << (KOI8U - 732)) | (1L << (LATIN1 - 732)) | (1L << (LATIN2 - 732)) | (1L << (LATIN5 - 732)) | (1L << (LATIN7 - 732)) | (1L << (MACCE - 732)) | (1L << (MACROMAN - 732)) | (1L << (SJIS - 732)) | (1L << (SWE7 - 732)) | (1L << (TIS620 - 732)) | (1L << (UCS2 - 732)) | (1L << (UJIS - 732)) | (1L << (UTF16 - 732)) | (1L << (UTF16LE - 732)) | (1L << (UTF32 - 732)) | (1L << (UTF8 - 732)) | (1L << (UTF8MB3 - 732)) | (1L << (UTF8MB4 - 732)) | (1L << (ARCHIVE - 732)))) != 0) || ((((_la - 796)) & ~0x3f) == 0 && ((1L << (_la - 796)) & ((1L << (BLACKHOLE - 796)) | (1L << (CSV - 796)) | (1L << (FEDERATED - 796)) | (1L << (INNODB - 796)) | (1L << (MEMORY - 796)) | (1L << (MRG_MYISAM - 796)) | (1L << (MYISAM - 796)) | (1L << (NDB - 796)) | (1L << (NDBCLUSTER - 796)) | (1L << (PERFORMANCE_SCHEMA - 796)) | (1L << (TOKUDB - 796)) | (1L << (REPEATABLE - 796)) | (1L << (COMMITTED - 796)) | (1L << (UNCOMMITTED - 796)) | (1L << (SERIALIZABLE - 796)) | (1L << (GEOMETRYCOLLECTION - 796)) | (1L << (GEOMETRY - 796)) | (1L << (LINESTRING - 796)) | (1L << (MULTILINESTRING - 796)) | (1L << (MULTIPOINT - 796)) | (1L << (MULTIPOLYGON - 796)) | (1L << (POINT - 796)) | (1L << (POLYGON - 796)) | (1L << (ABS - 796)) | (1L << (ACOS - 796)) | (1L << (ADDDATE - 796)) | (1L << (ADDTIME - 796)) | (1L << (AES_DECRYPT - 796)) | (1L << (AES_ENCRYPT - 796)) | (1L << (AREA - 796)) | (1L << (ASBINARY - 796)) | (1L << (ASIN - 796)) | (1L << (ASTEXT - 796)) | (1L << (ASWKB - 796)) | (1L << (ASWKT - 796)) | (1L << (ASYMMETRIC_DECRYPT - 796)) | (1L << (ASYMMETRIC_DERIVE - 796)) | (1L << (ASYMMETRIC_ENCRYPT - 796)) | (1L << (ASYMMETRIC_SIGN - 796)) | (1L << (ASYMMETRIC_VERIFY - 796)) | (1L << (ATAN - 796)) | (1L << (ATAN2 - 796)) | (1L << (BENCHMARK - 796)) | (1L << (BIN - 796)) | (1L << (BIT_COUNT - 796)) | (1L << (BIT_LENGTH - 796)) | (1L << (BUFFER - 796)) | (1L << (CATALOG_NAME - 796)) | (1L << (CEIL - 796)) | (1L << (CEILING - 796)) | (1L << (CENTROID - 796)) | (1L << (CHARACTER_LENGTH - 796)) | (1L << (CHARSET - 796)) | (1L << (CHAR_LENGTH - 796)) | (1L << (COERCIBILITY - 796)) | (1L << (COLLATION - 796)) | (1L << (COMPRESS - 796)) | (1L << (CONCAT - 796)) | (1L << (CONCAT_WS - 796)) | (1L << (CONNECTION_ID - 796)) | (1L << (CONV - 796)) | (1L << (CONVERT_TZ - 796)) | (1L << (COS - 796)))) != 0) || ((((_la - 860)) & ~0x3f) == 0 && ((1L << (_la - 860)) & ((1L << (COT - 860)) | (1L << (CRC32 - 860)) | (1L << (CREATE_ASYMMETRIC_PRIV_KEY - 860)) | (1L << (CREATE_ASYMMETRIC_PUB_KEY - 860)) | (1L << (CREATE_DH_PARAMETERS - 860)) | (1L << (CREATE_DIGEST - 860)) | (1L << (CROSSES - 860)) | (1L << (DATEDIFF - 860)) | (1L << (DATE_FORMAT - 860)) | (1L << (DAYNAME - 860)) | (1L << (DAYOFMONTH - 860)) | (1L << (DAYOFWEEK - 860)) | (1L << (DAYOFYEAR - 860)) | (1L << (DECODE - 860)) | (1L << (DEGREES - 860)) | (1L << (DES_DECRYPT - 860)) | (1L << (DES_ENCRYPT - 860)) | (1L << (DIMENSION - 860)) | (1L << (DISJOINT - 860)) | (1L << (ELT - 860)) | (1L << (ENCODE - 860)) | (1L << (ENCRYPT - 860)) | (1L << (ENDPOINT - 860)) | (1L << (ENGINE_ATTRIBUTE - 860)) | (1L << (ENVELOPE - 860)) | (1L << (EQUALS - 860)) | (1L << (EXP - 860)) | (1L << (EXPORT_SET - 860)) | (1L << (EXTERIORRING - 860)) | (1L << (EXTRACTVALUE - 860)) | (1L << (FIELD - 860)) | (1L << (FIND_IN_SET - 860)) | (1L << (FLOOR - 860)) | (1L << (FORMAT - 860)) | (1L << (FOUND_ROWS - 860)) | (1L << (FROM_BASE64 - 860)) | (1L << (FROM_DAYS - 860)) | (1L << (FROM_UNIXTIME - 860)) | (1L << (GEOMCOLLFROMTEXT - 860)) | (1L << (GEOMCOLLFROMWKB - 860)) | (1L << (GEOMETRYCOLLECTIONFROMTEXT - 860)) | (1L << (GEOMETRYCOLLECTIONFROMWKB - 860)) | (1L << (GEOMETRYFROMTEXT - 860)) | (1L << (GEOMETRYFROMWKB - 860)) | (1L << (GEOMETRYN - 860)) | (1L << (GEOMETRYTYPE - 860)) | (1L << (GEOMFROMTEXT - 860)) | (1L << (GEOMFROMWKB - 860)) | (1L << (GET_FORMAT - 860)) | (1L << (GET_LOCK - 860)) | (1L << (GLENGTH - 860)) | (1L << (GREATEST - 860)) | (1L << (GTID_SUBSET - 860)) | (1L << (GTID_SUBTRACT - 860)) | (1L << (HEX - 860)) | (1L << (IFNULL - 860)) | (1L << (INET6_ATON - 860)) | (1L << (INET6_NTOA - 860)) | (1L << (INET_ATON - 860)) | (1L << (INET_NTOA - 860)) | (1L << (INSTR - 860)) | (1L << (INTERIORRINGN - 860)) | (1L << (INTERSECTS - 860)) | (1L << (ISCLOSED - 860)))) != 0) || ((((_la - 924)) & ~0x3f) == 0 && ((1L << (_la - 924)) & ((1L << (ISEMPTY - 924)) | (1L << (ISNULL - 924)) | (1L << (ISSIMPLE - 924)) | (1L << (IS_FREE_LOCK - 924)) | (1L << (IS_IPV4 - 924)) | (1L << (IS_IPV4_COMPAT - 924)) | (1L << (IS_IPV4_MAPPED - 924)) | (1L << (IS_IPV6 - 924)) | (1L << (IS_USED_LOCK - 924)) | (1L << (LAST_INSERT_ID - 924)) | (1L << (LCASE - 924)) | (1L << (LEAST - 924)) | (1L << (LENGTH - 924)) | (1L << (LINEFROMTEXT - 924)) | (1L << (LINEFROMWKB - 924)) | (1L << (LINESTRINGFROMTEXT - 924)) | (1L << (LINESTRINGFROMWKB - 924)) | (1L << (LN - 924)) | (1L << (LOAD_FILE - 924)) | (1L << (LOCATE - 924)) | (1L << (LOG - 924)) | (1L << (LOG10 - 924)) | (1L << (LOG2 - 924)) | (1L << (LOWER - 924)) | (1L << (LPAD - 924)) | (1L << (LTRIM - 924)) | (1L << (MAKEDATE - 924)) | (1L << (MAKETIME - 924)) | (1L << (MAKE_SET - 924)) | (1L << (MASTER_POS_WAIT - 924)) | (1L << (MBRCONTAINS - 924)) | (1L << (MBRDISJOINT - 924)) | (1L << (MBREQUAL - 924)) | (1L << (MBRINTERSECTS - 924)) | (1L << (MBROVERLAPS - 924)) | (1L << (MBRTOUCHES - 924)) | (1L << (MBRWITHIN - 924)) | (1L << (MD5 - 924)) | (1L << (MLINEFROMTEXT - 924)) | (1L << (MLINEFROMWKB - 924)) | (1L << (MONTHNAME - 924)) | (1L << (MPOINTFROMTEXT - 924)) | (1L << (MPOINTFROMWKB - 924)) | (1L << (MPOLYFROMTEXT - 924)) | (1L << (MPOLYFROMWKB - 924)) | (1L << (MULTILINESTRINGFROMTEXT - 924)) | (1L << (MULTILINESTRINGFROMWKB - 924)) | (1L << (MULTIPOINTFROMTEXT - 924)) | (1L << (MULTIPOINTFROMWKB - 924)) | (1L << (MULTIPOLYGONFROMTEXT - 924)) | (1L << (MULTIPOLYGONFROMWKB - 924)) | (1L << (NAME_CONST - 924)) | (1L << (NULLIF - 924)) | (1L << (NUMGEOMETRIES - 924)) | (1L << (NUMINTERIORRINGS - 924)) | (1L << (NUMPOINTS - 924)) | (1L << (OCT - 924)) | (1L << (OCTET_LENGTH - 924)) | (1L << (ORD - 924)) | (1L << (OVERLAPS - 924)) | (1L << (PERIOD_ADD - 924)) | (1L << (PERIOD_DIFF - 924)) | (1L << (PI - 924)) | (1L << (POINTFROMTEXT - 924)))) != 0) || ((((_la - 988)) & ~0x3f) == 0 && ((1L << (_la - 988)) & ((1L << (POINTFROMWKB - 988)) | (1L << (POINTN - 988)) | (1L << (POLYFROMTEXT - 988)) | (1L << (POLYFROMWKB - 988)) | (1L << (POLYGONFROMTEXT - 988)) | (1L << (POLYGONFROMWKB - 988)) | (1L << (POW - 988)) | (1L << (POWER - 988)) | (1L << (QUOTE - 988)) | (1L << (RADIANS - 988)) | (1L << (RAND - 988)) | (1L << (RANDOM - 988)) | (1L << (RANDOM_BYTES - 988)) | (1L << (RELEASE_LOCK - 988)) | (1L << (REVERSE - 988)) | (1L << (ROUND - 988)) | (1L << (ROW_COUNT - 988)) | (1L << (RPAD - 988)) | (1L << (RTRIM - 988)) | (1L << (SEC_TO_TIME - 988)) | (1L << (SECONDARY_ENGINE_ATTRIBUTE - 988)) | (1L << (SENSITIVE_VARIABLES_OBSERVER - 988)) | (1L << (SESSION_USER - 988)) | (1L << (SHA - 988)) | (1L << (SHA1 - 988)) | (1L << (SHA2 - 988)) | (1L << (SCHEMA_NAME - 988)) | (1L << (SIGN - 988)) | (1L << (SIN - 988)) | (1L << (SLEEP - 988)) | (1L << (SOUNDEX - 988)) | (1L << (SQL_THREAD_WAIT_AFTER_GTIDS - 988)) | (1L << (SQRT - 988)) | (1L << (SRID - 988)) | (1L << (STARTPOINT - 988)) | (1L << (STRCMP - 988)) | (1L << (STR_TO_DATE - 988)) | (1L << (ST_AREA - 988)) | (1L << (ST_ASBINARY - 988)) | (1L << (ST_ASTEXT - 988)) | (1L << (ST_ASWKB - 988)) | (1L << (ST_ASWKT - 988)) | (1L << (ST_BUFFER - 988)) | (1L << (ST_CENTROID - 988)) | (1L << (ST_CONTAINS - 988)) | (1L << (ST_CROSSES - 988)) | (1L << (ST_DIFFERENCE - 988)) | (1L << (ST_DIMENSION - 988)) | (1L << (ST_DISJOINT - 988)) | (1L << (ST_DISTANCE - 988)) | (1L << (ST_ENDPOINT - 988)) | (1L << (ST_ENVELOPE - 988)) | (1L << (ST_EQUALS - 988)) | (1L << (ST_EXTERIORRING - 988)) | (1L << (ST_GEOMCOLLFROMTEXT - 988)) | (1L << (ST_GEOMCOLLFROMTXT - 988)) | (1L << (ST_GEOMCOLLFROMWKB - 988)) | (1L << (ST_GEOMETRYCOLLECTIONFROMTEXT - 988)) | (1L << (ST_GEOMETRYCOLLECTIONFROMWKB - 988)) | (1L << (ST_GEOMETRYFROMTEXT - 988)) | (1L << (ST_GEOMETRYFROMWKB - 988)) | (1L << (ST_GEOMETRYN - 988)) | (1L << (ST_GEOMETRYTYPE - 988)) | (1L << (ST_GEOMFROMTEXT - 988)))) != 0) || ((((_la - 1052)) & ~0x3f) == 0 && ((1L << (_la - 1052)) & ((1L << (ST_GEOMFROMWKB - 1052)) | (1L << (ST_INTERIORRINGN - 1052)) | (1L << (ST_INTERSECTION - 1052)) | (1L << (ST_INTERSECTS - 1052)) | (1L << (ST_ISCLOSED - 1052)) | (1L << (ST_ISEMPTY - 1052)) | (1L << (ST_ISSIMPLE - 1052)) | (1L << (ST_LINEFROMTEXT - 1052)) | (1L << (ST_LINEFROMWKB - 1052)) | (1L << (ST_LINESTRINGFROMTEXT - 1052)) | (1L << (ST_LINESTRINGFROMWKB - 1052)) | (1L << (ST_NUMGEOMETRIES - 1052)) | (1L << (ST_NUMINTERIORRING - 1052)) | (1L << (ST_NUMINTERIORRINGS - 1052)) | (1L << (ST_NUMPOINTS - 1052)) | (1L << (ST_OVERLAPS - 1052)) | (1L << (ST_POINTFROMTEXT - 1052)) | (1L << (ST_POINTFROMWKB - 1052)) | (1L << (ST_POINTN - 1052)) | (1L << (ST_POLYFROMTEXT - 1052)) | (1L << (ST_POLYFROMWKB - 1052)) | (1L << (ST_POLYGONFROMTEXT - 1052)) | (1L << (ST_POLYGONFROMWKB - 1052)) | (1L << (ST_SRID - 1052)) | (1L << (ST_STARTPOINT - 1052)) | (1L << (ST_SYMDIFFERENCE - 1052)) | (1L << (ST_TOUCHES - 1052)) | (1L << (ST_UNION - 1052)) | (1L << (ST_WITHIN - 1052)) | (1L << (ST_X - 1052)) | (1L << (ST_Y - 1052)) | (1L << (SUBDATE - 1052)) | (1L << (SUBSTRING_INDEX - 1052)) | (1L << (SUBTIME - 1052)) | (1L << (SYSTEM_USER - 1052)) | (1L << (SYSTEM - 1052)) | (1L << (TAN - 1052)) | (1L << (TELEMETRY_LOG_ADMIN - 1052)) | (1L << (TIMEDIFF - 1052)) | (1L << (TIMESTAMPADD - 1052)) | (1L << (TIMESTAMPDIFF - 1052)) | (1L << (TIME_FORMAT - 1052)) | (1L << (TIME_TO_SEC - 1052)) | (1L << (TOUCHES - 1052)) | (1L << (TO_BASE64 - 1052)) | (1L << (TO_DAYS - 1052)) | (1L << (TO_SECONDS - 1052)) | (1L << (TP_CONNECTION_ADMIN - 1052)) | (1L << (UCASE - 1052)) | (1L << (UNCOMPRESS - 1052)) | (1L << (UNCOMPRESSED_LENGTH - 1052)) | (1L << (UNHEX - 1052)) | (1L << (UNIX_TIMESTAMP - 1052)) | (1L << (UPDATEXML - 1052)) | (1L << (UPPER - 1052)) | (1L << (UUID - 1052)) | (1L << (UUID_SHORT - 1052)) | (1L << (VALIDATE_PASSWORD_STRENGTH - 1052)) | (1L << (VERSION - 1052)) | (1L << (VERSIONING - 1052)) | (1L << (WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS - 1052)) | (1L << (WEEKDAY - 1052)) | (1L << (WEEKOFYEAR - 1052)) | (1L << (WEIGHT_STRING - 1052)))) != 0) || ((((_la - 1116)) & ~0x3f) == 0 && ((1L << (_la - 1116)) & ((1L << (WITHIN - 1116)) | (1L << (YEARWEEK - 1116)) | (1L << (Y_FUNCTION - 1116)) | (1L << (X_FUNCTION - 1116)) | (1L << (VIA - 1116)) | (1L << (LASTVAL - 1116)) | (1L << (NEXTVAL - 1116)) | (1L << (SETVAL - 1116)) | (1L << (PREVIOUS - 1116)) | (1L << (PERSISTENT - 1116)) | (1L << (BINLOG_MONITOR - 1116)) | (1L << (BINLOG_REPLAY - 1116)) | (1L << (FEDERATED_ADMIN - 1116)) | (1L << (READ_ONLY_ADMIN - 1116)) | (1L << (REPLICA - 1116)) | (1L << (REPLICATION_MASTER_ADMIN - 1116)) | (1L << (MONITOR - 1116)) | (1L << (READ_ONLY - 1116)) | (1L << (REPLAY - 1116)) | (1L << (MOD - 1116)) | (1L << (CHARSET_REVERSE_QOUTE_STRING - 1116)) | (1L << (STRING_LITERAL - 1116)))) != 0) || _la==ID) {
					{
					setState(1941);
					uid();
					}
				}

				setState(1945);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==USING) {
					{
					setState(1944);
					indexType();
					}
				}

				setState(1947);
				indexColumnNames();
				setState(1951);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==IGNORED || _la==NOT || _la==USING || _la==WITH || _la==CLUSTERING || _la==COMMENT || _la==INVISIBLE || _la==KEY_BLOCK_SIZE || _la==VISIBLE || _la==ENGINE_ATTRIBUTE || _la==SECONDARY_ENGINE_ATTRIBUTE) {
					{
					{
					setState(1948);
					indexOption();
					}
					}
					setState(1953);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			case FULLTEXT:
			case SPATIAL:
				_localctx = new SpecialIndexDeclarationContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(1954);
				_la = _input.LA(1);
				if ( !(_la==FULLTEXT || _la==SPATIAL) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(1956);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==INDEX || _la==KEY) {
					{
					setState(1955);
					((SpecialIndexDeclarationContext)_localctx).indexFormat = _input.LT(1);
					_la = _input.LA(1);
					if ( !(_la==INDEX || _la==KEY) ) {
						((SpecialIndexDeclarationContext)_localctx).indexFormat = (Token)_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
				}

				setState(1959);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ARRAY) | (1L << ATTRIBUTE) | (1L << BUCKETS) | (1L << CONDITION) | (1L << CURRENT) | (1L << CURRENT_ROLE) | (1L << CURRENT_USER) | (1L << DATABASE) | (1L << DEFAULT) | (1L << DIAGNOSTICS) | (1L << EMPTY) | (1L << ENFORCED) | (1L << EXCEPT))) != 0) || ((((_la - 74)) & ~0x3f) == 0 && ((1L << (_la - 74)) & ((1L << (GROUP - 74)) | (1L << (GROUP_REPLICATION_STREAM - 74)) | (1L << (IF - 74)) | (1L << (IGNORED - 74)) | (1L << (INSERT - 74)) | (1L << (LATERAL - 74)) | (1L << (LEFT - 74)) | (1L << (LOCKED - 74)) | (1L << (MAXVALUE - 74)) | (1L << (MINVALUE - 74)) | (1L << (NUMBER - 74)) | (1L << (OPTIONAL - 74)) | (1L << (ORDER - 74)) | (1L << (PRIMARY - 74)))) != 0) || ((((_la - 142)) & ~0x3f) == 0 && ((1L << (_la - 142)) & ((1L << (REPEAT - 142)) | (1L << (REPLACE - 142)) | (1L << (RIGHT - 142)) | (1L << (SCHEMA - 142)) | (1L << (SKIP_ - 142)) | (1L << (SKIP_QUERY_REWRITE - 142)) | (1L << (STACKED - 142)) | (1L << (STATEMENT - 142)))) != 0) || ((((_la - 220)) & ~0x3f) == 0 && ((1L << (_la - 220)) & ((1L << (DATE - 220)) | (1L << (TIME - 220)) | (1L << (TIMESTAMP - 220)) | (1L << (DATETIME - 220)) | (1L << (YEAR - 220)) | (1L << (NATIONAL - 220)) | (1L << (BINARY - 220)) | (1L << (TEXT - 220)) | (1L << (ENUM - 220)) | (1L << (SERIAL - 220)) | (1L << (JSON_ARRAY - 220)) | (1L << (JSON_ARRAYAGG - 220)) | (1L << (JSON_ARRAY_APPEND - 220)) | (1L << (JSON_ARRAY_INSERT - 220)) | (1L << (JSON_CONTAINS - 220)) | (1L << (JSON_CONTAINS_PATH - 220)) | (1L << (JSON_DEPTH - 220)) | (1L << (JSON_EXTRACT - 220)) | (1L << (JSON_INSERT - 220)) | (1L << (JSON_KEYS - 220)) | (1L << (JSON_LENGTH - 220)) | (1L << (JSON_MERGE - 220)) | (1L << (JSON_MERGE_PATCH - 220)) | (1L << (JSON_MERGE_PRESERVE - 220)) | (1L << (JSON_OBJECT - 220)) | (1L << (JSON_OBJECTAGG - 220)) | (1L << (JSON_OVERLAPS - 220)) | (1L << (JSON_PRETTY - 220)) | (1L << (JSON_QUOTE - 220)) | (1L << (JSON_REMOVE - 220)) | (1L << (JSON_REPLACE - 220)) | (1L << (JSON_SCHEMA_VALID - 220)) | (1L << (JSON_SCHEMA_VALIDATION_REPORT - 220)) | (1L << (JSON_SEARCH - 220)) | (1L << (JSON_SET - 220)) | (1L << (JSON_STORAGE_FREE - 220)) | (1L << (JSON_STORAGE_SIZE - 220)) | (1L << (JSON_TABLE - 220)) | (1L << (JSON_TYPE - 220)) | (1L << (JSON_UNQUOTE - 220)))) != 0) || ((((_la - 284)) & ~0x3f) == 0 && ((1L << (_la - 284)) & ((1L << (JSON_VALID - 284)) | (1L << (JSON_VALUE - 284)) | (1L << (NESTED - 284)) | (1L << (ORDINALITY - 284)) | (1L << (PATH - 284)) | (1L << (AVG - 284)) | (1L << (BIT_AND - 284)) | (1L << (BIT_OR - 284)) | (1L << (BIT_XOR - 284)) | (1L << (COUNT - 284)) | (1L << (CUME_DIST - 284)) | (1L << (DENSE_RANK - 284)) | (1L << (FIRST_VALUE - 284)) | (1L << (GROUP_CONCAT - 284)) | (1L << (LAG - 284)) | (1L << (LAST_VALUE - 284)) | (1L << (LEAD - 284)) | (1L << (MAX - 284)) | (1L << (MIN - 284)) | (1L << (NTILE - 284)) | (1L << (NTH_VALUE - 284)) | (1L << (PERCENT_RANK - 284)) | (1L << (RANK - 284)) | (1L << (ROW_NUMBER - 284)) | (1L << (STD - 284)) | (1L << (STDDEV - 284)) | (1L << (STDDEV_POP - 284)) | (1L << (STDDEV_SAMP - 284)) | (1L << (SUM - 284)) | (1L << (VAR_POP - 284)) | (1L << (VAR_SAMP - 284)) | (1L << (VARIANCE - 284)) | (1L << (CURRENT_DATE - 284)) | (1L << (CURRENT_TIME - 284)) | (1L << (CURRENT_TIMESTAMP - 284)) | (1L << (LOCALTIME - 284)) | (1L << (CURDATE - 284)) | (1L << (CURTIME - 284)) | (1L << (DATE_ADD - 284)) | (1L << (DATE_SUB - 284)) | (1L << (LOCALTIMESTAMP - 284)) | (1L << (NOW - 284)) | (1L << (POSITION - 284)) | (1L << (SUBSTR - 284)) | (1L << (SUBSTRING - 284)) | (1L << (SYSDATE - 284)) | (1L << (TRIM - 284)) | (1L << (UTC_DATE - 284)) | (1L << (UTC_TIME - 284)) | (1L << (UTC_TIMESTAMP - 284)) | (1L << (ACCOUNT - 284)) | (1L << (ACTION - 284)) | (1L << (AFTER - 284)) | (1L << (AGGREGATE - 284)) | (1L << (ALGORITHM - 284)) | (1L << (ANY - 284)) | (1L << (AT - 284)) | (1L << (AUTHORS - 284)) | (1L << (AUTOCOMMIT - 284)) | (1L << (AUTOEXTEND_SIZE - 284)) | (1L << (AUTO_INCREMENT - 284)) | (1L << (AVG_ROW_LENGTH - 284)) | (1L << (BEGIN - 284)))) != 0) || ((((_la - 348)) & ~0x3f) == 0 && ((1L << (_la - 348)) & ((1L << (BINLOG - 348)) | (1L << (BIT - 348)) | (1L << (BLOCK - 348)) | (1L << (BOOL - 348)) | (1L << (BOOLEAN - 348)) | (1L << (BTREE - 348)) | (1L << (CACHE - 348)) | (1L << (CASCADED - 348)) | (1L << (CHAIN - 348)) | (1L << (CHANGED - 348)) | (1L << (CHANNEL - 348)) | (1L << (CHECKSUM - 348)) | (1L << (PAGE_CHECKSUM - 348)) | (1L << (CIPHER - 348)) | (1L << (CLASS_ORIGIN - 348)) | (1L << (CLIENT - 348)) | (1L << (CLOSE - 348)) | (1L << (CLUSTERING - 348)) | (1L << (COALESCE - 348)) | (1L << (CODE - 348)) | (1L << (COLUMNS - 348)) | (1L << (COLUMN_FORMAT - 348)) | (1L << (COLUMN_NAME - 348)) | (1L << (COMMENT - 348)) | (1L << (COMMIT - 348)) | (1L << (COMPACT - 348)) | (1L << (COMPLETION - 348)) | (1L << (COMPRESSED - 348)) | (1L << (COMPRESSION - 348)) | (1L << (CONCURRENT - 348)) | (1L << (CONNECT - 348)) | (1L << (CONNECTION - 348)) | (1L << (CONSISTENT - 348)) | (1L << (CONSTRAINT_CATALOG - 348)) | (1L << (CONSTRAINT_SCHEMA - 348)) | (1L << (CONSTRAINT_NAME - 348)) | (1L << (CONTAINS - 348)) | (1L << (CONTEXT - 348)) | (1L << (CONTRIBUTORS - 348)) | (1L << (COPY - 348)) | (1L << (CPU - 348)) | (1L << (CYCLE - 348)) | (1L << (CURSOR_NAME - 348)) | (1L << (DATA - 348)) | (1L << (DATAFILE - 348)) | (1L << (DEALLOCATE - 348)) | (1L << (DEFAULT_AUTH - 348)) | (1L << (DEFINER - 348)) | (1L << (DELAY_KEY_WRITE - 348)) | (1L << (DES_KEY_FILE - 348)) | (1L << (DIRECTORY - 348)) | (1L << (DISABLE - 348)) | (1L << (DISCARD - 348)) | (1L << (DISK - 348)) | (1L << (DO - 348)) | (1L << (DUMPFILE - 348)) | (1L << (DUPLICATE - 348)) | (1L << (DYNAMIC - 348)) | (1L << (ENABLE - 348)) | (1L << (ENCRYPTED - 348)) | (1L << (ENCRYPTION - 348)) | (1L << (ENCRYPTION_KEY_ID - 348)) | (1L << (END - 348)) | (1L << (ENDS - 348)))) != 0) || ((((_la - 412)) & ~0x3f) == 0 && ((1L << (_la - 412)) & ((1L << (ENGINE - 412)) | (1L << (ENGINES - 412)) | (1L << (ERROR - 412)) | (1L << (ERRORS - 412)) | (1L << (ESCAPE - 412)) | (1L << (EVEN - 412)) | (1L << (EVENT - 412)) | (1L << (EVENTS - 412)) | (1L << (EVERY - 412)) | (1L << (EXCHANGE - 412)) | (1L << (EXCLUSIVE - 412)) | (1L << (EXPIRE - 412)) | (1L << (EXPORT - 412)) | (1L << (EXTENDED - 412)) | (1L << (EXTENT_SIZE - 412)) | (1L << (FAILED_LOGIN_ATTEMPTS - 412)) | (1L << (FAST - 412)) | (1L << (FAULTS - 412)) | (1L << (FIELDS - 412)) | (1L << (FILE_BLOCK_SIZE - 412)) | (1L << (FILTER - 412)) | (1L << (FIRST - 412)) | (1L << (FIXED - 412)) | (1L << (FLUSH - 412)) | (1L << (FOLLOWS - 412)) | (1L << (FOUND - 412)) | (1L << (FULL - 412)) | (1L << (FUNCTION - 412)) | (1L << (GENERAL - 412)) | (1L << (GLOBAL - 412)) | (1L << (GRANTS - 412)) | (1L << (GROUP_REPLICATION - 412)) | (1L << (HANDLER - 412)) | (1L << (HASH - 412)) | (1L << (HELP - 412)) | (1L << (HISTORY - 412)) | (1L << (HOST - 412)) | (1L << (HOSTS - 412)) | (1L << (IDENTIFIED - 412)) | (1L << (IGNORE_SERVER_IDS - 412)) | (1L << (IMPORT - 412)) | (1L << (INCREMENT - 412)) | (1L << (INDEXES - 412)) | (1L << (INITIAL_SIZE - 412)) | (1L << (INPLACE - 412)) | (1L << (INSERT_METHOD - 412)) | (1L << (INSTALL - 412)) | (1L << (INSTANCE - 412)) | (1L << (INSTANT - 412)) | (1L << (INVISIBLE - 412)) | (1L << (INVOKER - 412)) | (1L << (IO - 412)) | (1L << (IO_THREAD - 412)) | (1L << (IPC - 412)) | (1L << (ISOLATION - 412)) | (1L << (ISSUER - 412)) | (1L << (JSON - 412)) | (1L << (KEY_BLOCK_SIZE - 412)) | (1L << (LANGUAGE - 412)) | (1L << (LAST - 412)) | (1L << (LEAVES - 412)) | (1L << (LESS - 412)) | (1L << (LEVEL - 412)))) != 0) || ((((_la - 476)) & ~0x3f) == 0 && ((1L << (_la - 476)) & ((1L << (LIST - 476)) | (1L << (LOCAL - 476)) | (1L << (LOGFILE - 476)) | (1L << (LOGS - 476)) | (1L << (MASTER - 476)) | (1L << (MASTER_AUTO_POSITION - 476)) | (1L << (MASTER_CONNECT_RETRY - 476)) | (1L << (MASTER_DELAY - 476)) | (1L << (MASTER_HEARTBEAT_PERIOD - 476)) | (1L << (MASTER_HOST - 476)) | (1L << (MASTER_LOG_FILE - 476)) | (1L << (MASTER_LOG_POS - 476)) | (1L << (MASTER_PASSWORD - 476)) | (1L << (MASTER_PORT - 476)) | (1L << (MASTER_RETRY_COUNT - 476)) | (1L << (MASTER_SSL - 476)) | (1L << (MASTER_SSL_CA - 476)) | (1L << (MASTER_SSL_CAPATH - 476)) | (1L << (MASTER_SSL_CERT - 476)) | (1L << (MASTER_SSL_CIPHER - 476)) | (1L << (MASTER_SSL_CRL - 476)) | (1L << (MASTER_SSL_CRLPATH - 476)) | (1L << (MASTER_SSL_KEY - 476)) | (1L << (MASTER_TLS_VERSION - 476)) | (1L << (MASTER_USER - 476)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 476)) | (1L << (MAX_QUERIES_PER_HOUR - 476)) | (1L << (MAX_ROWS - 476)) | (1L << (MAX_SIZE - 476)) | (1L << (MAX_UPDATES_PER_HOUR - 476)) | (1L << (MAX_USER_CONNECTIONS - 476)) | (1L << (MEDIUM - 476)) | (1L << (MEMBER - 476)) | (1L << (MERGE - 476)) | (1L << (MESSAGE_TEXT - 476)) | (1L << (MID - 476)) | (1L << (MIGRATE - 476)) | (1L << (MIN_ROWS - 476)) | (1L << (MODE - 476)) | (1L << (MODIFY - 476)) | (1L << (MUTEX - 476)) | (1L << (MYSQL - 476)) | (1L << (MYSQL_ERRNO - 476)) | (1L << (NAME - 476)) | (1L << (NAMES - 476)) | (1L << (NCHAR - 476)) | (1L << (NEVER - 476)) | (1L << (NEXT - 476)) | (1L << (NO - 476)) | (1L << (NOCACHE - 476)) | (1L << (NOCOPY - 476)) | (1L << (NOCYCLE - 476)) | (1L << (NOMAXVALUE - 476)) | (1L << (NOMINVALUE - 476)) | (1L << (NOWAIT - 476)) | (1L << (NODEGROUP - 476)) | (1L << (NONE - 476)) | (1L << (ODBC - 476)) | (1L << (OFFLINE - 476)) | (1L << (OFFSET - 476)) | (1L << (OF - 476)) | (1L << (OJ - 476)) | (1L << (OLD_PASSWORD - 476)) | (1L << (ONE - 476)))) != 0) || ((((_la - 540)) & ~0x3f) == 0 && ((1L << (_la - 540)) & ((1L << (ONLINE - 540)) | (1L << (ONLY - 540)) | (1L << (OPEN - 540)) | (1L << (OPTIMIZER_COSTS - 540)) | (1L << (OPTIONS - 540)) | (1L << (OWNER - 540)) | (1L << (PACK_KEYS - 540)) | (1L << (PAGE - 540)) | (1L << (PARSER - 540)) | (1L << (PARTIAL - 540)) | (1L << (PARTITIONING - 540)) | (1L << (PARTITIONS - 540)) | (1L << (PASSWORD - 540)) | (1L << (PASSWORD_LOCK_TIME - 540)) | (1L << (PHASE - 540)) | (1L << (PLUGIN - 540)) | (1L << (PLUGIN_DIR - 540)) | (1L << (PLUGINS - 540)) | (1L << (PORT - 540)) | (1L << (PRECEDES - 540)) | (1L << (PREPARE - 540)) | (1L << (PRESERVE - 540)) | (1L << (PREV - 540)) | (1L << (PROCESSLIST - 540)) | (1L << (PROFILE - 540)) | (1L << (PROFILES - 540)) | (1L << (PROXY - 540)) | (1L << (QUERY - 540)) | (1L << (QUICK - 540)) | (1L << (REBUILD - 540)) | (1L << (RECOVER - 540)) | (1L << (RECURSIVE - 540)) | (1L << (REDO_BUFFER_SIZE - 540)) | (1L << (REDUNDANT - 540)) | (1L << (RELAY - 540)) | (1L << (RELAY_LOG_FILE - 540)) | (1L << (RELAY_LOG_POS - 540)) | (1L << (RELAYLOG - 540)) | (1L << (REMOVE - 540)) | (1L << (REORGANIZE - 540)) | (1L << (REPAIR - 540)) | (1L << (REPLICATE_DO_DB - 540)) | (1L << (REPLICATE_DO_TABLE - 540)) | (1L << (REPLICATE_IGNORE_DB - 540)) | (1L << (REPLICATE_IGNORE_TABLE - 540)) | (1L << (REPLICATE_REWRITE_DB - 540)) | (1L << (REPLICATE_WILD_DO_TABLE - 540)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 540)) | (1L << (REPLICATION - 540)) | (1L << (RESET - 540)) | (1L << (RESTART - 540)) | (1L << (RESUME - 540)) | (1L << (RETURNED_SQLSTATE - 540)) | (1L << (RETURNING - 540)) | (1L << (RETURNS - 540)) | (1L << (REUSE - 540)) | (1L << (ROLE - 540)) | (1L << (ROLLBACK - 540)) | (1L << (ROLLUP - 540)) | (1L << (ROTATE - 540)) | (1L << (ROW - 540)))) != 0) || ((((_la - 604)) & ~0x3f) == 0 && ((1L << (_la - 604)) & ((1L << (ROWS - 604)) | (1L << (ROW_FORMAT - 604)) | (1L << (RTREE - 604)) | (1L << (SAVEPOINT - 604)) | (1L << (SCHEDULE - 604)) | (1L << (SECURITY - 604)) | (1L << (SEQUENCE - 604)) | (1L << (SERVER - 604)) | (1L << (SESSION - 604)) | (1L << (SHARE - 604)) | (1L << (SHARED - 604)) | (1L << (SIGNED - 604)) | (1L << (SIMPLE - 604)) | (1L << (SLAVE - 604)) | (1L << (SLOW - 604)) | (1L << (SNAPSHOT - 604)) | (1L << (SOCKET - 604)) | (1L << (SOME - 604)) | (1L << (SONAME - 604)) | (1L << (SOUNDS - 604)) | (1L << (SOURCE - 604)) | (1L << (SQL_AFTER_GTIDS - 604)) | (1L << (SQL_AFTER_MTS_GAPS - 604)) | (1L << (SQL_BEFORE_GTIDS - 604)) | (1L << (SQL_BUFFER_RESULT - 604)) | (1L << (SQL_CACHE - 604)) | (1L << (SQL_NO_CACHE - 604)) | (1L << (SQL_THREAD - 604)) | (1L << (START - 604)) | (1L << (STARTS - 604)) | (1L << (STATS_AUTO_RECALC - 604)) | (1L << (STATS_PERSISTENT - 604)) | (1L << (STATS_SAMPLE_PAGES - 604)) | (1L << (STATUS - 604)) | (1L << (STOP - 604)) | (1L << (STORAGE - 604)) | (1L << (STRING - 604)) | (1L << (SUBCLASS_ORIGIN - 604)) | (1L << (SUBJECT - 604)) | (1L << (SUBPARTITION - 604)) | (1L << (SUBPARTITIONS - 604)) | (1L << (SUSPEND - 604)) | (1L << (SWAPS - 604)) | (1L << (SWITCHES - 604)) | (1L << (TABLE_NAME - 604)) | (1L << (TABLESPACE - 604)) | (1L << (TABLE_TYPE - 604)) | (1L << (TEMPORARY - 604)) | (1L << (TEMPTABLE - 604)) | (1L << (THAN - 604)) | (1L << (TRADITIONAL - 604)) | (1L << (TRANSACTION - 604)) | (1L << (TRANSACTIONAL - 604)) | (1L << (TRIGGERS - 604)) | (1L << (TRUNCATE - 604)) | (1L << (UNBOUNDED - 604)) | (1L << (UNDEFINED - 604)) | (1L << (UNDOFILE - 604)) | (1L << (UNDO_BUFFER_SIZE - 604)) | (1L << (UNINSTALL - 604)) | (1L << (UNKNOWN - 604)) | (1L << (UNTIL - 604)) | (1L << (UPGRADE - 604)))) != 0) || ((((_la - 668)) & ~0x3f) == 0 && ((1L << (_la - 668)) & ((1L << (USER - 668)) | (1L << (USE_FRM - 668)) | (1L << (USER_RESOURCES - 668)) | (1L << (VALIDATION - 668)) | (1L << (VALUE - 668)) | (1L << (VARIABLES - 668)) | (1L << (VIEW - 668)) | (1L << (VIRTUAL - 668)) | (1L << (VISIBLE - 668)) | (1L << (WAIT - 668)) | (1L << (WARNINGS - 668)) | (1L << (WITHOUT - 668)) | (1L << (WORK - 668)) | (1L << (WRAPPER - 668)) | (1L << (X509 - 668)) | (1L << (XA - 668)) | (1L << (XML - 668)) | (1L << (YES - 668)) | (1L << (EUR - 668)) | (1L << (USA - 668)) | (1L << (JIS - 668)) | (1L << (ISO - 668)) | (1L << (INTERNAL - 668)) | (1L << (QUARTER - 668)) | (1L << (MONTH - 668)) | (1L << (DAY - 668)) | (1L << (HOUR - 668)) | (1L << (MINUTE - 668)) | (1L << (WEEK - 668)) | (1L << (SECOND - 668)) | (1L << (MICROSECOND - 668)) | (1L << (USER_STATISTICS - 668)) | (1L << (CLIENT_STATISTICS - 668)) | (1L << (INDEX_STATISTICS - 668)) | (1L << (TABLE_STATISTICS - 668)) | (1L << (FIREWALL_RULES - 668)) | (1L << (ADMIN - 668)) | (1L << (APPLICATION_PASSWORD_ADMIN - 668)) | (1L << (AUDIT_ADMIN - 668)) | (1L << (AUDIT_ABORT_EXEMPT - 668)) | (1L << (AUTHENTICATION_POLICY_ADMIN - 668)) | (1L << (BACKUP_ADMIN - 668)) | (1L << (BINLOG_ADMIN - 668)) | (1L << (BINLOG_ENCRYPTION_ADMIN - 668)) | (1L << (CLONE_ADMIN - 668)) | (1L << (CONNECTION_ADMIN - 668)) | (1L << (ENCRYPTION_KEY_ADMIN - 668)) | (1L << (EXECUTE - 668)) | (1L << (FILE - 668)) | (1L << (FIREWALL_ADMIN - 668)) | (1L << (FIREWALL_EXEMPT - 668)) | (1L << (FIREWALL_USER - 668)) | (1L << (FLUSH_OPTIMIZER_COSTS - 668)) | (1L << (FLUSH_STATUS - 668)) | (1L << (FLUSH_TABLES - 668)) | (1L << (FLUSH_USER_RESOURCES - 668)) | (1L << (GROUP_REPLICATION_ADMIN - 668)) | (1L << (INNODB_REDO_LOG_ARCHIVE - 668)) | (1L << (INNODB_REDO_LOG_ENABLE - 668)) | (1L << (INVOKE - 668)) | (1L << (LAMBDA - 668)) | (1L << (NDB_STORED_USER - 668)) | (1L << (PASSWORDLESS_USER_ADMIN - 668)))) != 0) || ((((_la - 732)) & ~0x3f) == 0 && ((1L << (_la - 732)) & ((1L << (PERSIST_RO_VARIABLES_ADMIN - 732)) | (1L << (PRIVILEGES - 732)) | (1L << (PROCESS - 732)) | (1L << (RELOAD - 732)) | (1L << (REPLICATION_APPLIER - 732)) | (1L << (REPLICATION_SLAVE_ADMIN - 732)) | (1L << (RESOURCE_GROUP_ADMIN - 732)) | (1L << (RESOURCE_GROUP_USER - 732)) | (1L << (ROLE_ADMIN - 732)) | (1L << (ROUTINE - 732)) | (1L << (S3 - 732)) | (1L << (SESSION_VARIABLES_ADMIN - 732)) | (1L << (SET_USER_ID - 732)) | (1L << (SHOW_ROUTINE - 732)) | (1L << (SHUTDOWN - 732)) | (1L << (SUPER - 732)) | (1L << (SYSTEM_VARIABLES_ADMIN - 732)) | (1L << (TABLES - 732)) | (1L << (TABLE_ENCRYPTION_ADMIN - 732)) | (1L << (VERSION_TOKEN_ADMIN - 732)) | (1L << (XA_RECOVER_ADMIN - 732)) | (1L << (ARMSCII8 - 732)) | (1L << (ASCII - 732)) | (1L << (BIG5 - 732)) | (1L << (CP1250 - 732)) | (1L << (CP1251 - 732)) | (1L << (CP1256 - 732)) | (1L << (CP1257 - 732)) | (1L << (CP850 - 732)) | (1L << (CP852 - 732)) | (1L << (CP866 - 732)) | (1L << (CP932 - 732)) | (1L << (DEC8 - 732)) | (1L << (EUCJPMS - 732)) | (1L << (EUCKR - 732)) | (1L << (GB18030 - 732)) | (1L << (GB2312 - 732)) | (1L << (GBK - 732)) | (1L << (GEOSTD8 - 732)) | (1L << (GREEK - 732)) | (1L << (HEBREW - 732)) | (1L << (HP8 - 732)) | (1L << (KEYBCS2 - 732)) | (1L << (KOI8R - 732)) | (1L << (KOI8U - 732)) | (1L << (LATIN1 - 732)) | (1L << (LATIN2 - 732)) | (1L << (LATIN5 - 732)) | (1L << (LATIN7 - 732)) | (1L << (MACCE - 732)) | (1L << (MACROMAN - 732)) | (1L << (SJIS - 732)) | (1L << (SWE7 - 732)) | (1L << (TIS620 - 732)) | (1L << (UCS2 - 732)) | (1L << (UJIS - 732)) | (1L << (UTF16 - 732)) | (1L << (UTF16LE - 732)) | (1L << (UTF32 - 732)) | (1L << (UTF8 - 732)) | (1L << (UTF8MB3 - 732)) | (1L << (UTF8MB4 - 732)) | (1L << (ARCHIVE - 732)))) != 0) || ((((_la - 796)) & ~0x3f) == 0 && ((1L << (_la - 796)) & ((1L << (BLACKHOLE - 796)) | (1L << (CSV - 796)) | (1L << (FEDERATED - 796)) | (1L << (INNODB - 796)) | (1L << (MEMORY - 796)) | (1L << (MRG_MYISAM - 796)) | (1L << (MYISAM - 796)) | (1L << (NDB - 796)) | (1L << (NDBCLUSTER - 796)) | (1L << (PERFORMANCE_SCHEMA - 796)) | (1L << (TOKUDB - 796)) | (1L << (REPEATABLE - 796)) | (1L << (COMMITTED - 796)) | (1L << (UNCOMMITTED - 796)) | (1L << (SERIALIZABLE - 796)) | (1L << (GEOMETRYCOLLECTION - 796)) | (1L << (GEOMETRY - 796)) | (1L << (LINESTRING - 796)) | (1L << (MULTILINESTRING - 796)) | (1L << (MULTIPOINT - 796)) | (1L << (MULTIPOLYGON - 796)) | (1L << (POINT - 796)) | (1L << (POLYGON - 796)) | (1L << (ABS - 796)) | (1L << (ACOS - 796)) | (1L << (ADDDATE - 796)) | (1L << (ADDTIME - 796)) | (1L << (AES_DECRYPT - 796)) | (1L << (AES_ENCRYPT - 796)) | (1L << (AREA - 796)) | (1L << (ASBINARY - 796)) | (1L << (ASIN - 796)) | (1L << (ASTEXT - 796)) | (1L << (ASWKB - 796)) | (1L << (ASWKT - 796)) | (1L << (ASYMMETRIC_DECRYPT - 796)) | (1L << (ASYMMETRIC_DERIVE - 796)) | (1L << (ASYMMETRIC_ENCRYPT - 796)) | (1L << (ASYMMETRIC_SIGN - 796)) | (1L << (ASYMMETRIC_VERIFY - 796)) | (1L << (ATAN - 796)) | (1L << (ATAN2 - 796)) | (1L << (BENCHMARK - 796)) | (1L << (BIN - 796)) | (1L << (BIT_COUNT - 796)) | (1L << (BIT_LENGTH - 796)) | (1L << (BUFFER - 796)) | (1L << (CATALOG_NAME - 796)) | (1L << (CEIL - 796)) | (1L << (CEILING - 796)) | (1L << (CENTROID - 796)) | (1L << (CHARACTER_LENGTH - 796)) | (1L << (CHARSET - 796)) | (1L << (CHAR_LENGTH - 796)) | (1L << (COERCIBILITY - 796)) | (1L << (COLLATION - 796)) | (1L << (COMPRESS - 796)) | (1L << (CONCAT - 796)) | (1L << (CONCAT_WS - 796)) | (1L << (CONNECTION_ID - 796)) | (1L << (CONV - 796)) | (1L << (CONVERT_TZ - 796)) | (1L << (COS - 796)))) != 0) || ((((_la - 860)) & ~0x3f) == 0 && ((1L << (_la - 860)) & ((1L << (COT - 860)) | (1L << (CRC32 - 860)) | (1L << (CREATE_ASYMMETRIC_PRIV_KEY - 860)) | (1L << (CREATE_ASYMMETRIC_PUB_KEY - 860)) | (1L << (CREATE_DH_PARAMETERS - 860)) | (1L << (CREATE_DIGEST - 860)) | (1L << (CROSSES - 860)) | (1L << (DATEDIFF - 860)) | (1L << (DATE_FORMAT - 860)) | (1L << (DAYNAME - 860)) | (1L << (DAYOFMONTH - 860)) | (1L << (DAYOFWEEK - 860)) | (1L << (DAYOFYEAR - 860)) | (1L << (DECODE - 860)) | (1L << (DEGREES - 860)) | (1L << (DES_DECRYPT - 860)) | (1L << (DES_ENCRYPT - 860)) | (1L << (DIMENSION - 860)) | (1L << (DISJOINT - 860)) | (1L << (ELT - 860)) | (1L << (ENCODE - 860)) | (1L << (ENCRYPT - 860)) | (1L << (ENDPOINT - 860)) | (1L << (ENGINE_ATTRIBUTE - 860)) | (1L << (ENVELOPE - 860)) | (1L << (EQUALS - 860)) | (1L << (EXP - 860)) | (1L << (EXPORT_SET - 860)) | (1L << (EXTERIORRING - 860)) | (1L << (EXTRACTVALUE - 860)) | (1L << (FIELD - 860)) | (1L << (FIND_IN_SET - 860)) | (1L << (FLOOR - 860)) | (1L << (FORMAT - 860)) | (1L << (FOUND_ROWS - 860)) | (1L << (FROM_BASE64 - 860)) | (1L << (FROM_DAYS - 860)) | (1L << (FROM_UNIXTIME - 860)) | (1L << (GEOMCOLLFROMTEXT - 860)) | (1L << (GEOMCOLLFROMWKB - 860)) | (1L << (GEOMETRYCOLLECTIONFROMTEXT - 860)) | (1L << (GEOMETRYCOLLECTIONFROMWKB - 860)) | (1L << (GEOMETRYFROMTEXT - 860)) | (1L << (GEOMETRYFROMWKB - 860)) | (1L << (GEOMETRYN - 860)) | (1L << (GEOMETRYTYPE - 860)) | (1L << (GEOMFROMTEXT - 860)) | (1L << (GEOMFROMWKB - 860)) | (1L << (GET_FORMAT - 860)) | (1L << (GET_LOCK - 860)) | (1L << (GLENGTH - 860)) | (1L << (GREATEST - 860)) | (1L << (GTID_SUBSET - 860)) | (1L << (GTID_SUBTRACT - 860)) | (1L << (HEX - 860)) | (1L << (IFNULL - 860)) | (1L << (INET6_ATON - 860)) | (1L << (INET6_NTOA - 860)) | (1L << (INET_ATON - 860)) | (1L << (INET_NTOA - 860)) | (1L << (INSTR - 860)) | (1L << (INTERIORRINGN - 860)) | (1L << (INTERSECTS - 860)) | (1L << (ISCLOSED - 860)))) != 0) || ((((_la - 924)) & ~0x3f) == 0 && ((1L << (_la - 924)) & ((1L << (ISEMPTY - 924)) | (1L << (ISNULL - 924)) | (1L << (ISSIMPLE - 924)) | (1L << (IS_FREE_LOCK - 924)) | (1L << (IS_IPV4 - 924)) | (1L << (IS_IPV4_COMPAT - 924)) | (1L << (IS_IPV4_MAPPED - 924)) | (1L << (IS_IPV6 - 924)) | (1L << (IS_USED_LOCK - 924)) | (1L << (LAST_INSERT_ID - 924)) | (1L << (LCASE - 924)) | (1L << (LEAST - 924)) | (1L << (LENGTH - 924)) | (1L << (LINEFROMTEXT - 924)) | (1L << (LINEFROMWKB - 924)) | (1L << (LINESTRINGFROMTEXT - 924)) | (1L << (LINESTRINGFROMWKB - 924)) | (1L << (LN - 924)) | (1L << (LOAD_FILE - 924)) | (1L << (LOCATE - 924)) | (1L << (LOG - 924)) | (1L << (LOG10 - 924)) | (1L << (LOG2 - 924)) | (1L << (LOWER - 924)) | (1L << (LPAD - 924)) | (1L << (LTRIM - 924)) | (1L << (MAKEDATE - 924)) | (1L << (MAKETIME - 924)) | (1L << (MAKE_SET - 924)) | (1L << (MASTER_POS_WAIT - 924)) | (1L << (MBRCONTAINS - 924)) | (1L << (MBRDISJOINT - 924)) | (1L << (MBREQUAL - 924)) | (1L << (MBRINTERSECTS - 924)) | (1L << (MBROVERLAPS - 924)) | (1L << (MBRTOUCHES - 924)) | (1L << (MBRWITHIN - 924)) | (1L << (MD5 - 924)) | (1L << (MLINEFROMTEXT - 924)) | (1L << (MLINEFROMWKB - 924)) | (1L << (MONTHNAME - 924)) | (1L << (MPOINTFROMTEXT - 924)) | (1L << (MPOINTFROMWKB - 924)) | (1L << (MPOLYFROMTEXT - 924)) | (1L << (MPOLYFROMWKB - 924)) | (1L << (MULTILINESTRINGFROMTEXT - 924)) | (1L << (MULTILINESTRINGFROMWKB - 924)) | (1L << (MULTIPOINTFROMTEXT - 924)) | (1L << (MULTIPOINTFROMWKB - 924)) | (1L << (MULTIPOLYGONFROMTEXT - 924)) | (1L << (MULTIPOLYGONFROMWKB - 924)) | (1L << (NAME_CONST - 924)) | (1L << (NULLIF - 924)) | (1L << (NUMGEOMETRIES - 924)) | (1L << (NUMINTERIORRINGS - 924)) | (1L << (NUMPOINTS - 924)) | (1L << (OCT - 924)) | (1L << (OCTET_LENGTH - 924)) | (1L << (ORD - 924)) | (1L << (OVERLAPS - 924)) | (1L << (PERIOD_ADD - 924)) | (1L << (PERIOD_DIFF - 924)) | (1L << (PI - 924)) | (1L << (POINTFROMTEXT - 924)))) != 0) || ((((_la - 988)) & ~0x3f) == 0 && ((1L << (_la - 988)) & ((1L << (POINTFROMWKB - 988)) | (1L << (POINTN - 988)) | (1L << (POLYFROMTEXT - 988)) | (1L << (POLYFROMWKB - 988)) | (1L << (POLYGONFROMTEXT - 988)) | (1L << (POLYGONFROMWKB - 988)) | (1L << (POW - 988)) | (1L << (POWER - 988)) | (1L << (QUOTE - 988)) | (1L << (RADIANS - 988)) | (1L << (RAND - 988)) | (1L << (RANDOM - 988)) | (1L << (RANDOM_BYTES - 988)) | (1L << (RELEASE_LOCK - 988)) | (1L << (REVERSE - 988)) | (1L << (ROUND - 988)) | (1L << (ROW_COUNT - 988)) | (1L << (RPAD - 988)) | (1L << (RTRIM - 988)) | (1L << (SEC_TO_TIME - 988)) | (1L << (SECONDARY_ENGINE_ATTRIBUTE - 988)) | (1L << (SENSITIVE_VARIABLES_OBSERVER - 988)) | (1L << (SESSION_USER - 988)) | (1L << (SHA - 988)) | (1L << (SHA1 - 988)) | (1L << (SHA2 - 988)) | (1L << (SCHEMA_NAME - 988)) | (1L << (SIGN - 988)) | (1L << (SIN - 988)) | (1L << (SLEEP - 988)) | (1L << (SOUNDEX - 988)) | (1L << (SQL_THREAD_WAIT_AFTER_GTIDS - 988)) | (1L << (SQRT - 988)) | (1L << (SRID - 988)) | (1L << (STARTPOINT - 988)) | (1L << (STRCMP - 988)) | (1L << (STR_TO_DATE - 988)) | (1L << (ST_AREA - 988)) | (1L << (ST_ASBINARY - 988)) | (1L << (ST_ASTEXT - 988)) | (1L << (ST_ASWKB - 988)) | (1L << (ST_ASWKT - 988)) | (1L << (ST_BUFFER - 988)) | (1L << (ST_CENTROID - 988)) | (1L << (ST_CONTAINS - 988)) | (1L << (ST_CROSSES - 988)) | (1L << (ST_DIFFERENCE - 988)) | (1L << (ST_DIMENSION - 988)) | (1L << (ST_DISJOINT - 988)) | (1L << (ST_DISTANCE - 988)) | (1L << (ST_ENDPOINT - 988)) | (1L << (ST_ENVELOPE - 988)) | (1L << (ST_EQUALS - 988)) | (1L << (ST_EXTERIORRING - 988)) | (1L << (ST_GEOMCOLLFROMTEXT - 988)) | (1L << (ST_GEOMCOLLFROMTXT - 988)) | (1L << (ST_GEOMCOLLFROMWKB - 988)) | (1L << (ST_GEOMETRYCOLLECTIONFROMTEXT - 988)) | (1L << (ST_GEOMETRYCOLLECTIONFROMWKB - 988)) | (1L << (ST_GEOMETRYFROMTEXT - 988)) | (1L << (ST_GEOMETRYFROMWKB - 988)) | (1L << (ST_GEOMETRYN - 988)) | (1L << (ST_GEOMETRYTYPE - 988)) | (1L << (ST_GEOMFROMTEXT - 988)))) != 0) || ((((_la - 1052)) & ~0x3f) == 0 && ((1L << (_la - 1052)) & ((1L << (ST_GEOMFROMWKB - 1052)) | (1L << (ST_INTERIORRINGN - 1052)) | (1L << (ST_INTERSECTION - 1052)) | (1L << (ST_INTERSECTS - 1052)) | (1L << (ST_ISCLOSED - 1052)) | (1L << (ST_ISEMPTY - 1052)) | (1L << (ST_ISSIMPLE - 1052)) | (1L << (ST_LINEFROMTEXT - 1052)) | (1L << (ST_LINEFROMWKB - 1052)) | (1L << (ST_LINESTRINGFROMTEXT - 1052)) | (1L << (ST_LINESTRINGFROMWKB - 1052)) | (1L << (ST_NUMGEOMETRIES - 1052)) | (1L << (ST_NUMINTERIORRING - 1052)) | (1L << (ST_NUMINTERIORRINGS - 1052)) | (1L << (ST_NUMPOINTS - 1052)) | (1L << (ST_OVERLAPS - 1052)) | (1L << (ST_POINTFROMTEXT - 1052)) | (1L << (ST_POINTFROMWKB - 1052)) | (1L << (ST_POINTN - 1052)) | (1L << (ST_POLYFROMTEXT - 1052)) | (1L << (ST_POLYFROMWKB - 1052)) | (1L << (ST_POLYGONFROMTEXT - 1052)) | (1L << (ST_POLYGONFROMWKB - 1052)) | (1L << (ST_SRID - 1052)) | (1L << (ST_STARTPOINT - 1052)) | (1L << (ST_SYMDIFFERENCE - 1052)) | (1L << (ST_TOUCHES - 1052)) | (1L << (ST_UNION - 1052)) | (1L << (ST_WITHIN - 1052)) | (1L << (ST_X - 1052)) | (1L << (ST_Y - 1052)) | (1L << (SUBDATE - 1052)) | (1L << (SUBSTRING_INDEX - 1052)) | (1L << (SUBTIME - 1052)) | (1L << (SYSTEM_USER - 1052)) | (1L << (SYSTEM - 1052)) | (1L << (TAN - 1052)) | (1L << (TELEMETRY_LOG_ADMIN - 1052)) | (1L << (TIMEDIFF - 1052)) | (1L << (TIMESTAMPADD - 1052)) | (1L << (TIMESTAMPDIFF - 1052)) | (1L << (TIME_FORMAT - 1052)) | (1L << (TIME_TO_SEC - 1052)) | (1L << (TOUCHES - 1052)) | (1L << (TO_BASE64 - 1052)) | (1L << (TO_DAYS - 1052)) | (1L << (TO_SECONDS - 1052)) | (1L << (TP_CONNECTION_ADMIN - 1052)) | (1L << (UCASE - 1052)) | (1L << (UNCOMPRESS - 1052)) | (1L << (UNCOMPRESSED_LENGTH - 1052)) | (1L << (UNHEX - 1052)) | (1L << (UNIX_TIMESTAMP - 1052)) | (1L << (UPDATEXML - 1052)) | (1L << (UPPER - 1052)) | (1L << (UUID - 1052)) | (1L << (UUID_SHORT - 1052)) | (1L << (VALIDATE_PASSWORD_STRENGTH - 1052)) | (1L << (VERSION - 1052)) | (1L << (VERSIONING - 1052)) | (1L << (WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS - 1052)) | (1L << (WEEKDAY - 1052)) | (1L << (WEEKOFYEAR - 1052)) | (1L << (WEIGHT_STRING - 1052)))) != 0) || ((((_la - 1116)) & ~0x3f) == 0 && ((1L << (_la - 1116)) & ((1L << (WITHIN - 1116)) | (1L << (YEARWEEK - 1116)) | (1L << (Y_FUNCTION - 1116)) | (1L << (X_FUNCTION - 1116)) | (1L << (VIA - 1116)) | (1L << (LASTVAL - 1116)) | (1L << (NEXTVAL - 1116)) | (1L << (SETVAL - 1116)) | (1L << (PREVIOUS - 1116)) | (1L << (PERSISTENT - 1116)) | (1L << (BINLOG_MONITOR - 1116)) | (1L << (BINLOG_REPLAY - 1116)) | (1L << (FEDERATED_ADMIN - 1116)) | (1L << (READ_ONLY_ADMIN - 1116)) | (1L << (REPLICA - 1116)) | (1L << (REPLICATION_MASTER_ADMIN - 1116)) | (1L << (MONITOR - 1116)) | (1L << (READ_ONLY - 1116)) | (1L << (REPLAY - 1116)) | (1L << (MOD - 1116)) | (1L << (CHARSET_REVERSE_QOUTE_STRING - 1116)) | (1L << (STRING_LITERAL - 1116)))) != 0) || _la==ID) {
					{
					setState(1958);
					uid();
					}
				}

				setState(1961);
				indexColumnNames();
				setState(1965);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==IGNORED || _la==NOT || _la==USING || _la==WITH || _la==CLUSTERING || _la==COMMENT || _la==INVISIBLE || _la==KEY_BLOCK_SIZE || _la==VISIBLE || _la==ENGINE_ATTRIBUTE || _la==SECONDARY_ENGINE_ATTRIBUTE) {
					{
					{
					setState(1962);
					indexOption();
					}
					}
					setState(1967);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TableOptionContext extends ParserRuleContext {
		public TableOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_tableOption; }
	 
		public TableOptionContext() { }
		public void copyFrom(TableOptionContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class TableOptionEngineContext extends TableOptionContext {
		public TerminalNode ENGINE() { return getToken(MySqlParser.ENGINE, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public EngineNameContext engineName() {
			return getRuleContext(EngineNameContext.class,0);
		}
		public TableOptionEngineContext(TableOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableOptionEngine(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableOptionEngine(this);
		}
	}
	public static class TableOptionMaxRowsContext extends TableOptionContext {
		public TerminalNode MAX_ROWS() { return getToken(MySqlParser.MAX_ROWS, 0); }
		public DecimalLiteralContext decimalLiteral() {
			return getRuleContext(DecimalLiteralContext.class,0);
		}
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TableOptionMaxRowsContext(TableOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableOptionMaxRows(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableOptionMaxRows(this);
		}
	}
	public static class TableOptionCollateContext extends TableOptionContext {
		public TerminalNode COLLATE() { return getToken(MySqlParser.COLLATE, 0); }
		public CollationNameContext collationName() {
			return getRuleContext(CollationNameContext.class,0);
		}
		public TerminalNode DEFAULT() { return getToken(MySqlParser.DEFAULT, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TableOptionCollateContext(TableOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableOptionCollate(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableOptionCollate(this);
		}
	}
	public static class TableOptionPersistentContext extends TableOptionContext {
		public Token extBoolValue;
		public TerminalNode STATS_PERSISTENT() { return getToken(MySqlParser.STATS_PERSISTENT, 0); }
		public TerminalNode DEFAULT() { return getToken(MySqlParser.DEFAULT, 0); }
		public TerminalNode ZERO_DECIMAL() { return getToken(MySqlParser.ZERO_DECIMAL, 0); }
		public TerminalNode ONE_DECIMAL() { return getToken(MySqlParser.ONE_DECIMAL, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TableOptionPersistentContext(TableOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableOptionPersistent(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableOptionPersistent(this);
		}
	}
	public static class TableOptionTablespaceContext extends TableOptionContext {
		public TerminalNode TABLESPACE() { return getToken(MySqlParser.TABLESPACE, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TablespaceStorageContext tablespaceStorage() {
			return getRuleContext(TablespaceStorageContext.class,0);
		}
		public TableOptionTablespaceContext(TableOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableOptionTablespace(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableOptionTablespace(this);
		}
	}
	public static class TableOptionAutoextendSizeContext extends TableOptionContext {
		public TerminalNode AUTOEXTEND_SIZE() { return getToken(MySqlParser.AUTOEXTEND_SIZE, 0); }
		public DecimalLiteralContext decimalLiteral() {
			return getRuleContext(DecimalLiteralContext.class,0);
		}
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TableOptionAutoextendSizeContext(TableOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableOptionAutoextendSize(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableOptionAutoextendSize(this);
		}
	}
	public static class TableOptionPageCompressedContext extends TableOptionContext {
		public TerminalNode PAGE_COMPRESSED() { return getToken(MySqlParser.PAGE_COMPRESSED, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode ZERO_DECIMAL() { return getToken(MySqlParser.ZERO_DECIMAL, 0); }
		public TerminalNode ONE_DECIMAL() { return getToken(MySqlParser.ONE_DECIMAL, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TableOptionPageCompressedContext(TableOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableOptionPageCompressed(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableOptionPageCompressed(this);
		}
	}
	public static class TableOptionStartTransactionContext extends TableOptionContext {
		public TerminalNode START() { return getToken(MySqlParser.START, 0); }
		public TerminalNode TRANSACTION() { return getToken(MySqlParser.TRANSACTION, 0); }
		public TableOptionStartTransactionContext(TableOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableOptionStartTransaction(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableOptionStartTransaction(this);
		}
	}
	public static class TableOptionPackKeysContext extends TableOptionContext {
		public Token extBoolValue;
		public TerminalNode PACK_KEYS() { return getToken(MySqlParser.PACK_KEYS, 0); }
		public TerminalNode ZERO_DECIMAL() { return getToken(MySqlParser.ZERO_DECIMAL, 0); }
		public TerminalNode ONE_DECIMAL() { return getToken(MySqlParser.ONE_DECIMAL, 0); }
		public TerminalNode DEFAULT() { return getToken(MySqlParser.DEFAULT, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TableOptionPackKeysContext(TableOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableOptionPackKeys(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableOptionPackKeys(this);
		}
	}
	public static class TableOptionPasswordContext extends TableOptionContext {
		public TerminalNode PASSWORD() { return getToken(MySqlParser.PASSWORD, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TableOptionPasswordContext(TableOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableOptionPassword(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableOptionPassword(this);
		}
	}
	public static class TableOptionUnionContext extends TableOptionContext {
		public TerminalNode UNION() { return getToken(MySqlParser.UNION, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public TablesContext tables() {
			return getRuleContext(TablesContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TableOptionUnionContext(TableOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableOptionUnion(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableOptionUnion(this);
		}
	}
	public static class TableOptionSamplePageContext extends TableOptionContext {
		public TerminalNode STATS_SAMPLE_PAGES() { return getToken(MySqlParser.STATS_SAMPLE_PAGES, 0); }
		public TerminalNode DEFAULT() { return getToken(MySqlParser.DEFAULT, 0); }
		public DecimalLiteralContext decimalLiteral() {
			return getRuleContext(DecimalLiteralContext.class,0);
		}
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TableOptionSamplePageContext(TableOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableOptionSamplePage(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableOptionSamplePage(this);
		}
	}
	public static class TableOptionCharsetContext extends TableOptionContext {
		public CharSetContext charSet() {
			return getRuleContext(CharSetContext.class,0);
		}
		public CharsetNameContext charsetName() {
			return getRuleContext(CharsetNameContext.class,0);
		}
		public List DEFAULT() { return getTokens(MySqlParser.DEFAULT); }
		public TerminalNode DEFAULT(int i) {
			return getToken(MySqlParser.DEFAULT, i);
		}
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TableOptionCharsetContext(TableOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableOptionCharset(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableOptionCharset(this);
		}
	}
	public static class TableOptionIndexDirectoryContext extends TableOptionContext {
		public TerminalNode INDEX() { return getToken(MySqlParser.INDEX, 0); }
		public TerminalNode DIRECTORY() { return getToken(MySqlParser.DIRECTORY, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TableOptionIndexDirectoryContext(TableOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableOptionIndexDirectory(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableOptionIndexDirectory(this);
		}
	}
	public static class TableOptionTableTypeContext extends TableOptionContext {
		public TerminalNode TABLE_TYPE() { return getToken(MySqlParser.TABLE_TYPE, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TableTypeContext tableType() {
			return getRuleContext(TableTypeContext.class,0);
		}
		public TableOptionTableTypeContext(TableOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableOptionTableType(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableOptionTableType(this);
		}
	}
	public static class TableOptionKeyBlockSizeContext extends TableOptionContext {
		public TerminalNode KEY_BLOCK_SIZE() { return getToken(MySqlParser.KEY_BLOCK_SIZE, 0); }
		public FileSizeLiteralContext fileSizeLiteral() {
			return getRuleContext(FileSizeLiteralContext.class,0);
		}
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TableOptionKeyBlockSizeContext(TableOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableOptionKeyBlockSize(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableOptionKeyBlockSize(this);
		}
	}
	public static class TableOptionEncryptionContext extends TableOptionContext {
		public TerminalNode ENCRYPTION() { return getToken(MySqlParser.ENCRYPTION, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TableOptionEncryptionContext(TableOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableOptionEncryption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableOptionEncryption(this);
		}
	}
	public static class TableOptionDataDirectoryContext extends TableOptionContext {
		public TerminalNode DIRECTORY() { return getToken(MySqlParser.DIRECTORY, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode DATA() { return getToken(MySqlParser.DATA, 0); }
		public TerminalNode INDEX() { return getToken(MySqlParser.INDEX, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TableOptionDataDirectoryContext(TableOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableOptionDataDirectory(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableOptionDataDirectory(this);
		}
	}
	public static class TableOptionRecalculationContext extends TableOptionContext {
		public Token extBoolValue;
		public TerminalNode STATS_AUTO_RECALC() { return getToken(MySqlParser.STATS_AUTO_RECALC, 0); }
		public TerminalNode DEFAULT() { return getToken(MySqlParser.DEFAULT, 0); }
		public TerminalNode ZERO_DECIMAL() { return getToken(MySqlParser.ZERO_DECIMAL, 0); }
		public TerminalNode ONE_DECIMAL() { return getToken(MySqlParser.ONE_DECIMAL, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TableOptionRecalculationContext(TableOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableOptionRecalculation(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableOptionRecalculation(this);
		}
	}
	public static class TableOptionAutoIncrementContext extends TableOptionContext {
		public TerminalNode AUTO_INCREMENT() { return getToken(MySqlParser.AUTO_INCREMENT, 0); }
		public DecimalLiteralContext decimalLiteral() {
			return getRuleContext(DecimalLiteralContext.class,0);
		}
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TableOptionAutoIncrementContext(TableOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableOptionAutoIncrement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableOptionAutoIncrement(this);
		}
	}
	public static class TableOptionEncryptionKeyIdContext extends TableOptionContext {
		public TerminalNode ENCRYPTION_KEY_ID() { return getToken(MySqlParser.ENCRYPTION_KEY_ID, 0); }
		public DecimalLiteralContext decimalLiteral() {
			return getRuleContext(DecimalLiteralContext.class,0);
		}
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TableOptionEncryptionKeyIdContext(TableOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableOptionEncryptionKeyId(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableOptionEncryptionKeyId(this);
		}
	}
	public static class TableOptionChecksumContext extends TableOptionContext {
		public Token boolValue;
		public TerminalNode CHECKSUM() { return getToken(MySqlParser.CHECKSUM, 0); }
		public TerminalNode PAGE_CHECKSUM() { return getToken(MySqlParser.PAGE_CHECKSUM, 0); }
		public TerminalNode ZERO_DECIMAL() { return getToken(MySqlParser.ZERO_DECIMAL, 0); }
		public TerminalNode ONE_DECIMAL() { return getToken(MySqlParser.ONE_DECIMAL, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TableOptionChecksumContext(TableOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableOptionChecksum(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableOptionChecksum(this);
		}
	}
	public static class TableOptionEncryptedContext extends TableOptionContext {
		public EncryptedLiteralContext encryptedLiteral() {
			return getRuleContext(EncryptedLiteralContext.class,0);
		}
		public TerminalNode YES() { return getToken(MySqlParser.YES, 0); }
		public TerminalNode NO() { return getToken(MySqlParser.NO, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TableOptionEncryptedContext(TableOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableOptionEncrypted(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableOptionEncrypted(this);
		}
	}
	public static class TableOptionDelayContext extends TableOptionContext {
		public Token boolValue;
		public TerminalNode DELAY_KEY_WRITE() { return getToken(MySqlParser.DELAY_KEY_WRITE, 0); }
		public TerminalNode ZERO_DECIMAL() { return getToken(MySqlParser.ZERO_DECIMAL, 0); }
		public TerminalNode ONE_DECIMAL() { return getToken(MySqlParser.ONE_DECIMAL, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TableOptionDelayContext(TableOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableOptionDelay(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableOptionDelay(this);
		}
	}
	public static class TableOptionConnectionContext extends TableOptionContext {
		public TerminalNode CONNECTION() { return getToken(MySqlParser.CONNECTION, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TableOptionConnectionContext(TableOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableOptionConnection(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableOptionConnection(this);
		}
	}
	public static class TableOptionTransactionalContext extends TableOptionContext {
		public TerminalNode TRANSACTIONAL() { return getToken(MySqlParser.TRANSACTIONAL, 0); }
		public TerminalNode ZERO_DECIMAL() { return getToken(MySqlParser.ZERO_DECIMAL, 0); }
		public TerminalNode ONE_DECIMAL() { return getToken(MySqlParser.ONE_DECIMAL, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TableOptionTransactionalContext(TableOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableOptionTransactional(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableOptionTransactional(this);
		}
	}
	public static class TableOptionPageCompressionLevelContext extends TableOptionContext {
		public DecimalLiteralContext decimalLiteral() {
			return getRuleContext(DecimalLiteralContext.class,0);
		}
		public TerminalNode PAGE_COMPRESSION_LEVEL() { return getToken(MySqlParser.PAGE_COMPRESSION_LEVEL, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TableOptionPageCompressionLevelContext(TableOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableOptionPageCompressionLevel(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableOptionPageCompressionLevel(this);
		}
	}
	public static class TableOptionSecondaryEngineAttributeContext extends TableOptionContext {
		public TerminalNode SECONDARY_ENGINE_ATTRIBUTE() { return getToken(MySqlParser.SECONDARY_ENGINE_ATTRIBUTE, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TableOptionSecondaryEngineAttributeContext(TableOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableOptionSecondaryEngineAttribute(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableOptionSecondaryEngineAttribute(this);
		}
	}
	public static class TableOptionWithSystemVersioningContext extends TableOptionContext {
		public TerminalNode WITH() { return getToken(MySqlParser.WITH, 0); }
		public TerminalNode SYSTEM() { return getToken(MySqlParser.SYSTEM, 0); }
		public TerminalNode VERSIONING() { return getToken(MySqlParser.VERSIONING, 0); }
		public TableOptionWithSystemVersioningContext(TableOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableOptionWithSystemVersioning(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableOptionWithSystemVersioning(this);
		}
	}
	public static class TableOptionCommentContext extends TableOptionContext {
		public TerminalNode COMMENT() { return getToken(MySqlParser.COMMENT, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TableOptionCommentContext(TableOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableOptionComment(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableOptionComment(this);
		}
	}
	public static class TableOptionAverageContext extends TableOptionContext {
		public TerminalNode AVG_ROW_LENGTH() { return getToken(MySqlParser.AVG_ROW_LENGTH, 0); }
		public DecimalLiteralContext decimalLiteral() {
			return getRuleContext(DecimalLiteralContext.class,0);
		}
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TableOptionAverageContext(TableOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableOptionAverage(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableOptionAverage(this);
		}
	}
	public static class TableOptionRowFormatContext extends TableOptionContext {
		public Token rowFormat;
		public TerminalNode ROW_FORMAT() { return getToken(MySqlParser.ROW_FORMAT, 0); }
		public TerminalNode DEFAULT() { return getToken(MySqlParser.DEFAULT, 0); }
		public TerminalNode DYNAMIC() { return getToken(MySqlParser.DYNAMIC, 0); }
		public TerminalNode FIXED() { return getToken(MySqlParser.FIXED, 0); }
		public TerminalNode COMPRESSED() { return getToken(MySqlParser.COMPRESSED, 0); }
		public TerminalNode REDUNDANT() { return getToken(MySqlParser.REDUNDANT, 0); }
		public TerminalNode COMPACT() { return getToken(MySqlParser.COMPACT, 0); }
		public TerminalNode ID() { return getToken(MySqlParser.ID, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TableOptionRowFormatContext(TableOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableOptionRowFormat(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableOptionRowFormat(this);
		}
	}
	public static class TableOptionCompressionContext extends TableOptionContext {
		public TerminalNode COMPRESSION() { return getToken(MySqlParser.COMPRESSION, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode ID() { return getToken(MySqlParser.ID, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TableOptionCompressionContext(TableOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableOptionCompression(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableOptionCompression(this);
		}
	}
	public static class TableOptionInsertMethodContext extends TableOptionContext {
		public Token insertMethod;
		public TerminalNode INSERT_METHOD() { return getToken(MySqlParser.INSERT_METHOD, 0); }
		public TerminalNode NO() { return getToken(MySqlParser.NO, 0); }
		public TerminalNode FIRST() { return getToken(MySqlParser.FIRST, 0); }
		public TerminalNode LAST() { return getToken(MySqlParser.LAST, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TableOptionInsertMethodContext(TableOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableOptionInsertMethod(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableOptionInsertMethod(this);
		}
	}
	public static class TableOptionEngineAttributeContext extends TableOptionContext {
		public TerminalNode ENGINE_ATTRIBUTE() { return getToken(MySqlParser.ENGINE_ATTRIBUTE, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TableOptionEngineAttributeContext(TableOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableOptionEngineAttribute(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableOptionEngineAttribute(this);
		}
	}
	public static class TableOptionMinRowsContext extends TableOptionContext {
		public TerminalNode MIN_ROWS() { return getToken(MySqlParser.MIN_ROWS, 0); }
		public DecimalLiteralContext decimalLiteral() {
			return getRuleContext(DecimalLiteralContext.class,0);
		}
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TableOptionMinRowsContext(TableOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableOptionMinRows(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableOptionMinRows(this);
		}
	}

	public final TableOptionContext tableOption() throws RecognitionException {
		TableOptionContext _localctx = new TableOptionContext(_ctx, getState());
		enterRule(_localctx, 112, RULE_tableOption);
		int _la;
		try {
			setState(2164);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,254,_ctx) ) {
			case 1:
				_localctx = new TableOptionEngineContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(1970);
				match(ENGINE);
				setState(1972);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(1971);
					match(EQUAL_SYMBOL);
					}
				}

				setState(1975);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,217,_ctx) ) {
				case 1:
					{
					setState(1974);
					engineName();
					}
					break;
				}
				}
				break;
			case 2:
				_localctx = new TableOptionEngineAttributeContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(1977);
				match(ENGINE_ATTRIBUTE);
				setState(1979);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(1978);
					match(EQUAL_SYMBOL);
					}
				}

				setState(1981);
				match(STRING_LITERAL);
				}
				break;
			case 3:
				_localctx = new TableOptionAutoextendSizeContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(1982);
				match(AUTOEXTEND_SIZE);
				setState(1984);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(1983);
					match(EQUAL_SYMBOL);
					}
				}

				setState(1986);
				decimalLiteral();
				}
				break;
			case 4:
				_localctx = new TableOptionAutoIncrementContext(_localctx);
				enterOuterAlt(_localctx, 4);
				{
				setState(1987);
				match(AUTO_INCREMENT);
				setState(1989);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(1988);
					match(EQUAL_SYMBOL);
					}
				}

				setState(1991);
				decimalLiteral();
				}
				break;
			case 5:
				_localctx = new TableOptionAverageContext(_localctx);
				enterOuterAlt(_localctx, 5);
				{
				setState(1992);
				match(AVG_ROW_LENGTH);
				setState(1994);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(1993);
					match(EQUAL_SYMBOL);
					}
				}

				setState(1996);
				decimalLiteral();
				}
				break;
			case 6:
				_localctx = new TableOptionCharsetContext(_localctx);
				enterOuterAlt(_localctx, 6);
				{
				setState(1998);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==DEFAULT) {
					{
					setState(1997);
					match(DEFAULT);
					}
				}

				setState(2000);
				charSet();
				setState(2002);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(2001);
					match(EQUAL_SYMBOL);
					}
				}

				setState(2006);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case BINARY:
				case ARMSCII8:
				case ASCII:
				case BIG5:
				case CP1250:
				case CP1251:
				case CP1256:
				case CP1257:
				case CP850:
				case CP852:
				case CP866:
				case CP932:
				case DEC8:
				case EUCJPMS:
				case EUCKR:
				case GB18030:
				case GB2312:
				case GBK:
				case GEOSTD8:
				case GREEK:
				case HEBREW:
				case HP8:
				case KEYBCS2:
				case KOI8R:
				case KOI8U:
				case LATIN1:
				case LATIN2:
				case LATIN5:
				case LATIN7:
				case MACCE:
				case MACROMAN:
				case SJIS:
				case SWE7:
				case TIS620:
				case UCS2:
				case UJIS:
				case UTF16:
				case UTF16LE:
				case UTF32:
				case UTF8:
				case UTF8MB3:
				case UTF8MB4:
				case CHARSET_REVERSE_QOUTE_STRING:
				case STRING_LITERAL:
					{
					setState(2004);
					charsetName();
					}
					break;
				case DEFAULT:
					{
					setState(2005);
					match(DEFAULT);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case 7:
				_localctx = new TableOptionChecksumContext(_localctx);
				enterOuterAlt(_localctx, 7);
				{
				setState(2008);
				_la = _input.LA(1);
				if ( !(_la==CHECKSUM || _la==PAGE_CHECKSUM) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(2010);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(2009);
					match(EQUAL_SYMBOL);
					}
				}

				setState(2012);
				((TableOptionChecksumContext)_localctx).boolValue = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==ZERO_DECIMAL || _la==ONE_DECIMAL) ) {
					((TableOptionChecksumContext)_localctx).boolValue = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case 8:
				_localctx = new TableOptionCollateContext(_localctx);
				enterOuterAlt(_localctx, 8);
				{
				setState(2014);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==DEFAULT) {
					{
					setState(2013);
					match(DEFAULT);
					}
				}

				setState(2016);
				match(COLLATE);
				setState(2018);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(2017);
					match(EQUAL_SYMBOL);
					}
				}

				setState(2020);
				collationName();
				}
				break;
			case 9:
				_localctx = new TableOptionCommentContext(_localctx);
				enterOuterAlt(_localctx, 9);
				{
				setState(2021);
				match(COMMENT);
				setState(2023);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(2022);
					match(EQUAL_SYMBOL);
					}
				}

				setState(2025);
				match(STRING_LITERAL);
				}
				break;
			case 10:
				_localctx = new TableOptionCompressionContext(_localctx);
				enterOuterAlt(_localctx, 10);
				{
				setState(2026);
				match(COMPRESSION);
				setState(2028);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(2027);
					match(EQUAL_SYMBOL);
					}
				}

				setState(2030);
				_la = _input.LA(1);
				if ( !(_la==STRING_LITERAL || _la==ID) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case 11:
				_localctx = new TableOptionConnectionContext(_localctx);
				enterOuterAlt(_localctx, 11);
				{
				setState(2031);
				match(CONNECTION);
				setState(2033);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(2032);
					match(EQUAL_SYMBOL);
					}
				}

				setState(2035);
				match(STRING_LITERAL);
				}
				break;
			case 12:
				_localctx = new TableOptionDataDirectoryContext(_localctx);
				enterOuterAlt(_localctx, 12);
				{
				setState(2036);
				_la = _input.LA(1);
				if ( !(_la==INDEX || _la==DATA) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(2037);
				match(DIRECTORY);
				setState(2039);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(2038);
					match(EQUAL_SYMBOL);
					}
				}

				setState(2041);
				match(STRING_LITERAL);
				}
				break;
			case 13:
				_localctx = new TableOptionDelayContext(_localctx);
				enterOuterAlt(_localctx, 13);
				{
				setState(2042);
				match(DELAY_KEY_WRITE);
				setState(2044);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(2043);
					match(EQUAL_SYMBOL);
					}
				}

				setState(2046);
				((TableOptionDelayContext)_localctx).boolValue = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==ZERO_DECIMAL || _la==ONE_DECIMAL) ) {
					((TableOptionDelayContext)_localctx).boolValue = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case 14:
				_localctx = new TableOptionEncryptionContext(_localctx);
				enterOuterAlt(_localctx, 14);
				{
				setState(2047);
				match(ENCRYPTION);
				setState(2049);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(2048);
					match(EQUAL_SYMBOL);
					}
				}

				setState(2051);
				match(STRING_LITERAL);
				}
				break;
			case 15:
				_localctx = new TableOptionEncryptedContext(_localctx);
				enterOuterAlt(_localctx, 15);
				{
				setState(2052);
				encryptedLiteral();
				setState(2054);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(2053);
					match(EQUAL_SYMBOL);
					}
				}

				setState(2056);
				_la = _input.LA(1);
				if ( !(_la==NO || _la==YES) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case 16:
				_localctx = new TableOptionPageCompressedContext(_localctx);
				enterOuterAlt(_localctx, 16);
				{
				setState(2058);
				_la = _input.LA(1);
				if ( !(_la==PAGE_COMPRESSED || _la==STRING_LITERAL) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(2060);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(2059);
					match(EQUAL_SYMBOL);
					}
				}

				setState(2062);
				_la = _input.LA(1);
				if ( !(_la==ZERO_DECIMAL || _la==ONE_DECIMAL) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case 17:
				_localctx = new TableOptionPageCompressionLevelContext(_localctx);
				enterOuterAlt(_localctx, 17);
				{
				setState(2063);
				_la = _input.LA(1);
				if ( !(_la==PAGE_COMPRESSION_LEVEL || _la==STRING_LITERAL) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(2065);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(2064);
					match(EQUAL_SYMBOL);
					}
				}

				setState(2067);
				decimalLiteral();
				}
				break;
			case 18:
				_localctx = new TableOptionEncryptionKeyIdContext(_localctx);
				enterOuterAlt(_localctx, 18);
				{
				setState(2068);
				match(ENCRYPTION_KEY_ID);
				setState(2070);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(2069);
					match(EQUAL_SYMBOL);
					}
				}

				setState(2072);
				decimalLiteral();
				}
				break;
			case 19:
				_localctx = new TableOptionIndexDirectoryContext(_localctx);
				enterOuterAlt(_localctx, 19);
				{
				setState(2073);
				match(INDEX);
				setState(2074);
				match(DIRECTORY);
				setState(2076);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(2075);
					match(EQUAL_SYMBOL);
					}
				}

				setState(2078);
				match(STRING_LITERAL);
				}
				break;
			case 20:
				_localctx = new TableOptionInsertMethodContext(_localctx);
				enterOuterAlt(_localctx, 20);
				{
				setState(2079);
				match(INSERT_METHOD);
				setState(2081);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(2080);
					match(EQUAL_SYMBOL);
					}
				}

				setState(2083);
				((TableOptionInsertMethodContext)_localctx).insertMethod = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==FIRST || _la==LAST || _la==NO) ) {
					((TableOptionInsertMethodContext)_localctx).insertMethod = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case 21:
				_localctx = new TableOptionKeyBlockSizeContext(_localctx);
				enterOuterAlt(_localctx, 21);
				{
				setState(2084);
				match(KEY_BLOCK_SIZE);
				setState(2086);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(2085);
					match(EQUAL_SYMBOL);
					}
				}

				setState(2088);
				fileSizeLiteral();
				}
				break;
			case 22:
				_localctx = new TableOptionMaxRowsContext(_localctx);
				enterOuterAlt(_localctx, 22);
				{
				setState(2089);
				match(MAX_ROWS);
				setState(2091);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(2090);
					match(EQUAL_SYMBOL);
					}
				}

				setState(2093);
				decimalLiteral();
				}
				break;
			case 23:
				_localctx = new TableOptionMinRowsContext(_localctx);
				enterOuterAlt(_localctx, 23);
				{
				setState(2094);
				match(MIN_ROWS);
				setState(2096);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(2095);
					match(EQUAL_SYMBOL);
					}
				}

				setState(2098);
				decimalLiteral();
				}
				break;
			case 24:
				_localctx = new TableOptionPackKeysContext(_localctx);
				enterOuterAlt(_localctx, 24);
				{
				setState(2099);
				match(PACK_KEYS);
				setState(2101);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(2100);
					match(EQUAL_SYMBOL);
					}
				}

				setState(2103);
				((TableOptionPackKeysContext)_localctx).extBoolValue = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==DEFAULT || _la==ZERO_DECIMAL || _la==ONE_DECIMAL) ) {
					((TableOptionPackKeysContext)_localctx).extBoolValue = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case 25:
				_localctx = new TableOptionPasswordContext(_localctx);
				enterOuterAlt(_localctx, 25);
				{
				setState(2104);
				match(PASSWORD);
				setState(2106);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(2105);
					match(EQUAL_SYMBOL);
					}
				}

				setState(2108);
				match(STRING_LITERAL);
				}
				break;
			case 26:
				_localctx = new TableOptionRowFormatContext(_localctx);
				enterOuterAlt(_localctx, 26);
				{
				setState(2109);
				match(ROW_FORMAT);
				setState(2111);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(2110);
					match(EQUAL_SYMBOL);
					}
				}

				setState(2113);
				((TableOptionRowFormatContext)_localctx).rowFormat = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==DEFAULT || ((((_la - 373)) & ~0x3f) == 0 && ((1L << (_la - 373)) & ((1L << (COMPACT - 373)) | (1L << (COMPRESSED - 373)) | (1L << (DYNAMIC - 373)) | (1L << (FIXED - 373)))) != 0) || _la==REDUNDANT || _la==ID) ) {
					((TableOptionRowFormatContext)_localctx).rowFormat = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case 27:
				_localctx = new TableOptionStartTransactionContext(_localctx);
				enterOuterAlt(_localctx, 27);
				{
				setState(2114);
				match(START);
				setState(2115);
				match(TRANSACTION);
				}
				break;
			case 28:
				_localctx = new TableOptionSecondaryEngineAttributeContext(_localctx);
				enterOuterAlt(_localctx, 28);
				{
				setState(2116);
				match(SECONDARY_ENGINE_ATTRIBUTE);
				setState(2118);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(2117);
					match(EQUAL_SYMBOL);
					}
				}

				setState(2120);
				match(STRING_LITERAL);
				}
				break;
			case 29:
				_localctx = new TableOptionRecalculationContext(_localctx);
				enterOuterAlt(_localctx, 29);
				{
				setState(2121);
				match(STATS_AUTO_RECALC);
				setState(2123);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(2122);
					match(EQUAL_SYMBOL);
					}
				}

				setState(2125);
				((TableOptionRecalculationContext)_localctx).extBoolValue = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==DEFAULT || _la==ZERO_DECIMAL || _la==ONE_DECIMAL) ) {
					((TableOptionRecalculationContext)_localctx).extBoolValue = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case 30:
				_localctx = new TableOptionPersistentContext(_localctx);
				enterOuterAlt(_localctx, 30);
				{
				setState(2126);
				match(STATS_PERSISTENT);
				setState(2128);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(2127);
					match(EQUAL_SYMBOL);
					}
				}

				setState(2130);
				((TableOptionPersistentContext)_localctx).extBoolValue = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==DEFAULT || _la==ZERO_DECIMAL || _la==ONE_DECIMAL) ) {
					((TableOptionPersistentContext)_localctx).extBoolValue = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case 31:
				_localctx = new TableOptionSamplePageContext(_localctx);
				enterOuterAlt(_localctx, 31);
				{
				setState(2131);
				match(STATS_SAMPLE_PAGES);
				setState(2133);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(2132);
					match(EQUAL_SYMBOL);
					}
				}

				setState(2137);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case DEFAULT:
					{
					setState(2135);
					match(DEFAULT);
					}
					break;
				case ZERO_DECIMAL:
				case ONE_DECIMAL:
				case TWO_DECIMAL:
				case DECIMAL_LITERAL:
				case REAL_LITERAL:
					{
					setState(2136);
					decimalLiteral();
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case 32:
				_localctx = new TableOptionTablespaceContext(_localctx);
				enterOuterAlt(_localctx, 32);
				{
				setState(2139);
				match(TABLESPACE);
				setState(2140);
				uid();
				setState(2142);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,251,_ctx) ) {
				case 1:
					{
					setState(2141);
					tablespaceStorage();
					}
					break;
				}
				}
				break;
			case 33:
				_localctx = new TableOptionTableTypeContext(_localctx);
				enterOuterAlt(_localctx, 33);
				{
				setState(2144);
				match(TABLE_TYPE);
				setState(2145);
				match(EQUAL_SYMBOL);
				setState(2146);
				tableType();
				}
				break;
			case 34:
				_localctx = new TableOptionTablespaceContext(_localctx);
				enterOuterAlt(_localctx, 34);
				{
				setState(2147);
				tablespaceStorage();
				}
				break;
			case 35:
				_localctx = new TableOptionTransactionalContext(_localctx);
				enterOuterAlt(_localctx, 35);
				{
				setState(2148);
				match(TRANSACTIONAL);
				setState(2150);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(2149);
					match(EQUAL_SYMBOL);
					}
				}

				setState(2152);
				_la = _input.LA(1);
				if ( !(_la==ZERO_DECIMAL || _la==ONE_DECIMAL) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case 36:
				_localctx = new TableOptionUnionContext(_localctx);
				enterOuterAlt(_localctx, 36);
				{
				setState(2153);
				match(UNION);
				setState(2155);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(2154);
					match(EQUAL_SYMBOL);
					}
				}

				setState(2157);
				match(LR_BRACKET);
				setState(2158);
				tables();
				setState(2159);
				match(RR_BRACKET);
				}
				break;
			case 37:
				_localctx = new TableOptionWithSystemVersioningContext(_localctx);
				enterOuterAlt(_localctx, 37);
				{
				setState(2161);
				match(WITH);
				setState(2162);
				match(SYSTEM);
				setState(2163);
				match(VERSIONING);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TableTypeContext extends ParserRuleContext {
		public TerminalNode MYSQL() { return getToken(MySqlParser.MYSQL, 0); }
		public TerminalNode ODBC() { return getToken(MySqlParser.ODBC, 0); }
		public TableTypeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_tableType; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableType(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableType(this);
		}
	}

	public final TableTypeContext tableType() throws RecognitionException {
		TableTypeContext _localctx = new TableTypeContext(_ctx, getState());
		enterRule(_localctx, 114, RULE_tableType);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2166);
			_la = _input.LA(1);
			if ( !(_la==MYSQL || _la==ODBC) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TablespaceStorageContext extends ParserRuleContext {
		public TerminalNode STORAGE() { return getToken(MySqlParser.STORAGE, 0); }
		public TerminalNode DISK() { return getToken(MySqlParser.DISK, 0); }
		public TerminalNode MEMORY() { return getToken(MySqlParser.MEMORY, 0); }
		public TerminalNode DEFAULT() { return getToken(MySqlParser.DEFAULT, 0); }
		public TablespaceStorageContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_tablespaceStorage; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTablespaceStorage(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTablespaceStorage(this);
		}
	}

	public final TablespaceStorageContext tablespaceStorage() throws RecognitionException {
		TablespaceStorageContext _localctx = new TablespaceStorageContext(_ctx, getState());
		enterRule(_localctx, 116, RULE_tablespaceStorage);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2168);
			match(STORAGE);
			setState(2169);
			_la = _input.LA(1);
			if ( !(_la==DEFAULT || _la==DISK || _la==MEMORY) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PartitionDefinitionsContext extends ParserRuleContext {
		public DecimalLiteralContext count;
		public DecimalLiteralContext subCount;
		public TerminalNode PARTITION() { return getToken(MySqlParser.PARTITION, 0); }
		public List BY() { return getTokens(MySqlParser.BY); }
		public TerminalNode BY(int i) {
			return getToken(MySqlParser.BY, i);
		}
		public PartitionFunctionDefinitionContext partitionFunctionDefinition() {
			return getRuleContext(PartitionFunctionDefinitionContext.class,0);
		}
		public TerminalNode PARTITIONS() { return getToken(MySqlParser.PARTITIONS, 0); }
		public TerminalNode SUBPARTITION() { return getToken(MySqlParser.SUBPARTITION, 0); }
		public SubpartitionFunctionDefinitionContext subpartitionFunctionDefinition() {
			return getRuleContext(SubpartitionFunctionDefinitionContext.class,0);
		}
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public List partitionDefinition() {
			return getRuleContexts(PartitionDefinitionContext.class);
		}
		public PartitionDefinitionContext partitionDefinition(int i) {
			return getRuleContext(PartitionDefinitionContext.class,i);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public List decimalLiteral() {
			return getRuleContexts(DecimalLiteralContext.class);
		}
		public DecimalLiteralContext decimalLiteral(int i) {
			return getRuleContext(DecimalLiteralContext.class,i);
		}
		public TerminalNode SUBPARTITIONS() { return getToken(MySqlParser.SUBPARTITIONS, 0); }
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public PartitionDefinitionsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_partitionDefinitions; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPartitionDefinitions(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPartitionDefinitions(this);
		}
	}

	public final PartitionDefinitionsContext partitionDefinitions() throws RecognitionException {
		PartitionDefinitionsContext _localctx = new PartitionDefinitionsContext(_ctx, getState());
		enterRule(_localctx, 118, RULE_partitionDefinitions);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2171);
			match(PARTITION);
			setState(2172);
			match(BY);
			setState(2173);
			partitionFunctionDefinition();
			setState(2176);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==PARTITIONS) {
				{
				setState(2174);
				match(PARTITIONS);
				setState(2175);
				((PartitionDefinitionsContext)_localctx).count = decimalLiteral();
				}
			}

			setState(2185);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==SUBPARTITION) {
				{
				setState(2178);
				match(SUBPARTITION);
				setState(2179);
				match(BY);
				setState(2180);
				subpartitionFunctionDefinition();
				setState(2183);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==SUBPARTITIONS) {
					{
					setState(2181);
					match(SUBPARTITIONS);
					setState(2182);
					((PartitionDefinitionsContext)_localctx).subCount = decimalLiteral();
					}
				}

				}
			}

			setState(2198);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,259,_ctx) ) {
			case 1:
				{
				setState(2187);
				match(LR_BRACKET);
				setState(2188);
				partitionDefinition();
				setState(2193);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(2189);
					match(COMMA);
					setState(2190);
					partitionDefinition();
					}
					}
					setState(2195);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(2196);
				match(RR_BRACKET);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PartitionFunctionDefinitionContext extends ParserRuleContext {
		public PartitionFunctionDefinitionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_partitionFunctionDefinition; }
	 
		public PartitionFunctionDefinitionContext() { }
		public void copyFrom(PartitionFunctionDefinitionContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class PartitionFunctionKeyContext extends PartitionFunctionDefinitionContext {
		public Token algType;
		public TerminalNode KEY() { return getToken(MySqlParser.KEY, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TerminalNode LINEAR() { return getToken(MySqlParser.LINEAR, 0); }
		public TerminalNode ALGORITHM() { return getToken(MySqlParser.ALGORITHM, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public UidListContext uidList() {
			return getRuleContext(UidListContext.class,0);
		}
		public TerminalNode ONE_DECIMAL() { return getToken(MySqlParser.ONE_DECIMAL, 0); }
		public TerminalNode TWO_DECIMAL() { return getToken(MySqlParser.TWO_DECIMAL, 0); }
		public PartitionFunctionKeyContext(PartitionFunctionDefinitionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPartitionFunctionKey(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPartitionFunctionKey(this);
		}
	}
	public static class PartitionFunctionHashContext extends PartitionFunctionDefinitionContext {
		public TerminalNode HASH() { return getToken(MySqlParser.HASH, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TerminalNode LINEAR() { return getToken(MySqlParser.LINEAR, 0); }
		public PartitionFunctionHashContext(PartitionFunctionDefinitionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPartitionFunctionHash(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPartitionFunctionHash(this);
		}
	}
	public static class PartitionFunctionListContext extends PartitionFunctionDefinitionContext {
		public TerminalNode LIST() { return getToken(MySqlParser.LIST, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TerminalNode COLUMNS() { return getToken(MySqlParser.COLUMNS, 0); }
		public UidListContext uidList() {
			return getRuleContext(UidListContext.class,0);
		}
		public PartitionFunctionListContext(PartitionFunctionDefinitionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPartitionFunctionList(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPartitionFunctionList(this);
		}
	}
	public static class PartitionFunctionRangeContext extends PartitionFunctionDefinitionContext {
		public TerminalNode RANGE() { return getToken(MySqlParser.RANGE, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TerminalNode COLUMNS() { return getToken(MySqlParser.COLUMNS, 0); }
		public UidListContext uidList() {
			return getRuleContext(UidListContext.class,0);
		}
		public PartitionFunctionRangeContext(PartitionFunctionDefinitionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPartitionFunctionRange(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPartitionFunctionRange(this);
		}
	}
	public static class PartitionSystemVersionContext extends PartitionFunctionDefinitionContext {
		public TerminalNode SYSTEM_TIME() { return getToken(MySqlParser.SYSTEM_TIME, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode LIMIT() { return getToken(MySqlParser.LIMIT, 0); }
		public TerminalNode STARTS() { return getToken(MySqlParser.STARTS, 0); }
		public TerminalNode AUTO() { return getToken(MySqlParser.AUTO, 0); }
		public PartitionSystemVersionDefinitionsContext partitionSystemVersionDefinitions() {
			return getRuleContext(PartitionSystemVersionDefinitionsContext.class,0);
		}
		public TerminalNode TIMESTAMP() { return getToken(MySqlParser.TIMESTAMP, 0); }
		public TimestampValueContext timestampValue() {
			return getRuleContext(TimestampValueContext.class,0);
		}
		public PartitionSystemVersionContext(PartitionFunctionDefinitionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPartitionSystemVersion(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPartitionSystemVersion(this);
		}
	}

	public final PartitionFunctionDefinitionContext partitionFunctionDefinition() throws RecognitionException {
		PartitionFunctionDefinitionContext _localctx = new PartitionFunctionDefinitionContext(_ctx, getState());
		enterRule(_localctx, 120, RULE_partitionFunctionDefinition);
		int _la;
		try {
			setState(2266);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,271,_ctx) ) {
			case 1:
				_localctx = new PartitionFunctionHashContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(2201);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LINEAR) {
					{
					setState(2200);
					match(LINEAR);
					}
				}

				setState(2203);
				match(HASH);
				setState(2204);
				match(LR_BRACKET);
				setState(2205);
				expression(0);
				setState(2206);
				match(RR_BRACKET);
				}
				break;
			case 2:
				_localctx = new PartitionFunctionKeyContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(2209);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LINEAR) {
					{
					setState(2208);
					match(LINEAR);
					}
				}

				setState(2211);
				match(KEY);
				setState(2215);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==ALGORITHM) {
					{
					setState(2212);
					match(ALGORITHM);
					setState(2213);
					match(EQUAL_SYMBOL);
					setState(2214);
					((PartitionFunctionKeyContext)_localctx).algType = _input.LT(1);
					_la = _input.LA(1);
					if ( !(_la==ONE_DECIMAL || _la==TWO_DECIMAL) ) {
						((PartitionFunctionKeyContext)_localctx).algType = (Token)_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
				}

				setState(2217);
				match(LR_BRACKET);
				setState(2219);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ARRAY) | (1L << ATTRIBUTE) | (1L << BUCKETS) | (1L << CONDITION) | (1L << CURRENT) | (1L << CURRENT_ROLE) | (1L << CURRENT_USER) | (1L << DATABASE) | (1L << DEFAULT) | (1L << DIAGNOSTICS) | (1L << EMPTY) | (1L << ENFORCED) | (1L << EXCEPT))) != 0) || ((((_la - 74)) & ~0x3f) == 0 && ((1L << (_la - 74)) & ((1L << (GROUP - 74)) | (1L << (GROUP_REPLICATION_STREAM - 74)) | (1L << (IF - 74)) | (1L << (IGNORED - 74)) | (1L << (INSERT - 74)) | (1L << (LATERAL - 74)) | (1L << (LEFT - 74)) | (1L << (LOCKED - 74)) | (1L << (MAXVALUE - 74)) | (1L << (MINVALUE - 74)) | (1L << (NUMBER - 74)) | (1L << (OPTIONAL - 74)) | (1L << (ORDER - 74)) | (1L << (PRIMARY - 74)))) != 0) || ((((_la - 142)) & ~0x3f) == 0 && ((1L << (_la - 142)) & ((1L << (REPEAT - 142)) | (1L << (REPLACE - 142)) | (1L << (RIGHT - 142)) | (1L << (SCHEMA - 142)) | (1L << (SKIP_ - 142)) | (1L << (SKIP_QUERY_REWRITE - 142)) | (1L << (STACKED - 142)) | (1L << (STATEMENT - 142)))) != 0) || ((((_la - 220)) & ~0x3f) == 0 && ((1L << (_la - 220)) & ((1L << (DATE - 220)) | (1L << (TIME - 220)) | (1L << (TIMESTAMP - 220)) | (1L << (DATETIME - 220)) | (1L << (YEAR - 220)) | (1L << (NATIONAL - 220)) | (1L << (BINARY - 220)) | (1L << (TEXT - 220)) | (1L << (ENUM - 220)) | (1L << (SERIAL - 220)) | (1L << (JSON_ARRAY - 220)) | (1L << (JSON_ARRAYAGG - 220)) | (1L << (JSON_ARRAY_APPEND - 220)) | (1L << (JSON_ARRAY_INSERT - 220)) | (1L << (JSON_CONTAINS - 220)) | (1L << (JSON_CONTAINS_PATH - 220)) | (1L << (JSON_DEPTH - 220)) | (1L << (JSON_EXTRACT - 220)) | (1L << (JSON_INSERT - 220)) | (1L << (JSON_KEYS - 220)) | (1L << (JSON_LENGTH - 220)) | (1L << (JSON_MERGE - 220)) | (1L << (JSON_MERGE_PATCH - 220)) | (1L << (JSON_MERGE_PRESERVE - 220)) | (1L << (JSON_OBJECT - 220)) | (1L << (JSON_OBJECTAGG - 220)) | (1L << (JSON_OVERLAPS - 220)) | (1L << (JSON_PRETTY - 220)) | (1L << (JSON_QUOTE - 220)) | (1L << (JSON_REMOVE - 220)) | (1L << (JSON_REPLACE - 220)) | (1L << (JSON_SCHEMA_VALID - 220)) | (1L << (JSON_SCHEMA_VALIDATION_REPORT - 220)) | (1L << (JSON_SEARCH - 220)) | (1L << (JSON_SET - 220)) | (1L << (JSON_STORAGE_FREE - 220)) | (1L << (JSON_STORAGE_SIZE - 220)) | (1L << (JSON_TABLE - 220)) | (1L << (JSON_TYPE - 220)) | (1L << (JSON_UNQUOTE - 220)))) != 0) || ((((_la - 284)) & ~0x3f) == 0 && ((1L << (_la - 284)) & ((1L << (JSON_VALID - 284)) | (1L << (JSON_VALUE - 284)) | (1L << (NESTED - 284)) | (1L << (ORDINALITY - 284)) | (1L << (PATH - 284)) | (1L << (AVG - 284)) | (1L << (BIT_AND - 284)) | (1L << (BIT_OR - 284)) | (1L << (BIT_XOR - 284)) | (1L << (COUNT - 284)) | (1L << (CUME_DIST - 284)) | (1L << (DENSE_RANK - 284)) | (1L << (FIRST_VALUE - 284)) | (1L << (GROUP_CONCAT - 284)) | (1L << (LAG - 284)) | (1L << (LAST_VALUE - 284)) | (1L << (LEAD - 284)) | (1L << (MAX - 284)) | (1L << (MIN - 284)) | (1L << (NTILE - 284)) | (1L << (NTH_VALUE - 284)) | (1L << (PERCENT_RANK - 284)) | (1L << (RANK - 284)) | (1L << (ROW_NUMBER - 284)) | (1L << (STD - 284)) | (1L << (STDDEV - 284)) | (1L << (STDDEV_POP - 284)) | (1L << (STDDEV_SAMP - 284)) | (1L << (SUM - 284)) | (1L << (VAR_POP - 284)) | (1L << (VAR_SAMP - 284)) | (1L << (VARIANCE - 284)) | (1L << (CURRENT_DATE - 284)) | (1L << (CURRENT_TIME - 284)) | (1L << (CURRENT_TIMESTAMP - 284)) | (1L << (LOCALTIME - 284)) | (1L << (CURDATE - 284)) | (1L << (CURTIME - 284)) | (1L << (DATE_ADD - 284)) | (1L << (DATE_SUB - 284)) | (1L << (LOCALTIMESTAMP - 284)) | (1L << (NOW - 284)) | (1L << (POSITION - 284)) | (1L << (SUBSTR - 284)) | (1L << (SUBSTRING - 284)) | (1L << (SYSDATE - 284)) | (1L << (TRIM - 284)) | (1L << (UTC_DATE - 284)) | (1L << (UTC_TIME - 284)) | (1L << (UTC_TIMESTAMP - 284)) | (1L << (ACCOUNT - 284)) | (1L << (ACTION - 284)) | (1L << (AFTER - 284)) | (1L << (AGGREGATE - 284)) | (1L << (ALGORITHM - 284)) | (1L << (ANY - 284)) | (1L << (AT - 284)) | (1L << (AUTHORS - 284)) | (1L << (AUTOCOMMIT - 284)) | (1L << (AUTOEXTEND_SIZE - 284)) | (1L << (AUTO_INCREMENT - 284)) | (1L << (AVG_ROW_LENGTH - 284)) | (1L << (BEGIN - 284)))) != 0) || ((((_la - 348)) & ~0x3f) == 0 && ((1L << (_la - 348)) & ((1L << (BINLOG - 348)) | (1L << (BIT - 348)) | (1L << (BLOCK - 348)) | (1L << (BOOL - 348)) | (1L << (BOOLEAN - 348)) | (1L << (BTREE - 348)) | (1L << (CACHE - 348)) | (1L << (CASCADED - 348)) | (1L << (CHAIN - 348)) | (1L << (CHANGED - 348)) | (1L << (CHANNEL - 348)) | (1L << (CHECKSUM - 348)) | (1L << (PAGE_CHECKSUM - 348)) | (1L << (CIPHER - 348)) | (1L << (CLASS_ORIGIN - 348)) | (1L << (CLIENT - 348)) | (1L << (CLOSE - 348)) | (1L << (CLUSTERING - 348)) | (1L << (COALESCE - 348)) | (1L << (CODE - 348)) | (1L << (COLUMNS - 348)) | (1L << (COLUMN_FORMAT - 348)) | (1L << (COLUMN_NAME - 348)) | (1L << (COMMENT - 348)) | (1L << (COMMIT - 348)) | (1L << (COMPACT - 348)) | (1L << (COMPLETION - 348)) | (1L << (COMPRESSED - 348)) | (1L << (COMPRESSION - 348)) | (1L << (CONCURRENT - 348)) | (1L << (CONNECT - 348)) | (1L << (CONNECTION - 348)) | (1L << (CONSISTENT - 348)) | (1L << (CONSTRAINT_CATALOG - 348)) | (1L << (CONSTRAINT_SCHEMA - 348)) | (1L << (CONSTRAINT_NAME - 348)) | (1L << (CONTAINS - 348)) | (1L << (CONTEXT - 348)) | (1L << (CONTRIBUTORS - 348)) | (1L << (COPY - 348)) | (1L << (CPU - 348)) | (1L << (CYCLE - 348)) | (1L << (CURSOR_NAME - 348)) | (1L << (DATA - 348)) | (1L << (DATAFILE - 348)) | (1L << (DEALLOCATE - 348)) | (1L << (DEFAULT_AUTH - 348)) | (1L << (DEFINER - 348)) | (1L << (DELAY_KEY_WRITE - 348)) | (1L << (DES_KEY_FILE - 348)) | (1L << (DIRECTORY - 348)) | (1L << (DISABLE - 348)) | (1L << (DISCARD - 348)) | (1L << (DISK - 348)) | (1L << (DO - 348)) | (1L << (DUMPFILE - 348)) | (1L << (DUPLICATE - 348)) | (1L << (DYNAMIC - 348)) | (1L << (ENABLE - 348)) | (1L << (ENCRYPTED - 348)) | (1L << (ENCRYPTION - 348)) | (1L << (ENCRYPTION_KEY_ID - 348)) | (1L << (END - 348)) | (1L << (ENDS - 348)))) != 0) || ((((_la - 412)) & ~0x3f) == 0 && ((1L << (_la - 412)) & ((1L << (ENGINE - 412)) | (1L << (ENGINES - 412)) | (1L << (ERROR - 412)) | (1L << (ERRORS - 412)) | (1L << (ESCAPE - 412)) | (1L << (EVEN - 412)) | (1L << (EVENT - 412)) | (1L << (EVENTS - 412)) | (1L << (EVERY - 412)) | (1L << (EXCHANGE - 412)) | (1L << (EXCLUSIVE - 412)) | (1L << (EXPIRE - 412)) | (1L << (EXPORT - 412)) | (1L << (EXTENDED - 412)) | (1L << (EXTENT_SIZE - 412)) | (1L << (FAILED_LOGIN_ATTEMPTS - 412)) | (1L << (FAST - 412)) | (1L << (FAULTS - 412)) | (1L << (FIELDS - 412)) | (1L << (FILE_BLOCK_SIZE - 412)) | (1L << (FILTER - 412)) | (1L << (FIRST - 412)) | (1L << (FIXED - 412)) | (1L << (FLUSH - 412)) | (1L << (FOLLOWS - 412)) | (1L << (FOUND - 412)) | (1L << (FULL - 412)) | (1L << (FUNCTION - 412)) | (1L << (GENERAL - 412)) | (1L << (GLOBAL - 412)) | (1L << (GRANTS - 412)) | (1L << (GROUP_REPLICATION - 412)) | (1L << (HANDLER - 412)) | (1L << (HASH - 412)) | (1L << (HELP - 412)) | (1L << (HISTORY - 412)) | (1L << (HOST - 412)) | (1L << (HOSTS - 412)) | (1L << (IDENTIFIED - 412)) | (1L << (IGNORE_SERVER_IDS - 412)) | (1L << (IMPORT - 412)) | (1L << (INCREMENT - 412)) | (1L << (INDEXES - 412)) | (1L << (INITIAL_SIZE - 412)) | (1L << (INPLACE - 412)) | (1L << (INSERT_METHOD - 412)) | (1L << (INSTALL - 412)) | (1L << (INSTANCE - 412)) | (1L << (INSTANT - 412)) | (1L << (INVISIBLE - 412)) | (1L << (INVOKER - 412)) | (1L << (IO - 412)) | (1L << (IO_THREAD - 412)) | (1L << (IPC - 412)) | (1L << (ISOLATION - 412)) | (1L << (ISSUER - 412)) | (1L << (JSON - 412)) | (1L << (KEY_BLOCK_SIZE - 412)) | (1L << (LANGUAGE - 412)) | (1L << (LAST - 412)) | (1L << (LEAVES - 412)) | (1L << (LESS - 412)) | (1L << (LEVEL - 412)))) != 0) || ((((_la - 476)) & ~0x3f) == 0 && ((1L << (_la - 476)) & ((1L << (LIST - 476)) | (1L << (LOCAL - 476)) | (1L << (LOGFILE - 476)) | (1L << (LOGS - 476)) | (1L << (MASTER - 476)) | (1L << (MASTER_AUTO_POSITION - 476)) | (1L << (MASTER_CONNECT_RETRY - 476)) | (1L << (MASTER_DELAY - 476)) | (1L << (MASTER_HEARTBEAT_PERIOD - 476)) | (1L << (MASTER_HOST - 476)) | (1L << (MASTER_LOG_FILE - 476)) | (1L << (MASTER_LOG_POS - 476)) | (1L << (MASTER_PASSWORD - 476)) | (1L << (MASTER_PORT - 476)) | (1L << (MASTER_RETRY_COUNT - 476)) | (1L << (MASTER_SSL - 476)) | (1L << (MASTER_SSL_CA - 476)) | (1L << (MASTER_SSL_CAPATH - 476)) | (1L << (MASTER_SSL_CERT - 476)) | (1L << (MASTER_SSL_CIPHER - 476)) | (1L << (MASTER_SSL_CRL - 476)) | (1L << (MASTER_SSL_CRLPATH - 476)) | (1L << (MASTER_SSL_KEY - 476)) | (1L << (MASTER_TLS_VERSION - 476)) | (1L << (MASTER_USER - 476)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 476)) | (1L << (MAX_QUERIES_PER_HOUR - 476)) | (1L << (MAX_ROWS - 476)) | (1L << (MAX_SIZE - 476)) | (1L << (MAX_UPDATES_PER_HOUR - 476)) | (1L << (MAX_USER_CONNECTIONS - 476)) | (1L << (MEDIUM - 476)) | (1L << (MEMBER - 476)) | (1L << (MERGE - 476)) | (1L << (MESSAGE_TEXT - 476)) | (1L << (MID - 476)) | (1L << (MIGRATE - 476)) | (1L << (MIN_ROWS - 476)) | (1L << (MODE - 476)) | (1L << (MODIFY - 476)) | (1L << (MUTEX - 476)) | (1L << (MYSQL - 476)) | (1L << (MYSQL_ERRNO - 476)) | (1L << (NAME - 476)) | (1L << (NAMES - 476)) | (1L << (NCHAR - 476)) | (1L << (NEVER - 476)) | (1L << (NEXT - 476)) | (1L << (NO - 476)) | (1L << (NOCACHE - 476)) | (1L << (NOCOPY - 476)) | (1L << (NOCYCLE - 476)) | (1L << (NOMAXVALUE - 476)) | (1L << (NOMINVALUE - 476)) | (1L << (NOWAIT - 476)) | (1L << (NODEGROUP - 476)) | (1L << (NONE - 476)) | (1L << (ODBC - 476)) | (1L << (OFFLINE - 476)) | (1L << (OFFSET - 476)) | (1L << (OF - 476)) | (1L << (OJ - 476)) | (1L << (OLD_PASSWORD - 476)) | (1L << (ONE - 476)))) != 0) || ((((_la - 540)) & ~0x3f) == 0 && ((1L << (_la - 540)) & ((1L << (ONLINE - 540)) | (1L << (ONLY - 540)) | (1L << (OPEN - 540)) | (1L << (OPTIMIZER_COSTS - 540)) | (1L << (OPTIONS - 540)) | (1L << (OWNER - 540)) | (1L << (PACK_KEYS - 540)) | (1L << (PAGE - 540)) | (1L << (PARSER - 540)) | (1L << (PARTIAL - 540)) | (1L << (PARTITIONING - 540)) | (1L << (PARTITIONS - 540)) | (1L << (PASSWORD - 540)) | (1L << (PASSWORD_LOCK_TIME - 540)) | (1L << (PHASE - 540)) | (1L << (PLUGIN - 540)) | (1L << (PLUGIN_DIR - 540)) | (1L << (PLUGINS - 540)) | (1L << (PORT - 540)) | (1L << (PRECEDES - 540)) | (1L << (PREPARE - 540)) | (1L << (PRESERVE - 540)) | (1L << (PREV - 540)) | (1L << (PROCESSLIST - 540)) | (1L << (PROFILE - 540)) | (1L << (PROFILES - 540)) | (1L << (PROXY - 540)) | (1L << (QUERY - 540)) | (1L << (QUICK - 540)) | (1L << (REBUILD - 540)) | (1L << (RECOVER - 540)) | (1L << (RECURSIVE - 540)) | (1L << (REDO_BUFFER_SIZE - 540)) | (1L << (REDUNDANT - 540)) | (1L << (RELAY - 540)) | (1L << (RELAY_LOG_FILE - 540)) | (1L << (RELAY_LOG_POS - 540)) | (1L << (RELAYLOG - 540)) | (1L << (REMOVE - 540)) | (1L << (REORGANIZE - 540)) | (1L << (REPAIR - 540)) | (1L << (REPLICATE_DO_DB - 540)) | (1L << (REPLICATE_DO_TABLE - 540)) | (1L << (REPLICATE_IGNORE_DB - 540)) | (1L << (REPLICATE_IGNORE_TABLE - 540)) | (1L << (REPLICATE_REWRITE_DB - 540)) | (1L << (REPLICATE_WILD_DO_TABLE - 540)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 540)) | (1L << (REPLICATION - 540)) | (1L << (RESET - 540)) | (1L << (RESTART - 540)) | (1L << (RESUME - 540)) | (1L << (RETURNED_SQLSTATE - 540)) | (1L << (RETURNING - 540)) | (1L << (RETURNS - 540)) | (1L << (REUSE - 540)) | (1L << (ROLE - 540)) | (1L << (ROLLBACK - 540)) | (1L << (ROLLUP - 540)) | (1L << (ROTATE - 540)) | (1L << (ROW - 540)))) != 0) || ((((_la - 604)) & ~0x3f) == 0 && ((1L << (_la - 604)) & ((1L << (ROWS - 604)) | (1L << (ROW_FORMAT - 604)) | (1L << (RTREE - 604)) | (1L << (SAVEPOINT - 604)) | (1L << (SCHEDULE - 604)) | (1L << (SECURITY - 604)) | (1L << (SEQUENCE - 604)) | (1L << (SERVER - 604)) | (1L << (SESSION - 604)) | (1L << (SHARE - 604)) | (1L << (SHARED - 604)) | (1L << (SIGNED - 604)) | (1L << (SIMPLE - 604)) | (1L << (SLAVE - 604)) | (1L << (SLOW - 604)) | (1L << (SNAPSHOT - 604)) | (1L << (SOCKET - 604)) | (1L << (SOME - 604)) | (1L << (SONAME - 604)) | (1L << (SOUNDS - 604)) | (1L << (SOURCE - 604)) | (1L << (SQL_AFTER_GTIDS - 604)) | (1L << (SQL_AFTER_MTS_GAPS - 604)) | (1L << (SQL_BEFORE_GTIDS - 604)) | (1L << (SQL_BUFFER_RESULT - 604)) | (1L << (SQL_CACHE - 604)) | (1L << (SQL_NO_CACHE - 604)) | (1L << (SQL_THREAD - 604)) | (1L << (START - 604)) | (1L << (STARTS - 604)) | (1L << (STATS_AUTO_RECALC - 604)) | (1L << (STATS_PERSISTENT - 604)) | (1L << (STATS_SAMPLE_PAGES - 604)) | (1L << (STATUS - 604)) | (1L << (STOP - 604)) | (1L << (STORAGE - 604)) | (1L << (STRING - 604)) | (1L << (SUBCLASS_ORIGIN - 604)) | (1L << (SUBJECT - 604)) | (1L << (SUBPARTITION - 604)) | (1L << (SUBPARTITIONS - 604)) | (1L << (SUSPEND - 604)) | (1L << (SWAPS - 604)) | (1L << (SWITCHES - 604)) | (1L << (TABLE_NAME - 604)) | (1L << (TABLESPACE - 604)) | (1L << (TABLE_TYPE - 604)) | (1L << (TEMPORARY - 604)) | (1L << (TEMPTABLE - 604)) | (1L << (THAN - 604)) | (1L << (TRADITIONAL - 604)) | (1L << (TRANSACTION - 604)) | (1L << (TRANSACTIONAL - 604)) | (1L << (TRIGGERS - 604)) | (1L << (TRUNCATE - 604)) | (1L << (UNBOUNDED - 604)) | (1L << (UNDEFINED - 604)) | (1L << (UNDOFILE - 604)) | (1L << (UNDO_BUFFER_SIZE - 604)) | (1L << (UNINSTALL - 604)) | (1L << (UNKNOWN - 604)) | (1L << (UNTIL - 604)) | (1L << (UPGRADE - 604)))) != 0) || ((((_la - 668)) & ~0x3f) == 0 && ((1L << (_la - 668)) & ((1L << (USER - 668)) | (1L << (USE_FRM - 668)) | (1L << (USER_RESOURCES - 668)) | (1L << (VALIDATION - 668)) | (1L << (VALUE - 668)) | (1L << (VARIABLES - 668)) | (1L << (VIEW - 668)) | (1L << (VIRTUAL - 668)) | (1L << (VISIBLE - 668)) | (1L << (WAIT - 668)) | (1L << (WARNINGS - 668)) | (1L << (WITHOUT - 668)) | (1L << (WORK - 668)) | (1L << (WRAPPER - 668)) | (1L << (X509 - 668)) | (1L << (XA - 668)) | (1L << (XML - 668)) | (1L << (YES - 668)) | (1L << (EUR - 668)) | (1L << (USA - 668)) | (1L << (JIS - 668)) | (1L << (ISO - 668)) | (1L << (INTERNAL - 668)) | (1L << (QUARTER - 668)) | (1L << (MONTH - 668)) | (1L << (DAY - 668)) | (1L << (HOUR - 668)) | (1L << (MINUTE - 668)) | (1L << (WEEK - 668)) | (1L << (SECOND - 668)) | (1L << (MICROSECOND - 668)) | (1L << (USER_STATISTICS - 668)) | (1L << (CLIENT_STATISTICS - 668)) | (1L << (INDEX_STATISTICS - 668)) | (1L << (TABLE_STATISTICS - 668)) | (1L << (FIREWALL_RULES - 668)) | (1L << (ADMIN - 668)) | (1L << (APPLICATION_PASSWORD_ADMIN - 668)) | (1L << (AUDIT_ADMIN - 668)) | (1L << (AUDIT_ABORT_EXEMPT - 668)) | (1L << (AUTHENTICATION_POLICY_ADMIN - 668)) | (1L << (BACKUP_ADMIN - 668)) | (1L << (BINLOG_ADMIN - 668)) | (1L << (BINLOG_ENCRYPTION_ADMIN - 668)) | (1L << (CLONE_ADMIN - 668)) | (1L << (CONNECTION_ADMIN - 668)) | (1L << (ENCRYPTION_KEY_ADMIN - 668)) | (1L << (EXECUTE - 668)) | (1L << (FILE - 668)) | (1L << (FIREWALL_ADMIN - 668)) | (1L << (FIREWALL_EXEMPT - 668)) | (1L << (FIREWALL_USER - 668)) | (1L << (FLUSH_OPTIMIZER_COSTS - 668)) | (1L << (FLUSH_STATUS - 668)) | (1L << (FLUSH_TABLES - 668)) | (1L << (FLUSH_USER_RESOURCES - 668)) | (1L << (GROUP_REPLICATION_ADMIN - 668)) | (1L << (INNODB_REDO_LOG_ARCHIVE - 668)) | (1L << (INNODB_REDO_LOG_ENABLE - 668)) | (1L << (INVOKE - 668)) | (1L << (LAMBDA - 668)) | (1L << (NDB_STORED_USER - 668)) | (1L << (PASSWORDLESS_USER_ADMIN - 668)))) != 0) || ((((_la - 732)) & ~0x3f) == 0 && ((1L << (_la - 732)) & ((1L << (PERSIST_RO_VARIABLES_ADMIN - 732)) | (1L << (PRIVILEGES - 732)) | (1L << (PROCESS - 732)) | (1L << (RELOAD - 732)) | (1L << (REPLICATION_APPLIER - 732)) | (1L << (REPLICATION_SLAVE_ADMIN - 732)) | (1L << (RESOURCE_GROUP_ADMIN - 732)) | (1L << (RESOURCE_GROUP_USER - 732)) | (1L << (ROLE_ADMIN - 732)) | (1L << (ROUTINE - 732)) | (1L << (S3 - 732)) | (1L << (SESSION_VARIABLES_ADMIN - 732)) | (1L << (SET_USER_ID - 732)) | (1L << (SHOW_ROUTINE - 732)) | (1L << (SHUTDOWN - 732)) | (1L << (SUPER - 732)) | (1L << (SYSTEM_VARIABLES_ADMIN - 732)) | (1L << (TABLES - 732)) | (1L << (TABLE_ENCRYPTION_ADMIN - 732)) | (1L << (VERSION_TOKEN_ADMIN - 732)) | (1L << (XA_RECOVER_ADMIN - 732)) | (1L << (ARMSCII8 - 732)) | (1L << (ASCII - 732)) | (1L << (BIG5 - 732)) | (1L << (CP1250 - 732)) | (1L << (CP1251 - 732)) | (1L << (CP1256 - 732)) | (1L << (CP1257 - 732)) | (1L << (CP850 - 732)) | (1L << (CP852 - 732)) | (1L << (CP866 - 732)) | (1L << (CP932 - 732)) | (1L << (DEC8 - 732)) | (1L << (EUCJPMS - 732)) | (1L << (EUCKR - 732)) | (1L << (GB18030 - 732)) | (1L << (GB2312 - 732)) | (1L << (GBK - 732)) | (1L << (GEOSTD8 - 732)) | (1L << (GREEK - 732)) | (1L << (HEBREW - 732)) | (1L << (HP8 - 732)) | (1L << (KEYBCS2 - 732)) | (1L << (KOI8R - 732)) | (1L << (KOI8U - 732)) | (1L << (LATIN1 - 732)) | (1L << (LATIN2 - 732)) | (1L << (LATIN5 - 732)) | (1L << (LATIN7 - 732)) | (1L << (MACCE - 732)) | (1L << (MACROMAN - 732)) | (1L << (SJIS - 732)) | (1L << (SWE7 - 732)) | (1L << (TIS620 - 732)) | (1L << (UCS2 - 732)) | (1L << (UJIS - 732)) | (1L << (UTF16 - 732)) | (1L << (UTF16LE - 732)) | (1L << (UTF32 - 732)) | (1L << (UTF8 - 732)) | (1L << (UTF8MB3 - 732)) | (1L << (UTF8MB4 - 732)) | (1L << (ARCHIVE - 732)))) != 0) || ((((_la - 796)) & ~0x3f) == 0 && ((1L << (_la - 796)) & ((1L << (BLACKHOLE - 796)) | (1L << (CSV - 796)) | (1L << (FEDERATED - 796)) | (1L << (INNODB - 796)) | (1L << (MEMORY - 796)) | (1L << (MRG_MYISAM - 796)) | (1L << (MYISAM - 796)) | (1L << (NDB - 796)) | (1L << (NDBCLUSTER - 796)) | (1L << (PERFORMANCE_SCHEMA - 796)) | (1L << (TOKUDB - 796)) | (1L << (REPEATABLE - 796)) | (1L << (COMMITTED - 796)) | (1L << (UNCOMMITTED - 796)) | (1L << (SERIALIZABLE - 796)) | (1L << (GEOMETRYCOLLECTION - 796)) | (1L << (GEOMETRY - 796)) | (1L << (LINESTRING - 796)) | (1L << (MULTILINESTRING - 796)) | (1L << (MULTIPOINT - 796)) | (1L << (MULTIPOLYGON - 796)) | (1L << (POINT - 796)) | (1L << (POLYGON - 796)) | (1L << (ABS - 796)) | (1L << (ACOS - 796)) | (1L << (ADDDATE - 796)) | (1L << (ADDTIME - 796)) | (1L << (AES_DECRYPT - 796)) | (1L << (AES_ENCRYPT - 796)) | (1L << (AREA - 796)) | (1L << (ASBINARY - 796)) | (1L << (ASIN - 796)) | (1L << (ASTEXT - 796)) | (1L << (ASWKB - 796)) | (1L << (ASWKT - 796)) | (1L << (ASYMMETRIC_DECRYPT - 796)) | (1L << (ASYMMETRIC_DERIVE - 796)) | (1L << (ASYMMETRIC_ENCRYPT - 796)) | (1L << (ASYMMETRIC_SIGN - 796)) | (1L << (ASYMMETRIC_VERIFY - 796)) | (1L << (ATAN - 796)) | (1L << (ATAN2 - 796)) | (1L << (BENCHMARK - 796)) | (1L << (BIN - 796)) | (1L << (BIT_COUNT - 796)) | (1L << (BIT_LENGTH - 796)) | (1L << (BUFFER - 796)) | (1L << (CATALOG_NAME - 796)) | (1L << (CEIL - 796)) | (1L << (CEILING - 796)) | (1L << (CENTROID - 796)) | (1L << (CHARACTER_LENGTH - 796)) | (1L << (CHARSET - 796)) | (1L << (CHAR_LENGTH - 796)) | (1L << (COERCIBILITY - 796)) | (1L << (COLLATION - 796)) | (1L << (COMPRESS - 796)) | (1L << (CONCAT - 796)) | (1L << (CONCAT_WS - 796)) | (1L << (CONNECTION_ID - 796)) | (1L << (CONV - 796)) | (1L << (CONVERT_TZ - 796)) | (1L << (COS - 796)))) != 0) || ((((_la - 860)) & ~0x3f) == 0 && ((1L << (_la - 860)) & ((1L << (COT - 860)) | (1L << (CRC32 - 860)) | (1L << (CREATE_ASYMMETRIC_PRIV_KEY - 860)) | (1L << (CREATE_ASYMMETRIC_PUB_KEY - 860)) | (1L << (CREATE_DH_PARAMETERS - 860)) | (1L << (CREATE_DIGEST - 860)) | (1L << (CROSSES - 860)) | (1L << (DATEDIFF - 860)) | (1L << (DATE_FORMAT - 860)) | (1L << (DAYNAME - 860)) | (1L << (DAYOFMONTH - 860)) | (1L << (DAYOFWEEK - 860)) | (1L << (DAYOFYEAR - 860)) | (1L << (DECODE - 860)) | (1L << (DEGREES - 860)) | (1L << (DES_DECRYPT - 860)) | (1L << (DES_ENCRYPT - 860)) | (1L << (DIMENSION - 860)) | (1L << (DISJOINT - 860)) | (1L << (ELT - 860)) | (1L << (ENCODE - 860)) | (1L << (ENCRYPT - 860)) | (1L << (ENDPOINT - 860)) | (1L << (ENGINE_ATTRIBUTE - 860)) | (1L << (ENVELOPE - 860)) | (1L << (EQUALS - 860)) | (1L << (EXP - 860)) | (1L << (EXPORT_SET - 860)) | (1L << (EXTERIORRING - 860)) | (1L << (EXTRACTVALUE - 860)) | (1L << (FIELD - 860)) | (1L << (FIND_IN_SET - 860)) | (1L << (FLOOR - 860)) | (1L << (FORMAT - 860)) | (1L << (FOUND_ROWS - 860)) | (1L << (FROM_BASE64 - 860)) | (1L << (FROM_DAYS - 860)) | (1L << (FROM_UNIXTIME - 860)) | (1L << (GEOMCOLLFROMTEXT - 860)) | (1L << (GEOMCOLLFROMWKB - 860)) | (1L << (GEOMETRYCOLLECTIONFROMTEXT - 860)) | (1L << (GEOMETRYCOLLECTIONFROMWKB - 860)) | (1L << (GEOMETRYFROMTEXT - 860)) | (1L << (GEOMETRYFROMWKB - 860)) | (1L << (GEOMETRYN - 860)) | (1L << (GEOMETRYTYPE - 860)) | (1L << (GEOMFROMTEXT - 860)) | (1L << (GEOMFROMWKB - 860)) | (1L << (GET_FORMAT - 860)) | (1L << (GET_LOCK - 860)) | (1L << (GLENGTH - 860)) | (1L << (GREATEST - 860)) | (1L << (GTID_SUBSET - 860)) | (1L << (GTID_SUBTRACT - 860)) | (1L << (HEX - 860)) | (1L << (IFNULL - 860)) | (1L << (INET6_ATON - 860)) | (1L << (INET6_NTOA - 860)) | (1L << (INET_ATON - 860)) | (1L << (INET_NTOA - 860)) | (1L << (INSTR - 860)) | (1L << (INTERIORRINGN - 860)) | (1L << (INTERSECTS - 860)) | (1L << (ISCLOSED - 860)))) != 0) || ((((_la - 924)) & ~0x3f) == 0 && ((1L << (_la - 924)) & ((1L << (ISEMPTY - 924)) | (1L << (ISNULL - 924)) | (1L << (ISSIMPLE - 924)) | (1L << (IS_FREE_LOCK - 924)) | (1L << (IS_IPV4 - 924)) | (1L << (IS_IPV4_COMPAT - 924)) | (1L << (IS_IPV4_MAPPED - 924)) | (1L << (IS_IPV6 - 924)) | (1L << (IS_USED_LOCK - 924)) | (1L << (LAST_INSERT_ID - 924)) | (1L << (LCASE - 924)) | (1L << (LEAST - 924)) | (1L << (LENGTH - 924)) | (1L << (LINEFROMTEXT - 924)) | (1L << (LINEFROMWKB - 924)) | (1L << (LINESTRINGFROMTEXT - 924)) | (1L << (LINESTRINGFROMWKB - 924)) | (1L << (LN - 924)) | (1L << (LOAD_FILE - 924)) | (1L << (LOCATE - 924)) | (1L << (LOG - 924)) | (1L << (LOG10 - 924)) | (1L << (LOG2 - 924)) | (1L << (LOWER - 924)) | (1L << (LPAD - 924)) | (1L << (LTRIM - 924)) | (1L << (MAKEDATE - 924)) | (1L << (MAKETIME - 924)) | (1L << (MAKE_SET - 924)) | (1L << (MASTER_POS_WAIT - 924)) | (1L << (MBRCONTAINS - 924)) | (1L << (MBRDISJOINT - 924)) | (1L << (MBREQUAL - 924)) | (1L << (MBRINTERSECTS - 924)) | (1L << (MBROVERLAPS - 924)) | (1L << (MBRTOUCHES - 924)) | (1L << (MBRWITHIN - 924)) | (1L << (MD5 - 924)) | (1L << (MLINEFROMTEXT - 924)) | (1L << (MLINEFROMWKB - 924)) | (1L << (MONTHNAME - 924)) | (1L << (MPOINTFROMTEXT - 924)) | (1L << (MPOINTFROMWKB - 924)) | (1L << (MPOLYFROMTEXT - 924)) | (1L << (MPOLYFROMWKB - 924)) | (1L << (MULTILINESTRINGFROMTEXT - 924)) | (1L << (MULTILINESTRINGFROMWKB - 924)) | (1L << (MULTIPOINTFROMTEXT - 924)) | (1L << (MULTIPOINTFROMWKB - 924)) | (1L << (MULTIPOLYGONFROMTEXT - 924)) | (1L << (MULTIPOLYGONFROMWKB - 924)) | (1L << (NAME_CONST - 924)) | (1L << (NULLIF - 924)) | (1L << (NUMGEOMETRIES - 924)) | (1L << (NUMINTERIORRINGS - 924)) | (1L << (NUMPOINTS - 924)) | (1L << (OCT - 924)) | (1L << (OCTET_LENGTH - 924)) | (1L << (ORD - 924)) | (1L << (OVERLAPS - 924)) | (1L << (PERIOD_ADD - 924)) | (1L << (PERIOD_DIFF - 924)) | (1L << (PI - 924)) | (1L << (POINTFROMTEXT - 924)))) != 0) || ((((_la - 988)) & ~0x3f) == 0 && ((1L << (_la - 988)) & ((1L << (POINTFROMWKB - 988)) | (1L << (POINTN - 988)) | (1L << (POLYFROMTEXT - 988)) | (1L << (POLYFROMWKB - 988)) | (1L << (POLYGONFROMTEXT - 988)) | (1L << (POLYGONFROMWKB - 988)) | (1L << (POW - 988)) | (1L << (POWER - 988)) | (1L << (QUOTE - 988)) | (1L << (RADIANS - 988)) | (1L << (RAND - 988)) | (1L << (RANDOM - 988)) | (1L << (RANDOM_BYTES - 988)) | (1L << (RELEASE_LOCK - 988)) | (1L << (REVERSE - 988)) | (1L << (ROUND - 988)) | (1L << (ROW_COUNT - 988)) | (1L << (RPAD - 988)) | (1L << (RTRIM - 988)) | (1L << (SEC_TO_TIME - 988)) | (1L << (SECONDARY_ENGINE_ATTRIBUTE - 988)) | (1L << (SENSITIVE_VARIABLES_OBSERVER - 988)) | (1L << (SESSION_USER - 988)) | (1L << (SHA - 988)) | (1L << (SHA1 - 988)) | (1L << (SHA2 - 988)) | (1L << (SCHEMA_NAME - 988)) | (1L << (SIGN - 988)) | (1L << (SIN - 988)) | (1L << (SLEEP - 988)) | (1L << (SOUNDEX - 988)) | (1L << (SQL_THREAD_WAIT_AFTER_GTIDS - 988)) | (1L << (SQRT - 988)) | (1L << (SRID - 988)) | (1L << (STARTPOINT - 988)) | (1L << (STRCMP - 988)) | (1L << (STR_TO_DATE - 988)) | (1L << (ST_AREA - 988)) | (1L << (ST_ASBINARY - 988)) | (1L << (ST_ASTEXT - 988)) | (1L << (ST_ASWKB - 988)) | (1L << (ST_ASWKT - 988)) | (1L << (ST_BUFFER - 988)) | (1L << (ST_CENTROID - 988)) | (1L << (ST_CONTAINS - 988)) | (1L << (ST_CROSSES - 988)) | (1L << (ST_DIFFERENCE - 988)) | (1L << (ST_DIMENSION - 988)) | (1L << (ST_DISJOINT - 988)) | (1L << (ST_DISTANCE - 988)) | (1L << (ST_ENDPOINT - 988)) | (1L << (ST_ENVELOPE - 988)) | (1L << (ST_EQUALS - 988)) | (1L << (ST_EXTERIORRING - 988)) | (1L << (ST_GEOMCOLLFROMTEXT - 988)) | (1L << (ST_GEOMCOLLFROMTXT - 988)) | (1L << (ST_GEOMCOLLFROMWKB - 988)) | (1L << (ST_GEOMETRYCOLLECTIONFROMTEXT - 988)) | (1L << (ST_GEOMETRYCOLLECTIONFROMWKB - 988)) | (1L << (ST_GEOMETRYFROMTEXT - 988)) | (1L << (ST_GEOMETRYFROMWKB - 988)) | (1L << (ST_GEOMETRYN - 988)) | (1L << (ST_GEOMETRYTYPE - 988)) | (1L << (ST_GEOMFROMTEXT - 988)))) != 0) || ((((_la - 1052)) & ~0x3f) == 0 && ((1L << (_la - 1052)) & ((1L << (ST_GEOMFROMWKB - 1052)) | (1L << (ST_INTERIORRINGN - 1052)) | (1L << (ST_INTERSECTION - 1052)) | (1L << (ST_INTERSECTS - 1052)) | (1L << (ST_ISCLOSED - 1052)) | (1L << (ST_ISEMPTY - 1052)) | (1L << (ST_ISSIMPLE - 1052)) | (1L << (ST_LINEFROMTEXT - 1052)) | (1L << (ST_LINEFROMWKB - 1052)) | (1L << (ST_LINESTRINGFROMTEXT - 1052)) | (1L << (ST_LINESTRINGFROMWKB - 1052)) | (1L << (ST_NUMGEOMETRIES - 1052)) | (1L << (ST_NUMINTERIORRING - 1052)) | (1L << (ST_NUMINTERIORRINGS - 1052)) | (1L << (ST_NUMPOINTS - 1052)) | (1L << (ST_OVERLAPS - 1052)) | (1L << (ST_POINTFROMTEXT - 1052)) | (1L << (ST_POINTFROMWKB - 1052)) | (1L << (ST_POINTN - 1052)) | (1L << (ST_POLYFROMTEXT - 1052)) | (1L << (ST_POLYFROMWKB - 1052)) | (1L << (ST_POLYGONFROMTEXT - 1052)) | (1L << (ST_POLYGONFROMWKB - 1052)) | (1L << (ST_SRID - 1052)) | (1L << (ST_STARTPOINT - 1052)) | (1L << (ST_SYMDIFFERENCE - 1052)) | (1L << (ST_TOUCHES - 1052)) | (1L << (ST_UNION - 1052)) | (1L << (ST_WITHIN - 1052)) | (1L << (ST_X - 1052)) | (1L << (ST_Y - 1052)) | (1L << (SUBDATE - 1052)) | (1L << (SUBSTRING_INDEX - 1052)) | (1L << (SUBTIME - 1052)) | (1L << (SYSTEM_USER - 1052)) | (1L << (SYSTEM - 1052)) | (1L << (TAN - 1052)) | (1L << (TELEMETRY_LOG_ADMIN - 1052)) | (1L << (TIMEDIFF - 1052)) | (1L << (TIMESTAMPADD - 1052)) | (1L << (TIMESTAMPDIFF - 1052)) | (1L << (TIME_FORMAT - 1052)) | (1L << (TIME_TO_SEC - 1052)) | (1L << (TOUCHES - 1052)) | (1L << (TO_BASE64 - 1052)) | (1L << (TO_DAYS - 1052)) | (1L << (TO_SECONDS - 1052)) | (1L << (TP_CONNECTION_ADMIN - 1052)) | (1L << (UCASE - 1052)) | (1L << (UNCOMPRESS - 1052)) | (1L << (UNCOMPRESSED_LENGTH - 1052)) | (1L << (UNHEX - 1052)) | (1L << (UNIX_TIMESTAMP - 1052)) | (1L << (UPDATEXML - 1052)) | (1L << (UPPER - 1052)) | (1L << (UUID - 1052)) | (1L << (UUID_SHORT - 1052)) | (1L << (VALIDATE_PASSWORD_STRENGTH - 1052)) | (1L << (VERSION - 1052)) | (1L << (VERSIONING - 1052)) | (1L << (WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS - 1052)) | (1L << (WEEKDAY - 1052)) | (1L << (WEEKOFYEAR - 1052)) | (1L << (WEIGHT_STRING - 1052)))) != 0) || ((((_la - 1116)) & ~0x3f) == 0 && ((1L << (_la - 1116)) & ((1L << (WITHIN - 1116)) | (1L << (YEARWEEK - 1116)) | (1L << (Y_FUNCTION - 1116)) | (1L << (X_FUNCTION - 1116)) | (1L << (VIA - 1116)) | (1L << (LASTVAL - 1116)) | (1L << (NEXTVAL - 1116)) | (1L << (SETVAL - 1116)) | (1L << (PREVIOUS - 1116)) | (1L << (PERSISTENT - 1116)) | (1L << (BINLOG_MONITOR - 1116)) | (1L << (BINLOG_REPLAY - 1116)) | (1L << (FEDERATED_ADMIN - 1116)) | (1L << (READ_ONLY_ADMIN - 1116)) | (1L << (REPLICA - 1116)) | (1L << (REPLICATION_MASTER_ADMIN - 1116)) | (1L << (MONITOR - 1116)) | (1L << (READ_ONLY - 1116)) | (1L << (REPLAY - 1116)) | (1L << (MOD - 1116)) | (1L << (CHARSET_REVERSE_QOUTE_STRING - 1116)) | (1L << (STRING_LITERAL - 1116)))) != 0) || _la==ID) {
					{
					setState(2218);
					uidList();
					}
				}

				setState(2221);
				match(RR_BRACKET);
				}
				break;
			case 3:
				_localctx = new PartitionFunctionRangeContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(2222);
				match(RANGE);
				setState(2232);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case LR_BRACKET:
					{
					setState(2223);
					match(LR_BRACKET);
					setState(2224);
					expression(0);
					setState(2225);
					match(RR_BRACKET);
					}
					break;
				case COLUMNS:
					{
					setState(2227);
					match(COLUMNS);
					setState(2228);
					match(LR_BRACKET);
					setState(2229);
					uidList();
					setState(2230);
					match(RR_BRACKET);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case 4:
				_localctx = new PartitionFunctionListContext(_localctx);
				enterOuterAlt(_localctx, 4);
				{
				setState(2234);
				match(LIST);
				setState(2244);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case LR_BRACKET:
					{
					setState(2235);
					match(LR_BRACKET);
					setState(2236);
					expression(0);
					setState(2237);
					match(RR_BRACKET);
					}
					break;
				case COLUMNS:
					{
					setState(2239);
					match(COLUMNS);
					setState(2240);
					match(LR_BRACKET);
					setState(2241);
					uidList();
					setState(2242);
					match(RR_BRACKET);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case 5:
				_localctx = new PartitionSystemVersionContext(_localctx);
				enterOuterAlt(_localctx, 5);
				{
				setState(2246);
				match(SYSTEM_TIME);
				setState(2250);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,266,_ctx) ) {
				case 1:
					{
					setState(2247);
					expression(0);
					}
					break;
				case 2:
					{
					setState(2248);
					match(LIMIT);
					setState(2249);
					expression(0);
					}
					break;
				}
				setState(2258);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==STARTS) {
					{
					setState(2252);
					match(STARTS);
					setState(2256);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,267,_ctx) ) {
					case 1:
						{
						setState(2253);
						match(TIMESTAMP);
						setState(2254);
						timestampValue();
						}
						break;
					case 2:
						{
						setState(2255);
						timestampValue();
						}
						break;
					}
					}
				}

				setState(2261);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==AUTO) {
					{
					setState(2260);
					match(AUTO);
					}
				}

				setState(2264);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,270,_ctx) ) {
				case 1:
					{
					setState(2263);
					partitionSystemVersionDefinitions();
					}
					break;
				}
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PartitionSystemVersionDefinitionsContext extends ParserRuleContext {
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public List partitionSystemVersionDefinition() {
			return getRuleContexts(PartitionSystemVersionDefinitionContext.class);
		}
		public PartitionSystemVersionDefinitionContext partitionSystemVersionDefinition(int i) {
			return getRuleContext(PartitionSystemVersionDefinitionContext.class,i);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public PartitionSystemVersionDefinitionsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_partitionSystemVersionDefinitions; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPartitionSystemVersionDefinitions(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPartitionSystemVersionDefinitions(this);
		}
	}

	public final PartitionSystemVersionDefinitionsContext partitionSystemVersionDefinitions() throws RecognitionException {
		PartitionSystemVersionDefinitionsContext _localctx = new PartitionSystemVersionDefinitionsContext(_ctx, getState());
		enterRule(_localctx, 122, RULE_partitionSystemVersionDefinitions);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2268);
			match(LR_BRACKET);
			setState(2269);
			partitionSystemVersionDefinition();
			setState(2274);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(2270);
				match(COMMA);
				setState(2271);
				partitionSystemVersionDefinition();
				}
				}
				setState(2276);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(2277);
			match(RR_BRACKET);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PartitionSystemVersionDefinitionContext extends ParserRuleContext {
		public TerminalNode PARTITION() { return getToken(MySqlParser.PARTITION, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode HISTORY() { return getToken(MySqlParser.HISTORY, 0); }
		public TerminalNode CURRENT() { return getToken(MySqlParser.CURRENT, 0); }
		public PartitionSystemVersionDefinitionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_partitionSystemVersionDefinition; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPartitionSystemVersionDefinition(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPartitionSystemVersionDefinition(this);
		}
	}

	public final PartitionSystemVersionDefinitionContext partitionSystemVersionDefinition() throws RecognitionException {
		PartitionSystemVersionDefinitionContext _localctx = new PartitionSystemVersionDefinitionContext(_ctx, getState());
		enterRule(_localctx, 124, RULE_partitionSystemVersionDefinition);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2279);
			match(PARTITION);
			setState(2280);
			uid();
			setState(2281);
			_la = _input.LA(1);
			if ( !(_la==CURRENT || _la==HISTORY) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SubpartitionFunctionDefinitionContext extends ParserRuleContext {
		public SubpartitionFunctionDefinitionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_subpartitionFunctionDefinition; }
	 
		public SubpartitionFunctionDefinitionContext() { }
		public void copyFrom(SubpartitionFunctionDefinitionContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class SubPartitionFunctionHashContext extends SubpartitionFunctionDefinitionContext {
		public TerminalNode HASH() { return getToken(MySqlParser.HASH, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TerminalNode LINEAR() { return getToken(MySqlParser.LINEAR, 0); }
		public SubPartitionFunctionHashContext(SubpartitionFunctionDefinitionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSubPartitionFunctionHash(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSubPartitionFunctionHash(this);
		}
	}
	public static class SubPartitionFunctionKeyContext extends SubpartitionFunctionDefinitionContext {
		public Token algType;
		public TerminalNode KEY() { return getToken(MySqlParser.KEY, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public UidListContext uidList() {
			return getRuleContext(UidListContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TerminalNode LINEAR() { return getToken(MySqlParser.LINEAR, 0); }
		public TerminalNode ALGORITHM() { return getToken(MySqlParser.ALGORITHM, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TerminalNode ONE_DECIMAL() { return getToken(MySqlParser.ONE_DECIMAL, 0); }
		public TerminalNode TWO_DECIMAL() { return getToken(MySqlParser.TWO_DECIMAL, 0); }
		public SubPartitionFunctionKeyContext(SubpartitionFunctionDefinitionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSubPartitionFunctionKey(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSubPartitionFunctionKey(this);
		}
	}

	public final SubpartitionFunctionDefinitionContext subpartitionFunctionDefinition() throws RecognitionException {
		SubpartitionFunctionDefinitionContext _localctx = new SubpartitionFunctionDefinitionContext(_ctx, getState());
		enterRule(_localctx, 126, RULE_subpartitionFunctionDefinition);
		int _la;
		try {
			setState(2304);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,276,_ctx) ) {
			case 1:
				_localctx = new SubPartitionFunctionHashContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(2284);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LINEAR) {
					{
					setState(2283);
					match(LINEAR);
					}
				}

				setState(2286);
				match(HASH);
				setState(2287);
				match(LR_BRACKET);
				setState(2288);
				expression(0);
				setState(2289);
				match(RR_BRACKET);
				}
				break;
			case 2:
				_localctx = new SubPartitionFunctionKeyContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(2292);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LINEAR) {
					{
					setState(2291);
					match(LINEAR);
					}
				}

				setState(2294);
				match(KEY);
				setState(2298);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==ALGORITHM) {
					{
					setState(2295);
					match(ALGORITHM);
					setState(2296);
					match(EQUAL_SYMBOL);
					setState(2297);
					((SubPartitionFunctionKeyContext)_localctx).algType = _input.LT(1);
					_la = _input.LA(1);
					if ( !(_la==ONE_DECIMAL || _la==TWO_DECIMAL) ) {
						((SubPartitionFunctionKeyContext)_localctx).algType = (Token)_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
				}

				setState(2300);
				match(LR_BRACKET);
				setState(2301);
				uidList();
				setState(2302);
				match(RR_BRACKET);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PartitionDefinitionContext extends ParserRuleContext {
		public PartitionDefinitionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_partitionDefinition; }
	 
		public PartitionDefinitionContext() { }
		public void copyFrom(PartitionDefinitionContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class PartitionComparisonContext extends PartitionDefinitionContext {
		public TerminalNode PARTITION() { return getToken(MySqlParser.PARTITION, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode VALUES() { return getToken(MySqlParser.VALUES, 0); }
		public TerminalNode LESS() { return getToken(MySqlParser.LESS, 0); }
		public TerminalNode THAN() { return getToken(MySqlParser.THAN, 0); }
		public List LR_BRACKET() { return getTokens(MySqlParser.LR_BRACKET); }
		public TerminalNode LR_BRACKET(int i) {
			return getToken(MySqlParser.LR_BRACKET, i);
		}
		public List partitionDefinerAtom() {
			return getRuleContexts(PartitionDefinerAtomContext.class);
		}
		public PartitionDefinerAtomContext partitionDefinerAtom(int i) {
			return getRuleContext(PartitionDefinerAtomContext.class,i);
		}
		public List RR_BRACKET() { return getTokens(MySqlParser.RR_BRACKET); }
		public TerminalNode RR_BRACKET(int i) {
			return getToken(MySqlParser.RR_BRACKET, i);
		}
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public List partitionOption() {
			return getRuleContexts(PartitionOptionContext.class);
		}
		public PartitionOptionContext partitionOption(int i) {
			return getRuleContext(PartitionOptionContext.class,i);
		}
		public List subpartitionDefinition() {
			return getRuleContexts(SubpartitionDefinitionContext.class);
		}
		public SubpartitionDefinitionContext subpartitionDefinition(int i) {
			return getRuleContext(SubpartitionDefinitionContext.class,i);
		}
		public PartitionComparisonContext(PartitionDefinitionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPartitionComparison(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPartitionComparison(this);
		}
	}
	public static class PartitionListAtomContext extends PartitionDefinitionContext {
		public TerminalNode PARTITION() { return getToken(MySqlParser.PARTITION, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode VALUES() { return getToken(MySqlParser.VALUES, 0); }
		public TerminalNode IN() { return getToken(MySqlParser.IN, 0); }
		public List LR_BRACKET() { return getTokens(MySqlParser.LR_BRACKET); }
		public TerminalNode LR_BRACKET(int i) {
			return getToken(MySqlParser.LR_BRACKET, i);
		}
		public List partitionDefinerAtom() {
			return getRuleContexts(PartitionDefinerAtomContext.class);
		}
		public PartitionDefinerAtomContext partitionDefinerAtom(int i) {
			return getRuleContext(PartitionDefinerAtomContext.class,i);
		}
		public List RR_BRACKET() { return getTokens(MySqlParser.RR_BRACKET); }
		public TerminalNode RR_BRACKET(int i) {
			return getToken(MySqlParser.RR_BRACKET, i);
		}
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public List partitionOption() {
			return getRuleContexts(PartitionOptionContext.class);
		}
		public PartitionOptionContext partitionOption(int i) {
			return getRuleContext(PartitionOptionContext.class,i);
		}
		public List subpartitionDefinition() {
			return getRuleContexts(SubpartitionDefinitionContext.class);
		}
		public SubpartitionDefinitionContext subpartitionDefinition(int i) {
			return getRuleContext(SubpartitionDefinitionContext.class,i);
		}
		public PartitionListAtomContext(PartitionDefinitionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPartitionListAtom(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPartitionListAtom(this);
		}
	}
	public static class PartitionListVectorContext extends PartitionDefinitionContext {
		public TerminalNode PARTITION() { return getToken(MySqlParser.PARTITION, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode VALUES() { return getToken(MySqlParser.VALUES, 0); }
		public TerminalNode IN() { return getToken(MySqlParser.IN, 0); }
		public List LR_BRACKET() { return getTokens(MySqlParser.LR_BRACKET); }
		public TerminalNode LR_BRACKET(int i) {
			return getToken(MySqlParser.LR_BRACKET, i);
		}
		public List partitionDefinerVector() {
			return getRuleContexts(PartitionDefinerVectorContext.class);
		}
		public PartitionDefinerVectorContext partitionDefinerVector(int i) {
			return getRuleContext(PartitionDefinerVectorContext.class,i);
		}
		public List RR_BRACKET() { return getTokens(MySqlParser.RR_BRACKET); }
		public TerminalNode RR_BRACKET(int i) {
			return getToken(MySqlParser.RR_BRACKET, i);
		}
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public List partitionOption() {
			return getRuleContexts(PartitionOptionContext.class);
		}
		public PartitionOptionContext partitionOption(int i) {
			return getRuleContext(PartitionOptionContext.class,i);
		}
		public List subpartitionDefinition() {
			return getRuleContexts(SubpartitionDefinitionContext.class);
		}
		public SubpartitionDefinitionContext subpartitionDefinition(int i) {
			return getRuleContext(SubpartitionDefinitionContext.class,i);
		}
		public PartitionListVectorContext(PartitionDefinitionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPartitionListVector(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPartitionListVector(this);
		}
	}
	public static class PartitionSimpleContext extends PartitionDefinitionContext {
		public TerminalNode PARTITION() { return getToken(MySqlParser.PARTITION, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public List partitionOption() {
			return getRuleContexts(PartitionOptionContext.class);
		}
		public PartitionOptionContext partitionOption(int i) {
			return getRuleContext(PartitionOptionContext.class,i);
		}
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public List subpartitionDefinition() {
			return getRuleContexts(SubpartitionDefinitionContext.class);
		}
		public SubpartitionDefinitionContext subpartitionDefinition(int i) {
			return getRuleContext(SubpartitionDefinitionContext.class,i);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public PartitionSimpleContext(PartitionDefinitionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPartitionSimple(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPartitionSimple(this);
		}
	}

	public final PartitionDefinitionContext partitionDefinition() throws RecognitionException {
		PartitionDefinitionContext _localctx = new PartitionDefinitionContext(_ctx, getState());
		enterRule(_localctx, 128, RULE_partitionDefinition);
		int _la;
		try {
			setState(2452);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,295,_ctx) ) {
			case 1:
				_localctx = new PartitionComparisonContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(2306);
				match(PARTITION);
				setState(2307);
				uid();
				setState(2308);
				match(VALUES);
				setState(2309);
				match(LESS);
				setState(2310);
				match(THAN);
				setState(2311);
				match(LR_BRACKET);
				setState(2312);
				partitionDefinerAtom();
				setState(2317);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(2313);
					match(COMMA);
					setState(2314);
					partitionDefinerAtom();
					}
					}
					setState(2319);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(2320);
				match(RR_BRACKET);
				setState(2324);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==DEFAULT || _la==INDEX || ((((_la - 371)) & ~0x3f) == 0 && ((1L << (_la - 371)) & ((1L << (COMMENT - 371)) | (1L << (DATA - 371)) | (1L << (ENGINE - 371)))) != 0) || ((((_la - 503)) & ~0x3f) == 0 && ((1L << (_la - 503)) & ((1L << (MAX_ROWS - 503)) | (1L << (MIN_ROWS - 503)) | (1L << (NODEGROUP - 503)))) != 0) || _la==STORAGE || _la==TABLESPACE) {
					{
					{
					setState(2321);
					partitionOption();
					}
					}
					setState(2326);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(2338);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LR_BRACKET) {
					{
					setState(2327);
					match(LR_BRACKET);
					setState(2328);
					subpartitionDefinition();
					setState(2333);
					_errHandler.sync(this);
					_la = _input.LA(1);
					while (_la==COMMA) {
						{
						{
						setState(2329);
						match(COMMA);
						setState(2330);
						subpartitionDefinition();
						}
						}
						setState(2335);
						_errHandler.sync(this);
						_la = _input.LA(1);
					}
					setState(2336);
					match(RR_BRACKET);
					}
				}

				}
				break;
			case 2:
				_localctx = new PartitionComparisonContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(2340);
				match(PARTITION);
				setState(2341);
				uid();
				setState(2342);
				match(VALUES);
				setState(2343);
				match(LESS);
				setState(2344);
				match(THAN);
				setState(2345);
				partitionDefinerAtom();
				setState(2349);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==DEFAULT || _la==INDEX || ((((_la - 371)) & ~0x3f) == 0 && ((1L << (_la - 371)) & ((1L << (COMMENT - 371)) | (1L << (DATA - 371)) | (1L << (ENGINE - 371)))) != 0) || ((((_la - 503)) & ~0x3f) == 0 && ((1L << (_la - 503)) & ((1L << (MAX_ROWS - 503)) | (1L << (MIN_ROWS - 503)) | (1L << (NODEGROUP - 503)))) != 0) || _la==STORAGE || _la==TABLESPACE) {
					{
					{
					setState(2346);
					partitionOption();
					}
					}
					setState(2351);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(2363);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LR_BRACKET) {
					{
					setState(2352);
					match(LR_BRACKET);
					setState(2353);
					subpartitionDefinition();
					setState(2358);
					_errHandler.sync(this);
					_la = _input.LA(1);
					while (_la==COMMA) {
						{
						{
						setState(2354);
						match(COMMA);
						setState(2355);
						subpartitionDefinition();
						}
						}
						setState(2360);
						_errHandler.sync(this);
						_la = _input.LA(1);
					}
					setState(2361);
					match(RR_BRACKET);
					}
				}

				}
				break;
			case 3:
				_localctx = new PartitionListAtomContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(2365);
				match(PARTITION);
				setState(2366);
				uid();
				setState(2367);
				match(VALUES);
				setState(2368);
				match(IN);
				setState(2369);
				match(LR_BRACKET);
				setState(2370);
				partitionDefinerAtom();
				setState(2375);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(2371);
					match(COMMA);
					setState(2372);
					partitionDefinerAtom();
					}
					}
					setState(2377);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(2378);
				match(RR_BRACKET);
				setState(2382);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==DEFAULT || _la==INDEX || ((((_la - 371)) & ~0x3f) == 0 && ((1L << (_la - 371)) & ((1L << (COMMENT - 371)) | (1L << (DATA - 371)) | (1L << (ENGINE - 371)))) != 0) || ((((_la - 503)) & ~0x3f) == 0 && ((1L << (_la - 503)) & ((1L << (MAX_ROWS - 503)) | (1L << (MIN_ROWS - 503)) | (1L << (NODEGROUP - 503)))) != 0) || _la==STORAGE || _la==TABLESPACE) {
					{
					{
					setState(2379);
					partitionOption();
					}
					}
					setState(2384);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(2396);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LR_BRACKET) {
					{
					setState(2385);
					match(LR_BRACKET);
					setState(2386);
					subpartitionDefinition();
					setState(2391);
					_errHandler.sync(this);
					_la = _input.LA(1);
					while (_la==COMMA) {
						{
						{
						setState(2387);
						match(COMMA);
						setState(2388);
						subpartitionDefinition();
						}
						}
						setState(2393);
						_errHandler.sync(this);
						_la = _input.LA(1);
					}
					setState(2394);
					match(RR_BRACKET);
					}
				}

				}
				break;
			case 4:
				_localctx = new PartitionListVectorContext(_localctx);
				enterOuterAlt(_localctx, 4);
				{
				setState(2398);
				match(PARTITION);
				setState(2399);
				uid();
				setState(2400);
				match(VALUES);
				setState(2401);
				match(IN);
				setState(2402);
				match(LR_BRACKET);
				setState(2403);
				partitionDefinerVector();
				setState(2408);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(2404);
					match(COMMA);
					setState(2405);
					partitionDefinerVector();
					}
					}
					setState(2410);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(2411);
				match(RR_BRACKET);
				setState(2415);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==DEFAULT || _la==INDEX || ((((_la - 371)) & ~0x3f) == 0 && ((1L << (_la - 371)) & ((1L << (COMMENT - 371)) | (1L << (DATA - 371)) | (1L << (ENGINE - 371)))) != 0) || ((((_la - 503)) & ~0x3f) == 0 && ((1L << (_la - 503)) & ((1L << (MAX_ROWS - 503)) | (1L << (MIN_ROWS - 503)) | (1L << (NODEGROUP - 503)))) != 0) || _la==STORAGE || _la==TABLESPACE) {
					{
					{
					setState(2412);
					partitionOption();
					}
					}
					setState(2417);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(2429);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LR_BRACKET) {
					{
					setState(2418);
					match(LR_BRACKET);
					setState(2419);
					subpartitionDefinition();
					setState(2424);
					_errHandler.sync(this);
					_la = _input.LA(1);
					while (_la==COMMA) {
						{
						{
						setState(2420);
						match(COMMA);
						setState(2421);
						subpartitionDefinition();
						}
						}
						setState(2426);
						_errHandler.sync(this);
						_la = _input.LA(1);
					}
					setState(2427);
					match(RR_BRACKET);
					}
				}

				}
				break;
			case 5:
				_localctx = new PartitionSimpleContext(_localctx);
				enterOuterAlt(_localctx, 5);
				{
				setState(2431);
				match(PARTITION);
				setState(2432);
				uid();
				setState(2436);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==DEFAULT || _la==INDEX || ((((_la - 371)) & ~0x3f) == 0 && ((1L << (_la - 371)) & ((1L << (COMMENT - 371)) | (1L << (DATA - 371)) | (1L << (ENGINE - 371)))) != 0) || ((((_la - 503)) & ~0x3f) == 0 && ((1L << (_la - 503)) & ((1L << (MAX_ROWS - 503)) | (1L << (MIN_ROWS - 503)) | (1L << (NODEGROUP - 503)))) != 0) || _la==STORAGE || _la==TABLESPACE) {
					{
					{
					setState(2433);
					partitionOption();
					}
					}
					setState(2438);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(2450);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LR_BRACKET) {
					{
					setState(2439);
					match(LR_BRACKET);
					setState(2440);
					subpartitionDefinition();
					setState(2445);
					_errHandler.sync(this);
					_la = _input.LA(1);
					while (_la==COMMA) {
						{
						{
						setState(2441);
						match(COMMA);
						setState(2442);
						subpartitionDefinition();
						}
						}
						setState(2447);
						_errHandler.sync(this);
						_la = _input.LA(1);
					}
					setState(2448);
					match(RR_BRACKET);
					}
				}

				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PartitionDefinerAtomContext extends ParserRuleContext {
		public ConstantContext constant() {
			return getRuleContext(ConstantContext.class,0);
		}
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode MAXVALUE() { return getToken(MySqlParser.MAXVALUE, 0); }
		public PartitionDefinerAtomContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_partitionDefinerAtom; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPartitionDefinerAtom(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPartitionDefinerAtom(this);
		}
	}

	public final PartitionDefinerAtomContext partitionDefinerAtom() throws RecognitionException {
		PartitionDefinerAtomContext _localctx = new PartitionDefinerAtomContext(_ctx, getState());
		enterRule(_localctx, 130, RULE_partitionDefinerAtom);
		try {
			setState(2457);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,296,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(2454);
				constant();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(2455);
				expression(0);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(2456);
				match(MAXVALUE);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PartitionDefinerVectorContext extends ParserRuleContext {
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public List partitionDefinerAtom() {
			return getRuleContexts(PartitionDefinerAtomContext.class);
		}
		public PartitionDefinerAtomContext partitionDefinerAtom(int i) {
			return getRuleContext(PartitionDefinerAtomContext.class,i);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public PartitionDefinerVectorContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_partitionDefinerVector; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPartitionDefinerVector(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPartitionDefinerVector(this);
		}
	}

	public final PartitionDefinerVectorContext partitionDefinerVector() throws RecognitionException {
		PartitionDefinerVectorContext _localctx = new PartitionDefinerVectorContext(_ctx, getState());
		enterRule(_localctx, 132, RULE_partitionDefinerVector);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2459);
			match(LR_BRACKET);
			setState(2460);
			partitionDefinerAtom();
			setState(2463); 
			_errHandler.sync(this);
			_la = _input.LA(1);
			do {
				{
				{
				setState(2461);
				match(COMMA);
				setState(2462);
				partitionDefinerAtom();
				}
				}
				setState(2465); 
				_errHandler.sync(this);
				_la = _input.LA(1);
			} while ( _la==COMMA );
			setState(2467);
			match(RR_BRACKET);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SubpartitionDefinitionContext extends ParserRuleContext {
		public TerminalNode SUBPARTITION() { return getToken(MySqlParser.SUBPARTITION, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public List partitionOption() {
			return getRuleContexts(PartitionOptionContext.class);
		}
		public PartitionOptionContext partitionOption(int i) {
			return getRuleContext(PartitionOptionContext.class,i);
		}
		public SubpartitionDefinitionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_subpartitionDefinition; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSubpartitionDefinition(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSubpartitionDefinition(this);
		}
	}

	public final SubpartitionDefinitionContext subpartitionDefinition() throws RecognitionException {
		SubpartitionDefinitionContext _localctx = new SubpartitionDefinitionContext(_ctx, getState());
		enterRule(_localctx, 134, RULE_subpartitionDefinition);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2469);
			match(SUBPARTITION);
			setState(2470);
			uid();
			setState(2474);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==DEFAULT || _la==INDEX || ((((_la - 371)) & ~0x3f) == 0 && ((1L << (_la - 371)) & ((1L << (COMMENT - 371)) | (1L << (DATA - 371)) | (1L << (ENGINE - 371)))) != 0) || ((((_la - 503)) & ~0x3f) == 0 && ((1L << (_la - 503)) & ((1L << (MAX_ROWS - 503)) | (1L << (MIN_ROWS - 503)) | (1L << (NODEGROUP - 503)))) != 0) || _la==STORAGE || _la==TABLESPACE) {
				{
				{
				setState(2471);
				partitionOption();
				}
				}
				setState(2476);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PartitionOptionContext extends ParserRuleContext {
		public PartitionOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_partitionOption; }
	 
		public PartitionOptionContext() { }
		public void copyFrom(PartitionOptionContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class PartitionOptionCommentContext extends PartitionOptionContext {
		public Token comment;
		public TerminalNode COMMENT() { return getToken(MySqlParser.COMMENT, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public PartitionOptionCommentContext(PartitionOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPartitionOptionComment(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPartitionOptionComment(this);
		}
	}
	public static class PartitionOptionNodeGroupContext extends PartitionOptionContext {
		public UidContext nodegroup;
		public TerminalNode NODEGROUP() { return getToken(MySqlParser.NODEGROUP, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public PartitionOptionNodeGroupContext(PartitionOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPartitionOptionNodeGroup(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPartitionOptionNodeGroup(this);
		}
	}
	public static class PartitionOptionIndexDirectoryContext extends PartitionOptionContext {
		public Token indexDirectory;
		public TerminalNode INDEX() { return getToken(MySqlParser.INDEX, 0); }
		public TerminalNode DIRECTORY() { return getToken(MySqlParser.DIRECTORY, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public PartitionOptionIndexDirectoryContext(PartitionOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPartitionOptionIndexDirectory(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPartitionOptionIndexDirectory(this);
		}
	}
	public static class PartitionOptionMaxRowsContext extends PartitionOptionContext {
		public DecimalLiteralContext maxRows;
		public TerminalNode MAX_ROWS() { return getToken(MySqlParser.MAX_ROWS, 0); }
		public DecimalLiteralContext decimalLiteral() {
			return getRuleContext(DecimalLiteralContext.class,0);
		}
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public PartitionOptionMaxRowsContext(PartitionOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPartitionOptionMaxRows(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPartitionOptionMaxRows(this);
		}
	}
	public static class PartitionOptionTablespaceContext extends PartitionOptionContext {
		public UidContext tablespace;
		public TerminalNode TABLESPACE() { return getToken(MySqlParser.TABLESPACE, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public PartitionOptionTablespaceContext(PartitionOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPartitionOptionTablespace(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPartitionOptionTablespace(this);
		}
	}
	public static class PartitionOptionEngineContext extends PartitionOptionContext {
		public TerminalNode ENGINE() { return getToken(MySqlParser.ENGINE, 0); }
		public EngineNameContext engineName() {
			return getRuleContext(EngineNameContext.class,0);
		}
		public TerminalNode DEFAULT() { return getToken(MySqlParser.DEFAULT, 0); }
		public TerminalNode STORAGE() { return getToken(MySqlParser.STORAGE, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public PartitionOptionEngineContext(PartitionOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPartitionOptionEngine(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPartitionOptionEngine(this);
		}
	}
	public static class PartitionOptionMinRowsContext extends PartitionOptionContext {
		public DecimalLiteralContext minRows;
		public TerminalNode MIN_ROWS() { return getToken(MySqlParser.MIN_ROWS, 0); }
		public DecimalLiteralContext decimalLiteral() {
			return getRuleContext(DecimalLiteralContext.class,0);
		}
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public PartitionOptionMinRowsContext(PartitionOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPartitionOptionMinRows(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPartitionOptionMinRows(this);
		}
	}
	public static class PartitionOptionDataDirectoryContext extends PartitionOptionContext {
		public Token dataDirectory;
		public TerminalNode DATA() { return getToken(MySqlParser.DATA, 0); }
		public TerminalNode DIRECTORY() { return getToken(MySqlParser.DIRECTORY, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public PartitionOptionDataDirectoryContext(PartitionOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPartitionOptionDataDirectory(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPartitionOptionDataDirectory(this);
		}
	}

	public final PartitionOptionContext partitionOption() throws RecognitionException {
		PartitionOptionContext _localctx = new PartitionOptionContext(_ctx, getState());
		enterRule(_localctx, 136, RULE_partitionOption);
		int _la;
		try {
			setState(2525);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case DEFAULT:
			case ENGINE:
			case STORAGE:
				_localctx = new PartitionOptionEngineContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(2478);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==DEFAULT) {
					{
					setState(2477);
					match(DEFAULT);
					}
				}

				setState(2481);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==STORAGE) {
					{
					setState(2480);
					match(STORAGE);
					}
				}

				setState(2483);
				match(ENGINE);
				setState(2485);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(2484);
					match(EQUAL_SYMBOL);
					}
				}

				setState(2487);
				engineName();
				}
				break;
			case COMMENT:
				_localctx = new PartitionOptionCommentContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(2488);
				match(COMMENT);
				setState(2490);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(2489);
					match(EQUAL_SYMBOL);
					}
				}

				setState(2492);
				((PartitionOptionCommentContext)_localctx).comment = match(STRING_LITERAL);
				}
				break;
			case DATA:
				_localctx = new PartitionOptionDataDirectoryContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(2493);
				match(DATA);
				setState(2494);
				match(DIRECTORY);
				setState(2496);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(2495);
					match(EQUAL_SYMBOL);
					}
				}

				setState(2498);
				((PartitionOptionDataDirectoryContext)_localctx).dataDirectory = match(STRING_LITERAL);
				}
				break;
			case INDEX:
				_localctx = new PartitionOptionIndexDirectoryContext(_localctx);
				enterOuterAlt(_localctx, 4);
				{
				setState(2499);
				match(INDEX);
				setState(2500);
				match(DIRECTORY);
				setState(2502);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(2501);
					match(EQUAL_SYMBOL);
					}
				}

				setState(2504);
				((PartitionOptionIndexDirectoryContext)_localctx).indexDirectory = match(STRING_LITERAL);
				}
				break;
			case MAX_ROWS:
				_localctx = new PartitionOptionMaxRowsContext(_localctx);
				enterOuterAlt(_localctx, 5);
				{
				setState(2505);
				match(MAX_ROWS);
				setState(2507);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(2506);
					match(EQUAL_SYMBOL);
					}
				}

				setState(2509);
				((PartitionOptionMaxRowsContext)_localctx).maxRows = decimalLiteral();
				}
				break;
			case MIN_ROWS:
				_localctx = new PartitionOptionMinRowsContext(_localctx);
				enterOuterAlt(_localctx, 6);
				{
				setState(2510);
				match(MIN_ROWS);
				setState(2512);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(2511);
					match(EQUAL_SYMBOL);
					}
				}

				setState(2514);
				((PartitionOptionMinRowsContext)_localctx).minRows = decimalLiteral();
				}
				break;
			case TABLESPACE:
				_localctx = new PartitionOptionTablespaceContext(_localctx);
				enterOuterAlt(_localctx, 7);
				{
				setState(2515);
				match(TABLESPACE);
				setState(2517);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(2516);
					match(EQUAL_SYMBOL);
					}
				}

				setState(2519);
				((PartitionOptionTablespaceContext)_localctx).tablespace = uid();
				}
				break;
			case NODEGROUP:
				_localctx = new PartitionOptionNodeGroupContext(_localctx);
				enterOuterAlt(_localctx, 8);
				{
				setState(2520);
				match(NODEGROUP);
				setState(2522);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(2521);
					match(EQUAL_SYMBOL);
					}
				}

				setState(2524);
				((PartitionOptionNodeGroupContext)_localctx).nodegroup = uid();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterDatabaseContext extends ParserRuleContext {
		public AlterDatabaseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterDatabase; }
	 
		public AlterDatabaseContext() { }
		public void copyFrom(AlterDatabaseContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class AlterUpgradeNameContext extends AlterDatabaseContext {
		public Token dbFormat;
		public TerminalNode ALTER() { return getToken(MySqlParser.ALTER, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode UPGRADE() { return getToken(MySqlParser.UPGRADE, 0); }
		public TerminalNode DATA() { return getToken(MySqlParser.DATA, 0); }
		public TerminalNode DIRECTORY() { return getToken(MySqlParser.DIRECTORY, 0); }
		public TerminalNode NAME() { return getToken(MySqlParser.NAME, 0); }
		public TerminalNode DATABASE() { return getToken(MySqlParser.DATABASE, 0); }
		public TerminalNode SCHEMA() { return getToken(MySqlParser.SCHEMA, 0); }
		public AlterUpgradeNameContext(AlterDatabaseContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterUpgradeName(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterUpgradeName(this);
		}
	}
	public static class AlterSimpleDatabaseContext extends AlterDatabaseContext {
		public Token dbFormat;
		public TerminalNode ALTER() { return getToken(MySqlParser.ALTER, 0); }
		public TerminalNode DATABASE() { return getToken(MySqlParser.DATABASE, 0); }
		public TerminalNode SCHEMA() { return getToken(MySqlParser.SCHEMA, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public List createDatabaseOption() {
			return getRuleContexts(CreateDatabaseOptionContext.class);
		}
		public CreateDatabaseOptionContext createDatabaseOption(int i) {
			return getRuleContext(CreateDatabaseOptionContext.class,i);
		}
		public AlterSimpleDatabaseContext(AlterDatabaseContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterSimpleDatabase(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterSimpleDatabase(this);
		}
	}

	public final AlterDatabaseContext alterDatabase() throws RecognitionException {
		AlterDatabaseContext _localctx = new AlterDatabaseContext(_ctx, getState());
		enterRule(_localctx, 138, RULE_alterDatabase);
		int _la;
		try {
			setState(2545);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,312,_ctx) ) {
			case 1:
				_localctx = new AlterSimpleDatabaseContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(2527);
				match(ALTER);
				setState(2528);
				((AlterSimpleDatabaseContext)_localctx).dbFormat = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==DATABASE || _la==SCHEMA) ) {
					((AlterSimpleDatabaseContext)_localctx).dbFormat = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(2530);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,310,_ctx) ) {
				case 1:
					{
					setState(2529);
					uid();
					}
					break;
				}
				setState(2533); 
				_errHandler.sync(this);
				_la = _input.LA(1);
				do {
					{
					{
					setState(2532);
					createDatabaseOption();
					}
					}
					setState(2535); 
					_errHandler.sync(this);
					_la = _input.LA(1);
				} while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CHARACTER) | (1L << COLLATE) | (1L << DEFAULT))) != 0) || _la==READ || _la==CHAR || _la==ENCRYPTION || _la==CHARSET );
				}
				break;
			case 2:
				_localctx = new AlterUpgradeNameContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(2537);
				match(ALTER);
				setState(2538);
				((AlterUpgradeNameContext)_localctx).dbFormat = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==DATABASE || _la==SCHEMA) ) {
					((AlterUpgradeNameContext)_localctx).dbFormat = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(2539);
				uid();
				setState(2540);
				match(UPGRADE);
				setState(2541);
				match(DATA);
				setState(2542);
				match(DIRECTORY);
				setState(2543);
				match(NAME);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterEventContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(MySqlParser.ALTER, 0); }
		public TerminalNode EVENT() { return getToken(MySqlParser.EVENT, 0); }
		public List fullId() {
			return getRuleContexts(FullIdContext.class);
		}
		public FullIdContext fullId(int i) {
			return getRuleContext(FullIdContext.class,i);
		}
		public OwnerStatementContext ownerStatement() {
			return getRuleContext(OwnerStatementContext.class,0);
		}
		public List ON() { return getTokens(MySqlParser.ON); }
		public TerminalNode ON(int i) {
			return getToken(MySqlParser.ON, i);
		}
		public TerminalNode SCHEDULE() { return getToken(MySqlParser.SCHEDULE, 0); }
		public ScheduleExpressionContext scheduleExpression() {
			return getRuleContext(ScheduleExpressionContext.class,0);
		}
		public TerminalNode COMPLETION() { return getToken(MySqlParser.COMPLETION, 0); }
		public TerminalNode PRESERVE() { return getToken(MySqlParser.PRESERVE, 0); }
		public TerminalNode RENAME() { return getToken(MySqlParser.RENAME, 0); }
		public TerminalNode TO() { return getToken(MySqlParser.TO, 0); }
		public EnableTypeContext enableType() {
			return getRuleContext(EnableTypeContext.class,0);
		}
		public TerminalNode COMMENT() { return getToken(MySqlParser.COMMENT, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode DO() { return getToken(MySqlParser.DO, 0); }
		public RoutineBodyContext routineBody() {
			return getRuleContext(RoutineBodyContext.class,0);
		}
		public TerminalNode NOT() { return getToken(MySqlParser.NOT, 0); }
		public AlterEventContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterEvent; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterEvent(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterEvent(this);
		}
	}

	public final AlterEventContext alterEvent() throws RecognitionException {
		AlterEventContext _localctx = new AlterEventContext(_ctx, getState());
		enterRule(_localctx, 140, RULE_alterEvent);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2547);
			match(ALTER);
			setState(2549);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==DEFINER) {
				{
				setState(2548);
				ownerStatement();
				}
			}

			setState(2551);
			match(EVENT);
			setState(2552);
			fullId();
			setState(2556);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,314,_ctx) ) {
			case 1:
				{
				setState(2553);
				match(ON);
				setState(2554);
				match(SCHEDULE);
				setState(2555);
				scheduleExpression();
				}
				break;
			}
			setState(2564);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ON) {
				{
				setState(2558);
				match(ON);
				setState(2559);
				match(COMPLETION);
				setState(2561);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==NOT) {
					{
					setState(2560);
					match(NOT);
					}
				}

				setState(2563);
				match(PRESERVE);
				}
			}

			setState(2569);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,317,_ctx) ) {
			case 1:
				{
				setState(2566);
				match(RENAME);
				setState(2567);
				match(TO);
				setState(2568);
				fullId();
				}
				break;
			}
			setState(2572);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==DISABLE || _la==ENABLE) {
				{
				setState(2571);
				enableType();
				}
			}

			setState(2576);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==COMMENT) {
				{
				setState(2574);
				match(COMMENT);
				setState(2575);
				match(STRING_LITERAL);
				}
			}

			setState(2580);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,320,_ctx) ) {
			case 1:
				{
				setState(2578);
				match(DO);
				setState(2579);
				routineBody();
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterFunctionContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(MySqlParser.ALTER, 0); }
		public TerminalNode FUNCTION() { return getToken(MySqlParser.FUNCTION, 0); }
		public FullIdContext fullId() {
			return getRuleContext(FullIdContext.class,0);
		}
		public List routineOption() {
			return getRuleContexts(RoutineOptionContext.class);
		}
		public RoutineOptionContext routineOption(int i) {
			return getRuleContext(RoutineOptionContext.class,i);
		}
		public AlterFunctionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterFunction; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterFunction(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterFunction(this);
		}
	}

	public final AlterFunctionContext alterFunction() throws RecognitionException {
		AlterFunctionContext _localctx = new AlterFunctionContext(_ctx, getState());
		enterRule(_localctx, 142, RULE_alterFunction);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2582);
			match(ALTER);
			setState(2583);
			match(FUNCTION);
			setState(2584);
			fullId();
			setState(2588);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==DETERMINISTIC || ((((_la - 114)) & ~0x3f) == 0 && ((1L << (_la - 114)) & ((1L << (MODIFIES - 114)) | (1L << (NOT - 114)) | (1L << (READS - 114)) | (1L << (SQL - 114)))) != 0) || _la==COMMENT || _la==CONTAINS || _la==LANGUAGE || _la==NO) {
				{
				{
				setState(2585);
				routineOption();
				}
				}
				setState(2590);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterInstanceContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(MySqlParser.ALTER, 0); }
		public TerminalNode INSTANCE() { return getToken(MySqlParser.INSTANCE, 0); }
		public TerminalNode ROTATE() { return getToken(MySqlParser.ROTATE, 0); }
		public TerminalNode INNODB() { return getToken(MySqlParser.INNODB, 0); }
		public TerminalNode MASTER() { return getToken(MySqlParser.MASTER, 0); }
		public TerminalNode KEY() { return getToken(MySqlParser.KEY, 0); }
		public AlterInstanceContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterInstance; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterInstance(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterInstance(this);
		}
	}

	public final AlterInstanceContext alterInstance() throws RecognitionException {
		AlterInstanceContext _localctx = new AlterInstanceContext(_ctx, getState());
		enterRule(_localctx, 144, RULE_alterInstance);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2591);
			match(ALTER);
			setState(2592);
			match(INSTANCE);
			setState(2593);
			match(ROTATE);
			setState(2594);
			match(INNODB);
			setState(2595);
			match(MASTER);
			setState(2596);
			match(KEY);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterLogfileGroupContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(MySqlParser.ALTER, 0); }
		public TerminalNode LOGFILE() { return getToken(MySqlParser.LOGFILE, 0); }
		public TerminalNode GROUP() { return getToken(MySqlParser.GROUP, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode ADD() { return getToken(MySqlParser.ADD, 0); }
		public TerminalNode UNDOFILE() { return getToken(MySqlParser.UNDOFILE, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode ENGINE() { return getToken(MySqlParser.ENGINE, 0); }
		public EngineNameContext engineName() {
			return getRuleContext(EngineNameContext.class,0);
		}
		public TerminalNode INITIAL_SIZE() { return getToken(MySqlParser.INITIAL_SIZE, 0); }
		public FileSizeLiteralContext fileSizeLiteral() {
			return getRuleContext(FileSizeLiteralContext.class,0);
		}
		public TerminalNode WAIT() { return getToken(MySqlParser.WAIT, 0); }
		public List EQUAL_SYMBOL() { return getTokens(MySqlParser.EQUAL_SYMBOL); }
		public TerminalNode EQUAL_SYMBOL(int i) {
			return getToken(MySqlParser.EQUAL_SYMBOL, i);
		}
		public AlterLogfileGroupContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterLogfileGroup; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterLogfileGroup(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterLogfileGroup(this);
		}
	}

	public final AlterLogfileGroupContext alterLogfileGroup() throws RecognitionException {
		AlterLogfileGroupContext _localctx = new AlterLogfileGroupContext(_ctx, getState());
		enterRule(_localctx, 146, RULE_alterLogfileGroup);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2598);
			match(ALTER);
			setState(2599);
			match(LOGFILE);
			setState(2600);
			match(GROUP);
			setState(2601);
			uid();
			setState(2602);
			match(ADD);
			setState(2603);
			match(UNDOFILE);
			setState(2604);
			match(STRING_LITERAL);
			setState(2610);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==INITIAL_SIZE) {
				{
				setState(2605);
				match(INITIAL_SIZE);
				setState(2607);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(2606);
					match(EQUAL_SYMBOL);
					}
				}

				setState(2609);
				fileSizeLiteral();
				}
			}

			setState(2613);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WAIT) {
				{
				setState(2612);
				match(WAIT);
				}
			}

			setState(2615);
			match(ENGINE);
			setState(2617);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==EQUAL_SYMBOL) {
				{
				setState(2616);
				match(EQUAL_SYMBOL);
				}
			}

			setState(2619);
			engineName();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterProcedureContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(MySqlParser.ALTER, 0); }
		public TerminalNode PROCEDURE() { return getToken(MySqlParser.PROCEDURE, 0); }
		public FullIdContext fullId() {
			return getRuleContext(FullIdContext.class,0);
		}
		public List routineOption() {
			return getRuleContexts(RoutineOptionContext.class);
		}
		public RoutineOptionContext routineOption(int i) {
			return getRuleContext(RoutineOptionContext.class,i);
		}
		public AlterProcedureContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterProcedure; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterProcedure(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterProcedure(this);
		}
	}

	public final AlterProcedureContext alterProcedure() throws RecognitionException {
		AlterProcedureContext _localctx = new AlterProcedureContext(_ctx, getState());
		enterRule(_localctx, 148, RULE_alterProcedure);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2621);
			match(ALTER);
			setState(2622);
			match(PROCEDURE);
			setState(2623);
			fullId();
			setState(2627);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==DETERMINISTIC || ((((_la - 114)) & ~0x3f) == 0 && ((1L << (_la - 114)) & ((1L << (MODIFIES - 114)) | (1L << (NOT - 114)) | (1L << (READS - 114)) | (1L << (SQL - 114)))) != 0) || _la==COMMENT || _la==CONTAINS || _la==LANGUAGE || _la==NO) {
				{
				{
				setState(2624);
				routineOption();
				}
				}
				setState(2629);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterServerContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(MySqlParser.ALTER, 0); }
		public TerminalNode SERVER() { return getToken(MySqlParser.SERVER, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode OPTIONS() { return getToken(MySqlParser.OPTIONS, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public List serverOption() {
			return getRuleContexts(ServerOptionContext.class);
		}
		public ServerOptionContext serverOption(int i) {
			return getRuleContext(ServerOptionContext.class,i);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public AlterServerContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterServer; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterServer(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterServer(this);
		}
	}

	public final AlterServerContext alterServer() throws RecognitionException {
		AlterServerContext _localctx = new AlterServerContext(_ctx, getState());
		enterRule(_localctx, 150, RULE_alterServer);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2630);
			match(ALTER);
			setState(2631);
			match(SERVER);
			setState(2632);
			uid();
			setState(2633);
			match(OPTIONS);
			setState(2634);
			match(LR_BRACKET);
			setState(2635);
			serverOption();
			setState(2640);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(2636);
				match(COMMA);
				setState(2637);
				serverOption();
				}
				}
				setState(2642);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(2643);
			match(RR_BRACKET);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterTableContext extends ParserRuleContext {
		public Token intimeAction;
		public TerminalNode ALTER() { return getToken(MySqlParser.ALTER, 0); }
		public TerminalNode TABLE() { return getToken(MySqlParser.TABLE, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public TerminalNode IGNORE() { return getToken(MySqlParser.IGNORE, 0); }
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public WaitNowaitClauseContext waitNowaitClause() {
			return getRuleContext(WaitNowaitClauseContext.class,0);
		}
		public List alterSpecification() {
			return getRuleContexts(AlterSpecificationContext.class);
		}
		public AlterSpecificationContext alterSpecification(int i) {
			return getRuleContext(AlterSpecificationContext.class,i);
		}
		public PartitionDefinitionsContext partitionDefinitions() {
			return getRuleContext(PartitionDefinitionsContext.class,0);
		}
		public TerminalNode ONLINE() { return getToken(MySqlParser.ONLINE, 0); }
		public TerminalNode OFFLINE() { return getToken(MySqlParser.OFFLINE, 0); }
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public AlterTableContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterTable; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterTable(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterTable(this);
		}
	}

	public final AlterTableContext alterTable() throws RecognitionException {
		AlterTableContext _localctx = new AlterTableContext(_ctx, getState());
		enterRule(_localctx, 152, RULE_alterTable);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2645);
			match(ALTER);
			setState(2647);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==OFFLINE || _la==ONLINE) {
				{
				setState(2646);
				((AlterTableContext)_localctx).intimeAction = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==OFFLINE || _la==ONLINE) ) {
					((AlterTableContext)_localctx).intimeAction = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(2650);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IGNORE) {
				{
				setState(2649);
				match(IGNORE);
				}
			}

			setState(2652);
			match(TABLE);
			setState(2654);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,330,_ctx) ) {
			case 1:
				{
				setState(2653);
				ifExists();
				}
				break;
			}
			setState(2656);
			tableName();
			setState(2658);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==NOWAIT || _la==WAIT) {
				{
				setState(2657);
				waitNowaitClause();
				}
			}

			setState(2668);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,333,_ctx) ) {
			case 1:
				{
				setState(2660);
				alterSpecification();
				setState(2665);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(2661);
					match(COMMA);
					setState(2662);
					alterSpecification();
					}
					}
					setState(2667);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			}
			setState(2671);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==PARTITION) {
				{
				setState(2670);
				partitionDefinitions();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterTablespaceContext extends ParserRuleContext {
		public Token objectAction;
		public TerminalNode ALTER() { return getToken(MySqlParser.ALTER, 0); }
		public TerminalNode TABLESPACE() { return getToken(MySqlParser.TABLESPACE, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode DATAFILE() { return getToken(MySqlParser.DATAFILE, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode ENGINE() { return getToken(MySqlParser.ENGINE, 0); }
		public EngineNameContext engineName() {
			return getRuleContext(EngineNameContext.class,0);
		}
		public TerminalNode ADD() { return getToken(MySqlParser.ADD, 0); }
		public TerminalNode DROP() { return getToken(MySqlParser.DROP, 0); }
		public TerminalNode INITIAL_SIZE() { return getToken(MySqlParser.INITIAL_SIZE, 0); }
		public List EQUAL_SYMBOL() { return getTokens(MySqlParser.EQUAL_SYMBOL); }
		public TerminalNode EQUAL_SYMBOL(int i) {
			return getToken(MySqlParser.EQUAL_SYMBOL, i);
		}
		public FileSizeLiteralContext fileSizeLiteral() {
			return getRuleContext(FileSizeLiteralContext.class,0);
		}
		public TerminalNode WAIT() { return getToken(MySqlParser.WAIT, 0); }
		public AlterTablespaceContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterTablespace; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterTablespace(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterTablespace(this);
		}
	}

	public final AlterTablespaceContext alterTablespace() throws RecognitionException {
		AlterTablespaceContext _localctx = new AlterTablespaceContext(_ctx, getState());
		enterRule(_localctx, 154, RULE_alterTablespace);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2673);
			match(ALTER);
			setState(2674);
			match(TABLESPACE);
			setState(2675);
			uid();
			setState(2676);
			((AlterTablespaceContext)_localctx).objectAction = _input.LT(1);
			_la = _input.LA(1);
			if ( !(_la==ADD || _la==DROP) ) {
				((AlterTablespaceContext)_localctx).objectAction = (Token)_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(2677);
			match(DATAFILE);
			setState(2678);
			match(STRING_LITERAL);
			setState(2682);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==INITIAL_SIZE) {
				{
				setState(2679);
				match(INITIAL_SIZE);
				setState(2680);
				match(EQUAL_SYMBOL);
				setState(2681);
				fileSizeLiteral();
				}
			}

			setState(2685);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WAIT) {
				{
				setState(2684);
				match(WAIT);
				}
			}

			setState(2687);
			match(ENGINE);
			setState(2689);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==EQUAL_SYMBOL) {
				{
				setState(2688);
				match(EQUAL_SYMBOL);
				}
			}

			setState(2691);
			engineName();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterViewContext extends ParserRuleContext {
		public Token algType;
		public Token secContext;
		public Token checkOpt;
		public TerminalNode ALTER() { return getToken(MySqlParser.ALTER, 0); }
		public TerminalNode VIEW() { return getToken(MySqlParser.VIEW, 0); }
		public FullIdContext fullId() {
			return getRuleContext(FullIdContext.class,0);
		}
		public TerminalNode AS() { return getToken(MySqlParser.AS, 0); }
		public SelectStatementContext selectStatement() {
			return getRuleContext(SelectStatementContext.class,0);
		}
		public TerminalNode ALGORITHM() { return getToken(MySqlParser.ALGORITHM, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public OwnerStatementContext ownerStatement() {
			return getRuleContext(OwnerStatementContext.class,0);
		}
		public TerminalNode SQL() { return getToken(MySqlParser.SQL, 0); }
		public TerminalNode SECURITY() { return getToken(MySqlParser.SECURITY, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public UidListContext uidList() {
			return getRuleContext(UidListContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TerminalNode WITH() { return getToken(MySqlParser.WITH, 0); }
		public TerminalNode CHECK() { return getToken(MySqlParser.CHECK, 0); }
		public TerminalNode OPTION() { return getToken(MySqlParser.OPTION, 0); }
		public TerminalNode UNDEFINED() { return getToken(MySqlParser.UNDEFINED, 0); }
		public TerminalNode MERGE() { return getToken(MySqlParser.MERGE, 0); }
		public TerminalNode TEMPTABLE() { return getToken(MySqlParser.TEMPTABLE, 0); }
		public TerminalNode DEFINER() { return getToken(MySqlParser.DEFINER, 0); }
		public TerminalNode INVOKER() { return getToken(MySqlParser.INVOKER, 0); }
		public TerminalNode CASCADED() { return getToken(MySqlParser.CASCADED, 0); }
		public TerminalNode LOCAL() { return getToken(MySqlParser.LOCAL, 0); }
		public AlterViewContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterView; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterView(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterView(this);
		}
	}

	public final AlterViewContext alterView() throws RecognitionException {
		AlterViewContext _localctx = new AlterViewContext(_ctx, getState());
		enterRule(_localctx, 156, RULE_alterView);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2693);
			match(ALTER);
			setState(2697);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ALGORITHM) {
				{
				setState(2694);
				match(ALGORITHM);
				setState(2695);
				match(EQUAL_SYMBOL);
				setState(2696);
				((AlterViewContext)_localctx).algType = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==MERGE || _la==TEMPTABLE || _la==UNDEFINED) ) {
					((AlterViewContext)_localctx).algType = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(2700);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==DEFINER) {
				{
				setState(2699);
				ownerStatement();
				}
			}

			setState(2705);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==SQL) {
				{
				setState(2702);
				match(SQL);
				setState(2703);
				match(SECURITY);
				setState(2704);
				((AlterViewContext)_localctx).secContext = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==DEFINER || _la==INVOKER) ) {
					((AlterViewContext)_localctx).secContext = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(2707);
			match(VIEW);
			setState(2708);
			fullId();
			setState(2713);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LR_BRACKET) {
				{
				setState(2709);
				match(LR_BRACKET);
				setState(2710);
				uidList();
				setState(2711);
				match(RR_BRACKET);
				}
			}

			setState(2715);
			match(AS);
			setState(2716);
			selectStatement();
			setState(2723);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,343,_ctx) ) {
			case 1:
				{
				setState(2717);
				match(WITH);
				setState(2719);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==CASCADED || _la==LOCAL) {
					{
					setState(2718);
					((AlterViewContext)_localctx).checkOpt = _input.LT(1);
					_la = _input.LA(1);
					if ( !(_la==CASCADED || _la==LOCAL) ) {
						((AlterViewContext)_localctx).checkOpt = (Token)_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
				}

				setState(2721);
				match(CHECK);
				setState(2722);
				match(OPTION);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterSequenceContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(MySqlParser.ALTER, 0); }
		public TerminalNode SEQUENCE() { return getToken(MySqlParser.SEQUENCE, 0); }
		public FullIdContext fullId() {
			return getRuleContext(FullIdContext.class,0);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public List sequenceSpec() {
			return getRuleContexts(SequenceSpecContext.class);
		}
		public SequenceSpecContext sequenceSpec(int i) {
			return getRuleContext(SequenceSpecContext.class,i);
		}
		public AlterSequenceContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterSequence; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterSequence(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterSequence(this);
		}
	}

	public final AlterSequenceContext alterSequence() throws RecognitionException {
		AlterSequenceContext _localctx = new AlterSequenceContext(_ctx, getState());
		enterRule(_localctx, 158, RULE_alterSequence);
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(2725);
			match(ALTER);
			setState(2726);
			match(SEQUENCE);
			setState(2728);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,344,_ctx) ) {
			case 1:
				{
				setState(2727);
				ifExists();
				}
				break;
			}
			setState(2730);
			fullId();
			setState(2732); 
			_errHandler.sync(this);
			_alt = 1;
			do {
				switch (_alt) {
				case 1:
					{
					{
					setState(2731);
					sequenceSpec();
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(2734); 
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,345,_ctx);
			} while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterSpecificationContext extends ParserRuleContext {
		public AlterSpecificationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterSpecification; }
	 
		public AlterSpecificationContext() { }
		public void copyFrom(AlterSpecificationContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class AlterByAlterColumnDefaultContext extends AlterSpecificationContext {
		public TerminalNode ALTER() { return getToken(MySqlParser.ALTER, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode SET() { return getToken(MySqlParser.SET, 0); }
		public TerminalNode DEFAULT() { return getToken(MySqlParser.DEFAULT, 0); }
		public TerminalNode DROP() { return getToken(MySqlParser.DROP, 0); }
		public TerminalNode COLUMN() { return getToken(MySqlParser.COLUMN, 0); }
		public TerminalNode VISIBLE() { return getToken(MySqlParser.VISIBLE, 0); }
		public TerminalNode INVISIBLE() { return getToken(MySqlParser.INVISIBLE, 0); }
		public StringLiteralContext stringLiteral() {
			return getRuleContext(StringLiteralContext.class,0);
		}
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public AlterByAlterColumnDefaultContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByAlterColumnDefault(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByAlterColumnDefault(this);
		}
	}
	public static class AlterByDisableKeysContext extends AlterSpecificationContext {
		public TerminalNode DISABLE() { return getToken(MySqlParser.DISABLE, 0); }
		public TerminalNode KEYS() { return getToken(MySqlParser.KEYS, 0); }
		public AlterByDisableKeysContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByDisableKeys(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByDisableKeys(this);
		}
	}
	public static class AlterByDefaultCharsetContext extends AlterSpecificationContext {
		public TerminalNode CHARACTER() { return getToken(MySqlParser.CHARACTER, 0); }
		public TerminalNode SET() { return getToken(MySqlParser.SET, 0); }
		public List EQUAL_SYMBOL() { return getTokens(MySqlParser.EQUAL_SYMBOL); }
		public TerminalNode EQUAL_SYMBOL(int i) {
			return getToken(MySqlParser.EQUAL_SYMBOL, i);
		}
		public CharsetNameContext charsetName() {
			return getRuleContext(CharsetNameContext.class,0);
		}
		public TerminalNode DEFAULT() { return getToken(MySqlParser.DEFAULT, 0); }
		public TerminalNode COLLATE() { return getToken(MySqlParser.COLLATE, 0); }
		public CollationNameContext collationName() {
			return getRuleContext(CollationNameContext.class,0);
		}
		public AlterByDefaultCharsetContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByDefaultCharset(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByDefaultCharset(this);
		}
	}
	public static class AlterByRenameColumnContext extends AlterSpecificationContext {
		public UidContext oldColumn;
		public UidContext newColumn;
		public TerminalNode RENAME() { return getToken(MySqlParser.RENAME, 0); }
		public TerminalNode COLUMN() { return getToken(MySqlParser.COLUMN, 0); }
		public TerminalNode TO() { return getToken(MySqlParser.TO, 0); }
		public List uid() {
			return getRuleContexts(UidContext.class);
		}
		public UidContext uid(int i) {
			return getRuleContext(UidContext.class,i);
		}
		public AlterByRenameColumnContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByRenameColumn(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByRenameColumn(this);
		}
	}
	public static class AlterByConvertCharsetContext extends AlterSpecificationContext {
		public TerminalNode CONVERT() { return getToken(MySqlParser.CONVERT, 0); }
		public TerminalNode TO() { return getToken(MySqlParser.TO, 0); }
		public CharsetNameContext charsetName() {
			return getRuleContext(CharsetNameContext.class,0);
		}
		public TerminalNode CHARSET() { return getToken(MySqlParser.CHARSET, 0); }
		public TerminalNode CHARACTER() { return getToken(MySqlParser.CHARACTER, 0); }
		public TerminalNode SET() { return getToken(MySqlParser.SET, 0); }
		public TerminalNode COLLATE() { return getToken(MySqlParser.COLLATE, 0); }
		public CollationNameContext collationName() {
			return getRuleContext(CollationNameContext.class,0);
		}
		public AlterByConvertCharsetContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByConvertCharset(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByConvertCharset(this);
		}
	}
	public static class AlterByAddForeignKeyContext extends AlterSpecificationContext {
		public UidContext name;
		public UidContext indexName;
		public TerminalNode ADD() { return getToken(MySqlParser.ADD, 0); }
		public TerminalNode FOREIGN() { return getToken(MySqlParser.FOREIGN, 0); }
		public TerminalNode KEY() { return getToken(MySqlParser.KEY, 0); }
		public IndexColumnNamesContext indexColumnNames() {
			return getRuleContext(IndexColumnNamesContext.class,0);
		}
		public ReferenceDefinitionContext referenceDefinition() {
			return getRuleContext(ReferenceDefinitionContext.class,0);
		}
		public TerminalNode CONSTRAINT() { return getToken(MySqlParser.CONSTRAINT, 0); }
		public IfNotExistsContext ifNotExists() {
			return getRuleContext(IfNotExistsContext.class,0);
		}
		public List uid() {
			return getRuleContexts(UidContext.class);
		}
		public UidContext uid(int i) {
			return getRuleContext(UidContext.class,i);
		}
		public AlterByAddForeignKeyContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByAddForeignKey(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByAddForeignKey(this);
		}
	}
	public static class AlterByRenameIndexContext extends AlterSpecificationContext {
		public Token indexFormat;
		public TerminalNode RENAME() { return getToken(MySqlParser.RENAME, 0); }
		public List uid() {
			return getRuleContexts(UidContext.class);
		}
		public UidContext uid(int i) {
			return getRuleContext(UidContext.class,i);
		}
		public TerminalNode TO() { return getToken(MySqlParser.TO, 0); }
		public TerminalNode INDEX() { return getToken(MySqlParser.INDEX, 0); }
		public TerminalNode KEY() { return getToken(MySqlParser.KEY, 0); }
		public AlterByRenameIndexContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByRenameIndex(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByRenameIndex(this);
		}
	}
	public static class AlterByRenameContext extends AlterSpecificationContext {
		public Token renameFormat;
		public TerminalNode RENAME() { return getToken(MySqlParser.RENAME, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public FullIdContext fullId() {
			return getRuleContext(FullIdContext.class,0);
		}
		public TerminalNode TO() { return getToken(MySqlParser.TO, 0); }
		public TerminalNode AS() { return getToken(MySqlParser.AS, 0); }
		public AlterByRenameContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByRename(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByRename(this);
		}
	}
	public static class AlterByImportTablespaceContext extends AlterSpecificationContext {
		public TerminalNode IMPORT() { return getToken(MySqlParser.IMPORT, 0); }
		public TerminalNode TABLESPACE() { return getToken(MySqlParser.TABLESPACE, 0); }
		public AlterByImportTablespaceContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByImportTablespace(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByImportTablespace(this);
		}
	}
	public static class AlterByAddDefinitionsContext extends AlterSpecificationContext {
		public TerminalNode ADD() { return getToken(MySqlParser.ADD, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public List createDefinition() {
			return getRuleContexts(CreateDefinitionContext.class);
		}
		public CreateDefinitionContext createDefinition(int i) {
			return getRuleContext(CreateDefinitionContext.class,i);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TerminalNode COLUMN() { return getToken(MySqlParser.COLUMN, 0); }
		public IfNotExistsContext ifNotExists() {
			return getRuleContext(IfNotExistsContext.class,0);
		}
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public AlterByAddDefinitionsContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByAddDefinitions(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByAddDefinitions(this);
		}
	}
	public static class AlterByAlterCheckTableConstraintContext extends AlterSpecificationContext {
		public UidContext name;
		public TerminalNode ALTER() { return getToken(MySqlParser.ALTER, 0); }
		public TerminalNode CHECK() { return getToken(MySqlParser.CHECK, 0); }
		public List uid() {
			return getRuleContexts(UidContext.class);
		}
		public UidContext uid(int i) {
			return getRuleContext(UidContext.class,i);
		}
		public StringLiteralContext stringLiteral() {
			return getRuleContext(StringLiteralContext.class,0);
		}
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TerminalNode CONSTRAINT() { return getToken(MySqlParser.CONSTRAINT, 0); }
		public TerminalNode NOT() { return getToken(MySqlParser.NOT, 0); }
		public TerminalNode ENFORCED() { return getToken(MySqlParser.ENFORCED, 0); }
		public AlterByAlterCheckTableConstraintContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByAlterCheckTableConstraint(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByAlterCheckTableConstraint(this);
		}
	}
	public static class AlterByDropConstraintCheckContext extends AlterSpecificationContext {
		public TerminalNode DROP() { return getToken(MySqlParser.DROP, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode CONSTRAINT() { return getToken(MySqlParser.CONSTRAINT, 0); }
		public TerminalNode CHECK() { return getToken(MySqlParser.CHECK, 0); }
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public AlterByDropConstraintCheckContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByDropConstraintCheck(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByDropConstraintCheck(this);
		}
	}
	public static class AlterByAddColumnsContext extends AlterSpecificationContext {
		public TerminalNode ADD() { return getToken(MySqlParser.ADD, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public List uid() {
			return getRuleContexts(UidContext.class);
		}
		public UidContext uid(int i) {
			return getRuleContext(UidContext.class,i);
		}
		public List columnDefinition() {
			return getRuleContexts(ColumnDefinitionContext.class);
		}
		public ColumnDefinitionContext columnDefinition(int i) {
			return getRuleContext(ColumnDefinitionContext.class,i);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TerminalNode COLUMN() { return getToken(MySqlParser.COLUMN, 0); }
		public IfNotExistsContext ifNotExists() {
			return getRuleContext(IfNotExistsContext.class,0);
		}
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public AlterByAddColumnsContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByAddColumns(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByAddColumns(this);
		}
	}
	public static class AlterByAlterIndexVisibilityContext extends AlterSpecificationContext {
		public TerminalNode ALTER() { return getToken(MySqlParser.ALTER, 0); }
		public TerminalNode INDEX() { return getToken(MySqlParser.INDEX, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode VISIBLE() { return getToken(MySqlParser.VISIBLE, 0); }
		public TerminalNode INVISIBLE() { return getToken(MySqlParser.INVISIBLE, 0); }
		public AlterByAlterIndexVisibilityContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByAlterIndexVisibility(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByAlterIndexVisibility(this);
		}
	}
	public static class AlterByDropForeignKeyContext extends AlterSpecificationContext {
		public TerminalNode DROP() { return getToken(MySqlParser.DROP, 0); }
		public TerminalNode FOREIGN() { return getToken(MySqlParser.FOREIGN, 0); }
		public TerminalNode KEY() { return getToken(MySqlParser.KEY, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public DottedIdContext dottedId() {
			return getRuleContext(DottedIdContext.class,0);
		}
		public AlterByDropForeignKeyContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByDropForeignKey(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByDropForeignKey(this);
		}
	}
	public static class AlterByAddCheckTableConstraintContext extends AlterSpecificationContext {
		public UidContext name;
		public TerminalNode ADD() { return getToken(MySqlParser.ADD, 0); }
		public TerminalNode CHECK() { return getToken(MySqlParser.CHECK, 0); }
		public List uid() {
			return getRuleContexts(UidContext.class);
		}
		public UidContext uid(int i) {
			return getRuleContext(UidContext.class,i);
		}
		public StringLiteralContext stringLiteral() {
			return getRuleContext(StringLiteralContext.class,0);
		}
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TerminalNode CONSTRAINT() { return getToken(MySqlParser.CONSTRAINT, 0); }
		public TerminalNode NOT() { return getToken(MySqlParser.NOT, 0); }
		public TerminalNode ENFORCED() { return getToken(MySqlParser.ENFORCED, 0); }
		public AlterByAddCheckTableConstraintContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByAddCheckTableConstraint(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByAddCheckTableConstraint(this);
		}
	}
	public static class AlterPartitionContext extends AlterSpecificationContext {
		public AlterPartitionSpecificationContext alterPartitionSpecification() {
			return getRuleContext(AlterPartitionSpecificationContext.class,0);
		}
		public AlterPartitionContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterPartition(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterPartition(this);
		}
	}
	public static class AlterByAddIndexContext extends AlterSpecificationContext {
		public Token indexFormat;
		public TerminalNode ADD() { return getToken(MySqlParser.ADD, 0); }
		public IndexColumnNamesContext indexColumnNames() {
			return getRuleContext(IndexColumnNamesContext.class,0);
		}
		public TerminalNode INDEX() { return getToken(MySqlParser.INDEX, 0); }
		public TerminalNode KEY() { return getToken(MySqlParser.KEY, 0); }
		public IfNotExistsContext ifNotExists() {
			return getRuleContext(IfNotExistsContext.class,0);
		}
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public IndexTypeContext indexType() {
			return getRuleContext(IndexTypeContext.class,0);
		}
		public List indexOption() {
			return getRuleContexts(IndexOptionContext.class);
		}
		public IndexOptionContext indexOption(int i) {
			return getRuleContext(IndexOptionContext.class,i);
		}
		public AlterByAddIndexContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByAddIndex(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByAddIndex(this);
		}
	}
	public static class AlterByDropColumnContext extends AlterSpecificationContext {
		public TerminalNode DROP() { return getToken(MySqlParser.DROP, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode COLUMN() { return getToken(MySqlParser.COLUMN, 0); }
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public TerminalNode RESTRICT() { return getToken(MySqlParser.RESTRICT, 0); }
		public AlterByDropColumnContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByDropColumn(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByDropColumn(this);
		}
	}
	public static class AlterByChangeDefaultContext extends AlterSpecificationContext {
		public TerminalNode ALTER() { return getToken(MySqlParser.ALTER, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode SET() { return getToken(MySqlParser.SET, 0); }
		public TerminalNode DEFAULT() { return getToken(MySqlParser.DEFAULT, 0); }
		public DefaultValueContext defaultValue() {
			return getRuleContext(DefaultValueContext.class,0);
		}
		public TerminalNode DROP() { return getToken(MySqlParser.DROP, 0); }
		public TerminalNode COLUMN() { return getToken(MySqlParser.COLUMN, 0); }
		public AlterByChangeDefaultContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByChangeDefault(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByChangeDefault(this);
		}
	}
	public static class AlterByForceContext extends AlterSpecificationContext {
		public TerminalNode FORCE() { return getToken(MySqlParser.FORCE, 0); }
		public AlterByForceContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByForce(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByForce(this);
		}
	}
	public static class AlterByAddSpecialIndexContext extends AlterSpecificationContext {
		public Token keyType;
		public Token indexFormat;
		public TerminalNode ADD() { return getToken(MySqlParser.ADD, 0); }
		public IndexColumnNamesContext indexColumnNames() {
			return getRuleContext(IndexColumnNamesContext.class,0);
		}
		public TerminalNode FULLTEXT() { return getToken(MySqlParser.FULLTEXT, 0); }
		public TerminalNode SPATIAL() { return getToken(MySqlParser.SPATIAL, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public List indexOption() {
			return getRuleContexts(IndexOptionContext.class);
		}
		public IndexOptionContext indexOption(int i) {
			return getRuleContext(IndexOptionContext.class,i);
		}
		public TerminalNode INDEX() { return getToken(MySqlParser.INDEX, 0); }
		public TerminalNode KEY() { return getToken(MySqlParser.KEY, 0); }
		public AlterByAddSpecialIndexContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByAddSpecialIndex(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByAddSpecialIndex(this);
		}
	}
	public static class AlterByModifyColumnContext extends AlterSpecificationContext {
		public TerminalNode MODIFY() { return getToken(MySqlParser.MODIFY, 0); }
		public List uid() {
			return getRuleContexts(UidContext.class);
		}
		public UidContext uid(int i) {
			return getRuleContext(UidContext.class,i);
		}
		public ColumnDefinitionContext columnDefinition() {
			return getRuleContext(ColumnDefinitionContext.class,0);
		}
		public TerminalNode COLUMN() { return getToken(MySqlParser.COLUMN, 0); }
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public TerminalNode FIRST() { return getToken(MySqlParser.FIRST, 0); }
		public TerminalNode AFTER() { return getToken(MySqlParser.AFTER, 0); }
		public AlterByModifyColumnContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByModifyColumn(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByModifyColumn(this);
		}
	}
	public static class AlterByTableOptionContext extends AlterSpecificationContext {
		public List tableOption() {
			return getRuleContexts(TableOptionContext.class);
		}
		public TableOptionContext tableOption(int i) {
			return getRuleContext(TableOptionContext.class,i);
		}
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public AlterByTableOptionContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByTableOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByTableOption(this);
		}
	}
	public static class AlterByDropPrimaryKeyContext extends AlterSpecificationContext {
		public TerminalNode DROP() { return getToken(MySqlParser.DROP, 0); }
		public TerminalNode PRIMARY() { return getToken(MySqlParser.PRIMARY, 0); }
		public TerminalNode KEY() { return getToken(MySqlParser.KEY, 0); }
		public AlterByDropPrimaryKeyContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByDropPrimaryKey(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByDropPrimaryKey(this);
		}
	}
	public static class AlterByLockContext extends AlterSpecificationContext {
		public Token lockType;
		public TerminalNode LOCK() { return getToken(MySqlParser.LOCK, 0); }
		public TerminalNode DEFAULT() { return getToken(MySqlParser.DEFAULT, 0); }
		public TerminalNode NONE() { return getToken(MySqlParser.NONE, 0); }
		public TerminalNode SHARED() { return getToken(MySqlParser.SHARED, 0); }
		public TerminalNode EXCLUSIVE() { return getToken(MySqlParser.EXCLUSIVE, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public AlterByLockContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByLock(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByLock(this);
		}
	}
	public static class AlterByDiscardTablespaceContext extends AlterSpecificationContext {
		public TerminalNode DISCARD() { return getToken(MySqlParser.DISCARD, 0); }
		public TerminalNode TABLESPACE() { return getToken(MySqlParser.TABLESPACE, 0); }
		public AlterByDiscardTablespaceContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByDiscardTablespace(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByDiscardTablespace(this);
		}
	}
	public static class AlterByValidateContext extends AlterSpecificationContext {
		public Token validationFormat;
		public TerminalNode VALIDATION() { return getToken(MySqlParser.VALIDATION, 0); }
		public TerminalNode WITHOUT() { return getToken(MySqlParser.WITHOUT, 0); }
		public TerminalNode WITH() { return getToken(MySqlParser.WITH, 0); }
		public AlterByValidateContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByValidate(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByValidate(this);
		}
	}
	public static class AlterByAddPrimaryKeyContext extends AlterSpecificationContext {
		public UidContext name;
		public UidContext index;
		public TerminalNode ADD() { return getToken(MySqlParser.ADD, 0); }
		public TerminalNode PRIMARY() { return getToken(MySqlParser.PRIMARY, 0); }
		public TerminalNode KEY() { return getToken(MySqlParser.KEY, 0); }
		public IndexColumnNamesContext indexColumnNames() {
			return getRuleContext(IndexColumnNamesContext.class,0);
		}
		public TerminalNode CONSTRAINT() { return getToken(MySqlParser.CONSTRAINT, 0); }
		public IndexTypeContext indexType() {
			return getRuleContext(IndexTypeContext.class,0);
		}
		public List indexOption() {
			return getRuleContexts(IndexOptionContext.class);
		}
		public IndexOptionContext indexOption(int i) {
			return getRuleContext(IndexOptionContext.class,i);
		}
		public List uid() {
			return getRuleContexts(UidContext.class);
		}
		public UidContext uid(int i) {
			return getRuleContext(UidContext.class,i);
		}
		public AlterByAddPrimaryKeyContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByAddPrimaryKey(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByAddPrimaryKey(this);
		}
	}
	public static class AlterByEnableKeysContext extends AlterSpecificationContext {
		public TerminalNode ENABLE() { return getToken(MySqlParser.ENABLE, 0); }
		public TerminalNode KEYS() { return getToken(MySqlParser.KEYS, 0); }
		public AlterByEnableKeysContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByEnableKeys(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByEnableKeys(this);
		}
	}
	public static class AlterBySetAlgorithmContext extends AlterSpecificationContext {
		public Token algType;
		public TerminalNode ALGORITHM() { return getToken(MySqlParser.ALGORITHM, 0); }
		public TerminalNode DEFAULT() { return getToken(MySqlParser.DEFAULT, 0); }
		public TerminalNode INSTANT() { return getToken(MySqlParser.INSTANT, 0); }
		public TerminalNode INPLACE() { return getToken(MySqlParser.INPLACE, 0); }
		public TerminalNode COPY() { return getToken(MySqlParser.COPY, 0); }
		public TerminalNode NOCOPY() { return getToken(MySqlParser.NOCOPY, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public AlterBySetAlgorithmContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterBySetAlgorithm(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterBySetAlgorithm(this);
		}
	}
	public static class AlterByChangeColumnContext extends AlterSpecificationContext {
		public UidContext oldColumn;
		public UidContext newColumn;
		public UidContext afterColumn;
		public TerminalNode CHANGE() { return getToken(MySqlParser.CHANGE, 0); }
		public ColumnDefinitionContext columnDefinition() {
			return getRuleContext(ColumnDefinitionContext.class,0);
		}
		public List uid() {
			return getRuleContexts(UidContext.class);
		}
		public UidContext uid(int i) {
			return getRuleContext(UidContext.class,i);
		}
		public TerminalNode COLUMN() { return getToken(MySqlParser.COLUMN, 0); }
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public TerminalNode FIRST() { return getToken(MySqlParser.FIRST, 0); }
		public TerminalNode AFTER() { return getToken(MySqlParser.AFTER, 0); }
		public AlterByChangeColumnContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByChangeColumn(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByChangeColumn(this);
		}
	}
	public static class AlterByAddUniqueKeyContext extends AlterSpecificationContext {
		public UidContext name;
		public Token indexFormat;
		public UidContext indexName;
		public TerminalNode ADD() { return getToken(MySqlParser.ADD, 0); }
		public TerminalNode UNIQUE() { return getToken(MySqlParser.UNIQUE, 0); }
		public IndexColumnNamesContext indexColumnNames() {
			return getRuleContext(IndexColumnNamesContext.class,0);
		}
		public TerminalNode CONSTRAINT() { return getToken(MySqlParser.CONSTRAINT, 0); }
		public IfNotExistsContext ifNotExists() {
			return getRuleContext(IfNotExistsContext.class,0);
		}
		public IndexTypeContext indexType() {
			return getRuleContext(IndexTypeContext.class,0);
		}
		public List indexOption() {
			return getRuleContexts(IndexOptionContext.class);
		}
		public IndexOptionContext indexOption(int i) {
			return getRuleContext(IndexOptionContext.class,i);
		}
		public List uid() {
			return getRuleContexts(UidContext.class);
		}
		public UidContext uid(int i) {
			return getRuleContext(UidContext.class,i);
		}
		public TerminalNode INDEX() { return getToken(MySqlParser.INDEX, 0); }
		public TerminalNode KEY() { return getToken(MySqlParser.KEY, 0); }
		public AlterByAddUniqueKeyContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByAddUniqueKey(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByAddUniqueKey(this);
		}
	}
	public static class AlterByDropIndexContext extends AlterSpecificationContext {
		public Token indexFormat;
		public TerminalNode DROP() { return getToken(MySqlParser.DROP, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode INDEX() { return getToken(MySqlParser.INDEX, 0); }
		public TerminalNode KEY() { return getToken(MySqlParser.KEY, 0); }
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public AlterByDropIndexContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByDropIndex(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByDropIndex(this);
		}
	}
	public static class AlterByAddColumnContext extends AlterSpecificationContext {
		public TerminalNode ADD() { return getToken(MySqlParser.ADD, 0); }
		public List uid() {
			return getRuleContexts(UidContext.class);
		}
		public UidContext uid(int i) {
			return getRuleContext(UidContext.class,i);
		}
		public ColumnDefinitionContext columnDefinition() {
			return getRuleContext(ColumnDefinitionContext.class,0);
		}
		public TerminalNode COLUMN() { return getToken(MySqlParser.COLUMN, 0); }
		public IfNotExistsContext ifNotExists() {
			return getRuleContext(IfNotExistsContext.class,0);
		}
		public TerminalNode FIRST() { return getToken(MySqlParser.FIRST, 0); }
		public TerminalNode AFTER() { return getToken(MySqlParser.AFTER, 0); }
		public AlterByAddColumnContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByAddColumn(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByAddColumn(this);
		}
	}
	public static class AlterByOrderContext extends AlterSpecificationContext {
		public TerminalNode ORDER() { return getToken(MySqlParser.ORDER, 0); }
		public TerminalNode BY() { return getToken(MySqlParser.BY, 0); }
		public UidListContext uidList() {
			return getRuleContext(UidListContext.class,0);
		}
		public AlterByOrderContext(AlterSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByOrder(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByOrder(this);
		}
	}

	public final AlterSpecificationContext alterSpecification() throws RecognitionException {
		AlterSpecificationContext _localctx = new AlterSpecificationContext(_ctx, getState());
		enterRule(_localctx, 160, RULE_alterSpecification);
		int _la;
		try {
			int _alt;
			setState(3114);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,416,_ctx) ) {
			case 1:
				_localctx = new AlterByTableOptionContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(2736);
				tableOption();
				setState(2743);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,347,_ctx);
				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
					if ( _alt==1 ) {
						{
						{
						setState(2738);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==COMMA) {
							{
							setState(2737);
							match(COMMA);
							}
						}

						setState(2740);
						tableOption();
						}
						} 
					}
					setState(2745);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,347,_ctx);
				}
				}
				break;
			case 2:
				_localctx = new AlterByAddColumnContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(2746);
				match(ADD);
				setState(2748);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COLUMN) {
					{
					setState(2747);
					match(COLUMN);
					}
				}

				setState(2751);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,349,_ctx) ) {
				case 1:
					{
					setState(2750);
					ifNotExists();
					}
					break;
				}
				setState(2753);
				uid();
				setState(2754);
				columnDefinition();
				setState(2758);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case FIRST:
					{
					setState(2755);
					match(FIRST);
					}
					break;
				case AFTER:
					{
					setState(2756);
					match(AFTER);
					setState(2757);
					uid();
					}
					break;
				case EOF:
				case ALTER:
				case ANALYZE:
				case CALL:
				case CHANGE:
				case CHECK:
				case CREATE:
				case DELETE:
				case DESC:
				case DESCRIBE:
				case DROP:
				case EXPLAIN:
				case GET:
				case GRANT:
				case INSERT:
				case KILL:
				case LOAD:
				case LOCK:
				case OPTIMIZE:
				case PARTITION:
				case PURGE:
				case RELEASE:
				case RENAME:
				case REPLACE:
				case RESIGNAL:
				case REVOKE:
				case SELECT:
				case SET:
				case SHOW:
				case SIGNAL:
				case TABLE:
				case UNLOCK:
				case UPDATE:
				case USE:
				case VALUES:
				case WITH:
				case BEGIN:
				case BINLOG:
				case CACHE:
				case CHECKSUM:
				case COMMIT:
				case DEALLOCATE:
				case DO:
				case FLUSH:
				case HANDLER:
				case HELP:
				case INSTALL:
				case PREPARE:
				case REPAIR:
				case RESET:
				case ROLLBACK:
				case SAVEPOINT:
				case START:
				case STOP:
				case TRUNCATE:
				case UNINSTALL:
				case XA:
				case EXECUTE:
				case SHUTDOWN:
				case MINUS:
				case LR_BRACKET:
				case COMMA:
				case SEMI:
					break;
				default:
					break;
				}
				}
				break;
			case 3:
				_localctx = new AlterByAddColumnsContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(2760);
				match(ADD);
				setState(2762);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COLUMN) {
					{
					setState(2761);
					match(COLUMN);
					}
				}

				setState(2765);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==IF) {
					{
					setState(2764);
					ifNotExists();
					}
				}

				setState(2767);
				match(LR_BRACKET);
				setState(2768);
				uid();
				setState(2769);
				columnDefinition();
				setState(2776);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(2770);
					match(COMMA);
					setState(2771);
					uid();
					setState(2772);
					columnDefinition();
					}
					}
					setState(2778);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(2779);
				match(RR_BRACKET);
				}
				break;
			case 4:
				_localctx = new AlterByAddIndexContext(_localctx);
				enterOuterAlt(_localctx, 4);
				{
				setState(2781);
				match(ADD);
				setState(2782);
				((AlterByAddIndexContext)_localctx).indexFormat = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==INDEX || _la==KEY) ) {
					((AlterByAddIndexContext)_localctx).indexFormat = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(2784);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,354,_ctx) ) {
				case 1:
					{
					setState(2783);
					ifNotExists();
					}
					break;
				}
				setState(2787);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ARRAY) | (1L << ATTRIBUTE) | (1L << BUCKETS) | (1L << CONDITION) | (1L << CURRENT) | (1L << CURRENT_ROLE) | (1L << CURRENT_USER) | (1L << DATABASE) | (1L << DEFAULT) | (1L << DIAGNOSTICS) | (1L << EMPTY) | (1L << ENFORCED) | (1L << EXCEPT))) != 0) || ((((_la - 74)) & ~0x3f) == 0 && ((1L << (_la - 74)) & ((1L << (GROUP - 74)) | (1L << (GROUP_REPLICATION_STREAM - 74)) | (1L << (IF - 74)) | (1L << (IGNORED - 74)) | (1L << (INSERT - 74)) | (1L << (LATERAL - 74)) | (1L << (LEFT - 74)) | (1L << (LOCKED - 74)) | (1L << (MAXVALUE - 74)) | (1L << (MINVALUE - 74)) | (1L << (NUMBER - 74)) | (1L << (OPTIONAL - 74)) | (1L << (ORDER - 74)) | (1L << (PRIMARY - 74)))) != 0) || ((((_la - 142)) & ~0x3f) == 0 && ((1L << (_la - 142)) & ((1L << (REPEAT - 142)) | (1L << (REPLACE - 142)) | (1L << (RIGHT - 142)) | (1L << (SCHEMA - 142)) | (1L << (SKIP_ - 142)) | (1L << (SKIP_QUERY_REWRITE - 142)) | (1L << (STACKED - 142)) | (1L << (STATEMENT - 142)))) != 0) || ((((_la - 220)) & ~0x3f) == 0 && ((1L << (_la - 220)) & ((1L << (DATE - 220)) | (1L << (TIME - 220)) | (1L << (TIMESTAMP - 220)) | (1L << (DATETIME - 220)) | (1L << (YEAR - 220)) | (1L << (NATIONAL - 220)) | (1L << (BINARY - 220)) | (1L << (TEXT - 220)) | (1L << (ENUM - 220)) | (1L << (SERIAL - 220)) | (1L << (JSON_ARRAY - 220)) | (1L << (JSON_ARRAYAGG - 220)) | (1L << (JSON_ARRAY_APPEND - 220)) | (1L << (JSON_ARRAY_INSERT - 220)) | (1L << (JSON_CONTAINS - 220)) | (1L << (JSON_CONTAINS_PATH - 220)) | (1L << (JSON_DEPTH - 220)) | (1L << (JSON_EXTRACT - 220)) | (1L << (JSON_INSERT - 220)) | (1L << (JSON_KEYS - 220)) | (1L << (JSON_LENGTH - 220)) | (1L << (JSON_MERGE - 220)) | (1L << (JSON_MERGE_PATCH - 220)) | (1L << (JSON_MERGE_PRESERVE - 220)) | (1L << (JSON_OBJECT - 220)) | (1L << (JSON_OBJECTAGG - 220)) | (1L << (JSON_OVERLAPS - 220)) | (1L << (JSON_PRETTY - 220)) | (1L << (JSON_QUOTE - 220)) | (1L << (JSON_REMOVE - 220)) | (1L << (JSON_REPLACE - 220)) | (1L << (JSON_SCHEMA_VALID - 220)) | (1L << (JSON_SCHEMA_VALIDATION_REPORT - 220)) | (1L << (JSON_SEARCH - 220)) | (1L << (JSON_SET - 220)) | (1L << (JSON_STORAGE_FREE - 220)) | (1L << (JSON_STORAGE_SIZE - 220)) | (1L << (JSON_TABLE - 220)) | (1L << (JSON_TYPE - 220)) | (1L << (JSON_UNQUOTE - 220)))) != 0) || ((((_la - 284)) & ~0x3f) == 0 && ((1L << (_la - 284)) & ((1L << (JSON_VALID - 284)) | (1L << (JSON_VALUE - 284)) | (1L << (NESTED - 284)) | (1L << (ORDINALITY - 284)) | (1L << (PATH - 284)) | (1L << (AVG - 284)) | (1L << (BIT_AND - 284)) | (1L << (BIT_OR - 284)) | (1L << (BIT_XOR - 284)) | (1L << (COUNT - 284)) | (1L << (CUME_DIST - 284)) | (1L << (DENSE_RANK - 284)) | (1L << (FIRST_VALUE - 284)) | (1L << (GROUP_CONCAT - 284)) | (1L << (LAG - 284)) | (1L << (LAST_VALUE - 284)) | (1L << (LEAD - 284)) | (1L << (MAX - 284)) | (1L << (MIN - 284)) | (1L << (NTILE - 284)) | (1L << (NTH_VALUE - 284)) | (1L << (PERCENT_RANK - 284)) | (1L << (RANK - 284)) | (1L << (ROW_NUMBER - 284)) | (1L << (STD - 284)) | (1L << (STDDEV - 284)) | (1L << (STDDEV_POP - 284)) | (1L << (STDDEV_SAMP - 284)) | (1L << (SUM - 284)) | (1L << (VAR_POP - 284)) | (1L << (VAR_SAMP - 284)) | (1L << (VARIANCE - 284)) | (1L << (CURRENT_DATE - 284)) | (1L << (CURRENT_TIME - 284)) | (1L << (CURRENT_TIMESTAMP - 284)) | (1L << (LOCALTIME - 284)) | (1L << (CURDATE - 284)) | (1L << (CURTIME - 284)) | (1L << (DATE_ADD - 284)) | (1L << (DATE_SUB - 284)) | (1L << (LOCALTIMESTAMP - 284)) | (1L << (NOW - 284)) | (1L << (POSITION - 284)) | (1L << (SUBSTR - 284)) | (1L << (SUBSTRING - 284)) | (1L << (SYSDATE - 284)) | (1L << (TRIM - 284)) | (1L << (UTC_DATE - 284)) | (1L << (UTC_TIME - 284)) | (1L << (UTC_TIMESTAMP - 284)) | (1L << (ACCOUNT - 284)) | (1L << (ACTION - 284)) | (1L << (AFTER - 284)) | (1L << (AGGREGATE - 284)) | (1L << (ALGORITHM - 284)) | (1L << (ANY - 284)) | (1L << (AT - 284)) | (1L << (AUTHORS - 284)) | (1L << (AUTOCOMMIT - 284)) | (1L << (AUTOEXTEND_SIZE - 284)) | (1L << (AUTO_INCREMENT - 284)) | (1L << (AVG_ROW_LENGTH - 284)) | (1L << (BEGIN - 284)))) != 0) || ((((_la - 348)) & ~0x3f) == 0 && ((1L << (_la - 348)) & ((1L << (BINLOG - 348)) | (1L << (BIT - 348)) | (1L << (BLOCK - 348)) | (1L << (BOOL - 348)) | (1L << (BOOLEAN - 348)) | (1L << (BTREE - 348)) | (1L << (CACHE - 348)) | (1L << (CASCADED - 348)) | (1L << (CHAIN - 348)) | (1L << (CHANGED - 348)) | (1L << (CHANNEL - 348)) | (1L << (CHECKSUM - 348)) | (1L << (PAGE_CHECKSUM - 348)) | (1L << (CIPHER - 348)) | (1L << (CLASS_ORIGIN - 348)) | (1L << (CLIENT - 348)) | (1L << (CLOSE - 348)) | (1L << (CLUSTERING - 348)) | (1L << (COALESCE - 348)) | (1L << (CODE - 348)) | (1L << (COLUMNS - 348)) | (1L << (COLUMN_FORMAT - 348)) | (1L << (COLUMN_NAME - 348)) | (1L << (COMMENT - 348)) | (1L << (COMMIT - 348)) | (1L << (COMPACT - 348)) | (1L << (COMPLETION - 348)) | (1L << (COMPRESSED - 348)) | (1L << (COMPRESSION - 348)) | (1L << (CONCURRENT - 348)) | (1L << (CONNECT - 348)) | (1L << (CONNECTION - 348)) | (1L << (CONSISTENT - 348)) | (1L << (CONSTRAINT_CATALOG - 348)) | (1L << (CONSTRAINT_SCHEMA - 348)) | (1L << (CONSTRAINT_NAME - 348)) | (1L << (CONTAINS - 348)) | (1L << (CONTEXT - 348)) | (1L << (CONTRIBUTORS - 348)) | (1L << (COPY - 348)) | (1L << (CPU - 348)) | (1L << (CYCLE - 348)) | (1L << (CURSOR_NAME - 348)) | (1L << (DATA - 348)) | (1L << (DATAFILE - 348)) | (1L << (DEALLOCATE - 348)) | (1L << (DEFAULT_AUTH - 348)) | (1L << (DEFINER - 348)) | (1L << (DELAY_KEY_WRITE - 348)) | (1L << (DES_KEY_FILE - 348)) | (1L << (DIRECTORY - 348)) | (1L << (DISABLE - 348)) | (1L << (DISCARD - 348)) | (1L << (DISK - 348)) | (1L << (DO - 348)) | (1L << (DUMPFILE - 348)) | (1L << (DUPLICATE - 348)) | (1L << (DYNAMIC - 348)) | (1L << (ENABLE - 348)) | (1L << (ENCRYPTED - 348)) | (1L << (ENCRYPTION - 348)) | (1L << (ENCRYPTION_KEY_ID - 348)) | (1L << (END - 348)) | (1L << (ENDS - 348)))) != 0) || ((((_la - 412)) & ~0x3f) == 0 && ((1L << (_la - 412)) & ((1L << (ENGINE - 412)) | (1L << (ENGINES - 412)) | (1L << (ERROR - 412)) | (1L << (ERRORS - 412)) | (1L << (ESCAPE - 412)) | (1L << (EVEN - 412)) | (1L << (EVENT - 412)) | (1L << (EVENTS - 412)) | (1L << (EVERY - 412)) | (1L << (EXCHANGE - 412)) | (1L << (EXCLUSIVE - 412)) | (1L << (EXPIRE - 412)) | (1L << (EXPORT - 412)) | (1L << (EXTENDED - 412)) | (1L << (EXTENT_SIZE - 412)) | (1L << (FAILED_LOGIN_ATTEMPTS - 412)) | (1L << (FAST - 412)) | (1L << (FAULTS - 412)) | (1L << (FIELDS - 412)) | (1L << (FILE_BLOCK_SIZE - 412)) | (1L << (FILTER - 412)) | (1L << (FIRST - 412)) | (1L << (FIXED - 412)) | (1L << (FLUSH - 412)) | (1L << (FOLLOWS - 412)) | (1L << (FOUND - 412)) | (1L << (FULL - 412)) | (1L << (FUNCTION - 412)) | (1L << (GENERAL - 412)) | (1L << (GLOBAL - 412)) | (1L << (GRANTS - 412)) | (1L << (GROUP_REPLICATION - 412)) | (1L << (HANDLER - 412)) | (1L << (HASH - 412)) | (1L << (HELP - 412)) | (1L << (HISTORY - 412)) | (1L << (HOST - 412)) | (1L << (HOSTS - 412)) | (1L << (IDENTIFIED - 412)) | (1L << (IGNORE_SERVER_IDS - 412)) | (1L << (IMPORT - 412)) | (1L << (INCREMENT - 412)) | (1L << (INDEXES - 412)) | (1L << (INITIAL_SIZE - 412)) | (1L << (INPLACE - 412)) | (1L << (INSERT_METHOD - 412)) | (1L << (INSTALL - 412)) | (1L << (INSTANCE - 412)) | (1L << (INSTANT - 412)) | (1L << (INVISIBLE - 412)) | (1L << (INVOKER - 412)) | (1L << (IO - 412)) | (1L << (IO_THREAD - 412)) | (1L << (IPC - 412)) | (1L << (ISOLATION - 412)) | (1L << (ISSUER - 412)) | (1L << (JSON - 412)) | (1L << (KEY_BLOCK_SIZE - 412)) | (1L << (LANGUAGE - 412)) | (1L << (LAST - 412)) | (1L << (LEAVES - 412)) | (1L << (LESS - 412)) | (1L << (LEVEL - 412)))) != 0) || ((((_la - 476)) & ~0x3f) == 0 && ((1L << (_la - 476)) & ((1L << (LIST - 476)) | (1L << (LOCAL - 476)) | (1L << (LOGFILE - 476)) | (1L << (LOGS - 476)) | (1L << (MASTER - 476)) | (1L << (MASTER_AUTO_POSITION - 476)) | (1L << (MASTER_CONNECT_RETRY - 476)) | (1L << (MASTER_DELAY - 476)) | (1L << (MASTER_HEARTBEAT_PERIOD - 476)) | (1L << (MASTER_HOST - 476)) | (1L << (MASTER_LOG_FILE - 476)) | (1L << (MASTER_LOG_POS - 476)) | (1L << (MASTER_PASSWORD - 476)) | (1L << (MASTER_PORT - 476)) | (1L << (MASTER_RETRY_COUNT - 476)) | (1L << (MASTER_SSL - 476)) | (1L << (MASTER_SSL_CA - 476)) | (1L << (MASTER_SSL_CAPATH - 476)) | (1L << (MASTER_SSL_CERT - 476)) | (1L << (MASTER_SSL_CIPHER - 476)) | (1L << (MASTER_SSL_CRL - 476)) | (1L << (MASTER_SSL_CRLPATH - 476)) | (1L << (MASTER_SSL_KEY - 476)) | (1L << (MASTER_TLS_VERSION - 476)) | (1L << (MASTER_USER - 476)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 476)) | (1L << (MAX_QUERIES_PER_HOUR - 476)) | (1L << (MAX_ROWS - 476)) | (1L << (MAX_SIZE - 476)) | (1L << (MAX_UPDATES_PER_HOUR - 476)) | (1L << (MAX_USER_CONNECTIONS - 476)) | (1L << (MEDIUM - 476)) | (1L << (MEMBER - 476)) | (1L << (MERGE - 476)) | (1L << (MESSAGE_TEXT - 476)) | (1L << (MID - 476)) | (1L << (MIGRATE - 476)) | (1L << (MIN_ROWS - 476)) | (1L << (MODE - 476)) | (1L << (MODIFY - 476)) | (1L << (MUTEX - 476)) | (1L << (MYSQL - 476)) | (1L << (MYSQL_ERRNO - 476)) | (1L << (NAME - 476)) | (1L << (NAMES - 476)) | (1L << (NCHAR - 476)) | (1L << (NEVER - 476)) | (1L << (NEXT - 476)) | (1L << (NO - 476)) | (1L << (NOCACHE - 476)) | (1L << (NOCOPY - 476)) | (1L << (NOCYCLE - 476)) | (1L << (NOMAXVALUE - 476)) | (1L << (NOMINVALUE - 476)) | (1L << (NOWAIT - 476)) | (1L << (NODEGROUP - 476)) | (1L << (NONE - 476)) | (1L << (ODBC - 476)) | (1L << (OFFLINE - 476)) | (1L << (OFFSET - 476)) | (1L << (OF - 476)) | (1L << (OJ - 476)) | (1L << (OLD_PASSWORD - 476)) | (1L << (ONE - 476)))) != 0) || ((((_la - 540)) & ~0x3f) == 0 && ((1L << (_la - 540)) & ((1L << (ONLINE - 540)) | (1L << (ONLY - 540)) | (1L << (OPEN - 540)) | (1L << (OPTIMIZER_COSTS - 540)) | (1L << (OPTIONS - 540)) | (1L << (OWNER - 540)) | (1L << (PACK_KEYS - 540)) | (1L << (PAGE - 540)) | (1L << (PARSER - 540)) | (1L << (PARTIAL - 540)) | (1L << (PARTITIONING - 540)) | (1L << (PARTITIONS - 540)) | (1L << (PASSWORD - 540)) | (1L << (PASSWORD_LOCK_TIME - 540)) | (1L << (PHASE - 540)) | (1L << (PLUGIN - 540)) | (1L << (PLUGIN_DIR - 540)) | (1L << (PLUGINS - 540)) | (1L << (PORT - 540)) | (1L << (PRECEDES - 540)) | (1L << (PREPARE - 540)) | (1L << (PRESERVE - 540)) | (1L << (PREV - 540)) | (1L << (PROCESSLIST - 540)) | (1L << (PROFILE - 540)) | (1L << (PROFILES - 540)) | (1L << (PROXY - 540)) | (1L << (QUERY - 540)) | (1L << (QUICK - 540)) | (1L << (REBUILD - 540)) | (1L << (RECOVER - 540)) | (1L << (RECURSIVE - 540)) | (1L << (REDO_BUFFER_SIZE - 540)) | (1L << (REDUNDANT - 540)) | (1L << (RELAY - 540)) | (1L << (RELAY_LOG_FILE - 540)) | (1L << (RELAY_LOG_POS - 540)) | (1L << (RELAYLOG - 540)) | (1L << (REMOVE - 540)) | (1L << (REORGANIZE - 540)) | (1L << (REPAIR - 540)) | (1L << (REPLICATE_DO_DB - 540)) | (1L << (REPLICATE_DO_TABLE - 540)) | (1L << (REPLICATE_IGNORE_DB - 540)) | (1L << (REPLICATE_IGNORE_TABLE - 540)) | (1L << (REPLICATE_REWRITE_DB - 540)) | (1L << (REPLICATE_WILD_DO_TABLE - 540)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 540)) | (1L << (REPLICATION - 540)) | (1L << (RESET - 540)) | (1L << (RESTART - 540)) | (1L << (RESUME - 540)) | (1L << (RETURNED_SQLSTATE - 540)) | (1L << (RETURNING - 540)) | (1L << (RETURNS - 540)) | (1L << (REUSE - 540)) | (1L << (ROLE - 540)) | (1L << (ROLLBACK - 540)) | (1L << (ROLLUP - 540)) | (1L << (ROTATE - 540)) | (1L << (ROW - 540)))) != 0) || ((((_la - 604)) & ~0x3f) == 0 && ((1L << (_la - 604)) & ((1L << (ROWS - 604)) | (1L << (ROW_FORMAT - 604)) | (1L << (RTREE - 604)) | (1L << (SAVEPOINT - 604)) | (1L << (SCHEDULE - 604)) | (1L << (SECURITY - 604)) | (1L << (SEQUENCE - 604)) | (1L << (SERVER - 604)) | (1L << (SESSION - 604)) | (1L << (SHARE - 604)) | (1L << (SHARED - 604)) | (1L << (SIGNED - 604)) | (1L << (SIMPLE - 604)) | (1L << (SLAVE - 604)) | (1L << (SLOW - 604)) | (1L << (SNAPSHOT - 604)) | (1L << (SOCKET - 604)) | (1L << (SOME - 604)) | (1L << (SONAME - 604)) | (1L << (SOUNDS - 604)) | (1L << (SOURCE - 604)) | (1L << (SQL_AFTER_GTIDS - 604)) | (1L << (SQL_AFTER_MTS_GAPS - 604)) | (1L << (SQL_BEFORE_GTIDS - 604)) | (1L << (SQL_BUFFER_RESULT - 604)) | (1L << (SQL_CACHE - 604)) | (1L << (SQL_NO_CACHE - 604)) | (1L << (SQL_THREAD - 604)) | (1L << (START - 604)) | (1L << (STARTS - 604)) | (1L << (STATS_AUTO_RECALC - 604)) | (1L << (STATS_PERSISTENT - 604)) | (1L << (STATS_SAMPLE_PAGES - 604)) | (1L << (STATUS - 604)) | (1L << (STOP - 604)) | (1L << (STORAGE - 604)) | (1L << (STRING - 604)) | (1L << (SUBCLASS_ORIGIN - 604)) | (1L << (SUBJECT - 604)) | (1L << (SUBPARTITION - 604)) | (1L << (SUBPARTITIONS - 604)) | (1L << (SUSPEND - 604)) | (1L << (SWAPS - 604)) | (1L << (SWITCHES - 604)) | (1L << (TABLE_NAME - 604)) | (1L << (TABLESPACE - 604)) | (1L << (TABLE_TYPE - 604)) | (1L << (TEMPORARY - 604)) | (1L << (TEMPTABLE - 604)) | (1L << (THAN - 604)) | (1L << (TRADITIONAL - 604)) | (1L << (TRANSACTION - 604)) | (1L << (TRANSACTIONAL - 604)) | (1L << (TRIGGERS - 604)) | (1L << (TRUNCATE - 604)) | (1L << (UNBOUNDED - 604)) | (1L << (UNDEFINED - 604)) | (1L << (UNDOFILE - 604)) | (1L << (UNDO_BUFFER_SIZE - 604)) | (1L << (UNINSTALL - 604)) | (1L << (UNKNOWN - 604)) | (1L << (UNTIL - 604)) | (1L << (UPGRADE - 604)))) != 0) || ((((_la - 668)) & ~0x3f) == 0 && ((1L << (_la - 668)) & ((1L << (USER - 668)) | (1L << (USE_FRM - 668)) | (1L << (USER_RESOURCES - 668)) | (1L << (VALIDATION - 668)) | (1L << (VALUE - 668)) | (1L << (VARIABLES - 668)) | (1L << (VIEW - 668)) | (1L << (VIRTUAL - 668)) | (1L << (VISIBLE - 668)) | (1L << (WAIT - 668)) | (1L << (WARNINGS - 668)) | (1L << (WITHOUT - 668)) | (1L << (WORK - 668)) | (1L << (WRAPPER - 668)) | (1L << (X509 - 668)) | (1L << (XA - 668)) | (1L << (XML - 668)) | (1L << (YES - 668)) | (1L << (EUR - 668)) | (1L << (USA - 668)) | (1L << (JIS - 668)) | (1L << (ISO - 668)) | (1L << (INTERNAL - 668)) | (1L << (QUARTER - 668)) | (1L << (MONTH - 668)) | (1L << (DAY - 668)) | (1L << (HOUR - 668)) | (1L << (MINUTE - 668)) | (1L << (WEEK - 668)) | (1L << (SECOND - 668)) | (1L << (MICROSECOND - 668)) | (1L << (USER_STATISTICS - 668)) | (1L << (CLIENT_STATISTICS - 668)) | (1L << (INDEX_STATISTICS - 668)) | (1L << (TABLE_STATISTICS - 668)) | (1L << (FIREWALL_RULES - 668)) | (1L << (ADMIN - 668)) | (1L << (APPLICATION_PASSWORD_ADMIN - 668)) | (1L << (AUDIT_ADMIN - 668)) | (1L << (AUDIT_ABORT_EXEMPT - 668)) | (1L << (AUTHENTICATION_POLICY_ADMIN - 668)) | (1L << (BACKUP_ADMIN - 668)) | (1L << (BINLOG_ADMIN - 668)) | (1L << (BINLOG_ENCRYPTION_ADMIN - 668)) | (1L << (CLONE_ADMIN - 668)) | (1L << (CONNECTION_ADMIN - 668)) | (1L << (ENCRYPTION_KEY_ADMIN - 668)) | (1L << (EXECUTE - 668)) | (1L << (FILE - 668)) | (1L << (FIREWALL_ADMIN - 668)) | (1L << (FIREWALL_EXEMPT - 668)) | (1L << (FIREWALL_USER - 668)) | (1L << (FLUSH_OPTIMIZER_COSTS - 668)) | (1L << (FLUSH_STATUS - 668)) | (1L << (FLUSH_TABLES - 668)) | (1L << (FLUSH_USER_RESOURCES - 668)) | (1L << (GROUP_REPLICATION_ADMIN - 668)) | (1L << (INNODB_REDO_LOG_ARCHIVE - 668)) | (1L << (INNODB_REDO_LOG_ENABLE - 668)) | (1L << (INVOKE - 668)) | (1L << (LAMBDA - 668)) | (1L << (NDB_STORED_USER - 668)) | (1L << (PASSWORDLESS_USER_ADMIN - 668)))) != 0) || ((((_la - 732)) & ~0x3f) == 0 && ((1L << (_la - 732)) & ((1L << (PERSIST_RO_VARIABLES_ADMIN - 732)) | (1L << (PRIVILEGES - 732)) | (1L << (PROCESS - 732)) | (1L << (RELOAD - 732)) | (1L << (REPLICATION_APPLIER - 732)) | (1L << (REPLICATION_SLAVE_ADMIN - 732)) | (1L << (RESOURCE_GROUP_ADMIN - 732)) | (1L << (RESOURCE_GROUP_USER - 732)) | (1L << (ROLE_ADMIN - 732)) | (1L << (ROUTINE - 732)) | (1L << (S3 - 732)) | (1L << (SESSION_VARIABLES_ADMIN - 732)) | (1L << (SET_USER_ID - 732)) | (1L << (SHOW_ROUTINE - 732)) | (1L << (SHUTDOWN - 732)) | (1L << (SUPER - 732)) | (1L << (SYSTEM_VARIABLES_ADMIN - 732)) | (1L << (TABLES - 732)) | (1L << (TABLE_ENCRYPTION_ADMIN - 732)) | (1L << (VERSION_TOKEN_ADMIN - 732)) | (1L << (XA_RECOVER_ADMIN - 732)) | (1L << (ARMSCII8 - 732)) | (1L << (ASCII - 732)) | (1L << (BIG5 - 732)) | (1L << (CP1250 - 732)) | (1L << (CP1251 - 732)) | (1L << (CP1256 - 732)) | (1L << (CP1257 - 732)) | (1L << (CP850 - 732)) | (1L << (CP852 - 732)) | (1L << (CP866 - 732)) | (1L << (CP932 - 732)) | (1L << (DEC8 - 732)) | (1L << (EUCJPMS - 732)) | (1L << (EUCKR - 732)) | (1L << (GB18030 - 732)) | (1L << (GB2312 - 732)) | (1L << (GBK - 732)) | (1L << (GEOSTD8 - 732)) | (1L << (GREEK - 732)) | (1L << (HEBREW - 732)) | (1L << (HP8 - 732)) | (1L << (KEYBCS2 - 732)) | (1L << (KOI8R - 732)) | (1L << (KOI8U - 732)) | (1L << (LATIN1 - 732)) | (1L << (LATIN2 - 732)) | (1L << (LATIN5 - 732)) | (1L << (LATIN7 - 732)) | (1L << (MACCE - 732)) | (1L << (MACROMAN - 732)) | (1L << (SJIS - 732)) | (1L << (SWE7 - 732)) | (1L << (TIS620 - 732)) | (1L << (UCS2 - 732)) | (1L << (UJIS - 732)) | (1L << (UTF16 - 732)) | (1L << (UTF16LE - 732)) | (1L << (UTF32 - 732)) | (1L << (UTF8 - 732)) | (1L << (UTF8MB3 - 732)) | (1L << (UTF8MB4 - 732)) | (1L << (ARCHIVE - 732)))) != 0) || ((((_la - 796)) & ~0x3f) == 0 && ((1L << (_la - 796)) & ((1L << (BLACKHOLE - 796)) | (1L << (CSV - 796)) | (1L << (FEDERATED - 796)) | (1L << (INNODB - 796)) | (1L << (MEMORY - 796)) | (1L << (MRG_MYISAM - 796)) | (1L << (MYISAM - 796)) | (1L << (NDB - 796)) | (1L << (NDBCLUSTER - 796)) | (1L << (PERFORMANCE_SCHEMA - 796)) | (1L << (TOKUDB - 796)) | (1L << (REPEATABLE - 796)) | (1L << (COMMITTED - 796)) | (1L << (UNCOMMITTED - 796)) | (1L << (SERIALIZABLE - 796)) | (1L << (GEOMETRYCOLLECTION - 796)) | (1L << (GEOMETRY - 796)) | (1L << (LINESTRING - 796)) | (1L << (MULTILINESTRING - 796)) | (1L << (MULTIPOINT - 796)) | (1L << (MULTIPOLYGON - 796)) | (1L << (POINT - 796)) | (1L << (POLYGON - 796)) | (1L << (ABS - 796)) | (1L << (ACOS - 796)) | (1L << (ADDDATE - 796)) | (1L << (ADDTIME - 796)) | (1L << (AES_DECRYPT - 796)) | (1L << (AES_ENCRYPT - 796)) | (1L << (AREA - 796)) | (1L << (ASBINARY - 796)) | (1L << (ASIN - 796)) | (1L << (ASTEXT - 796)) | (1L << (ASWKB - 796)) | (1L << (ASWKT - 796)) | (1L << (ASYMMETRIC_DECRYPT - 796)) | (1L << (ASYMMETRIC_DERIVE - 796)) | (1L << (ASYMMETRIC_ENCRYPT - 796)) | (1L << (ASYMMETRIC_SIGN - 796)) | (1L << (ASYMMETRIC_VERIFY - 796)) | (1L << (ATAN - 796)) | (1L << (ATAN2 - 796)) | (1L << (BENCHMARK - 796)) | (1L << (BIN - 796)) | (1L << (BIT_COUNT - 796)) | (1L << (BIT_LENGTH - 796)) | (1L << (BUFFER - 796)) | (1L << (CATALOG_NAME - 796)) | (1L << (CEIL - 796)) | (1L << (CEILING - 796)) | (1L << (CENTROID - 796)) | (1L << (CHARACTER_LENGTH - 796)) | (1L << (CHARSET - 796)) | (1L << (CHAR_LENGTH - 796)) | (1L << (COERCIBILITY - 796)) | (1L << (COLLATION - 796)) | (1L << (COMPRESS - 796)) | (1L << (CONCAT - 796)) | (1L << (CONCAT_WS - 796)) | (1L << (CONNECTION_ID - 796)) | (1L << (CONV - 796)) | (1L << (CONVERT_TZ - 796)) | (1L << (COS - 796)))) != 0) || ((((_la - 860)) & ~0x3f) == 0 && ((1L << (_la - 860)) & ((1L << (COT - 860)) | (1L << (CRC32 - 860)) | (1L << (CREATE_ASYMMETRIC_PRIV_KEY - 860)) | (1L << (CREATE_ASYMMETRIC_PUB_KEY - 860)) | (1L << (CREATE_DH_PARAMETERS - 860)) | (1L << (CREATE_DIGEST - 860)) | (1L << (CROSSES - 860)) | (1L << (DATEDIFF - 860)) | (1L << (DATE_FORMAT - 860)) | (1L << (DAYNAME - 860)) | (1L << (DAYOFMONTH - 860)) | (1L << (DAYOFWEEK - 860)) | (1L << (DAYOFYEAR - 860)) | (1L << (DECODE - 860)) | (1L << (DEGREES - 860)) | (1L << (DES_DECRYPT - 860)) | (1L << (DES_ENCRYPT - 860)) | (1L << (DIMENSION - 860)) | (1L << (DISJOINT - 860)) | (1L << (ELT - 860)) | (1L << (ENCODE - 860)) | (1L << (ENCRYPT - 860)) | (1L << (ENDPOINT - 860)) | (1L << (ENGINE_ATTRIBUTE - 860)) | (1L << (ENVELOPE - 860)) | (1L << (EQUALS - 860)) | (1L << (EXP - 860)) | (1L << (EXPORT_SET - 860)) | (1L << (EXTERIORRING - 860)) | (1L << (EXTRACTVALUE - 860)) | (1L << (FIELD - 860)) | (1L << (FIND_IN_SET - 860)) | (1L << (FLOOR - 860)) | (1L << (FORMAT - 860)) | (1L << (FOUND_ROWS - 860)) | (1L << (FROM_BASE64 - 860)) | (1L << (FROM_DAYS - 860)) | (1L << (FROM_UNIXTIME - 860)) | (1L << (GEOMCOLLFROMTEXT - 860)) | (1L << (GEOMCOLLFROMWKB - 860)) | (1L << (GEOMETRYCOLLECTIONFROMTEXT - 860)) | (1L << (GEOMETRYCOLLECTIONFROMWKB - 860)) | (1L << (GEOMETRYFROMTEXT - 860)) | (1L << (GEOMETRYFROMWKB - 860)) | (1L << (GEOMETRYN - 860)) | (1L << (GEOMETRYTYPE - 860)) | (1L << (GEOMFROMTEXT - 860)) | (1L << (GEOMFROMWKB - 860)) | (1L << (GET_FORMAT - 860)) | (1L << (GET_LOCK - 860)) | (1L << (GLENGTH - 860)) | (1L << (GREATEST - 860)) | (1L << (GTID_SUBSET - 860)) | (1L << (GTID_SUBTRACT - 860)) | (1L << (HEX - 860)) | (1L << (IFNULL - 860)) | (1L << (INET6_ATON - 860)) | (1L << (INET6_NTOA - 860)) | (1L << (INET_ATON - 860)) | (1L << (INET_NTOA - 860)) | (1L << (INSTR - 860)) | (1L << (INTERIORRINGN - 860)) | (1L << (INTERSECTS - 860)) | (1L << (ISCLOSED - 860)))) != 0) || ((((_la - 924)) & ~0x3f) == 0 && ((1L << (_la - 924)) & ((1L << (ISEMPTY - 924)) | (1L << (ISNULL - 924)) | (1L << (ISSIMPLE - 924)) | (1L << (IS_FREE_LOCK - 924)) | (1L << (IS_IPV4 - 924)) | (1L << (IS_IPV4_COMPAT - 924)) | (1L << (IS_IPV4_MAPPED - 924)) | (1L << (IS_IPV6 - 924)) | (1L << (IS_USED_LOCK - 924)) | (1L << (LAST_INSERT_ID - 924)) | (1L << (LCASE - 924)) | (1L << (LEAST - 924)) | (1L << (LENGTH - 924)) | (1L << (LINEFROMTEXT - 924)) | (1L << (LINEFROMWKB - 924)) | (1L << (LINESTRINGFROMTEXT - 924)) | (1L << (LINESTRINGFROMWKB - 924)) | (1L << (LN - 924)) | (1L << (LOAD_FILE - 924)) | (1L << (LOCATE - 924)) | (1L << (LOG - 924)) | (1L << (LOG10 - 924)) | (1L << (LOG2 - 924)) | (1L << (LOWER - 924)) | (1L << (LPAD - 924)) | (1L << (LTRIM - 924)) | (1L << (MAKEDATE - 924)) | (1L << (MAKETIME - 924)) | (1L << (MAKE_SET - 924)) | (1L << (MASTER_POS_WAIT - 924)) | (1L << (MBRCONTAINS - 924)) | (1L << (MBRDISJOINT - 924)) | (1L << (MBREQUAL - 924)) | (1L << (MBRINTERSECTS - 924)) | (1L << (MBROVERLAPS - 924)) | (1L << (MBRTOUCHES - 924)) | (1L << (MBRWITHIN - 924)) | (1L << (MD5 - 924)) | (1L << (MLINEFROMTEXT - 924)) | (1L << (MLINEFROMWKB - 924)) | (1L << (MONTHNAME - 924)) | (1L << (MPOINTFROMTEXT - 924)) | (1L << (MPOINTFROMWKB - 924)) | (1L << (MPOLYFROMTEXT - 924)) | (1L << (MPOLYFROMWKB - 924)) | (1L << (MULTILINESTRINGFROMTEXT - 924)) | (1L << (MULTILINESTRINGFROMWKB - 924)) | (1L << (MULTIPOINTFROMTEXT - 924)) | (1L << (MULTIPOINTFROMWKB - 924)) | (1L << (MULTIPOLYGONFROMTEXT - 924)) | (1L << (MULTIPOLYGONFROMWKB - 924)) | (1L << (NAME_CONST - 924)) | (1L << (NULLIF - 924)) | (1L << (NUMGEOMETRIES - 924)) | (1L << (NUMINTERIORRINGS - 924)) | (1L << (NUMPOINTS - 924)) | (1L << (OCT - 924)) | (1L << (OCTET_LENGTH - 924)) | (1L << (ORD - 924)) | (1L << (OVERLAPS - 924)) | (1L << (PERIOD_ADD - 924)) | (1L << (PERIOD_DIFF - 924)) | (1L << (PI - 924)) | (1L << (POINTFROMTEXT - 924)))) != 0) || ((((_la - 988)) & ~0x3f) == 0 && ((1L << (_la - 988)) & ((1L << (POINTFROMWKB - 988)) | (1L << (POINTN - 988)) | (1L << (POLYFROMTEXT - 988)) | (1L << (POLYFROMWKB - 988)) | (1L << (POLYGONFROMTEXT - 988)) | (1L << (POLYGONFROMWKB - 988)) | (1L << (POW - 988)) | (1L << (POWER - 988)) | (1L << (QUOTE - 988)) | (1L << (RADIANS - 988)) | (1L << (RAND - 988)) | (1L << (RANDOM - 988)) | (1L << (RANDOM_BYTES - 988)) | (1L << (RELEASE_LOCK - 988)) | (1L << (REVERSE - 988)) | (1L << (ROUND - 988)) | (1L << (ROW_COUNT - 988)) | (1L << (RPAD - 988)) | (1L << (RTRIM - 988)) | (1L << (SEC_TO_TIME - 988)) | (1L << (SECONDARY_ENGINE_ATTRIBUTE - 988)) | (1L << (SENSITIVE_VARIABLES_OBSERVER - 988)) | (1L << (SESSION_USER - 988)) | (1L << (SHA - 988)) | (1L << (SHA1 - 988)) | (1L << (SHA2 - 988)) | (1L << (SCHEMA_NAME - 988)) | (1L << (SIGN - 988)) | (1L << (SIN - 988)) | (1L << (SLEEP - 988)) | (1L << (SOUNDEX - 988)) | (1L << (SQL_THREAD_WAIT_AFTER_GTIDS - 988)) | (1L << (SQRT - 988)) | (1L << (SRID - 988)) | (1L << (STARTPOINT - 988)) | (1L << (STRCMP - 988)) | (1L << (STR_TO_DATE - 988)) | (1L << (ST_AREA - 988)) | (1L << (ST_ASBINARY - 988)) | (1L << (ST_ASTEXT - 988)) | (1L << (ST_ASWKB - 988)) | (1L << (ST_ASWKT - 988)) | (1L << (ST_BUFFER - 988)) | (1L << (ST_CENTROID - 988)) | (1L << (ST_CONTAINS - 988)) | (1L << (ST_CROSSES - 988)) | (1L << (ST_DIFFERENCE - 988)) | (1L << (ST_DIMENSION - 988)) | (1L << (ST_DISJOINT - 988)) | (1L << (ST_DISTANCE - 988)) | (1L << (ST_ENDPOINT - 988)) | (1L << (ST_ENVELOPE - 988)) | (1L << (ST_EQUALS - 988)) | (1L << (ST_EXTERIORRING - 988)) | (1L << (ST_GEOMCOLLFROMTEXT - 988)) | (1L << (ST_GEOMCOLLFROMTXT - 988)) | (1L << (ST_GEOMCOLLFROMWKB - 988)) | (1L << (ST_GEOMETRYCOLLECTIONFROMTEXT - 988)) | (1L << (ST_GEOMETRYCOLLECTIONFROMWKB - 988)) | (1L << (ST_GEOMETRYFROMTEXT - 988)) | (1L << (ST_GEOMETRYFROMWKB - 988)) | (1L << (ST_GEOMETRYN - 988)) | (1L << (ST_GEOMETRYTYPE - 988)) | (1L << (ST_GEOMFROMTEXT - 988)))) != 0) || ((((_la - 1052)) & ~0x3f) == 0 && ((1L << (_la - 1052)) & ((1L << (ST_GEOMFROMWKB - 1052)) | (1L << (ST_INTERIORRINGN - 1052)) | (1L << (ST_INTERSECTION - 1052)) | (1L << (ST_INTERSECTS - 1052)) | (1L << (ST_ISCLOSED - 1052)) | (1L << (ST_ISEMPTY - 1052)) | (1L << (ST_ISSIMPLE - 1052)) | (1L << (ST_LINEFROMTEXT - 1052)) | (1L << (ST_LINEFROMWKB - 1052)) | (1L << (ST_LINESTRINGFROMTEXT - 1052)) | (1L << (ST_LINESTRINGFROMWKB - 1052)) | (1L << (ST_NUMGEOMETRIES - 1052)) | (1L << (ST_NUMINTERIORRING - 1052)) | (1L << (ST_NUMINTERIORRINGS - 1052)) | (1L << (ST_NUMPOINTS - 1052)) | (1L << (ST_OVERLAPS - 1052)) | (1L << (ST_POINTFROMTEXT - 1052)) | (1L << (ST_POINTFROMWKB - 1052)) | (1L << (ST_POINTN - 1052)) | (1L << (ST_POLYFROMTEXT - 1052)) | (1L << (ST_POLYFROMWKB - 1052)) | (1L << (ST_POLYGONFROMTEXT - 1052)) | (1L << (ST_POLYGONFROMWKB - 1052)) | (1L << (ST_SRID - 1052)) | (1L << (ST_STARTPOINT - 1052)) | (1L << (ST_SYMDIFFERENCE - 1052)) | (1L << (ST_TOUCHES - 1052)) | (1L << (ST_UNION - 1052)) | (1L << (ST_WITHIN - 1052)) | (1L << (ST_X - 1052)) | (1L << (ST_Y - 1052)) | (1L << (SUBDATE - 1052)) | (1L << (SUBSTRING_INDEX - 1052)) | (1L << (SUBTIME - 1052)) | (1L << (SYSTEM_USER - 1052)) | (1L << (SYSTEM - 1052)) | (1L << (TAN - 1052)) | (1L << (TELEMETRY_LOG_ADMIN - 1052)) | (1L << (TIMEDIFF - 1052)) | (1L << (TIMESTAMPADD - 1052)) | (1L << (TIMESTAMPDIFF - 1052)) | (1L << (TIME_FORMAT - 1052)) | (1L << (TIME_TO_SEC - 1052)) | (1L << (TOUCHES - 1052)) | (1L << (TO_BASE64 - 1052)) | (1L << (TO_DAYS - 1052)) | (1L << (TO_SECONDS - 1052)) | (1L << (TP_CONNECTION_ADMIN - 1052)) | (1L << (UCASE - 1052)) | (1L << (UNCOMPRESS - 1052)) | (1L << (UNCOMPRESSED_LENGTH - 1052)) | (1L << (UNHEX - 1052)) | (1L << (UNIX_TIMESTAMP - 1052)) | (1L << (UPDATEXML - 1052)) | (1L << (UPPER - 1052)) | (1L << (UUID - 1052)) | (1L << (UUID_SHORT - 1052)) | (1L << (VALIDATE_PASSWORD_STRENGTH - 1052)) | (1L << (VERSION - 1052)) | (1L << (VERSIONING - 1052)) | (1L << (WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS - 1052)) | (1L << (WEEKDAY - 1052)) | (1L << (WEEKOFYEAR - 1052)) | (1L << (WEIGHT_STRING - 1052)))) != 0) || ((((_la - 1116)) & ~0x3f) == 0 && ((1L << (_la - 1116)) & ((1L << (WITHIN - 1116)) | (1L << (YEARWEEK - 1116)) | (1L << (Y_FUNCTION - 1116)) | (1L << (X_FUNCTION - 1116)) | (1L << (VIA - 1116)) | (1L << (LASTVAL - 1116)) | (1L << (NEXTVAL - 1116)) | (1L << (SETVAL - 1116)) | (1L << (PREVIOUS - 1116)) | (1L << (PERSISTENT - 1116)) | (1L << (BINLOG_MONITOR - 1116)) | (1L << (BINLOG_REPLAY - 1116)) | (1L << (FEDERATED_ADMIN - 1116)) | (1L << (READ_ONLY_ADMIN - 1116)) | (1L << (REPLICA - 1116)) | (1L << (REPLICATION_MASTER_ADMIN - 1116)) | (1L << (MONITOR - 1116)) | (1L << (READ_ONLY - 1116)) | (1L << (REPLAY - 1116)) | (1L << (MOD - 1116)) | (1L << (CHARSET_REVERSE_QOUTE_STRING - 1116)) | (1L << (STRING_LITERAL - 1116)))) != 0) || _la==ID) {
					{
					setState(2786);
					uid();
					}
				}

				setState(2790);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==USING) {
					{
					setState(2789);
					indexType();
					}
				}

				setState(2792);
				indexColumnNames();
				setState(2796);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,357,_ctx);
				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
					if ( _alt==1 ) {
						{
						{
						setState(2793);
						indexOption();
						}
						} 
					}
					setState(2798);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,357,_ctx);
				}
				}
				break;
			case 5:
				_localctx = new AlterByAddPrimaryKeyContext(_localctx);
				enterOuterAlt(_localctx, 5);
				{
				setState(2799);
				match(ADD);
				setState(2804);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==CONSTRAINT) {
					{
					setState(2800);
					match(CONSTRAINT);
					setState(2802);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,358,_ctx) ) {
					case 1:
						{
						setState(2801);
						((AlterByAddPrimaryKeyContext)_localctx).name = uid();
						}
						break;
					}
					}
				}

				setState(2806);
				match(PRIMARY);
				setState(2807);
				match(KEY);
				setState(2809);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ARRAY) | (1L << ATTRIBUTE) | (1L << BUCKETS) | (1L << CONDITION) | (1L << CURRENT) | (1L << CURRENT_ROLE) | (1L << CURRENT_USER) | (1L << DATABASE) | (1L << DEFAULT) | (1L << DIAGNOSTICS) | (1L << EMPTY) | (1L << ENFORCED) | (1L << EXCEPT))) != 0) || ((((_la - 74)) & ~0x3f) == 0 && ((1L << (_la - 74)) & ((1L << (GROUP - 74)) | (1L << (GROUP_REPLICATION_STREAM - 74)) | (1L << (IF - 74)) | (1L << (IGNORED - 74)) | (1L << (INSERT - 74)) | (1L << (LATERAL - 74)) | (1L << (LEFT - 74)) | (1L << (LOCKED - 74)) | (1L << (MAXVALUE - 74)) | (1L << (MINVALUE - 74)) | (1L << (NUMBER - 74)) | (1L << (OPTIONAL - 74)) | (1L << (ORDER - 74)) | (1L << (PRIMARY - 74)))) != 0) || ((((_la - 142)) & ~0x3f) == 0 && ((1L << (_la - 142)) & ((1L << (REPEAT - 142)) | (1L << (REPLACE - 142)) | (1L << (RIGHT - 142)) | (1L << (SCHEMA - 142)) | (1L << (SKIP_ - 142)) | (1L << (SKIP_QUERY_REWRITE - 142)) | (1L << (STACKED - 142)) | (1L << (STATEMENT - 142)))) != 0) || ((((_la - 220)) & ~0x3f) == 0 && ((1L << (_la - 220)) & ((1L << (DATE - 220)) | (1L << (TIME - 220)) | (1L << (TIMESTAMP - 220)) | (1L << (DATETIME - 220)) | (1L << (YEAR - 220)) | (1L << (NATIONAL - 220)) | (1L << (BINARY - 220)) | (1L << (TEXT - 220)) | (1L << (ENUM - 220)) | (1L << (SERIAL - 220)) | (1L << (JSON_ARRAY - 220)) | (1L << (JSON_ARRAYAGG - 220)) | (1L << (JSON_ARRAY_APPEND - 220)) | (1L << (JSON_ARRAY_INSERT - 220)) | (1L << (JSON_CONTAINS - 220)) | (1L << (JSON_CONTAINS_PATH - 220)) | (1L << (JSON_DEPTH - 220)) | (1L << (JSON_EXTRACT - 220)) | (1L << (JSON_INSERT - 220)) | (1L << (JSON_KEYS - 220)) | (1L << (JSON_LENGTH - 220)) | (1L << (JSON_MERGE - 220)) | (1L << (JSON_MERGE_PATCH - 220)) | (1L << (JSON_MERGE_PRESERVE - 220)) | (1L << (JSON_OBJECT - 220)) | (1L << (JSON_OBJECTAGG - 220)) | (1L << (JSON_OVERLAPS - 220)) | (1L << (JSON_PRETTY - 220)) | (1L << (JSON_QUOTE - 220)) | (1L << (JSON_REMOVE - 220)) | (1L << (JSON_REPLACE - 220)) | (1L << (JSON_SCHEMA_VALID - 220)) | (1L << (JSON_SCHEMA_VALIDATION_REPORT - 220)) | (1L << (JSON_SEARCH - 220)) | (1L << (JSON_SET - 220)) | (1L << (JSON_STORAGE_FREE - 220)) | (1L << (JSON_STORAGE_SIZE - 220)) | (1L << (JSON_TABLE - 220)) | (1L << (JSON_TYPE - 220)) | (1L << (JSON_UNQUOTE - 220)))) != 0) || ((((_la - 284)) & ~0x3f) == 0 && ((1L << (_la - 284)) & ((1L << (JSON_VALID - 284)) | (1L << (JSON_VALUE - 284)) | (1L << (NESTED - 284)) | (1L << (ORDINALITY - 284)) | (1L << (PATH - 284)) | (1L << (AVG - 284)) | (1L << (BIT_AND - 284)) | (1L << (BIT_OR - 284)) | (1L << (BIT_XOR - 284)) | (1L << (COUNT - 284)) | (1L << (CUME_DIST - 284)) | (1L << (DENSE_RANK - 284)) | (1L << (FIRST_VALUE - 284)) | (1L << (GROUP_CONCAT - 284)) | (1L << (LAG - 284)) | (1L << (LAST_VALUE - 284)) | (1L << (LEAD - 284)) | (1L << (MAX - 284)) | (1L << (MIN - 284)) | (1L << (NTILE - 284)) | (1L << (NTH_VALUE - 284)) | (1L << (PERCENT_RANK - 284)) | (1L << (RANK - 284)) | (1L << (ROW_NUMBER - 284)) | (1L << (STD - 284)) | (1L << (STDDEV - 284)) | (1L << (STDDEV_POP - 284)) | (1L << (STDDEV_SAMP - 284)) | (1L << (SUM - 284)) | (1L << (VAR_POP - 284)) | (1L << (VAR_SAMP - 284)) | (1L << (VARIANCE - 284)) | (1L << (CURRENT_DATE - 284)) | (1L << (CURRENT_TIME - 284)) | (1L << (CURRENT_TIMESTAMP - 284)) | (1L << (LOCALTIME - 284)) | (1L << (CURDATE - 284)) | (1L << (CURTIME - 284)) | (1L << (DATE_ADD - 284)) | (1L << (DATE_SUB - 284)) | (1L << (LOCALTIMESTAMP - 284)) | (1L << (NOW - 284)) | (1L << (POSITION - 284)) | (1L << (SUBSTR - 284)) | (1L << (SUBSTRING - 284)) | (1L << (SYSDATE - 284)) | (1L << (TRIM - 284)) | (1L << (UTC_DATE - 284)) | (1L << (UTC_TIME - 284)) | (1L << (UTC_TIMESTAMP - 284)) | (1L << (ACCOUNT - 284)) | (1L << (ACTION - 284)) | (1L << (AFTER - 284)) | (1L << (AGGREGATE - 284)) | (1L << (ALGORITHM - 284)) | (1L << (ANY - 284)) | (1L << (AT - 284)) | (1L << (AUTHORS - 284)) | (1L << (AUTOCOMMIT - 284)) | (1L << (AUTOEXTEND_SIZE - 284)) | (1L << (AUTO_INCREMENT - 284)) | (1L << (AVG_ROW_LENGTH - 284)) | (1L << (BEGIN - 284)))) != 0) || ((((_la - 348)) & ~0x3f) == 0 && ((1L << (_la - 348)) & ((1L << (BINLOG - 348)) | (1L << (BIT - 348)) | (1L << (BLOCK - 348)) | (1L << (BOOL - 348)) | (1L << (BOOLEAN - 348)) | (1L << (BTREE - 348)) | (1L << (CACHE - 348)) | (1L << (CASCADED - 348)) | (1L << (CHAIN - 348)) | (1L << (CHANGED - 348)) | (1L << (CHANNEL - 348)) | (1L << (CHECKSUM - 348)) | (1L << (PAGE_CHECKSUM - 348)) | (1L << (CIPHER - 348)) | (1L << (CLASS_ORIGIN - 348)) | (1L << (CLIENT - 348)) | (1L << (CLOSE - 348)) | (1L << (CLUSTERING - 348)) | (1L << (COALESCE - 348)) | (1L << (CODE - 348)) | (1L << (COLUMNS - 348)) | (1L << (COLUMN_FORMAT - 348)) | (1L << (COLUMN_NAME - 348)) | (1L << (COMMENT - 348)) | (1L << (COMMIT - 348)) | (1L << (COMPACT - 348)) | (1L << (COMPLETION - 348)) | (1L << (COMPRESSED - 348)) | (1L << (COMPRESSION - 348)) | (1L << (CONCURRENT - 348)) | (1L << (CONNECT - 348)) | (1L << (CONNECTION - 348)) | (1L << (CONSISTENT - 348)) | (1L << (CONSTRAINT_CATALOG - 348)) | (1L << (CONSTRAINT_SCHEMA - 348)) | (1L << (CONSTRAINT_NAME - 348)) | (1L << (CONTAINS - 348)) | (1L << (CONTEXT - 348)) | (1L << (CONTRIBUTORS - 348)) | (1L << (COPY - 348)) | (1L << (CPU - 348)) | (1L << (CYCLE - 348)) | (1L << (CURSOR_NAME - 348)) | (1L << (DATA - 348)) | (1L << (DATAFILE - 348)) | (1L << (DEALLOCATE - 348)) | (1L << (DEFAULT_AUTH - 348)) | (1L << (DEFINER - 348)) | (1L << (DELAY_KEY_WRITE - 348)) | (1L << (DES_KEY_FILE - 348)) | (1L << (DIRECTORY - 348)) | (1L << (DISABLE - 348)) | (1L << (DISCARD - 348)) | (1L << (DISK - 348)) | (1L << (DO - 348)) | (1L << (DUMPFILE - 348)) | (1L << (DUPLICATE - 348)) | (1L << (DYNAMIC - 348)) | (1L << (ENABLE - 348)) | (1L << (ENCRYPTED - 348)) | (1L << (ENCRYPTION - 348)) | (1L << (ENCRYPTION_KEY_ID - 348)) | (1L << (END - 348)) | (1L << (ENDS - 348)))) != 0) || ((((_la - 412)) & ~0x3f) == 0 && ((1L << (_la - 412)) & ((1L << (ENGINE - 412)) | (1L << (ENGINES - 412)) | (1L << (ERROR - 412)) | (1L << (ERRORS - 412)) | (1L << (ESCAPE - 412)) | (1L << (EVEN - 412)) | (1L << (EVENT - 412)) | (1L << (EVENTS - 412)) | (1L << (EVERY - 412)) | (1L << (EXCHANGE - 412)) | (1L << (EXCLUSIVE - 412)) | (1L << (EXPIRE - 412)) | (1L << (EXPORT - 412)) | (1L << (EXTENDED - 412)) | (1L << (EXTENT_SIZE - 412)) | (1L << (FAILED_LOGIN_ATTEMPTS - 412)) | (1L << (FAST - 412)) | (1L << (FAULTS - 412)) | (1L << (FIELDS - 412)) | (1L << (FILE_BLOCK_SIZE - 412)) | (1L << (FILTER - 412)) | (1L << (FIRST - 412)) | (1L << (FIXED - 412)) | (1L << (FLUSH - 412)) | (1L << (FOLLOWS - 412)) | (1L << (FOUND - 412)) | (1L << (FULL - 412)) | (1L << (FUNCTION - 412)) | (1L << (GENERAL - 412)) | (1L << (GLOBAL - 412)) | (1L << (GRANTS - 412)) | (1L << (GROUP_REPLICATION - 412)) | (1L << (HANDLER - 412)) | (1L << (HASH - 412)) | (1L << (HELP - 412)) | (1L << (HISTORY - 412)) | (1L << (HOST - 412)) | (1L << (HOSTS - 412)) | (1L << (IDENTIFIED - 412)) | (1L << (IGNORE_SERVER_IDS - 412)) | (1L << (IMPORT - 412)) | (1L << (INCREMENT - 412)) | (1L << (INDEXES - 412)) | (1L << (INITIAL_SIZE - 412)) | (1L << (INPLACE - 412)) | (1L << (INSERT_METHOD - 412)) | (1L << (INSTALL - 412)) | (1L << (INSTANCE - 412)) | (1L << (INSTANT - 412)) | (1L << (INVISIBLE - 412)) | (1L << (INVOKER - 412)) | (1L << (IO - 412)) | (1L << (IO_THREAD - 412)) | (1L << (IPC - 412)) | (1L << (ISOLATION - 412)) | (1L << (ISSUER - 412)) | (1L << (JSON - 412)) | (1L << (KEY_BLOCK_SIZE - 412)) | (1L << (LANGUAGE - 412)) | (1L << (LAST - 412)) | (1L << (LEAVES - 412)) | (1L << (LESS - 412)) | (1L << (LEVEL - 412)))) != 0) || ((((_la - 476)) & ~0x3f) == 0 && ((1L << (_la - 476)) & ((1L << (LIST - 476)) | (1L << (LOCAL - 476)) | (1L << (LOGFILE - 476)) | (1L << (LOGS - 476)) | (1L << (MASTER - 476)) | (1L << (MASTER_AUTO_POSITION - 476)) | (1L << (MASTER_CONNECT_RETRY - 476)) | (1L << (MASTER_DELAY - 476)) | (1L << (MASTER_HEARTBEAT_PERIOD - 476)) | (1L << (MASTER_HOST - 476)) | (1L << (MASTER_LOG_FILE - 476)) | (1L << (MASTER_LOG_POS - 476)) | (1L << (MASTER_PASSWORD - 476)) | (1L << (MASTER_PORT - 476)) | (1L << (MASTER_RETRY_COUNT - 476)) | (1L << (MASTER_SSL - 476)) | (1L << (MASTER_SSL_CA - 476)) | (1L << (MASTER_SSL_CAPATH - 476)) | (1L << (MASTER_SSL_CERT - 476)) | (1L << (MASTER_SSL_CIPHER - 476)) | (1L << (MASTER_SSL_CRL - 476)) | (1L << (MASTER_SSL_CRLPATH - 476)) | (1L << (MASTER_SSL_KEY - 476)) | (1L << (MASTER_TLS_VERSION - 476)) | (1L << (MASTER_USER - 476)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 476)) | (1L << (MAX_QUERIES_PER_HOUR - 476)) | (1L << (MAX_ROWS - 476)) | (1L << (MAX_SIZE - 476)) | (1L << (MAX_UPDATES_PER_HOUR - 476)) | (1L << (MAX_USER_CONNECTIONS - 476)) | (1L << (MEDIUM - 476)) | (1L << (MEMBER - 476)) | (1L << (MERGE - 476)) | (1L << (MESSAGE_TEXT - 476)) | (1L << (MID - 476)) | (1L << (MIGRATE - 476)) | (1L << (MIN_ROWS - 476)) | (1L << (MODE - 476)) | (1L << (MODIFY - 476)) | (1L << (MUTEX - 476)) | (1L << (MYSQL - 476)) | (1L << (MYSQL_ERRNO - 476)) | (1L << (NAME - 476)) | (1L << (NAMES - 476)) | (1L << (NCHAR - 476)) | (1L << (NEVER - 476)) | (1L << (NEXT - 476)) | (1L << (NO - 476)) | (1L << (NOCACHE - 476)) | (1L << (NOCOPY - 476)) | (1L << (NOCYCLE - 476)) | (1L << (NOMAXVALUE - 476)) | (1L << (NOMINVALUE - 476)) | (1L << (NOWAIT - 476)) | (1L << (NODEGROUP - 476)) | (1L << (NONE - 476)) | (1L << (ODBC - 476)) | (1L << (OFFLINE - 476)) | (1L << (OFFSET - 476)) | (1L << (OF - 476)) | (1L << (OJ - 476)) | (1L << (OLD_PASSWORD - 476)) | (1L << (ONE - 476)))) != 0) || ((((_la - 540)) & ~0x3f) == 0 && ((1L << (_la - 540)) & ((1L << (ONLINE - 540)) | (1L << (ONLY - 540)) | (1L << (OPEN - 540)) | (1L << (OPTIMIZER_COSTS - 540)) | (1L << (OPTIONS - 540)) | (1L << (OWNER - 540)) | (1L << (PACK_KEYS - 540)) | (1L << (PAGE - 540)) | (1L << (PARSER - 540)) | (1L << (PARTIAL - 540)) | (1L << (PARTITIONING - 540)) | (1L << (PARTITIONS - 540)) | (1L << (PASSWORD - 540)) | (1L << (PASSWORD_LOCK_TIME - 540)) | (1L << (PHASE - 540)) | (1L << (PLUGIN - 540)) | (1L << (PLUGIN_DIR - 540)) | (1L << (PLUGINS - 540)) | (1L << (PORT - 540)) | (1L << (PRECEDES - 540)) | (1L << (PREPARE - 540)) | (1L << (PRESERVE - 540)) | (1L << (PREV - 540)) | (1L << (PROCESSLIST - 540)) | (1L << (PROFILE - 540)) | (1L << (PROFILES - 540)) | (1L << (PROXY - 540)) | (1L << (QUERY - 540)) | (1L << (QUICK - 540)) | (1L << (REBUILD - 540)) | (1L << (RECOVER - 540)) | (1L << (RECURSIVE - 540)) | (1L << (REDO_BUFFER_SIZE - 540)) | (1L << (REDUNDANT - 540)) | (1L << (RELAY - 540)) | (1L << (RELAY_LOG_FILE - 540)) | (1L << (RELAY_LOG_POS - 540)) | (1L << (RELAYLOG - 540)) | (1L << (REMOVE - 540)) | (1L << (REORGANIZE - 540)) | (1L << (REPAIR - 540)) | (1L << (REPLICATE_DO_DB - 540)) | (1L << (REPLICATE_DO_TABLE - 540)) | (1L << (REPLICATE_IGNORE_DB - 540)) | (1L << (REPLICATE_IGNORE_TABLE - 540)) | (1L << (REPLICATE_REWRITE_DB - 540)) | (1L << (REPLICATE_WILD_DO_TABLE - 540)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 540)) | (1L << (REPLICATION - 540)) | (1L << (RESET - 540)) | (1L << (RESTART - 540)) | (1L << (RESUME - 540)) | (1L << (RETURNED_SQLSTATE - 540)) | (1L << (RETURNING - 540)) | (1L << (RETURNS - 540)) | (1L << (REUSE - 540)) | (1L << (ROLE - 540)) | (1L << (ROLLBACK - 540)) | (1L << (ROLLUP - 540)) | (1L << (ROTATE - 540)) | (1L << (ROW - 540)))) != 0) || ((((_la - 604)) & ~0x3f) == 0 && ((1L << (_la - 604)) & ((1L << (ROWS - 604)) | (1L << (ROW_FORMAT - 604)) | (1L << (RTREE - 604)) | (1L << (SAVEPOINT - 604)) | (1L << (SCHEDULE - 604)) | (1L << (SECURITY - 604)) | (1L << (SEQUENCE - 604)) | (1L << (SERVER - 604)) | (1L << (SESSION - 604)) | (1L << (SHARE - 604)) | (1L << (SHARED - 604)) | (1L << (SIGNED - 604)) | (1L << (SIMPLE - 604)) | (1L << (SLAVE - 604)) | (1L << (SLOW - 604)) | (1L << (SNAPSHOT - 604)) | (1L << (SOCKET - 604)) | (1L << (SOME - 604)) | (1L << (SONAME - 604)) | (1L << (SOUNDS - 604)) | (1L << (SOURCE - 604)) | (1L << (SQL_AFTER_GTIDS - 604)) | (1L << (SQL_AFTER_MTS_GAPS - 604)) | (1L << (SQL_BEFORE_GTIDS - 604)) | (1L << (SQL_BUFFER_RESULT - 604)) | (1L << (SQL_CACHE - 604)) | (1L << (SQL_NO_CACHE - 604)) | (1L << (SQL_THREAD - 604)) | (1L << (START - 604)) | (1L << (STARTS - 604)) | (1L << (STATS_AUTO_RECALC - 604)) | (1L << (STATS_PERSISTENT - 604)) | (1L << (STATS_SAMPLE_PAGES - 604)) | (1L << (STATUS - 604)) | (1L << (STOP - 604)) | (1L << (STORAGE - 604)) | (1L << (STRING - 604)) | (1L << (SUBCLASS_ORIGIN - 604)) | (1L << (SUBJECT - 604)) | (1L << (SUBPARTITION - 604)) | (1L << (SUBPARTITIONS - 604)) | (1L << (SUSPEND - 604)) | (1L << (SWAPS - 604)) | (1L << (SWITCHES - 604)) | (1L << (TABLE_NAME - 604)) | (1L << (TABLESPACE - 604)) | (1L << (TABLE_TYPE - 604)) | (1L << (TEMPORARY - 604)) | (1L << (TEMPTABLE - 604)) | (1L << (THAN - 604)) | (1L << (TRADITIONAL - 604)) | (1L << (TRANSACTION - 604)) | (1L << (TRANSACTIONAL - 604)) | (1L << (TRIGGERS - 604)) | (1L << (TRUNCATE - 604)) | (1L << (UNBOUNDED - 604)) | (1L << (UNDEFINED - 604)) | (1L << (UNDOFILE - 604)) | (1L << (UNDO_BUFFER_SIZE - 604)) | (1L << (UNINSTALL - 604)) | (1L << (UNKNOWN - 604)) | (1L << (UNTIL - 604)) | (1L << (UPGRADE - 604)))) != 0) || ((((_la - 668)) & ~0x3f) == 0 && ((1L << (_la - 668)) & ((1L << (USER - 668)) | (1L << (USE_FRM - 668)) | (1L << (USER_RESOURCES - 668)) | (1L << (VALIDATION - 668)) | (1L << (VALUE - 668)) | (1L << (VARIABLES - 668)) | (1L << (VIEW - 668)) | (1L << (VIRTUAL - 668)) | (1L << (VISIBLE - 668)) | (1L << (WAIT - 668)) | (1L << (WARNINGS - 668)) | (1L << (WITHOUT - 668)) | (1L << (WORK - 668)) | (1L << (WRAPPER - 668)) | (1L << (X509 - 668)) | (1L << (XA - 668)) | (1L << (XML - 668)) | (1L << (YES - 668)) | (1L << (EUR - 668)) | (1L << (USA - 668)) | (1L << (JIS - 668)) | (1L << (ISO - 668)) | (1L << (INTERNAL - 668)) | (1L << (QUARTER - 668)) | (1L << (MONTH - 668)) | (1L << (DAY - 668)) | (1L << (HOUR - 668)) | (1L << (MINUTE - 668)) | (1L << (WEEK - 668)) | (1L << (SECOND - 668)) | (1L << (MICROSECOND - 668)) | (1L << (USER_STATISTICS - 668)) | (1L << (CLIENT_STATISTICS - 668)) | (1L << (INDEX_STATISTICS - 668)) | (1L << (TABLE_STATISTICS - 668)) | (1L << (FIREWALL_RULES - 668)) | (1L << (ADMIN - 668)) | (1L << (APPLICATION_PASSWORD_ADMIN - 668)) | (1L << (AUDIT_ADMIN - 668)) | (1L << (AUDIT_ABORT_EXEMPT - 668)) | (1L << (AUTHENTICATION_POLICY_ADMIN - 668)) | (1L << (BACKUP_ADMIN - 668)) | (1L << (BINLOG_ADMIN - 668)) | (1L << (BINLOG_ENCRYPTION_ADMIN - 668)) | (1L << (CLONE_ADMIN - 668)) | (1L << (CONNECTION_ADMIN - 668)) | (1L << (ENCRYPTION_KEY_ADMIN - 668)) | (1L << (EXECUTE - 668)) | (1L << (FILE - 668)) | (1L << (FIREWALL_ADMIN - 668)) | (1L << (FIREWALL_EXEMPT - 668)) | (1L << (FIREWALL_USER - 668)) | (1L << (FLUSH_OPTIMIZER_COSTS - 668)) | (1L << (FLUSH_STATUS - 668)) | (1L << (FLUSH_TABLES - 668)) | (1L << (FLUSH_USER_RESOURCES - 668)) | (1L << (GROUP_REPLICATION_ADMIN - 668)) | (1L << (INNODB_REDO_LOG_ARCHIVE - 668)) | (1L << (INNODB_REDO_LOG_ENABLE - 668)) | (1L << (INVOKE - 668)) | (1L << (LAMBDA - 668)) | (1L << (NDB_STORED_USER - 668)) | (1L << (PASSWORDLESS_USER_ADMIN - 668)))) != 0) || ((((_la - 732)) & ~0x3f) == 0 && ((1L << (_la - 732)) & ((1L << (PERSIST_RO_VARIABLES_ADMIN - 732)) | (1L << (PRIVILEGES - 732)) | (1L << (PROCESS - 732)) | (1L << (RELOAD - 732)) | (1L << (REPLICATION_APPLIER - 732)) | (1L << (REPLICATION_SLAVE_ADMIN - 732)) | (1L << (RESOURCE_GROUP_ADMIN - 732)) | (1L << (RESOURCE_GROUP_USER - 732)) | (1L << (ROLE_ADMIN - 732)) | (1L << (ROUTINE - 732)) | (1L << (S3 - 732)) | (1L << (SESSION_VARIABLES_ADMIN - 732)) | (1L << (SET_USER_ID - 732)) | (1L << (SHOW_ROUTINE - 732)) | (1L << (SHUTDOWN - 732)) | (1L << (SUPER - 732)) | (1L << (SYSTEM_VARIABLES_ADMIN - 732)) | (1L << (TABLES - 732)) | (1L << (TABLE_ENCRYPTION_ADMIN - 732)) | (1L << (VERSION_TOKEN_ADMIN - 732)) | (1L << (XA_RECOVER_ADMIN - 732)) | (1L << (ARMSCII8 - 732)) | (1L << (ASCII - 732)) | (1L << (BIG5 - 732)) | (1L << (CP1250 - 732)) | (1L << (CP1251 - 732)) | (1L << (CP1256 - 732)) | (1L << (CP1257 - 732)) | (1L << (CP850 - 732)) | (1L << (CP852 - 732)) | (1L << (CP866 - 732)) | (1L << (CP932 - 732)) | (1L << (DEC8 - 732)) | (1L << (EUCJPMS - 732)) | (1L << (EUCKR - 732)) | (1L << (GB18030 - 732)) | (1L << (GB2312 - 732)) | (1L << (GBK - 732)) | (1L << (GEOSTD8 - 732)) | (1L << (GREEK - 732)) | (1L << (HEBREW - 732)) | (1L << (HP8 - 732)) | (1L << (KEYBCS2 - 732)) | (1L << (KOI8R - 732)) | (1L << (KOI8U - 732)) | (1L << (LATIN1 - 732)) | (1L << (LATIN2 - 732)) | (1L << (LATIN5 - 732)) | (1L << (LATIN7 - 732)) | (1L << (MACCE - 732)) | (1L << (MACROMAN - 732)) | (1L << (SJIS - 732)) | (1L << (SWE7 - 732)) | (1L << (TIS620 - 732)) | (1L << (UCS2 - 732)) | (1L << (UJIS - 732)) | (1L << (UTF16 - 732)) | (1L << (UTF16LE - 732)) | (1L << (UTF32 - 732)) | (1L << (UTF8 - 732)) | (1L << (UTF8MB3 - 732)) | (1L << (UTF8MB4 - 732)) | (1L << (ARCHIVE - 732)))) != 0) || ((((_la - 796)) & ~0x3f) == 0 && ((1L << (_la - 796)) & ((1L << (BLACKHOLE - 796)) | (1L << (CSV - 796)) | (1L << (FEDERATED - 796)) | (1L << (INNODB - 796)) | (1L << (MEMORY - 796)) | (1L << (MRG_MYISAM - 796)) | (1L << (MYISAM - 796)) | (1L << (NDB - 796)) | (1L << (NDBCLUSTER - 796)) | (1L << (PERFORMANCE_SCHEMA - 796)) | (1L << (TOKUDB - 796)) | (1L << (REPEATABLE - 796)) | (1L << (COMMITTED - 796)) | (1L << (UNCOMMITTED - 796)) | (1L << (SERIALIZABLE - 796)) | (1L << (GEOMETRYCOLLECTION - 796)) | (1L << (GEOMETRY - 796)) | (1L << (LINESTRING - 796)) | (1L << (MULTILINESTRING - 796)) | (1L << (MULTIPOINT - 796)) | (1L << (MULTIPOLYGON - 796)) | (1L << (POINT - 796)) | (1L << (POLYGON - 796)) | (1L << (ABS - 796)) | (1L << (ACOS - 796)) | (1L << (ADDDATE - 796)) | (1L << (ADDTIME - 796)) | (1L << (AES_DECRYPT - 796)) | (1L << (AES_ENCRYPT - 796)) | (1L << (AREA - 796)) | (1L << (ASBINARY - 796)) | (1L << (ASIN - 796)) | (1L << (ASTEXT - 796)) | (1L << (ASWKB - 796)) | (1L << (ASWKT - 796)) | (1L << (ASYMMETRIC_DECRYPT - 796)) | (1L << (ASYMMETRIC_DERIVE - 796)) | (1L << (ASYMMETRIC_ENCRYPT - 796)) | (1L << (ASYMMETRIC_SIGN - 796)) | (1L << (ASYMMETRIC_VERIFY - 796)) | (1L << (ATAN - 796)) | (1L << (ATAN2 - 796)) | (1L << (BENCHMARK - 796)) | (1L << (BIN - 796)) | (1L << (BIT_COUNT - 796)) | (1L << (BIT_LENGTH - 796)) | (1L << (BUFFER - 796)) | (1L << (CATALOG_NAME - 796)) | (1L << (CEIL - 796)) | (1L << (CEILING - 796)) | (1L << (CENTROID - 796)) | (1L << (CHARACTER_LENGTH - 796)) | (1L << (CHARSET - 796)) | (1L << (CHAR_LENGTH - 796)) | (1L << (COERCIBILITY - 796)) | (1L << (COLLATION - 796)) | (1L << (COMPRESS - 796)) | (1L << (CONCAT - 796)) | (1L << (CONCAT_WS - 796)) | (1L << (CONNECTION_ID - 796)) | (1L << (CONV - 796)) | (1L << (CONVERT_TZ - 796)) | (1L << (COS - 796)))) != 0) || ((((_la - 860)) & ~0x3f) == 0 && ((1L << (_la - 860)) & ((1L << (COT - 860)) | (1L << (CRC32 - 860)) | (1L << (CREATE_ASYMMETRIC_PRIV_KEY - 860)) | (1L << (CREATE_ASYMMETRIC_PUB_KEY - 860)) | (1L << (CREATE_DH_PARAMETERS - 860)) | (1L << (CREATE_DIGEST - 860)) | (1L << (CROSSES - 860)) | (1L << (DATEDIFF - 860)) | (1L << (DATE_FORMAT - 860)) | (1L << (DAYNAME - 860)) | (1L << (DAYOFMONTH - 860)) | (1L << (DAYOFWEEK - 860)) | (1L << (DAYOFYEAR - 860)) | (1L << (DECODE - 860)) | (1L << (DEGREES - 860)) | (1L << (DES_DECRYPT - 860)) | (1L << (DES_ENCRYPT - 860)) | (1L << (DIMENSION - 860)) | (1L << (DISJOINT - 860)) | (1L << (ELT - 860)) | (1L << (ENCODE - 860)) | (1L << (ENCRYPT - 860)) | (1L << (ENDPOINT - 860)) | (1L << (ENGINE_ATTRIBUTE - 860)) | (1L << (ENVELOPE - 860)) | (1L << (EQUALS - 860)) | (1L << (EXP - 860)) | (1L << (EXPORT_SET - 860)) | (1L << (EXTERIORRING - 860)) | (1L << (EXTRACTVALUE - 860)) | (1L << (FIELD - 860)) | (1L << (FIND_IN_SET - 860)) | (1L << (FLOOR - 860)) | (1L << (FORMAT - 860)) | (1L << (FOUND_ROWS - 860)) | (1L << (FROM_BASE64 - 860)) | (1L << (FROM_DAYS - 860)) | (1L << (FROM_UNIXTIME - 860)) | (1L << (GEOMCOLLFROMTEXT - 860)) | (1L << (GEOMCOLLFROMWKB - 860)) | (1L << (GEOMETRYCOLLECTIONFROMTEXT - 860)) | (1L << (GEOMETRYCOLLECTIONFROMWKB - 860)) | (1L << (GEOMETRYFROMTEXT - 860)) | (1L << (GEOMETRYFROMWKB - 860)) | (1L << (GEOMETRYN - 860)) | (1L << (GEOMETRYTYPE - 860)) | (1L << (GEOMFROMTEXT - 860)) | (1L << (GEOMFROMWKB - 860)) | (1L << (GET_FORMAT - 860)) | (1L << (GET_LOCK - 860)) | (1L << (GLENGTH - 860)) | (1L << (GREATEST - 860)) | (1L << (GTID_SUBSET - 860)) | (1L << (GTID_SUBTRACT - 860)) | (1L << (HEX - 860)) | (1L << (IFNULL - 860)) | (1L << (INET6_ATON - 860)) | (1L << (INET6_NTOA - 860)) | (1L << (INET_ATON - 860)) | (1L << (INET_NTOA - 860)) | (1L << (INSTR - 860)) | (1L << (INTERIORRINGN - 860)) | (1L << (INTERSECTS - 860)) | (1L << (ISCLOSED - 860)))) != 0) || ((((_la - 924)) & ~0x3f) == 0 && ((1L << (_la - 924)) & ((1L << (ISEMPTY - 924)) | (1L << (ISNULL - 924)) | (1L << (ISSIMPLE - 924)) | (1L << (IS_FREE_LOCK - 924)) | (1L << (IS_IPV4 - 924)) | (1L << (IS_IPV4_COMPAT - 924)) | (1L << (IS_IPV4_MAPPED - 924)) | (1L << (IS_IPV6 - 924)) | (1L << (IS_USED_LOCK - 924)) | (1L << (LAST_INSERT_ID - 924)) | (1L << (LCASE - 924)) | (1L << (LEAST - 924)) | (1L << (LENGTH - 924)) | (1L << (LINEFROMTEXT - 924)) | (1L << (LINEFROMWKB - 924)) | (1L << (LINESTRINGFROMTEXT - 924)) | (1L << (LINESTRINGFROMWKB - 924)) | (1L << (LN - 924)) | (1L << (LOAD_FILE - 924)) | (1L << (LOCATE - 924)) | (1L << (LOG - 924)) | (1L << (LOG10 - 924)) | (1L << (LOG2 - 924)) | (1L << (LOWER - 924)) | (1L << (LPAD - 924)) | (1L << (LTRIM - 924)) | (1L << (MAKEDATE - 924)) | (1L << (MAKETIME - 924)) | (1L << (MAKE_SET - 924)) | (1L << (MASTER_POS_WAIT - 924)) | (1L << (MBRCONTAINS - 924)) | (1L << (MBRDISJOINT - 924)) | (1L << (MBREQUAL - 924)) | (1L << (MBRINTERSECTS - 924)) | (1L << (MBROVERLAPS - 924)) | (1L << (MBRTOUCHES - 924)) | (1L << (MBRWITHIN - 924)) | (1L << (MD5 - 924)) | (1L << (MLINEFROMTEXT - 924)) | (1L << (MLINEFROMWKB - 924)) | (1L << (MONTHNAME - 924)) | (1L << (MPOINTFROMTEXT - 924)) | (1L << (MPOINTFROMWKB - 924)) | (1L << (MPOLYFROMTEXT - 924)) | (1L << (MPOLYFROMWKB - 924)) | (1L << (MULTILINESTRINGFROMTEXT - 924)) | (1L << (MULTILINESTRINGFROMWKB - 924)) | (1L << (MULTIPOINTFROMTEXT - 924)) | (1L << (MULTIPOINTFROMWKB - 924)) | (1L << (MULTIPOLYGONFROMTEXT - 924)) | (1L << (MULTIPOLYGONFROMWKB - 924)) | (1L << (NAME_CONST - 924)) | (1L << (NULLIF - 924)) | (1L << (NUMGEOMETRIES - 924)) | (1L << (NUMINTERIORRINGS - 924)) | (1L << (NUMPOINTS - 924)) | (1L << (OCT - 924)) | (1L << (OCTET_LENGTH - 924)) | (1L << (ORD - 924)) | (1L << (OVERLAPS - 924)) | (1L << (PERIOD_ADD - 924)) | (1L << (PERIOD_DIFF - 924)) | (1L << (PI - 924)) | (1L << (POINTFROMTEXT - 924)))) != 0) || ((((_la - 988)) & ~0x3f) == 0 && ((1L << (_la - 988)) & ((1L << (POINTFROMWKB - 988)) | (1L << (POINTN - 988)) | (1L << (POLYFROMTEXT - 988)) | (1L << (POLYFROMWKB - 988)) | (1L << (POLYGONFROMTEXT - 988)) | (1L << (POLYGONFROMWKB - 988)) | (1L << (POW - 988)) | (1L << (POWER - 988)) | (1L << (QUOTE - 988)) | (1L << (RADIANS - 988)) | (1L << (RAND - 988)) | (1L << (RANDOM - 988)) | (1L << (RANDOM_BYTES - 988)) | (1L << (RELEASE_LOCK - 988)) | (1L << (REVERSE - 988)) | (1L << (ROUND - 988)) | (1L << (ROW_COUNT - 988)) | (1L << (RPAD - 988)) | (1L << (RTRIM - 988)) | (1L << (SEC_TO_TIME - 988)) | (1L << (SECONDARY_ENGINE_ATTRIBUTE - 988)) | (1L << (SENSITIVE_VARIABLES_OBSERVER - 988)) | (1L << (SESSION_USER - 988)) | (1L << (SHA - 988)) | (1L << (SHA1 - 988)) | (1L << (SHA2 - 988)) | (1L << (SCHEMA_NAME - 988)) | (1L << (SIGN - 988)) | (1L << (SIN - 988)) | (1L << (SLEEP - 988)) | (1L << (SOUNDEX - 988)) | (1L << (SQL_THREAD_WAIT_AFTER_GTIDS - 988)) | (1L << (SQRT - 988)) | (1L << (SRID - 988)) | (1L << (STARTPOINT - 988)) | (1L << (STRCMP - 988)) | (1L << (STR_TO_DATE - 988)) | (1L << (ST_AREA - 988)) | (1L << (ST_ASBINARY - 988)) | (1L << (ST_ASTEXT - 988)) | (1L << (ST_ASWKB - 988)) | (1L << (ST_ASWKT - 988)) | (1L << (ST_BUFFER - 988)) | (1L << (ST_CENTROID - 988)) | (1L << (ST_CONTAINS - 988)) | (1L << (ST_CROSSES - 988)) | (1L << (ST_DIFFERENCE - 988)) | (1L << (ST_DIMENSION - 988)) | (1L << (ST_DISJOINT - 988)) | (1L << (ST_DISTANCE - 988)) | (1L << (ST_ENDPOINT - 988)) | (1L << (ST_ENVELOPE - 988)) | (1L << (ST_EQUALS - 988)) | (1L << (ST_EXTERIORRING - 988)) | (1L << (ST_GEOMCOLLFROMTEXT - 988)) | (1L << (ST_GEOMCOLLFROMTXT - 988)) | (1L << (ST_GEOMCOLLFROMWKB - 988)) | (1L << (ST_GEOMETRYCOLLECTIONFROMTEXT - 988)) | (1L << (ST_GEOMETRYCOLLECTIONFROMWKB - 988)) | (1L << (ST_GEOMETRYFROMTEXT - 988)) | (1L << (ST_GEOMETRYFROMWKB - 988)) | (1L << (ST_GEOMETRYN - 988)) | (1L << (ST_GEOMETRYTYPE - 988)) | (1L << (ST_GEOMFROMTEXT - 988)))) != 0) || ((((_la - 1052)) & ~0x3f) == 0 && ((1L << (_la - 1052)) & ((1L << (ST_GEOMFROMWKB - 1052)) | (1L << (ST_INTERIORRINGN - 1052)) | (1L << (ST_INTERSECTION - 1052)) | (1L << (ST_INTERSECTS - 1052)) | (1L << (ST_ISCLOSED - 1052)) | (1L << (ST_ISEMPTY - 1052)) | (1L << (ST_ISSIMPLE - 1052)) | (1L << (ST_LINEFROMTEXT - 1052)) | (1L << (ST_LINEFROMWKB - 1052)) | (1L << (ST_LINESTRINGFROMTEXT - 1052)) | (1L << (ST_LINESTRINGFROMWKB - 1052)) | (1L << (ST_NUMGEOMETRIES - 1052)) | (1L << (ST_NUMINTERIORRING - 1052)) | (1L << (ST_NUMINTERIORRINGS - 1052)) | (1L << (ST_NUMPOINTS - 1052)) | (1L << (ST_OVERLAPS - 1052)) | (1L << (ST_POINTFROMTEXT - 1052)) | (1L << (ST_POINTFROMWKB - 1052)) | (1L << (ST_POINTN - 1052)) | (1L << (ST_POLYFROMTEXT - 1052)) | (1L << (ST_POLYFROMWKB - 1052)) | (1L << (ST_POLYGONFROMTEXT - 1052)) | (1L << (ST_POLYGONFROMWKB - 1052)) | (1L << (ST_SRID - 1052)) | (1L << (ST_STARTPOINT - 1052)) | (1L << (ST_SYMDIFFERENCE - 1052)) | (1L << (ST_TOUCHES - 1052)) | (1L << (ST_UNION - 1052)) | (1L << (ST_WITHIN - 1052)) | (1L << (ST_X - 1052)) | (1L << (ST_Y - 1052)) | (1L << (SUBDATE - 1052)) | (1L << (SUBSTRING_INDEX - 1052)) | (1L << (SUBTIME - 1052)) | (1L << (SYSTEM_USER - 1052)) | (1L << (SYSTEM - 1052)) | (1L << (TAN - 1052)) | (1L << (TELEMETRY_LOG_ADMIN - 1052)) | (1L << (TIMEDIFF - 1052)) | (1L << (TIMESTAMPADD - 1052)) | (1L << (TIMESTAMPDIFF - 1052)) | (1L << (TIME_FORMAT - 1052)) | (1L << (TIME_TO_SEC - 1052)) | (1L << (TOUCHES - 1052)) | (1L << (TO_BASE64 - 1052)) | (1L << (TO_DAYS - 1052)) | (1L << (TO_SECONDS - 1052)) | (1L << (TP_CONNECTION_ADMIN - 1052)) | (1L << (UCASE - 1052)) | (1L << (UNCOMPRESS - 1052)) | (1L << (UNCOMPRESSED_LENGTH - 1052)) | (1L << (UNHEX - 1052)) | (1L << (UNIX_TIMESTAMP - 1052)) | (1L << (UPDATEXML - 1052)) | (1L << (UPPER - 1052)) | (1L << (UUID - 1052)) | (1L << (UUID_SHORT - 1052)) | (1L << (VALIDATE_PASSWORD_STRENGTH - 1052)) | (1L << (VERSION - 1052)) | (1L << (VERSIONING - 1052)) | (1L << (WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS - 1052)) | (1L << (WEEKDAY - 1052)) | (1L << (WEEKOFYEAR - 1052)) | (1L << (WEIGHT_STRING - 1052)))) != 0) || ((((_la - 1116)) & ~0x3f) == 0 && ((1L << (_la - 1116)) & ((1L << (WITHIN - 1116)) | (1L << (YEARWEEK - 1116)) | (1L << (Y_FUNCTION - 1116)) | (1L << (X_FUNCTION - 1116)) | (1L << (VIA - 1116)) | (1L << (LASTVAL - 1116)) | (1L << (NEXTVAL - 1116)) | (1L << (SETVAL - 1116)) | (1L << (PREVIOUS - 1116)) | (1L << (PERSISTENT - 1116)) | (1L << (BINLOG_MONITOR - 1116)) | (1L << (BINLOG_REPLAY - 1116)) | (1L << (FEDERATED_ADMIN - 1116)) | (1L << (READ_ONLY_ADMIN - 1116)) | (1L << (REPLICA - 1116)) | (1L << (REPLICATION_MASTER_ADMIN - 1116)) | (1L << (MONITOR - 1116)) | (1L << (READ_ONLY - 1116)) | (1L << (REPLAY - 1116)) | (1L << (MOD - 1116)) | (1L << (CHARSET_REVERSE_QOUTE_STRING - 1116)) | (1L << (STRING_LITERAL - 1116)))) != 0) || _la==ID) {
					{
					setState(2808);
					((AlterByAddPrimaryKeyContext)_localctx).index = uid();
					}
				}

				setState(2812);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==USING) {
					{
					setState(2811);
					indexType();
					}
				}

				setState(2814);
				indexColumnNames();
				setState(2818);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,362,_ctx);
				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
					if ( _alt==1 ) {
						{
						{
						setState(2815);
						indexOption();
						}
						} 
					}
					setState(2820);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,362,_ctx);
				}
				}
				break;
			case 6:
				_localctx = new AlterByAddUniqueKeyContext(_localctx);
				enterOuterAlt(_localctx, 6);
				{
				setState(2821);
				match(ADD);
				setState(2826);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==CONSTRAINT) {
					{
					setState(2822);
					match(CONSTRAINT);
					setState(2824);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ARRAY) | (1L << ATTRIBUTE) | (1L << BUCKETS) | (1L << CONDITION) | (1L << CURRENT) | (1L << CURRENT_ROLE) | (1L << CURRENT_USER) | (1L << DATABASE) | (1L << DEFAULT) | (1L << DIAGNOSTICS) | (1L << EMPTY) | (1L << ENFORCED) | (1L << EXCEPT))) != 0) || ((((_la - 74)) & ~0x3f) == 0 && ((1L << (_la - 74)) & ((1L << (GROUP - 74)) | (1L << (GROUP_REPLICATION_STREAM - 74)) | (1L << (IF - 74)) | (1L << (IGNORED - 74)) | (1L << (INSERT - 74)) | (1L << (LATERAL - 74)) | (1L << (LEFT - 74)) | (1L << (LOCKED - 74)) | (1L << (MAXVALUE - 74)) | (1L << (MINVALUE - 74)) | (1L << (NUMBER - 74)) | (1L << (OPTIONAL - 74)) | (1L << (ORDER - 74)) | (1L << (PRIMARY - 74)))) != 0) || ((((_la - 142)) & ~0x3f) == 0 && ((1L << (_la - 142)) & ((1L << (REPEAT - 142)) | (1L << (REPLACE - 142)) | (1L << (RIGHT - 142)) | (1L << (SCHEMA - 142)) | (1L << (SKIP_ - 142)) | (1L << (SKIP_QUERY_REWRITE - 142)) | (1L << (STACKED - 142)) | (1L << (STATEMENT - 142)))) != 0) || ((((_la - 220)) & ~0x3f) == 0 && ((1L << (_la - 220)) & ((1L << (DATE - 220)) | (1L << (TIME - 220)) | (1L << (TIMESTAMP - 220)) | (1L << (DATETIME - 220)) | (1L << (YEAR - 220)) | (1L << (NATIONAL - 220)) | (1L << (BINARY - 220)) | (1L << (TEXT - 220)) | (1L << (ENUM - 220)) | (1L << (SERIAL - 220)) | (1L << (JSON_ARRAY - 220)) | (1L << (JSON_ARRAYAGG - 220)) | (1L << (JSON_ARRAY_APPEND - 220)) | (1L << (JSON_ARRAY_INSERT - 220)) | (1L << (JSON_CONTAINS - 220)) | (1L << (JSON_CONTAINS_PATH - 220)) | (1L << (JSON_DEPTH - 220)) | (1L << (JSON_EXTRACT - 220)) | (1L << (JSON_INSERT - 220)) | (1L << (JSON_KEYS - 220)) | (1L << (JSON_LENGTH - 220)) | (1L << (JSON_MERGE - 220)) | (1L << (JSON_MERGE_PATCH - 220)) | (1L << (JSON_MERGE_PRESERVE - 220)) | (1L << (JSON_OBJECT - 220)) | (1L << (JSON_OBJECTAGG - 220)) | (1L << (JSON_OVERLAPS - 220)) | (1L << (JSON_PRETTY - 220)) | (1L << (JSON_QUOTE - 220)) | (1L << (JSON_REMOVE - 220)) | (1L << (JSON_REPLACE - 220)) | (1L << (JSON_SCHEMA_VALID - 220)) | (1L << (JSON_SCHEMA_VALIDATION_REPORT - 220)) | (1L << (JSON_SEARCH - 220)) | (1L << (JSON_SET - 220)) | (1L << (JSON_STORAGE_FREE - 220)) | (1L << (JSON_STORAGE_SIZE - 220)) | (1L << (JSON_TABLE - 220)) | (1L << (JSON_TYPE - 220)) | (1L << (JSON_UNQUOTE - 220)))) != 0) || ((((_la - 284)) & ~0x3f) == 0 && ((1L << (_la - 284)) & ((1L << (JSON_VALID - 284)) | (1L << (JSON_VALUE - 284)) | (1L << (NESTED - 284)) | (1L << (ORDINALITY - 284)) | (1L << (PATH - 284)) | (1L << (AVG - 284)) | (1L << (BIT_AND - 284)) | (1L << (BIT_OR - 284)) | (1L << (BIT_XOR - 284)) | (1L << (COUNT - 284)) | (1L << (CUME_DIST - 284)) | (1L << (DENSE_RANK - 284)) | (1L << (FIRST_VALUE - 284)) | (1L << (GROUP_CONCAT - 284)) | (1L << (LAG - 284)) | (1L << (LAST_VALUE - 284)) | (1L << (LEAD - 284)) | (1L << (MAX - 284)) | (1L << (MIN - 284)) | (1L << (NTILE - 284)) | (1L << (NTH_VALUE - 284)) | (1L << (PERCENT_RANK - 284)) | (1L << (RANK - 284)) | (1L << (ROW_NUMBER - 284)) | (1L << (STD - 284)) | (1L << (STDDEV - 284)) | (1L << (STDDEV_POP - 284)) | (1L << (STDDEV_SAMP - 284)) | (1L << (SUM - 284)) | (1L << (VAR_POP - 284)) | (1L << (VAR_SAMP - 284)) | (1L << (VARIANCE - 284)) | (1L << (CURRENT_DATE - 284)) | (1L << (CURRENT_TIME - 284)) | (1L << (CURRENT_TIMESTAMP - 284)) | (1L << (LOCALTIME - 284)) | (1L << (CURDATE - 284)) | (1L << (CURTIME - 284)) | (1L << (DATE_ADD - 284)) | (1L << (DATE_SUB - 284)) | (1L << (LOCALTIMESTAMP - 284)) | (1L << (NOW - 284)) | (1L << (POSITION - 284)) | (1L << (SUBSTR - 284)) | (1L << (SUBSTRING - 284)) | (1L << (SYSDATE - 284)) | (1L << (TRIM - 284)) | (1L << (UTC_DATE - 284)) | (1L << (UTC_TIME - 284)) | (1L << (UTC_TIMESTAMP - 284)) | (1L << (ACCOUNT - 284)) | (1L << (ACTION - 284)) | (1L << (AFTER - 284)) | (1L << (AGGREGATE - 284)) | (1L << (ALGORITHM - 284)) | (1L << (ANY - 284)) | (1L << (AT - 284)) | (1L << (AUTHORS - 284)) | (1L << (AUTOCOMMIT - 284)) | (1L << (AUTOEXTEND_SIZE - 284)) | (1L << (AUTO_INCREMENT - 284)) | (1L << (AVG_ROW_LENGTH - 284)) | (1L << (BEGIN - 284)))) != 0) || ((((_la - 348)) & ~0x3f) == 0 && ((1L << (_la - 348)) & ((1L << (BINLOG - 348)) | (1L << (BIT - 348)) | (1L << (BLOCK - 348)) | (1L << (BOOL - 348)) | (1L << (BOOLEAN - 348)) | (1L << (BTREE - 348)) | (1L << (CACHE - 348)) | (1L << (CASCADED - 348)) | (1L << (CHAIN - 348)) | (1L << (CHANGED - 348)) | (1L << (CHANNEL - 348)) | (1L << (CHECKSUM - 348)) | (1L << (PAGE_CHECKSUM - 348)) | (1L << (CIPHER - 348)) | (1L << (CLASS_ORIGIN - 348)) | (1L << (CLIENT - 348)) | (1L << (CLOSE - 348)) | (1L << (CLUSTERING - 348)) | (1L << (COALESCE - 348)) | (1L << (CODE - 348)) | (1L << (COLUMNS - 348)) | (1L << (COLUMN_FORMAT - 348)) | (1L << (COLUMN_NAME - 348)) | (1L << (COMMENT - 348)) | (1L << (COMMIT - 348)) | (1L << (COMPACT - 348)) | (1L << (COMPLETION - 348)) | (1L << (COMPRESSED - 348)) | (1L << (COMPRESSION - 348)) | (1L << (CONCURRENT - 348)) | (1L << (CONNECT - 348)) | (1L << (CONNECTION - 348)) | (1L << (CONSISTENT - 348)) | (1L << (CONSTRAINT_CATALOG - 348)) | (1L << (CONSTRAINT_SCHEMA - 348)) | (1L << (CONSTRAINT_NAME - 348)) | (1L << (CONTAINS - 348)) | (1L << (CONTEXT - 348)) | (1L << (CONTRIBUTORS - 348)) | (1L << (COPY - 348)) | (1L << (CPU - 348)) | (1L << (CYCLE - 348)) | (1L << (CURSOR_NAME - 348)) | (1L << (DATA - 348)) | (1L << (DATAFILE - 348)) | (1L << (DEALLOCATE - 348)) | (1L << (DEFAULT_AUTH - 348)) | (1L << (DEFINER - 348)) | (1L << (DELAY_KEY_WRITE - 348)) | (1L << (DES_KEY_FILE - 348)) | (1L << (DIRECTORY - 348)) | (1L << (DISABLE - 348)) | (1L << (DISCARD - 348)) | (1L << (DISK - 348)) | (1L << (DO - 348)) | (1L << (DUMPFILE - 348)) | (1L << (DUPLICATE - 348)) | (1L << (DYNAMIC - 348)) | (1L << (ENABLE - 348)) | (1L << (ENCRYPTED - 348)) | (1L << (ENCRYPTION - 348)) | (1L << (ENCRYPTION_KEY_ID - 348)) | (1L << (END - 348)) | (1L << (ENDS - 348)))) != 0) || ((((_la - 412)) & ~0x3f) == 0 && ((1L << (_la - 412)) & ((1L << (ENGINE - 412)) | (1L << (ENGINES - 412)) | (1L << (ERROR - 412)) | (1L << (ERRORS - 412)) | (1L << (ESCAPE - 412)) | (1L << (EVEN - 412)) | (1L << (EVENT - 412)) | (1L << (EVENTS - 412)) | (1L << (EVERY - 412)) | (1L << (EXCHANGE - 412)) | (1L << (EXCLUSIVE - 412)) | (1L << (EXPIRE - 412)) | (1L << (EXPORT - 412)) | (1L << (EXTENDED - 412)) | (1L << (EXTENT_SIZE - 412)) | (1L << (FAILED_LOGIN_ATTEMPTS - 412)) | (1L << (FAST - 412)) | (1L << (FAULTS - 412)) | (1L << (FIELDS - 412)) | (1L << (FILE_BLOCK_SIZE - 412)) | (1L << (FILTER - 412)) | (1L << (FIRST - 412)) | (1L << (FIXED - 412)) | (1L << (FLUSH - 412)) | (1L << (FOLLOWS - 412)) | (1L << (FOUND - 412)) | (1L << (FULL - 412)) | (1L << (FUNCTION - 412)) | (1L << (GENERAL - 412)) | (1L << (GLOBAL - 412)) | (1L << (GRANTS - 412)) | (1L << (GROUP_REPLICATION - 412)) | (1L << (HANDLER - 412)) | (1L << (HASH - 412)) | (1L << (HELP - 412)) | (1L << (HISTORY - 412)) | (1L << (HOST - 412)) | (1L << (HOSTS - 412)) | (1L << (IDENTIFIED - 412)) | (1L << (IGNORE_SERVER_IDS - 412)) | (1L << (IMPORT - 412)) | (1L << (INCREMENT - 412)) | (1L << (INDEXES - 412)) | (1L << (INITIAL_SIZE - 412)) | (1L << (INPLACE - 412)) | (1L << (INSERT_METHOD - 412)) | (1L << (INSTALL - 412)) | (1L << (INSTANCE - 412)) | (1L << (INSTANT - 412)) | (1L << (INVISIBLE - 412)) | (1L << (INVOKER - 412)) | (1L << (IO - 412)) | (1L << (IO_THREAD - 412)) | (1L << (IPC - 412)) | (1L << (ISOLATION - 412)) | (1L << (ISSUER - 412)) | (1L << (JSON - 412)) | (1L << (KEY_BLOCK_SIZE - 412)) | (1L << (LANGUAGE - 412)) | (1L << (LAST - 412)) | (1L << (LEAVES - 412)) | (1L << (LESS - 412)) | (1L << (LEVEL - 412)))) != 0) || ((((_la - 476)) & ~0x3f) == 0 && ((1L << (_la - 476)) & ((1L << (LIST - 476)) | (1L << (LOCAL - 476)) | (1L << (LOGFILE - 476)) | (1L << (LOGS - 476)) | (1L << (MASTER - 476)) | (1L << (MASTER_AUTO_POSITION - 476)) | (1L << (MASTER_CONNECT_RETRY - 476)) | (1L << (MASTER_DELAY - 476)) | (1L << (MASTER_HEARTBEAT_PERIOD - 476)) | (1L << (MASTER_HOST - 476)) | (1L << (MASTER_LOG_FILE - 476)) | (1L << (MASTER_LOG_POS - 476)) | (1L << (MASTER_PASSWORD - 476)) | (1L << (MASTER_PORT - 476)) | (1L << (MASTER_RETRY_COUNT - 476)) | (1L << (MASTER_SSL - 476)) | (1L << (MASTER_SSL_CA - 476)) | (1L << (MASTER_SSL_CAPATH - 476)) | (1L << (MASTER_SSL_CERT - 476)) | (1L << (MASTER_SSL_CIPHER - 476)) | (1L << (MASTER_SSL_CRL - 476)) | (1L << (MASTER_SSL_CRLPATH - 476)) | (1L << (MASTER_SSL_KEY - 476)) | (1L << (MASTER_TLS_VERSION - 476)) | (1L << (MASTER_USER - 476)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 476)) | (1L << (MAX_QUERIES_PER_HOUR - 476)) | (1L << (MAX_ROWS - 476)) | (1L << (MAX_SIZE - 476)) | (1L << (MAX_UPDATES_PER_HOUR - 476)) | (1L << (MAX_USER_CONNECTIONS - 476)) | (1L << (MEDIUM - 476)) | (1L << (MEMBER - 476)) | (1L << (MERGE - 476)) | (1L << (MESSAGE_TEXT - 476)) | (1L << (MID - 476)) | (1L << (MIGRATE - 476)) | (1L << (MIN_ROWS - 476)) | (1L << (MODE - 476)) | (1L << (MODIFY - 476)) | (1L << (MUTEX - 476)) | (1L << (MYSQL - 476)) | (1L << (MYSQL_ERRNO - 476)) | (1L << (NAME - 476)) | (1L << (NAMES - 476)) | (1L << (NCHAR - 476)) | (1L << (NEVER - 476)) | (1L << (NEXT - 476)) | (1L << (NO - 476)) | (1L << (NOCACHE - 476)) | (1L << (NOCOPY - 476)) | (1L << (NOCYCLE - 476)) | (1L << (NOMAXVALUE - 476)) | (1L << (NOMINVALUE - 476)) | (1L << (NOWAIT - 476)) | (1L << (NODEGROUP - 476)) | (1L << (NONE - 476)) | (1L << (ODBC - 476)) | (1L << (OFFLINE - 476)) | (1L << (OFFSET - 476)) | (1L << (OF - 476)) | (1L << (OJ - 476)) | (1L << (OLD_PASSWORD - 476)) | (1L << (ONE - 476)))) != 0) || ((((_la - 540)) & ~0x3f) == 0 && ((1L << (_la - 540)) & ((1L << (ONLINE - 540)) | (1L << (ONLY - 540)) | (1L << (OPEN - 540)) | (1L << (OPTIMIZER_COSTS - 540)) | (1L << (OPTIONS - 540)) | (1L << (OWNER - 540)) | (1L << (PACK_KEYS - 540)) | (1L << (PAGE - 540)) | (1L << (PARSER - 540)) | (1L << (PARTIAL - 540)) | (1L << (PARTITIONING - 540)) | (1L << (PARTITIONS - 540)) | (1L << (PASSWORD - 540)) | (1L << (PASSWORD_LOCK_TIME - 540)) | (1L << (PHASE - 540)) | (1L << (PLUGIN - 540)) | (1L << (PLUGIN_DIR - 540)) | (1L << (PLUGINS - 540)) | (1L << (PORT - 540)) | (1L << (PRECEDES - 540)) | (1L << (PREPARE - 540)) | (1L << (PRESERVE - 540)) | (1L << (PREV - 540)) | (1L << (PROCESSLIST - 540)) | (1L << (PROFILE - 540)) | (1L << (PROFILES - 540)) | (1L << (PROXY - 540)) | (1L << (QUERY - 540)) | (1L << (QUICK - 540)) | (1L << (REBUILD - 540)) | (1L << (RECOVER - 540)) | (1L << (RECURSIVE - 540)) | (1L << (REDO_BUFFER_SIZE - 540)) | (1L << (REDUNDANT - 540)) | (1L << (RELAY - 540)) | (1L << (RELAY_LOG_FILE - 540)) | (1L << (RELAY_LOG_POS - 540)) | (1L << (RELAYLOG - 540)) | (1L << (REMOVE - 540)) | (1L << (REORGANIZE - 540)) | (1L << (REPAIR - 540)) | (1L << (REPLICATE_DO_DB - 540)) | (1L << (REPLICATE_DO_TABLE - 540)) | (1L << (REPLICATE_IGNORE_DB - 540)) | (1L << (REPLICATE_IGNORE_TABLE - 540)) | (1L << (REPLICATE_REWRITE_DB - 540)) | (1L << (REPLICATE_WILD_DO_TABLE - 540)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 540)) | (1L << (REPLICATION - 540)) | (1L << (RESET - 540)) | (1L << (RESTART - 540)) | (1L << (RESUME - 540)) | (1L << (RETURNED_SQLSTATE - 540)) | (1L << (RETURNING - 540)) | (1L << (RETURNS - 540)) | (1L << (REUSE - 540)) | (1L << (ROLE - 540)) | (1L << (ROLLBACK - 540)) | (1L << (ROLLUP - 540)) | (1L << (ROTATE - 540)) | (1L << (ROW - 540)))) != 0) || ((((_la - 604)) & ~0x3f) == 0 && ((1L << (_la - 604)) & ((1L << (ROWS - 604)) | (1L << (ROW_FORMAT - 604)) | (1L << (RTREE - 604)) | (1L << (SAVEPOINT - 604)) | (1L << (SCHEDULE - 604)) | (1L << (SECURITY - 604)) | (1L << (SEQUENCE - 604)) | (1L << (SERVER - 604)) | (1L << (SESSION - 604)) | (1L << (SHARE - 604)) | (1L << (SHARED - 604)) | (1L << (SIGNED - 604)) | (1L << (SIMPLE - 604)) | (1L << (SLAVE - 604)) | (1L << (SLOW - 604)) | (1L << (SNAPSHOT - 604)) | (1L << (SOCKET - 604)) | (1L << (SOME - 604)) | (1L << (SONAME - 604)) | (1L << (SOUNDS - 604)) | (1L << (SOURCE - 604)) | (1L << (SQL_AFTER_GTIDS - 604)) | (1L << (SQL_AFTER_MTS_GAPS - 604)) | (1L << (SQL_BEFORE_GTIDS - 604)) | (1L << (SQL_BUFFER_RESULT - 604)) | (1L << (SQL_CACHE - 604)) | (1L << (SQL_NO_CACHE - 604)) | (1L << (SQL_THREAD - 604)) | (1L << (START - 604)) | (1L << (STARTS - 604)) | (1L << (STATS_AUTO_RECALC - 604)) | (1L << (STATS_PERSISTENT - 604)) | (1L << (STATS_SAMPLE_PAGES - 604)) | (1L << (STATUS - 604)) | (1L << (STOP - 604)) | (1L << (STORAGE - 604)) | (1L << (STRING - 604)) | (1L << (SUBCLASS_ORIGIN - 604)) | (1L << (SUBJECT - 604)) | (1L << (SUBPARTITION - 604)) | (1L << (SUBPARTITIONS - 604)) | (1L << (SUSPEND - 604)) | (1L << (SWAPS - 604)) | (1L << (SWITCHES - 604)) | (1L << (TABLE_NAME - 604)) | (1L << (TABLESPACE - 604)) | (1L << (TABLE_TYPE - 604)) | (1L << (TEMPORARY - 604)) | (1L << (TEMPTABLE - 604)) | (1L << (THAN - 604)) | (1L << (TRADITIONAL - 604)) | (1L << (TRANSACTION - 604)) | (1L << (TRANSACTIONAL - 604)) | (1L << (TRIGGERS - 604)) | (1L << (TRUNCATE - 604)) | (1L << (UNBOUNDED - 604)) | (1L << (UNDEFINED - 604)) | (1L << (UNDOFILE - 604)) | (1L << (UNDO_BUFFER_SIZE - 604)) | (1L << (UNINSTALL - 604)) | (1L << (UNKNOWN - 604)) | (1L << (UNTIL - 604)) | (1L << (UPGRADE - 604)))) != 0) || ((((_la - 668)) & ~0x3f) == 0 && ((1L << (_la - 668)) & ((1L << (USER - 668)) | (1L << (USE_FRM - 668)) | (1L << (USER_RESOURCES - 668)) | (1L << (VALIDATION - 668)) | (1L << (VALUE - 668)) | (1L << (VARIABLES - 668)) | (1L << (VIEW - 668)) | (1L << (VIRTUAL - 668)) | (1L << (VISIBLE - 668)) | (1L << (WAIT - 668)) | (1L << (WARNINGS - 668)) | (1L << (WITHOUT - 668)) | (1L << (WORK - 668)) | (1L << (WRAPPER - 668)) | (1L << (X509 - 668)) | (1L << (XA - 668)) | (1L << (XML - 668)) | (1L << (YES - 668)) | (1L << (EUR - 668)) | (1L << (USA - 668)) | (1L << (JIS - 668)) | (1L << (ISO - 668)) | (1L << (INTERNAL - 668)) | (1L << (QUARTER - 668)) | (1L << (MONTH - 668)) | (1L << (DAY - 668)) | (1L << (HOUR - 668)) | (1L << (MINUTE - 668)) | (1L << (WEEK - 668)) | (1L << (SECOND - 668)) | (1L << (MICROSECOND - 668)) | (1L << (USER_STATISTICS - 668)) | (1L << (CLIENT_STATISTICS - 668)) | (1L << (INDEX_STATISTICS - 668)) | (1L << (TABLE_STATISTICS - 668)) | (1L << (FIREWALL_RULES - 668)) | (1L << (ADMIN - 668)) | (1L << (APPLICATION_PASSWORD_ADMIN - 668)) | (1L << (AUDIT_ADMIN - 668)) | (1L << (AUDIT_ABORT_EXEMPT - 668)) | (1L << (AUTHENTICATION_POLICY_ADMIN - 668)) | (1L << (BACKUP_ADMIN - 668)) | (1L << (BINLOG_ADMIN - 668)) | (1L << (BINLOG_ENCRYPTION_ADMIN - 668)) | (1L << (CLONE_ADMIN - 668)) | (1L << (CONNECTION_ADMIN - 668)) | (1L << (ENCRYPTION_KEY_ADMIN - 668)) | (1L << (EXECUTE - 668)) | (1L << (FILE - 668)) | (1L << (FIREWALL_ADMIN - 668)) | (1L << (FIREWALL_EXEMPT - 668)) | (1L << (FIREWALL_USER - 668)) | (1L << (FLUSH_OPTIMIZER_COSTS - 668)) | (1L << (FLUSH_STATUS - 668)) | (1L << (FLUSH_TABLES - 668)) | (1L << (FLUSH_USER_RESOURCES - 668)) | (1L << (GROUP_REPLICATION_ADMIN - 668)) | (1L << (INNODB_REDO_LOG_ARCHIVE - 668)) | (1L << (INNODB_REDO_LOG_ENABLE - 668)) | (1L << (INVOKE - 668)) | (1L << (LAMBDA - 668)) | (1L << (NDB_STORED_USER - 668)) | (1L << (PASSWORDLESS_USER_ADMIN - 668)))) != 0) || ((((_la - 732)) & ~0x3f) == 0 && ((1L << (_la - 732)) & ((1L << (PERSIST_RO_VARIABLES_ADMIN - 732)) | (1L << (PRIVILEGES - 732)) | (1L << (PROCESS - 732)) | (1L << (RELOAD - 732)) | (1L << (REPLICATION_APPLIER - 732)) | (1L << (REPLICATION_SLAVE_ADMIN - 732)) | (1L << (RESOURCE_GROUP_ADMIN - 732)) | (1L << (RESOURCE_GROUP_USER - 732)) | (1L << (ROLE_ADMIN - 732)) | (1L << (ROUTINE - 732)) | (1L << (S3 - 732)) | (1L << (SESSION_VARIABLES_ADMIN - 732)) | (1L << (SET_USER_ID - 732)) | (1L << (SHOW_ROUTINE - 732)) | (1L << (SHUTDOWN - 732)) | (1L << (SUPER - 732)) | (1L << (SYSTEM_VARIABLES_ADMIN - 732)) | (1L << (TABLES - 732)) | (1L << (TABLE_ENCRYPTION_ADMIN - 732)) | (1L << (VERSION_TOKEN_ADMIN - 732)) | (1L << (XA_RECOVER_ADMIN - 732)) | (1L << (ARMSCII8 - 732)) | (1L << (ASCII - 732)) | (1L << (BIG5 - 732)) | (1L << (CP1250 - 732)) | (1L << (CP1251 - 732)) | (1L << (CP1256 - 732)) | (1L << (CP1257 - 732)) | (1L << (CP850 - 732)) | (1L << (CP852 - 732)) | (1L << (CP866 - 732)) | (1L << (CP932 - 732)) | (1L << (DEC8 - 732)) | (1L << (EUCJPMS - 732)) | (1L << (EUCKR - 732)) | (1L << (GB18030 - 732)) | (1L << (GB2312 - 732)) | (1L << (GBK - 732)) | (1L << (GEOSTD8 - 732)) | (1L << (GREEK - 732)) | (1L << (HEBREW - 732)) | (1L << (HP8 - 732)) | (1L << (KEYBCS2 - 732)) | (1L << (KOI8R - 732)) | (1L << (KOI8U - 732)) | (1L << (LATIN1 - 732)) | (1L << (LATIN2 - 732)) | (1L << (LATIN5 - 732)) | (1L << (LATIN7 - 732)) | (1L << (MACCE - 732)) | (1L << (MACROMAN - 732)) | (1L << (SJIS - 732)) | (1L << (SWE7 - 732)) | (1L << (TIS620 - 732)) | (1L << (UCS2 - 732)) | (1L << (UJIS - 732)) | (1L << (UTF16 - 732)) | (1L << (UTF16LE - 732)) | (1L << (UTF32 - 732)) | (1L << (UTF8 - 732)) | (1L << (UTF8MB3 - 732)) | (1L << (UTF8MB4 - 732)) | (1L << (ARCHIVE - 732)))) != 0) || ((((_la - 796)) & ~0x3f) == 0 && ((1L << (_la - 796)) & ((1L << (BLACKHOLE - 796)) | (1L << (CSV - 796)) | (1L << (FEDERATED - 796)) | (1L << (INNODB - 796)) | (1L << (MEMORY - 796)) | (1L << (MRG_MYISAM - 796)) | (1L << (MYISAM - 796)) | (1L << (NDB - 796)) | (1L << (NDBCLUSTER - 796)) | (1L << (PERFORMANCE_SCHEMA - 796)) | (1L << (TOKUDB - 796)) | (1L << (REPEATABLE - 796)) | (1L << (COMMITTED - 796)) | (1L << (UNCOMMITTED - 796)) | (1L << (SERIALIZABLE - 796)) | (1L << (GEOMETRYCOLLECTION - 796)) | (1L << (GEOMETRY - 796)) | (1L << (LINESTRING - 796)) | (1L << (MULTILINESTRING - 796)) | (1L << (MULTIPOINT - 796)) | (1L << (MULTIPOLYGON - 796)) | (1L << (POINT - 796)) | (1L << (POLYGON - 796)) | (1L << (ABS - 796)) | (1L << (ACOS - 796)) | (1L << (ADDDATE - 796)) | (1L << (ADDTIME - 796)) | (1L << (AES_DECRYPT - 796)) | (1L << (AES_ENCRYPT - 796)) | (1L << (AREA - 796)) | (1L << (ASBINARY - 796)) | (1L << (ASIN - 796)) | (1L << (ASTEXT - 796)) | (1L << (ASWKB - 796)) | (1L << (ASWKT - 796)) | (1L << (ASYMMETRIC_DECRYPT - 796)) | (1L << (ASYMMETRIC_DERIVE - 796)) | (1L << (ASYMMETRIC_ENCRYPT - 796)) | (1L << (ASYMMETRIC_SIGN - 796)) | (1L << (ASYMMETRIC_VERIFY - 796)) | (1L << (ATAN - 796)) | (1L << (ATAN2 - 796)) | (1L << (BENCHMARK - 796)) | (1L << (BIN - 796)) | (1L << (BIT_COUNT - 796)) | (1L << (BIT_LENGTH - 796)) | (1L << (BUFFER - 796)) | (1L << (CATALOG_NAME - 796)) | (1L << (CEIL - 796)) | (1L << (CEILING - 796)) | (1L << (CENTROID - 796)) | (1L << (CHARACTER_LENGTH - 796)) | (1L << (CHARSET - 796)) | (1L << (CHAR_LENGTH - 796)) | (1L << (COERCIBILITY - 796)) | (1L << (COLLATION - 796)) | (1L << (COMPRESS - 796)) | (1L << (CONCAT - 796)) | (1L << (CONCAT_WS - 796)) | (1L << (CONNECTION_ID - 796)) | (1L << (CONV - 796)) | (1L << (CONVERT_TZ - 796)) | (1L << (COS - 796)))) != 0) || ((((_la - 860)) & ~0x3f) == 0 && ((1L << (_la - 860)) & ((1L << (COT - 860)) | (1L << (CRC32 - 860)) | (1L << (CREATE_ASYMMETRIC_PRIV_KEY - 860)) | (1L << (CREATE_ASYMMETRIC_PUB_KEY - 860)) | (1L << (CREATE_DH_PARAMETERS - 860)) | (1L << (CREATE_DIGEST - 860)) | (1L << (CROSSES - 860)) | (1L << (DATEDIFF - 860)) | (1L << (DATE_FORMAT - 860)) | (1L << (DAYNAME - 860)) | (1L << (DAYOFMONTH - 860)) | (1L << (DAYOFWEEK - 860)) | (1L << (DAYOFYEAR - 860)) | (1L << (DECODE - 860)) | (1L << (DEGREES - 860)) | (1L << (DES_DECRYPT - 860)) | (1L << (DES_ENCRYPT - 860)) | (1L << (DIMENSION - 860)) | (1L << (DISJOINT - 860)) | (1L << (ELT - 860)) | (1L << (ENCODE - 860)) | (1L << (ENCRYPT - 860)) | (1L << (ENDPOINT - 860)) | (1L << (ENGINE_ATTRIBUTE - 860)) | (1L << (ENVELOPE - 860)) | (1L << (EQUALS - 860)) | (1L << (EXP - 860)) | (1L << (EXPORT_SET - 860)) | (1L << (EXTERIORRING - 860)) | (1L << (EXTRACTVALUE - 860)) | (1L << (FIELD - 860)) | (1L << (FIND_IN_SET - 860)) | (1L << (FLOOR - 860)) | (1L << (FORMAT - 860)) | (1L << (FOUND_ROWS - 860)) | (1L << (FROM_BASE64 - 860)) | (1L << (FROM_DAYS - 860)) | (1L << (FROM_UNIXTIME - 860)) | (1L << (GEOMCOLLFROMTEXT - 860)) | (1L << (GEOMCOLLFROMWKB - 860)) | (1L << (GEOMETRYCOLLECTIONFROMTEXT - 860)) | (1L << (GEOMETRYCOLLECTIONFROMWKB - 860)) | (1L << (GEOMETRYFROMTEXT - 860)) | (1L << (GEOMETRYFROMWKB - 860)) | (1L << (GEOMETRYN - 860)) | (1L << (GEOMETRYTYPE - 860)) | (1L << (GEOMFROMTEXT - 860)) | (1L << (GEOMFROMWKB - 860)) | (1L << (GET_FORMAT - 860)) | (1L << (GET_LOCK - 860)) | (1L << (GLENGTH - 860)) | (1L << (GREATEST - 860)) | (1L << (GTID_SUBSET - 860)) | (1L << (GTID_SUBTRACT - 860)) | (1L << (HEX - 860)) | (1L << (IFNULL - 860)) | (1L << (INET6_ATON - 860)) | (1L << (INET6_NTOA - 860)) | (1L << (INET_ATON - 860)) | (1L << (INET_NTOA - 860)) | (1L << (INSTR - 860)) | (1L << (INTERIORRINGN - 860)) | (1L << (INTERSECTS - 860)) | (1L << (ISCLOSED - 860)))) != 0) || ((((_la - 924)) & ~0x3f) == 0 && ((1L << (_la - 924)) & ((1L << (ISEMPTY - 924)) | (1L << (ISNULL - 924)) | (1L << (ISSIMPLE - 924)) | (1L << (IS_FREE_LOCK - 924)) | (1L << (IS_IPV4 - 924)) | (1L << (IS_IPV4_COMPAT - 924)) | (1L << (IS_IPV4_MAPPED - 924)) | (1L << (IS_IPV6 - 924)) | (1L << (IS_USED_LOCK - 924)) | (1L << (LAST_INSERT_ID - 924)) | (1L << (LCASE - 924)) | (1L << (LEAST - 924)) | (1L << (LENGTH - 924)) | (1L << (LINEFROMTEXT - 924)) | (1L << (LINEFROMWKB - 924)) | (1L << (LINESTRINGFROMTEXT - 924)) | (1L << (LINESTRINGFROMWKB - 924)) | (1L << (LN - 924)) | (1L << (LOAD_FILE - 924)) | (1L << (LOCATE - 924)) | (1L << (LOG - 924)) | (1L << (LOG10 - 924)) | (1L << (LOG2 - 924)) | (1L << (LOWER - 924)) | (1L << (LPAD - 924)) | (1L << (LTRIM - 924)) | (1L << (MAKEDATE - 924)) | (1L << (MAKETIME - 924)) | (1L << (MAKE_SET - 924)) | (1L << (MASTER_POS_WAIT - 924)) | (1L << (MBRCONTAINS - 924)) | (1L << (MBRDISJOINT - 924)) | (1L << (MBREQUAL - 924)) | (1L << (MBRINTERSECTS - 924)) | (1L << (MBROVERLAPS - 924)) | (1L << (MBRTOUCHES - 924)) | (1L << (MBRWITHIN - 924)) | (1L << (MD5 - 924)) | (1L << (MLINEFROMTEXT - 924)) | (1L << (MLINEFROMWKB - 924)) | (1L << (MONTHNAME - 924)) | (1L << (MPOINTFROMTEXT - 924)) | (1L << (MPOINTFROMWKB - 924)) | (1L << (MPOLYFROMTEXT - 924)) | (1L << (MPOLYFROMWKB - 924)) | (1L << (MULTILINESTRINGFROMTEXT - 924)) | (1L << (MULTILINESTRINGFROMWKB - 924)) | (1L << (MULTIPOINTFROMTEXT - 924)) | (1L << (MULTIPOINTFROMWKB - 924)) | (1L << (MULTIPOLYGONFROMTEXT - 924)) | (1L << (MULTIPOLYGONFROMWKB - 924)) | (1L << (NAME_CONST - 924)) | (1L << (NULLIF - 924)) | (1L << (NUMGEOMETRIES - 924)) | (1L << (NUMINTERIORRINGS - 924)) | (1L << (NUMPOINTS - 924)) | (1L << (OCT - 924)) | (1L << (OCTET_LENGTH - 924)) | (1L << (ORD - 924)) | (1L << (OVERLAPS - 924)) | (1L << (PERIOD_ADD - 924)) | (1L << (PERIOD_DIFF - 924)) | (1L << (PI - 924)) | (1L << (POINTFROMTEXT - 924)))) != 0) || ((((_la - 988)) & ~0x3f) == 0 && ((1L << (_la - 988)) & ((1L << (POINTFROMWKB - 988)) | (1L << (POINTN - 988)) | (1L << (POLYFROMTEXT - 988)) | (1L << (POLYFROMWKB - 988)) | (1L << (POLYGONFROMTEXT - 988)) | (1L << (POLYGONFROMWKB - 988)) | (1L << (POW - 988)) | (1L << (POWER - 988)) | (1L << (QUOTE - 988)) | (1L << (RADIANS - 988)) | (1L << (RAND - 988)) | (1L << (RANDOM - 988)) | (1L << (RANDOM_BYTES - 988)) | (1L << (RELEASE_LOCK - 988)) | (1L << (REVERSE - 988)) | (1L << (ROUND - 988)) | (1L << (ROW_COUNT - 988)) | (1L << (RPAD - 988)) | (1L << (RTRIM - 988)) | (1L << (SEC_TO_TIME - 988)) | (1L << (SECONDARY_ENGINE_ATTRIBUTE - 988)) | (1L << (SENSITIVE_VARIABLES_OBSERVER - 988)) | (1L << (SESSION_USER - 988)) | (1L << (SHA - 988)) | (1L << (SHA1 - 988)) | (1L << (SHA2 - 988)) | (1L << (SCHEMA_NAME - 988)) | (1L << (SIGN - 988)) | (1L << (SIN - 988)) | (1L << (SLEEP - 988)) | (1L << (SOUNDEX - 988)) | (1L << (SQL_THREAD_WAIT_AFTER_GTIDS - 988)) | (1L << (SQRT - 988)) | (1L << (SRID - 988)) | (1L << (STARTPOINT - 988)) | (1L << (STRCMP - 988)) | (1L << (STR_TO_DATE - 988)) | (1L << (ST_AREA - 988)) | (1L << (ST_ASBINARY - 988)) | (1L << (ST_ASTEXT - 988)) | (1L << (ST_ASWKB - 988)) | (1L << (ST_ASWKT - 988)) | (1L << (ST_BUFFER - 988)) | (1L << (ST_CENTROID - 988)) | (1L << (ST_CONTAINS - 988)) | (1L << (ST_CROSSES - 988)) | (1L << (ST_DIFFERENCE - 988)) | (1L << (ST_DIMENSION - 988)) | (1L << (ST_DISJOINT - 988)) | (1L << (ST_DISTANCE - 988)) | (1L << (ST_ENDPOINT - 988)) | (1L << (ST_ENVELOPE - 988)) | (1L << (ST_EQUALS - 988)) | (1L << (ST_EXTERIORRING - 988)) | (1L << (ST_GEOMCOLLFROMTEXT - 988)) | (1L << (ST_GEOMCOLLFROMTXT - 988)) | (1L << (ST_GEOMCOLLFROMWKB - 988)) | (1L << (ST_GEOMETRYCOLLECTIONFROMTEXT - 988)) | (1L << (ST_GEOMETRYCOLLECTIONFROMWKB - 988)) | (1L << (ST_GEOMETRYFROMTEXT - 988)) | (1L << (ST_GEOMETRYFROMWKB - 988)) | (1L << (ST_GEOMETRYN - 988)) | (1L << (ST_GEOMETRYTYPE - 988)) | (1L << (ST_GEOMFROMTEXT - 988)))) != 0) || ((((_la - 1052)) & ~0x3f) == 0 && ((1L << (_la - 1052)) & ((1L << (ST_GEOMFROMWKB - 1052)) | (1L << (ST_INTERIORRINGN - 1052)) | (1L << (ST_INTERSECTION - 1052)) | (1L << (ST_INTERSECTS - 1052)) | (1L << (ST_ISCLOSED - 1052)) | (1L << (ST_ISEMPTY - 1052)) | (1L << (ST_ISSIMPLE - 1052)) | (1L << (ST_LINEFROMTEXT - 1052)) | (1L << (ST_LINEFROMWKB - 1052)) | (1L << (ST_LINESTRINGFROMTEXT - 1052)) | (1L << (ST_LINESTRINGFROMWKB - 1052)) | (1L << (ST_NUMGEOMETRIES - 1052)) | (1L << (ST_NUMINTERIORRING - 1052)) | (1L << (ST_NUMINTERIORRINGS - 1052)) | (1L << (ST_NUMPOINTS - 1052)) | (1L << (ST_OVERLAPS - 1052)) | (1L << (ST_POINTFROMTEXT - 1052)) | (1L << (ST_POINTFROMWKB - 1052)) | (1L << (ST_POINTN - 1052)) | (1L << (ST_POLYFROMTEXT - 1052)) | (1L << (ST_POLYFROMWKB - 1052)) | (1L << (ST_POLYGONFROMTEXT - 1052)) | (1L << (ST_POLYGONFROMWKB - 1052)) | (1L << (ST_SRID - 1052)) | (1L << (ST_STARTPOINT - 1052)) | (1L << (ST_SYMDIFFERENCE - 1052)) | (1L << (ST_TOUCHES - 1052)) | (1L << (ST_UNION - 1052)) | (1L << (ST_WITHIN - 1052)) | (1L << (ST_X - 1052)) | (1L << (ST_Y - 1052)) | (1L << (SUBDATE - 1052)) | (1L << (SUBSTRING_INDEX - 1052)) | (1L << (SUBTIME - 1052)) | (1L << (SYSTEM_USER - 1052)) | (1L << (SYSTEM - 1052)) | (1L << (TAN - 1052)) | (1L << (TELEMETRY_LOG_ADMIN - 1052)) | (1L << (TIMEDIFF - 1052)) | (1L << (TIMESTAMPADD - 1052)) | (1L << (TIMESTAMPDIFF - 1052)) | (1L << (TIME_FORMAT - 1052)) | (1L << (TIME_TO_SEC - 1052)) | (1L << (TOUCHES - 1052)) | (1L << (TO_BASE64 - 1052)) | (1L << (TO_DAYS - 1052)) | (1L << (TO_SECONDS - 1052)) | (1L << (TP_CONNECTION_ADMIN - 1052)) | (1L << (UCASE - 1052)) | (1L << (UNCOMPRESS - 1052)) | (1L << (UNCOMPRESSED_LENGTH - 1052)) | (1L << (UNHEX - 1052)) | (1L << (UNIX_TIMESTAMP - 1052)) | (1L << (UPDATEXML - 1052)) | (1L << (UPPER - 1052)) | (1L << (UUID - 1052)) | (1L << (UUID_SHORT - 1052)) | (1L << (VALIDATE_PASSWORD_STRENGTH - 1052)) | (1L << (VERSION - 1052)) | (1L << (VERSIONING - 1052)) | (1L << (WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS - 1052)) | (1L << (WEEKDAY - 1052)) | (1L << (WEEKOFYEAR - 1052)) | (1L << (WEIGHT_STRING - 1052)))) != 0) || ((((_la - 1116)) & ~0x3f) == 0 && ((1L << (_la - 1116)) & ((1L << (WITHIN - 1116)) | (1L << (YEARWEEK - 1116)) | (1L << (Y_FUNCTION - 1116)) | (1L << (X_FUNCTION - 1116)) | (1L << (VIA - 1116)) | (1L << (LASTVAL - 1116)) | (1L << (NEXTVAL - 1116)) | (1L << (SETVAL - 1116)) | (1L << (PREVIOUS - 1116)) | (1L << (PERSISTENT - 1116)) | (1L << (BINLOG_MONITOR - 1116)) | (1L << (BINLOG_REPLAY - 1116)) | (1L << (FEDERATED_ADMIN - 1116)) | (1L << (READ_ONLY_ADMIN - 1116)) | (1L << (REPLICA - 1116)) | (1L << (REPLICATION_MASTER_ADMIN - 1116)) | (1L << (MONITOR - 1116)) | (1L << (READ_ONLY - 1116)) | (1L << (REPLAY - 1116)) | (1L << (MOD - 1116)) | (1L << (CHARSET_REVERSE_QOUTE_STRING - 1116)) | (1L << (STRING_LITERAL - 1116)))) != 0) || _la==ID) {
						{
						setState(2823);
						((AlterByAddUniqueKeyContext)_localctx).name = uid();
						}
					}

					}
				}

				setState(2828);
				match(UNIQUE);
				setState(2830);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,365,_ctx) ) {
				case 1:
					{
					setState(2829);
					ifNotExists();
					}
					break;
				}
				setState(2833);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==INDEX || _la==KEY) {
					{
					setState(2832);
					((AlterByAddUniqueKeyContext)_localctx).indexFormat = _input.LT(1);
					_la = _input.LA(1);
					if ( !(_la==INDEX || _la==KEY) ) {
						((AlterByAddUniqueKeyContext)_localctx).indexFormat = (Token)_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
				}

				setState(2836);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ARRAY) | (1L << ATTRIBUTE) | (1L << BUCKETS) | (1L << CONDITION) | (1L << CURRENT) | (1L << CURRENT_ROLE) | (1L << CURRENT_USER) | (1L << DATABASE) | (1L << DEFAULT) | (1L << DIAGNOSTICS) | (1L << EMPTY) | (1L << ENFORCED) | (1L << EXCEPT))) != 0) || ((((_la - 74)) & ~0x3f) == 0 && ((1L << (_la - 74)) & ((1L << (GROUP - 74)) | (1L << (GROUP_REPLICATION_STREAM - 74)) | (1L << (IF - 74)) | (1L << (IGNORED - 74)) | (1L << (INSERT - 74)) | (1L << (LATERAL - 74)) | (1L << (LEFT - 74)) | (1L << (LOCKED - 74)) | (1L << (MAXVALUE - 74)) | (1L << (MINVALUE - 74)) | (1L << (NUMBER - 74)) | (1L << (OPTIONAL - 74)) | (1L << (ORDER - 74)) | (1L << (PRIMARY - 74)))) != 0) || ((((_la - 142)) & ~0x3f) == 0 && ((1L << (_la - 142)) & ((1L << (REPEAT - 142)) | (1L << (REPLACE - 142)) | (1L << (RIGHT - 142)) | (1L << (SCHEMA - 142)) | (1L << (SKIP_ - 142)) | (1L << (SKIP_QUERY_REWRITE - 142)) | (1L << (STACKED - 142)) | (1L << (STATEMENT - 142)))) != 0) || ((((_la - 220)) & ~0x3f) == 0 && ((1L << (_la - 220)) & ((1L << (DATE - 220)) | (1L << (TIME - 220)) | (1L << (TIMESTAMP - 220)) | (1L << (DATETIME - 220)) | (1L << (YEAR - 220)) | (1L << (NATIONAL - 220)) | (1L << (BINARY - 220)) | (1L << (TEXT - 220)) | (1L << (ENUM - 220)) | (1L << (SERIAL - 220)) | (1L << (JSON_ARRAY - 220)) | (1L << (JSON_ARRAYAGG - 220)) | (1L << (JSON_ARRAY_APPEND - 220)) | (1L << (JSON_ARRAY_INSERT - 220)) | (1L << (JSON_CONTAINS - 220)) | (1L << (JSON_CONTAINS_PATH - 220)) | (1L << (JSON_DEPTH - 220)) | (1L << (JSON_EXTRACT - 220)) | (1L << (JSON_INSERT - 220)) | (1L << (JSON_KEYS - 220)) | (1L << (JSON_LENGTH - 220)) | (1L << (JSON_MERGE - 220)) | (1L << (JSON_MERGE_PATCH - 220)) | (1L << (JSON_MERGE_PRESERVE - 220)) | (1L << (JSON_OBJECT - 220)) | (1L << (JSON_OBJECTAGG - 220)) | (1L << (JSON_OVERLAPS - 220)) | (1L << (JSON_PRETTY - 220)) | (1L << (JSON_QUOTE - 220)) | (1L << (JSON_REMOVE - 220)) | (1L << (JSON_REPLACE - 220)) | (1L << (JSON_SCHEMA_VALID - 220)) | (1L << (JSON_SCHEMA_VALIDATION_REPORT - 220)) | (1L << (JSON_SEARCH - 220)) | (1L << (JSON_SET - 220)) | (1L << (JSON_STORAGE_FREE - 220)) | (1L << (JSON_STORAGE_SIZE - 220)) | (1L << (JSON_TABLE - 220)) | (1L << (JSON_TYPE - 220)) | (1L << (JSON_UNQUOTE - 220)))) != 0) || ((((_la - 284)) & ~0x3f) == 0 && ((1L << (_la - 284)) & ((1L << (JSON_VALID - 284)) | (1L << (JSON_VALUE - 284)) | (1L << (NESTED - 284)) | (1L << (ORDINALITY - 284)) | (1L << (PATH - 284)) | (1L << (AVG - 284)) | (1L << (BIT_AND - 284)) | (1L << (BIT_OR - 284)) | (1L << (BIT_XOR - 284)) | (1L << (COUNT - 284)) | (1L << (CUME_DIST - 284)) | (1L << (DENSE_RANK - 284)) | (1L << (FIRST_VALUE - 284)) | (1L << (GROUP_CONCAT - 284)) | (1L << (LAG - 284)) | (1L << (LAST_VALUE - 284)) | (1L << (LEAD - 284)) | (1L << (MAX - 284)) | (1L << (MIN - 284)) | (1L << (NTILE - 284)) | (1L << (NTH_VALUE - 284)) | (1L << (PERCENT_RANK - 284)) | (1L << (RANK - 284)) | (1L << (ROW_NUMBER - 284)) | (1L << (STD - 284)) | (1L << (STDDEV - 284)) | (1L << (STDDEV_POP - 284)) | (1L << (STDDEV_SAMP - 284)) | (1L << (SUM - 284)) | (1L << (VAR_POP - 284)) | (1L << (VAR_SAMP - 284)) | (1L << (VARIANCE - 284)) | (1L << (CURRENT_DATE - 284)) | (1L << (CURRENT_TIME - 284)) | (1L << (CURRENT_TIMESTAMP - 284)) | (1L << (LOCALTIME - 284)) | (1L << (CURDATE - 284)) | (1L << (CURTIME - 284)) | (1L << (DATE_ADD - 284)) | (1L << (DATE_SUB - 284)) | (1L << (LOCALTIMESTAMP - 284)) | (1L << (NOW - 284)) | (1L << (POSITION - 284)) | (1L << (SUBSTR - 284)) | (1L << (SUBSTRING - 284)) | (1L << (SYSDATE - 284)) | (1L << (TRIM - 284)) | (1L << (UTC_DATE - 284)) | (1L << (UTC_TIME - 284)) | (1L << (UTC_TIMESTAMP - 284)) | (1L << (ACCOUNT - 284)) | (1L << (ACTION - 284)) | (1L << (AFTER - 284)) | (1L << (AGGREGATE - 284)) | (1L << (ALGORITHM - 284)) | (1L << (ANY - 284)) | (1L << (AT - 284)) | (1L << (AUTHORS - 284)) | (1L << (AUTOCOMMIT - 284)) | (1L << (AUTOEXTEND_SIZE - 284)) | (1L << (AUTO_INCREMENT - 284)) | (1L << (AVG_ROW_LENGTH - 284)) | (1L << (BEGIN - 284)))) != 0) || ((((_la - 348)) & ~0x3f) == 0 && ((1L << (_la - 348)) & ((1L << (BINLOG - 348)) | (1L << (BIT - 348)) | (1L << (BLOCK - 348)) | (1L << (BOOL - 348)) | (1L << (BOOLEAN - 348)) | (1L << (BTREE - 348)) | (1L << (CACHE - 348)) | (1L << (CASCADED - 348)) | (1L << (CHAIN - 348)) | (1L << (CHANGED - 348)) | (1L << (CHANNEL - 348)) | (1L << (CHECKSUM - 348)) | (1L << (PAGE_CHECKSUM - 348)) | (1L << (CIPHER - 348)) | (1L << (CLASS_ORIGIN - 348)) | (1L << (CLIENT - 348)) | (1L << (CLOSE - 348)) | (1L << (CLUSTERING - 348)) | (1L << (COALESCE - 348)) | (1L << (CODE - 348)) | (1L << (COLUMNS - 348)) | (1L << (COLUMN_FORMAT - 348)) | (1L << (COLUMN_NAME - 348)) | (1L << (COMMENT - 348)) | (1L << (COMMIT - 348)) | (1L << (COMPACT - 348)) | (1L << (COMPLETION - 348)) | (1L << (COMPRESSED - 348)) | (1L << (COMPRESSION - 348)) | (1L << (CONCURRENT - 348)) | (1L << (CONNECT - 348)) | (1L << (CONNECTION - 348)) | (1L << (CONSISTENT - 348)) | (1L << (CONSTRAINT_CATALOG - 348)) | (1L << (CONSTRAINT_SCHEMA - 348)) | (1L << (CONSTRAINT_NAME - 348)) | (1L << (CONTAINS - 348)) | (1L << (CONTEXT - 348)) | (1L << (CONTRIBUTORS - 348)) | (1L << (COPY - 348)) | (1L << (CPU - 348)) | (1L << (CYCLE - 348)) | (1L << (CURSOR_NAME - 348)) | (1L << (DATA - 348)) | (1L << (DATAFILE - 348)) | (1L << (DEALLOCATE - 348)) | (1L << (DEFAULT_AUTH - 348)) | (1L << (DEFINER - 348)) | (1L << (DELAY_KEY_WRITE - 348)) | (1L << (DES_KEY_FILE - 348)) | (1L << (DIRECTORY - 348)) | (1L << (DISABLE - 348)) | (1L << (DISCARD - 348)) | (1L << (DISK - 348)) | (1L << (DO - 348)) | (1L << (DUMPFILE - 348)) | (1L << (DUPLICATE - 348)) | (1L << (DYNAMIC - 348)) | (1L << (ENABLE - 348)) | (1L << (ENCRYPTED - 348)) | (1L << (ENCRYPTION - 348)) | (1L << (ENCRYPTION_KEY_ID - 348)) | (1L << (END - 348)) | (1L << (ENDS - 348)))) != 0) || ((((_la - 412)) & ~0x3f) == 0 && ((1L << (_la - 412)) & ((1L << (ENGINE - 412)) | (1L << (ENGINES - 412)) | (1L << (ERROR - 412)) | (1L << (ERRORS - 412)) | (1L << (ESCAPE - 412)) | (1L << (EVEN - 412)) | (1L << (EVENT - 412)) | (1L << (EVENTS - 412)) | (1L << (EVERY - 412)) | (1L << (EXCHANGE - 412)) | (1L << (EXCLUSIVE - 412)) | (1L << (EXPIRE - 412)) | (1L << (EXPORT - 412)) | (1L << (EXTENDED - 412)) | (1L << (EXTENT_SIZE - 412)) | (1L << (FAILED_LOGIN_ATTEMPTS - 412)) | (1L << (FAST - 412)) | (1L << (FAULTS - 412)) | (1L << (FIELDS - 412)) | (1L << (FILE_BLOCK_SIZE - 412)) | (1L << (FILTER - 412)) | (1L << (FIRST - 412)) | (1L << (FIXED - 412)) | (1L << (FLUSH - 412)) | (1L << (FOLLOWS - 412)) | (1L << (FOUND - 412)) | (1L << (FULL - 412)) | (1L << (FUNCTION - 412)) | (1L << (GENERAL - 412)) | (1L << (GLOBAL - 412)) | (1L << (GRANTS - 412)) | (1L << (GROUP_REPLICATION - 412)) | (1L << (HANDLER - 412)) | (1L << (HASH - 412)) | (1L << (HELP - 412)) | (1L << (HISTORY - 412)) | (1L << (HOST - 412)) | (1L << (HOSTS - 412)) | (1L << (IDENTIFIED - 412)) | (1L << (IGNORE_SERVER_IDS - 412)) | (1L << (IMPORT - 412)) | (1L << (INCREMENT - 412)) | (1L << (INDEXES - 412)) | (1L << (INITIAL_SIZE - 412)) | (1L << (INPLACE - 412)) | (1L << (INSERT_METHOD - 412)) | (1L << (INSTALL - 412)) | (1L << (INSTANCE - 412)) | (1L << (INSTANT - 412)) | (1L << (INVISIBLE - 412)) | (1L << (INVOKER - 412)) | (1L << (IO - 412)) | (1L << (IO_THREAD - 412)) | (1L << (IPC - 412)) | (1L << (ISOLATION - 412)) | (1L << (ISSUER - 412)) | (1L << (JSON - 412)) | (1L << (KEY_BLOCK_SIZE - 412)) | (1L << (LANGUAGE - 412)) | (1L << (LAST - 412)) | (1L << (LEAVES - 412)) | (1L << (LESS - 412)) | (1L << (LEVEL - 412)))) != 0) || ((((_la - 476)) & ~0x3f) == 0 && ((1L << (_la - 476)) & ((1L << (LIST - 476)) | (1L << (LOCAL - 476)) | (1L << (LOGFILE - 476)) | (1L << (LOGS - 476)) | (1L << (MASTER - 476)) | (1L << (MASTER_AUTO_POSITION - 476)) | (1L << (MASTER_CONNECT_RETRY - 476)) | (1L << (MASTER_DELAY - 476)) | (1L << (MASTER_HEARTBEAT_PERIOD - 476)) | (1L << (MASTER_HOST - 476)) | (1L << (MASTER_LOG_FILE - 476)) | (1L << (MASTER_LOG_POS - 476)) | (1L << (MASTER_PASSWORD - 476)) | (1L << (MASTER_PORT - 476)) | (1L << (MASTER_RETRY_COUNT - 476)) | (1L << (MASTER_SSL - 476)) | (1L << (MASTER_SSL_CA - 476)) | (1L << (MASTER_SSL_CAPATH - 476)) | (1L << (MASTER_SSL_CERT - 476)) | (1L << (MASTER_SSL_CIPHER - 476)) | (1L << (MASTER_SSL_CRL - 476)) | (1L << (MASTER_SSL_CRLPATH - 476)) | (1L << (MASTER_SSL_KEY - 476)) | (1L << (MASTER_TLS_VERSION - 476)) | (1L << (MASTER_USER - 476)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 476)) | (1L << (MAX_QUERIES_PER_HOUR - 476)) | (1L << (MAX_ROWS - 476)) | (1L << (MAX_SIZE - 476)) | (1L << (MAX_UPDATES_PER_HOUR - 476)) | (1L << (MAX_USER_CONNECTIONS - 476)) | (1L << (MEDIUM - 476)) | (1L << (MEMBER - 476)) | (1L << (MERGE - 476)) | (1L << (MESSAGE_TEXT - 476)) | (1L << (MID - 476)) | (1L << (MIGRATE - 476)) | (1L << (MIN_ROWS - 476)) | (1L << (MODE - 476)) | (1L << (MODIFY - 476)) | (1L << (MUTEX - 476)) | (1L << (MYSQL - 476)) | (1L << (MYSQL_ERRNO - 476)) | (1L << (NAME - 476)) | (1L << (NAMES - 476)) | (1L << (NCHAR - 476)) | (1L << (NEVER - 476)) | (1L << (NEXT - 476)) | (1L << (NO - 476)) | (1L << (NOCACHE - 476)) | (1L << (NOCOPY - 476)) | (1L << (NOCYCLE - 476)) | (1L << (NOMAXVALUE - 476)) | (1L << (NOMINVALUE - 476)) | (1L << (NOWAIT - 476)) | (1L << (NODEGROUP - 476)) | (1L << (NONE - 476)) | (1L << (ODBC - 476)) | (1L << (OFFLINE - 476)) | (1L << (OFFSET - 476)) | (1L << (OF - 476)) | (1L << (OJ - 476)) | (1L << (OLD_PASSWORD - 476)) | (1L << (ONE - 476)))) != 0) || ((((_la - 540)) & ~0x3f) == 0 && ((1L << (_la - 540)) & ((1L << (ONLINE - 540)) | (1L << (ONLY - 540)) | (1L << (OPEN - 540)) | (1L << (OPTIMIZER_COSTS - 540)) | (1L << (OPTIONS - 540)) | (1L << (OWNER - 540)) | (1L << (PACK_KEYS - 540)) | (1L << (PAGE - 540)) | (1L << (PARSER - 540)) | (1L << (PARTIAL - 540)) | (1L << (PARTITIONING - 540)) | (1L << (PARTITIONS - 540)) | (1L << (PASSWORD - 540)) | (1L << (PASSWORD_LOCK_TIME - 540)) | (1L << (PHASE - 540)) | (1L << (PLUGIN - 540)) | (1L << (PLUGIN_DIR - 540)) | (1L << (PLUGINS - 540)) | (1L << (PORT - 540)) | (1L << (PRECEDES - 540)) | (1L << (PREPARE - 540)) | (1L << (PRESERVE - 540)) | (1L << (PREV - 540)) | (1L << (PROCESSLIST - 540)) | (1L << (PROFILE - 540)) | (1L << (PROFILES - 540)) | (1L << (PROXY - 540)) | (1L << (QUERY - 540)) | (1L << (QUICK - 540)) | (1L << (REBUILD - 540)) | (1L << (RECOVER - 540)) | (1L << (RECURSIVE - 540)) | (1L << (REDO_BUFFER_SIZE - 540)) | (1L << (REDUNDANT - 540)) | (1L << (RELAY - 540)) | (1L << (RELAY_LOG_FILE - 540)) | (1L << (RELAY_LOG_POS - 540)) | (1L << (RELAYLOG - 540)) | (1L << (REMOVE - 540)) | (1L << (REORGANIZE - 540)) | (1L << (REPAIR - 540)) | (1L << (REPLICATE_DO_DB - 540)) | (1L << (REPLICATE_DO_TABLE - 540)) | (1L << (REPLICATE_IGNORE_DB - 540)) | (1L << (REPLICATE_IGNORE_TABLE - 540)) | (1L << (REPLICATE_REWRITE_DB - 540)) | (1L << (REPLICATE_WILD_DO_TABLE - 540)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 540)) | (1L << (REPLICATION - 540)) | (1L << (RESET - 540)) | (1L << (RESTART - 540)) | (1L << (RESUME - 540)) | (1L << (RETURNED_SQLSTATE - 540)) | (1L << (RETURNING - 540)) | (1L << (RETURNS - 540)) | (1L << (REUSE - 540)) | (1L << (ROLE - 540)) | (1L << (ROLLBACK - 540)) | (1L << (ROLLUP - 540)) | (1L << (ROTATE - 540)) | (1L << (ROW - 540)))) != 0) || ((((_la - 604)) & ~0x3f) == 0 && ((1L << (_la - 604)) & ((1L << (ROWS - 604)) | (1L << (ROW_FORMAT - 604)) | (1L << (RTREE - 604)) | (1L << (SAVEPOINT - 604)) | (1L << (SCHEDULE - 604)) | (1L << (SECURITY - 604)) | (1L << (SEQUENCE - 604)) | (1L << (SERVER - 604)) | (1L << (SESSION - 604)) | (1L << (SHARE - 604)) | (1L << (SHARED - 604)) | (1L << (SIGNED - 604)) | (1L << (SIMPLE - 604)) | (1L << (SLAVE - 604)) | (1L << (SLOW - 604)) | (1L << (SNAPSHOT - 604)) | (1L << (SOCKET - 604)) | (1L << (SOME - 604)) | (1L << (SONAME - 604)) | (1L << (SOUNDS - 604)) | (1L << (SOURCE - 604)) | (1L << (SQL_AFTER_GTIDS - 604)) | (1L << (SQL_AFTER_MTS_GAPS - 604)) | (1L << (SQL_BEFORE_GTIDS - 604)) | (1L << (SQL_BUFFER_RESULT - 604)) | (1L << (SQL_CACHE - 604)) | (1L << (SQL_NO_CACHE - 604)) | (1L << (SQL_THREAD - 604)) | (1L << (START - 604)) | (1L << (STARTS - 604)) | (1L << (STATS_AUTO_RECALC - 604)) | (1L << (STATS_PERSISTENT - 604)) | (1L << (STATS_SAMPLE_PAGES - 604)) | (1L << (STATUS - 604)) | (1L << (STOP - 604)) | (1L << (STORAGE - 604)) | (1L << (STRING - 604)) | (1L << (SUBCLASS_ORIGIN - 604)) | (1L << (SUBJECT - 604)) | (1L << (SUBPARTITION - 604)) | (1L << (SUBPARTITIONS - 604)) | (1L << (SUSPEND - 604)) | (1L << (SWAPS - 604)) | (1L << (SWITCHES - 604)) | (1L << (TABLE_NAME - 604)) | (1L << (TABLESPACE - 604)) | (1L << (TABLE_TYPE - 604)) | (1L << (TEMPORARY - 604)) | (1L << (TEMPTABLE - 604)) | (1L << (THAN - 604)) | (1L << (TRADITIONAL - 604)) | (1L << (TRANSACTION - 604)) | (1L << (TRANSACTIONAL - 604)) | (1L << (TRIGGERS - 604)) | (1L << (TRUNCATE - 604)) | (1L << (UNBOUNDED - 604)) | (1L << (UNDEFINED - 604)) | (1L << (UNDOFILE - 604)) | (1L << (UNDO_BUFFER_SIZE - 604)) | (1L << (UNINSTALL - 604)) | (1L << (UNKNOWN - 604)) | (1L << (UNTIL - 604)) | (1L << (UPGRADE - 604)))) != 0) || ((((_la - 668)) & ~0x3f) == 0 && ((1L << (_la - 668)) & ((1L << (USER - 668)) | (1L << (USE_FRM - 668)) | (1L << (USER_RESOURCES - 668)) | (1L << (VALIDATION - 668)) | (1L << (VALUE - 668)) | (1L << (VARIABLES - 668)) | (1L << (VIEW - 668)) | (1L << (VIRTUAL - 668)) | (1L << (VISIBLE - 668)) | (1L << (WAIT - 668)) | (1L << (WARNINGS - 668)) | (1L << (WITHOUT - 668)) | (1L << (WORK - 668)) | (1L << (WRAPPER - 668)) | (1L << (X509 - 668)) | (1L << (XA - 668)) | (1L << (XML - 668)) | (1L << (YES - 668)) | (1L << (EUR - 668)) | (1L << (USA - 668)) | (1L << (JIS - 668)) | (1L << (ISO - 668)) | (1L << (INTERNAL - 668)) | (1L << (QUARTER - 668)) | (1L << (MONTH - 668)) | (1L << (DAY - 668)) | (1L << (HOUR - 668)) | (1L << (MINUTE - 668)) | (1L << (WEEK - 668)) | (1L << (SECOND - 668)) | (1L << (MICROSECOND - 668)) | (1L << (USER_STATISTICS - 668)) | (1L << (CLIENT_STATISTICS - 668)) | (1L << (INDEX_STATISTICS - 668)) | (1L << (TABLE_STATISTICS - 668)) | (1L << (FIREWALL_RULES - 668)) | (1L << (ADMIN - 668)) | (1L << (APPLICATION_PASSWORD_ADMIN - 668)) | (1L << (AUDIT_ADMIN - 668)) | (1L << (AUDIT_ABORT_EXEMPT - 668)) | (1L << (AUTHENTICATION_POLICY_ADMIN - 668)) | (1L << (BACKUP_ADMIN - 668)) | (1L << (BINLOG_ADMIN - 668)) | (1L << (BINLOG_ENCRYPTION_ADMIN - 668)) | (1L << (CLONE_ADMIN - 668)) | (1L << (CONNECTION_ADMIN - 668)) | (1L << (ENCRYPTION_KEY_ADMIN - 668)) | (1L << (EXECUTE - 668)) | (1L << (FILE - 668)) | (1L << (FIREWALL_ADMIN - 668)) | (1L << (FIREWALL_EXEMPT - 668)) | (1L << (FIREWALL_USER - 668)) | (1L << (FLUSH_OPTIMIZER_COSTS - 668)) | (1L << (FLUSH_STATUS - 668)) | (1L << (FLUSH_TABLES - 668)) | (1L << (FLUSH_USER_RESOURCES - 668)) | (1L << (GROUP_REPLICATION_ADMIN - 668)) | (1L << (INNODB_REDO_LOG_ARCHIVE - 668)) | (1L << (INNODB_REDO_LOG_ENABLE - 668)) | (1L << (INVOKE - 668)) | (1L << (LAMBDA - 668)) | (1L << (NDB_STORED_USER - 668)) | (1L << (PASSWORDLESS_USER_ADMIN - 668)))) != 0) || ((((_la - 732)) & ~0x3f) == 0 && ((1L << (_la - 732)) & ((1L << (PERSIST_RO_VARIABLES_ADMIN - 732)) | (1L << (PRIVILEGES - 732)) | (1L << (PROCESS - 732)) | (1L << (RELOAD - 732)) | (1L << (REPLICATION_APPLIER - 732)) | (1L << (REPLICATION_SLAVE_ADMIN - 732)) | (1L << (RESOURCE_GROUP_ADMIN - 732)) | (1L << (RESOURCE_GROUP_USER - 732)) | (1L << (ROLE_ADMIN - 732)) | (1L << (ROUTINE - 732)) | (1L << (S3 - 732)) | (1L << (SESSION_VARIABLES_ADMIN - 732)) | (1L << (SET_USER_ID - 732)) | (1L << (SHOW_ROUTINE - 732)) | (1L << (SHUTDOWN - 732)) | (1L << (SUPER - 732)) | (1L << (SYSTEM_VARIABLES_ADMIN - 732)) | (1L << (TABLES - 732)) | (1L << (TABLE_ENCRYPTION_ADMIN - 732)) | (1L << (VERSION_TOKEN_ADMIN - 732)) | (1L << (XA_RECOVER_ADMIN - 732)) | (1L << (ARMSCII8 - 732)) | (1L << (ASCII - 732)) | (1L << (BIG5 - 732)) | (1L << (CP1250 - 732)) | (1L << (CP1251 - 732)) | (1L << (CP1256 - 732)) | (1L << (CP1257 - 732)) | (1L << (CP850 - 732)) | (1L << (CP852 - 732)) | (1L << (CP866 - 732)) | (1L << (CP932 - 732)) | (1L << (DEC8 - 732)) | (1L << (EUCJPMS - 732)) | (1L << (EUCKR - 732)) | (1L << (GB18030 - 732)) | (1L << (GB2312 - 732)) | (1L << (GBK - 732)) | (1L << (GEOSTD8 - 732)) | (1L << (GREEK - 732)) | (1L << (HEBREW - 732)) | (1L << (HP8 - 732)) | (1L << (KEYBCS2 - 732)) | (1L << (KOI8R - 732)) | (1L << (KOI8U - 732)) | (1L << (LATIN1 - 732)) | (1L << (LATIN2 - 732)) | (1L << (LATIN5 - 732)) | (1L << (LATIN7 - 732)) | (1L << (MACCE - 732)) | (1L << (MACROMAN - 732)) | (1L << (SJIS - 732)) | (1L << (SWE7 - 732)) | (1L << (TIS620 - 732)) | (1L << (UCS2 - 732)) | (1L << (UJIS - 732)) | (1L << (UTF16 - 732)) | (1L << (UTF16LE - 732)) | (1L << (UTF32 - 732)) | (1L << (UTF8 - 732)) | (1L << (UTF8MB3 - 732)) | (1L << (UTF8MB4 - 732)) | (1L << (ARCHIVE - 732)))) != 0) || ((((_la - 796)) & ~0x3f) == 0 && ((1L << (_la - 796)) & ((1L << (BLACKHOLE - 796)) | (1L << (CSV - 796)) | (1L << (FEDERATED - 796)) | (1L << (INNODB - 796)) | (1L << (MEMORY - 796)) | (1L << (MRG_MYISAM - 796)) | (1L << (MYISAM - 796)) | (1L << (NDB - 796)) | (1L << (NDBCLUSTER - 796)) | (1L << (PERFORMANCE_SCHEMA - 796)) | (1L << (TOKUDB - 796)) | (1L << (REPEATABLE - 796)) | (1L << (COMMITTED - 796)) | (1L << (UNCOMMITTED - 796)) | (1L << (SERIALIZABLE - 796)) | (1L << (GEOMETRYCOLLECTION - 796)) | (1L << (GEOMETRY - 796)) | (1L << (LINESTRING - 796)) | (1L << (MULTILINESTRING - 796)) | (1L << (MULTIPOINT - 796)) | (1L << (MULTIPOLYGON - 796)) | (1L << (POINT - 796)) | (1L << (POLYGON - 796)) | (1L << (ABS - 796)) | (1L << (ACOS - 796)) | (1L << (ADDDATE - 796)) | (1L << (ADDTIME - 796)) | (1L << (AES_DECRYPT - 796)) | (1L << (AES_ENCRYPT - 796)) | (1L << (AREA - 796)) | (1L << (ASBINARY - 796)) | (1L << (ASIN - 796)) | (1L << (ASTEXT - 796)) | (1L << (ASWKB - 796)) | (1L << (ASWKT - 796)) | (1L << (ASYMMETRIC_DECRYPT - 796)) | (1L << (ASYMMETRIC_DERIVE - 796)) | (1L << (ASYMMETRIC_ENCRYPT - 796)) | (1L << (ASYMMETRIC_SIGN - 796)) | (1L << (ASYMMETRIC_VERIFY - 796)) | (1L << (ATAN - 796)) | (1L << (ATAN2 - 796)) | (1L << (BENCHMARK - 796)) | (1L << (BIN - 796)) | (1L << (BIT_COUNT - 796)) | (1L << (BIT_LENGTH - 796)) | (1L << (BUFFER - 796)) | (1L << (CATALOG_NAME - 796)) | (1L << (CEIL - 796)) | (1L << (CEILING - 796)) | (1L << (CENTROID - 796)) | (1L << (CHARACTER_LENGTH - 796)) | (1L << (CHARSET - 796)) | (1L << (CHAR_LENGTH - 796)) | (1L << (COERCIBILITY - 796)) | (1L << (COLLATION - 796)) | (1L << (COMPRESS - 796)) | (1L << (CONCAT - 796)) | (1L << (CONCAT_WS - 796)) | (1L << (CONNECTION_ID - 796)) | (1L << (CONV - 796)) | (1L << (CONVERT_TZ - 796)) | (1L << (COS - 796)))) != 0) || ((((_la - 860)) & ~0x3f) == 0 && ((1L << (_la - 860)) & ((1L << (COT - 860)) | (1L << (CRC32 - 860)) | (1L << (CREATE_ASYMMETRIC_PRIV_KEY - 860)) | (1L << (CREATE_ASYMMETRIC_PUB_KEY - 860)) | (1L << (CREATE_DH_PARAMETERS - 860)) | (1L << (CREATE_DIGEST - 860)) | (1L << (CROSSES - 860)) | (1L << (DATEDIFF - 860)) | (1L << (DATE_FORMAT - 860)) | (1L << (DAYNAME - 860)) | (1L << (DAYOFMONTH - 860)) | (1L << (DAYOFWEEK - 860)) | (1L << (DAYOFYEAR - 860)) | (1L << (DECODE - 860)) | (1L << (DEGREES - 860)) | (1L << (DES_DECRYPT - 860)) | (1L << (DES_ENCRYPT - 860)) | (1L << (DIMENSION - 860)) | (1L << (DISJOINT - 860)) | (1L << (ELT - 860)) | (1L << (ENCODE - 860)) | (1L << (ENCRYPT - 860)) | (1L << (ENDPOINT - 860)) | (1L << (ENGINE_ATTRIBUTE - 860)) | (1L << (ENVELOPE - 860)) | (1L << (EQUALS - 860)) | (1L << (EXP - 860)) | (1L << (EXPORT_SET - 860)) | (1L << (EXTERIORRING - 860)) | (1L << (EXTRACTVALUE - 860)) | (1L << (FIELD - 860)) | (1L << (FIND_IN_SET - 860)) | (1L << (FLOOR - 860)) | (1L << (FORMAT - 860)) | (1L << (FOUND_ROWS - 860)) | (1L << (FROM_BASE64 - 860)) | (1L << (FROM_DAYS - 860)) | (1L << (FROM_UNIXTIME - 860)) | (1L << (GEOMCOLLFROMTEXT - 860)) | (1L << (GEOMCOLLFROMWKB - 860)) | (1L << (GEOMETRYCOLLECTIONFROMTEXT - 860)) | (1L << (GEOMETRYCOLLECTIONFROMWKB - 860)) | (1L << (GEOMETRYFROMTEXT - 860)) | (1L << (GEOMETRYFROMWKB - 860)) | (1L << (GEOMETRYN - 860)) | (1L << (GEOMETRYTYPE - 860)) | (1L << (GEOMFROMTEXT - 860)) | (1L << (GEOMFROMWKB - 860)) | (1L << (GET_FORMAT - 860)) | (1L << (GET_LOCK - 860)) | (1L << (GLENGTH - 860)) | (1L << (GREATEST - 860)) | (1L << (GTID_SUBSET - 860)) | (1L << (GTID_SUBTRACT - 860)) | (1L << (HEX - 860)) | (1L << (IFNULL - 860)) | (1L << (INET6_ATON - 860)) | (1L << (INET6_NTOA - 860)) | (1L << (INET_ATON - 860)) | (1L << (INET_NTOA - 860)) | (1L << (INSTR - 860)) | (1L << (INTERIORRINGN - 860)) | (1L << (INTERSECTS - 860)) | (1L << (ISCLOSED - 860)))) != 0) || ((((_la - 924)) & ~0x3f) == 0 && ((1L << (_la - 924)) & ((1L << (ISEMPTY - 924)) | (1L << (ISNULL - 924)) | (1L << (ISSIMPLE - 924)) | (1L << (IS_FREE_LOCK - 924)) | (1L << (IS_IPV4 - 924)) | (1L << (IS_IPV4_COMPAT - 924)) | (1L << (IS_IPV4_MAPPED - 924)) | (1L << (IS_IPV6 - 924)) | (1L << (IS_USED_LOCK - 924)) | (1L << (LAST_INSERT_ID - 924)) | (1L << (LCASE - 924)) | (1L << (LEAST - 924)) | (1L << (LENGTH - 924)) | (1L << (LINEFROMTEXT - 924)) | (1L << (LINEFROMWKB - 924)) | (1L << (LINESTRINGFROMTEXT - 924)) | (1L << (LINESTRINGFROMWKB - 924)) | (1L << (LN - 924)) | (1L << (LOAD_FILE - 924)) | (1L << (LOCATE - 924)) | (1L << (LOG - 924)) | (1L << (LOG10 - 924)) | (1L << (LOG2 - 924)) | (1L << (LOWER - 924)) | (1L << (LPAD - 924)) | (1L << (LTRIM - 924)) | (1L << (MAKEDATE - 924)) | (1L << (MAKETIME - 924)) | (1L << (MAKE_SET - 924)) | (1L << (MASTER_POS_WAIT - 924)) | (1L << (MBRCONTAINS - 924)) | (1L << (MBRDISJOINT - 924)) | (1L << (MBREQUAL - 924)) | (1L << (MBRINTERSECTS - 924)) | (1L << (MBROVERLAPS - 924)) | (1L << (MBRTOUCHES - 924)) | (1L << (MBRWITHIN - 924)) | (1L << (MD5 - 924)) | (1L << (MLINEFROMTEXT - 924)) | (1L << (MLINEFROMWKB - 924)) | (1L << (MONTHNAME - 924)) | (1L << (MPOINTFROMTEXT - 924)) | (1L << (MPOINTFROMWKB - 924)) | (1L << (MPOLYFROMTEXT - 924)) | (1L << (MPOLYFROMWKB - 924)) | (1L << (MULTILINESTRINGFROMTEXT - 924)) | (1L << (MULTILINESTRINGFROMWKB - 924)) | (1L << (MULTIPOINTFROMTEXT - 924)) | (1L << (MULTIPOINTFROMWKB - 924)) | (1L << (MULTIPOLYGONFROMTEXT - 924)) | (1L << (MULTIPOLYGONFROMWKB - 924)) | (1L << (NAME_CONST - 924)) | (1L << (NULLIF - 924)) | (1L << (NUMGEOMETRIES - 924)) | (1L << (NUMINTERIORRINGS - 924)) | (1L << (NUMPOINTS - 924)) | (1L << (OCT - 924)) | (1L << (OCTET_LENGTH - 924)) | (1L << (ORD - 924)) | (1L << (OVERLAPS - 924)) | (1L << (PERIOD_ADD - 924)) | (1L << (PERIOD_DIFF - 924)) | (1L << (PI - 924)) | (1L << (POINTFROMTEXT - 924)))) != 0) || ((((_la - 988)) & ~0x3f) == 0 && ((1L << (_la - 988)) & ((1L << (POINTFROMWKB - 988)) | (1L << (POINTN - 988)) | (1L << (POLYFROMTEXT - 988)) | (1L << (POLYFROMWKB - 988)) | (1L << (POLYGONFROMTEXT - 988)) | (1L << (POLYGONFROMWKB - 988)) | (1L << (POW - 988)) | (1L << (POWER - 988)) | (1L << (QUOTE - 988)) | (1L << (RADIANS - 988)) | (1L << (RAND - 988)) | (1L << (RANDOM - 988)) | (1L << (RANDOM_BYTES - 988)) | (1L << (RELEASE_LOCK - 988)) | (1L << (REVERSE - 988)) | (1L << (ROUND - 988)) | (1L << (ROW_COUNT - 988)) | (1L << (RPAD - 988)) | (1L << (RTRIM - 988)) | (1L << (SEC_TO_TIME - 988)) | (1L << (SECONDARY_ENGINE_ATTRIBUTE - 988)) | (1L << (SENSITIVE_VARIABLES_OBSERVER - 988)) | (1L << (SESSION_USER - 988)) | (1L << (SHA - 988)) | (1L << (SHA1 - 988)) | (1L << (SHA2 - 988)) | (1L << (SCHEMA_NAME - 988)) | (1L << (SIGN - 988)) | (1L << (SIN - 988)) | (1L << (SLEEP - 988)) | (1L << (SOUNDEX - 988)) | (1L << (SQL_THREAD_WAIT_AFTER_GTIDS - 988)) | (1L << (SQRT - 988)) | (1L << (SRID - 988)) | (1L << (STARTPOINT - 988)) | (1L << (STRCMP - 988)) | (1L << (STR_TO_DATE - 988)) | (1L << (ST_AREA - 988)) | (1L << (ST_ASBINARY - 988)) | (1L << (ST_ASTEXT - 988)) | (1L << (ST_ASWKB - 988)) | (1L << (ST_ASWKT - 988)) | (1L << (ST_BUFFER - 988)) | (1L << (ST_CENTROID - 988)) | (1L << (ST_CONTAINS - 988)) | (1L << (ST_CROSSES - 988)) | (1L << (ST_DIFFERENCE - 988)) | (1L << (ST_DIMENSION - 988)) | (1L << (ST_DISJOINT - 988)) | (1L << (ST_DISTANCE - 988)) | (1L << (ST_ENDPOINT - 988)) | (1L << (ST_ENVELOPE - 988)) | (1L << (ST_EQUALS - 988)) | (1L << (ST_EXTERIORRING - 988)) | (1L << (ST_GEOMCOLLFROMTEXT - 988)) | (1L << (ST_GEOMCOLLFROMTXT - 988)) | (1L << (ST_GEOMCOLLFROMWKB - 988)) | (1L << (ST_GEOMETRYCOLLECTIONFROMTEXT - 988)) | (1L << (ST_GEOMETRYCOLLECTIONFROMWKB - 988)) | (1L << (ST_GEOMETRYFROMTEXT - 988)) | (1L << (ST_GEOMETRYFROMWKB - 988)) | (1L << (ST_GEOMETRYN - 988)) | (1L << (ST_GEOMETRYTYPE - 988)) | (1L << (ST_GEOMFROMTEXT - 988)))) != 0) || ((((_la - 1052)) & ~0x3f) == 0 && ((1L << (_la - 1052)) & ((1L << (ST_GEOMFROMWKB - 1052)) | (1L << (ST_INTERIORRINGN - 1052)) | (1L << (ST_INTERSECTION - 1052)) | (1L << (ST_INTERSECTS - 1052)) | (1L << (ST_ISCLOSED - 1052)) | (1L << (ST_ISEMPTY - 1052)) | (1L << (ST_ISSIMPLE - 1052)) | (1L << (ST_LINEFROMTEXT - 1052)) | (1L << (ST_LINEFROMWKB - 1052)) | (1L << (ST_LINESTRINGFROMTEXT - 1052)) | (1L << (ST_LINESTRINGFROMWKB - 1052)) | (1L << (ST_NUMGEOMETRIES - 1052)) | (1L << (ST_NUMINTERIORRING - 1052)) | (1L << (ST_NUMINTERIORRINGS - 1052)) | (1L << (ST_NUMPOINTS - 1052)) | (1L << (ST_OVERLAPS - 1052)) | (1L << (ST_POINTFROMTEXT - 1052)) | (1L << (ST_POINTFROMWKB - 1052)) | (1L << (ST_POINTN - 1052)) | (1L << (ST_POLYFROMTEXT - 1052)) | (1L << (ST_POLYFROMWKB - 1052)) | (1L << (ST_POLYGONFROMTEXT - 1052)) | (1L << (ST_POLYGONFROMWKB - 1052)) | (1L << (ST_SRID - 1052)) | (1L << (ST_STARTPOINT - 1052)) | (1L << (ST_SYMDIFFERENCE - 1052)) | (1L << (ST_TOUCHES - 1052)) | (1L << (ST_UNION - 1052)) | (1L << (ST_WITHIN - 1052)) | (1L << (ST_X - 1052)) | (1L << (ST_Y - 1052)) | (1L << (SUBDATE - 1052)) | (1L << (SUBSTRING_INDEX - 1052)) | (1L << (SUBTIME - 1052)) | (1L << (SYSTEM_USER - 1052)) | (1L << (SYSTEM - 1052)) | (1L << (TAN - 1052)) | (1L << (TELEMETRY_LOG_ADMIN - 1052)) | (1L << (TIMEDIFF - 1052)) | (1L << (TIMESTAMPADD - 1052)) | (1L << (TIMESTAMPDIFF - 1052)) | (1L << (TIME_FORMAT - 1052)) | (1L << (TIME_TO_SEC - 1052)) | (1L << (TOUCHES - 1052)) | (1L << (TO_BASE64 - 1052)) | (1L << (TO_DAYS - 1052)) | (1L << (TO_SECONDS - 1052)) | (1L << (TP_CONNECTION_ADMIN - 1052)) | (1L << (UCASE - 1052)) | (1L << (UNCOMPRESS - 1052)) | (1L << (UNCOMPRESSED_LENGTH - 1052)) | (1L << (UNHEX - 1052)) | (1L << (UNIX_TIMESTAMP - 1052)) | (1L << (UPDATEXML - 1052)) | (1L << (UPPER - 1052)) | (1L << (UUID - 1052)) | (1L << (UUID_SHORT - 1052)) | (1L << (VALIDATE_PASSWORD_STRENGTH - 1052)) | (1L << (VERSION - 1052)) | (1L << (VERSIONING - 1052)) | (1L << (WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS - 1052)) | (1L << (WEEKDAY - 1052)) | (1L << (WEEKOFYEAR - 1052)) | (1L << (WEIGHT_STRING - 1052)))) != 0) || ((((_la - 1116)) & ~0x3f) == 0 && ((1L << (_la - 1116)) & ((1L << (WITHIN - 1116)) | (1L << (YEARWEEK - 1116)) | (1L << (Y_FUNCTION - 1116)) | (1L << (X_FUNCTION - 1116)) | (1L << (VIA - 1116)) | (1L << (LASTVAL - 1116)) | (1L << (NEXTVAL - 1116)) | (1L << (SETVAL - 1116)) | (1L << (PREVIOUS - 1116)) | (1L << (PERSISTENT - 1116)) | (1L << (BINLOG_MONITOR - 1116)) | (1L << (BINLOG_REPLAY - 1116)) | (1L << (FEDERATED_ADMIN - 1116)) | (1L << (READ_ONLY_ADMIN - 1116)) | (1L << (REPLICA - 1116)) | (1L << (REPLICATION_MASTER_ADMIN - 1116)) | (1L << (MONITOR - 1116)) | (1L << (READ_ONLY - 1116)) | (1L << (REPLAY - 1116)) | (1L << (MOD - 1116)) | (1L << (CHARSET_REVERSE_QOUTE_STRING - 1116)) | (1L << (STRING_LITERAL - 1116)))) != 0) || _la==ID) {
					{
					setState(2835);
					((AlterByAddUniqueKeyContext)_localctx).indexName = uid();
					}
				}

				setState(2839);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==USING) {
					{
					setState(2838);
					indexType();
					}
				}

				setState(2841);
				indexColumnNames();
				setState(2845);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,369,_ctx);
				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
					if ( _alt==1 ) {
						{
						{
						setState(2842);
						indexOption();
						}
						} 
					}
					setState(2847);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,369,_ctx);
				}
				}
				break;
			case 7:
				_localctx = new AlterByAddSpecialIndexContext(_localctx);
				enterOuterAlt(_localctx, 7);
				{
				setState(2848);
				match(ADD);
				setState(2849);
				((AlterByAddSpecialIndexContext)_localctx).keyType = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==FULLTEXT || _la==SPATIAL) ) {
					((AlterByAddSpecialIndexContext)_localctx).keyType = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(2851);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==INDEX || _la==KEY) {
					{
					setState(2850);
					((AlterByAddSpecialIndexContext)_localctx).indexFormat = _input.LT(1);
					_la = _input.LA(1);
					if ( !(_la==INDEX || _la==KEY) ) {
						((AlterByAddSpecialIndexContext)_localctx).indexFormat = (Token)_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
				}

				setState(2854);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ARRAY) | (1L << ATTRIBUTE) | (1L << BUCKETS) | (1L << CONDITION) | (1L << CURRENT) | (1L << CURRENT_ROLE) | (1L << CURRENT_USER) | (1L << DATABASE) | (1L << DEFAULT) | (1L << DIAGNOSTICS) | (1L << EMPTY) | (1L << ENFORCED) | (1L << EXCEPT))) != 0) || ((((_la - 74)) & ~0x3f) == 0 && ((1L << (_la - 74)) & ((1L << (GROUP - 74)) | (1L << (GROUP_REPLICATION_STREAM - 74)) | (1L << (IF - 74)) | (1L << (IGNORED - 74)) | (1L << (INSERT - 74)) | (1L << (LATERAL - 74)) | (1L << (LEFT - 74)) | (1L << (LOCKED - 74)) | (1L << (MAXVALUE - 74)) | (1L << (MINVALUE - 74)) | (1L << (NUMBER - 74)) | (1L << (OPTIONAL - 74)) | (1L << (ORDER - 74)) | (1L << (PRIMARY - 74)))) != 0) || ((((_la - 142)) & ~0x3f) == 0 && ((1L << (_la - 142)) & ((1L << (REPEAT - 142)) | (1L << (REPLACE - 142)) | (1L << (RIGHT - 142)) | (1L << (SCHEMA - 142)) | (1L << (SKIP_ - 142)) | (1L << (SKIP_QUERY_REWRITE - 142)) | (1L << (STACKED - 142)) | (1L << (STATEMENT - 142)))) != 0) || ((((_la - 220)) & ~0x3f) == 0 && ((1L << (_la - 220)) & ((1L << (DATE - 220)) | (1L << (TIME - 220)) | (1L << (TIMESTAMP - 220)) | (1L << (DATETIME - 220)) | (1L << (YEAR - 220)) | (1L << (NATIONAL - 220)) | (1L << (BINARY - 220)) | (1L << (TEXT - 220)) | (1L << (ENUM - 220)) | (1L << (SERIAL - 220)) | (1L << (JSON_ARRAY - 220)) | (1L << (JSON_ARRAYAGG - 220)) | (1L << (JSON_ARRAY_APPEND - 220)) | (1L << (JSON_ARRAY_INSERT - 220)) | (1L << (JSON_CONTAINS - 220)) | (1L << (JSON_CONTAINS_PATH - 220)) | (1L << (JSON_DEPTH - 220)) | (1L << (JSON_EXTRACT - 220)) | (1L << (JSON_INSERT - 220)) | (1L << (JSON_KEYS - 220)) | (1L << (JSON_LENGTH - 220)) | (1L << (JSON_MERGE - 220)) | (1L << (JSON_MERGE_PATCH - 220)) | (1L << (JSON_MERGE_PRESERVE - 220)) | (1L << (JSON_OBJECT - 220)) | (1L << (JSON_OBJECTAGG - 220)) | (1L << (JSON_OVERLAPS - 220)) | (1L << (JSON_PRETTY - 220)) | (1L << (JSON_QUOTE - 220)) | (1L << (JSON_REMOVE - 220)) | (1L << (JSON_REPLACE - 220)) | (1L << (JSON_SCHEMA_VALID - 220)) | (1L << (JSON_SCHEMA_VALIDATION_REPORT - 220)) | (1L << (JSON_SEARCH - 220)) | (1L << (JSON_SET - 220)) | (1L << (JSON_STORAGE_FREE - 220)) | (1L << (JSON_STORAGE_SIZE - 220)) | (1L << (JSON_TABLE - 220)) | (1L << (JSON_TYPE - 220)) | (1L << (JSON_UNQUOTE - 220)))) != 0) || ((((_la - 284)) & ~0x3f) == 0 && ((1L << (_la - 284)) & ((1L << (JSON_VALID - 284)) | (1L << (JSON_VALUE - 284)) | (1L << (NESTED - 284)) | (1L << (ORDINALITY - 284)) | (1L << (PATH - 284)) | (1L << (AVG - 284)) | (1L << (BIT_AND - 284)) | (1L << (BIT_OR - 284)) | (1L << (BIT_XOR - 284)) | (1L << (COUNT - 284)) | (1L << (CUME_DIST - 284)) | (1L << (DENSE_RANK - 284)) | (1L << (FIRST_VALUE - 284)) | (1L << (GROUP_CONCAT - 284)) | (1L << (LAG - 284)) | (1L << (LAST_VALUE - 284)) | (1L << (LEAD - 284)) | (1L << (MAX - 284)) | (1L << (MIN - 284)) | (1L << (NTILE - 284)) | (1L << (NTH_VALUE - 284)) | (1L << (PERCENT_RANK - 284)) | (1L << (RANK - 284)) | (1L << (ROW_NUMBER - 284)) | (1L << (STD - 284)) | (1L << (STDDEV - 284)) | (1L << (STDDEV_POP - 284)) | (1L << (STDDEV_SAMP - 284)) | (1L << (SUM - 284)) | (1L << (VAR_POP - 284)) | (1L << (VAR_SAMP - 284)) | (1L << (VARIANCE - 284)) | (1L << (CURRENT_DATE - 284)) | (1L << (CURRENT_TIME - 284)) | (1L << (CURRENT_TIMESTAMP - 284)) | (1L << (LOCALTIME - 284)) | (1L << (CURDATE - 284)) | (1L << (CURTIME - 284)) | (1L << (DATE_ADD - 284)) | (1L << (DATE_SUB - 284)) | (1L << (LOCALTIMESTAMP - 284)) | (1L << (NOW - 284)) | (1L << (POSITION - 284)) | (1L << (SUBSTR - 284)) | (1L << (SUBSTRING - 284)) | (1L << (SYSDATE - 284)) | (1L << (TRIM - 284)) | (1L << (UTC_DATE - 284)) | (1L << (UTC_TIME - 284)) | (1L << (UTC_TIMESTAMP - 284)) | (1L << (ACCOUNT - 284)) | (1L << (ACTION - 284)) | (1L << (AFTER - 284)) | (1L << (AGGREGATE - 284)) | (1L << (ALGORITHM - 284)) | (1L << (ANY - 284)) | (1L << (AT - 284)) | (1L << (AUTHORS - 284)) | (1L << (AUTOCOMMIT - 284)) | (1L << (AUTOEXTEND_SIZE - 284)) | (1L << (AUTO_INCREMENT - 284)) | (1L << (AVG_ROW_LENGTH - 284)) | (1L << (BEGIN - 284)))) != 0) || ((((_la - 348)) & ~0x3f) == 0 && ((1L << (_la - 348)) & ((1L << (BINLOG - 348)) | (1L << (BIT - 348)) | (1L << (BLOCK - 348)) | (1L << (BOOL - 348)) | (1L << (BOOLEAN - 348)) | (1L << (BTREE - 348)) | (1L << (CACHE - 348)) | (1L << (CASCADED - 348)) | (1L << (CHAIN - 348)) | (1L << (CHANGED - 348)) | (1L << (CHANNEL - 348)) | (1L << (CHECKSUM - 348)) | (1L << (PAGE_CHECKSUM - 348)) | (1L << (CIPHER - 348)) | (1L << (CLASS_ORIGIN - 348)) | (1L << (CLIENT - 348)) | (1L << (CLOSE - 348)) | (1L << (CLUSTERING - 348)) | (1L << (COALESCE - 348)) | (1L << (CODE - 348)) | (1L << (COLUMNS - 348)) | (1L << (COLUMN_FORMAT - 348)) | (1L << (COLUMN_NAME - 348)) | (1L << (COMMENT - 348)) | (1L << (COMMIT - 348)) | (1L << (COMPACT - 348)) | (1L << (COMPLETION - 348)) | (1L << (COMPRESSED - 348)) | (1L << (COMPRESSION - 348)) | (1L << (CONCURRENT - 348)) | (1L << (CONNECT - 348)) | (1L << (CONNECTION - 348)) | (1L << (CONSISTENT - 348)) | (1L << (CONSTRAINT_CATALOG - 348)) | (1L << (CONSTRAINT_SCHEMA - 348)) | (1L << (CONSTRAINT_NAME - 348)) | (1L << (CONTAINS - 348)) | (1L << (CONTEXT - 348)) | (1L << (CONTRIBUTORS - 348)) | (1L << (COPY - 348)) | (1L << (CPU - 348)) | (1L << (CYCLE - 348)) | (1L << (CURSOR_NAME - 348)) | (1L << (DATA - 348)) | (1L << (DATAFILE - 348)) | (1L << (DEALLOCATE - 348)) | (1L << (DEFAULT_AUTH - 348)) | (1L << (DEFINER - 348)) | (1L << (DELAY_KEY_WRITE - 348)) | (1L << (DES_KEY_FILE - 348)) | (1L << (DIRECTORY - 348)) | (1L << (DISABLE - 348)) | (1L << (DISCARD - 348)) | (1L << (DISK - 348)) | (1L << (DO - 348)) | (1L << (DUMPFILE - 348)) | (1L << (DUPLICATE - 348)) | (1L << (DYNAMIC - 348)) | (1L << (ENABLE - 348)) | (1L << (ENCRYPTED - 348)) | (1L << (ENCRYPTION - 348)) | (1L << (ENCRYPTION_KEY_ID - 348)) | (1L << (END - 348)) | (1L << (ENDS - 348)))) != 0) || ((((_la - 412)) & ~0x3f) == 0 && ((1L << (_la - 412)) & ((1L << (ENGINE - 412)) | (1L << (ENGINES - 412)) | (1L << (ERROR - 412)) | (1L << (ERRORS - 412)) | (1L << (ESCAPE - 412)) | (1L << (EVEN - 412)) | (1L << (EVENT - 412)) | (1L << (EVENTS - 412)) | (1L << (EVERY - 412)) | (1L << (EXCHANGE - 412)) | (1L << (EXCLUSIVE - 412)) | (1L << (EXPIRE - 412)) | (1L << (EXPORT - 412)) | (1L << (EXTENDED - 412)) | (1L << (EXTENT_SIZE - 412)) | (1L << (FAILED_LOGIN_ATTEMPTS - 412)) | (1L << (FAST - 412)) | (1L << (FAULTS - 412)) | (1L << (FIELDS - 412)) | (1L << (FILE_BLOCK_SIZE - 412)) | (1L << (FILTER - 412)) | (1L << (FIRST - 412)) | (1L << (FIXED - 412)) | (1L << (FLUSH - 412)) | (1L << (FOLLOWS - 412)) | (1L << (FOUND - 412)) | (1L << (FULL - 412)) | (1L << (FUNCTION - 412)) | (1L << (GENERAL - 412)) | (1L << (GLOBAL - 412)) | (1L << (GRANTS - 412)) | (1L << (GROUP_REPLICATION - 412)) | (1L << (HANDLER - 412)) | (1L << (HASH - 412)) | (1L << (HELP - 412)) | (1L << (HISTORY - 412)) | (1L << (HOST - 412)) | (1L << (HOSTS - 412)) | (1L << (IDENTIFIED - 412)) | (1L << (IGNORE_SERVER_IDS - 412)) | (1L << (IMPORT - 412)) | (1L << (INCREMENT - 412)) | (1L << (INDEXES - 412)) | (1L << (INITIAL_SIZE - 412)) | (1L << (INPLACE - 412)) | (1L << (INSERT_METHOD - 412)) | (1L << (INSTALL - 412)) | (1L << (INSTANCE - 412)) | (1L << (INSTANT - 412)) | (1L << (INVISIBLE - 412)) | (1L << (INVOKER - 412)) | (1L << (IO - 412)) | (1L << (IO_THREAD - 412)) | (1L << (IPC - 412)) | (1L << (ISOLATION - 412)) | (1L << (ISSUER - 412)) | (1L << (JSON - 412)) | (1L << (KEY_BLOCK_SIZE - 412)) | (1L << (LANGUAGE - 412)) | (1L << (LAST - 412)) | (1L << (LEAVES - 412)) | (1L << (LESS - 412)) | (1L << (LEVEL - 412)))) != 0) || ((((_la - 476)) & ~0x3f) == 0 && ((1L << (_la - 476)) & ((1L << (LIST - 476)) | (1L << (LOCAL - 476)) | (1L << (LOGFILE - 476)) | (1L << (LOGS - 476)) | (1L << (MASTER - 476)) | (1L << (MASTER_AUTO_POSITION - 476)) | (1L << (MASTER_CONNECT_RETRY - 476)) | (1L << (MASTER_DELAY - 476)) | (1L << (MASTER_HEARTBEAT_PERIOD - 476)) | (1L << (MASTER_HOST - 476)) | (1L << (MASTER_LOG_FILE - 476)) | (1L << (MASTER_LOG_POS - 476)) | (1L << (MASTER_PASSWORD - 476)) | (1L << (MASTER_PORT - 476)) | (1L << (MASTER_RETRY_COUNT - 476)) | (1L << (MASTER_SSL - 476)) | (1L << (MASTER_SSL_CA - 476)) | (1L << (MASTER_SSL_CAPATH - 476)) | (1L << (MASTER_SSL_CERT - 476)) | (1L << (MASTER_SSL_CIPHER - 476)) | (1L << (MASTER_SSL_CRL - 476)) | (1L << (MASTER_SSL_CRLPATH - 476)) | (1L << (MASTER_SSL_KEY - 476)) | (1L << (MASTER_TLS_VERSION - 476)) | (1L << (MASTER_USER - 476)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 476)) | (1L << (MAX_QUERIES_PER_HOUR - 476)) | (1L << (MAX_ROWS - 476)) | (1L << (MAX_SIZE - 476)) | (1L << (MAX_UPDATES_PER_HOUR - 476)) | (1L << (MAX_USER_CONNECTIONS - 476)) | (1L << (MEDIUM - 476)) | (1L << (MEMBER - 476)) | (1L << (MERGE - 476)) | (1L << (MESSAGE_TEXT - 476)) | (1L << (MID - 476)) | (1L << (MIGRATE - 476)) | (1L << (MIN_ROWS - 476)) | (1L << (MODE - 476)) | (1L << (MODIFY - 476)) | (1L << (MUTEX - 476)) | (1L << (MYSQL - 476)) | (1L << (MYSQL_ERRNO - 476)) | (1L << (NAME - 476)) | (1L << (NAMES - 476)) | (1L << (NCHAR - 476)) | (1L << (NEVER - 476)) | (1L << (NEXT - 476)) | (1L << (NO - 476)) | (1L << (NOCACHE - 476)) | (1L << (NOCOPY - 476)) | (1L << (NOCYCLE - 476)) | (1L << (NOMAXVALUE - 476)) | (1L << (NOMINVALUE - 476)) | (1L << (NOWAIT - 476)) | (1L << (NODEGROUP - 476)) | (1L << (NONE - 476)) | (1L << (ODBC - 476)) | (1L << (OFFLINE - 476)) | (1L << (OFFSET - 476)) | (1L << (OF - 476)) | (1L << (OJ - 476)) | (1L << (OLD_PASSWORD - 476)) | (1L << (ONE - 476)))) != 0) || ((((_la - 540)) & ~0x3f) == 0 && ((1L << (_la - 540)) & ((1L << (ONLINE - 540)) | (1L << (ONLY - 540)) | (1L << (OPEN - 540)) | (1L << (OPTIMIZER_COSTS - 540)) | (1L << (OPTIONS - 540)) | (1L << (OWNER - 540)) | (1L << (PACK_KEYS - 540)) | (1L << (PAGE - 540)) | (1L << (PARSER - 540)) | (1L << (PARTIAL - 540)) | (1L << (PARTITIONING - 540)) | (1L << (PARTITIONS - 540)) | (1L << (PASSWORD - 540)) | (1L << (PASSWORD_LOCK_TIME - 540)) | (1L << (PHASE - 540)) | (1L << (PLUGIN - 540)) | (1L << (PLUGIN_DIR - 540)) | (1L << (PLUGINS - 540)) | (1L << (PORT - 540)) | (1L << (PRECEDES - 540)) | (1L << (PREPARE - 540)) | (1L << (PRESERVE - 540)) | (1L << (PREV - 540)) | (1L << (PROCESSLIST - 540)) | (1L << (PROFILE - 540)) | (1L << (PROFILES - 540)) | (1L << (PROXY - 540)) | (1L << (QUERY - 540)) | (1L << (QUICK - 540)) | (1L << (REBUILD - 540)) | (1L << (RECOVER - 540)) | (1L << (RECURSIVE - 540)) | (1L << (REDO_BUFFER_SIZE - 540)) | (1L << (REDUNDANT - 540)) | (1L << (RELAY - 540)) | (1L << (RELAY_LOG_FILE - 540)) | (1L << (RELAY_LOG_POS - 540)) | (1L << (RELAYLOG - 540)) | (1L << (REMOVE - 540)) | (1L << (REORGANIZE - 540)) | (1L << (REPAIR - 540)) | (1L << (REPLICATE_DO_DB - 540)) | (1L << (REPLICATE_DO_TABLE - 540)) | (1L << (REPLICATE_IGNORE_DB - 540)) | (1L << (REPLICATE_IGNORE_TABLE - 540)) | (1L << (REPLICATE_REWRITE_DB - 540)) | (1L << (REPLICATE_WILD_DO_TABLE - 540)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 540)) | (1L << (REPLICATION - 540)) | (1L << (RESET - 540)) | (1L << (RESTART - 540)) | (1L << (RESUME - 540)) | (1L << (RETURNED_SQLSTATE - 540)) | (1L << (RETURNING - 540)) | (1L << (RETURNS - 540)) | (1L << (REUSE - 540)) | (1L << (ROLE - 540)) | (1L << (ROLLBACK - 540)) | (1L << (ROLLUP - 540)) | (1L << (ROTATE - 540)) | (1L << (ROW - 540)))) != 0) || ((((_la - 604)) & ~0x3f) == 0 && ((1L << (_la - 604)) & ((1L << (ROWS - 604)) | (1L << (ROW_FORMAT - 604)) | (1L << (RTREE - 604)) | (1L << (SAVEPOINT - 604)) | (1L << (SCHEDULE - 604)) | (1L << (SECURITY - 604)) | (1L << (SEQUENCE - 604)) | (1L << (SERVER - 604)) | (1L << (SESSION - 604)) | (1L << (SHARE - 604)) | (1L << (SHARED - 604)) | (1L << (SIGNED - 604)) | (1L << (SIMPLE - 604)) | (1L << (SLAVE - 604)) | (1L << (SLOW - 604)) | (1L << (SNAPSHOT - 604)) | (1L << (SOCKET - 604)) | (1L << (SOME - 604)) | (1L << (SONAME - 604)) | (1L << (SOUNDS - 604)) | (1L << (SOURCE - 604)) | (1L << (SQL_AFTER_GTIDS - 604)) | (1L << (SQL_AFTER_MTS_GAPS - 604)) | (1L << (SQL_BEFORE_GTIDS - 604)) | (1L << (SQL_BUFFER_RESULT - 604)) | (1L << (SQL_CACHE - 604)) | (1L << (SQL_NO_CACHE - 604)) | (1L << (SQL_THREAD - 604)) | (1L << (START - 604)) | (1L << (STARTS - 604)) | (1L << (STATS_AUTO_RECALC - 604)) | (1L << (STATS_PERSISTENT - 604)) | (1L << (STATS_SAMPLE_PAGES - 604)) | (1L << (STATUS - 604)) | (1L << (STOP - 604)) | (1L << (STORAGE - 604)) | (1L << (STRING - 604)) | (1L << (SUBCLASS_ORIGIN - 604)) | (1L << (SUBJECT - 604)) | (1L << (SUBPARTITION - 604)) | (1L << (SUBPARTITIONS - 604)) | (1L << (SUSPEND - 604)) | (1L << (SWAPS - 604)) | (1L << (SWITCHES - 604)) | (1L << (TABLE_NAME - 604)) | (1L << (TABLESPACE - 604)) | (1L << (TABLE_TYPE - 604)) | (1L << (TEMPORARY - 604)) | (1L << (TEMPTABLE - 604)) | (1L << (THAN - 604)) | (1L << (TRADITIONAL - 604)) | (1L << (TRANSACTION - 604)) | (1L << (TRANSACTIONAL - 604)) | (1L << (TRIGGERS - 604)) | (1L << (TRUNCATE - 604)) | (1L << (UNBOUNDED - 604)) | (1L << (UNDEFINED - 604)) | (1L << (UNDOFILE - 604)) | (1L << (UNDO_BUFFER_SIZE - 604)) | (1L << (UNINSTALL - 604)) | (1L << (UNKNOWN - 604)) | (1L << (UNTIL - 604)) | (1L << (UPGRADE - 604)))) != 0) || ((((_la - 668)) & ~0x3f) == 0 && ((1L << (_la - 668)) & ((1L << (USER - 668)) | (1L << (USE_FRM - 668)) | (1L << (USER_RESOURCES - 668)) | (1L << (VALIDATION - 668)) | (1L << (VALUE - 668)) | (1L << (VARIABLES - 668)) | (1L << (VIEW - 668)) | (1L << (VIRTUAL - 668)) | (1L << (VISIBLE - 668)) | (1L << (WAIT - 668)) | (1L << (WARNINGS - 668)) | (1L << (WITHOUT - 668)) | (1L << (WORK - 668)) | (1L << (WRAPPER - 668)) | (1L << (X509 - 668)) | (1L << (XA - 668)) | (1L << (XML - 668)) | (1L << (YES - 668)) | (1L << (EUR - 668)) | (1L << (USA - 668)) | (1L << (JIS - 668)) | (1L << (ISO - 668)) | (1L << (INTERNAL - 668)) | (1L << (QUARTER - 668)) | (1L << (MONTH - 668)) | (1L << (DAY - 668)) | (1L << (HOUR - 668)) | (1L << (MINUTE - 668)) | (1L << (WEEK - 668)) | (1L << (SECOND - 668)) | (1L << (MICROSECOND - 668)) | (1L << (USER_STATISTICS - 668)) | (1L << (CLIENT_STATISTICS - 668)) | (1L << (INDEX_STATISTICS - 668)) | (1L << (TABLE_STATISTICS - 668)) | (1L << (FIREWALL_RULES - 668)) | (1L << (ADMIN - 668)) | (1L << (APPLICATION_PASSWORD_ADMIN - 668)) | (1L << (AUDIT_ADMIN - 668)) | (1L << (AUDIT_ABORT_EXEMPT - 668)) | (1L << (AUTHENTICATION_POLICY_ADMIN - 668)) | (1L << (BACKUP_ADMIN - 668)) | (1L << (BINLOG_ADMIN - 668)) | (1L << (BINLOG_ENCRYPTION_ADMIN - 668)) | (1L << (CLONE_ADMIN - 668)) | (1L << (CONNECTION_ADMIN - 668)) | (1L << (ENCRYPTION_KEY_ADMIN - 668)) | (1L << (EXECUTE - 668)) | (1L << (FILE - 668)) | (1L << (FIREWALL_ADMIN - 668)) | (1L << (FIREWALL_EXEMPT - 668)) | (1L << (FIREWALL_USER - 668)) | (1L << (FLUSH_OPTIMIZER_COSTS - 668)) | (1L << (FLUSH_STATUS - 668)) | (1L << (FLUSH_TABLES - 668)) | (1L << (FLUSH_USER_RESOURCES - 668)) | (1L << (GROUP_REPLICATION_ADMIN - 668)) | (1L << (INNODB_REDO_LOG_ARCHIVE - 668)) | (1L << (INNODB_REDO_LOG_ENABLE - 668)) | (1L << (INVOKE - 668)) | (1L << (LAMBDA - 668)) | (1L << (NDB_STORED_USER - 668)) | (1L << (PASSWORDLESS_USER_ADMIN - 668)))) != 0) || ((((_la - 732)) & ~0x3f) == 0 && ((1L << (_la - 732)) & ((1L << (PERSIST_RO_VARIABLES_ADMIN - 732)) | (1L << (PRIVILEGES - 732)) | (1L << (PROCESS - 732)) | (1L << (RELOAD - 732)) | (1L << (REPLICATION_APPLIER - 732)) | (1L << (REPLICATION_SLAVE_ADMIN - 732)) | (1L << (RESOURCE_GROUP_ADMIN - 732)) | (1L << (RESOURCE_GROUP_USER - 732)) | (1L << (ROLE_ADMIN - 732)) | (1L << (ROUTINE - 732)) | (1L << (S3 - 732)) | (1L << (SESSION_VARIABLES_ADMIN - 732)) | (1L << (SET_USER_ID - 732)) | (1L << (SHOW_ROUTINE - 732)) | (1L << (SHUTDOWN - 732)) | (1L << (SUPER - 732)) | (1L << (SYSTEM_VARIABLES_ADMIN - 732)) | (1L << (TABLES - 732)) | (1L << (TABLE_ENCRYPTION_ADMIN - 732)) | (1L << (VERSION_TOKEN_ADMIN - 732)) | (1L << (XA_RECOVER_ADMIN - 732)) | (1L << (ARMSCII8 - 732)) | (1L << (ASCII - 732)) | (1L << (BIG5 - 732)) | (1L << (CP1250 - 732)) | (1L << (CP1251 - 732)) | (1L << (CP1256 - 732)) | (1L << (CP1257 - 732)) | (1L << (CP850 - 732)) | (1L << (CP852 - 732)) | (1L << (CP866 - 732)) | (1L << (CP932 - 732)) | (1L << (DEC8 - 732)) | (1L << (EUCJPMS - 732)) | (1L << (EUCKR - 732)) | (1L << (GB18030 - 732)) | (1L << (GB2312 - 732)) | (1L << (GBK - 732)) | (1L << (GEOSTD8 - 732)) | (1L << (GREEK - 732)) | (1L << (HEBREW - 732)) | (1L << (HP8 - 732)) | (1L << (KEYBCS2 - 732)) | (1L << (KOI8R - 732)) | (1L << (KOI8U - 732)) | (1L << (LATIN1 - 732)) | (1L << (LATIN2 - 732)) | (1L << (LATIN5 - 732)) | (1L << (LATIN7 - 732)) | (1L << (MACCE - 732)) | (1L << (MACROMAN - 732)) | (1L << (SJIS - 732)) | (1L << (SWE7 - 732)) | (1L << (TIS620 - 732)) | (1L << (UCS2 - 732)) | (1L << (UJIS - 732)) | (1L << (UTF16 - 732)) | (1L << (UTF16LE - 732)) | (1L << (UTF32 - 732)) | (1L << (UTF8 - 732)) | (1L << (UTF8MB3 - 732)) | (1L << (UTF8MB4 - 732)) | (1L << (ARCHIVE - 732)))) != 0) || ((((_la - 796)) & ~0x3f) == 0 && ((1L << (_la - 796)) & ((1L << (BLACKHOLE - 796)) | (1L << (CSV - 796)) | (1L << (FEDERATED - 796)) | (1L << (INNODB - 796)) | (1L << (MEMORY - 796)) | (1L << (MRG_MYISAM - 796)) | (1L << (MYISAM - 796)) | (1L << (NDB - 796)) | (1L << (NDBCLUSTER - 796)) | (1L << (PERFORMANCE_SCHEMA - 796)) | (1L << (TOKUDB - 796)) | (1L << (REPEATABLE - 796)) | (1L << (COMMITTED - 796)) | (1L << (UNCOMMITTED - 796)) | (1L << (SERIALIZABLE - 796)) | (1L << (GEOMETRYCOLLECTION - 796)) | (1L << (GEOMETRY - 796)) | (1L << (LINESTRING - 796)) | (1L << (MULTILINESTRING - 796)) | (1L << (MULTIPOINT - 796)) | (1L << (MULTIPOLYGON - 796)) | (1L << (POINT - 796)) | (1L << (POLYGON - 796)) | (1L << (ABS - 796)) | (1L << (ACOS - 796)) | (1L << (ADDDATE - 796)) | (1L << (ADDTIME - 796)) | (1L << (AES_DECRYPT - 796)) | (1L << (AES_ENCRYPT - 796)) | (1L << (AREA - 796)) | (1L << (ASBINARY - 796)) | (1L << (ASIN - 796)) | (1L << (ASTEXT - 796)) | (1L << (ASWKB - 796)) | (1L << (ASWKT - 796)) | (1L << (ASYMMETRIC_DECRYPT - 796)) | (1L << (ASYMMETRIC_DERIVE - 796)) | (1L << (ASYMMETRIC_ENCRYPT - 796)) | (1L << (ASYMMETRIC_SIGN - 796)) | (1L << (ASYMMETRIC_VERIFY - 796)) | (1L << (ATAN - 796)) | (1L << (ATAN2 - 796)) | (1L << (BENCHMARK - 796)) | (1L << (BIN - 796)) | (1L << (BIT_COUNT - 796)) | (1L << (BIT_LENGTH - 796)) | (1L << (BUFFER - 796)) | (1L << (CATALOG_NAME - 796)) | (1L << (CEIL - 796)) | (1L << (CEILING - 796)) | (1L << (CENTROID - 796)) | (1L << (CHARACTER_LENGTH - 796)) | (1L << (CHARSET - 796)) | (1L << (CHAR_LENGTH - 796)) | (1L << (COERCIBILITY - 796)) | (1L << (COLLATION - 796)) | (1L << (COMPRESS - 796)) | (1L << (CONCAT - 796)) | (1L << (CONCAT_WS - 796)) | (1L << (CONNECTION_ID - 796)) | (1L << (CONV - 796)) | (1L << (CONVERT_TZ - 796)) | (1L << (COS - 796)))) != 0) || ((((_la - 860)) & ~0x3f) == 0 && ((1L << (_la - 860)) & ((1L << (COT - 860)) | (1L << (CRC32 - 860)) | (1L << (CREATE_ASYMMETRIC_PRIV_KEY - 860)) | (1L << (CREATE_ASYMMETRIC_PUB_KEY - 860)) | (1L << (CREATE_DH_PARAMETERS - 860)) | (1L << (CREATE_DIGEST - 860)) | (1L << (CROSSES - 860)) | (1L << (DATEDIFF - 860)) | (1L << (DATE_FORMAT - 860)) | (1L << (DAYNAME - 860)) | (1L << (DAYOFMONTH - 860)) | (1L << (DAYOFWEEK - 860)) | (1L << (DAYOFYEAR - 860)) | (1L << (DECODE - 860)) | (1L << (DEGREES - 860)) | (1L << (DES_DECRYPT - 860)) | (1L << (DES_ENCRYPT - 860)) | (1L << (DIMENSION - 860)) | (1L << (DISJOINT - 860)) | (1L << (ELT - 860)) | (1L << (ENCODE - 860)) | (1L << (ENCRYPT - 860)) | (1L << (ENDPOINT - 860)) | (1L << (ENGINE_ATTRIBUTE - 860)) | (1L << (ENVELOPE - 860)) | (1L << (EQUALS - 860)) | (1L << (EXP - 860)) | (1L << (EXPORT_SET - 860)) | (1L << (EXTERIORRING - 860)) | (1L << (EXTRACTVALUE - 860)) | (1L << (FIELD - 860)) | (1L << (FIND_IN_SET - 860)) | (1L << (FLOOR - 860)) | (1L << (FORMAT - 860)) | (1L << (FOUND_ROWS - 860)) | (1L << (FROM_BASE64 - 860)) | (1L << (FROM_DAYS - 860)) | (1L << (FROM_UNIXTIME - 860)) | (1L << (GEOMCOLLFROMTEXT - 860)) | (1L << (GEOMCOLLFROMWKB - 860)) | (1L << (GEOMETRYCOLLECTIONFROMTEXT - 860)) | (1L << (GEOMETRYCOLLECTIONFROMWKB - 860)) | (1L << (GEOMETRYFROMTEXT - 860)) | (1L << (GEOMETRYFROMWKB - 860)) | (1L << (GEOMETRYN - 860)) | (1L << (GEOMETRYTYPE - 860)) | (1L << (GEOMFROMTEXT - 860)) | (1L << (GEOMFROMWKB - 860)) | (1L << (GET_FORMAT - 860)) | (1L << (GET_LOCK - 860)) | (1L << (GLENGTH - 860)) | (1L << (GREATEST - 860)) | (1L << (GTID_SUBSET - 860)) | (1L << (GTID_SUBTRACT - 860)) | (1L << (HEX - 860)) | (1L << (IFNULL - 860)) | (1L << (INET6_ATON - 860)) | (1L << (INET6_NTOA - 860)) | (1L << (INET_ATON - 860)) | (1L << (INET_NTOA - 860)) | (1L << (INSTR - 860)) | (1L << (INTERIORRINGN - 860)) | (1L << (INTERSECTS - 860)) | (1L << (ISCLOSED - 860)))) != 0) || ((((_la - 924)) & ~0x3f) == 0 && ((1L << (_la - 924)) & ((1L << (ISEMPTY - 924)) | (1L << (ISNULL - 924)) | (1L << (ISSIMPLE - 924)) | (1L << (IS_FREE_LOCK - 924)) | (1L << (IS_IPV4 - 924)) | (1L << (IS_IPV4_COMPAT - 924)) | (1L << (IS_IPV4_MAPPED - 924)) | (1L << (IS_IPV6 - 924)) | (1L << (IS_USED_LOCK - 924)) | (1L << (LAST_INSERT_ID - 924)) | (1L << (LCASE - 924)) | (1L << (LEAST - 924)) | (1L << (LENGTH - 924)) | (1L << (LINEFROMTEXT - 924)) | (1L << (LINEFROMWKB - 924)) | (1L << (LINESTRINGFROMTEXT - 924)) | (1L << (LINESTRINGFROMWKB - 924)) | (1L << (LN - 924)) | (1L << (LOAD_FILE - 924)) | (1L << (LOCATE - 924)) | (1L << (LOG - 924)) | (1L << (LOG10 - 924)) | (1L << (LOG2 - 924)) | (1L << (LOWER - 924)) | (1L << (LPAD - 924)) | (1L << (LTRIM - 924)) | (1L << (MAKEDATE - 924)) | (1L << (MAKETIME - 924)) | (1L << (MAKE_SET - 924)) | (1L << (MASTER_POS_WAIT - 924)) | (1L << (MBRCONTAINS - 924)) | (1L << (MBRDISJOINT - 924)) | (1L << (MBREQUAL - 924)) | (1L << (MBRINTERSECTS - 924)) | (1L << (MBROVERLAPS - 924)) | (1L << (MBRTOUCHES - 924)) | (1L << (MBRWITHIN - 924)) | (1L << (MD5 - 924)) | (1L << (MLINEFROMTEXT - 924)) | (1L << (MLINEFROMWKB - 924)) | (1L << (MONTHNAME - 924)) | (1L << (MPOINTFROMTEXT - 924)) | (1L << (MPOINTFROMWKB - 924)) | (1L << (MPOLYFROMTEXT - 924)) | (1L << (MPOLYFROMWKB - 924)) | (1L << (MULTILINESTRINGFROMTEXT - 924)) | (1L << (MULTILINESTRINGFROMWKB - 924)) | (1L << (MULTIPOINTFROMTEXT - 924)) | (1L << (MULTIPOINTFROMWKB - 924)) | (1L << (MULTIPOLYGONFROMTEXT - 924)) | (1L << (MULTIPOLYGONFROMWKB - 924)) | (1L << (NAME_CONST - 924)) | (1L << (NULLIF - 924)) | (1L << (NUMGEOMETRIES - 924)) | (1L << (NUMINTERIORRINGS - 924)) | (1L << (NUMPOINTS - 924)) | (1L << (OCT - 924)) | (1L << (OCTET_LENGTH - 924)) | (1L << (ORD - 924)) | (1L << (OVERLAPS - 924)) | (1L << (PERIOD_ADD - 924)) | (1L << (PERIOD_DIFF - 924)) | (1L << (PI - 924)) | (1L << (POINTFROMTEXT - 924)))) != 0) || ((((_la - 988)) & ~0x3f) == 0 && ((1L << (_la - 988)) & ((1L << (POINTFROMWKB - 988)) | (1L << (POINTN - 988)) | (1L << (POLYFROMTEXT - 988)) | (1L << (POLYFROMWKB - 988)) | (1L << (POLYGONFROMTEXT - 988)) | (1L << (POLYGONFROMWKB - 988)) | (1L << (POW - 988)) | (1L << (POWER - 988)) | (1L << (QUOTE - 988)) | (1L << (RADIANS - 988)) | (1L << (RAND - 988)) | (1L << (RANDOM - 988)) | (1L << (RANDOM_BYTES - 988)) | (1L << (RELEASE_LOCK - 988)) | (1L << (REVERSE - 988)) | (1L << (ROUND - 988)) | (1L << (ROW_COUNT - 988)) | (1L << (RPAD - 988)) | (1L << (RTRIM - 988)) | (1L << (SEC_TO_TIME - 988)) | (1L << (SECONDARY_ENGINE_ATTRIBUTE - 988)) | (1L << (SENSITIVE_VARIABLES_OBSERVER - 988)) | (1L << (SESSION_USER - 988)) | (1L << (SHA - 988)) | (1L << (SHA1 - 988)) | (1L << (SHA2 - 988)) | (1L << (SCHEMA_NAME - 988)) | (1L << (SIGN - 988)) | (1L << (SIN - 988)) | (1L << (SLEEP - 988)) | (1L << (SOUNDEX - 988)) | (1L << (SQL_THREAD_WAIT_AFTER_GTIDS - 988)) | (1L << (SQRT - 988)) | (1L << (SRID - 988)) | (1L << (STARTPOINT - 988)) | (1L << (STRCMP - 988)) | (1L << (STR_TO_DATE - 988)) | (1L << (ST_AREA - 988)) | (1L << (ST_ASBINARY - 988)) | (1L << (ST_ASTEXT - 988)) | (1L << (ST_ASWKB - 988)) | (1L << (ST_ASWKT - 988)) | (1L << (ST_BUFFER - 988)) | (1L << (ST_CENTROID - 988)) | (1L << (ST_CONTAINS - 988)) | (1L << (ST_CROSSES - 988)) | (1L << (ST_DIFFERENCE - 988)) | (1L << (ST_DIMENSION - 988)) | (1L << (ST_DISJOINT - 988)) | (1L << (ST_DISTANCE - 988)) | (1L << (ST_ENDPOINT - 988)) | (1L << (ST_ENVELOPE - 988)) | (1L << (ST_EQUALS - 988)) | (1L << (ST_EXTERIORRING - 988)) | (1L << (ST_GEOMCOLLFROMTEXT - 988)) | (1L << (ST_GEOMCOLLFROMTXT - 988)) | (1L << (ST_GEOMCOLLFROMWKB - 988)) | (1L << (ST_GEOMETRYCOLLECTIONFROMTEXT - 988)) | (1L << (ST_GEOMETRYCOLLECTIONFROMWKB - 988)) | (1L << (ST_GEOMETRYFROMTEXT - 988)) | (1L << (ST_GEOMETRYFROMWKB - 988)) | (1L << (ST_GEOMETRYN - 988)) | (1L << (ST_GEOMETRYTYPE - 988)) | (1L << (ST_GEOMFROMTEXT - 988)))) != 0) || ((((_la - 1052)) & ~0x3f) == 0 && ((1L << (_la - 1052)) & ((1L << (ST_GEOMFROMWKB - 1052)) | (1L << (ST_INTERIORRINGN - 1052)) | (1L << (ST_INTERSECTION - 1052)) | (1L << (ST_INTERSECTS - 1052)) | (1L << (ST_ISCLOSED - 1052)) | (1L << (ST_ISEMPTY - 1052)) | (1L << (ST_ISSIMPLE - 1052)) | (1L << (ST_LINEFROMTEXT - 1052)) | (1L << (ST_LINEFROMWKB - 1052)) | (1L << (ST_LINESTRINGFROMTEXT - 1052)) | (1L << (ST_LINESTRINGFROMWKB - 1052)) | (1L << (ST_NUMGEOMETRIES - 1052)) | (1L << (ST_NUMINTERIORRING - 1052)) | (1L << (ST_NUMINTERIORRINGS - 1052)) | (1L << (ST_NUMPOINTS - 1052)) | (1L << (ST_OVERLAPS - 1052)) | (1L << (ST_POINTFROMTEXT - 1052)) | (1L << (ST_POINTFROMWKB - 1052)) | (1L << (ST_POINTN - 1052)) | (1L << (ST_POLYFROMTEXT - 1052)) | (1L << (ST_POLYFROMWKB - 1052)) | (1L << (ST_POLYGONFROMTEXT - 1052)) | (1L << (ST_POLYGONFROMWKB - 1052)) | (1L << (ST_SRID - 1052)) | (1L << (ST_STARTPOINT - 1052)) | (1L << (ST_SYMDIFFERENCE - 1052)) | (1L << (ST_TOUCHES - 1052)) | (1L << (ST_UNION - 1052)) | (1L << (ST_WITHIN - 1052)) | (1L << (ST_X - 1052)) | (1L << (ST_Y - 1052)) | (1L << (SUBDATE - 1052)) | (1L << (SUBSTRING_INDEX - 1052)) | (1L << (SUBTIME - 1052)) | (1L << (SYSTEM_USER - 1052)) | (1L << (SYSTEM - 1052)) | (1L << (TAN - 1052)) | (1L << (TELEMETRY_LOG_ADMIN - 1052)) | (1L << (TIMEDIFF - 1052)) | (1L << (TIMESTAMPADD - 1052)) | (1L << (TIMESTAMPDIFF - 1052)) | (1L << (TIME_FORMAT - 1052)) | (1L << (TIME_TO_SEC - 1052)) | (1L << (TOUCHES - 1052)) | (1L << (TO_BASE64 - 1052)) | (1L << (TO_DAYS - 1052)) | (1L << (TO_SECONDS - 1052)) | (1L << (TP_CONNECTION_ADMIN - 1052)) | (1L << (UCASE - 1052)) | (1L << (UNCOMPRESS - 1052)) | (1L << (UNCOMPRESSED_LENGTH - 1052)) | (1L << (UNHEX - 1052)) | (1L << (UNIX_TIMESTAMP - 1052)) | (1L << (UPDATEXML - 1052)) | (1L << (UPPER - 1052)) | (1L << (UUID - 1052)) | (1L << (UUID_SHORT - 1052)) | (1L << (VALIDATE_PASSWORD_STRENGTH - 1052)) | (1L << (VERSION - 1052)) | (1L << (VERSIONING - 1052)) | (1L << (WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS - 1052)) | (1L << (WEEKDAY - 1052)) | (1L << (WEEKOFYEAR - 1052)) | (1L << (WEIGHT_STRING - 1052)))) != 0) || ((((_la - 1116)) & ~0x3f) == 0 && ((1L << (_la - 1116)) & ((1L << (WITHIN - 1116)) | (1L << (YEARWEEK - 1116)) | (1L << (Y_FUNCTION - 1116)) | (1L << (X_FUNCTION - 1116)) | (1L << (VIA - 1116)) | (1L << (LASTVAL - 1116)) | (1L << (NEXTVAL - 1116)) | (1L << (SETVAL - 1116)) | (1L << (PREVIOUS - 1116)) | (1L << (PERSISTENT - 1116)) | (1L << (BINLOG_MONITOR - 1116)) | (1L << (BINLOG_REPLAY - 1116)) | (1L << (FEDERATED_ADMIN - 1116)) | (1L << (READ_ONLY_ADMIN - 1116)) | (1L << (REPLICA - 1116)) | (1L << (REPLICATION_MASTER_ADMIN - 1116)) | (1L << (MONITOR - 1116)) | (1L << (READ_ONLY - 1116)) | (1L << (REPLAY - 1116)) | (1L << (MOD - 1116)) | (1L << (CHARSET_REVERSE_QOUTE_STRING - 1116)) | (1L << (STRING_LITERAL - 1116)))) != 0) || _la==ID) {
					{
					setState(2853);
					uid();
					}
				}

				setState(2856);
				indexColumnNames();
				setState(2860);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,372,_ctx);
				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
					if ( _alt==1 ) {
						{
						{
						setState(2857);
						indexOption();
						}
						} 
					}
					setState(2862);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,372,_ctx);
				}
				}
				break;
			case 8:
				_localctx = new AlterByAddForeignKeyContext(_localctx);
				enterOuterAlt(_localctx, 8);
				{
				setState(2863);
				match(ADD);
				setState(2868);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==CONSTRAINT) {
					{
					setState(2864);
					match(CONSTRAINT);
					setState(2866);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ARRAY) | (1L << ATTRIBUTE) | (1L << BUCKETS) | (1L << CONDITION) | (1L << CURRENT) | (1L << CURRENT_ROLE) | (1L << CURRENT_USER) | (1L << DATABASE) | (1L << DEFAULT) | (1L << DIAGNOSTICS) | (1L << EMPTY) | (1L << ENFORCED) | (1L << EXCEPT))) != 0) || ((((_la - 74)) & ~0x3f) == 0 && ((1L << (_la - 74)) & ((1L << (GROUP - 74)) | (1L << (GROUP_REPLICATION_STREAM - 74)) | (1L << (IF - 74)) | (1L << (IGNORED - 74)) | (1L << (INSERT - 74)) | (1L << (LATERAL - 74)) | (1L << (LEFT - 74)) | (1L << (LOCKED - 74)) | (1L << (MAXVALUE - 74)) | (1L << (MINVALUE - 74)) | (1L << (NUMBER - 74)) | (1L << (OPTIONAL - 74)) | (1L << (ORDER - 74)) | (1L << (PRIMARY - 74)))) != 0) || ((((_la - 142)) & ~0x3f) == 0 && ((1L << (_la - 142)) & ((1L << (REPEAT - 142)) | (1L << (REPLACE - 142)) | (1L << (RIGHT - 142)) | (1L << (SCHEMA - 142)) | (1L << (SKIP_ - 142)) | (1L << (SKIP_QUERY_REWRITE - 142)) | (1L << (STACKED - 142)) | (1L << (STATEMENT - 142)))) != 0) || ((((_la - 220)) & ~0x3f) == 0 && ((1L << (_la - 220)) & ((1L << (DATE - 220)) | (1L << (TIME - 220)) | (1L << (TIMESTAMP - 220)) | (1L << (DATETIME - 220)) | (1L << (YEAR - 220)) | (1L << (NATIONAL - 220)) | (1L << (BINARY - 220)) | (1L << (TEXT - 220)) | (1L << (ENUM - 220)) | (1L << (SERIAL - 220)) | (1L << (JSON_ARRAY - 220)) | (1L << (JSON_ARRAYAGG - 220)) | (1L << (JSON_ARRAY_APPEND - 220)) | (1L << (JSON_ARRAY_INSERT - 220)) | (1L << (JSON_CONTAINS - 220)) | (1L << (JSON_CONTAINS_PATH - 220)) | (1L << (JSON_DEPTH - 220)) | (1L << (JSON_EXTRACT - 220)) | (1L << (JSON_INSERT - 220)) | (1L << (JSON_KEYS - 220)) | (1L << (JSON_LENGTH - 220)) | (1L << (JSON_MERGE - 220)) | (1L << (JSON_MERGE_PATCH - 220)) | (1L << (JSON_MERGE_PRESERVE - 220)) | (1L << (JSON_OBJECT - 220)) | (1L << (JSON_OBJECTAGG - 220)) | (1L << (JSON_OVERLAPS - 220)) | (1L << (JSON_PRETTY - 220)) | (1L << (JSON_QUOTE - 220)) | (1L << (JSON_REMOVE - 220)) | (1L << (JSON_REPLACE - 220)) | (1L << (JSON_SCHEMA_VALID - 220)) | (1L << (JSON_SCHEMA_VALIDATION_REPORT - 220)) | (1L << (JSON_SEARCH - 220)) | (1L << (JSON_SET - 220)) | (1L << (JSON_STORAGE_FREE - 220)) | (1L << (JSON_STORAGE_SIZE - 220)) | (1L << (JSON_TABLE - 220)) | (1L << (JSON_TYPE - 220)) | (1L << (JSON_UNQUOTE - 220)))) != 0) || ((((_la - 284)) & ~0x3f) == 0 && ((1L << (_la - 284)) & ((1L << (JSON_VALID - 284)) | (1L << (JSON_VALUE - 284)) | (1L << (NESTED - 284)) | (1L << (ORDINALITY - 284)) | (1L << (PATH - 284)) | (1L << (AVG - 284)) | (1L << (BIT_AND - 284)) | (1L << (BIT_OR - 284)) | (1L << (BIT_XOR - 284)) | (1L << (COUNT - 284)) | (1L << (CUME_DIST - 284)) | (1L << (DENSE_RANK - 284)) | (1L << (FIRST_VALUE - 284)) | (1L << (GROUP_CONCAT - 284)) | (1L << (LAG - 284)) | (1L << (LAST_VALUE - 284)) | (1L << (LEAD - 284)) | (1L << (MAX - 284)) | (1L << (MIN - 284)) | (1L << (NTILE - 284)) | (1L << (NTH_VALUE - 284)) | (1L << (PERCENT_RANK - 284)) | (1L << (RANK - 284)) | (1L << (ROW_NUMBER - 284)) | (1L << (STD - 284)) | (1L << (STDDEV - 284)) | (1L << (STDDEV_POP - 284)) | (1L << (STDDEV_SAMP - 284)) | (1L << (SUM - 284)) | (1L << (VAR_POP - 284)) | (1L << (VAR_SAMP - 284)) | (1L << (VARIANCE - 284)) | (1L << (CURRENT_DATE - 284)) | (1L << (CURRENT_TIME - 284)) | (1L << (CURRENT_TIMESTAMP - 284)) | (1L << (LOCALTIME - 284)) | (1L << (CURDATE - 284)) | (1L << (CURTIME - 284)) | (1L << (DATE_ADD - 284)) | (1L << (DATE_SUB - 284)) | (1L << (LOCALTIMESTAMP - 284)) | (1L << (NOW - 284)) | (1L << (POSITION - 284)) | (1L << (SUBSTR - 284)) | (1L << (SUBSTRING - 284)) | (1L << (SYSDATE - 284)) | (1L << (TRIM - 284)) | (1L << (UTC_DATE - 284)) | (1L << (UTC_TIME - 284)) | (1L << (UTC_TIMESTAMP - 284)) | (1L << (ACCOUNT - 284)) | (1L << (ACTION - 284)) | (1L << (AFTER - 284)) | (1L << (AGGREGATE - 284)) | (1L << (ALGORITHM - 284)) | (1L << (ANY - 284)) | (1L << (AT - 284)) | (1L << (AUTHORS - 284)) | (1L << (AUTOCOMMIT - 284)) | (1L << (AUTOEXTEND_SIZE - 284)) | (1L << (AUTO_INCREMENT - 284)) | (1L << (AVG_ROW_LENGTH - 284)) | (1L << (BEGIN - 284)))) != 0) || ((((_la - 348)) & ~0x3f) == 0 && ((1L << (_la - 348)) & ((1L << (BINLOG - 348)) | (1L << (BIT - 348)) | (1L << (BLOCK - 348)) | (1L << (BOOL - 348)) | (1L << (BOOLEAN - 348)) | (1L << (BTREE - 348)) | (1L << (CACHE - 348)) | (1L << (CASCADED - 348)) | (1L << (CHAIN - 348)) | (1L << (CHANGED - 348)) | (1L << (CHANNEL - 348)) | (1L << (CHECKSUM - 348)) | (1L << (PAGE_CHECKSUM - 348)) | (1L << (CIPHER - 348)) | (1L << (CLASS_ORIGIN - 348)) | (1L << (CLIENT - 348)) | (1L << (CLOSE - 348)) | (1L << (CLUSTERING - 348)) | (1L << (COALESCE - 348)) | (1L << (CODE - 348)) | (1L << (COLUMNS - 348)) | (1L << (COLUMN_FORMAT - 348)) | (1L << (COLUMN_NAME - 348)) | (1L << (COMMENT - 348)) | (1L << (COMMIT - 348)) | (1L << (COMPACT - 348)) | (1L << (COMPLETION - 348)) | (1L << (COMPRESSED - 348)) | (1L << (COMPRESSION - 348)) | (1L << (CONCURRENT - 348)) | (1L << (CONNECT - 348)) | (1L << (CONNECTION - 348)) | (1L << (CONSISTENT - 348)) | (1L << (CONSTRAINT_CATALOG - 348)) | (1L << (CONSTRAINT_SCHEMA - 348)) | (1L << (CONSTRAINT_NAME - 348)) | (1L << (CONTAINS - 348)) | (1L << (CONTEXT - 348)) | (1L << (CONTRIBUTORS - 348)) | (1L << (COPY - 348)) | (1L << (CPU - 348)) | (1L << (CYCLE - 348)) | (1L << (CURSOR_NAME - 348)) | (1L << (DATA - 348)) | (1L << (DATAFILE - 348)) | (1L << (DEALLOCATE - 348)) | (1L << (DEFAULT_AUTH - 348)) | (1L << (DEFINER - 348)) | (1L << (DELAY_KEY_WRITE - 348)) | (1L << (DES_KEY_FILE - 348)) | (1L << (DIRECTORY - 348)) | (1L << (DISABLE - 348)) | (1L << (DISCARD - 348)) | (1L << (DISK - 348)) | (1L << (DO - 348)) | (1L << (DUMPFILE - 348)) | (1L << (DUPLICATE - 348)) | (1L << (DYNAMIC - 348)) | (1L << (ENABLE - 348)) | (1L << (ENCRYPTED - 348)) | (1L << (ENCRYPTION - 348)) | (1L << (ENCRYPTION_KEY_ID - 348)) | (1L << (END - 348)) | (1L << (ENDS - 348)))) != 0) || ((((_la - 412)) & ~0x3f) == 0 && ((1L << (_la - 412)) & ((1L << (ENGINE - 412)) | (1L << (ENGINES - 412)) | (1L << (ERROR - 412)) | (1L << (ERRORS - 412)) | (1L << (ESCAPE - 412)) | (1L << (EVEN - 412)) | (1L << (EVENT - 412)) | (1L << (EVENTS - 412)) | (1L << (EVERY - 412)) | (1L << (EXCHANGE - 412)) | (1L << (EXCLUSIVE - 412)) | (1L << (EXPIRE - 412)) | (1L << (EXPORT - 412)) | (1L << (EXTENDED - 412)) | (1L << (EXTENT_SIZE - 412)) | (1L << (FAILED_LOGIN_ATTEMPTS - 412)) | (1L << (FAST - 412)) | (1L << (FAULTS - 412)) | (1L << (FIELDS - 412)) | (1L << (FILE_BLOCK_SIZE - 412)) | (1L << (FILTER - 412)) | (1L << (FIRST - 412)) | (1L << (FIXED - 412)) | (1L << (FLUSH - 412)) | (1L << (FOLLOWS - 412)) | (1L << (FOUND - 412)) | (1L << (FULL - 412)) | (1L << (FUNCTION - 412)) | (1L << (GENERAL - 412)) | (1L << (GLOBAL - 412)) | (1L << (GRANTS - 412)) | (1L << (GROUP_REPLICATION - 412)) | (1L << (HANDLER - 412)) | (1L << (HASH - 412)) | (1L << (HELP - 412)) | (1L << (HISTORY - 412)) | (1L << (HOST - 412)) | (1L << (HOSTS - 412)) | (1L << (IDENTIFIED - 412)) | (1L << (IGNORE_SERVER_IDS - 412)) | (1L << (IMPORT - 412)) | (1L << (INCREMENT - 412)) | (1L << (INDEXES - 412)) | (1L << (INITIAL_SIZE - 412)) | (1L << (INPLACE - 412)) | (1L << (INSERT_METHOD - 412)) | (1L << (INSTALL - 412)) | (1L << (INSTANCE - 412)) | (1L << (INSTANT - 412)) | (1L << (INVISIBLE - 412)) | (1L << (INVOKER - 412)) | (1L << (IO - 412)) | (1L << (IO_THREAD - 412)) | (1L << (IPC - 412)) | (1L << (ISOLATION - 412)) | (1L << (ISSUER - 412)) | (1L << (JSON - 412)) | (1L << (KEY_BLOCK_SIZE - 412)) | (1L << (LANGUAGE - 412)) | (1L << (LAST - 412)) | (1L << (LEAVES - 412)) | (1L << (LESS - 412)) | (1L << (LEVEL - 412)))) != 0) || ((((_la - 476)) & ~0x3f) == 0 && ((1L << (_la - 476)) & ((1L << (LIST - 476)) | (1L << (LOCAL - 476)) | (1L << (LOGFILE - 476)) | (1L << (LOGS - 476)) | (1L << (MASTER - 476)) | (1L << (MASTER_AUTO_POSITION - 476)) | (1L << (MASTER_CONNECT_RETRY - 476)) | (1L << (MASTER_DELAY - 476)) | (1L << (MASTER_HEARTBEAT_PERIOD - 476)) | (1L << (MASTER_HOST - 476)) | (1L << (MASTER_LOG_FILE - 476)) | (1L << (MASTER_LOG_POS - 476)) | (1L << (MASTER_PASSWORD - 476)) | (1L << (MASTER_PORT - 476)) | (1L << (MASTER_RETRY_COUNT - 476)) | (1L << (MASTER_SSL - 476)) | (1L << (MASTER_SSL_CA - 476)) | (1L << (MASTER_SSL_CAPATH - 476)) | (1L << (MASTER_SSL_CERT - 476)) | (1L << (MASTER_SSL_CIPHER - 476)) | (1L << (MASTER_SSL_CRL - 476)) | (1L << (MASTER_SSL_CRLPATH - 476)) | (1L << (MASTER_SSL_KEY - 476)) | (1L << (MASTER_TLS_VERSION - 476)) | (1L << (MASTER_USER - 476)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 476)) | (1L << (MAX_QUERIES_PER_HOUR - 476)) | (1L << (MAX_ROWS - 476)) | (1L << (MAX_SIZE - 476)) | (1L << (MAX_UPDATES_PER_HOUR - 476)) | (1L << (MAX_USER_CONNECTIONS - 476)) | (1L << (MEDIUM - 476)) | (1L << (MEMBER - 476)) | (1L << (MERGE - 476)) | (1L << (MESSAGE_TEXT - 476)) | (1L << (MID - 476)) | (1L << (MIGRATE - 476)) | (1L << (MIN_ROWS - 476)) | (1L << (MODE - 476)) | (1L << (MODIFY - 476)) | (1L << (MUTEX - 476)) | (1L << (MYSQL - 476)) | (1L << (MYSQL_ERRNO - 476)) | (1L << (NAME - 476)) | (1L << (NAMES - 476)) | (1L << (NCHAR - 476)) | (1L << (NEVER - 476)) | (1L << (NEXT - 476)) | (1L << (NO - 476)) | (1L << (NOCACHE - 476)) | (1L << (NOCOPY - 476)) | (1L << (NOCYCLE - 476)) | (1L << (NOMAXVALUE - 476)) | (1L << (NOMINVALUE - 476)) | (1L << (NOWAIT - 476)) | (1L << (NODEGROUP - 476)) | (1L << (NONE - 476)) | (1L << (ODBC - 476)) | (1L << (OFFLINE - 476)) | (1L << (OFFSET - 476)) | (1L << (OF - 476)) | (1L << (OJ - 476)) | (1L << (OLD_PASSWORD - 476)) | (1L << (ONE - 476)))) != 0) || ((((_la - 540)) & ~0x3f) == 0 && ((1L << (_la - 540)) & ((1L << (ONLINE - 540)) | (1L << (ONLY - 540)) | (1L << (OPEN - 540)) | (1L << (OPTIMIZER_COSTS - 540)) | (1L << (OPTIONS - 540)) | (1L << (OWNER - 540)) | (1L << (PACK_KEYS - 540)) | (1L << (PAGE - 540)) | (1L << (PARSER - 540)) | (1L << (PARTIAL - 540)) | (1L << (PARTITIONING - 540)) | (1L << (PARTITIONS - 540)) | (1L << (PASSWORD - 540)) | (1L << (PASSWORD_LOCK_TIME - 540)) | (1L << (PHASE - 540)) | (1L << (PLUGIN - 540)) | (1L << (PLUGIN_DIR - 540)) | (1L << (PLUGINS - 540)) | (1L << (PORT - 540)) | (1L << (PRECEDES - 540)) | (1L << (PREPARE - 540)) | (1L << (PRESERVE - 540)) | (1L << (PREV - 540)) | (1L << (PROCESSLIST - 540)) | (1L << (PROFILE - 540)) | (1L << (PROFILES - 540)) | (1L << (PROXY - 540)) | (1L << (QUERY - 540)) | (1L << (QUICK - 540)) | (1L << (REBUILD - 540)) | (1L << (RECOVER - 540)) | (1L << (RECURSIVE - 540)) | (1L << (REDO_BUFFER_SIZE - 540)) | (1L << (REDUNDANT - 540)) | (1L << (RELAY - 540)) | (1L << (RELAY_LOG_FILE - 540)) | (1L << (RELAY_LOG_POS - 540)) | (1L << (RELAYLOG - 540)) | (1L << (REMOVE - 540)) | (1L << (REORGANIZE - 540)) | (1L << (REPAIR - 540)) | (1L << (REPLICATE_DO_DB - 540)) | (1L << (REPLICATE_DO_TABLE - 540)) | (1L << (REPLICATE_IGNORE_DB - 540)) | (1L << (REPLICATE_IGNORE_TABLE - 540)) | (1L << (REPLICATE_REWRITE_DB - 540)) | (1L << (REPLICATE_WILD_DO_TABLE - 540)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 540)) | (1L << (REPLICATION - 540)) | (1L << (RESET - 540)) | (1L << (RESTART - 540)) | (1L << (RESUME - 540)) | (1L << (RETURNED_SQLSTATE - 540)) | (1L << (RETURNING - 540)) | (1L << (RETURNS - 540)) | (1L << (REUSE - 540)) | (1L << (ROLE - 540)) | (1L << (ROLLBACK - 540)) | (1L << (ROLLUP - 540)) | (1L << (ROTATE - 540)) | (1L << (ROW - 540)))) != 0) || ((((_la - 604)) & ~0x3f) == 0 && ((1L << (_la - 604)) & ((1L << (ROWS - 604)) | (1L << (ROW_FORMAT - 604)) | (1L << (RTREE - 604)) | (1L << (SAVEPOINT - 604)) | (1L << (SCHEDULE - 604)) | (1L << (SECURITY - 604)) | (1L << (SEQUENCE - 604)) | (1L << (SERVER - 604)) | (1L << (SESSION - 604)) | (1L << (SHARE - 604)) | (1L << (SHARED - 604)) | (1L << (SIGNED - 604)) | (1L << (SIMPLE - 604)) | (1L << (SLAVE - 604)) | (1L << (SLOW - 604)) | (1L << (SNAPSHOT - 604)) | (1L << (SOCKET - 604)) | (1L << (SOME - 604)) | (1L << (SONAME - 604)) | (1L << (SOUNDS - 604)) | (1L << (SOURCE - 604)) | (1L << (SQL_AFTER_GTIDS - 604)) | (1L << (SQL_AFTER_MTS_GAPS - 604)) | (1L << (SQL_BEFORE_GTIDS - 604)) | (1L << (SQL_BUFFER_RESULT - 604)) | (1L << (SQL_CACHE - 604)) | (1L << (SQL_NO_CACHE - 604)) | (1L << (SQL_THREAD - 604)) | (1L << (START - 604)) | (1L << (STARTS - 604)) | (1L << (STATS_AUTO_RECALC - 604)) | (1L << (STATS_PERSISTENT - 604)) | (1L << (STATS_SAMPLE_PAGES - 604)) | (1L << (STATUS - 604)) | (1L << (STOP - 604)) | (1L << (STORAGE - 604)) | (1L << (STRING - 604)) | (1L << (SUBCLASS_ORIGIN - 604)) | (1L << (SUBJECT - 604)) | (1L << (SUBPARTITION - 604)) | (1L << (SUBPARTITIONS - 604)) | (1L << (SUSPEND - 604)) | (1L << (SWAPS - 604)) | (1L << (SWITCHES - 604)) | (1L << (TABLE_NAME - 604)) | (1L << (TABLESPACE - 604)) | (1L << (TABLE_TYPE - 604)) | (1L << (TEMPORARY - 604)) | (1L << (TEMPTABLE - 604)) | (1L << (THAN - 604)) | (1L << (TRADITIONAL - 604)) | (1L << (TRANSACTION - 604)) | (1L << (TRANSACTIONAL - 604)) | (1L << (TRIGGERS - 604)) | (1L << (TRUNCATE - 604)) | (1L << (UNBOUNDED - 604)) | (1L << (UNDEFINED - 604)) | (1L << (UNDOFILE - 604)) | (1L << (UNDO_BUFFER_SIZE - 604)) | (1L << (UNINSTALL - 604)) | (1L << (UNKNOWN - 604)) | (1L << (UNTIL - 604)) | (1L << (UPGRADE - 604)))) != 0) || ((((_la - 668)) & ~0x3f) == 0 && ((1L << (_la - 668)) & ((1L << (USER - 668)) | (1L << (USE_FRM - 668)) | (1L << (USER_RESOURCES - 668)) | (1L << (VALIDATION - 668)) | (1L << (VALUE - 668)) | (1L << (VARIABLES - 668)) | (1L << (VIEW - 668)) | (1L << (VIRTUAL - 668)) | (1L << (VISIBLE - 668)) | (1L << (WAIT - 668)) | (1L << (WARNINGS - 668)) | (1L << (WITHOUT - 668)) | (1L << (WORK - 668)) | (1L << (WRAPPER - 668)) | (1L << (X509 - 668)) | (1L << (XA - 668)) | (1L << (XML - 668)) | (1L << (YES - 668)) | (1L << (EUR - 668)) | (1L << (USA - 668)) | (1L << (JIS - 668)) | (1L << (ISO - 668)) | (1L << (INTERNAL - 668)) | (1L << (QUARTER - 668)) | (1L << (MONTH - 668)) | (1L << (DAY - 668)) | (1L << (HOUR - 668)) | (1L << (MINUTE - 668)) | (1L << (WEEK - 668)) | (1L << (SECOND - 668)) | (1L << (MICROSECOND - 668)) | (1L << (USER_STATISTICS - 668)) | (1L << (CLIENT_STATISTICS - 668)) | (1L << (INDEX_STATISTICS - 668)) | (1L << (TABLE_STATISTICS - 668)) | (1L << (FIREWALL_RULES - 668)) | (1L << (ADMIN - 668)) | (1L << (APPLICATION_PASSWORD_ADMIN - 668)) | (1L << (AUDIT_ADMIN - 668)) | (1L << (AUDIT_ABORT_EXEMPT - 668)) | (1L << (AUTHENTICATION_POLICY_ADMIN - 668)) | (1L << (BACKUP_ADMIN - 668)) | (1L << (BINLOG_ADMIN - 668)) | (1L << (BINLOG_ENCRYPTION_ADMIN - 668)) | (1L << (CLONE_ADMIN - 668)) | (1L << (CONNECTION_ADMIN - 668)) | (1L << (ENCRYPTION_KEY_ADMIN - 668)) | (1L << (EXECUTE - 668)) | (1L << (FILE - 668)) | (1L << (FIREWALL_ADMIN - 668)) | (1L << (FIREWALL_EXEMPT - 668)) | (1L << (FIREWALL_USER - 668)) | (1L << (FLUSH_OPTIMIZER_COSTS - 668)) | (1L << (FLUSH_STATUS - 668)) | (1L << (FLUSH_TABLES - 668)) | (1L << (FLUSH_USER_RESOURCES - 668)) | (1L << (GROUP_REPLICATION_ADMIN - 668)) | (1L << (INNODB_REDO_LOG_ARCHIVE - 668)) | (1L << (INNODB_REDO_LOG_ENABLE - 668)) | (1L << (INVOKE - 668)) | (1L << (LAMBDA - 668)) | (1L << (NDB_STORED_USER - 668)) | (1L << (PASSWORDLESS_USER_ADMIN - 668)))) != 0) || ((((_la - 732)) & ~0x3f) == 0 && ((1L << (_la - 732)) & ((1L << (PERSIST_RO_VARIABLES_ADMIN - 732)) | (1L << (PRIVILEGES - 732)) | (1L << (PROCESS - 732)) | (1L << (RELOAD - 732)) | (1L << (REPLICATION_APPLIER - 732)) | (1L << (REPLICATION_SLAVE_ADMIN - 732)) | (1L << (RESOURCE_GROUP_ADMIN - 732)) | (1L << (RESOURCE_GROUP_USER - 732)) | (1L << (ROLE_ADMIN - 732)) | (1L << (ROUTINE - 732)) | (1L << (S3 - 732)) | (1L << (SESSION_VARIABLES_ADMIN - 732)) | (1L << (SET_USER_ID - 732)) | (1L << (SHOW_ROUTINE - 732)) | (1L << (SHUTDOWN - 732)) | (1L << (SUPER - 732)) | (1L << (SYSTEM_VARIABLES_ADMIN - 732)) | (1L << (TABLES - 732)) | (1L << (TABLE_ENCRYPTION_ADMIN - 732)) | (1L << (VERSION_TOKEN_ADMIN - 732)) | (1L << (XA_RECOVER_ADMIN - 732)) | (1L << (ARMSCII8 - 732)) | (1L << (ASCII - 732)) | (1L << (BIG5 - 732)) | (1L << (CP1250 - 732)) | (1L << (CP1251 - 732)) | (1L << (CP1256 - 732)) | (1L << (CP1257 - 732)) | (1L << (CP850 - 732)) | (1L << (CP852 - 732)) | (1L << (CP866 - 732)) | (1L << (CP932 - 732)) | (1L << (DEC8 - 732)) | (1L << (EUCJPMS - 732)) | (1L << (EUCKR - 732)) | (1L << (GB18030 - 732)) | (1L << (GB2312 - 732)) | (1L << (GBK - 732)) | (1L << (GEOSTD8 - 732)) | (1L << (GREEK - 732)) | (1L << (HEBREW - 732)) | (1L << (HP8 - 732)) | (1L << (KEYBCS2 - 732)) | (1L << (KOI8R - 732)) | (1L << (KOI8U - 732)) | (1L << (LATIN1 - 732)) | (1L << (LATIN2 - 732)) | (1L << (LATIN5 - 732)) | (1L << (LATIN7 - 732)) | (1L << (MACCE - 732)) | (1L << (MACROMAN - 732)) | (1L << (SJIS - 732)) | (1L << (SWE7 - 732)) | (1L << (TIS620 - 732)) | (1L << (UCS2 - 732)) | (1L << (UJIS - 732)) | (1L << (UTF16 - 732)) | (1L << (UTF16LE - 732)) | (1L << (UTF32 - 732)) | (1L << (UTF8 - 732)) | (1L << (UTF8MB3 - 732)) | (1L << (UTF8MB4 - 732)) | (1L << (ARCHIVE - 732)))) != 0) || ((((_la - 796)) & ~0x3f) == 0 && ((1L << (_la - 796)) & ((1L << (BLACKHOLE - 796)) | (1L << (CSV - 796)) | (1L << (FEDERATED - 796)) | (1L << (INNODB - 796)) | (1L << (MEMORY - 796)) | (1L << (MRG_MYISAM - 796)) | (1L << (MYISAM - 796)) | (1L << (NDB - 796)) | (1L << (NDBCLUSTER - 796)) | (1L << (PERFORMANCE_SCHEMA - 796)) | (1L << (TOKUDB - 796)) | (1L << (REPEATABLE - 796)) | (1L << (COMMITTED - 796)) | (1L << (UNCOMMITTED - 796)) | (1L << (SERIALIZABLE - 796)) | (1L << (GEOMETRYCOLLECTION - 796)) | (1L << (GEOMETRY - 796)) | (1L << (LINESTRING - 796)) | (1L << (MULTILINESTRING - 796)) | (1L << (MULTIPOINT - 796)) | (1L << (MULTIPOLYGON - 796)) | (1L << (POINT - 796)) | (1L << (POLYGON - 796)) | (1L << (ABS - 796)) | (1L << (ACOS - 796)) | (1L << (ADDDATE - 796)) | (1L << (ADDTIME - 796)) | (1L << (AES_DECRYPT - 796)) | (1L << (AES_ENCRYPT - 796)) | (1L << (AREA - 796)) | (1L << (ASBINARY - 796)) | (1L << (ASIN - 796)) | (1L << (ASTEXT - 796)) | (1L << (ASWKB - 796)) | (1L << (ASWKT - 796)) | (1L << (ASYMMETRIC_DECRYPT - 796)) | (1L << (ASYMMETRIC_DERIVE - 796)) | (1L << (ASYMMETRIC_ENCRYPT - 796)) | (1L << (ASYMMETRIC_SIGN - 796)) | (1L << (ASYMMETRIC_VERIFY - 796)) | (1L << (ATAN - 796)) | (1L << (ATAN2 - 796)) | (1L << (BENCHMARK - 796)) | (1L << (BIN - 796)) | (1L << (BIT_COUNT - 796)) | (1L << (BIT_LENGTH - 796)) | (1L << (BUFFER - 796)) | (1L << (CATALOG_NAME - 796)) | (1L << (CEIL - 796)) | (1L << (CEILING - 796)) | (1L << (CENTROID - 796)) | (1L << (CHARACTER_LENGTH - 796)) | (1L << (CHARSET - 796)) | (1L << (CHAR_LENGTH - 796)) | (1L << (COERCIBILITY - 796)) | (1L << (COLLATION - 796)) | (1L << (COMPRESS - 796)) | (1L << (CONCAT - 796)) | (1L << (CONCAT_WS - 796)) | (1L << (CONNECTION_ID - 796)) | (1L << (CONV - 796)) | (1L << (CONVERT_TZ - 796)) | (1L << (COS - 796)))) != 0) || ((((_la - 860)) & ~0x3f) == 0 && ((1L << (_la - 860)) & ((1L << (COT - 860)) | (1L << (CRC32 - 860)) | (1L << (CREATE_ASYMMETRIC_PRIV_KEY - 860)) | (1L << (CREATE_ASYMMETRIC_PUB_KEY - 860)) | (1L << (CREATE_DH_PARAMETERS - 860)) | (1L << (CREATE_DIGEST - 860)) | (1L << (CROSSES - 860)) | (1L << (DATEDIFF - 860)) | (1L << (DATE_FORMAT - 860)) | (1L << (DAYNAME - 860)) | (1L << (DAYOFMONTH - 860)) | (1L << (DAYOFWEEK - 860)) | (1L << (DAYOFYEAR - 860)) | (1L << (DECODE - 860)) | (1L << (DEGREES - 860)) | (1L << (DES_DECRYPT - 860)) | (1L << (DES_ENCRYPT - 860)) | (1L << (DIMENSION - 860)) | (1L << (DISJOINT - 860)) | (1L << (ELT - 860)) | (1L << (ENCODE - 860)) | (1L << (ENCRYPT - 860)) | (1L << (ENDPOINT - 860)) | (1L << (ENGINE_ATTRIBUTE - 860)) | (1L << (ENVELOPE - 860)) | (1L << (EQUALS - 860)) | (1L << (EXP - 860)) | (1L << (EXPORT_SET - 860)) | (1L << (EXTERIORRING - 860)) | (1L << (EXTRACTVALUE - 860)) | (1L << (FIELD - 860)) | (1L << (FIND_IN_SET - 860)) | (1L << (FLOOR - 860)) | (1L << (FORMAT - 860)) | (1L << (FOUND_ROWS - 860)) | (1L << (FROM_BASE64 - 860)) | (1L << (FROM_DAYS - 860)) | (1L << (FROM_UNIXTIME - 860)) | (1L << (GEOMCOLLFROMTEXT - 860)) | (1L << (GEOMCOLLFROMWKB - 860)) | (1L << (GEOMETRYCOLLECTIONFROMTEXT - 860)) | (1L << (GEOMETRYCOLLECTIONFROMWKB - 860)) | (1L << (GEOMETRYFROMTEXT - 860)) | (1L << (GEOMETRYFROMWKB - 860)) | (1L << (GEOMETRYN - 860)) | (1L << (GEOMETRYTYPE - 860)) | (1L << (GEOMFROMTEXT - 860)) | (1L << (GEOMFROMWKB - 860)) | (1L << (GET_FORMAT - 860)) | (1L << (GET_LOCK - 860)) | (1L << (GLENGTH - 860)) | (1L << (GREATEST - 860)) | (1L << (GTID_SUBSET - 860)) | (1L << (GTID_SUBTRACT - 860)) | (1L << (HEX - 860)) | (1L << (IFNULL - 860)) | (1L << (INET6_ATON - 860)) | (1L << (INET6_NTOA - 860)) | (1L << (INET_ATON - 860)) | (1L << (INET_NTOA - 860)) | (1L << (INSTR - 860)) | (1L << (INTERIORRINGN - 860)) | (1L << (INTERSECTS - 860)) | (1L << (ISCLOSED - 860)))) != 0) || ((((_la - 924)) & ~0x3f) == 0 && ((1L << (_la - 924)) & ((1L << (ISEMPTY - 924)) | (1L << (ISNULL - 924)) | (1L << (ISSIMPLE - 924)) | (1L << (IS_FREE_LOCK - 924)) | (1L << (IS_IPV4 - 924)) | (1L << (IS_IPV4_COMPAT - 924)) | (1L << (IS_IPV4_MAPPED - 924)) | (1L << (IS_IPV6 - 924)) | (1L << (IS_USED_LOCK - 924)) | (1L << (LAST_INSERT_ID - 924)) | (1L << (LCASE - 924)) | (1L << (LEAST - 924)) | (1L << (LENGTH - 924)) | (1L << (LINEFROMTEXT - 924)) | (1L << (LINEFROMWKB - 924)) | (1L << (LINESTRINGFROMTEXT - 924)) | (1L << (LINESTRINGFROMWKB - 924)) | (1L << (LN - 924)) | (1L << (LOAD_FILE - 924)) | (1L << (LOCATE - 924)) | (1L << (LOG - 924)) | (1L << (LOG10 - 924)) | (1L << (LOG2 - 924)) | (1L << (LOWER - 924)) | (1L << (LPAD - 924)) | (1L << (LTRIM - 924)) | (1L << (MAKEDATE - 924)) | (1L << (MAKETIME - 924)) | (1L << (MAKE_SET - 924)) | (1L << (MASTER_POS_WAIT - 924)) | (1L << (MBRCONTAINS - 924)) | (1L << (MBRDISJOINT - 924)) | (1L << (MBREQUAL - 924)) | (1L << (MBRINTERSECTS - 924)) | (1L << (MBROVERLAPS - 924)) | (1L << (MBRTOUCHES - 924)) | (1L << (MBRWITHIN - 924)) | (1L << (MD5 - 924)) | (1L << (MLINEFROMTEXT - 924)) | (1L << (MLINEFROMWKB - 924)) | (1L << (MONTHNAME - 924)) | (1L << (MPOINTFROMTEXT - 924)) | (1L << (MPOINTFROMWKB - 924)) | (1L << (MPOLYFROMTEXT - 924)) | (1L << (MPOLYFROMWKB - 924)) | (1L << (MULTILINESTRINGFROMTEXT - 924)) | (1L << (MULTILINESTRINGFROMWKB - 924)) | (1L << (MULTIPOINTFROMTEXT - 924)) | (1L << (MULTIPOINTFROMWKB - 924)) | (1L << (MULTIPOLYGONFROMTEXT - 924)) | (1L << (MULTIPOLYGONFROMWKB - 924)) | (1L << (NAME_CONST - 924)) | (1L << (NULLIF - 924)) | (1L << (NUMGEOMETRIES - 924)) | (1L << (NUMINTERIORRINGS - 924)) | (1L << (NUMPOINTS - 924)) | (1L << (OCT - 924)) | (1L << (OCTET_LENGTH - 924)) | (1L << (ORD - 924)) | (1L << (OVERLAPS - 924)) | (1L << (PERIOD_ADD - 924)) | (1L << (PERIOD_DIFF - 924)) | (1L << (PI - 924)) | (1L << (POINTFROMTEXT - 924)))) != 0) || ((((_la - 988)) & ~0x3f) == 0 && ((1L << (_la - 988)) & ((1L << (POINTFROMWKB - 988)) | (1L << (POINTN - 988)) | (1L << (POLYFROMTEXT - 988)) | (1L << (POLYFROMWKB - 988)) | (1L << (POLYGONFROMTEXT - 988)) | (1L << (POLYGONFROMWKB - 988)) | (1L << (POW - 988)) | (1L << (POWER - 988)) | (1L << (QUOTE - 988)) | (1L << (RADIANS - 988)) | (1L << (RAND - 988)) | (1L << (RANDOM - 988)) | (1L << (RANDOM_BYTES - 988)) | (1L << (RELEASE_LOCK - 988)) | (1L << (REVERSE - 988)) | (1L << (ROUND - 988)) | (1L << (ROW_COUNT - 988)) | (1L << (RPAD - 988)) | (1L << (RTRIM - 988)) | (1L << (SEC_TO_TIME - 988)) | (1L << (SECONDARY_ENGINE_ATTRIBUTE - 988)) | (1L << (SENSITIVE_VARIABLES_OBSERVER - 988)) | (1L << (SESSION_USER - 988)) | (1L << (SHA - 988)) | (1L << (SHA1 - 988)) | (1L << (SHA2 - 988)) | (1L << (SCHEMA_NAME - 988)) | (1L << (SIGN - 988)) | (1L << (SIN - 988)) | (1L << (SLEEP - 988)) | (1L << (SOUNDEX - 988)) | (1L << (SQL_THREAD_WAIT_AFTER_GTIDS - 988)) | (1L << (SQRT - 988)) | (1L << (SRID - 988)) | (1L << (STARTPOINT - 988)) | (1L << (STRCMP - 988)) | (1L << (STR_TO_DATE - 988)) | (1L << (ST_AREA - 988)) | (1L << (ST_ASBINARY - 988)) | (1L << (ST_ASTEXT - 988)) | (1L << (ST_ASWKB - 988)) | (1L << (ST_ASWKT - 988)) | (1L << (ST_BUFFER - 988)) | (1L << (ST_CENTROID - 988)) | (1L << (ST_CONTAINS - 988)) | (1L << (ST_CROSSES - 988)) | (1L << (ST_DIFFERENCE - 988)) | (1L << (ST_DIMENSION - 988)) | (1L << (ST_DISJOINT - 988)) | (1L << (ST_DISTANCE - 988)) | (1L << (ST_ENDPOINT - 988)) | (1L << (ST_ENVELOPE - 988)) | (1L << (ST_EQUALS - 988)) | (1L << (ST_EXTERIORRING - 988)) | (1L << (ST_GEOMCOLLFROMTEXT - 988)) | (1L << (ST_GEOMCOLLFROMTXT - 988)) | (1L << (ST_GEOMCOLLFROMWKB - 988)) | (1L << (ST_GEOMETRYCOLLECTIONFROMTEXT - 988)) | (1L << (ST_GEOMETRYCOLLECTIONFROMWKB - 988)) | (1L << (ST_GEOMETRYFROMTEXT - 988)) | (1L << (ST_GEOMETRYFROMWKB - 988)) | (1L << (ST_GEOMETRYN - 988)) | (1L << (ST_GEOMETRYTYPE - 988)) | (1L << (ST_GEOMFROMTEXT - 988)))) != 0) || ((((_la - 1052)) & ~0x3f) == 0 && ((1L << (_la - 1052)) & ((1L << (ST_GEOMFROMWKB - 1052)) | (1L << (ST_INTERIORRINGN - 1052)) | (1L << (ST_INTERSECTION - 1052)) | (1L << (ST_INTERSECTS - 1052)) | (1L << (ST_ISCLOSED - 1052)) | (1L << (ST_ISEMPTY - 1052)) | (1L << (ST_ISSIMPLE - 1052)) | (1L << (ST_LINEFROMTEXT - 1052)) | (1L << (ST_LINEFROMWKB - 1052)) | (1L << (ST_LINESTRINGFROMTEXT - 1052)) | (1L << (ST_LINESTRINGFROMWKB - 1052)) | (1L << (ST_NUMGEOMETRIES - 1052)) | (1L << (ST_NUMINTERIORRING - 1052)) | (1L << (ST_NUMINTERIORRINGS - 1052)) | (1L << (ST_NUMPOINTS - 1052)) | (1L << (ST_OVERLAPS - 1052)) | (1L << (ST_POINTFROMTEXT - 1052)) | (1L << (ST_POINTFROMWKB - 1052)) | (1L << (ST_POINTN - 1052)) | (1L << (ST_POLYFROMTEXT - 1052)) | (1L << (ST_POLYFROMWKB - 1052)) | (1L << (ST_POLYGONFROMTEXT - 1052)) | (1L << (ST_POLYGONFROMWKB - 1052)) | (1L << (ST_SRID - 1052)) | (1L << (ST_STARTPOINT - 1052)) | (1L << (ST_SYMDIFFERENCE - 1052)) | (1L << (ST_TOUCHES - 1052)) | (1L << (ST_UNION - 1052)) | (1L << (ST_WITHIN - 1052)) | (1L << (ST_X - 1052)) | (1L << (ST_Y - 1052)) | (1L << (SUBDATE - 1052)) | (1L << (SUBSTRING_INDEX - 1052)) | (1L << (SUBTIME - 1052)) | (1L << (SYSTEM_USER - 1052)) | (1L << (SYSTEM - 1052)) | (1L << (TAN - 1052)) | (1L << (TELEMETRY_LOG_ADMIN - 1052)) | (1L << (TIMEDIFF - 1052)) | (1L << (TIMESTAMPADD - 1052)) | (1L << (TIMESTAMPDIFF - 1052)) | (1L << (TIME_FORMAT - 1052)) | (1L << (TIME_TO_SEC - 1052)) | (1L << (TOUCHES - 1052)) | (1L << (TO_BASE64 - 1052)) | (1L << (TO_DAYS - 1052)) | (1L << (TO_SECONDS - 1052)) | (1L << (TP_CONNECTION_ADMIN - 1052)) | (1L << (UCASE - 1052)) | (1L << (UNCOMPRESS - 1052)) | (1L << (UNCOMPRESSED_LENGTH - 1052)) | (1L << (UNHEX - 1052)) | (1L << (UNIX_TIMESTAMP - 1052)) | (1L << (UPDATEXML - 1052)) | (1L << (UPPER - 1052)) | (1L << (UUID - 1052)) | (1L << (UUID_SHORT - 1052)) | (1L << (VALIDATE_PASSWORD_STRENGTH - 1052)) | (1L << (VERSION - 1052)) | (1L << (VERSIONING - 1052)) | (1L << (WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS - 1052)) | (1L << (WEEKDAY - 1052)) | (1L << (WEEKOFYEAR - 1052)) | (1L << (WEIGHT_STRING - 1052)))) != 0) || ((((_la - 1116)) & ~0x3f) == 0 && ((1L << (_la - 1116)) & ((1L << (WITHIN - 1116)) | (1L << (YEARWEEK - 1116)) | (1L << (Y_FUNCTION - 1116)) | (1L << (X_FUNCTION - 1116)) | (1L << (VIA - 1116)) | (1L << (LASTVAL - 1116)) | (1L << (NEXTVAL - 1116)) | (1L << (SETVAL - 1116)) | (1L << (PREVIOUS - 1116)) | (1L << (PERSISTENT - 1116)) | (1L << (BINLOG_MONITOR - 1116)) | (1L << (BINLOG_REPLAY - 1116)) | (1L << (FEDERATED_ADMIN - 1116)) | (1L << (READ_ONLY_ADMIN - 1116)) | (1L << (REPLICA - 1116)) | (1L << (REPLICATION_MASTER_ADMIN - 1116)) | (1L << (MONITOR - 1116)) | (1L << (READ_ONLY - 1116)) | (1L << (REPLAY - 1116)) | (1L << (MOD - 1116)) | (1L << (CHARSET_REVERSE_QOUTE_STRING - 1116)) | (1L << (STRING_LITERAL - 1116)))) != 0) || _la==ID) {
						{
						setState(2865);
						((AlterByAddForeignKeyContext)_localctx).name = uid();
						}
					}

					}
				}

				setState(2870);
				match(FOREIGN);
				setState(2871);
				match(KEY);
				setState(2873);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,375,_ctx) ) {
				case 1:
					{
					setState(2872);
					ifNotExists();
					}
					break;
				}
				setState(2876);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ARRAY) | (1L << ATTRIBUTE) | (1L << BUCKETS) | (1L << CONDITION) | (1L << CURRENT) | (1L << CURRENT_ROLE) | (1L << CURRENT_USER) | (1L << DATABASE) | (1L << DEFAULT) | (1L << DIAGNOSTICS) | (1L << EMPTY) | (1L << ENFORCED) | (1L << EXCEPT))) != 0) || ((((_la - 74)) & ~0x3f) == 0 && ((1L << (_la - 74)) & ((1L << (GROUP - 74)) | (1L << (GROUP_REPLICATION_STREAM - 74)) | (1L << (IF - 74)) | (1L << (IGNORED - 74)) | (1L << (INSERT - 74)) | (1L << (LATERAL - 74)) | (1L << (LEFT - 74)) | (1L << (LOCKED - 74)) | (1L << (MAXVALUE - 74)) | (1L << (MINVALUE - 74)) | (1L << (NUMBER - 74)) | (1L << (OPTIONAL - 74)) | (1L << (ORDER - 74)) | (1L << (PRIMARY - 74)))) != 0) || ((((_la - 142)) & ~0x3f) == 0 && ((1L << (_la - 142)) & ((1L << (REPEAT - 142)) | (1L << (REPLACE - 142)) | (1L << (RIGHT - 142)) | (1L << (SCHEMA - 142)) | (1L << (SKIP_ - 142)) | (1L << (SKIP_QUERY_REWRITE - 142)) | (1L << (STACKED - 142)) | (1L << (STATEMENT - 142)))) != 0) || ((((_la - 220)) & ~0x3f) == 0 && ((1L << (_la - 220)) & ((1L << (DATE - 220)) | (1L << (TIME - 220)) | (1L << (TIMESTAMP - 220)) | (1L << (DATETIME - 220)) | (1L << (YEAR - 220)) | (1L << (NATIONAL - 220)) | (1L << (BINARY - 220)) | (1L << (TEXT - 220)) | (1L << (ENUM - 220)) | (1L << (SERIAL - 220)) | (1L << (JSON_ARRAY - 220)) | (1L << (JSON_ARRAYAGG - 220)) | (1L << (JSON_ARRAY_APPEND - 220)) | (1L << (JSON_ARRAY_INSERT - 220)) | (1L << (JSON_CONTAINS - 220)) | (1L << (JSON_CONTAINS_PATH - 220)) | (1L << (JSON_DEPTH - 220)) | (1L << (JSON_EXTRACT - 220)) | (1L << (JSON_INSERT - 220)) | (1L << (JSON_KEYS - 220)) | (1L << (JSON_LENGTH - 220)) | (1L << (JSON_MERGE - 220)) | (1L << (JSON_MERGE_PATCH - 220)) | (1L << (JSON_MERGE_PRESERVE - 220)) | (1L << (JSON_OBJECT - 220)) | (1L << (JSON_OBJECTAGG - 220)) | (1L << (JSON_OVERLAPS - 220)) | (1L << (JSON_PRETTY - 220)) | (1L << (JSON_QUOTE - 220)) | (1L << (JSON_REMOVE - 220)) | (1L << (JSON_REPLACE - 220)) | (1L << (JSON_SCHEMA_VALID - 220)) | (1L << (JSON_SCHEMA_VALIDATION_REPORT - 220)) | (1L << (JSON_SEARCH - 220)) | (1L << (JSON_SET - 220)) | (1L << (JSON_STORAGE_FREE - 220)) | (1L << (JSON_STORAGE_SIZE - 220)) | (1L << (JSON_TABLE - 220)) | (1L << (JSON_TYPE - 220)) | (1L << (JSON_UNQUOTE - 220)))) != 0) || ((((_la - 284)) & ~0x3f) == 0 && ((1L << (_la - 284)) & ((1L << (JSON_VALID - 284)) | (1L << (JSON_VALUE - 284)) | (1L << (NESTED - 284)) | (1L << (ORDINALITY - 284)) | (1L << (PATH - 284)) | (1L << (AVG - 284)) | (1L << (BIT_AND - 284)) | (1L << (BIT_OR - 284)) | (1L << (BIT_XOR - 284)) | (1L << (COUNT - 284)) | (1L << (CUME_DIST - 284)) | (1L << (DENSE_RANK - 284)) | (1L << (FIRST_VALUE - 284)) | (1L << (GROUP_CONCAT - 284)) | (1L << (LAG - 284)) | (1L << (LAST_VALUE - 284)) | (1L << (LEAD - 284)) | (1L << (MAX - 284)) | (1L << (MIN - 284)) | (1L << (NTILE - 284)) | (1L << (NTH_VALUE - 284)) | (1L << (PERCENT_RANK - 284)) | (1L << (RANK - 284)) | (1L << (ROW_NUMBER - 284)) | (1L << (STD - 284)) | (1L << (STDDEV - 284)) | (1L << (STDDEV_POP - 284)) | (1L << (STDDEV_SAMP - 284)) | (1L << (SUM - 284)) | (1L << (VAR_POP - 284)) | (1L << (VAR_SAMP - 284)) | (1L << (VARIANCE - 284)) | (1L << (CURRENT_DATE - 284)) | (1L << (CURRENT_TIME - 284)) | (1L << (CURRENT_TIMESTAMP - 284)) | (1L << (LOCALTIME - 284)) | (1L << (CURDATE - 284)) | (1L << (CURTIME - 284)) | (1L << (DATE_ADD - 284)) | (1L << (DATE_SUB - 284)) | (1L << (LOCALTIMESTAMP - 284)) | (1L << (NOW - 284)) | (1L << (POSITION - 284)) | (1L << (SUBSTR - 284)) | (1L << (SUBSTRING - 284)) | (1L << (SYSDATE - 284)) | (1L << (TRIM - 284)) | (1L << (UTC_DATE - 284)) | (1L << (UTC_TIME - 284)) | (1L << (UTC_TIMESTAMP - 284)) | (1L << (ACCOUNT - 284)) | (1L << (ACTION - 284)) | (1L << (AFTER - 284)) | (1L << (AGGREGATE - 284)) | (1L << (ALGORITHM - 284)) | (1L << (ANY - 284)) | (1L << (AT - 284)) | (1L << (AUTHORS - 284)) | (1L << (AUTOCOMMIT - 284)) | (1L << (AUTOEXTEND_SIZE - 284)) | (1L << (AUTO_INCREMENT - 284)) | (1L << (AVG_ROW_LENGTH - 284)) | (1L << (BEGIN - 284)))) != 0) || ((((_la - 348)) & ~0x3f) == 0 && ((1L << (_la - 348)) & ((1L << (BINLOG - 348)) | (1L << (BIT - 348)) | (1L << (BLOCK - 348)) | (1L << (BOOL - 348)) | (1L << (BOOLEAN - 348)) | (1L << (BTREE - 348)) | (1L << (CACHE - 348)) | (1L << (CASCADED - 348)) | (1L << (CHAIN - 348)) | (1L << (CHANGED - 348)) | (1L << (CHANNEL - 348)) | (1L << (CHECKSUM - 348)) | (1L << (PAGE_CHECKSUM - 348)) | (1L << (CIPHER - 348)) | (1L << (CLASS_ORIGIN - 348)) | (1L << (CLIENT - 348)) | (1L << (CLOSE - 348)) | (1L << (CLUSTERING - 348)) | (1L << (COALESCE - 348)) | (1L << (CODE - 348)) | (1L << (COLUMNS - 348)) | (1L << (COLUMN_FORMAT - 348)) | (1L << (COLUMN_NAME - 348)) | (1L << (COMMENT - 348)) | (1L << (COMMIT - 348)) | (1L << (COMPACT - 348)) | (1L << (COMPLETION - 348)) | (1L << (COMPRESSED - 348)) | (1L << (COMPRESSION - 348)) | (1L << (CONCURRENT - 348)) | (1L << (CONNECT - 348)) | (1L << (CONNECTION - 348)) | (1L << (CONSISTENT - 348)) | (1L << (CONSTRAINT_CATALOG - 348)) | (1L << (CONSTRAINT_SCHEMA - 348)) | (1L << (CONSTRAINT_NAME - 348)) | (1L << (CONTAINS - 348)) | (1L << (CONTEXT - 348)) | (1L << (CONTRIBUTORS - 348)) | (1L << (COPY - 348)) | (1L << (CPU - 348)) | (1L << (CYCLE - 348)) | (1L << (CURSOR_NAME - 348)) | (1L << (DATA - 348)) | (1L << (DATAFILE - 348)) | (1L << (DEALLOCATE - 348)) | (1L << (DEFAULT_AUTH - 348)) | (1L << (DEFINER - 348)) | (1L << (DELAY_KEY_WRITE - 348)) | (1L << (DES_KEY_FILE - 348)) | (1L << (DIRECTORY - 348)) | (1L << (DISABLE - 348)) | (1L << (DISCARD - 348)) | (1L << (DISK - 348)) | (1L << (DO - 348)) | (1L << (DUMPFILE - 348)) | (1L << (DUPLICATE - 348)) | (1L << (DYNAMIC - 348)) | (1L << (ENABLE - 348)) | (1L << (ENCRYPTED - 348)) | (1L << (ENCRYPTION - 348)) | (1L << (ENCRYPTION_KEY_ID - 348)) | (1L << (END - 348)) | (1L << (ENDS - 348)))) != 0) || ((((_la - 412)) & ~0x3f) == 0 && ((1L << (_la - 412)) & ((1L << (ENGINE - 412)) | (1L << (ENGINES - 412)) | (1L << (ERROR - 412)) | (1L << (ERRORS - 412)) | (1L << (ESCAPE - 412)) | (1L << (EVEN - 412)) | (1L << (EVENT - 412)) | (1L << (EVENTS - 412)) | (1L << (EVERY - 412)) | (1L << (EXCHANGE - 412)) | (1L << (EXCLUSIVE - 412)) | (1L << (EXPIRE - 412)) | (1L << (EXPORT - 412)) | (1L << (EXTENDED - 412)) | (1L << (EXTENT_SIZE - 412)) | (1L << (FAILED_LOGIN_ATTEMPTS - 412)) | (1L << (FAST - 412)) | (1L << (FAULTS - 412)) | (1L << (FIELDS - 412)) | (1L << (FILE_BLOCK_SIZE - 412)) | (1L << (FILTER - 412)) | (1L << (FIRST - 412)) | (1L << (FIXED - 412)) | (1L << (FLUSH - 412)) | (1L << (FOLLOWS - 412)) | (1L << (FOUND - 412)) | (1L << (FULL - 412)) | (1L << (FUNCTION - 412)) | (1L << (GENERAL - 412)) | (1L << (GLOBAL - 412)) | (1L << (GRANTS - 412)) | (1L << (GROUP_REPLICATION - 412)) | (1L << (HANDLER - 412)) | (1L << (HASH - 412)) | (1L << (HELP - 412)) | (1L << (HISTORY - 412)) | (1L << (HOST - 412)) | (1L << (HOSTS - 412)) | (1L << (IDENTIFIED - 412)) | (1L << (IGNORE_SERVER_IDS - 412)) | (1L << (IMPORT - 412)) | (1L << (INCREMENT - 412)) | (1L << (INDEXES - 412)) | (1L << (INITIAL_SIZE - 412)) | (1L << (INPLACE - 412)) | (1L << (INSERT_METHOD - 412)) | (1L << (INSTALL - 412)) | (1L << (INSTANCE - 412)) | (1L << (INSTANT - 412)) | (1L << (INVISIBLE - 412)) | (1L << (INVOKER - 412)) | (1L << (IO - 412)) | (1L << (IO_THREAD - 412)) | (1L << (IPC - 412)) | (1L << (ISOLATION - 412)) | (1L << (ISSUER - 412)) | (1L << (JSON - 412)) | (1L << (KEY_BLOCK_SIZE - 412)) | (1L << (LANGUAGE - 412)) | (1L << (LAST - 412)) | (1L << (LEAVES - 412)) | (1L << (LESS - 412)) | (1L << (LEVEL - 412)))) != 0) || ((((_la - 476)) & ~0x3f) == 0 && ((1L << (_la - 476)) & ((1L << (LIST - 476)) | (1L << (LOCAL - 476)) | (1L << (LOGFILE - 476)) | (1L << (LOGS - 476)) | (1L << (MASTER - 476)) | (1L << (MASTER_AUTO_POSITION - 476)) | (1L << (MASTER_CONNECT_RETRY - 476)) | (1L << (MASTER_DELAY - 476)) | (1L << (MASTER_HEARTBEAT_PERIOD - 476)) | (1L << (MASTER_HOST - 476)) | (1L << (MASTER_LOG_FILE - 476)) | (1L << (MASTER_LOG_POS - 476)) | (1L << (MASTER_PASSWORD - 476)) | (1L << (MASTER_PORT - 476)) | (1L << (MASTER_RETRY_COUNT - 476)) | (1L << (MASTER_SSL - 476)) | (1L << (MASTER_SSL_CA - 476)) | (1L << (MASTER_SSL_CAPATH - 476)) | (1L << (MASTER_SSL_CERT - 476)) | (1L << (MASTER_SSL_CIPHER - 476)) | (1L << (MASTER_SSL_CRL - 476)) | (1L << (MASTER_SSL_CRLPATH - 476)) | (1L << (MASTER_SSL_KEY - 476)) | (1L << (MASTER_TLS_VERSION - 476)) | (1L << (MASTER_USER - 476)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 476)) | (1L << (MAX_QUERIES_PER_HOUR - 476)) | (1L << (MAX_ROWS - 476)) | (1L << (MAX_SIZE - 476)) | (1L << (MAX_UPDATES_PER_HOUR - 476)) | (1L << (MAX_USER_CONNECTIONS - 476)) | (1L << (MEDIUM - 476)) | (1L << (MEMBER - 476)) | (1L << (MERGE - 476)) | (1L << (MESSAGE_TEXT - 476)) | (1L << (MID - 476)) | (1L << (MIGRATE - 476)) | (1L << (MIN_ROWS - 476)) | (1L << (MODE - 476)) | (1L << (MODIFY - 476)) | (1L << (MUTEX - 476)) | (1L << (MYSQL - 476)) | (1L << (MYSQL_ERRNO - 476)) | (1L << (NAME - 476)) | (1L << (NAMES - 476)) | (1L << (NCHAR - 476)) | (1L << (NEVER - 476)) | (1L << (NEXT - 476)) | (1L << (NO - 476)) | (1L << (NOCACHE - 476)) | (1L << (NOCOPY - 476)) | (1L << (NOCYCLE - 476)) | (1L << (NOMAXVALUE - 476)) | (1L << (NOMINVALUE - 476)) | (1L << (NOWAIT - 476)) | (1L << (NODEGROUP - 476)) | (1L << (NONE - 476)) | (1L << (ODBC - 476)) | (1L << (OFFLINE - 476)) | (1L << (OFFSET - 476)) | (1L << (OF - 476)) | (1L << (OJ - 476)) | (1L << (OLD_PASSWORD - 476)) | (1L << (ONE - 476)))) != 0) || ((((_la - 540)) & ~0x3f) == 0 && ((1L << (_la - 540)) & ((1L << (ONLINE - 540)) | (1L << (ONLY - 540)) | (1L << (OPEN - 540)) | (1L << (OPTIMIZER_COSTS - 540)) | (1L << (OPTIONS - 540)) | (1L << (OWNER - 540)) | (1L << (PACK_KEYS - 540)) | (1L << (PAGE - 540)) | (1L << (PARSER - 540)) | (1L << (PARTIAL - 540)) | (1L << (PARTITIONING - 540)) | (1L << (PARTITIONS - 540)) | (1L << (PASSWORD - 540)) | (1L << (PASSWORD_LOCK_TIME - 540)) | (1L << (PHASE - 540)) | (1L << (PLUGIN - 540)) | (1L << (PLUGIN_DIR - 540)) | (1L << (PLUGINS - 540)) | (1L << (PORT - 540)) | (1L << (PRECEDES - 540)) | (1L << (PREPARE - 540)) | (1L << (PRESERVE - 540)) | (1L << (PREV - 540)) | (1L << (PROCESSLIST - 540)) | (1L << (PROFILE - 540)) | (1L << (PROFILES - 540)) | (1L << (PROXY - 540)) | (1L << (QUERY - 540)) | (1L << (QUICK - 540)) | (1L << (REBUILD - 540)) | (1L << (RECOVER - 540)) | (1L << (RECURSIVE - 540)) | (1L << (REDO_BUFFER_SIZE - 540)) | (1L << (REDUNDANT - 540)) | (1L << (RELAY - 540)) | (1L << (RELAY_LOG_FILE - 540)) | (1L << (RELAY_LOG_POS - 540)) | (1L << (RELAYLOG - 540)) | (1L << (REMOVE - 540)) | (1L << (REORGANIZE - 540)) | (1L << (REPAIR - 540)) | (1L << (REPLICATE_DO_DB - 540)) | (1L << (REPLICATE_DO_TABLE - 540)) | (1L << (REPLICATE_IGNORE_DB - 540)) | (1L << (REPLICATE_IGNORE_TABLE - 540)) | (1L << (REPLICATE_REWRITE_DB - 540)) | (1L << (REPLICATE_WILD_DO_TABLE - 540)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 540)) | (1L << (REPLICATION - 540)) | (1L << (RESET - 540)) | (1L << (RESTART - 540)) | (1L << (RESUME - 540)) | (1L << (RETURNED_SQLSTATE - 540)) | (1L << (RETURNING - 540)) | (1L << (RETURNS - 540)) | (1L << (REUSE - 540)) | (1L << (ROLE - 540)) | (1L << (ROLLBACK - 540)) | (1L << (ROLLUP - 540)) | (1L << (ROTATE - 540)) | (1L << (ROW - 540)))) != 0) || ((((_la - 604)) & ~0x3f) == 0 && ((1L << (_la - 604)) & ((1L << (ROWS - 604)) | (1L << (ROW_FORMAT - 604)) | (1L << (RTREE - 604)) | (1L << (SAVEPOINT - 604)) | (1L << (SCHEDULE - 604)) | (1L << (SECURITY - 604)) | (1L << (SEQUENCE - 604)) | (1L << (SERVER - 604)) | (1L << (SESSION - 604)) | (1L << (SHARE - 604)) | (1L << (SHARED - 604)) | (1L << (SIGNED - 604)) | (1L << (SIMPLE - 604)) | (1L << (SLAVE - 604)) | (1L << (SLOW - 604)) | (1L << (SNAPSHOT - 604)) | (1L << (SOCKET - 604)) | (1L << (SOME - 604)) | (1L << (SONAME - 604)) | (1L << (SOUNDS - 604)) | (1L << (SOURCE - 604)) | (1L << (SQL_AFTER_GTIDS - 604)) | (1L << (SQL_AFTER_MTS_GAPS - 604)) | (1L << (SQL_BEFORE_GTIDS - 604)) | (1L << (SQL_BUFFER_RESULT - 604)) | (1L << (SQL_CACHE - 604)) | (1L << (SQL_NO_CACHE - 604)) | (1L << (SQL_THREAD - 604)) | (1L << (START - 604)) | (1L << (STARTS - 604)) | (1L << (STATS_AUTO_RECALC - 604)) | (1L << (STATS_PERSISTENT - 604)) | (1L << (STATS_SAMPLE_PAGES - 604)) | (1L << (STATUS - 604)) | (1L << (STOP - 604)) | (1L << (STORAGE - 604)) | (1L << (STRING - 604)) | (1L << (SUBCLASS_ORIGIN - 604)) | (1L << (SUBJECT - 604)) | (1L << (SUBPARTITION - 604)) | (1L << (SUBPARTITIONS - 604)) | (1L << (SUSPEND - 604)) | (1L << (SWAPS - 604)) | (1L << (SWITCHES - 604)) | (1L << (TABLE_NAME - 604)) | (1L << (TABLESPACE - 604)) | (1L << (TABLE_TYPE - 604)) | (1L << (TEMPORARY - 604)) | (1L << (TEMPTABLE - 604)) | (1L << (THAN - 604)) | (1L << (TRADITIONAL - 604)) | (1L << (TRANSACTION - 604)) | (1L << (TRANSACTIONAL - 604)) | (1L << (TRIGGERS - 604)) | (1L << (TRUNCATE - 604)) | (1L << (UNBOUNDED - 604)) | (1L << (UNDEFINED - 604)) | (1L << (UNDOFILE - 604)) | (1L << (UNDO_BUFFER_SIZE - 604)) | (1L << (UNINSTALL - 604)) | (1L << (UNKNOWN - 604)) | (1L << (UNTIL - 604)) | (1L << (UPGRADE - 604)))) != 0) || ((((_la - 668)) & ~0x3f) == 0 && ((1L << (_la - 668)) & ((1L << (USER - 668)) | (1L << (USE_FRM - 668)) | (1L << (USER_RESOURCES - 668)) | (1L << (VALIDATION - 668)) | (1L << (VALUE - 668)) | (1L << (VARIABLES - 668)) | (1L << (VIEW - 668)) | (1L << (VIRTUAL - 668)) | (1L << (VISIBLE - 668)) | (1L << (WAIT - 668)) | (1L << (WARNINGS - 668)) | (1L << (WITHOUT - 668)) | (1L << (WORK - 668)) | (1L << (WRAPPER - 668)) | (1L << (X509 - 668)) | (1L << (XA - 668)) | (1L << (XML - 668)) | (1L << (YES - 668)) | (1L << (EUR - 668)) | (1L << (USA - 668)) | (1L << (JIS - 668)) | (1L << (ISO - 668)) | (1L << (INTERNAL - 668)) | (1L << (QUARTER - 668)) | (1L << (MONTH - 668)) | (1L << (DAY - 668)) | (1L << (HOUR - 668)) | (1L << (MINUTE - 668)) | (1L << (WEEK - 668)) | (1L << (SECOND - 668)) | (1L << (MICROSECOND - 668)) | (1L << (USER_STATISTICS - 668)) | (1L << (CLIENT_STATISTICS - 668)) | (1L << (INDEX_STATISTICS - 668)) | (1L << (TABLE_STATISTICS - 668)) | (1L << (FIREWALL_RULES - 668)) | (1L << (ADMIN - 668)) | (1L << (APPLICATION_PASSWORD_ADMIN - 668)) | (1L << (AUDIT_ADMIN - 668)) | (1L << (AUDIT_ABORT_EXEMPT - 668)) | (1L << (AUTHENTICATION_POLICY_ADMIN - 668)) | (1L << (BACKUP_ADMIN - 668)) | (1L << (BINLOG_ADMIN - 668)) | (1L << (BINLOG_ENCRYPTION_ADMIN - 668)) | (1L << (CLONE_ADMIN - 668)) | (1L << (CONNECTION_ADMIN - 668)) | (1L << (ENCRYPTION_KEY_ADMIN - 668)) | (1L << (EXECUTE - 668)) | (1L << (FILE - 668)) | (1L << (FIREWALL_ADMIN - 668)) | (1L << (FIREWALL_EXEMPT - 668)) | (1L << (FIREWALL_USER - 668)) | (1L << (FLUSH_OPTIMIZER_COSTS - 668)) | (1L << (FLUSH_STATUS - 668)) | (1L << (FLUSH_TABLES - 668)) | (1L << (FLUSH_USER_RESOURCES - 668)) | (1L << (GROUP_REPLICATION_ADMIN - 668)) | (1L << (INNODB_REDO_LOG_ARCHIVE - 668)) | (1L << (INNODB_REDO_LOG_ENABLE - 668)) | (1L << (INVOKE - 668)) | (1L << (LAMBDA - 668)) | (1L << (NDB_STORED_USER - 668)) | (1L << (PASSWORDLESS_USER_ADMIN - 668)))) != 0) || ((((_la - 732)) & ~0x3f) == 0 && ((1L << (_la - 732)) & ((1L << (PERSIST_RO_VARIABLES_ADMIN - 732)) | (1L << (PRIVILEGES - 732)) | (1L << (PROCESS - 732)) | (1L << (RELOAD - 732)) | (1L << (REPLICATION_APPLIER - 732)) | (1L << (REPLICATION_SLAVE_ADMIN - 732)) | (1L << (RESOURCE_GROUP_ADMIN - 732)) | (1L << (RESOURCE_GROUP_USER - 732)) | (1L << (ROLE_ADMIN - 732)) | (1L << (ROUTINE - 732)) | (1L << (S3 - 732)) | (1L << (SESSION_VARIABLES_ADMIN - 732)) | (1L << (SET_USER_ID - 732)) | (1L << (SHOW_ROUTINE - 732)) | (1L << (SHUTDOWN - 732)) | (1L << (SUPER - 732)) | (1L << (SYSTEM_VARIABLES_ADMIN - 732)) | (1L << (TABLES - 732)) | (1L << (TABLE_ENCRYPTION_ADMIN - 732)) | (1L << (VERSION_TOKEN_ADMIN - 732)) | (1L << (XA_RECOVER_ADMIN - 732)) | (1L << (ARMSCII8 - 732)) | (1L << (ASCII - 732)) | (1L << (BIG5 - 732)) | (1L << (CP1250 - 732)) | (1L << (CP1251 - 732)) | (1L << (CP1256 - 732)) | (1L << (CP1257 - 732)) | (1L << (CP850 - 732)) | (1L << (CP852 - 732)) | (1L << (CP866 - 732)) | (1L << (CP932 - 732)) | (1L << (DEC8 - 732)) | (1L << (EUCJPMS - 732)) | (1L << (EUCKR - 732)) | (1L << (GB18030 - 732)) | (1L << (GB2312 - 732)) | (1L << (GBK - 732)) | (1L << (GEOSTD8 - 732)) | (1L << (GREEK - 732)) | (1L << (HEBREW - 732)) | (1L << (HP8 - 732)) | (1L << (KEYBCS2 - 732)) | (1L << (KOI8R - 732)) | (1L << (KOI8U - 732)) | (1L << (LATIN1 - 732)) | (1L << (LATIN2 - 732)) | (1L << (LATIN5 - 732)) | (1L << (LATIN7 - 732)) | (1L << (MACCE - 732)) | (1L << (MACROMAN - 732)) | (1L << (SJIS - 732)) | (1L << (SWE7 - 732)) | (1L << (TIS620 - 732)) | (1L << (UCS2 - 732)) | (1L << (UJIS - 732)) | (1L << (UTF16 - 732)) | (1L << (UTF16LE - 732)) | (1L << (UTF32 - 732)) | (1L << (UTF8 - 732)) | (1L << (UTF8MB3 - 732)) | (1L << (UTF8MB4 - 732)) | (1L << (ARCHIVE - 732)))) != 0) || ((((_la - 796)) & ~0x3f) == 0 && ((1L << (_la - 796)) & ((1L << (BLACKHOLE - 796)) | (1L << (CSV - 796)) | (1L << (FEDERATED - 796)) | (1L << (INNODB - 796)) | (1L << (MEMORY - 796)) | (1L << (MRG_MYISAM - 796)) | (1L << (MYISAM - 796)) | (1L << (NDB - 796)) | (1L << (NDBCLUSTER - 796)) | (1L << (PERFORMANCE_SCHEMA - 796)) | (1L << (TOKUDB - 796)) | (1L << (REPEATABLE - 796)) | (1L << (COMMITTED - 796)) | (1L << (UNCOMMITTED - 796)) | (1L << (SERIALIZABLE - 796)) | (1L << (GEOMETRYCOLLECTION - 796)) | (1L << (GEOMETRY - 796)) | (1L << (LINESTRING - 796)) | (1L << (MULTILINESTRING - 796)) | (1L << (MULTIPOINT - 796)) | (1L << (MULTIPOLYGON - 796)) | (1L << (POINT - 796)) | (1L << (POLYGON - 796)) | (1L << (ABS - 796)) | (1L << (ACOS - 796)) | (1L << (ADDDATE - 796)) | (1L << (ADDTIME - 796)) | (1L << (AES_DECRYPT - 796)) | (1L << (AES_ENCRYPT - 796)) | (1L << (AREA - 796)) | (1L << (ASBINARY - 796)) | (1L << (ASIN - 796)) | (1L << (ASTEXT - 796)) | (1L << (ASWKB - 796)) | (1L << (ASWKT - 796)) | (1L << (ASYMMETRIC_DECRYPT - 796)) | (1L << (ASYMMETRIC_DERIVE - 796)) | (1L << (ASYMMETRIC_ENCRYPT - 796)) | (1L << (ASYMMETRIC_SIGN - 796)) | (1L << (ASYMMETRIC_VERIFY - 796)) | (1L << (ATAN - 796)) | (1L << (ATAN2 - 796)) | (1L << (BENCHMARK - 796)) | (1L << (BIN - 796)) | (1L << (BIT_COUNT - 796)) | (1L << (BIT_LENGTH - 796)) | (1L << (BUFFER - 796)) | (1L << (CATALOG_NAME - 796)) | (1L << (CEIL - 796)) | (1L << (CEILING - 796)) | (1L << (CENTROID - 796)) | (1L << (CHARACTER_LENGTH - 796)) | (1L << (CHARSET - 796)) | (1L << (CHAR_LENGTH - 796)) | (1L << (COERCIBILITY - 796)) | (1L << (COLLATION - 796)) | (1L << (COMPRESS - 796)) | (1L << (CONCAT - 796)) | (1L << (CONCAT_WS - 796)) | (1L << (CONNECTION_ID - 796)) | (1L << (CONV - 796)) | (1L << (CONVERT_TZ - 796)) | (1L << (COS - 796)))) != 0) || ((((_la - 860)) & ~0x3f) == 0 && ((1L << (_la - 860)) & ((1L << (COT - 860)) | (1L << (CRC32 - 860)) | (1L << (CREATE_ASYMMETRIC_PRIV_KEY - 860)) | (1L << (CREATE_ASYMMETRIC_PUB_KEY - 860)) | (1L << (CREATE_DH_PARAMETERS - 860)) | (1L << (CREATE_DIGEST - 860)) | (1L << (CROSSES - 860)) | (1L << (DATEDIFF - 860)) | (1L << (DATE_FORMAT - 860)) | (1L << (DAYNAME - 860)) | (1L << (DAYOFMONTH - 860)) | (1L << (DAYOFWEEK - 860)) | (1L << (DAYOFYEAR - 860)) | (1L << (DECODE - 860)) | (1L << (DEGREES - 860)) | (1L << (DES_DECRYPT - 860)) | (1L << (DES_ENCRYPT - 860)) | (1L << (DIMENSION - 860)) | (1L << (DISJOINT - 860)) | (1L << (ELT - 860)) | (1L << (ENCODE - 860)) | (1L << (ENCRYPT - 860)) | (1L << (ENDPOINT - 860)) | (1L << (ENGINE_ATTRIBUTE - 860)) | (1L << (ENVELOPE - 860)) | (1L << (EQUALS - 860)) | (1L << (EXP - 860)) | (1L << (EXPORT_SET - 860)) | (1L << (EXTERIORRING - 860)) | (1L << (EXTRACTVALUE - 860)) | (1L << (FIELD - 860)) | (1L << (FIND_IN_SET - 860)) | (1L << (FLOOR - 860)) | (1L << (FORMAT - 860)) | (1L << (FOUND_ROWS - 860)) | (1L << (FROM_BASE64 - 860)) | (1L << (FROM_DAYS - 860)) | (1L << (FROM_UNIXTIME - 860)) | (1L << (GEOMCOLLFROMTEXT - 860)) | (1L << (GEOMCOLLFROMWKB - 860)) | (1L << (GEOMETRYCOLLECTIONFROMTEXT - 860)) | (1L << (GEOMETRYCOLLECTIONFROMWKB - 860)) | (1L << (GEOMETRYFROMTEXT - 860)) | (1L << (GEOMETRYFROMWKB - 860)) | (1L << (GEOMETRYN - 860)) | (1L << (GEOMETRYTYPE - 860)) | (1L << (GEOMFROMTEXT - 860)) | (1L << (GEOMFROMWKB - 860)) | (1L << (GET_FORMAT - 860)) | (1L << (GET_LOCK - 860)) | (1L << (GLENGTH - 860)) | (1L << (GREATEST - 860)) | (1L << (GTID_SUBSET - 860)) | (1L << (GTID_SUBTRACT - 860)) | (1L << (HEX - 860)) | (1L << (IFNULL - 860)) | (1L << (INET6_ATON - 860)) | (1L << (INET6_NTOA - 860)) | (1L << (INET_ATON - 860)) | (1L << (INET_NTOA - 860)) | (1L << (INSTR - 860)) | (1L << (INTERIORRINGN - 860)) | (1L << (INTERSECTS - 860)) | (1L << (ISCLOSED - 860)))) != 0) || ((((_la - 924)) & ~0x3f) == 0 && ((1L << (_la - 924)) & ((1L << (ISEMPTY - 924)) | (1L << (ISNULL - 924)) | (1L << (ISSIMPLE - 924)) | (1L << (IS_FREE_LOCK - 924)) | (1L << (IS_IPV4 - 924)) | (1L << (IS_IPV4_COMPAT - 924)) | (1L << (IS_IPV4_MAPPED - 924)) | (1L << (IS_IPV6 - 924)) | (1L << (IS_USED_LOCK - 924)) | (1L << (LAST_INSERT_ID - 924)) | (1L << (LCASE - 924)) | (1L << (LEAST - 924)) | (1L << (LENGTH - 924)) | (1L << (LINEFROMTEXT - 924)) | (1L << (LINEFROMWKB - 924)) | (1L << (LINESTRINGFROMTEXT - 924)) | (1L << (LINESTRINGFROMWKB - 924)) | (1L << (LN - 924)) | (1L << (LOAD_FILE - 924)) | (1L << (LOCATE - 924)) | (1L << (LOG - 924)) | (1L << (LOG10 - 924)) | (1L << (LOG2 - 924)) | (1L << (LOWER - 924)) | (1L << (LPAD - 924)) | (1L << (LTRIM - 924)) | (1L << (MAKEDATE - 924)) | (1L << (MAKETIME - 924)) | (1L << (MAKE_SET - 924)) | (1L << (MASTER_POS_WAIT - 924)) | (1L << (MBRCONTAINS - 924)) | (1L << (MBRDISJOINT - 924)) | (1L << (MBREQUAL - 924)) | (1L << (MBRINTERSECTS - 924)) | (1L << (MBROVERLAPS - 924)) | (1L << (MBRTOUCHES - 924)) | (1L << (MBRWITHIN - 924)) | (1L << (MD5 - 924)) | (1L << (MLINEFROMTEXT - 924)) | (1L << (MLINEFROMWKB - 924)) | (1L << (MONTHNAME - 924)) | (1L << (MPOINTFROMTEXT - 924)) | (1L << (MPOINTFROMWKB - 924)) | (1L << (MPOLYFROMTEXT - 924)) | (1L << (MPOLYFROMWKB - 924)) | (1L << (MULTILINESTRINGFROMTEXT - 924)) | (1L << (MULTILINESTRINGFROMWKB - 924)) | (1L << (MULTIPOINTFROMTEXT - 924)) | (1L << (MULTIPOINTFROMWKB - 924)) | (1L << (MULTIPOLYGONFROMTEXT - 924)) | (1L << (MULTIPOLYGONFROMWKB - 924)) | (1L << (NAME_CONST - 924)) | (1L << (NULLIF - 924)) | (1L << (NUMGEOMETRIES - 924)) | (1L << (NUMINTERIORRINGS - 924)) | (1L << (NUMPOINTS - 924)) | (1L << (OCT - 924)) | (1L << (OCTET_LENGTH - 924)) | (1L << (ORD - 924)) | (1L << (OVERLAPS - 924)) | (1L << (PERIOD_ADD - 924)) | (1L << (PERIOD_DIFF - 924)) | (1L << (PI - 924)) | (1L << (POINTFROMTEXT - 924)))) != 0) || ((((_la - 988)) & ~0x3f) == 0 && ((1L << (_la - 988)) & ((1L << (POINTFROMWKB - 988)) | (1L << (POINTN - 988)) | (1L << (POLYFROMTEXT - 988)) | (1L << (POLYFROMWKB - 988)) | (1L << (POLYGONFROMTEXT - 988)) | (1L << (POLYGONFROMWKB - 988)) | (1L << (POW - 988)) | (1L << (POWER - 988)) | (1L << (QUOTE - 988)) | (1L << (RADIANS - 988)) | (1L << (RAND - 988)) | (1L << (RANDOM - 988)) | (1L << (RANDOM_BYTES - 988)) | (1L << (RELEASE_LOCK - 988)) | (1L << (REVERSE - 988)) | (1L << (ROUND - 988)) | (1L << (ROW_COUNT - 988)) | (1L << (RPAD - 988)) | (1L << (RTRIM - 988)) | (1L << (SEC_TO_TIME - 988)) | (1L << (SECONDARY_ENGINE_ATTRIBUTE - 988)) | (1L << (SENSITIVE_VARIABLES_OBSERVER - 988)) | (1L << (SESSION_USER - 988)) | (1L << (SHA - 988)) | (1L << (SHA1 - 988)) | (1L << (SHA2 - 988)) | (1L << (SCHEMA_NAME - 988)) | (1L << (SIGN - 988)) | (1L << (SIN - 988)) | (1L << (SLEEP - 988)) | (1L << (SOUNDEX - 988)) | (1L << (SQL_THREAD_WAIT_AFTER_GTIDS - 988)) | (1L << (SQRT - 988)) | (1L << (SRID - 988)) | (1L << (STARTPOINT - 988)) | (1L << (STRCMP - 988)) | (1L << (STR_TO_DATE - 988)) | (1L << (ST_AREA - 988)) | (1L << (ST_ASBINARY - 988)) | (1L << (ST_ASTEXT - 988)) | (1L << (ST_ASWKB - 988)) | (1L << (ST_ASWKT - 988)) | (1L << (ST_BUFFER - 988)) | (1L << (ST_CENTROID - 988)) | (1L << (ST_CONTAINS - 988)) | (1L << (ST_CROSSES - 988)) | (1L << (ST_DIFFERENCE - 988)) | (1L << (ST_DIMENSION - 988)) | (1L << (ST_DISJOINT - 988)) | (1L << (ST_DISTANCE - 988)) | (1L << (ST_ENDPOINT - 988)) | (1L << (ST_ENVELOPE - 988)) | (1L << (ST_EQUALS - 988)) | (1L << (ST_EXTERIORRING - 988)) | (1L << (ST_GEOMCOLLFROMTEXT - 988)) | (1L << (ST_GEOMCOLLFROMTXT - 988)) | (1L << (ST_GEOMCOLLFROMWKB - 988)) | (1L << (ST_GEOMETRYCOLLECTIONFROMTEXT - 988)) | (1L << (ST_GEOMETRYCOLLECTIONFROMWKB - 988)) | (1L << (ST_GEOMETRYFROMTEXT - 988)) | (1L << (ST_GEOMETRYFROMWKB - 988)) | (1L << (ST_GEOMETRYN - 988)) | (1L << (ST_GEOMETRYTYPE - 988)) | (1L << (ST_GEOMFROMTEXT - 988)))) != 0) || ((((_la - 1052)) & ~0x3f) == 0 && ((1L << (_la - 1052)) & ((1L << (ST_GEOMFROMWKB - 1052)) | (1L << (ST_INTERIORRINGN - 1052)) | (1L << (ST_INTERSECTION - 1052)) | (1L << (ST_INTERSECTS - 1052)) | (1L << (ST_ISCLOSED - 1052)) | (1L << (ST_ISEMPTY - 1052)) | (1L << (ST_ISSIMPLE - 1052)) | (1L << (ST_LINEFROMTEXT - 1052)) | (1L << (ST_LINEFROMWKB - 1052)) | (1L << (ST_LINESTRINGFROMTEXT - 1052)) | (1L << (ST_LINESTRINGFROMWKB - 1052)) | (1L << (ST_NUMGEOMETRIES - 1052)) | (1L << (ST_NUMINTERIORRING - 1052)) | (1L << (ST_NUMINTERIORRINGS - 1052)) | (1L << (ST_NUMPOINTS - 1052)) | (1L << (ST_OVERLAPS - 1052)) | (1L << (ST_POINTFROMTEXT - 1052)) | (1L << (ST_POINTFROMWKB - 1052)) | (1L << (ST_POINTN - 1052)) | (1L << (ST_POLYFROMTEXT - 1052)) | (1L << (ST_POLYFROMWKB - 1052)) | (1L << (ST_POLYGONFROMTEXT - 1052)) | (1L << (ST_POLYGONFROMWKB - 1052)) | (1L << (ST_SRID - 1052)) | (1L << (ST_STARTPOINT - 1052)) | (1L << (ST_SYMDIFFERENCE - 1052)) | (1L << (ST_TOUCHES - 1052)) | (1L << (ST_UNION - 1052)) | (1L << (ST_WITHIN - 1052)) | (1L << (ST_X - 1052)) | (1L << (ST_Y - 1052)) | (1L << (SUBDATE - 1052)) | (1L << (SUBSTRING_INDEX - 1052)) | (1L << (SUBTIME - 1052)) | (1L << (SYSTEM_USER - 1052)) | (1L << (SYSTEM - 1052)) | (1L << (TAN - 1052)) | (1L << (TELEMETRY_LOG_ADMIN - 1052)) | (1L << (TIMEDIFF - 1052)) | (1L << (TIMESTAMPADD - 1052)) | (1L << (TIMESTAMPDIFF - 1052)) | (1L << (TIME_FORMAT - 1052)) | (1L << (TIME_TO_SEC - 1052)) | (1L << (TOUCHES - 1052)) | (1L << (TO_BASE64 - 1052)) | (1L << (TO_DAYS - 1052)) | (1L << (TO_SECONDS - 1052)) | (1L << (TP_CONNECTION_ADMIN - 1052)) | (1L << (UCASE - 1052)) | (1L << (UNCOMPRESS - 1052)) | (1L << (UNCOMPRESSED_LENGTH - 1052)) | (1L << (UNHEX - 1052)) | (1L << (UNIX_TIMESTAMP - 1052)) | (1L << (UPDATEXML - 1052)) | (1L << (UPPER - 1052)) | (1L << (UUID - 1052)) | (1L << (UUID_SHORT - 1052)) | (1L << (VALIDATE_PASSWORD_STRENGTH - 1052)) | (1L << (VERSION - 1052)) | (1L << (VERSIONING - 1052)) | (1L << (WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS - 1052)) | (1L << (WEEKDAY - 1052)) | (1L << (WEEKOFYEAR - 1052)) | (1L << (WEIGHT_STRING - 1052)))) != 0) || ((((_la - 1116)) & ~0x3f) == 0 && ((1L << (_la - 1116)) & ((1L << (WITHIN - 1116)) | (1L << (YEARWEEK - 1116)) | (1L << (Y_FUNCTION - 1116)) | (1L << (X_FUNCTION - 1116)) | (1L << (VIA - 1116)) | (1L << (LASTVAL - 1116)) | (1L << (NEXTVAL - 1116)) | (1L << (SETVAL - 1116)) | (1L << (PREVIOUS - 1116)) | (1L << (PERSISTENT - 1116)) | (1L << (BINLOG_MONITOR - 1116)) | (1L << (BINLOG_REPLAY - 1116)) | (1L << (FEDERATED_ADMIN - 1116)) | (1L << (READ_ONLY_ADMIN - 1116)) | (1L << (REPLICA - 1116)) | (1L << (REPLICATION_MASTER_ADMIN - 1116)) | (1L << (MONITOR - 1116)) | (1L << (READ_ONLY - 1116)) | (1L << (REPLAY - 1116)) | (1L << (MOD - 1116)) | (1L << (CHARSET_REVERSE_QOUTE_STRING - 1116)) | (1L << (STRING_LITERAL - 1116)))) != 0) || _la==ID) {
					{
					setState(2875);
					((AlterByAddForeignKeyContext)_localctx).indexName = uid();
					}
				}

				setState(2878);
				indexColumnNames();
				setState(2879);
				referenceDefinition();
				}
				break;
			case 9:
				_localctx = new AlterByAddCheckTableConstraintContext(_localctx);
				enterOuterAlt(_localctx, 9);
				{
				setState(2881);
				match(ADD);
				setState(2886);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==CONSTRAINT) {
					{
					setState(2882);
					match(CONSTRAINT);
					setState(2884);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ARRAY) | (1L << ATTRIBUTE) | (1L << BUCKETS) | (1L << CONDITION) | (1L << CURRENT) | (1L << CURRENT_ROLE) | (1L << CURRENT_USER) | (1L << DATABASE) | (1L << DEFAULT) | (1L << DIAGNOSTICS) | (1L << EMPTY) | (1L << ENFORCED) | (1L << EXCEPT))) != 0) || ((((_la - 74)) & ~0x3f) == 0 && ((1L << (_la - 74)) & ((1L << (GROUP - 74)) | (1L << (GROUP_REPLICATION_STREAM - 74)) | (1L << (IF - 74)) | (1L << (IGNORED - 74)) | (1L << (INSERT - 74)) | (1L << (LATERAL - 74)) | (1L << (LEFT - 74)) | (1L << (LOCKED - 74)) | (1L << (MAXVALUE - 74)) | (1L << (MINVALUE - 74)) | (1L << (NUMBER - 74)) | (1L << (OPTIONAL - 74)) | (1L << (ORDER - 74)) | (1L << (PRIMARY - 74)))) != 0) || ((((_la - 142)) & ~0x3f) == 0 && ((1L << (_la - 142)) & ((1L << (REPEAT - 142)) | (1L << (REPLACE - 142)) | (1L << (RIGHT - 142)) | (1L << (SCHEMA - 142)) | (1L << (SKIP_ - 142)) | (1L << (SKIP_QUERY_REWRITE - 142)) | (1L << (STACKED - 142)) | (1L << (STATEMENT - 142)))) != 0) || ((((_la - 220)) & ~0x3f) == 0 && ((1L << (_la - 220)) & ((1L << (DATE - 220)) | (1L << (TIME - 220)) | (1L << (TIMESTAMP - 220)) | (1L << (DATETIME - 220)) | (1L << (YEAR - 220)) | (1L << (NATIONAL - 220)) | (1L << (BINARY - 220)) | (1L << (TEXT - 220)) | (1L << (ENUM - 220)) | (1L << (SERIAL - 220)) | (1L << (JSON_ARRAY - 220)) | (1L << (JSON_ARRAYAGG - 220)) | (1L << (JSON_ARRAY_APPEND - 220)) | (1L << (JSON_ARRAY_INSERT - 220)) | (1L << (JSON_CONTAINS - 220)) | (1L << (JSON_CONTAINS_PATH - 220)) | (1L << (JSON_DEPTH - 220)) | (1L << (JSON_EXTRACT - 220)) | (1L << (JSON_INSERT - 220)) | (1L << (JSON_KEYS - 220)) | (1L << (JSON_LENGTH - 220)) | (1L << (JSON_MERGE - 220)) | (1L << (JSON_MERGE_PATCH - 220)) | (1L << (JSON_MERGE_PRESERVE - 220)) | (1L << (JSON_OBJECT - 220)) | (1L << (JSON_OBJECTAGG - 220)) | (1L << (JSON_OVERLAPS - 220)) | (1L << (JSON_PRETTY - 220)) | (1L << (JSON_QUOTE - 220)) | (1L << (JSON_REMOVE - 220)) | (1L << (JSON_REPLACE - 220)) | (1L << (JSON_SCHEMA_VALID - 220)) | (1L << (JSON_SCHEMA_VALIDATION_REPORT - 220)) | (1L << (JSON_SEARCH - 220)) | (1L << (JSON_SET - 220)) | (1L << (JSON_STORAGE_FREE - 220)) | (1L << (JSON_STORAGE_SIZE - 220)) | (1L << (JSON_TABLE - 220)) | (1L << (JSON_TYPE - 220)) | (1L << (JSON_UNQUOTE - 220)))) != 0) || ((((_la - 284)) & ~0x3f) == 0 && ((1L << (_la - 284)) & ((1L << (JSON_VALID - 284)) | (1L << (JSON_VALUE - 284)) | (1L << (NESTED - 284)) | (1L << (ORDINALITY - 284)) | (1L << (PATH - 284)) | (1L << (AVG - 284)) | (1L << (BIT_AND - 284)) | (1L << (BIT_OR - 284)) | (1L << (BIT_XOR - 284)) | (1L << (COUNT - 284)) | (1L << (CUME_DIST - 284)) | (1L << (DENSE_RANK - 284)) | (1L << (FIRST_VALUE - 284)) | (1L << (GROUP_CONCAT - 284)) | (1L << (LAG - 284)) | (1L << (LAST_VALUE - 284)) | (1L << (LEAD - 284)) | (1L << (MAX - 284)) | (1L << (MIN - 284)) | (1L << (NTILE - 284)) | (1L << (NTH_VALUE - 284)) | (1L << (PERCENT_RANK - 284)) | (1L << (RANK - 284)) | (1L << (ROW_NUMBER - 284)) | (1L << (STD - 284)) | (1L << (STDDEV - 284)) | (1L << (STDDEV_POP - 284)) | (1L << (STDDEV_SAMP - 284)) | (1L << (SUM - 284)) | (1L << (VAR_POP - 284)) | (1L << (VAR_SAMP - 284)) | (1L << (VARIANCE - 284)) | (1L << (CURRENT_DATE - 284)) | (1L << (CURRENT_TIME - 284)) | (1L << (CURRENT_TIMESTAMP - 284)) | (1L << (LOCALTIME - 284)) | (1L << (CURDATE - 284)) | (1L << (CURTIME - 284)) | (1L << (DATE_ADD - 284)) | (1L << (DATE_SUB - 284)) | (1L << (LOCALTIMESTAMP - 284)) | (1L << (NOW - 284)) | (1L << (POSITION - 284)) | (1L << (SUBSTR - 284)) | (1L << (SUBSTRING - 284)) | (1L << (SYSDATE - 284)) | (1L << (TRIM - 284)) | (1L << (UTC_DATE - 284)) | (1L << (UTC_TIME - 284)) | (1L << (UTC_TIMESTAMP - 284)) | (1L << (ACCOUNT - 284)) | (1L << (ACTION - 284)) | (1L << (AFTER - 284)) | (1L << (AGGREGATE - 284)) | (1L << (ALGORITHM - 284)) | (1L << (ANY - 284)) | (1L << (AT - 284)) | (1L << (AUTHORS - 284)) | (1L << (AUTOCOMMIT - 284)) | (1L << (AUTOEXTEND_SIZE - 284)) | (1L << (AUTO_INCREMENT - 284)) | (1L << (AVG_ROW_LENGTH - 284)) | (1L << (BEGIN - 284)))) != 0) || ((((_la - 348)) & ~0x3f) == 0 && ((1L << (_la - 348)) & ((1L << (BINLOG - 348)) | (1L << (BIT - 348)) | (1L << (BLOCK - 348)) | (1L << (BOOL - 348)) | (1L << (BOOLEAN - 348)) | (1L << (BTREE - 348)) | (1L << (CACHE - 348)) | (1L << (CASCADED - 348)) | (1L << (CHAIN - 348)) | (1L << (CHANGED - 348)) | (1L << (CHANNEL - 348)) | (1L << (CHECKSUM - 348)) | (1L << (PAGE_CHECKSUM - 348)) | (1L << (CIPHER - 348)) | (1L << (CLASS_ORIGIN - 348)) | (1L << (CLIENT - 348)) | (1L << (CLOSE - 348)) | (1L << (CLUSTERING - 348)) | (1L << (COALESCE - 348)) | (1L << (CODE - 348)) | (1L << (COLUMNS - 348)) | (1L << (COLUMN_FORMAT - 348)) | (1L << (COLUMN_NAME - 348)) | (1L << (COMMENT - 348)) | (1L << (COMMIT - 348)) | (1L << (COMPACT - 348)) | (1L << (COMPLETION - 348)) | (1L << (COMPRESSED - 348)) | (1L << (COMPRESSION - 348)) | (1L << (CONCURRENT - 348)) | (1L << (CONNECT - 348)) | (1L << (CONNECTION - 348)) | (1L << (CONSISTENT - 348)) | (1L << (CONSTRAINT_CATALOG - 348)) | (1L << (CONSTRAINT_SCHEMA - 348)) | (1L << (CONSTRAINT_NAME - 348)) | (1L << (CONTAINS - 348)) | (1L << (CONTEXT - 348)) | (1L << (CONTRIBUTORS - 348)) | (1L << (COPY - 348)) | (1L << (CPU - 348)) | (1L << (CYCLE - 348)) | (1L << (CURSOR_NAME - 348)) | (1L << (DATA - 348)) | (1L << (DATAFILE - 348)) | (1L << (DEALLOCATE - 348)) | (1L << (DEFAULT_AUTH - 348)) | (1L << (DEFINER - 348)) | (1L << (DELAY_KEY_WRITE - 348)) | (1L << (DES_KEY_FILE - 348)) | (1L << (DIRECTORY - 348)) | (1L << (DISABLE - 348)) | (1L << (DISCARD - 348)) | (1L << (DISK - 348)) | (1L << (DO - 348)) | (1L << (DUMPFILE - 348)) | (1L << (DUPLICATE - 348)) | (1L << (DYNAMIC - 348)) | (1L << (ENABLE - 348)) | (1L << (ENCRYPTED - 348)) | (1L << (ENCRYPTION - 348)) | (1L << (ENCRYPTION_KEY_ID - 348)) | (1L << (END - 348)) | (1L << (ENDS - 348)))) != 0) || ((((_la - 412)) & ~0x3f) == 0 && ((1L << (_la - 412)) & ((1L << (ENGINE - 412)) | (1L << (ENGINES - 412)) | (1L << (ERROR - 412)) | (1L << (ERRORS - 412)) | (1L << (ESCAPE - 412)) | (1L << (EVEN - 412)) | (1L << (EVENT - 412)) | (1L << (EVENTS - 412)) | (1L << (EVERY - 412)) | (1L << (EXCHANGE - 412)) | (1L << (EXCLUSIVE - 412)) | (1L << (EXPIRE - 412)) | (1L << (EXPORT - 412)) | (1L << (EXTENDED - 412)) | (1L << (EXTENT_SIZE - 412)) | (1L << (FAILED_LOGIN_ATTEMPTS - 412)) | (1L << (FAST - 412)) | (1L << (FAULTS - 412)) | (1L << (FIELDS - 412)) | (1L << (FILE_BLOCK_SIZE - 412)) | (1L << (FILTER - 412)) | (1L << (FIRST - 412)) | (1L << (FIXED - 412)) | (1L << (FLUSH - 412)) | (1L << (FOLLOWS - 412)) | (1L << (FOUND - 412)) | (1L << (FULL - 412)) | (1L << (FUNCTION - 412)) | (1L << (GENERAL - 412)) | (1L << (GLOBAL - 412)) | (1L << (GRANTS - 412)) | (1L << (GROUP_REPLICATION - 412)) | (1L << (HANDLER - 412)) | (1L << (HASH - 412)) | (1L << (HELP - 412)) | (1L << (HISTORY - 412)) | (1L << (HOST - 412)) | (1L << (HOSTS - 412)) | (1L << (IDENTIFIED - 412)) | (1L << (IGNORE_SERVER_IDS - 412)) | (1L << (IMPORT - 412)) | (1L << (INCREMENT - 412)) | (1L << (INDEXES - 412)) | (1L << (INITIAL_SIZE - 412)) | (1L << (INPLACE - 412)) | (1L << (INSERT_METHOD - 412)) | (1L << (INSTALL - 412)) | (1L << (INSTANCE - 412)) | (1L << (INSTANT - 412)) | (1L << (INVISIBLE - 412)) | (1L << (INVOKER - 412)) | (1L << (IO - 412)) | (1L << (IO_THREAD - 412)) | (1L << (IPC - 412)) | (1L << (ISOLATION - 412)) | (1L << (ISSUER - 412)) | (1L << (JSON - 412)) | (1L << (KEY_BLOCK_SIZE - 412)) | (1L << (LANGUAGE - 412)) | (1L << (LAST - 412)) | (1L << (LEAVES - 412)) | (1L << (LESS - 412)) | (1L << (LEVEL - 412)))) != 0) || ((((_la - 476)) & ~0x3f) == 0 && ((1L << (_la - 476)) & ((1L << (LIST - 476)) | (1L << (LOCAL - 476)) | (1L << (LOGFILE - 476)) | (1L << (LOGS - 476)) | (1L << (MASTER - 476)) | (1L << (MASTER_AUTO_POSITION - 476)) | (1L << (MASTER_CONNECT_RETRY - 476)) | (1L << (MASTER_DELAY - 476)) | (1L << (MASTER_HEARTBEAT_PERIOD - 476)) | (1L << (MASTER_HOST - 476)) | (1L << (MASTER_LOG_FILE - 476)) | (1L << (MASTER_LOG_POS - 476)) | (1L << (MASTER_PASSWORD - 476)) | (1L << (MASTER_PORT - 476)) | (1L << (MASTER_RETRY_COUNT - 476)) | (1L << (MASTER_SSL - 476)) | (1L << (MASTER_SSL_CA - 476)) | (1L << (MASTER_SSL_CAPATH - 476)) | (1L << (MASTER_SSL_CERT - 476)) | (1L << (MASTER_SSL_CIPHER - 476)) | (1L << (MASTER_SSL_CRL - 476)) | (1L << (MASTER_SSL_CRLPATH - 476)) | (1L << (MASTER_SSL_KEY - 476)) | (1L << (MASTER_TLS_VERSION - 476)) | (1L << (MASTER_USER - 476)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 476)) | (1L << (MAX_QUERIES_PER_HOUR - 476)) | (1L << (MAX_ROWS - 476)) | (1L << (MAX_SIZE - 476)) | (1L << (MAX_UPDATES_PER_HOUR - 476)) | (1L << (MAX_USER_CONNECTIONS - 476)) | (1L << (MEDIUM - 476)) | (1L << (MEMBER - 476)) | (1L << (MERGE - 476)) | (1L << (MESSAGE_TEXT - 476)) | (1L << (MID - 476)) | (1L << (MIGRATE - 476)) | (1L << (MIN_ROWS - 476)) | (1L << (MODE - 476)) | (1L << (MODIFY - 476)) | (1L << (MUTEX - 476)) | (1L << (MYSQL - 476)) | (1L << (MYSQL_ERRNO - 476)) | (1L << (NAME - 476)) | (1L << (NAMES - 476)) | (1L << (NCHAR - 476)) | (1L << (NEVER - 476)) | (1L << (NEXT - 476)) | (1L << (NO - 476)) | (1L << (NOCACHE - 476)) | (1L << (NOCOPY - 476)) | (1L << (NOCYCLE - 476)) | (1L << (NOMAXVALUE - 476)) | (1L << (NOMINVALUE - 476)) | (1L << (NOWAIT - 476)) | (1L << (NODEGROUP - 476)) | (1L << (NONE - 476)) | (1L << (ODBC - 476)) | (1L << (OFFLINE - 476)) | (1L << (OFFSET - 476)) | (1L << (OF - 476)) | (1L << (OJ - 476)) | (1L << (OLD_PASSWORD - 476)) | (1L << (ONE - 476)))) != 0) || ((((_la - 540)) & ~0x3f) == 0 && ((1L << (_la - 540)) & ((1L << (ONLINE - 540)) | (1L << (ONLY - 540)) | (1L << (OPEN - 540)) | (1L << (OPTIMIZER_COSTS - 540)) | (1L << (OPTIONS - 540)) | (1L << (OWNER - 540)) | (1L << (PACK_KEYS - 540)) | (1L << (PAGE - 540)) | (1L << (PARSER - 540)) | (1L << (PARTIAL - 540)) | (1L << (PARTITIONING - 540)) | (1L << (PARTITIONS - 540)) | (1L << (PASSWORD - 540)) | (1L << (PASSWORD_LOCK_TIME - 540)) | (1L << (PHASE - 540)) | (1L << (PLUGIN - 540)) | (1L << (PLUGIN_DIR - 540)) | (1L << (PLUGINS - 540)) | (1L << (PORT - 540)) | (1L << (PRECEDES - 540)) | (1L << (PREPARE - 540)) | (1L << (PRESERVE - 540)) | (1L << (PREV - 540)) | (1L << (PROCESSLIST - 540)) | (1L << (PROFILE - 540)) | (1L << (PROFILES - 540)) | (1L << (PROXY - 540)) | (1L << (QUERY - 540)) | (1L << (QUICK - 540)) | (1L << (REBUILD - 540)) | (1L << (RECOVER - 540)) | (1L << (RECURSIVE - 540)) | (1L << (REDO_BUFFER_SIZE - 540)) | (1L << (REDUNDANT - 540)) | (1L << (RELAY - 540)) | (1L << (RELAY_LOG_FILE - 540)) | (1L << (RELAY_LOG_POS - 540)) | (1L << (RELAYLOG - 540)) | (1L << (REMOVE - 540)) | (1L << (REORGANIZE - 540)) | (1L << (REPAIR - 540)) | (1L << (REPLICATE_DO_DB - 540)) | (1L << (REPLICATE_DO_TABLE - 540)) | (1L << (REPLICATE_IGNORE_DB - 540)) | (1L << (REPLICATE_IGNORE_TABLE - 540)) | (1L << (REPLICATE_REWRITE_DB - 540)) | (1L << (REPLICATE_WILD_DO_TABLE - 540)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 540)) | (1L << (REPLICATION - 540)) | (1L << (RESET - 540)) | (1L << (RESTART - 540)) | (1L << (RESUME - 540)) | (1L << (RETURNED_SQLSTATE - 540)) | (1L << (RETURNING - 540)) | (1L << (RETURNS - 540)) | (1L << (REUSE - 540)) | (1L << (ROLE - 540)) | (1L << (ROLLBACK - 540)) | (1L << (ROLLUP - 540)) | (1L << (ROTATE - 540)) | (1L << (ROW - 540)))) != 0) || ((((_la - 604)) & ~0x3f) == 0 && ((1L << (_la - 604)) & ((1L << (ROWS - 604)) | (1L << (ROW_FORMAT - 604)) | (1L << (RTREE - 604)) | (1L << (SAVEPOINT - 604)) | (1L << (SCHEDULE - 604)) | (1L << (SECURITY - 604)) | (1L << (SEQUENCE - 604)) | (1L << (SERVER - 604)) | (1L << (SESSION - 604)) | (1L << (SHARE - 604)) | (1L << (SHARED - 604)) | (1L << (SIGNED - 604)) | (1L << (SIMPLE - 604)) | (1L << (SLAVE - 604)) | (1L << (SLOW - 604)) | (1L << (SNAPSHOT - 604)) | (1L << (SOCKET - 604)) | (1L << (SOME - 604)) | (1L << (SONAME - 604)) | (1L << (SOUNDS - 604)) | (1L << (SOURCE - 604)) | (1L << (SQL_AFTER_GTIDS - 604)) | (1L << (SQL_AFTER_MTS_GAPS - 604)) | (1L << (SQL_BEFORE_GTIDS - 604)) | (1L << (SQL_BUFFER_RESULT - 604)) | (1L << (SQL_CACHE - 604)) | (1L << (SQL_NO_CACHE - 604)) | (1L << (SQL_THREAD - 604)) | (1L << (START - 604)) | (1L << (STARTS - 604)) | (1L << (STATS_AUTO_RECALC - 604)) | (1L << (STATS_PERSISTENT - 604)) | (1L << (STATS_SAMPLE_PAGES - 604)) | (1L << (STATUS - 604)) | (1L << (STOP - 604)) | (1L << (STORAGE - 604)) | (1L << (STRING - 604)) | (1L << (SUBCLASS_ORIGIN - 604)) | (1L << (SUBJECT - 604)) | (1L << (SUBPARTITION - 604)) | (1L << (SUBPARTITIONS - 604)) | (1L << (SUSPEND - 604)) | (1L << (SWAPS - 604)) | (1L << (SWITCHES - 604)) | (1L << (TABLE_NAME - 604)) | (1L << (TABLESPACE - 604)) | (1L << (TABLE_TYPE - 604)) | (1L << (TEMPORARY - 604)) | (1L << (TEMPTABLE - 604)) | (1L << (THAN - 604)) | (1L << (TRADITIONAL - 604)) | (1L << (TRANSACTION - 604)) | (1L << (TRANSACTIONAL - 604)) | (1L << (TRIGGERS - 604)) | (1L << (TRUNCATE - 604)) | (1L << (UNBOUNDED - 604)) | (1L << (UNDEFINED - 604)) | (1L << (UNDOFILE - 604)) | (1L << (UNDO_BUFFER_SIZE - 604)) | (1L << (UNINSTALL - 604)) | (1L << (UNKNOWN - 604)) | (1L << (UNTIL - 604)) | (1L << (UPGRADE - 604)))) != 0) || ((((_la - 668)) & ~0x3f) == 0 && ((1L << (_la - 668)) & ((1L << (USER - 668)) | (1L << (USE_FRM - 668)) | (1L << (USER_RESOURCES - 668)) | (1L << (VALIDATION - 668)) | (1L << (VALUE - 668)) | (1L << (VARIABLES - 668)) | (1L << (VIEW - 668)) | (1L << (VIRTUAL - 668)) | (1L << (VISIBLE - 668)) | (1L << (WAIT - 668)) | (1L << (WARNINGS - 668)) | (1L << (WITHOUT - 668)) | (1L << (WORK - 668)) | (1L << (WRAPPER - 668)) | (1L << (X509 - 668)) | (1L << (XA - 668)) | (1L << (XML - 668)) | (1L << (YES - 668)) | (1L << (EUR - 668)) | (1L << (USA - 668)) | (1L << (JIS - 668)) | (1L << (ISO - 668)) | (1L << (INTERNAL - 668)) | (1L << (QUARTER - 668)) | (1L << (MONTH - 668)) | (1L << (DAY - 668)) | (1L << (HOUR - 668)) | (1L << (MINUTE - 668)) | (1L << (WEEK - 668)) | (1L << (SECOND - 668)) | (1L << (MICROSECOND - 668)) | (1L << (USER_STATISTICS - 668)) | (1L << (CLIENT_STATISTICS - 668)) | (1L << (INDEX_STATISTICS - 668)) | (1L << (TABLE_STATISTICS - 668)) | (1L << (FIREWALL_RULES - 668)) | (1L << (ADMIN - 668)) | (1L << (APPLICATION_PASSWORD_ADMIN - 668)) | (1L << (AUDIT_ADMIN - 668)) | (1L << (AUDIT_ABORT_EXEMPT - 668)) | (1L << (AUTHENTICATION_POLICY_ADMIN - 668)) | (1L << (BACKUP_ADMIN - 668)) | (1L << (BINLOG_ADMIN - 668)) | (1L << (BINLOG_ENCRYPTION_ADMIN - 668)) | (1L << (CLONE_ADMIN - 668)) | (1L << (CONNECTION_ADMIN - 668)) | (1L << (ENCRYPTION_KEY_ADMIN - 668)) | (1L << (EXECUTE - 668)) | (1L << (FILE - 668)) | (1L << (FIREWALL_ADMIN - 668)) | (1L << (FIREWALL_EXEMPT - 668)) | (1L << (FIREWALL_USER - 668)) | (1L << (FLUSH_OPTIMIZER_COSTS - 668)) | (1L << (FLUSH_STATUS - 668)) | (1L << (FLUSH_TABLES - 668)) | (1L << (FLUSH_USER_RESOURCES - 668)) | (1L << (GROUP_REPLICATION_ADMIN - 668)) | (1L << (INNODB_REDO_LOG_ARCHIVE - 668)) | (1L << (INNODB_REDO_LOG_ENABLE - 668)) | (1L << (INVOKE - 668)) | (1L << (LAMBDA - 668)) | (1L << (NDB_STORED_USER - 668)) | (1L << (PASSWORDLESS_USER_ADMIN - 668)))) != 0) || ((((_la - 732)) & ~0x3f) == 0 && ((1L << (_la - 732)) & ((1L << (PERSIST_RO_VARIABLES_ADMIN - 732)) | (1L << (PRIVILEGES - 732)) | (1L << (PROCESS - 732)) | (1L << (RELOAD - 732)) | (1L << (REPLICATION_APPLIER - 732)) | (1L << (REPLICATION_SLAVE_ADMIN - 732)) | (1L << (RESOURCE_GROUP_ADMIN - 732)) | (1L << (RESOURCE_GROUP_USER - 732)) | (1L << (ROLE_ADMIN - 732)) | (1L << (ROUTINE - 732)) | (1L << (S3 - 732)) | (1L << (SESSION_VARIABLES_ADMIN - 732)) | (1L << (SET_USER_ID - 732)) | (1L << (SHOW_ROUTINE - 732)) | (1L << (SHUTDOWN - 732)) | (1L << (SUPER - 732)) | (1L << (SYSTEM_VARIABLES_ADMIN - 732)) | (1L << (TABLES - 732)) | (1L << (TABLE_ENCRYPTION_ADMIN - 732)) | (1L << (VERSION_TOKEN_ADMIN - 732)) | (1L << (XA_RECOVER_ADMIN - 732)) | (1L << (ARMSCII8 - 732)) | (1L << (ASCII - 732)) | (1L << (BIG5 - 732)) | (1L << (CP1250 - 732)) | (1L << (CP1251 - 732)) | (1L << (CP1256 - 732)) | (1L << (CP1257 - 732)) | (1L << (CP850 - 732)) | (1L << (CP852 - 732)) | (1L << (CP866 - 732)) | (1L << (CP932 - 732)) | (1L << (DEC8 - 732)) | (1L << (EUCJPMS - 732)) | (1L << (EUCKR - 732)) | (1L << (GB18030 - 732)) | (1L << (GB2312 - 732)) | (1L << (GBK - 732)) | (1L << (GEOSTD8 - 732)) | (1L << (GREEK - 732)) | (1L << (HEBREW - 732)) | (1L << (HP8 - 732)) | (1L << (KEYBCS2 - 732)) | (1L << (KOI8R - 732)) | (1L << (KOI8U - 732)) | (1L << (LATIN1 - 732)) | (1L << (LATIN2 - 732)) | (1L << (LATIN5 - 732)) | (1L << (LATIN7 - 732)) | (1L << (MACCE - 732)) | (1L << (MACROMAN - 732)) | (1L << (SJIS - 732)) | (1L << (SWE7 - 732)) | (1L << (TIS620 - 732)) | (1L << (UCS2 - 732)) | (1L << (UJIS - 732)) | (1L << (UTF16 - 732)) | (1L << (UTF16LE - 732)) | (1L << (UTF32 - 732)) | (1L << (UTF8 - 732)) | (1L << (UTF8MB3 - 732)) | (1L << (UTF8MB4 - 732)) | (1L << (ARCHIVE - 732)))) != 0) || ((((_la - 796)) & ~0x3f) == 0 && ((1L << (_la - 796)) & ((1L << (BLACKHOLE - 796)) | (1L << (CSV - 796)) | (1L << (FEDERATED - 796)) | (1L << (INNODB - 796)) | (1L << (MEMORY - 796)) | (1L << (MRG_MYISAM - 796)) | (1L << (MYISAM - 796)) | (1L << (NDB - 796)) | (1L << (NDBCLUSTER - 796)) | (1L << (PERFORMANCE_SCHEMA - 796)) | (1L << (TOKUDB - 796)) | (1L << (REPEATABLE - 796)) | (1L << (COMMITTED - 796)) | (1L << (UNCOMMITTED - 796)) | (1L << (SERIALIZABLE - 796)) | (1L << (GEOMETRYCOLLECTION - 796)) | (1L << (GEOMETRY - 796)) | (1L << (LINESTRING - 796)) | (1L << (MULTILINESTRING - 796)) | (1L << (MULTIPOINT - 796)) | (1L << (MULTIPOLYGON - 796)) | (1L << (POINT - 796)) | (1L << (POLYGON - 796)) | (1L << (ABS - 796)) | (1L << (ACOS - 796)) | (1L << (ADDDATE - 796)) | (1L << (ADDTIME - 796)) | (1L << (AES_DECRYPT - 796)) | (1L << (AES_ENCRYPT - 796)) | (1L << (AREA - 796)) | (1L << (ASBINARY - 796)) | (1L << (ASIN - 796)) | (1L << (ASTEXT - 796)) | (1L << (ASWKB - 796)) | (1L << (ASWKT - 796)) | (1L << (ASYMMETRIC_DECRYPT - 796)) | (1L << (ASYMMETRIC_DERIVE - 796)) | (1L << (ASYMMETRIC_ENCRYPT - 796)) | (1L << (ASYMMETRIC_SIGN - 796)) | (1L << (ASYMMETRIC_VERIFY - 796)) | (1L << (ATAN - 796)) | (1L << (ATAN2 - 796)) | (1L << (BENCHMARK - 796)) | (1L << (BIN - 796)) | (1L << (BIT_COUNT - 796)) | (1L << (BIT_LENGTH - 796)) | (1L << (BUFFER - 796)) | (1L << (CATALOG_NAME - 796)) | (1L << (CEIL - 796)) | (1L << (CEILING - 796)) | (1L << (CENTROID - 796)) | (1L << (CHARACTER_LENGTH - 796)) | (1L << (CHARSET - 796)) | (1L << (CHAR_LENGTH - 796)) | (1L << (COERCIBILITY - 796)) | (1L << (COLLATION - 796)) | (1L << (COMPRESS - 796)) | (1L << (CONCAT - 796)) | (1L << (CONCAT_WS - 796)) | (1L << (CONNECTION_ID - 796)) | (1L << (CONV - 796)) | (1L << (CONVERT_TZ - 796)) | (1L << (COS - 796)))) != 0) || ((((_la - 860)) & ~0x3f) == 0 && ((1L << (_la - 860)) & ((1L << (COT - 860)) | (1L << (CRC32 - 860)) | (1L << (CREATE_ASYMMETRIC_PRIV_KEY - 860)) | (1L << (CREATE_ASYMMETRIC_PUB_KEY - 860)) | (1L << (CREATE_DH_PARAMETERS - 860)) | (1L << (CREATE_DIGEST - 860)) | (1L << (CROSSES - 860)) | (1L << (DATEDIFF - 860)) | (1L << (DATE_FORMAT - 860)) | (1L << (DAYNAME - 860)) | (1L << (DAYOFMONTH - 860)) | (1L << (DAYOFWEEK - 860)) | (1L << (DAYOFYEAR - 860)) | (1L << (DECODE - 860)) | (1L << (DEGREES - 860)) | (1L << (DES_DECRYPT - 860)) | (1L << (DES_ENCRYPT - 860)) | (1L << (DIMENSION - 860)) | (1L << (DISJOINT - 860)) | (1L << (ELT - 860)) | (1L << (ENCODE - 860)) | (1L << (ENCRYPT - 860)) | (1L << (ENDPOINT - 860)) | (1L << (ENGINE_ATTRIBUTE - 860)) | (1L << (ENVELOPE - 860)) | (1L << (EQUALS - 860)) | (1L << (EXP - 860)) | (1L << (EXPORT_SET - 860)) | (1L << (EXTERIORRING - 860)) | (1L << (EXTRACTVALUE - 860)) | (1L << (FIELD - 860)) | (1L << (FIND_IN_SET - 860)) | (1L << (FLOOR - 860)) | (1L << (FORMAT - 860)) | (1L << (FOUND_ROWS - 860)) | (1L << (FROM_BASE64 - 860)) | (1L << (FROM_DAYS - 860)) | (1L << (FROM_UNIXTIME - 860)) | (1L << (GEOMCOLLFROMTEXT - 860)) | (1L << (GEOMCOLLFROMWKB - 860)) | (1L << (GEOMETRYCOLLECTIONFROMTEXT - 860)) | (1L << (GEOMETRYCOLLECTIONFROMWKB - 860)) | (1L << (GEOMETRYFROMTEXT - 860)) | (1L << (GEOMETRYFROMWKB - 860)) | (1L << (GEOMETRYN - 860)) | (1L << (GEOMETRYTYPE - 860)) | (1L << (GEOMFROMTEXT - 860)) | (1L << (GEOMFROMWKB - 860)) | (1L << (GET_FORMAT - 860)) | (1L << (GET_LOCK - 860)) | (1L << (GLENGTH - 860)) | (1L << (GREATEST - 860)) | (1L << (GTID_SUBSET - 860)) | (1L << (GTID_SUBTRACT - 860)) | (1L << (HEX - 860)) | (1L << (IFNULL - 860)) | (1L << (INET6_ATON - 860)) | (1L << (INET6_NTOA - 860)) | (1L << (INET_ATON - 860)) | (1L << (INET_NTOA - 860)) | (1L << (INSTR - 860)) | (1L << (INTERIORRINGN - 860)) | (1L << (INTERSECTS - 860)) | (1L << (ISCLOSED - 860)))) != 0) || ((((_la - 924)) & ~0x3f) == 0 && ((1L << (_la - 924)) & ((1L << (ISEMPTY - 924)) | (1L << (ISNULL - 924)) | (1L << (ISSIMPLE - 924)) | (1L << (IS_FREE_LOCK - 924)) | (1L << (IS_IPV4 - 924)) | (1L << (IS_IPV4_COMPAT - 924)) | (1L << (IS_IPV4_MAPPED - 924)) | (1L << (IS_IPV6 - 924)) | (1L << (IS_USED_LOCK - 924)) | (1L << (LAST_INSERT_ID - 924)) | (1L << (LCASE - 924)) | (1L << (LEAST - 924)) | (1L << (LENGTH - 924)) | (1L << (LINEFROMTEXT - 924)) | (1L << (LINEFROMWKB - 924)) | (1L << (LINESTRINGFROMTEXT - 924)) | (1L << (LINESTRINGFROMWKB - 924)) | (1L << (LN - 924)) | (1L << (LOAD_FILE - 924)) | (1L << (LOCATE - 924)) | (1L << (LOG - 924)) | (1L << (LOG10 - 924)) | (1L << (LOG2 - 924)) | (1L << (LOWER - 924)) | (1L << (LPAD - 924)) | (1L << (LTRIM - 924)) | (1L << (MAKEDATE - 924)) | (1L << (MAKETIME - 924)) | (1L << (MAKE_SET - 924)) | (1L << (MASTER_POS_WAIT - 924)) | (1L << (MBRCONTAINS - 924)) | (1L << (MBRDISJOINT - 924)) | (1L << (MBREQUAL - 924)) | (1L << (MBRINTERSECTS - 924)) | (1L << (MBROVERLAPS - 924)) | (1L << (MBRTOUCHES - 924)) | (1L << (MBRWITHIN - 924)) | (1L << (MD5 - 924)) | (1L << (MLINEFROMTEXT - 924)) | (1L << (MLINEFROMWKB - 924)) | (1L << (MONTHNAME - 924)) | (1L << (MPOINTFROMTEXT - 924)) | (1L << (MPOINTFROMWKB - 924)) | (1L << (MPOLYFROMTEXT - 924)) | (1L << (MPOLYFROMWKB - 924)) | (1L << (MULTILINESTRINGFROMTEXT - 924)) | (1L << (MULTILINESTRINGFROMWKB - 924)) | (1L << (MULTIPOINTFROMTEXT - 924)) | (1L << (MULTIPOINTFROMWKB - 924)) | (1L << (MULTIPOLYGONFROMTEXT - 924)) | (1L << (MULTIPOLYGONFROMWKB - 924)) | (1L << (NAME_CONST - 924)) | (1L << (NULLIF - 924)) | (1L << (NUMGEOMETRIES - 924)) | (1L << (NUMINTERIORRINGS - 924)) | (1L << (NUMPOINTS - 924)) | (1L << (OCT - 924)) | (1L << (OCTET_LENGTH - 924)) | (1L << (ORD - 924)) | (1L << (OVERLAPS - 924)) | (1L << (PERIOD_ADD - 924)) | (1L << (PERIOD_DIFF - 924)) | (1L << (PI - 924)) | (1L << (POINTFROMTEXT - 924)))) != 0) || ((((_la - 988)) & ~0x3f) == 0 && ((1L << (_la - 988)) & ((1L << (POINTFROMWKB - 988)) | (1L << (POINTN - 988)) | (1L << (POLYFROMTEXT - 988)) | (1L << (POLYFROMWKB - 988)) | (1L << (POLYGONFROMTEXT - 988)) | (1L << (POLYGONFROMWKB - 988)) | (1L << (POW - 988)) | (1L << (POWER - 988)) | (1L << (QUOTE - 988)) | (1L << (RADIANS - 988)) | (1L << (RAND - 988)) | (1L << (RANDOM - 988)) | (1L << (RANDOM_BYTES - 988)) | (1L << (RELEASE_LOCK - 988)) | (1L << (REVERSE - 988)) | (1L << (ROUND - 988)) | (1L << (ROW_COUNT - 988)) | (1L << (RPAD - 988)) | (1L << (RTRIM - 988)) | (1L << (SEC_TO_TIME - 988)) | (1L << (SECONDARY_ENGINE_ATTRIBUTE - 988)) | (1L << (SENSITIVE_VARIABLES_OBSERVER - 988)) | (1L << (SESSION_USER - 988)) | (1L << (SHA - 988)) | (1L << (SHA1 - 988)) | (1L << (SHA2 - 988)) | (1L << (SCHEMA_NAME - 988)) | (1L << (SIGN - 988)) | (1L << (SIN - 988)) | (1L << (SLEEP - 988)) | (1L << (SOUNDEX - 988)) | (1L << (SQL_THREAD_WAIT_AFTER_GTIDS - 988)) | (1L << (SQRT - 988)) | (1L << (SRID - 988)) | (1L << (STARTPOINT - 988)) | (1L << (STRCMP - 988)) | (1L << (STR_TO_DATE - 988)) | (1L << (ST_AREA - 988)) | (1L << (ST_ASBINARY - 988)) | (1L << (ST_ASTEXT - 988)) | (1L << (ST_ASWKB - 988)) | (1L << (ST_ASWKT - 988)) | (1L << (ST_BUFFER - 988)) | (1L << (ST_CENTROID - 988)) | (1L << (ST_CONTAINS - 988)) | (1L << (ST_CROSSES - 988)) | (1L << (ST_DIFFERENCE - 988)) | (1L << (ST_DIMENSION - 988)) | (1L << (ST_DISJOINT - 988)) | (1L << (ST_DISTANCE - 988)) | (1L << (ST_ENDPOINT - 988)) | (1L << (ST_ENVELOPE - 988)) | (1L << (ST_EQUALS - 988)) | (1L << (ST_EXTERIORRING - 988)) | (1L << (ST_GEOMCOLLFROMTEXT - 988)) | (1L << (ST_GEOMCOLLFROMTXT - 988)) | (1L << (ST_GEOMCOLLFROMWKB - 988)) | (1L << (ST_GEOMETRYCOLLECTIONFROMTEXT - 988)) | (1L << (ST_GEOMETRYCOLLECTIONFROMWKB - 988)) | (1L << (ST_GEOMETRYFROMTEXT - 988)) | (1L << (ST_GEOMETRYFROMWKB - 988)) | (1L << (ST_GEOMETRYN - 988)) | (1L << (ST_GEOMETRYTYPE - 988)) | (1L << (ST_GEOMFROMTEXT - 988)))) != 0) || ((((_la - 1052)) & ~0x3f) == 0 && ((1L << (_la - 1052)) & ((1L << (ST_GEOMFROMWKB - 1052)) | (1L << (ST_INTERIORRINGN - 1052)) | (1L << (ST_INTERSECTION - 1052)) | (1L << (ST_INTERSECTS - 1052)) | (1L << (ST_ISCLOSED - 1052)) | (1L << (ST_ISEMPTY - 1052)) | (1L << (ST_ISSIMPLE - 1052)) | (1L << (ST_LINEFROMTEXT - 1052)) | (1L << (ST_LINEFROMWKB - 1052)) | (1L << (ST_LINESTRINGFROMTEXT - 1052)) | (1L << (ST_LINESTRINGFROMWKB - 1052)) | (1L << (ST_NUMGEOMETRIES - 1052)) | (1L << (ST_NUMINTERIORRING - 1052)) | (1L << (ST_NUMINTERIORRINGS - 1052)) | (1L << (ST_NUMPOINTS - 1052)) | (1L << (ST_OVERLAPS - 1052)) | (1L << (ST_POINTFROMTEXT - 1052)) | (1L << (ST_POINTFROMWKB - 1052)) | (1L << (ST_POINTN - 1052)) | (1L << (ST_POLYFROMTEXT - 1052)) | (1L << (ST_POLYFROMWKB - 1052)) | (1L << (ST_POLYGONFROMTEXT - 1052)) | (1L << (ST_POLYGONFROMWKB - 1052)) | (1L << (ST_SRID - 1052)) | (1L << (ST_STARTPOINT - 1052)) | (1L << (ST_SYMDIFFERENCE - 1052)) | (1L << (ST_TOUCHES - 1052)) | (1L << (ST_UNION - 1052)) | (1L << (ST_WITHIN - 1052)) | (1L << (ST_X - 1052)) | (1L << (ST_Y - 1052)) | (1L << (SUBDATE - 1052)) | (1L << (SUBSTRING_INDEX - 1052)) | (1L << (SUBTIME - 1052)) | (1L << (SYSTEM_USER - 1052)) | (1L << (SYSTEM - 1052)) | (1L << (TAN - 1052)) | (1L << (TELEMETRY_LOG_ADMIN - 1052)) | (1L << (TIMEDIFF - 1052)) | (1L << (TIMESTAMPADD - 1052)) | (1L << (TIMESTAMPDIFF - 1052)) | (1L << (TIME_FORMAT - 1052)) | (1L << (TIME_TO_SEC - 1052)) | (1L << (TOUCHES - 1052)) | (1L << (TO_BASE64 - 1052)) | (1L << (TO_DAYS - 1052)) | (1L << (TO_SECONDS - 1052)) | (1L << (TP_CONNECTION_ADMIN - 1052)) | (1L << (UCASE - 1052)) | (1L << (UNCOMPRESS - 1052)) | (1L << (UNCOMPRESSED_LENGTH - 1052)) | (1L << (UNHEX - 1052)) | (1L << (UNIX_TIMESTAMP - 1052)) | (1L << (UPDATEXML - 1052)) | (1L << (UPPER - 1052)) | (1L << (UUID - 1052)) | (1L << (UUID_SHORT - 1052)) | (1L << (VALIDATE_PASSWORD_STRENGTH - 1052)) | (1L << (VERSION - 1052)) | (1L << (VERSIONING - 1052)) | (1L << (WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS - 1052)) | (1L << (WEEKDAY - 1052)) | (1L << (WEEKOFYEAR - 1052)) | (1L << (WEIGHT_STRING - 1052)))) != 0) || ((((_la - 1116)) & ~0x3f) == 0 && ((1L << (_la - 1116)) & ((1L << (WITHIN - 1116)) | (1L << (YEARWEEK - 1116)) | (1L << (Y_FUNCTION - 1116)) | (1L << (X_FUNCTION - 1116)) | (1L << (VIA - 1116)) | (1L << (LASTVAL - 1116)) | (1L << (NEXTVAL - 1116)) | (1L << (SETVAL - 1116)) | (1L << (PREVIOUS - 1116)) | (1L << (PERSISTENT - 1116)) | (1L << (BINLOG_MONITOR - 1116)) | (1L << (BINLOG_REPLAY - 1116)) | (1L << (FEDERATED_ADMIN - 1116)) | (1L << (READ_ONLY_ADMIN - 1116)) | (1L << (REPLICA - 1116)) | (1L << (REPLICATION_MASTER_ADMIN - 1116)) | (1L << (MONITOR - 1116)) | (1L << (READ_ONLY - 1116)) | (1L << (REPLAY - 1116)) | (1L << (MOD - 1116)) | (1L << (CHARSET_REVERSE_QOUTE_STRING - 1116)) | (1L << (STRING_LITERAL - 1116)))) != 0) || _la==ID) {
						{
						setState(2883);
						((AlterByAddCheckTableConstraintContext)_localctx).name = uid();
						}
					}

					}
				}

				setState(2888);
				match(CHECK);
				setState(2895);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,379,_ctx) ) {
				case 1:
					{
					setState(2889);
					uid();
					}
					break;
				case 2:
					{
					setState(2890);
					stringLiteral();
					}
					break;
				case 3:
					{
					setState(2891);
					match(LR_BRACKET);
					setState(2892);
					expression(0);
					setState(2893);
					match(RR_BRACKET);
					}
					break;
				}
				setState(2898);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==NOT) {
					{
					setState(2897);
					match(NOT);
					}
				}

				setState(2901);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==ENFORCED) {
					{
					setState(2900);
					match(ENFORCED);
					}
				}

				}
				break;
			case 10:
				_localctx = new AlterByAlterCheckTableConstraintContext(_localctx);
				enterOuterAlt(_localctx, 10);
				{
				setState(2903);
				match(ALTER);
				setState(2908);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==CONSTRAINT) {
					{
					setState(2904);
					match(CONSTRAINT);
					setState(2906);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ARRAY) | (1L << ATTRIBUTE) | (1L << BUCKETS) | (1L << CONDITION) | (1L << CURRENT) | (1L << CURRENT_ROLE) | (1L << CURRENT_USER) | (1L << DATABASE) | (1L << DEFAULT) | (1L << DIAGNOSTICS) | (1L << EMPTY) | (1L << ENFORCED) | (1L << EXCEPT))) != 0) || ((((_la - 74)) & ~0x3f) == 0 && ((1L << (_la - 74)) & ((1L << (GROUP - 74)) | (1L << (GROUP_REPLICATION_STREAM - 74)) | (1L << (IF - 74)) | (1L << (IGNORED - 74)) | (1L << (INSERT - 74)) | (1L << (LATERAL - 74)) | (1L << (LEFT - 74)) | (1L << (LOCKED - 74)) | (1L << (MAXVALUE - 74)) | (1L << (MINVALUE - 74)) | (1L << (NUMBER - 74)) | (1L << (OPTIONAL - 74)) | (1L << (ORDER - 74)) | (1L << (PRIMARY - 74)))) != 0) || ((((_la - 142)) & ~0x3f) == 0 && ((1L << (_la - 142)) & ((1L << (REPEAT - 142)) | (1L << (REPLACE - 142)) | (1L << (RIGHT - 142)) | (1L << (SCHEMA - 142)) | (1L << (SKIP_ - 142)) | (1L << (SKIP_QUERY_REWRITE - 142)) | (1L << (STACKED - 142)) | (1L << (STATEMENT - 142)))) != 0) || ((((_la - 220)) & ~0x3f) == 0 && ((1L << (_la - 220)) & ((1L << (DATE - 220)) | (1L << (TIME - 220)) | (1L << (TIMESTAMP - 220)) | (1L << (DATETIME - 220)) | (1L << (YEAR - 220)) | (1L << (NATIONAL - 220)) | (1L << (BINARY - 220)) | (1L << (TEXT - 220)) | (1L << (ENUM - 220)) | (1L << (SERIAL - 220)) | (1L << (JSON_ARRAY - 220)) | (1L << (JSON_ARRAYAGG - 220)) | (1L << (JSON_ARRAY_APPEND - 220)) | (1L << (JSON_ARRAY_INSERT - 220)) | (1L << (JSON_CONTAINS - 220)) | (1L << (JSON_CONTAINS_PATH - 220)) | (1L << (JSON_DEPTH - 220)) | (1L << (JSON_EXTRACT - 220)) | (1L << (JSON_INSERT - 220)) | (1L << (JSON_KEYS - 220)) | (1L << (JSON_LENGTH - 220)) | (1L << (JSON_MERGE - 220)) | (1L << (JSON_MERGE_PATCH - 220)) | (1L << (JSON_MERGE_PRESERVE - 220)) | (1L << (JSON_OBJECT - 220)) | (1L << (JSON_OBJECTAGG - 220)) | (1L << (JSON_OVERLAPS - 220)) | (1L << (JSON_PRETTY - 220)) | (1L << (JSON_QUOTE - 220)) | (1L << (JSON_REMOVE - 220)) | (1L << (JSON_REPLACE - 220)) | (1L << (JSON_SCHEMA_VALID - 220)) | (1L << (JSON_SCHEMA_VALIDATION_REPORT - 220)) | (1L << (JSON_SEARCH - 220)) | (1L << (JSON_SET - 220)) | (1L << (JSON_STORAGE_FREE - 220)) | (1L << (JSON_STORAGE_SIZE - 220)) | (1L << (JSON_TABLE - 220)) | (1L << (JSON_TYPE - 220)) | (1L << (JSON_UNQUOTE - 220)))) != 0) || ((((_la - 284)) & ~0x3f) == 0 && ((1L << (_la - 284)) & ((1L << (JSON_VALID - 284)) | (1L << (JSON_VALUE - 284)) | (1L << (NESTED - 284)) | (1L << (ORDINALITY - 284)) | (1L << (PATH - 284)) | (1L << (AVG - 284)) | (1L << (BIT_AND - 284)) | (1L << (BIT_OR - 284)) | (1L << (BIT_XOR - 284)) | (1L << (COUNT - 284)) | (1L << (CUME_DIST - 284)) | (1L << (DENSE_RANK - 284)) | (1L << (FIRST_VALUE - 284)) | (1L << (GROUP_CONCAT - 284)) | (1L << (LAG - 284)) | (1L << (LAST_VALUE - 284)) | (1L << (LEAD - 284)) | (1L << (MAX - 284)) | (1L << (MIN - 284)) | (1L << (NTILE - 284)) | (1L << (NTH_VALUE - 284)) | (1L << (PERCENT_RANK - 284)) | (1L << (RANK - 284)) | (1L << (ROW_NUMBER - 284)) | (1L << (STD - 284)) | (1L << (STDDEV - 284)) | (1L << (STDDEV_POP - 284)) | (1L << (STDDEV_SAMP - 284)) | (1L << (SUM - 284)) | (1L << (VAR_POP - 284)) | (1L << (VAR_SAMP - 284)) | (1L << (VARIANCE - 284)) | (1L << (CURRENT_DATE - 284)) | (1L << (CURRENT_TIME - 284)) | (1L << (CURRENT_TIMESTAMP - 284)) | (1L << (LOCALTIME - 284)) | (1L << (CURDATE - 284)) | (1L << (CURTIME - 284)) | (1L << (DATE_ADD - 284)) | (1L << (DATE_SUB - 284)) | (1L << (LOCALTIMESTAMP - 284)) | (1L << (NOW - 284)) | (1L << (POSITION - 284)) | (1L << (SUBSTR - 284)) | (1L << (SUBSTRING - 284)) | (1L << (SYSDATE - 284)) | (1L << (TRIM - 284)) | (1L << (UTC_DATE - 284)) | (1L << (UTC_TIME - 284)) | (1L << (UTC_TIMESTAMP - 284)) | (1L << (ACCOUNT - 284)) | (1L << (ACTION - 284)) | (1L << (AFTER - 284)) | (1L << (AGGREGATE - 284)) | (1L << (ALGORITHM - 284)) | (1L << (ANY - 284)) | (1L << (AT - 284)) | (1L << (AUTHORS - 284)) | (1L << (AUTOCOMMIT - 284)) | (1L << (AUTOEXTEND_SIZE - 284)) | (1L << (AUTO_INCREMENT - 284)) | (1L << (AVG_ROW_LENGTH - 284)) | (1L << (BEGIN - 284)))) != 0) || ((((_la - 348)) & ~0x3f) == 0 && ((1L << (_la - 348)) & ((1L << (BINLOG - 348)) | (1L << (BIT - 348)) | (1L << (BLOCK - 348)) | (1L << (BOOL - 348)) | (1L << (BOOLEAN - 348)) | (1L << (BTREE - 348)) | (1L << (CACHE - 348)) | (1L << (CASCADED - 348)) | (1L << (CHAIN - 348)) | (1L << (CHANGED - 348)) | (1L << (CHANNEL - 348)) | (1L << (CHECKSUM - 348)) | (1L << (PAGE_CHECKSUM - 348)) | (1L << (CIPHER - 348)) | (1L << (CLASS_ORIGIN - 348)) | (1L << (CLIENT - 348)) | (1L << (CLOSE - 348)) | (1L << (CLUSTERING - 348)) | (1L << (COALESCE - 348)) | (1L << (CODE - 348)) | (1L << (COLUMNS - 348)) | (1L << (COLUMN_FORMAT - 348)) | (1L << (COLUMN_NAME - 348)) | (1L << (COMMENT - 348)) | (1L << (COMMIT - 348)) | (1L << (COMPACT - 348)) | (1L << (COMPLETION - 348)) | (1L << (COMPRESSED - 348)) | (1L << (COMPRESSION - 348)) | (1L << (CONCURRENT - 348)) | (1L << (CONNECT - 348)) | (1L << (CONNECTION - 348)) | (1L << (CONSISTENT - 348)) | (1L << (CONSTRAINT_CATALOG - 348)) | (1L << (CONSTRAINT_SCHEMA - 348)) | (1L << (CONSTRAINT_NAME - 348)) | (1L << (CONTAINS - 348)) | (1L << (CONTEXT - 348)) | (1L << (CONTRIBUTORS - 348)) | (1L << (COPY - 348)) | (1L << (CPU - 348)) | (1L << (CYCLE - 348)) | (1L << (CURSOR_NAME - 348)) | (1L << (DATA - 348)) | (1L << (DATAFILE - 348)) | (1L << (DEALLOCATE - 348)) | (1L << (DEFAULT_AUTH - 348)) | (1L << (DEFINER - 348)) | (1L << (DELAY_KEY_WRITE - 348)) | (1L << (DES_KEY_FILE - 348)) | (1L << (DIRECTORY - 348)) | (1L << (DISABLE - 348)) | (1L << (DISCARD - 348)) | (1L << (DISK - 348)) | (1L << (DO - 348)) | (1L << (DUMPFILE - 348)) | (1L << (DUPLICATE - 348)) | (1L << (DYNAMIC - 348)) | (1L << (ENABLE - 348)) | (1L << (ENCRYPTED - 348)) | (1L << (ENCRYPTION - 348)) | (1L << (ENCRYPTION_KEY_ID - 348)) | (1L << (END - 348)) | (1L << (ENDS - 348)))) != 0) || ((((_la - 412)) & ~0x3f) == 0 && ((1L << (_la - 412)) & ((1L << (ENGINE - 412)) | (1L << (ENGINES - 412)) | (1L << (ERROR - 412)) | (1L << (ERRORS - 412)) | (1L << (ESCAPE - 412)) | (1L << (EVEN - 412)) | (1L << (EVENT - 412)) | (1L << (EVENTS - 412)) | (1L << (EVERY - 412)) | (1L << (EXCHANGE - 412)) | (1L << (EXCLUSIVE - 412)) | (1L << (EXPIRE - 412)) | (1L << (EXPORT - 412)) | (1L << (EXTENDED - 412)) | (1L << (EXTENT_SIZE - 412)) | (1L << (FAILED_LOGIN_ATTEMPTS - 412)) | (1L << (FAST - 412)) | (1L << (FAULTS - 412)) | (1L << (FIELDS - 412)) | (1L << (FILE_BLOCK_SIZE - 412)) | (1L << (FILTER - 412)) | (1L << (FIRST - 412)) | (1L << (FIXED - 412)) | (1L << (FLUSH - 412)) | (1L << (FOLLOWS - 412)) | (1L << (FOUND - 412)) | (1L << (FULL - 412)) | (1L << (FUNCTION - 412)) | (1L << (GENERAL - 412)) | (1L << (GLOBAL - 412)) | (1L << (GRANTS - 412)) | (1L << (GROUP_REPLICATION - 412)) | (1L << (HANDLER - 412)) | (1L << (HASH - 412)) | (1L << (HELP - 412)) | (1L << (HISTORY - 412)) | (1L << (HOST - 412)) | (1L << (HOSTS - 412)) | (1L << (IDENTIFIED - 412)) | (1L << (IGNORE_SERVER_IDS - 412)) | (1L << (IMPORT - 412)) | (1L << (INCREMENT - 412)) | (1L << (INDEXES - 412)) | (1L << (INITIAL_SIZE - 412)) | (1L << (INPLACE - 412)) | (1L << (INSERT_METHOD - 412)) | (1L << (INSTALL - 412)) | (1L << (INSTANCE - 412)) | (1L << (INSTANT - 412)) | (1L << (INVISIBLE - 412)) | (1L << (INVOKER - 412)) | (1L << (IO - 412)) | (1L << (IO_THREAD - 412)) | (1L << (IPC - 412)) | (1L << (ISOLATION - 412)) | (1L << (ISSUER - 412)) | (1L << (JSON - 412)) | (1L << (KEY_BLOCK_SIZE - 412)) | (1L << (LANGUAGE - 412)) | (1L << (LAST - 412)) | (1L << (LEAVES - 412)) | (1L << (LESS - 412)) | (1L << (LEVEL - 412)))) != 0) || ((((_la - 476)) & ~0x3f) == 0 && ((1L << (_la - 476)) & ((1L << (LIST - 476)) | (1L << (LOCAL - 476)) | (1L << (LOGFILE - 476)) | (1L << (LOGS - 476)) | (1L << (MASTER - 476)) | (1L << (MASTER_AUTO_POSITION - 476)) | (1L << (MASTER_CONNECT_RETRY - 476)) | (1L << (MASTER_DELAY - 476)) | (1L << (MASTER_HEARTBEAT_PERIOD - 476)) | (1L << (MASTER_HOST - 476)) | (1L << (MASTER_LOG_FILE - 476)) | (1L << (MASTER_LOG_POS - 476)) | (1L << (MASTER_PASSWORD - 476)) | (1L << (MASTER_PORT - 476)) | (1L << (MASTER_RETRY_COUNT - 476)) | (1L << (MASTER_SSL - 476)) | (1L << (MASTER_SSL_CA - 476)) | (1L << (MASTER_SSL_CAPATH - 476)) | (1L << (MASTER_SSL_CERT - 476)) | (1L << (MASTER_SSL_CIPHER - 476)) | (1L << (MASTER_SSL_CRL - 476)) | (1L << (MASTER_SSL_CRLPATH - 476)) | (1L << (MASTER_SSL_KEY - 476)) | (1L << (MASTER_TLS_VERSION - 476)) | (1L << (MASTER_USER - 476)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 476)) | (1L << (MAX_QUERIES_PER_HOUR - 476)) | (1L << (MAX_ROWS - 476)) | (1L << (MAX_SIZE - 476)) | (1L << (MAX_UPDATES_PER_HOUR - 476)) | (1L << (MAX_USER_CONNECTIONS - 476)) | (1L << (MEDIUM - 476)) | (1L << (MEMBER - 476)) | (1L << (MERGE - 476)) | (1L << (MESSAGE_TEXT - 476)) | (1L << (MID - 476)) | (1L << (MIGRATE - 476)) | (1L << (MIN_ROWS - 476)) | (1L << (MODE - 476)) | (1L << (MODIFY - 476)) | (1L << (MUTEX - 476)) | (1L << (MYSQL - 476)) | (1L << (MYSQL_ERRNO - 476)) | (1L << (NAME - 476)) | (1L << (NAMES - 476)) | (1L << (NCHAR - 476)) | (1L << (NEVER - 476)) | (1L << (NEXT - 476)) | (1L << (NO - 476)) | (1L << (NOCACHE - 476)) | (1L << (NOCOPY - 476)) | (1L << (NOCYCLE - 476)) | (1L << (NOMAXVALUE - 476)) | (1L << (NOMINVALUE - 476)) | (1L << (NOWAIT - 476)) | (1L << (NODEGROUP - 476)) | (1L << (NONE - 476)) | (1L << (ODBC - 476)) | (1L << (OFFLINE - 476)) | (1L << (OFFSET - 476)) | (1L << (OF - 476)) | (1L << (OJ - 476)) | (1L << (OLD_PASSWORD - 476)) | (1L << (ONE - 476)))) != 0) || ((((_la - 540)) & ~0x3f) == 0 && ((1L << (_la - 540)) & ((1L << (ONLINE - 540)) | (1L << (ONLY - 540)) | (1L << (OPEN - 540)) | (1L << (OPTIMIZER_COSTS - 540)) | (1L << (OPTIONS - 540)) | (1L << (OWNER - 540)) | (1L << (PACK_KEYS - 540)) | (1L << (PAGE - 540)) | (1L << (PARSER - 540)) | (1L << (PARTIAL - 540)) | (1L << (PARTITIONING - 540)) | (1L << (PARTITIONS - 540)) | (1L << (PASSWORD - 540)) | (1L << (PASSWORD_LOCK_TIME - 540)) | (1L << (PHASE - 540)) | (1L << (PLUGIN - 540)) | (1L << (PLUGIN_DIR - 540)) | (1L << (PLUGINS - 540)) | (1L << (PORT - 540)) | (1L << (PRECEDES - 540)) | (1L << (PREPARE - 540)) | (1L << (PRESERVE - 540)) | (1L << (PREV - 540)) | (1L << (PROCESSLIST - 540)) | (1L << (PROFILE - 540)) | (1L << (PROFILES - 540)) | (1L << (PROXY - 540)) | (1L << (QUERY - 540)) | (1L << (QUICK - 540)) | (1L << (REBUILD - 540)) | (1L << (RECOVER - 540)) | (1L << (RECURSIVE - 540)) | (1L << (REDO_BUFFER_SIZE - 540)) | (1L << (REDUNDANT - 540)) | (1L << (RELAY - 540)) | (1L << (RELAY_LOG_FILE - 540)) | (1L << (RELAY_LOG_POS - 540)) | (1L << (RELAYLOG - 540)) | (1L << (REMOVE - 540)) | (1L << (REORGANIZE - 540)) | (1L << (REPAIR - 540)) | (1L << (REPLICATE_DO_DB - 540)) | (1L << (REPLICATE_DO_TABLE - 540)) | (1L << (REPLICATE_IGNORE_DB - 540)) | (1L << (REPLICATE_IGNORE_TABLE - 540)) | (1L << (REPLICATE_REWRITE_DB - 540)) | (1L << (REPLICATE_WILD_DO_TABLE - 540)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 540)) | (1L << (REPLICATION - 540)) | (1L << (RESET - 540)) | (1L << (RESTART - 540)) | (1L << (RESUME - 540)) | (1L << (RETURNED_SQLSTATE - 540)) | (1L << (RETURNING - 540)) | (1L << (RETURNS - 540)) | (1L << (REUSE - 540)) | (1L << (ROLE - 540)) | (1L << (ROLLBACK - 540)) | (1L << (ROLLUP - 540)) | (1L << (ROTATE - 540)) | (1L << (ROW - 540)))) != 0) || ((((_la - 604)) & ~0x3f) == 0 && ((1L << (_la - 604)) & ((1L << (ROWS - 604)) | (1L << (ROW_FORMAT - 604)) | (1L << (RTREE - 604)) | (1L << (SAVEPOINT - 604)) | (1L << (SCHEDULE - 604)) | (1L << (SECURITY - 604)) | (1L << (SEQUENCE - 604)) | (1L << (SERVER - 604)) | (1L << (SESSION - 604)) | (1L << (SHARE - 604)) | (1L << (SHARED - 604)) | (1L << (SIGNED - 604)) | (1L << (SIMPLE - 604)) | (1L << (SLAVE - 604)) | (1L << (SLOW - 604)) | (1L << (SNAPSHOT - 604)) | (1L << (SOCKET - 604)) | (1L << (SOME - 604)) | (1L << (SONAME - 604)) | (1L << (SOUNDS - 604)) | (1L << (SOURCE - 604)) | (1L << (SQL_AFTER_GTIDS - 604)) | (1L << (SQL_AFTER_MTS_GAPS - 604)) | (1L << (SQL_BEFORE_GTIDS - 604)) | (1L << (SQL_BUFFER_RESULT - 604)) | (1L << (SQL_CACHE - 604)) | (1L << (SQL_NO_CACHE - 604)) | (1L << (SQL_THREAD - 604)) | (1L << (START - 604)) | (1L << (STARTS - 604)) | (1L << (STATS_AUTO_RECALC - 604)) | (1L << (STATS_PERSISTENT - 604)) | (1L << (STATS_SAMPLE_PAGES - 604)) | (1L << (STATUS - 604)) | (1L << (STOP - 604)) | (1L << (STORAGE - 604)) | (1L << (STRING - 604)) | (1L << (SUBCLASS_ORIGIN - 604)) | (1L << (SUBJECT - 604)) | (1L << (SUBPARTITION - 604)) | (1L << (SUBPARTITIONS - 604)) | (1L << (SUSPEND - 604)) | (1L << (SWAPS - 604)) | (1L << (SWITCHES - 604)) | (1L << (TABLE_NAME - 604)) | (1L << (TABLESPACE - 604)) | (1L << (TABLE_TYPE - 604)) | (1L << (TEMPORARY - 604)) | (1L << (TEMPTABLE - 604)) | (1L << (THAN - 604)) | (1L << (TRADITIONAL - 604)) | (1L << (TRANSACTION - 604)) | (1L << (TRANSACTIONAL - 604)) | (1L << (TRIGGERS - 604)) | (1L << (TRUNCATE - 604)) | (1L << (UNBOUNDED - 604)) | (1L << (UNDEFINED - 604)) | (1L << (UNDOFILE - 604)) | (1L << (UNDO_BUFFER_SIZE - 604)) | (1L << (UNINSTALL - 604)) | (1L << (UNKNOWN - 604)) | (1L << (UNTIL - 604)) | (1L << (UPGRADE - 604)))) != 0) || ((((_la - 668)) & ~0x3f) == 0 && ((1L << (_la - 668)) & ((1L << (USER - 668)) | (1L << (USE_FRM - 668)) | (1L << (USER_RESOURCES - 668)) | (1L << (VALIDATION - 668)) | (1L << (VALUE - 668)) | (1L << (VARIABLES - 668)) | (1L << (VIEW - 668)) | (1L << (VIRTUAL - 668)) | (1L << (VISIBLE - 668)) | (1L << (WAIT - 668)) | (1L << (WARNINGS - 668)) | (1L << (WITHOUT - 668)) | (1L << (WORK - 668)) | (1L << (WRAPPER - 668)) | (1L << (X509 - 668)) | (1L << (XA - 668)) | (1L << (XML - 668)) | (1L << (YES - 668)) | (1L << (EUR - 668)) | (1L << (USA - 668)) | (1L << (JIS - 668)) | (1L << (ISO - 668)) | (1L << (INTERNAL - 668)) | (1L << (QUARTER - 668)) | (1L << (MONTH - 668)) | (1L << (DAY - 668)) | (1L << (HOUR - 668)) | (1L << (MINUTE - 668)) | (1L << (WEEK - 668)) | (1L << (SECOND - 668)) | (1L << (MICROSECOND - 668)) | (1L << (USER_STATISTICS - 668)) | (1L << (CLIENT_STATISTICS - 668)) | (1L << (INDEX_STATISTICS - 668)) | (1L << (TABLE_STATISTICS - 668)) | (1L << (FIREWALL_RULES - 668)) | (1L << (ADMIN - 668)) | (1L << (APPLICATION_PASSWORD_ADMIN - 668)) | (1L << (AUDIT_ADMIN - 668)) | (1L << (AUDIT_ABORT_EXEMPT - 668)) | (1L << (AUTHENTICATION_POLICY_ADMIN - 668)) | (1L << (BACKUP_ADMIN - 668)) | (1L << (BINLOG_ADMIN - 668)) | (1L << (BINLOG_ENCRYPTION_ADMIN - 668)) | (1L << (CLONE_ADMIN - 668)) | (1L << (CONNECTION_ADMIN - 668)) | (1L << (ENCRYPTION_KEY_ADMIN - 668)) | (1L << (EXECUTE - 668)) | (1L << (FILE - 668)) | (1L << (FIREWALL_ADMIN - 668)) | (1L << (FIREWALL_EXEMPT - 668)) | (1L << (FIREWALL_USER - 668)) | (1L << (FLUSH_OPTIMIZER_COSTS - 668)) | (1L << (FLUSH_STATUS - 668)) | (1L << (FLUSH_TABLES - 668)) | (1L << (FLUSH_USER_RESOURCES - 668)) | (1L << (GROUP_REPLICATION_ADMIN - 668)) | (1L << (INNODB_REDO_LOG_ARCHIVE - 668)) | (1L << (INNODB_REDO_LOG_ENABLE - 668)) | (1L << (INVOKE - 668)) | (1L << (LAMBDA - 668)) | (1L << (NDB_STORED_USER - 668)) | (1L << (PASSWORDLESS_USER_ADMIN - 668)))) != 0) || ((((_la - 732)) & ~0x3f) == 0 && ((1L << (_la - 732)) & ((1L << (PERSIST_RO_VARIABLES_ADMIN - 732)) | (1L << (PRIVILEGES - 732)) | (1L << (PROCESS - 732)) | (1L << (RELOAD - 732)) | (1L << (REPLICATION_APPLIER - 732)) | (1L << (REPLICATION_SLAVE_ADMIN - 732)) | (1L << (RESOURCE_GROUP_ADMIN - 732)) | (1L << (RESOURCE_GROUP_USER - 732)) | (1L << (ROLE_ADMIN - 732)) | (1L << (ROUTINE - 732)) | (1L << (S3 - 732)) | (1L << (SESSION_VARIABLES_ADMIN - 732)) | (1L << (SET_USER_ID - 732)) | (1L << (SHOW_ROUTINE - 732)) | (1L << (SHUTDOWN - 732)) | (1L << (SUPER - 732)) | (1L << (SYSTEM_VARIABLES_ADMIN - 732)) | (1L << (TABLES - 732)) | (1L << (TABLE_ENCRYPTION_ADMIN - 732)) | (1L << (VERSION_TOKEN_ADMIN - 732)) | (1L << (XA_RECOVER_ADMIN - 732)) | (1L << (ARMSCII8 - 732)) | (1L << (ASCII - 732)) | (1L << (BIG5 - 732)) | (1L << (CP1250 - 732)) | (1L << (CP1251 - 732)) | (1L << (CP1256 - 732)) | (1L << (CP1257 - 732)) | (1L << (CP850 - 732)) | (1L << (CP852 - 732)) | (1L << (CP866 - 732)) | (1L << (CP932 - 732)) | (1L << (DEC8 - 732)) | (1L << (EUCJPMS - 732)) | (1L << (EUCKR - 732)) | (1L << (GB18030 - 732)) | (1L << (GB2312 - 732)) | (1L << (GBK - 732)) | (1L << (GEOSTD8 - 732)) | (1L << (GREEK - 732)) | (1L << (HEBREW - 732)) | (1L << (HP8 - 732)) | (1L << (KEYBCS2 - 732)) | (1L << (KOI8R - 732)) | (1L << (KOI8U - 732)) | (1L << (LATIN1 - 732)) | (1L << (LATIN2 - 732)) | (1L << (LATIN5 - 732)) | (1L << (LATIN7 - 732)) | (1L << (MACCE - 732)) | (1L << (MACROMAN - 732)) | (1L << (SJIS - 732)) | (1L << (SWE7 - 732)) | (1L << (TIS620 - 732)) | (1L << (UCS2 - 732)) | (1L << (UJIS - 732)) | (1L << (UTF16 - 732)) | (1L << (UTF16LE - 732)) | (1L << (UTF32 - 732)) | (1L << (UTF8 - 732)) | (1L << (UTF8MB3 - 732)) | (1L << (UTF8MB4 - 732)) | (1L << (ARCHIVE - 732)))) != 0) || ((((_la - 796)) & ~0x3f) == 0 && ((1L << (_la - 796)) & ((1L << (BLACKHOLE - 796)) | (1L << (CSV - 796)) | (1L << (FEDERATED - 796)) | (1L << (INNODB - 796)) | (1L << (MEMORY - 796)) | (1L << (MRG_MYISAM - 796)) | (1L << (MYISAM - 796)) | (1L << (NDB - 796)) | (1L << (NDBCLUSTER - 796)) | (1L << (PERFORMANCE_SCHEMA - 796)) | (1L << (TOKUDB - 796)) | (1L << (REPEATABLE - 796)) | (1L << (COMMITTED - 796)) | (1L << (UNCOMMITTED - 796)) | (1L << (SERIALIZABLE - 796)) | (1L << (GEOMETRYCOLLECTION - 796)) | (1L << (GEOMETRY - 796)) | (1L << (LINESTRING - 796)) | (1L << (MULTILINESTRING - 796)) | (1L << (MULTIPOINT - 796)) | (1L << (MULTIPOLYGON - 796)) | (1L << (POINT - 796)) | (1L << (POLYGON - 796)) | (1L << (ABS - 796)) | (1L << (ACOS - 796)) | (1L << (ADDDATE - 796)) | (1L << (ADDTIME - 796)) | (1L << (AES_DECRYPT - 796)) | (1L << (AES_ENCRYPT - 796)) | (1L << (AREA - 796)) | (1L << (ASBINARY - 796)) | (1L << (ASIN - 796)) | (1L << (ASTEXT - 796)) | (1L << (ASWKB - 796)) | (1L << (ASWKT - 796)) | (1L << (ASYMMETRIC_DECRYPT - 796)) | (1L << (ASYMMETRIC_DERIVE - 796)) | (1L << (ASYMMETRIC_ENCRYPT - 796)) | (1L << (ASYMMETRIC_SIGN - 796)) | (1L << (ASYMMETRIC_VERIFY - 796)) | (1L << (ATAN - 796)) | (1L << (ATAN2 - 796)) | (1L << (BENCHMARK - 796)) | (1L << (BIN - 796)) | (1L << (BIT_COUNT - 796)) | (1L << (BIT_LENGTH - 796)) | (1L << (BUFFER - 796)) | (1L << (CATALOG_NAME - 796)) | (1L << (CEIL - 796)) | (1L << (CEILING - 796)) | (1L << (CENTROID - 796)) | (1L << (CHARACTER_LENGTH - 796)) | (1L << (CHARSET - 796)) | (1L << (CHAR_LENGTH - 796)) | (1L << (COERCIBILITY - 796)) | (1L << (COLLATION - 796)) | (1L << (COMPRESS - 796)) | (1L << (CONCAT - 796)) | (1L << (CONCAT_WS - 796)) | (1L << (CONNECTION_ID - 796)) | (1L << (CONV - 796)) | (1L << (CONVERT_TZ - 796)) | (1L << (COS - 796)))) != 0) || ((((_la - 860)) & ~0x3f) == 0 && ((1L << (_la - 860)) & ((1L << (COT - 860)) | (1L << (CRC32 - 860)) | (1L << (CREATE_ASYMMETRIC_PRIV_KEY - 860)) | (1L << (CREATE_ASYMMETRIC_PUB_KEY - 860)) | (1L << (CREATE_DH_PARAMETERS - 860)) | (1L << (CREATE_DIGEST - 860)) | (1L << (CROSSES - 860)) | (1L << (DATEDIFF - 860)) | (1L << (DATE_FORMAT - 860)) | (1L << (DAYNAME - 860)) | (1L << (DAYOFMONTH - 860)) | (1L << (DAYOFWEEK - 860)) | (1L << (DAYOFYEAR - 860)) | (1L << (DECODE - 860)) | (1L << (DEGREES - 860)) | (1L << (DES_DECRYPT - 860)) | (1L << (DES_ENCRYPT - 860)) | (1L << (DIMENSION - 860)) | (1L << (DISJOINT - 860)) | (1L << (ELT - 860)) | (1L << (ENCODE - 860)) | (1L << (ENCRYPT - 860)) | (1L << (ENDPOINT - 860)) | (1L << (ENGINE_ATTRIBUTE - 860)) | (1L << (ENVELOPE - 860)) | (1L << (EQUALS - 860)) | (1L << (EXP - 860)) | (1L << (EXPORT_SET - 860)) | (1L << (EXTERIORRING - 860)) | (1L << (EXTRACTVALUE - 860)) | (1L << (FIELD - 860)) | (1L << (FIND_IN_SET - 860)) | (1L << (FLOOR - 860)) | (1L << (FORMAT - 860)) | (1L << (FOUND_ROWS - 860)) | (1L << (FROM_BASE64 - 860)) | (1L << (FROM_DAYS - 860)) | (1L << (FROM_UNIXTIME - 860)) | (1L << (GEOMCOLLFROMTEXT - 860)) | (1L << (GEOMCOLLFROMWKB - 860)) | (1L << (GEOMETRYCOLLECTIONFROMTEXT - 860)) | (1L << (GEOMETRYCOLLECTIONFROMWKB - 860)) | (1L << (GEOMETRYFROMTEXT - 860)) | (1L << (GEOMETRYFROMWKB - 860)) | (1L << (GEOMETRYN - 860)) | (1L << (GEOMETRYTYPE - 860)) | (1L << (GEOMFROMTEXT - 860)) | (1L << (GEOMFROMWKB - 860)) | (1L << (GET_FORMAT - 860)) | (1L << (GET_LOCK - 860)) | (1L << (GLENGTH - 860)) | (1L << (GREATEST - 860)) | (1L << (GTID_SUBSET - 860)) | (1L << (GTID_SUBTRACT - 860)) | (1L << (HEX - 860)) | (1L << (IFNULL - 860)) | (1L << (INET6_ATON - 860)) | (1L << (INET6_NTOA - 860)) | (1L << (INET_ATON - 860)) | (1L << (INET_NTOA - 860)) | (1L << (INSTR - 860)) | (1L << (INTERIORRINGN - 860)) | (1L << (INTERSECTS - 860)) | (1L << (ISCLOSED - 860)))) != 0) || ((((_la - 924)) & ~0x3f) == 0 && ((1L << (_la - 924)) & ((1L << (ISEMPTY - 924)) | (1L << (ISNULL - 924)) | (1L << (ISSIMPLE - 924)) | (1L << (IS_FREE_LOCK - 924)) | (1L << (IS_IPV4 - 924)) | (1L << (IS_IPV4_COMPAT - 924)) | (1L << (IS_IPV4_MAPPED - 924)) | (1L << (IS_IPV6 - 924)) | (1L << (IS_USED_LOCK - 924)) | (1L << (LAST_INSERT_ID - 924)) | (1L << (LCASE - 924)) | (1L << (LEAST - 924)) | (1L << (LENGTH - 924)) | (1L << (LINEFROMTEXT - 924)) | (1L << (LINEFROMWKB - 924)) | (1L << (LINESTRINGFROMTEXT - 924)) | (1L << (LINESTRINGFROMWKB - 924)) | (1L << (LN - 924)) | (1L << (LOAD_FILE - 924)) | (1L << (LOCATE - 924)) | (1L << (LOG - 924)) | (1L << (LOG10 - 924)) | (1L << (LOG2 - 924)) | (1L << (LOWER - 924)) | (1L << (LPAD - 924)) | (1L << (LTRIM - 924)) | (1L << (MAKEDATE - 924)) | (1L << (MAKETIME - 924)) | (1L << (MAKE_SET - 924)) | (1L << (MASTER_POS_WAIT - 924)) | (1L << (MBRCONTAINS - 924)) | (1L << (MBRDISJOINT - 924)) | (1L << (MBREQUAL - 924)) | (1L << (MBRINTERSECTS - 924)) | (1L << (MBROVERLAPS - 924)) | (1L << (MBRTOUCHES - 924)) | (1L << (MBRWITHIN - 924)) | (1L << (MD5 - 924)) | (1L << (MLINEFROMTEXT - 924)) | (1L << (MLINEFROMWKB - 924)) | (1L << (MONTHNAME - 924)) | (1L << (MPOINTFROMTEXT - 924)) | (1L << (MPOINTFROMWKB - 924)) | (1L << (MPOLYFROMTEXT - 924)) | (1L << (MPOLYFROMWKB - 924)) | (1L << (MULTILINESTRINGFROMTEXT - 924)) | (1L << (MULTILINESTRINGFROMWKB - 924)) | (1L << (MULTIPOINTFROMTEXT - 924)) | (1L << (MULTIPOINTFROMWKB - 924)) | (1L << (MULTIPOLYGONFROMTEXT - 924)) | (1L << (MULTIPOLYGONFROMWKB - 924)) | (1L << (NAME_CONST - 924)) | (1L << (NULLIF - 924)) | (1L << (NUMGEOMETRIES - 924)) | (1L << (NUMINTERIORRINGS - 924)) | (1L << (NUMPOINTS - 924)) | (1L << (OCT - 924)) | (1L << (OCTET_LENGTH - 924)) | (1L << (ORD - 924)) | (1L << (OVERLAPS - 924)) | (1L << (PERIOD_ADD - 924)) | (1L << (PERIOD_DIFF - 924)) | (1L << (PI - 924)) | (1L << (POINTFROMTEXT - 924)))) != 0) || ((((_la - 988)) & ~0x3f) == 0 && ((1L << (_la - 988)) & ((1L << (POINTFROMWKB - 988)) | (1L << (POINTN - 988)) | (1L << (POLYFROMTEXT - 988)) | (1L << (POLYFROMWKB - 988)) | (1L << (POLYGONFROMTEXT - 988)) | (1L << (POLYGONFROMWKB - 988)) | (1L << (POW - 988)) | (1L << (POWER - 988)) | (1L << (QUOTE - 988)) | (1L << (RADIANS - 988)) | (1L << (RAND - 988)) | (1L << (RANDOM - 988)) | (1L << (RANDOM_BYTES - 988)) | (1L << (RELEASE_LOCK - 988)) | (1L << (REVERSE - 988)) | (1L << (ROUND - 988)) | (1L << (ROW_COUNT - 988)) | (1L << (RPAD - 988)) | (1L << (RTRIM - 988)) | (1L << (SEC_TO_TIME - 988)) | (1L << (SECONDARY_ENGINE_ATTRIBUTE - 988)) | (1L << (SENSITIVE_VARIABLES_OBSERVER - 988)) | (1L << (SESSION_USER - 988)) | (1L << (SHA - 988)) | (1L << (SHA1 - 988)) | (1L << (SHA2 - 988)) | (1L << (SCHEMA_NAME - 988)) | (1L << (SIGN - 988)) | (1L << (SIN - 988)) | (1L << (SLEEP - 988)) | (1L << (SOUNDEX - 988)) | (1L << (SQL_THREAD_WAIT_AFTER_GTIDS - 988)) | (1L << (SQRT - 988)) | (1L << (SRID - 988)) | (1L << (STARTPOINT - 988)) | (1L << (STRCMP - 988)) | (1L << (STR_TO_DATE - 988)) | (1L << (ST_AREA - 988)) | (1L << (ST_ASBINARY - 988)) | (1L << (ST_ASTEXT - 988)) | (1L << (ST_ASWKB - 988)) | (1L << (ST_ASWKT - 988)) | (1L << (ST_BUFFER - 988)) | (1L << (ST_CENTROID - 988)) | (1L << (ST_CONTAINS - 988)) | (1L << (ST_CROSSES - 988)) | (1L << (ST_DIFFERENCE - 988)) | (1L << (ST_DIMENSION - 988)) | (1L << (ST_DISJOINT - 988)) | (1L << (ST_DISTANCE - 988)) | (1L << (ST_ENDPOINT - 988)) | (1L << (ST_ENVELOPE - 988)) | (1L << (ST_EQUALS - 988)) | (1L << (ST_EXTERIORRING - 988)) | (1L << (ST_GEOMCOLLFROMTEXT - 988)) | (1L << (ST_GEOMCOLLFROMTXT - 988)) | (1L << (ST_GEOMCOLLFROMWKB - 988)) | (1L << (ST_GEOMETRYCOLLECTIONFROMTEXT - 988)) | (1L << (ST_GEOMETRYCOLLECTIONFROMWKB - 988)) | (1L << (ST_GEOMETRYFROMTEXT - 988)) | (1L << (ST_GEOMETRYFROMWKB - 988)) | (1L << (ST_GEOMETRYN - 988)) | (1L << (ST_GEOMETRYTYPE - 988)) | (1L << (ST_GEOMFROMTEXT - 988)))) != 0) || ((((_la - 1052)) & ~0x3f) == 0 && ((1L << (_la - 1052)) & ((1L << (ST_GEOMFROMWKB - 1052)) | (1L << (ST_INTERIORRINGN - 1052)) | (1L << (ST_INTERSECTION - 1052)) | (1L << (ST_INTERSECTS - 1052)) | (1L << (ST_ISCLOSED - 1052)) | (1L << (ST_ISEMPTY - 1052)) | (1L << (ST_ISSIMPLE - 1052)) | (1L << (ST_LINEFROMTEXT - 1052)) | (1L << (ST_LINEFROMWKB - 1052)) | (1L << (ST_LINESTRINGFROMTEXT - 1052)) | (1L << (ST_LINESTRINGFROMWKB - 1052)) | (1L << (ST_NUMGEOMETRIES - 1052)) | (1L << (ST_NUMINTERIORRING - 1052)) | (1L << (ST_NUMINTERIORRINGS - 1052)) | (1L << (ST_NUMPOINTS - 1052)) | (1L << (ST_OVERLAPS - 1052)) | (1L << (ST_POINTFROMTEXT - 1052)) | (1L << (ST_POINTFROMWKB - 1052)) | (1L << (ST_POINTN - 1052)) | (1L << (ST_POLYFROMTEXT - 1052)) | (1L << (ST_POLYFROMWKB - 1052)) | (1L << (ST_POLYGONFROMTEXT - 1052)) | (1L << (ST_POLYGONFROMWKB - 1052)) | (1L << (ST_SRID - 1052)) | (1L << (ST_STARTPOINT - 1052)) | (1L << (ST_SYMDIFFERENCE - 1052)) | (1L << (ST_TOUCHES - 1052)) | (1L << (ST_UNION - 1052)) | (1L << (ST_WITHIN - 1052)) | (1L << (ST_X - 1052)) | (1L << (ST_Y - 1052)) | (1L << (SUBDATE - 1052)) | (1L << (SUBSTRING_INDEX - 1052)) | (1L << (SUBTIME - 1052)) | (1L << (SYSTEM_USER - 1052)) | (1L << (SYSTEM - 1052)) | (1L << (TAN - 1052)) | (1L << (TELEMETRY_LOG_ADMIN - 1052)) | (1L << (TIMEDIFF - 1052)) | (1L << (TIMESTAMPADD - 1052)) | (1L << (TIMESTAMPDIFF - 1052)) | (1L << (TIME_FORMAT - 1052)) | (1L << (TIME_TO_SEC - 1052)) | (1L << (TOUCHES - 1052)) | (1L << (TO_BASE64 - 1052)) | (1L << (TO_DAYS - 1052)) | (1L << (TO_SECONDS - 1052)) | (1L << (TP_CONNECTION_ADMIN - 1052)) | (1L << (UCASE - 1052)) | (1L << (UNCOMPRESS - 1052)) | (1L << (UNCOMPRESSED_LENGTH - 1052)) | (1L << (UNHEX - 1052)) | (1L << (UNIX_TIMESTAMP - 1052)) | (1L << (UPDATEXML - 1052)) | (1L << (UPPER - 1052)) | (1L << (UUID - 1052)) | (1L << (UUID_SHORT - 1052)) | (1L << (VALIDATE_PASSWORD_STRENGTH - 1052)) | (1L << (VERSION - 1052)) | (1L << (VERSIONING - 1052)) | (1L << (WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS - 1052)) | (1L << (WEEKDAY - 1052)) | (1L << (WEEKOFYEAR - 1052)) | (1L << (WEIGHT_STRING - 1052)))) != 0) || ((((_la - 1116)) & ~0x3f) == 0 && ((1L << (_la - 1116)) & ((1L << (WITHIN - 1116)) | (1L << (YEARWEEK - 1116)) | (1L << (Y_FUNCTION - 1116)) | (1L << (X_FUNCTION - 1116)) | (1L << (VIA - 1116)) | (1L << (LASTVAL - 1116)) | (1L << (NEXTVAL - 1116)) | (1L << (SETVAL - 1116)) | (1L << (PREVIOUS - 1116)) | (1L << (PERSISTENT - 1116)) | (1L << (BINLOG_MONITOR - 1116)) | (1L << (BINLOG_REPLAY - 1116)) | (1L << (FEDERATED_ADMIN - 1116)) | (1L << (READ_ONLY_ADMIN - 1116)) | (1L << (REPLICA - 1116)) | (1L << (REPLICATION_MASTER_ADMIN - 1116)) | (1L << (MONITOR - 1116)) | (1L << (READ_ONLY - 1116)) | (1L << (REPLAY - 1116)) | (1L << (MOD - 1116)) | (1L << (CHARSET_REVERSE_QOUTE_STRING - 1116)) | (1L << (STRING_LITERAL - 1116)))) != 0) || _la==ID) {
						{
						setState(2905);
						((AlterByAlterCheckTableConstraintContext)_localctx).name = uid();
						}
					}

					}
				}

				setState(2910);
				match(CHECK);
				setState(2917);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,384,_ctx) ) {
				case 1:
					{
					setState(2911);
					uid();
					}
					break;
				case 2:
					{
					setState(2912);
					stringLiteral();
					}
					break;
				case 3:
					{
					setState(2913);
					match(LR_BRACKET);
					setState(2914);
					expression(0);
					setState(2915);
					match(RR_BRACKET);
					}
					break;
				}
				setState(2920);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==NOT) {
					{
					setState(2919);
					match(NOT);
					}
				}

				setState(2923);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==ENFORCED) {
					{
					setState(2922);
					match(ENFORCED);
					}
				}

				}
				break;
			case 11:
				_localctx = new AlterBySetAlgorithmContext(_localctx);
				enterOuterAlt(_localctx, 11);
				{
				setState(2925);
				match(ALGORITHM);
				setState(2927);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(2926);
					match(EQUAL_SYMBOL);
					}
				}

				setState(2929);
				((AlterBySetAlgorithmContext)_localctx).algType = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==DEFAULT || _la==COPY || _la==INPLACE || _la==INSTANT || _la==NOCOPY) ) {
					((AlterBySetAlgorithmContext)_localctx).algType = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case 12:
				_localctx = new AlterByChangeDefaultContext(_localctx);
				enterOuterAlt(_localctx, 12);
				{
				setState(2930);
				match(ALTER);
				setState(2932);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COLUMN) {
					{
					setState(2931);
					match(COLUMN);
					}
				}

				setState(2934);
				uid();
				setState(2940);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case SET:
					{
					setState(2935);
					match(SET);
					setState(2936);
					match(DEFAULT);
					setState(2937);
					defaultValue();
					}
					break;
				case DROP:
					{
					setState(2938);
					match(DROP);
					setState(2939);
					match(DEFAULT);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case 13:
				_localctx = new AlterByChangeColumnContext(_localctx);
				enterOuterAlt(_localctx, 13);
				{
				setState(2942);
				match(CHANGE);
				setState(2944);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COLUMN) {
					{
					setState(2943);
					match(COLUMN);
					}
				}

				setState(2947);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,391,_ctx) ) {
				case 1:
					{
					setState(2946);
					ifExists();
					}
					break;
				}
				setState(2949);
				((AlterByChangeColumnContext)_localctx).oldColumn = uid();
				setState(2950);
				((AlterByChangeColumnContext)_localctx).newColumn = uid();
				setState(2951);
				columnDefinition();
				setState(2955);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case FIRST:
					{
					setState(2952);
					match(FIRST);
					}
					break;
				case AFTER:
					{
					setState(2953);
					match(AFTER);
					setState(2954);
					((AlterByChangeColumnContext)_localctx).afterColumn = uid();
					}
					break;
				case EOF:
				case ALTER:
				case ANALYZE:
				case CALL:
				case CHANGE:
				case CHECK:
				case CREATE:
				case DELETE:
				case DESC:
				case DESCRIBE:
				case DROP:
				case EXPLAIN:
				case GET:
				case GRANT:
				case INSERT:
				case KILL:
				case LOAD:
				case LOCK:
				case OPTIMIZE:
				case PARTITION:
				case PURGE:
				case RELEASE:
				case RENAME:
				case REPLACE:
				case RESIGNAL:
				case REVOKE:
				case SELECT:
				case SET:
				case SHOW:
				case SIGNAL:
				case TABLE:
				case UNLOCK:
				case UPDATE:
				case USE:
				case VALUES:
				case WITH:
				case BEGIN:
				case BINLOG:
				case CACHE:
				case CHECKSUM:
				case COMMIT:
				case DEALLOCATE:
				case DO:
				case FLUSH:
				case HANDLER:
				case HELP:
				case INSTALL:
				case PREPARE:
				case REPAIR:
				case RESET:
				case ROLLBACK:
				case SAVEPOINT:
				case START:
				case STOP:
				case TRUNCATE:
				case UNINSTALL:
				case XA:
				case EXECUTE:
				case SHUTDOWN:
				case MINUS:
				case LR_BRACKET:
				case COMMA:
				case SEMI:
					break;
				default:
					break;
				}
				}
				break;
			case 14:
				_localctx = new AlterByRenameColumnContext(_localctx);
				enterOuterAlt(_localctx, 14);
				{
				setState(2957);
				match(RENAME);
				setState(2958);
				match(COLUMN);
				setState(2959);
				((AlterByRenameColumnContext)_localctx).oldColumn = uid();
				setState(2960);
				match(TO);
				setState(2961);
				((AlterByRenameColumnContext)_localctx).newColumn = uid();
				}
				break;
			case 15:
				_localctx = new AlterByLockContext(_localctx);
				enterOuterAlt(_localctx, 15);
				{
				setState(2963);
				match(LOCK);
				setState(2965);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(2964);
					match(EQUAL_SYMBOL);
					}
				}

				setState(2967);
				((AlterByLockContext)_localctx).lockType = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==DEFAULT || _la==EXCLUSIVE || _la==NONE || _la==SHARED) ) {
					((AlterByLockContext)_localctx).lockType = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case 16:
				_localctx = new AlterByModifyColumnContext(_localctx);
				enterOuterAlt(_localctx, 16);
				{
				setState(2968);
				match(MODIFY);
				setState(2970);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COLUMN) {
					{
					setState(2969);
					match(COLUMN);
					}
				}

				setState(2973);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,395,_ctx) ) {
				case 1:
					{
					setState(2972);
					ifExists();
					}
					break;
				}
				setState(2975);
				uid();
				setState(2976);
				columnDefinition();
				setState(2980);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case FIRST:
					{
					setState(2977);
					match(FIRST);
					}
					break;
				case AFTER:
					{
					setState(2978);
					match(AFTER);
					setState(2979);
					uid();
					}
					break;
				case EOF:
				case ALTER:
				case ANALYZE:
				case CALL:
				case CHANGE:
				case CHECK:
				case CREATE:
				case DELETE:
				case DESC:
				case DESCRIBE:
				case DROP:
				case EXPLAIN:
				case GET:
				case GRANT:
				case INSERT:
				case KILL:
				case LOAD:
				case LOCK:
				case OPTIMIZE:
				case PARTITION:
				case PURGE:
				case RELEASE:
				case RENAME:
				case REPLACE:
				case RESIGNAL:
				case REVOKE:
				case SELECT:
				case SET:
				case SHOW:
				case SIGNAL:
				case TABLE:
				case UNLOCK:
				case UPDATE:
				case USE:
				case VALUES:
				case WITH:
				case BEGIN:
				case BINLOG:
				case CACHE:
				case CHECKSUM:
				case COMMIT:
				case DEALLOCATE:
				case DO:
				case FLUSH:
				case HANDLER:
				case HELP:
				case INSTALL:
				case PREPARE:
				case REPAIR:
				case RESET:
				case ROLLBACK:
				case SAVEPOINT:
				case START:
				case STOP:
				case TRUNCATE:
				case UNINSTALL:
				case XA:
				case EXECUTE:
				case SHUTDOWN:
				case MINUS:
				case LR_BRACKET:
				case COMMA:
				case SEMI:
					break;
				default:
					break;
				}
				}
				break;
			case 17:
				_localctx = new AlterByDropColumnContext(_localctx);
				enterOuterAlt(_localctx, 17);
				{
				setState(2982);
				match(DROP);
				setState(2984);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COLUMN) {
					{
					setState(2983);
					match(COLUMN);
					}
				}

				setState(2987);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,398,_ctx) ) {
				case 1:
					{
					setState(2986);
					ifExists();
					}
					break;
				}
				setState(2989);
				uid();
				setState(2991);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==RESTRICT) {
					{
					setState(2990);
					match(RESTRICT);
					}
				}

				}
				break;
			case 18:
				_localctx = new AlterByDropConstraintCheckContext(_localctx);
				enterOuterAlt(_localctx, 18);
				{
				setState(2993);
				match(DROP);
				setState(2994);
				_la = _input.LA(1);
				if ( !(_la==CHECK || _la==CONSTRAINT) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(2996);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,400,_ctx) ) {
				case 1:
					{
					setState(2995);
					ifExists();
					}
					break;
				}
				setState(2998);
				uid();
				}
				break;
			case 19:
				_localctx = new AlterByDropPrimaryKeyContext(_localctx);
				enterOuterAlt(_localctx, 19);
				{
				setState(2999);
				match(DROP);
				setState(3000);
				match(PRIMARY);
				setState(3001);
				match(KEY);
				}
				break;
			case 20:
				_localctx = new AlterByDropIndexContext(_localctx);
				enterOuterAlt(_localctx, 20);
				{
				setState(3002);
				match(DROP);
				setState(3003);
				((AlterByDropIndexContext)_localctx).indexFormat = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==INDEX || _la==KEY) ) {
					((AlterByDropIndexContext)_localctx).indexFormat = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(3005);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,401,_ctx) ) {
				case 1:
					{
					setState(3004);
					ifExists();
					}
					break;
				}
				setState(3007);
				uid();
				}
				break;
			case 21:
				_localctx = new AlterByRenameIndexContext(_localctx);
				enterOuterAlt(_localctx, 21);
				{
				setState(3008);
				match(RENAME);
				setState(3009);
				((AlterByRenameIndexContext)_localctx).indexFormat = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==INDEX || _la==KEY) ) {
					((AlterByRenameIndexContext)_localctx).indexFormat = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(3010);
				uid();
				setState(3011);
				match(TO);
				setState(3012);
				uid();
				}
				break;
			case 22:
				_localctx = new AlterByAlterColumnDefaultContext(_localctx);
				enterOuterAlt(_localctx, 22);
				{
				setState(3014);
				match(ALTER);
				setState(3016);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COLUMN) {
					{
					setState(3015);
					match(COLUMN);
					}
				}

				setState(3018);
				uid();
				setState(3032);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,404,_ctx) ) {
				case 1:
					{
					setState(3019);
					match(SET);
					setState(3020);
					match(DEFAULT);
					setState(3026);
					_errHandler.sync(this);
					switch (_input.LA(1)) {
					case START_NATIONAL_STRING_LITERAL:
					case STRING_LITERAL:
					case STRING_CHARSET_NAME:
						{
						setState(3021);
						stringLiteral();
						}
						break;
					case LR_BRACKET:
						{
						setState(3022);
						match(LR_BRACKET);
						setState(3023);
						expression(0);
						setState(3024);
						match(RR_BRACKET);
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					}
					break;
				case 2:
					{
					setState(3028);
					match(SET);
					setState(3029);
					_la = _input.LA(1);
					if ( !(_la==INVISIBLE || _la==VISIBLE) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
					break;
				case 3:
					{
					setState(3030);
					match(DROP);
					setState(3031);
					match(DEFAULT);
					}
					break;
				}
				}
				break;
			case 23:
				_localctx = new AlterByAlterIndexVisibilityContext(_localctx);
				enterOuterAlt(_localctx, 23);
				{
				setState(3034);
				match(ALTER);
				setState(3035);
				match(INDEX);
				setState(3036);
				uid();
				setState(3037);
				_la = _input.LA(1);
				if ( !(_la==INVISIBLE || _la==VISIBLE) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case 24:
				_localctx = new AlterByDropForeignKeyContext(_localctx);
				enterOuterAlt(_localctx, 24);
				{
				setState(3039);
				match(DROP);
				setState(3040);
				match(FOREIGN);
				setState(3041);
				match(KEY);
				setState(3043);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,405,_ctx) ) {
				case 1:
					{
					setState(3042);
					ifExists();
					}
					break;
				}
				setState(3045);
				uid();
				setState(3047);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==DOT || _la==DOT_ID) {
					{
					setState(3046);
					dottedId();
					}
				}

				}
				break;
			case 25:
				_localctx = new AlterByDisableKeysContext(_localctx);
				enterOuterAlt(_localctx, 25);
				{
				setState(3049);
				match(DISABLE);
				setState(3050);
				match(KEYS);
				}
				break;
			case 26:
				_localctx = new AlterByEnableKeysContext(_localctx);
				enterOuterAlt(_localctx, 26);
				{
				setState(3051);
				match(ENABLE);
				setState(3052);
				match(KEYS);
				}
				break;
			case 27:
				_localctx = new AlterByRenameContext(_localctx);
				enterOuterAlt(_localctx, 27);
				{
				setState(3053);
				match(RENAME);
				setState(3055);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==AS || _la==TO) {
					{
					setState(3054);
					((AlterByRenameContext)_localctx).renameFormat = _input.LT(1);
					_la = _input.LA(1);
					if ( !(_la==AS || _la==TO) ) {
						((AlterByRenameContext)_localctx).renameFormat = (Token)_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
				}

				setState(3059);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,408,_ctx) ) {
				case 1:
					{
					setState(3057);
					uid();
					}
					break;
				case 2:
					{
					setState(3058);
					fullId();
					}
					break;
				}
				}
				break;
			case 28:
				_localctx = new AlterByOrderContext(_localctx);
				enterOuterAlt(_localctx, 28);
				{
				setState(3061);
				match(ORDER);
				setState(3062);
				match(BY);
				setState(3063);
				uidList();
				}
				break;
			case 29:
				_localctx = new AlterByConvertCharsetContext(_localctx);
				enterOuterAlt(_localctx, 29);
				{
				setState(3064);
				match(CONVERT);
				setState(3065);
				match(TO);
				setState(3069);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case CHARSET:
					{
					setState(3066);
					match(CHARSET);
					}
					break;
				case CHARACTER:
					{
					setState(3067);
					match(CHARACTER);
					setState(3068);
					match(SET);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(3071);
				charsetName();
				setState(3074);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COLLATE) {
					{
					setState(3072);
					match(COLLATE);
					setState(3073);
					collationName();
					}
				}

				}
				break;
			case 30:
				_localctx = new AlterByDefaultCharsetContext(_localctx);
				enterOuterAlt(_localctx, 30);
				{
				setState(3077);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==DEFAULT) {
					{
					setState(3076);
					match(DEFAULT);
					}
				}

				setState(3079);
				match(CHARACTER);
				setState(3080);
				match(SET);
				setState(3081);
				match(EQUAL_SYMBOL);
				setState(3082);
				charsetName();
				setState(3086);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COLLATE) {
					{
					setState(3083);
					match(COLLATE);
					setState(3084);
					match(EQUAL_SYMBOL);
					setState(3085);
					collationName();
					}
				}

				}
				break;
			case 31:
				_localctx = new AlterByDiscardTablespaceContext(_localctx);
				enterOuterAlt(_localctx, 31);
				{
				setState(3088);
				match(DISCARD);
				setState(3089);
				match(TABLESPACE);
				}
				break;
			case 32:
				_localctx = new AlterByImportTablespaceContext(_localctx);
				enterOuterAlt(_localctx, 32);
				{
				setState(3090);
				match(IMPORT);
				setState(3091);
				match(TABLESPACE);
				}
				break;
			case 33:
				_localctx = new AlterByForceContext(_localctx);
				enterOuterAlt(_localctx, 33);
				{
				setState(3092);
				match(FORCE);
				}
				break;
			case 34:
				_localctx = new AlterByValidateContext(_localctx);
				enterOuterAlt(_localctx, 34);
				{
				setState(3093);
				((AlterByValidateContext)_localctx).validationFormat = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==WITH || _la==WITHOUT) ) {
					((AlterByValidateContext)_localctx).validationFormat = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(3094);
				match(VALIDATION);
				}
				break;
			case 35:
				_localctx = new AlterByAddDefinitionsContext(_localctx);
				enterOuterAlt(_localctx, 35);
				{
				setState(3095);
				match(ADD);
				setState(3097);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COLUMN) {
					{
					setState(3096);
					match(COLUMN);
					}
				}

				setState(3100);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==IF) {
					{
					setState(3099);
					ifNotExists();
					}
				}

				setState(3102);
				match(LR_BRACKET);
				setState(3103);
				createDefinition();
				setState(3108);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(3104);
					match(COMMA);
					setState(3105);
					createDefinition();
					}
					}
					setState(3110);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(3111);
				match(RR_BRACKET);
				}
				break;
			case 36:
				_localctx = new AlterPartitionContext(_localctx);
				enterOuterAlt(_localctx, 36);
				{
				setState(3113);
				alterPartitionSpecification();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterPartitionSpecificationContext extends ParserRuleContext {
		public AlterPartitionSpecificationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterPartitionSpecification; }
	 
		public AlterPartitionSpecificationContext() { }
		public void copyFrom(AlterPartitionSpecificationContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class AlterByImportPartitionContext extends AlterPartitionSpecificationContext {
		public TerminalNode IMPORT() { return getToken(MySqlParser.IMPORT, 0); }
		public TerminalNode PARTITION() { return getToken(MySqlParser.PARTITION, 0); }
		public TerminalNode TABLESPACE() { return getToken(MySqlParser.TABLESPACE, 0); }
		public UidListContext uidList() {
			return getRuleContext(UidListContext.class,0);
		}
		public TerminalNode ALL() { return getToken(MySqlParser.ALL, 0); }
		public AlterByImportPartitionContext(AlterPartitionSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByImportPartition(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByImportPartition(this);
		}
	}
	public static class AlterByDropPartitionContext extends AlterPartitionSpecificationContext {
		public TerminalNode DROP() { return getToken(MySqlParser.DROP, 0); }
		public TerminalNode PARTITION() { return getToken(MySqlParser.PARTITION, 0); }
		public UidListContext uidList() {
			return getRuleContext(UidListContext.class,0);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public AlterByDropPartitionContext(AlterPartitionSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByDropPartition(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByDropPartition(this);
		}
	}
	public static class AlterByDiscardPartitionContext extends AlterPartitionSpecificationContext {
		public TerminalNode DISCARD() { return getToken(MySqlParser.DISCARD, 0); }
		public TerminalNode PARTITION() { return getToken(MySqlParser.PARTITION, 0); }
		public TerminalNode TABLESPACE() { return getToken(MySqlParser.TABLESPACE, 0); }
		public UidListContext uidList() {
			return getRuleContext(UidListContext.class,0);
		}
		public TerminalNode ALL() { return getToken(MySqlParser.ALL, 0); }
		public AlterByDiscardPartitionContext(AlterPartitionSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByDiscardPartition(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByDiscardPartition(this);
		}
	}
	public static class AlterByAddPartitionContext extends AlterPartitionSpecificationContext {
		public TerminalNode ADD() { return getToken(MySqlParser.ADD, 0); }
		public TerminalNode PARTITION() { return getToken(MySqlParser.PARTITION, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public List partitionDefinition() {
			return getRuleContexts(PartitionDefinitionContext.class);
		}
		public PartitionDefinitionContext partitionDefinition(int i) {
			return getRuleContext(PartitionDefinitionContext.class,i);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public IfNotExistsContext ifNotExists() {
			return getRuleContext(IfNotExistsContext.class,0);
		}
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public AlterByAddPartitionContext(AlterPartitionSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByAddPartition(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByAddPartition(this);
		}
	}
	public static class AlterByRemovePartitioningContext extends AlterPartitionSpecificationContext {
		public TerminalNode REMOVE() { return getToken(MySqlParser.REMOVE, 0); }
		public TerminalNode PARTITIONING() { return getToken(MySqlParser.PARTITIONING, 0); }
		public AlterByRemovePartitioningContext(AlterPartitionSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByRemovePartitioning(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByRemovePartitioning(this);
		}
	}
	public static class AlterByOptimizePartitionContext extends AlterPartitionSpecificationContext {
		public TerminalNode OPTIMIZE() { return getToken(MySqlParser.OPTIMIZE, 0); }
		public TerminalNode PARTITION() { return getToken(MySqlParser.PARTITION, 0); }
		public UidListContext uidList() {
			return getRuleContext(UidListContext.class,0);
		}
		public TerminalNode ALL() { return getToken(MySqlParser.ALL, 0); }
		public AlterByOptimizePartitionContext(AlterPartitionSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByOptimizePartition(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByOptimizePartition(this);
		}
	}
	public static class AlterByCheckPartitionContext extends AlterPartitionSpecificationContext {
		public TerminalNode CHECK() { return getToken(MySqlParser.CHECK, 0); }
		public TerminalNode PARTITION() { return getToken(MySqlParser.PARTITION, 0); }
		public UidListContext uidList() {
			return getRuleContext(UidListContext.class,0);
		}
		public TerminalNode ALL() { return getToken(MySqlParser.ALL, 0); }
		public AlterByCheckPartitionContext(AlterPartitionSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByCheckPartition(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByCheckPartition(this);
		}
	}
	public static class AlterByCoalescePartitionContext extends AlterPartitionSpecificationContext {
		public TerminalNode COALESCE() { return getToken(MySqlParser.COALESCE, 0); }
		public TerminalNode PARTITION() { return getToken(MySqlParser.PARTITION, 0); }
		public DecimalLiteralContext decimalLiteral() {
			return getRuleContext(DecimalLiteralContext.class,0);
		}
		public AlterByCoalescePartitionContext(AlterPartitionSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByCoalescePartition(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByCoalescePartition(this);
		}
	}
	public static class AlterByReorganizePartitionContext extends AlterPartitionSpecificationContext {
		public TerminalNode REORGANIZE() { return getToken(MySqlParser.REORGANIZE, 0); }
		public TerminalNode PARTITION() { return getToken(MySqlParser.PARTITION, 0); }
		public UidListContext uidList() {
			return getRuleContext(UidListContext.class,0);
		}
		public TerminalNode INTO() { return getToken(MySqlParser.INTO, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public List partitionDefinition() {
			return getRuleContexts(PartitionDefinitionContext.class);
		}
		public PartitionDefinitionContext partitionDefinition(int i) {
			return getRuleContext(PartitionDefinitionContext.class,i);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public AlterByReorganizePartitionContext(AlterPartitionSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByReorganizePartition(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByReorganizePartition(this);
		}
	}
	public static class AlterByAnalyzePartitionContext extends AlterPartitionSpecificationContext {
		public TerminalNode ANALYZE() { return getToken(MySqlParser.ANALYZE, 0); }
		public TerminalNode PARTITION() { return getToken(MySqlParser.PARTITION, 0); }
		public UidListContext uidList() {
			return getRuleContext(UidListContext.class,0);
		}
		public TerminalNode ALL() { return getToken(MySqlParser.ALL, 0); }
		public AlterByAnalyzePartitionContext(AlterPartitionSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByAnalyzePartition(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByAnalyzePartition(this);
		}
	}
	public static class AlterByRebuildPartitionContext extends AlterPartitionSpecificationContext {
		public TerminalNode REBUILD() { return getToken(MySqlParser.REBUILD, 0); }
		public TerminalNode PARTITION() { return getToken(MySqlParser.PARTITION, 0); }
		public UidListContext uidList() {
			return getRuleContext(UidListContext.class,0);
		}
		public TerminalNode ALL() { return getToken(MySqlParser.ALL, 0); }
		public AlterByRebuildPartitionContext(AlterPartitionSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByRebuildPartition(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByRebuildPartition(this);
		}
	}
	public static class AlterByUpgradePartitioningContext extends AlterPartitionSpecificationContext {
		public TerminalNode UPGRADE() { return getToken(MySqlParser.UPGRADE, 0); }
		public TerminalNode PARTITIONING() { return getToken(MySqlParser.PARTITIONING, 0); }
		public AlterByUpgradePartitioningContext(AlterPartitionSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByUpgradePartitioning(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByUpgradePartitioning(this);
		}
	}
	public static class AlterByTruncatePartitionContext extends AlterPartitionSpecificationContext {
		public TerminalNode TRUNCATE() { return getToken(MySqlParser.TRUNCATE, 0); }
		public TerminalNode PARTITION() { return getToken(MySqlParser.PARTITION, 0); }
		public UidListContext uidList() {
			return getRuleContext(UidListContext.class,0);
		}
		public TerminalNode ALL() { return getToken(MySqlParser.ALL, 0); }
		public AlterByTruncatePartitionContext(AlterPartitionSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByTruncatePartition(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByTruncatePartition(this);
		}
	}
	public static class AlterByRepairPartitionContext extends AlterPartitionSpecificationContext {
		public TerminalNode REPAIR() { return getToken(MySqlParser.REPAIR, 0); }
		public TerminalNode PARTITION() { return getToken(MySqlParser.PARTITION, 0); }
		public UidListContext uidList() {
			return getRuleContext(UidListContext.class,0);
		}
		public TerminalNode ALL() { return getToken(MySqlParser.ALL, 0); }
		public AlterByRepairPartitionContext(AlterPartitionSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByRepairPartition(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByRepairPartition(this);
		}
	}
	public static class AlterByExchangePartitionContext extends AlterPartitionSpecificationContext {
		public Token validationFormat;
		public TerminalNode EXCHANGE() { return getToken(MySqlParser.EXCHANGE, 0); }
		public TerminalNode PARTITION() { return getToken(MySqlParser.PARTITION, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public List WITH() { return getTokens(MySqlParser.WITH); }
		public TerminalNode WITH(int i) {
			return getToken(MySqlParser.WITH, i);
		}
		public TerminalNode TABLE() { return getToken(MySqlParser.TABLE, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public TerminalNode VALIDATION() { return getToken(MySqlParser.VALIDATION, 0); }
		public TerminalNode WITHOUT() { return getToken(MySqlParser.WITHOUT, 0); }
		public AlterByExchangePartitionContext(AlterPartitionSpecificationContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterByExchangePartition(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterByExchangePartition(this);
		}
	}

	public final AlterPartitionSpecificationContext alterPartitionSpecification() throws RecognitionException {
		AlterPartitionSpecificationContext _localctx = new AlterPartitionSpecificationContext(_ctx, getState());
		enterRule(_localctx, 162, RULE_alterPartitionSpecification);
		int _la;
		try {
			setState(3220);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case ADD:
				_localctx = new AlterByAddPartitionContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(3116);
				match(ADD);
				setState(3117);
				match(PARTITION);
				setState(3119);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==IF) {
					{
					setState(3118);
					ifNotExists();
					}
				}

				setState(3121);
				match(LR_BRACKET);
				setState(3122);
				partitionDefinition();
				setState(3127);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(3123);
					match(COMMA);
					setState(3124);
					partitionDefinition();
					}
					}
					setState(3129);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(3130);
				match(RR_BRACKET);
				}
				break;
			case DROP:
				_localctx = new AlterByDropPartitionContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(3132);
				match(DROP);
				setState(3133);
				match(PARTITION);
				setState(3135);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,419,_ctx) ) {
				case 1:
					{
					setState(3134);
					ifExists();
					}
					break;
				}
				setState(3137);
				uidList();
				}
				break;
			case DISCARD:
				_localctx = new AlterByDiscardPartitionContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(3138);
				match(DISCARD);
				setState(3139);
				match(PARTITION);
				setState(3142);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case ARRAY:
				case ATTRIBUTE:
				case BUCKETS:
				case CONDITION:
				case CURRENT:
				case CURRENT_ROLE:
				case CURRENT_USER:
				case DATABASE:
				case DEFAULT:
				case DIAGNOSTICS:
				case EMPTY:
				case ENFORCED:
				case EXCEPT:
				case GROUP:
				case GROUP_REPLICATION_STREAM:
				case IF:
				case IGNORED:
				case INSERT:
				case LATERAL:
				case LEFT:
				case LOCKED:
				case MAXVALUE:
				case MINVALUE:
				case NUMBER:
				case OPTIONAL:
				case ORDER:
				case PRIMARY:
				case REPEAT:
				case REPLACE:
				case RIGHT:
				case SCHEMA:
				case SKIP_:
				case SKIP_QUERY_REWRITE:
				case STACKED:
				case STATEMENT:
				case DATE:
				case TIME:
				case TIMESTAMP:
				case DATETIME:
				case YEAR:
				case NATIONAL:
				case BINARY:
				case TEXT:
				case ENUM:
				case SERIAL:
				case JSON_ARRAY:
				case JSON_ARRAYAGG:
				case JSON_ARRAY_APPEND:
				case JSON_ARRAY_INSERT:
				case JSON_CONTAINS:
				case JSON_CONTAINS_PATH:
				case JSON_DEPTH:
				case JSON_EXTRACT:
				case JSON_INSERT:
				case JSON_KEYS:
				case JSON_LENGTH:
				case JSON_MERGE:
				case JSON_MERGE_PATCH:
				case JSON_MERGE_PRESERVE:
				case JSON_OBJECT:
				case JSON_OBJECTAGG:
				case JSON_OVERLAPS:
				case JSON_PRETTY:
				case JSON_QUOTE:
				case JSON_REMOVE:
				case JSON_REPLACE:
				case JSON_SCHEMA_VALID:
				case JSON_SCHEMA_VALIDATION_REPORT:
				case JSON_SEARCH:
				case JSON_SET:
				case JSON_STORAGE_FREE:
				case JSON_STORAGE_SIZE:
				case JSON_TABLE:
				case JSON_TYPE:
				case JSON_UNQUOTE:
				case JSON_VALID:
				case JSON_VALUE:
				case NESTED:
				case ORDINALITY:
				case PATH:
				case AVG:
				case BIT_AND:
				case BIT_OR:
				case BIT_XOR:
				case COUNT:
				case CUME_DIST:
				case DENSE_RANK:
				case FIRST_VALUE:
				case GROUP_CONCAT:
				case LAG:
				case LAST_VALUE:
				case LEAD:
				case MAX:
				case MIN:
				case NTILE:
				case NTH_VALUE:
				case PERCENT_RANK:
				case RANK:
				case ROW_NUMBER:
				case STD:
				case STDDEV:
				case STDDEV_POP:
				case STDDEV_SAMP:
				case SUM:
				case VAR_POP:
				case VAR_SAMP:
				case VARIANCE:
				case CURRENT_DATE:
				case CURRENT_TIME:
				case CURRENT_TIMESTAMP:
				case LOCALTIME:
				case CURDATE:
				case CURTIME:
				case DATE_ADD:
				case DATE_SUB:
				case LOCALTIMESTAMP:
				case NOW:
				case POSITION:
				case SUBSTR:
				case SUBSTRING:
				case SYSDATE:
				case TRIM:
				case UTC_DATE:
				case UTC_TIME:
				case UTC_TIMESTAMP:
				case ACCOUNT:
				case ACTION:
				case AFTER:
				case AGGREGATE:
				case ALGORITHM:
				case ANY:
				case AT:
				case AUTHORS:
				case AUTOCOMMIT:
				case AUTOEXTEND_SIZE:
				case AUTO_INCREMENT:
				case AVG_ROW_LENGTH:
				case BEGIN:
				case BINLOG:
				case BIT:
				case BLOCK:
				case BOOL:
				case BOOLEAN:
				case BTREE:
				case CACHE:
				case CASCADED:
				case CHAIN:
				case CHANGED:
				case CHANNEL:
				case CHECKSUM:
				case PAGE_CHECKSUM:
				case CIPHER:
				case CLASS_ORIGIN:
				case CLIENT:
				case CLOSE:
				case CLUSTERING:
				case COALESCE:
				case CODE:
				case COLUMNS:
				case COLUMN_FORMAT:
				case COLUMN_NAME:
				case COMMENT:
				case COMMIT:
				case COMPACT:
				case COMPLETION:
				case COMPRESSED:
				case COMPRESSION:
				case CONCURRENT:
				case CONNECT:
				case CONNECTION:
				case CONSISTENT:
				case CONSTRAINT_CATALOG:
				case CONSTRAINT_SCHEMA:
				case CONSTRAINT_NAME:
				case CONTAINS:
				case CONTEXT:
				case CONTRIBUTORS:
				case COPY:
				case CPU:
				case CYCLE:
				case CURSOR_NAME:
				case DATA:
				case DATAFILE:
				case DEALLOCATE:
				case DEFAULT_AUTH:
				case DEFINER:
				case DELAY_KEY_WRITE:
				case DES_KEY_FILE:
				case DIRECTORY:
				case DISABLE:
				case DISCARD:
				case DISK:
				case DO:
				case DUMPFILE:
				case DUPLICATE:
				case DYNAMIC:
				case ENABLE:
				case ENCRYPTED:
				case ENCRYPTION:
				case ENCRYPTION_KEY_ID:
				case END:
				case ENDS:
				case ENGINE:
				case ENGINES:
				case ERROR:
				case ERRORS:
				case ESCAPE:
				case EVEN:
				case EVENT:
				case EVENTS:
				case EVERY:
				case EXCHANGE:
				case EXCLUSIVE:
				case EXPIRE:
				case EXPORT:
				case EXTENDED:
				case EXTENT_SIZE:
				case FAILED_LOGIN_ATTEMPTS:
				case FAST:
				case FAULTS:
				case FIELDS:
				case FILE_BLOCK_SIZE:
				case FILTER:
				case FIRST:
				case FIXED:
				case FLUSH:
				case FOLLOWS:
				case FOUND:
				case FULL:
				case FUNCTION:
				case GENERAL:
				case GLOBAL:
				case GRANTS:
				case GROUP_REPLICATION:
				case HANDLER:
				case HASH:
				case HELP:
				case HISTORY:
				case HOST:
				case HOSTS:
				case IDENTIFIED:
				case IGNORE_SERVER_IDS:
				case IMPORT:
				case INCREMENT:
				case INDEXES:
				case INITIAL_SIZE:
				case INPLACE:
				case INSERT_METHOD:
				case INSTALL:
				case INSTANCE:
				case INSTANT:
				case INVISIBLE:
				case INVOKER:
				case IO:
				case IO_THREAD:
				case IPC:
				case ISOLATION:
				case ISSUER:
				case JSON:
				case KEY_BLOCK_SIZE:
				case LANGUAGE:
				case LAST:
				case LEAVES:
				case LESS:
				case LEVEL:
				case LIST:
				case LOCAL:
				case LOGFILE:
				case LOGS:
				case MASTER:
				case MASTER_AUTO_POSITION:
				case MASTER_CONNECT_RETRY:
				case MASTER_DELAY:
				case MASTER_HEARTBEAT_PERIOD:
				case MASTER_HOST:
				case MASTER_LOG_FILE:
				case MASTER_LOG_POS:
				case MASTER_PASSWORD:
				case MASTER_PORT:
				case MASTER_RETRY_COUNT:
				case MASTER_SSL:
				case MASTER_SSL_CA:
				case MASTER_SSL_CAPATH:
				case MASTER_SSL_CERT:
				case MASTER_SSL_CIPHER:
				case MASTER_SSL_CRL:
				case MASTER_SSL_CRLPATH:
				case MASTER_SSL_KEY:
				case MASTER_TLS_VERSION:
				case MASTER_USER:
				case MAX_CONNECTIONS_PER_HOUR:
				case MAX_QUERIES_PER_HOUR:
				case MAX_ROWS:
				case MAX_SIZE:
				case MAX_UPDATES_PER_HOUR:
				case MAX_USER_CONNECTIONS:
				case MEDIUM:
				case MEMBER:
				case MERGE:
				case MESSAGE_TEXT:
				case MID:
				case MIGRATE:
				case MIN_ROWS:
				case MODE:
				case MODIFY:
				case MUTEX:
				case MYSQL:
				case MYSQL_ERRNO:
				case NAME:
				case NAMES:
				case NCHAR:
				case NEVER:
				case NEXT:
				case NO:
				case NOCACHE:
				case NOCOPY:
				case NOCYCLE:
				case NOMAXVALUE:
				case NOMINVALUE:
				case NOWAIT:
				case NODEGROUP:
				case NONE:
				case ODBC:
				case OFFLINE:
				case OFFSET:
				case OF:
				case OJ:
				case OLD_PASSWORD:
				case ONE:
				case ONLINE:
				case ONLY:
				case OPEN:
				case OPTIMIZER_COSTS:
				case OPTIONS:
				case OWNER:
				case PACK_KEYS:
				case PAGE:
				case PARSER:
				case PARTIAL:
				case PARTITIONING:
				case PARTITIONS:
				case PASSWORD:
				case PASSWORD_LOCK_TIME:
				case PHASE:
				case PLUGIN:
				case PLUGIN_DIR:
				case PLUGINS:
				case PORT:
				case PRECEDES:
				case PREPARE:
				case PRESERVE:
				case PREV:
				case PROCESSLIST:
				case PROFILE:
				case PROFILES:
				case PROXY:
				case QUERY:
				case QUICK:
				case REBUILD:
				case RECOVER:
				case RECURSIVE:
				case REDO_BUFFER_SIZE:
				case REDUNDANT:
				case RELAY:
				case RELAY_LOG_FILE:
				case RELAY_LOG_POS:
				case RELAYLOG:
				case REMOVE:
				case REORGANIZE:
				case REPAIR:
				case REPLICATE_DO_DB:
				case REPLICATE_DO_TABLE:
				case REPLICATE_IGNORE_DB:
				case REPLICATE_IGNORE_TABLE:
				case REPLICATE_REWRITE_DB:
				case REPLICATE_WILD_DO_TABLE:
				case REPLICATE_WILD_IGNORE_TABLE:
				case REPLICATION:
				case RESET:
				case RESTART:
				case RESUME:
				case RETURNED_SQLSTATE:
				case RETURNING:
				case RETURNS:
				case REUSE:
				case ROLE:
				case ROLLBACK:
				case ROLLUP:
				case ROTATE:
				case ROW:
				case ROWS:
				case ROW_FORMAT:
				case RTREE:
				case SAVEPOINT:
				case SCHEDULE:
				case SECURITY:
				case SEQUENCE:
				case SERVER:
				case SESSION:
				case SHARE:
				case SHARED:
				case SIGNED:
				case SIMPLE:
				case SLAVE:
				case SLOW:
				case SNAPSHOT:
				case SOCKET:
				case SOME:
				case SONAME:
				case SOUNDS:
				case SOURCE:
				case SQL_AFTER_GTIDS:
				case SQL_AFTER_MTS_GAPS:
				case SQL_BEFORE_GTIDS:
				case SQL_BUFFER_RESULT:
				case SQL_CACHE:
				case SQL_NO_CACHE:
				case SQL_THREAD:
				case START:
				case STARTS:
				case STATS_AUTO_RECALC:
				case STATS_PERSISTENT:
				case STATS_SAMPLE_PAGES:
				case STATUS:
				case STOP:
				case STORAGE:
				case STRING:
				case SUBCLASS_ORIGIN:
				case SUBJECT:
				case SUBPARTITION:
				case SUBPARTITIONS:
				case SUSPEND:
				case SWAPS:
				case SWITCHES:
				case TABLE_NAME:
				case TABLESPACE:
				case TABLE_TYPE:
				case TEMPORARY:
				case TEMPTABLE:
				case THAN:
				case TRADITIONAL:
				case TRANSACTION:
				case TRANSACTIONAL:
				case TRIGGERS:
				case TRUNCATE:
				case UNBOUNDED:
				case UNDEFINED:
				case UNDOFILE:
				case UNDO_BUFFER_SIZE:
				case UNINSTALL:
				case UNKNOWN:
				case UNTIL:
				case UPGRADE:
				case USER:
				case USE_FRM:
				case USER_RESOURCES:
				case VALIDATION:
				case VALUE:
				case VARIABLES:
				case VIEW:
				case VIRTUAL:
				case VISIBLE:
				case WAIT:
				case WARNINGS:
				case WITHOUT:
				case WORK:
				case WRAPPER:
				case X509:
				case XA:
				case XML:
				case YES:
				case EUR:
				case USA:
				case JIS:
				case ISO:
				case INTERNAL:
				case QUARTER:
				case MONTH:
				case DAY:
				case HOUR:
				case MINUTE:
				case WEEK:
				case SECOND:
				case MICROSECOND:
				case USER_STATISTICS:
				case CLIENT_STATISTICS:
				case INDEX_STATISTICS:
				case TABLE_STATISTICS:
				case FIREWALL_RULES:
				case ADMIN:
				case APPLICATION_PASSWORD_ADMIN:
				case AUDIT_ADMIN:
				case AUDIT_ABORT_EXEMPT:
				case AUTHENTICATION_POLICY_ADMIN:
				case BACKUP_ADMIN:
				case BINLOG_ADMIN:
				case BINLOG_ENCRYPTION_ADMIN:
				case CLONE_ADMIN:
				case CONNECTION_ADMIN:
				case ENCRYPTION_KEY_ADMIN:
				case EXECUTE:
				case FILE:
				case FIREWALL_ADMIN:
				case FIREWALL_EXEMPT:
				case FIREWALL_USER:
				case FLUSH_OPTIMIZER_COSTS:
				case FLUSH_STATUS:
				case FLUSH_TABLES:
				case FLUSH_USER_RESOURCES:
				case GROUP_REPLICATION_ADMIN:
				case INNODB_REDO_LOG_ARCHIVE:
				case INNODB_REDO_LOG_ENABLE:
				case INVOKE:
				case LAMBDA:
				case NDB_STORED_USER:
				case PASSWORDLESS_USER_ADMIN:
				case PERSIST_RO_VARIABLES_ADMIN:
				case PRIVILEGES:
				case PROCESS:
				case RELOAD:
				case REPLICATION_APPLIER:
				case REPLICATION_SLAVE_ADMIN:
				case RESOURCE_GROUP_ADMIN:
				case RESOURCE_GROUP_USER:
				case ROLE_ADMIN:
				case ROUTINE:
				case S3:
				case SESSION_VARIABLES_ADMIN:
				case SET_USER_ID:
				case SHOW_ROUTINE:
				case SHUTDOWN:
				case SUPER:
				case SYSTEM_VARIABLES_ADMIN:
				case TABLES:
				case TABLE_ENCRYPTION_ADMIN:
				case VERSION_TOKEN_ADMIN:
				case XA_RECOVER_ADMIN:
				case ARMSCII8:
				case ASCII:
				case BIG5:
				case CP1250:
				case CP1251:
				case CP1256:
				case CP1257:
				case CP850:
				case CP852:
				case CP866:
				case CP932:
				case DEC8:
				case EUCJPMS:
				case EUCKR:
				case GB18030:
				case GB2312:
				case GBK:
				case GEOSTD8:
				case GREEK:
				case HEBREW:
				case HP8:
				case KEYBCS2:
				case KOI8R:
				case KOI8U:
				case LATIN1:
				case LATIN2:
				case LATIN5:
				case LATIN7:
				case MACCE:
				case MACROMAN:
				case SJIS:
				case SWE7:
				case TIS620:
				case UCS2:
				case UJIS:
				case UTF16:
				case UTF16LE:
				case UTF32:
				case UTF8:
				case UTF8MB3:
				case UTF8MB4:
				case ARCHIVE:
				case BLACKHOLE:
				case CSV:
				case FEDERATED:
				case INNODB:
				case MEMORY:
				case MRG_MYISAM:
				case MYISAM:
				case NDB:
				case NDBCLUSTER:
				case PERFORMANCE_SCHEMA:
				case TOKUDB:
				case REPEATABLE:
				case COMMITTED:
				case UNCOMMITTED:
				case SERIALIZABLE:
				case GEOMETRYCOLLECTION:
				case GEOMETRY:
				case LINESTRING:
				case MULTILINESTRING:
				case MULTIPOINT:
				case MULTIPOLYGON:
				case POINT:
				case POLYGON:
				case ABS:
				case ACOS:
				case ADDDATE:
				case ADDTIME:
				case AES_DECRYPT:
				case AES_ENCRYPT:
				case AREA:
				case ASBINARY:
				case ASIN:
				case ASTEXT:
				case ASWKB:
				case ASWKT:
				case ASYMMETRIC_DECRYPT:
				case ASYMMETRIC_DERIVE:
				case ASYMMETRIC_ENCRYPT:
				case ASYMMETRIC_SIGN:
				case ASYMMETRIC_VERIFY:
				case ATAN:
				case ATAN2:
				case BENCHMARK:
				case BIN:
				case BIT_COUNT:
				case BIT_LENGTH:
				case BUFFER:
				case CATALOG_NAME:
				case CEIL:
				case CEILING:
				case CENTROID:
				case CHARACTER_LENGTH:
				case CHARSET:
				case CHAR_LENGTH:
				case COERCIBILITY:
				case COLLATION:
				case COMPRESS:
				case CONCAT:
				case CONCAT_WS:
				case CONNECTION_ID:
				case CONV:
				case CONVERT_TZ:
				case COS:
				case COT:
				case CRC32:
				case CREATE_ASYMMETRIC_PRIV_KEY:
				case CREATE_ASYMMETRIC_PUB_KEY:
				case CREATE_DH_PARAMETERS:
				case CREATE_DIGEST:
				case CROSSES:
				case DATEDIFF:
				case DATE_FORMAT:
				case DAYNAME:
				case DAYOFMONTH:
				case DAYOFWEEK:
				case DAYOFYEAR:
				case DECODE:
				case DEGREES:
				case DES_DECRYPT:
				case DES_ENCRYPT:
				case DIMENSION:
				case DISJOINT:
				case ELT:
				case ENCODE:
				case ENCRYPT:
				case ENDPOINT:
				case ENGINE_ATTRIBUTE:
				case ENVELOPE:
				case EQUALS:
				case EXP:
				case EXPORT_SET:
				case EXTERIORRING:
				case EXTRACTVALUE:
				case FIELD:
				case FIND_IN_SET:
				case FLOOR:
				case FORMAT:
				case FOUND_ROWS:
				case FROM_BASE64:
				case FROM_DAYS:
				case FROM_UNIXTIME:
				case GEOMCOLLFROMTEXT:
				case GEOMCOLLFROMWKB:
				case GEOMETRYCOLLECTIONFROMTEXT:
				case GEOMETRYCOLLECTIONFROMWKB:
				case GEOMETRYFROMTEXT:
				case GEOMETRYFROMWKB:
				case GEOMETRYN:
				case GEOMETRYTYPE:
				case GEOMFROMTEXT:
				case GEOMFROMWKB:
				case GET_FORMAT:
				case GET_LOCK:
				case GLENGTH:
				case GREATEST:
				case GTID_SUBSET:
				case GTID_SUBTRACT:
				case HEX:
				case IFNULL:
				case INET6_ATON:
				case INET6_NTOA:
				case INET_ATON:
				case INET_NTOA:
				case INSTR:
				case INTERIORRINGN:
				case INTERSECTS:
				case ISCLOSED:
				case ISEMPTY:
				case ISNULL:
				case ISSIMPLE:
				case IS_FREE_LOCK:
				case IS_IPV4:
				case IS_IPV4_COMPAT:
				case IS_IPV4_MAPPED:
				case IS_IPV6:
				case IS_USED_LOCK:
				case LAST_INSERT_ID:
				case LCASE:
				case LEAST:
				case LENGTH:
				case LINEFROMTEXT:
				case LINEFROMWKB:
				case LINESTRINGFROMTEXT:
				case LINESTRINGFROMWKB:
				case LN:
				case LOAD_FILE:
				case LOCATE:
				case LOG:
				case LOG10:
				case LOG2:
				case LOWER:
				case LPAD:
				case LTRIM:
				case MAKEDATE:
				case MAKETIME:
				case MAKE_SET:
				case MASTER_POS_WAIT:
				case MBRCONTAINS:
				case MBRDISJOINT:
				case MBREQUAL:
				case MBRINTERSECTS:
				case MBROVERLAPS:
				case MBRTOUCHES:
				case MBRWITHIN:
				case MD5:
				case MLINEFROMTEXT:
				case MLINEFROMWKB:
				case MONTHNAME:
				case MPOINTFROMTEXT:
				case MPOINTFROMWKB:
				case MPOLYFROMTEXT:
				case MPOLYFROMWKB:
				case MULTILINESTRINGFROMTEXT:
				case MULTILINESTRINGFROMWKB:
				case MULTIPOINTFROMTEXT:
				case MULTIPOINTFROMWKB:
				case MULTIPOLYGONFROMTEXT:
				case MULTIPOLYGONFROMWKB:
				case NAME_CONST:
				case NULLIF:
				case NUMGEOMETRIES:
				case NUMINTERIORRINGS:
				case NUMPOINTS:
				case OCT:
				case OCTET_LENGTH:
				case ORD:
				case OVERLAPS:
				case PERIOD_ADD:
				case PERIOD_DIFF:
				case PI:
				case POINTFROMTEXT:
				case POINTFROMWKB:
				case POINTN:
				case POLYFROMTEXT:
				case POLYFROMWKB:
				case POLYGONFROMTEXT:
				case POLYGONFROMWKB:
				case POW:
				case POWER:
				case QUOTE:
				case RADIANS:
				case RAND:
				case RANDOM:
				case RANDOM_BYTES:
				case RELEASE_LOCK:
				case REVERSE:
				case ROUND:
				case ROW_COUNT:
				case RPAD:
				case RTRIM:
				case SEC_TO_TIME:
				case SECONDARY_ENGINE_ATTRIBUTE:
				case SENSITIVE_VARIABLES_OBSERVER:
				case SESSION_USER:
				case SHA:
				case SHA1:
				case SHA2:
				case SCHEMA_NAME:
				case SIGN:
				case SIN:
				case SLEEP:
				case SOUNDEX:
				case SQL_THREAD_WAIT_AFTER_GTIDS:
				case SQRT:
				case SRID:
				case STARTPOINT:
				case STRCMP:
				case STR_TO_DATE:
				case ST_AREA:
				case ST_ASBINARY:
				case ST_ASTEXT:
				case ST_ASWKB:
				case ST_ASWKT:
				case ST_BUFFER:
				case ST_CENTROID:
				case ST_CONTAINS:
				case ST_CROSSES:
				case ST_DIFFERENCE:
				case ST_DIMENSION:
				case ST_DISJOINT:
				case ST_DISTANCE:
				case ST_ENDPOINT:
				case ST_ENVELOPE:
				case ST_EQUALS:
				case ST_EXTERIORRING:
				case ST_GEOMCOLLFROMTEXT:
				case ST_GEOMCOLLFROMTXT:
				case ST_GEOMCOLLFROMWKB:
				case ST_GEOMETRYCOLLECTIONFROMTEXT:
				case ST_GEOMETRYCOLLECTIONFROMWKB:
				case ST_GEOMETRYFROMTEXT:
				case ST_GEOMETRYFROMWKB:
				case ST_GEOMETRYN:
				case ST_GEOMETRYTYPE:
				case ST_GEOMFROMTEXT:
				case ST_GEOMFROMWKB:
				case ST_INTERIORRINGN:
				case ST_INTERSECTION:
				case ST_INTERSECTS:
				case ST_ISCLOSED:
				case ST_ISEMPTY:
				case ST_ISSIMPLE:
				case ST_LINEFROMTEXT:
				case ST_LINEFROMWKB:
				case ST_LINESTRINGFROMTEXT:
				case ST_LINESTRINGFROMWKB:
				case ST_NUMGEOMETRIES:
				case ST_NUMINTERIORRING:
				case ST_NUMINTERIORRINGS:
				case ST_NUMPOINTS:
				case ST_OVERLAPS:
				case ST_POINTFROMTEXT:
				case ST_POINTFROMWKB:
				case ST_POINTN:
				case ST_POLYFROMTEXT:
				case ST_POLYFROMWKB:
				case ST_POLYGONFROMTEXT:
				case ST_POLYGONFROMWKB:
				case ST_SRID:
				case ST_STARTPOINT:
				case ST_SYMDIFFERENCE:
				case ST_TOUCHES:
				case ST_UNION:
				case ST_WITHIN:
				case ST_X:
				case ST_Y:
				case SUBDATE:
				case SUBSTRING_INDEX:
				case SUBTIME:
				case SYSTEM_USER:
				case SYSTEM:
				case TAN:
				case TELEMETRY_LOG_ADMIN:
				case TIMEDIFF:
				case TIMESTAMPADD:
				case TIMESTAMPDIFF:
				case TIME_FORMAT:
				case TIME_TO_SEC:
				case TOUCHES:
				case TO_BASE64:
				case TO_DAYS:
				case TO_SECONDS:
				case TP_CONNECTION_ADMIN:
				case UCASE:
				case UNCOMPRESS:
				case UNCOMPRESSED_LENGTH:
				case UNHEX:
				case UNIX_TIMESTAMP:
				case UPDATEXML:
				case UPPER:
				case UUID:
				case UUID_SHORT:
				case VALIDATE_PASSWORD_STRENGTH:
				case VERSION:
				case VERSIONING:
				case WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS:
				case WEEKDAY:
				case WEEKOFYEAR:
				case WEIGHT_STRING:
				case WITHIN:
				case YEARWEEK:
				case Y_FUNCTION:
				case X_FUNCTION:
				case VIA:
				case LASTVAL:
				case NEXTVAL:
				case SETVAL:
				case PREVIOUS:
				case PERSISTENT:
				case BINLOG_MONITOR:
				case BINLOG_REPLAY:
				case FEDERATED_ADMIN:
				case READ_ONLY_ADMIN:
				case REPLICA:
				case REPLICATION_MASTER_ADMIN:
				case MONITOR:
				case READ_ONLY:
				case REPLAY:
				case MOD:
				case CHARSET_REVERSE_QOUTE_STRING:
				case STRING_LITERAL:
				case ID:
					{
					setState(3140);
					uidList();
					}
					break;
				case ALL:
					{
					setState(3141);
					match(ALL);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(3144);
				match(TABLESPACE);
				}
				break;
			case IMPORT:
				_localctx = new AlterByImportPartitionContext(_localctx);
				enterOuterAlt(_localctx, 4);
				{
				setState(3145);
				match(IMPORT);
				setState(3146);
				match(PARTITION);
				setState(3149);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case ARRAY:
				case ATTRIBUTE:
				case BUCKETS:
				case CONDITION:
				case CURRENT:
				case CURRENT_ROLE:
				case CURRENT_USER:
				case DATABASE:
				case DEFAULT:
				case DIAGNOSTICS:
				case EMPTY:
				case ENFORCED:
				case EXCEPT:
				case GROUP:
				case GROUP_REPLICATION_STREAM:
				case IF:
				case IGNORED:
				case INSERT:
				case LATERAL:
				case LEFT:
				case LOCKED:
				case MAXVALUE:
				case MINVALUE:
				case NUMBER:
				case OPTIONAL:
				case ORDER:
				case PRIMARY:
				case REPEAT:
				case REPLACE:
				case RIGHT:
				case SCHEMA:
				case SKIP_:
				case SKIP_QUERY_REWRITE:
				case STACKED:
				case STATEMENT:
				case DATE:
				case TIME:
				case TIMESTAMP:
				case DATETIME:
				case YEAR:
				case NATIONAL:
				case BINARY:
				case TEXT:
				case ENUM:
				case SERIAL:
				case JSON_ARRAY:
				case JSON_ARRAYAGG:
				case JSON_ARRAY_APPEND:
				case JSON_ARRAY_INSERT:
				case JSON_CONTAINS:
				case JSON_CONTAINS_PATH:
				case JSON_DEPTH:
				case JSON_EXTRACT:
				case JSON_INSERT:
				case JSON_KEYS:
				case JSON_LENGTH:
				case JSON_MERGE:
				case JSON_MERGE_PATCH:
				case JSON_MERGE_PRESERVE:
				case JSON_OBJECT:
				case JSON_OBJECTAGG:
				case JSON_OVERLAPS:
				case JSON_PRETTY:
				case JSON_QUOTE:
				case JSON_REMOVE:
				case JSON_REPLACE:
				case JSON_SCHEMA_VALID:
				case JSON_SCHEMA_VALIDATION_REPORT:
				case JSON_SEARCH:
				case JSON_SET:
				case JSON_STORAGE_FREE:
				case JSON_STORAGE_SIZE:
				case JSON_TABLE:
				case JSON_TYPE:
				case JSON_UNQUOTE:
				case JSON_VALID:
				case JSON_VALUE:
				case NESTED:
				case ORDINALITY:
				case PATH:
				case AVG:
				case BIT_AND:
				case BIT_OR:
				case BIT_XOR:
				case COUNT:
				case CUME_DIST:
				case DENSE_RANK:
				case FIRST_VALUE:
				case GROUP_CONCAT:
				case LAG:
				case LAST_VALUE:
				case LEAD:
				case MAX:
				case MIN:
				case NTILE:
				case NTH_VALUE:
				case PERCENT_RANK:
				case RANK:
				case ROW_NUMBER:
				case STD:
				case STDDEV:
				case STDDEV_POP:
				case STDDEV_SAMP:
				case SUM:
				case VAR_POP:
				case VAR_SAMP:
				case VARIANCE:
				case CURRENT_DATE:
				case CURRENT_TIME:
				case CURRENT_TIMESTAMP:
				case LOCALTIME:
				case CURDATE:
				case CURTIME:
				case DATE_ADD:
				case DATE_SUB:
				case LOCALTIMESTAMP:
				case NOW:
				case POSITION:
				case SUBSTR:
				case SUBSTRING:
				case SYSDATE:
				case TRIM:
				case UTC_DATE:
				case UTC_TIME:
				case UTC_TIMESTAMP:
				case ACCOUNT:
				case ACTION:
				case AFTER:
				case AGGREGATE:
				case ALGORITHM:
				case ANY:
				case AT:
				case AUTHORS:
				case AUTOCOMMIT:
				case AUTOEXTEND_SIZE:
				case AUTO_INCREMENT:
				case AVG_ROW_LENGTH:
				case BEGIN:
				case BINLOG:
				case BIT:
				case BLOCK:
				case BOOL:
				case BOOLEAN:
				case BTREE:
				case CACHE:
				case CASCADED:
				case CHAIN:
				case CHANGED:
				case CHANNEL:
				case CHECKSUM:
				case PAGE_CHECKSUM:
				case CIPHER:
				case CLASS_ORIGIN:
				case CLIENT:
				case CLOSE:
				case CLUSTERING:
				case COALESCE:
				case CODE:
				case COLUMNS:
				case COLUMN_FORMAT:
				case COLUMN_NAME:
				case COMMENT:
				case COMMIT:
				case COMPACT:
				case COMPLETION:
				case COMPRESSED:
				case COMPRESSION:
				case CONCURRENT:
				case CONNECT:
				case CONNECTION:
				case CONSISTENT:
				case CONSTRAINT_CATALOG:
				case CONSTRAINT_SCHEMA:
				case CONSTRAINT_NAME:
				case CONTAINS:
				case CONTEXT:
				case CONTRIBUTORS:
				case COPY:
				case CPU:
				case CYCLE:
				case CURSOR_NAME:
				case DATA:
				case DATAFILE:
				case DEALLOCATE:
				case DEFAULT_AUTH:
				case DEFINER:
				case DELAY_KEY_WRITE:
				case DES_KEY_FILE:
				case DIRECTORY:
				case DISABLE:
				case DISCARD:
				case DISK:
				case DO:
				case DUMPFILE:
				case DUPLICATE:
				case DYNAMIC:
				case ENABLE:
				case ENCRYPTED:
				case ENCRYPTION:
				case ENCRYPTION_KEY_ID:
				case END:
				case ENDS:
				case ENGINE:
				case ENGINES:
				case ERROR:
				case ERRORS:
				case ESCAPE:
				case EVEN:
				case EVENT:
				case EVENTS:
				case EVERY:
				case EXCHANGE:
				case EXCLUSIVE:
				case EXPIRE:
				case EXPORT:
				case EXTENDED:
				case EXTENT_SIZE:
				case FAILED_LOGIN_ATTEMPTS:
				case FAST:
				case FAULTS:
				case FIELDS:
				case FILE_BLOCK_SIZE:
				case FILTER:
				case FIRST:
				case FIXED:
				case FLUSH:
				case FOLLOWS:
				case FOUND:
				case FULL:
				case FUNCTION:
				case GENERAL:
				case GLOBAL:
				case GRANTS:
				case GROUP_REPLICATION:
				case HANDLER:
				case HASH:
				case HELP:
				case HISTORY:
				case HOST:
				case HOSTS:
				case IDENTIFIED:
				case IGNORE_SERVER_IDS:
				case IMPORT:
				case INCREMENT:
				case INDEXES:
				case INITIAL_SIZE:
				case INPLACE:
				case INSERT_METHOD:
				case INSTALL:
				case INSTANCE:
				case INSTANT:
				case INVISIBLE:
				case INVOKER:
				case IO:
				case IO_THREAD:
				case IPC:
				case ISOLATION:
				case ISSUER:
				case JSON:
				case KEY_BLOCK_SIZE:
				case LANGUAGE:
				case LAST:
				case LEAVES:
				case LESS:
				case LEVEL:
				case LIST:
				case LOCAL:
				case LOGFILE:
				case LOGS:
				case MASTER:
				case MASTER_AUTO_POSITION:
				case MASTER_CONNECT_RETRY:
				case MASTER_DELAY:
				case MASTER_HEARTBEAT_PERIOD:
				case MASTER_HOST:
				case MASTER_LOG_FILE:
				case MASTER_LOG_POS:
				case MASTER_PASSWORD:
				case MASTER_PORT:
				case MASTER_RETRY_COUNT:
				case MASTER_SSL:
				case MASTER_SSL_CA:
				case MASTER_SSL_CAPATH:
				case MASTER_SSL_CERT:
				case MASTER_SSL_CIPHER:
				case MASTER_SSL_CRL:
				case MASTER_SSL_CRLPATH:
				case MASTER_SSL_KEY:
				case MASTER_TLS_VERSION:
				case MASTER_USER:
				case MAX_CONNECTIONS_PER_HOUR:
				case MAX_QUERIES_PER_HOUR:
				case MAX_ROWS:
				case MAX_SIZE:
				case MAX_UPDATES_PER_HOUR:
				case MAX_USER_CONNECTIONS:
				case MEDIUM:
				case MEMBER:
				case MERGE:
				case MESSAGE_TEXT:
				case MID:
				case MIGRATE:
				case MIN_ROWS:
				case MODE:
				case MODIFY:
				case MUTEX:
				case MYSQL:
				case MYSQL_ERRNO:
				case NAME:
				case NAMES:
				case NCHAR:
				case NEVER:
				case NEXT:
				case NO:
				case NOCACHE:
				case NOCOPY:
				case NOCYCLE:
				case NOMAXVALUE:
				case NOMINVALUE:
				case NOWAIT:
				case NODEGROUP:
				case NONE:
				case ODBC:
				case OFFLINE:
				case OFFSET:
				case OF:
				case OJ:
				case OLD_PASSWORD:
				case ONE:
				case ONLINE:
				case ONLY:
				case OPEN:
				case OPTIMIZER_COSTS:
				case OPTIONS:
				case OWNER:
				case PACK_KEYS:
				case PAGE:
				case PARSER:
				case PARTIAL:
				case PARTITIONING:
				case PARTITIONS:
				case PASSWORD:
				case PASSWORD_LOCK_TIME:
				case PHASE:
				case PLUGIN:
				case PLUGIN_DIR:
				case PLUGINS:
				case PORT:
				case PRECEDES:
				case PREPARE:
				case PRESERVE:
				case PREV:
				case PROCESSLIST:
				case PROFILE:
				case PROFILES:
				case PROXY:
				case QUERY:
				case QUICK:
				case REBUILD:
				case RECOVER:
				case RECURSIVE:
				case REDO_BUFFER_SIZE:
				case REDUNDANT:
				case RELAY:
				case RELAY_LOG_FILE:
				case RELAY_LOG_POS:
				case RELAYLOG:
				case REMOVE:
				case REORGANIZE:
				case REPAIR:
				case REPLICATE_DO_DB:
				case REPLICATE_DO_TABLE:
				case REPLICATE_IGNORE_DB:
				case REPLICATE_IGNORE_TABLE:
				case REPLICATE_REWRITE_DB:
				case REPLICATE_WILD_DO_TABLE:
				case REPLICATE_WILD_IGNORE_TABLE:
				case REPLICATION:
				case RESET:
				case RESTART:
				case RESUME:
				case RETURNED_SQLSTATE:
				case RETURNING:
				case RETURNS:
				case REUSE:
				case ROLE:
				case ROLLBACK:
				case ROLLUP:
				case ROTATE:
				case ROW:
				case ROWS:
				case ROW_FORMAT:
				case RTREE:
				case SAVEPOINT:
				case SCHEDULE:
				case SECURITY:
				case SEQUENCE:
				case SERVER:
				case SESSION:
				case SHARE:
				case SHARED:
				case SIGNED:
				case SIMPLE:
				case SLAVE:
				case SLOW:
				case SNAPSHOT:
				case SOCKET:
				case SOME:
				case SONAME:
				case SOUNDS:
				case SOURCE:
				case SQL_AFTER_GTIDS:
				case SQL_AFTER_MTS_GAPS:
				case SQL_BEFORE_GTIDS:
				case SQL_BUFFER_RESULT:
				case SQL_CACHE:
				case SQL_NO_CACHE:
				case SQL_THREAD:
				case START:
				case STARTS:
				case STATS_AUTO_RECALC:
				case STATS_PERSISTENT:
				case STATS_SAMPLE_PAGES:
				case STATUS:
				case STOP:
				case STORAGE:
				case STRING:
				case SUBCLASS_ORIGIN:
				case SUBJECT:
				case SUBPARTITION:
				case SUBPARTITIONS:
				case SUSPEND:
				case SWAPS:
				case SWITCHES:
				case TABLE_NAME:
				case TABLESPACE:
				case TABLE_TYPE:
				case TEMPORARY:
				case TEMPTABLE:
				case THAN:
				case TRADITIONAL:
				case TRANSACTION:
				case TRANSACTIONAL:
				case TRIGGERS:
				case TRUNCATE:
				case UNBOUNDED:
				case UNDEFINED:
				case UNDOFILE:
				case UNDO_BUFFER_SIZE:
				case UNINSTALL:
				case UNKNOWN:
				case UNTIL:
				case UPGRADE:
				case USER:
				case USE_FRM:
				case USER_RESOURCES:
				case VALIDATION:
				case VALUE:
				case VARIABLES:
				case VIEW:
				case VIRTUAL:
				case VISIBLE:
				case WAIT:
				case WARNINGS:
				case WITHOUT:
				case WORK:
				case WRAPPER:
				case X509:
				case XA:
				case XML:
				case YES:
				case EUR:
				case USA:
				case JIS:
				case ISO:
				case INTERNAL:
				case QUARTER:
				case MONTH:
				case DAY:
				case HOUR:
				case MINUTE:
				case WEEK:
				case SECOND:
				case MICROSECOND:
				case USER_STATISTICS:
				case CLIENT_STATISTICS:
				case INDEX_STATISTICS:
				case TABLE_STATISTICS:
				case FIREWALL_RULES:
				case ADMIN:
				case APPLICATION_PASSWORD_ADMIN:
				case AUDIT_ADMIN:
				case AUDIT_ABORT_EXEMPT:
				case AUTHENTICATION_POLICY_ADMIN:
				case BACKUP_ADMIN:
				case BINLOG_ADMIN:
				case BINLOG_ENCRYPTION_ADMIN:
				case CLONE_ADMIN:
				case CONNECTION_ADMIN:
				case ENCRYPTION_KEY_ADMIN:
				case EXECUTE:
				case FILE:
				case FIREWALL_ADMIN:
				case FIREWALL_EXEMPT:
				case FIREWALL_USER:
				case FLUSH_OPTIMIZER_COSTS:
				case FLUSH_STATUS:
				case FLUSH_TABLES:
				case FLUSH_USER_RESOURCES:
				case GROUP_REPLICATION_ADMIN:
				case INNODB_REDO_LOG_ARCHIVE:
				case INNODB_REDO_LOG_ENABLE:
				case INVOKE:
				case LAMBDA:
				case NDB_STORED_USER:
				case PASSWORDLESS_USER_ADMIN:
				case PERSIST_RO_VARIABLES_ADMIN:
				case PRIVILEGES:
				case PROCESS:
				case RELOAD:
				case REPLICATION_APPLIER:
				case REPLICATION_SLAVE_ADMIN:
				case RESOURCE_GROUP_ADMIN:
				case RESOURCE_GROUP_USER:
				case ROLE_ADMIN:
				case ROUTINE:
				case S3:
				case SESSION_VARIABLES_ADMIN:
				case SET_USER_ID:
				case SHOW_ROUTINE:
				case SHUTDOWN:
				case SUPER:
				case SYSTEM_VARIABLES_ADMIN:
				case TABLES:
				case TABLE_ENCRYPTION_ADMIN:
				case VERSION_TOKEN_ADMIN:
				case XA_RECOVER_ADMIN:
				case ARMSCII8:
				case ASCII:
				case BIG5:
				case CP1250:
				case CP1251:
				case CP1256:
				case CP1257:
				case CP850:
				case CP852:
				case CP866:
				case CP932:
				case DEC8:
				case EUCJPMS:
				case EUCKR:
				case GB18030:
				case GB2312:
				case GBK:
				case GEOSTD8:
				case GREEK:
				case HEBREW:
				case HP8:
				case KEYBCS2:
				case KOI8R:
				case KOI8U:
				case LATIN1:
				case LATIN2:
				case LATIN5:
				case LATIN7:
				case MACCE:
				case MACROMAN:
				case SJIS:
				case SWE7:
				case TIS620:
				case UCS2:
				case UJIS:
				case UTF16:
				case UTF16LE:
				case UTF32:
				case UTF8:
				case UTF8MB3:
				case UTF8MB4:
				case ARCHIVE:
				case BLACKHOLE:
				case CSV:
				case FEDERATED:
				case INNODB:
				case MEMORY:
				case MRG_MYISAM:
				case MYISAM:
				case NDB:
				case NDBCLUSTER:
				case PERFORMANCE_SCHEMA:
				case TOKUDB:
				case REPEATABLE:
				case COMMITTED:
				case UNCOMMITTED:
				case SERIALIZABLE:
				case GEOMETRYCOLLECTION:
				case GEOMETRY:
				case LINESTRING:
				case MULTILINESTRING:
				case MULTIPOINT:
				case MULTIPOLYGON:
				case POINT:
				case POLYGON:
				case ABS:
				case ACOS:
				case ADDDATE:
				case ADDTIME:
				case AES_DECRYPT:
				case AES_ENCRYPT:
				case AREA:
				case ASBINARY:
				case ASIN:
				case ASTEXT:
				case ASWKB:
				case ASWKT:
				case ASYMMETRIC_DECRYPT:
				case ASYMMETRIC_DERIVE:
				case ASYMMETRIC_ENCRYPT:
				case ASYMMETRIC_SIGN:
				case ASYMMETRIC_VERIFY:
				case ATAN:
				case ATAN2:
				case BENCHMARK:
				case BIN:
				case BIT_COUNT:
				case BIT_LENGTH:
				case BUFFER:
				case CATALOG_NAME:
				case CEIL:
				case CEILING:
				case CENTROID:
				case CHARACTER_LENGTH:
				case CHARSET:
				case CHAR_LENGTH:
				case COERCIBILITY:
				case COLLATION:
				case COMPRESS:
				case CONCAT:
				case CONCAT_WS:
				case CONNECTION_ID:
				case CONV:
				case CONVERT_TZ:
				case COS:
				case COT:
				case CRC32:
				case CREATE_ASYMMETRIC_PRIV_KEY:
				case CREATE_ASYMMETRIC_PUB_KEY:
				case CREATE_DH_PARAMETERS:
				case CREATE_DIGEST:
				case CROSSES:
				case DATEDIFF:
				case DATE_FORMAT:
				case DAYNAME:
				case DAYOFMONTH:
				case DAYOFWEEK:
				case DAYOFYEAR:
				case DECODE:
				case DEGREES:
				case DES_DECRYPT:
				case DES_ENCRYPT:
				case DIMENSION:
				case DISJOINT:
				case ELT:
				case ENCODE:
				case ENCRYPT:
				case ENDPOINT:
				case ENGINE_ATTRIBUTE:
				case ENVELOPE:
				case EQUALS:
				case EXP:
				case EXPORT_SET:
				case EXTERIORRING:
				case EXTRACTVALUE:
				case FIELD:
				case FIND_IN_SET:
				case FLOOR:
				case FORMAT:
				case FOUND_ROWS:
				case FROM_BASE64:
				case FROM_DAYS:
				case FROM_UNIXTIME:
				case GEOMCOLLFROMTEXT:
				case GEOMCOLLFROMWKB:
				case GEOMETRYCOLLECTIONFROMTEXT:
				case GEOMETRYCOLLECTIONFROMWKB:
				case GEOMETRYFROMTEXT:
				case GEOMETRYFROMWKB:
				case GEOMETRYN:
				case GEOMETRYTYPE:
				case GEOMFROMTEXT:
				case GEOMFROMWKB:
				case GET_FORMAT:
				case GET_LOCK:
				case GLENGTH:
				case GREATEST:
				case GTID_SUBSET:
				case GTID_SUBTRACT:
				case HEX:
				case IFNULL:
				case INET6_ATON:
				case INET6_NTOA:
				case INET_ATON:
				case INET_NTOA:
				case INSTR:
				case INTERIORRINGN:
				case INTERSECTS:
				case ISCLOSED:
				case ISEMPTY:
				case ISNULL:
				case ISSIMPLE:
				case IS_FREE_LOCK:
				case IS_IPV4:
				case IS_IPV4_COMPAT:
				case IS_IPV4_MAPPED:
				case IS_IPV6:
				case IS_USED_LOCK:
				case LAST_INSERT_ID:
				case LCASE:
				case LEAST:
				case LENGTH:
				case LINEFROMTEXT:
				case LINEFROMWKB:
				case LINESTRINGFROMTEXT:
				case LINESTRINGFROMWKB:
				case LN:
				case LOAD_FILE:
				case LOCATE:
				case LOG:
				case LOG10:
				case LOG2:
				case LOWER:
				case LPAD:
				case LTRIM:
				case MAKEDATE:
				case MAKETIME:
				case MAKE_SET:
				case MASTER_POS_WAIT:
				case MBRCONTAINS:
				case MBRDISJOINT:
				case MBREQUAL:
				case MBRINTERSECTS:
				case MBROVERLAPS:
				case MBRTOUCHES:
				case MBRWITHIN:
				case MD5:
				case MLINEFROMTEXT:
				case MLINEFROMWKB:
				case MONTHNAME:
				case MPOINTFROMTEXT:
				case MPOINTFROMWKB:
				case MPOLYFROMTEXT:
				case MPOLYFROMWKB:
				case MULTILINESTRINGFROMTEXT:
				case MULTILINESTRINGFROMWKB:
				case MULTIPOINTFROMTEXT:
				case MULTIPOINTFROMWKB:
				case MULTIPOLYGONFROMTEXT:
				case MULTIPOLYGONFROMWKB:
				case NAME_CONST:
				case NULLIF:
				case NUMGEOMETRIES:
				case NUMINTERIORRINGS:
				case NUMPOINTS:
				case OCT:
				case OCTET_LENGTH:
				case ORD:
				case OVERLAPS:
				case PERIOD_ADD:
				case PERIOD_DIFF:
				case PI:
				case POINTFROMTEXT:
				case POINTFROMWKB:
				case POINTN:
				case POLYFROMTEXT:
				case POLYFROMWKB:
				case POLYGONFROMTEXT:
				case POLYGONFROMWKB:
				case POW:
				case POWER:
				case QUOTE:
				case RADIANS:
				case RAND:
				case RANDOM:
				case RANDOM_BYTES:
				case RELEASE_LOCK:
				case REVERSE:
				case ROUND:
				case ROW_COUNT:
				case RPAD:
				case RTRIM:
				case SEC_TO_TIME:
				case SECONDARY_ENGINE_ATTRIBUTE:
				case SENSITIVE_VARIABLES_OBSERVER:
				case SESSION_USER:
				case SHA:
				case SHA1:
				case SHA2:
				case SCHEMA_NAME:
				case SIGN:
				case SIN:
				case SLEEP:
				case SOUNDEX:
				case SQL_THREAD_WAIT_AFTER_GTIDS:
				case SQRT:
				case SRID:
				case STARTPOINT:
				case STRCMP:
				case STR_TO_DATE:
				case ST_AREA:
				case ST_ASBINARY:
				case ST_ASTEXT:
				case ST_ASWKB:
				case ST_ASWKT:
				case ST_BUFFER:
				case ST_CENTROID:
				case ST_CONTAINS:
				case ST_CROSSES:
				case ST_DIFFERENCE:
				case ST_DIMENSION:
				case ST_DISJOINT:
				case ST_DISTANCE:
				case ST_ENDPOINT:
				case ST_ENVELOPE:
				case ST_EQUALS:
				case ST_EXTERIORRING:
				case ST_GEOMCOLLFROMTEXT:
				case ST_GEOMCOLLFROMTXT:
				case ST_GEOMCOLLFROMWKB:
				case ST_GEOMETRYCOLLECTIONFROMTEXT:
				case ST_GEOMETRYCOLLECTIONFROMWKB:
				case ST_GEOMETRYFROMTEXT:
				case ST_GEOMETRYFROMWKB:
				case ST_GEOMETRYN:
				case ST_GEOMETRYTYPE:
				case ST_GEOMFROMTEXT:
				case ST_GEOMFROMWKB:
				case ST_INTERIORRINGN:
				case ST_INTERSECTION:
				case ST_INTERSECTS:
				case ST_ISCLOSED:
				case ST_ISEMPTY:
				case ST_ISSIMPLE:
				case ST_LINEFROMTEXT:
				case ST_LINEFROMWKB:
				case ST_LINESTRINGFROMTEXT:
				case ST_LINESTRINGFROMWKB:
				case ST_NUMGEOMETRIES:
				case ST_NUMINTERIORRING:
				case ST_NUMINTERIORRINGS:
				case ST_NUMPOINTS:
				case ST_OVERLAPS:
				case ST_POINTFROMTEXT:
				case ST_POINTFROMWKB:
				case ST_POINTN:
				case ST_POLYFROMTEXT:
				case ST_POLYFROMWKB:
				case ST_POLYGONFROMTEXT:
				case ST_POLYGONFROMWKB:
				case ST_SRID:
				case ST_STARTPOINT:
				case ST_SYMDIFFERENCE:
				case ST_TOUCHES:
				case ST_UNION:
				case ST_WITHIN:
				case ST_X:
				case ST_Y:
				case SUBDATE:
				case SUBSTRING_INDEX:
				case SUBTIME:
				case SYSTEM_USER:
				case SYSTEM:
				case TAN:
				case TELEMETRY_LOG_ADMIN:
				case TIMEDIFF:
				case TIMESTAMPADD:
				case TIMESTAMPDIFF:
				case TIME_FORMAT:
				case TIME_TO_SEC:
				case TOUCHES:
				case TO_BASE64:
				case TO_DAYS:
				case TO_SECONDS:
				case TP_CONNECTION_ADMIN:
				case UCASE:
				case UNCOMPRESS:
				case UNCOMPRESSED_LENGTH:
				case UNHEX:
				case UNIX_TIMESTAMP:
				case UPDATEXML:
				case UPPER:
				case UUID:
				case UUID_SHORT:
				case VALIDATE_PASSWORD_STRENGTH:
				case VERSION:
				case VERSIONING:
				case WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS:
				case WEEKDAY:
				case WEEKOFYEAR:
				case WEIGHT_STRING:
				case WITHIN:
				case YEARWEEK:
				case Y_FUNCTION:
				case X_FUNCTION:
				case VIA:
				case LASTVAL:
				case NEXTVAL:
				case SETVAL:
				case PREVIOUS:
				case PERSISTENT:
				case BINLOG_MONITOR:
				case BINLOG_REPLAY:
				case FEDERATED_ADMIN:
				case READ_ONLY_ADMIN:
				case REPLICA:
				case REPLICATION_MASTER_ADMIN:
				case MONITOR:
				case READ_ONLY:
				case REPLAY:
				case MOD:
				case CHARSET_REVERSE_QOUTE_STRING:
				case STRING_LITERAL:
				case ID:
					{
					setState(3147);
					uidList();
					}
					break;
				case ALL:
					{
					setState(3148);
					match(ALL);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(3151);
				match(TABLESPACE);
				}
				break;
			case TRUNCATE:
				_localctx = new AlterByTruncatePartitionContext(_localctx);
				enterOuterAlt(_localctx, 5);
				{
				setState(3152);
				match(TRUNCATE);
				setState(3153);
				match(PARTITION);
				setState(3156);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case ARRAY:
				case ATTRIBUTE:
				case BUCKETS:
				case CONDITION:
				case CURRENT:
				case CURRENT_ROLE:
				case CURRENT_USER:
				case DATABASE:
				case DEFAULT:
				case DIAGNOSTICS:
				case EMPTY:
				case ENFORCED:
				case EXCEPT:
				case GROUP:
				case GROUP_REPLICATION_STREAM:
				case IF:
				case IGNORED:
				case INSERT:
				case LATERAL:
				case LEFT:
				case LOCKED:
				case MAXVALUE:
				case MINVALUE:
				case NUMBER:
				case OPTIONAL:
				case ORDER:
				case PRIMARY:
				case REPEAT:
				case REPLACE:
				case RIGHT:
				case SCHEMA:
				case SKIP_:
				case SKIP_QUERY_REWRITE:
				case STACKED:
				case STATEMENT:
				case DATE:
				case TIME:
				case TIMESTAMP:
				case DATETIME:
				case YEAR:
				case NATIONAL:
				case BINARY:
				case TEXT:
				case ENUM:
				case SERIAL:
				case JSON_ARRAY:
				case JSON_ARRAYAGG:
				case JSON_ARRAY_APPEND:
				case JSON_ARRAY_INSERT:
				case JSON_CONTAINS:
				case JSON_CONTAINS_PATH:
				case JSON_DEPTH:
				case JSON_EXTRACT:
				case JSON_INSERT:
				case JSON_KEYS:
				case JSON_LENGTH:
				case JSON_MERGE:
				case JSON_MERGE_PATCH:
				case JSON_MERGE_PRESERVE:
				case JSON_OBJECT:
				case JSON_OBJECTAGG:
				case JSON_OVERLAPS:
				case JSON_PRETTY:
				case JSON_QUOTE:
				case JSON_REMOVE:
				case JSON_REPLACE:
				case JSON_SCHEMA_VALID:
				case JSON_SCHEMA_VALIDATION_REPORT:
				case JSON_SEARCH:
				case JSON_SET:
				case JSON_STORAGE_FREE:
				case JSON_STORAGE_SIZE:
				case JSON_TABLE:
				case JSON_TYPE:
				case JSON_UNQUOTE:
				case JSON_VALID:
				case JSON_VALUE:
				case NESTED:
				case ORDINALITY:
				case PATH:
				case AVG:
				case BIT_AND:
				case BIT_OR:
				case BIT_XOR:
				case COUNT:
				case CUME_DIST:
				case DENSE_RANK:
				case FIRST_VALUE:
				case GROUP_CONCAT:
				case LAG:
				case LAST_VALUE:
				case LEAD:
				case MAX:
				case MIN:
				case NTILE:
				case NTH_VALUE:
				case PERCENT_RANK:
				case RANK:
				case ROW_NUMBER:
				case STD:
				case STDDEV:
				case STDDEV_POP:
				case STDDEV_SAMP:
				case SUM:
				case VAR_POP:
				case VAR_SAMP:
				case VARIANCE:
				case CURRENT_DATE:
				case CURRENT_TIME:
				case CURRENT_TIMESTAMP:
				case LOCALTIME:
				case CURDATE:
				case CURTIME:
				case DATE_ADD:
				case DATE_SUB:
				case LOCALTIMESTAMP:
				case NOW:
				case POSITION:
				case SUBSTR:
				case SUBSTRING:
				case SYSDATE:
				case TRIM:
				case UTC_DATE:
				case UTC_TIME:
				case UTC_TIMESTAMP:
				case ACCOUNT:
				case ACTION:
				case AFTER:
				case AGGREGATE:
				case ALGORITHM:
				case ANY:
				case AT:
				case AUTHORS:
				case AUTOCOMMIT:
				case AUTOEXTEND_SIZE:
				case AUTO_INCREMENT:
				case AVG_ROW_LENGTH:
				case BEGIN:
				case BINLOG:
				case BIT:
				case BLOCK:
				case BOOL:
				case BOOLEAN:
				case BTREE:
				case CACHE:
				case CASCADED:
				case CHAIN:
				case CHANGED:
				case CHANNEL:
				case CHECKSUM:
				case PAGE_CHECKSUM:
				case CIPHER:
				case CLASS_ORIGIN:
				case CLIENT:
				case CLOSE:
				case CLUSTERING:
				case COALESCE:
				case CODE:
				case COLUMNS:
				case COLUMN_FORMAT:
				case COLUMN_NAME:
				case COMMENT:
				case COMMIT:
				case COMPACT:
				case COMPLETION:
				case COMPRESSED:
				case COMPRESSION:
				case CONCURRENT:
				case CONNECT:
				case CONNECTION:
				case CONSISTENT:
				case CONSTRAINT_CATALOG:
				case CONSTRAINT_SCHEMA:
				case CONSTRAINT_NAME:
				case CONTAINS:
				case CONTEXT:
				case CONTRIBUTORS:
				case COPY:
				case CPU:
				case CYCLE:
				case CURSOR_NAME:
				case DATA:
				case DATAFILE:
				case DEALLOCATE:
				case DEFAULT_AUTH:
				case DEFINER:
				case DELAY_KEY_WRITE:
				case DES_KEY_FILE:
				case DIRECTORY:
				case DISABLE:
				case DISCARD:
				case DISK:
				case DO:
				case DUMPFILE:
				case DUPLICATE:
				case DYNAMIC:
				case ENABLE:
				case ENCRYPTED:
				case ENCRYPTION:
				case ENCRYPTION_KEY_ID:
				case END:
				case ENDS:
				case ENGINE:
				case ENGINES:
				case ERROR:
				case ERRORS:
				case ESCAPE:
				case EVEN:
				case EVENT:
				case EVENTS:
				case EVERY:
				case EXCHANGE:
				case EXCLUSIVE:
				case EXPIRE:
				case EXPORT:
				case EXTENDED:
				case EXTENT_SIZE:
				case FAILED_LOGIN_ATTEMPTS:
				case FAST:
				case FAULTS:
				case FIELDS:
				case FILE_BLOCK_SIZE:
				case FILTER:
				case FIRST:
				case FIXED:
				case FLUSH:
				case FOLLOWS:
				case FOUND:
				case FULL:
				case FUNCTION:
				case GENERAL:
				case GLOBAL:
				case GRANTS:
				case GROUP_REPLICATION:
				case HANDLER:
				case HASH:
				case HELP:
				case HISTORY:
				case HOST:
				case HOSTS:
				case IDENTIFIED:
				case IGNORE_SERVER_IDS:
				case IMPORT:
				case INCREMENT:
				case INDEXES:
				case INITIAL_SIZE:
				case INPLACE:
				case INSERT_METHOD:
				case INSTALL:
				case INSTANCE:
				case INSTANT:
				case INVISIBLE:
				case INVOKER:
				case IO:
				case IO_THREAD:
				case IPC:
				case ISOLATION:
				case ISSUER:
				case JSON:
				case KEY_BLOCK_SIZE:
				case LANGUAGE:
				case LAST:
				case LEAVES:
				case LESS:
				case LEVEL:
				case LIST:
				case LOCAL:
				case LOGFILE:
				case LOGS:
				case MASTER:
				case MASTER_AUTO_POSITION:
				case MASTER_CONNECT_RETRY:
				case MASTER_DELAY:
				case MASTER_HEARTBEAT_PERIOD:
				case MASTER_HOST:
				case MASTER_LOG_FILE:
				case MASTER_LOG_POS:
				case MASTER_PASSWORD:
				case MASTER_PORT:
				case MASTER_RETRY_COUNT:
				case MASTER_SSL:
				case MASTER_SSL_CA:
				case MASTER_SSL_CAPATH:
				case MASTER_SSL_CERT:
				case MASTER_SSL_CIPHER:
				case MASTER_SSL_CRL:
				case MASTER_SSL_CRLPATH:
				case MASTER_SSL_KEY:
				case MASTER_TLS_VERSION:
				case MASTER_USER:
				case MAX_CONNECTIONS_PER_HOUR:
				case MAX_QUERIES_PER_HOUR:
				case MAX_ROWS:
				case MAX_SIZE:
				case MAX_UPDATES_PER_HOUR:
				case MAX_USER_CONNECTIONS:
				case MEDIUM:
				case MEMBER:
				case MERGE:
				case MESSAGE_TEXT:
				case MID:
				case MIGRATE:
				case MIN_ROWS:
				case MODE:
				case MODIFY:
				case MUTEX:
				case MYSQL:
				case MYSQL_ERRNO:
				case NAME:
				case NAMES:
				case NCHAR:
				case NEVER:
				case NEXT:
				case NO:
				case NOCACHE:
				case NOCOPY:
				case NOCYCLE:
				case NOMAXVALUE:
				case NOMINVALUE:
				case NOWAIT:
				case NODEGROUP:
				case NONE:
				case ODBC:
				case OFFLINE:
				case OFFSET:
				case OF:
				case OJ:
				case OLD_PASSWORD:
				case ONE:
				case ONLINE:
				case ONLY:
				case OPEN:
				case OPTIMIZER_COSTS:
				case OPTIONS:
				case OWNER:
				case PACK_KEYS:
				case PAGE:
				case PARSER:
				case PARTIAL:
				case PARTITIONING:
				case PARTITIONS:
				case PASSWORD:
				case PASSWORD_LOCK_TIME:
				case PHASE:
				case PLUGIN:
				case PLUGIN_DIR:
				case PLUGINS:
				case PORT:
				case PRECEDES:
				case PREPARE:
				case PRESERVE:
				case PREV:
				case PROCESSLIST:
				case PROFILE:
				case PROFILES:
				case PROXY:
				case QUERY:
				case QUICK:
				case REBUILD:
				case RECOVER:
				case RECURSIVE:
				case REDO_BUFFER_SIZE:
				case REDUNDANT:
				case RELAY:
				case RELAY_LOG_FILE:
				case RELAY_LOG_POS:
				case RELAYLOG:
				case REMOVE:
				case REORGANIZE:
				case REPAIR:
				case REPLICATE_DO_DB:
				case REPLICATE_DO_TABLE:
				case REPLICATE_IGNORE_DB:
				case REPLICATE_IGNORE_TABLE:
				case REPLICATE_REWRITE_DB:
				case REPLICATE_WILD_DO_TABLE:
				case REPLICATE_WILD_IGNORE_TABLE:
				case REPLICATION:
				case RESET:
				case RESTART:
				case RESUME:
				case RETURNED_SQLSTATE:
				case RETURNING:
				case RETURNS:
				case REUSE:
				case ROLE:
				case ROLLBACK:
				case ROLLUP:
				case ROTATE:
				case ROW:
				case ROWS:
				case ROW_FORMAT:
				case RTREE:
				case SAVEPOINT:
				case SCHEDULE:
				case SECURITY:
				case SEQUENCE:
				case SERVER:
				case SESSION:
				case SHARE:
				case SHARED:
				case SIGNED:
				case SIMPLE:
				case SLAVE:
				case SLOW:
				case SNAPSHOT:
				case SOCKET:
				case SOME:
				case SONAME:
				case SOUNDS:
				case SOURCE:
				case SQL_AFTER_GTIDS:
				case SQL_AFTER_MTS_GAPS:
				case SQL_BEFORE_GTIDS:
				case SQL_BUFFER_RESULT:
				case SQL_CACHE:
				case SQL_NO_CACHE:
				case SQL_THREAD:
				case START:
				case STARTS:
				case STATS_AUTO_RECALC:
				case STATS_PERSISTENT:
				case STATS_SAMPLE_PAGES:
				case STATUS:
				case STOP:
				case STORAGE:
				case STRING:
				case SUBCLASS_ORIGIN:
				case SUBJECT:
				case SUBPARTITION:
				case SUBPARTITIONS:
				case SUSPEND:
				case SWAPS:
				case SWITCHES:
				case TABLE_NAME:
				case TABLESPACE:
				case TABLE_TYPE:
				case TEMPORARY:
				case TEMPTABLE:
				case THAN:
				case TRADITIONAL:
				case TRANSACTION:
				case TRANSACTIONAL:
				case TRIGGERS:
				case TRUNCATE:
				case UNBOUNDED:
				case UNDEFINED:
				case UNDOFILE:
				case UNDO_BUFFER_SIZE:
				case UNINSTALL:
				case UNKNOWN:
				case UNTIL:
				case UPGRADE:
				case USER:
				case USE_FRM:
				case USER_RESOURCES:
				case VALIDATION:
				case VALUE:
				case VARIABLES:
				case VIEW:
				case VIRTUAL:
				case VISIBLE:
				case WAIT:
				case WARNINGS:
				case WITHOUT:
				case WORK:
				case WRAPPER:
				case X509:
				case XA:
				case XML:
				case YES:
				case EUR:
				case USA:
				case JIS:
				case ISO:
				case INTERNAL:
				case QUARTER:
				case MONTH:
				case DAY:
				case HOUR:
				case MINUTE:
				case WEEK:
				case SECOND:
				case MICROSECOND:
				case USER_STATISTICS:
				case CLIENT_STATISTICS:
				case INDEX_STATISTICS:
				case TABLE_STATISTICS:
				case FIREWALL_RULES:
				case ADMIN:
				case APPLICATION_PASSWORD_ADMIN:
				case AUDIT_ADMIN:
				case AUDIT_ABORT_EXEMPT:
				case AUTHENTICATION_POLICY_ADMIN:
				case BACKUP_ADMIN:
				case BINLOG_ADMIN:
				case BINLOG_ENCRYPTION_ADMIN:
				case CLONE_ADMIN:
				case CONNECTION_ADMIN:
				case ENCRYPTION_KEY_ADMIN:
				case EXECUTE:
				case FILE:
				case FIREWALL_ADMIN:
				case FIREWALL_EXEMPT:
				case FIREWALL_USER:
				case FLUSH_OPTIMIZER_COSTS:
				case FLUSH_STATUS:
				case FLUSH_TABLES:
				case FLUSH_USER_RESOURCES:
				case GROUP_REPLICATION_ADMIN:
				case INNODB_REDO_LOG_ARCHIVE:
				case INNODB_REDO_LOG_ENABLE:
				case INVOKE:
				case LAMBDA:
				case NDB_STORED_USER:
				case PASSWORDLESS_USER_ADMIN:
				case PERSIST_RO_VARIABLES_ADMIN:
				case PRIVILEGES:
				case PROCESS:
				case RELOAD:
				case REPLICATION_APPLIER:
				case REPLICATION_SLAVE_ADMIN:
				case RESOURCE_GROUP_ADMIN:
				case RESOURCE_GROUP_USER:
				case ROLE_ADMIN:
				case ROUTINE:
				case S3:
				case SESSION_VARIABLES_ADMIN:
				case SET_USER_ID:
				case SHOW_ROUTINE:
				case SHUTDOWN:
				case SUPER:
				case SYSTEM_VARIABLES_ADMIN:
				case TABLES:
				case TABLE_ENCRYPTION_ADMIN:
				case VERSION_TOKEN_ADMIN:
				case XA_RECOVER_ADMIN:
				case ARMSCII8:
				case ASCII:
				case BIG5:
				case CP1250:
				case CP1251:
				case CP1256:
				case CP1257:
				case CP850:
				case CP852:
				case CP866:
				case CP932:
				case DEC8:
				case EUCJPMS:
				case EUCKR:
				case GB18030:
				case GB2312:
				case GBK:
				case GEOSTD8:
				case GREEK:
				case HEBREW:
				case HP8:
				case KEYBCS2:
				case KOI8R:
				case KOI8U:
				case LATIN1:
				case LATIN2:
				case LATIN5:
				case LATIN7:
				case MACCE:
				case MACROMAN:
				case SJIS:
				case SWE7:
				case TIS620:
				case UCS2:
				case UJIS:
				case UTF16:
				case UTF16LE:
				case UTF32:
				case UTF8:
				case UTF8MB3:
				case UTF8MB4:
				case ARCHIVE:
				case BLACKHOLE:
				case CSV:
				case FEDERATED:
				case INNODB:
				case MEMORY:
				case MRG_MYISAM:
				case MYISAM:
				case NDB:
				case NDBCLUSTER:
				case PERFORMANCE_SCHEMA:
				case TOKUDB:
				case REPEATABLE:
				case COMMITTED:
				case UNCOMMITTED:
				case SERIALIZABLE:
				case GEOMETRYCOLLECTION:
				case GEOMETRY:
				case LINESTRING:
				case MULTILINESTRING:
				case MULTIPOINT:
				case MULTIPOLYGON:
				case POINT:
				case POLYGON:
				case ABS:
				case ACOS:
				case ADDDATE:
				case ADDTIME:
				case AES_DECRYPT:
				case AES_ENCRYPT:
				case AREA:
				case ASBINARY:
				case ASIN:
				case ASTEXT:
				case ASWKB:
				case ASWKT:
				case ASYMMETRIC_DECRYPT:
				case ASYMMETRIC_DERIVE:
				case ASYMMETRIC_ENCRYPT:
				case ASYMMETRIC_SIGN:
				case ASYMMETRIC_VERIFY:
				case ATAN:
				case ATAN2:
				case BENCHMARK:
				case BIN:
				case BIT_COUNT:
				case BIT_LENGTH:
				case BUFFER:
				case CATALOG_NAME:
				case CEIL:
				case CEILING:
				case CENTROID:
				case CHARACTER_LENGTH:
				case CHARSET:
				case CHAR_LENGTH:
				case COERCIBILITY:
				case COLLATION:
				case COMPRESS:
				case CONCAT:
				case CONCAT_WS:
				case CONNECTION_ID:
				case CONV:
				case CONVERT_TZ:
				case COS:
				case COT:
				case CRC32:
				case CREATE_ASYMMETRIC_PRIV_KEY:
				case CREATE_ASYMMETRIC_PUB_KEY:
				case CREATE_DH_PARAMETERS:
				case CREATE_DIGEST:
				case CROSSES:
				case DATEDIFF:
				case DATE_FORMAT:
				case DAYNAME:
				case DAYOFMONTH:
				case DAYOFWEEK:
				case DAYOFYEAR:
				case DECODE:
				case DEGREES:
				case DES_DECRYPT:
				case DES_ENCRYPT:
				case DIMENSION:
				case DISJOINT:
				case ELT:
				case ENCODE:
				case ENCRYPT:
				case ENDPOINT:
				case ENGINE_ATTRIBUTE:
				case ENVELOPE:
				case EQUALS:
				case EXP:
				case EXPORT_SET:
				case EXTERIORRING:
				case EXTRACTVALUE:
				case FIELD:
				case FIND_IN_SET:
				case FLOOR:
				case FORMAT:
				case FOUND_ROWS:
				case FROM_BASE64:
				case FROM_DAYS:
				case FROM_UNIXTIME:
				case GEOMCOLLFROMTEXT:
				case GEOMCOLLFROMWKB:
				case GEOMETRYCOLLECTIONFROMTEXT:
				case GEOMETRYCOLLECTIONFROMWKB:
				case GEOMETRYFROMTEXT:
				case GEOMETRYFROMWKB:
				case GEOMETRYN:
				case GEOMETRYTYPE:
				case GEOMFROMTEXT:
				case GEOMFROMWKB:
				case GET_FORMAT:
				case GET_LOCK:
				case GLENGTH:
				case GREATEST:
				case GTID_SUBSET:
				case GTID_SUBTRACT:
				case HEX:
				case IFNULL:
				case INET6_ATON:
				case INET6_NTOA:
				case INET_ATON:
				case INET_NTOA:
				case INSTR:
				case INTERIORRINGN:
				case INTERSECTS:
				case ISCLOSED:
				case ISEMPTY:
				case ISNULL:
				case ISSIMPLE:
				case IS_FREE_LOCK:
				case IS_IPV4:
				case IS_IPV4_COMPAT:
				case IS_IPV4_MAPPED:
				case IS_IPV6:
				case IS_USED_LOCK:
				case LAST_INSERT_ID:
				case LCASE:
				case LEAST:
				case LENGTH:
				case LINEFROMTEXT:
				case LINEFROMWKB:
				case LINESTRINGFROMTEXT:
				case LINESTRINGFROMWKB:
				case LN:
				case LOAD_FILE:
				case LOCATE:
				case LOG:
				case LOG10:
				case LOG2:
				case LOWER:
				case LPAD:
				case LTRIM:
				case MAKEDATE:
				case MAKETIME:
				case MAKE_SET:
				case MASTER_POS_WAIT:
				case MBRCONTAINS:
				case MBRDISJOINT:
				case MBREQUAL:
				case MBRINTERSECTS:
				case MBROVERLAPS:
				case MBRTOUCHES:
				case MBRWITHIN:
				case MD5:
				case MLINEFROMTEXT:
				case MLINEFROMWKB:
				case MONTHNAME:
				case MPOINTFROMTEXT:
				case MPOINTFROMWKB:
				case MPOLYFROMTEXT:
				case MPOLYFROMWKB:
				case MULTILINESTRINGFROMTEXT:
				case MULTILINESTRINGFROMWKB:
				case MULTIPOINTFROMTEXT:
				case MULTIPOINTFROMWKB:
				case MULTIPOLYGONFROMTEXT:
				case MULTIPOLYGONFROMWKB:
				case NAME_CONST:
				case NULLIF:
				case NUMGEOMETRIES:
				case NUMINTERIORRINGS:
				case NUMPOINTS:
				case OCT:
				case OCTET_LENGTH:
				case ORD:
				case OVERLAPS:
				case PERIOD_ADD:
				case PERIOD_DIFF:
				case PI:
				case POINTFROMTEXT:
				case POINTFROMWKB:
				case POINTN:
				case POLYFROMTEXT:
				case POLYFROMWKB:
				case POLYGONFROMTEXT:
				case POLYGONFROMWKB:
				case POW:
				case POWER:
				case QUOTE:
				case RADIANS:
				case RAND:
				case RANDOM:
				case RANDOM_BYTES:
				case RELEASE_LOCK:
				case REVERSE:
				case ROUND:
				case ROW_COUNT:
				case RPAD:
				case RTRIM:
				case SEC_TO_TIME:
				case SECONDARY_ENGINE_ATTRIBUTE:
				case SENSITIVE_VARIABLES_OBSERVER:
				case SESSION_USER:
				case SHA:
				case SHA1:
				case SHA2:
				case SCHEMA_NAME:
				case SIGN:
				case SIN:
				case SLEEP:
				case SOUNDEX:
				case SQL_THREAD_WAIT_AFTER_GTIDS:
				case SQRT:
				case SRID:
				case STARTPOINT:
				case STRCMP:
				case STR_TO_DATE:
				case ST_AREA:
				case ST_ASBINARY:
				case ST_ASTEXT:
				case ST_ASWKB:
				case ST_ASWKT:
				case ST_BUFFER:
				case ST_CENTROID:
				case ST_CONTAINS:
				case ST_CROSSES:
				case ST_DIFFERENCE:
				case ST_DIMENSION:
				case ST_DISJOINT:
				case ST_DISTANCE:
				case ST_ENDPOINT:
				case ST_ENVELOPE:
				case ST_EQUALS:
				case ST_EXTERIORRING:
				case ST_GEOMCOLLFROMTEXT:
				case ST_GEOMCOLLFROMTXT:
				case ST_GEOMCOLLFROMWKB:
				case ST_GEOMETRYCOLLECTIONFROMTEXT:
				case ST_GEOMETRYCOLLECTIONFROMWKB:
				case ST_GEOMETRYFROMTEXT:
				case ST_GEOMETRYFROMWKB:
				case ST_GEOMETRYN:
				case ST_GEOMETRYTYPE:
				case ST_GEOMFROMTEXT:
				case ST_GEOMFROMWKB:
				case ST_INTERIORRINGN:
				case ST_INTERSECTION:
				case ST_INTERSECTS:
				case ST_ISCLOSED:
				case ST_ISEMPTY:
				case ST_ISSIMPLE:
				case ST_LINEFROMTEXT:
				case ST_LINEFROMWKB:
				case ST_LINESTRINGFROMTEXT:
				case ST_LINESTRINGFROMWKB:
				case ST_NUMGEOMETRIES:
				case ST_NUMINTERIORRING:
				case ST_NUMINTERIORRINGS:
				case ST_NUMPOINTS:
				case ST_OVERLAPS:
				case ST_POINTFROMTEXT:
				case ST_POINTFROMWKB:
				case ST_POINTN:
				case ST_POLYFROMTEXT:
				case ST_POLYFROMWKB:
				case ST_POLYGONFROMTEXT:
				case ST_POLYGONFROMWKB:
				case ST_SRID:
				case ST_STARTPOINT:
				case ST_SYMDIFFERENCE:
				case ST_TOUCHES:
				case ST_UNION:
				case ST_WITHIN:
				case ST_X:
				case ST_Y:
				case SUBDATE:
				case SUBSTRING_INDEX:
				case SUBTIME:
				case SYSTEM_USER:
				case SYSTEM:
				case TAN:
				case TELEMETRY_LOG_ADMIN:
				case TIMEDIFF:
				case TIMESTAMPADD:
				case TIMESTAMPDIFF:
				case TIME_FORMAT:
				case TIME_TO_SEC:
				case TOUCHES:
				case TO_BASE64:
				case TO_DAYS:
				case TO_SECONDS:
				case TP_CONNECTION_ADMIN:
				case UCASE:
				case UNCOMPRESS:
				case UNCOMPRESSED_LENGTH:
				case UNHEX:
				case UNIX_TIMESTAMP:
				case UPDATEXML:
				case UPPER:
				case UUID:
				case UUID_SHORT:
				case VALIDATE_PASSWORD_STRENGTH:
				case VERSION:
				case VERSIONING:
				case WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS:
				case WEEKDAY:
				case WEEKOFYEAR:
				case WEIGHT_STRING:
				case WITHIN:
				case YEARWEEK:
				case Y_FUNCTION:
				case X_FUNCTION:
				case VIA:
				case LASTVAL:
				case NEXTVAL:
				case SETVAL:
				case PREVIOUS:
				case PERSISTENT:
				case BINLOG_MONITOR:
				case BINLOG_REPLAY:
				case FEDERATED_ADMIN:
				case READ_ONLY_ADMIN:
				case REPLICA:
				case REPLICATION_MASTER_ADMIN:
				case MONITOR:
				case READ_ONLY:
				case REPLAY:
				case MOD:
				case CHARSET_REVERSE_QOUTE_STRING:
				case STRING_LITERAL:
				case ID:
					{
					setState(3154);
					uidList();
					}
					break;
				case ALL:
					{
					setState(3155);
					match(ALL);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case COALESCE:
				_localctx = new AlterByCoalescePartitionContext(_localctx);
				enterOuterAlt(_localctx, 6);
				{
				setState(3158);
				match(COALESCE);
				setState(3159);
				match(PARTITION);
				setState(3160);
				decimalLiteral();
				}
				break;
			case REORGANIZE:
				_localctx = new AlterByReorganizePartitionContext(_localctx);
				enterOuterAlt(_localctx, 7);
				{
				setState(3161);
				match(REORGANIZE);
				setState(3162);
				match(PARTITION);
				setState(3163);
				uidList();
				setState(3164);
				match(INTO);
				setState(3165);
				match(LR_BRACKET);
				setState(3166);
				partitionDefinition();
				setState(3171);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(3167);
					match(COMMA);
					setState(3168);
					partitionDefinition();
					}
					}
					setState(3173);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(3174);
				match(RR_BRACKET);
				}
				break;
			case EXCHANGE:
				_localctx = new AlterByExchangePartitionContext(_localctx);
				enterOuterAlt(_localctx, 8);
				{
				setState(3176);
				match(EXCHANGE);
				setState(3177);
				match(PARTITION);
				setState(3178);
				uid();
				setState(3179);
				match(WITH);
				setState(3180);
				match(TABLE);
				setState(3181);
				tableName();
				setState(3184);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,424,_ctx) ) {
				case 1:
					{
					setState(3182);
					((AlterByExchangePartitionContext)_localctx).validationFormat = _input.LT(1);
					_la = _input.LA(1);
					if ( !(_la==WITH || _la==WITHOUT) ) {
						((AlterByExchangePartitionContext)_localctx).validationFormat = (Token)_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					setState(3183);
					match(VALIDATION);
					}
					break;
				}
				}
				break;
			case ANALYZE:
				_localctx = new AlterByAnalyzePartitionContext(_localctx);
				enterOuterAlt(_localctx, 9);
				{
				setState(3186);
				match(ANALYZE);
				setState(3187);
				match(PARTITION);
				setState(3190);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case ARRAY:
				case ATTRIBUTE:
				case BUCKETS:
				case CONDITION:
				case CURRENT:
				case CURRENT_ROLE:
				case CURRENT_USER:
				case DATABASE:
				case DEFAULT:
				case DIAGNOSTICS:
				case EMPTY:
				case ENFORCED:
				case EXCEPT:
				case GROUP:
				case GROUP_REPLICATION_STREAM:
				case IF:
				case IGNORED:
				case INSERT:
				case LATERAL:
				case LEFT:
				case LOCKED:
				case MAXVALUE:
				case MINVALUE:
				case NUMBER:
				case OPTIONAL:
				case ORDER:
				case PRIMARY:
				case REPEAT:
				case REPLACE:
				case RIGHT:
				case SCHEMA:
				case SKIP_:
				case SKIP_QUERY_REWRITE:
				case STACKED:
				case STATEMENT:
				case DATE:
				case TIME:
				case TIMESTAMP:
				case DATETIME:
				case YEAR:
				case NATIONAL:
				case BINARY:
				case TEXT:
				case ENUM:
				case SERIAL:
				case JSON_ARRAY:
				case JSON_ARRAYAGG:
				case JSON_ARRAY_APPEND:
				case JSON_ARRAY_INSERT:
				case JSON_CONTAINS:
				case JSON_CONTAINS_PATH:
				case JSON_DEPTH:
				case JSON_EXTRACT:
				case JSON_INSERT:
				case JSON_KEYS:
				case JSON_LENGTH:
				case JSON_MERGE:
				case JSON_MERGE_PATCH:
				case JSON_MERGE_PRESERVE:
				case JSON_OBJECT:
				case JSON_OBJECTAGG:
				case JSON_OVERLAPS:
				case JSON_PRETTY:
				case JSON_QUOTE:
				case JSON_REMOVE:
				case JSON_REPLACE:
				case JSON_SCHEMA_VALID:
				case JSON_SCHEMA_VALIDATION_REPORT:
				case JSON_SEARCH:
				case JSON_SET:
				case JSON_STORAGE_FREE:
				case JSON_STORAGE_SIZE:
				case JSON_TABLE:
				case JSON_TYPE:
				case JSON_UNQUOTE:
				case JSON_VALID:
				case JSON_VALUE:
				case NESTED:
				case ORDINALITY:
				case PATH:
				case AVG:
				case BIT_AND:
				case BIT_OR:
				case BIT_XOR:
				case COUNT:
				case CUME_DIST:
				case DENSE_RANK:
				case FIRST_VALUE:
				case GROUP_CONCAT:
				case LAG:
				case LAST_VALUE:
				case LEAD:
				case MAX:
				case MIN:
				case NTILE:
				case NTH_VALUE:
				case PERCENT_RANK:
				case RANK:
				case ROW_NUMBER:
				case STD:
				case STDDEV:
				case STDDEV_POP:
				case STDDEV_SAMP:
				case SUM:
				case VAR_POP:
				case VAR_SAMP:
				case VARIANCE:
				case CURRENT_DATE:
				case CURRENT_TIME:
				case CURRENT_TIMESTAMP:
				case LOCALTIME:
				case CURDATE:
				case CURTIME:
				case DATE_ADD:
				case DATE_SUB:
				case LOCALTIMESTAMP:
				case NOW:
				case POSITION:
				case SUBSTR:
				case SUBSTRING:
				case SYSDATE:
				case TRIM:
				case UTC_DATE:
				case UTC_TIME:
				case UTC_TIMESTAMP:
				case ACCOUNT:
				case ACTION:
				case AFTER:
				case AGGREGATE:
				case ALGORITHM:
				case ANY:
				case AT:
				case AUTHORS:
				case AUTOCOMMIT:
				case AUTOEXTEND_SIZE:
				case AUTO_INCREMENT:
				case AVG_ROW_LENGTH:
				case BEGIN:
				case BINLOG:
				case BIT:
				case BLOCK:
				case BOOL:
				case BOOLEAN:
				case BTREE:
				case CACHE:
				case CASCADED:
				case CHAIN:
				case CHANGED:
				case CHANNEL:
				case CHECKSUM:
				case PAGE_CHECKSUM:
				case CIPHER:
				case CLASS_ORIGIN:
				case CLIENT:
				case CLOSE:
				case CLUSTERING:
				case COALESCE:
				case CODE:
				case COLUMNS:
				case COLUMN_FORMAT:
				case COLUMN_NAME:
				case COMMENT:
				case COMMIT:
				case COMPACT:
				case COMPLETION:
				case COMPRESSED:
				case COMPRESSION:
				case CONCURRENT:
				case CONNECT:
				case CONNECTION:
				case CONSISTENT:
				case CONSTRAINT_CATALOG:
				case CONSTRAINT_SCHEMA:
				case CONSTRAINT_NAME:
				case CONTAINS:
				case CONTEXT:
				case CONTRIBUTORS:
				case COPY:
				case CPU:
				case CYCLE:
				case CURSOR_NAME:
				case DATA:
				case DATAFILE:
				case DEALLOCATE:
				case DEFAULT_AUTH:
				case DEFINER:
				case DELAY_KEY_WRITE:
				case DES_KEY_FILE:
				case DIRECTORY:
				case DISABLE:
				case DISCARD:
				case DISK:
				case DO:
				case DUMPFILE:
				case DUPLICATE:
				case DYNAMIC:
				case ENABLE:
				case ENCRYPTED:
				case ENCRYPTION:
				case ENCRYPTION_KEY_ID:
				case END:
				case ENDS:
				case ENGINE:
				case ENGINES:
				case ERROR:
				case ERRORS:
				case ESCAPE:
				case EVEN:
				case EVENT:
				case EVENTS:
				case EVERY:
				case EXCHANGE:
				case EXCLUSIVE:
				case EXPIRE:
				case EXPORT:
				case EXTENDED:
				case EXTENT_SIZE:
				case FAILED_LOGIN_ATTEMPTS:
				case FAST:
				case FAULTS:
				case FIELDS:
				case FILE_BLOCK_SIZE:
				case FILTER:
				case FIRST:
				case FIXED:
				case FLUSH:
				case FOLLOWS:
				case FOUND:
				case FULL:
				case FUNCTION:
				case GENERAL:
				case GLOBAL:
				case GRANTS:
				case GROUP_REPLICATION:
				case HANDLER:
				case HASH:
				case HELP:
				case HISTORY:
				case HOST:
				case HOSTS:
				case IDENTIFIED:
				case IGNORE_SERVER_IDS:
				case IMPORT:
				case INCREMENT:
				case INDEXES:
				case INITIAL_SIZE:
				case INPLACE:
				case INSERT_METHOD:
				case INSTALL:
				case INSTANCE:
				case INSTANT:
				case INVISIBLE:
				case INVOKER:
				case IO:
				case IO_THREAD:
				case IPC:
				case ISOLATION:
				case ISSUER:
				case JSON:
				case KEY_BLOCK_SIZE:
				case LANGUAGE:
				case LAST:
				case LEAVES:
				case LESS:
				case LEVEL:
				case LIST:
				case LOCAL:
				case LOGFILE:
				case LOGS:
				case MASTER:
				case MASTER_AUTO_POSITION:
				case MASTER_CONNECT_RETRY:
				case MASTER_DELAY:
				case MASTER_HEARTBEAT_PERIOD:
				case MASTER_HOST:
				case MASTER_LOG_FILE:
				case MASTER_LOG_POS:
				case MASTER_PASSWORD:
				case MASTER_PORT:
				case MASTER_RETRY_COUNT:
				case MASTER_SSL:
				case MASTER_SSL_CA:
				case MASTER_SSL_CAPATH:
				case MASTER_SSL_CERT:
				case MASTER_SSL_CIPHER:
				case MASTER_SSL_CRL:
				case MASTER_SSL_CRLPATH:
				case MASTER_SSL_KEY:
				case MASTER_TLS_VERSION:
				case MASTER_USER:
				case MAX_CONNECTIONS_PER_HOUR:
				case MAX_QUERIES_PER_HOUR:
				case MAX_ROWS:
				case MAX_SIZE:
				case MAX_UPDATES_PER_HOUR:
				case MAX_USER_CONNECTIONS:
				case MEDIUM:
				case MEMBER:
				case MERGE:
				case MESSAGE_TEXT:
				case MID:
				case MIGRATE:
				case MIN_ROWS:
				case MODE:
				case MODIFY:
				case MUTEX:
				case MYSQL:
				case MYSQL_ERRNO:
				case NAME:
				case NAMES:
				case NCHAR:
				case NEVER:
				case NEXT:
				case NO:
				case NOCACHE:
				case NOCOPY:
				case NOCYCLE:
				case NOMAXVALUE:
				case NOMINVALUE:
				case NOWAIT:
				case NODEGROUP:
				case NONE:
				case ODBC:
				case OFFLINE:
				case OFFSET:
				case OF:
				case OJ:
				case OLD_PASSWORD:
				case ONE:
				case ONLINE:
				case ONLY:
				case OPEN:
				case OPTIMIZER_COSTS:
				case OPTIONS:
				case OWNER:
				case PACK_KEYS:
				case PAGE:
				case PARSER:
				case PARTIAL:
				case PARTITIONING:
				case PARTITIONS:
				case PASSWORD:
				case PASSWORD_LOCK_TIME:
				case PHASE:
				case PLUGIN:
				case PLUGIN_DIR:
				case PLUGINS:
				case PORT:
				case PRECEDES:
				case PREPARE:
				case PRESERVE:
				case PREV:
				case PROCESSLIST:
				case PROFILE:
				case PROFILES:
				case PROXY:
				case QUERY:
				case QUICK:
				case REBUILD:
				case RECOVER:
				case RECURSIVE:
				case REDO_BUFFER_SIZE:
				case REDUNDANT:
				case RELAY:
				case RELAY_LOG_FILE:
				case RELAY_LOG_POS:
				case RELAYLOG:
				case REMOVE:
				case REORGANIZE:
				case REPAIR:
				case REPLICATE_DO_DB:
				case REPLICATE_DO_TABLE:
				case REPLICATE_IGNORE_DB:
				case REPLICATE_IGNORE_TABLE:
				case REPLICATE_REWRITE_DB:
				case REPLICATE_WILD_DO_TABLE:
				case REPLICATE_WILD_IGNORE_TABLE:
				case REPLICATION:
				case RESET:
				case RESTART:
				case RESUME:
				case RETURNED_SQLSTATE:
				case RETURNING:
				case RETURNS:
				case REUSE:
				case ROLE:
				case ROLLBACK:
				case ROLLUP:
				case ROTATE:
				case ROW:
				case ROWS:
				case ROW_FORMAT:
				case RTREE:
				case SAVEPOINT:
				case SCHEDULE:
				case SECURITY:
				case SEQUENCE:
				case SERVER:
				case SESSION:
				case SHARE:
				case SHARED:
				case SIGNED:
				case SIMPLE:
				case SLAVE:
				case SLOW:
				case SNAPSHOT:
				case SOCKET:
				case SOME:
				case SONAME:
				case SOUNDS:
				case SOURCE:
				case SQL_AFTER_GTIDS:
				case SQL_AFTER_MTS_GAPS:
				case SQL_BEFORE_GTIDS:
				case SQL_BUFFER_RESULT:
				case SQL_CACHE:
				case SQL_NO_CACHE:
				case SQL_THREAD:
				case START:
				case STARTS:
				case STATS_AUTO_RECALC:
				case STATS_PERSISTENT:
				case STATS_SAMPLE_PAGES:
				case STATUS:
				case STOP:
				case STORAGE:
				case STRING:
				case SUBCLASS_ORIGIN:
				case SUBJECT:
				case SUBPARTITION:
				case SUBPARTITIONS:
				case SUSPEND:
				case SWAPS:
				case SWITCHES:
				case TABLE_NAME:
				case TABLESPACE:
				case TABLE_TYPE:
				case TEMPORARY:
				case TEMPTABLE:
				case THAN:
				case TRADITIONAL:
				case TRANSACTION:
				case TRANSACTIONAL:
				case TRIGGERS:
				case TRUNCATE:
				case UNBOUNDED:
				case UNDEFINED:
				case UNDOFILE:
				case UNDO_BUFFER_SIZE:
				case UNINSTALL:
				case UNKNOWN:
				case UNTIL:
				case UPGRADE:
				case USER:
				case USE_FRM:
				case USER_RESOURCES:
				case VALIDATION:
				case VALUE:
				case VARIABLES:
				case VIEW:
				case VIRTUAL:
				case VISIBLE:
				case WAIT:
				case WARNINGS:
				case WITHOUT:
				case WORK:
				case WRAPPER:
				case X509:
				case XA:
				case XML:
				case YES:
				case EUR:
				case USA:
				case JIS:
				case ISO:
				case INTERNAL:
				case QUARTER:
				case MONTH:
				case DAY:
				case HOUR:
				case MINUTE:
				case WEEK:
				case SECOND:
				case MICROSECOND:
				case USER_STATISTICS:
				case CLIENT_STATISTICS:
				case INDEX_STATISTICS:
				case TABLE_STATISTICS:
				case FIREWALL_RULES:
				case ADMIN:
				case APPLICATION_PASSWORD_ADMIN:
				case AUDIT_ADMIN:
				case AUDIT_ABORT_EXEMPT:
				case AUTHENTICATION_POLICY_ADMIN:
				case BACKUP_ADMIN:
				case BINLOG_ADMIN:
				case BINLOG_ENCRYPTION_ADMIN:
				case CLONE_ADMIN:
				case CONNECTION_ADMIN:
				case ENCRYPTION_KEY_ADMIN:
				case EXECUTE:
				case FILE:
				case FIREWALL_ADMIN:
				case FIREWALL_EXEMPT:
				case FIREWALL_USER:
				case FLUSH_OPTIMIZER_COSTS:
				case FLUSH_STATUS:
				case FLUSH_TABLES:
				case FLUSH_USER_RESOURCES:
				case GROUP_REPLICATION_ADMIN:
				case INNODB_REDO_LOG_ARCHIVE:
				case INNODB_REDO_LOG_ENABLE:
				case INVOKE:
				case LAMBDA:
				case NDB_STORED_USER:
				case PASSWORDLESS_USER_ADMIN:
				case PERSIST_RO_VARIABLES_ADMIN:
				case PRIVILEGES:
				case PROCESS:
				case RELOAD:
				case REPLICATION_APPLIER:
				case REPLICATION_SLAVE_ADMIN:
				case RESOURCE_GROUP_ADMIN:
				case RESOURCE_GROUP_USER:
				case ROLE_ADMIN:
				case ROUTINE:
				case S3:
				case SESSION_VARIABLES_ADMIN:
				case SET_USER_ID:
				case SHOW_ROUTINE:
				case SHUTDOWN:
				case SUPER:
				case SYSTEM_VARIABLES_ADMIN:
				case TABLES:
				case TABLE_ENCRYPTION_ADMIN:
				case VERSION_TOKEN_ADMIN:
				case XA_RECOVER_ADMIN:
				case ARMSCII8:
				case ASCII:
				case BIG5:
				case CP1250:
				case CP1251:
				case CP1256:
				case CP1257:
				case CP850:
				case CP852:
				case CP866:
				case CP932:
				case DEC8:
				case EUCJPMS:
				case EUCKR:
				case GB18030:
				case GB2312:
				case GBK:
				case GEOSTD8:
				case GREEK:
				case HEBREW:
				case HP8:
				case KEYBCS2:
				case KOI8R:
				case KOI8U:
				case LATIN1:
				case LATIN2:
				case LATIN5:
				case LATIN7:
				case MACCE:
				case MACROMAN:
				case SJIS:
				case SWE7:
				case TIS620:
				case UCS2:
				case UJIS:
				case UTF16:
				case UTF16LE:
				case UTF32:
				case UTF8:
				case UTF8MB3:
				case UTF8MB4:
				case ARCHIVE:
				case BLACKHOLE:
				case CSV:
				case FEDERATED:
				case INNODB:
				case MEMORY:
				case MRG_MYISAM:
				case MYISAM:
				case NDB:
				case NDBCLUSTER:
				case PERFORMANCE_SCHEMA:
				case TOKUDB:
				case REPEATABLE:
				case COMMITTED:
				case UNCOMMITTED:
				case SERIALIZABLE:
				case GEOMETRYCOLLECTION:
				case GEOMETRY:
				case LINESTRING:
				case MULTILINESTRING:
				case MULTIPOINT:
				case MULTIPOLYGON:
				case POINT:
				case POLYGON:
				case ABS:
				case ACOS:
				case ADDDATE:
				case ADDTIME:
				case AES_DECRYPT:
				case AES_ENCRYPT:
				case AREA:
				case ASBINARY:
				case ASIN:
				case ASTEXT:
				case ASWKB:
				case ASWKT:
				case ASYMMETRIC_DECRYPT:
				case ASYMMETRIC_DERIVE:
				case ASYMMETRIC_ENCRYPT:
				case ASYMMETRIC_SIGN:
				case ASYMMETRIC_VERIFY:
				case ATAN:
				case ATAN2:
				case BENCHMARK:
				case BIN:
				case BIT_COUNT:
				case BIT_LENGTH:
				case BUFFER:
				case CATALOG_NAME:
				case CEIL:
				case CEILING:
				case CENTROID:
				case CHARACTER_LENGTH:
				case CHARSET:
				case CHAR_LENGTH:
				case COERCIBILITY:
				case COLLATION:
				case COMPRESS:
				case CONCAT:
				case CONCAT_WS:
				case CONNECTION_ID:
				case CONV:
				case CONVERT_TZ:
				case COS:
				case COT:
				case CRC32:
				case CREATE_ASYMMETRIC_PRIV_KEY:
				case CREATE_ASYMMETRIC_PUB_KEY:
				case CREATE_DH_PARAMETERS:
				case CREATE_DIGEST:
				case CROSSES:
				case DATEDIFF:
				case DATE_FORMAT:
				case DAYNAME:
				case DAYOFMONTH:
				case DAYOFWEEK:
				case DAYOFYEAR:
				case DECODE:
				case DEGREES:
				case DES_DECRYPT:
				case DES_ENCRYPT:
				case DIMENSION:
				case DISJOINT:
				case ELT:
				case ENCODE:
				case ENCRYPT:
				case ENDPOINT:
				case ENGINE_ATTRIBUTE:
				case ENVELOPE:
				case EQUALS:
				case EXP:
				case EXPORT_SET:
				case EXTERIORRING:
				case EXTRACTVALUE:
				case FIELD:
				case FIND_IN_SET:
				case FLOOR:
				case FORMAT:
				case FOUND_ROWS:
				case FROM_BASE64:
				case FROM_DAYS:
				case FROM_UNIXTIME:
				case GEOMCOLLFROMTEXT:
				case GEOMCOLLFROMWKB:
				case GEOMETRYCOLLECTIONFROMTEXT:
				case GEOMETRYCOLLECTIONFROMWKB:
				case GEOMETRYFROMTEXT:
				case GEOMETRYFROMWKB:
				case GEOMETRYN:
				case GEOMETRYTYPE:
				case GEOMFROMTEXT:
				case GEOMFROMWKB:
				case GET_FORMAT:
				case GET_LOCK:
				case GLENGTH:
				case GREATEST:
				case GTID_SUBSET:
				case GTID_SUBTRACT:
				case HEX:
				case IFNULL:
				case INET6_ATON:
				case INET6_NTOA:
				case INET_ATON:
				case INET_NTOA:
				case INSTR:
				case INTERIORRINGN:
				case INTERSECTS:
				case ISCLOSED:
				case ISEMPTY:
				case ISNULL:
				case ISSIMPLE:
				case IS_FREE_LOCK:
				case IS_IPV4:
				case IS_IPV4_COMPAT:
				case IS_IPV4_MAPPED:
				case IS_IPV6:
				case IS_USED_LOCK:
				case LAST_INSERT_ID:
				case LCASE:
				case LEAST:
				case LENGTH:
				case LINEFROMTEXT:
				case LINEFROMWKB:
				case LINESTRINGFROMTEXT:
				case LINESTRINGFROMWKB:
				case LN:
				case LOAD_FILE:
				case LOCATE:
				case LOG:
				case LOG10:
				case LOG2:
				case LOWER:
				case LPAD:
				case LTRIM:
				case MAKEDATE:
				case MAKETIME:
				case MAKE_SET:
				case MASTER_POS_WAIT:
				case MBRCONTAINS:
				case MBRDISJOINT:
				case MBREQUAL:
				case MBRINTERSECTS:
				case MBROVERLAPS:
				case MBRTOUCHES:
				case MBRWITHIN:
				case MD5:
				case MLINEFROMTEXT:
				case MLINEFROMWKB:
				case MONTHNAME:
				case MPOINTFROMTEXT:
				case MPOINTFROMWKB:
				case MPOLYFROMTEXT:
				case MPOLYFROMWKB:
				case MULTILINESTRINGFROMTEXT:
				case MULTILINESTRINGFROMWKB:
				case MULTIPOINTFROMTEXT:
				case MULTIPOINTFROMWKB:
				case MULTIPOLYGONFROMTEXT:
				case MULTIPOLYGONFROMWKB:
				case NAME_CONST:
				case NULLIF:
				case NUMGEOMETRIES:
				case NUMINTERIORRINGS:
				case NUMPOINTS:
				case OCT:
				case OCTET_LENGTH:
				case ORD:
				case OVERLAPS:
				case PERIOD_ADD:
				case PERIOD_DIFF:
				case PI:
				case POINTFROMTEXT:
				case POINTFROMWKB:
				case POINTN:
				case POLYFROMTEXT:
				case POLYFROMWKB:
				case POLYGONFROMTEXT:
				case POLYGONFROMWKB:
				case POW:
				case POWER:
				case QUOTE:
				case RADIANS:
				case RAND:
				case RANDOM:
				case RANDOM_BYTES:
				case RELEASE_LOCK:
				case REVERSE:
				case ROUND:
				case ROW_COUNT:
				case RPAD:
				case RTRIM:
				case SEC_TO_TIME:
				case SECONDARY_ENGINE_ATTRIBUTE:
				case SENSITIVE_VARIABLES_OBSERVER:
				case SESSION_USER:
				case SHA:
				case SHA1:
				case SHA2:
				case SCHEMA_NAME:
				case SIGN:
				case SIN:
				case SLEEP:
				case SOUNDEX:
				case SQL_THREAD_WAIT_AFTER_GTIDS:
				case SQRT:
				case SRID:
				case STARTPOINT:
				case STRCMP:
				case STR_TO_DATE:
				case ST_AREA:
				case ST_ASBINARY:
				case ST_ASTEXT:
				case ST_ASWKB:
				case ST_ASWKT:
				case ST_BUFFER:
				case ST_CENTROID:
				case ST_CONTAINS:
				case ST_CROSSES:
				case ST_DIFFERENCE:
				case ST_DIMENSION:
				case ST_DISJOINT:
				case ST_DISTANCE:
				case ST_ENDPOINT:
				case ST_ENVELOPE:
				case ST_EQUALS:
				case ST_EXTERIORRING:
				case ST_GEOMCOLLFROMTEXT:
				case ST_GEOMCOLLFROMTXT:
				case ST_GEOMCOLLFROMWKB:
				case ST_GEOMETRYCOLLECTIONFROMTEXT:
				case ST_GEOMETRYCOLLECTIONFROMWKB:
				case ST_GEOMETRYFROMTEXT:
				case ST_GEOMETRYFROMWKB:
				case ST_GEOMETRYN:
				case ST_GEOMETRYTYPE:
				case ST_GEOMFROMTEXT:
				case ST_GEOMFROMWKB:
				case ST_INTERIORRINGN:
				case ST_INTERSECTION:
				case ST_INTERSECTS:
				case ST_ISCLOSED:
				case ST_ISEMPTY:
				case ST_ISSIMPLE:
				case ST_LINEFROMTEXT:
				case ST_LINEFROMWKB:
				case ST_LINESTRINGFROMTEXT:
				case ST_LINESTRINGFROMWKB:
				case ST_NUMGEOMETRIES:
				case ST_NUMINTERIORRING:
				case ST_NUMINTERIORRINGS:
				case ST_NUMPOINTS:
				case ST_OVERLAPS:
				case ST_POINTFROMTEXT:
				case ST_POINTFROMWKB:
				case ST_POINTN:
				case ST_POLYFROMTEXT:
				case ST_POLYFROMWKB:
				case ST_POLYGONFROMTEXT:
				case ST_POLYGONFROMWKB:
				case ST_SRID:
				case ST_STARTPOINT:
				case ST_SYMDIFFERENCE:
				case ST_TOUCHES:
				case ST_UNION:
				case ST_WITHIN:
				case ST_X:
				case ST_Y:
				case SUBDATE:
				case SUBSTRING_INDEX:
				case SUBTIME:
				case SYSTEM_USER:
				case SYSTEM:
				case TAN:
				case TELEMETRY_LOG_ADMIN:
				case TIMEDIFF:
				case TIMESTAMPADD:
				case TIMESTAMPDIFF:
				case TIME_FORMAT:
				case TIME_TO_SEC:
				case TOUCHES:
				case TO_BASE64:
				case TO_DAYS:
				case TO_SECONDS:
				case TP_CONNECTION_ADMIN:
				case UCASE:
				case UNCOMPRESS:
				case UNCOMPRESSED_LENGTH:
				case UNHEX:
				case UNIX_TIMESTAMP:
				case UPDATEXML:
				case UPPER:
				case UUID:
				case UUID_SHORT:
				case VALIDATE_PASSWORD_STRENGTH:
				case VERSION:
				case VERSIONING:
				case WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS:
				case WEEKDAY:
				case WEEKOFYEAR:
				case WEIGHT_STRING:
				case WITHIN:
				case YEARWEEK:
				case Y_FUNCTION:
				case X_FUNCTION:
				case VIA:
				case LASTVAL:
				case NEXTVAL:
				case SETVAL:
				case PREVIOUS:
				case PERSISTENT:
				case BINLOG_MONITOR:
				case BINLOG_REPLAY:
				case FEDERATED_ADMIN:
				case READ_ONLY_ADMIN:
				case REPLICA:
				case REPLICATION_MASTER_ADMIN:
				case MONITOR:
				case READ_ONLY:
				case REPLAY:
				case MOD:
				case CHARSET_REVERSE_QOUTE_STRING:
				case STRING_LITERAL:
				case ID:
					{
					setState(3188);
					uidList();
					}
					break;
				case ALL:
					{
					setState(3189);
					match(ALL);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case CHECK:
				_localctx = new AlterByCheckPartitionContext(_localctx);
				enterOuterAlt(_localctx, 10);
				{
				setState(3192);
				match(CHECK);
				setState(3193);
				match(PARTITION);
				setState(3196);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case ARRAY:
				case ATTRIBUTE:
				case BUCKETS:
				case CONDITION:
				case CURRENT:
				case CURRENT_ROLE:
				case CURRENT_USER:
				case DATABASE:
				case DEFAULT:
				case DIAGNOSTICS:
				case EMPTY:
				case ENFORCED:
				case EXCEPT:
				case GROUP:
				case GROUP_REPLICATION_STREAM:
				case IF:
				case IGNORED:
				case INSERT:
				case LATERAL:
				case LEFT:
				case LOCKED:
				case MAXVALUE:
				case MINVALUE:
				case NUMBER:
				case OPTIONAL:
				case ORDER:
				case PRIMARY:
				case REPEAT:
				case REPLACE:
				case RIGHT:
				case SCHEMA:
				case SKIP_:
				case SKIP_QUERY_REWRITE:
				case STACKED:
				case STATEMENT:
				case DATE:
				case TIME:
				case TIMESTAMP:
				case DATETIME:
				case YEAR:
				case NATIONAL:
				case BINARY:
				case TEXT:
				case ENUM:
				case SERIAL:
				case JSON_ARRAY:
				case JSON_ARRAYAGG:
				case JSON_ARRAY_APPEND:
				case JSON_ARRAY_INSERT:
				case JSON_CONTAINS:
				case JSON_CONTAINS_PATH:
				case JSON_DEPTH:
				case JSON_EXTRACT:
				case JSON_INSERT:
				case JSON_KEYS:
				case JSON_LENGTH:
				case JSON_MERGE:
				case JSON_MERGE_PATCH:
				case JSON_MERGE_PRESERVE:
				case JSON_OBJECT:
				case JSON_OBJECTAGG:
				case JSON_OVERLAPS:
				case JSON_PRETTY:
				case JSON_QUOTE:
				case JSON_REMOVE:
				case JSON_REPLACE:
				case JSON_SCHEMA_VALID:
				case JSON_SCHEMA_VALIDATION_REPORT:
				case JSON_SEARCH:
				case JSON_SET:
				case JSON_STORAGE_FREE:
				case JSON_STORAGE_SIZE:
				case JSON_TABLE:
				case JSON_TYPE:
				case JSON_UNQUOTE:
				case JSON_VALID:
				case JSON_VALUE:
				case NESTED:
				case ORDINALITY:
				case PATH:
				case AVG:
				case BIT_AND:
				case BIT_OR:
				case BIT_XOR:
				case COUNT:
				case CUME_DIST:
				case DENSE_RANK:
				case FIRST_VALUE:
				case GROUP_CONCAT:
				case LAG:
				case LAST_VALUE:
				case LEAD:
				case MAX:
				case MIN:
				case NTILE:
				case NTH_VALUE:
				case PERCENT_RANK:
				case RANK:
				case ROW_NUMBER:
				case STD:
				case STDDEV:
				case STDDEV_POP:
				case STDDEV_SAMP:
				case SUM:
				case VAR_POP:
				case VAR_SAMP:
				case VARIANCE:
				case CURRENT_DATE:
				case CURRENT_TIME:
				case CURRENT_TIMESTAMP:
				case LOCALTIME:
				case CURDATE:
				case CURTIME:
				case DATE_ADD:
				case DATE_SUB:
				case LOCALTIMESTAMP:
				case NOW:
				case POSITION:
				case SUBSTR:
				case SUBSTRING:
				case SYSDATE:
				case TRIM:
				case UTC_DATE:
				case UTC_TIME:
				case UTC_TIMESTAMP:
				case ACCOUNT:
				case ACTION:
				case AFTER:
				case AGGREGATE:
				case ALGORITHM:
				case ANY:
				case AT:
				case AUTHORS:
				case AUTOCOMMIT:
				case AUTOEXTEND_SIZE:
				case AUTO_INCREMENT:
				case AVG_ROW_LENGTH:
				case BEGIN:
				case BINLOG:
				case BIT:
				case BLOCK:
				case BOOL:
				case BOOLEAN:
				case BTREE:
				case CACHE:
				case CASCADED:
				case CHAIN:
				case CHANGED:
				case CHANNEL:
				case CHECKSUM:
				case PAGE_CHECKSUM:
				case CIPHER:
				case CLASS_ORIGIN:
				case CLIENT:
				case CLOSE:
				case CLUSTERING:
				case COALESCE:
				case CODE:
				case COLUMNS:
				case COLUMN_FORMAT:
				case COLUMN_NAME:
				case COMMENT:
				case COMMIT:
				case COMPACT:
				case COMPLETION:
				case COMPRESSED:
				case COMPRESSION:
				case CONCURRENT:
				case CONNECT:
				case CONNECTION:
				case CONSISTENT:
				case CONSTRAINT_CATALOG:
				case CONSTRAINT_SCHEMA:
				case CONSTRAINT_NAME:
				case CONTAINS:
				case CONTEXT:
				case CONTRIBUTORS:
				case COPY:
				case CPU:
				case CYCLE:
				case CURSOR_NAME:
				case DATA:
				case DATAFILE:
				case DEALLOCATE:
				case DEFAULT_AUTH:
				case DEFINER:
				case DELAY_KEY_WRITE:
				case DES_KEY_FILE:
				case DIRECTORY:
				case DISABLE:
				case DISCARD:
				case DISK:
				case DO:
				case DUMPFILE:
				case DUPLICATE:
				case DYNAMIC:
				case ENABLE:
				case ENCRYPTED:
				case ENCRYPTION:
				case ENCRYPTION_KEY_ID:
				case END:
				case ENDS:
				case ENGINE:
				case ENGINES:
				case ERROR:
				case ERRORS:
				case ESCAPE:
				case EVEN:
				case EVENT:
				case EVENTS:
				case EVERY:
				case EXCHANGE:
				case EXCLUSIVE:
				case EXPIRE:
				case EXPORT:
				case EXTENDED:
				case EXTENT_SIZE:
				case FAILED_LOGIN_ATTEMPTS:
				case FAST:
				case FAULTS:
				case FIELDS:
				case FILE_BLOCK_SIZE:
				case FILTER:
				case FIRST:
				case FIXED:
				case FLUSH:
				case FOLLOWS:
				case FOUND:
				case FULL:
				case FUNCTION:
				case GENERAL:
				case GLOBAL:
				case GRANTS:
				case GROUP_REPLICATION:
				case HANDLER:
				case HASH:
				case HELP:
				case HISTORY:
				case HOST:
				case HOSTS:
				case IDENTIFIED:
				case IGNORE_SERVER_IDS:
				case IMPORT:
				case INCREMENT:
				case INDEXES:
				case INITIAL_SIZE:
				case INPLACE:
				case INSERT_METHOD:
				case INSTALL:
				case INSTANCE:
				case INSTANT:
				case INVISIBLE:
				case INVOKER:
				case IO:
				case IO_THREAD:
				case IPC:
				case ISOLATION:
				case ISSUER:
				case JSON:
				case KEY_BLOCK_SIZE:
				case LANGUAGE:
				case LAST:
				case LEAVES:
				case LESS:
				case LEVEL:
				case LIST:
				case LOCAL:
				case LOGFILE:
				case LOGS:
				case MASTER:
				case MASTER_AUTO_POSITION:
				case MASTER_CONNECT_RETRY:
				case MASTER_DELAY:
				case MASTER_HEARTBEAT_PERIOD:
				case MASTER_HOST:
				case MASTER_LOG_FILE:
				case MASTER_LOG_POS:
				case MASTER_PASSWORD:
				case MASTER_PORT:
				case MASTER_RETRY_COUNT:
				case MASTER_SSL:
				case MASTER_SSL_CA:
				case MASTER_SSL_CAPATH:
				case MASTER_SSL_CERT:
				case MASTER_SSL_CIPHER:
				case MASTER_SSL_CRL:
				case MASTER_SSL_CRLPATH:
				case MASTER_SSL_KEY:
				case MASTER_TLS_VERSION:
				case MASTER_USER:
				case MAX_CONNECTIONS_PER_HOUR:
				case MAX_QUERIES_PER_HOUR:
				case MAX_ROWS:
				case MAX_SIZE:
				case MAX_UPDATES_PER_HOUR:
				case MAX_USER_CONNECTIONS:
				case MEDIUM:
				case MEMBER:
				case MERGE:
				case MESSAGE_TEXT:
				case MID:
				case MIGRATE:
				case MIN_ROWS:
				case MODE:
				case MODIFY:
				case MUTEX:
				case MYSQL:
				case MYSQL_ERRNO:
				case NAME:
				case NAMES:
				case NCHAR:
				case NEVER:
				case NEXT:
				case NO:
				case NOCACHE:
				case NOCOPY:
				case NOCYCLE:
				case NOMAXVALUE:
				case NOMINVALUE:
				case NOWAIT:
				case NODEGROUP:
				case NONE:
				case ODBC:
				case OFFLINE:
				case OFFSET:
				case OF:
				case OJ:
				case OLD_PASSWORD:
				case ONE:
				case ONLINE:
				case ONLY:
				case OPEN:
				case OPTIMIZER_COSTS:
				case OPTIONS:
				case OWNER:
				case PACK_KEYS:
				case PAGE:
				case PARSER:
				case PARTIAL:
				case PARTITIONING:
				case PARTITIONS:
				case PASSWORD:
				case PASSWORD_LOCK_TIME:
				case PHASE:
				case PLUGIN:
				case PLUGIN_DIR:
				case PLUGINS:
				case PORT:
				case PRECEDES:
				case PREPARE:
				case PRESERVE:
				case PREV:
				case PROCESSLIST:
				case PROFILE:
				case PROFILES:
				case PROXY:
				case QUERY:
				case QUICK:
				case REBUILD:
				case RECOVER:
				case RECURSIVE:
				case REDO_BUFFER_SIZE:
				case REDUNDANT:
				case RELAY:
				case RELAY_LOG_FILE:
				case RELAY_LOG_POS:
				case RELAYLOG:
				case REMOVE:
				case REORGANIZE:
				case REPAIR:
				case REPLICATE_DO_DB:
				case REPLICATE_DO_TABLE:
				case REPLICATE_IGNORE_DB:
				case REPLICATE_IGNORE_TABLE:
				case REPLICATE_REWRITE_DB:
				case REPLICATE_WILD_DO_TABLE:
				case REPLICATE_WILD_IGNORE_TABLE:
				case REPLICATION:
				case RESET:
				case RESTART:
				case RESUME:
				case RETURNED_SQLSTATE:
				case RETURNING:
				case RETURNS:
				case REUSE:
				case ROLE:
				case ROLLBACK:
				case ROLLUP:
				case ROTATE:
				case ROW:
				case ROWS:
				case ROW_FORMAT:
				case RTREE:
				case SAVEPOINT:
				case SCHEDULE:
				case SECURITY:
				case SEQUENCE:
				case SERVER:
				case SESSION:
				case SHARE:
				case SHARED:
				case SIGNED:
				case SIMPLE:
				case SLAVE:
				case SLOW:
				case SNAPSHOT:
				case SOCKET:
				case SOME:
				case SONAME:
				case SOUNDS:
				case SOURCE:
				case SQL_AFTER_GTIDS:
				case SQL_AFTER_MTS_GAPS:
				case SQL_BEFORE_GTIDS:
				case SQL_BUFFER_RESULT:
				case SQL_CACHE:
				case SQL_NO_CACHE:
				case SQL_THREAD:
				case START:
				case STARTS:
				case STATS_AUTO_RECALC:
				case STATS_PERSISTENT:
				case STATS_SAMPLE_PAGES:
				case STATUS:
				case STOP:
				case STORAGE:
				case STRING:
				case SUBCLASS_ORIGIN:
				case SUBJECT:
				case SUBPARTITION:
				case SUBPARTITIONS:
				case SUSPEND:
				case SWAPS:
				case SWITCHES:
				case TABLE_NAME:
				case TABLESPACE:
				case TABLE_TYPE:
				case TEMPORARY:
				case TEMPTABLE:
				case THAN:
				case TRADITIONAL:
				case TRANSACTION:
				case TRANSACTIONAL:
				case TRIGGERS:
				case TRUNCATE:
				case UNBOUNDED:
				case UNDEFINED:
				case UNDOFILE:
				case UNDO_BUFFER_SIZE:
				case UNINSTALL:
				case UNKNOWN:
				case UNTIL:
				case UPGRADE:
				case USER:
				case USE_FRM:
				case USER_RESOURCES:
				case VALIDATION:
				case VALUE:
				case VARIABLES:
				case VIEW:
				case VIRTUAL:
				case VISIBLE:
				case WAIT:
				case WARNINGS:
				case WITHOUT:
				case WORK:
				case WRAPPER:
				case X509:
				case XA:
				case XML:
				case YES:
				case EUR:
				case USA:
				case JIS:
				case ISO:
				case INTERNAL:
				case QUARTER:
				case MONTH:
				case DAY:
				case HOUR:
				case MINUTE:
				case WEEK:
				case SECOND:
				case MICROSECOND:
				case USER_STATISTICS:
				case CLIENT_STATISTICS:
				case INDEX_STATISTICS:
				case TABLE_STATISTICS:
				case FIREWALL_RULES:
				case ADMIN:
				case APPLICATION_PASSWORD_ADMIN:
				case AUDIT_ADMIN:
				case AUDIT_ABORT_EXEMPT:
				case AUTHENTICATION_POLICY_ADMIN:
				case BACKUP_ADMIN:
				case BINLOG_ADMIN:
				case BINLOG_ENCRYPTION_ADMIN:
				case CLONE_ADMIN:
				case CONNECTION_ADMIN:
				case ENCRYPTION_KEY_ADMIN:
				case EXECUTE:
				case FILE:
				case FIREWALL_ADMIN:
				case FIREWALL_EXEMPT:
				case FIREWALL_USER:
				case FLUSH_OPTIMIZER_COSTS:
				case FLUSH_STATUS:
				case FLUSH_TABLES:
				case FLUSH_USER_RESOURCES:
				case GROUP_REPLICATION_ADMIN:
				case INNODB_REDO_LOG_ARCHIVE:
				case INNODB_REDO_LOG_ENABLE:
				case INVOKE:
				case LAMBDA:
				case NDB_STORED_USER:
				case PASSWORDLESS_USER_ADMIN:
				case PERSIST_RO_VARIABLES_ADMIN:
				case PRIVILEGES:
				case PROCESS:
				case RELOAD:
				case REPLICATION_APPLIER:
				case REPLICATION_SLAVE_ADMIN:
				case RESOURCE_GROUP_ADMIN:
				case RESOURCE_GROUP_USER:
				case ROLE_ADMIN:
				case ROUTINE:
				case S3:
				case SESSION_VARIABLES_ADMIN:
				case SET_USER_ID:
				case SHOW_ROUTINE:
				case SHUTDOWN:
				case SUPER:
				case SYSTEM_VARIABLES_ADMIN:
				case TABLES:
				case TABLE_ENCRYPTION_ADMIN:
				case VERSION_TOKEN_ADMIN:
				case XA_RECOVER_ADMIN:
				case ARMSCII8:
				case ASCII:
				case BIG5:
				case CP1250:
				case CP1251:
				case CP1256:
				case CP1257:
				case CP850:
				case CP852:
				case CP866:
				case CP932:
				case DEC8:
				case EUCJPMS:
				case EUCKR:
				case GB18030:
				case GB2312:
				case GBK:
				case GEOSTD8:
				case GREEK:
				case HEBREW:
				case HP8:
				case KEYBCS2:
				case KOI8R:
				case KOI8U:
				case LATIN1:
				case LATIN2:
				case LATIN5:
				case LATIN7:
				case MACCE:
				case MACROMAN:
				case SJIS:
				case SWE7:
				case TIS620:
				case UCS2:
				case UJIS:
				case UTF16:
				case UTF16LE:
				case UTF32:
				case UTF8:
				case UTF8MB3:
				case UTF8MB4:
				case ARCHIVE:
				case BLACKHOLE:
				case CSV:
				case FEDERATED:
				case INNODB:
				case MEMORY:
				case MRG_MYISAM:
				case MYISAM:
				case NDB:
				case NDBCLUSTER:
				case PERFORMANCE_SCHEMA:
				case TOKUDB:
				case REPEATABLE:
				case COMMITTED:
				case UNCOMMITTED:
				case SERIALIZABLE:
				case GEOMETRYCOLLECTION:
				case GEOMETRY:
				case LINESTRING:
				case MULTILINESTRING:
				case MULTIPOINT:
				case MULTIPOLYGON:
				case POINT:
				case POLYGON:
				case ABS:
				case ACOS:
				case ADDDATE:
				case ADDTIME:
				case AES_DECRYPT:
				case AES_ENCRYPT:
				case AREA:
				case ASBINARY:
				case ASIN:
				case ASTEXT:
				case ASWKB:
				case ASWKT:
				case ASYMMETRIC_DECRYPT:
				case ASYMMETRIC_DERIVE:
				case ASYMMETRIC_ENCRYPT:
				case ASYMMETRIC_SIGN:
				case ASYMMETRIC_VERIFY:
				case ATAN:
				case ATAN2:
				case BENCHMARK:
				case BIN:
				case BIT_COUNT:
				case BIT_LENGTH:
				case BUFFER:
				case CATALOG_NAME:
				case CEIL:
				case CEILING:
				case CENTROID:
				case CHARACTER_LENGTH:
				case CHARSET:
				case CHAR_LENGTH:
				case COERCIBILITY:
				case COLLATION:
				case COMPRESS:
				case CONCAT:
				case CONCAT_WS:
				case CONNECTION_ID:
				case CONV:
				case CONVERT_TZ:
				case COS:
				case COT:
				case CRC32:
				case CREATE_ASYMMETRIC_PRIV_KEY:
				case CREATE_ASYMMETRIC_PUB_KEY:
				case CREATE_DH_PARAMETERS:
				case CREATE_DIGEST:
				case CROSSES:
				case DATEDIFF:
				case DATE_FORMAT:
				case DAYNAME:
				case DAYOFMONTH:
				case DAYOFWEEK:
				case DAYOFYEAR:
				case DECODE:
				case DEGREES:
				case DES_DECRYPT:
				case DES_ENCRYPT:
				case DIMENSION:
				case DISJOINT:
				case ELT:
				case ENCODE:
				case ENCRYPT:
				case ENDPOINT:
				case ENGINE_ATTRIBUTE:
				case ENVELOPE:
				case EQUALS:
				case EXP:
				case EXPORT_SET:
				case EXTERIORRING:
				case EXTRACTVALUE:
				case FIELD:
				case FIND_IN_SET:
				case FLOOR:
				case FORMAT:
				case FOUND_ROWS:
				case FROM_BASE64:
				case FROM_DAYS:
				case FROM_UNIXTIME:
				case GEOMCOLLFROMTEXT:
				case GEOMCOLLFROMWKB:
				case GEOMETRYCOLLECTIONFROMTEXT:
				case GEOMETRYCOLLECTIONFROMWKB:
				case GEOMETRYFROMTEXT:
				case GEOMETRYFROMWKB:
				case GEOMETRYN:
				case GEOMETRYTYPE:
				case GEOMFROMTEXT:
				case GEOMFROMWKB:
				case GET_FORMAT:
				case GET_LOCK:
				case GLENGTH:
				case GREATEST:
				case GTID_SUBSET:
				case GTID_SUBTRACT:
				case HEX:
				case IFNULL:
				case INET6_ATON:
				case INET6_NTOA:
				case INET_ATON:
				case INET_NTOA:
				case INSTR:
				case INTERIORRINGN:
				case INTERSECTS:
				case ISCLOSED:
				case ISEMPTY:
				case ISNULL:
				case ISSIMPLE:
				case IS_FREE_LOCK:
				case IS_IPV4:
				case IS_IPV4_COMPAT:
				case IS_IPV4_MAPPED:
				case IS_IPV6:
				case IS_USED_LOCK:
				case LAST_INSERT_ID:
				case LCASE:
				case LEAST:
				case LENGTH:
				case LINEFROMTEXT:
				case LINEFROMWKB:
				case LINESTRINGFROMTEXT:
				case LINESTRINGFROMWKB:
				case LN:
				case LOAD_FILE:
				case LOCATE:
				case LOG:
				case LOG10:
				case LOG2:
				case LOWER:
				case LPAD:
				case LTRIM:
				case MAKEDATE:
				case MAKETIME:
				case MAKE_SET:
				case MASTER_POS_WAIT:
				case MBRCONTAINS:
				case MBRDISJOINT:
				case MBREQUAL:
				case MBRINTERSECTS:
				case MBROVERLAPS:
				case MBRTOUCHES:
				case MBRWITHIN:
				case MD5:
				case MLINEFROMTEXT:
				case MLINEFROMWKB:
				case MONTHNAME:
				case MPOINTFROMTEXT:
				case MPOINTFROMWKB:
				case MPOLYFROMTEXT:
				case MPOLYFROMWKB:
				case MULTILINESTRINGFROMTEXT:
				case MULTILINESTRINGFROMWKB:
				case MULTIPOINTFROMTEXT:
				case MULTIPOINTFROMWKB:
				case MULTIPOLYGONFROMTEXT:
				case MULTIPOLYGONFROMWKB:
				case NAME_CONST:
				case NULLIF:
				case NUMGEOMETRIES:
				case NUMINTERIORRINGS:
				case NUMPOINTS:
				case OCT:
				case OCTET_LENGTH:
				case ORD:
				case OVERLAPS:
				case PERIOD_ADD:
				case PERIOD_DIFF:
				case PI:
				case POINTFROMTEXT:
				case POINTFROMWKB:
				case POINTN:
				case POLYFROMTEXT:
				case POLYFROMWKB:
				case POLYGONFROMTEXT:
				case POLYGONFROMWKB:
				case POW:
				case POWER:
				case QUOTE:
				case RADIANS:
				case RAND:
				case RANDOM:
				case RANDOM_BYTES:
				case RELEASE_LOCK:
				case REVERSE:
				case ROUND:
				case ROW_COUNT:
				case RPAD:
				case RTRIM:
				case SEC_TO_TIME:
				case SECONDARY_ENGINE_ATTRIBUTE:
				case SENSITIVE_VARIABLES_OBSERVER:
				case SESSION_USER:
				case SHA:
				case SHA1:
				case SHA2:
				case SCHEMA_NAME:
				case SIGN:
				case SIN:
				case SLEEP:
				case SOUNDEX:
				case SQL_THREAD_WAIT_AFTER_GTIDS:
				case SQRT:
				case SRID:
				case STARTPOINT:
				case STRCMP:
				case STR_TO_DATE:
				case ST_AREA:
				case ST_ASBINARY:
				case ST_ASTEXT:
				case ST_ASWKB:
				case ST_ASWKT:
				case ST_BUFFER:
				case ST_CENTROID:
				case ST_CONTAINS:
				case ST_CROSSES:
				case ST_DIFFERENCE:
				case ST_DIMENSION:
				case ST_DISJOINT:
				case ST_DISTANCE:
				case ST_ENDPOINT:
				case ST_ENVELOPE:
				case ST_EQUALS:
				case ST_EXTERIORRING:
				case ST_GEOMCOLLFROMTEXT:
				case ST_GEOMCOLLFROMTXT:
				case ST_GEOMCOLLFROMWKB:
				case ST_GEOMETRYCOLLECTIONFROMTEXT:
				case ST_GEOMETRYCOLLECTIONFROMWKB:
				case ST_GEOMETRYFROMTEXT:
				case ST_GEOMETRYFROMWKB:
				case ST_GEOMETRYN:
				case ST_GEOMETRYTYPE:
				case ST_GEOMFROMTEXT:
				case ST_GEOMFROMWKB:
				case ST_INTERIORRINGN:
				case ST_INTERSECTION:
				case ST_INTERSECTS:
				case ST_ISCLOSED:
				case ST_ISEMPTY:
				case ST_ISSIMPLE:
				case ST_LINEFROMTEXT:
				case ST_LINEFROMWKB:
				case ST_LINESTRINGFROMTEXT:
				case ST_LINESTRINGFROMWKB:
				case ST_NUMGEOMETRIES:
				case ST_NUMINTERIORRING:
				case ST_NUMINTERIORRINGS:
				case ST_NUMPOINTS:
				case ST_OVERLAPS:
				case ST_POINTFROMTEXT:
				case ST_POINTFROMWKB:
				case ST_POINTN:
				case ST_POLYFROMTEXT:
				case ST_POLYFROMWKB:
				case ST_POLYGONFROMTEXT:
				case ST_POLYGONFROMWKB:
				case ST_SRID:
				case ST_STARTPOINT:
				case ST_SYMDIFFERENCE:
				case ST_TOUCHES:
				case ST_UNION:
				case ST_WITHIN:
				case ST_X:
				case ST_Y:
				case SUBDATE:
				case SUBSTRING_INDEX:
				case SUBTIME:
				case SYSTEM_USER:
				case SYSTEM:
				case TAN:
				case TELEMETRY_LOG_ADMIN:
				case TIMEDIFF:
				case TIMESTAMPADD:
				case TIMESTAMPDIFF:
				case TIME_FORMAT:
				case TIME_TO_SEC:
				case TOUCHES:
				case TO_BASE64:
				case TO_DAYS:
				case TO_SECONDS:
				case TP_CONNECTION_ADMIN:
				case UCASE:
				case UNCOMPRESS:
				case UNCOMPRESSED_LENGTH:
				case UNHEX:
				case UNIX_TIMESTAMP:
				case UPDATEXML:
				case UPPER:
				case UUID:
				case UUID_SHORT:
				case VALIDATE_PASSWORD_STRENGTH:
				case VERSION:
				case VERSIONING:
				case WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS:
				case WEEKDAY:
				case WEEKOFYEAR:
				case WEIGHT_STRING:
				case WITHIN:
				case YEARWEEK:
				case Y_FUNCTION:
				case X_FUNCTION:
				case VIA:
				case LASTVAL:
				case NEXTVAL:
				case SETVAL:
				case PREVIOUS:
				case PERSISTENT:
				case BINLOG_MONITOR:
				case BINLOG_REPLAY:
				case FEDERATED_ADMIN:
				case READ_ONLY_ADMIN:
				case REPLICA:
				case REPLICATION_MASTER_ADMIN:
				case MONITOR:
				case READ_ONLY:
				case REPLAY:
				case MOD:
				case CHARSET_REVERSE_QOUTE_STRING:
				case STRING_LITERAL:
				case ID:
					{
					setState(3194);
					uidList();
					}
					break;
				case ALL:
					{
					setState(3195);
					match(ALL);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case OPTIMIZE:
				_localctx = new AlterByOptimizePartitionContext(_localctx);
				enterOuterAlt(_localctx, 11);
				{
				setState(3198);
				match(OPTIMIZE);
				setState(3199);
				match(PARTITION);
				setState(3202);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case ARRAY:
				case ATTRIBUTE:
				case BUCKETS:
				case CONDITION:
				case CURRENT:
				case CURRENT_ROLE:
				case CURRENT_USER:
				case DATABASE:
				case DEFAULT:
				case DIAGNOSTICS:
				case EMPTY:
				case ENFORCED:
				case EXCEPT:
				case GROUP:
				case GROUP_REPLICATION_STREAM:
				case IF:
				case IGNORED:
				case INSERT:
				case LATERAL:
				case LEFT:
				case LOCKED:
				case MAXVALUE:
				case MINVALUE:
				case NUMBER:
				case OPTIONAL:
				case ORDER:
				case PRIMARY:
				case REPEAT:
				case REPLACE:
				case RIGHT:
				case SCHEMA:
				case SKIP_:
				case SKIP_QUERY_REWRITE:
				case STACKED:
				case STATEMENT:
				case DATE:
				case TIME:
				case TIMESTAMP:
				case DATETIME:
				case YEAR:
				case NATIONAL:
				case BINARY:
				case TEXT:
				case ENUM:
				case SERIAL:
				case JSON_ARRAY:
				case JSON_ARRAYAGG:
				case JSON_ARRAY_APPEND:
				case JSON_ARRAY_INSERT:
				case JSON_CONTAINS:
				case JSON_CONTAINS_PATH:
				case JSON_DEPTH:
				case JSON_EXTRACT:
				case JSON_INSERT:
				case JSON_KEYS:
				case JSON_LENGTH:
				case JSON_MERGE:
				case JSON_MERGE_PATCH:
				case JSON_MERGE_PRESERVE:
				case JSON_OBJECT:
				case JSON_OBJECTAGG:
				case JSON_OVERLAPS:
				case JSON_PRETTY:
				case JSON_QUOTE:
				case JSON_REMOVE:
				case JSON_REPLACE:
				case JSON_SCHEMA_VALID:
				case JSON_SCHEMA_VALIDATION_REPORT:
				case JSON_SEARCH:
				case JSON_SET:
				case JSON_STORAGE_FREE:
				case JSON_STORAGE_SIZE:
				case JSON_TABLE:
				case JSON_TYPE:
				case JSON_UNQUOTE:
				case JSON_VALID:
				case JSON_VALUE:
				case NESTED:
				case ORDINALITY:
				case PATH:
				case AVG:
				case BIT_AND:
				case BIT_OR:
				case BIT_XOR:
				case COUNT:
				case CUME_DIST:
				case DENSE_RANK:
				case FIRST_VALUE:
				case GROUP_CONCAT:
				case LAG:
				case LAST_VALUE:
				case LEAD:
				case MAX:
				case MIN:
				case NTILE:
				case NTH_VALUE:
				case PERCENT_RANK:
				case RANK:
				case ROW_NUMBER:
				case STD:
				case STDDEV:
				case STDDEV_POP:
				case STDDEV_SAMP:
				case SUM:
				case VAR_POP:
				case VAR_SAMP:
				case VARIANCE:
				case CURRENT_DATE:
				case CURRENT_TIME:
				case CURRENT_TIMESTAMP:
				case LOCALTIME:
				case CURDATE:
				case CURTIME:
				case DATE_ADD:
				case DATE_SUB:
				case LOCALTIMESTAMP:
				case NOW:
				case POSITION:
				case SUBSTR:
				case SUBSTRING:
				case SYSDATE:
				case TRIM:
				case UTC_DATE:
				case UTC_TIME:
				case UTC_TIMESTAMP:
				case ACCOUNT:
				case ACTION:
				case AFTER:
				case AGGREGATE:
				case ALGORITHM:
				case ANY:
				case AT:
				case AUTHORS:
				case AUTOCOMMIT:
				case AUTOEXTEND_SIZE:
				case AUTO_INCREMENT:
				case AVG_ROW_LENGTH:
				case BEGIN:
				case BINLOG:
				case BIT:
				case BLOCK:
				case BOOL:
				case BOOLEAN:
				case BTREE:
				case CACHE:
				case CASCADED:
				case CHAIN:
				case CHANGED:
				case CHANNEL:
				case CHECKSUM:
				case PAGE_CHECKSUM:
				case CIPHER:
				case CLASS_ORIGIN:
				case CLIENT:
				case CLOSE:
				case CLUSTERING:
				case COALESCE:
				case CODE:
				case COLUMNS:
				case COLUMN_FORMAT:
				case COLUMN_NAME:
				case COMMENT:
				case COMMIT:
				case COMPACT:
				case COMPLETION:
				case COMPRESSED:
				case COMPRESSION:
				case CONCURRENT:
				case CONNECT:
				case CONNECTION:
				case CONSISTENT:
				case CONSTRAINT_CATALOG:
				case CONSTRAINT_SCHEMA:
				case CONSTRAINT_NAME:
				case CONTAINS:
				case CONTEXT:
				case CONTRIBUTORS:
				case COPY:
				case CPU:
				case CYCLE:
				case CURSOR_NAME:
				case DATA:
				case DATAFILE:
				case DEALLOCATE:
				case DEFAULT_AUTH:
				case DEFINER:
				case DELAY_KEY_WRITE:
				case DES_KEY_FILE:
				case DIRECTORY:
				case DISABLE:
				case DISCARD:
				case DISK:
				case DO:
				case DUMPFILE:
				case DUPLICATE:
				case DYNAMIC:
				case ENABLE:
				case ENCRYPTED:
				case ENCRYPTION:
				case ENCRYPTION_KEY_ID:
				case END:
				case ENDS:
				case ENGINE:
				case ENGINES:
				case ERROR:
				case ERRORS:
				case ESCAPE:
				case EVEN:
				case EVENT:
				case EVENTS:
				case EVERY:
				case EXCHANGE:
				case EXCLUSIVE:
				case EXPIRE:
				case EXPORT:
				case EXTENDED:
				case EXTENT_SIZE:
				case FAILED_LOGIN_ATTEMPTS:
				case FAST:
				case FAULTS:
				case FIELDS:
				case FILE_BLOCK_SIZE:
				case FILTER:
				case FIRST:
				case FIXED:
				case FLUSH:
				case FOLLOWS:
				case FOUND:
				case FULL:
				case FUNCTION:
				case GENERAL:
				case GLOBAL:
				case GRANTS:
				case GROUP_REPLICATION:
				case HANDLER:
				case HASH:
				case HELP:
				case HISTORY:
				case HOST:
				case HOSTS:
				case IDENTIFIED:
				case IGNORE_SERVER_IDS:
				case IMPORT:
				case INCREMENT:
				case INDEXES:
				case INITIAL_SIZE:
				case INPLACE:
				case INSERT_METHOD:
				case INSTALL:
				case INSTANCE:
				case INSTANT:
				case INVISIBLE:
				case INVOKER:
				case IO:
				case IO_THREAD:
				case IPC:
				case ISOLATION:
				case ISSUER:
				case JSON:
				case KEY_BLOCK_SIZE:
				case LANGUAGE:
				case LAST:
				case LEAVES:
				case LESS:
				case LEVEL:
				case LIST:
				case LOCAL:
				case LOGFILE:
				case LOGS:
				case MASTER:
				case MASTER_AUTO_POSITION:
				case MASTER_CONNECT_RETRY:
				case MASTER_DELAY:
				case MASTER_HEARTBEAT_PERIOD:
				case MASTER_HOST:
				case MASTER_LOG_FILE:
				case MASTER_LOG_POS:
				case MASTER_PASSWORD:
				case MASTER_PORT:
				case MASTER_RETRY_COUNT:
				case MASTER_SSL:
				case MASTER_SSL_CA:
				case MASTER_SSL_CAPATH:
				case MASTER_SSL_CERT:
				case MASTER_SSL_CIPHER:
				case MASTER_SSL_CRL:
				case MASTER_SSL_CRLPATH:
				case MASTER_SSL_KEY:
				case MASTER_TLS_VERSION:
				case MASTER_USER:
				case MAX_CONNECTIONS_PER_HOUR:
				case MAX_QUERIES_PER_HOUR:
				case MAX_ROWS:
				case MAX_SIZE:
				case MAX_UPDATES_PER_HOUR:
				case MAX_USER_CONNECTIONS:
				case MEDIUM:
				case MEMBER:
				case MERGE:
				case MESSAGE_TEXT:
				case MID:
				case MIGRATE:
				case MIN_ROWS:
				case MODE:
				case MODIFY:
				case MUTEX:
				case MYSQL:
				case MYSQL_ERRNO:
				case NAME:
				case NAMES:
				case NCHAR:
				case NEVER:
				case NEXT:
				case NO:
				case NOCACHE:
				case NOCOPY:
				case NOCYCLE:
				case NOMAXVALUE:
				case NOMINVALUE:
				case NOWAIT:
				case NODEGROUP:
				case NONE:
				case ODBC:
				case OFFLINE:
				case OFFSET:
				case OF:
				case OJ:
				case OLD_PASSWORD:
				case ONE:
				case ONLINE:
				case ONLY:
				case OPEN:
				case OPTIMIZER_COSTS:
				case OPTIONS:
				case OWNER:
				case PACK_KEYS:
				case PAGE:
				case PARSER:
				case PARTIAL:
				case PARTITIONING:
				case PARTITIONS:
				case PASSWORD:
				case PASSWORD_LOCK_TIME:
				case PHASE:
				case PLUGIN:
				case PLUGIN_DIR:
				case PLUGINS:
				case PORT:
				case PRECEDES:
				case PREPARE:
				case PRESERVE:
				case PREV:
				case PROCESSLIST:
				case PROFILE:
				case PROFILES:
				case PROXY:
				case QUERY:
				case QUICK:
				case REBUILD:
				case RECOVER:
				case RECURSIVE:
				case REDO_BUFFER_SIZE:
				case REDUNDANT:
				case RELAY:
				case RELAY_LOG_FILE:
				case RELAY_LOG_POS:
				case RELAYLOG:
				case REMOVE:
				case REORGANIZE:
				case REPAIR:
				case REPLICATE_DO_DB:
				case REPLICATE_DO_TABLE:
				case REPLICATE_IGNORE_DB:
				case REPLICATE_IGNORE_TABLE:
				case REPLICATE_REWRITE_DB:
				case REPLICATE_WILD_DO_TABLE:
				case REPLICATE_WILD_IGNORE_TABLE:
				case REPLICATION:
				case RESET:
				case RESTART:
				case RESUME:
				case RETURNED_SQLSTATE:
				case RETURNING:
				case RETURNS:
				case REUSE:
				case ROLE:
				case ROLLBACK:
				case ROLLUP:
				case ROTATE:
				case ROW:
				case ROWS:
				case ROW_FORMAT:
				case RTREE:
				case SAVEPOINT:
				case SCHEDULE:
				case SECURITY:
				case SEQUENCE:
				case SERVER:
				case SESSION:
				case SHARE:
				case SHARED:
				case SIGNED:
				case SIMPLE:
				case SLAVE:
				case SLOW:
				case SNAPSHOT:
				case SOCKET:
				case SOME:
				case SONAME:
				case SOUNDS:
				case SOURCE:
				case SQL_AFTER_GTIDS:
				case SQL_AFTER_MTS_GAPS:
				case SQL_BEFORE_GTIDS:
				case SQL_BUFFER_RESULT:
				case SQL_CACHE:
				case SQL_NO_CACHE:
				case SQL_THREAD:
				case START:
				case STARTS:
				case STATS_AUTO_RECALC:
				case STATS_PERSISTENT:
				case STATS_SAMPLE_PAGES:
				case STATUS:
				case STOP:
				case STORAGE:
				case STRING:
				case SUBCLASS_ORIGIN:
				case SUBJECT:
				case SUBPARTITION:
				case SUBPARTITIONS:
				case SUSPEND:
				case SWAPS:
				case SWITCHES:
				case TABLE_NAME:
				case TABLESPACE:
				case TABLE_TYPE:
				case TEMPORARY:
				case TEMPTABLE:
				case THAN:
				case TRADITIONAL:
				case TRANSACTION:
				case TRANSACTIONAL:
				case TRIGGERS:
				case TRUNCATE:
				case UNBOUNDED:
				case UNDEFINED:
				case UNDOFILE:
				case UNDO_BUFFER_SIZE:
				case UNINSTALL:
				case UNKNOWN:
				case UNTIL:
				case UPGRADE:
				case USER:
				case USE_FRM:
				case USER_RESOURCES:
				case VALIDATION:
				case VALUE:
				case VARIABLES:
				case VIEW:
				case VIRTUAL:
				case VISIBLE:
				case WAIT:
				case WARNINGS:
				case WITHOUT:
				case WORK:
				case WRAPPER:
				case X509:
				case XA:
				case XML:
				case YES:
				case EUR:
				case USA:
				case JIS:
				case ISO:
				case INTERNAL:
				case QUARTER:
				case MONTH:
				case DAY:
				case HOUR:
				case MINUTE:
				case WEEK:
				case SECOND:
				case MICROSECOND:
				case USER_STATISTICS:
				case CLIENT_STATISTICS:
				case INDEX_STATISTICS:
				case TABLE_STATISTICS:
				case FIREWALL_RULES:
				case ADMIN:
				case APPLICATION_PASSWORD_ADMIN:
				case AUDIT_ADMIN:
				case AUDIT_ABORT_EXEMPT:
				case AUTHENTICATION_POLICY_ADMIN:
				case BACKUP_ADMIN:
				case BINLOG_ADMIN:
				case BINLOG_ENCRYPTION_ADMIN:
				case CLONE_ADMIN:
				case CONNECTION_ADMIN:
				case ENCRYPTION_KEY_ADMIN:
				case EXECUTE:
				case FILE:
				case FIREWALL_ADMIN:
				case FIREWALL_EXEMPT:
				case FIREWALL_USER:
				case FLUSH_OPTIMIZER_COSTS:
				case FLUSH_STATUS:
				case FLUSH_TABLES:
				case FLUSH_USER_RESOURCES:
				case GROUP_REPLICATION_ADMIN:
				case INNODB_REDO_LOG_ARCHIVE:
				case INNODB_REDO_LOG_ENABLE:
				case INVOKE:
				case LAMBDA:
				case NDB_STORED_USER:
				case PASSWORDLESS_USER_ADMIN:
				case PERSIST_RO_VARIABLES_ADMIN:
				case PRIVILEGES:
				case PROCESS:
				case RELOAD:
				case REPLICATION_APPLIER:
				case REPLICATION_SLAVE_ADMIN:
				case RESOURCE_GROUP_ADMIN:
				case RESOURCE_GROUP_USER:
				case ROLE_ADMIN:
				case ROUTINE:
				case S3:
				case SESSION_VARIABLES_ADMIN:
				case SET_USER_ID:
				case SHOW_ROUTINE:
				case SHUTDOWN:
				case SUPER:
				case SYSTEM_VARIABLES_ADMIN:
				case TABLES:
				case TABLE_ENCRYPTION_ADMIN:
				case VERSION_TOKEN_ADMIN:
				case XA_RECOVER_ADMIN:
				case ARMSCII8:
				case ASCII:
				case BIG5:
				case CP1250:
				case CP1251:
				case CP1256:
				case CP1257:
				case CP850:
				case CP852:
				case CP866:
				case CP932:
				case DEC8:
				case EUCJPMS:
				case EUCKR:
				case GB18030:
				case GB2312:
				case GBK:
				case GEOSTD8:
				case GREEK:
				case HEBREW:
				case HP8:
				case KEYBCS2:
				case KOI8R:
				case KOI8U:
				case LATIN1:
				case LATIN2:
				case LATIN5:
				case LATIN7:
				case MACCE:
				case MACROMAN:
				case SJIS:
				case SWE7:
				case TIS620:
				case UCS2:
				case UJIS:
				case UTF16:
				case UTF16LE:
				case UTF32:
				case UTF8:
				case UTF8MB3:
				case UTF8MB4:
				case ARCHIVE:
				case BLACKHOLE:
				case CSV:
				case FEDERATED:
				case INNODB:
				case MEMORY:
				case MRG_MYISAM:
				case MYISAM:
				case NDB:
				case NDBCLUSTER:
				case PERFORMANCE_SCHEMA:
				case TOKUDB:
				case REPEATABLE:
				case COMMITTED:
				case UNCOMMITTED:
				case SERIALIZABLE:
				case GEOMETRYCOLLECTION:
				case GEOMETRY:
				case LINESTRING:
				case MULTILINESTRING:
				case MULTIPOINT:
				case MULTIPOLYGON:
				case POINT:
				case POLYGON:
				case ABS:
				case ACOS:
				case ADDDATE:
				case ADDTIME:
				case AES_DECRYPT:
				case AES_ENCRYPT:
				case AREA:
				case ASBINARY:
				case ASIN:
				case ASTEXT:
				case ASWKB:
				case ASWKT:
				case ASYMMETRIC_DECRYPT:
				case ASYMMETRIC_DERIVE:
				case ASYMMETRIC_ENCRYPT:
				case ASYMMETRIC_SIGN:
				case ASYMMETRIC_VERIFY:
				case ATAN:
				case ATAN2:
				case BENCHMARK:
				case BIN:
				case BIT_COUNT:
				case BIT_LENGTH:
				case BUFFER:
				case CATALOG_NAME:
				case CEIL:
				case CEILING:
				case CENTROID:
				case CHARACTER_LENGTH:
				case CHARSET:
				case CHAR_LENGTH:
				case COERCIBILITY:
				case COLLATION:
				case COMPRESS:
				case CONCAT:
				case CONCAT_WS:
				case CONNECTION_ID:
				case CONV:
				case CONVERT_TZ:
				case COS:
				case COT:
				case CRC32:
				case CREATE_ASYMMETRIC_PRIV_KEY:
				case CREATE_ASYMMETRIC_PUB_KEY:
				case CREATE_DH_PARAMETERS:
				case CREATE_DIGEST:
				case CROSSES:
				case DATEDIFF:
				case DATE_FORMAT:
				case DAYNAME:
				case DAYOFMONTH:
				case DAYOFWEEK:
				case DAYOFYEAR:
				case DECODE:
				case DEGREES:
				case DES_DECRYPT:
				case DES_ENCRYPT:
				case DIMENSION:
				case DISJOINT:
				case ELT:
				case ENCODE:
				case ENCRYPT:
				case ENDPOINT:
				case ENGINE_ATTRIBUTE:
				case ENVELOPE:
				case EQUALS:
				case EXP:
				case EXPORT_SET:
				case EXTERIORRING:
				case EXTRACTVALUE:
				case FIELD:
				case FIND_IN_SET:
				case FLOOR:
				case FORMAT:
				case FOUND_ROWS:
				case FROM_BASE64:
				case FROM_DAYS:
				case FROM_UNIXTIME:
				case GEOMCOLLFROMTEXT:
				case GEOMCOLLFROMWKB:
				case GEOMETRYCOLLECTIONFROMTEXT:
				case GEOMETRYCOLLECTIONFROMWKB:
				case GEOMETRYFROMTEXT:
				case GEOMETRYFROMWKB:
				case GEOMETRYN:
				case GEOMETRYTYPE:
				case GEOMFROMTEXT:
				case GEOMFROMWKB:
				case GET_FORMAT:
				case GET_LOCK:
				case GLENGTH:
				case GREATEST:
				case GTID_SUBSET:
				case GTID_SUBTRACT:
				case HEX:
				case IFNULL:
				case INET6_ATON:
				case INET6_NTOA:
				case INET_ATON:
				case INET_NTOA:
				case INSTR:
				case INTERIORRINGN:
				case INTERSECTS:
				case ISCLOSED:
				case ISEMPTY:
				case ISNULL:
				case ISSIMPLE:
				case IS_FREE_LOCK:
				case IS_IPV4:
				case IS_IPV4_COMPAT:
				case IS_IPV4_MAPPED:
				case IS_IPV6:
				case IS_USED_LOCK:
				case LAST_INSERT_ID:
				case LCASE:
				case LEAST:
				case LENGTH:
				case LINEFROMTEXT:
				case LINEFROMWKB:
				case LINESTRINGFROMTEXT:
				case LINESTRINGFROMWKB:
				case LN:
				case LOAD_FILE:
				case LOCATE:
				case LOG:
				case LOG10:
				case LOG2:
				case LOWER:
				case LPAD:
				case LTRIM:
				case MAKEDATE:
				case MAKETIME:
				case MAKE_SET:
				case MASTER_POS_WAIT:
				case MBRCONTAINS:
				case MBRDISJOINT:
				case MBREQUAL:
				case MBRINTERSECTS:
				case MBROVERLAPS:
				case MBRTOUCHES:
				case MBRWITHIN:
				case MD5:
				case MLINEFROMTEXT:
				case MLINEFROMWKB:
				case MONTHNAME:
				case MPOINTFROMTEXT:
				case MPOINTFROMWKB:
				case MPOLYFROMTEXT:
				case MPOLYFROMWKB:
				case MULTILINESTRINGFROMTEXT:
				case MULTILINESTRINGFROMWKB:
				case MULTIPOINTFROMTEXT:
				case MULTIPOINTFROMWKB:
				case MULTIPOLYGONFROMTEXT:
				case MULTIPOLYGONFROMWKB:
				case NAME_CONST:
				case NULLIF:
				case NUMGEOMETRIES:
				case NUMINTERIORRINGS:
				case NUMPOINTS:
				case OCT:
				case OCTET_LENGTH:
				case ORD:
				case OVERLAPS:
				case PERIOD_ADD:
				case PERIOD_DIFF:
				case PI:
				case POINTFROMTEXT:
				case POINTFROMWKB:
				case POINTN:
				case POLYFROMTEXT:
				case POLYFROMWKB:
				case POLYGONFROMTEXT:
				case POLYGONFROMWKB:
				case POW:
				case POWER:
				case QUOTE:
				case RADIANS:
				case RAND:
				case RANDOM:
				case RANDOM_BYTES:
				case RELEASE_LOCK:
				case REVERSE:
				case ROUND:
				case ROW_COUNT:
				case RPAD:
				case RTRIM:
				case SEC_TO_TIME:
				case SECONDARY_ENGINE_ATTRIBUTE:
				case SENSITIVE_VARIABLES_OBSERVER:
				case SESSION_USER:
				case SHA:
				case SHA1:
				case SHA2:
				case SCHEMA_NAME:
				case SIGN:
				case SIN:
				case SLEEP:
				case SOUNDEX:
				case SQL_THREAD_WAIT_AFTER_GTIDS:
				case SQRT:
				case SRID:
				case STARTPOINT:
				case STRCMP:
				case STR_TO_DATE:
				case ST_AREA:
				case ST_ASBINARY:
				case ST_ASTEXT:
				case ST_ASWKB:
				case ST_ASWKT:
				case ST_BUFFER:
				case ST_CENTROID:
				case ST_CONTAINS:
				case ST_CROSSES:
				case ST_DIFFERENCE:
				case ST_DIMENSION:
				case ST_DISJOINT:
				case ST_DISTANCE:
				case ST_ENDPOINT:
				case ST_ENVELOPE:
				case ST_EQUALS:
				case ST_EXTERIORRING:
				case ST_GEOMCOLLFROMTEXT:
				case ST_GEOMCOLLFROMTXT:
				case ST_GEOMCOLLFROMWKB:
				case ST_GEOMETRYCOLLECTIONFROMTEXT:
				case ST_GEOMETRYCOLLECTIONFROMWKB:
				case ST_GEOMETRYFROMTEXT:
				case ST_GEOMETRYFROMWKB:
				case ST_GEOMETRYN:
				case ST_GEOMETRYTYPE:
				case ST_GEOMFROMTEXT:
				case ST_GEOMFROMWKB:
				case ST_INTERIORRINGN:
				case ST_INTERSECTION:
				case ST_INTERSECTS:
				case ST_ISCLOSED:
				case ST_ISEMPTY:
				case ST_ISSIMPLE:
				case ST_LINEFROMTEXT:
				case ST_LINEFROMWKB:
				case ST_LINESTRINGFROMTEXT:
				case ST_LINESTRINGFROMWKB:
				case ST_NUMGEOMETRIES:
				case ST_NUMINTERIORRING:
				case ST_NUMINTERIORRINGS:
				case ST_NUMPOINTS:
				case ST_OVERLAPS:
				case ST_POINTFROMTEXT:
				case ST_POINTFROMWKB:
				case ST_POINTN:
				case ST_POLYFROMTEXT:
				case ST_POLYFROMWKB:
				case ST_POLYGONFROMTEXT:
				case ST_POLYGONFROMWKB:
				case ST_SRID:
				case ST_STARTPOINT:
				case ST_SYMDIFFERENCE:
				case ST_TOUCHES:
				case ST_UNION:
				case ST_WITHIN:
				case ST_X:
				case ST_Y:
				case SUBDATE:
				case SUBSTRING_INDEX:
				case SUBTIME:
				case SYSTEM_USER:
				case SYSTEM:
				case TAN:
				case TELEMETRY_LOG_ADMIN:
				case TIMEDIFF:
				case TIMESTAMPADD:
				case TIMESTAMPDIFF:
				case TIME_FORMAT:
				case TIME_TO_SEC:
				case TOUCHES:
				case TO_BASE64:
				case TO_DAYS:
				case TO_SECONDS:
				case TP_CONNECTION_ADMIN:
				case UCASE:
				case UNCOMPRESS:
				case UNCOMPRESSED_LENGTH:
				case UNHEX:
				case UNIX_TIMESTAMP:
				case UPDATEXML:
				case UPPER:
				case UUID:
				case UUID_SHORT:
				case VALIDATE_PASSWORD_STRENGTH:
				case VERSION:
				case VERSIONING:
				case WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS:
				case WEEKDAY:
				case WEEKOFYEAR:
				case WEIGHT_STRING:
				case WITHIN:
				case YEARWEEK:
				case Y_FUNCTION:
				case X_FUNCTION:
				case VIA:
				case LASTVAL:
				case NEXTVAL:
				case SETVAL:
				case PREVIOUS:
				case PERSISTENT:
				case BINLOG_MONITOR:
				case BINLOG_REPLAY:
				case FEDERATED_ADMIN:
				case READ_ONLY_ADMIN:
				case REPLICA:
				case REPLICATION_MASTER_ADMIN:
				case MONITOR:
				case READ_ONLY:
				case REPLAY:
				case MOD:
				case CHARSET_REVERSE_QOUTE_STRING:
				case STRING_LITERAL:
				case ID:
					{
					setState(3200);
					uidList();
					}
					break;
				case ALL:
					{
					setState(3201);
					match(ALL);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case REBUILD:
				_localctx = new AlterByRebuildPartitionContext(_localctx);
				enterOuterAlt(_localctx, 12);
				{
				setState(3204);
				match(REBUILD);
				setState(3205);
				match(PARTITION);
				setState(3208);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case ARRAY:
				case ATTRIBUTE:
				case BUCKETS:
				case CONDITION:
				case CURRENT:
				case CURRENT_ROLE:
				case CURRENT_USER:
				case DATABASE:
				case DEFAULT:
				case DIAGNOSTICS:
				case EMPTY:
				case ENFORCED:
				case EXCEPT:
				case GROUP:
				case GROUP_REPLICATION_STREAM:
				case IF:
				case IGNORED:
				case INSERT:
				case LATERAL:
				case LEFT:
				case LOCKED:
				case MAXVALUE:
				case MINVALUE:
				case NUMBER:
				case OPTIONAL:
				case ORDER:
				case PRIMARY:
				case REPEAT:
				case REPLACE:
				case RIGHT:
				case SCHEMA:
				case SKIP_:
				case SKIP_QUERY_REWRITE:
				case STACKED:
				case STATEMENT:
				case DATE:
				case TIME:
				case TIMESTAMP:
				case DATETIME:
				case YEAR:
				case NATIONAL:
				case BINARY:
				case TEXT:
				case ENUM:
				case SERIAL:
				case JSON_ARRAY:
				case JSON_ARRAYAGG:
				case JSON_ARRAY_APPEND:
				case JSON_ARRAY_INSERT:
				case JSON_CONTAINS:
				case JSON_CONTAINS_PATH:
				case JSON_DEPTH:
				case JSON_EXTRACT:
				case JSON_INSERT:
				case JSON_KEYS:
				case JSON_LENGTH:
				case JSON_MERGE:
				case JSON_MERGE_PATCH:
				case JSON_MERGE_PRESERVE:
				case JSON_OBJECT:
				case JSON_OBJECTAGG:
				case JSON_OVERLAPS:
				case JSON_PRETTY:
				case JSON_QUOTE:
				case JSON_REMOVE:
				case JSON_REPLACE:
				case JSON_SCHEMA_VALID:
				case JSON_SCHEMA_VALIDATION_REPORT:
				case JSON_SEARCH:
				case JSON_SET:
				case JSON_STORAGE_FREE:
				case JSON_STORAGE_SIZE:
				case JSON_TABLE:
				case JSON_TYPE:
				case JSON_UNQUOTE:
				case JSON_VALID:
				case JSON_VALUE:
				case NESTED:
				case ORDINALITY:
				case PATH:
				case AVG:
				case BIT_AND:
				case BIT_OR:
				case BIT_XOR:
				case COUNT:
				case CUME_DIST:
				case DENSE_RANK:
				case FIRST_VALUE:
				case GROUP_CONCAT:
				case LAG:
				case LAST_VALUE:
				case LEAD:
				case MAX:
				case MIN:
				case NTILE:
				case NTH_VALUE:
				case PERCENT_RANK:
				case RANK:
				case ROW_NUMBER:
				case STD:
				case STDDEV:
				case STDDEV_POP:
				case STDDEV_SAMP:
				case SUM:
				case VAR_POP:
				case VAR_SAMP:
				case VARIANCE:
				case CURRENT_DATE:
				case CURRENT_TIME:
				case CURRENT_TIMESTAMP:
				case LOCALTIME:
				case CURDATE:
				case CURTIME:
				case DATE_ADD:
				case DATE_SUB:
				case LOCALTIMESTAMP:
				case NOW:
				case POSITION:
				case SUBSTR:
				case SUBSTRING:
				case SYSDATE:
				case TRIM:
				case UTC_DATE:
				case UTC_TIME:
				case UTC_TIMESTAMP:
				case ACCOUNT:
				case ACTION:
				case AFTER:
				case AGGREGATE:
				case ALGORITHM:
				case ANY:
				case AT:
				case AUTHORS:
				case AUTOCOMMIT:
				case AUTOEXTEND_SIZE:
				case AUTO_INCREMENT:
				case AVG_ROW_LENGTH:
				case BEGIN:
				case BINLOG:
				case BIT:
				case BLOCK:
				case BOOL:
				case BOOLEAN:
				case BTREE:
				case CACHE:
				case CASCADED:
				case CHAIN:
				case CHANGED:
				case CHANNEL:
				case CHECKSUM:
				case PAGE_CHECKSUM:
				case CIPHER:
				case CLASS_ORIGIN:
				case CLIENT:
				case CLOSE:
				case CLUSTERING:
				case COALESCE:
				case CODE:
				case COLUMNS:
				case COLUMN_FORMAT:
				case COLUMN_NAME:
				case COMMENT:
				case COMMIT:
				case COMPACT:
				case COMPLETION:
				case COMPRESSED:
				case COMPRESSION:
				case CONCURRENT:
				case CONNECT:
				case CONNECTION:
				case CONSISTENT:
				case CONSTRAINT_CATALOG:
				case CONSTRAINT_SCHEMA:
				case CONSTRAINT_NAME:
				case CONTAINS:
				case CONTEXT:
				case CONTRIBUTORS:
				case COPY:
				case CPU:
				case CYCLE:
				case CURSOR_NAME:
				case DATA:
				case DATAFILE:
				case DEALLOCATE:
				case DEFAULT_AUTH:
				case DEFINER:
				case DELAY_KEY_WRITE:
				case DES_KEY_FILE:
				case DIRECTORY:
				case DISABLE:
				case DISCARD:
				case DISK:
				case DO:
				case DUMPFILE:
				case DUPLICATE:
				case DYNAMIC:
				case ENABLE:
				case ENCRYPTED:
				case ENCRYPTION:
				case ENCRYPTION_KEY_ID:
				case END:
				case ENDS:
				case ENGINE:
				case ENGINES:
				case ERROR:
				case ERRORS:
				case ESCAPE:
				case EVEN:
				case EVENT:
				case EVENTS:
				case EVERY:
				case EXCHANGE:
				case EXCLUSIVE:
				case EXPIRE:
				case EXPORT:
				case EXTENDED:
				case EXTENT_SIZE:
				case FAILED_LOGIN_ATTEMPTS:
				case FAST:
				case FAULTS:
				case FIELDS:
				case FILE_BLOCK_SIZE:
				case FILTER:
				case FIRST:
				case FIXED:
				case FLUSH:
				case FOLLOWS:
				case FOUND:
				case FULL:
				case FUNCTION:
				case GENERAL:
				case GLOBAL:
				case GRANTS:
				case GROUP_REPLICATION:
				case HANDLER:
				case HASH:
				case HELP:
				case HISTORY:
				case HOST:
				case HOSTS:
				case IDENTIFIED:
				case IGNORE_SERVER_IDS:
				case IMPORT:
				case INCREMENT:
				case INDEXES:
				case INITIAL_SIZE:
				case INPLACE:
				case INSERT_METHOD:
				case INSTALL:
				case INSTANCE:
				case INSTANT:
				case INVISIBLE:
				case INVOKER:
				case IO:
				case IO_THREAD:
				case IPC:
				case ISOLATION:
				case ISSUER:
				case JSON:
				case KEY_BLOCK_SIZE:
				case LANGUAGE:
				case LAST:
				case LEAVES:
				case LESS:
				case LEVEL:
				case LIST:
				case LOCAL:
				case LOGFILE:
				case LOGS:
				case MASTER:
				case MASTER_AUTO_POSITION:
				case MASTER_CONNECT_RETRY:
				case MASTER_DELAY:
				case MASTER_HEARTBEAT_PERIOD:
				case MASTER_HOST:
				case MASTER_LOG_FILE:
				case MASTER_LOG_POS:
				case MASTER_PASSWORD:
				case MASTER_PORT:
				case MASTER_RETRY_COUNT:
				case MASTER_SSL:
				case MASTER_SSL_CA:
				case MASTER_SSL_CAPATH:
				case MASTER_SSL_CERT:
				case MASTER_SSL_CIPHER:
				case MASTER_SSL_CRL:
				case MASTER_SSL_CRLPATH:
				case MASTER_SSL_KEY:
				case MASTER_TLS_VERSION:
				case MASTER_USER:
				case MAX_CONNECTIONS_PER_HOUR:
				case MAX_QUERIES_PER_HOUR:
				case MAX_ROWS:
				case MAX_SIZE:
				case MAX_UPDATES_PER_HOUR:
				case MAX_USER_CONNECTIONS:
				case MEDIUM:
				case MEMBER:
				case MERGE:
				case MESSAGE_TEXT:
				case MID:
				case MIGRATE:
				case MIN_ROWS:
				case MODE:
				case MODIFY:
				case MUTEX:
				case MYSQL:
				case MYSQL_ERRNO:
				case NAME:
				case NAMES:
				case NCHAR:
				case NEVER:
				case NEXT:
				case NO:
				case NOCACHE:
				case NOCOPY:
				case NOCYCLE:
				case NOMAXVALUE:
				case NOMINVALUE:
				case NOWAIT:
				case NODEGROUP:
				case NONE:
				case ODBC:
				case OFFLINE:
				case OFFSET:
				case OF:
				case OJ:
				case OLD_PASSWORD:
				case ONE:
				case ONLINE:
				case ONLY:
				case OPEN:
				case OPTIMIZER_COSTS:
				case OPTIONS:
				case OWNER:
				case PACK_KEYS:
				case PAGE:
				case PARSER:
				case PARTIAL:
				case PARTITIONING:
				case PARTITIONS:
				case PASSWORD:
				case PASSWORD_LOCK_TIME:
				case PHASE:
				case PLUGIN:
				case PLUGIN_DIR:
				case PLUGINS:
				case PORT:
				case PRECEDES:
				case PREPARE:
				case PRESERVE:
				case PREV:
				case PROCESSLIST:
				case PROFILE:
				case PROFILES:
				case PROXY:
				case QUERY:
				case QUICK:
				case REBUILD:
				case RECOVER:
				case RECURSIVE:
				case REDO_BUFFER_SIZE:
				case REDUNDANT:
				case RELAY:
				case RELAY_LOG_FILE:
				case RELAY_LOG_POS:
				case RELAYLOG:
				case REMOVE:
				case REORGANIZE:
				case REPAIR:
				case REPLICATE_DO_DB:
				case REPLICATE_DO_TABLE:
				case REPLICATE_IGNORE_DB:
				case REPLICATE_IGNORE_TABLE:
				case REPLICATE_REWRITE_DB:
				case REPLICATE_WILD_DO_TABLE:
				case REPLICATE_WILD_IGNORE_TABLE:
				case REPLICATION:
				case RESET:
				case RESTART:
				case RESUME:
				case RETURNED_SQLSTATE:
				case RETURNING:
				case RETURNS:
				case REUSE:
				case ROLE:
				case ROLLBACK:
				case ROLLUP:
				case ROTATE:
				case ROW:
				case ROWS:
				case ROW_FORMAT:
				case RTREE:
				case SAVEPOINT:
				case SCHEDULE:
				case SECURITY:
				case SEQUENCE:
				case SERVER:
				case SESSION:
				case SHARE:
				case SHARED:
				case SIGNED:
				case SIMPLE:
				case SLAVE:
				case SLOW:
				case SNAPSHOT:
				case SOCKET:
				case SOME:
				case SONAME:
				case SOUNDS:
				case SOURCE:
				case SQL_AFTER_GTIDS:
				case SQL_AFTER_MTS_GAPS:
				case SQL_BEFORE_GTIDS:
				case SQL_BUFFER_RESULT:
				case SQL_CACHE:
				case SQL_NO_CACHE:
				case SQL_THREAD:
				case START:
				case STARTS:
				case STATS_AUTO_RECALC:
				case STATS_PERSISTENT:
				case STATS_SAMPLE_PAGES:
				case STATUS:
				case STOP:
				case STORAGE:
				case STRING:
				case SUBCLASS_ORIGIN:
				case SUBJECT:
				case SUBPARTITION:
				case SUBPARTITIONS:
				case SUSPEND:
				case SWAPS:
				case SWITCHES:
				case TABLE_NAME:
				case TABLESPACE:
				case TABLE_TYPE:
				case TEMPORARY:
				case TEMPTABLE:
				case THAN:
				case TRADITIONAL:
				case TRANSACTION:
				case TRANSACTIONAL:
				case TRIGGERS:
				case TRUNCATE:
				case UNBOUNDED:
				case UNDEFINED:
				case UNDOFILE:
				case UNDO_BUFFER_SIZE:
				case UNINSTALL:
				case UNKNOWN:
				case UNTIL:
				case UPGRADE:
				case USER:
				case USE_FRM:
				case USER_RESOURCES:
				case VALIDATION:
				case VALUE:
				case VARIABLES:
				case VIEW:
				case VIRTUAL:
				case VISIBLE:
				case WAIT:
				case WARNINGS:
				case WITHOUT:
				case WORK:
				case WRAPPER:
				case X509:
				case XA:
				case XML:
				case YES:
				case EUR:
				case USA:
				case JIS:
				case ISO:
				case INTERNAL:
				case QUARTER:
				case MONTH:
				case DAY:
				case HOUR:
				case MINUTE:
				case WEEK:
				case SECOND:
				case MICROSECOND:
				case USER_STATISTICS:
				case CLIENT_STATISTICS:
				case INDEX_STATISTICS:
				case TABLE_STATISTICS:
				case FIREWALL_RULES:
				case ADMIN:
				case APPLICATION_PASSWORD_ADMIN:
				case AUDIT_ADMIN:
				case AUDIT_ABORT_EXEMPT:
				case AUTHENTICATION_POLICY_ADMIN:
				case BACKUP_ADMIN:
				case BINLOG_ADMIN:
				case BINLOG_ENCRYPTION_ADMIN:
				case CLONE_ADMIN:
				case CONNECTION_ADMIN:
				case ENCRYPTION_KEY_ADMIN:
				case EXECUTE:
				case FILE:
				case FIREWALL_ADMIN:
				case FIREWALL_EXEMPT:
				case FIREWALL_USER:
				case FLUSH_OPTIMIZER_COSTS:
				case FLUSH_STATUS:
				case FLUSH_TABLES:
				case FLUSH_USER_RESOURCES:
				case GROUP_REPLICATION_ADMIN:
				case INNODB_REDO_LOG_ARCHIVE:
				case INNODB_REDO_LOG_ENABLE:
				case INVOKE:
				case LAMBDA:
				case NDB_STORED_USER:
				case PASSWORDLESS_USER_ADMIN:
				case PERSIST_RO_VARIABLES_ADMIN:
				case PRIVILEGES:
				case PROCESS:
				case RELOAD:
				case REPLICATION_APPLIER:
				case REPLICATION_SLAVE_ADMIN:
				case RESOURCE_GROUP_ADMIN:
				case RESOURCE_GROUP_USER:
				case ROLE_ADMIN:
				case ROUTINE:
				case S3:
				case SESSION_VARIABLES_ADMIN:
				case SET_USER_ID:
				case SHOW_ROUTINE:
				case SHUTDOWN:
				case SUPER:
				case SYSTEM_VARIABLES_ADMIN:
				case TABLES:
				case TABLE_ENCRYPTION_ADMIN:
				case VERSION_TOKEN_ADMIN:
				case XA_RECOVER_ADMIN:
				case ARMSCII8:
				case ASCII:
				case BIG5:
				case CP1250:
				case CP1251:
				case CP1256:
				case CP1257:
				case CP850:
				case CP852:
				case CP866:
				case CP932:
				case DEC8:
				case EUCJPMS:
				case EUCKR:
				case GB18030:
				case GB2312:
				case GBK:
				case GEOSTD8:
				case GREEK:
				case HEBREW:
				case HP8:
				case KEYBCS2:
				case KOI8R:
				case KOI8U:
				case LATIN1:
				case LATIN2:
				case LATIN5:
				case LATIN7:
				case MACCE:
				case MACROMAN:
				case SJIS:
				case SWE7:
				case TIS620:
				case UCS2:
				case UJIS:
				case UTF16:
				case UTF16LE:
				case UTF32:
				case UTF8:
				case UTF8MB3:
				case UTF8MB4:
				case ARCHIVE:
				case BLACKHOLE:
				case CSV:
				case FEDERATED:
				case INNODB:
				case MEMORY:
				case MRG_MYISAM:
				case MYISAM:
				case NDB:
				case NDBCLUSTER:
				case PERFORMANCE_SCHEMA:
				case TOKUDB:
				case REPEATABLE:
				case COMMITTED:
				case UNCOMMITTED:
				case SERIALIZABLE:
				case GEOMETRYCOLLECTION:
				case GEOMETRY:
				case LINESTRING:
				case MULTILINESTRING:
				case MULTIPOINT:
				case MULTIPOLYGON:
				case POINT:
				case POLYGON:
				case ABS:
				case ACOS:
				case ADDDATE:
				case ADDTIME:
				case AES_DECRYPT:
				case AES_ENCRYPT:
				case AREA:
				case ASBINARY:
				case ASIN:
				case ASTEXT:
				case ASWKB:
				case ASWKT:
				case ASYMMETRIC_DECRYPT:
				case ASYMMETRIC_DERIVE:
				case ASYMMETRIC_ENCRYPT:
				case ASYMMETRIC_SIGN:
				case ASYMMETRIC_VERIFY:
				case ATAN:
				case ATAN2:
				case BENCHMARK:
				case BIN:
				case BIT_COUNT:
				case BIT_LENGTH:
				case BUFFER:
				case CATALOG_NAME:
				case CEIL:
				case CEILING:
				case CENTROID:
				case CHARACTER_LENGTH:
				case CHARSET:
				case CHAR_LENGTH:
				case COERCIBILITY:
				case COLLATION:
				case COMPRESS:
				case CONCAT:
				case CONCAT_WS:
				case CONNECTION_ID:
				case CONV:
				case CONVERT_TZ:
				case COS:
				case COT:
				case CRC32:
				case CREATE_ASYMMETRIC_PRIV_KEY:
				case CREATE_ASYMMETRIC_PUB_KEY:
				case CREATE_DH_PARAMETERS:
				case CREATE_DIGEST:
				case CROSSES:
				case DATEDIFF:
				case DATE_FORMAT:
				case DAYNAME:
				case DAYOFMONTH:
				case DAYOFWEEK:
				case DAYOFYEAR:
				case DECODE:
				case DEGREES:
				case DES_DECRYPT:
				case DES_ENCRYPT:
				case DIMENSION:
				case DISJOINT:
				case ELT:
				case ENCODE:
				case ENCRYPT:
				case ENDPOINT:
				case ENGINE_ATTRIBUTE:
				case ENVELOPE:
				case EQUALS:
				case EXP:
				case EXPORT_SET:
				case EXTERIORRING:
				case EXTRACTVALUE:
				case FIELD:
				case FIND_IN_SET:
				case FLOOR:
				case FORMAT:
				case FOUND_ROWS:
				case FROM_BASE64:
				case FROM_DAYS:
				case FROM_UNIXTIME:
				case GEOMCOLLFROMTEXT:
				case GEOMCOLLFROMWKB:
				case GEOMETRYCOLLECTIONFROMTEXT:
				case GEOMETRYCOLLECTIONFROMWKB:
				case GEOMETRYFROMTEXT:
				case GEOMETRYFROMWKB:
				case GEOMETRYN:
				case GEOMETRYTYPE:
				case GEOMFROMTEXT:
				case GEOMFROMWKB:
				case GET_FORMAT:
				case GET_LOCK:
				case GLENGTH:
				case GREATEST:
				case GTID_SUBSET:
				case GTID_SUBTRACT:
				case HEX:
				case IFNULL:
				case INET6_ATON:
				case INET6_NTOA:
				case INET_ATON:
				case INET_NTOA:
				case INSTR:
				case INTERIORRINGN:
				case INTERSECTS:
				case ISCLOSED:
				case ISEMPTY:
				case ISNULL:
				case ISSIMPLE:
				case IS_FREE_LOCK:
				case IS_IPV4:
				case IS_IPV4_COMPAT:
				case IS_IPV4_MAPPED:
				case IS_IPV6:
				case IS_USED_LOCK:
				case LAST_INSERT_ID:
				case LCASE:
				case LEAST:
				case LENGTH:
				case LINEFROMTEXT:
				case LINEFROMWKB:
				case LINESTRINGFROMTEXT:
				case LINESTRINGFROMWKB:
				case LN:
				case LOAD_FILE:
				case LOCATE:
				case LOG:
				case LOG10:
				case LOG2:
				case LOWER:
				case LPAD:
				case LTRIM:
				case MAKEDATE:
				case MAKETIME:
				case MAKE_SET:
				case MASTER_POS_WAIT:
				case MBRCONTAINS:
				case MBRDISJOINT:
				case MBREQUAL:
				case MBRINTERSECTS:
				case MBROVERLAPS:
				case MBRTOUCHES:
				case MBRWITHIN:
				case MD5:
				case MLINEFROMTEXT:
				case MLINEFROMWKB:
				case MONTHNAME:
				case MPOINTFROMTEXT:
				case MPOINTFROMWKB:
				case MPOLYFROMTEXT:
				case MPOLYFROMWKB:
				case MULTILINESTRINGFROMTEXT:
				case MULTILINESTRINGFROMWKB:
				case MULTIPOINTFROMTEXT:
				case MULTIPOINTFROMWKB:
				case MULTIPOLYGONFROMTEXT:
				case MULTIPOLYGONFROMWKB:
				case NAME_CONST:
				case NULLIF:
				case NUMGEOMETRIES:
				case NUMINTERIORRINGS:
				case NUMPOINTS:
				case OCT:
				case OCTET_LENGTH:
				case ORD:
				case OVERLAPS:
				case PERIOD_ADD:
				case PERIOD_DIFF:
				case PI:
				case POINTFROMTEXT:
				case POINTFROMWKB:
				case POINTN:
				case POLYFROMTEXT:
				case POLYFROMWKB:
				case POLYGONFROMTEXT:
				case POLYGONFROMWKB:
				case POW:
				case POWER:
				case QUOTE:
				case RADIANS:
				case RAND:
				case RANDOM:
				case RANDOM_BYTES:
				case RELEASE_LOCK:
				case REVERSE:
				case ROUND:
				case ROW_COUNT:
				case RPAD:
				case RTRIM:
				case SEC_TO_TIME:
				case SECONDARY_ENGINE_ATTRIBUTE:
				case SENSITIVE_VARIABLES_OBSERVER:
				case SESSION_USER:
				case SHA:
				case SHA1:
				case SHA2:
				case SCHEMA_NAME:
				case SIGN:
				case SIN:
				case SLEEP:
				case SOUNDEX:
				case SQL_THREAD_WAIT_AFTER_GTIDS:
				case SQRT:
				case SRID:
				case STARTPOINT:
				case STRCMP:
				case STR_TO_DATE:
				case ST_AREA:
				case ST_ASBINARY:
				case ST_ASTEXT:
				case ST_ASWKB:
				case ST_ASWKT:
				case ST_BUFFER:
				case ST_CENTROID:
				case ST_CONTAINS:
				case ST_CROSSES:
				case ST_DIFFERENCE:
				case ST_DIMENSION:
				case ST_DISJOINT:
				case ST_DISTANCE:
				case ST_ENDPOINT:
				case ST_ENVELOPE:
				case ST_EQUALS:
				case ST_EXTERIORRING:
				case ST_GEOMCOLLFROMTEXT:
				case ST_GEOMCOLLFROMTXT:
				case ST_GEOMCOLLFROMWKB:
				case ST_GEOMETRYCOLLECTIONFROMTEXT:
				case ST_GEOMETRYCOLLECTIONFROMWKB:
				case ST_GEOMETRYFROMTEXT:
				case ST_GEOMETRYFROMWKB:
				case ST_GEOMETRYN:
				case ST_GEOMETRYTYPE:
				case ST_GEOMFROMTEXT:
				case ST_GEOMFROMWKB:
				case ST_INTERIORRINGN:
				case ST_INTERSECTION:
				case ST_INTERSECTS:
				case ST_ISCLOSED:
				case ST_ISEMPTY:
				case ST_ISSIMPLE:
				case ST_LINEFROMTEXT:
				case ST_LINEFROMWKB:
				case ST_LINESTRINGFROMTEXT:
				case ST_LINESTRINGFROMWKB:
				case ST_NUMGEOMETRIES:
				case ST_NUMINTERIORRING:
				case ST_NUMINTERIORRINGS:
				case ST_NUMPOINTS:
				case ST_OVERLAPS:
				case ST_POINTFROMTEXT:
				case ST_POINTFROMWKB:
				case ST_POINTN:
				case ST_POLYFROMTEXT:
				case ST_POLYFROMWKB:
				case ST_POLYGONFROMTEXT:
				case ST_POLYGONFROMWKB:
				case ST_SRID:
				case ST_STARTPOINT:
				case ST_SYMDIFFERENCE:
				case ST_TOUCHES:
				case ST_UNION:
				case ST_WITHIN:
				case ST_X:
				case ST_Y:
				case SUBDATE:
				case SUBSTRING_INDEX:
				case SUBTIME:
				case SYSTEM_USER:
				case SYSTEM:
				case TAN:
				case TELEMETRY_LOG_ADMIN:
				case TIMEDIFF:
				case TIMESTAMPADD:
				case TIMESTAMPDIFF:
				case TIME_FORMAT:
				case TIME_TO_SEC:
				case TOUCHES:
				case TO_BASE64:
				case TO_DAYS:
				case TO_SECONDS:
				case TP_CONNECTION_ADMIN:
				case UCASE:
				case UNCOMPRESS:
				case UNCOMPRESSED_LENGTH:
				case UNHEX:
				case UNIX_TIMESTAMP:
				case UPDATEXML:
				case UPPER:
				case UUID:
				case UUID_SHORT:
				case VALIDATE_PASSWORD_STRENGTH:
				case VERSION:
				case VERSIONING:
				case WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS:
				case WEEKDAY:
				case WEEKOFYEAR:
				case WEIGHT_STRING:
				case WITHIN:
				case YEARWEEK:
				case Y_FUNCTION:
				case X_FUNCTION:
				case VIA:
				case LASTVAL:
				case NEXTVAL:
				case SETVAL:
				case PREVIOUS:
				case PERSISTENT:
				case BINLOG_MONITOR:
				case BINLOG_REPLAY:
				case FEDERATED_ADMIN:
				case READ_ONLY_ADMIN:
				case REPLICA:
				case REPLICATION_MASTER_ADMIN:
				case MONITOR:
				case READ_ONLY:
				case REPLAY:
				case MOD:
				case CHARSET_REVERSE_QOUTE_STRING:
				case STRING_LITERAL:
				case ID:
					{
					setState(3206);
					uidList();
					}
					break;
				case ALL:
					{
					setState(3207);
					match(ALL);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case REPAIR:
				_localctx = new AlterByRepairPartitionContext(_localctx);
				enterOuterAlt(_localctx, 13);
				{
				setState(3210);
				match(REPAIR);
				setState(3211);
				match(PARTITION);
				setState(3214);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case ARRAY:
				case ATTRIBUTE:
				case BUCKETS:
				case CONDITION:
				case CURRENT:
				case CURRENT_ROLE:
				case CURRENT_USER:
				case DATABASE:
				case DEFAULT:
				case DIAGNOSTICS:
				case EMPTY:
				case ENFORCED:
				case EXCEPT:
				case GROUP:
				case GROUP_REPLICATION_STREAM:
				case IF:
				case IGNORED:
				case INSERT:
				case LATERAL:
				case LEFT:
				case LOCKED:
				case MAXVALUE:
				case MINVALUE:
				case NUMBER:
				case OPTIONAL:
				case ORDER:
				case PRIMARY:
				case REPEAT:
				case REPLACE:
				case RIGHT:
				case SCHEMA:
				case SKIP_:
				case SKIP_QUERY_REWRITE:
				case STACKED:
				case STATEMENT:
				case DATE:
				case TIME:
				case TIMESTAMP:
				case DATETIME:
				case YEAR:
				case NATIONAL:
				case BINARY:
				case TEXT:
				case ENUM:
				case SERIAL:
				case JSON_ARRAY:
				case JSON_ARRAYAGG:
				case JSON_ARRAY_APPEND:
				case JSON_ARRAY_INSERT:
				case JSON_CONTAINS:
				case JSON_CONTAINS_PATH:
				case JSON_DEPTH:
				case JSON_EXTRACT:
				case JSON_INSERT:
				case JSON_KEYS:
				case JSON_LENGTH:
				case JSON_MERGE:
				case JSON_MERGE_PATCH:
				case JSON_MERGE_PRESERVE:
				case JSON_OBJECT:
				case JSON_OBJECTAGG:
				case JSON_OVERLAPS:
				case JSON_PRETTY:
				case JSON_QUOTE:
				case JSON_REMOVE:
				case JSON_REPLACE:
				case JSON_SCHEMA_VALID:
				case JSON_SCHEMA_VALIDATION_REPORT:
				case JSON_SEARCH:
				case JSON_SET:
				case JSON_STORAGE_FREE:
				case JSON_STORAGE_SIZE:
				case JSON_TABLE:
				case JSON_TYPE:
				case JSON_UNQUOTE:
				case JSON_VALID:
				case JSON_VALUE:
				case NESTED:
				case ORDINALITY:
				case PATH:
				case AVG:
				case BIT_AND:
				case BIT_OR:
				case BIT_XOR:
				case COUNT:
				case CUME_DIST:
				case DENSE_RANK:
				case FIRST_VALUE:
				case GROUP_CONCAT:
				case LAG:
				case LAST_VALUE:
				case LEAD:
				case MAX:
				case MIN:
				case NTILE:
				case NTH_VALUE:
				case PERCENT_RANK:
				case RANK:
				case ROW_NUMBER:
				case STD:
				case STDDEV:
				case STDDEV_POP:
				case STDDEV_SAMP:
				case SUM:
				case VAR_POP:
				case VAR_SAMP:
				case VARIANCE:
				case CURRENT_DATE:
				case CURRENT_TIME:
				case CURRENT_TIMESTAMP:
				case LOCALTIME:
				case CURDATE:
				case CURTIME:
				case DATE_ADD:
				case DATE_SUB:
				case LOCALTIMESTAMP:
				case NOW:
				case POSITION:
				case SUBSTR:
				case SUBSTRING:
				case SYSDATE:
				case TRIM:
				case UTC_DATE:
				case UTC_TIME:
				case UTC_TIMESTAMP:
				case ACCOUNT:
				case ACTION:
				case AFTER:
				case AGGREGATE:
				case ALGORITHM:
				case ANY:
				case AT:
				case AUTHORS:
				case AUTOCOMMIT:
				case AUTOEXTEND_SIZE:
				case AUTO_INCREMENT:
				case AVG_ROW_LENGTH:
				case BEGIN:
				case BINLOG:
				case BIT:
				case BLOCK:
				case BOOL:
				case BOOLEAN:
				case BTREE:
				case CACHE:
				case CASCADED:
				case CHAIN:
				case CHANGED:
				case CHANNEL:
				case CHECKSUM:
				case PAGE_CHECKSUM:
				case CIPHER:
				case CLASS_ORIGIN:
				case CLIENT:
				case CLOSE:
				case CLUSTERING:
				case COALESCE:
				case CODE:
				case COLUMNS:
				case COLUMN_FORMAT:
				case COLUMN_NAME:
				case COMMENT:
				case COMMIT:
				case COMPACT:
				case COMPLETION:
				case COMPRESSED:
				case COMPRESSION:
				case CONCURRENT:
				case CONNECT:
				case CONNECTION:
				case CONSISTENT:
				case CONSTRAINT_CATALOG:
				case CONSTRAINT_SCHEMA:
				case CONSTRAINT_NAME:
				case CONTAINS:
				case CONTEXT:
				case CONTRIBUTORS:
				case COPY:
				case CPU:
				case CYCLE:
				case CURSOR_NAME:
				case DATA:
				case DATAFILE:
				case DEALLOCATE:
				case DEFAULT_AUTH:
				case DEFINER:
				case DELAY_KEY_WRITE:
				case DES_KEY_FILE:
				case DIRECTORY:
				case DISABLE:
				case DISCARD:
				case DISK:
				case DO:
				case DUMPFILE:
				case DUPLICATE:
				case DYNAMIC:
				case ENABLE:
				case ENCRYPTED:
				case ENCRYPTION:
				case ENCRYPTION_KEY_ID:
				case END:
				case ENDS:
				case ENGINE:
				case ENGINES:
				case ERROR:
				case ERRORS:
				case ESCAPE:
				case EVEN:
				case EVENT:
				case EVENTS:
				case EVERY:
				case EXCHANGE:
				case EXCLUSIVE:
				case EXPIRE:
				case EXPORT:
				case EXTENDED:
				case EXTENT_SIZE:
				case FAILED_LOGIN_ATTEMPTS:
				case FAST:
				case FAULTS:
				case FIELDS:
				case FILE_BLOCK_SIZE:
				case FILTER:
				case FIRST:
				case FIXED:
				case FLUSH:
				case FOLLOWS:
				case FOUND:
				case FULL:
				case FUNCTION:
				case GENERAL:
				case GLOBAL:
				case GRANTS:
				case GROUP_REPLICATION:
				case HANDLER:
				case HASH:
				case HELP:
				case HISTORY:
				case HOST:
				case HOSTS:
				case IDENTIFIED:
				case IGNORE_SERVER_IDS:
				case IMPORT:
				case INCREMENT:
				case INDEXES:
				case INITIAL_SIZE:
				case INPLACE:
				case INSERT_METHOD:
				case INSTALL:
				case INSTANCE:
				case INSTANT:
				case INVISIBLE:
				case INVOKER:
				case IO:
				case IO_THREAD:
				case IPC:
				case ISOLATION:
				case ISSUER:
				case JSON:
				case KEY_BLOCK_SIZE:
				case LANGUAGE:
				case LAST:
				case LEAVES:
				case LESS:
				case LEVEL:
				case LIST:
				case LOCAL:
				case LOGFILE:
				case LOGS:
				case MASTER:
				case MASTER_AUTO_POSITION:
				case MASTER_CONNECT_RETRY:
				case MASTER_DELAY:
				case MASTER_HEARTBEAT_PERIOD:
				case MASTER_HOST:
				case MASTER_LOG_FILE:
				case MASTER_LOG_POS:
				case MASTER_PASSWORD:
				case MASTER_PORT:
				case MASTER_RETRY_COUNT:
				case MASTER_SSL:
				case MASTER_SSL_CA:
				case MASTER_SSL_CAPATH:
				case MASTER_SSL_CERT:
				case MASTER_SSL_CIPHER:
				case MASTER_SSL_CRL:
				case MASTER_SSL_CRLPATH:
				case MASTER_SSL_KEY:
				case MASTER_TLS_VERSION:
				case MASTER_USER:
				case MAX_CONNECTIONS_PER_HOUR:
				case MAX_QUERIES_PER_HOUR:
				case MAX_ROWS:
				case MAX_SIZE:
				case MAX_UPDATES_PER_HOUR:
				case MAX_USER_CONNECTIONS:
				case MEDIUM:
				case MEMBER:
				case MERGE:
				case MESSAGE_TEXT:
				case MID:
				case MIGRATE:
				case MIN_ROWS:
				case MODE:
				case MODIFY:
				case MUTEX:
				case MYSQL:
				case MYSQL_ERRNO:
				case NAME:
				case NAMES:
				case NCHAR:
				case NEVER:
				case NEXT:
				case NO:
				case NOCACHE:
				case NOCOPY:
				case NOCYCLE:
				case NOMAXVALUE:
				case NOMINVALUE:
				case NOWAIT:
				case NODEGROUP:
				case NONE:
				case ODBC:
				case OFFLINE:
				case OFFSET:
				case OF:
				case OJ:
				case OLD_PASSWORD:
				case ONE:
				case ONLINE:
				case ONLY:
				case OPEN:
				case OPTIMIZER_COSTS:
				case OPTIONS:
				case OWNER:
				case PACK_KEYS:
				case PAGE:
				case PARSER:
				case PARTIAL:
				case PARTITIONING:
				case PARTITIONS:
				case PASSWORD:
				case PASSWORD_LOCK_TIME:
				case PHASE:
				case PLUGIN:
				case PLUGIN_DIR:
				case PLUGINS:
				case PORT:
				case PRECEDES:
				case PREPARE:
				case PRESERVE:
				case PREV:
				case PROCESSLIST:
				case PROFILE:
				case PROFILES:
				case PROXY:
				case QUERY:
				case QUICK:
				case REBUILD:
				case RECOVER:
				case RECURSIVE:
				case REDO_BUFFER_SIZE:
				case REDUNDANT:
				case RELAY:
				case RELAY_LOG_FILE:
				case RELAY_LOG_POS:
				case RELAYLOG:
				case REMOVE:
				case REORGANIZE:
				case REPAIR:
				case REPLICATE_DO_DB:
				case REPLICATE_DO_TABLE:
				case REPLICATE_IGNORE_DB:
				case REPLICATE_IGNORE_TABLE:
				case REPLICATE_REWRITE_DB:
				case REPLICATE_WILD_DO_TABLE:
				case REPLICATE_WILD_IGNORE_TABLE:
				case REPLICATION:
				case RESET:
				case RESTART:
				case RESUME:
				case RETURNED_SQLSTATE:
				case RETURNING:
				case RETURNS:
				case REUSE:
				case ROLE:
				case ROLLBACK:
				case ROLLUP:
				case ROTATE:
				case ROW:
				case ROWS:
				case ROW_FORMAT:
				case RTREE:
				case SAVEPOINT:
				case SCHEDULE:
				case SECURITY:
				case SEQUENCE:
				case SERVER:
				case SESSION:
				case SHARE:
				case SHARED:
				case SIGNED:
				case SIMPLE:
				case SLAVE:
				case SLOW:
				case SNAPSHOT:
				case SOCKET:
				case SOME:
				case SONAME:
				case SOUNDS:
				case SOURCE:
				case SQL_AFTER_GTIDS:
				case SQL_AFTER_MTS_GAPS:
				case SQL_BEFORE_GTIDS:
				case SQL_BUFFER_RESULT:
				case SQL_CACHE:
				case SQL_NO_CACHE:
				case SQL_THREAD:
				case START:
				case STARTS:
				case STATS_AUTO_RECALC:
				case STATS_PERSISTENT:
				case STATS_SAMPLE_PAGES:
				case STATUS:
				case STOP:
				case STORAGE:
				case STRING:
				case SUBCLASS_ORIGIN:
				case SUBJECT:
				case SUBPARTITION:
				case SUBPARTITIONS:
				case SUSPEND:
				case SWAPS:
				case SWITCHES:
				case TABLE_NAME:
				case TABLESPACE:
				case TABLE_TYPE:
				case TEMPORARY:
				case TEMPTABLE:
				case THAN:
				case TRADITIONAL:
				case TRANSACTION:
				case TRANSACTIONAL:
				case TRIGGERS:
				case TRUNCATE:
				case UNBOUNDED:
				case UNDEFINED:
				case UNDOFILE:
				case UNDO_BUFFER_SIZE:
				case UNINSTALL:
				case UNKNOWN:
				case UNTIL:
				case UPGRADE:
				case USER:
				case USE_FRM:
				case USER_RESOURCES:
				case VALIDATION:
				case VALUE:
				case VARIABLES:
				case VIEW:
				case VIRTUAL:
				case VISIBLE:
				case WAIT:
				case WARNINGS:
				case WITHOUT:
				case WORK:
				case WRAPPER:
				case X509:
				case XA:
				case XML:
				case YES:
				case EUR:
				case USA:
				case JIS:
				case ISO:
				case INTERNAL:
				case QUARTER:
				case MONTH:
				case DAY:
				case HOUR:
				case MINUTE:
				case WEEK:
				case SECOND:
				case MICROSECOND:
				case USER_STATISTICS:
				case CLIENT_STATISTICS:
				case INDEX_STATISTICS:
				case TABLE_STATISTICS:
				case FIREWALL_RULES:
				case ADMIN:
				case APPLICATION_PASSWORD_ADMIN:
				case AUDIT_ADMIN:
				case AUDIT_ABORT_EXEMPT:
				case AUTHENTICATION_POLICY_ADMIN:
				case BACKUP_ADMIN:
				case BINLOG_ADMIN:
				case BINLOG_ENCRYPTION_ADMIN:
				case CLONE_ADMIN:
				case CONNECTION_ADMIN:
				case ENCRYPTION_KEY_ADMIN:
				case EXECUTE:
				case FILE:
				case FIREWALL_ADMIN:
				case FIREWALL_EXEMPT:
				case FIREWALL_USER:
				case FLUSH_OPTIMIZER_COSTS:
				case FLUSH_STATUS:
				case FLUSH_TABLES:
				case FLUSH_USER_RESOURCES:
				case GROUP_REPLICATION_ADMIN:
				case INNODB_REDO_LOG_ARCHIVE:
				case INNODB_REDO_LOG_ENABLE:
				case INVOKE:
				case LAMBDA:
				case NDB_STORED_USER:
				case PASSWORDLESS_USER_ADMIN:
				case PERSIST_RO_VARIABLES_ADMIN:
				case PRIVILEGES:
				case PROCESS:
				case RELOAD:
				case REPLICATION_APPLIER:
				case REPLICATION_SLAVE_ADMIN:
				case RESOURCE_GROUP_ADMIN:
				case RESOURCE_GROUP_USER:
				case ROLE_ADMIN:
				case ROUTINE:
				case S3:
				case SESSION_VARIABLES_ADMIN:
				case SET_USER_ID:
				case SHOW_ROUTINE:
				case SHUTDOWN:
				case SUPER:
				case SYSTEM_VARIABLES_ADMIN:
				case TABLES:
				case TABLE_ENCRYPTION_ADMIN:
				case VERSION_TOKEN_ADMIN:
				case XA_RECOVER_ADMIN:
				case ARMSCII8:
				case ASCII:
				case BIG5:
				case CP1250:
				case CP1251:
				case CP1256:
				case CP1257:
				case CP850:
				case CP852:
				case CP866:
				case CP932:
				case DEC8:
				case EUCJPMS:
				case EUCKR:
				case GB18030:
				case GB2312:
				case GBK:
				case GEOSTD8:
				case GREEK:
				case HEBREW:
				case HP8:
				case KEYBCS2:
				case KOI8R:
				case KOI8U:
				case LATIN1:
				case LATIN2:
				case LATIN5:
				case LATIN7:
				case MACCE:
				case MACROMAN:
				case SJIS:
				case SWE7:
				case TIS620:
				case UCS2:
				case UJIS:
				case UTF16:
				case UTF16LE:
				case UTF32:
				case UTF8:
				case UTF8MB3:
				case UTF8MB4:
				case ARCHIVE:
				case BLACKHOLE:
				case CSV:
				case FEDERATED:
				case INNODB:
				case MEMORY:
				case MRG_MYISAM:
				case MYISAM:
				case NDB:
				case NDBCLUSTER:
				case PERFORMANCE_SCHEMA:
				case TOKUDB:
				case REPEATABLE:
				case COMMITTED:
				case UNCOMMITTED:
				case SERIALIZABLE:
				case GEOMETRYCOLLECTION:
				case GEOMETRY:
				case LINESTRING:
				case MULTILINESTRING:
				case MULTIPOINT:
				case MULTIPOLYGON:
				case POINT:
				case POLYGON:
				case ABS:
				case ACOS:
				case ADDDATE:
				case ADDTIME:
				case AES_DECRYPT:
				case AES_ENCRYPT:
				case AREA:
				case ASBINARY:
				case ASIN:
				case ASTEXT:
				case ASWKB:
				case ASWKT:
				case ASYMMETRIC_DECRYPT:
				case ASYMMETRIC_DERIVE:
				case ASYMMETRIC_ENCRYPT:
				case ASYMMETRIC_SIGN:
				case ASYMMETRIC_VERIFY:
				case ATAN:
				case ATAN2:
				case BENCHMARK:
				case BIN:
				case BIT_COUNT:
				case BIT_LENGTH:
				case BUFFER:
				case CATALOG_NAME:
				case CEIL:
				case CEILING:
				case CENTROID:
				case CHARACTER_LENGTH:
				case CHARSET:
				case CHAR_LENGTH:
				case COERCIBILITY:
				case COLLATION:
				case COMPRESS:
				case CONCAT:
				case CONCAT_WS:
				case CONNECTION_ID:
				case CONV:
				case CONVERT_TZ:
				case COS:
				case COT:
				case CRC32:
				case CREATE_ASYMMETRIC_PRIV_KEY:
				case CREATE_ASYMMETRIC_PUB_KEY:
				case CREATE_DH_PARAMETERS:
				case CREATE_DIGEST:
				case CROSSES:
				case DATEDIFF:
				case DATE_FORMAT:
				case DAYNAME:
				case DAYOFMONTH:
				case DAYOFWEEK:
				case DAYOFYEAR:
				case DECODE:
				case DEGREES:
				case DES_DECRYPT:
				case DES_ENCRYPT:
				case DIMENSION:
				case DISJOINT:
				case ELT:
				case ENCODE:
				case ENCRYPT:
				case ENDPOINT:
				case ENGINE_ATTRIBUTE:
				case ENVELOPE:
				case EQUALS:
				case EXP:
				case EXPORT_SET:
				case EXTERIORRING:
				case EXTRACTVALUE:
				case FIELD:
				case FIND_IN_SET:
				case FLOOR:
				case FORMAT:
				case FOUND_ROWS:
				case FROM_BASE64:
				case FROM_DAYS:
				case FROM_UNIXTIME:
				case GEOMCOLLFROMTEXT:
				case GEOMCOLLFROMWKB:
				case GEOMETRYCOLLECTIONFROMTEXT:
				case GEOMETRYCOLLECTIONFROMWKB:
				case GEOMETRYFROMTEXT:
				case GEOMETRYFROMWKB:
				case GEOMETRYN:
				case GEOMETRYTYPE:
				case GEOMFROMTEXT:
				case GEOMFROMWKB:
				case GET_FORMAT:
				case GET_LOCK:
				case GLENGTH:
				case GREATEST:
				case GTID_SUBSET:
				case GTID_SUBTRACT:
				case HEX:
				case IFNULL:
				case INET6_ATON:
				case INET6_NTOA:
				case INET_ATON:
				case INET_NTOA:
				case INSTR:
				case INTERIORRINGN:
				case INTERSECTS:
				case ISCLOSED:
				case ISEMPTY:
				case ISNULL:
				case ISSIMPLE:
				case IS_FREE_LOCK:
				case IS_IPV4:
				case IS_IPV4_COMPAT:
				case IS_IPV4_MAPPED:
				case IS_IPV6:
				case IS_USED_LOCK:
				case LAST_INSERT_ID:
				case LCASE:
				case LEAST:
				case LENGTH:
				case LINEFROMTEXT:
				case LINEFROMWKB:
				case LINESTRINGFROMTEXT:
				case LINESTRINGFROMWKB:
				case LN:
				case LOAD_FILE:
				case LOCATE:
				case LOG:
				case LOG10:
				case LOG2:
				case LOWER:
				case LPAD:
				case LTRIM:
				case MAKEDATE:
				case MAKETIME:
				case MAKE_SET:
				case MASTER_POS_WAIT:
				case MBRCONTAINS:
				case MBRDISJOINT:
				case MBREQUAL:
				case MBRINTERSECTS:
				case MBROVERLAPS:
				case MBRTOUCHES:
				case MBRWITHIN:
				case MD5:
				case MLINEFROMTEXT:
				case MLINEFROMWKB:
				case MONTHNAME:
				case MPOINTFROMTEXT:
				case MPOINTFROMWKB:
				case MPOLYFROMTEXT:
				case MPOLYFROMWKB:
				case MULTILINESTRINGFROMTEXT:
				case MULTILINESTRINGFROMWKB:
				case MULTIPOINTFROMTEXT:
				case MULTIPOINTFROMWKB:
				case MULTIPOLYGONFROMTEXT:
				case MULTIPOLYGONFROMWKB:
				case NAME_CONST:
				case NULLIF:
				case NUMGEOMETRIES:
				case NUMINTERIORRINGS:
				case NUMPOINTS:
				case OCT:
				case OCTET_LENGTH:
				case ORD:
				case OVERLAPS:
				case PERIOD_ADD:
				case PERIOD_DIFF:
				case PI:
				case POINTFROMTEXT:
				case POINTFROMWKB:
				case POINTN:
				case POLYFROMTEXT:
				case POLYFROMWKB:
				case POLYGONFROMTEXT:
				case POLYGONFROMWKB:
				case POW:
				case POWER:
				case QUOTE:
				case RADIANS:
				case RAND:
				case RANDOM:
				case RANDOM_BYTES:
				case RELEASE_LOCK:
				case REVERSE:
				case ROUND:
				case ROW_COUNT:
				case RPAD:
				case RTRIM:
				case SEC_TO_TIME:
				case SECONDARY_ENGINE_ATTRIBUTE:
				case SENSITIVE_VARIABLES_OBSERVER:
				case SESSION_USER:
				case SHA:
				case SHA1:
				case SHA2:
				case SCHEMA_NAME:
				case SIGN:
				case SIN:
				case SLEEP:
				case SOUNDEX:
				case SQL_THREAD_WAIT_AFTER_GTIDS:
				case SQRT:
				case SRID:
				case STARTPOINT:
				case STRCMP:
				case STR_TO_DATE:
				case ST_AREA:
				case ST_ASBINARY:
				case ST_ASTEXT:
				case ST_ASWKB:
				case ST_ASWKT:
				case ST_BUFFER:
				case ST_CENTROID:
				case ST_CONTAINS:
				case ST_CROSSES:
				case ST_DIFFERENCE:
				case ST_DIMENSION:
				case ST_DISJOINT:
				case ST_DISTANCE:
				case ST_ENDPOINT:
				case ST_ENVELOPE:
				case ST_EQUALS:
				case ST_EXTERIORRING:
				case ST_GEOMCOLLFROMTEXT:
				case ST_GEOMCOLLFROMTXT:
				case ST_GEOMCOLLFROMWKB:
				case ST_GEOMETRYCOLLECTIONFROMTEXT:
				case ST_GEOMETRYCOLLECTIONFROMWKB:
				case ST_GEOMETRYFROMTEXT:
				case ST_GEOMETRYFROMWKB:
				case ST_GEOMETRYN:
				case ST_GEOMETRYTYPE:
				case ST_GEOMFROMTEXT:
				case ST_GEOMFROMWKB:
				case ST_INTERIORRINGN:
				case ST_INTERSECTION:
				case ST_INTERSECTS:
				case ST_ISCLOSED:
				case ST_ISEMPTY:
				case ST_ISSIMPLE:
				case ST_LINEFROMTEXT:
				case ST_LINEFROMWKB:
				case ST_LINESTRINGFROMTEXT:
				case ST_LINESTRINGFROMWKB:
				case ST_NUMGEOMETRIES:
				case ST_NUMINTERIORRING:
				case ST_NUMINTERIORRINGS:
				case ST_NUMPOINTS:
				case ST_OVERLAPS:
				case ST_POINTFROMTEXT:
				case ST_POINTFROMWKB:
				case ST_POINTN:
				case ST_POLYFROMTEXT:
				case ST_POLYFROMWKB:
				case ST_POLYGONFROMTEXT:
				case ST_POLYGONFROMWKB:
				case ST_SRID:
				case ST_STARTPOINT:
				case ST_SYMDIFFERENCE:
				case ST_TOUCHES:
				case ST_UNION:
				case ST_WITHIN:
				case ST_X:
				case ST_Y:
				case SUBDATE:
				case SUBSTRING_INDEX:
				case SUBTIME:
				case SYSTEM_USER:
				case SYSTEM:
				case TAN:
				case TELEMETRY_LOG_ADMIN:
				case TIMEDIFF:
				case TIMESTAMPADD:
				case TIMESTAMPDIFF:
				case TIME_FORMAT:
				case TIME_TO_SEC:
				case TOUCHES:
				case TO_BASE64:
				case TO_DAYS:
				case TO_SECONDS:
				case TP_CONNECTION_ADMIN:
				case UCASE:
				case UNCOMPRESS:
				case UNCOMPRESSED_LENGTH:
				case UNHEX:
				case UNIX_TIMESTAMP:
				case UPDATEXML:
				case UPPER:
				case UUID:
				case UUID_SHORT:
				case VALIDATE_PASSWORD_STRENGTH:
				case VERSION:
				case VERSIONING:
				case WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS:
				case WEEKDAY:
				case WEEKOFYEAR:
				case WEIGHT_STRING:
				case WITHIN:
				case YEARWEEK:
				case Y_FUNCTION:
				case X_FUNCTION:
				case VIA:
				case LASTVAL:
				case NEXTVAL:
				case SETVAL:
				case PREVIOUS:
				case PERSISTENT:
				case BINLOG_MONITOR:
				case BINLOG_REPLAY:
				case FEDERATED_ADMIN:
				case READ_ONLY_ADMIN:
				case REPLICA:
				case REPLICATION_MASTER_ADMIN:
				case MONITOR:
				case READ_ONLY:
				case REPLAY:
				case MOD:
				case CHARSET_REVERSE_QOUTE_STRING:
				case STRING_LITERAL:
				case ID:
					{
					setState(3212);
					uidList();
					}
					break;
				case ALL:
					{
					setState(3213);
					match(ALL);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case REMOVE:
				_localctx = new AlterByRemovePartitioningContext(_localctx);
				enterOuterAlt(_localctx, 14);
				{
				setState(3216);
				match(REMOVE);
				setState(3217);
				match(PARTITIONING);
				}
				break;
			case UPGRADE:
				_localctx = new AlterByUpgradePartitioningContext(_localctx);
				enterOuterAlt(_localctx, 15);
				{
				setState(3218);
				match(UPGRADE);
				setState(3219);
				match(PARTITIONING);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropDatabaseContext extends ParserRuleContext {
		public Token dbFormat;
		public TerminalNode DROP() { return getToken(MySqlParser.DROP, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode DATABASE() { return getToken(MySqlParser.DATABASE, 0); }
		public TerminalNode SCHEMA() { return getToken(MySqlParser.SCHEMA, 0); }
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public DropDatabaseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropDatabase; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDropDatabase(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDropDatabase(this);
		}
	}

	public final DropDatabaseContext dropDatabase() throws RecognitionException {
		DropDatabaseContext _localctx = new DropDatabaseContext(_ctx, getState());
		enterRule(_localctx, 164, RULE_dropDatabase);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3222);
			match(DROP);
			setState(3223);
			((DropDatabaseContext)_localctx).dbFormat = _input.LT(1);
			_la = _input.LA(1);
			if ( !(_la==DATABASE || _la==SCHEMA) ) {
				((DropDatabaseContext)_localctx).dbFormat = (Token)_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(3225);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,431,_ctx) ) {
			case 1:
				{
				setState(3224);
				ifExists();
				}
				break;
			}
			setState(3227);
			uid();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropEventContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(MySqlParser.DROP, 0); }
		public TerminalNode EVENT() { return getToken(MySqlParser.EVENT, 0); }
		public FullIdContext fullId() {
			return getRuleContext(FullIdContext.class,0);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public DropEventContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropEvent; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDropEvent(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDropEvent(this);
		}
	}

	public final DropEventContext dropEvent() throws RecognitionException {
		DropEventContext _localctx = new DropEventContext(_ctx, getState());
		enterRule(_localctx, 166, RULE_dropEvent);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3229);
			match(DROP);
			setState(3230);
			match(EVENT);
			setState(3232);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,432,_ctx) ) {
			case 1:
				{
				setState(3231);
				ifExists();
				}
				break;
			}
			setState(3234);
			fullId();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropIndexContext extends ParserRuleContext {
		public Token intimeAction;
		public Token algType;
		public Token lockType;
		public TerminalNode DROP() { return getToken(MySqlParser.DROP, 0); }
		public TerminalNode INDEX() { return getToken(MySqlParser.INDEX, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode ON() { return getToken(MySqlParser.ON, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public List ALGORITHM() { return getTokens(MySqlParser.ALGORITHM); }
		public TerminalNode ALGORITHM(int i) {
			return getToken(MySqlParser.ALGORITHM, i);
		}
		public List LOCK() { return getTokens(MySqlParser.LOCK); }
		public TerminalNode LOCK(int i) {
			return getToken(MySqlParser.LOCK, i);
		}
		public WaitNowaitClauseContext waitNowaitClause() {
			return getRuleContext(WaitNowaitClauseContext.class,0);
		}
		public TerminalNode ONLINE() { return getToken(MySqlParser.ONLINE, 0); }
		public TerminalNode OFFLINE() { return getToken(MySqlParser.OFFLINE, 0); }
		public List DEFAULT() { return getTokens(MySqlParser.DEFAULT); }
		public TerminalNode DEFAULT(int i) {
			return getToken(MySqlParser.DEFAULT, i);
		}
		public List INPLACE() { return getTokens(MySqlParser.INPLACE); }
		public TerminalNode INPLACE(int i) {
			return getToken(MySqlParser.INPLACE, i);
		}
		public List COPY() { return getTokens(MySqlParser.COPY); }
		public TerminalNode COPY(int i) {
			return getToken(MySqlParser.COPY, i);
		}
		public List NONE() { return getTokens(MySqlParser.NONE); }
		public TerminalNode NONE(int i) {
			return getToken(MySqlParser.NONE, i);
		}
		public List SHARED() { return getTokens(MySqlParser.SHARED); }
		public TerminalNode SHARED(int i) {
			return getToken(MySqlParser.SHARED, i);
		}
		public List EXCLUSIVE() { return getTokens(MySqlParser.EXCLUSIVE); }
		public TerminalNode EXCLUSIVE(int i) {
			return getToken(MySqlParser.EXCLUSIVE, i);
		}
		public List EQUAL_SYMBOL() { return getTokens(MySqlParser.EQUAL_SYMBOL); }
		public TerminalNode EQUAL_SYMBOL(int i) {
			return getToken(MySqlParser.EQUAL_SYMBOL, i);
		}
		public DropIndexContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropIndex; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDropIndex(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDropIndex(this);
		}
	}

	public final DropIndexContext dropIndex() throws RecognitionException {
		DropIndexContext _localctx = new DropIndexContext(_ctx, getState());
		enterRule(_localctx, 168, RULE_dropIndex);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(3236);
			match(DROP);
			setState(3237);
			match(INDEX);
			setState(3239);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,433,_ctx) ) {
			case 1:
				{
				setState(3238);
				ifExists();
				}
				break;
			}
			setState(3242);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,434,_ctx) ) {
			case 1:
				{
				setState(3241);
				((DropIndexContext)_localctx).intimeAction = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==OFFLINE || _la==ONLINE) ) {
					((DropIndexContext)_localctx).intimeAction = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			}
			setState(3244);
			uid();
			setState(3245);
			match(ON);
			setState(3246);
			tableName();
			setState(3259);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,438,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					{
					setState(3257);
					_errHandler.sync(this);
					switch (_input.LA(1)) {
					case ALGORITHM:
						{
						setState(3247);
						match(ALGORITHM);
						setState(3249);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==EQUAL_SYMBOL) {
							{
							setState(3248);
							match(EQUAL_SYMBOL);
							}
						}

						setState(3251);
						((DropIndexContext)_localctx).algType = _input.LT(1);
						_la = _input.LA(1);
						if ( !(_la==DEFAULT || _la==COPY || _la==INPLACE) ) {
							((DropIndexContext)_localctx).algType = (Token)_errHandler.recoverInline(this);
						}
						else {
							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
							_errHandler.reportMatch(this);
							consume();
						}
						}
						break;
					case LOCK:
						{
						setState(3252);
						match(LOCK);
						setState(3254);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==EQUAL_SYMBOL) {
							{
							setState(3253);
							match(EQUAL_SYMBOL);
							}
						}

						setState(3256);
						((DropIndexContext)_localctx).lockType = _input.LT(1);
						_la = _input.LA(1);
						if ( !(_la==DEFAULT || _la==EXCLUSIVE || _la==NONE || _la==SHARED) ) {
							((DropIndexContext)_localctx).lockType = (Token)_errHandler.recoverInline(this);
						}
						else {
							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
							_errHandler.reportMatch(this);
							consume();
						}
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					} 
				}
				setState(3261);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,438,_ctx);
			}
			setState(3263);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==NOWAIT || _la==WAIT) {
				{
				setState(3262);
				waitNowaitClause();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropLogfileGroupContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(MySqlParser.DROP, 0); }
		public TerminalNode LOGFILE() { return getToken(MySqlParser.LOGFILE, 0); }
		public TerminalNode GROUP() { return getToken(MySqlParser.GROUP, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode ENGINE() { return getToken(MySqlParser.ENGINE, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public EngineNameContext engineName() {
			return getRuleContext(EngineNameContext.class,0);
		}
		public DropLogfileGroupContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropLogfileGroup; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDropLogfileGroup(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDropLogfileGroup(this);
		}
	}

	public final DropLogfileGroupContext dropLogfileGroup() throws RecognitionException {
		DropLogfileGroupContext _localctx = new DropLogfileGroupContext(_ctx, getState());
		enterRule(_localctx, 170, RULE_dropLogfileGroup);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3265);
			match(DROP);
			setState(3266);
			match(LOGFILE);
			setState(3267);
			match(GROUP);
			setState(3268);
			uid();
			setState(3269);
			match(ENGINE);
			setState(3270);
			match(EQUAL_SYMBOL);
			setState(3271);
			engineName();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropProcedureContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(MySqlParser.DROP, 0); }
		public TerminalNode PROCEDURE() { return getToken(MySqlParser.PROCEDURE, 0); }
		public FullIdContext fullId() {
			return getRuleContext(FullIdContext.class,0);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public DropProcedureContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropProcedure; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDropProcedure(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDropProcedure(this);
		}
	}

	public final DropProcedureContext dropProcedure() throws RecognitionException {
		DropProcedureContext _localctx = new DropProcedureContext(_ctx, getState());
		enterRule(_localctx, 172, RULE_dropProcedure);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3273);
			match(DROP);
			setState(3274);
			match(PROCEDURE);
			setState(3276);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,440,_ctx) ) {
			case 1:
				{
				setState(3275);
				ifExists();
				}
				break;
			}
			setState(3278);
			fullId();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropFunctionContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(MySqlParser.DROP, 0); }
		public TerminalNode FUNCTION() { return getToken(MySqlParser.FUNCTION, 0); }
		public FullIdContext fullId() {
			return getRuleContext(FullIdContext.class,0);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public DropFunctionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropFunction; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDropFunction(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDropFunction(this);
		}
	}

	public final DropFunctionContext dropFunction() throws RecognitionException {
		DropFunctionContext _localctx = new DropFunctionContext(_ctx, getState());
		enterRule(_localctx, 174, RULE_dropFunction);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3280);
			match(DROP);
			setState(3281);
			match(FUNCTION);
			setState(3283);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,441,_ctx) ) {
			case 1:
				{
				setState(3282);
				ifExists();
				}
				break;
			}
			setState(3285);
			fullId();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropServerContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(MySqlParser.DROP, 0); }
		public TerminalNode SERVER() { return getToken(MySqlParser.SERVER, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public DropServerContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropServer; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDropServer(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDropServer(this);
		}
	}

	public final DropServerContext dropServer() throws RecognitionException {
		DropServerContext _localctx = new DropServerContext(_ctx, getState());
		enterRule(_localctx, 176, RULE_dropServer);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3287);
			match(DROP);
			setState(3288);
			match(SERVER);
			setState(3290);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,442,_ctx) ) {
			case 1:
				{
				setState(3289);
				ifExists();
				}
				break;
			}
			setState(3292);
			uid();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropTableContext extends ParserRuleContext {
		public Token dropType;
		public TerminalNode DROP() { return getToken(MySqlParser.DROP, 0); }
		public TerminalNode TABLE() { return getToken(MySqlParser.TABLE, 0); }
		public TablesContext tables() {
			return getRuleContext(TablesContext.class,0);
		}
		public TerminalNode TEMPORARY() { return getToken(MySqlParser.TEMPORARY, 0); }
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public WaitNowaitClauseContext waitNowaitClause() {
			return getRuleContext(WaitNowaitClauseContext.class,0);
		}
		public TerminalNode RESTRICT() { return getToken(MySqlParser.RESTRICT, 0); }
		public TerminalNode CASCADE() { return getToken(MySqlParser.CASCADE, 0); }
		public DropTableContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropTable; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDropTable(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDropTable(this);
		}
	}

	public final DropTableContext dropTable() throws RecognitionException {
		DropTableContext _localctx = new DropTableContext(_ctx, getState());
		enterRule(_localctx, 178, RULE_dropTable);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3294);
			match(DROP);
			setState(3296);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==TEMPORARY) {
				{
				setState(3295);
				match(TEMPORARY);
				}
			}

			setState(3298);
			match(TABLE);
			setState(3300);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,444,_ctx) ) {
			case 1:
				{
				setState(3299);
				ifExists();
				}
				break;
			}
			setState(3302);
			tables();
			setState(3304);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==NOWAIT || _la==WAIT) {
				{
				setState(3303);
				waitNowaitClause();
				}
			}

			setState(3307);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CASCADE || _la==RESTRICT) {
				{
				setState(3306);
				((DropTableContext)_localctx).dropType = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==CASCADE || _la==RESTRICT) ) {
					((DropTableContext)_localctx).dropType = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropTablespaceContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(MySqlParser.DROP, 0); }
		public TerminalNode TABLESPACE() { return getToken(MySqlParser.TABLESPACE, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode ENGINE() { return getToken(MySqlParser.ENGINE, 0); }
		public EngineNameContext engineName() {
			return getRuleContext(EngineNameContext.class,0);
		}
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public DropTablespaceContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropTablespace; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDropTablespace(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDropTablespace(this);
		}
	}

	public final DropTablespaceContext dropTablespace() throws RecognitionException {
		DropTablespaceContext _localctx = new DropTablespaceContext(_ctx, getState());
		enterRule(_localctx, 180, RULE_dropTablespace);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3309);
			match(DROP);
			setState(3310);
			match(TABLESPACE);
			setState(3311);
			uid();
			setState(3317);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ENGINE) {
				{
				setState(3312);
				match(ENGINE);
				setState(3314);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQUAL_SYMBOL) {
					{
					setState(3313);
					match(EQUAL_SYMBOL);
					}
				}

				setState(3316);
				engineName();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropTriggerContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(MySqlParser.DROP, 0); }
		public TerminalNode TRIGGER() { return getToken(MySqlParser.TRIGGER, 0); }
		public FullIdContext fullId() {
			return getRuleContext(FullIdContext.class,0);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public DropTriggerContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropTrigger; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDropTrigger(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDropTrigger(this);
		}
	}

	public final DropTriggerContext dropTrigger() throws RecognitionException {
		DropTriggerContext _localctx = new DropTriggerContext(_ctx, getState());
		enterRule(_localctx, 182, RULE_dropTrigger);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3319);
			match(DROP);
			setState(3320);
			match(TRIGGER);
			setState(3322);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,449,_ctx) ) {
			case 1:
				{
				setState(3321);
				ifExists();
				}
				break;
			}
			setState(3324);
			fullId();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropViewContext extends ParserRuleContext {
		public Token dropType;
		public TerminalNode DROP() { return getToken(MySqlParser.DROP, 0); }
		public TerminalNode VIEW() { return getToken(MySqlParser.VIEW, 0); }
		public List fullId() {
			return getRuleContexts(FullIdContext.class);
		}
		public FullIdContext fullId(int i) {
			return getRuleContext(FullIdContext.class,i);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public TerminalNode RESTRICT() { return getToken(MySqlParser.RESTRICT, 0); }
		public TerminalNode CASCADE() { return getToken(MySqlParser.CASCADE, 0); }
		public DropViewContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropView; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDropView(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDropView(this);
		}
	}

	public final DropViewContext dropView() throws RecognitionException {
		DropViewContext _localctx = new DropViewContext(_ctx, getState());
		enterRule(_localctx, 184, RULE_dropView);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3326);
			match(DROP);
			setState(3327);
			match(VIEW);
			setState(3329);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,450,_ctx) ) {
			case 1:
				{
				setState(3328);
				ifExists();
				}
				break;
			}
			setState(3331);
			fullId();
			setState(3336);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(3332);
				match(COMMA);
				setState(3333);
				fullId();
				}
				}
				setState(3338);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(3340);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CASCADE || _la==RESTRICT) {
				{
				setState(3339);
				((DropViewContext)_localctx).dropType = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==CASCADE || _la==RESTRICT) ) {
					((DropViewContext)_localctx).dropType = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropRoleContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(MySqlParser.DROP, 0); }
		public TerminalNode ROLE() { return getToken(MySqlParser.ROLE, 0); }
		public List roleName() {
			return getRuleContexts(RoleNameContext.class);
		}
		public RoleNameContext roleName(int i) {
			return getRuleContext(RoleNameContext.class,i);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public DropRoleContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropRole; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDropRole(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDropRole(this);
		}
	}

	public final DropRoleContext dropRole() throws RecognitionException {
		DropRoleContext _localctx = new DropRoleContext(_ctx, getState());
		enterRule(_localctx, 186, RULE_dropRole);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3342);
			match(DROP);
			setState(3343);
			match(ROLE);
			setState(3345);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,453,_ctx) ) {
			case 1:
				{
				setState(3344);
				ifExists();
				}
				break;
			}
			setState(3347);
			roleName();
			setState(3352);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(3348);
				match(COMMA);
				setState(3349);
				roleName();
				}
				}
				setState(3354);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SetRoleContext extends ParserRuleContext {
		public TerminalNode SET() { return getToken(MySqlParser.SET, 0); }
		public TerminalNode DEFAULT() { return getToken(MySqlParser.DEFAULT, 0); }
		public TerminalNode ROLE() { return getToken(MySqlParser.ROLE, 0); }
		public TerminalNode TO() { return getToken(MySqlParser.TO, 0); }
		public TerminalNode NONE() { return getToken(MySqlParser.NONE, 0); }
		public TerminalNode ALL() { return getToken(MySqlParser.ALL, 0); }
		public List roleName() {
			return getRuleContexts(RoleNameContext.class);
		}
		public RoleNameContext roleName(int i) {
			return getRuleContext(RoleNameContext.class,i);
		}
		public List userName() {
			return getRuleContexts(UserNameContext.class);
		}
		public UserNameContext userName(int i) {
			return getRuleContext(UserNameContext.class,i);
		}
		public List uid() {
			return getRuleContexts(UidContext.class);
		}
		public UidContext uid(int i) {
			return getRuleContext(UidContext.class,i);
		}
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public RoleOptionContext roleOption() {
			return getRuleContext(RoleOptionContext.class,0);
		}
		public SetRoleContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_setRole; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSetRole(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSetRole(this);
		}
	}

	public final SetRoleContext setRole() throws RecognitionException {
		SetRoleContext _localctx = new SetRoleContext(_ctx, getState());
		enterRule(_localctx, 188, RULE_setRole);
		int _la;
		try {
			setState(3388);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,460,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(3355);
				match(SET);
				setState(3356);
				match(DEFAULT);
				setState(3357);
				match(ROLE);
				setState(3368);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,456,_ctx) ) {
				case 1:
					{
					setState(3358);
					match(NONE);
					}
					break;
				case 2:
					{
					setState(3359);
					match(ALL);
					}
					break;
				case 3:
					{
					setState(3360);
					roleName();
					setState(3365);
					_errHandler.sync(this);
					_la = _input.LA(1);
					while (_la==COMMA) {
						{
						{
						setState(3361);
						match(COMMA);
						setState(3362);
						roleName();
						}
						}
						setState(3367);
						_errHandler.sync(this);
						_la = _input.LA(1);
					}
					}
					break;
				}
				setState(3370);
				match(TO);
				setState(3373);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,457,_ctx) ) {
				case 1:
					{
					setState(3371);
					userName();
					}
					break;
				case 2:
					{
					setState(3372);
					uid();
					}
					break;
				}
				setState(3382);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(3375);
					match(COMMA);
					setState(3378);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,458,_ctx) ) {
					case 1:
						{
						setState(3376);
						userName();
						}
						break;
					case 2:
						{
						setState(3377);
						uid();
						}
						break;
					}
					}
					}
					setState(3384);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(3385);
				match(SET);
				setState(3386);
				match(ROLE);
				setState(3387);
				roleOption();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropSequenceContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(MySqlParser.DROP, 0); }
		public TerminalNode SEQUENCE() { return getToken(MySqlParser.SEQUENCE, 0); }
		public List fullId() {
			return getRuleContexts(FullIdContext.class);
		}
		public FullIdContext fullId(int i) {
			return getRuleContext(FullIdContext.class,i);
		}
		public TerminalNode TEMPORARY() { return getToken(MySqlParser.TEMPORARY, 0); }
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public TerminalNode COMMENT_INPUT() { return getToken(MySqlParser.COMMENT_INPUT, 0); }
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public DropSequenceContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropSequence; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDropSequence(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDropSequence(this);
		}
	}

	public final DropSequenceContext dropSequence() throws RecognitionException {
		DropSequenceContext _localctx = new DropSequenceContext(_ctx, getState());
		enterRule(_localctx, 190, RULE_dropSequence);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3390);
			match(DROP);
			setState(3392);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==TEMPORARY) {
				{
				setState(3391);
				match(TEMPORARY);
				}
			}

			setState(3394);
			match(SEQUENCE);
			setState(3396);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,462,_ctx) ) {
			case 1:
				{
				setState(3395);
				ifExists();
				}
				break;
			}
			setState(3399);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==COMMENT_INPUT) {
				{
				setState(3398);
				match(COMMENT_INPUT);
				}
			}

			setState(3401);
			fullId();
			setState(3406);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(3402);
				match(COMMA);
				setState(3403);
				fullId();
				}
				}
				setState(3408);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RenameTableContext extends ParserRuleContext {
		public TerminalNode RENAME() { return getToken(MySqlParser.RENAME, 0); }
		public TerminalNode TABLE() { return getToken(MySqlParser.TABLE, 0); }
		public List renameTableClause() {
			return getRuleContexts(RenameTableClauseContext.class);
		}
		public RenameTableClauseContext renameTableClause(int i) {
			return getRuleContext(RenameTableClauseContext.class,i);
		}
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public RenameTableContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_renameTable; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterRenameTable(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitRenameTable(this);
		}
	}

	public final RenameTableContext renameTable() throws RecognitionException {
		RenameTableContext _localctx = new RenameTableContext(_ctx, getState());
		enterRule(_localctx, 192, RULE_renameTable);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3409);
			match(RENAME);
			setState(3410);
			match(TABLE);
			setState(3411);
			renameTableClause();
			setState(3416);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(3412);
				match(COMMA);
				setState(3413);
				renameTableClause();
				}
				}
				setState(3418);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RenameTableClauseContext extends ParserRuleContext {
		public List tableName() {
			return getRuleContexts(TableNameContext.class);
		}
		public TableNameContext tableName(int i) {
			return getRuleContext(TableNameContext.class,i);
		}
		public TerminalNode TO() { return getToken(MySqlParser.TO, 0); }
		public WaitNowaitClauseContext waitNowaitClause() {
			return getRuleContext(WaitNowaitClauseContext.class,0);
		}
		public RenameTableClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_renameTableClause; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterRenameTableClause(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitRenameTableClause(this);
		}
	}

	public final RenameTableClauseContext renameTableClause() throws RecognitionException {
		RenameTableClauseContext _localctx = new RenameTableClauseContext(_ctx, getState());
		enterRule(_localctx, 194, RULE_renameTableClause);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3419);
			tableName();
			setState(3421);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==NOWAIT || _la==WAIT) {
				{
				setState(3420);
				waitNowaitClause();
				}
			}

			setState(3423);
			match(TO);
			setState(3424);
			tableName();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TruncateTableContext extends ParserRuleContext {
		public TerminalNode TRUNCATE() { return getToken(MySqlParser.TRUNCATE, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public TerminalNode TABLE() { return getToken(MySqlParser.TABLE, 0); }
		public WaitNowaitClauseContext waitNowaitClause() {
			return getRuleContext(WaitNowaitClauseContext.class,0);
		}
		public TruncateTableContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_truncateTable; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTruncateTable(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTruncateTable(this);
		}
	}

	public final TruncateTableContext truncateTable() throws RecognitionException {
		TruncateTableContext _localctx = new TruncateTableContext(_ctx, getState());
		enterRule(_localctx, 196, RULE_truncateTable);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3426);
			match(TRUNCATE);
			setState(3428);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==TABLE) {
				{
				setState(3427);
				match(TABLE);
				}
			}

			setState(3430);
			tableName();
			setState(3432);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==NOWAIT || _la==WAIT) {
				{
				setState(3431);
				waitNowaitClause();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CallStatementContext extends ParserRuleContext {
		public TerminalNode CALL() { return getToken(MySqlParser.CALL, 0); }
		public FullIdContext fullId() {
			return getRuleContext(FullIdContext.class,0);
		}
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public ConstantsContext constants() {
			return getRuleContext(ConstantsContext.class,0);
		}
		public ExpressionsContext expressions() {
			return getRuleContext(ExpressionsContext.class,0);
		}
		public CallStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_callStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCallStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCallStatement(this);
		}
	}

	public final CallStatementContext callStatement() throws RecognitionException {
		CallStatementContext _localctx = new CallStatementContext(_ctx, getState());
		enterRule(_localctx, 198, RULE_callStatement);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3434);
			match(CALL);
			setState(3435);
			fullId();
			setState(3442);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,470,_ctx) ) {
			case 1:
				{
				setState(3436);
				match(LR_BRACKET);
				setState(3439);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,469,_ctx) ) {
				case 1:
					{
					setState(3437);
					constants();
					}
					break;
				case 2:
					{
					setState(3438);
					expressions();
					}
					break;
				}
				setState(3441);
				match(RR_BRACKET);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DeleteStatementContext extends ParserRuleContext {
		public SingleDeleteStatementContext singleDeleteStatement() {
			return getRuleContext(SingleDeleteStatementContext.class,0);
		}
		public MultipleDeleteStatementContext multipleDeleteStatement() {
			return getRuleContext(MultipleDeleteStatementContext.class,0);
		}
		public DeleteStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_deleteStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDeleteStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDeleteStatement(this);
		}
	}

	public final DeleteStatementContext deleteStatement() throws RecognitionException {
		DeleteStatementContext _localctx = new DeleteStatementContext(_ctx, getState());
		enterRule(_localctx, 200, RULE_deleteStatement);
		try {
			setState(3446);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,471,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(3444);
				singleDeleteStatement();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(3445);
				multipleDeleteStatement();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DoStatementContext extends ParserRuleContext {
		public TerminalNode DO() { return getToken(MySqlParser.DO, 0); }
		public ExpressionsContext expressions() {
			return getRuleContext(ExpressionsContext.class,0);
		}
		public DoStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_doStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDoStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDoStatement(this);
		}
	}

	public final DoStatementContext doStatement() throws RecognitionException {
		DoStatementContext _localctx = new DoStatementContext(_ctx, getState());
		enterRule(_localctx, 202, RULE_doStatement);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3448);
			match(DO);
			setState(3449);
			expressions();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class HandlerStatementContext extends ParserRuleContext {
		public HandlerOpenStatementContext handlerOpenStatement() {
			return getRuleContext(HandlerOpenStatementContext.class,0);
		}
		public HandlerReadIndexStatementContext handlerReadIndexStatement() {
			return getRuleContext(HandlerReadIndexStatementContext.class,0);
		}
		public HandlerReadStatementContext handlerReadStatement() {
			return getRuleContext(HandlerReadStatementContext.class,0);
		}
		public HandlerCloseStatementContext handlerCloseStatement() {
			return getRuleContext(HandlerCloseStatementContext.class,0);
		}
		public HandlerStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_handlerStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterHandlerStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitHandlerStatement(this);
		}
	}

	public final HandlerStatementContext handlerStatement() throws RecognitionException {
		HandlerStatementContext _localctx = new HandlerStatementContext(_ctx, getState());
		enterRule(_localctx, 204, RULE_handlerStatement);
		try {
			setState(3455);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,472,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(3451);
				handlerOpenStatement();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(3452);
				handlerReadIndexStatement();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(3453);
				handlerReadStatement();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(3454);
				handlerCloseStatement();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class InsertStatementContext extends ParserRuleContext {
		public Token priority;
		public UidListContext partitions;
		public FullColumnNameListContext columns;
		public UpdatedElementContext setFirst;
		public UpdatedElementContext updatedElement;
		public List setElements = new ArrayList();
		public UpdatedElementContext duplicatedFirst;
		public List duplicatedElements = new ArrayList();
		public TerminalNode INSERT() { return getToken(MySqlParser.INSERT, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public InsertStatementValueContext insertStatementValue() {
			return getRuleContext(InsertStatementValueContext.class,0);
		}
		public TerminalNode SET() { return getToken(MySqlParser.SET, 0); }
		public TerminalNode IGNORE() { return getToken(MySqlParser.IGNORE, 0); }
		public TerminalNode INTO() { return getToken(MySqlParser.INTO, 0); }
		public TerminalNode PARTITION() { return getToken(MySqlParser.PARTITION, 0); }
		public List LR_BRACKET() { return getTokens(MySqlParser.LR_BRACKET); }
		public TerminalNode LR_BRACKET(int i) {
			return getToken(MySqlParser.LR_BRACKET, i);
		}
		public List RR_BRACKET() { return getTokens(MySqlParser.RR_BRACKET); }
		public TerminalNode RR_BRACKET(int i) {
			return getToken(MySqlParser.RR_BRACKET, i);
		}
		public List updatedElement() {
			return getRuleContexts(UpdatedElementContext.class);
		}
		public UpdatedElementContext updatedElement(int i) {
			return getRuleContext(UpdatedElementContext.class,i);
		}
		public TerminalNode ON() { return getToken(MySqlParser.ON, 0); }
		public TerminalNode DUPLICATE() { return getToken(MySqlParser.DUPLICATE, 0); }
		public TerminalNode KEY() { return getToken(MySqlParser.KEY, 0); }
		public TerminalNode UPDATE() { return getToken(MySqlParser.UPDATE, 0); }
		public TerminalNode LOW_PRIORITY() { return getToken(MySqlParser.LOW_PRIORITY, 0); }
		public TerminalNode DELAYED() { return getToken(MySqlParser.DELAYED, 0); }
		public TerminalNode HIGH_PRIORITY() { return getToken(MySqlParser.HIGH_PRIORITY, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public UidListContext uidList() {
			return getRuleContext(UidListContext.class,0);
		}
		public TerminalNode AS() { return getToken(MySqlParser.AS, 0); }
		public FullColumnNameListContext fullColumnNameList() {
			return getRuleContext(FullColumnNameListContext.class,0);
		}
		public InsertStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_insertStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterInsertStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitInsertStatement(this);
		}
	}

	public final InsertStatementContext insertStatement() throws RecognitionException {
		InsertStatementContext _localctx = new InsertStatementContext(_ctx, getState());
		enterRule(_localctx, 206, RULE_insertStatement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3457);
			match(INSERT);
			setState(3459);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==DELAYED || _la==HIGH_PRIORITY || _la==LOW_PRIORITY) {
				{
				setState(3458);
				((InsertStatementContext)_localctx).priority = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==DELAYED || _la==HIGH_PRIORITY || _la==LOW_PRIORITY) ) {
					((InsertStatementContext)_localctx).priority = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(3462);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IGNORE) {
				{
				setState(3461);
				match(IGNORE);
				}
			}

			setState(3465);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==INTO) {
				{
				setState(3464);
				match(INTO);
				}
			}

			setState(3467);
			tableName();
			setState(3474);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==PARTITION) {
				{
				setState(3468);
				match(PARTITION);
				setState(3469);
				match(LR_BRACKET);
				setState(3471);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ARRAY) | (1L << ATTRIBUTE) | (1L << BUCKETS) | (1L << CONDITION) | (1L << CURRENT) | (1L << CURRENT_ROLE) | (1L << CURRENT_USER) | (1L << DATABASE) | (1L << DEFAULT) | (1L << DIAGNOSTICS) | (1L << EMPTY) | (1L << ENFORCED) | (1L << EXCEPT))) != 0) || ((((_la - 74)) & ~0x3f) == 0 && ((1L << (_la - 74)) & ((1L << (GROUP - 74)) | (1L << (GROUP_REPLICATION_STREAM - 74)) | (1L << (IF - 74)) | (1L << (IGNORED - 74)) | (1L << (INSERT - 74)) | (1L << (LATERAL - 74)) | (1L << (LEFT - 74)) | (1L << (LOCKED - 74)) | (1L << (MAXVALUE - 74)) | (1L << (MINVALUE - 74)) | (1L << (NUMBER - 74)) | (1L << (OPTIONAL - 74)) | (1L << (ORDER - 74)) | (1L << (PRIMARY - 74)))) != 0) || ((((_la - 142)) & ~0x3f) == 0 && ((1L << (_la - 142)) & ((1L << (REPEAT - 142)) | (1L << (REPLACE - 142)) | (1L << (RIGHT - 142)) | (1L << (SCHEMA - 142)) | (1L << (SKIP_ - 142)) | (1L << (SKIP_QUERY_REWRITE - 142)) | (1L << (STACKED - 142)) | (1L << (STATEMENT - 142)))) != 0) || ((((_la - 220)) & ~0x3f) == 0 && ((1L << (_la - 220)) & ((1L << (DATE - 220)) | (1L << (TIME - 220)) | (1L << (TIMESTAMP - 220)) | (1L << (DATETIME - 220)) | (1L << (YEAR - 220)) | (1L << (NATIONAL - 220)) | (1L << (BINARY - 220)) | (1L << (TEXT - 220)) | (1L << (ENUM - 220)) | (1L << (SERIAL - 220)) | (1L << (JSON_ARRAY - 220)) | (1L << (JSON_ARRAYAGG - 220)) | (1L << (JSON_ARRAY_APPEND - 220)) | (1L << (JSON_ARRAY_INSERT - 220)) | (1L << (JSON_CONTAINS - 220)) | (1L << (JSON_CONTAINS_PATH - 220)) | (1L << (JSON_DEPTH - 220)) | (1L << (JSON_EXTRACT - 220)) | (1L << (JSON_INSERT - 220)) | (1L << (JSON_KEYS - 220)) | (1L << (JSON_LENGTH - 220)) | (1L << (JSON_MERGE - 220)) | (1L << (JSON_MERGE_PATCH - 220)) | (1L << (JSON_MERGE_PRESERVE - 220)) | (1L << (JSON_OBJECT - 220)) | (1L << (JSON_OBJECTAGG - 220)) | (1L << (JSON_OVERLAPS - 220)) | (1L << (JSON_PRETTY - 220)) | (1L << (JSON_QUOTE - 220)) | (1L << (JSON_REMOVE - 220)) | (1L << (JSON_REPLACE - 220)) | (1L << (JSON_SCHEMA_VALID - 220)) | (1L << (JSON_SCHEMA_VALIDATION_REPORT - 220)) | (1L << (JSON_SEARCH - 220)) | (1L << (JSON_SET - 220)) | (1L << (JSON_STORAGE_FREE - 220)) | (1L << (JSON_STORAGE_SIZE - 220)) | (1L << (JSON_TABLE - 220)) | (1L << (JSON_TYPE - 220)) | (1L << (JSON_UNQUOTE - 220)))) != 0) || ((((_la - 284)) & ~0x3f) == 0 && ((1L << (_la - 284)) & ((1L << (JSON_VALID - 284)) | (1L << (JSON_VALUE - 284)) | (1L << (NESTED - 284)) | (1L << (ORDINALITY - 284)) | (1L << (PATH - 284)) | (1L << (AVG - 284)) | (1L << (BIT_AND - 284)) | (1L << (BIT_OR - 284)) | (1L << (BIT_XOR - 284)) | (1L << (COUNT - 284)) | (1L << (CUME_DIST - 284)) | (1L << (DENSE_RANK - 284)) | (1L << (FIRST_VALUE - 284)) | (1L << (GROUP_CONCAT - 284)) | (1L << (LAG - 284)) | (1L << (LAST_VALUE - 284)) | (1L << (LEAD - 284)) | (1L << (MAX - 284)) | (1L << (MIN - 284)) | (1L << (NTILE - 284)) | (1L << (NTH_VALUE - 284)) | (1L << (PERCENT_RANK - 284)) | (1L << (RANK - 284)) | (1L << (ROW_NUMBER - 284)) | (1L << (STD - 284)) | (1L << (STDDEV - 284)) | (1L << (STDDEV_POP - 284)) | (1L << (STDDEV_SAMP - 284)) | (1L << (SUM - 284)) | (1L << (VAR_POP - 284)) | (1L << (VAR_SAMP - 284)) | (1L << (VARIANCE - 284)) | (1L << (CURRENT_DATE - 284)) | (1L << (CURRENT_TIME - 284)) | (1L << (CURRENT_TIMESTAMP - 284)) | (1L << (LOCALTIME - 284)) | (1L << (CURDATE - 284)) | (1L << (CURTIME - 284)) | (1L << (DATE_ADD - 284)) | (1L << (DATE_SUB - 284)) | (1L << (LOCALTIMESTAMP - 284)) | (1L << (NOW - 284)) | (1L << (POSITION - 284)) | (1L << (SUBSTR - 284)) | (1L << (SUBSTRING - 284)) | (1L << (SYSDATE - 284)) | (1L << (TRIM - 284)) | (1L << (UTC_DATE - 284)) | (1L << (UTC_TIME - 284)) | (1L << (UTC_TIMESTAMP - 284)) | (1L << (ACCOUNT - 284)) | (1L << (ACTION - 284)) | (1L << (AFTER - 284)) | (1L << (AGGREGATE - 284)) | (1L << (ALGORITHM - 284)) | (1L << (ANY - 284)) | (1L << (AT - 284)) | (1L << (AUTHORS - 284)) | (1L << (AUTOCOMMIT - 284)) | (1L << (AUTOEXTEND_SIZE - 284)) | (1L << (AUTO_INCREMENT - 284)) | (1L << (AVG_ROW_LENGTH - 284)) | (1L << (BEGIN - 284)))) != 0) || ((((_la - 348)) & ~0x3f) == 0 && ((1L << (_la - 348)) & ((1L << (BINLOG - 348)) | (1L << (BIT - 348)) | (1L << (BLOCK - 348)) | (1L << (BOOL - 348)) | (1L << (BOOLEAN - 348)) | (1L << (BTREE - 348)) | (1L << (CACHE - 348)) | (1L << (CASCADED - 348)) | (1L << (CHAIN - 348)) | (1L << (CHANGED - 348)) | (1L << (CHANNEL - 348)) | (1L << (CHECKSUM - 348)) | (1L << (PAGE_CHECKSUM - 348)) | (1L << (CIPHER - 348)) | (1L << (CLASS_ORIGIN - 348)) | (1L << (CLIENT - 348)) | (1L << (CLOSE - 348)) | (1L << (CLUSTERING - 348)) | (1L << (COALESCE - 348)) | (1L << (CODE - 348)) | (1L << (COLUMNS - 348)) | (1L << (COLUMN_FORMAT - 348)) | (1L << (COLUMN_NAME - 348)) | (1L << (COMMENT - 348)) | (1L << (COMMIT - 348)) | (1L << (COMPACT - 348)) | (1L << (COMPLETION - 348)) | (1L << (COMPRESSED - 348)) | (1L << (COMPRESSION - 348)) | (1L << (CONCURRENT - 348)) | (1L << (CONNECT - 348)) | (1L << (CONNECTION - 348)) | (1L << (CONSISTENT - 348)) | (1L << (CONSTRAINT_CATALOG - 348)) | (1L << (CONSTRAINT_SCHEMA - 348)) | (1L << (CONSTRAINT_NAME - 348)) | (1L << (CONTAINS - 348)) | (1L << (CONTEXT - 348)) | (1L << (CONTRIBUTORS - 348)) | (1L << (COPY - 348)) | (1L << (CPU - 348)) | (1L << (CYCLE - 348)) | (1L << (CURSOR_NAME - 348)) | (1L << (DATA - 348)) | (1L << (DATAFILE - 348)) | (1L << (DEALLOCATE - 348)) | (1L << (DEFAULT_AUTH - 348)) | (1L << (DEFINER - 348)) | (1L << (DELAY_KEY_WRITE - 348)) | (1L << (DES_KEY_FILE - 348)) | (1L << (DIRECTORY - 348)) | (1L << (DISABLE - 348)) | (1L << (DISCARD - 348)) | (1L << (DISK - 348)) | (1L << (DO - 348)) | (1L << (DUMPFILE - 348)) | (1L << (DUPLICATE - 348)) | (1L << (DYNAMIC - 348)) | (1L << (ENABLE - 348)) | (1L << (ENCRYPTED - 348)) | (1L << (ENCRYPTION - 348)) | (1L << (ENCRYPTION_KEY_ID - 348)) | (1L << (END - 348)) | (1L << (ENDS - 348)))) != 0) || ((((_la - 412)) & ~0x3f) == 0 && ((1L << (_la - 412)) & ((1L << (ENGINE - 412)) | (1L << (ENGINES - 412)) | (1L << (ERROR - 412)) | (1L << (ERRORS - 412)) | (1L << (ESCAPE - 412)) | (1L << (EVEN - 412)) | (1L << (EVENT - 412)) | (1L << (EVENTS - 412)) | (1L << (EVERY - 412)) | (1L << (EXCHANGE - 412)) | (1L << (EXCLUSIVE - 412)) | (1L << (EXPIRE - 412)) | (1L << (EXPORT - 412)) | (1L << (EXTENDED - 412)) | (1L << (EXTENT_SIZE - 412)) | (1L << (FAILED_LOGIN_ATTEMPTS - 412)) | (1L << (FAST - 412)) | (1L << (FAULTS - 412)) | (1L << (FIELDS - 412)) | (1L << (FILE_BLOCK_SIZE - 412)) | (1L << (FILTER - 412)) | (1L << (FIRST - 412)) | (1L << (FIXED - 412)) | (1L << (FLUSH - 412)) | (1L << (FOLLOWS - 412)) | (1L << (FOUND - 412)) | (1L << (FULL - 412)) | (1L << (FUNCTION - 412)) | (1L << (GENERAL - 412)) | (1L << (GLOBAL - 412)) | (1L << (GRANTS - 412)) | (1L << (GROUP_REPLICATION - 412)) | (1L << (HANDLER - 412)) | (1L << (HASH - 412)) | (1L << (HELP - 412)) | (1L << (HISTORY - 412)) | (1L << (HOST - 412)) | (1L << (HOSTS - 412)) | (1L << (IDENTIFIED - 412)) | (1L << (IGNORE_SERVER_IDS - 412)) | (1L << (IMPORT - 412)) | (1L << (INCREMENT - 412)) | (1L << (INDEXES - 412)) | (1L << (INITIAL_SIZE - 412)) | (1L << (INPLACE - 412)) | (1L << (INSERT_METHOD - 412)) | (1L << (INSTALL - 412)) | (1L << (INSTANCE - 412)) | (1L << (INSTANT - 412)) | (1L << (INVISIBLE - 412)) | (1L << (INVOKER - 412)) | (1L << (IO - 412)) | (1L << (IO_THREAD - 412)) | (1L << (IPC - 412)) | (1L << (ISOLATION - 412)) | (1L << (ISSUER - 412)) | (1L << (JSON - 412)) | (1L << (KEY_BLOCK_SIZE - 412)) | (1L << (LANGUAGE - 412)) | (1L << (LAST - 412)) | (1L << (LEAVES - 412)) | (1L << (LESS - 412)) | (1L << (LEVEL - 412)))) != 0) || ((((_la - 476)) & ~0x3f) == 0 && ((1L << (_la - 476)) & ((1L << (LIST - 476)) | (1L << (LOCAL - 476)) | (1L << (LOGFILE - 476)) | (1L << (LOGS - 476)) | (1L << (MASTER - 476)) | (1L << (MASTER_AUTO_POSITION - 476)) | (1L << (MASTER_CONNECT_RETRY - 476)) | (1L << (MASTER_DELAY - 476)) | (1L << (MASTER_HEARTBEAT_PERIOD - 476)) | (1L << (MASTER_HOST - 476)) | (1L << (MASTER_LOG_FILE - 476)) | (1L << (MASTER_LOG_POS - 476)) | (1L << (MASTER_PASSWORD - 476)) | (1L << (MASTER_PORT - 476)) | (1L << (MASTER_RETRY_COUNT - 476)) | (1L << (MASTER_SSL - 476)) | (1L << (MASTER_SSL_CA - 476)) | (1L << (MASTER_SSL_CAPATH - 476)) | (1L << (MASTER_SSL_CERT - 476)) | (1L << (MASTER_SSL_CIPHER - 476)) | (1L << (MASTER_SSL_CRL - 476)) | (1L << (MASTER_SSL_CRLPATH - 476)) | (1L << (MASTER_SSL_KEY - 476)) | (1L << (MASTER_TLS_VERSION - 476)) | (1L << (MASTER_USER - 476)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 476)) | (1L << (MAX_QUERIES_PER_HOUR - 476)) | (1L << (MAX_ROWS - 476)) | (1L << (MAX_SIZE - 476)) | (1L << (MAX_UPDATES_PER_HOUR - 476)) | (1L << (MAX_USER_CONNECTIONS - 476)) | (1L << (MEDIUM - 476)) | (1L << (MEMBER - 476)) | (1L << (MERGE - 476)) | (1L << (MESSAGE_TEXT - 476)) | (1L << (MID - 476)) | (1L << (MIGRATE - 476)) | (1L << (MIN_ROWS - 476)) | (1L << (MODE - 476)) | (1L << (MODIFY - 476)) | (1L << (MUTEX - 476)) | (1L << (MYSQL - 476)) | (1L << (MYSQL_ERRNO - 476)) | (1L << (NAME - 476)) | (1L << (NAMES - 476)) | (1L << (NCHAR - 476)) | (1L << (NEVER - 476)) | (1L << (NEXT - 476)) | (1L << (NO - 476)) | (1L << (NOCACHE - 476)) | (1L << (NOCOPY - 476)) | (1L << (NOCYCLE - 476)) | (1L << (NOMAXVALUE - 476)) | (1L << (NOMINVALUE - 476)) | (1L << (NOWAIT - 476)) | (1L << (NODEGROUP - 476)) | (1L << (NONE - 476)) | (1L << (ODBC - 476)) | (1L << (OFFLINE - 476)) | (1L << (OFFSET - 476)) | (1L << (OF - 476)) | (1L << (OJ - 476)) | (1L << (OLD_PASSWORD - 476)) | (1L << (ONE - 476)))) != 0) || ((((_la - 540)) & ~0x3f) == 0 && ((1L << (_la - 540)) & ((1L << (ONLINE - 540)) | (1L << (ONLY - 540)) | (1L << (OPEN - 540)) | (1L << (OPTIMIZER_COSTS - 540)) | (1L << (OPTIONS - 540)) | (1L << (OWNER - 540)) | (1L << (PACK_KEYS - 540)) | (1L << (PAGE - 540)) | (1L << (PARSER - 540)) | (1L << (PARTIAL - 540)) | (1L << (PARTITIONING - 540)) | (1L << (PARTITIONS - 540)) | (1L << (PASSWORD - 540)) | (1L << (PASSWORD_LOCK_TIME - 540)) | (1L << (PHASE - 540)) | (1L << (PLUGIN - 540)) | (1L << (PLUGIN_DIR - 540)) | (1L << (PLUGINS - 540)) | (1L << (PORT - 540)) | (1L << (PRECEDES - 540)) | (1L << (PREPARE - 540)) | (1L << (PRESERVE - 540)) | (1L << (PREV - 540)) | (1L << (PROCESSLIST - 540)) | (1L << (PROFILE - 540)) | (1L << (PROFILES - 540)) | (1L << (PROXY - 540)) | (1L << (QUERY - 540)) | (1L << (QUICK - 540)) | (1L << (REBUILD - 540)) | (1L << (RECOVER - 540)) | (1L << (RECURSIVE - 540)) | (1L << (REDO_BUFFER_SIZE - 540)) | (1L << (REDUNDANT - 540)) | (1L << (RELAY - 540)) | (1L << (RELAY_LOG_FILE - 540)) | (1L << (RELAY_LOG_POS - 540)) | (1L << (RELAYLOG - 540)) | (1L << (REMOVE - 540)) | (1L << (REORGANIZE - 540)) | (1L << (REPAIR - 540)) | (1L << (REPLICATE_DO_DB - 540)) | (1L << (REPLICATE_DO_TABLE - 540)) | (1L << (REPLICATE_IGNORE_DB - 540)) | (1L << (REPLICATE_IGNORE_TABLE - 540)) | (1L << (REPLICATE_REWRITE_DB - 540)) | (1L << (REPLICATE_WILD_DO_TABLE - 540)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 540)) | (1L << (REPLICATION - 540)) | (1L << (RESET - 540)) | (1L << (RESTART - 540)) | (1L << (RESUME - 540)) | (1L << (RETURNED_SQLSTATE - 540)) | (1L << (RETURNING - 540)) | (1L << (RETURNS - 540)) | (1L << (REUSE - 540)) | (1L << (ROLE - 540)) | (1L << (ROLLBACK - 540)) | (1L << (ROLLUP - 540)) | (1L << (ROTATE - 540)) | (1L << (ROW - 540)))) != 0) || ((((_la - 604)) & ~0x3f) == 0 && ((1L << (_la - 604)) & ((1L << (ROWS - 604)) | (1L << (ROW_FORMAT - 604)) | (1L << (RTREE - 604)) | (1L << (SAVEPOINT - 604)) | (1L << (SCHEDULE - 604)) | (1L << (SECURITY - 604)) | (1L << (SEQUENCE - 604)) | (1L << (SERVER - 604)) | (1L << (SESSION - 604)) | (1L << (SHARE - 604)) | (1L << (SHARED - 604)) | (1L << (SIGNED - 604)) | (1L << (SIMPLE - 604)) | (1L << (SLAVE - 604)) | (1L << (SLOW - 604)) | (1L << (SNAPSHOT - 604)) | (1L << (SOCKET - 604)) | (1L << (SOME - 604)) | (1L << (SONAME - 604)) | (1L << (SOUNDS - 604)) | (1L << (SOURCE - 604)) | (1L << (SQL_AFTER_GTIDS - 604)) | (1L << (SQL_AFTER_MTS_GAPS - 604)) | (1L << (SQL_BEFORE_GTIDS - 604)) | (1L << (SQL_BUFFER_RESULT - 604)) | (1L << (SQL_CACHE - 604)) | (1L << (SQL_NO_CACHE - 604)) | (1L << (SQL_THREAD - 604)) | (1L << (START - 604)) | (1L << (STARTS - 604)) | (1L << (STATS_AUTO_RECALC - 604)) | (1L << (STATS_PERSISTENT - 604)) | (1L << (STATS_SAMPLE_PAGES - 604)) | (1L << (STATUS - 604)) | (1L << (STOP - 604)) | (1L << (STORAGE - 604)) | (1L << (STRING - 604)) | (1L << (SUBCLASS_ORIGIN - 604)) | (1L << (SUBJECT - 604)) | (1L << (SUBPARTITION - 604)) | (1L << (SUBPARTITIONS - 604)) | (1L << (SUSPEND - 604)) | (1L << (SWAPS - 604)) | (1L << (SWITCHES - 604)) | (1L << (TABLE_NAME - 604)) | (1L << (TABLESPACE - 604)) | (1L << (TABLE_TYPE - 604)) | (1L << (TEMPORARY - 604)) | (1L << (TEMPTABLE - 604)) | (1L << (THAN - 604)) | (1L << (TRADITIONAL - 604)) | (1L << (TRANSACTION - 604)) | (1L << (TRANSACTIONAL - 604)) | (1L << (TRIGGERS - 604)) | (1L << (TRUNCATE - 604)) | (1L << (UNBOUNDED - 604)) | (1L << (UNDEFINED - 604)) | (1L << (UNDOFILE - 604)) | (1L << (UNDO_BUFFER_SIZE - 604)) | (1L << (UNINSTALL - 604)) | (1L << (UNKNOWN - 604)) | (1L << (UNTIL - 604)) | (1L << (UPGRADE - 604)))) != 0) || ((((_la - 668)) & ~0x3f) == 0 && ((1L << (_la - 668)) & ((1L << (USER - 668)) | (1L << (USE_FRM - 668)) | (1L << (USER_RESOURCES - 668)) | (1L << (VALIDATION - 668)) | (1L << (VALUE - 668)) | (1L << (VARIABLES - 668)) | (1L << (VIEW - 668)) | (1L << (VIRTUAL - 668)) | (1L << (VISIBLE - 668)) | (1L << (WAIT - 668)) | (1L << (WARNINGS - 668)) | (1L << (WITHOUT - 668)) | (1L << (WORK - 668)) | (1L << (WRAPPER - 668)) | (1L << (X509 - 668)) | (1L << (XA - 668)) | (1L << (XML - 668)) | (1L << (YES - 668)) | (1L << (EUR - 668)) | (1L << (USA - 668)) | (1L << (JIS - 668)) | (1L << (ISO - 668)) | (1L << (INTERNAL - 668)) | (1L << (QUARTER - 668)) | (1L << (MONTH - 668)) | (1L << (DAY - 668)) | (1L << (HOUR - 668)) | (1L << (MINUTE - 668)) | (1L << (WEEK - 668)) | (1L << (SECOND - 668)) | (1L << (MICROSECOND - 668)) | (1L << (USER_STATISTICS - 668)) | (1L << (CLIENT_STATISTICS - 668)) | (1L << (INDEX_STATISTICS - 668)) | (1L << (TABLE_STATISTICS - 668)) | (1L << (FIREWALL_RULES - 668)) | (1L << (ADMIN - 668)) | (1L << (APPLICATION_PASSWORD_ADMIN - 668)) | (1L << (AUDIT_ADMIN - 668)) | (1L << (AUDIT_ABORT_EXEMPT - 668)) | (1L << (AUTHENTICATION_POLICY_ADMIN - 668)) | (1L << (BACKUP_ADMIN - 668)) | (1L << (BINLOG_ADMIN - 668)) | (1L << (BINLOG_ENCRYPTION_ADMIN - 668)) | (1L << (CLONE_ADMIN - 668)) | (1L << (CONNECTION_ADMIN - 668)) | (1L << (ENCRYPTION_KEY_ADMIN - 668)) | (1L << (EXECUTE - 668)) | (1L << (FILE - 668)) | (1L << (FIREWALL_ADMIN - 668)) | (1L << (FIREWALL_EXEMPT - 668)) | (1L << (FIREWALL_USER - 668)) | (1L << (FLUSH_OPTIMIZER_COSTS - 668)) | (1L << (FLUSH_STATUS - 668)) | (1L << (FLUSH_TABLES - 668)) | (1L << (FLUSH_USER_RESOURCES - 668)) | (1L << (GROUP_REPLICATION_ADMIN - 668)) | (1L << (INNODB_REDO_LOG_ARCHIVE - 668)) | (1L << (INNODB_REDO_LOG_ENABLE - 668)) | (1L << (INVOKE - 668)) | (1L << (LAMBDA - 668)) | (1L << (NDB_STORED_USER - 668)) | (1L << (PASSWORDLESS_USER_ADMIN - 668)))) != 0) || ((((_la - 732)) & ~0x3f) == 0 && ((1L << (_la - 732)) & ((1L << (PERSIST_RO_VARIABLES_ADMIN - 732)) | (1L << (PRIVILEGES - 732)) | (1L << (PROCESS - 732)) | (1L << (RELOAD - 732)) | (1L << (REPLICATION_APPLIER - 732)) | (1L << (REPLICATION_SLAVE_ADMIN - 732)) | (1L << (RESOURCE_GROUP_ADMIN - 732)) | (1L << (RESOURCE_GROUP_USER - 732)) | (1L << (ROLE_ADMIN - 732)) | (1L << (ROUTINE - 732)) | (1L << (S3 - 732)) | (1L << (SESSION_VARIABLES_ADMIN - 732)) | (1L << (SET_USER_ID - 732)) | (1L << (SHOW_ROUTINE - 732)) | (1L << (SHUTDOWN - 732)) | (1L << (SUPER - 732)) | (1L << (SYSTEM_VARIABLES_ADMIN - 732)) | (1L << (TABLES - 732)) | (1L << (TABLE_ENCRYPTION_ADMIN - 732)) | (1L << (VERSION_TOKEN_ADMIN - 732)) | (1L << (XA_RECOVER_ADMIN - 732)) | (1L << (ARMSCII8 - 732)) | (1L << (ASCII - 732)) | (1L << (BIG5 - 732)) | (1L << (CP1250 - 732)) | (1L << (CP1251 - 732)) | (1L << (CP1256 - 732)) | (1L << (CP1257 - 732)) | (1L << (CP850 - 732)) | (1L << (CP852 - 732)) | (1L << (CP866 - 732)) | (1L << (CP932 - 732)) | (1L << (DEC8 - 732)) | (1L << (EUCJPMS - 732)) | (1L << (EUCKR - 732)) | (1L << (GB18030 - 732)) | (1L << (GB2312 - 732)) | (1L << (GBK - 732)) | (1L << (GEOSTD8 - 732)) | (1L << (GREEK - 732)) | (1L << (HEBREW - 732)) | (1L << (HP8 - 732)) | (1L << (KEYBCS2 - 732)) | (1L << (KOI8R - 732)) | (1L << (KOI8U - 732)) | (1L << (LATIN1 - 732)) | (1L << (LATIN2 - 732)) | (1L << (LATIN5 - 732)) | (1L << (LATIN7 - 732)) | (1L << (MACCE - 732)) | (1L << (MACROMAN - 732)) | (1L << (SJIS - 732)) | (1L << (SWE7 - 732)) | (1L << (TIS620 - 732)) | (1L << (UCS2 - 732)) | (1L << (UJIS - 732)) | (1L << (UTF16 - 732)) | (1L << (UTF16LE - 732)) | (1L << (UTF32 - 732)) | (1L << (UTF8 - 732)) | (1L << (UTF8MB3 - 732)) | (1L << (UTF8MB4 - 732)) | (1L << (ARCHIVE - 732)))) != 0) || ((((_la - 796)) & ~0x3f) == 0 && ((1L << (_la - 796)) & ((1L << (BLACKHOLE - 796)) | (1L << (CSV - 796)) | (1L << (FEDERATED - 796)) | (1L << (INNODB - 796)) | (1L << (MEMORY - 796)) | (1L << (MRG_MYISAM - 796)) | (1L << (MYISAM - 796)) | (1L << (NDB - 796)) | (1L << (NDBCLUSTER - 796)) | (1L << (PERFORMANCE_SCHEMA - 796)) | (1L << (TOKUDB - 796)) | (1L << (REPEATABLE - 796)) | (1L << (COMMITTED - 796)) | (1L << (UNCOMMITTED - 796)) | (1L << (SERIALIZABLE - 796)) | (1L << (GEOMETRYCOLLECTION - 796)) | (1L << (GEOMETRY - 796)) | (1L << (LINESTRING - 796)) | (1L << (MULTILINESTRING - 796)) | (1L << (MULTIPOINT - 796)) | (1L << (MULTIPOLYGON - 796)) | (1L << (POINT - 796)) | (1L << (POLYGON - 796)) | (1L << (ABS - 796)) | (1L << (ACOS - 796)) | (1L << (ADDDATE - 796)) | (1L << (ADDTIME - 796)) | (1L << (AES_DECRYPT - 796)) | (1L << (AES_ENCRYPT - 796)) | (1L << (AREA - 796)) | (1L << (ASBINARY - 796)) | (1L << (ASIN - 796)) | (1L << (ASTEXT - 796)) | (1L << (ASWKB - 796)) | (1L << (ASWKT - 796)) | (1L << (ASYMMETRIC_DECRYPT - 796)) | (1L << (ASYMMETRIC_DERIVE - 796)) | (1L << (ASYMMETRIC_ENCRYPT - 796)) | (1L << (ASYMMETRIC_SIGN - 796)) | (1L << (ASYMMETRIC_VERIFY - 796)) | (1L << (ATAN - 796)) | (1L << (ATAN2 - 796)) | (1L << (BENCHMARK - 796)) | (1L << (BIN - 796)) | (1L << (BIT_COUNT - 796)) | (1L << (BIT_LENGTH - 796)) | (1L << (BUFFER - 796)) | (1L << (CATALOG_NAME - 796)) | (1L << (CEIL - 796)) | (1L << (CEILING - 796)) | (1L << (CENTROID - 796)) | (1L << (CHARACTER_LENGTH - 796)) | (1L << (CHARSET - 796)) | (1L << (CHAR_LENGTH - 796)) | (1L << (COERCIBILITY - 796)) | (1L << (COLLATION - 796)) | (1L << (COMPRESS - 796)) | (1L << (CONCAT - 796)) | (1L << (CONCAT_WS - 796)) | (1L << (CONNECTION_ID - 796)) | (1L << (CONV - 796)) | (1L << (CONVERT_TZ - 796)) | (1L << (COS - 796)))) != 0) || ((((_la - 860)) & ~0x3f) == 0 && ((1L << (_la - 860)) & ((1L << (COT - 860)) | (1L << (CRC32 - 860)) | (1L << (CREATE_ASYMMETRIC_PRIV_KEY - 860)) | (1L << (CREATE_ASYMMETRIC_PUB_KEY - 860)) | (1L << (CREATE_DH_PARAMETERS - 860)) | (1L << (CREATE_DIGEST - 860)) | (1L << (CROSSES - 860)) | (1L << (DATEDIFF - 860)) | (1L << (DATE_FORMAT - 860)) | (1L << (DAYNAME - 860)) | (1L << (DAYOFMONTH - 860)) | (1L << (DAYOFWEEK - 860)) | (1L << (DAYOFYEAR - 860)) | (1L << (DECODE - 860)) | (1L << (DEGREES - 860)) | (1L << (DES_DECRYPT - 860)) | (1L << (DES_ENCRYPT - 860)) | (1L << (DIMENSION - 860)) | (1L << (DISJOINT - 860)) | (1L << (ELT - 860)) | (1L << (ENCODE - 860)) | (1L << (ENCRYPT - 860)) | (1L << (ENDPOINT - 860)) | (1L << (ENGINE_ATTRIBUTE - 860)) | (1L << (ENVELOPE - 860)) | (1L << (EQUALS - 860)) | (1L << (EXP - 860)) | (1L << (EXPORT_SET - 860)) | (1L << (EXTERIORRING - 860)) | (1L << (EXTRACTVALUE - 860)) | (1L << (FIELD - 860)) | (1L << (FIND_IN_SET - 860)) | (1L << (FLOOR - 860)) | (1L << (FORMAT - 860)) | (1L << (FOUND_ROWS - 860)) | (1L << (FROM_BASE64 - 860)) | (1L << (FROM_DAYS - 860)) | (1L << (FROM_UNIXTIME - 860)) | (1L << (GEOMCOLLFROMTEXT - 860)) | (1L << (GEOMCOLLFROMWKB - 860)) | (1L << (GEOMETRYCOLLECTIONFROMTEXT - 860)) | (1L << (GEOMETRYCOLLECTIONFROMWKB - 860)) | (1L << (GEOMETRYFROMTEXT - 860)) | (1L << (GEOMETRYFROMWKB - 860)) | (1L << (GEOMETRYN - 860)) | (1L << (GEOMETRYTYPE - 860)) | (1L << (GEOMFROMTEXT - 860)) | (1L << (GEOMFROMWKB - 860)) | (1L << (GET_FORMAT - 860)) | (1L << (GET_LOCK - 860)) | (1L << (GLENGTH - 860)) | (1L << (GREATEST - 860)) | (1L << (GTID_SUBSET - 860)) | (1L << (GTID_SUBTRACT - 860)) | (1L << (HEX - 860)) | (1L << (IFNULL - 860)) | (1L << (INET6_ATON - 860)) | (1L << (INET6_NTOA - 860)) | (1L << (INET_ATON - 860)) | (1L << (INET_NTOA - 860)) | (1L << (INSTR - 860)) | (1L << (INTERIORRINGN - 860)) | (1L << (INTERSECTS - 860)) | (1L << (ISCLOSED - 860)))) != 0) || ((((_la - 924)) & ~0x3f) == 0 && ((1L << (_la - 924)) & ((1L << (ISEMPTY - 924)) | (1L << (ISNULL - 924)) | (1L << (ISSIMPLE - 924)) | (1L << (IS_FREE_LOCK - 924)) | (1L << (IS_IPV4 - 924)) | (1L << (IS_IPV4_COMPAT - 924)) | (1L << (IS_IPV4_MAPPED - 924)) | (1L << (IS_IPV6 - 924)) | (1L << (IS_USED_LOCK - 924)) | (1L << (LAST_INSERT_ID - 924)) | (1L << (LCASE - 924)) | (1L << (LEAST - 924)) | (1L << (LENGTH - 924)) | (1L << (LINEFROMTEXT - 924)) | (1L << (LINEFROMWKB - 924)) | (1L << (LINESTRINGFROMTEXT - 924)) | (1L << (LINESTRINGFROMWKB - 924)) | (1L << (LN - 924)) | (1L << (LOAD_FILE - 924)) | (1L << (LOCATE - 924)) | (1L << (LOG - 924)) | (1L << (LOG10 - 924)) | (1L << (LOG2 - 924)) | (1L << (LOWER - 924)) | (1L << (LPAD - 924)) | (1L << (LTRIM - 924)) | (1L << (MAKEDATE - 924)) | (1L << (MAKETIME - 924)) | (1L << (MAKE_SET - 924)) | (1L << (MASTER_POS_WAIT - 924)) | (1L << (MBRCONTAINS - 924)) | (1L << (MBRDISJOINT - 924)) | (1L << (MBREQUAL - 924)) | (1L << (MBRINTERSECTS - 924)) | (1L << (MBROVERLAPS - 924)) | (1L << (MBRTOUCHES - 924)) | (1L << (MBRWITHIN - 924)) | (1L << (MD5 - 924)) | (1L << (MLINEFROMTEXT - 924)) | (1L << (MLINEFROMWKB - 924)) | (1L << (MONTHNAME - 924)) | (1L << (MPOINTFROMTEXT - 924)) | (1L << (MPOINTFROMWKB - 924)) | (1L << (MPOLYFROMTEXT - 924)) | (1L << (MPOLYFROMWKB - 924)) | (1L << (MULTILINESTRINGFROMTEXT - 924)) | (1L << (MULTILINESTRINGFROMWKB - 924)) | (1L << (MULTIPOINTFROMTEXT - 924)) | (1L << (MULTIPOINTFROMWKB - 924)) | (1L << (MULTIPOLYGONFROMTEXT - 924)) | (1L << (MULTIPOLYGONFROMWKB - 924)) | (1L << (NAME_CONST - 924)) | (1L << (NULLIF - 924)) | (1L << (NUMGEOMETRIES - 924)) | (1L << (NUMINTERIORRINGS - 924)) | (1L << (NUMPOINTS - 924)) | (1L << (OCT - 924)) | (1L << (OCTET_LENGTH - 924)) | (1L << (ORD - 924)) | (1L << (OVERLAPS - 924)) | (1L << (PERIOD_ADD - 924)) | (1L << (PERIOD_DIFF - 924)) | (1L << (PI - 924)) | (1L << (POINTFROMTEXT - 924)))) != 0) || ((((_la - 988)) & ~0x3f) == 0 && ((1L << (_la - 988)) & ((1L << (POINTFROMWKB - 988)) | (1L << (POINTN - 988)) | (1L << (POLYFROMTEXT - 988)) | (1L << (POLYFROMWKB - 988)) | (1L << (POLYGONFROMTEXT - 988)) | (1L << (POLYGONFROMWKB - 988)) | (1L << (POW - 988)) | (1L << (POWER - 988)) | (1L << (QUOTE - 988)) | (1L << (RADIANS - 988)) | (1L << (RAND - 988)) | (1L << (RANDOM - 988)) | (1L << (RANDOM_BYTES - 988)) | (1L << (RELEASE_LOCK - 988)) | (1L << (REVERSE - 988)) | (1L << (ROUND - 988)) | (1L << (ROW_COUNT - 988)) | (1L << (RPAD - 988)) | (1L << (RTRIM - 988)) | (1L << (SEC_TO_TIME - 988)) | (1L << (SECONDARY_ENGINE_ATTRIBUTE - 988)) | (1L << (SENSITIVE_VARIABLES_OBSERVER - 988)) | (1L << (SESSION_USER - 988)) | (1L << (SHA - 988)) | (1L << (SHA1 - 988)) | (1L << (SHA2 - 988)) | (1L << (SCHEMA_NAME - 988)) | (1L << (SIGN - 988)) | (1L << (SIN - 988)) | (1L << (SLEEP - 988)) | (1L << (SOUNDEX - 988)) | (1L << (SQL_THREAD_WAIT_AFTER_GTIDS - 988)) | (1L << (SQRT - 988)) | (1L << (SRID - 988)) | (1L << (STARTPOINT - 988)) | (1L << (STRCMP - 988)) | (1L << (STR_TO_DATE - 988)) | (1L << (ST_AREA - 988)) | (1L << (ST_ASBINARY - 988)) | (1L << (ST_ASTEXT - 988)) | (1L << (ST_ASWKB - 988)) | (1L << (ST_ASWKT - 988)) | (1L << (ST_BUFFER - 988)) | (1L << (ST_CENTROID - 988)) | (1L << (ST_CONTAINS - 988)) | (1L << (ST_CROSSES - 988)) | (1L << (ST_DIFFERENCE - 988)) | (1L << (ST_DIMENSION - 988)) | (1L << (ST_DISJOINT - 988)) | (1L << (ST_DISTANCE - 988)) | (1L << (ST_ENDPOINT - 988)) | (1L << (ST_ENVELOPE - 988)) | (1L << (ST_EQUALS - 988)) | (1L << (ST_EXTERIORRING - 988)) | (1L << (ST_GEOMCOLLFROMTEXT - 988)) | (1L << (ST_GEOMCOLLFROMTXT - 988)) | (1L << (ST_GEOMCOLLFROMWKB - 988)) | (1L << (ST_GEOMETRYCOLLECTIONFROMTEXT - 988)) | (1L << (ST_GEOMETRYCOLLECTIONFROMWKB - 988)) | (1L << (ST_GEOMETRYFROMTEXT - 988)) | (1L << (ST_GEOMETRYFROMWKB - 988)) | (1L << (ST_GEOMETRYN - 988)) | (1L << (ST_GEOMETRYTYPE - 988)) | (1L << (ST_GEOMFROMTEXT - 988)))) != 0) || ((((_la - 1052)) & ~0x3f) == 0 && ((1L << (_la - 1052)) & ((1L << (ST_GEOMFROMWKB - 1052)) | (1L << (ST_INTERIORRINGN - 1052)) | (1L << (ST_INTERSECTION - 1052)) | (1L << (ST_INTERSECTS - 1052)) | (1L << (ST_ISCLOSED - 1052)) | (1L << (ST_ISEMPTY - 1052)) | (1L << (ST_ISSIMPLE - 1052)) | (1L << (ST_LINEFROMTEXT - 1052)) | (1L << (ST_LINEFROMWKB - 1052)) | (1L << (ST_LINESTRINGFROMTEXT - 1052)) | (1L << (ST_LINESTRINGFROMWKB - 1052)) | (1L << (ST_NUMGEOMETRIES - 1052)) | (1L << (ST_NUMINTERIORRING - 1052)) | (1L << (ST_NUMINTERIORRINGS - 1052)) | (1L << (ST_NUMPOINTS - 1052)) | (1L << (ST_OVERLAPS - 1052)) | (1L << (ST_POINTFROMTEXT - 1052)) | (1L << (ST_POINTFROMWKB - 1052)) | (1L << (ST_POINTN - 1052)) | (1L << (ST_POLYFROMTEXT - 1052)) | (1L << (ST_POLYFROMWKB - 1052)) | (1L << (ST_POLYGONFROMTEXT - 1052)) | (1L << (ST_POLYGONFROMWKB - 1052)) | (1L << (ST_SRID - 1052)) | (1L << (ST_STARTPOINT - 1052)) | (1L << (ST_SYMDIFFERENCE - 1052)) | (1L << (ST_TOUCHES - 1052)) | (1L << (ST_UNION - 1052)) | (1L << (ST_WITHIN - 1052)) | (1L << (ST_X - 1052)) | (1L << (ST_Y - 1052)) | (1L << (SUBDATE - 1052)) | (1L << (SUBSTRING_INDEX - 1052)) | (1L << (SUBTIME - 1052)) | (1L << (SYSTEM_USER - 1052)) | (1L << (SYSTEM - 1052)) | (1L << (TAN - 1052)) | (1L << (TELEMETRY_LOG_ADMIN - 1052)) | (1L << (TIMEDIFF - 1052)) | (1L << (TIMESTAMPADD - 1052)) | (1L << (TIMESTAMPDIFF - 1052)) | (1L << (TIME_FORMAT - 1052)) | (1L << (TIME_TO_SEC - 1052)) | (1L << (TOUCHES - 1052)) | (1L << (TO_BASE64 - 1052)) | (1L << (TO_DAYS - 1052)) | (1L << (TO_SECONDS - 1052)) | (1L << (TP_CONNECTION_ADMIN - 1052)) | (1L << (UCASE - 1052)) | (1L << (UNCOMPRESS - 1052)) | (1L << (UNCOMPRESSED_LENGTH - 1052)) | (1L << (UNHEX - 1052)) | (1L << (UNIX_TIMESTAMP - 1052)) | (1L << (UPDATEXML - 1052)) | (1L << (UPPER - 1052)) | (1L << (UUID - 1052)) | (1L << (UUID_SHORT - 1052)) | (1L << (VALIDATE_PASSWORD_STRENGTH - 1052)) | (1L << (VERSION - 1052)) | (1L << (VERSIONING - 1052)) | (1L << (WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS - 1052)) | (1L << (WEEKDAY - 1052)) | (1L << (WEEKOFYEAR - 1052)) | (1L << (WEIGHT_STRING - 1052)))) != 0) || ((((_la - 1116)) & ~0x3f) == 0 && ((1L << (_la - 1116)) & ((1L << (WITHIN - 1116)) | (1L << (YEARWEEK - 1116)) | (1L << (Y_FUNCTION - 1116)) | (1L << (X_FUNCTION - 1116)) | (1L << (VIA - 1116)) | (1L << (LASTVAL - 1116)) | (1L << (NEXTVAL - 1116)) | (1L << (SETVAL - 1116)) | (1L << (PREVIOUS - 1116)) | (1L << (PERSISTENT - 1116)) | (1L << (BINLOG_MONITOR - 1116)) | (1L << (BINLOG_REPLAY - 1116)) | (1L << (FEDERATED_ADMIN - 1116)) | (1L << (READ_ONLY_ADMIN - 1116)) | (1L << (REPLICA - 1116)) | (1L << (REPLICATION_MASTER_ADMIN - 1116)) | (1L << (MONITOR - 1116)) | (1L << (READ_ONLY - 1116)) | (1L << (REPLAY - 1116)) | (1L << (MOD - 1116)) | (1L << (CHARSET_REVERSE_QOUTE_STRING - 1116)) | (1L << (STRING_LITERAL - 1116)))) != 0) || _la==ID) {
					{
					setState(3470);
					((InsertStatementContext)_localctx).partitions = uidList();
					}
				}

				setState(3473);
				match(RR_BRACKET);
				}
			}

			setState(3499);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case SELECT:
			case VALUES:
			case VALUE:
			case LR_BRACKET:
				{
				setState(3481);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,479,_ctx) ) {
				case 1:
					{
					setState(3476);
					match(LR_BRACKET);
					setState(3478);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,478,_ctx) ) {
					case 1:
						{
						setState(3477);
						((InsertStatementContext)_localctx).columns = fullColumnNameList();
						}
						break;
					}
					setState(3480);
					match(RR_BRACKET);
					}
					break;
				}
				setState(3483);
				insertStatementValue();
				setState(3488);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,481,_ctx) ) {
				case 1:
					{
					setState(3485);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==AS) {
						{
						setState(3484);
						match(AS);
						}
					}

					setState(3487);
					uid();
					}
					break;
				}
				}
				break;
			case SET:
				{
				setState(3490);
				match(SET);
				setState(3491);
				((InsertStatementContext)_localctx).setFirst = updatedElement();
				setState(3496);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(3492);
					match(COMMA);
					setState(3493);
					((InsertStatementContext)_localctx).updatedElement = updatedElement();
					((InsertStatementContext)_localctx).setElements.add(((InsertStatementContext)_localctx).updatedElement);
					}
					}
					setState(3498);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			setState(3513);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ON) {
				{
				setState(3501);
				match(ON);
				setState(3502);
				match(DUPLICATE);
				setState(3503);
				match(KEY);
				setState(3504);
				match(UPDATE);
				setState(3505);
				((InsertStatementContext)_localctx).duplicatedFirst = updatedElement();
				setState(3510);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(3506);
					match(COMMA);
					setState(3507);
					((InsertStatementContext)_localctx).updatedElement = updatedElement();
					((InsertStatementContext)_localctx).duplicatedElements.add(((InsertStatementContext)_localctx).updatedElement);
					}
					}
					setState(3512);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class LoadDataStatementContext extends ParserRuleContext {
		public Token priority;
		public Token filename;
		public Token violation;
		public CharsetNameContext charset;
		public Token fieldsFormat;
		public Token linesFormat;
		public TerminalNode LOAD() { return getToken(MySqlParser.LOAD, 0); }
		public TerminalNode DATA() { return getToken(MySqlParser.DATA, 0); }
		public TerminalNode INFILE() { return getToken(MySqlParser.INFILE, 0); }
		public TerminalNode INTO() { return getToken(MySqlParser.INTO, 0); }
		public TerminalNode TABLE() { return getToken(MySqlParser.TABLE, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode LOCAL() { return getToken(MySqlParser.LOCAL, 0); }
		public TerminalNode PARTITION() { return getToken(MySqlParser.PARTITION, 0); }
		public List LR_BRACKET() { return getTokens(MySqlParser.LR_BRACKET); }
		public TerminalNode LR_BRACKET(int i) {
			return getToken(MySqlParser.LR_BRACKET, i);
		}
		public UidListContext uidList() {
			return getRuleContext(UidListContext.class,0);
		}
		public List RR_BRACKET() { return getTokens(MySqlParser.RR_BRACKET); }
		public TerminalNode RR_BRACKET(int i) {
			return getToken(MySqlParser.RR_BRACKET, i);
		}
		public TerminalNode CHARACTER() { return getToken(MySqlParser.CHARACTER, 0); }
		public List SET() { return getTokens(MySqlParser.SET); }
		public TerminalNode SET(int i) {
			return getToken(MySqlParser.SET, i);
		}
		public List LINES() { return getTokens(MySqlParser.LINES); }
		public TerminalNode LINES(int i) {
			return getToken(MySqlParser.LINES, i);
		}
		public List IGNORE() { return getTokens(MySqlParser.IGNORE); }
		public TerminalNode IGNORE(int i) {
			return getToken(MySqlParser.IGNORE, i);
		}
		public DecimalLiteralContext decimalLiteral() {
			return getRuleContext(DecimalLiteralContext.class,0);
		}
		public List assignmentField() {
			return getRuleContexts(AssignmentFieldContext.class);
		}
		public AssignmentFieldContext assignmentField(int i) {
			return getRuleContext(AssignmentFieldContext.class,i);
		}
		public List updatedElement() {
			return getRuleContexts(UpdatedElementContext.class);
		}
		public UpdatedElementContext updatedElement(int i) {
			return getRuleContext(UpdatedElementContext.class,i);
		}
		public CharsetNameContext charsetName() {
			return getRuleContext(CharsetNameContext.class,0);
		}
		public TerminalNode LOW_PRIORITY() { return getToken(MySqlParser.LOW_PRIORITY, 0); }
		public TerminalNode CONCURRENT() { return getToken(MySqlParser.CONCURRENT, 0); }
		public TerminalNode REPLACE() { return getToken(MySqlParser.REPLACE, 0); }
		public TerminalNode FIELDS() { return getToken(MySqlParser.FIELDS, 0); }
		public TerminalNode COLUMNS() { return getToken(MySqlParser.COLUMNS, 0); }
		public TerminalNode ROWS() { return getToken(MySqlParser.ROWS, 0); }
		public List selectFieldsInto() {
			return getRuleContexts(SelectFieldsIntoContext.class);
		}
		public SelectFieldsIntoContext selectFieldsInto(int i) {
			return getRuleContext(SelectFieldsIntoContext.class,i);
		}
		public List selectLinesInto() {
			return getRuleContexts(SelectLinesIntoContext.class);
		}
		public SelectLinesIntoContext selectLinesInto(int i) {
			return getRuleContext(SelectLinesIntoContext.class,i);
		}
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public LoadDataStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_loadDataStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterLoadDataStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitLoadDataStatement(this);
		}
	}

	public final LoadDataStatementContext loadDataStatement() throws RecognitionException {
		LoadDataStatementContext _localctx = new LoadDataStatementContext(_ctx, getState());
		enterRule(_localctx, 208, RULE_loadDataStatement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3515);
			match(LOAD);
			setState(3516);
			match(DATA);
			setState(3518);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LOW_PRIORITY || _la==CONCURRENT) {
				{
				setState(3517);
				((LoadDataStatementContext)_localctx).priority = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==LOW_PRIORITY || _la==CONCURRENT) ) {
					((LoadDataStatementContext)_localctx).priority = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(3521);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LOCAL) {
				{
				setState(3520);
				match(LOCAL);
				}
			}

			setState(3523);
			match(INFILE);
			setState(3524);
			((LoadDataStatementContext)_localctx).filename = match(STRING_LITERAL);
			setState(3526);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IGNORE || _la==REPLACE) {
				{
				setState(3525);
				((LoadDataStatementContext)_localctx).violation = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==IGNORE || _la==REPLACE) ) {
					((LoadDataStatementContext)_localctx).violation = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(3528);
			match(INTO);
			setState(3529);
			match(TABLE);
			setState(3530);
			tableName();
			setState(3536);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==PARTITION) {
				{
				setState(3531);
				match(PARTITION);
				setState(3532);
				match(LR_BRACKET);
				setState(3533);
				uidList();
				setState(3534);
				match(RR_BRACKET);
				}
			}

			setState(3541);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CHARACTER) {
				{
				setState(3538);
				match(CHARACTER);
				setState(3539);
				match(SET);
				setState(3540);
				((LoadDataStatementContext)_localctx).charset = charsetName();
				}
			}

			setState(3549);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==COLUMNS || _la==FIELDS) {
				{
				setState(3543);
				((LoadDataStatementContext)_localctx).fieldsFormat = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==COLUMNS || _la==FIELDS) ) {
					((LoadDataStatementContext)_localctx).fieldsFormat = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(3545); 
				_errHandler.sync(this);
				_la = _input.LA(1);
				do {
					{
					{
					setState(3544);
					selectFieldsInto();
					}
					}
					setState(3547); 
					_errHandler.sync(this);
					_la = _input.LA(1);
				} while ( _la==ENCLOSED || _la==ESCAPED || _la==OPTIONALLY || _la==TERMINATED );
				}
			}

			setState(3557);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LINES) {
				{
				setState(3551);
				match(LINES);
				setState(3553); 
				_errHandler.sync(this);
				_la = _input.LA(1);
				do {
					{
					{
					setState(3552);
					selectLinesInto();
					}
					}
					setState(3555); 
					_errHandler.sync(this);
					_la = _input.LA(1);
				} while ( _la==STARTING || _la==TERMINATED );
				}
			}

			setState(3563);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IGNORE) {
				{
				setState(3559);
				match(IGNORE);
				setState(3560);
				decimalLiteral();
				setState(3561);
				((LoadDataStatementContext)_localctx).linesFormat = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==LINES || _la==ROWS) ) {
					((LoadDataStatementContext)_localctx).linesFormat = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(3576);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,497,_ctx) ) {
			case 1:
				{
				setState(3565);
				match(LR_BRACKET);
				setState(3566);
				assignmentField();
				setState(3571);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(3567);
					match(COMMA);
					setState(3568);
					assignmentField();
					}
					}
					setState(3573);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(3574);
				match(RR_BRACKET);
				}
				break;
			}
			setState(3587);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,499,_ctx) ) {
			case 1:
				{
				setState(3578);
				match(SET);
				setState(3579);
				updatedElement();
				setState(3584);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(3580);
					match(COMMA);
					setState(3581);
					updatedElement();
					}
					}
					setState(3586);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class LoadXmlStatementContext extends ParserRuleContext {
		public Token priority;
		public Token filename;
		public Token violation;
		public CharsetNameContext charset;
		public Token tag;
		public Token linesFormat;
		public TerminalNode LOAD() { return getToken(MySqlParser.LOAD, 0); }
		public TerminalNode XML() { return getToken(MySqlParser.XML, 0); }
		public TerminalNode INFILE() { return getToken(MySqlParser.INFILE, 0); }
		public TerminalNode INTO() { return getToken(MySqlParser.INTO, 0); }
		public TerminalNode TABLE() { return getToken(MySqlParser.TABLE, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public List STRING_LITERAL() { return getTokens(MySqlParser.STRING_LITERAL); }
		public TerminalNode STRING_LITERAL(int i) {
			return getToken(MySqlParser.STRING_LITERAL, i);
		}
		public TerminalNode LOCAL() { return getToken(MySqlParser.LOCAL, 0); }
		public TerminalNode CHARACTER() { return getToken(MySqlParser.CHARACTER, 0); }
		public List SET() { return getTokens(MySqlParser.SET); }
		public TerminalNode SET(int i) {
			return getToken(MySqlParser.SET, i);
		}
		public List ROWS() { return getTokens(MySqlParser.ROWS); }
		public TerminalNode ROWS(int i) {
			return getToken(MySqlParser.ROWS, i);
		}
		public TerminalNode IDENTIFIED() { return getToken(MySqlParser.IDENTIFIED, 0); }
		public TerminalNode BY() { return getToken(MySqlParser.BY, 0); }
		public TerminalNode LESS_SYMBOL() { return getToken(MySqlParser.LESS_SYMBOL, 0); }
		public TerminalNode GREATER_SYMBOL() { return getToken(MySqlParser.GREATER_SYMBOL, 0); }
		public List IGNORE() { return getTokens(MySqlParser.IGNORE); }
		public TerminalNode IGNORE(int i) {
			return getToken(MySqlParser.IGNORE, i);
		}
		public DecimalLiteralContext decimalLiteral() {
			return getRuleContext(DecimalLiteralContext.class,0);
		}
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public List assignmentField() {
			return getRuleContexts(AssignmentFieldContext.class);
		}
		public AssignmentFieldContext assignmentField(int i) {
			return getRuleContext(AssignmentFieldContext.class,i);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public List updatedElement() {
			return getRuleContexts(UpdatedElementContext.class);
		}
		public UpdatedElementContext updatedElement(int i) {
			return getRuleContext(UpdatedElementContext.class,i);
		}
		public CharsetNameContext charsetName() {
			return getRuleContext(CharsetNameContext.class,0);
		}
		public TerminalNode LOW_PRIORITY() { return getToken(MySqlParser.LOW_PRIORITY, 0); }
		public TerminalNode CONCURRENT() { return getToken(MySqlParser.CONCURRENT, 0); }
		public TerminalNode REPLACE() { return getToken(MySqlParser.REPLACE, 0); }
		public TerminalNode LINES() { return getToken(MySqlParser.LINES, 0); }
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public LoadXmlStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_loadXmlStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterLoadXmlStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitLoadXmlStatement(this);
		}
	}

	public final LoadXmlStatementContext loadXmlStatement() throws RecognitionException {
		LoadXmlStatementContext _localctx = new LoadXmlStatementContext(_ctx, getState());
		enterRule(_localctx, 210, RULE_loadXmlStatement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3589);
			match(LOAD);
			setState(3590);
			match(XML);
			setState(3592);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LOW_PRIORITY || _la==CONCURRENT) {
				{
				setState(3591);
				((LoadXmlStatementContext)_localctx).priority = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==LOW_PRIORITY || _la==CONCURRENT) ) {
					((LoadXmlStatementContext)_localctx).priority = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(3595);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LOCAL) {
				{
				setState(3594);
				match(LOCAL);
				}
			}

			setState(3597);
			match(INFILE);
			setState(3598);
			((LoadXmlStatementContext)_localctx).filename = match(STRING_LITERAL);
			setState(3600);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IGNORE || _la==REPLACE) {
				{
				setState(3599);
				((LoadXmlStatementContext)_localctx).violation = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==IGNORE || _la==REPLACE) ) {
					((LoadXmlStatementContext)_localctx).violation = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(3602);
			match(INTO);
			setState(3603);
			match(TABLE);
			setState(3604);
			tableName();
			setState(3608);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CHARACTER) {
				{
				setState(3605);
				match(CHARACTER);
				setState(3606);
				match(SET);
				setState(3607);
				((LoadXmlStatementContext)_localctx).charset = charsetName();
				}
			}

			setState(3616);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ROWS) {
				{
				setState(3610);
				match(ROWS);
				setState(3611);
				match(IDENTIFIED);
				setState(3612);
				match(BY);
				setState(3613);
				match(LESS_SYMBOL);
				setState(3614);
				((LoadXmlStatementContext)_localctx).tag = match(STRING_LITERAL);
				setState(3615);
				match(GREATER_SYMBOL);
				}
			}

			setState(3622);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IGNORE) {
				{
				setState(3618);
				match(IGNORE);
				setState(3619);
				decimalLiteral();
				setState(3620);
				((LoadXmlStatementContext)_localctx).linesFormat = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==LINES || _la==ROWS) ) {
					((LoadXmlStatementContext)_localctx).linesFormat = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(3635);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,507,_ctx) ) {
			case 1:
				{
				setState(3624);
				match(LR_BRACKET);
				setState(3625);
				assignmentField();
				setState(3630);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(3626);
					match(COMMA);
					setState(3627);
					assignmentField();
					}
					}
					setState(3632);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(3633);
				match(RR_BRACKET);
				}
				break;
			}
			setState(3646);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,509,_ctx) ) {
			case 1:
				{
				setState(3637);
				match(SET);
				setState(3638);
				updatedElement();
				setState(3643);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(3639);
					match(COMMA);
					setState(3640);
					updatedElement();
					}
					}
					setState(3645);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ReplaceStatementContext extends ParserRuleContext {
		public Token priority;
		public UidListContext partitions;
		public UidListContext columns;
		public UpdatedElementContext setFirst;
		public UpdatedElementContext updatedElement;
		public List setElements = new ArrayList();
		public TerminalNode REPLACE() { return getToken(MySqlParser.REPLACE, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public InsertStatementValueContext insertStatementValue() {
			return getRuleContext(InsertStatementValueContext.class,0);
		}
		public TerminalNode SET() { return getToken(MySqlParser.SET, 0); }
		public TerminalNode INTO() { return getToken(MySqlParser.INTO, 0); }
		public TerminalNode PARTITION() { return getToken(MySqlParser.PARTITION, 0); }
		public List LR_BRACKET() { return getTokens(MySqlParser.LR_BRACKET); }
		public TerminalNode LR_BRACKET(int i) {
			return getToken(MySqlParser.LR_BRACKET, i);
		}
		public List RR_BRACKET() { return getTokens(MySqlParser.RR_BRACKET); }
		public TerminalNode RR_BRACKET(int i) {
			return getToken(MySqlParser.RR_BRACKET, i);
		}
		public List updatedElement() {
			return getRuleContexts(UpdatedElementContext.class);
		}
		public UpdatedElementContext updatedElement(int i) {
			return getRuleContext(UpdatedElementContext.class,i);
		}
		public List uidList() {
			return getRuleContexts(UidListContext.class);
		}
		public UidListContext uidList(int i) {
			return getRuleContext(UidListContext.class,i);
		}
		public TerminalNode LOW_PRIORITY() { return getToken(MySqlParser.LOW_PRIORITY, 0); }
		public TerminalNode DELAYED() { return getToken(MySqlParser.DELAYED, 0); }
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public ReplaceStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_replaceStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterReplaceStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitReplaceStatement(this);
		}
	}

	public final ReplaceStatementContext replaceStatement() throws RecognitionException {
		ReplaceStatementContext _localctx = new ReplaceStatementContext(_ctx, getState());
		enterRule(_localctx, 212, RULE_replaceStatement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3648);
			match(REPLACE);
			setState(3650);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==DELAYED || _la==LOW_PRIORITY) {
				{
				setState(3649);
				((ReplaceStatementContext)_localctx).priority = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==DELAYED || _la==LOW_PRIORITY) ) {
					((ReplaceStatementContext)_localctx).priority = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(3653);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==INTO) {
				{
				setState(3652);
				match(INTO);
				}
			}

			setState(3655);
			tableName();
			setState(3661);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==PARTITION) {
				{
				setState(3656);
				match(PARTITION);
				setState(3657);
				match(LR_BRACKET);
				setState(3658);
				((ReplaceStatementContext)_localctx).partitions = uidList();
				setState(3659);
				match(RR_BRACKET);
				}
			}

			setState(3679);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case SELECT:
			case VALUES:
			case VALUE:
			case LR_BRACKET:
				{
				setState(3667);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,513,_ctx) ) {
				case 1:
					{
					setState(3663);
					match(LR_BRACKET);
					setState(3664);
					((ReplaceStatementContext)_localctx).columns = uidList();
					setState(3665);
					match(RR_BRACKET);
					}
					break;
				}
				setState(3669);
				insertStatementValue();
				}
				break;
			case SET:
				{
				setState(3670);
				match(SET);
				setState(3671);
				((ReplaceStatementContext)_localctx).setFirst = updatedElement();
				setState(3676);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(3672);
					match(COMMA);
					setState(3673);
					((ReplaceStatementContext)_localctx).updatedElement = updatedElement();
					((ReplaceStatementContext)_localctx).setElements.add(((ReplaceStatementContext)_localctx).updatedElement);
					}
					}
					setState(3678);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SelectStatementContext extends ParserRuleContext {
		public SelectStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_selectStatement; }
	 
		public SelectStatementContext() { }
		public void copyFrom(SelectStatementContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class UnionSelectContext extends SelectStatementContext {
		public Token unionType;
		public QuerySpecificationNointoContext querySpecificationNointo() {
			return getRuleContext(QuerySpecificationNointoContext.class,0);
		}
		public QueryExpressionNointoContext queryExpressionNointo() {
			return getRuleContext(QueryExpressionNointoContext.class,0);
		}
		public List unionStatement() {
			return getRuleContexts(UnionStatementContext.class);
		}
		public UnionStatementContext unionStatement(int i) {
			return getRuleContext(UnionStatementContext.class,i);
		}
		public TerminalNode UNION() { return getToken(MySqlParser.UNION, 0); }
		public OrderByClauseContext orderByClause() {
			return getRuleContext(OrderByClauseContext.class,0);
		}
		public LimitClauseContext limitClause() {
			return getRuleContext(LimitClauseContext.class,0);
		}
		public LockClauseContext lockClause() {
			return getRuleContext(LockClauseContext.class,0);
		}
		public QuerySpecificationContext querySpecification() {
			return getRuleContext(QuerySpecificationContext.class,0);
		}
		public QueryExpressionContext queryExpression() {
			return getRuleContext(QueryExpressionContext.class,0);
		}
		public TerminalNode ALL() { return getToken(MySqlParser.ALL, 0); }
		public TerminalNode DISTINCT() { return getToken(MySqlParser.DISTINCT, 0); }
		public UnionSelectContext(SelectStatementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterUnionSelect(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitUnionSelect(this);
		}
	}
	public static class UnionParenthesisSelectContext extends SelectStatementContext {
		public Token unionType;
		public QueryExpressionNointoContext queryExpressionNointo() {
			return getRuleContext(QueryExpressionNointoContext.class,0);
		}
		public List unionParenthesis() {
			return getRuleContexts(UnionParenthesisContext.class);
		}
		public UnionParenthesisContext unionParenthesis(int i) {
			return getRuleContext(UnionParenthesisContext.class,i);
		}
		public TerminalNode UNION() { return getToken(MySqlParser.UNION, 0); }
		public QueryExpressionContext queryExpression() {
			return getRuleContext(QueryExpressionContext.class,0);
		}
		public OrderByClauseContext orderByClause() {
			return getRuleContext(OrderByClauseContext.class,0);
		}
		public LimitClauseContext limitClause() {
			return getRuleContext(LimitClauseContext.class,0);
		}
		public LockClauseContext lockClause() {
			return getRuleContext(LockClauseContext.class,0);
		}
		public TerminalNode ALL() { return getToken(MySqlParser.ALL, 0); }
		public TerminalNode DISTINCT() { return getToken(MySqlParser.DISTINCT, 0); }
		public UnionParenthesisSelectContext(SelectStatementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterUnionParenthesisSelect(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitUnionParenthesisSelect(this);
		}
	}
	public static class SimpleSelectContext extends SelectStatementContext {
		public QuerySpecificationContext querySpecification() {
			return getRuleContext(QuerySpecificationContext.class,0);
		}
		public LockClauseContext lockClause() {
			return getRuleContext(LockClauseContext.class,0);
		}
		public SimpleSelectContext(SelectStatementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSimpleSelect(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSimpleSelect(this);
		}
	}
	public static class ParenthesisSelectContext extends SelectStatementContext {
		public QueryExpressionContext queryExpression() {
			return getRuleContext(QueryExpressionContext.class,0);
		}
		public LockClauseContext lockClause() {
			return getRuleContext(LockClauseContext.class,0);
		}
		public ParenthesisSelectContext(SelectStatementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterParenthesisSelect(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitParenthesisSelect(this);
		}
	}
	public static class WithLateralStatementContext extends SelectStatementContext {
		public QuerySpecificationNointoContext querySpecificationNointo() {
			return getRuleContext(QuerySpecificationNointoContext.class,0);
		}
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public List lateralStatement() {
			return getRuleContexts(LateralStatementContext.class);
		}
		public LateralStatementContext lateralStatement(int i) {
			return getRuleContext(LateralStatementContext.class,i);
		}
		public WithLateralStatementContext(SelectStatementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterWithLateralStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitWithLateralStatement(this);
		}
	}

	public final SelectStatementContext selectStatement() throws RecognitionException {
		SelectStatementContext _localctx = new SelectStatementContext(_ctx, getState());
		enterRule(_localctx, 214, RULE_selectStatement);
		int _la;
		try {
			int _alt;
			setState(3746);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,533,_ctx) ) {
			case 1:
				_localctx = new SimpleSelectContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(3681);
				querySpecification();
				setState(3683);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,516,_ctx) ) {
				case 1:
					{
					setState(3682);
					lockClause();
					}
					break;
				}
				}
				break;
			case 2:
				_localctx = new ParenthesisSelectContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(3685);
				queryExpression();
				setState(3687);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,517,_ctx) ) {
				case 1:
					{
					setState(3686);
					lockClause();
					}
					break;
				}
				}
				break;
			case 3:
				_localctx = new UnionSelectContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(3691);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case SELECT:
					{
					setState(3689);
					querySpecificationNointo();
					}
					break;
				case LR_BRACKET:
					{
					setState(3690);
					queryExpressionNointo();
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(3694); 
				_errHandler.sync(this);
				_alt = 1;
				do {
					switch (_alt) {
					case 1:
						{
						{
						setState(3693);
						unionStatement();
						}
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					setState(3696); 
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,519,_ctx);
				} while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
				setState(3706);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==UNION) {
					{
					setState(3698);
					match(UNION);
					setState(3700);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==ALL || _la==DISTINCT) {
						{
						setState(3699);
						((UnionSelectContext)_localctx).unionType = _input.LT(1);
						_la = _input.LA(1);
						if ( !(_la==ALL || _la==DISTINCT) ) {
							((UnionSelectContext)_localctx).unionType = (Token)_errHandler.recoverInline(this);
						}
						else {
							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
							_errHandler.reportMatch(this);
							consume();
						}
						}
					}

					setState(3704);
					_errHandler.sync(this);
					switch (_input.LA(1)) {
					case SELECT:
						{
						setState(3702);
						querySpecification();
						}
						break;
					case LR_BRACKET:
						{
						setState(3703);
						queryExpression();
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					}
				}

				setState(3709);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,523,_ctx) ) {
				case 1:
					{
					setState(3708);
					orderByClause();
					}
					break;
				}
				setState(3712);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LIMIT) {
					{
					setState(3711);
					limitClause();
					}
				}

				setState(3715);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,525,_ctx) ) {
				case 1:
					{
					setState(3714);
					lockClause();
					}
					break;
				}
				}
				break;
			case 4:
				_localctx = new UnionParenthesisSelectContext(_localctx);
				enterOuterAlt(_localctx, 4);
				{
				setState(3717);
				queryExpressionNointo();
				setState(3719); 
				_errHandler.sync(this);
				_alt = 1;
				do {
					switch (_alt) {
					case 1:
						{
						{
						setState(3718);
						unionParenthesis();
						}
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					setState(3721); 
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,526,_ctx);
				} while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
				setState(3728);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==UNION) {
					{
					setState(3723);
					match(UNION);
					setState(3725);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==ALL || _la==DISTINCT) {
						{
						setState(3724);
						((UnionParenthesisSelectContext)_localctx).unionType = _input.LT(1);
						_la = _input.LA(1);
						if ( !(_la==ALL || _la==DISTINCT) ) {
							((UnionParenthesisSelectContext)_localctx).unionType = (Token)_errHandler.recoverInline(this);
						}
						else {
							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
							_errHandler.reportMatch(this);
							consume();
						}
						}
					}

					setState(3727);
					queryExpression();
					}
				}

				setState(3731);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,529,_ctx) ) {
				case 1:
					{
					setState(3730);
					orderByClause();
					}
					break;
				}
				setState(3734);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LIMIT) {
					{
					setState(3733);
					limitClause();
					}
				}

				setState(3737);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,531,_ctx) ) {
				case 1:
					{
					setState(3736);
					lockClause();
					}
					break;
				}
				}
				break;
			case 5:
				_localctx = new WithLateralStatementContext(_localctx);
				enterOuterAlt(_localctx, 5);
				{
				setState(3739);
				querySpecificationNointo();
				setState(3742); 
				_errHandler.sync(this);
				_la = _input.LA(1);
				do {
					{
					{
					setState(3740);
					match(COMMA);
					setState(3741);
					lateralStatement();
					}
					}
					setState(3744); 
					_errHandler.sync(this);
					_la = _input.LA(1);
				} while ( _la==COMMA );
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ValuesStatementContext extends ParserRuleContext {
		public TerminalNode VALUES() { return getToken(MySqlParser.VALUES, 0); }
		public List LR_BRACKET() { return getTokens(MySqlParser.LR_BRACKET); }
		public TerminalNode LR_BRACKET(int i) {
			return getToken(MySqlParser.LR_BRACKET, i);
		}
		public List RR_BRACKET() { return getTokens(MySqlParser.RR_BRACKET); }
		public TerminalNode RR_BRACKET(int i) {
			return getToken(MySqlParser.RR_BRACKET, i);
		}
		public List expressionsWithDefaults() {
			return getRuleContexts(ExpressionsWithDefaultsContext.class);
		}
		public ExpressionsWithDefaultsContext expressionsWithDefaults(int i) {
			return getRuleContext(ExpressionsWithDefaultsContext.class,i);
		}
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public ValuesStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_valuesStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterValuesStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitValuesStatement(this);
		}
	}

	public final ValuesStatementContext valuesStatement() throws RecognitionException {
		ValuesStatementContext _localctx = new ValuesStatementContext(_ctx, getState());
		enterRule(_localctx, 216, RULE_valuesStatement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3748);
			match(VALUES);
			setState(3749);
			match(LR_BRACKET);
			setState(3751);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,534,_ctx) ) {
			case 1:
				{
				setState(3750);
				expressionsWithDefaults();
				}
				break;
			}
			setState(3753);
			match(RR_BRACKET);
			setState(3762);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(3754);
				match(COMMA);
				setState(3755);
				match(LR_BRACKET);
				setState(3757);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,535,_ctx) ) {
				case 1:
					{
					setState(3756);
					expressionsWithDefaults();
					}
					break;
				}
				setState(3759);
				match(RR_BRACKET);
				}
				}
				setState(3764);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class WithStatementContext extends ParserRuleContext {
		public TerminalNode WITH() { return getToken(MySqlParser.WITH, 0); }
		public List commonTableExpressions() {
			return getRuleContexts(CommonTableExpressionsContext.class);
		}
		public CommonTableExpressionsContext commonTableExpressions(int i) {
			return getRuleContext(CommonTableExpressionsContext.class,i);
		}
		public TerminalNode RECURSIVE() { return getToken(MySqlParser.RECURSIVE, 0); }
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public WithStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_withStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterWithStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitWithStatement(this);
		}
	}

	public final WithStatementContext withStatement() throws RecognitionException {
		WithStatementContext _localctx = new WithStatementContext(_ctx, getState());
		enterRule(_localctx, 218, RULE_withStatement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3765);
			match(WITH);
			setState(3767);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,537,_ctx) ) {
			case 1:
				{
				setState(3766);
				match(RECURSIVE);
				}
				break;
			}
			setState(3769);
			commonTableExpressions();
			setState(3774);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(3770);
				match(COMMA);
				setState(3771);
				commonTableExpressions();
				}
				}
				setState(3776);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TableStatementContext extends ParserRuleContext {
		public TerminalNode TABLE() { return getToken(MySqlParser.TABLE, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public OrderByClauseContext orderByClause() {
			return getRuleContext(OrderByClauseContext.class,0);
		}
		public LimitClauseContext limitClause() {
			return getRuleContext(LimitClauseContext.class,0);
		}
		public TableStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_tableStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableStatement(this);
		}
	}

	public final TableStatementContext tableStatement() throws RecognitionException {
		TableStatementContext _localctx = new TableStatementContext(_ctx, getState());
		enterRule(_localctx, 220, RULE_tableStatement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3777);
			match(TABLE);
			setState(3778);
			tableName();
			setState(3780);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ORDER) {
				{
				setState(3779);
				orderByClause();
				}
			}

			setState(3783);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LIMIT) {
				{
				setState(3782);
				limitClause();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class UpdateStatementContext extends ParserRuleContext {
		public SingleUpdateStatementContext singleUpdateStatement() {
			return getRuleContext(SingleUpdateStatementContext.class,0);
		}
		public MultipleUpdateStatementContext multipleUpdateStatement() {
			return getRuleContext(MultipleUpdateStatementContext.class,0);
		}
		public UpdateStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_updateStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterUpdateStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitUpdateStatement(this);
		}
	}

	public final UpdateStatementContext updateStatement() throws RecognitionException {
		UpdateStatementContext _localctx = new UpdateStatementContext(_ctx, getState());
		enterRule(_localctx, 222, RULE_updateStatement);
		try {
			setState(3787);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,541,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(3785);
				singleUpdateStatement();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(3786);
				multipleUpdateStatement();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class InsertStatementValueContext extends ParserRuleContext {
		public Token insertFormat;
		public SelectStatementContext selectStatement() {
			return getRuleContext(SelectStatementContext.class,0);
		}
		public List LR_BRACKET() { return getTokens(MySqlParser.LR_BRACKET); }
		public TerminalNode LR_BRACKET(int i) {
			return getToken(MySqlParser.LR_BRACKET, i);
		}
		public List RR_BRACKET() { return getTokens(MySqlParser.RR_BRACKET); }
		public TerminalNode RR_BRACKET(int i) {
			return getToken(MySqlParser.RR_BRACKET, i);
		}
		public TerminalNode VALUES() { return getToken(MySqlParser.VALUES, 0); }
		public TerminalNode VALUE() { return getToken(MySqlParser.VALUE, 0); }
		public List expressionsWithDefaults() {
			return getRuleContexts(ExpressionsWithDefaultsContext.class);
		}
		public ExpressionsWithDefaultsContext expressionsWithDefaults(int i) {
			return getRuleContext(ExpressionsWithDefaultsContext.class,i);
		}
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public InsertStatementValueContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_insertStatementValue; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterInsertStatementValue(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitInsertStatementValue(this);
		}
	}

	public final InsertStatementValueContext insertStatementValue() throws RecognitionException {
		InsertStatementValueContext _localctx = new InsertStatementValueContext(_ctx, getState());
		enterRule(_localctx, 224, RULE_insertStatementValue);
		int _la;
		try {
			setState(3807);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case SELECT:
			case LR_BRACKET:
				enterOuterAlt(_localctx, 1);
				{
				setState(3789);
				selectStatement();
				}
				break;
			case VALUES:
			case VALUE:
				enterOuterAlt(_localctx, 2);
				{
				setState(3790);
				((InsertStatementValueContext)_localctx).insertFormat = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==VALUES || _la==VALUE) ) {
					((InsertStatementValueContext)_localctx).insertFormat = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(3791);
				match(LR_BRACKET);
				setState(3793);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,542,_ctx) ) {
				case 1:
					{
					setState(3792);
					expressionsWithDefaults();
					}
					break;
				}
				setState(3795);
				match(RR_BRACKET);
				setState(3804);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(3796);
					match(COMMA);
					setState(3797);
					match(LR_BRACKET);
					setState(3799);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,543,_ctx) ) {
					case 1:
						{
						setState(3798);
						expressionsWithDefaults();
						}
						break;
					}
					setState(3801);
					match(RR_BRACKET);
					}
					}
					setState(3806);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class UpdatedElementContext extends ParserRuleContext {
		public FullColumnNameContext fullColumnName() {
			return getRuleContext(FullColumnNameContext.class,0);
		}
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode DEFAULT() { return getToken(MySqlParser.DEFAULT, 0); }
		public UpdatedElementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_updatedElement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterUpdatedElement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitUpdatedElement(this);
		}
	}

	public final UpdatedElementContext updatedElement() throws RecognitionException {
		UpdatedElementContext _localctx = new UpdatedElementContext(_ctx, getState());
		enterRule(_localctx, 226, RULE_updatedElement);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3809);
			fullColumnName();
			setState(3810);
			match(EQUAL_SYMBOL);
			setState(3813);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,546,_ctx) ) {
			case 1:
				{
				setState(3811);
				expression(0);
				}
				break;
			case 2:
				{
				setState(3812);
				match(DEFAULT);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AssignmentFieldContext extends ParserRuleContext {
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode LOCAL_ID() { return getToken(MySqlParser.LOCAL_ID, 0); }
		public AssignmentFieldContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_assignmentField; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAssignmentField(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAssignmentField(this);
		}
	}

	public final AssignmentFieldContext assignmentField() throws RecognitionException {
		AssignmentFieldContext _localctx = new AssignmentFieldContext(_ctx, getState());
		enterRule(_localctx, 228, RULE_assignmentField);
		try {
			setState(3817);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case ARRAY:
			case ATTRIBUTE:
			case BUCKETS:
			case CONDITION:
			case CURRENT:
			case CURRENT_ROLE:
			case CURRENT_USER:
			case DATABASE:
			case DEFAULT:
			case DIAGNOSTICS:
			case EMPTY:
			case ENFORCED:
			case EXCEPT:
			case GROUP:
			case GROUP_REPLICATION_STREAM:
			case IF:
			case IGNORED:
			case INSERT:
			case LATERAL:
			case LEFT:
			case LOCKED:
			case MAXVALUE:
			case MINVALUE:
			case NUMBER:
			case OPTIONAL:
			case ORDER:
			case PRIMARY:
			case REPEAT:
			case REPLACE:
			case RIGHT:
			case SCHEMA:
			case SKIP_:
			case SKIP_QUERY_REWRITE:
			case STACKED:
			case STATEMENT:
			case DATE:
			case TIME:
			case TIMESTAMP:
			case DATETIME:
			case YEAR:
			case NATIONAL:
			case BINARY:
			case TEXT:
			case ENUM:
			case SERIAL:
			case JSON_ARRAY:
			case JSON_ARRAYAGG:
			case JSON_ARRAY_APPEND:
			case JSON_ARRAY_INSERT:
			case JSON_CONTAINS:
			case JSON_CONTAINS_PATH:
			case JSON_DEPTH:
			case JSON_EXTRACT:
			case JSON_INSERT:
			case JSON_KEYS:
			case JSON_LENGTH:
			case JSON_MERGE:
			case JSON_MERGE_PATCH:
			case JSON_MERGE_PRESERVE:
			case JSON_OBJECT:
			case JSON_OBJECTAGG:
			case JSON_OVERLAPS:
			case JSON_PRETTY:
			case JSON_QUOTE:
			case JSON_REMOVE:
			case JSON_REPLACE:
			case JSON_SCHEMA_VALID:
			case JSON_SCHEMA_VALIDATION_REPORT:
			case JSON_SEARCH:
			case JSON_SET:
			case JSON_STORAGE_FREE:
			case JSON_STORAGE_SIZE:
			case JSON_TABLE:
			case JSON_TYPE:
			case JSON_UNQUOTE:
			case JSON_VALID:
			case JSON_VALUE:
			case NESTED:
			case ORDINALITY:
			case PATH:
			case AVG:
			case BIT_AND:
			case BIT_OR:
			case BIT_XOR:
			case COUNT:
			case CUME_DIST:
			case DENSE_RANK:
			case FIRST_VALUE:
			case GROUP_CONCAT:
			case LAG:
			case LAST_VALUE:
			case LEAD:
			case MAX:
			case MIN:
			case NTILE:
			case NTH_VALUE:
			case PERCENT_RANK:
			case RANK:
			case ROW_NUMBER:
			case STD:
			case STDDEV:
			case STDDEV_POP:
			case STDDEV_SAMP:
			case SUM:
			case VAR_POP:
			case VAR_SAMP:
			case VARIANCE:
			case CURRENT_DATE:
			case CURRENT_TIME:
			case CURRENT_TIMESTAMP:
			case LOCALTIME:
			case CURDATE:
			case CURTIME:
			case DATE_ADD:
			case DATE_SUB:
			case LOCALTIMESTAMP:
			case NOW:
			case POSITION:
			case SUBSTR:
			case SUBSTRING:
			case SYSDATE:
			case TRIM:
			case UTC_DATE:
			case UTC_TIME:
			case UTC_TIMESTAMP:
			case ACCOUNT:
			case ACTION:
			case AFTER:
			case AGGREGATE:
			case ALGORITHM:
			case ANY:
			case AT:
			case AUTHORS:
			case AUTOCOMMIT:
			case AUTOEXTEND_SIZE:
			case AUTO_INCREMENT:
			case AVG_ROW_LENGTH:
			case BEGIN:
			case BINLOG:
			case BIT:
			case BLOCK:
			case BOOL:
			case BOOLEAN:
			case BTREE:
			case CACHE:
			case CASCADED:
			case CHAIN:
			case CHANGED:
			case CHANNEL:
			case CHECKSUM:
			case PAGE_CHECKSUM:
			case CIPHER:
			case CLASS_ORIGIN:
			case CLIENT:
			case CLOSE:
			case CLUSTERING:
			case COALESCE:
			case CODE:
			case COLUMNS:
			case COLUMN_FORMAT:
			case COLUMN_NAME:
			case COMMENT:
			case COMMIT:
			case COMPACT:
			case COMPLETION:
			case COMPRESSED:
			case COMPRESSION:
			case CONCURRENT:
			case CONNECT:
			case CONNECTION:
			case CONSISTENT:
			case CONSTRAINT_CATALOG:
			case CONSTRAINT_SCHEMA:
			case CONSTRAINT_NAME:
			case CONTAINS:
			case CONTEXT:
			case CONTRIBUTORS:
			case COPY:
			case CPU:
			case CYCLE:
			case CURSOR_NAME:
			case DATA:
			case DATAFILE:
			case DEALLOCATE:
			case DEFAULT_AUTH:
			case DEFINER:
			case DELAY_KEY_WRITE:
			case DES_KEY_FILE:
			case DIRECTORY:
			case DISABLE:
			case DISCARD:
			case DISK:
			case DO:
			case DUMPFILE:
			case DUPLICATE:
			case DYNAMIC:
			case ENABLE:
			case ENCRYPTED:
			case ENCRYPTION:
			case ENCRYPTION_KEY_ID:
			case END:
			case ENDS:
			case ENGINE:
			case ENGINES:
			case ERROR:
			case ERRORS:
			case ESCAPE:
			case EVEN:
			case EVENT:
			case EVENTS:
			case EVERY:
			case EXCHANGE:
			case EXCLUSIVE:
			case EXPIRE:
			case EXPORT:
			case EXTENDED:
			case EXTENT_SIZE:
			case FAILED_LOGIN_ATTEMPTS:
			case FAST:
			case FAULTS:
			case FIELDS:
			case FILE_BLOCK_SIZE:
			case FILTER:
			case FIRST:
			case FIXED:
			case FLUSH:
			case FOLLOWS:
			case FOUND:
			case FULL:
			case FUNCTION:
			case GENERAL:
			case GLOBAL:
			case GRANTS:
			case GROUP_REPLICATION:
			case HANDLER:
			case HASH:
			case HELP:
			case HISTORY:
			case HOST:
			case HOSTS:
			case IDENTIFIED:
			case IGNORE_SERVER_IDS:
			case IMPORT:
			case INCREMENT:
			case INDEXES:
			case INITIAL_SIZE:
			case INPLACE:
			case INSERT_METHOD:
			case INSTALL:
			case INSTANCE:
			case INSTANT:
			case INVISIBLE:
			case INVOKER:
			case IO:
			case IO_THREAD:
			case IPC:
			case ISOLATION:
			case ISSUER:
			case JSON:
			case KEY_BLOCK_SIZE:
			case LANGUAGE:
			case LAST:
			case LEAVES:
			case LESS:
			case LEVEL:
			case LIST:
			case LOCAL:
			case LOGFILE:
			case LOGS:
			case MASTER:
			case MASTER_AUTO_POSITION:
			case MASTER_CONNECT_RETRY:
			case MASTER_DELAY:
			case MASTER_HEARTBEAT_PERIOD:
			case MASTER_HOST:
			case MASTER_LOG_FILE:
			case MASTER_LOG_POS:
			case MASTER_PASSWORD:
			case MASTER_PORT:
			case MASTER_RETRY_COUNT:
			case MASTER_SSL:
			case MASTER_SSL_CA:
			case MASTER_SSL_CAPATH:
			case MASTER_SSL_CERT:
			case MASTER_SSL_CIPHER:
			case MASTER_SSL_CRL:
			case MASTER_SSL_CRLPATH:
			case MASTER_SSL_KEY:
			case MASTER_TLS_VERSION:
			case MASTER_USER:
			case MAX_CONNECTIONS_PER_HOUR:
			case MAX_QUERIES_PER_HOUR:
			case MAX_ROWS:
			case MAX_SIZE:
			case MAX_UPDATES_PER_HOUR:
			case MAX_USER_CONNECTIONS:
			case MEDIUM:
			case MEMBER:
			case MERGE:
			case MESSAGE_TEXT:
			case MID:
			case MIGRATE:
			case MIN_ROWS:
			case MODE:
			case MODIFY:
			case MUTEX:
			case MYSQL:
			case MYSQL_ERRNO:
			case NAME:
			case NAMES:
			case NCHAR:
			case NEVER:
			case NEXT:
			case NO:
			case NOCACHE:
			case NOCOPY:
			case NOCYCLE:
			case NOMAXVALUE:
			case NOMINVALUE:
			case NOWAIT:
			case NODEGROUP:
			case NONE:
			case ODBC:
			case OFFLINE:
			case OFFSET:
			case OF:
			case OJ:
			case OLD_PASSWORD:
			case ONE:
			case ONLINE:
			case ONLY:
			case OPEN:
			case OPTIMIZER_COSTS:
			case OPTIONS:
			case OWNER:
			case PACK_KEYS:
			case PAGE:
			case PARSER:
			case PARTIAL:
			case PARTITIONING:
			case PARTITIONS:
			case PASSWORD:
			case PASSWORD_LOCK_TIME:
			case PHASE:
			case PLUGIN:
			case PLUGIN_DIR:
			case PLUGINS:
			case PORT:
			case PRECEDES:
			case PREPARE:
			case PRESERVE:
			case PREV:
			case PROCESSLIST:
			case PROFILE:
			case PROFILES:
			case PROXY:
			case QUERY:
			case QUICK:
			case REBUILD:
			case RECOVER:
			case RECURSIVE:
			case REDO_BUFFER_SIZE:
			case REDUNDANT:
			case RELAY:
			case RELAY_LOG_FILE:
			case RELAY_LOG_POS:
			case RELAYLOG:
			case REMOVE:
			case REORGANIZE:
			case REPAIR:
			case REPLICATE_DO_DB:
			case REPLICATE_DO_TABLE:
			case REPLICATE_IGNORE_DB:
			case REPLICATE_IGNORE_TABLE:
			case REPLICATE_REWRITE_DB:
			case REPLICATE_WILD_DO_TABLE:
			case REPLICATE_WILD_IGNORE_TABLE:
			case REPLICATION:
			case RESET:
			case RESTART:
			case RESUME:
			case RETURNED_SQLSTATE:
			case RETURNING:
			case RETURNS:
			case REUSE:
			case ROLE:
			case ROLLBACK:
			case ROLLUP:
			case ROTATE:
			case ROW:
			case ROWS:
			case ROW_FORMAT:
			case RTREE:
			case SAVEPOINT:
			case SCHEDULE:
			case SECURITY:
			case SEQUENCE:
			case SERVER:
			case SESSION:
			case SHARE:
			case SHARED:
			case SIGNED:
			case SIMPLE:
			case SLAVE:
			case SLOW:
			case SNAPSHOT:
			case SOCKET:
			case SOME:
			case SONAME:
			case SOUNDS:
			case SOURCE:
			case SQL_AFTER_GTIDS:
			case SQL_AFTER_MTS_GAPS:
			case SQL_BEFORE_GTIDS:
			case SQL_BUFFER_RESULT:
			case SQL_CACHE:
			case SQL_NO_CACHE:
			case SQL_THREAD:
			case START:
			case STARTS:
			case STATS_AUTO_RECALC:
			case STATS_PERSISTENT:
			case STATS_SAMPLE_PAGES:
			case STATUS:
			case STOP:
			case STORAGE:
			case STRING:
			case SUBCLASS_ORIGIN:
			case SUBJECT:
			case SUBPARTITION:
			case SUBPARTITIONS:
			case SUSPEND:
			case SWAPS:
			case SWITCHES:
			case TABLE_NAME:
			case TABLESPACE:
			case TABLE_TYPE:
			case TEMPORARY:
			case TEMPTABLE:
			case THAN:
			case TRADITIONAL:
			case TRANSACTION:
			case TRANSACTIONAL:
			case TRIGGERS:
			case TRUNCATE:
			case UNBOUNDED:
			case UNDEFINED:
			case UNDOFILE:
			case UNDO_BUFFER_SIZE:
			case UNINSTALL:
			case UNKNOWN:
			case UNTIL:
			case UPGRADE:
			case USER:
			case USE_FRM:
			case USER_RESOURCES:
			case VALIDATION:
			case VALUE:
			case VARIABLES:
			case VIEW:
			case VIRTUAL:
			case VISIBLE:
			case WAIT:
			case WARNINGS:
			case WITHOUT:
			case WORK:
			case WRAPPER:
			case X509:
			case XA:
			case XML:
			case YES:
			case EUR:
			case USA:
			case JIS:
			case ISO:
			case INTERNAL:
			case QUARTER:
			case MONTH:
			case DAY:
			case HOUR:
			case MINUTE:
			case WEEK:
			case SECOND:
			case MICROSECOND:
			case USER_STATISTICS:
			case CLIENT_STATISTICS:
			case INDEX_STATISTICS:
			case TABLE_STATISTICS:
			case FIREWALL_RULES:
			case ADMIN:
			case APPLICATION_PASSWORD_ADMIN:
			case AUDIT_ADMIN:
			case AUDIT_ABORT_EXEMPT:
			case AUTHENTICATION_POLICY_ADMIN:
			case BACKUP_ADMIN:
			case BINLOG_ADMIN:
			case BINLOG_ENCRYPTION_ADMIN:
			case CLONE_ADMIN:
			case CONNECTION_ADMIN:
			case ENCRYPTION_KEY_ADMIN:
			case EXECUTE:
			case FILE:
			case FIREWALL_ADMIN:
			case FIREWALL_EXEMPT:
			case FIREWALL_USER:
			case FLUSH_OPTIMIZER_COSTS:
			case FLUSH_STATUS:
			case FLUSH_TABLES:
			case FLUSH_USER_RESOURCES:
			case GROUP_REPLICATION_ADMIN:
			case INNODB_REDO_LOG_ARCHIVE:
			case INNODB_REDO_LOG_ENABLE:
			case INVOKE:
			case LAMBDA:
			case NDB_STORED_USER:
			case PASSWORDLESS_USER_ADMIN:
			case PERSIST_RO_VARIABLES_ADMIN:
			case PRIVILEGES:
			case PROCESS:
			case RELOAD:
			case REPLICATION_APPLIER:
			case REPLICATION_SLAVE_ADMIN:
			case RESOURCE_GROUP_ADMIN:
			case RESOURCE_GROUP_USER:
			case ROLE_ADMIN:
			case ROUTINE:
			case S3:
			case SESSION_VARIABLES_ADMIN:
			case SET_USER_ID:
			case SHOW_ROUTINE:
			case SHUTDOWN:
			case SUPER:
			case SYSTEM_VARIABLES_ADMIN:
			case TABLES:
			case TABLE_ENCRYPTION_ADMIN:
			case VERSION_TOKEN_ADMIN:
			case XA_RECOVER_ADMIN:
			case ARMSCII8:
			case ASCII:
			case BIG5:
			case CP1250:
			case CP1251:
			case CP1256:
			case CP1257:
			case CP850:
			case CP852:
			case CP866:
			case CP932:
			case DEC8:
			case EUCJPMS:
			case EUCKR:
			case GB18030:
			case GB2312:
			case GBK:
			case GEOSTD8:
			case GREEK:
			case HEBREW:
			case HP8:
			case KEYBCS2:
			case KOI8R:
			case KOI8U:
			case LATIN1:
			case LATIN2:
			case LATIN5:
			case LATIN7:
			case MACCE:
			case MACROMAN:
			case SJIS:
			case SWE7:
			case TIS620:
			case UCS2:
			case UJIS:
			case UTF16:
			case UTF16LE:
			case UTF32:
			case UTF8:
			case UTF8MB3:
			case UTF8MB4:
			case ARCHIVE:
			case BLACKHOLE:
			case CSV:
			case FEDERATED:
			case INNODB:
			case MEMORY:
			case MRG_MYISAM:
			case MYISAM:
			case NDB:
			case NDBCLUSTER:
			case PERFORMANCE_SCHEMA:
			case TOKUDB:
			case REPEATABLE:
			case COMMITTED:
			case UNCOMMITTED:
			case SERIALIZABLE:
			case GEOMETRYCOLLECTION:
			case GEOMETRY:
			case LINESTRING:
			case MULTILINESTRING:
			case MULTIPOINT:
			case MULTIPOLYGON:
			case POINT:
			case POLYGON:
			case ABS:
			case ACOS:
			case ADDDATE:
			case ADDTIME:
			case AES_DECRYPT:
			case AES_ENCRYPT:
			case AREA:
			case ASBINARY:
			case ASIN:
			case ASTEXT:
			case ASWKB:
			case ASWKT:
			case ASYMMETRIC_DECRYPT:
			case ASYMMETRIC_DERIVE:
			case ASYMMETRIC_ENCRYPT:
			case ASYMMETRIC_SIGN:
			case ASYMMETRIC_VERIFY:
			case ATAN:
			case ATAN2:
			case BENCHMARK:
			case BIN:
			case BIT_COUNT:
			case BIT_LENGTH:
			case BUFFER:
			case CATALOG_NAME:
			case CEIL:
			case CEILING:
			case CENTROID:
			case CHARACTER_LENGTH:
			case CHARSET:
			case CHAR_LENGTH:
			case COERCIBILITY:
			case COLLATION:
			case COMPRESS:
			case CONCAT:
			case CONCAT_WS:
			case CONNECTION_ID:
			case CONV:
			case CONVERT_TZ:
			case COS:
			case COT:
			case CRC32:
			case CREATE_ASYMMETRIC_PRIV_KEY:
			case CREATE_ASYMMETRIC_PUB_KEY:
			case CREATE_DH_PARAMETERS:
			case CREATE_DIGEST:
			case CROSSES:
			case DATEDIFF:
			case DATE_FORMAT:
			case DAYNAME:
			case DAYOFMONTH:
			case DAYOFWEEK:
			case DAYOFYEAR:
			case DECODE:
			case DEGREES:
			case DES_DECRYPT:
			case DES_ENCRYPT:
			case DIMENSION:
			case DISJOINT:
			case ELT:
			case ENCODE:
			case ENCRYPT:
			case ENDPOINT:
			case ENGINE_ATTRIBUTE:
			case ENVELOPE:
			case EQUALS:
			case EXP:
			case EXPORT_SET:
			case EXTERIORRING:
			case EXTRACTVALUE:
			case FIELD:
			case FIND_IN_SET:
			case FLOOR:
			case FORMAT:
			case FOUND_ROWS:
			case FROM_BASE64:
			case FROM_DAYS:
			case FROM_UNIXTIME:
			case GEOMCOLLFROMTEXT:
			case GEOMCOLLFROMWKB:
			case GEOMETRYCOLLECTIONFROMTEXT:
			case GEOMETRYCOLLECTIONFROMWKB:
			case GEOMETRYFROMTEXT:
			case GEOMETRYFROMWKB:
			case GEOMETRYN:
			case GEOMETRYTYPE:
			case GEOMFROMTEXT:
			case GEOMFROMWKB:
			case GET_FORMAT:
			case GET_LOCK:
			case GLENGTH:
			case GREATEST:
			case GTID_SUBSET:
			case GTID_SUBTRACT:
			case HEX:
			case IFNULL:
			case INET6_ATON:
			case INET6_NTOA:
			case INET_ATON:
			case INET_NTOA:
			case INSTR:
			case INTERIORRINGN:
			case INTERSECTS:
			case ISCLOSED:
			case ISEMPTY:
			case ISNULL:
			case ISSIMPLE:
			case IS_FREE_LOCK:
			case IS_IPV4:
			case IS_IPV4_COMPAT:
			case IS_IPV4_MAPPED:
			case IS_IPV6:
			case IS_USED_LOCK:
			case LAST_INSERT_ID:
			case LCASE:
			case LEAST:
			case LENGTH:
			case LINEFROMTEXT:
			case LINEFROMWKB:
			case LINESTRINGFROMTEXT:
			case LINESTRINGFROMWKB:
			case LN:
			case LOAD_FILE:
			case LOCATE:
			case LOG:
			case LOG10:
			case LOG2:
			case LOWER:
			case LPAD:
			case LTRIM:
			case MAKEDATE:
			case MAKETIME:
			case MAKE_SET:
			case MASTER_POS_WAIT:
			case MBRCONTAINS:
			case MBRDISJOINT:
			case MBREQUAL:
			case MBRINTERSECTS:
			case MBROVERLAPS:
			case MBRTOUCHES:
			case MBRWITHIN:
			case MD5:
			case MLINEFROMTEXT:
			case MLINEFROMWKB:
			case MONTHNAME:
			case MPOINTFROMTEXT:
			case MPOINTFROMWKB:
			case MPOLYFROMTEXT:
			case MPOLYFROMWKB:
			case MULTILINESTRINGFROMTEXT:
			case MULTILINESTRINGFROMWKB:
			case MULTIPOINTFROMTEXT:
			case MULTIPOINTFROMWKB:
			case MULTIPOLYGONFROMTEXT:
			case MULTIPOLYGONFROMWKB:
			case NAME_CONST:
			case NULLIF:
			case NUMGEOMETRIES:
			case NUMINTERIORRINGS:
			case NUMPOINTS:
			case OCT:
			case OCTET_LENGTH:
			case ORD:
			case OVERLAPS:
			case PERIOD_ADD:
			case PERIOD_DIFF:
			case PI:
			case POINTFROMTEXT:
			case POINTFROMWKB:
			case POINTN:
			case POLYFROMTEXT:
			case POLYFROMWKB:
			case POLYGONFROMTEXT:
			case POLYGONFROMWKB:
			case POW:
			case POWER:
			case QUOTE:
			case RADIANS:
			case RAND:
			case RANDOM:
			case RANDOM_BYTES:
			case RELEASE_LOCK:
			case REVERSE:
			case ROUND:
			case ROW_COUNT:
			case RPAD:
			case RTRIM:
			case SEC_TO_TIME:
			case SECONDARY_ENGINE_ATTRIBUTE:
			case SENSITIVE_VARIABLES_OBSERVER:
			case SESSION_USER:
			case SHA:
			case SHA1:
			case SHA2:
			case SCHEMA_NAME:
			case SIGN:
			case SIN:
			case SLEEP:
			case SOUNDEX:
			case SQL_THREAD_WAIT_AFTER_GTIDS:
			case SQRT:
			case SRID:
			case STARTPOINT:
			case STRCMP:
			case STR_TO_DATE:
			case ST_AREA:
			case ST_ASBINARY:
			case ST_ASTEXT:
			case ST_ASWKB:
			case ST_ASWKT:
			case ST_BUFFER:
			case ST_CENTROID:
			case ST_CONTAINS:
			case ST_CROSSES:
			case ST_DIFFERENCE:
			case ST_DIMENSION:
			case ST_DISJOINT:
			case ST_DISTANCE:
			case ST_ENDPOINT:
			case ST_ENVELOPE:
			case ST_EQUALS:
			case ST_EXTERIORRING:
			case ST_GEOMCOLLFROMTEXT:
			case ST_GEOMCOLLFROMTXT:
			case ST_GEOMCOLLFROMWKB:
			case ST_GEOMETRYCOLLECTIONFROMTEXT:
			case ST_GEOMETRYCOLLECTIONFROMWKB:
			case ST_GEOMETRYFROMTEXT:
			case ST_GEOMETRYFROMWKB:
			case ST_GEOMETRYN:
			case ST_GEOMETRYTYPE:
			case ST_GEOMFROMTEXT:
			case ST_GEOMFROMWKB:
			case ST_INTERIORRINGN:
			case ST_INTERSECTION:
			case ST_INTERSECTS:
			case ST_ISCLOSED:
			case ST_ISEMPTY:
			case ST_ISSIMPLE:
			case ST_LINEFROMTEXT:
			case ST_LINEFROMWKB:
			case ST_LINESTRINGFROMTEXT:
			case ST_LINESTRINGFROMWKB:
			case ST_NUMGEOMETRIES:
			case ST_NUMINTERIORRING:
			case ST_NUMINTERIORRINGS:
			case ST_NUMPOINTS:
			case ST_OVERLAPS:
			case ST_POINTFROMTEXT:
			case ST_POINTFROMWKB:
			case ST_POINTN:
			case ST_POLYFROMTEXT:
			case ST_POLYFROMWKB:
			case ST_POLYGONFROMTEXT:
			case ST_POLYGONFROMWKB:
			case ST_SRID:
			case ST_STARTPOINT:
			case ST_SYMDIFFERENCE:
			case ST_TOUCHES:
			case ST_UNION:
			case ST_WITHIN:
			case ST_X:
			case ST_Y:
			case SUBDATE:
			case SUBSTRING_INDEX:
			case SUBTIME:
			case SYSTEM_USER:
			case SYSTEM:
			case TAN:
			case TELEMETRY_LOG_ADMIN:
			case TIMEDIFF:
			case TIMESTAMPADD:
			case TIMESTAMPDIFF:
			case TIME_FORMAT:
			case TIME_TO_SEC:
			case TOUCHES:
			case TO_BASE64:
			case TO_DAYS:
			case TO_SECONDS:
			case TP_CONNECTION_ADMIN:
			case UCASE:
			case UNCOMPRESS:
			case UNCOMPRESSED_LENGTH:
			case UNHEX:
			case UNIX_TIMESTAMP:
			case UPDATEXML:
			case UPPER:
			case UUID:
			case UUID_SHORT:
			case VALIDATE_PASSWORD_STRENGTH:
			case VERSION:
			case VERSIONING:
			case WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS:
			case WEEKDAY:
			case WEEKOFYEAR:
			case WEIGHT_STRING:
			case WITHIN:
			case YEARWEEK:
			case Y_FUNCTION:
			case X_FUNCTION:
			case VIA:
			case LASTVAL:
			case NEXTVAL:
			case SETVAL:
			case PREVIOUS:
			case PERSISTENT:
			case BINLOG_MONITOR:
			case BINLOG_REPLAY:
			case FEDERATED_ADMIN:
			case READ_ONLY_ADMIN:
			case REPLICA:
			case REPLICATION_MASTER_ADMIN:
			case MONITOR:
			case READ_ONLY:
			case REPLAY:
			case MOD:
			case CHARSET_REVERSE_QOUTE_STRING:
			case STRING_LITERAL:
			case ID:
				enterOuterAlt(_localctx, 1);
				{
				setState(3815);
				uid();
				}
				break;
			case LOCAL_ID:
				enterOuterAlt(_localctx, 2);
				{
				setState(3816);
				match(LOCAL_ID);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class LockClauseContext extends ParserRuleContext {
		public TerminalNode FOR() { return getToken(MySqlParser.FOR, 0); }
		public TerminalNode UPDATE() { return getToken(MySqlParser.UPDATE, 0); }
		public TerminalNode LOCK() { return getToken(MySqlParser.LOCK, 0); }
		public TerminalNode IN() { return getToken(MySqlParser.IN, 0); }
		public TerminalNode SHARE() { return getToken(MySqlParser.SHARE, 0); }
		public TerminalNode MODE() { return getToken(MySqlParser.MODE, 0); }
		public LockOptionContext lockOption() {
			return getRuleContext(LockOptionContext.class,0);
		}
		public LockClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_lockClause; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterLockClause(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitLockClause(this);
		}
	}

	public final LockClauseContext lockClause() throws RecognitionException {
		LockClauseContext _localctx = new LockClauseContext(_ctx, getState());
		enterRule(_localctx, 230, RULE_lockClause);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3825);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case FOR:
				{
				setState(3819);
				match(FOR);
				setState(3820);
				match(UPDATE);
				}
				break;
			case LOCK:
				{
				setState(3821);
				match(LOCK);
				setState(3822);
				match(IN);
				setState(3823);
				match(SHARE);
				setState(3824);
				match(MODE);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			setState(3828);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,549,_ctx) ) {
			case 1:
				{
				setState(3827);
				lockOption();
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SingleDeleteStatementContext extends ParserRuleContext {
		public Token priority;
		public TerminalNode DELETE() { return getToken(MySqlParser.DELETE, 0); }
		public TerminalNode FROM() { return getToken(MySqlParser.FROM, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public TerminalNode QUICK() { return getToken(MySqlParser.QUICK, 0); }
		public TerminalNode IGNORE() { return getToken(MySqlParser.IGNORE, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode PARTITION() { return getToken(MySqlParser.PARTITION, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public UidListContext uidList() {
			return getRuleContext(UidListContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TerminalNode WHERE() { return getToken(MySqlParser.WHERE, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public OrderByClauseContext orderByClause() {
			return getRuleContext(OrderByClauseContext.class,0);
		}
		public TerminalNode LIMIT() { return getToken(MySqlParser.LIMIT, 0); }
		public LimitClauseAtomContext limitClauseAtom() {
			return getRuleContext(LimitClauseAtomContext.class,0);
		}
		public TerminalNode LOW_PRIORITY() { return getToken(MySqlParser.LOW_PRIORITY, 0); }
		public TerminalNode AS() { return getToken(MySqlParser.AS, 0); }
		public SingleDeleteStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_singleDeleteStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSingleDeleteStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSingleDeleteStatement(this);
		}
	}

	public final SingleDeleteStatementContext singleDeleteStatement() throws RecognitionException {
		SingleDeleteStatementContext _localctx = new SingleDeleteStatementContext(_ctx, getState());
		enterRule(_localctx, 232, RULE_singleDeleteStatement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3830);
			match(DELETE);
			setState(3832);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LOW_PRIORITY) {
				{
				setState(3831);
				((SingleDeleteStatementContext)_localctx).priority = match(LOW_PRIORITY);
				}
			}

			setState(3835);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==QUICK) {
				{
				setState(3834);
				match(QUICK);
				}
			}

			setState(3838);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IGNORE) {
				{
				setState(3837);
				match(IGNORE);
				}
			}

			setState(3840);
			match(FROM);
			setState(3841);
			tableName();
			setState(3846);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,554,_ctx) ) {
			case 1:
				{
				setState(3843);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==AS) {
					{
					setState(3842);
					match(AS);
					}
				}

				setState(3845);
				uid();
				}
				break;
			}
			setState(3853);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==PARTITION) {
				{
				setState(3848);
				match(PARTITION);
				setState(3849);
				match(LR_BRACKET);
				setState(3850);
				uidList();
				setState(3851);
				match(RR_BRACKET);
				}
			}

			setState(3857);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WHERE) {
				{
				setState(3855);
				match(WHERE);
				setState(3856);
				expression(0);
				}
			}

			setState(3860);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ORDER) {
				{
				setState(3859);
				orderByClause();
				}
			}

			setState(3864);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LIMIT) {
				{
				setState(3862);
				match(LIMIT);
				setState(3863);
				limitClauseAtom();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class MultipleDeleteStatementContext extends ParserRuleContext {
		public Token priority;
		public TerminalNode DELETE() { return getToken(MySqlParser.DELETE, 0); }
		public List tableName() {
			return getRuleContexts(TableNameContext.class);
		}
		public TableNameContext tableName(int i) {
			return getRuleContext(TableNameContext.class,i);
		}
		public TerminalNode FROM() { return getToken(MySqlParser.FROM, 0); }
		public TableSourcesContext tableSources() {
			return getRuleContext(TableSourcesContext.class,0);
		}
		public TerminalNode USING() { return getToken(MySqlParser.USING, 0); }
		public TerminalNode QUICK() { return getToken(MySqlParser.QUICK, 0); }
		public TerminalNode IGNORE() { return getToken(MySqlParser.IGNORE, 0); }
		public TerminalNode WHERE() { return getToken(MySqlParser.WHERE, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode LOW_PRIORITY() { return getToken(MySqlParser.LOW_PRIORITY, 0); }
		public List DOT() { return getTokens(MySqlParser.DOT); }
		public TerminalNode DOT(int i) {
			return getToken(MySqlParser.DOT, i);
		}
		public List STAR() { return getTokens(MySqlParser.STAR); }
		public TerminalNode STAR(int i) {
			return getToken(MySqlParser.STAR, i);
		}
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public MultipleDeleteStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_multipleDeleteStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterMultipleDeleteStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitMultipleDeleteStatement(this);
		}
	}

	public final MultipleDeleteStatementContext multipleDeleteStatement() throws RecognitionException {
		MultipleDeleteStatementContext _localctx = new MultipleDeleteStatementContext(_ctx, getState());
		enterRule(_localctx, 234, RULE_multipleDeleteStatement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3866);
			match(DELETE);
			setState(3868);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LOW_PRIORITY) {
				{
				setState(3867);
				((MultipleDeleteStatementContext)_localctx).priority = match(LOW_PRIORITY);
				}
			}

			setState(3871);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,560,_ctx) ) {
			case 1:
				{
				setState(3870);
				match(QUICK);
				}
				break;
			}
			setState(3874);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IGNORE) {
				{
				setState(3873);
				match(IGNORE);
				}
			}

			setState(3915);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case ARRAY:
			case ATTRIBUTE:
			case BUCKETS:
			case CONDITION:
			case CURRENT:
			case CURRENT_ROLE:
			case CURRENT_USER:
			case DATABASE:
			case DEFAULT:
			case DIAGNOSTICS:
			case EMPTY:
			case ENFORCED:
			case EXCEPT:
			case GROUP:
			case GROUP_REPLICATION_STREAM:
			case IF:
			case IGNORED:
			case INSERT:
			case LATERAL:
			case LEFT:
			case LOCKED:
			case MAXVALUE:
			case MINVALUE:
			case NUMBER:
			case OPTIONAL:
			case ORDER:
			case PRIMARY:
			case REPEAT:
			case REPLACE:
			case RIGHT:
			case SCHEMA:
			case SKIP_:
			case SKIP_QUERY_REWRITE:
			case STACKED:
			case STATEMENT:
			case DATE:
			case TIME:
			case TIMESTAMP:
			case DATETIME:
			case YEAR:
			case NATIONAL:
			case BINARY:
			case TEXT:
			case ENUM:
			case SERIAL:
			case JSON_ARRAY:
			case JSON_ARRAYAGG:
			case JSON_ARRAY_APPEND:
			case JSON_ARRAY_INSERT:
			case JSON_CONTAINS:
			case JSON_CONTAINS_PATH:
			case JSON_DEPTH:
			case JSON_EXTRACT:
			case JSON_INSERT:
			case JSON_KEYS:
			case JSON_LENGTH:
			case JSON_MERGE:
			case JSON_MERGE_PATCH:
			case JSON_MERGE_PRESERVE:
			case JSON_OBJECT:
			case JSON_OBJECTAGG:
			case JSON_OVERLAPS:
			case JSON_PRETTY:
			case JSON_QUOTE:
			case JSON_REMOVE:
			case JSON_REPLACE:
			case JSON_SCHEMA_VALID:
			case JSON_SCHEMA_VALIDATION_REPORT:
			case JSON_SEARCH:
			case JSON_SET:
			case JSON_STORAGE_FREE:
			case JSON_STORAGE_SIZE:
			case JSON_TABLE:
			case JSON_TYPE:
			case JSON_UNQUOTE:
			case JSON_VALID:
			case JSON_VALUE:
			case NESTED:
			case ORDINALITY:
			case PATH:
			case AVG:
			case BIT_AND:
			case BIT_OR:
			case BIT_XOR:
			case COUNT:
			case CUME_DIST:
			case DENSE_RANK:
			case FIRST_VALUE:
			case GROUP_CONCAT:
			case LAG:
			case LAST_VALUE:
			case LEAD:
			case MAX:
			case MIN:
			case NTILE:
			case NTH_VALUE:
			case PERCENT_RANK:
			case RANK:
			case ROW_NUMBER:
			case STD:
			case STDDEV:
			case STDDEV_POP:
			case STDDEV_SAMP:
			case SUM:
			case VAR_POP:
			case VAR_SAMP:
			case VARIANCE:
			case CURRENT_DATE:
			case CURRENT_TIME:
			case CURRENT_TIMESTAMP:
			case LOCALTIME:
			case CURDATE:
			case CURTIME:
			case DATE_ADD:
			case DATE_SUB:
			case LOCALTIMESTAMP:
			case NOW:
			case POSITION:
			case SUBSTR:
			case SUBSTRING:
			case SYSDATE:
			case TRIM:
			case UTC_DATE:
			case UTC_TIME:
			case UTC_TIMESTAMP:
			case ACCOUNT:
			case ACTION:
			case AFTER:
			case AGGREGATE:
			case ALGORITHM:
			case ANY:
			case AT:
			case AUTHORS:
			case AUTOCOMMIT:
			case AUTOEXTEND_SIZE:
			case AUTO_INCREMENT:
			case AVG_ROW_LENGTH:
			case BEGIN:
			case BINLOG:
			case BIT:
			case BLOCK:
			case BOOL:
			case BOOLEAN:
			case BTREE:
			case CACHE:
			case CASCADED:
			case CHAIN:
			case CHANGED:
			case CHANNEL:
			case CHECKSUM:
			case PAGE_CHECKSUM:
			case CIPHER:
			case CLASS_ORIGIN:
			case CLIENT:
			case CLOSE:
			case CLUSTERING:
			case COALESCE:
			case CODE:
			case COLUMNS:
			case COLUMN_FORMAT:
			case COLUMN_NAME:
			case COMMENT:
			case COMMIT:
			case COMPACT:
			case COMPLETION:
			case COMPRESSED:
			case COMPRESSION:
			case CONCURRENT:
			case CONNECT:
			case CONNECTION:
			case CONSISTENT:
			case CONSTRAINT_CATALOG:
			case CONSTRAINT_SCHEMA:
			case CONSTRAINT_NAME:
			case CONTAINS:
			case CONTEXT:
			case CONTRIBUTORS:
			case COPY:
			case CPU:
			case CYCLE:
			case CURSOR_NAME:
			case DATA:
			case DATAFILE:
			case DEALLOCATE:
			case DEFAULT_AUTH:
			case DEFINER:
			case DELAY_KEY_WRITE:
			case DES_KEY_FILE:
			case DIRECTORY:
			case DISABLE:
			case DISCARD:
			case DISK:
			case DO:
			case DUMPFILE:
			case DUPLICATE:
			case DYNAMIC:
			case ENABLE:
			case ENCRYPTED:
			case ENCRYPTION:
			case ENCRYPTION_KEY_ID:
			case END:
			case ENDS:
			case ENGINE:
			case ENGINES:
			case ERROR:
			case ERRORS:
			case ESCAPE:
			case EVEN:
			case EVENT:
			case EVENTS:
			case EVERY:
			case EXCHANGE:
			case EXCLUSIVE:
			case EXPIRE:
			case EXPORT:
			case EXTENDED:
			case EXTENT_SIZE:
			case FAILED_LOGIN_ATTEMPTS:
			case FAST:
			case FAULTS:
			case FIELDS:
			case FILE_BLOCK_SIZE:
			case FILTER:
			case FIRST:
			case FIXED:
			case FLUSH:
			case FOLLOWS:
			case FOUND:
			case FULL:
			case FUNCTION:
			case GENERAL:
			case GLOBAL:
			case GRANTS:
			case GROUP_REPLICATION:
			case HANDLER:
			case HASH:
			case HELP:
			case HISTORY:
			case HOST:
			case HOSTS:
			case IDENTIFIED:
			case IGNORE_SERVER_IDS:
			case IMPORT:
			case INCREMENT:
			case INDEXES:
			case INITIAL_SIZE:
			case INPLACE:
			case INSERT_METHOD:
			case INSTALL:
			case INSTANCE:
			case INSTANT:
			case INVISIBLE:
			case INVOKER:
			case IO:
			case IO_THREAD:
			case IPC:
			case ISOLATION:
			case ISSUER:
			case JSON:
			case KEY_BLOCK_SIZE:
			case LANGUAGE:
			case LAST:
			case LEAVES:
			case LESS:
			case LEVEL:
			case LIST:
			case LOCAL:
			case LOGFILE:
			case LOGS:
			case MASTER:
			case MASTER_AUTO_POSITION:
			case MASTER_CONNECT_RETRY:
			case MASTER_DELAY:
			case MASTER_HEARTBEAT_PERIOD:
			case MASTER_HOST:
			case MASTER_LOG_FILE:
			case MASTER_LOG_POS:
			case MASTER_PASSWORD:
			case MASTER_PORT:
			case MASTER_RETRY_COUNT:
			case MASTER_SSL:
			case MASTER_SSL_CA:
			case MASTER_SSL_CAPATH:
			case MASTER_SSL_CERT:
			case MASTER_SSL_CIPHER:
			case MASTER_SSL_CRL:
			case MASTER_SSL_CRLPATH:
			case MASTER_SSL_KEY:
			case MASTER_TLS_VERSION:
			case MASTER_USER:
			case MAX_CONNECTIONS_PER_HOUR:
			case MAX_QUERIES_PER_HOUR:
			case MAX_ROWS:
			case MAX_SIZE:
			case MAX_UPDATES_PER_HOUR:
			case MAX_USER_CONNECTIONS:
			case MEDIUM:
			case MEMBER:
			case MERGE:
			case MESSAGE_TEXT:
			case MID:
			case MIGRATE:
			case MIN_ROWS:
			case MODE:
			case MODIFY:
			case MUTEX:
			case MYSQL:
			case MYSQL_ERRNO:
			case NAME:
			case NAMES:
			case NCHAR:
			case NEVER:
			case NEXT:
			case NO:
			case NOCACHE:
			case NOCOPY:
			case NOCYCLE:
			case NOMAXVALUE:
			case NOMINVALUE:
			case NOWAIT:
			case NODEGROUP:
			case NONE:
			case ODBC:
			case OFFLINE:
			case OFFSET:
			case OF:
			case OJ:
			case OLD_PASSWORD:
			case ONE:
			case ONLINE:
			case ONLY:
			case OPEN:
			case OPTIMIZER_COSTS:
			case OPTIONS:
			case OWNER:
			case PACK_KEYS:
			case PAGE:
			case PARSER:
			case PARTIAL:
			case PARTITIONING:
			case PARTITIONS:
			case PASSWORD:
			case PASSWORD_LOCK_TIME:
			case PHASE:
			case PLUGIN:
			case PLUGIN_DIR:
			case PLUGINS:
			case PORT:
			case PRECEDES:
			case PREPARE:
			case PRESERVE:
			case PREV:
			case PROCESSLIST:
			case PROFILE:
			case PROFILES:
			case PROXY:
			case QUERY:
			case QUICK:
			case REBUILD:
			case RECOVER:
			case RECURSIVE:
			case REDO_BUFFER_SIZE:
			case REDUNDANT:
			case RELAY:
			case RELAY_LOG_FILE:
			case RELAY_LOG_POS:
			case RELAYLOG:
			case REMOVE:
			case REORGANIZE:
			case REPAIR:
			case REPLICATE_DO_DB:
			case REPLICATE_DO_TABLE:
			case REPLICATE_IGNORE_DB:
			case REPLICATE_IGNORE_TABLE:
			case REPLICATE_REWRITE_DB:
			case REPLICATE_WILD_DO_TABLE:
			case REPLICATE_WILD_IGNORE_TABLE:
			case REPLICATION:
			case RESET:
			case RESTART:
			case RESUME:
			case RETURNED_SQLSTATE:
			case RETURNING:
			case RETURNS:
			case REUSE:
			case ROLE:
			case ROLLBACK:
			case ROLLUP:
			case ROTATE:
			case ROW:
			case ROWS:
			case ROW_FORMAT:
			case RTREE:
			case SAVEPOINT:
			case SCHEDULE:
			case SECURITY:
			case SEQUENCE:
			case SERVER:
			case SESSION:
			case SHARE:
			case SHARED:
			case SIGNED:
			case SIMPLE:
			case SLAVE:
			case SLOW:
			case SNAPSHOT:
			case SOCKET:
			case SOME:
			case SONAME:
			case SOUNDS:
			case SOURCE:
			case SQL_AFTER_GTIDS:
			case SQL_AFTER_MTS_GAPS:
			case SQL_BEFORE_GTIDS:
			case SQL_BUFFER_RESULT:
			case SQL_CACHE:
			case SQL_NO_CACHE:
			case SQL_THREAD:
			case START:
			case STARTS:
			case STATS_AUTO_RECALC:
			case STATS_PERSISTENT:
			case STATS_SAMPLE_PAGES:
			case STATUS:
			case STOP:
			case STORAGE:
			case STRING:
			case SUBCLASS_ORIGIN:
			case SUBJECT:
			case SUBPARTITION:
			case SUBPARTITIONS:
			case SUSPEND:
			case SWAPS:
			case SWITCHES:
			case TABLE_NAME:
			case TABLESPACE:
			case TABLE_TYPE:
			case TEMPORARY:
			case TEMPTABLE:
			case THAN:
			case TRADITIONAL:
			case TRANSACTION:
			case TRANSACTIONAL:
			case TRIGGERS:
			case TRUNCATE:
			case UNBOUNDED:
			case UNDEFINED:
			case UNDOFILE:
			case UNDO_BUFFER_SIZE:
			case UNINSTALL:
			case UNKNOWN:
			case UNTIL:
			case UPGRADE:
			case USER:
			case USE_FRM:
			case USER_RESOURCES:
			case VALIDATION:
			case VALUE:
			case VARIABLES:
			case VIEW:
			case VIRTUAL:
			case VISIBLE:
			case WAIT:
			case WARNINGS:
			case WITHOUT:
			case WORK:
			case WRAPPER:
			case X509:
			case XA:
			case XML:
			case YES:
			case EUR:
			case USA:
			case JIS:
			case ISO:
			case INTERNAL:
			case QUARTER:
			case MONTH:
			case DAY:
			case HOUR:
			case MINUTE:
			case WEEK:
			case SECOND:
			case MICROSECOND:
			case USER_STATISTICS:
			case CLIENT_STATISTICS:
			case INDEX_STATISTICS:
			case TABLE_STATISTICS:
			case FIREWALL_RULES:
			case ADMIN:
			case APPLICATION_PASSWORD_ADMIN:
			case AUDIT_ADMIN:
			case AUDIT_ABORT_EXEMPT:
			case AUTHENTICATION_POLICY_ADMIN:
			case BACKUP_ADMIN:
			case BINLOG_ADMIN:
			case BINLOG_ENCRYPTION_ADMIN:
			case CLONE_ADMIN:
			case CONNECTION_ADMIN:
			case ENCRYPTION_KEY_ADMIN:
			case EXECUTE:
			case FILE:
			case FIREWALL_ADMIN:
			case FIREWALL_EXEMPT:
			case FIREWALL_USER:
			case FLUSH_OPTIMIZER_COSTS:
			case FLUSH_STATUS:
			case FLUSH_TABLES:
			case FLUSH_USER_RESOURCES:
			case GROUP_REPLICATION_ADMIN:
			case INNODB_REDO_LOG_ARCHIVE:
			case INNODB_REDO_LOG_ENABLE:
			case INVOKE:
			case LAMBDA:
			case NDB_STORED_USER:
			case PASSWORDLESS_USER_ADMIN:
			case PERSIST_RO_VARIABLES_ADMIN:
			case PRIVILEGES:
			case PROCESS:
			case RELOAD:
			case REPLICATION_APPLIER:
			case REPLICATION_SLAVE_ADMIN:
			case RESOURCE_GROUP_ADMIN:
			case RESOURCE_GROUP_USER:
			case ROLE_ADMIN:
			case ROUTINE:
			case S3:
			case SESSION_VARIABLES_ADMIN:
			case SET_USER_ID:
			case SHOW_ROUTINE:
			case SHUTDOWN:
			case SUPER:
			case SYSTEM_VARIABLES_ADMIN:
			case TABLES:
			case TABLE_ENCRYPTION_ADMIN:
			case VERSION_TOKEN_ADMIN:
			case XA_RECOVER_ADMIN:
			case ARMSCII8:
			case ASCII:
			case BIG5:
			case CP1250:
			case CP1251:
			case CP1256:
			case CP1257:
			case CP850:
			case CP852:
			case CP866:
			case CP932:
			case DEC8:
			case EUCJPMS:
			case EUCKR:
			case GB18030:
			case GB2312:
			case GBK:
			case GEOSTD8:
			case GREEK:
			case HEBREW:
			case HP8:
			case KEYBCS2:
			case KOI8R:
			case KOI8U:
			case LATIN1:
			case LATIN2:
			case LATIN5:
			case LATIN7:
			case MACCE:
			case MACROMAN:
			case SJIS:
			case SWE7:
			case TIS620:
			case UCS2:
			case UJIS:
			case UTF16:
			case UTF16LE:
			case UTF32:
			case UTF8:
			case UTF8MB3:
			case UTF8MB4:
			case ARCHIVE:
			case BLACKHOLE:
			case CSV:
			case FEDERATED:
			case INNODB:
			case MEMORY:
			case MRG_MYISAM:
			case MYISAM:
			case NDB:
			case NDBCLUSTER:
			case PERFORMANCE_SCHEMA:
			case TOKUDB:
			case REPEATABLE:
			case COMMITTED:
			case UNCOMMITTED:
			case SERIALIZABLE:
			case GEOMETRYCOLLECTION:
			case GEOMETRY:
			case LINESTRING:
			case MULTILINESTRING:
			case MULTIPOINT:
			case MULTIPOLYGON:
			case POINT:
			case POLYGON:
			case ABS:
			case ACOS:
			case ADDDATE:
			case ADDTIME:
			case AES_DECRYPT:
			case AES_ENCRYPT:
			case AREA:
			case ASBINARY:
			case ASIN:
			case ASTEXT:
			case ASWKB:
			case ASWKT:
			case ASYMMETRIC_DECRYPT:
			case ASYMMETRIC_DERIVE:
			case ASYMMETRIC_ENCRYPT:
			case ASYMMETRIC_SIGN:
			case ASYMMETRIC_VERIFY:
			case ATAN:
			case ATAN2:
			case BENCHMARK:
			case BIN:
			case BIT_COUNT:
			case BIT_LENGTH:
			case BUFFER:
			case CATALOG_NAME:
			case CEIL:
			case CEILING:
			case CENTROID:
			case CHARACTER_LENGTH:
			case CHARSET:
			case CHAR_LENGTH:
			case COERCIBILITY:
			case COLLATION:
			case COMPRESS:
			case CONCAT:
			case CONCAT_WS:
			case CONNECTION_ID:
			case CONV:
			case CONVERT_TZ:
			case COS:
			case COT:
			case CRC32:
			case CREATE_ASYMMETRIC_PRIV_KEY:
			case CREATE_ASYMMETRIC_PUB_KEY:
			case CREATE_DH_PARAMETERS:
			case CREATE_DIGEST:
			case CROSSES:
			case DATEDIFF:
			case DATE_FORMAT:
			case DAYNAME:
			case DAYOFMONTH:
			case DAYOFWEEK:
			case DAYOFYEAR:
			case DECODE:
			case DEGREES:
			case DES_DECRYPT:
			case DES_ENCRYPT:
			case DIMENSION:
			case DISJOINT:
			case ELT:
			case ENCODE:
			case ENCRYPT:
			case ENDPOINT:
			case ENGINE_ATTRIBUTE:
			case ENVELOPE:
			case EQUALS:
			case EXP:
			case EXPORT_SET:
			case EXTERIORRING:
			case EXTRACTVALUE:
			case FIELD:
			case FIND_IN_SET:
			case FLOOR:
			case FORMAT:
			case FOUND_ROWS:
			case FROM_BASE64:
			case FROM_DAYS:
			case FROM_UNIXTIME:
			case GEOMCOLLFROMTEXT:
			case GEOMCOLLFROMWKB:
			case GEOMETRYCOLLECTIONFROMTEXT:
			case GEOMETRYCOLLECTIONFROMWKB:
			case GEOMETRYFROMTEXT:
			case GEOMETRYFROMWKB:
			case GEOMETRYN:
			case GEOMETRYTYPE:
			case GEOMFROMTEXT:
			case GEOMFROMWKB:
			case GET_FORMAT:
			case GET_LOCK:
			case GLENGTH:
			case GREATEST:
			case GTID_SUBSET:
			case GTID_SUBTRACT:
			case HEX:
			case IFNULL:
			case INET6_ATON:
			case INET6_NTOA:
			case INET_ATON:
			case INET_NTOA:
			case INSTR:
			case INTERIORRINGN:
			case INTERSECTS:
			case ISCLOSED:
			case ISEMPTY:
			case ISNULL:
			case ISSIMPLE:
			case IS_FREE_LOCK:
			case IS_IPV4:
			case IS_IPV4_COMPAT:
			case IS_IPV4_MAPPED:
			case IS_IPV6:
			case IS_USED_LOCK:
			case LAST_INSERT_ID:
			case LCASE:
			case LEAST:
			case LENGTH:
			case LINEFROMTEXT:
			case LINEFROMWKB:
			case LINESTRINGFROMTEXT:
			case LINESTRINGFROMWKB:
			case LN:
			case LOAD_FILE:
			case LOCATE:
			case LOG:
			case LOG10:
			case LOG2:
			case LOWER:
			case LPAD:
			case LTRIM:
			case MAKEDATE:
			case MAKETIME:
			case MAKE_SET:
			case MASTER_POS_WAIT:
			case MBRCONTAINS:
			case MBRDISJOINT:
			case MBREQUAL:
			case MBRINTERSECTS:
			case MBROVERLAPS:
			case MBRTOUCHES:
			case MBRWITHIN:
			case MD5:
			case MLINEFROMTEXT:
			case MLINEFROMWKB:
			case MONTHNAME:
			case MPOINTFROMTEXT:
			case MPOINTFROMWKB:
			case MPOLYFROMTEXT:
			case MPOLYFROMWKB:
			case MULTILINESTRINGFROMTEXT:
			case MULTILINESTRINGFROMWKB:
			case MULTIPOINTFROMTEXT:
			case MULTIPOINTFROMWKB:
			case MULTIPOLYGONFROMTEXT:
			case MULTIPOLYGONFROMWKB:
			case NAME_CONST:
			case NULLIF:
			case NUMGEOMETRIES:
			case NUMINTERIORRINGS:
			case NUMPOINTS:
			case OCT:
			case OCTET_LENGTH:
			case ORD:
			case OVERLAPS:
			case PERIOD_ADD:
			case PERIOD_DIFF:
			case PI:
			case POINTFROMTEXT:
			case POINTFROMWKB:
			case POINTN:
			case POLYFROMTEXT:
			case POLYFROMWKB:
			case POLYGONFROMTEXT:
			case POLYGONFROMWKB:
			case POW:
			case POWER:
			case QUOTE:
			case RADIANS:
			case RAND:
			case RANDOM:
			case RANDOM_BYTES:
			case RELEASE_LOCK:
			case REVERSE:
			case ROUND:
			case ROW_COUNT:
			case RPAD:
			case RTRIM:
			case SEC_TO_TIME:
			case SECONDARY_ENGINE_ATTRIBUTE:
			case SENSITIVE_VARIABLES_OBSERVER:
			case SESSION_USER:
			case SHA:
			case SHA1:
			case SHA2:
			case SCHEMA_NAME:
			case SIGN:
			case SIN:
			case SLEEP:
			case SOUNDEX:
			case SQL_THREAD_WAIT_AFTER_GTIDS:
			case SQRT:
			case SRID:
			case STARTPOINT:
			case STRCMP:
			case STR_TO_DATE:
			case ST_AREA:
			case ST_ASBINARY:
			case ST_ASTEXT:
			case ST_ASWKB:
			case ST_ASWKT:
			case ST_BUFFER:
			case ST_CENTROID:
			case ST_CONTAINS:
			case ST_CROSSES:
			case ST_DIFFERENCE:
			case ST_DIMENSION:
			case ST_DISJOINT:
			case ST_DISTANCE:
			case ST_ENDPOINT:
			case ST_ENVELOPE:
			case ST_EQUALS:
			case ST_EXTERIORRING:
			case ST_GEOMCOLLFROMTEXT:
			case ST_GEOMCOLLFROMTXT:
			case ST_GEOMCOLLFROMWKB:
			case ST_GEOMETRYCOLLECTIONFROMTEXT:
			case ST_GEOMETRYCOLLECTIONFROMWKB:
			case ST_GEOMETRYFROMTEXT:
			case ST_GEOMETRYFROMWKB:
			case ST_GEOMETRYN:
			case ST_GEOMETRYTYPE:
			case ST_GEOMFROMTEXT:
			case ST_GEOMFROMWKB:
			case ST_INTERIORRINGN:
			case ST_INTERSECTION:
			case ST_INTERSECTS:
			case ST_ISCLOSED:
			case ST_ISEMPTY:
			case ST_ISSIMPLE:
			case ST_LINEFROMTEXT:
			case ST_LINEFROMWKB:
			case ST_LINESTRINGFROMTEXT:
			case ST_LINESTRINGFROMWKB:
			case ST_NUMGEOMETRIES:
			case ST_NUMINTERIORRING:
			case ST_NUMINTERIORRINGS:
			case ST_NUMPOINTS:
			case ST_OVERLAPS:
			case ST_POINTFROMTEXT:
			case ST_POINTFROMWKB:
			case ST_POINTN:
			case ST_POLYFROMTEXT:
			case ST_POLYFROMWKB:
			case ST_POLYGONFROMTEXT:
			case ST_POLYGONFROMWKB:
			case ST_SRID:
			case ST_STARTPOINT:
			case ST_SYMDIFFERENCE:
			case ST_TOUCHES:
			case ST_UNION:
			case ST_WITHIN:
			case ST_X:
			case ST_Y:
			case SUBDATE:
			case SUBSTRING_INDEX:
			case SUBTIME:
			case SYSTEM_USER:
			case SYSTEM:
			case TAN:
			case TELEMETRY_LOG_ADMIN:
			case TIMEDIFF:
			case TIMESTAMPADD:
			case TIMESTAMPDIFF:
			case TIME_FORMAT:
			case TIME_TO_SEC:
			case TOUCHES:
			case TO_BASE64:
			case TO_DAYS:
			case TO_SECONDS:
			case TP_CONNECTION_ADMIN:
			case UCASE:
			case UNCOMPRESS:
			case UNCOMPRESSED_LENGTH:
			case UNHEX:
			case UNIX_TIMESTAMP:
			case UPDATEXML:
			case UPPER:
			case UUID:
			case UUID_SHORT:
			case VALIDATE_PASSWORD_STRENGTH:
			case VERSION:
			case VERSIONING:
			case WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS:
			case WEEKDAY:
			case WEEKOFYEAR:
			case WEIGHT_STRING:
			case WITHIN:
			case YEARWEEK:
			case Y_FUNCTION:
			case X_FUNCTION:
			case VIA:
			case LASTVAL:
			case NEXTVAL:
			case SETVAL:
			case PREVIOUS:
			case PERSISTENT:
			case BINLOG_MONITOR:
			case BINLOG_REPLAY:
			case FEDERATED_ADMIN:
			case READ_ONLY_ADMIN:
			case REPLICA:
			case REPLICATION_MASTER_ADMIN:
			case MONITOR:
			case READ_ONLY:
			case REPLAY:
			case MOD:
			case CHARSET_REVERSE_QOUTE_STRING:
			case STRING_LITERAL:
			case ID:
				{
				setState(3876);
				tableName();
				setState(3879);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==DOT) {
					{
					setState(3877);
					match(DOT);
					setState(3878);
					match(STAR);
					}
				}

				setState(3889);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(3881);
					match(COMMA);
					setState(3882);
					tableName();
					setState(3885);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==DOT) {
						{
						setState(3883);
						match(DOT);
						setState(3884);
						match(STAR);
						}
					}

					}
					}
					setState(3891);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(3892);
				match(FROM);
				setState(3893);
				tableSources();
				}
				break;
			case FROM:
				{
				setState(3895);
				match(FROM);
				setState(3896);
				tableName();
				setState(3899);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==DOT) {
					{
					setState(3897);
					match(DOT);
					setState(3898);
					match(STAR);
					}
				}

				setState(3909);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(3901);
					match(COMMA);
					setState(3902);
					tableName();
					setState(3905);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==DOT) {
						{
						setState(3903);
						match(DOT);
						setState(3904);
						match(STAR);
						}
					}

					}
					}
					setState(3911);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(3912);
				match(USING);
				setState(3913);
				tableSources();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			setState(3919);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WHERE) {
				{
				setState(3917);
				match(WHERE);
				setState(3918);
				expression(0);
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class HandlerOpenStatementContext extends ParserRuleContext {
		public TerminalNode HANDLER() { return getToken(MySqlParser.HANDLER, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public TerminalNode OPEN() { return getToken(MySqlParser.OPEN, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode AS() { return getToken(MySqlParser.AS, 0); }
		public HandlerOpenStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_handlerOpenStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterHandlerOpenStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitHandlerOpenStatement(this);
		}
	}

	public final HandlerOpenStatementContext handlerOpenStatement() throws RecognitionException {
		HandlerOpenStatementContext _localctx = new HandlerOpenStatementContext(_ctx, getState());
		enterRule(_localctx, 236, RULE_handlerOpenStatement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3921);
			match(HANDLER);
			setState(3922);
			tableName();
			setState(3923);
			match(OPEN);
			setState(3928);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,571,_ctx) ) {
			case 1:
				{
				setState(3925);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==AS) {
					{
					setState(3924);
					match(AS);
					}
				}

				setState(3927);
				uid();
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class HandlerReadIndexStatementContext extends ParserRuleContext {
		public UidContext index;
		public Token moveOrder;
		public TerminalNode HANDLER() { return getToken(MySqlParser.HANDLER, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public TerminalNode READ() { return getToken(MySqlParser.READ, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public ComparisonOperatorContext comparisonOperator() {
			return getRuleContext(ComparisonOperatorContext.class,0);
		}
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public ConstantsContext constants() {
			return getRuleContext(ConstantsContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TerminalNode WHERE() { return getToken(MySqlParser.WHERE, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode LIMIT() { return getToken(MySqlParser.LIMIT, 0); }
		public LimitClauseAtomContext limitClauseAtom() {
			return getRuleContext(LimitClauseAtomContext.class,0);
		}
		public TerminalNode FIRST() { return getToken(MySqlParser.FIRST, 0); }
		public TerminalNode NEXT() { return getToken(MySqlParser.NEXT, 0); }
		public TerminalNode PREV() { return getToken(MySqlParser.PREV, 0); }
		public TerminalNode LAST() { return getToken(MySqlParser.LAST, 0); }
		public HandlerReadIndexStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_handlerReadIndexStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterHandlerReadIndexStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitHandlerReadIndexStatement(this);
		}
	}

	public final HandlerReadIndexStatementContext handlerReadIndexStatement() throws RecognitionException {
		HandlerReadIndexStatementContext _localctx = new HandlerReadIndexStatementContext(_ctx, getState());
		enterRule(_localctx, 238, RULE_handlerReadIndexStatement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3930);
			match(HANDLER);
			setState(3931);
			tableName();
			setState(3932);
			match(READ);
			setState(3933);
			((HandlerReadIndexStatementContext)_localctx).index = uid();
			setState(3940);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case EQUAL_SYMBOL:
			case GREATER_SYMBOL:
			case LESS_SYMBOL:
			case EXCLAMATION_SYMBOL:
				{
				setState(3934);
				comparisonOperator();
				setState(3935);
				match(LR_BRACKET);
				setState(3936);
				constants();
				setState(3937);
				match(RR_BRACKET);
				}
				break;
			case FIRST:
			case LAST:
			case NEXT:
			case PREV:
				{
				setState(3939);
				((HandlerReadIndexStatementContext)_localctx).moveOrder = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==FIRST || _la==LAST || _la==NEXT || _la==PREV) ) {
					((HandlerReadIndexStatementContext)_localctx).moveOrder = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			setState(3944);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WHERE) {
				{
				setState(3942);
				match(WHERE);
				setState(3943);
				expression(0);
				}
			}

			setState(3948);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LIMIT) {
				{
				setState(3946);
				match(LIMIT);
				setState(3947);
				limitClauseAtom();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class HandlerReadStatementContext extends ParserRuleContext {
		public Token moveOrder;
		public TerminalNode HANDLER() { return getToken(MySqlParser.HANDLER, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public TerminalNode READ() { return getToken(MySqlParser.READ, 0); }
		public TerminalNode FIRST() { return getToken(MySqlParser.FIRST, 0); }
		public TerminalNode NEXT() { return getToken(MySqlParser.NEXT, 0); }
		public TerminalNode WHERE() { return getToken(MySqlParser.WHERE, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode LIMIT() { return getToken(MySqlParser.LIMIT, 0); }
		public LimitClauseAtomContext limitClauseAtom() {
			return getRuleContext(LimitClauseAtomContext.class,0);
		}
		public HandlerReadStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_handlerReadStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterHandlerReadStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitHandlerReadStatement(this);
		}
	}

	public final HandlerReadStatementContext handlerReadStatement() throws RecognitionException {
		HandlerReadStatementContext _localctx = new HandlerReadStatementContext(_ctx, getState());
		enterRule(_localctx, 240, RULE_handlerReadStatement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3950);
			match(HANDLER);
			setState(3951);
			tableName();
			setState(3952);
			match(READ);
			setState(3953);
			((HandlerReadStatementContext)_localctx).moveOrder = _input.LT(1);
			_la = _input.LA(1);
			if ( !(_la==FIRST || _la==NEXT) ) {
				((HandlerReadStatementContext)_localctx).moveOrder = (Token)_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(3956);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WHERE) {
				{
				setState(3954);
				match(WHERE);
				setState(3955);
				expression(0);
				}
			}

			setState(3960);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LIMIT) {
				{
				setState(3958);
				match(LIMIT);
				setState(3959);
				limitClauseAtom();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class HandlerCloseStatementContext extends ParserRuleContext {
		public TerminalNode HANDLER() { return getToken(MySqlParser.HANDLER, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public TerminalNode CLOSE() { return getToken(MySqlParser.CLOSE, 0); }
		public HandlerCloseStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_handlerCloseStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterHandlerCloseStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitHandlerCloseStatement(this);
		}
	}

	public final HandlerCloseStatementContext handlerCloseStatement() throws RecognitionException {
		HandlerCloseStatementContext _localctx = new HandlerCloseStatementContext(_ctx, getState());
		enterRule(_localctx, 242, RULE_handlerCloseStatement);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3962);
			match(HANDLER);
			setState(3963);
			tableName();
			setState(3964);
			match(CLOSE);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SingleUpdateStatementContext extends ParserRuleContext {
		public Token priority;
		public TerminalNode UPDATE() { return getToken(MySqlParser.UPDATE, 0); }
		public TableSourcesContext tableSources() {
			return getRuleContext(TableSourcesContext.class,0);
		}
		public TerminalNode SET() { return getToken(MySqlParser.SET, 0); }
		public List updatedElement() {
			return getRuleContexts(UpdatedElementContext.class);
		}
		public UpdatedElementContext updatedElement(int i) {
			return getRuleContext(UpdatedElementContext.class,i);
		}
		public TerminalNode IGNORE() { return getToken(MySqlParser.IGNORE, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public TerminalNode WHERE() { return getToken(MySqlParser.WHERE, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public OrderByClauseContext orderByClause() {
			return getRuleContext(OrderByClauseContext.class,0);
		}
		public LimitClauseContext limitClause() {
			return getRuleContext(LimitClauseContext.class,0);
		}
		public TerminalNode LOW_PRIORITY() { return getToken(MySqlParser.LOW_PRIORITY, 0); }
		public TerminalNode AS() { return getToken(MySqlParser.AS, 0); }
		public SingleUpdateStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_singleUpdateStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSingleUpdateStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSingleUpdateStatement(this);
		}
	}

	public final SingleUpdateStatementContext singleUpdateStatement() throws RecognitionException {
		SingleUpdateStatementContext _localctx = new SingleUpdateStatementContext(_ctx, getState());
		enterRule(_localctx, 244, RULE_singleUpdateStatement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3966);
			match(UPDATE);
			setState(3968);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LOW_PRIORITY) {
				{
				setState(3967);
				((SingleUpdateStatementContext)_localctx).priority = match(LOW_PRIORITY);
				}
			}

			setState(3971);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IGNORE) {
				{
				setState(3970);
				match(IGNORE);
				}
			}

			setState(3973);
			tableSources();
			setState(3978);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ARRAY) | (1L << AS) | (1L << ATTRIBUTE) | (1L << BUCKETS) | (1L << CONDITION) | (1L << CURRENT) | (1L << CURRENT_ROLE) | (1L << CURRENT_USER) | (1L << DATABASE) | (1L << DEFAULT) | (1L << DIAGNOSTICS) | (1L << EMPTY) | (1L << ENFORCED) | (1L << EXCEPT))) != 0) || ((((_la - 74)) & ~0x3f) == 0 && ((1L << (_la - 74)) & ((1L << (GROUP - 74)) | (1L << (GROUP_REPLICATION_STREAM - 74)) | (1L << (IF - 74)) | (1L << (IGNORED - 74)) | (1L << (INSERT - 74)) | (1L << (LATERAL - 74)) | (1L << (LEFT - 74)) | (1L << (LOCKED - 74)) | (1L << (MAXVALUE - 74)) | (1L << (MINVALUE - 74)) | (1L << (NUMBER - 74)) | (1L << (OPTIONAL - 74)) | (1L << (ORDER - 74)) | (1L << (PRIMARY - 74)))) != 0) || ((((_la - 142)) & ~0x3f) == 0 && ((1L << (_la - 142)) & ((1L << (REPEAT - 142)) | (1L << (REPLACE - 142)) | (1L << (RIGHT - 142)) | (1L << (SCHEMA - 142)) | (1L << (SKIP_ - 142)) | (1L << (SKIP_QUERY_REWRITE - 142)) | (1L << (STACKED - 142)) | (1L << (STATEMENT - 142)))) != 0) || ((((_la - 220)) & ~0x3f) == 0 && ((1L << (_la - 220)) & ((1L << (DATE - 220)) | (1L << (TIME - 220)) | (1L << (TIMESTAMP - 220)) | (1L << (DATETIME - 220)) | (1L << (YEAR - 220)) | (1L << (NATIONAL - 220)) | (1L << (BINARY - 220)) | (1L << (TEXT - 220)) | (1L << (ENUM - 220)) | (1L << (SERIAL - 220)) | (1L << (JSON_ARRAY - 220)) | (1L << (JSON_ARRAYAGG - 220)) | (1L << (JSON_ARRAY_APPEND - 220)) | (1L << (JSON_ARRAY_INSERT - 220)) | (1L << (JSON_CONTAINS - 220)) | (1L << (JSON_CONTAINS_PATH - 220)) | (1L << (JSON_DEPTH - 220)) | (1L << (JSON_EXTRACT - 220)) | (1L << (JSON_INSERT - 220)) | (1L << (JSON_KEYS - 220)) | (1L << (JSON_LENGTH - 220)) | (1L << (JSON_MERGE - 220)) | (1L << (JSON_MERGE_PATCH - 220)) | (1L << (JSON_MERGE_PRESERVE - 220)) | (1L << (JSON_OBJECT - 220)) | (1L << (JSON_OBJECTAGG - 220)) | (1L << (JSON_OVERLAPS - 220)) | (1L << (JSON_PRETTY - 220)) | (1L << (JSON_QUOTE - 220)) | (1L << (JSON_REMOVE - 220)) | (1L << (JSON_REPLACE - 220)) | (1L << (JSON_SCHEMA_VALID - 220)) | (1L << (JSON_SCHEMA_VALIDATION_REPORT - 220)) | (1L << (JSON_SEARCH - 220)) | (1L << (JSON_SET - 220)) | (1L << (JSON_STORAGE_FREE - 220)) | (1L << (JSON_STORAGE_SIZE - 220)) | (1L << (JSON_TABLE - 220)) | (1L << (JSON_TYPE - 220)) | (1L << (JSON_UNQUOTE - 220)))) != 0) || ((((_la - 284)) & ~0x3f) == 0 && ((1L << (_la - 284)) & ((1L << (JSON_VALID - 284)) | (1L << (JSON_VALUE - 284)) | (1L << (NESTED - 284)) | (1L << (ORDINALITY - 284)) | (1L << (PATH - 284)) | (1L << (AVG - 284)) | (1L << (BIT_AND - 284)) | (1L << (BIT_OR - 284)) | (1L << (BIT_XOR - 284)) | (1L << (COUNT - 284)) | (1L << (CUME_DIST - 284)) | (1L << (DENSE_RANK - 284)) | (1L << (FIRST_VALUE - 284)) | (1L << (GROUP_CONCAT - 284)) | (1L << (LAG - 284)) | (1L << (LAST_VALUE - 284)) | (1L << (LEAD - 284)) | (1L << (MAX - 284)) | (1L << (MIN - 284)) | (1L << (NTILE - 284)) | (1L << (NTH_VALUE - 284)) | (1L << (PERCENT_RANK - 284)) | (1L << (RANK - 284)) | (1L << (ROW_NUMBER - 284)) | (1L << (STD - 284)) | (1L << (STDDEV - 284)) | (1L << (STDDEV_POP - 284)) | (1L << (STDDEV_SAMP - 284)) | (1L << (SUM - 284)) | (1L << (VAR_POP - 284)) | (1L << (VAR_SAMP - 284)) | (1L << (VARIANCE - 284)) | (1L << (CURRENT_DATE - 284)) | (1L << (CURRENT_TIME - 284)) | (1L << (CURRENT_TIMESTAMP - 284)) | (1L << (LOCALTIME - 284)) | (1L << (CURDATE - 284)) | (1L << (CURTIME - 284)) | (1L << (DATE_ADD - 284)) | (1L << (DATE_SUB - 284)) | (1L << (LOCALTIMESTAMP - 284)) | (1L << (NOW - 284)) | (1L << (POSITION - 284)) | (1L << (SUBSTR - 284)) | (1L << (SUBSTRING - 284)) | (1L << (SYSDATE - 284)) | (1L << (TRIM - 284)) | (1L << (UTC_DATE - 284)) | (1L << (UTC_TIME - 284)) | (1L << (UTC_TIMESTAMP - 284)) | (1L << (ACCOUNT - 284)) | (1L << (ACTION - 284)) | (1L << (AFTER - 284)) | (1L << (AGGREGATE - 284)) | (1L << (ALGORITHM - 284)) | (1L << (ANY - 284)) | (1L << (AT - 284)) | (1L << (AUTHORS - 284)) | (1L << (AUTOCOMMIT - 284)) | (1L << (AUTOEXTEND_SIZE - 284)) | (1L << (AUTO_INCREMENT - 284)) | (1L << (AVG_ROW_LENGTH - 284)) | (1L << (BEGIN - 284)))) != 0) || ((((_la - 348)) & ~0x3f) == 0 && ((1L << (_la - 348)) & ((1L << (BINLOG - 348)) | (1L << (BIT - 348)) | (1L << (BLOCK - 348)) | (1L << (BOOL - 348)) | (1L << (BOOLEAN - 348)) | (1L << (BTREE - 348)) | (1L << (CACHE - 348)) | (1L << (CASCADED - 348)) | (1L << (CHAIN - 348)) | (1L << (CHANGED - 348)) | (1L << (CHANNEL - 348)) | (1L << (CHECKSUM - 348)) | (1L << (PAGE_CHECKSUM - 348)) | (1L << (CIPHER - 348)) | (1L << (CLASS_ORIGIN - 348)) | (1L << (CLIENT - 348)) | (1L << (CLOSE - 348)) | (1L << (CLUSTERING - 348)) | (1L << (COALESCE - 348)) | (1L << (CODE - 348)) | (1L << (COLUMNS - 348)) | (1L << (COLUMN_FORMAT - 348)) | (1L << (COLUMN_NAME - 348)) | (1L << (COMMENT - 348)) | (1L << (COMMIT - 348)) | (1L << (COMPACT - 348)) | (1L << (COMPLETION - 348)) | (1L << (COMPRESSED - 348)) | (1L << (COMPRESSION - 348)) | (1L << (CONCURRENT - 348)) | (1L << (CONNECT - 348)) | (1L << (CONNECTION - 348)) | (1L << (CONSISTENT - 348)) | (1L << (CONSTRAINT_CATALOG - 348)) | (1L << (CONSTRAINT_SCHEMA - 348)) | (1L << (CONSTRAINT_NAME - 348)) | (1L << (CONTAINS - 348)) | (1L << (CONTEXT - 348)) | (1L << (CONTRIBUTORS - 348)) | (1L << (COPY - 348)) | (1L << (CPU - 348)) | (1L << (CYCLE - 348)) | (1L << (CURSOR_NAME - 348)) | (1L << (DATA - 348)) | (1L << (DATAFILE - 348)) | (1L << (DEALLOCATE - 348)) | (1L << (DEFAULT_AUTH - 348)) | (1L << (DEFINER - 348)) | (1L << (DELAY_KEY_WRITE - 348)) | (1L << (DES_KEY_FILE - 348)) | (1L << (DIRECTORY - 348)) | (1L << (DISABLE - 348)) | (1L << (DISCARD - 348)) | (1L << (DISK - 348)) | (1L << (DO - 348)) | (1L << (DUMPFILE - 348)) | (1L << (DUPLICATE - 348)) | (1L << (DYNAMIC - 348)) | (1L << (ENABLE - 348)) | (1L << (ENCRYPTED - 348)) | (1L << (ENCRYPTION - 348)) | (1L << (ENCRYPTION_KEY_ID - 348)) | (1L << (END - 348)) | (1L << (ENDS - 348)))) != 0) || ((((_la - 412)) & ~0x3f) == 0 && ((1L << (_la - 412)) & ((1L << (ENGINE - 412)) | (1L << (ENGINES - 412)) | (1L << (ERROR - 412)) | (1L << (ERRORS - 412)) | (1L << (ESCAPE - 412)) | (1L << (EVEN - 412)) | (1L << (EVENT - 412)) | (1L << (EVENTS - 412)) | (1L << (EVERY - 412)) | (1L << (EXCHANGE - 412)) | (1L << (EXCLUSIVE - 412)) | (1L << (EXPIRE - 412)) | (1L << (EXPORT - 412)) | (1L << (EXTENDED - 412)) | (1L << (EXTENT_SIZE - 412)) | (1L << (FAILED_LOGIN_ATTEMPTS - 412)) | (1L << (FAST - 412)) | (1L << (FAULTS - 412)) | (1L << (FIELDS - 412)) | (1L << (FILE_BLOCK_SIZE - 412)) | (1L << (FILTER - 412)) | (1L << (FIRST - 412)) | (1L << (FIXED - 412)) | (1L << (FLUSH - 412)) | (1L << (FOLLOWS - 412)) | (1L << (FOUND - 412)) | (1L << (FULL - 412)) | (1L << (FUNCTION - 412)) | (1L << (GENERAL - 412)) | (1L << (GLOBAL - 412)) | (1L << (GRANTS - 412)) | (1L << (GROUP_REPLICATION - 412)) | (1L << (HANDLER - 412)) | (1L << (HASH - 412)) | (1L << (HELP - 412)) | (1L << (HISTORY - 412)) | (1L << (HOST - 412)) | (1L << (HOSTS - 412)) | (1L << (IDENTIFIED - 412)) | (1L << (IGNORE_SERVER_IDS - 412)) | (1L << (IMPORT - 412)) | (1L << (INCREMENT - 412)) | (1L << (INDEXES - 412)) | (1L << (INITIAL_SIZE - 412)) | (1L << (INPLACE - 412)) | (1L << (INSERT_METHOD - 412)) | (1L << (INSTALL - 412)) | (1L << (INSTANCE - 412)) | (1L << (INSTANT - 412)) | (1L << (INVISIBLE - 412)) | (1L << (INVOKER - 412)) | (1L << (IO - 412)) | (1L << (IO_THREAD - 412)) | (1L << (IPC - 412)) | (1L << (ISOLATION - 412)) | (1L << (ISSUER - 412)) | (1L << (JSON - 412)) | (1L << (KEY_BLOCK_SIZE - 412)) | (1L << (LANGUAGE - 412)) | (1L << (LAST - 412)) | (1L << (LEAVES - 412)) | (1L << (LESS - 412)) | (1L << (LEVEL - 412)))) != 0) || ((((_la - 476)) & ~0x3f) == 0 && ((1L << (_la - 476)) & ((1L << (LIST - 476)) | (1L << (LOCAL - 476)) | (1L << (LOGFILE - 476)) | (1L << (LOGS - 476)) | (1L << (MASTER - 476)) | (1L << (MASTER_AUTO_POSITION - 476)) | (1L << (MASTER_CONNECT_RETRY - 476)) | (1L << (MASTER_DELAY - 476)) | (1L << (MASTER_HEARTBEAT_PERIOD - 476)) | (1L << (MASTER_HOST - 476)) | (1L << (MASTER_LOG_FILE - 476)) | (1L << (MASTER_LOG_POS - 476)) | (1L << (MASTER_PASSWORD - 476)) | (1L << (MASTER_PORT - 476)) | (1L << (MASTER_RETRY_COUNT - 476)) | (1L << (MASTER_SSL - 476)) | (1L << (MASTER_SSL_CA - 476)) | (1L << (MASTER_SSL_CAPATH - 476)) | (1L << (MASTER_SSL_CERT - 476)) | (1L << (MASTER_SSL_CIPHER - 476)) | (1L << (MASTER_SSL_CRL - 476)) | (1L << (MASTER_SSL_CRLPATH - 476)) | (1L << (MASTER_SSL_KEY - 476)) | (1L << (MASTER_TLS_VERSION - 476)) | (1L << (MASTER_USER - 476)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 476)) | (1L << (MAX_QUERIES_PER_HOUR - 476)) | (1L << (MAX_ROWS - 476)) | (1L << (MAX_SIZE - 476)) | (1L << (MAX_UPDATES_PER_HOUR - 476)) | (1L << (MAX_USER_CONNECTIONS - 476)) | (1L << (MEDIUM - 476)) | (1L << (MEMBER - 476)) | (1L << (MERGE - 476)) | (1L << (MESSAGE_TEXT - 476)) | (1L << (MID - 476)) | (1L << (MIGRATE - 476)) | (1L << (MIN_ROWS - 476)) | (1L << (MODE - 476)) | (1L << (MODIFY - 476)) | (1L << (MUTEX - 476)) | (1L << (MYSQL - 476)) | (1L << (MYSQL_ERRNO - 476)) | (1L << (NAME - 476)) | (1L << (NAMES - 476)) | (1L << (NCHAR - 476)) | (1L << (NEVER - 476)) | (1L << (NEXT - 476)) | (1L << (NO - 476)) | (1L << (NOCACHE - 476)) | (1L << (NOCOPY - 476)) | (1L << (NOCYCLE - 476)) | (1L << (NOMAXVALUE - 476)) | (1L << (NOMINVALUE - 476)) | (1L << (NOWAIT - 476)) | (1L << (NODEGROUP - 476)) | (1L << (NONE - 476)) | (1L << (ODBC - 476)) | (1L << (OFFLINE - 476)) | (1L << (OFFSET - 476)) | (1L << (OF - 476)) | (1L << (OJ - 476)) | (1L << (OLD_PASSWORD - 476)) | (1L << (ONE - 476)))) != 0) || ((((_la - 540)) & ~0x3f) == 0 && ((1L << (_la - 540)) & ((1L << (ONLINE - 540)) | (1L << (ONLY - 540)) | (1L << (OPEN - 540)) | (1L << (OPTIMIZER_COSTS - 540)) | (1L << (OPTIONS - 540)) | (1L << (OWNER - 540)) | (1L << (PACK_KEYS - 540)) | (1L << (PAGE - 540)) | (1L << (PARSER - 540)) | (1L << (PARTIAL - 540)) | (1L << (PARTITIONING - 540)) | (1L << (PARTITIONS - 540)) | (1L << (PASSWORD - 540)) | (1L << (PASSWORD_LOCK_TIME - 540)) | (1L << (PHASE - 540)) | (1L << (PLUGIN - 540)) | (1L << (PLUGIN_DIR - 540)) | (1L << (PLUGINS - 540)) | (1L << (PORT - 540)) | (1L << (PRECEDES - 540)) | (1L << (PREPARE - 540)) | (1L << (PRESERVE - 540)) | (1L << (PREV - 540)) | (1L << (PROCESSLIST - 540)) | (1L << (PROFILE - 540)) | (1L << (PROFILES - 540)) | (1L << (PROXY - 540)) | (1L << (QUERY - 540)) | (1L << (QUICK - 540)) | (1L << (REBUILD - 540)) | (1L << (RECOVER - 540)) | (1L << (RECURSIVE - 540)) | (1L << (REDO_BUFFER_SIZE - 540)) | (1L << (REDUNDANT - 540)) | (1L << (RELAY - 540)) | (1L << (RELAY_LOG_FILE - 540)) | (1L << (RELAY_LOG_POS - 540)) | (1L << (RELAYLOG - 540)) | (1L << (REMOVE - 540)) | (1L << (REORGANIZE - 540)) | (1L << (REPAIR - 540)) | (1L << (REPLICATE_DO_DB - 540)) | (1L << (REPLICATE_DO_TABLE - 540)) | (1L << (REPLICATE_IGNORE_DB - 540)) | (1L << (REPLICATE_IGNORE_TABLE - 540)) | (1L << (REPLICATE_REWRITE_DB - 540)) | (1L << (REPLICATE_WILD_DO_TABLE - 540)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 540)) | (1L << (REPLICATION - 540)) | (1L << (RESET - 540)) | (1L << (RESTART - 540)) | (1L << (RESUME - 540)) | (1L << (RETURNED_SQLSTATE - 540)) | (1L << (RETURNING - 540)) | (1L << (RETURNS - 540)) | (1L << (REUSE - 540)) | (1L << (ROLE - 540)) | (1L << (ROLLBACK - 540)) | (1L << (ROLLUP - 540)) | (1L << (ROTATE - 540)) | (1L << (ROW - 540)))) != 0) || ((((_la - 604)) & ~0x3f) == 0 && ((1L << (_la - 604)) & ((1L << (ROWS - 604)) | (1L << (ROW_FORMAT - 604)) | (1L << (RTREE - 604)) | (1L << (SAVEPOINT - 604)) | (1L << (SCHEDULE - 604)) | (1L << (SECURITY - 604)) | (1L << (SEQUENCE - 604)) | (1L << (SERVER - 604)) | (1L << (SESSION - 604)) | (1L << (SHARE - 604)) | (1L << (SHARED - 604)) | (1L << (SIGNED - 604)) | (1L << (SIMPLE - 604)) | (1L << (SLAVE - 604)) | (1L << (SLOW - 604)) | (1L << (SNAPSHOT - 604)) | (1L << (SOCKET - 604)) | (1L << (SOME - 604)) | (1L << (SONAME - 604)) | (1L << (SOUNDS - 604)) | (1L << (SOURCE - 604)) | (1L << (SQL_AFTER_GTIDS - 604)) | (1L << (SQL_AFTER_MTS_GAPS - 604)) | (1L << (SQL_BEFORE_GTIDS - 604)) | (1L << (SQL_BUFFER_RESULT - 604)) | (1L << (SQL_CACHE - 604)) | (1L << (SQL_NO_CACHE - 604)) | (1L << (SQL_THREAD - 604)) | (1L << (START - 604)) | (1L << (STARTS - 604)) | (1L << (STATS_AUTO_RECALC - 604)) | (1L << (STATS_PERSISTENT - 604)) | (1L << (STATS_SAMPLE_PAGES - 604)) | (1L << (STATUS - 604)) | (1L << (STOP - 604)) | (1L << (STORAGE - 604)) | (1L << (STRING - 604)) | (1L << (SUBCLASS_ORIGIN - 604)) | (1L << (SUBJECT - 604)) | (1L << (SUBPARTITION - 604)) | (1L << (SUBPARTITIONS - 604)) | (1L << (SUSPEND - 604)) | (1L << (SWAPS - 604)) | (1L << (SWITCHES - 604)) | (1L << (TABLE_NAME - 604)) | (1L << (TABLESPACE - 604)) | (1L << (TABLE_TYPE - 604)) | (1L << (TEMPORARY - 604)) | (1L << (TEMPTABLE - 604)) | (1L << (THAN - 604)) | (1L << (TRADITIONAL - 604)) | (1L << (TRANSACTION - 604)) | (1L << (TRANSACTIONAL - 604)) | (1L << (TRIGGERS - 604)) | (1L << (TRUNCATE - 604)) | (1L << (UNBOUNDED - 604)) | (1L << (UNDEFINED - 604)) | (1L << (UNDOFILE - 604)) | (1L << (UNDO_BUFFER_SIZE - 604)) | (1L << (UNINSTALL - 604)) | (1L << (UNKNOWN - 604)) | (1L << (UNTIL - 604)) | (1L << (UPGRADE - 604)))) != 0) || ((((_la - 668)) & ~0x3f) == 0 && ((1L << (_la - 668)) & ((1L << (USER - 668)) | (1L << (USE_FRM - 668)) | (1L << (USER_RESOURCES - 668)) | (1L << (VALIDATION - 668)) | (1L << (VALUE - 668)) | (1L << (VARIABLES - 668)) | (1L << (VIEW - 668)) | (1L << (VIRTUAL - 668)) | (1L << (VISIBLE - 668)) | (1L << (WAIT - 668)) | (1L << (WARNINGS - 668)) | (1L << (WITHOUT - 668)) | (1L << (WORK - 668)) | (1L << (WRAPPER - 668)) | (1L << (X509 - 668)) | (1L << (XA - 668)) | (1L << (XML - 668)) | (1L << (YES - 668)) | (1L << (EUR - 668)) | (1L << (USA - 668)) | (1L << (JIS - 668)) | (1L << (ISO - 668)) | (1L << (INTERNAL - 668)) | (1L << (QUARTER - 668)) | (1L << (MONTH - 668)) | (1L << (DAY - 668)) | (1L << (HOUR - 668)) | (1L << (MINUTE - 668)) | (1L << (WEEK - 668)) | (1L << (SECOND - 668)) | (1L << (MICROSECOND - 668)) | (1L << (USER_STATISTICS - 668)) | (1L << (CLIENT_STATISTICS - 668)) | (1L << (INDEX_STATISTICS - 668)) | (1L << (TABLE_STATISTICS - 668)) | (1L << (FIREWALL_RULES - 668)) | (1L << (ADMIN - 668)) | (1L << (APPLICATION_PASSWORD_ADMIN - 668)) | (1L << (AUDIT_ADMIN - 668)) | (1L << (AUDIT_ABORT_EXEMPT - 668)) | (1L << (AUTHENTICATION_POLICY_ADMIN - 668)) | (1L << (BACKUP_ADMIN - 668)) | (1L << (BINLOG_ADMIN - 668)) | (1L << (BINLOG_ENCRYPTION_ADMIN - 668)) | (1L << (CLONE_ADMIN - 668)) | (1L << (CONNECTION_ADMIN - 668)) | (1L << (ENCRYPTION_KEY_ADMIN - 668)) | (1L << (EXECUTE - 668)) | (1L << (FILE - 668)) | (1L << (FIREWALL_ADMIN - 668)) | (1L << (FIREWALL_EXEMPT - 668)) | (1L << (FIREWALL_USER - 668)) | (1L << (FLUSH_OPTIMIZER_COSTS - 668)) | (1L << (FLUSH_STATUS - 668)) | (1L << (FLUSH_TABLES - 668)) | (1L << (FLUSH_USER_RESOURCES - 668)) | (1L << (GROUP_REPLICATION_ADMIN - 668)) | (1L << (INNODB_REDO_LOG_ARCHIVE - 668)) | (1L << (INNODB_REDO_LOG_ENABLE - 668)) | (1L << (INVOKE - 668)) | (1L << (LAMBDA - 668)) | (1L << (NDB_STORED_USER - 668)) | (1L << (PASSWORDLESS_USER_ADMIN - 668)))) != 0) || ((((_la - 732)) & ~0x3f) == 0 && ((1L << (_la - 732)) & ((1L << (PERSIST_RO_VARIABLES_ADMIN - 732)) | (1L << (PRIVILEGES - 732)) | (1L << (PROCESS - 732)) | (1L << (RELOAD - 732)) | (1L << (REPLICATION_APPLIER - 732)) | (1L << (REPLICATION_SLAVE_ADMIN - 732)) | (1L << (RESOURCE_GROUP_ADMIN - 732)) | (1L << (RESOURCE_GROUP_USER - 732)) | (1L << (ROLE_ADMIN - 732)) | (1L << (ROUTINE - 732)) | (1L << (S3 - 732)) | (1L << (SESSION_VARIABLES_ADMIN - 732)) | (1L << (SET_USER_ID - 732)) | (1L << (SHOW_ROUTINE - 732)) | (1L << (SHUTDOWN - 732)) | (1L << (SUPER - 732)) | (1L << (SYSTEM_VARIABLES_ADMIN - 732)) | (1L << (TABLES - 732)) | (1L << (TABLE_ENCRYPTION_ADMIN - 732)) | (1L << (VERSION_TOKEN_ADMIN - 732)) | (1L << (XA_RECOVER_ADMIN - 732)) | (1L << (ARMSCII8 - 732)) | (1L << (ASCII - 732)) | (1L << (BIG5 - 732)) | (1L << (CP1250 - 732)) | (1L << (CP1251 - 732)) | (1L << (CP1256 - 732)) | (1L << (CP1257 - 732)) | (1L << (CP850 - 732)) | (1L << (CP852 - 732)) | (1L << (CP866 - 732)) | (1L << (CP932 - 732)) | (1L << (DEC8 - 732)) | (1L << (EUCJPMS - 732)) | (1L << (EUCKR - 732)) | (1L << (GB18030 - 732)) | (1L << (GB2312 - 732)) | (1L << (GBK - 732)) | (1L << (GEOSTD8 - 732)) | (1L << (GREEK - 732)) | (1L << (HEBREW - 732)) | (1L << (HP8 - 732)) | (1L << (KEYBCS2 - 732)) | (1L << (KOI8R - 732)) | (1L << (KOI8U - 732)) | (1L << (LATIN1 - 732)) | (1L << (LATIN2 - 732)) | (1L << (LATIN5 - 732)) | (1L << (LATIN7 - 732)) | (1L << (MACCE - 732)) | (1L << (MACROMAN - 732)) | (1L << (SJIS - 732)) | (1L << (SWE7 - 732)) | (1L << (TIS620 - 732)) | (1L << (UCS2 - 732)) | (1L << (UJIS - 732)) | (1L << (UTF16 - 732)) | (1L << (UTF16LE - 732)) | (1L << (UTF32 - 732)) | (1L << (UTF8 - 732)) | (1L << (UTF8MB3 - 732)) | (1L << (UTF8MB4 - 732)) | (1L << (ARCHIVE - 732)))) != 0) || ((((_la - 796)) & ~0x3f) == 0 && ((1L << (_la - 796)) & ((1L << (BLACKHOLE - 796)) | (1L << (CSV - 796)) | (1L << (FEDERATED - 796)) | (1L << (INNODB - 796)) | (1L << (MEMORY - 796)) | (1L << (MRG_MYISAM - 796)) | (1L << (MYISAM - 796)) | (1L << (NDB - 796)) | (1L << (NDBCLUSTER - 796)) | (1L << (PERFORMANCE_SCHEMA - 796)) | (1L << (TOKUDB - 796)) | (1L << (REPEATABLE - 796)) | (1L << (COMMITTED - 796)) | (1L << (UNCOMMITTED - 796)) | (1L << (SERIALIZABLE - 796)) | (1L << (GEOMETRYCOLLECTION - 796)) | (1L << (GEOMETRY - 796)) | (1L << (LINESTRING - 796)) | (1L << (MULTILINESTRING - 796)) | (1L << (MULTIPOINT - 796)) | (1L << (MULTIPOLYGON - 796)) | (1L << (POINT - 796)) | (1L << (POLYGON - 796)) | (1L << (ABS - 796)) | (1L << (ACOS - 796)) | (1L << (ADDDATE - 796)) | (1L << (ADDTIME - 796)) | (1L << (AES_DECRYPT - 796)) | (1L << (AES_ENCRYPT - 796)) | (1L << (AREA - 796)) | (1L << (ASBINARY - 796)) | (1L << (ASIN - 796)) | (1L << (ASTEXT - 796)) | (1L << (ASWKB - 796)) | (1L << (ASWKT - 796)) | (1L << (ASYMMETRIC_DECRYPT - 796)) | (1L << (ASYMMETRIC_DERIVE - 796)) | (1L << (ASYMMETRIC_ENCRYPT - 796)) | (1L << (ASYMMETRIC_SIGN - 796)) | (1L << (ASYMMETRIC_VERIFY - 796)) | (1L << (ATAN - 796)) | (1L << (ATAN2 - 796)) | (1L << (BENCHMARK - 796)) | (1L << (BIN - 796)) | (1L << (BIT_COUNT - 796)) | (1L << (BIT_LENGTH - 796)) | (1L << (BUFFER - 796)) | (1L << (CATALOG_NAME - 796)) | (1L << (CEIL - 796)) | (1L << (CEILING - 796)) | (1L << (CENTROID - 796)) | (1L << (CHARACTER_LENGTH - 796)) | (1L << (CHARSET - 796)) | (1L << (CHAR_LENGTH - 796)) | (1L << (COERCIBILITY - 796)) | (1L << (COLLATION - 796)) | (1L << (COMPRESS - 796)) | (1L << (CONCAT - 796)) | (1L << (CONCAT_WS - 796)) | (1L << (CONNECTION_ID - 796)) | (1L << (CONV - 796)) | (1L << (CONVERT_TZ - 796)) | (1L << (COS - 796)))) != 0) || ((((_la - 860)) & ~0x3f) == 0 && ((1L << (_la - 860)) & ((1L << (COT - 860)) | (1L << (CRC32 - 860)) | (1L << (CREATE_ASYMMETRIC_PRIV_KEY - 860)) | (1L << (CREATE_ASYMMETRIC_PUB_KEY - 860)) | (1L << (CREATE_DH_PARAMETERS - 860)) | (1L << (CREATE_DIGEST - 860)) | (1L << (CROSSES - 860)) | (1L << (DATEDIFF - 860)) | (1L << (DATE_FORMAT - 860)) | (1L << (DAYNAME - 860)) | (1L << (DAYOFMONTH - 860)) | (1L << (DAYOFWEEK - 860)) | (1L << (DAYOFYEAR - 860)) | (1L << (DECODE - 860)) | (1L << (DEGREES - 860)) | (1L << (DES_DECRYPT - 860)) | (1L << (DES_ENCRYPT - 860)) | (1L << (DIMENSION - 860)) | (1L << (DISJOINT - 860)) | (1L << (ELT - 860)) | (1L << (ENCODE - 860)) | (1L << (ENCRYPT - 860)) | (1L << (ENDPOINT - 860)) | (1L << (ENGINE_ATTRIBUTE - 860)) | (1L << (ENVELOPE - 860)) | (1L << (EQUALS - 860)) | (1L << (EXP - 860)) | (1L << (EXPORT_SET - 860)) | (1L << (EXTERIORRING - 860)) | (1L << (EXTRACTVALUE - 860)) | (1L << (FIELD - 860)) | (1L << (FIND_IN_SET - 860)) | (1L << (FLOOR - 860)) | (1L << (FORMAT - 860)) | (1L << (FOUND_ROWS - 860)) | (1L << (FROM_BASE64 - 860)) | (1L << (FROM_DAYS - 860)) | (1L << (FROM_UNIXTIME - 860)) | (1L << (GEOMCOLLFROMTEXT - 860)) | (1L << (GEOMCOLLFROMWKB - 860)) | (1L << (GEOMETRYCOLLECTIONFROMTEXT - 860)) | (1L << (GEOMETRYCOLLECTIONFROMWKB - 860)) | (1L << (GEOMETRYFROMTEXT - 860)) | (1L << (GEOMETRYFROMWKB - 860)) | (1L << (GEOMETRYN - 860)) | (1L << (GEOMETRYTYPE - 860)) | (1L << (GEOMFROMTEXT - 860)) | (1L << (GEOMFROMWKB - 860)) | (1L << (GET_FORMAT - 860)) | (1L << (GET_LOCK - 860)) | (1L << (GLENGTH - 860)) | (1L << (GREATEST - 860)) | (1L << (GTID_SUBSET - 860)) | (1L << (GTID_SUBTRACT - 860)) | (1L << (HEX - 860)) | (1L << (IFNULL - 860)) | (1L << (INET6_ATON - 860)) | (1L << (INET6_NTOA - 860)) | (1L << (INET_ATON - 860)) | (1L << (INET_NTOA - 860)) | (1L << (INSTR - 860)) | (1L << (INTERIORRINGN - 860)) | (1L << (INTERSECTS - 860)) | (1L << (ISCLOSED - 860)))) != 0) || ((((_la - 924)) & ~0x3f) == 0 && ((1L << (_la - 924)) & ((1L << (ISEMPTY - 924)) | (1L << (ISNULL - 924)) | (1L << (ISSIMPLE - 924)) | (1L << (IS_FREE_LOCK - 924)) | (1L << (IS_IPV4 - 924)) | (1L << (IS_IPV4_COMPAT - 924)) | (1L << (IS_IPV4_MAPPED - 924)) | (1L << (IS_IPV6 - 924)) | (1L << (IS_USED_LOCK - 924)) | (1L << (LAST_INSERT_ID - 924)) | (1L << (LCASE - 924)) | (1L << (LEAST - 924)) | (1L << (LENGTH - 924)) | (1L << (LINEFROMTEXT - 924)) | (1L << (LINEFROMWKB - 924)) | (1L << (LINESTRINGFROMTEXT - 924)) | (1L << (LINESTRINGFROMWKB - 924)) | (1L << (LN - 924)) | (1L << (LOAD_FILE - 924)) | (1L << (LOCATE - 924)) | (1L << (LOG - 924)) | (1L << (LOG10 - 924)) | (1L << (LOG2 - 924)) | (1L << (LOWER - 924)) | (1L << (LPAD - 924)) | (1L << (LTRIM - 924)) | (1L << (MAKEDATE - 924)) | (1L << (MAKETIME - 924)) | (1L << (MAKE_SET - 924)) | (1L << (MASTER_POS_WAIT - 924)) | (1L << (MBRCONTAINS - 924)) | (1L << (MBRDISJOINT - 924)) | (1L << (MBREQUAL - 924)) | (1L << (MBRINTERSECTS - 924)) | (1L << (MBROVERLAPS - 924)) | (1L << (MBRTOUCHES - 924)) | (1L << (MBRWITHIN - 924)) | (1L << (MD5 - 924)) | (1L << (MLINEFROMTEXT - 924)) | (1L << (MLINEFROMWKB - 924)) | (1L << (MONTHNAME - 924)) | (1L << (MPOINTFROMTEXT - 924)) | (1L << (MPOINTFROMWKB - 924)) | (1L << (MPOLYFROMTEXT - 924)) | (1L << (MPOLYFROMWKB - 924)) | (1L << (MULTILINESTRINGFROMTEXT - 924)) | (1L << (MULTILINESTRINGFROMWKB - 924)) | (1L << (MULTIPOINTFROMTEXT - 924)) | (1L << (MULTIPOINTFROMWKB - 924)) | (1L << (MULTIPOLYGONFROMTEXT - 924)) | (1L << (MULTIPOLYGONFROMWKB - 924)) | (1L << (NAME_CONST - 924)) | (1L << (NULLIF - 924)) | (1L << (NUMGEOMETRIES - 924)) | (1L << (NUMINTERIORRINGS - 924)) | (1L << (NUMPOINTS - 924)) | (1L << (OCT - 924)) | (1L << (OCTET_LENGTH - 924)) | (1L << (ORD - 924)) | (1L << (OVERLAPS - 924)) | (1L << (PERIOD_ADD - 924)) | (1L << (PERIOD_DIFF - 924)) | (1L << (PI - 924)) | (1L << (POINTFROMTEXT - 924)))) != 0) || ((((_la - 988)) & ~0x3f) == 0 && ((1L << (_la - 988)) & ((1L << (POINTFROMWKB - 988)) | (1L << (POINTN - 988)) | (1L << (POLYFROMTEXT - 988)) | (1L << (POLYFROMWKB - 988)) | (1L << (POLYGONFROMTEXT - 988)) | (1L << (POLYGONFROMWKB - 988)) | (1L << (POW - 988)) | (1L << (POWER - 988)) | (1L << (QUOTE - 988)) | (1L << (RADIANS - 988)) | (1L << (RAND - 988)) | (1L << (RANDOM - 988)) | (1L << (RANDOM_BYTES - 988)) | (1L << (RELEASE_LOCK - 988)) | (1L << (REVERSE - 988)) | (1L << (ROUND - 988)) | (1L << (ROW_COUNT - 988)) | (1L << (RPAD - 988)) | (1L << (RTRIM - 988)) | (1L << (SEC_TO_TIME - 988)) | (1L << (SECONDARY_ENGINE_ATTRIBUTE - 988)) | (1L << (SENSITIVE_VARIABLES_OBSERVER - 988)) | (1L << (SESSION_USER - 988)) | (1L << (SHA - 988)) | (1L << (SHA1 - 988)) | (1L << (SHA2 - 988)) | (1L << (SCHEMA_NAME - 988)) | (1L << (SIGN - 988)) | (1L << (SIN - 988)) | (1L << (SLEEP - 988)) | (1L << (SOUNDEX - 988)) | (1L << (SQL_THREAD_WAIT_AFTER_GTIDS - 988)) | (1L << (SQRT - 988)) | (1L << (SRID - 988)) | (1L << (STARTPOINT - 988)) | (1L << (STRCMP - 988)) | (1L << (STR_TO_DATE - 988)) | (1L << (ST_AREA - 988)) | (1L << (ST_ASBINARY - 988)) | (1L << (ST_ASTEXT - 988)) | (1L << (ST_ASWKB - 988)) | (1L << (ST_ASWKT - 988)) | (1L << (ST_BUFFER - 988)) | (1L << (ST_CENTROID - 988)) | (1L << (ST_CONTAINS - 988)) | (1L << (ST_CROSSES - 988)) | (1L << (ST_DIFFERENCE - 988)) | (1L << (ST_DIMENSION - 988)) | (1L << (ST_DISJOINT - 988)) | (1L << (ST_DISTANCE - 988)) | (1L << (ST_ENDPOINT - 988)) | (1L << (ST_ENVELOPE - 988)) | (1L << (ST_EQUALS - 988)) | (1L << (ST_EXTERIORRING - 988)) | (1L << (ST_GEOMCOLLFROMTEXT - 988)) | (1L << (ST_GEOMCOLLFROMTXT - 988)) | (1L << (ST_GEOMCOLLFROMWKB - 988)) | (1L << (ST_GEOMETRYCOLLECTIONFROMTEXT - 988)) | (1L << (ST_GEOMETRYCOLLECTIONFROMWKB - 988)) | (1L << (ST_GEOMETRYFROMTEXT - 988)) | (1L << (ST_GEOMETRYFROMWKB - 988)) | (1L << (ST_GEOMETRYN - 988)) | (1L << (ST_GEOMETRYTYPE - 988)) | (1L << (ST_GEOMFROMTEXT - 988)))) != 0) || ((((_la - 1052)) & ~0x3f) == 0 && ((1L << (_la - 1052)) & ((1L << (ST_GEOMFROMWKB - 1052)) | (1L << (ST_INTERIORRINGN - 1052)) | (1L << (ST_INTERSECTION - 1052)) | (1L << (ST_INTERSECTS - 1052)) | (1L << (ST_ISCLOSED - 1052)) | (1L << (ST_ISEMPTY - 1052)) | (1L << (ST_ISSIMPLE - 1052)) | (1L << (ST_LINEFROMTEXT - 1052)) | (1L << (ST_LINEFROMWKB - 1052)) | (1L << (ST_LINESTRINGFROMTEXT - 1052)) | (1L << (ST_LINESTRINGFROMWKB - 1052)) | (1L << (ST_NUMGEOMETRIES - 1052)) | (1L << (ST_NUMINTERIORRING - 1052)) | (1L << (ST_NUMINTERIORRINGS - 1052)) | (1L << (ST_NUMPOINTS - 1052)) | (1L << (ST_OVERLAPS - 1052)) | (1L << (ST_POINTFROMTEXT - 1052)) | (1L << (ST_POINTFROMWKB - 1052)) | (1L << (ST_POINTN - 1052)) | (1L << (ST_POLYFROMTEXT - 1052)) | (1L << (ST_POLYFROMWKB - 1052)) | (1L << (ST_POLYGONFROMTEXT - 1052)) | (1L << (ST_POLYGONFROMWKB - 1052)) | (1L << (ST_SRID - 1052)) | (1L << (ST_STARTPOINT - 1052)) | (1L << (ST_SYMDIFFERENCE - 1052)) | (1L << (ST_TOUCHES - 1052)) | (1L << (ST_UNION - 1052)) | (1L << (ST_WITHIN - 1052)) | (1L << (ST_X - 1052)) | (1L << (ST_Y - 1052)) | (1L << (SUBDATE - 1052)) | (1L << (SUBSTRING_INDEX - 1052)) | (1L << (SUBTIME - 1052)) | (1L << (SYSTEM_USER - 1052)) | (1L << (SYSTEM - 1052)) | (1L << (TAN - 1052)) | (1L << (TELEMETRY_LOG_ADMIN - 1052)) | (1L << (TIMEDIFF - 1052)) | (1L << (TIMESTAMPADD - 1052)) | (1L << (TIMESTAMPDIFF - 1052)) | (1L << (TIME_FORMAT - 1052)) | (1L << (TIME_TO_SEC - 1052)) | (1L << (TOUCHES - 1052)) | (1L << (TO_BASE64 - 1052)) | (1L << (TO_DAYS - 1052)) | (1L << (TO_SECONDS - 1052)) | (1L << (TP_CONNECTION_ADMIN - 1052)) | (1L << (UCASE - 1052)) | (1L << (UNCOMPRESS - 1052)) | (1L << (UNCOMPRESSED_LENGTH - 1052)) | (1L << (UNHEX - 1052)) | (1L << (UNIX_TIMESTAMP - 1052)) | (1L << (UPDATEXML - 1052)) | (1L << (UPPER - 1052)) | (1L << (UUID - 1052)) | (1L << (UUID_SHORT - 1052)) | (1L << (VALIDATE_PASSWORD_STRENGTH - 1052)) | (1L << (VERSION - 1052)) | (1L << (VERSIONING - 1052)) | (1L << (WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS - 1052)) | (1L << (WEEKDAY - 1052)) | (1L << (WEEKOFYEAR - 1052)) | (1L << (WEIGHT_STRING - 1052)))) != 0) || ((((_la - 1116)) & ~0x3f) == 0 && ((1L << (_la - 1116)) & ((1L << (WITHIN - 1116)) | (1L << (YEARWEEK - 1116)) | (1L << (Y_FUNCTION - 1116)) | (1L << (X_FUNCTION - 1116)) | (1L << (VIA - 1116)) | (1L << (LASTVAL - 1116)) | (1L << (NEXTVAL - 1116)) | (1L << (SETVAL - 1116)) | (1L << (PREVIOUS - 1116)) | (1L << (PERSISTENT - 1116)) | (1L << (BINLOG_MONITOR - 1116)) | (1L << (BINLOG_REPLAY - 1116)) | (1L << (FEDERATED_ADMIN - 1116)) | (1L << (READ_ONLY_ADMIN - 1116)) | (1L << (REPLICA - 1116)) | (1L << (REPLICATION_MASTER_ADMIN - 1116)) | (1L << (MONITOR - 1116)) | (1L << (READ_ONLY - 1116)) | (1L << (REPLAY - 1116)) | (1L << (MOD - 1116)) | (1L << (CHARSET_REVERSE_QOUTE_STRING - 1116)) | (1L << (STRING_LITERAL - 1116)))) != 0) || _la==ID) {
				{
				setState(3975);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==AS) {
					{
					setState(3974);
					match(AS);
					}
				}

				setState(3977);
				uid();
				}
			}

			setState(3980);
			match(SET);
			setState(3981);
			updatedElement();
			setState(3986);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(3982);
				match(COMMA);
				setState(3983);
				updatedElement();
				}
				}
				setState(3988);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(3991);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WHERE) {
				{
				setState(3989);
				match(WHERE);
				setState(3990);
				expression(0);
				}
			}

			setState(3994);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ORDER) {
				{
				setState(3993);
				orderByClause();
				}
			}

			setState(3997);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LIMIT) {
				{
				setState(3996);
				limitClause();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class MultipleUpdateStatementContext extends ParserRuleContext {
		public Token priority;
		public TerminalNode UPDATE() { return getToken(MySqlParser.UPDATE, 0); }
		public TableSourcesContext tableSources() {
			return getRuleContext(TableSourcesContext.class,0);
		}
		public TerminalNode SET() { return getToken(MySqlParser.SET, 0); }
		public List updatedElement() {
			return getRuleContexts(UpdatedElementContext.class);
		}
		public UpdatedElementContext updatedElement(int i) {
			return getRuleContext(UpdatedElementContext.class,i);
		}
		public TerminalNode IGNORE() { return getToken(MySqlParser.IGNORE, 0); }
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public TerminalNode WHERE() { return getToken(MySqlParser.WHERE, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode LOW_PRIORITY() { return getToken(MySqlParser.LOW_PRIORITY, 0); }
		public MultipleUpdateStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_multipleUpdateStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterMultipleUpdateStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitMultipleUpdateStatement(this);
		}
	}

	public final MultipleUpdateStatementContext multipleUpdateStatement() throws RecognitionException {
		MultipleUpdateStatementContext _localctx = new MultipleUpdateStatementContext(_ctx, getState());
		enterRule(_localctx, 246, RULE_multipleUpdateStatement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3999);
			match(UPDATE);
			setState(4001);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LOW_PRIORITY) {
				{
				setState(4000);
				((MultipleUpdateStatementContext)_localctx).priority = match(LOW_PRIORITY);
				}
			}

			setState(4004);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IGNORE) {
				{
				setState(4003);
				match(IGNORE);
				}
			}

			setState(4006);
			tableSources();
			setState(4007);
			match(SET);
			setState(4008);
			updatedElement();
			setState(4013);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(4009);
				match(COMMA);
				setState(4010);
				updatedElement();
				}
				}
				setState(4015);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(4018);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WHERE) {
				{
				setState(4016);
				match(WHERE);
				setState(4017);
				expression(0);
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class OrderByClauseContext extends ParserRuleContext {
		public TerminalNode ORDER() { return getToken(MySqlParser.ORDER, 0); }
		public TerminalNode BY() { return getToken(MySqlParser.BY, 0); }
		public List orderByExpression() {
			return getRuleContexts(OrderByExpressionContext.class);
		}
		public OrderByExpressionContext orderByExpression(int i) {
			return getRuleContext(OrderByExpressionContext.class,i);
		}
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public OrderByClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_orderByClause; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterOrderByClause(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitOrderByClause(this);
		}
	}

	public final OrderByClauseContext orderByClause() throws RecognitionException {
		OrderByClauseContext _localctx = new OrderByClauseContext(_ctx, getState());
		enterRule(_localctx, 248, RULE_orderByClause);
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(4020);
			match(ORDER);
			setState(4021);
			match(BY);
			setState(4022);
			orderByExpression();
			setState(4027);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,589,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					{
					{
					setState(4023);
					match(COMMA);
					setState(4024);
					orderByExpression();
					}
					} 
				}
				setState(4029);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,589,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class OrderByExpressionContext extends ParserRuleContext {
		public Token order;
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode ASC() { return getToken(MySqlParser.ASC, 0); }
		public TerminalNode DESC() { return getToken(MySqlParser.DESC, 0); }
		public OrderByExpressionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_orderByExpression; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterOrderByExpression(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitOrderByExpression(this);
		}
	}

	public final OrderByExpressionContext orderByExpression() throws RecognitionException {
		OrderByExpressionContext _localctx = new OrderByExpressionContext(_ctx, getState());
		enterRule(_localctx, 250, RULE_orderByExpression);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4030);
			expression(0);
			setState(4032);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,590,_ctx) ) {
			case 1:
				{
				setState(4031);
				((OrderByExpressionContext)_localctx).order = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==ASC || _la==DESC) ) {
					((OrderByExpressionContext)_localctx).order = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TableSourcesContext extends ParserRuleContext {
		public List tableSource() {
			return getRuleContexts(TableSourceContext.class);
		}
		public TableSourceContext tableSource(int i) {
			return getRuleContext(TableSourceContext.class,i);
		}
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public TableSourcesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_tableSources; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableSources(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableSources(this);
		}
	}

	public final TableSourcesContext tableSources() throws RecognitionException {
		TableSourcesContext _localctx = new TableSourcesContext(_ctx, getState());
		enterRule(_localctx, 252, RULE_tableSources);
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(4034);
			tableSource();
			setState(4039);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,591,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					{
					{
					setState(4035);
					match(COMMA);
					setState(4036);
					tableSource();
					}
					} 
				}
				setState(4041);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,591,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TableSourceContext extends ParserRuleContext {
		public TableSourceContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_tableSource; }
	 
		public TableSourceContext() { }
		public void copyFrom(TableSourceContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class TableJsonContext extends TableSourceContext {
		public JsonTableContext jsonTable() {
			return getRuleContext(JsonTableContext.class,0);
		}
		public TableJsonContext(TableSourceContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableJson(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableJson(this);
		}
	}
	public static class TableSourceNestedContext extends TableSourceContext {
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public TableSourceItemContext tableSourceItem() {
			return getRuleContext(TableSourceItemContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public List joinPart() {
			return getRuleContexts(JoinPartContext.class);
		}
		public JoinPartContext joinPart(int i) {
			return getRuleContext(JoinPartContext.class,i);
		}
		public TableSourceNestedContext(TableSourceContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableSourceNested(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableSourceNested(this);
		}
	}
	public static class TableSourceBaseContext extends TableSourceContext {
		public TableSourceItemContext tableSourceItem() {
			return getRuleContext(TableSourceItemContext.class,0);
		}
		public List joinPart() {
			return getRuleContexts(JoinPartContext.class);
		}
		public JoinPartContext joinPart(int i) {
			return getRuleContext(JoinPartContext.class,i);
		}
		public TableSourceBaseContext(TableSourceContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableSourceBase(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableSourceBase(this);
		}
	}

	public final TableSourceContext tableSource() throws RecognitionException {
		TableSourceContext _localctx = new TableSourceContext(_ctx, getState());
		enterRule(_localctx, 254, RULE_tableSource);
		int _la;
		try {
			int _alt;
			setState(4060);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,594,_ctx) ) {
			case 1:
				_localctx = new TableSourceBaseContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(4042);
				tableSourceItem();
				setState(4046);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,592,_ctx);
				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
					if ( _alt==1 ) {
						{
						{
						setState(4043);
						joinPart();
						}
						} 
					}
					setState(4048);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,592,_ctx);
				}
				}
				break;
			case 2:
				_localctx = new TableSourceNestedContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(4049);
				match(LR_BRACKET);
				setState(4050);
				tableSourceItem();
				setState(4054);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==CROSS || ((((_la - 85)) & ~0x3f) == 0 && ((1L << (_la - 85)) & ((1L << (INNER - 85)) | (1L << (JOIN - 85)) | (1L << (LEFT - 85)) | (1L << (NATURAL - 85)))) != 0) || _la==RIGHT || _la==STRAIGHT_JOIN) {
					{
					{
					setState(4051);
					joinPart();
					}
					}
					setState(4056);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(4057);
				match(RR_BRACKET);
				}
				break;
			case 3:
				_localctx = new TableJsonContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(4059);
				jsonTable();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TableSourceItemContext extends ParserRuleContext {
		public TableSourceItemContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_tableSourceItem; }
	 
		public TableSourceItemContext() { }
		public void copyFrom(TableSourceItemContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class SubqueryTableItemContext extends TableSourceItemContext {
		public SelectStatementContext parenthesisSubquery;
		public UidContext alias;
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public SelectStatementContext selectStatement() {
			return getRuleContext(SelectStatementContext.class,0);
		}
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TerminalNode AS() { return getToken(MySqlParser.AS, 0); }
		public SubqueryTableItemContext(TableSourceItemContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSubqueryTableItem(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSubqueryTableItem(this);
		}
	}
	public static class AtomTableItemContext extends TableSourceItemContext {
		public UidContext alias;
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public TerminalNode PARTITION() { return getToken(MySqlParser.PARTITION, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public UidListContext uidList() {
			return getRuleContext(UidListContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public List indexHint() {
			return getRuleContexts(IndexHintContext.class);
		}
		public IndexHintContext indexHint(int i) {
			return getRuleContext(IndexHintContext.class,i);
		}
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode AS() { return getToken(MySqlParser.AS, 0); }
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public AtomTableItemContext(TableSourceItemContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAtomTableItem(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAtomTableItem(this);
		}
	}
	public static class TableSourcesItemContext extends TableSourceItemContext {
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public TableSourcesContext tableSources() {
			return getRuleContext(TableSourcesContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TableSourcesItemContext(TableSourceItemContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableSourcesItem(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableSourcesItem(this);
		}
	}

	public final TableSourceItemContext tableSourceItem() throws RecognitionException {
		TableSourceItemContext _localctx = new TableSourceItemContext(_ctx, getState());
		enterRule(_localctx, 256, RULE_tableSourceItem);
		int _la;
		try {
			int _alt;
			setState(4102);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,602,_ctx) ) {
			case 1:
				_localctx = new AtomTableItemContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(4062);
				tableName();
				setState(4068);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==PARTITION) {
					{
					setState(4063);
					match(PARTITION);
					setState(4064);
					match(LR_BRACKET);
					setState(4065);
					uidList();
					setState(4066);
					match(RR_BRACKET);
					}
				}

				setState(4074);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,597,_ctx) ) {
				case 1:
					{
					setState(4071);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==AS) {
						{
						setState(4070);
						match(AS);
						}
					}

					setState(4073);
					((AtomTableItemContext)_localctx).alias = uid();
					}
					break;
				}
				setState(4084);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,599,_ctx) ) {
				case 1:
					{
					setState(4076);
					indexHint();
					setState(4081);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,598,_ctx);
					while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
						if ( _alt==1 ) {
							{
							{
							setState(4077);
							match(COMMA);
							setState(4078);
							indexHint();
							}
							} 
						}
						setState(4083);
						_errHandler.sync(this);
						_alt = getInterpreter().adaptivePredict(_input,598,_ctx);
					}
					}
					break;
				}
				}
				break;
			case 2:
				_localctx = new SubqueryTableItemContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(4091);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,600,_ctx) ) {
				case 1:
					{
					setState(4086);
					selectStatement();
					}
					break;
				case 2:
					{
					setState(4087);
					match(LR_BRACKET);
					setState(4088);
					((SubqueryTableItemContext)_localctx).parenthesisSubquery = selectStatement();
					setState(4089);
					match(RR_BRACKET);
					}
					break;
				}
				setState(4094);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==AS) {
					{
					setState(4093);
					match(AS);
					}
				}

				setState(4096);
				((SubqueryTableItemContext)_localctx).alias = uid();
				}
				break;
			case 3:
				_localctx = new TableSourcesItemContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(4098);
				match(LR_BRACKET);
				setState(4099);
				tableSources();
				setState(4100);
				match(RR_BRACKET);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IndexHintContext extends ParserRuleContext {
		public Token indexHintAction;
		public Token keyFormat;
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public UidListContext uidList() {
			return getRuleContext(UidListContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TerminalNode USE() { return getToken(MySqlParser.USE, 0); }
		public TerminalNode IGNORE() { return getToken(MySqlParser.IGNORE, 0); }
		public TerminalNode FORCE() { return getToken(MySqlParser.FORCE, 0); }
		public TerminalNode INDEX() { return getToken(MySqlParser.INDEX, 0); }
		public TerminalNode KEY() { return getToken(MySqlParser.KEY, 0); }
		public TerminalNode FOR() { return getToken(MySqlParser.FOR, 0); }
		public IndexHintTypeContext indexHintType() {
			return getRuleContext(IndexHintTypeContext.class,0);
		}
		public IndexHintContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_indexHint; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterIndexHint(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitIndexHint(this);
		}
	}

	public final IndexHintContext indexHint() throws RecognitionException {
		IndexHintContext _localctx = new IndexHintContext(_ctx, getState());
		enterRule(_localctx, 258, RULE_indexHint);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4104);
			((IndexHintContext)_localctx).indexHintAction = _input.LT(1);
			_la = _input.LA(1);
			if ( !(_la==FORCE || _la==IGNORE || _la==USE) ) {
				((IndexHintContext)_localctx).indexHintAction = (Token)_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(4105);
			((IndexHintContext)_localctx).keyFormat = _input.LT(1);
			_la = _input.LA(1);
			if ( !(_la==INDEX || _la==KEY) ) {
				((IndexHintContext)_localctx).keyFormat = (Token)_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(4108);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==FOR) {
				{
				setState(4106);
				match(FOR);
				setState(4107);
				indexHintType();
				}
			}

			setState(4110);
			match(LR_BRACKET);
			setState(4111);
			uidList();
			setState(4112);
			match(RR_BRACKET);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IndexHintTypeContext extends ParserRuleContext {
		public TerminalNode JOIN() { return getToken(MySqlParser.JOIN, 0); }
		public TerminalNode ORDER() { return getToken(MySqlParser.ORDER, 0); }
		public TerminalNode BY() { return getToken(MySqlParser.BY, 0); }
		public TerminalNode GROUP() { return getToken(MySqlParser.GROUP, 0); }
		public IndexHintTypeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_indexHintType; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterIndexHintType(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitIndexHintType(this);
		}
	}

	public final IndexHintTypeContext indexHintType() throws RecognitionException {
		IndexHintTypeContext _localctx = new IndexHintTypeContext(_ctx, getState());
		enterRule(_localctx, 260, RULE_indexHintType);
		try {
			setState(4119);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case JOIN:
				enterOuterAlt(_localctx, 1);
				{
				setState(4114);
				match(JOIN);
				}
				break;
			case ORDER:
				enterOuterAlt(_localctx, 2);
				{
				setState(4115);
				match(ORDER);
				setState(4116);
				match(BY);
				}
				break;
			case GROUP:
				enterOuterAlt(_localctx, 3);
				{
				setState(4117);
				match(GROUP);
				setState(4118);
				match(BY);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class JoinPartContext extends ParserRuleContext {
		public JoinPartContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_joinPart; }
	 
		public JoinPartContext() { }
		public void copyFrom(JoinPartContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class InnerJoinContext extends JoinPartContext {
		public TerminalNode JOIN() { return getToken(MySqlParser.JOIN, 0); }
		public TableSourceItemContext tableSourceItem() {
			return getRuleContext(TableSourceItemContext.class,0);
		}
		public TerminalNode LATERAL() { return getToken(MySqlParser.LATERAL, 0); }
		public List joinSpec() {
			return getRuleContexts(JoinSpecContext.class);
		}
		public JoinSpecContext joinSpec(int i) {
			return getRuleContext(JoinSpecContext.class,i);
		}
		public TerminalNode INNER() { return getToken(MySqlParser.INNER, 0); }
		public TerminalNode CROSS() { return getToken(MySqlParser.CROSS, 0); }
		public InnerJoinContext(JoinPartContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterInnerJoin(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitInnerJoin(this);
		}
	}
	public static class NaturalJoinContext extends JoinPartContext {
		public TerminalNode NATURAL() { return getToken(MySqlParser.NATURAL, 0); }
		public TerminalNode JOIN() { return getToken(MySqlParser.JOIN, 0); }
		public TableSourceItemContext tableSourceItem() {
			return getRuleContext(TableSourceItemContext.class,0);
		}
		public TerminalNode LEFT() { return getToken(MySqlParser.LEFT, 0); }
		public TerminalNode RIGHT() { return getToken(MySqlParser.RIGHT, 0); }
		public TerminalNode OUTER() { return getToken(MySqlParser.OUTER, 0); }
		public NaturalJoinContext(JoinPartContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterNaturalJoin(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitNaturalJoin(this);
		}
	}
	public static class OuterJoinContext extends JoinPartContext {
		public TerminalNode JOIN() { return getToken(MySqlParser.JOIN, 0); }
		public TableSourceItemContext tableSourceItem() {
			return getRuleContext(TableSourceItemContext.class,0);
		}
		public TerminalNode LEFT() { return getToken(MySqlParser.LEFT, 0); }
		public TerminalNode RIGHT() { return getToken(MySqlParser.RIGHT, 0); }
		public TerminalNode OUTER() { return getToken(MySqlParser.OUTER, 0); }
		public TerminalNode LATERAL() { return getToken(MySqlParser.LATERAL, 0); }
		public List joinSpec() {
			return getRuleContexts(JoinSpecContext.class);
		}
		public JoinSpecContext joinSpec(int i) {
			return getRuleContext(JoinSpecContext.class,i);
		}
		public OuterJoinContext(JoinPartContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterOuterJoin(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitOuterJoin(this);
		}
	}
	public static class StraightJoinContext extends JoinPartContext {
		public TerminalNode STRAIGHT_JOIN() { return getToken(MySqlParser.STRAIGHT_JOIN, 0); }
		public TableSourceItemContext tableSourceItem() {
			return getRuleContext(TableSourceItemContext.class,0);
		}
		public List ON() { return getTokens(MySqlParser.ON); }
		public TerminalNode ON(int i) {
			return getToken(MySqlParser.ON, i);
		}
		public List expression() {
			return getRuleContexts(ExpressionContext.class);
		}
		public ExpressionContext expression(int i) {
			return getRuleContext(ExpressionContext.class,i);
		}
		public StraightJoinContext(JoinPartContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterStraightJoin(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitStraightJoin(this);
		}
	}

	public final JoinPartContext joinPart() throws RecognitionException {
		JoinPartContext _localctx = new JoinPartContext(_ctx, getState());
		enterRule(_localctx, 262, RULE_joinPart);
		int _la;
		try {
			int _alt;
			setState(4168);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case CROSS:
			case INNER:
			case JOIN:
				_localctx = new InnerJoinContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(4122);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==CROSS || _la==INNER) {
					{
					setState(4121);
					_la = _input.LA(1);
					if ( !(_la==CROSS || _la==INNER) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
				}

				setState(4124);
				match(JOIN);
				setState(4126);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,606,_ctx) ) {
				case 1:
					{
					setState(4125);
					match(LATERAL);
					}
					break;
				}
				setState(4128);
				tableSourceItem();
				setState(4132);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,607,_ctx);
				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
					if ( _alt==1 ) {
						{
						{
						setState(4129);
						joinSpec();
						}
						} 
					}
					setState(4134);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,607,_ctx);
				}
				}
				break;
			case STRAIGHT_JOIN:
				_localctx = new StraightJoinContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(4135);
				match(STRAIGHT_JOIN);
				setState(4136);
				tableSourceItem();
				setState(4141);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,608,_ctx);
				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
					if ( _alt==1 ) {
						{
						{
						setState(4137);
						match(ON);
						setState(4138);
						expression(0);
						}
						} 
					}
					setState(4143);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,608,_ctx);
				}
				}
				break;
			case LEFT:
			case RIGHT:
				_localctx = new OuterJoinContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(4144);
				_la = _input.LA(1);
				if ( !(_la==LEFT || _la==RIGHT) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(4146);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==OUTER) {
					{
					setState(4145);
					match(OUTER);
					}
				}

				setState(4148);
				match(JOIN);
				setState(4150);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,610,_ctx) ) {
				case 1:
					{
					setState(4149);
					match(LATERAL);
					}
					break;
				}
				setState(4152);
				tableSourceItem();
				setState(4156);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,611,_ctx);
				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
					if ( _alt==1 ) {
						{
						{
						setState(4153);
						joinSpec();
						}
						} 
					}
					setState(4158);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,611,_ctx);
				}
				}
				break;
			case NATURAL:
				_localctx = new NaturalJoinContext(_localctx);
				enterOuterAlt(_localctx, 4);
				{
				setState(4159);
				match(NATURAL);
				setState(4164);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LEFT || _la==RIGHT) {
					{
					setState(4160);
					_la = _input.LA(1);
					if ( !(_la==LEFT || _la==RIGHT) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					setState(4162);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==OUTER) {
						{
						setState(4161);
						match(OUTER);
						}
					}

					}
				}

				setState(4166);
				match(JOIN);
				setState(4167);
				tableSourceItem();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class JoinSpecContext extends ParserRuleContext {
		public TerminalNode ON() { return getToken(MySqlParser.ON, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode USING() { return getToken(MySqlParser.USING, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public UidListContext uidList() {
			return getRuleContext(UidListContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public JoinSpecContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_joinSpec; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterJoinSpec(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitJoinSpec(this);
		}
	}

	public final JoinSpecContext joinSpec() throws RecognitionException {
		JoinSpecContext _localctx = new JoinSpecContext(_ctx, getState());
		enterRule(_localctx, 264, RULE_joinSpec);
		try {
			setState(4177);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case ON:
				enterOuterAlt(_localctx, 1);
				{
				{
				setState(4170);
				match(ON);
				setState(4171);
				expression(0);
				}
				}
				break;
			case USING:
				enterOuterAlt(_localctx, 2);
				{
				setState(4172);
				match(USING);
				setState(4173);
				match(LR_BRACKET);
				setState(4174);
				uidList();
				setState(4175);
				match(RR_BRACKET);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class QueryExpressionContext extends ParserRuleContext {
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public QuerySpecificationContext querySpecification() {
			return getRuleContext(QuerySpecificationContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public QueryExpressionContext queryExpression() {
			return getRuleContext(QueryExpressionContext.class,0);
		}
		public QueryExpressionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_queryExpression; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterQueryExpression(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitQueryExpression(this);
		}
	}

	public final QueryExpressionContext queryExpression() throws RecognitionException {
		QueryExpressionContext _localctx = new QueryExpressionContext(_ctx, getState());
		enterRule(_localctx, 266, RULE_queryExpression);
		try {
			setState(4187);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,616,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(4179);
				match(LR_BRACKET);
				setState(4180);
				querySpecification();
				setState(4181);
				match(RR_BRACKET);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(4183);
				match(LR_BRACKET);
				setState(4184);
				queryExpression();
				setState(4185);
				match(RR_BRACKET);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class QueryExpressionNointoContext extends ParserRuleContext {
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public QuerySpecificationNointoContext querySpecificationNointo() {
			return getRuleContext(QuerySpecificationNointoContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public QueryExpressionNointoContext queryExpressionNointo() {
			return getRuleContext(QueryExpressionNointoContext.class,0);
		}
		public QueryExpressionNointoContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_queryExpressionNointo; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterQueryExpressionNointo(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitQueryExpressionNointo(this);
		}
	}

	public final QueryExpressionNointoContext queryExpressionNointo() throws RecognitionException {
		QueryExpressionNointoContext _localctx = new QueryExpressionNointoContext(_ctx, getState());
		enterRule(_localctx, 268, RULE_queryExpressionNointo);
		try {
			setState(4197);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,617,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(4189);
				match(LR_BRACKET);
				setState(4190);
				querySpecificationNointo();
				setState(4191);
				match(RR_BRACKET);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(4193);
				match(LR_BRACKET);
				setState(4194);
				queryExpressionNointo();
				setState(4195);
				match(RR_BRACKET);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class QuerySpecificationContext extends ParserRuleContext {
		public TerminalNode SELECT() { return getToken(MySqlParser.SELECT, 0); }
		public SelectElementsContext selectElements() {
			return getRuleContext(SelectElementsContext.class,0);
		}
		public List selectSpec() {
			return getRuleContexts(SelectSpecContext.class);
		}
		public SelectSpecContext selectSpec(int i) {
			return getRuleContext(SelectSpecContext.class,i);
		}
		public SelectIntoExpressionContext selectIntoExpression() {
			return getRuleContext(SelectIntoExpressionContext.class,0);
		}
		public FromClauseContext fromClause() {
			return getRuleContext(FromClauseContext.class,0);
		}
		public GroupByClauseContext groupByClause() {
			return getRuleContext(GroupByClauseContext.class,0);
		}
		public HavingClauseContext havingClause() {
			return getRuleContext(HavingClauseContext.class,0);
		}
		public WindowClauseContext windowClause() {
			return getRuleContext(WindowClauseContext.class,0);
		}
		public OrderByClauseContext orderByClause() {
			return getRuleContext(OrderByClauseContext.class,0);
		}
		public LimitClauseContext limitClause() {
			return getRuleContext(LimitClauseContext.class,0);
		}
		public QuerySpecificationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_querySpecification; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterQuerySpecification(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitQuerySpecification(this);
		}
	}

	public final QuerySpecificationContext querySpecification() throws RecognitionException {
		QuerySpecificationContext _localctx = new QuerySpecificationContext(_ctx, getState());
		enterRule(_localctx, 270, RULE_querySpecification);
		int _la;
		try {
			int _alt;
			setState(4257);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,634,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(4199);
				match(SELECT);
				setState(4203);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,618,_ctx);
				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
					if ( _alt==1 ) {
						{
						{
						setState(4200);
						selectSpec();
						}
						} 
					}
					setState(4205);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,618,_ctx);
				}
				setState(4206);
				selectElements();
				setState(4208);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==INTO) {
					{
					setState(4207);
					selectIntoExpression();
					}
				}

				setState(4211);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,620,_ctx) ) {
				case 1:
					{
					setState(4210);
					fromClause();
					}
					break;
				}
				setState(4214);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,621,_ctx) ) {
				case 1:
					{
					setState(4213);
					groupByClause();
					}
					break;
				}
				setState(4217);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==HAVING) {
					{
					setState(4216);
					havingClause();
					}
				}

				setState(4220);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==WINDOW) {
					{
					setState(4219);
					windowClause();
					}
				}

				setState(4223);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,624,_ctx) ) {
				case 1:
					{
					setState(4222);
					orderByClause();
					}
					break;
				}
				setState(4226);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,625,_ctx) ) {
				case 1:
					{
					setState(4225);
					limitClause();
					}
					break;
				}
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(4228);
				match(SELECT);
				setState(4232);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,626,_ctx);
				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
					if ( _alt==1 ) {
						{
						{
						setState(4229);
						selectSpec();
						}
						} 
					}
					setState(4234);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,626,_ctx);
				}
				setState(4235);
				selectElements();
				setState(4237);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,627,_ctx) ) {
				case 1:
					{
					setState(4236);
					fromClause();
					}
					break;
				}
				setState(4240);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,628,_ctx) ) {
				case 1:
					{
					setState(4239);
					groupByClause();
					}
					break;
				}
				setState(4243);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==HAVING) {
					{
					setState(4242);
					havingClause();
					}
				}

				setState(4246);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==WINDOW) {
					{
					setState(4245);
					windowClause();
					}
				}

				setState(4249);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,631,_ctx) ) {
				case 1:
					{
					setState(4248);
					orderByClause();
					}
					break;
				}
				setState(4252);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,632,_ctx) ) {
				case 1:
					{
					setState(4251);
					limitClause();
					}
					break;
				}
				setState(4255);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==INTO) {
					{
					setState(4254);
					selectIntoExpression();
					}
				}

				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class QuerySpecificationNointoContext extends ParserRuleContext {
		public TerminalNode SELECT() { return getToken(MySqlParser.SELECT, 0); }
		public SelectElementsContext selectElements() {
			return getRuleContext(SelectElementsContext.class,0);
		}
		public List selectSpec() {
			return getRuleContexts(SelectSpecContext.class);
		}
		public SelectSpecContext selectSpec(int i) {
			return getRuleContext(SelectSpecContext.class,i);
		}
		public FromClauseContext fromClause() {
			return getRuleContext(FromClauseContext.class,0);
		}
		public GroupByClauseContext groupByClause() {
			return getRuleContext(GroupByClauseContext.class,0);
		}
		public HavingClauseContext havingClause() {
			return getRuleContext(HavingClauseContext.class,0);
		}
		public WindowClauseContext windowClause() {
			return getRuleContext(WindowClauseContext.class,0);
		}
		public OrderByClauseContext orderByClause() {
			return getRuleContext(OrderByClauseContext.class,0);
		}
		public LimitClauseContext limitClause() {
			return getRuleContext(LimitClauseContext.class,0);
		}
		public UnionStatementContext unionStatement() {
			return getRuleContext(UnionStatementContext.class,0);
		}
		public QuerySpecificationNointoContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_querySpecificationNointo; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterQuerySpecificationNointo(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitQuerySpecificationNointo(this);
		}
	}

	public final QuerySpecificationNointoContext querySpecificationNointo() throws RecognitionException {
		QuerySpecificationNointoContext _localctx = new QuerySpecificationNointoContext(_ctx, getState());
		enterRule(_localctx, 272, RULE_querySpecificationNointo);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(4259);
			match(SELECT);
			setState(4263);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,635,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					{
					{
					setState(4260);
					selectSpec();
					}
					} 
				}
				setState(4265);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,635,_ctx);
			}
			setState(4266);
			selectElements();
			setState(4268);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,636,_ctx) ) {
			case 1:
				{
				setState(4267);
				fromClause();
				}
				break;
			}
			setState(4271);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,637,_ctx) ) {
			case 1:
				{
				setState(4270);
				groupByClause();
				}
				break;
			}
			setState(4274);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==HAVING) {
				{
				setState(4273);
				havingClause();
				}
			}

			setState(4277);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WINDOW) {
				{
				setState(4276);
				windowClause();
				}
			}

			setState(4280);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,640,_ctx) ) {
			case 1:
				{
				setState(4279);
				orderByClause();
				}
				break;
			}
			setState(4283);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,641,_ctx) ) {
			case 1:
				{
				setState(4282);
				limitClause();
				}
				break;
			}
			setState(4286);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,642,_ctx) ) {
			case 1:
				{
				setState(4285);
				unionStatement();
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class UnionParenthesisContext extends ParserRuleContext {
		public Token unionType;
		public TerminalNode UNION() { return getToken(MySqlParser.UNION, 0); }
		public QueryExpressionNointoContext queryExpressionNointo() {
			return getRuleContext(QueryExpressionNointoContext.class,0);
		}
		public TerminalNode ALL() { return getToken(MySqlParser.ALL, 0); }
		public TerminalNode DISTINCT() { return getToken(MySqlParser.DISTINCT, 0); }
		public UnionParenthesisContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_unionParenthesis; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterUnionParenthesis(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitUnionParenthesis(this);
		}
	}

	public final UnionParenthesisContext unionParenthesis() throws RecognitionException {
		UnionParenthesisContext _localctx = new UnionParenthesisContext(_ctx, getState());
		enterRule(_localctx, 274, RULE_unionParenthesis);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4288);
			match(UNION);
			setState(4290);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ALL || _la==DISTINCT) {
				{
				setState(4289);
				((UnionParenthesisContext)_localctx).unionType = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==ALL || _la==DISTINCT) ) {
					((UnionParenthesisContext)_localctx).unionType = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(4292);
			queryExpressionNointo();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class UnionStatementContext extends ParserRuleContext {
		public Token unionType;
		public TerminalNode UNION() { return getToken(MySqlParser.UNION, 0); }
		public QuerySpecificationNointoContext querySpecificationNointo() {
			return getRuleContext(QuerySpecificationNointoContext.class,0);
		}
		public QueryExpressionNointoContext queryExpressionNointo() {
			return getRuleContext(QueryExpressionNointoContext.class,0);
		}
		public TerminalNode ALL() { return getToken(MySqlParser.ALL, 0); }
		public TerminalNode DISTINCT() { return getToken(MySqlParser.DISTINCT, 0); }
		public UnionStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_unionStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterUnionStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitUnionStatement(this);
		}
	}

	public final UnionStatementContext unionStatement() throws RecognitionException {
		UnionStatementContext _localctx = new UnionStatementContext(_ctx, getState());
		enterRule(_localctx, 276, RULE_unionStatement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4294);
			match(UNION);
			setState(4296);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ALL || _la==DISTINCT) {
				{
				setState(4295);
				((UnionStatementContext)_localctx).unionType = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==ALL || _la==DISTINCT) ) {
					((UnionStatementContext)_localctx).unionType = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(4300);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case SELECT:
				{
				setState(4298);
				querySpecificationNointo();
				}
				break;
			case LR_BRACKET:
				{
				setState(4299);
				queryExpressionNointo();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class LateralStatementContext extends ParserRuleContext {
		public TerminalNode LATERAL() { return getToken(MySqlParser.LATERAL, 0); }
		public QuerySpecificationNointoContext querySpecificationNointo() {
			return getRuleContext(QuerySpecificationNointoContext.class,0);
		}
		public QueryExpressionNointoContext queryExpressionNointo() {
			return getRuleContext(QueryExpressionNointoContext.class,0);
		}
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode AS() { return getToken(MySqlParser.AS, 0); }
		public LateralStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_lateralStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterLateralStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitLateralStatement(this);
		}
	}

	public final LateralStatementContext lateralStatement() throws RecognitionException {
		LateralStatementContext _localctx = new LateralStatementContext(_ctx, getState());
		enterRule(_localctx, 278, RULE_lateralStatement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4302);
			match(LATERAL);
			setState(4317);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,649,_ctx) ) {
			case 1:
				{
				setState(4303);
				querySpecificationNointo();
				}
				break;
			case 2:
				{
				setState(4304);
				queryExpressionNointo();
				}
				break;
			case 3:
				{
				{
				setState(4305);
				match(LR_BRACKET);
				setState(4308);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case SELECT:
					{
					setState(4306);
					querySpecificationNointo();
					}
					break;
				case LR_BRACKET:
					{
					setState(4307);
					queryExpressionNointo();
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(4310);
				match(RR_BRACKET);
				setState(4315);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,648,_ctx) ) {
				case 1:
					{
					setState(4312);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==AS) {
						{
						setState(4311);
						match(AS);
						}
					}

					setState(4314);
					uid();
					}
					break;
				}
				}
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class JsonTableContext extends ParserRuleContext {
		public TerminalNode JSON_TABLE() { return getToken(MySqlParser.JSON_TABLE, 0); }
		public List LR_BRACKET() { return getTokens(MySqlParser.LR_BRACKET); }
		public TerminalNode LR_BRACKET(int i) {
			return getToken(MySqlParser.LR_BRACKET, i);
		}
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode COMMA() { return getToken(MySqlParser.COMMA, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode COLUMNS() { return getToken(MySqlParser.COLUMNS, 0); }
		public JsonColumnListContext jsonColumnList() {
			return getRuleContext(JsonColumnListContext.class,0);
		}
		public List RR_BRACKET() { return getTokens(MySqlParser.RR_BRACKET); }
		public TerminalNode RR_BRACKET(int i) {
			return getToken(MySqlParser.RR_BRACKET, i);
		}
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode AS() { return getToken(MySqlParser.AS, 0); }
		public JsonTableContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_jsonTable; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterJsonTable(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitJsonTable(this);
		}
	}

	public final JsonTableContext jsonTable() throws RecognitionException {
		JsonTableContext _localctx = new JsonTableContext(_ctx, getState());
		enterRule(_localctx, 280, RULE_jsonTable);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4319);
			match(JSON_TABLE);
			setState(4320);
			match(LR_BRACKET);
			setState(4321);
			expression(0);
			setState(4322);
			match(COMMA);
			setState(4323);
			match(STRING_LITERAL);
			setState(4324);
			match(COLUMNS);
			setState(4325);
			match(LR_BRACKET);
			setState(4326);
			jsonColumnList();
			setState(4327);
			match(RR_BRACKET);
			setState(4328);
			match(RR_BRACKET);
			setState(4333);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,651,_ctx) ) {
			case 1:
				{
				setState(4330);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==AS) {
					{
					setState(4329);
					match(AS);
					}
				}

				setState(4332);
				uid();
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class JsonColumnListContext extends ParserRuleContext {
		public List jsonColumn() {
			return getRuleContexts(JsonColumnContext.class);
		}
		public JsonColumnContext jsonColumn(int i) {
			return getRuleContext(JsonColumnContext.class,i);
		}
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public JsonColumnListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_jsonColumnList; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterJsonColumnList(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitJsonColumnList(this);
		}
	}

	public final JsonColumnListContext jsonColumnList() throws RecognitionException {
		JsonColumnListContext _localctx = new JsonColumnListContext(_ctx, getState());
		enterRule(_localctx, 282, RULE_jsonColumnList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4335);
			jsonColumn();
			setState(4340);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(4336);
				match(COMMA);
				setState(4337);
				jsonColumn();
				}
				}
				setState(4342);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class JsonColumnContext extends ParserRuleContext {
		public FullColumnNameContext fullColumnName() {
			return getRuleContext(FullColumnNameContext.class,0);
		}
		public TerminalNode FOR() { return getToken(MySqlParser.FOR, 0); }
		public TerminalNode ORDINALITY() { return getToken(MySqlParser.ORDINALITY, 0); }
		public DataTypeContext dataType() {
			return getRuleContext(DataTypeContext.class,0);
		}
		public TerminalNode PATH() { return getToken(MySqlParser.PATH, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode EXISTS() { return getToken(MySqlParser.EXISTS, 0); }
		public JsonOnEmptyContext jsonOnEmpty() {
			return getRuleContext(JsonOnEmptyContext.class,0);
		}
		public JsonOnErrorContext jsonOnError() {
			return getRuleContext(JsonOnErrorContext.class,0);
		}
		public TerminalNode NESTED() { return getToken(MySqlParser.NESTED, 0); }
		public TerminalNode COLUMNS() { return getToken(MySqlParser.COLUMNS, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public JsonColumnListContext jsonColumnList() {
			return getRuleContext(JsonColumnListContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public JsonColumnContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_jsonColumn; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterJsonColumn(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitJsonColumn(this);
		}
	}

	public final JsonColumnContext jsonColumn() throws RecognitionException {
		JsonColumnContext _localctx = new JsonColumnContext(_ctx, getState());
		enterRule(_localctx, 284, RULE_jsonColumn);
		int _la;
		try {
			setState(4372);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,658,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(4343);
				fullColumnName();
				setState(4360);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case FOR:
					{
					setState(4344);
					match(FOR);
					setState(4345);
					match(ORDINALITY);
					}
					break;
				case CHARACTER:
				case SET:
				case TINYINT:
				case SMALLINT:
				case MEDIUMINT:
				case MIDDLEINT:
				case INT:
				case INT1:
				case INT2:
				case INT3:
				case INT4:
				case INT8:
				case INTEGER:
				case BIGINT:
				case REAL:
				case DOUBLE:
				case FLOAT:
				case FLOAT4:
				case FLOAT8:
				case DECIMAL:
				case DEC:
				case NUMERIC:
				case DATE:
				case TIME:
				case TIMESTAMP:
				case DATETIME:
				case YEAR:
				case CHAR:
				case VARCHAR:
				case NVARCHAR:
				case NATIONAL:
				case BINARY:
				case VARBINARY:
				case TINYBLOB:
				case BLOB:
				case MEDIUMBLOB:
				case LONG:
				case LONGBLOB:
				case TINYTEXT:
				case TEXT:
				case MEDIUMTEXT:
				case LONGTEXT:
				case ENUM:
				case SERIAL:
				case BIT:
				case BOOL:
				case BOOLEAN:
				case FIXED:
				case JSON:
				case NCHAR:
				case GEOMETRYCOLLECTION:
				case GEOMCOLLECTION:
				case GEOMETRY:
				case LINESTRING:
				case MULTILINESTRING:
				case MULTIPOINT:
				case MULTIPOLYGON:
				case POINT:
				case POLYGON:
				case UUID:
					{
					setState(4346);
					dataType();
					setState(4358);
					_errHandler.sync(this);
					switch (_input.LA(1)) {
					case PATH:
						{
						setState(4347);
						match(PATH);
						setState(4348);
						match(STRING_LITERAL);
						setState(4350);
						_errHandler.sync(this);
						switch ( getInterpreter().adaptivePredict(_input,653,_ctx) ) {
						case 1:
							{
							setState(4349);
							jsonOnEmpty();
							}
							break;
						}
						setState(4353);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==DEFAULT || _la==NULL_LITERAL || _la==ERROR) {
							{
							setState(4352);
							jsonOnError();
							}
						}

						}
						break;
					case EXISTS:
						{
						setState(4355);
						match(EXISTS);
						setState(4356);
						match(PATH);
						setState(4357);
						match(STRING_LITERAL);
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(4362);
				match(NESTED);
				setState(4364);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==PATH) {
					{
					setState(4363);
					match(PATH);
					}
				}

				setState(4366);
				match(STRING_LITERAL);
				setState(4367);
				match(COLUMNS);
				setState(4368);
				match(LR_BRACKET);
				setState(4369);
				jsonColumnList();
				setState(4370);
				match(RR_BRACKET);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class JsonOnEmptyContext extends ParserRuleContext {
		public TerminalNode ON() { return getToken(MySqlParser.ON, 0); }
		public TerminalNode EMPTY() { return getToken(MySqlParser.EMPTY, 0); }
		public TerminalNode NULL_LITERAL() { return getToken(MySqlParser.NULL_LITERAL, 0); }
		public TerminalNode ERROR() { return getToken(MySqlParser.ERROR, 0); }
		public TerminalNode DEFAULT() { return getToken(MySqlParser.DEFAULT, 0); }
		public DefaultValueContext defaultValue() {
			return getRuleContext(DefaultValueContext.class,0);
		}
		public JsonOnEmptyContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_jsonOnEmpty; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterJsonOnEmpty(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitJsonOnEmpty(this);
		}
	}

	public final JsonOnEmptyContext jsonOnEmpty() throws RecognitionException {
		JsonOnEmptyContext _localctx = new JsonOnEmptyContext(_ctx, getState());
		enterRule(_localctx, 286, RULE_jsonOnEmpty);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4378);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case NULL_LITERAL:
				{
				setState(4374);
				match(NULL_LITERAL);
				}
				break;
			case ERROR:
				{
				setState(4375);
				match(ERROR);
				}
				break;
			case DEFAULT:
				{
				setState(4376);
				match(DEFAULT);
				setState(4377);
				defaultValue();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			setState(4380);
			match(ON);
			setState(4381);
			match(EMPTY);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class JsonOnErrorContext extends ParserRuleContext {
		public TerminalNode ON() { return getToken(MySqlParser.ON, 0); }
		public List ERROR() { return getTokens(MySqlParser.ERROR); }
		public TerminalNode ERROR(int i) {
			return getToken(MySqlParser.ERROR, i);
		}
		public TerminalNode NULL_LITERAL() { return getToken(MySqlParser.NULL_LITERAL, 0); }
		public TerminalNode DEFAULT() { return getToken(MySqlParser.DEFAULT, 0); }
		public DefaultValueContext defaultValue() {
			return getRuleContext(DefaultValueContext.class,0);
		}
		public JsonOnErrorContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_jsonOnError; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterJsonOnError(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitJsonOnError(this);
		}
	}

	public final JsonOnErrorContext jsonOnError() throws RecognitionException {
		JsonOnErrorContext _localctx = new JsonOnErrorContext(_ctx, getState());
		enterRule(_localctx, 288, RULE_jsonOnError);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4387);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case NULL_LITERAL:
				{
				setState(4383);
				match(NULL_LITERAL);
				}
				break;
			case ERROR:
				{
				setState(4384);
				match(ERROR);
				}
				break;
			case DEFAULT:
				{
				setState(4385);
				match(DEFAULT);
				setState(4386);
				defaultValue();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			setState(4389);
			match(ON);
			setState(4390);
			match(ERROR);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SelectSpecContext extends ParserRuleContext {
		public TerminalNode ALL() { return getToken(MySqlParser.ALL, 0); }
		public TerminalNode DISTINCT() { return getToken(MySqlParser.DISTINCT, 0); }
		public TerminalNode DISTINCTROW() { return getToken(MySqlParser.DISTINCTROW, 0); }
		public TerminalNode HIGH_PRIORITY() { return getToken(MySqlParser.HIGH_PRIORITY, 0); }
		public TerminalNode STRAIGHT_JOIN() { return getToken(MySqlParser.STRAIGHT_JOIN, 0); }
		public TerminalNode SQL_SMALL_RESULT() { return getToken(MySqlParser.SQL_SMALL_RESULT, 0); }
		public TerminalNode SQL_BIG_RESULT() { return getToken(MySqlParser.SQL_BIG_RESULT, 0); }
		public TerminalNode SQL_BUFFER_RESULT() { return getToken(MySqlParser.SQL_BUFFER_RESULT, 0); }
		public TerminalNode SQL_CACHE() { return getToken(MySqlParser.SQL_CACHE, 0); }
		public TerminalNode SQL_NO_CACHE() { return getToken(MySqlParser.SQL_NO_CACHE, 0); }
		public TerminalNode SQL_CALC_FOUND_ROWS() { return getToken(MySqlParser.SQL_CALC_FOUND_ROWS, 0); }
		public SelectSpecContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_selectSpec; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSelectSpec(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSelectSpec(this);
		}
	}

	public final SelectSpecContext selectSpec() throws RecognitionException {
		SelectSpecContext _localctx = new SelectSpecContext(_ctx, getState());
		enterRule(_localctx, 290, RULE_selectSpec);
		int _la;
		try {
			setState(4400);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case ALL:
			case DISTINCT:
			case DISTINCTROW:
				enterOuterAlt(_localctx, 1);
				{
				setState(4392);
				_la = _input.LA(1);
				if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ALL) | (1L << DISTINCT) | (1L << DISTINCTROW))) != 0)) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case HIGH_PRIORITY:
				enterOuterAlt(_localctx, 2);
				{
				setState(4393);
				match(HIGH_PRIORITY);
				}
				break;
			case STRAIGHT_JOIN:
				enterOuterAlt(_localctx, 3);
				{
				setState(4394);
				match(STRAIGHT_JOIN);
				}
				break;
			case SQL_SMALL_RESULT:
				enterOuterAlt(_localctx, 4);
				{
				setState(4395);
				match(SQL_SMALL_RESULT);
				}
				break;
			case SQL_BIG_RESULT:
				enterOuterAlt(_localctx, 5);
				{
				setState(4396);
				match(SQL_BIG_RESULT);
				}
				break;
			case SQL_BUFFER_RESULT:
				enterOuterAlt(_localctx, 6);
				{
				setState(4397);
				match(SQL_BUFFER_RESULT);
				}
				break;
			case SQL_CACHE:
			case SQL_NO_CACHE:
				enterOuterAlt(_localctx, 7);
				{
				setState(4398);
				_la = _input.LA(1);
				if ( !(_la==SQL_CACHE || _la==SQL_NO_CACHE) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case SQL_CALC_FOUND_ROWS:
				enterOuterAlt(_localctx, 8);
				{
				setState(4399);
				match(SQL_CALC_FOUND_ROWS);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SelectElementsContext extends ParserRuleContext {
		public Token star;
		public List selectElement() {
			return getRuleContexts(SelectElementContext.class);
		}
		public SelectElementContext selectElement(int i) {
			return getRuleContext(SelectElementContext.class,i);
		}
		public TerminalNode STAR() { return getToken(MySqlParser.STAR, 0); }
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public SelectElementsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_selectElements; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSelectElements(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSelectElements(this);
		}
	}

	public final SelectElementsContext selectElements() throws RecognitionException {
		SelectElementsContext _localctx = new SelectElementsContext(_ctx, getState());
		enterRule(_localctx, 292, RULE_selectElements);
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(4404);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,662,_ctx) ) {
			case 1:
				{
				setState(4402);
				((SelectElementsContext)_localctx).star = match(STAR);
				}
				break;
			case 2:
				{
				setState(4403);
				selectElement();
				}
				break;
			}
			setState(4410);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,663,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					{
					{
					setState(4406);
					match(COMMA);
					setState(4407);
					selectElement();
					}
					} 
				}
				setState(4412);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,663,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SelectElementContext extends ParserRuleContext {
		public SelectElementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_selectElement; }
	 
		public SelectElementContext() { }
		public void copyFrom(SelectElementContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class SelectExpressionElementContext extends SelectElementContext {
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode LOCAL_ID() { return getToken(MySqlParser.LOCAL_ID, 0); }
		public TerminalNode VAR_ASSIGN() { return getToken(MySqlParser.VAR_ASSIGN, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode AS() { return getToken(MySqlParser.AS, 0); }
		public SelectExpressionElementContext(SelectElementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSelectExpressionElement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSelectExpressionElement(this);
		}
	}
	public static class SelectFunctionElementContext extends SelectElementContext {
		public FunctionCallContext functionCall() {
			return getRuleContext(FunctionCallContext.class,0);
		}
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode AS() { return getToken(MySqlParser.AS, 0); }
		public SelectFunctionElementContext(SelectElementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSelectFunctionElement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSelectFunctionElement(this);
		}
	}
	public static class SelectStarElementContext extends SelectElementContext {
		public FullIdContext fullId() {
			return getRuleContext(FullIdContext.class,0);
		}
		public TerminalNode DOT() { return getToken(MySqlParser.DOT, 0); }
		public TerminalNode STAR() { return getToken(MySqlParser.STAR, 0); }
		public SelectStarElementContext(SelectElementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSelectStarElement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSelectStarElement(this);
		}
	}
	public static class SelectColumnElementContext extends SelectElementContext {
		public FullColumnNameContext fullColumnName() {
			return getRuleContext(FullColumnNameContext.class,0);
		}
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode AS() { return getToken(MySqlParser.AS, 0); }
		public SelectColumnElementContext(SelectElementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSelectColumnElement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSelectColumnElement(this);
		}
	}

	public final SelectElementContext selectElement() throws RecognitionException {
		SelectElementContext _localctx = new SelectElementContext(_ctx, getState());
		enterRule(_localctx, 294, RULE_selectElement);
		int _la;
		try {
			setState(4442);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,671,_ctx) ) {
			case 1:
				_localctx = new SelectStarElementContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(4413);
				fullId();
				setState(4414);
				match(DOT);
				setState(4415);
				match(STAR);
				}
				break;
			case 2:
				_localctx = new SelectColumnElementContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(4417);
				fullColumnName();
				setState(4422);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,665,_ctx) ) {
				case 1:
					{
					setState(4419);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==AS) {
						{
						setState(4418);
						match(AS);
						}
					}

					setState(4421);
					uid();
					}
					break;
				}
				}
				break;
			case 3:
				_localctx = new SelectFunctionElementContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(4424);
				functionCall();
				setState(4429);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,667,_ctx) ) {
				case 1:
					{
					setState(4426);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==AS) {
						{
						setState(4425);
						match(AS);
						}
					}

					setState(4428);
					uid();
					}
					break;
				}
				}
				break;
			case 4:
				_localctx = new SelectExpressionElementContext(_localctx);
				enterOuterAlt(_localctx, 4);
				{
				setState(4433);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,668,_ctx) ) {
				case 1:
					{
					setState(4431);
					match(LOCAL_ID);
					setState(4432);
					match(VAR_ASSIGN);
					}
					break;
				}
				setState(4435);
				expression(0);
				setState(4440);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,670,_ctx) ) {
				case 1:
					{
					setState(4437);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==AS) {
						{
						setState(4436);
						match(AS);
						}
					}

					setState(4439);
					uid();
					}
					break;
				}
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SelectIntoExpressionContext extends ParserRuleContext {
		public SelectIntoExpressionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_selectIntoExpression; }
	 
		public SelectIntoExpressionContext() { }
		public void copyFrom(SelectIntoExpressionContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class SelectIntoVariablesContext extends SelectIntoExpressionContext {
		public TerminalNode INTO() { return getToken(MySqlParser.INTO, 0); }
		public List assignmentField() {
			return getRuleContexts(AssignmentFieldContext.class);
		}
		public AssignmentFieldContext assignmentField(int i) {
			return getRuleContext(AssignmentFieldContext.class,i);
		}
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public SelectIntoVariablesContext(SelectIntoExpressionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSelectIntoVariables(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSelectIntoVariables(this);
		}
	}
	public static class SelectIntoTextFileContext extends SelectIntoExpressionContext {
		public Token filename;
		public CharsetNameContext charset;
		public Token fieldsFormat;
		public TerminalNode INTO() { return getToken(MySqlParser.INTO, 0); }
		public TerminalNode OUTFILE() { return getToken(MySqlParser.OUTFILE, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode CHARACTER() { return getToken(MySqlParser.CHARACTER, 0); }
		public TerminalNode SET() { return getToken(MySqlParser.SET, 0); }
		public TerminalNode LINES() { return getToken(MySqlParser.LINES, 0); }
		public CharsetNameContext charsetName() {
			return getRuleContext(CharsetNameContext.class,0);
		}
		public TerminalNode FIELDS() { return getToken(MySqlParser.FIELDS, 0); }
		public TerminalNode COLUMNS() { return getToken(MySqlParser.COLUMNS, 0); }
		public List selectFieldsInto() {
			return getRuleContexts(SelectFieldsIntoContext.class);
		}
		public SelectFieldsIntoContext selectFieldsInto(int i) {
			return getRuleContext(SelectFieldsIntoContext.class,i);
		}
		public List selectLinesInto() {
			return getRuleContexts(SelectLinesIntoContext.class);
		}
		public SelectLinesIntoContext selectLinesInto(int i) {
			return getRuleContext(SelectLinesIntoContext.class,i);
		}
		public SelectIntoTextFileContext(SelectIntoExpressionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSelectIntoTextFile(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSelectIntoTextFile(this);
		}
	}
	public static class SelectIntoDumpFileContext extends SelectIntoExpressionContext {
		public TerminalNode INTO() { return getToken(MySqlParser.INTO, 0); }
		public TerminalNode DUMPFILE() { return getToken(MySqlParser.DUMPFILE, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public SelectIntoDumpFileContext(SelectIntoExpressionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSelectIntoDumpFile(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSelectIntoDumpFile(this);
		}
	}

	public final SelectIntoExpressionContext selectIntoExpression() throws RecognitionException {
		SelectIntoExpressionContext _localctx = new SelectIntoExpressionContext(_ctx, getState());
		enterRule(_localctx, 296, RULE_selectIntoExpression);
		int _la;
		try {
			setState(4480);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,678,_ctx) ) {
			case 1:
				_localctx = new SelectIntoVariablesContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(4444);
				match(INTO);
				setState(4445);
				assignmentField();
				setState(4450);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(4446);
					match(COMMA);
					setState(4447);
					assignmentField();
					}
					}
					setState(4452);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			case 2:
				_localctx = new SelectIntoDumpFileContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(4453);
				match(INTO);
				setState(4454);
				match(DUMPFILE);
				setState(4455);
				match(STRING_LITERAL);
				}
				break;
			case 3:
				_localctx = new SelectIntoTextFileContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				{
				setState(4456);
				match(INTO);
				setState(4457);
				match(OUTFILE);
				setState(4458);
				((SelectIntoTextFileContext)_localctx).filename = match(STRING_LITERAL);
				setState(4462);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==CHARACTER) {
					{
					setState(4459);
					match(CHARACTER);
					setState(4460);
					match(SET);
					setState(4461);
					((SelectIntoTextFileContext)_localctx).charset = charsetName();
					}
				}

				setState(4470);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,675,_ctx) ) {
				case 1:
					{
					setState(4464);
					((SelectIntoTextFileContext)_localctx).fieldsFormat = _input.LT(1);
					_la = _input.LA(1);
					if ( !(_la==COLUMNS || _la==FIELDS) ) {
						((SelectIntoTextFileContext)_localctx).fieldsFormat = (Token)_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					setState(4466); 
					_errHandler.sync(this);
					_la = _input.LA(1);
					do {
						{
						{
						setState(4465);
						selectFieldsInto();
						}
						}
						setState(4468); 
						_errHandler.sync(this);
						_la = _input.LA(1);
					} while ( _la==ENCLOSED || _la==ESCAPED || _la==OPTIONALLY || _la==TERMINATED );
					}
					break;
				}
				setState(4478);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LINES) {
					{
					setState(4472);
					match(LINES);
					setState(4474); 
					_errHandler.sync(this);
					_la = _input.LA(1);
					do {
						{
						{
						setState(4473);
						selectLinesInto();
						}
						}
						setState(4476); 
						_errHandler.sync(this);
						_la = _input.LA(1);
					} while ( _la==STARTING || _la==TERMINATED );
					}
				}

				}
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SelectFieldsIntoContext extends ParserRuleContext {
		public Token terminationField;
		public Token enclosion;
		public Token escaping;
		public TerminalNode TERMINATED() { return getToken(MySqlParser.TERMINATED, 0); }
		public TerminalNode BY() { return getToken(MySqlParser.BY, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode ENCLOSED() { return getToken(MySqlParser.ENCLOSED, 0); }
		public TerminalNode OPTIONALLY() { return getToken(MySqlParser.OPTIONALLY, 0); }
		public TerminalNode ESCAPED() { return getToken(MySqlParser.ESCAPED, 0); }
		public SelectFieldsIntoContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_selectFieldsInto; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSelectFieldsInto(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSelectFieldsInto(this);
		}
	}

	public final SelectFieldsIntoContext selectFieldsInto() throws RecognitionException {
		SelectFieldsIntoContext _localctx = new SelectFieldsIntoContext(_ctx, getState());
		enterRule(_localctx, 298, RULE_selectFieldsInto);
		int _la;
		try {
			setState(4494);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case TERMINATED:
				enterOuterAlt(_localctx, 1);
				{
				setState(4482);
				match(TERMINATED);
				setState(4483);
				match(BY);
				setState(4484);
				((SelectFieldsIntoContext)_localctx).terminationField = match(STRING_LITERAL);
				}
				break;
			case ENCLOSED:
			case OPTIONALLY:
				enterOuterAlt(_localctx, 2);
				{
				setState(4486);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==OPTIONALLY) {
					{
					setState(4485);
					match(OPTIONALLY);
					}
				}

				setState(4488);
				match(ENCLOSED);
				setState(4489);
				match(BY);
				setState(4490);
				((SelectFieldsIntoContext)_localctx).enclosion = match(STRING_LITERAL);
				}
				break;
			case ESCAPED:
				enterOuterAlt(_localctx, 3);
				{
				setState(4491);
				match(ESCAPED);
				setState(4492);
				match(BY);
				setState(4493);
				((SelectFieldsIntoContext)_localctx).escaping = match(STRING_LITERAL);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SelectLinesIntoContext extends ParserRuleContext {
		public Token starting;
		public Token terminationLine;
		public TerminalNode STARTING() { return getToken(MySqlParser.STARTING, 0); }
		public TerminalNode BY() { return getToken(MySqlParser.BY, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode TERMINATED() { return getToken(MySqlParser.TERMINATED, 0); }
		public SelectLinesIntoContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_selectLinesInto; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSelectLinesInto(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSelectLinesInto(this);
		}
	}

	public final SelectLinesIntoContext selectLinesInto() throws RecognitionException {
		SelectLinesIntoContext _localctx = new SelectLinesIntoContext(_ctx, getState());
		enterRule(_localctx, 300, RULE_selectLinesInto);
		try {
			setState(4502);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case STARTING:
				enterOuterAlt(_localctx, 1);
				{
				setState(4496);
				match(STARTING);
				setState(4497);
				match(BY);
				setState(4498);
				((SelectLinesIntoContext)_localctx).starting = match(STRING_LITERAL);
				}
				break;
			case TERMINATED:
				enterOuterAlt(_localctx, 2);
				{
				setState(4499);
				match(TERMINATED);
				setState(4500);
				match(BY);
				setState(4501);
				((SelectLinesIntoContext)_localctx).terminationLine = match(STRING_LITERAL);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FromClauseContext extends ParserRuleContext {
		public ExpressionContext whereExpr;
		public TerminalNode FROM() { return getToken(MySqlParser.FROM, 0); }
		public TableSourcesContext tableSources() {
			return getRuleContext(TableSourcesContext.class,0);
		}
		public TerminalNode WHERE() { return getToken(MySqlParser.WHERE, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public FromClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_fromClause; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterFromClause(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitFromClause(this);
		}
	}

	public final FromClauseContext fromClause() throws RecognitionException {
		FromClauseContext _localctx = new FromClauseContext(_ctx, getState());
		enterRule(_localctx, 302, RULE_fromClause);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4506);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==FROM) {
				{
				setState(4504);
				match(FROM);
				setState(4505);
				tableSources();
				}
			}

			setState(4510);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WHERE) {
				{
				setState(4508);
				match(WHERE);
				setState(4509);
				((FromClauseContext)_localctx).whereExpr = expression(0);
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class GroupByClauseContext extends ParserRuleContext {
		public TerminalNode GROUP() { return getToken(MySqlParser.GROUP, 0); }
		public TerminalNode BY() { return getToken(MySqlParser.BY, 0); }
		public List groupByItem() {
			return getRuleContexts(GroupByItemContext.class);
		}
		public GroupByItemContext groupByItem(int i) {
			return getRuleContext(GroupByItemContext.class,i);
		}
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public TerminalNode WITH() { return getToken(MySqlParser.WITH, 0); }
		public TerminalNode ROLLUP() { return getToken(MySqlParser.ROLLUP, 0); }
		public GroupByClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_groupByClause; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterGroupByClause(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitGroupByClause(this);
		}
	}

	public final GroupByClauseContext groupByClause() throws RecognitionException {
		GroupByClauseContext _localctx = new GroupByClauseContext(_ctx, getState());
		enterRule(_localctx, 304, RULE_groupByClause);
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(4512);
			match(GROUP);
			setState(4513);
			match(BY);
			setState(4514);
			groupByItem();
			setState(4519);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,684,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					{
					{
					setState(4515);
					match(COMMA);
					setState(4516);
					groupByItem();
					}
					} 
				}
				setState(4521);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,684,_ctx);
			}
			setState(4524);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,685,_ctx) ) {
			case 1:
				{
				setState(4522);
				match(WITH);
				setState(4523);
				match(ROLLUP);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class HavingClauseContext extends ParserRuleContext {
		public ExpressionContext havingExpr;
		public TerminalNode HAVING() { return getToken(MySqlParser.HAVING, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public HavingClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_havingClause; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterHavingClause(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitHavingClause(this);
		}
	}

	public final HavingClauseContext havingClause() throws RecognitionException {
		HavingClauseContext _localctx = new HavingClauseContext(_ctx, getState());
		enterRule(_localctx, 306, RULE_havingClause);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4526);
			match(HAVING);
			setState(4527);
			((HavingClauseContext)_localctx).havingExpr = expression(0);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class WindowClauseContext extends ParserRuleContext {
		public TerminalNode WINDOW() { return getToken(MySqlParser.WINDOW, 0); }
		public List windowName() {
			return getRuleContexts(WindowNameContext.class);
		}
		public WindowNameContext windowName(int i) {
			return getRuleContext(WindowNameContext.class,i);
		}
		public List AS() { return getTokens(MySqlParser.AS); }
		public TerminalNode AS(int i) {
			return getToken(MySqlParser.AS, i);
		}
		public List LR_BRACKET() { return getTokens(MySqlParser.LR_BRACKET); }
		public TerminalNode LR_BRACKET(int i) {
			return getToken(MySqlParser.LR_BRACKET, i);
		}
		public List windowSpec() {
			return getRuleContexts(WindowSpecContext.class);
		}
		public WindowSpecContext windowSpec(int i) {
			return getRuleContext(WindowSpecContext.class,i);
		}
		public List RR_BRACKET() { return getTokens(MySqlParser.RR_BRACKET); }
		public TerminalNode RR_BRACKET(int i) {
			return getToken(MySqlParser.RR_BRACKET, i);
		}
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public WindowClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_windowClause; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterWindowClause(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitWindowClause(this);
		}
	}

	public final WindowClauseContext windowClause() throws RecognitionException {
		WindowClauseContext _localctx = new WindowClauseContext(_ctx, getState());
		enterRule(_localctx, 308, RULE_windowClause);
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(4529);
			match(WINDOW);
			setState(4530);
			windowName();
			setState(4531);
			match(AS);
			setState(4532);
			match(LR_BRACKET);
			setState(4533);
			windowSpec();
			setState(4534);
			match(RR_BRACKET);
			setState(4544);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,686,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					{
					{
					setState(4535);
					match(COMMA);
					setState(4536);
					windowName();
					setState(4537);
					match(AS);
					setState(4538);
					match(LR_BRACKET);
					setState(4539);
					windowSpec();
					setState(4540);
					match(RR_BRACKET);
					}
					} 
				}
				setState(4546);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,686,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class GroupByItemContext extends ParserRuleContext {
		public Token order;
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode ASC() { return getToken(MySqlParser.ASC, 0); }
		public TerminalNode DESC() { return getToken(MySqlParser.DESC, 0); }
		public GroupByItemContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_groupByItem; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterGroupByItem(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitGroupByItem(this);
		}
	}

	public final GroupByItemContext groupByItem() throws RecognitionException {
		GroupByItemContext _localctx = new GroupByItemContext(_ctx, getState());
		enterRule(_localctx, 310, RULE_groupByItem);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4547);
			expression(0);
			setState(4549);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,687,_ctx) ) {
			case 1:
				{
				setState(4548);
				((GroupByItemContext)_localctx).order = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==ASC || _la==DESC) ) {
					((GroupByItemContext)_localctx).order = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class LimitClauseContext extends ParserRuleContext {
		public LimitClauseAtomContext offset;
		public LimitClauseAtomContext limit;
		public TerminalNode LIMIT() { return getToken(MySqlParser.LIMIT, 0); }
		public TerminalNode OFFSET() { return getToken(MySqlParser.OFFSET, 0); }
		public List limitClauseAtom() {
			return getRuleContexts(LimitClauseAtomContext.class);
		}
		public LimitClauseAtomContext limitClauseAtom(int i) {
			return getRuleContext(LimitClauseAtomContext.class,i);
		}
		public TerminalNode COMMA() { return getToken(MySqlParser.COMMA, 0); }
		public LimitClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_limitClause; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterLimitClause(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitLimitClause(this);
		}
	}

	public final LimitClauseContext limitClause() throws RecognitionException {
		LimitClauseContext _localctx = new LimitClauseContext(_ctx, getState());
		enterRule(_localctx, 312, RULE_limitClause);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4551);
			match(LIMIT);
			setState(4562);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,689,_ctx) ) {
			case 1:
				{
				setState(4555);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,688,_ctx) ) {
				case 1:
					{
					setState(4552);
					((LimitClauseContext)_localctx).offset = limitClauseAtom();
					setState(4553);
					match(COMMA);
					}
					break;
				}
				setState(4557);
				((LimitClauseContext)_localctx).limit = limitClauseAtom();
				}
				break;
			case 2:
				{
				setState(4558);
				((LimitClauseContext)_localctx).limit = limitClauseAtom();
				setState(4559);
				match(OFFSET);
				setState(4560);
				((LimitClauseContext)_localctx).offset = limitClauseAtom();
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class LimitClauseAtomContext extends ParserRuleContext {
		public DecimalLiteralContext decimalLiteral() {
			return getRuleContext(DecimalLiteralContext.class,0);
		}
		public MysqlVariableContext mysqlVariable() {
			return getRuleContext(MysqlVariableContext.class,0);
		}
		public SimpleIdContext simpleId() {
			return getRuleContext(SimpleIdContext.class,0);
		}
		public LimitClauseAtomContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_limitClauseAtom; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterLimitClauseAtom(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitLimitClauseAtom(this);
		}
	}

	public final LimitClauseAtomContext limitClauseAtom() throws RecognitionException {
		LimitClauseAtomContext _localctx = new LimitClauseAtomContext(_ctx, getState());
		enterRule(_localctx, 314, RULE_limitClauseAtom);
		try {
			setState(4567);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case ZERO_DECIMAL:
			case ONE_DECIMAL:
			case TWO_DECIMAL:
			case DECIMAL_LITERAL:
			case REAL_LITERAL:
				enterOuterAlt(_localctx, 1);
				{
				setState(4564);
				decimalLiteral();
				}
				break;
			case LOCAL_ID:
			case GLOBAL_ID:
				enterOuterAlt(_localctx, 2);
				{
				setState(4565);
				mysqlVariable();
				}
				break;
			case ARRAY:
			case ATTRIBUTE:
			case BUCKETS:
			case CONDITION:
			case CURRENT:
			case CURRENT_ROLE:
			case CURRENT_USER:
			case DATABASE:
			case DEFAULT:
			case DIAGNOSTICS:
			case EMPTY:
			case ENFORCED:
			case EXCEPT:
			case GROUP:
			case GROUP_REPLICATION_STREAM:
			case IF:
			case IGNORED:
			case INSERT:
			case LATERAL:
			case LEFT:
			case LOCKED:
			case MAXVALUE:
			case MINVALUE:
			case NUMBER:
			case OPTIONAL:
			case ORDER:
			case PRIMARY:
			case REPEAT:
			case REPLACE:
			case RIGHT:
			case SCHEMA:
			case SKIP_:
			case SKIP_QUERY_REWRITE:
			case STACKED:
			case STATEMENT:
			case DATE:
			case TIME:
			case TIMESTAMP:
			case DATETIME:
			case YEAR:
			case NATIONAL:
			case BINARY:
			case TEXT:
			case ENUM:
			case SERIAL:
			case JSON_ARRAY:
			case JSON_ARRAYAGG:
			case JSON_ARRAY_APPEND:
			case JSON_ARRAY_INSERT:
			case JSON_CONTAINS:
			case JSON_CONTAINS_PATH:
			case JSON_DEPTH:
			case JSON_EXTRACT:
			case JSON_INSERT:
			case JSON_KEYS:
			case JSON_LENGTH:
			case JSON_MERGE:
			case JSON_MERGE_PATCH:
			case JSON_MERGE_PRESERVE:
			case JSON_OBJECT:
			case JSON_OBJECTAGG:
			case JSON_OVERLAPS:
			case JSON_PRETTY:
			case JSON_QUOTE:
			case JSON_REMOVE:
			case JSON_REPLACE:
			case JSON_SCHEMA_VALID:
			case JSON_SCHEMA_VALIDATION_REPORT:
			case JSON_SEARCH:
			case JSON_SET:
			case JSON_STORAGE_FREE:
			case JSON_STORAGE_SIZE:
			case JSON_TABLE:
			case JSON_TYPE:
			case JSON_UNQUOTE:
			case JSON_VALID:
			case JSON_VALUE:
			case NESTED:
			case ORDINALITY:
			case PATH:
			case AVG:
			case BIT_AND:
			case BIT_OR:
			case BIT_XOR:
			case COUNT:
			case CUME_DIST:
			case DENSE_RANK:
			case FIRST_VALUE:
			case GROUP_CONCAT:
			case LAG:
			case LAST_VALUE:
			case LEAD:
			case MAX:
			case MIN:
			case NTILE:
			case NTH_VALUE:
			case PERCENT_RANK:
			case RANK:
			case ROW_NUMBER:
			case STD:
			case STDDEV:
			case STDDEV_POP:
			case STDDEV_SAMP:
			case SUM:
			case VAR_POP:
			case VAR_SAMP:
			case VARIANCE:
			case CURRENT_DATE:
			case CURRENT_TIME:
			case CURRENT_TIMESTAMP:
			case LOCALTIME:
			case CURDATE:
			case CURTIME:
			case DATE_ADD:
			case DATE_SUB:
			case LOCALTIMESTAMP:
			case NOW:
			case POSITION:
			case SUBSTR:
			case SUBSTRING:
			case SYSDATE:
			case TRIM:
			case UTC_DATE:
			case UTC_TIME:
			case UTC_TIMESTAMP:
			case ACCOUNT:
			case ACTION:
			case AFTER:
			case AGGREGATE:
			case ALGORITHM:
			case ANY:
			case AT:
			case AUTHORS:
			case AUTOCOMMIT:
			case AUTOEXTEND_SIZE:
			case AUTO_INCREMENT:
			case AVG_ROW_LENGTH:
			case BEGIN:
			case BINLOG:
			case BIT:
			case BLOCK:
			case BOOL:
			case BOOLEAN:
			case BTREE:
			case CACHE:
			case CASCADED:
			case CHAIN:
			case CHANGED:
			case CHANNEL:
			case CHECKSUM:
			case PAGE_CHECKSUM:
			case CIPHER:
			case CLASS_ORIGIN:
			case CLIENT:
			case CLOSE:
			case CLUSTERING:
			case COALESCE:
			case CODE:
			case COLUMNS:
			case COLUMN_FORMAT:
			case COLUMN_NAME:
			case COMMENT:
			case COMMIT:
			case COMPACT:
			case COMPLETION:
			case COMPRESSED:
			case COMPRESSION:
			case CONCURRENT:
			case CONNECT:
			case CONNECTION:
			case CONSISTENT:
			case CONSTRAINT_CATALOG:
			case CONSTRAINT_SCHEMA:
			case CONSTRAINT_NAME:
			case CONTAINS:
			case CONTEXT:
			case CONTRIBUTORS:
			case COPY:
			case CPU:
			case CYCLE:
			case CURSOR_NAME:
			case DATA:
			case DATAFILE:
			case DEALLOCATE:
			case DEFAULT_AUTH:
			case DEFINER:
			case DELAY_KEY_WRITE:
			case DES_KEY_FILE:
			case DIRECTORY:
			case DISABLE:
			case DISCARD:
			case DISK:
			case DO:
			case DUMPFILE:
			case DUPLICATE:
			case DYNAMIC:
			case ENABLE:
			case ENCRYPTED:
			case ENCRYPTION:
			case ENCRYPTION_KEY_ID:
			case END:
			case ENDS:
			case ENGINE:
			case ENGINES:
			case ERROR:
			case ERRORS:
			case ESCAPE:
			case EVEN:
			case EVENT:
			case EVENTS:
			case EVERY:
			case EXCHANGE:
			case EXCLUSIVE:
			case EXPIRE:
			case EXPORT:
			case EXTENDED:
			case EXTENT_SIZE:
			case FAILED_LOGIN_ATTEMPTS:
			case FAST:
			case FAULTS:
			case FIELDS:
			case FILE_BLOCK_SIZE:
			case FILTER:
			case FIRST:
			case FIXED:
			case FLUSH:
			case FOLLOWS:
			case FOUND:
			case FULL:
			case FUNCTION:
			case GENERAL:
			case GLOBAL:
			case GRANTS:
			case GROUP_REPLICATION:
			case HANDLER:
			case HASH:
			case HELP:
			case HISTORY:
			case HOST:
			case HOSTS:
			case IDENTIFIED:
			case IGNORE_SERVER_IDS:
			case IMPORT:
			case INCREMENT:
			case INDEXES:
			case INITIAL_SIZE:
			case INPLACE:
			case INSERT_METHOD:
			case INSTALL:
			case INSTANCE:
			case INSTANT:
			case INVISIBLE:
			case INVOKER:
			case IO:
			case IO_THREAD:
			case IPC:
			case ISOLATION:
			case ISSUER:
			case JSON:
			case KEY_BLOCK_SIZE:
			case LANGUAGE:
			case LAST:
			case LEAVES:
			case LESS:
			case LEVEL:
			case LIST:
			case LOCAL:
			case LOGFILE:
			case LOGS:
			case MASTER:
			case MASTER_AUTO_POSITION:
			case MASTER_CONNECT_RETRY:
			case MASTER_DELAY:
			case MASTER_HEARTBEAT_PERIOD:
			case MASTER_HOST:
			case MASTER_LOG_FILE:
			case MASTER_LOG_POS:
			case MASTER_PASSWORD:
			case MASTER_PORT:
			case MASTER_RETRY_COUNT:
			case MASTER_SSL:
			case MASTER_SSL_CA:
			case MASTER_SSL_CAPATH:
			case MASTER_SSL_CERT:
			case MASTER_SSL_CIPHER:
			case MASTER_SSL_CRL:
			case MASTER_SSL_CRLPATH:
			case MASTER_SSL_KEY:
			case MASTER_TLS_VERSION:
			case MASTER_USER:
			case MAX_CONNECTIONS_PER_HOUR:
			case MAX_QUERIES_PER_HOUR:
			case MAX_ROWS:
			case MAX_SIZE:
			case MAX_UPDATES_PER_HOUR:
			case MAX_USER_CONNECTIONS:
			case MEDIUM:
			case MEMBER:
			case MERGE:
			case MESSAGE_TEXT:
			case MID:
			case MIGRATE:
			case MIN_ROWS:
			case MODE:
			case MODIFY:
			case MUTEX:
			case MYSQL:
			case MYSQL_ERRNO:
			case NAME:
			case NAMES:
			case NCHAR:
			case NEVER:
			case NEXT:
			case NO:
			case NOCACHE:
			case NOCOPY:
			case NOCYCLE:
			case NOMAXVALUE:
			case NOMINVALUE:
			case NOWAIT:
			case NODEGROUP:
			case NONE:
			case ODBC:
			case OFFLINE:
			case OFFSET:
			case OF:
			case OJ:
			case OLD_PASSWORD:
			case ONE:
			case ONLINE:
			case ONLY:
			case OPEN:
			case OPTIMIZER_COSTS:
			case OPTIONS:
			case OWNER:
			case PACK_KEYS:
			case PAGE:
			case PARSER:
			case PARTIAL:
			case PARTITIONING:
			case PARTITIONS:
			case PASSWORD:
			case PASSWORD_LOCK_TIME:
			case PHASE:
			case PLUGIN:
			case PLUGIN_DIR:
			case PLUGINS:
			case PORT:
			case PRECEDES:
			case PREPARE:
			case PRESERVE:
			case PREV:
			case PROCESSLIST:
			case PROFILE:
			case PROFILES:
			case PROXY:
			case QUERY:
			case QUICK:
			case REBUILD:
			case RECOVER:
			case RECURSIVE:
			case REDO_BUFFER_SIZE:
			case REDUNDANT:
			case RELAY:
			case RELAY_LOG_FILE:
			case RELAY_LOG_POS:
			case RELAYLOG:
			case REMOVE:
			case REORGANIZE:
			case REPAIR:
			case REPLICATE_DO_DB:
			case REPLICATE_DO_TABLE:
			case REPLICATE_IGNORE_DB:
			case REPLICATE_IGNORE_TABLE:
			case REPLICATE_REWRITE_DB:
			case REPLICATE_WILD_DO_TABLE:
			case REPLICATE_WILD_IGNORE_TABLE:
			case REPLICATION:
			case RESET:
			case RESTART:
			case RESUME:
			case RETURNED_SQLSTATE:
			case RETURNING:
			case RETURNS:
			case REUSE:
			case ROLE:
			case ROLLBACK:
			case ROLLUP:
			case ROTATE:
			case ROW:
			case ROWS:
			case ROW_FORMAT:
			case RTREE:
			case SAVEPOINT:
			case SCHEDULE:
			case SECURITY:
			case SEQUENCE:
			case SERVER:
			case SESSION:
			case SHARE:
			case SHARED:
			case SIGNED:
			case SIMPLE:
			case SLAVE:
			case SLOW:
			case SNAPSHOT:
			case SOCKET:
			case SOME:
			case SONAME:
			case SOUNDS:
			case SOURCE:
			case SQL_AFTER_GTIDS:
			case SQL_AFTER_MTS_GAPS:
			case SQL_BEFORE_GTIDS:
			case SQL_BUFFER_RESULT:
			case SQL_CACHE:
			case SQL_NO_CACHE:
			case SQL_THREAD:
			case START:
			case STARTS:
			case STATS_AUTO_RECALC:
			case STATS_PERSISTENT:
			case STATS_SAMPLE_PAGES:
			case STATUS:
			case STOP:
			case STORAGE:
			case STRING:
			case SUBCLASS_ORIGIN:
			case SUBJECT:
			case SUBPARTITION:
			case SUBPARTITIONS:
			case SUSPEND:
			case SWAPS:
			case SWITCHES:
			case TABLE_NAME:
			case TABLESPACE:
			case TABLE_TYPE:
			case TEMPORARY:
			case TEMPTABLE:
			case THAN:
			case TRADITIONAL:
			case TRANSACTION:
			case TRANSACTIONAL:
			case TRIGGERS:
			case TRUNCATE:
			case UNBOUNDED:
			case UNDEFINED:
			case UNDOFILE:
			case UNDO_BUFFER_SIZE:
			case UNINSTALL:
			case UNKNOWN:
			case UNTIL:
			case UPGRADE:
			case USER:
			case USE_FRM:
			case USER_RESOURCES:
			case VALIDATION:
			case VALUE:
			case VARIABLES:
			case VIEW:
			case VIRTUAL:
			case VISIBLE:
			case WAIT:
			case WARNINGS:
			case WITHOUT:
			case WORK:
			case WRAPPER:
			case X509:
			case XA:
			case XML:
			case YES:
			case EUR:
			case USA:
			case JIS:
			case ISO:
			case INTERNAL:
			case QUARTER:
			case MONTH:
			case DAY:
			case HOUR:
			case MINUTE:
			case WEEK:
			case SECOND:
			case MICROSECOND:
			case USER_STATISTICS:
			case CLIENT_STATISTICS:
			case INDEX_STATISTICS:
			case TABLE_STATISTICS:
			case FIREWALL_RULES:
			case ADMIN:
			case APPLICATION_PASSWORD_ADMIN:
			case AUDIT_ADMIN:
			case AUDIT_ABORT_EXEMPT:
			case AUTHENTICATION_POLICY_ADMIN:
			case BACKUP_ADMIN:
			case BINLOG_ADMIN:
			case BINLOG_ENCRYPTION_ADMIN:
			case CLONE_ADMIN:
			case CONNECTION_ADMIN:
			case ENCRYPTION_KEY_ADMIN:
			case EXECUTE:
			case FILE:
			case FIREWALL_ADMIN:
			case FIREWALL_EXEMPT:
			case FIREWALL_USER:
			case FLUSH_OPTIMIZER_COSTS:
			case FLUSH_STATUS:
			case FLUSH_TABLES:
			case FLUSH_USER_RESOURCES:
			case GROUP_REPLICATION_ADMIN:
			case INNODB_REDO_LOG_ARCHIVE:
			case INNODB_REDO_LOG_ENABLE:
			case INVOKE:
			case LAMBDA:
			case NDB_STORED_USER:
			case PASSWORDLESS_USER_ADMIN:
			case PERSIST_RO_VARIABLES_ADMIN:
			case PRIVILEGES:
			case PROCESS:
			case RELOAD:
			case REPLICATION_APPLIER:
			case REPLICATION_SLAVE_ADMIN:
			case RESOURCE_GROUP_ADMIN:
			case RESOURCE_GROUP_USER:
			case ROLE_ADMIN:
			case ROUTINE:
			case S3:
			case SESSION_VARIABLES_ADMIN:
			case SET_USER_ID:
			case SHOW_ROUTINE:
			case SHUTDOWN:
			case SUPER:
			case SYSTEM_VARIABLES_ADMIN:
			case TABLES:
			case TABLE_ENCRYPTION_ADMIN:
			case VERSION_TOKEN_ADMIN:
			case XA_RECOVER_ADMIN:
			case ARMSCII8:
			case ASCII:
			case BIG5:
			case CP1250:
			case CP1251:
			case CP1256:
			case CP1257:
			case CP850:
			case CP852:
			case CP866:
			case CP932:
			case DEC8:
			case EUCJPMS:
			case EUCKR:
			case GB18030:
			case GB2312:
			case GBK:
			case GEOSTD8:
			case GREEK:
			case HEBREW:
			case HP8:
			case KEYBCS2:
			case KOI8R:
			case KOI8U:
			case LATIN1:
			case LATIN2:
			case LATIN5:
			case LATIN7:
			case MACCE:
			case MACROMAN:
			case SJIS:
			case SWE7:
			case TIS620:
			case UCS2:
			case UJIS:
			case UTF16:
			case UTF16LE:
			case UTF32:
			case UTF8:
			case UTF8MB3:
			case UTF8MB4:
			case ARCHIVE:
			case BLACKHOLE:
			case CSV:
			case FEDERATED:
			case INNODB:
			case MEMORY:
			case MRG_MYISAM:
			case MYISAM:
			case NDB:
			case NDBCLUSTER:
			case PERFORMANCE_SCHEMA:
			case TOKUDB:
			case REPEATABLE:
			case COMMITTED:
			case UNCOMMITTED:
			case SERIALIZABLE:
			case GEOMETRYCOLLECTION:
			case GEOMETRY:
			case LINESTRING:
			case MULTILINESTRING:
			case MULTIPOINT:
			case MULTIPOLYGON:
			case POINT:
			case POLYGON:
			case ABS:
			case ACOS:
			case ADDDATE:
			case ADDTIME:
			case AES_DECRYPT:
			case AES_ENCRYPT:
			case AREA:
			case ASBINARY:
			case ASIN:
			case ASTEXT:
			case ASWKB:
			case ASWKT:
			case ASYMMETRIC_DECRYPT:
			case ASYMMETRIC_DERIVE:
			case ASYMMETRIC_ENCRYPT:
			case ASYMMETRIC_SIGN:
			case ASYMMETRIC_VERIFY:
			case ATAN:
			case ATAN2:
			case BENCHMARK:
			case BIN:
			case BIT_COUNT:
			case BIT_LENGTH:
			case BUFFER:
			case CATALOG_NAME:
			case CEIL:
			case CEILING:
			case CENTROID:
			case CHARACTER_LENGTH:
			case CHARSET:
			case CHAR_LENGTH:
			case COERCIBILITY:
			case COLLATION:
			case COMPRESS:
			case CONCAT:
			case CONCAT_WS:
			case CONNECTION_ID:
			case CONV:
			case CONVERT_TZ:
			case COS:
			case COT:
			case CRC32:
			case CREATE_ASYMMETRIC_PRIV_KEY:
			case CREATE_ASYMMETRIC_PUB_KEY:
			case CREATE_DH_PARAMETERS:
			case CREATE_DIGEST:
			case CROSSES:
			case DATEDIFF:
			case DATE_FORMAT:
			case DAYNAME:
			case DAYOFMONTH:
			case DAYOFWEEK:
			case DAYOFYEAR:
			case DECODE:
			case DEGREES:
			case DES_DECRYPT:
			case DES_ENCRYPT:
			case DIMENSION:
			case DISJOINT:
			case ELT:
			case ENCODE:
			case ENCRYPT:
			case ENDPOINT:
			case ENGINE_ATTRIBUTE:
			case ENVELOPE:
			case EQUALS:
			case EXP:
			case EXPORT_SET:
			case EXTERIORRING:
			case EXTRACTVALUE:
			case FIELD:
			case FIND_IN_SET:
			case FLOOR:
			case FORMAT:
			case FOUND_ROWS:
			case FROM_BASE64:
			case FROM_DAYS:
			case FROM_UNIXTIME:
			case GEOMCOLLFROMTEXT:
			case GEOMCOLLFROMWKB:
			case GEOMETRYCOLLECTIONFROMTEXT:
			case GEOMETRYCOLLECTIONFROMWKB:
			case GEOMETRYFROMTEXT:
			case GEOMETRYFROMWKB:
			case GEOMETRYN:
			case GEOMETRYTYPE:
			case GEOMFROMTEXT:
			case GEOMFROMWKB:
			case GET_FORMAT:
			case GET_LOCK:
			case GLENGTH:
			case GREATEST:
			case GTID_SUBSET:
			case GTID_SUBTRACT:
			case HEX:
			case IFNULL:
			case INET6_ATON:
			case INET6_NTOA:
			case INET_ATON:
			case INET_NTOA:
			case INSTR:
			case INTERIORRINGN:
			case INTERSECTS:
			case ISCLOSED:
			case ISEMPTY:
			case ISNULL:
			case ISSIMPLE:
			case IS_FREE_LOCK:
			case IS_IPV4:
			case IS_IPV4_COMPAT:
			case IS_IPV4_MAPPED:
			case IS_IPV6:
			case IS_USED_LOCK:
			case LAST_INSERT_ID:
			case LCASE:
			case LEAST:
			case LENGTH:
			case LINEFROMTEXT:
			case LINEFROMWKB:
			case LINESTRINGFROMTEXT:
			case LINESTRINGFROMWKB:
			case LN:
			case LOAD_FILE:
			case LOCATE:
			case LOG:
			case LOG10:
			case LOG2:
			case LOWER:
			case LPAD:
			case LTRIM:
			case MAKEDATE:
			case MAKETIME:
			case MAKE_SET:
			case MASTER_POS_WAIT:
			case MBRCONTAINS:
			case MBRDISJOINT:
			case MBREQUAL:
			case MBRINTERSECTS:
			case MBROVERLAPS:
			case MBRTOUCHES:
			case MBRWITHIN:
			case MD5:
			case MLINEFROMTEXT:
			case MLINEFROMWKB:
			case MONTHNAME:
			case MPOINTFROMTEXT:
			case MPOINTFROMWKB:
			case MPOLYFROMTEXT:
			case MPOLYFROMWKB:
			case MULTILINESTRINGFROMTEXT:
			case MULTILINESTRINGFROMWKB:
			case MULTIPOINTFROMTEXT:
			case MULTIPOINTFROMWKB:
			case MULTIPOLYGONFROMTEXT:
			case MULTIPOLYGONFROMWKB:
			case NAME_CONST:
			case NULLIF:
			case NUMGEOMETRIES:
			case NUMINTERIORRINGS:
			case NUMPOINTS:
			case OCT:
			case OCTET_LENGTH:
			case ORD:
			case OVERLAPS:
			case PERIOD_ADD:
			case PERIOD_DIFF:
			case PI:
			case POINTFROMTEXT:
			case POINTFROMWKB:
			case POINTN:
			case POLYFROMTEXT:
			case POLYFROMWKB:
			case POLYGONFROMTEXT:
			case POLYGONFROMWKB:
			case POW:
			case POWER:
			case QUOTE:
			case RADIANS:
			case RAND:
			case RANDOM:
			case RANDOM_BYTES:
			case RELEASE_LOCK:
			case REVERSE:
			case ROUND:
			case ROW_COUNT:
			case RPAD:
			case RTRIM:
			case SEC_TO_TIME:
			case SECONDARY_ENGINE_ATTRIBUTE:
			case SENSITIVE_VARIABLES_OBSERVER:
			case SESSION_USER:
			case SHA:
			case SHA1:
			case SHA2:
			case SCHEMA_NAME:
			case SIGN:
			case SIN:
			case SLEEP:
			case SOUNDEX:
			case SQL_THREAD_WAIT_AFTER_GTIDS:
			case SQRT:
			case SRID:
			case STARTPOINT:
			case STRCMP:
			case STR_TO_DATE:
			case ST_AREA:
			case ST_ASBINARY:
			case ST_ASTEXT:
			case ST_ASWKB:
			case ST_ASWKT:
			case ST_BUFFER:
			case ST_CENTROID:
			case ST_CONTAINS:
			case ST_CROSSES:
			case ST_DIFFERENCE:
			case ST_DIMENSION:
			case ST_DISJOINT:
			case ST_DISTANCE:
			case ST_ENDPOINT:
			case ST_ENVELOPE:
			case ST_EQUALS:
			case ST_EXTERIORRING:
			case ST_GEOMCOLLFROMTEXT:
			case ST_GEOMCOLLFROMTXT:
			case ST_GEOMCOLLFROMWKB:
			case ST_GEOMETRYCOLLECTIONFROMTEXT:
			case ST_GEOMETRYCOLLECTIONFROMWKB:
			case ST_GEOMETRYFROMTEXT:
			case ST_GEOMETRYFROMWKB:
			case ST_GEOMETRYN:
			case ST_GEOMETRYTYPE:
			case ST_GEOMFROMTEXT:
			case ST_GEOMFROMWKB:
			case ST_INTERIORRINGN:
			case ST_INTERSECTION:
			case ST_INTERSECTS:
			case ST_ISCLOSED:
			case ST_ISEMPTY:
			case ST_ISSIMPLE:
			case ST_LINEFROMTEXT:
			case ST_LINEFROMWKB:
			case ST_LINESTRINGFROMTEXT:
			case ST_LINESTRINGFROMWKB:
			case ST_NUMGEOMETRIES:
			case ST_NUMINTERIORRING:
			case ST_NUMINTERIORRINGS:
			case ST_NUMPOINTS:
			case ST_OVERLAPS:
			case ST_POINTFROMTEXT:
			case ST_POINTFROMWKB:
			case ST_POINTN:
			case ST_POLYFROMTEXT:
			case ST_POLYFROMWKB:
			case ST_POLYGONFROMTEXT:
			case ST_POLYGONFROMWKB:
			case ST_SRID:
			case ST_STARTPOINT:
			case ST_SYMDIFFERENCE:
			case ST_TOUCHES:
			case ST_UNION:
			case ST_WITHIN:
			case ST_X:
			case ST_Y:
			case SUBDATE:
			case SUBSTRING_INDEX:
			case SUBTIME:
			case SYSTEM_USER:
			case SYSTEM:
			case TAN:
			case TELEMETRY_LOG_ADMIN:
			case TIMEDIFF:
			case TIMESTAMPADD:
			case TIMESTAMPDIFF:
			case TIME_FORMAT:
			case TIME_TO_SEC:
			case TOUCHES:
			case TO_BASE64:
			case TO_DAYS:
			case TO_SECONDS:
			case TP_CONNECTION_ADMIN:
			case UCASE:
			case UNCOMPRESS:
			case UNCOMPRESSED_LENGTH:
			case UNHEX:
			case UNIX_TIMESTAMP:
			case UPDATEXML:
			case UPPER:
			case UUID:
			case UUID_SHORT:
			case VALIDATE_PASSWORD_STRENGTH:
			case VERSION:
			case VERSIONING:
			case WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS:
			case WEEKDAY:
			case WEEKOFYEAR:
			case WEIGHT_STRING:
			case WITHIN:
			case YEARWEEK:
			case Y_FUNCTION:
			case X_FUNCTION:
			case VIA:
			case LASTVAL:
			case NEXTVAL:
			case SETVAL:
			case PREVIOUS:
			case PERSISTENT:
			case BINLOG_MONITOR:
			case BINLOG_REPLAY:
			case FEDERATED_ADMIN:
			case READ_ONLY_ADMIN:
			case REPLICA:
			case REPLICATION_MASTER_ADMIN:
			case MONITOR:
			case READ_ONLY:
			case REPLAY:
			case MOD:
			case ID:
				enterOuterAlt(_localctx, 3);
				{
				setState(4566);
				simpleId();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class StartTransactionContext extends ParserRuleContext {
		public TerminalNode START() { return getToken(MySqlParser.START, 0); }
		public TerminalNode TRANSACTION() { return getToken(MySqlParser.TRANSACTION, 0); }
		public List transactionMode() {
			return getRuleContexts(TransactionModeContext.class);
		}
		public TransactionModeContext transactionMode(int i) {
			return getRuleContext(TransactionModeContext.class,i);
		}
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public StartTransactionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_startTransaction; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterStartTransaction(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitStartTransaction(this);
		}
	}

	public final StartTransactionContext startTransaction() throws RecognitionException {
		StartTransactionContext _localctx = new StartTransactionContext(_ctx, getState());
		enterRule(_localctx, 316, RULE_startTransaction);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4569);
			match(START);
			setState(4570);
			match(TRANSACTION);
			setState(4579);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,692,_ctx) ) {
			case 1:
				{
				setState(4571);
				transactionMode();
				setState(4576);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(4572);
					match(COMMA);
					setState(4573);
					transactionMode();
					}
					}
					setState(4578);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class BeginWorkContext extends ParserRuleContext {
		public TerminalNode BEGIN() { return getToken(MySqlParser.BEGIN, 0); }
		public TerminalNode WORK() { return getToken(MySqlParser.WORK, 0); }
		public BeginWorkContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_beginWork; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterBeginWork(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitBeginWork(this);
		}
	}

	public final BeginWorkContext beginWork() throws RecognitionException {
		BeginWorkContext _localctx = new BeginWorkContext(_ctx, getState());
		enterRule(_localctx, 318, RULE_beginWork);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4581);
			match(BEGIN);
			setState(4583);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WORK) {
				{
				setState(4582);
				match(WORK);
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CommitWorkContext extends ParserRuleContext {
		public Token nochain;
		public Token norelease;
		public TerminalNode COMMIT() { return getToken(MySqlParser.COMMIT, 0); }
		public TerminalNode WORK() { return getToken(MySqlParser.WORK, 0); }
		public TerminalNode AND() { return getToken(MySqlParser.AND, 0); }
		public TerminalNode CHAIN() { return getToken(MySqlParser.CHAIN, 0); }
		public TerminalNode RELEASE() { return getToken(MySqlParser.RELEASE, 0); }
		public List NO() { return getTokens(MySqlParser.NO); }
		public TerminalNode NO(int i) {
			return getToken(MySqlParser.NO, i);
		}
		public CommitWorkContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_commitWork; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCommitWork(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCommitWork(this);
		}
	}

	public final CommitWorkContext commitWork() throws RecognitionException {
		CommitWorkContext _localctx = new CommitWorkContext(_ctx, getState());
		enterRule(_localctx, 320, RULE_commitWork);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4585);
			match(COMMIT);
			setState(4587);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WORK) {
				{
				setState(4586);
				match(WORK);
				}
			}

			setState(4594);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==AND) {
				{
				setState(4589);
				match(AND);
				setState(4591);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==NO) {
					{
					setState(4590);
					((CommitWorkContext)_localctx).nochain = match(NO);
					}
				}

				setState(4593);
				match(CHAIN);
				}
			}

			setState(4600);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,698,_ctx) ) {
			case 1:
				{
				setState(4597);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==NO) {
					{
					setState(4596);
					((CommitWorkContext)_localctx).norelease = match(NO);
					}
				}

				setState(4599);
				match(RELEASE);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RollbackWorkContext extends ParserRuleContext {
		public Token nochain;
		public Token norelease;
		public TerminalNode ROLLBACK() { return getToken(MySqlParser.ROLLBACK, 0); }
		public TerminalNode WORK() { return getToken(MySqlParser.WORK, 0); }
		public TerminalNode AND() { return getToken(MySqlParser.AND, 0); }
		public TerminalNode CHAIN() { return getToken(MySqlParser.CHAIN, 0); }
		public TerminalNode RELEASE() { return getToken(MySqlParser.RELEASE, 0); }
		public List NO() { return getTokens(MySqlParser.NO); }
		public TerminalNode NO(int i) {
			return getToken(MySqlParser.NO, i);
		}
		public RollbackWorkContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_rollbackWork; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterRollbackWork(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitRollbackWork(this);
		}
	}

	public final RollbackWorkContext rollbackWork() throws RecognitionException {
		RollbackWorkContext _localctx = new RollbackWorkContext(_ctx, getState());
		enterRule(_localctx, 322, RULE_rollbackWork);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4602);
			match(ROLLBACK);
			setState(4604);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WORK) {
				{
				setState(4603);
				match(WORK);
				}
			}

			setState(4611);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==AND) {
				{
				setState(4606);
				match(AND);
				setState(4608);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==NO) {
					{
					setState(4607);
					((RollbackWorkContext)_localctx).nochain = match(NO);
					}
				}

				setState(4610);
				match(CHAIN);
				}
			}

			setState(4617);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,703,_ctx) ) {
			case 1:
				{
				setState(4614);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==NO) {
					{
					setState(4613);
					((RollbackWorkContext)_localctx).norelease = match(NO);
					}
				}

				setState(4616);
				match(RELEASE);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SavepointStatementContext extends ParserRuleContext {
		public TerminalNode SAVEPOINT() { return getToken(MySqlParser.SAVEPOINT, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public SavepointStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_savepointStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSavepointStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSavepointStatement(this);
		}
	}

	public final SavepointStatementContext savepointStatement() throws RecognitionException {
		SavepointStatementContext _localctx = new SavepointStatementContext(_ctx, getState());
		enterRule(_localctx, 324, RULE_savepointStatement);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4619);
			match(SAVEPOINT);
			setState(4620);
			uid();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RollbackStatementContext extends ParserRuleContext {
		public TerminalNode ROLLBACK() { return getToken(MySqlParser.ROLLBACK, 0); }
		public TerminalNode TO() { return getToken(MySqlParser.TO, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode WORK() { return getToken(MySqlParser.WORK, 0); }
		public TerminalNode SAVEPOINT() { return getToken(MySqlParser.SAVEPOINT, 0); }
		public RollbackStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_rollbackStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterRollbackStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitRollbackStatement(this);
		}
	}

	public final RollbackStatementContext rollbackStatement() throws RecognitionException {
		RollbackStatementContext _localctx = new RollbackStatementContext(_ctx, getState());
		enterRule(_localctx, 326, RULE_rollbackStatement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4622);
			match(ROLLBACK);
			setState(4624);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WORK) {
				{
				setState(4623);
				match(WORK);
				}
			}

			setState(4626);
			match(TO);
			setState(4628);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,705,_ctx) ) {
			case 1:
				{
				setState(4627);
				match(SAVEPOINT);
				}
				break;
			}
			setState(4630);
			uid();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ReleaseStatementContext extends ParserRuleContext {
		public TerminalNode RELEASE() { return getToken(MySqlParser.RELEASE, 0); }
		public TerminalNode SAVEPOINT() { return getToken(MySqlParser.SAVEPOINT, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public ReleaseStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_releaseStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterReleaseStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitReleaseStatement(this);
		}
	}

	public final ReleaseStatementContext releaseStatement() throws RecognitionException {
		ReleaseStatementContext _localctx = new ReleaseStatementContext(_ctx, getState());
		enterRule(_localctx, 328, RULE_releaseStatement);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4632);
			match(RELEASE);
			setState(4633);
			match(SAVEPOINT);
			setState(4634);
			uid();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class LockTablesContext extends ParserRuleContext {
		public TerminalNode LOCK() { return getToken(MySqlParser.LOCK, 0); }
		public List lockTableElement() {
			return getRuleContexts(LockTableElementContext.class);
		}
		public LockTableElementContext lockTableElement(int i) {
			return getRuleContext(LockTableElementContext.class,i);
		}
		public TerminalNode TABLE() { return getToken(MySqlParser.TABLE, 0); }
		public TerminalNode TABLES() { return getToken(MySqlParser.TABLES, 0); }
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public WaitNowaitClauseContext waitNowaitClause() {
			return getRuleContext(WaitNowaitClauseContext.class,0);
		}
		public LockTablesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_lockTables; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterLockTables(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitLockTables(this);
		}
	}

	public final LockTablesContext lockTables() throws RecognitionException {
		LockTablesContext _localctx = new LockTablesContext(_ctx, getState());
		enterRule(_localctx, 330, RULE_lockTables);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4636);
			match(LOCK);
			setState(4637);
			_la = _input.LA(1);
			if ( !(_la==TABLE || _la==TABLES) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(4638);
			lockTableElement();
			setState(4643);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(4639);
				match(COMMA);
				setState(4640);
				lockTableElement();
				}
				}
				setState(4645);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(4647);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==NOWAIT || _la==WAIT) {
				{
				setState(4646);
				waitNowaitClause();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class UnlockTablesContext extends ParserRuleContext {
		public TerminalNode UNLOCK() { return getToken(MySqlParser.UNLOCK, 0); }
		public TerminalNode TABLES() { return getToken(MySqlParser.TABLES, 0); }
		public UnlockTablesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_unlockTables; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterUnlockTables(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitUnlockTables(this);
		}
	}

	public final UnlockTablesContext unlockTables() throws RecognitionException {
		UnlockTablesContext _localctx = new UnlockTablesContext(_ctx, getState());
		enterRule(_localctx, 332, RULE_unlockTables);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4649);
			match(UNLOCK);
			setState(4650);
			match(TABLES);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SetAutocommitStatementContext extends ParserRuleContext {
		public Token autocommitValue;
		public TerminalNode SET() { return getToken(MySqlParser.SET, 0); }
		public TerminalNode AUTOCOMMIT() { return getToken(MySqlParser.AUTOCOMMIT, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TerminalNode ZERO_DECIMAL() { return getToken(MySqlParser.ZERO_DECIMAL, 0); }
		public TerminalNode ONE_DECIMAL() { return getToken(MySqlParser.ONE_DECIMAL, 0); }
		public SetAutocommitStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_setAutocommitStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSetAutocommitStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSetAutocommitStatement(this);
		}
	}

	public final SetAutocommitStatementContext setAutocommitStatement() throws RecognitionException {
		SetAutocommitStatementContext _localctx = new SetAutocommitStatementContext(_ctx, getState());
		enterRule(_localctx, 334, RULE_setAutocommitStatement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4652);
			match(SET);
			setState(4653);
			match(AUTOCOMMIT);
			setState(4654);
			match(EQUAL_SYMBOL);
			setState(4655);
			((SetAutocommitStatementContext)_localctx).autocommitValue = _input.LT(1);
			_la = _input.LA(1);
			if ( !(_la==ZERO_DECIMAL || _la==ONE_DECIMAL) ) {
				((SetAutocommitStatementContext)_localctx).autocommitValue = (Token)_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SetTransactionStatementContext extends ParserRuleContext {
		public Token transactionContext;
		public TerminalNode SET() { return getToken(MySqlParser.SET, 0); }
		public TerminalNode TRANSACTION() { return getToken(MySqlParser.TRANSACTION, 0); }
		public List transactionOption() {
			return getRuleContexts(TransactionOptionContext.class);
		}
		public TransactionOptionContext transactionOption(int i) {
			return getRuleContext(TransactionOptionContext.class,i);
		}
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public TerminalNode GLOBAL() { return getToken(MySqlParser.GLOBAL, 0); }
		public TerminalNode SESSION() { return getToken(MySqlParser.SESSION, 0); }
		public SetTransactionStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_setTransactionStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSetTransactionStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSetTransactionStatement(this);
		}
	}

	public final SetTransactionStatementContext setTransactionStatement() throws RecognitionException {
		SetTransactionStatementContext _localctx = new SetTransactionStatementContext(_ctx, getState());
		enterRule(_localctx, 336, RULE_setTransactionStatement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4657);
			match(SET);
			setState(4659);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==GLOBAL || _la==SESSION) {
				{
				setState(4658);
				((SetTransactionStatementContext)_localctx).transactionContext = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==GLOBAL || _la==SESSION) ) {
					((SetTransactionStatementContext)_localctx).transactionContext = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(4661);
			match(TRANSACTION);
			setState(4662);
			transactionOption();
			setState(4667);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(4663);
				match(COMMA);
				setState(4664);
				transactionOption();
				}
				}
				setState(4669);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TransactionModeContext extends ParserRuleContext {
		public TerminalNode WITH() { return getToken(MySqlParser.WITH, 0); }
		public TerminalNode CONSISTENT() { return getToken(MySqlParser.CONSISTENT, 0); }
		public TerminalNode SNAPSHOT() { return getToken(MySqlParser.SNAPSHOT, 0); }
		public TerminalNode READ() { return getToken(MySqlParser.READ, 0); }
		public TerminalNode WRITE() { return getToken(MySqlParser.WRITE, 0); }
		public TerminalNode ONLY() { return getToken(MySqlParser.ONLY, 0); }
		public TransactionModeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_transactionMode; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTransactionMode(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTransactionMode(this);
		}
	}

	public final TransactionModeContext transactionMode() throws RecognitionException {
		TransactionModeContext _localctx = new TransactionModeContext(_ctx, getState());
		enterRule(_localctx, 338, RULE_transactionMode);
		try {
			setState(4677);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,710,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(4670);
				match(WITH);
				setState(4671);
				match(CONSISTENT);
				setState(4672);
				match(SNAPSHOT);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(4673);
				match(READ);
				setState(4674);
				match(WRITE);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(4675);
				match(READ);
				setState(4676);
				match(ONLY);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class LockTableElementContext extends ParserRuleContext {
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public LockActionContext lockAction() {
			return getRuleContext(LockActionContext.class,0);
		}
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode AS() { return getToken(MySqlParser.AS, 0); }
		public LockTableElementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_lockTableElement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterLockTableElement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitLockTableElement(this);
		}
	}

	public final LockTableElementContext lockTableElement() throws RecognitionException {
		LockTableElementContext _localctx = new LockTableElementContext(_ctx, getState());
		enterRule(_localctx, 340, RULE_lockTableElement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4679);
			tableName();
			setState(4684);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ARRAY) | (1L << AS) | (1L << ATTRIBUTE) | (1L << BUCKETS) | (1L << CONDITION) | (1L << CURRENT) | (1L << CURRENT_ROLE) | (1L << CURRENT_USER) | (1L << DATABASE) | (1L << DEFAULT) | (1L << DIAGNOSTICS) | (1L << EMPTY) | (1L << ENFORCED) | (1L << EXCEPT))) != 0) || ((((_la - 74)) & ~0x3f) == 0 && ((1L << (_la - 74)) & ((1L << (GROUP - 74)) | (1L << (GROUP_REPLICATION_STREAM - 74)) | (1L << (IF - 74)) | (1L << (IGNORED - 74)) | (1L << (INSERT - 74)) | (1L << (LATERAL - 74)) | (1L << (LEFT - 74)) | (1L << (LOCKED - 74)) | (1L << (MAXVALUE - 74)) | (1L << (MINVALUE - 74)) | (1L << (NUMBER - 74)) | (1L << (OPTIONAL - 74)) | (1L << (ORDER - 74)) | (1L << (PRIMARY - 74)))) != 0) || ((((_la - 142)) & ~0x3f) == 0 && ((1L << (_la - 142)) & ((1L << (REPEAT - 142)) | (1L << (REPLACE - 142)) | (1L << (RIGHT - 142)) | (1L << (SCHEMA - 142)) | (1L << (SKIP_ - 142)) | (1L << (SKIP_QUERY_REWRITE - 142)) | (1L << (STACKED - 142)) | (1L << (STATEMENT - 142)))) != 0) || ((((_la - 220)) & ~0x3f) == 0 && ((1L << (_la - 220)) & ((1L << (DATE - 220)) | (1L << (TIME - 220)) | (1L << (TIMESTAMP - 220)) | (1L << (DATETIME - 220)) | (1L << (YEAR - 220)) | (1L << (NATIONAL - 220)) | (1L << (BINARY - 220)) | (1L << (TEXT - 220)) | (1L << (ENUM - 220)) | (1L << (SERIAL - 220)) | (1L << (JSON_ARRAY - 220)) | (1L << (JSON_ARRAYAGG - 220)) | (1L << (JSON_ARRAY_APPEND - 220)) | (1L << (JSON_ARRAY_INSERT - 220)) | (1L << (JSON_CONTAINS - 220)) | (1L << (JSON_CONTAINS_PATH - 220)) | (1L << (JSON_DEPTH - 220)) | (1L << (JSON_EXTRACT - 220)) | (1L << (JSON_INSERT - 220)) | (1L << (JSON_KEYS - 220)) | (1L << (JSON_LENGTH - 220)) | (1L << (JSON_MERGE - 220)) | (1L << (JSON_MERGE_PATCH - 220)) | (1L << (JSON_MERGE_PRESERVE - 220)) | (1L << (JSON_OBJECT - 220)) | (1L << (JSON_OBJECTAGG - 220)) | (1L << (JSON_OVERLAPS - 220)) | (1L << (JSON_PRETTY - 220)) | (1L << (JSON_QUOTE - 220)) | (1L << (JSON_REMOVE - 220)) | (1L << (JSON_REPLACE - 220)) | (1L << (JSON_SCHEMA_VALID - 220)) | (1L << (JSON_SCHEMA_VALIDATION_REPORT - 220)) | (1L << (JSON_SEARCH - 220)) | (1L << (JSON_SET - 220)) | (1L << (JSON_STORAGE_FREE - 220)) | (1L << (JSON_STORAGE_SIZE - 220)) | (1L << (JSON_TABLE - 220)) | (1L << (JSON_TYPE - 220)) | (1L << (JSON_UNQUOTE - 220)))) != 0) || ((((_la - 284)) & ~0x3f) == 0 && ((1L << (_la - 284)) & ((1L << (JSON_VALID - 284)) | (1L << (JSON_VALUE - 284)) | (1L << (NESTED - 284)) | (1L << (ORDINALITY - 284)) | (1L << (PATH - 284)) | (1L << (AVG - 284)) | (1L << (BIT_AND - 284)) | (1L << (BIT_OR - 284)) | (1L << (BIT_XOR - 284)) | (1L << (COUNT - 284)) | (1L << (CUME_DIST - 284)) | (1L << (DENSE_RANK - 284)) | (1L << (FIRST_VALUE - 284)) | (1L << (GROUP_CONCAT - 284)) | (1L << (LAG - 284)) | (1L << (LAST_VALUE - 284)) | (1L << (LEAD - 284)) | (1L << (MAX - 284)) | (1L << (MIN - 284)) | (1L << (NTILE - 284)) | (1L << (NTH_VALUE - 284)) | (1L << (PERCENT_RANK - 284)) | (1L << (RANK - 284)) | (1L << (ROW_NUMBER - 284)) | (1L << (STD - 284)) | (1L << (STDDEV - 284)) | (1L << (STDDEV_POP - 284)) | (1L << (STDDEV_SAMP - 284)) | (1L << (SUM - 284)) | (1L << (VAR_POP - 284)) | (1L << (VAR_SAMP - 284)) | (1L << (VARIANCE - 284)) | (1L << (CURRENT_DATE - 284)) | (1L << (CURRENT_TIME - 284)) | (1L << (CURRENT_TIMESTAMP - 284)) | (1L << (LOCALTIME - 284)) | (1L << (CURDATE - 284)) | (1L << (CURTIME - 284)) | (1L << (DATE_ADD - 284)) | (1L << (DATE_SUB - 284)) | (1L << (LOCALTIMESTAMP - 284)) | (1L << (NOW - 284)) | (1L << (POSITION - 284)) | (1L << (SUBSTR - 284)) | (1L << (SUBSTRING - 284)) | (1L << (SYSDATE - 284)) | (1L << (TRIM - 284)) | (1L << (UTC_DATE - 284)) | (1L << (UTC_TIME - 284)) | (1L << (UTC_TIMESTAMP - 284)) | (1L << (ACCOUNT - 284)) | (1L << (ACTION - 284)) | (1L << (AFTER - 284)) | (1L << (AGGREGATE - 284)) | (1L << (ALGORITHM - 284)) | (1L << (ANY - 284)) | (1L << (AT - 284)) | (1L << (AUTHORS - 284)) | (1L << (AUTOCOMMIT - 284)) | (1L << (AUTOEXTEND_SIZE - 284)) | (1L << (AUTO_INCREMENT - 284)) | (1L << (AVG_ROW_LENGTH - 284)) | (1L << (BEGIN - 284)))) != 0) || ((((_la - 348)) & ~0x3f) == 0 && ((1L << (_la - 348)) & ((1L << (BINLOG - 348)) | (1L << (BIT - 348)) | (1L << (BLOCK - 348)) | (1L << (BOOL - 348)) | (1L << (BOOLEAN - 348)) | (1L << (BTREE - 348)) | (1L << (CACHE - 348)) | (1L << (CASCADED - 348)) | (1L << (CHAIN - 348)) | (1L << (CHANGED - 348)) | (1L << (CHANNEL - 348)) | (1L << (CHECKSUM - 348)) | (1L << (PAGE_CHECKSUM - 348)) | (1L << (CIPHER - 348)) | (1L << (CLASS_ORIGIN - 348)) | (1L << (CLIENT - 348)) | (1L << (CLOSE - 348)) | (1L << (CLUSTERING - 348)) | (1L << (COALESCE - 348)) | (1L << (CODE - 348)) | (1L << (COLUMNS - 348)) | (1L << (COLUMN_FORMAT - 348)) | (1L << (COLUMN_NAME - 348)) | (1L << (COMMENT - 348)) | (1L << (COMMIT - 348)) | (1L << (COMPACT - 348)) | (1L << (COMPLETION - 348)) | (1L << (COMPRESSED - 348)) | (1L << (COMPRESSION - 348)) | (1L << (CONCURRENT - 348)) | (1L << (CONNECT - 348)) | (1L << (CONNECTION - 348)) | (1L << (CONSISTENT - 348)) | (1L << (CONSTRAINT_CATALOG - 348)) | (1L << (CONSTRAINT_SCHEMA - 348)) | (1L << (CONSTRAINT_NAME - 348)) | (1L << (CONTAINS - 348)) | (1L << (CONTEXT - 348)) | (1L << (CONTRIBUTORS - 348)) | (1L << (COPY - 348)) | (1L << (CPU - 348)) | (1L << (CYCLE - 348)) | (1L << (CURSOR_NAME - 348)) | (1L << (DATA - 348)) | (1L << (DATAFILE - 348)) | (1L << (DEALLOCATE - 348)) | (1L << (DEFAULT_AUTH - 348)) | (1L << (DEFINER - 348)) | (1L << (DELAY_KEY_WRITE - 348)) | (1L << (DES_KEY_FILE - 348)) | (1L << (DIRECTORY - 348)) | (1L << (DISABLE - 348)) | (1L << (DISCARD - 348)) | (1L << (DISK - 348)) | (1L << (DO - 348)) | (1L << (DUMPFILE - 348)) | (1L << (DUPLICATE - 348)) | (1L << (DYNAMIC - 348)) | (1L << (ENABLE - 348)) | (1L << (ENCRYPTED - 348)) | (1L << (ENCRYPTION - 348)) | (1L << (ENCRYPTION_KEY_ID - 348)) | (1L << (END - 348)) | (1L << (ENDS - 348)))) != 0) || ((((_la - 412)) & ~0x3f) == 0 && ((1L << (_la - 412)) & ((1L << (ENGINE - 412)) | (1L << (ENGINES - 412)) | (1L << (ERROR - 412)) | (1L << (ERRORS - 412)) | (1L << (ESCAPE - 412)) | (1L << (EVEN - 412)) | (1L << (EVENT - 412)) | (1L << (EVENTS - 412)) | (1L << (EVERY - 412)) | (1L << (EXCHANGE - 412)) | (1L << (EXCLUSIVE - 412)) | (1L << (EXPIRE - 412)) | (1L << (EXPORT - 412)) | (1L << (EXTENDED - 412)) | (1L << (EXTENT_SIZE - 412)) | (1L << (FAILED_LOGIN_ATTEMPTS - 412)) | (1L << (FAST - 412)) | (1L << (FAULTS - 412)) | (1L << (FIELDS - 412)) | (1L << (FILE_BLOCK_SIZE - 412)) | (1L << (FILTER - 412)) | (1L << (FIRST - 412)) | (1L << (FIXED - 412)) | (1L << (FLUSH - 412)) | (1L << (FOLLOWS - 412)) | (1L << (FOUND - 412)) | (1L << (FULL - 412)) | (1L << (FUNCTION - 412)) | (1L << (GENERAL - 412)) | (1L << (GLOBAL - 412)) | (1L << (GRANTS - 412)) | (1L << (GROUP_REPLICATION - 412)) | (1L << (HANDLER - 412)) | (1L << (HASH - 412)) | (1L << (HELP - 412)) | (1L << (HISTORY - 412)) | (1L << (HOST - 412)) | (1L << (HOSTS - 412)) | (1L << (IDENTIFIED - 412)) | (1L << (IGNORE_SERVER_IDS - 412)) | (1L << (IMPORT - 412)) | (1L << (INCREMENT - 412)) | (1L << (INDEXES - 412)) | (1L << (INITIAL_SIZE - 412)) | (1L << (INPLACE - 412)) | (1L << (INSERT_METHOD - 412)) | (1L << (INSTALL - 412)) | (1L << (INSTANCE - 412)) | (1L << (INSTANT - 412)) | (1L << (INVISIBLE - 412)) | (1L << (INVOKER - 412)) | (1L << (IO - 412)) | (1L << (IO_THREAD - 412)) | (1L << (IPC - 412)) | (1L << (ISOLATION - 412)) | (1L << (ISSUER - 412)) | (1L << (JSON - 412)) | (1L << (KEY_BLOCK_SIZE - 412)) | (1L << (LANGUAGE - 412)) | (1L << (LAST - 412)) | (1L << (LEAVES - 412)) | (1L << (LESS - 412)) | (1L << (LEVEL - 412)))) != 0) || ((((_la - 476)) & ~0x3f) == 0 && ((1L << (_la - 476)) & ((1L << (LIST - 476)) | (1L << (LOCAL - 476)) | (1L << (LOGFILE - 476)) | (1L << (LOGS - 476)) | (1L << (MASTER - 476)) | (1L << (MASTER_AUTO_POSITION - 476)) | (1L << (MASTER_CONNECT_RETRY - 476)) | (1L << (MASTER_DELAY - 476)) | (1L << (MASTER_HEARTBEAT_PERIOD - 476)) | (1L << (MASTER_HOST - 476)) | (1L << (MASTER_LOG_FILE - 476)) | (1L << (MASTER_LOG_POS - 476)) | (1L << (MASTER_PASSWORD - 476)) | (1L << (MASTER_PORT - 476)) | (1L << (MASTER_RETRY_COUNT - 476)) | (1L << (MASTER_SSL - 476)) | (1L << (MASTER_SSL_CA - 476)) | (1L << (MASTER_SSL_CAPATH - 476)) | (1L << (MASTER_SSL_CERT - 476)) | (1L << (MASTER_SSL_CIPHER - 476)) | (1L << (MASTER_SSL_CRL - 476)) | (1L << (MASTER_SSL_CRLPATH - 476)) | (1L << (MASTER_SSL_KEY - 476)) | (1L << (MASTER_TLS_VERSION - 476)) | (1L << (MASTER_USER - 476)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 476)) | (1L << (MAX_QUERIES_PER_HOUR - 476)) | (1L << (MAX_ROWS - 476)) | (1L << (MAX_SIZE - 476)) | (1L << (MAX_UPDATES_PER_HOUR - 476)) | (1L << (MAX_USER_CONNECTIONS - 476)) | (1L << (MEDIUM - 476)) | (1L << (MEMBER - 476)) | (1L << (MERGE - 476)) | (1L << (MESSAGE_TEXT - 476)) | (1L << (MID - 476)) | (1L << (MIGRATE - 476)) | (1L << (MIN_ROWS - 476)) | (1L << (MODE - 476)) | (1L << (MODIFY - 476)) | (1L << (MUTEX - 476)) | (1L << (MYSQL - 476)) | (1L << (MYSQL_ERRNO - 476)) | (1L << (NAME - 476)) | (1L << (NAMES - 476)) | (1L << (NCHAR - 476)) | (1L << (NEVER - 476)) | (1L << (NEXT - 476)) | (1L << (NO - 476)) | (1L << (NOCACHE - 476)) | (1L << (NOCOPY - 476)) | (1L << (NOCYCLE - 476)) | (1L << (NOMAXVALUE - 476)) | (1L << (NOMINVALUE - 476)) | (1L << (NOWAIT - 476)) | (1L << (NODEGROUP - 476)) | (1L << (NONE - 476)) | (1L << (ODBC - 476)) | (1L << (OFFLINE - 476)) | (1L << (OFFSET - 476)) | (1L << (OF - 476)) | (1L << (OJ - 476)) | (1L << (OLD_PASSWORD - 476)) | (1L << (ONE - 476)))) != 0) || ((((_la - 540)) & ~0x3f) == 0 && ((1L << (_la - 540)) & ((1L << (ONLINE - 540)) | (1L << (ONLY - 540)) | (1L << (OPEN - 540)) | (1L << (OPTIMIZER_COSTS - 540)) | (1L << (OPTIONS - 540)) | (1L << (OWNER - 540)) | (1L << (PACK_KEYS - 540)) | (1L << (PAGE - 540)) | (1L << (PARSER - 540)) | (1L << (PARTIAL - 540)) | (1L << (PARTITIONING - 540)) | (1L << (PARTITIONS - 540)) | (1L << (PASSWORD - 540)) | (1L << (PASSWORD_LOCK_TIME - 540)) | (1L << (PHASE - 540)) | (1L << (PLUGIN - 540)) | (1L << (PLUGIN_DIR - 540)) | (1L << (PLUGINS - 540)) | (1L << (PORT - 540)) | (1L << (PRECEDES - 540)) | (1L << (PREPARE - 540)) | (1L << (PRESERVE - 540)) | (1L << (PREV - 540)) | (1L << (PROCESSLIST - 540)) | (1L << (PROFILE - 540)) | (1L << (PROFILES - 540)) | (1L << (PROXY - 540)) | (1L << (QUERY - 540)) | (1L << (QUICK - 540)) | (1L << (REBUILD - 540)) | (1L << (RECOVER - 540)) | (1L << (RECURSIVE - 540)) | (1L << (REDO_BUFFER_SIZE - 540)) | (1L << (REDUNDANT - 540)) | (1L << (RELAY - 540)) | (1L << (RELAY_LOG_FILE - 540)) | (1L << (RELAY_LOG_POS - 540)) | (1L << (RELAYLOG - 540)) | (1L << (REMOVE - 540)) | (1L << (REORGANIZE - 540)) | (1L << (REPAIR - 540)) | (1L << (REPLICATE_DO_DB - 540)) | (1L << (REPLICATE_DO_TABLE - 540)) | (1L << (REPLICATE_IGNORE_DB - 540)) | (1L << (REPLICATE_IGNORE_TABLE - 540)) | (1L << (REPLICATE_REWRITE_DB - 540)) | (1L << (REPLICATE_WILD_DO_TABLE - 540)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 540)) | (1L << (REPLICATION - 540)) | (1L << (RESET - 540)) | (1L << (RESTART - 540)) | (1L << (RESUME - 540)) | (1L << (RETURNED_SQLSTATE - 540)) | (1L << (RETURNING - 540)) | (1L << (RETURNS - 540)) | (1L << (REUSE - 540)) | (1L << (ROLE - 540)) | (1L << (ROLLBACK - 540)) | (1L << (ROLLUP - 540)) | (1L << (ROTATE - 540)) | (1L << (ROW - 540)))) != 0) || ((((_la - 604)) & ~0x3f) == 0 && ((1L << (_la - 604)) & ((1L << (ROWS - 604)) | (1L << (ROW_FORMAT - 604)) | (1L << (RTREE - 604)) | (1L << (SAVEPOINT - 604)) | (1L << (SCHEDULE - 604)) | (1L << (SECURITY - 604)) | (1L << (SEQUENCE - 604)) | (1L << (SERVER - 604)) | (1L << (SESSION - 604)) | (1L << (SHARE - 604)) | (1L << (SHARED - 604)) | (1L << (SIGNED - 604)) | (1L << (SIMPLE - 604)) | (1L << (SLAVE - 604)) | (1L << (SLOW - 604)) | (1L << (SNAPSHOT - 604)) | (1L << (SOCKET - 604)) | (1L << (SOME - 604)) | (1L << (SONAME - 604)) | (1L << (SOUNDS - 604)) | (1L << (SOURCE - 604)) | (1L << (SQL_AFTER_GTIDS - 604)) | (1L << (SQL_AFTER_MTS_GAPS - 604)) | (1L << (SQL_BEFORE_GTIDS - 604)) | (1L << (SQL_BUFFER_RESULT - 604)) | (1L << (SQL_CACHE - 604)) | (1L << (SQL_NO_CACHE - 604)) | (1L << (SQL_THREAD - 604)) | (1L << (START - 604)) | (1L << (STARTS - 604)) | (1L << (STATS_AUTO_RECALC - 604)) | (1L << (STATS_PERSISTENT - 604)) | (1L << (STATS_SAMPLE_PAGES - 604)) | (1L << (STATUS - 604)) | (1L << (STOP - 604)) | (1L << (STORAGE - 604)) | (1L << (STRING - 604)) | (1L << (SUBCLASS_ORIGIN - 604)) | (1L << (SUBJECT - 604)) | (1L << (SUBPARTITION - 604)) | (1L << (SUBPARTITIONS - 604)) | (1L << (SUSPEND - 604)) | (1L << (SWAPS - 604)) | (1L << (SWITCHES - 604)) | (1L << (TABLE_NAME - 604)) | (1L << (TABLESPACE - 604)) | (1L << (TABLE_TYPE - 604)) | (1L << (TEMPORARY - 604)) | (1L << (TEMPTABLE - 604)) | (1L << (THAN - 604)) | (1L << (TRADITIONAL - 604)) | (1L << (TRANSACTION - 604)) | (1L << (TRANSACTIONAL - 604)) | (1L << (TRIGGERS - 604)) | (1L << (TRUNCATE - 604)) | (1L << (UNBOUNDED - 604)) | (1L << (UNDEFINED - 604)) | (1L << (UNDOFILE - 604)) | (1L << (UNDO_BUFFER_SIZE - 604)) | (1L << (UNINSTALL - 604)) | (1L << (UNKNOWN - 604)) | (1L << (UNTIL - 604)) | (1L << (UPGRADE - 604)))) != 0) || ((((_la - 668)) & ~0x3f) == 0 && ((1L << (_la - 668)) & ((1L << (USER - 668)) | (1L << (USE_FRM - 668)) | (1L << (USER_RESOURCES - 668)) | (1L << (VALIDATION - 668)) | (1L << (VALUE - 668)) | (1L << (VARIABLES - 668)) | (1L << (VIEW - 668)) | (1L << (VIRTUAL - 668)) | (1L << (VISIBLE - 668)) | (1L << (WAIT - 668)) | (1L << (WARNINGS - 668)) | (1L << (WITHOUT - 668)) | (1L << (WORK - 668)) | (1L << (WRAPPER - 668)) | (1L << (X509 - 668)) | (1L << (XA - 668)) | (1L << (XML - 668)) | (1L << (YES - 668)) | (1L << (EUR - 668)) | (1L << (USA - 668)) | (1L << (JIS - 668)) | (1L << (ISO - 668)) | (1L << (INTERNAL - 668)) | (1L << (QUARTER - 668)) | (1L << (MONTH - 668)) | (1L << (DAY - 668)) | (1L << (HOUR - 668)) | (1L << (MINUTE - 668)) | (1L << (WEEK - 668)) | (1L << (SECOND - 668)) | (1L << (MICROSECOND - 668)) | (1L << (USER_STATISTICS - 668)) | (1L << (CLIENT_STATISTICS - 668)) | (1L << (INDEX_STATISTICS - 668)) | (1L << (TABLE_STATISTICS - 668)) | (1L << (FIREWALL_RULES - 668)) | (1L << (ADMIN - 668)) | (1L << (APPLICATION_PASSWORD_ADMIN - 668)) | (1L << (AUDIT_ADMIN - 668)) | (1L << (AUDIT_ABORT_EXEMPT - 668)) | (1L << (AUTHENTICATION_POLICY_ADMIN - 668)) | (1L << (BACKUP_ADMIN - 668)) | (1L << (BINLOG_ADMIN - 668)) | (1L << (BINLOG_ENCRYPTION_ADMIN - 668)) | (1L << (CLONE_ADMIN - 668)) | (1L << (CONNECTION_ADMIN - 668)) | (1L << (ENCRYPTION_KEY_ADMIN - 668)) | (1L << (EXECUTE - 668)) | (1L << (FILE - 668)) | (1L << (FIREWALL_ADMIN - 668)) | (1L << (FIREWALL_EXEMPT - 668)) | (1L << (FIREWALL_USER - 668)) | (1L << (FLUSH_OPTIMIZER_COSTS - 668)) | (1L << (FLUSH_STATUS - 668)) | (1L << (FLUSH_TABLES - 668)) | (1L << (FLUSH_USER_RESOURCES - 668)) | (1L << (GROUP_REPLICATION_ADMIN - 668)) | (1L << (INNODB_REDO_LOG_ARCHIVE - 668)) | (1L << (INNODB_REDO_LOG_ENABLE - 668)) | (1L << (INVOKE - 668)) | (1L << (LAMBDA - 668)) | (1L << (NDB_STORED_USER - 668)) | (1L << (PASSWORDLESS_USER_ADMIN - 668)))) != 0) || ((((_la - 732)) & ~0x3f) == 0 && ((1L << (_la - 732)) & ((1L << (PERSIST_RO_VARIABLES_ADMIN - 732)) | (1L << (PRIVILEGES - 732)) | (1L << (PROCESS - 732)) | (1L << (RELOAD - 732)) | (1L << (REPLICATION_APPLIER - 732)) | (1L << (REPLICATION_SLAVE_ADMIN - 732)) | (1L << (RESOURCE_GROUP_ADMIN - 732)) | (1L << (RESOURCE_GROUP_USER - 732)) | (1L << (ROLE_ADMIN - 732)) | (1L << (ROUTINE - 732)) | (1L << (S3 - 732)) | (1L << (SESSION_VARIABLES_ADMIN - 732)) | (1L << (SET_USER_ID - 732)) | (1L << (SHOW_ROUTINE - 732)) | (1L << (SHUTDOWN - 732)) | (1L << (SUPER - 732)) | (1L << (SYSTEM_VARIABLES_ADMIN - 732)) | (1L << (TABLES - 732)) | (1L << (TABLE_ENCRYPTION_ADMIN - 732)) | (1L << (VERSION_TOKEN_ADMIN - 732)) | (1L << (XA_RECOVER_ADMIN - 732)) | (1L << (ARMSCII8 - 732)) | (1L << (ASCII - 732)) | (1L << (BIG5 - 732)) | (1L << (CP1250 - 732)) | (1L << (CP1251 - 732)) | (1L << (CP1256 - 732)) | (1L << (CP1257 - 732)) | (1L << (CP850 - 732)) | (1L << (CP852 - 732)) | (1L << (CP866 - 732)) | (1L << (CP932 - 732)) | (1L << (DEC8 - 732)) | (1L << (EUCJPMS - 732)) | (1L << (EUCKR - 732)) | (1L << (GB18030 - 732)) | (1L << (GB2312 - 732)) | (1L << (GBK - 732)) | (1L << (GEOSTD8 - 732)) | (1L << (GREEK - 732)) | (1L << (HEBREW - 732)) | (1L << (HP8 - 732)) | (1L << (KEYBCS2 - 732)) | (1L << (KOI8R - 732)) | (1L << (KOI8U - 732)) | (1L << (LATIN1 - 732)) | (1L << (LATIN2 - 732)) | (1L << (LATIN5 - 732)) | (1L << (LATIN7 - 732)) | (1L << (MACCE - 732)) | (1L << (MACROMAN - 732)) | (1L << (SJIS - 732)) | (1L << (SWE7 - 732)) | (1L << (TIS620 - 732)) | (1L << (UCS2 - 732)) | (1L << (UJIS - 732)) | (1L << (UTF16 - 732)) | (1L << (UTF16LE - 732)) | (1L << (UTF32 - 732)) | (1L << (UTF8 - 732)) | (1L << (UTF8MB3 - 732)) | (1L << (UTF8MB4 - 732)) | (1L << (ARCHIVE - 732)))) != 0) || ((((_la - 796)) & ~0x3f) == 0 && ((1L << (_la - 796)) & ((1L << (BLACKHOLE - 796)) | (1L << (CSV - 796)) | (1L << (FEDERATED - 796)) | (1L << (INNODB - 796)) | (1L << (MEMORY - 796)) | (1L << (MRG_MYISAM - 796)) | (1L << (MYISAM - 796)) | (1L << (NDB - 796)) | (1L << (NDBCLUSTER - 796)) | (1L << (PERFORMANCE_SCHEMA - 796)) | (1L << (TOKUDB - 796)) | (1L << (REPEATABLE - 796)) | (1L << (COMMITTED - 796)) | (1L << (UNCOMMITTED - 796)) | (1L << (SERIALIZABLE - 796)) | (1L << (GEOMETRYCOLLECTION - 796)) | (1L << (GEOMETRY - 796)) | (1L << (LINESTRING - 796)) | (1L << (MULTILINESTRING - 796)) | (1L << (MULTIPOINT - 796)) | (1L << (MULTIPOLYGON - 796)) | (1L << (POINT - 796)) | (1L << (POLYGON - 796)) | (1L << (ABS - 796)) | (1L << (ACOS - 796)) | (1L << (ADDDATE - 796)) | (1L << (ADDTIME - 796)) | (1L << (AES_DECRYPT - 796)) | (1L << (AES_ENCRYPT - 796)) | (1L << (AREA - 796)) | (1L << (ASBINARY - 796)) | (1L << (ASIN - 796)) | (1L << (ASTEXT - 796)) | (1L << (ASWKB - 796)) | (1L << (ASWKT - 796)) | (1L << (ASYMMETRIC_DECRYPT - 796)) | (1L << (ASYMMETRIC_DERIVE - 796)) | (1L << (ASYMMETRIC_ENCRYPT - 796)) | (1L << (ASYMMETRIC_SIGN - 796)) | (1L << (ASYMMETRIC_VERIFY - 796)) | (1L << (ATAN - 796)) | (1L << (ATAN2 - 796)) | (1L << (BENCHMARK - 796)) | (1L << (BIN - 796)) | (1L << (BIT_COUNT - 796)) | (1L << (BIT_LENGTH - 796)) | (1L << (BUFFER - 796)) | (1L << (CATALOG_NAME - 796)) | (1L << (CEIL - 796)) | (1L << (CEILING - 796)) | (1L << (CENTROID - 796)) | (1L << (CHARACTER_LENGTH - 796)) | (1L << (CHARSET - 796)) | (1L << (CHAR_LENGTH - 796)) | (1L << (COERCIBILITY - 796)) | (1L << (COLLATION - 796)) | (1L << (COMPRESS - 796)) | (1L << (CONCAT - 796)) | (1L << (CONCAT_WS - 796)) | (1L << (CONNECTION_ID - 796)) | (1L << (CONV - 796)) | (1L << (CONVERT_TZ - 796)) | (1L << (COS - 796)))) != 0) || ((((_la - 860)) & ~0x3f) == 0 && ((1L << (_la - 860)) & ((1L << (COT - 860)) | (1L << (CRC32 - 860)) | (1L << (CREATE_ASYMMETRIC_PRIV_KEY - 860)) | (1L << (CREATE_ASYMMETRIC_PUB_KEY - 860)) | (1L << (CREATE_DH_PARAMETERS - 860)) | (1L << (CREATE_DIGEST - 860)) | (1L << (CROSSES - 860)) | (1L << (DATEDIFF - 860)) | (1L << (DATE_FORMAT - 860)) | (1L << (DAYNAME - 860)) | (1L << (DAYOFMONTH - 860)) | (1L << (DAYOFWEEK - 860)) | (1L << (DAYOFYEAR - 860)) | (1L << (DECODE - 860)) | (1L << (DEGREES - 860)) | (1L << (DES_DECRYPT - 860)) | (1L << (DES_ENCRYPT - 860)) | (1L << (DIMENSION - 860)) | (1L << (DISJOINT - 860)) | (1L << (ELT - 860)) | (1L << (ENCODE - 860)) | (1L << (ENCRYPT - 860)) | (1L << (ENDPOINT - 860)) | (1L << (ENGINE_ATTRIBUTE - 860)) | (1L << (ENVELOPE - 860)) | (1L << (EQUALS - 860)) | (1L << (EXP - 860)) | (1L << (EXPORT_SET - 860)) | (1L << (EXTERIORRING - 860)) | (1L << (EXTRACTVALUE - 860)) | (1L << (FIELD - 860)) | (1L << (FIND_IN_SET - 860)) | (1L << (FLOOR - 860)) | (1L << (FORMAT - 860)) | (1L << (FOUND_ROWS - 860)) | (1L << (FROM_BASE64 - 860)) | (1L << (FROM_DAYS - 860)) | (1L << (FROM_UNIXTIME - 860)) | (1L << (GEOMCOLLFROMTEXT - 860)) | (1L << (GEOMCOLLFROMWKB - 860)) | (1L << (GEOMETRYCOLLECTIONFROMTEXT - 860)) | (1L << (GEOMETRYCOLLECTIONFROMWKB - 860)) | (1L << (GEOMETRYFROMTEXT - 860)) | (1L << (GEOMETRYFROMWKB - 860)) | (1L << (GEOMETRYN - 860)) | (1L << (GEOMETRYTYPE - 860)) | (1L << (GEOMFROMTEXT - 860)) | (1L << (GEOMFROMWKB - 860)) | (1L << (GET_FORMAT - 860)) | (1L << (GET_LOCK - 860)) | (1L << (GLENGTH - 860)) | (1L << (GREATEST - 860)) | (1L << (GTID_SUBSET - 860)) | (1L << (GTID_SUBTRACT - 860)) | (1L << (HEX - 860)) | (1L << (IFNULL - 860)) | (1L << (INET6_ATON - 860)) | (1L << (INET6_NTOA - 860)) | (1L << (INET_ATON - 860)) | (1L << (INET_NTOA - 860)) | (1L << (INSTR - 860)) | (1L << (INTERIORRINGN - 860)) | (1L << (INTERSECTS - 860)) | (1L << (ISCLOSED - 860)))) != 0) || ((((_la - 924)) & ~0x3f) == 0 && ((1L << (_la - 924)) & ((1L << (ISEMPTY - 924)) | (1L << (ISNULL - 924)) | (1L << (ISSIMPLE - 924)) | (1L << (IS_FREE_LOCK - 924)) | (1L << (IS_IPV4 - 924)) | (1L << (IS_IPV4_COMPAT - 924)) | (1L << (IS_IPV4_MAPPED - 924)) | (1L << (IS_IPV6 - 924)) | (1L << (IS_USED_LOCK - 924)) | (1L << (LAST_INSERT_ID - 924)) | (1L << (LCASE - 924)) | (1L << (LEAST - 924)) | (1L << (LENGTH - 924)) | (1L << (LINEFROMTEXT - 924)) | (1L << (LINEFROMWKB - 924)) | (1L << (LINESTRINGFROMTEXT - 924)) | (1L << (LINESTRINGFROMWKB - 924)) | (1L << (LN - 924)) | (1L << (LOAD_FILE - 924)) | (1L << (LOCATE - 924)) | (1L << (LOG - 924)) | (1L << (LOG10 - 924)) | (1L << (LOG2 - 924)) | (1L << (LOWER - 924)) | (1L << (LPAD - 924)) | (1L << (LTRIM - 924)) | (1L << (MAKEDATE - 924)) | (1L << (MAKETIME - 924)) | (1L << (MAKE_SET - 924)) | (1L << (MASTER_POS_WAIT - 924)) | (1L << (MBRCONTAINS - 924)) | (1L << (MBRDISJOINT - 924)) | (1L << (MBREQUAL - 924)) | (1L << (MBRINTERSECTS - 924)) | (1L << (MBROVERLAPS - 924)) | (1L << (MBRTOUCHES - 924)) | (1L << (MBRWITHIN - 924)) | (1L << (MD5 - 924)) | (1L << (MLINEFROMTEXT - 924)) | (1L << (MLINEFROMWKB - 924)) | (1L << (MONTHNAME - 924)) | (1L << (MPOINTFROMTEXT - 924)) | (1L << (MPOINTFROMWKB - 924)) | (1L << (MPOLYFROMTEXT - 924)) | (1L << (MPOLYFROMWKB - 924)) | (1L << (MULTILINESTRINGFROMTEXT - 924)) | (1L << (MULTILINESTRINGFROMWKB - 924)) | (1L << (MULTIPOINTFROMTEXT - 924)) | (1L << (MULTIPOINTFROMWKB - 924)) | (1L << (MULTIPOLYGONFROMTEXT - 924)) | (1L << (MULTIPOLYGONFROMWKB - 924)) | (1L << (NAME_CONST - 924)) | (1L << (NULLIF - 924)) | (1L << (NUMGEOMETRIES - 924)) | (1L << (NUMINTERIORRINGS - 924)) | (1L << (NUMPOINTS - 924)) | (1L << (OCT - 924)) | (1L << (OCTET_LENGTH - 924)) | (1L << (ORD - 924)) | (1L << (OVERLAPS - 924)) | (1L << (PERIOD_ADD - 924)) | (1L << (PERIOD_DIFF - 924)) | (1L << (PI - 924)) | (1L << (POINTFROMTEXT - 924)))) != 0) || ((((_la - 988)) & ~0x3f) == 0 && ((1L << (_la - 988)) & ((1L << (POINTFROMWKB - 988)) | (1L << (POINTN - 988)) | (1L << (POLYFROMTEXT - 988)) | (1L << (POLYFROMWKB - 988)) | (1L << (POLYGONFROMTEXT - 988)) | (1L << (POLYGONFROMWKB - 988)) | (1L << (POW - 988)) | (1L << (POWER - 988)) | (1L << (QUOTE - 988)) | (1L << (RADIANS - 988)) | (1L << (RAND - 988)) | (1L << (RANDOM - 988)) | (1L << (RANDOM_BYTES - 988)) | (1L << (RELEASE_LOCK - 988)) | (1L << (REVERSE - 988)) | (1L << (ROUND - 988)) | (1L << (ROW_COUNT - 988)) | (1L << (RPAD - 988)) | (1L << (RTRIM - 988)) | (1L << (SEC_TO_TIME - 988)) | (1L << (SECONDARY_ENGINE_ATTRIBUTE - 988)) | (1L << (SENSITIVE_VARIABLES_OBSERVER - 988)) | (1L << (SESSION_USER - 988)) | (1L << (SHA - 988)) | (1L << (SHA1 - 988)) | (1L << (SHA2 - 988)) | (1L << (SCHEMA_NAME - 988)) | (1L << (SIGN - 988)) | (1L << (SIN - 988)) | (1L << (SLEEP - 988)) | (1L << (SOUNDEX - 988)) | (1L << (SQL_THREAD_WAIT_AFTER_GTIDS - 988)) | (1L << (SQRT - 988)) | (1L << (SRID - 988)) | (1L << (STARTPOINT - 988)) | (1L << (STRCMP - 988)) | (1L << (STR_TO_DATE - 988)) | (1L << (ST_AREA - 988)) | (1L << (ST_ASBINARY - 988)) | (1L << (ST_ASTEXT - 988)) | (1L << (ST_ASWKB - 988)) | (1L << (ST_ASWKT - 988)) | (1L << (ST_BUFFER - 988)) | (1L << (ST_CENTROID - 988)) | (1L << (ST_CONTAINS - 988)) | (1L << (ST_CROSSES - 988)) | (1L << (ST_DIFFERENCE - 988)) | (1L << (ST_DIMENSION - 988)) | (1L << (ST_DISJOINT - 988)) | (1L << (ST_DISTANCE - 988)) | (1L << (ST_ENDPOINT - 988)) | (1L << (ST_ENVELOPE - 988)) | (1L << (ST_EQUALS - 988)) | (1L << (ST_EXTERIORRING - 988)) | (1L << (ST_GEOMCOLLFROMTEXT - 988)) | (1L << (ST_GEOMCOLLFROMTXT - 988)) | (1L << (ST_GEOMCOLLFROMWKB - 988)) | (1L << (ST_GEOMETRYCOLLECTIONFROMTEXT - 988)) | (1L << (ST_GEOMETRYCOLLECTIONFROMWKB - 988)) | (1L << (ST_GEOMETRYFROMTEXT - 988)) | (1L << (ST_GEOMETRYFROMWKB - 988)) | (1L << (ST_GEOMETRYN - 988)) | (1L << (ST_GEOMETRYTYPE - 988)) | (1L << (ST_GEOMFROMTEXT - 988)))) != 0) || ((((_la - 1052)) & ~0x3f) == 0 && ((1L << (_la - 1052)) & ((1L << (ST_GEOMFROMWKB - 1052)) | (1L << (ST_INTERIORRINGN - 1052)) | (1L << (ST_INTERSECTION - 1052)) | (1L << (ST_INTERSECTS - 1052)) | (1L << (ST_ISCLOSED - 1052)) | (1L << (ST_ISEMPTY - 1052)) | (1L << (ST_ISSIMPLE - 1052)) | (1L << (ST_LINEFROMTEXT - 1052)) | (1L << (ST_LINEFROMWKB - 1052)) | (1L << (ST_LINESTRINGFROMTEXT - 1052)) | (1L << (ST_LINESTRINGFROMWKB - 1052)) | (1L << (ST_NUMGEOMETRIES - 1052)) | (1L << (ST_NUMINTERIORRING - 1052)) | (1L << (ST_NUMINTERIORRINGS - 1052)) | (1L << (ST_NUMPOINTS - 1052)) | (1L << (ST_OVERLAPS - 1052)) | (1L << (ST_POINTFROMTEXT - 1052)) | (1L << (ST_POINTFROMWKB - 1052)) | (1L << (ST_POINTN - 1052)) | (1L << (ST_POLYFROMTEXT - 1052)) | (1L << (ST_POLYFROMWKB - 1052)) | (1L << (ST_POLYGONFROMTEXT - 1052)) | (1L << (ST_POLYGONFROMWKB - 1052)) | (1L << (ST_SRID - 1052)) | (1L << (ST_STARTPOINT - 1052)) | (1L << (ST_SYMDIFFERENCE - 1052)) | (1L << (ST_TOUCHES - 1052)) | (1L << (ST_UNION - 1052)) | (1L << (ST_WITHIN - 1052)) | (1L << (ST_X - 1052)) | (1L << (ST_Y - 1052)) | (1L << (SUBDATE - 1052)) | (1L << (SUBSTRING_INDEX - 1052)) | (1L << (SUBTIME - 1052)) | (1L << (SYSTEM_USER - 1052)) | (1L << (SYSTEM - 1052)) | (1L << (TAN - 1052)) | (1L << (TELEMETRY_LOG_ADMIN - 1052)) | (1L << (TIMEDIFF - 1052)) | (1L << (TIMESTAMPADD - 1052)) | (1L << (TIMESTAMPDIFF - 1052)) | (1L << (TIME_FORMAT - 1052)) | (1L << (TIME_TO_SEC - 1052)) | (1L << (TOUCHES - 1052)) | (1L << (TO_BASE64 - 1052)) | (1L << (TO_DAYS - 1052)) | (1L << (TO_SECONDS - 1052)) | (1L << (TP_CONNECTION_ADMIN - 1052)) | (1L << (UCASE - 1052)) | (1L << (UNCOMPRESS - 1052)) | (1L << (UNCOMPRESSED_LENGTH - 1052)) | (1L << (UNHEX - 1052)) | (1L << (UNIX_TIMESTAMP - 1052)) | (1L << (UPDATEXML - 1052)) | (1L << (UPPER - 1052)) | (1L << (UUID - 1052)) | (1L << (UUID_SHORT - 1052)) | (1L << (VALIDATE_PASSWORD_STRENGTH - 1052)) | (1L << (VERSION - 1052)) | (1L << (VERSIONING - 1052)) | (1L << (WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS - 1052)) | (1L << (WEEKDAY - 1052)) | (1L << (WEEKOFYEAR - 1052)) | (1L << (WEIGHT_STRING - 1052)))) != 0) || ((((_la - 1116)) & ~0x3f) == 0 && ((1L << (_la - 1116)) & ((1L << (WITHIN - 1116)) | (1L << (YEARWEEK - 1116)) | (1L << (Y_FUNCTION - 1116)) | (1L << (X_FUNCTION - 1116)) | (1L << (VIA - 1116)) | (1L << (LASTVAL - 1116)) | (1L << (NEXTVAL - 1116)) | (1L << (SETVAL - 1116)) | (1L << (PREVIOUS - 1116)) | (1L << (PERSISTENT - 1116)) | (1L << (BINLOG_MONITOR - 1116)) | (1L << (BINLOG_REPLAY - 1116)) | (1L << (FEDERATED_ADMIN - 1116)) | (1L << (READ_ONLY_ADMIN - 1116)) | (1L << (REPLICA - 1116)) | (1L << (REPLICATION_MASTER_ADMIN - 1116)) | (1L << (MONITOR - 1116)) | (1L << (READ_ONLY - 1116)) | (1L << (REPLAY - 1116)) | (1L << (MOD - 1116)) | (1L << (CHARSET_REVERSE_QOUTE_STRING - 1116)) | (1L << (STRING_LITERAL - 1116)))) != 0) || _la==ID) {
				{
				setState(4681);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==AS) {
					{
					setState(4680);
					match(AS);
					}
				}

				setState(4683);
				uid();
				}
			}

			setState(4686);
			lockAction();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class LockActionContext extends ParserRuleContext {
		public TerminalNode READ() { return getToken(MySqlParser.READ, 0); }
		public TerminalNode LOCAL() { return getToken(MySqlParser.LOCAL, 0); }
		public TerminalNode WRITE() { return getToken(MySqlParser.WRITE, 0); }
		public TerminalNode LOW_PRIORITY() { return getToken(MySqlParser.LOW_PRIORITY, 0); }
		public LockActionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_lockAction; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterLockAction(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitLockAction(this);
		}
	}

	public final LockActionContext lockAction() throws RecognitionException {
		LockActionContext _localctx = new LockActionContext(_ctx, getState());
		enterRule(_localctx, 342, RULE_lockAction);
		int _la;
		try {
			setState(4696);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case READ:
				enterOuterAlt(_localctx, 1);
				{
				setState(4688);
				match(READ);
				setState(4690);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LOCAL) {
					{
					setState(4689);
					match(LOCAL);
					}
				}

				}
				break;
			case LOW_PRIORITY:
			case WRITE:
				enterOuterAlt(_localctx, 2);
				{
				setState(4693);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LOW_PRIORITY) {
					{
					setState(4692);
					match(LOW_PRIORITY);
					}
				}

				setState(4695);
				match(WRITE);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TransactionOptionContext extends ParserRuleContext {
		public TerminalNode ISOLATION() { return getToken(MySqlParser.ISOLATION, 0); }
		public TerminalNode LEVEL() { return getToken(MySqlParser.LEVEL, 0); }
		public TransactionLevelContext transactionLevel() {
			return getRuleContext(TransactionLevelContext.class,0);
		}
		public TerminalNode READ() { return getToken(MySqlParser.READ, 0); }
		public TerminalNode WRITE() { return getToken(MySqlParser.WRITE, 0); }
		public TerminalNode ONLY() { return getToken(MySqlParser.ONLY, 0); }
		public TransactionOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_transactionOption; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTransactionOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTransactionOption(this);
		}
	}

	public final TransactionOptionContext transactionOption() throws RecognitionException {
		TransactionOptionContext _localctx = new TransactionOptionContext(_ctx, getState());
		enterRule(_localctx, 344, RULE_transactionOption);
		try {
			setState(4705);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,716,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(4698);
				match(ISOLATION);
				setState(4699);
				match(LEVEL);
				setState(4700);
				transactionLevel();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(4701);
				match(READ);
				setState(4702);
				match(WRITE);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(4703);
				match(READ);
				setState(4704);
				match(ONLY);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TransactionLevelContext extends ParserRuleContext {
		public TerminalNode REPEATABLE() { return getToken(MySqlParser.REPEATABLE, 0); }
		public TerminalNode READ() { return getToken(MySqlParser.READ, 0); }
		public TerminalNode COMMITTED() { return getToken(MySqlParser.COMMITTED, 0); }
		public TerminalNode UNCOMMITTED() { return getToken(MySqlParser.UNCOMMITTED, 0); }
		public TerminalNode SERIALIZABLE() { return getToken(MySqlParser.SERIALIZABLE, 0); }
		public TransactionLevelContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_transactionLevel; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTransactionLevel(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTransactionLevel(this);
		}
	}

	public final TransactionLevelContext transactionLevel() throws RecognitionException {
		TransactionLevelContext _localctx = new TransactionLevelContext(_ctx, getState());
		enterRule(_localctx, 346, RULE_transactionLevel);
		try {
			setState(4714);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,717,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(4707);
				match(REPEATABLE);
				setState(4708);
				match(READ);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(4709);
				match(READ);
				setState(4710);
				match(COMMITTED);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(4711);
				match(READ);
				setState(4712);
				match(UNCOMMITTED);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(4713);
				match(SERIALIZABLE);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ChangeMasterContext extends ParserRuleContext {
		public TerminalNode CHANGE() { return getToken(MySqlParser.CHANGE, 0); }
		public TerminalNode MASTER() { return getToken(MySqlParser.MASTER, 0); }
		public TerminalNode TO() { return getToken(MySqlParser.TO, 0); }
		public List masterOption() {
			return getRuleContexts(MasterOptionContext.class);
		}
		public MasterOptionContext masterOption(int i) {
			return getRuleContext(MasterOptionContext.class,i);
		}
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public ChannelOptionContext channelOption() {
			return getRuleContext(ChannelOptionContext.class,0);
		}
		public ChangeMasterContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_changeMaster; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterChangeMaster(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitChangeMaster(this);
		}
	}

	public final ChangeMasterContext changeMaster() throws RecognitionException {
		ChangeMasterContext _localctx = new ChangeMasterContext(_ctx, getState());
		enterRule(_localctx, 348, RULE_changeMaster);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4716);
			match(CHANGE);
			setState(4717);
			match(MASTER);
			setState(4718);
			match(TO);
			setState(4719);
			masterOption();
			setState(4724);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(4720);
				match(COMMA);
				setState(4721);
				masterOption();
				}
				}
				setState(4726);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(4728);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==FOR) {
				{
				setState(4727);
				channelOption();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ChangeReplicationFilterContext extends ParserRuleContext {
		public TerminalNode CHANGE() { return getToken(MySqlParser.CHANGE, 0); }
		public TerminalNode REPLICATION() { return getToken(MySqlParser.REPLICATION, 0); }
		public TerminalNode FILTER() { return getToken(MySqlParser.FILTER, 0); }
		public List replicationFilter() {
			return getRuleContexts(ReplicationFilterContext.class);
		}
		public ReplicationFilterContext replicationFilter(int i) {
			return getRuleContext(ReplicationFilterContext.class,i);
		}
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public ChangeReplicationFilterContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_changeReplicationFilter; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterChangeReplicationFilter(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitChangeReplicationFilter(this);
		}
	}

	public final ChangeReplicationFilterContext changeReplicationFilter() throws RecognitionException {
		ChangeReplicationFilterContext _localctx = new ChangeReplicationFilterContext(_ctx, getState());
		enterRule(_localctx, 350, RULE_changeReplicationFilter);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4730);
			match(CHANGE);
			setState(4731);
			match(REPLICATION);
			setState(4732);
			match(FILTER);
			setState(4733);
			replicationFilter();
			setState(4738);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(4734);
				match(COMMA);
				setState(4735);
				replicationFilter();
				}
				}
				setState(4740);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PurgeBinaryLogsContext extends ParserRuleContext {
		public Token purgeFormat;
		public Token fileName;
		public Token timeValue;
		public TerminalNode PURGE() { return getToken(MySqlParser.PURGE, 0); }
		public TerminalNode LOGS() { return getToken(MySqlParser.LOGS, 0); }
		public TerminalNode BINARY() { return getToken(MySqlParser.BINARY, 0); }
		public TerminalNode MASTER() { return getToken(MySqlParser.MASTER, 0); }
		public TerminalNode TO() { return getToken(MySqlParser.TO, 0); }
		public TerminalNode BEFORE() { return getToken(MySqlParser.BEFORE, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public PurgeBinaryLogsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_purgeBinaryLogs; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPurgeBinaryLogs(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPurgeBinaryLogs(this);
		}
	}

	public final PurgeBinaryLogsContext purgeBinaryLogs() throws RecognitionException {
		PurgeBinaryLogsContext _localctx = new PurgeBinaryLogsContext(_ctx, getState());
		enterRule(_localctx, 352, RULE_purgeBinaryLogs);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4741);
			match(PURGE);
			setState(4742);
			((PurgeBinaryLogsContext)_localctx).purgeFormat = _input.LT(1);
			_la = _input.LA(1);
			if ( !(_la==BINARY || _la==MASTER) ) {
				((PurgeBinaryLogsContext)_localctx).purgeFormat = (Token)_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(4743);
			match(LOGS);
			setState(4748);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case TO:
				{
				setState(4744);
				match(TO);
				setState(4745);
				((PurgeBinaryLogsContext)_localctx).fileName = match(STRING_LITERAL);
				}
				break;
			case BEFORE:
				{
				setState(4746);
				match(BEFORE);
				setState(4747);
				((PurgeBinaryLogsContext)_localctx).timeValue = match(STRING_LITERAL);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ResetMasterContext extends ParserRuleContext {
		public TerminalNode RESET() { return getToken(MySqlParser.RESET, 0); }
		public TerminalNode MASTER() { return getToken(MySqlParser.MASTER, 0); }
		public ResetMasterContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_resetMaster; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterResetMaster(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitResetMaster(this);
		}
	}

	public final ResetMasterContext resetMaster() throws RecognitionException {
		ResetMasterContext _localctx = new ResetMasterContext(_ctx, getState());
		enterRule(_localctx, 354, RULE_resetMaster);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4750);
			match(RESET);
			setState(4751);
			match(MASTER);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ResetSlaveContext extends ParserRuleContext {
		public TerminalNode RESET() { return getToken(MySqlParser.RESET, 0); }
		public TerminalNode SLAVE() { return getToken(MySqlParser.SLAVE, 0); }
		public TerminalNode ALL() { return getToken(MySqlParser.ALL, 0); }
		public ChannelOptionContext channelOption() {
			return getRuleContext(ChannelOptionContext.class,0);
		}
		public ResetSlaveContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_resetSlave; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterResetSlave(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitResetSlave(this);
		}
	}

	public final ResetSlaveContext resetSlave() throws RecognitionException {
		ResetSlaveContext _localctx = new ResetSlaveContext(_ctx, getState());
		enterRule(_localctx, 356, RULE_resetSlave);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4753);
			match(RESET);
			setState(4754);
			match(SLAVE);
			setState(4756);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ALL) {
				{
				setState(4755);
				match(ALL);
				}
			}

			setState(4759);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==FOR) {
				{
				setState(4758);
				channelOption();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class StartSlaveContext extends ParserRuleContext {
		public TerminalNode START() { return getToken(MySqlParser.START, 0); }
		public TerminalNode SLAVE() { return getToken(MySqlParser.SLAVE, 0); }
		public List threadType() {
			return getRuleContexts(ThreadTypeContext.class);
		}
		public ThreadTypeContext threadType(int i) {
			return getRuleContext(ThreadTypeContext.class,i);
		}
		public TerminalNode UNTIL() { return getToken(MySqlParser.UNTIL, 0); }
		public UntilOptionContext untilOption() {
			return getRuleContext(UntilOptionContext.class,0);
		}
		public List connectionOption() {
			return getRuleContexts(ConnectionOptionContext.class);
		}
		public ConnectionOptionContext connectionOption(int i) {
			return getRuleContext(ConnectionOptionContext.class,i);
		}
		public ChannelOptionContext channelOption() {
			return getRuleContext(ChannelOptionContext.class,0);
		}
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public StartSlaveContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_startSlave; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterStartSlave(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitStartSlave(this);
		}
	}

	public final StartSlaveContext startSlave() throws RecognitionException {
		StartSlaveContext _localctx = new StartSlaveContext(_ctx, getState());
		enterRule(_localctx, 358, RULE_startSlave);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4761);
			match(START);
			setState(4762);
			match(SLAVE);
			setState(4771);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IO_THREAD || _la==SQL_THREAD) {
				{
				setState(4763);
				threadType();
				setState(4768);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(4764);
					match(COMMA);
					setState(4765);
					threadType();
					}
					}
					setState(4770);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
			}

			setState(4775);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==UNTIL) {
				{
				setState(4773);
				match(UNTIL);
				setState(4774);
				untilOption();
				}
			}

			setState(4780);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==DEFAULT_AUTH || _la==PASSWORD || _la==PLUGIN_DIR || _la==USER) {
				{
				{
				setState(4777);
				connectionOption();
				}
				}
				setState(4782);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(4784);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==FOR) {
				{
				setState(4783);
				channelOption();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class StopSlaveContext extends ParserRuleContext {
		public TerminalNode STOP() { return getToken(MySqlParser.STOP, 0); }
		public TerminalNode SLAVE() { return getToken(MySqlParser.SLAVE, 0); }
		public List threadType() {
			return getRuleContexts(ThreadTypeContext.class);
		}
		public ThreadTypeContext threadType(int i) {
			return getRuleContext(ThreadTypeContext.class,i);
		}
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public StopSlaveContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_stopSlave; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterStopSlave(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitStopSlave(this);
		}
	}

	public final StopSlaveContext stopSlave() throws RecognitionException {
		StopSlaveContext _localctx = new StopSlaveContext(_ctx, getState());
		enterRule(_localctx, 360, RULE_stopSlave);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4786);
			match(STOP);
			setState(4787);
			match(SLAVE);
			setState(4796);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IO_THREAD || _la==SQL_THREAD) {
				{
				setState(4788);
				threadType();
				setState(4793);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(4789);
					match(COMMA);
					setState(4790);
					threadType();
					}
					}
					setState(4795);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class StartGroupReplicationContext extends ParserRuleContext {
		public TerminalNode START() { return getToken(MySqlParser.START, 0); }
		public TerminalNode GROUP_REPLICATION() { return getToken(MySqlParser.GROUP_REPLICATION, 0); }
		public StartGroupReplicationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_startGroupReplication; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterStartGroupReplication(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitStartGroupReplication(this);
		}
	}

	public final StartGroupReplicationContext startGroupReplication() throws RecognitionException {
		StartGroupReplicationContext _localctx = new StartGroupReplicationContext(_ctx, getState());
		enterRule(_localctx, 362, RULE_startGroupReplication);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4798);
			match(START);
			setState(4799);
			match(GROUP_REPLICATION);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class StopGroupReplicationContext extends ParserRuleContext {
		public TerminalNode STOP() { return getToken(MySqlParser.STOP, 0); }
		public TerminalNode GROUP_REPLICATION() { return getToken(MySqlParser.GROUP_REPLICATION, 0); }
		public StopGroupReplicationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_stopGroupReplication; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterStopGroupReplication(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitStopGroupReplication(this);
		}
	}

	public final StopGroupReplicationContext stopGroupReplication() throws RecognitionException {
		StopGroupReplicationContext _localctx = new StopGroupReplicationContext(_ctx, getState());
		enterRule(_localctx, 364, RULE_stopGroupReplication);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4801);
			match(STOP);
			setState(4802);
			match(GROUP_REPLICATION);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class MasterOptionContext extends ParserRuleContext {
		public MasterOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_masterOption; }
	 
		public MasterOptionContext() { }
		public void copyFrom(MasterOptionContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class MasterStringOptionContext extends MasterOptionContext {
		public StringMasterOptionContext stringMasterOption() {
			return getRuleContext(StringMasterOptionContext.class,0);
		}
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public MasterStringOptionContext(MasterOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterMasterStringOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitMasterStringOption(this);
		}
	}
	public static class MasterRealOptionContext extends MasterOptionContext {
		public TerminalNode MASTER_HEARTBEAT_PERIOD() { return getToken(MySqlParser.MASTER_HEARTBEAT_PERIOD, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TerminalNode REAL_LITERAL() { return getToken(MySqlParser.REAL_LITERAL, 0); }
		public MasterRealOptionContext(MasterOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterMasterRealOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitMasterRealOption(this);
		}
	}
	public static class MasterBoolOptionContext extends MasterOptionContext {
		public Token boolVal;
		public BoolMasterOptionContext boolMasterOption() {
			return getRuleContext(BoolMasterOptionContext.class,0);
		}
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TerminalNode ZERO_DECIMAL() { return getToken(MySqlParser.ZERO_DECIMAL, 0); }
		public TerminalNode ONE_DECIMAL() { return getToken(MySqlParser.ONE_DECIMAL, 0); }
		public MasterBoolOptionContext(MasterOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterMasterBoolOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitMasterBoolOption(this);
		}
	}
	public static class MasterUidListOptionContext extends MasterOptionContext {
		public TerminalNode IGNORE_SERVER_IDS() { return getToken(MySqlParser.IGNORE_SERVER_IDS, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public List uid() {
			return getRuleContexts(UidContext.class);
		}
		public UidContext uid(int i) {
			return getRuleContext(UidContext.class,i);
		}
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public MasterUidListOptionContext(MasterOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterMasterUidListOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitMasterUidListOption(this);
		}
	}
	public static class MasterDecimalOptionContext extends MasterOptionContext {
		public DecimalMasterOptionContext decimalMasterOption() {
			return getRuleContext(DecimalMasterOptionContext.class,0);
		}
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public DecimalLiteralContext decimalLiteral() {
			return getRuleContext(DecimalLiteralContext.class,0);
		}
		public MasterDecimalOptionContext(MasterOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterMasterDecimalOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitMasterDecimalOption(this);
		}
	}

	public final MasterOptionContext masterOption() throws RecognitionException {
		MasterOptionContext _localctx = new MasterOptionContext(_ctx, getState());
		enterRule(_localctx, 366, RULE_masterOption);
		int _la;
		try {
			setState(4833);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case MASTER_BIND:
			case MASTER_HOST:
			case MASTER_LOG_FILE:
			case MASTER_PASSWORD:
			case MASTER_SSL_CA:
			case MASTER_SSL_CAPATH:
			case MASTER_SSL_CERT:
			case MASTER_SSL_CIPHER:
			case MASTER_SSL_CRL:
			case MASTER_SSL_CRLPATH:
			case MASTER_SSL_KEY:
			case MASTER_TLS_VERSION:
			case MASTER_USER:
			case RELAY_LOG_FILE:
				_localctx = new MasterStringOptionContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(4804);
				stringMasterOption();
				setState(4805);
				match(EQUAL_SYMBOL);
				setState(4806);
				match(STRING_LITERAL);
				}
				break;
			case MASTER_CONNECT_RETRY:
			case MASTER_DELAY:
			case MASTER_LOG_POS:
			case MASTER_PORT:
			case MASTER_RETRY_COUNT:
			case RELAY_LOG_POS:
				_localctx = new MasterDecimalOptionContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(4808);
				decimalMasterOption();
				setState(4809);
				match(EQUAL_SYMBOL);
				setState(4810);
				decimalLiteral();
				}
				break;
			case MASTER_SSL_VERIFY_SERVER_CERT:
			case MASTER_AUTO_POSITION:
			case MASTER_SSL:
				_localctx = new MasterBoolOptionContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(4812);
				boolMasterOption();
				setState(4813);
				match(EQUAL_SYMBOL);
				setState(4814);
				((MasterBoolOptionContext)_localctx).boolVal = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==ZERO_DECIMAL || _la==ONE_DECIMAL) ) {
					((MasterBoolOptionContext)_localctx).boolVal = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case MASTER_HEARTBEAT_PERIOD:
				_localctx = new MasterRealOptionContext(_localctx);
				enterOuterAlt(_localctx, 4);
				{
				setState(4816);
				match(MASTER_HEARTBEAT_PERIOD);
				setState(4817);
				match(EQUAL_SYMBOL);
				setState(4818);
				match(REAL_LITERAL);
				}
				break;
			case IGNORE_SERVER_IDS:
				_localctx = new MasterUidListOptionContext(_localctx);
				enterOuterAlt(_localctx, 5);
				{
				setState(4819);
				match(IGNORE_SERVER_IDS);
				setState(4820);
				match(EQUAL_SYMBOL);
				setState(4821);
				match(LR_BRACKET);
				setState(4830);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ARRAY) | (1L << ATTRIBUTE) | (1L << BUCKETS) | (1L << CONDITION) | (1L << CURRENT) | (1L << CURRENT_ROLE) | (1L << CURRENT_USER) | (1L << DATABASE) | (1L << DEFAULT) | (1L << DIAGNOSTICS) | (1L << EMPTY) | (1L << ENFORCED) | (1L << EXCEPT))) != 0) || ((((_la - 74)) & ~0x3f) == 0 && ((1L << (_la - 74)) & ((1L << (GROUP - 74)) | (1L << (GROUP_REPLICATION_STREAM - 74)) | (1L << (IF - 74)) | (1L << (IGNORED - 74)) | (1L << (INSERT - 74)) | (1L << (LATERAL - 74)) | (1L << (LEFT - 74)) | (1L << (LOCKED - 74)) | (1L << (MAXVALUE - 74)) | (1L << (MINVALUE - 74)) | (1L << (NUMBER - 74)) | (1L << (OPTIONAL - 74)) | (1L << (ORDER - 74)) | (1L << (PRIMARY - 74)))) != 0) || ((((_la - 142)) & ~0x3f) == 0 && ((1L << (_la - 142)) & ((1L << (REPEAT - 142)) | (1L << (REPLACE - 142)) | (1L << (RIGHT - 142)) | (1L << (SCHEMA - 142)) | (1L << (SKIP_ - 142)) | (1L << (SKIP_QUERY_REWRITE - 142)) | (1L << (STACKED - 142)) | (1L << (STATEMENT - 142)))) != 0) || ((((_la - 220)) & ~0x3f) == 0 && ((1L << (_la - 220)) & ((1L << (DATE - 220)) | (1L << (TIME - 220)) | (1L << (TIMESTAMP - 220)) | (1L << (DATETIME - 220)) | (1L << (YEAR - 220)) | (1L << (NATIONAL - 220)) | (1L << (BINARY - 220)) | (1L << (TEXT - 220)) | (1L << (ENUM - 220)) | (1L << (SERIAL - 220)) | (1L << (JSON_ARRAY - 220)) | (1L << (JSON_ARRAYAGG - 220)) | (1L << (JSON_ARRAY_APPEND - 220)) | (1L << (JSON_ARRAY_INSERT - 220)) | (1L << (JSON_CONTAINS - 220)) | (1L << (JSON_CONTAINS_PATH - 220)) | (1L << (JSON_DEPTH - 220)) | (1L << (JSON_EXTRACT - 220)) | (1L << (JSON_INSERT - 220)) | (1L << (JSON_KEYS - 220)) | (1L << (JSON_LENGTH - 220)) | (1L << (JSON_MERGE - 220)) | (1L << (JSON_MERGE_PATCH - 220)) | (1L << (JSON_MERGE_PRESERVE - 220)) | (1L << (JSON_OBJECT - 220)) | (1L << (JSON_OBJECTAGG - 220)) | (1L << (JSON_OVERLAPS - 220)) | (1L << (JSON_PRETTY - 220)) | (1L << (JSON_QUOTE - 220)) | (1L << (JSON_REMOVE - 220)) | (1L << (JSON_REPLACE - 220)) | (1L << (JSON_SCHEMA_VALID - 220)) | (1L << (JSON_SCHEMA_VALIDATION_REPORT - 220)) | (1L << (JSON_SEARCH - 220)) | (1L << (JSON_SET - 220)) | (1L << (JSON_STORAGE_FREE - 220)) | (1L << (JSON_STORAGE_SIZE - 220)) | (1L << (JSON_TABLE - 220)) | (1L << (JSON_TYPE - 220)) | (1L << (JSON_UNQUOTE - 220)))) != 0) || ((((_la - 284)) & ~0x3f) == 0 && ((1L << (_la - 284)) & ((1L << (JSON_VALID - 284)) | (1L << (JSON_VALUE - 284)) | (1L << (NESTED - 284)) | (1L << (ORDINALITY - 284)) | (1L << (PATH - 284)) | (1L << (AVG - 284)) | (1L << (BIT_AND - 284)) | (1L << (BIT_OR - 284)) | (1L << (BIT_XOR - 284)) | (1L << (COUNT - 284)) | (1L << (CUME_DIST - 284)) | (1L << (DENSE_RANK - 284)) | (1L << (FIRST_VALUE - 284)) | (1L << (GROUP_CONCAT - 284)) | (1L << (LAG - 284)) | (1L << (LAST_VALUE - 284)) | (1L << (LEAD - 284)) | (1L << (MAX - 284)) | (1L << (MIN - 284)) | (1L << (NTILE - 284)) | (1L << (NTH_VALUE - 284)) | (1L << (PERCENT_RANK - 284)) | (1L << (RANK - 284)) | (1L << (ROW_NUMBER - 284)) | (1L << (STD - 284)) | (1L << (STDDEV - 284)) | (1L << (STDDEV_POP - 284)) | (1L << (STDDEV_SAMP - 284)) | (1L << (SUM - 284)) | (1L << (VAR_POP - 284)) | (1L << (VAR_SAMP - 284)) | (1L << (VARIANCE - 284)) | (1L << (CURRENT_DATE - 284)) | (1L << (CURRENT_TIME - 284)) | (1L << (CURRENT_TIMESTAMP - 284)) | (1L << (LOCALTIME - 284)) | (1L << (CURDATE - 284)) | (1L << (CURTIME - 284)) | (1L << (DATE_ADD - 284)) | (1L << (DATE_SUB - 284)) | (1L << (LOCALTIMESTAMP - 284)) | (1L << (NOW - 284)) | (1L << (POSITION - 284)) | (1L << (SUBSTR - 284)) | (1L << (SUBSTRING - 284)) | (1L << (SYSDATE - 284)) | (1L << (TRIM - 284)) | (1L << (UTC_DATE - 284)) | (1L << (UTC_TIME - 284)) | (1L << (UTC_TIMESTAMP - 284)) | (1L << (ACCOUNT - 284)) | (1L << (ACTION - 284)) | (1L << (AFTER - 284)) | (1L << (AGGREGATE - 284)) | (1L << (ALGORITHM - 284)) | (1L << (ANY - 284)) | (1L << (AT - 284)) | (1L << (AUTHORS - 284)) | (1L << (AUTOCOMMIT - 284)) | (1L << (AUTOEXTEND_SIZE - 284)) | (1L << (AUTO_INCREMENT - 284)) | (1L << (AVG_ROW_LENGTH - 284)) | (1L << (BEGIN - 284)))) != 0) || ((((_la - 348)) & ~0x3f) == 0 && ((1L << (_la - 348)) & ((1L << (BINLOG - 348)) | (1L << (BIT - 348)) | (1L << (BLOCK - 348)) | (1L << (BOOL - 348)) | (1L << (BOOLEAN - 348)) | (1L << (BTREE - 348)) | (1L << (CACHE - 348)) | (1L << (CASCADED - 348)) | (1L << (CHAIN - 348)) | (1L << (CHANGED - 348)) | (1L << (CHANNEL - 348)) | (1L << (CHECKSUM - 348)) | (1L << (PAGE_CHECKSUM - 348)) | (1L << (CIPHER - 348)) | (1L << (CLASS_ORIGIN - 348)) | (1L << (CLIENT - 348)) | (1L << (CLOSE - 348)) | (1L << (CLUSTERING - 348)) | (1L << (COALESCE - 348)) | (1L << (CODE - 348)) | (1L << (COLUMNS - 348)) | (1L << (COLUMN_FORMAT - 348)) | (1L << (COLUMN_NAME - 348)) | (1L << (COMMENT - 348)) | (1L << (COMMIT - 348)) | (1L << (COMPACT - 348)) | (1L << (COMPLETION - 348)) | (1L << (COMPRESSED - 348)) | (1L << (COMPRESSION - 348)) | (1L << (CONCURRENT - 348)) | (1L << (CONNECT - 348)) | (1L << (CONNECTION - 348)) | (1L << (CONSISTENT - 348)) | (1L << (CONSTRAINT_CATALOG - 348)) | (1L << (CONSTRAINT_SCHEMA - 348)) | (1L << (CONSTRAINT_NAME - 348)) | (1L << (CONTAINS - 348)) | (1L << (CONTEXT - 348)) | (1L << (CONTRIBUTORS - 348)) | (1L << (COPY - 348)) | (1L << (CPU - 348)) | (1L << (CYCLE - 348)) | (1L << (CURSOR_NAME - 348)) | (1L << (DATA - 348)) | (1L << (DATAFILE - 348)) | (1L << (DEALLOCATE - 348)) | (1L << (DEFAULT_AUTH - 348)) | (1L << (DEFINER - 348)) | (1L << (DELAY_KEY_WRITE - 348)) | (1L << (DES_KEY_FILE - 348)) | (1L << (DIRECTORY - 348)) | (1L << (DISABLE - 348)) | (1L << (DISCARD - 348)) | (1L << (DISK - 348)) | (1L << (DO - 348)) | (1L << (DUMPFILE - 348)) | (1L << (DUPLICATE - 348)) | (1L << (DYNAMIC - 348)) | (1L << (ENABLE - 348)) | (1L << (ENCRYPTED - 348)) | (1L << (ENCRYPTION - 348)) | (1L << (ENCRYPTION_KEY_ID - 348)) | (1L << (END - 348)) | (1L << (ENDS - 348)))) != 0) || ((((_la - 412)) & ~0x3f) == 0 && ((1L << (_la - 412)) & ((1L << (ENGINE - 412)) | (1L << (ENGINES - 412)) | (1L << (ERROR - 412)) | (1L << (ERRORS - 412)) | (1L << (ESCAPE - 412)) | (1L << (EVEN - 412)) | (1L << (EVENT - 412)) | (1L << (EVENTS - 412)) | (1L << (EVERY - 412)) | (1L << (EXCHANGE - 412)) | (1L << (EXCLUSIVE - 412)) | (1L << (EXPIRE - 412)) | (1L << (EXPORT - 412)) | (1L << (EXTENDED - 412)) | (1L << (EXTENT_SIZE - 412)) | (1L << (FAILED_LOGIN_ATTEMPTS - 412)) | (1L << (FAST - 412)) | (1L << (FAULTS - 412)) | (1L << (FIELDS - 412)) | (1L << (FILE_BLOCK_SIZE - 412)) | (1L << (FILTER - 412)) | (1L << (FIRST - 412)) | (1L << (FIXED - 412)) | (1L << (FLUSH - 412)) | (1L << (FOLLOWS - 412)) | (1L << (FOUND - 412)) | (1L << (FULL - 412)) | (1L << (FUNCTION - 412)) | (1L << (GENERAL - 412)) | (1L << (GLOBAL - 412)) | (1L << (GRANTS - 412)) | (1L << (GROUP_REPLICATION - 412)) | (1L << (HANDLER - 412)) | (1L << (HASH - 412)) | (1L << (HELP - 412)) | (1L << (HISTORY - 412)) | (1L << (HOST - 412)) | (1L << (HOSTS - 412)) | (1L << (IDENTIFIED - 412)) | (1L << (IGNORE_SERVER_IDS - 412)) | (1L << (IMPORT - 412)) | (1L << (INCREMENT - 412)) | (1L << (INDEXES - 412)) | (1L << (INITIAL_SIZE - 412)) | (1L << (INPLACE - 412)) | (1L << (INSERT_METHOD - 412)) | (1L << (INSTALL - 412)) | (1L << (INSTANCE - 412)) | (1L << (INSTANT - 412)) | (1L << (INVISIBLE - 412)) | (1L << (INVOKER - 412)) | (1L << (IO - 412)) | (1L << (IO_THREAD - 412)) | (1L << (IPC - 412)) | (1L << (ISOLATION - 412)) | (1L << (ISSUER - 412)) | (1L << (JSON - 412)) | (1L << (KEY_BLOCK_SIZE - 412)) | (1L << (LANGUAGE - 412)) | (1L << (LAST - 412)) | (1L << (LEAVES - 412)) | (1L << (LESS - 412)) | (1L << (LEVEL - 412)))) != 0) || ((((_la - 476)) & ~0x3f) == 0 && ((1L << (_la - 476)) & ((1L << (LIST - 476)) | (1L << (LOCAL - 476)) | (1L << (LOGFILE - 476)) | (1L << (LOGS - 476)) | (1L << (MASTER - 476)) | (1L << (MASTER_AUTO_POSITION - 476)) | (1L << (MASTER_CONNECT_RETRY - 476)) | (1L << (MASTER_DELAY - 476)) | (1L << (MASTER_HEARTBEAT_PERIOD - 476)) | (1L << (MASTER_HOST - 476)) | (1L << (MASTER_LOG_FILE - 476)) | (1L << (MASTER_LOG_POS - 476)) | (1L << (MASTER_PASSWORD - 476)) | (1L << (MASTER_PORT - 476)) | (1L << (MASTER_RETRY_COUNT - 476)) | (1L << (MASTER_SSL - 476)) | (1L << (MASTER_SSL_CA - 476)) | (1L << (MASTER_SSL_CAPATH - 476)) | (1L << (MASTER_SSL_CERT - 476)) | (1L << (MASTER_SSL_CIPHER - 476)) | (1L << (MASTER_SSL_CRL - 476)) | (1L << (MASTER_SSL_CRLPATH - 476)) | (1L << (MASTER_SSL_KEY - 476)) | (1L << (MASTER_TLS_VERSION - 476)) | (1L << (MASTER_USER - 476)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 476)) | (1L << (MAX_QUERIES_PER_HOUR - 476)) | (1L << (MAX_ROWS - 476)) | (1L << (MAX_SIZE - 476)) | (1L << (MAX_UPDATES_PER_HOUR - 476)) | (1L << (MAX_USER_CONNECTIONS - 476)) | (1L << (MEDIUM - 476)) | (1L << (MEMBER - 476)) | (1L << (MERGE - 476)) | (1L << (MESSAGE_TEXT - 476)) | (1L << (MID - 476)) | (1L << (MIGRATE - 476)) | (1L << (MIN_ROWS - 476)) | (1L << (MODE - 476)) | (1L << (MODIFY - 476)) | (1L << (MUTEX - 476)) | (1L << (MYSQL - 476)) | (1L << (MYSQL_ERRNO - 476)) | (1L << (NAME - 476)) | (1L << (NAMES - 476)) | (1L << (NCHAR - 476)) | (1L << (NEVER - 476)) | (1L << (NEXT - 476)) | (1L << (NO - 476)) | (1L << (NOCACHE - 476)) | (1L << (NOCOPY - 476)) | (1L << (NOCYCLE - 476)) | (1L << (NOMAXVALUE - 476)) | (1L << (NOMINVALUE - 476)) | (1L << (NOWAIT - 476)) | (1L << (NODEGROUP - 476)) | (1L << (NONE - 476)) | (1L << (ODBC - 476)) | (1L << (OFFLINE - 476)) | (1L << (OFFSET - 476)) | (1L << (OF - 476)) | (1L << (OJ - 476)) | (1L << (OLD_PASSWORD - 476)) | (1L << (ONE - 476)))) != 0) || ((((_la - 540)) & ~0x3f) == 0 && ((1L << (_la - 540)) & ((1L << (ONLINE - 540)) | (1L << (ONLY - 540)) | (1L << (OPEN - 540)) | (1L << (OPTIMIZER_COSTS - 540)) | (1L << (OPTIONS - 540)) | (1L << (OWNER - 540)) | (1L << (PACK_KEYS - 540)) | (1L << (PAGE - 540)) | (1L << (PARSER - 540)) | (1L << (PARTIAL - 540)) | (1L << (PARTITIONING - 540)) | (1L << (PARTITIONS - 540)) | (1L << (PASSWORD - 540)) | (1L << (PASSWORD_LOCK_TIME - 540)) | (1L << (PHASE - 540)) | (1L << (PLUGIN - 540)) | (1L << (PLUGIN_DIR - 540)) | (1L << (PLUGINS - 540)) | (1L << (PORT - 540)) | (1L << (PRECEDES - 540)) | (1L << (PREPARE - 540)) | (1L << (PRESERVE - 540)) | (1L << (PREV - 540)) | (1L << (PROCESSLIST - 540)) | (1L << (PROFILE - 540)) | (1L << (PROFILES - 540)) | (1L << (PROXY - 540)) | (1L << (QUERY - 540)) | (1L << (QUICK - 540)) | (1L << (REBUILD - 540)) | (1L << (RECOVER - 540)) | (1L << (RECURSIVE - 540)) | (1L << (REDO_BUFFER_SIZE - 540)) | (1L << (REDUNDANT - 540)) | (1L << (RELAY - 540)) | (1L << (RELAY_LOG_FILE - 540)) | (1L << (RELAY_LOG_POS - 540)) | (1L << (RELAYLOG - 540)) | (1L << (REMOVE - 540)) | (1L << (REORGANIZE - 540)) | (1L << (REPAIR - 540)) | (1L << (REPLICATE_DO_DB - 540)) | (1L << (REPLICATE_DO_TABLE - 540)) | (1L << (REPLICATE_IGNORE_DB - 540)) | (1L << (REPLICATE_IGNORE_TABLE - 540)) | (1L << (REPLICATE_REWRITE_DB - 540)) | (1L << (REPLICATE_WILD_DO_TABLE - 540)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 540)) | (1L << (REPLICATION - 540)) | (1L << (RESET - 540)) | (1L << (RESTART - 540)) | (1L << (RESUME - 540)) | (1L << (RETURNED_SQLSTATE - 540)) | (1L << (RETURNING - 540)) | (1L << (RETURNS - 540)) | (1L << (REUSE - 540)) | (1L << (ROLE - 540)) | (1L << (ROLLBACK - 540)) | (1L << (ROLLUP - 540)) | (1L << (ROTATE - 540)) | (1L << (ROW - 540)))) != 0) || ((((_la - 604)) & ~0x3f) == 0 && ((1L << (_la - 604)) & ((1L << (ROWS - 604)) | (1L << (ROW_FORMAT - 604)) | (1L << (RTREE - 604)) | (1L << (SAVEPOINT - 604)) | (1L << (SCHEDULE - 604)) | (1L << (SECURITY - 604)) | (1L << (SEQUENCE - 604)) | (1L << (SERVER - 604)) | (1L << (SESSION - 604)) | (1L << (SHARE - 604)) | (1L << (SHARED - 604)) | (1L << (SIGNED - 604)) | (1L << (SIMPLE - 604)) | (1L << (SLAVE - 604)) | (1L << (SLOW - 604)) | (1L << (SNAPSHOT - 604)) | (1L << (SOCKET - 604)) | (1L << (SOME - 604)) | (1L << (SONAME - 604)) | (1L << (SOUNDS - 604)) | (1L << (SOURCE - 604)) | (1L << (SQL_AFTER_GTIDS - 604)) | (1L << (SQL_AFTER_MTS_GAPS - 604)) | (1L << (SQL_BEFORE_GTIDS - 604)) | (1L << (SQL_BUFFER_RESULT - 604)) | (1L << (SQL_CACHE - 604)) | (1L << (SQL_NO_CACHE - 604)) | (1L << (SQL_THREAD - 604)) | (1L << (START - 604)) | (1L << (STARTS - 604)) | (1L << (STATS_AUTO_RECALC - 604)) | (1L << (STATS_PERSISTENT - 604)) | (1L << (STATS_SAMPLE_PAGES - 604)) | (1L << (STATUS - 604)) | (1L << (STOP - 604)) | (1L << (STORAGE - 604)) | (1L << (STRING - 604)) | (1L << (SUBCLASS_ORIGIN - 604)) | (1L << (SUBJECT - 604)) | (1L << (SUBPARTITION - 604)) | (1L << (SUBPARTITIONS - 604)) | (1L << (SUSPEND - 604)) | (1L << (SWAPS - 604)) | (1L << (SWITCHES - 604)) | (1L << (TABLE_NAME - 604)) | (1L << (TABLESPACE - 604)) | (1L << (TABLE_TYPE - 604)) | (1L << (TEMPORARY - 604)) | (1L << (TEMPTABLE - 604)) | (1L << (THAN - 604)) | (1L << (TRADITIONAL - 604)) | (1L << (TRANSACTION - 604)) | (1L << (TRANSACTIONAL - 604)) | (1L << (TRIGGERS - 604)) | (1L << (TRUNCATE - 604)) | (1L << (UNBOUNDED - 604)) | (1L << (UNDEFINED - 604)) | (1L << (UNDOFILE - 604)) | (1L << (UNDO_BUFFER_SIZE - 604)) | (1L << (UNINSTALL - 604)) | (1L << (UNKNOWN - 604)) | (1L << (UNTIL - 604)) | (1L << (UPGRADE - 604)))) != 0) || ((((_la - 668)) & ~0x3f) == 0 && ((1L << (_la - 668)) & ((1L << (USER - 668)) | (1L << (USE_FRM - 668)) | (1L << (USER_RESOURCES - 668)) | (1L << (VALIDATION - 668)) | (1L << (VALUE - 668)) | (1L << (VARIABLES - 668)) | (1L << (VIEW - 668)) | (1L << (VIRTUAL - 668)) | (1L << (VISIBLE - 668)) | (1L << (WAIT - 668)) | (1L << (WARNINGS - 668)) | (1L << (WITHOUT - 668)) | (1L << (WORK - 668)) | (1L << (WRAPPER - 668)) | (1L << (X509 - 668)) | (1L << (XA - 668)) | (1L << (XML - 668)) | (1L << (YES - 668)) | (1L << (EUR - 668)) | (1L << (USA - 668)) | (1L << (JIS - 668)) | (1L << (ISO - 668)) | (1L << (INTERNAL - 668)) | (1L << (QUARTER - 668)) | (1L << (MONTH - 668)) | (1L << (DAY - 668)) | (1L << (HOUR - 668)) | (1L << (MINUTE - 668)) | (1L << (WEEK - 668)) | (1L << (SECOND - 668)) | (1L << (MICROSECOND - 668)) | (1L << (USER_STATISTICS - 668)) | (1L << (CLIENT_STATISTICS - 668)) | (1L << (INDEX_STATISTICS - 668)) | (1L << (TABLE_STATISTICS - 668)) | (1L << (FIREWALL_RULES - 668)) | (1L << (ADMIN - 668)) | (1L << (APPLICATION_PASSWORD_ADMIN - 668)) | (1L << (AUDIT_ADMIN - 668)) | (1L << (AUDIT_ABORT_EXEMPT - 668)) | (1L << (AUTHENTICATION_POLICY_ADMIN - 668)) | (1L << (BACKUP_ADMIN - 668)) | (1L << (BINLOG_ADMIN - 668)) | (1L << (BINLOG_ENCRYPTION_ADMIN - 668)) | (1L << (CLONE_ADMIN - 668)) | (1L << (CONNECTION_ADMIN - 668)) | (1L << (ENCRYPTION_KEY_ADMIN - 668)) | (1L << (EXECUTE - 668)) | (1L << (FILE - 668)) | (1L << (FIREWALL_ADMIN - 668)) | (1L << (FIREWALL_EXEMPT - 668)) | (1L << (FIREWALL_USER - 668)) | (1L << (FLUSH_OPTIMIZER_COSTS - 668)) | (1L << (FLUSH_STATUS - 668)) | (1L << (FLUSH_TABLES - 668)) | (1L << (FLUSH_USER_RESOURCES - 668)) | (1L << (GROUP_REPLICATION_ADMIN - 668)) | (1L << (INNODB_REDO_LOG_ARCHIVE - 668)) | (1L << (INNODB_REDO_LOG_ENABLE - 668)) | (1L << (INVOKE - 668)) | (1L << (LAMBDA - 668)) | (1L << (NDB_STORED_USER - 668)) | (1L << (PASSWORDLESS_USER_ADMIN - 668)))) != 0) || ((((_la - 732)) & ~0x3f) == 0 && ((1L << (_la - 732)) & ((1L << (PERSIST_RO_VARIABLES_ADMIN - 732)) | (1L << (PRIVILEGES - 732)) | (1L << (PROCESS - 732)) | (1L << (RELOAD - 732)) | (1L << (REPLICATION_APPLIER - 732)) | (1L << (REPLICATION_SLAVE_ADMIN - 732)) | (1L << (RESOURCE_GROUP_ADMIN - 732)) | (1L << (RESOURCE_GROUP_USER - 732)) | (1L << (ROLE_ADMIN - 732)) | (1L << (ROUTINE - 732)) | (1L << (S3 - 732)) | (1L << (SESSION_VARIABLES_ADMIN - 732)) | (1L << (SET_USER_ID - 732)) | (1L << (SHOW_ROUTINE - 732)) | (1L << (SHUTDOWN - 732)) | (1L << (SUPER - 732)) | (1L << (SYSTEM_VARIABLES_ADMIN - 732)) | (1L << (TABLES - 732)) | (1L << (TABLE_ENCRYPTION_ADMIN - 732)) | (1L << (VERSION_TOKEN_ADMIN - 732)) | (1L << (XA_RECOVER_ADMIN - 732)) | (1L << (ARMSCII8 - 732)) | (1L << (ASCII - 732)) | (1L << (BIG5 - 732)) | (1L << (CP1250 - 732)) | (1L << (CP1251 - 732)) | (1L << (CP1256 - 732)) | (1L << (CP1257 - 732)) | (1L << (CP850 - 732)) | (1L << (CP852 - 732)) | (1L << (CP866 - 732)) | (1L << (CP932 - 732)) | (1L << (DEC8 - 732)) | (1L << (EUCJPMS - 732)) | (1L << (EUCKR - 732)) | (1L << (GB18030 - 732)) | (1L << (GB2312 - 732)) | (1L << (GBK - 732)) | (1L << (GEOSTD8 - 732)) | (1L << (GREEK - 732)) | (1L << (HEBREW - 732)) | (1L << (HP8 - 732)) | (1L << (KEYBCS2 - 732)) | (1L << (KOI8R - 732)) | (1L << (KOI8U - 732)) | (1L << (LATIN1 - 732)) | (1L << (LATIN2 - 732)) | (1L << (LATIN5 - 732)) | (1L << (LATIN7 - 732)) | (1L << (MACCE - 732)) | (1L << (MACROMAN - 732)) | (1L << (SJIS - 732)) | (1L << (SWE7 - 732)) | (1L << (TIS620 - 732)) | (1L << (UCS2 - 732)) | (1L << (UJIS - 732)) | (1L << (UTF16 - 732)) | (1L << (UTF16LE - 732)) | (1L << (UTF32 - 732)) | (1L << (UTF8 - 732)) | (1L << (UTF8MB3 - 732)) | (1L << (UTF8MB4 - 732)) | (1L << (ARCHIVE - 732)))) != 0) || ((((_la - 796)) & ~0x3f) == 0 && ((1L << (_la - 796)) & ((1L << (BLACKHOLE - 796)) | (1L << (CSV - 796)) | (1L << (FEDERATED - 796)) | (1L << (INNODB - 796)) | (1L << (MEMORY - 796)) | (1L << (MRG_MYISAM - 796)) | (1L << (MYISAM - 796)) | (1L << (NDB - 796)) | (1L << (NDBCLUSTER - 796)) | (1L << (PERFORMANCE_SCHEMA - 796)) | (1L << (TOKUDB - 796)) | (1L << (REPEATABLE - 796)) | (1L << (COMMITTED - 796)) | (1L << (UNCOMMITTED - 796)) | (1L << (SERIALIZABLE - 796)) | (1L << (GEOMETRYCOLLECTION - 796)) | (1L << (GEOMETRY - 796)) | (1L << (LINESTRING - 796)) | (1L << (MULTILINESTRING - 796)) | (1L << (MULTIPOINT - 796)) | (1L << (MULTIPOLYGON - 796)) | (1L << (POINT - 796)) | (1L << (POLYGON - 796)) | (1L << (ABS - 796)) | (1L << (ACOS - 796)) | (1L << (ADDDATE - 796)) | (1L << (ADDTIME - 796)) | (1L << (AES_DECRYPT - 796)) | (1L << (AES_ENCRYPT - 796)) | (1L << (AREA - 796)) | (1L << (ASBINARY - 796)) | (1L << (ASIN - 796)) | (1L << (ASTEXT - 796)) | (1L << (ASWKB - 796)) | (1L << (ASWKT - 796)) | (1L << (ASYMMETRIC_DECRYPT - 796)) | (1L << (ASYMMETRIC_DERIVE - 796)) | (1L << (ASYMMETRIC_ENCRYPT - 796)) | (1L << (ASYMMETRIC_SIGN - 796)) | (1L << (ASYMMETRIC_VERIFY - 796)) | (1L << (ATAN - 796)) | (1L << (ATAN2 - 796)) | (1L << (BENCHMARK - 796)) | (1L << (BIN - 796)) | (1L << (BIT_COUNT - 796)) | (1L << (BIT_LENGTH - 796)) | (1L << (BUFFER - 796)) | (1L << (CATALOG_NAME - 796)) | (1L << (CEIL - 796)) | (1L << (CEILING - 796)) | (1L << (CENTROID - 796)) | (1L << (CHARACTER_LENGTH - 796)) | (1L << (CHARSET - 796)) | (1L << (CHAR_LENGTH - 796)) | (1L << (COERCIBILITY - 796)) | (1L << (COLLATION - 796)) | (1L << (COMPRESS - 796)) | (1L << (CONCAT - 796)) | (1L << (CONCAT_WS - 796)) | (1L << (CONNECTION_ID - 796)) | (1L << (CONV - 796)) | (1L << (CONVERT_TZ - 796)) | (1L << (COS - 796)))) != 0) || ((((_la - 860)) & ~0x3f) == 0 && ((1L << (_la - 860)) & ((1L << (COT - 860)) | (1L << (CRC32 - 860)) | (1L << (CREATE_ASYMMETRIC_PRIV_KEY - 860)) | (1L << (CREATE_ASYMMETRIC_PUB_KEY - 860)) | (1L << (CREATE_DH_PARAMETERS - 860)) | (1L << (CREATE_DIGEST - 860)) | (1L << (CROSSES - 860)) | (1L << (DATEDIFF - 860)) | (1L << (DATE_FORMAT - 860)) | (1L << (DAYNAME - 860)) | (1L << (DAYOFMONTH - 860)) | (1L << (DAYOFWEEK - 860)) | (1L << (DAYOFYEAR - 860)) | (1L << (DECODE - 860)) | (1L << (DEGREES - 860)) | (1L << (DES_DECRYPT - 860)) | (1L << (DES_ENCRYPT - 860)) | (1L << (DIMENSION - 860)) | (1L << (DISJOINT - 860)) | (1L << (ELT - 860)) | (1L << (ENCODE - 860)) | (1L << (ENCRYPT - 860)) | (1L << (ENDPOINT - 860)) | (1L << (ENGINE_ATTRIBUTE - 860)) | (1L << (ENVELOPE - 860)) | (1L << (EQUALS - 860)) | (1L << (EXP - 860)) | (1L << (EXPORT_SET - 860)) | (1L << (EXTERIORRING - 860)) | (1L << (EXTRACTVALUE - 860)) | (1L << (FIELD - 860)) | (1L << (FIND_IN_SET - 860)) | (1L << (FLOOR - 860)) | (1L << (FORMAT - 860)) | (1L << (FOUND_ROWS - 860)) | (1L << (FROM_BASE64 - 860)) | (1L << (FROM_DAYS - 860)) | (1L << (FROM_UNIXTIME - 860)) | (1L << (GEOMCOLLFROMTEXT - 860)) | (1L << (GEOMCOLLFROMWKB - 860)) | (1L << (GEOMETRYCOLLECTIONFROMTEXT - 860)) | (1L << (GEOMETRYCOLLECTIONFROMWKB - 860)) | (1L << (GEOMETRYFROMTEXT - 860)) | (1L << (GEOMETRYFROMWKB - 860)) | (1L << (GEOMETRYN - 860)) | (1L << (GEOMETRYTYPE - 860)) | (1L << (GEOMFROMTEXT - 860)) | (1L << (GEOMFROMWKB - 860)) | (1L << (GET_FORMAT - 860)) | (1L << (GET_LOCK - 860)) | (1L << (GLENGTH - 860)) | (1L << (GREATEST - 860)) | (1L << (GTID_SUBSET - 860)) | (1L << (GTID_SUBTRACT - 860)) | (1L << (HEX - 860)) | (1L << (IFNULL - 860)) | (1L << (INET6_ATON - 860)) | (1L << (INET6_NTOA - 860)) | (1L << (INET_ATON - 860)) | (1L << (INET_NTOA - 860)) | (1L << (INSTR - 860)) | (1L << (INTERIORRINGN - 860)) | (1L << (INTERSECTS - 860)) | (1L << (ISCLOSED - 860)))) != 0) || ((((_la - 924)) & ~0x3f) == 0 && ((1L << (_la - 924)) & ((1L << (ISEMPTY - 924)) | (1L << (ISNULL - 924)) | (1L << (ISSIMPLE - 924)) | (1L << (IS_FREE_LOCK - 924)) | (1L << (IS_IPV4 - 924)) | (1L << (IS_IPV4_COMPAT - 924)) | (1L << (IS_IPV4_MAPPED - 924)) | (1L << (IS_IPV6 - 924)) | (1L << (IS_USED_LOCK - 924)) | (1L << (LAST_INSERT_ID - 924)) | (1L << (LCASE - 924)) | (1L << (LEAST - 924)) | (1L << (LENGTH - 924)) | (1L << (LINEFROMTEXT - 924)) | (1L << (LINEFROMWKB - 924)) | (1L << (LINESTRINGFROMTEXT - 924)) | (1L << (LINESTRINGFROMWKB - 924)) | (1L << (LN - 924)) | (1L << (LOAD_FILE - 924)) | (1L << (LOCATE - 924)) | (1L << (LOG - 924)) | (1L << (LOG10 - 924)) | (1L << (LOG2 - 924)) | (1L << (LOWER - 924)) | (1L << (LPAD - 924)) | (1L << (LTRIM - 924)) | (1L << (MAKEDATE - 924)) | (1L << (MAKETIME - 924)) | (1L << (MAKE_SET - 924)) | (1L << (MASTER_POS_WAIT - 924)) | (1L << (MBRCONTAINS - 924)) | (1L << (MBRDISJOINT - 924)) | (1L << (MBREQUAL - 924)) | (1L << (MBRINTERSECTS - 924)) | (1L << (MBROVERLAPS - 924)) | (1L << (MBRTOUCHES - 924)) | (1L << (MBRWITHIN - 924)) | (1L << (MD5 - 924)) | (1L << (MLINEFROMTEXT - 924)) | (1L << (MLINEFROMWKB - 924)) | (1L << (MONTHNAME - 924)) | (1L << (MPOINTFROMTEXT - 924)) | (1L << (MPOINTFROMWKB - 924)) | (1L << (MPOLYFROMTEXT - 924)) | (1L << (MPOLYFROMWKB - 924)) | (1L << (MULTILINESTRINGFROMTEXT - 924)) | (1L << (MULTILINESTRINGFROMWKB - 924)) | (1L << (MULTIPOINTFROMTEXT - 924)) | (1L << (MULTIPOINTFROMWKB - 924)) | (1L << (MULTIPOLYGONFROMTEXT - 924)) | (1L << (MULTIPOLYGONFROMWKB - 924)) | (1L << (NAME_CONST - 924)) | (1L << (NULLIF - 924)) | (1L << (NUMGEOMETRIES - 924)) | (1L << (NUMINTERIORRINGS - 924)) | (1L << (NUMPOINTS - 924)) | (1L << (OCT - 924)) | (1L << (OCTET_LENGTH - 924)) | (1L << (ORD - 924)) | (1L << (OVERLAPS - 924)) | (1L << (PERIOD_ADD - 924)) | (1L << (PERIOD_DIFF - 924)) | (1L << (PI - 924)) | (1L << (POINTFROMTEXT - 924)))) != 0) || ((((_la - 988)) & ~0x3f) == 0 && ((1L << (_la - 988)) & ((1L << (POINTFROMWKB - 988)) | (1L << (POINTN - 988)) | (1L << (POLYFROMTEXT - 988)) | (1L << (POLYFROMWKB - 988)) | (1L << (POLYGONFROMTEXT - 988)) | (1L << (POLYGONFROMWKB - 988)) | (1L << (POW - 988)) | (1L << (POWER - 988)) | (1L << (QUOTE - 988)) | (1L << (RADIANS - 988)) | (1L << (RAND - 988)) | (1L << (RANDOM - 988)) | (1L << (RANDOM_BYTES - 988)) | (1L << (RELEASE_LOCK - 988)) | (1L << (REVERSE - 988)) | (1L << (ROUND - 988)) | (1L << (ROW_COUNT - 988)) | (1L << (RPAD - 988)) | (1L << (RTRIM - 988)) | (1L << (SEC_TO_TIME - 988)) | (1L << (SECONDARY_ENGINE_ATTRIBUTE - 988)) | (1L << (SENSITIVE_VARIABLES_OBSERVER - 988)) | (1L << (SESSION_USER - 988)) | (1L << (SHA - 988)) | (1L << (SHA1 - 988)) | (1L << (SHA2 - 988)) | (1L << (SCHEMA_NAME - 988)) | (1L << (SIGN - 988)) | (1L << (SIN - 988)) | (1L << (SLEEP - 988)) | (1L << (SOUNDEX - 988)) | (1L << (SQL_THREAD_WAIT_AFTER_GTIDS - 988)) | (1L << (SQRT - 988)) | (1L << (SRID - 988)) | (1L << (STARTPOINT - 988)) | (1L << (STRCMP - 988)) | (1L << (STR_TO_DATE - 988)) | (1L << (ST_AREA - 988)) | (1L << (ST_ASBINARY - 988)) | (1L << (ST_ASTEXT - 988)) | (1L << (ST_ASWKB - 988)) | (1L << (ST_ASWKT - 988)) | (1L << (ST_BUFFER - 988)) | (1L << (ST_CENTROID - 988)) | (1L << (ST_CONTAINS - 988)) | (1L << (ST_CROSSES - 988)) | (1L << (ST_DIFFERENCE - 988)) | (1L << (ST_DIMENSION - 988)) | (1L << (ST_DISJOINT - 988)) | (1L << (ST_DISTANCE - 988)) | (1L << (ST_ENDPOINT - 988)) | (1L << (ST_ENVELOPE - 988)) | (1L << (ST_EQUALS - 988)) | (1L << (ST_EXTERIORRING - 988)) | (1L << (ST_GEOMCOLLFROMTEXT - 988)) | (1L << (ST_GEOMCOLLFROMTXT - 988)) | (1L << (ST_GEOMCOLLFROMWKB - 988)) | (1L << (ST_GEOMETRYCOLLECTIONFROMTEXT - 988)) | (1L << (ST_GEOMETRYCOLLECTIONFROMWKB - 988)) | (1L << (ST_GEOMETRYFROMTEXT - 988)) | (1L << (ST_GEOMETRYFROMWKB - 988)) | (1L << (ST_GEOMETRYN - 988)) | (1L << (ST_GEOMETRYTYPE - 988)) | (1L << (ST_GEOMFROMTEXT - 988)))) != 0) || ((((_la - 1052)) & ~0x3f) == 0 && ((1L << (_la - 1052)) & ((1L << (ST_GEOMFROMWKB - 1052)) | (1L << (ST_INTERIORRINGN - 1052)) | (1L << (ST_INTERSECTION - 1052)) | (1L << (ST_INTERSECTS - 1052)) | (1L << (ST_ISCLOSED - 1052)) | (1L << (ST_ISEMPTY - 1052)) | (1L << (ST_ISSIMPLE - 1052)) | (1L << (ST_LINEFROMTEXT - 1052)) | (1L << (ST_LINEFROMWKB - 1052)) | (1L << (ST_LINESTRINGFROMTEXT - 1052)) | (1L << (ST_LINESTRINGFROMWKB - 1052)) | (1L << (ST_NUMGEOMETRIES - 1052)) | (1L << (ST_NUMINTERIORRING - 1052)) | (1L << (ST_NUMINTERIORRINGS - 1052)) | (1L << (ST_NUMPOINTS - 1052)) | (1L << (ST_OVERLAPS - 1052)) | (1L << (ST_POINTFROMTEXT - 1052)) | (1L << (ST_POINTFROMWKB - 1052)) | (1L << (ST_POINTN - 1052)) | (1L << (ST_POLYFROMTEXT - 1052)) | (1L << (ST_POLYFROMWKB - 1052)) | (1L << (ST_POLYGONFROMTEXT - 1052)) | (1L << (ST_POLYGONFROMWKB - 1052)) | (1L << (ST_SRID - 1052)) | (1L << (ST_STARTPOINT - 1052)) | (1L << (ST_SYMDIFFERENCE - 1052)) | (1L << (ST_TOUCHES - 1052)) | (1L << (ST_UNION - 1052)) | (1L << (ST_WITHIN - 1052)) | (1L << (ST_X - 1052)) | (1L << (ST_Y - 1052)) | (1L << (SUBDATE - 1052)) | (1L << (SUBSTRING_INDEX - 1052)) | (1L << (SUBTIME - 1052)) | (1L << (SYSTEM_USER - 1052)) | (1L << (SYSTEM - 1052)) | (1L << (TAN - 1052)) | (1L << (TELEMETRY_LOG_ADMIN - 1052)) | (1L << (TIMEDIFF - 1052)) | (1L << (TIMESTAMPADD - 1052)) | (1L << (TIMESTAMPDIFF - 1052)) | (1L << (TIME_FORMAT - 1052)) | (1L << (TIME_TO_SEC - 1052)) | (1L << (TOUCHES - 1052)) | (1L << (TO_BASE64 - 1052)) | (1L << (TO_DAYS - 1052)) | (1L << (TO_SECONDS - 1052)) | (1L << (TP_CONNECTION_ADMIN - 1052)) | (1L << (UCASE - 1052)) | (1L << (UNCOMPRESS - 1052)) | (1L << (UNCOMPRESSED_LENGTH - 1052)) | (1L << (UNHEX - 1052)) | (1L << (UNIX_TIMESTAMP - 1052)) | (1L << (UPDATEXML - 1052)) | (1L << (UPPER - 1052)) | (1L << (UUID - 1052)) | (1L << (UUID_SHORT - 1052)) | (1L << (VALIDATE_PASSWORD_STRENGTH - 1052)) | (1L << (VERSION - 1052)) | (1L << (VERSIONING - 1052)) | (1L << (WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS - 1052)) | (1L << (WEEKDAY - 1052)) | (1L << (WEEKOFYEAR - 1052)) | (1L << (WEIGHT_STRING - 1052)))) != 0) || ((((_la - 1116)) & ~0x3f) == 0 && ((1L << (_la - 1116)) & ((1L << (WITHIN - 1116)) | (1L << (YEARWEEK - 1116)) | (1L << (Y_FUNCTION - 1116)) | (1L << (X_FUNCTION - 1116)) | (1L << (VIA - 1116)) | (1L << (LASTVAL - 1116)) | (1L << (NEXTVAL - 1116)) | (1L << (SETVAL - 1116)) | (1L << (PREVIOUS - 1116)) | (1L << (PERSISTENT - 1116)) | (1L << (BINLOG_MONITOR - 1116)) | (1L << (BINLOG_REPLAY - 1116)) | (1L << (FEDERATED_ADMIN - 1116)) | (1L << (READ_ONLY_ADMIN - 1116)) | (1L << (REPLICA - 1116)) | (1L << (REPLICATION_MASTER_ADMIN - 1116)) | (1L << (MONITOR - 1116)) | (1L << (READ_ONLY - 1116)) | (1L << (REPLAY - 1116)) | (1L << (MOD - 1116)) | (1L << (CHARSET_REVERSE_QOUTE_STRING - 1116)) | (1L << (STRING_LITERAL - 1116)))) != 0) || _la==ID) {
					{
					setState(4822);
					uid();
					setState(4827);
					_errHandler.sync(this);
					_la = _input.LA(1);
					while (_la==COMMA) {
						{
						{
						setState(4823);
						match(COMMA);
						setState(4824);
						uid();
						}
						}
						setState(4829);
						_errHandler.sync(this);
						_la = _input.LA(1);
					}
					}
				}

				setState(4832);
				match(RR_BRACKET);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class StringMasterOptionContext extends ParserRuleContext {
		public TerminalNode MASTER_BIND() { return getToken(MySqlParser.MASTER_BIND, 0); }
		public TerminalNode MASTER_HOST() { return getToken(MySqlParser.MASTER_HOST, 0); }
		public TerminalNode MASTER_USER() { return getToken(MySqlParser.MASTER_USER, 0); }
		public TerminalNode MASTER_PASSWORD() { return getToken(MySqlParser.MASTER_PASSWORD, 0); }
		public TerminalNode MASTER_LOG_FILE() { return getToken(MySqlParser.MASTER_LOG_FILE, 0); }
		public TerminalNode RELAY_LOG_FILE() { return getToken(MySqlParser.RELAY_LOG_FILE, 0); }
		public TerminalNode MASTER_SSL_CA() { return getToken(MySqlParser.MASTER_SSL_CA, 0); }
		public TerminalNode MASTER_SSL_CAPATH() { return getToken(MySqlParser.MASTER_SSL_CAPATH, 0); }
		public TerminalNode MASTER_SSL_CERT() { return getToken(MySqlParser.MASTER_SSL_CERT, 0); }
		public TerminalNode MASTER_SSL_CRL() { return getToken(MySqlParser.MASTER_SSL_CRL, 0); }
		public TerminalNode MASTER_SSL_CRLPATH() { return getToken(MySqlParser.MASTER_SSL_CRLPATH, 0); }
		public TerminalNode MASTER_SSL_KEY() { return getToken(MySqlParser.MASTER_SSL_KEY, 0); }
		public TerminalNode MASTER_SSL_CIPHER() { return getToken(MySqlParser.MASTER_SSL_CIPHER, 0); }
		public TerminalNode MASTER_TLS_VERSION() { return getToken(MySqlParser.MASTER_TLS_VERSION, 0); }
		public StringMasterOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_stringMasterOption; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterStringMasterOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitStringMasterOption(this);
		}
	}

	public final StringMasterOptionContext stringMasterOption() throws RecognitionException {
		StringMasterOptionContext _localctx = new StringMasterOptionContext(_ctx, getState());
		enterRule(_localctx, 368, RULE_stringMasterOption);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4835);
			_la = _input.LA(1);
			if ( !(_la==MASTER_BIND || ((((_la - 485)) & ~0x3f) == 0 && ((1L << (_la - 485)) & ((1L << (MASTER_HOST - 485)) | (1L << (MASTER_LOG_FILE - 485)) | (1L << (MASTER_PASSWORD - 485)) | (1L << (MASTER_SSL_CA - 485)) | (1L << (MASTER_SSL_CAPATH - 485)) | (1L << (MASTER_SSL_CERT - 485)) | (1L << (MASTER_SSL_CIPHER - 485)) | (1L << (MASTER_SSL_CRL - 485)) | (1L << (MASTER_SSL_CRLPATH - 485)) | (1L << (MASTER_SSL_KEY - 485)) | (1L << (MASTER_TLS_VERSION - 485)) | (1L << (MASTER_USER - 485)))) != 0) || _la==RELAY_LOG_FILE) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DecimalMasterOptionContext extends ParserRuleContext {
		public TerminalNode MASTER_PORT() { return getToken(MySqlParser.MASTER_PORT, 0); }
		public TerminalNode MASTER_CONNECT_RETRY() { return getToken(MySqlParser.MASTER_CONNECT_RETRY, 0); }
		public TerminalNode MASTER_RETRY_COUNT() { return getToken(MySqlParser.MASTER_RETRY_COUNT, 0); }
		public TerminalNode MASTER_DELAY() { return getToken(MySqlParser.MASTER_DELAY, 0); }
		public TerminalNode MASTER_LOG_POS() { return getToken(MySqlParser.MASTER_LOG_POS, 0); }
		public TerminalNode RELAY_LOG_POS() { return getToken(MySqlParser.RELAY_LOG_POS, 0); }
		public DecimalMasterOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_decimalMasterOption; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDecimalMasterOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDecimalMasterOption(this);
		}
	}

	public final DecimalMasterOptionContext decimalMasterOption() throws RecognitionException {
		DecimalMasterOptionContext _localctx = new DecimalMasterOptionContext(_ctx, getState());
		enterRule(_localctx, 370, RULE_decimalMasterOption);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4837);
			_la = _input.LA(1);
			if ( !(((((_la - 482)) & ~0x3f) == 0 && ((1L << (_la - 482)) & ((1L << (MASTER_CONNECT_RETRY - 482)) | (1L << (MASTER_DELAY - 482)) | (1L << (MASTER_LOG_POS - 482)) | (1L << (MASTER_PORT - 482)) | (1L << (MASTER_RETRY_COUNT - 482)))) != 0) || _la==RELAY_LOG_POS) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class BoolMasterOptionContext extends ParserRuleContext {
		public TerminalNode MASTER_AUTO_POSITION() { return getToken(MySqlParser.MASTER_AUTO_POSITION, 0); }
		public TerminalNode MASTER_SSL() { return getToken(MySqlParser.MASTER_SSL, 0); }
		public TerminalNode MASTER_SSL_VERIFY_SERVER_CERT() { return getToken(MySqlParser.MASTER_SSL_VERIFY_SERVER_CERT, 0); }
		public BoolMasterOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_boolMasterOption; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterBoolMasterOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitBoolMasterOption(this);
		}
	}

	public final BoolMasterOptionContext boolMasterOption() throws RecognitionException {
		BoolMasterOptionContext _localctx = new BoolMasterOptionContext(_ctx, getState());
		enterRule(_localctx, 372, RULE_boolMasterOption);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4839);
			_la = _input.LA(1);
			if ( !(_la==MASTER_SSL_VERIFY_SERVER_CERT || _la==MASTER_AUTO_POSITION || _la==MASTER_SSL) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ChannelOptionContext extends ParserRuleContext {
		public TerminalNode FOR() { return getToken(MySqlParser.FOR, 0); }
		public TerminalNode CHANNEL() { return getToken(MySqlParser.CHANNEL, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public ChannelOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_channelOption; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterChannelOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitChannelOption(this);
		}
	}

	public final ChannelOptionContext channelOption() throws RecognitionException {
		ChannelOptionContext _localctx = new ChannelOptionContext(_ctx, getState());
		enterRule(_localctx, 374, RULE_channelOption);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4841);
			match(FOR);
			setState(4842);
			match(CHANNEL);
			setState(4843);
			match(STRING_LITERAL);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ReplicationFilterContext extends ParserRuleContext {
		public ReplicationFilterContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_replicationFilter; }
	 
		public ReplicationFilterContext() { }
		public void copyFrom(ReplicationFilterContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class WildIgnoreTableReplicationContext extends ReplicationFilterContext {
		public TerminalNode REPLICATE_WILD_IGNORE_TABLE() { return getToken(MySqlParser.REPLICATE_WILD_IGNORE_TABLE, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public SimpleStringsContext simpleStrings() {
			return getRuleContext(SimpleStringsContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public WildIgnoreTableReplicationContext(ReplicationFilterContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterWildIgnoreTableReplication(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitWildIgnoreTableReplication(this);
		}
	}
	public static class DoTableReplicationContext extends ReplicationFilterContext {
		public TerminalNode REPLICATE_DO_TABLE() { return getToken(MySqlParser.REPLICATE_DO_TABLE, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public TablesContext tables() {
			return getRuleContext(TablesContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public DoTableReplicationContext(ReplicationFilterContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDoTableReplication(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDoTableReplication(this);
		}
	}
	public static class IgnoreTableReplicationContext extends ReplicationFilterContext {
		public TerminalNode REPLICATE_IGNORE_TABLE() { return getToken(MySqlParser.REPLICATE_IGNORE_TABLE, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public TablesContext tables() {
			return getRuleContext(TablesContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public IgnoreTableReplicationContext(ReplicationFilterContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterIgnoreTableReplication(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitIgnoreTableReplication(this);
		}
	}
	public static class RewriteDbReplicationContext extends ReplicationFilterContext {
		public TerminalNode REPLICATE_REWRITE_DB() { return getToken(MySqlParser.REPLICATE_REWRITE_DB, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public List tablePair() {
			return getRuleContexts(TablePairContext.class);
		}
		public TablePairContext tablePair(int i) {
			return getRuleContext(TablePairContext.class,i);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public RewriteDbReplicationContext(ReplicationFilterContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterRewriteDbReplication(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitRewriteDbReplication(this);
		}
	}
	public static class DoDbReplicationContext extends ReplicationFilterContext {
		public TerminalNode REPLICATE_DO_DB() { return getToken(MySqlParser.REPLICATE_DO_DB, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public UidListContext uidList() {
			return getRuleContext(UidListContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public DoDbReplicationContext(ReplicationFilterContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDoDbReplication(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDoDbReplication(this);
		}
	}
	public static class IgnoreDbReplicationContext extends ReplicationFilterContext {
		public TerminalNode REPLICATE_IGNORE_DB() { return getToken(MySqlParser.REPLICATE_IGNORE_DB, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public UidListContext uidList() {
			return getRuleContext(UidListContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public IgnoreDbReplicationContext(ReplicationFilterContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterIgnoreDbReplication(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitIgnoreDbReplication(this);
		}
	}
	public static class WildDoTableReplicationContext extends ReplicationFilterContext {
		public TerminalNode REPLICATE_WILD_DO_TABLE() { return getToken(MySqlParser.REPLICATE_WILD_DO_TABLE, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public SimpleStringsContext simpleStrings() {
			return getRuleContext(SimpleStringsContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public WildDoTableReplicationContext(ReplicationFilterContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterWildDoTableReplication(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitWildDoTableReplication(this);
		}
	}

	public final ReplicationFilterContext replicationFilter() throws RecognitionException {
		ReplicationFilterContext _localctx = new ReplicationFilterContext(_ctx, getState());
		enterRule(_localctx, 376, RULE_replicationFilter);
		int _la;
		try {
			setState(4894);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case REPLICATE_DO_DB:
				_localctx = new DoDbReplicationContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(4845);
				match(REPLICATE_DO_DB);
				setState(4846);
				match(EQUAL_SYMBOL);
				setState(4847);
				match(LR_BRACKET);
				setState(4848);
				uidList();
				setState(4849);
				match(RR_BRACKET);
				}
				break;
			case REPLICATE_IGNORE_DB:
				_localctx = new IgnoreDbReplicationContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(4851);
				match(REPLICATE_IGNORE_DB);
				setState(4852);
				match(EQUAL_SYMBOL);
				setState(4853);
				match(LR_BRACKET);
				setState(4854);
				uidList();
				setState(4855);
				match(RR_BRACKET);
				}
				break;
			case REPLICATE_DO_TABLE:
				_localctx = new DoTableReplicationContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(4857);
				match(REPLICATE_DO_TABLE);
				setState(4858);
				match(EQUAL_SYMBOL);
				setState(4859);
				match(LR_BRACKET);
				setState(4860);
				tables();
				setState(4861);
				match(RR_BRACKET);
				}
				break;
			case REPLICATE_IGNORE_TABLE:
				_localctx = new IgnoreTableReplicationContext(_localctx);
				enterOuterAlt(_localctx, 4);
				{
				setState(4863);
				match(REPLICATE_IGNORE_TABLE);
				setState(4864);
				match(EQUAL_SYMBOL);
				setState(4865);
				match(LR_BRACKET);
				setState(4866);
				tables();
				setState(4867);
				match(RR_BRACKET);
				}
				break;
			case REPLICATE_WILD_DO_TABLE:
				_localctx = new WildDoTableReplicationContext(_localctx);
				enterOuterAlt(_localctx, 5);
				{
				setState(4869);
				match(REPLICATE_WILD_DO_TABLE);
				setState(4870);
				match(EQUAL_SYMBOL);
				setState(4871);
				match(LR_BRACKET);
				setState(4872);
				simpleStrings();
				setState(4873);
				match(RR_BRACKET);
				}
				break;
			case REPLICATE_WILD_IGNORE_TABLE:
				_localctx = new WildIgnoreTableReplicationContext(_localctx);
				enterOuterAlt(_localctx, 6);
				{
				setState(4875);
				match(REPLICATE_WILD_IGNORE_TABLE);
				setState(4876);
				match(EQUAL_SYMBOL);
				setState(4877);
				match(LR_BRACKET);
				setState(4878);
				simpleStrings();
				setState(4879);
				match(RR_BRACKET);
				}
				break;
			case REPLICATE_REWRITE_DB:
				_localctx = new RewriteDbReplicationContext(_localctx);
				enterOuterAlt(_localctx, 7);
				{
				setState(4881);
				match(REPLICATE_REWRITE_DB);
				setState(4882);
				match(EQUAL_SYMBOL);
				setState(4883);
				match(LR_BRACKET);
				setState(4884);
				tablePair();
				setState(4889);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(4885);
					match(COMMA);
					setState(4886);
					tablePair();
					}
					}
					setState(4891);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(4892);
				match(RR_BRACKET);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TablePairContext extends ParserRuleContext {
		public TableNameContext firstTable;
		public TableNameContext secondTable;
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public TerminalNode COMMA() { return getToken(MySqlParser.COMMA, 0); }
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public List tableName() {
			return getRuleContexts(TableNameContext.class);
		}
		public TableNameContext tableName(int i) {
			return getRuleContext(TableNameContext.class,i);
		}
		public TablePairContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_tablePair; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTablePair(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTablePair(this);
		}
	}

	public final TablePairContext tablePair() throws RecognitionException {
		TablePairContext _localctx = new TablePairContext(_ctx, getState());
		enterRule(_localctx, 378, RULE_tablePair);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4896);
			match(LR_BRACKET);
			setState(4897);
			((TablePairContext)_localctx).firstTable = tableName();
			setState(4898);
			match(COMMA);
			setState(4899);
			((TablePairContext)_localctx).secondTable = tableName();
			setState(4900);
			match(RR_BRACKET);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ThreadTypeContext extends ParserRuleContext {
		public TerminalNode IO_THREAD() { return getToken(MySqlParser.IO_THREAD, 0); }
		public TerminalNode SQL_THREAD() { return getToken(MySqlParser.SQL_THREAD, 0); }
		public ThreadTypeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_threadType; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterThreadType(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitThreadType(this);
		}
	}

	public final ThreadTypeContext threadType() throws RecognitionException {
		ThreadTypeContext _localctx = new ThreadTypeContext(_ctx, getState());
		enterRule(_localctx, 380, RULE_threadType);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4902);
			_la = _input.LA(1);
			if ( !(_la==IO_THREAD || _la==SQL_THREAD) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class UntilOptionContext extends ParserRuleContext {
		public UntilOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_untilOption; }
	 
		public UntilOptionContext() { }
		public void copyFrom(UntilOptionContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class GtidsUntilOptionContext extends UntilOptionContext {
		public Token gtids;
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public GtuidSetContext gtuidSet() {
			return getRuleContext(GtuidSetContext.class,0);
		}
		public TerminalNode SQL_BEFORE_GTIDS() { return getToken(MySqlParser.SQL_BEFORE_GTIDS, 0); }
		public TerminalNode SQL_AFTER_GTIDS() { return getToken(MySqlParser.SQL_AFTER_GTIDS, 0); }
		public GtidsUntilOptionContext(UntilOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterGtidsUntilOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitGtidsUntilOption(this);
		}
	}
	public static class SqlGapsUntilOptionContext extends UntilOptionContext {
		public TerminalNode SQL_AFTER_MTS_GAPS() { return getToken(MySqlParser.SQL_AFTER_MTS_GAPS, 0); }
		public SqlGapsUntilOptionContext(UntilOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSqlGapsUntilOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSqlGapsUntilOption(this);
		}
	}
	public static class MasterLogUntilOptionContext extends UntilOptionContext {
		public TerminalNode MASTER_LOG_FILE() { return getToken(MySqlParser.MASTER_LOG_FILE, 0); }
		public List EQUAL_SYMBOL() { return getTokens(MySqlParser.EQUAL_SYMBOL); }
		public TerminalNode EQUAL_SYMBOL(int i) {
			return getToken(MySqlParser.EQUAL_SYMBOL, i);
		}
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode COMMA() { return getToken(MySqlParser.COMMA, 0); }
		public TerminalNode MASTER_LOG_POS() { return getToken(MySqlParser.MASTER_LOG_POS, 0); }
		public DecimalLiteralContext decimalLiteral() {
			return getRuleContext(DecimalLiteralContext.class,0);
		}
		public MasterLogUntilOptionContext(UntilOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterMasterLogUntilOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitMasterLogUntilOption(this);
		}
	}
	public static class RelayLogUntilOptionContext extends UntilOptionContext {
		public TerminalNode RELAY_LOG_FILE() { return getToken(MySqlParser.RELAY_LOG_FILE, 0); }
		public List EQUAL_SYMBOL() { return getTokens(MySqlParser.EQUAL_SYMBOL); }
		public TerminalNode EQUAL_SYMBOL(int i) {
			return getToken(MySqlParser.EQUAL_SYMBOL, i);
		}
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode COMMA() { return getToken(MySqlParser.COMMA, 0); }
		public TerminalNode RELAY_LOG_POS() { return getToken(MySqlParser.RELAY_LOG_POS, 0); }
		public DecimalLiteralContext decimalLiteral() {
			return getRuleContext(DecimalLiteralContext.class,0);
		}
		public RelayLogUntilOptionContext(UntilOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterRelayLogUntilOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitRelayLogUntilOption(this);
		}
	}

	public final UntilOptionContext untilOption() throws RecognitionException {
		UntilOptionContext _localctx = new UntilOptionContext(_ctx, getState());
		enterRule(_localctx, 382, RULE_untilOption);
		int _la;
		try {
			setState(4922);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case SQL_AFTER_GTIDS:
			case SQL_BEFORE_GTIDS:
				_localctx = new GtidsUntilOptionContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(4904);
				((GtidsUntilOptionContext)_localctx).gtids = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==SQL_AFTER_GTIDS || _la==SQL_BEFORE_GTIDS) ) {
					((GtidsUntilOptionContext)_localctx).gtids = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(4905);
				match(EQUAL_SYMBOL);
				setState(4906);
				gtuidSet();
				}
				break;
			case MASTER_LOG_FILE:
				_localctx = new MasterLogUntilOptionContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(4907);
				match(MASTER_LOG_FILE);
				setState(4908);
				match(EQUAL_SYMBOL);
				setState(4909);
				match(STRING_LITERAL);
				setState(4910);
				match(COMMA);
				setState(4911);
				match(MASTER_LOG_POS);
				setState(4912);
				match(EQUAL_SYMBOL);
				setState(4913);
				decimalLiteral();
				}
				break;
			case RELAY_LOG_FILE:
				_localctx = new RelayLogUntilOptionContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(4914);
				match(RELAY_LOG_FILE);
				setState(4915);
				match(EQUAL_SYMBOL);
				setState(4916);
				match(STRING_LITERAL);
				setState(4917);
				match(COMMA);
				setState(4918);
				match(RELAY_LOG_POS);
				setState(4919);
				match(EQUAL_SYMBOL);
				setState(4920);
				decimalLiteral();
				}
				break;
			case SQL_AFTER_MTS_GAPS:
				_localctx = new SqlGapsUntilOptionContext(_localctx);
				enterOuterAlt(_localctx, 4);
				{
				setState(4921);
				match(SQL_AFTER_MTS_GAPS);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ConnectionOptionContext extends ParserRuleContext {
		public ConnectionOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_connectionOption; }
	 
		public ConnectionOptionContext() { }
		public void copyFrom(ConnectionOptionContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class PluginDirConnectionOptionContext extends ConnectionOptionContext {
		public Token conOptPluginDir;
		public TerminalNode PLUGIN_DIR() { return getToken(MySqlParser.PLUGIN_DIR, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public PluginDirConnectionOptionContext(ConnectionOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPluginDirConnectionOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPluginDirConnectionOption(this);
		}
	}
	public static class UserConnectionOptionContext extends ConnectionOptionContext {
		public Token conOptUser;
		public TerminalNode USER() { return getToken(MySqlParser.USER, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public UserConnectionOptionContext(ConnectionOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterUserConnectionOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitUserConnectionOption(this);
		}
	}
	public static class DefaultAuthConnectionOptionContext extends ConnectionOptionContext {
		public Token conOptDefAuth;
		public TerminalNode DEFAULT_AUTH() { return getToken(MySqlParser.DEFAULT_AUTH, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public DefaultAuthConnectionOptionContext(ConnectionOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDefaultAuthConnectionOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDefaultAuthConnectionOption(this);
		}
	}
	public static class PasswordConnectionOptionContext extends ConnectionOptionContext {
		public Token conOptPassword;
		public TerminalNode PASSWORD() { return getToken(MySqlParser.PASSWORD, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public PasswordConnectionOptionContext(ConnectionOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPasswordConnectionOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPasswordConnectionOption(this);
		}
	}

	public final ConnectionOptionContext connectionOption() throws RecognitionException {
		ConnectionOptionContext _localctx = new ConnectionOptionContext(_ctx, getState());
		enterRule(_localctx, 384, RULE_connectionOption);
		try {
			setState(4936);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case USER:
				_localctx = new UserConnectionOptionContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(4924);
				match(USER);
				setState(4925);
				match(EQUAL_SYMBOL);
				setState(4926);
				((UserConnectionOptionContext)_localctx).conOptUser = match(STRING_LITERAL);
				}
				break;
			case PASSWORD:
				_localctx = new PasswordConnectionOptionContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(4927);
				match(PASSWORD);
				setState(4928);
				match(EQUAL_SYMBOL);
				setState(4929);
				((PasswordConnectionOptionContext)_localctx).conOptPassword = match(STRING_LITERAL);
				}
				break;
			case DEFAULT_AUTH:
				_localctx = new DefaultAuthConnectionOptionContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(4930);
				match(DEFAULT_AUTH);
				setState(4931);
				match(EQUAL_SYMBOL);
				setState(4932);
				((DefaultAuthConnectionOptionContext)_localctx).conOptDefAuth = match(STRING_LITERAL);
				}
				break;
			case PLUGIN_DIR:
				_localctx = new PluginDirConnectionOptionContext(_localctx);
				enterOuterAlt(_localctx, 4);
				{
				setState(4933);
				match(PLUGIN_DIR);
				setState(4934);
				match(EQUAL_SYMBOL);
				setState(4935);
				((PluginDirConnectionOptionContext)_localctx).conOptPluginDir = match(STRING_LITERAL);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class GtuidSetContext extends ParserRuleContext {
		public List uuidSet() {
			return getRuleContexts(UuidSetContext.class);
		}
		public UuidSetContext uuidSet(int i) {
			return getRuleContext(UuidSetContext.class,i);
		}
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public GtuidSetContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_gtuidSet; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterGtuidSet(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitGtuidSet(this);
		}
	}

	public final GtuidSetContext gtuidSet() throws RecognitionException {
		GtuidSetContext _localctx = new GtuidSetContext(_ctx, getState());
		enterRule(_localctx, 386, RULE_gtuidSet);
		int _la;
		try {
			setState(4947);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case ZERO_DECIMAL:
			case ONE_DECIMAL:
			case TWO_DECIMAL:
			case DECIMAL_LITERAL:
			case REAL_LITERAL:
				enterOuterAlt(_localctx, 1);
				{
				setState(4938);
				uuidSet();
				setState(4943);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(4939);
					match(COMMA);
					setState(4940);
					uuidSet();
					}
					}
					setState(4945);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			case STRING_LITERAL:
				enterOuterAlt(_localctx, 2);
				{
				setState(4946);
				match(STRING_LITERAL);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class XaStartTransactionContext extends ParserRuleContext {
		public Token xaStart;
		public Token xaAction;
		public TerminalNode XA() { return getToken(MySqlParser.XA, 0); }
		public XidContext xid() {
			return getRuleContext(XidContext.class,0);
		}
		public TerminalNode START() { return getToken(MySqlParser.START, 0); }
		public TerminalNode BEGIN() { return getToken(MySqlParser.BEGIN, 0); }
		public TerminalNode JOIN() { return getToken(MySqlParser.JOIN, 0); }
		public TerminalNode RESUME() { return getToken(MySqlParser.RESUME, 0); }
		public XaStartTransactionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_xaStartTransaction; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterXaStartTransaction(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitXaStartTransaction(this);
		}
	}

	public final XaStartTransactionContext xaStartTransaction() throws RecognitionException {
		XaStartTransactionContext _localctx = new XaStartTransactionContext(_ctx, getState());
		enterRule(_localctx, 388, RULE_xaStartTransaction);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4949);
			match(XA);
			setState(4950);
			((XaStartTransactionContext)_localctx).xaStart = _input.LT(1);
			_la = _input.LA(1);
			if ( !(_la==BEGIN || _la==START) ) {
				((XaStartTransactionContext)_localctx).xaStart = (Token)_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(4951);
			xid();
			setState(4953);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==JOIN || _la==RESUME) {
				{
				setState(4952);
				((XaStartTransactionContext)_localctx).xaAction = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==JOIN || _la==RESUME) ) {
					((XaStartTransactionContext)_localctx).xaAction = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class XaEndTransactionContext extends ParserRuleContext {
		public TerminalNode XA() { return getToken(MySqlParser.XA, 0); }
		public TerminalNode END() { return getToken(MySqlParser.END, 0); }
		public XidContext xid() {
			return getRuleContext(XidContext.class,0);
		}
		public TerminalNode SUSPEND() { return getToken(MySqlParser.SUSPEND, 0); }
		public TerminalNode FOR() { return getToken(MySqlParser.FOR, 0); }
		public TerminalNode MIGRATE() { return getToken(MySqlParser.MIGRATE, 0); }
		public XaEndTransactionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_xaEndTransaction; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterXaEndTransaction(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitXaEndTransaction(this);
		}
	}

	public final XaEndTransactionContext xaEndTransaction() throws RecognitionException {
		XaEndTransactionContext _localctx = new XaEndTransactionContext(_ctx, getState());
		enterRule(_localctx, 390, RULE_xaEndTransaction);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4955);
			match(XA);
			setState(4956);
			match(END);
			setState(4957);
			xid();
			setState(4963);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==SUSPEND) {
				{
				setState(4958);
				match(SUSPEND);
				setState(4961);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==FOR) {
					{
					setState(4959);
					match(FOR);
					setState(4960);
					match(MIGRATE);
					}
				}

				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class XaPrepareStatementContext extends ParserRuleContext {
		public TerminalNode XA() { return getToken(MySqlParser.XA, 0); }
		public TerminalNode PREPARE() { return getToken(MySqlParser.PREPARE, 0); }
		public XidContext xid() {
			return getRuleContext(XidContext.class,0);
		}
		public XaPrepareStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_xaPrepareStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterXaPrepareStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitXaPrepareStatement(this);
		}
	}

	public final XaPrepareStatementContext xaPrepareStatement() throws RecognitionException {
		XaPrepareStatementContext _localctx = new XaPrepareStatementContext(_ctx, getState());
		enterRule(_localctx, 392, RULE_xaPrepareStatement);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4965);
			match(XA);
			setState(4966);
			match(PREPARE);
			setState(4967);
			xid();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class XaCommitWorkContext extends ParserRuleContext {
		public TerminalNode XA() { return getToken(MySqlParser.XA, 0); }
		public TerminalNode COMMIT() { return getToken(MySqlParser.COMMIT, 0); }
		public XidContext xid() {
			return getRuleContext(XidContext.class,0);
		}
		public TerminalNode ONE() { return getToken(MySqlParser.ONE, 0); }
		public TerminalNode PHASE() { return getToken(MySqlParser.PHASE, 0); }
		public XaCommitWorkContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_xaCommitWork; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterXaCommitWork(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitXaCommitWork(this);
		}
	}

	public final XaCommitWorkContext xaCommitWork() throws RecognitionException {
		XaCommitWorkContext _localctx = new XaCommitWorkContext(_ctx, getState());
		enterRule(_localctx, 394, RULE_xaCommitWork);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4969);
			match(XA);
			setState(4970);
			match(COMMIT);
			setState(4971);
			xid();
			setState(4974);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ONE) {
				{
				setState(4972);
				match(ONE);
				setState(4973);
				match(PHASE);
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class XaRollbackWorkContext extends ParserRuleContext {
		public TerminalNode XA() { return getToken(MySqlParser.XA, 0); }
		public TerminalNode ROLLBACK() { return getToken(MySqlParser.ROLLBACK, 0); }
		public XidContext xid() {
			return getRuleContext(XidContext.class,0);
		}
		public XaRollbackWorkContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_xaRollbackWork; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterXaRollbackWork(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitXaRollbackWork(this);
		}
	}

	public final XaRollbackWorkContext xaRollbackWork() throws RecognitionException {
		XaRollbackWorkContext _localctx = new XaRollbackWorkContext(_ctx, getState());
		enterRule(_localctx, 396, RULE_xaRollbackWork);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4976);
			match(XA);
			setState(4977);
			match(ROLLBACK);
			setState(4978);
			xid();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class XaRecoverWorkContext extends ParserRuleContext {
		public TerminalNode XA() { return getToken(MySqlParser.XA, 0); }
		public TerminalNode RECOVER() { return getToken(MySqlParser.RECOVER, 0); }
		public TerminalNode CONVERT() { return getToken(MySqlParser.CONVERT, 0); }
		public XidContext xid() {
			return getRuleContext(XidContext.class,0);
		}
		public XaRecoverWorkContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_xaRecoverWork; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterXaRecoverWork(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitXaRecoverWork(this);
		}
	}

	public final XaRecoverWorkContext xaRecoverWork() throws RecognitionException {
		XaRecoverWorkContext _localctx = new XaRecoverWorkContext(_ctx, getState());
		enterRule(_localctx, 398, RULE_xaRecoverWork);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4980);
			match(XA);
			setState(4981);
			match(RECOVER);
			setState(4984);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CONVERT) {
				{
				setState(4982);
				match(CONVERT);
				setState(4983);
				xid();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PrepareStatementContext extends ParserRuleContext {
		public Token query;
		public Token variable;
		public TerminalNode PREPARE() { return getToken(MySqlParser.PREPARE, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode FROM() { return getToken(MySqlParser.FROM, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode LOCAL_ID() { return getToken(MySqlParser.LOCAL_ID, 0); }
		public PrepareStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_prepareStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPrepareStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPrepareStatement(this);
		}
	}

	public final PrepareStatementContext prepareStatement() throws RecognitionException {
		PrepareStatementContext _localctx = new PrepareStatementContext(_ctx, getState());
		enterRule(_localctx, 400, RULE_prepareStatement);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4986);
			match(PREPARE);
			setState(4987);
			uid();
			setState(4988);
			match(FROM);
			setState(4991);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case STRING_LITERAL:
				{
				setState(4989);
				((PrepareStatementContext)_localctx).query = match(STRING_LITERAL);
				}
				break;
			case LOCAL_ID:
				{
				setState(4990);
				((PrepareStatementContext)_localctx).variable = match(LOCAL_ID);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ExecuteStatementContext extends ParserRuleContext {
		public TerminalNode EXECUTE() { return getToken(MySqlParser.EXECUTE, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode USING() { return getToken(MySqlParser.USING, 0); }
		public UserVariablesContext userVariables() {
			return getRuleContext(UserVariablesContext.class,0);
		}
		public ExecuteStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_executeStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterExecuteStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitExecuteStatement(this);
		}
	}

	public final ExecuteStatementContext executeStatement() throws RecognitionException {
		ExecuteStatementContext _localctx = new ExecuteStatementContext(_ctx, getState());
		enterRule(_localctx, 402, RULE_executeStatement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4993);
			match(EXECUTE);
			setState(4994);
			uid();
			setState(4997);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==USING) {
				{
				setState(4995);
				match(USING);
				setState(4996);
				userVariables();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DeallocatePrepareContext extends ParserRuleContext {
		public Token dropFormat;
		public TerminalNode PREPARE() { return getToken(MySqlParser.PREPARE, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode DEALLOCATE() { return getToken(MySqlParser.DEALLOCATE, 0); }
		public TerminalNode DROP() { return getToken(MySqlParser.DROP, 0); }
		public DeallocatePrepareContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_deallocatePrepare; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDeallocatePrepare(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDeallocatePrepare(this);
		}
	}

	public final DeallocatePrepareContext deallocatePrepare() throws RecognitionException {
		DeallocatePrepareContext _localctx = new DeallocatePrepareContext(_ctx, getState());
		enterRule(_localctx, 404, RULE_deallocatePrepare);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4999);
			((DeallocatePrepareContext)_localctx).dropFormat = _input.LT(1);
			_la = _input.LA(1);
			if ( !(_la==DROP || _la==DEALLOCATE) ) {
				((DeallocatePrepareContext)_localctx).dropFormat = (Token)_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(5000);
			match(PREPARE);
			setState(5001);
			uid();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RoutineBodyContext extends ParserRuleContext {
		public BlockStatementContext blockStatement() {
			return getRuleContext(BlockStatementContext.class,0);
		}
		public SqlStatementContext sqlStatement() {
			return getRuleContext(SqlStatementContext.class,0);
		}
		public RoutineBodyContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_routineBody; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterRoutineBody(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitRoutineBody(this);
		}
	}

	public final RoutineBodyContext routineBody() throws RecognitionException {
		RoutineBodyContext _localctx = new RoutineBodyContext(_ctx, getState());
		enterRule(_localctx, 406, RULE_routineBody);
		try {
			setState(5005);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,747,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(5003);
				blockStatement();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(5004);
				sqlStatement();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class BlockStatementContext extends ParserRuleContext {
		public TerminalNode BEGIN() { return getToken(MySqlParser.BEGIN, 0); }
		public TerminalNode END() { return getToken(MySqlParser.END, 0); }
		public List uid() {
			return getRuleContexts(UidContext.class);
		}
		public UidContext uid(int i) {
			return getRuleContext(UidContext.class,i);
		}
		public TerminalNode COLON_SYMB() { return getToken(MySqlParser.COLON_SYMB, 0); }
		public List declareVariable() {
			return getRuleContexts(DeclareVariableContext.class);
		}
		public DeclareVariableContext declareVariable(int i) {
			return getRuleContext(DeclareVariableContext.class,i);
		}
		public List SEMI() { return getTokens(MySqlParser.SEMI); }
		public TerminalNode SEMI(int i) {
			return getToken(MySqlParser.SEMI, i);
		}
		public List declareCondition() {
			return getRuleContexts(DeclareConditionContext.class);
		}
		public DeclareConditionContext declareCondition(int i) {
			return getRuleContext(DeclareConditionContext.class,i);
		}
		public List declareCursor() {
			return getRuleContexts(DeclareCursorContext.class);
		}
		public DeclareCursorContext declareCursor(int i) {
			return getRuleContext(DeclareCursorContext.class,i);
		}
		public List declareHandler() {
			return getRuleContexts(DeclareHandlerContext.class);
		}
		public DeclareHandlerContext declareHandler(int i) {
			return getRuleContext(DeclareHandlerContext.class,i);
		}
		public List procedureSqlStatement() {
			return getRuleContexts(ProcedureSqlStatementContext.class);
		}
		public ProcedureSqlStatementContext procedureSqlStatement(int i) {
			return getRuleContext(ProcedureSqlStatementContext.class,i);
		}
		public BlockStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_blockStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterBlockStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitBlockStatement(this);
		}
	}

	public final BlockStatementContext blockStatement() throws RecognitionException {
		BlockStatementContext _localctx = new BlockStatementContext(_ctx, getState());
		enterRule(_localctx, 408, RULE_blockStatement);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(5010);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,748,_ctx) ) {
			case 1:
				{
				setState(5007);
				uid();
				setState(5008);
				match(COLON_SYMB);
				}
				break;
			}
			setState(5012);
			match(BEGIN);
			setState(5051);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,754,_ctx) ) {
			case 1:
				{
				setState(5018);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,749,_ctx);
				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
					if ( _alt==1 ) {
						{
						{
						setState(5013);
						declareVariable();
						setState(5014);
						match(SEMI);
						}
						} 
					}
					setState(5020);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,749,_ctx);
				}
				setState(5026);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,750,_ctx);
				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
					if ( _alt==1 ) {
						{
						{
						setState(5021);
						declareCondition();
						setState(5022);
						match(SEMI);
						}
						} 
					}
					setState(5028);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,750,_ctx);
				}
				setState(5034);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,751,_ctx);
				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
					if ( _alt==1 ) {
						{
						{
						setState(5029);
						declareCursor();
						setState(5030);
						match(SEMI);
						}
						} 
					}
					setState(5036);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,751,_ctx);
				}
				setState(5042);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==DECLARE) {
					{
					{
					setState(5037);
					declareHandler();
					setState(5038);
					match(SEMI);
					}
					}
					setState(5044);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(5048);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,753,_ctx);
				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
					if ( _alt==1 ) {
						{
						{
						setState(5045);
						procedureSqlStatement();
						}
						} 
					}
					setState(5050);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,753,_ctx);
				}
				}
				break;
			}
			setState(5053);
			match(END);
			setState(5055);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,755,_ctx) ) {
			case 1:
				{
				setState(5054);
				uid();
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CaseStatementContext extends ParserRuleContext {
		public List CASE() { return getTokens(MySqlParser.CASE); }
		public TerminalNode CASE(int i) {
			return getToken(MySqlParser.CASE, i);
		}
		public TerminalNode END() { return getToken(MySqlParser.END, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public List caseAlternative() {
			return getRuleContexts(CaseAlternativeContext.class);
		}
		public CaseAlternativeContext caseAlternative(int i) {
			return getRuleContext(CaseAlternativeContext.class,i);
		}
		public TerminalNode ELSE() { return getToken(MySqlParser.ELSE, 0); }
		public List procedureSqlStatement() {
			return getRuleContexts(ProcedureSqlStatementContext.class);
		}
		public ProcedureSqlStatementContext procedureSqlStatement(int i) {
			return getRuleContext(ProcedureSqlStatementContext.class,i);
		}
		public CaseStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_caseStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCaseStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCaseStatement(this);
		}
	}

	public final CaseStatementContext caseStatement() throws RecognitionException {
		CaseStatementContext _localctx = new CaseStatementContext(_ctx, getState());
		enterRule(_localctx, 410, RULE_caseStatement);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(5057);
			match(CASE);
			setState(5060);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,756,_ctx) ) {
			case 1:
				{
				setState(5058);
				uid();
				}
				break;
			case 2:
				{
				setState(5059);
				expression(0);
				}
				break;
			}
			setState(5063); 
			_errHandler.sync(this);
			_la = _input.LA(1);
			do {
				{
				{
				setState(5062);
				caseAlternative();
				}
				}
				setState(5065); 
				_errHandler.sync(this);
				_la = _input.LA(1);
			} while ( _la==WHEN );
			setState(5073);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ELSE) {
				{
				setState(5067);
				match(ELSE);
				setState(5069); 
				_errHandler.sync(this);
				_alt = 1;
				do {
					switch (_alt) {
					case 1:
						{
						{
						setState(5068);
						procedureSqlStatement();
						}
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					setState(5071); 
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,758,_ctx);
				} while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
				}
			}

			setState(5075);
			match(END);
			setState(5076);
			match(CASE);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IfStatementContext extends ParserRuleContext {
		public ProcedureSqlStatementContext procedureSqlStatement;
		public List thenStatements = new ArrayList();
		public List elseStatements = new ArrayList();
		public List IF() { return getTokens(MySqlParser.IF); }
		public TerminalNode IF(int i) {
			return getToken(MySqlParser.IF, i);
		}
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode THEN() { return getToken(MySqlParser.THEN, 0); }
		public TerminalNode END() { return getToken(MySqlParser.END, 0); }
		public List elifAlternative() {
			return getRuleContexts(ElifAlternativeContext.class);
		}
		public ElifAlternativeContext elifAlternative(int i) {
			return getRuleContext(ElifAlternativeContext.class,i);
		}
		public TerminalNode ELSE() { return getToken(MySqlParser.ELSE, 0); }
		public List procedureSqlStatement() {
			return getRuleContexts(ProcedureSqlStatementContext.class);
		}
		public ProcedureSqlStatementContext procedureSqlStatement(int i) {
			return getRuleContext(ProcedureSqlStatementContext.class,i);
		}
		public IfStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_ifStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterIfStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitIfStatement(this);
		}
	}

	public final IfStatementContext ifStatement() throws RecognitionException {
		IfStatementContext _localctx = new IfStatementContext(_ctx, getState());
		enterRule(_localctx, 412, RULE_ifStatement);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(5078);
			match(IF);
			setState(5079);
			expression(0);
			setState(5080);
			match(THEN);
			setState(5082); 
			_errHandler.sync(this);
			_alt = 1;
			do {
				switch (_alt) {
				case 1:
					{
					{
					setState(5081);
					((IfStatementContext)_localctx).procedureSqlStatement = procedureSqlStatement();
					((IfStatementContext)_localctx).thenStatements.add(((IfStatementContext)_localctx).procedureSqlStatement);
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(5084); 
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,760,_ctx);
			} while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
			setState(5089);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==ELSEIF) {
				{
				{
				setState(5086);
				elifAlternative();
				}
				}
				setState(5091);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(5098);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ELSE) {
				{
				setState(5092);
				match(ELSE);
				setState(5094); 
				_errHandler.sync(this);
				_alt = 1;
				do {
					switch (_alt) {
					case 1:
						{
						{
						setState(5093);
						((IfStatementContext)_localctx).procedureSqlStatement = procedureSqlStatement();
						((IfStatementContext)_localctx).elseStatements.add(((IfStatementContext)_localctx).procedureSqlStatement);
						}
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					setState(5096); 
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,762,_ctx);
				} while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
				}
			}

			setState(5100);
			match(END);
			setState(5101);
			match(IF);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IterateStatementContext extends ParserRuleContext {
		public TerminalNode ITERATE() { return getToken(MySqlParser.ITERATE, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public IterateStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_iterateStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterIterateStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitIterateStatement(this);
		}
	}

	public final IterateStatementContext iterateStatement() throws RecognitionException {
		IterateStatementContext _localctx = new IterateStatementContext(_ctx, getState());
		enterRule(_localctx, 414, RULE_iterateStatement);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5103);
			match(ITERATE);
			setState(5104);
			uid();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class LeaveStatementContext extends ParserRuleContext {
		public TerminalNode LEAVE() { return getToken(MySqlParser.LEAVE, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public LeaveStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_leaveStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterLeaveStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitLeaveStatement(this);
		}
	}

	public final LeaveStatementContext leaveStatement() throws RecognitionException {
		LeaveStatementContext _localctx = new LeaveStatementContext(_ctx, getState());
		enterRule(_localctx, 416, RULE_leaveStatement);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5106);
			match(LEAVE);
			setState(5107);
			uid();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class LoopStatementContext extends ParserRuleContext {
		public List LOOP() { return getTokens(MySqlParser.LOOP); }
		public TerminalNode LOOP(int i) {
			return getToken(MySqlParser.LOOP, i);
		}
		public TerminalNode END() { return getToken(MySqlParser.END, 0); }
		public List uid() {
			return getRuleContexts(UidContext.class);
		}
		public UidContext uid(int i) {
			return getRuleContext(UidContext.class,i);
		}
		public TerminalNode COLON_SYMB() { return getToken(MySqlParser.COLON_SYMB, 0); }
		public List procedureSqlStatement() {
			return getRuleContexts(ProcedureSqlStatementContext.class);
		}
		public ProcedureSqlStatementContext procedureSqlStatement(int i) {
			return getRuleContext(ProcedureSqlStatementContext.class,i);
		}
		public LoopStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_loopStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterLoopStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitLoopStatement(this);
		}
	}

	public final LoopStatementContext loopStatement() throws RecognitionException {
		LoopStatementContext _localctx = new LoopStatementContext(_ctx, getState());
		enterRule(_localctx, 418, RULE_loopStatement);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(5112);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ARRAY) | (1L << ATTRIBUTE) | (1L << BUCKETS) | (1L << CONDITION) | (1L << CURRENT) | (1L << CURRENT_ROLE) | (1L << CURRENT_USER) | (1L << DATABASE) | (1L << DEFAULT) | (1L << DIAGNOSTICS) | (1L << EMPTY) | (1L << ENFORCED) | (1L << EXCEPT))) != 0) || ((((_la - 74)) & ~0x3f) == 0 && ((1L << (_la - 74)) & ((1L << (GROUP - 74)) | (1L << (GROUP_REPLICATION_STREAM - 74)) | (1L << (IF - 74)) | (1L << (IGNORED - 74)) | (1L << (INSERT - 74)) | (1L << (LATERAL - 74)) | (1L << (LEFT - 74)) | (1L << (LOCKED - 74)) | (1L << (MAXVALUE - 74)) | (1L << (MINVALUE - 74)) | (1L << (NUMBER - 74)) | (1L << (OPTIONAL - 74)) | (1L << (ORDER - 74)) | (1L << (PRIMARY - 74)))) != 0) || ((((_la - 142)) & ~0x3f) == 0 && ((1L << (_la - 142)) & ((1L << (REPEAT - 142)) | (1L << (REPLACE - 142)) | (1L << (RIGHT - 142)) | (1L << (SCHEMA - 142)) | (1L << (SKIP_ - 142)) | (1L << (SKIP_QUERY_REWRITE - 142)) | (1L << (STACKED - 142)) | (1L << (STATEMENT - 142)))) != 0) || ((((_la - 220)) & ~0x3f) == 0 && ((1L << (_la - 220)) & ((1L << (DATE - 220)) | (1L << (TIME - 220)) | (1L << (TIMESTAMP - 220)) | (1L << (DATETIME - 220)) | (1L << (YEAR - 220)) | (1L << (NATIONAL - 220)) | (1L << (BINARY - 220)) | (1L << (TEXT - 220)) | (1L << (ENUM - 220)) | (1L << (SERIAL - 220)) | (1L << (JSON_ARRAY - 220)) | (1L << (JSON_ARRAYAGG - 220)) | (1L << (JSON_ARRAY_APPEND - 220)) | (1L << (JSON_ARRAY_INSERT - 220)) | (1L << (JSON_CONTAINS - 220)) | (1L << (JSON_CONTAINS_PATH - 220)) | (1L << (JSON_DEPTH - 220)) | (1L << (JSON_EXTRACT - 220)) | (1L << (JSON_INSERT - 220)) | (1L << (JSON_KEYS - 220)) | (1L << (JSON_LENGTH - 220)) | (1L << (JSON_MERGE - 220)) | (1L << (JSON_MERGE_PATCH - 220)) | (1L << (JSON_MERGE_PRESERVE - 220)) | (1L << (JSON_OBJECT - 220)) | (1L << (JSON_OBJECTAGG - 220)) | (1L << (JSON_OVERLAPS - 220)) | (1L << (JSON_PRETTY - 220)) | (1L << (JSON_QUOTE - 220)) | (1L << (JSON_REMOVE - 220)) | (1L << (JSON_REPLACE - 220)) | (1L << (JSON_SCHEMA_VALID - 220)) | (1L << (JSON_SCHEMA_VALIDATION_REPORT - 220)) | (1L << (JSON_SEARCH - 220)) | (1L << (JSON_SET - 220)) | (1L << (JSON_STORAGE_FREE - 220)) | (1L << (JSON_STORAGE_SIZE - 220)) | (1L << (JSON_TABLE - 220)) | (1L << (JSON_TYPE - 220)) | (1L << (JSON_UNQUOTE - 220)))) != 0) || ((((_la - 284)) & ~0x3f) == 0 && ((1L << (_la - 284)) & ((1L << (JSON_VALID - 284)) | (1L << (JSON_VALUE - 284)) | (1L << (NESTED - 284)) | (1L << (ORDINALITY - 284)) | (1L << (PATH - 284)) | (1L << (AVG - 284)) | (1L << (BIT_AND - 284)) | (1L << (BIT_OR - 284)) | (1L << (BIT_XOR - 284)) | (1L << (COUNT - 284)) | (1L << (CUME_DIST - 284)) | (1L << (DENSE_RANK - 284)) | (1L << (FIRST_VALUE - 284)) | (1L << (GROUP_CONCAT - 284)) | (1L << (LAG - 284)) | (1L << (LAST_VALUE - 284)) | (1L << (LEAD - 284)) | (1L << (MAX - 284)) | (1L << (MIN - 284)) | (1L << (NTILE - 284)) | (1L << (NTH_VALUE - 284)) | (1L << (PERCENT_RANK - 284)) | (1L << (RANK - 284)) | (1L << (ROW_NUMBER - 284)) | (1L << (STD - 284)) | (1L << (STDDEV - 284)) | (1L << (STDDEV_POP - 284)) | (1L << (STDDEV_SAMP - 284)) | (1L << (SUM - 284)) | (1L << (VAR_POP - 284)) | (1L << (VAR_SAMP - 284)) | (1L << (VARIANCE - 284)) | (1L << (CURRENT_DATE - 284)) | (1L << (CURRENT_TIME - 284)) | (1L << (CURRENT_TIMESTAMP - 284)) | (1L << (LOCALTIME - 284)) | (1L << (CURDATE - 284)) | (1L << (CURTIME - 284)) | (1L << (DATE_ADD - 284)) | (1L << (DATE_SUB - 284)) | (1L << (LOCALTIMESTAMP - 284)) | (1L << (NOW - 284)) | (1L << (POSITION - 284)) | (1L << (SUBSTR - 284)) | (1L << (SUBSTRING - 284)) | (1L << (SYSDATE - 284)) | (1L << (TRIM - 284)) | (1L << (UTC_DATE - 284)) | (1L << (UTC_TIME - 284)) | (1L << (UTC_TIMESTAMP - 284)) | (1L << (ACCOUNT - 284)) | (1L << (ACTION - 284)) | (1L << (AFTER - 284)) | (1L << (AGGREGATE - 284)) | (1L << (ALGORITHM - 284)) | (1L << (ANY - 284)) | (1L << (AT - 284)) | (1L << (AUTHORS - 284)) | (1L << (AUTOCOMMIT - 284)) | (1L << (AUTOEXTEND_SIZE - 284)) | (1L << (AUTO_INCREMENT - 284)) | (1L << (AVG_ROW_LENGTH - 284)) | (1L << (BEGIN - 284)))) != 0) || ((((_la - 348)) & ~0x3f) == 0 && ((1L << (_la - 348)) & ((1L << (BINLOG - 348)) | (1L << (BIT - 348)) | (1L << (BLOCK - 348)) | (1L << (BOOL - 348)) | (1L << (BOOLEAN - 348)) | (1L << (BTREE - 348)) | (1L << (CACHE - 348)) | (1L << (CASCADED - 348)) | (1L << (CHAIN - 348)) | (1L << (CHANGED - 348)) | (1L << (CHANNEL - 348)) | (1L << (CHECKSUM - 348)) | (1L << (PAGE_CHECKSUM - 348)) | (1L << (CIPHER - 348)) | (1L << (CLASS_ORIGIN - 348)) | (1L << (CLIENT - 348)) | (1L << (CLOSE - 348)) | (1L << (CLUSTERING - 348)) | (1L << (COALESCE - 348)) | (1L << (CODE - 348)) | (1L << (COLUMNS - 348)) | (1L << (COLUMN_FORMAT - 348)) | (1L << (COLUMN_NAME - 348)) | (1L << (COMMENT - 348)) | (1L << (COMMIT - 348)) | (1L << (COMPACT - 348)) | (1L << (COMPLETION - 348)) | (1L << (COMPRESSED - 348)) | (1L << (COMPRESSION - 348)) | (1L << (CONCURRENT - 348)) | (1L << (CONNECT - 348)) | (1L << (CONNECTION - 348)) | (1L << (CONSISTENT - 348)) | (1L << (CONSTRAINT_CATALOG - 348)) | (1L << (CONSTRAINT_SCHEMA - 348)) | (1L << (CONSTRAINT_NAME - 348)) | (1L << (CONTAINS - 348)) | (1L << (CONTEXT - 348)) | (1L << (CONTRIBUTORS - 348)) | (1L << (COPY - 348)) | (1L << (CPU - 348)) | (1L << (CYCLE - 348)) | (1L << (CURSOR_NAME - 348)) | (1L << (DATA - 348)) | (1L << (DATAFILE - 348)) | (1L << (DEALLOCATE - 348)) | (1L << (DEFAULT_AUTH - 348)) | (1L << (DEFINER - 348)) | (1L << (DELAY_KEY_WRITE - 348)) | (1L << (DES_KEY_FILE - 348)) | (1L << (DIRECTORY - 348)) | (1L << (DISABLE - 348)) | (1L << (DISCARD - 348)) | (1L << (DISK - 348)) | (1L << (DO - 348)) | (1L << (DUMPFILE - 348)) | (1L << (DUPLICATE - 348)) | (1L << (DYNAMIC - 348)) | (1L << (ENABLE - 348)) | (1L << (ENCRYPTED - 348)) | (1L << (ENCRYPTION - 348)) | (1L << (ENCRYPTION_KEY_ID - 348)) | (1L << (END - 348)) | (1L << (ENDS - 348)))) != 0) || ((((_la - 412)) & ~0x3f) == 0 && ((1L << (_la - 412)) & ((1L << (ENGINE - 412)) | (1L << (ENGINES - 412)) | (1L << (ERROR - 412)) | (1L << (ERRORS - 412)) | (1L << (ESCAPE - 412)) | (1L << (EVEN - 412)) | (1L << (EVENT - 412)) | (1L << (EVENTS - 412)) | (1L << (EVERY - 412)) | (1L << (EXCHANGE - 412)) | (1L << (EXCLUSIVE - 412)) | (1L << (EXPIRE - 412)) | (1L << (EXPORT - 412)) | (1L << (EXTENDED - 412)) | (1L << (EXTENT_SIZE - 412)) | (1L << (FAILED_LOGIN_ATTEMPTS - 412)) | (1L << (FAST - 412)) | (1L << (FAULTS - 412)) | (1L << (FIELDS - 412)) | (1L << (FILE_BLOCK_SIZE - 412)) | (1L << (FILTER - 412)) | (1L << (FIRST - 412)) | (1L << (FIXED - 412)) | (1L << (FLUSH - 412)) | (1L << (FOLLOWS - 412)) | (1L << (FOUND - 412)) | (1L << (FULL - 412)) | (1L << (FUNCTION - 412)) | (1L << (GENERAL - 412)) | (1L << (GLOBAL - 412)) | (1L << (GRANTS - 412)) | (1L << (GROUP_REPLICATION - 412)) | (1L << (HANDLER - 412)) | (1L << (HASH - 412)) | (1L << (HELP - 412)) | (1L << (HISTORY - 412)) | (1L << (HOST - 412)) | (1L << (HOSTS - 412)) | (1L << (IDENTIFIED - 412)) | (1L << (IGNORE_SERVER_IDS - 412)) | (1L << (IMPORT - 412)) | (1L << (INCREMENT - 412)) | (1L << (INDEXES - 412)) | (1L << (INITIAL_SIZE - 412)) | (1L << (INPLACE - 412)) | (1L << (INSERT_METHOD - 412)) | (1L << (INSTALL - 412)) | (1L << (INSTANCE - 412)) | (1L << (INSTANT - 412)) | (1L << (INVISIBLE - 412)) | (1L << (INVOKER - 412)) | (1L << (IO - 412)) | (1L << (IO_THREAD - 412)) | (1L << (IPC - 412)) | (1L << (ISOLATION - 412)) | (1L << (ISSUER - 412)) | (1L << (JSON - 412)) | (1L << (KEY_BLOCK_SIZE - 412)) | (1L << (LANGUAGE - 412)) | (1L << (LAST - 412)) | (1L << (LEAVES - 412)) | (1L << (LESS - 412)) | (1L << (LEVEL - 412)))) != 0) || ((((_la - 476)) & ~0x3f) == 0 && ((1L << (_la - 476)) & ((1L << (LIST - 476)) | (1L << (LOCAL - 476)) | (1L << (LOGFILE - 476)) | (1L << (LOGS - 476)) | (1L << (MASTER - 476)) | (1L << (MASTER_AUTO_POSITION - 476)) | (1L << (MASTER_CONNECT_RETRY - 476)) | (1L << (MASTER_DELAY - 476)) | (1L << (MASTER_HEARTBEAT_PERIOD - 476)) | (1L << (MASTER_HOST - 476)) | (1L << (MASTER_LOG_FILE - 476)) | (1L << (MASTER_LOG_POS - 476)) | (1L << (MASTER_PASSWORD - 476)) | (1L << (MASTER_PORT - 476)) | (1L << (MASTER_RETRY_COUNT - 476)) | (1L << (MASTER_SSL - 476)) | (1L << (MASTER_SSL_CA - 476)) | (1L << (MASTER_SSL_CAPATH - 476)) | (1L << (MASTER_SSL_CERT - 476)) | (1L << (MASTER_SSL_CIPHER - 476)) | (1L << (MASTER_SSL_CRL - 476)) | (1L << (MASTER_SSL_CRLPATH - 476)) | (1L << (MASTER_SSL_KEY - 476)) | (1L << (MASTER_TLS_VERSION - 476)) | (1L << (MASTER_USER - 476)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 476)) | (1L << (MAX_QUERIES_PER_HOUR - 476)) | (1L << (MAX_ROWS - 476)) | (1L << (MAX_SIZE - 476)) | (1L << (MAX_UPDATES_PER_HOUR - 476)) | (1L << (MAX_USER_CONNECTIONS - 476)) | (1L << (MEDIUM - 476)) | (1L << (MEMBER - 476)) | (1L << (MERGE - 476)) | (1L << (MESSAGE_TEXT - 476)) | (1L << (MID - 476)) | (1L << (MIGRATE - 476)) | (1L << (MIN_ROWS - 476)) | (1L << (MODE - 476)) | (1L << (MODIFY - 476)) | (1L << (MUTEX - 476)) | (1L << (MYSQL - 476)) | (1L << (MYSQL_ERRNO - 476)) | (1L << (NAME - 476)) | (1L << (NAMES - 476)) | (1L << (NCHAR - 476)) | (1L << (NEVER - 476)) | (1L << (NEXT - 476)) | (1L << (NO - 476)) | (1L << (NOCACHE - 476)) | (1L << (NOCOPY - 476)) | (1L << (NOCYCLE - 476)) | (1L << (NOMAXVALUE - 476)) | (1L << (NOMINVALUE - 476)) | (1L << (NOWAIT - 476)) | (1L << (NODEGROUP - 476)) | (1L << (NONE - 476)) | (1L << (ODBC - 476)) | (1L << (OFFLINE - 476)) | (1L << (OFFSET - 476)) | (1L << (OF - 476)) | (1L << (OJ - 476)) | (1L << (OLD_PASSWORD - 476)) | (1L << (ONE - 476)))) != 0) || ((((_la - 540)) & ~0x3f) == 0 && ((1L << (_la - 540)) & ((1L << (ONLINE - 540)) | (1L << (ONLY - 540)) | (1L << (OPEN - 540)) | (1L << (OPTIMIZER_COSTS - 540)) | (1L << (OPTIONS - 540)) | (1L << (OWNER - 540)) | (1L << (PACK_KEYS - 540)) | (1L << (PAGE - 540)) | (1L << (PARSER - 540)) | (1L << (PARTIAL - 540)) | (1L << (PARTITIONING - 540)) | (1L << (PARTITIONS - 540)) | (1L << (PASSWORD - 540)) | (1L << (PASSWORD_LOCK_TIME - 540)) | (1L << (PHASE - 540)) | (1L << (PLUGIN - 540)) | (1L << (PLUGIN_DIR - 540)) | (1L << (PLUGINS - 540)) | (1L << (PORT - 540)) | (1L << (PRECEDES - 540)) | (1L << (PREPARE - 540)) | (1L << (PRESERVE - 540)) | (1L << (PREV - 540)) | (1L << (PROCESSLIST - 540)) | (1L << (PROFILE - 540)) | (1L << (PROFILES - 540)) | (1L << (PROXY - 540)) | (1L << (QUERY - 540)) | (1L << (QUICK - 540)) | (1L << (REBUILD - 540)) | (1L << (RECOVER - 540)) | (1L << (RECURSIVE - 540)) | (1L << (REDO_BUFFER_SIZE - 540)) | (1L << (REDUNDANT - 540)) | (1L << (RELAY - 540)) | (1L << (RELAY_LOG_FILE - 540)) | (1L << (RELAY_LOG_POS - 540)) | (1L << (RELAYLOG - 540)) | (1L << (REMOVE - 540)) | (1L << (REORGANIZE - 540)) | (1L << (REPAIR - 540)) | (1L << (REPLICATE_DO_DB - 540)) | (1L << (REPLICATE_DO_TABLE - 540)) | (1L << (REPLICATE_IGNORE_DB - 540)) | (1L << (REPLICATE_IGNORE_TABLE - 540)) | (1L << (REPLICATE_REWRITE_DB - 540)) | (1L << (REPLICATE_WILD_DO_TABLE - 540)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 540)) | (1L << (REPLICATION - 540)) | (1L << (RESET - 540)) | (1L << (RESTART - 540)) | (1L << (RESUME - 540)) | (1L << (RETURNED_SQLSTATE - 540)) | (1L << (RETURNING - 540)) | (1L << (RETURNS - 540)) | (1L << (REUSE - 540)) | (1L << (ROLE - 540)) | (1L << (ROLLBACK - 540)) | (1L << (ROLLUP - 540)) | (1L << (ROTATE - 540)) | (1L << (ROW - 540)))) != 0) || ((((_la - 604)) & ~0x3f) == 0 && ((1L << (_la - 604)) & ((1L << (ROWS - 604)) | (1L << (ROW_FORMAT - 604)) | (1L << (RTREE - 604)) | (1L << (SAVEPOINT - 604)) | (1L << (SCHEDULE - 604)) | (1L << (SECURITY - 604)) | (1L << (SEQUENCE - 604)) | (1L << (SERVER - 604)) | (1L << (SESSION - 604)) | (1L << (SHARE - 604)) | (1L << (SHARED - 604)) | (1L << (SIGNED - 604)) | (1L << (SIMPLE - 604)) | (1L << (SLAVE - 604)) | (1L << (SLOW - 604)) | (1L << (SNAPSHOT - 604)) | (1L << (SOCKET - 604)) | (1L << (SOME - 604)) | (1L << (SONAME - 604)) | (1L << (SOUNDS - 604)) | (1L << (SOURCE - 604)) | (1L << (SQL_AFTER_GTIDS - 604)) | (1L << (SQL_AFTER_MTS_GAPS - 604)) | (1L << (SQL_BEFORE_GTIDS - 604)) | (1L << (SQL_BUFFER_RESULT - 604)) | (1L << (SQL_CACHE - 604)) | (1L << (SQL_NO_CACHE - 604)) | (1L << (SQL_THREAD - 604)) | (1L << (START - 604)) | (1L << (STARTS - 604)) | (1L << (STATS_AUTO_RECALC - 604)) | (1L << (STATS_PERSISTENT - 604)) | (1L << (STATS_SAMPLE_PAGES - 604)) | (1L << (STATUS - 604)) | (1L << (STOP - 604)) | (1L << (STORAGE - 604)) | (1L << (STRING - 604)) | (1L << (SUBCLASS_ORIGIN - 604)) | (1L << (SUBJECT - 604)) | (1L << (SUBPARTITION - 604)) | (1L << (SUBPARTITIONS - 604)) | (1L << (SUSPEND - 604)) | (1L << (SWAPS - 604)) | (1L << (SWITCHES - 604)) | (1L << (TABLE_NAME - 604)) | (1L << (TABLESPACE - 604)) | (1L << (TABLE_TYPE - 604)) | (1L << (TEMPORARY - 604)) | (1L << (TEMPTABLE - 604)) | (1L << (THAN - 604)) | (1L << (TRADITIONAL - 604)) | (1L << (TRANSACTION - 604)) | (1L << (TRANSACTIONAL - 604)) | (1L << (TRIGGERS - 604)) | (1L << (TRUNCATE - 604)) | (1L << (UNBOUNDED - 604)) | (1L << (UNDEFINED - 604)) | (1L << (UNDOFILE - 604)) | (1L << (UNDO_BUFFER_SIZE - 604)) | (1L << (UNINSTALL - 604)) | (1L << (UNKNOWN - 604)) | (1L << (UNTIL - 604)) | (1L << (UPGRADE - 604)))) != 0) || ((((_la - 668)) & ~0x3f) == 0 && ((1L << (_la - 668)) & ((1L << (USER - 668)) | (1L << (USE_FRM - 668)) | (1L << (USER_RESOURCES - 668)) | (1L << (VALIDATION - 668)) | (1L << (VALUE - 668)) | (1L << (VARIABLES - 668)) | (1L << (VIEW - 668)) | (1L << (VIRTUAL - 668)) | (1L << (VISIBLE - 668)) | (1L << (WAIT - 668)) | (1L << (WARNINGS - 668)) | (1L << (WITHOUT - 668)) | (1L << (WORK - 668)) | (1L << (WRAPPER - 668)) | (1L << (X509 - 668)) | (1L << (XA - 668)) | (1L << (XML - 668)) | (1L << (YES - 668)) | (1L << (EUR - 668)) | (1L << (USA - 668)) | (1L << (JIS - 668)) | (1L << (ISO - 668)) | (1L << (INTERNAL - 668)) | (1L << (QUARTER - 668)) | (1L << (MONTH - 668)) | (1L << (DAY - 668)) | (1L << (HOUR - 668)) | (1L << (MINUTE - 668)) | (1L << (WEEK - 668)) | (1L << (SECOND - 668)) | (1L << (MICROSECOND - 668)) | (1L << (USER_STATISTICS - 668)) | (1L << (CLIENT_STATISTICS - 668)) | (1L << (INDEX_STATISTICS - 668)) | (1L << (TABLE_STATISTICS - 668)) | (1L << (FIREWALL_RULES - 668)) | (1L << (ADMIN - 668)) | (1L << (APPLICATION_PASSWORD_ADMIN - 668)) | (1L << (AUDIT_ADMIN - 668)) | (1L << (AUDIT_ABORT_EXEMPT - 668)) | (1L << (AUTHENTICATION_POLICY_ADMIN - 668)) | (1L << (BACKUP_ADMIN - 668)) | (1L << (BINLOG_ADMIN - 668)) | (1L << (BINLOG_ENCRYPTION_ADMIN - 668)) | (1L << (CLONE_ADMIN - 668)) | (1L << (CONNECTION_ADMIN - 668)) | (1L << (ENCRYPTION_KEY_ADMIN - 668)) | (1L << (EXECUTE - 668)) | (1L << (FILE - 668)) | (1L << (FIREWALL_ADMIN - 668)) | (1L << (FIREWALL_EXEMPT - 668)) | (1L << (FIREWALL_USER - 668)) | (1L << (FLUSH_OPTIMIZER_COSTS - 668)) | (1L << (FLUSH_STATUS - 668)) | (1L << (FLUSH_TABLES - 668)) | (1L << (FLUSH_USER_RESOURCES - 668)) | (1L << (GROUP_REPLICATION_ADMIN - 668)) | (1L << (INNODB_REDO_LOG_ARCHIVE - 668)) | (1L << (INNODB_REDO_LOG_ENABLE - 668)) | (1L << (INVOKE - 668)) | (1L << (LAMBDA - 668)) | (1L << (NDB_STORED_USER - 668)) | (1L << (PASSWORDLESS_USER_ADMIN - 668)))) != 0) || ((((_la - 732)) & ~0x3f) == 0 && ((1L << (_la - 732)) & ((1L << (PERSIST_RO_VARIABLES_ADMIN - 732)) | (1L << (PRIVILEGES - 732)) | (1L << (PROCESS - 732)) | (1L << (RELOAD - 732)) | (1L << (REPLICATION_APPLIER - 732)) | (1L << (REPLICATION_SLAVE_ADMIN - 732)) | (1L << (RESOURCE_GROUP_ADMIN - 732)) | (1L << (RESOURCE_GROUP_USER - 732)) | (1L << (ROLE_ADMIN - 732)) | (1L << (ROUTINE - 732)) | (1L << (S3 - 732)) | (1L << (SESSION_VARIABLES_ADMIN - 732)) | (1L << (SET_USER_ID - 732)) | (1L << (SHOW_ROUTINE - 732)) | (1L << (SHUTDOWN - 732)) | (1L << (SUPER - 732)) | (1L << (SYSTEM_VARIABLES_ADMIN - 732)) | (1L << (TABLES - 732)) | (1L << (TABLE_ENCRYPTION_ADMIN - 732)) | (1L << (VERSION_TOKEN_ADMIN - 732)) | (1L << (XA_RECOVER_ADMIN - 732)) | (1L << (ARMSCII8 - 732)) | (1L << (ASCII - 732)) | (1L << (BIG5 - 732)) | (1L << (CP1250 - 732)) | (1L << (CP1251 - 732)) | (1L << (CP1256 - 732)) | (1L << (CP1257 - 732)) | (1L << (CP850 - 732)) | (1L << (CP852 - 732)) | (1L << (CP866 - 732)) | (1L << (CP932 - 732)) | (1L << (DEC8 - 732)) | (1L << (EUCJPMS - 732)) | (1L << (EUCKR - 732)) | (1L << (GB18030 - 732)) | (1L << (GB2312 - 732)) | (1L << (GBK - 732)) | (1L << (GEOSTD8 - 732)) | (1L << (GREEK - 732)) | (1L << (HEBREW - 732)) | (1L << (HP8 - 732)) | (1L << (KEYBCS2 - 732)) | (1L << (KOI8R - 732)) | (1L << (KOI8U - 732)) | (1L << (LATIN1 - 732)) | (1L << (LATIN2 - 732)) | (1L << (LATIN5 - 732)) | (1L << (LATIN7 - 732)) | (1L << (MACCE - 732)) | (1L << (MACROMAN - 732)) | (1L << (SJIS - 732)) | (1L << (SWE7 - 732)) | (1L << (TIS620 - 732)) | (1L << (UCS2 - 732)) | (1L << (UJIS - 732)) | (1L << (UTF16 - 732)) | (1L << (UTF16LE - 732)) | (1L << (UTF32 - 732)) | (1L << (UTF8 - 732)) | (1L << (UTF8MB3 - 732)) | (1L << (UTF8MB4 - 732)) | (1L << (ARCHIVE - 732)))) != 0) || ((((_la - 796)) & ~0x3f) == 0 && ((1L << (_la - 796)) & ((1L << (BLACKHOLE - 796)) | (1L << (CSV - 796)) | (1L << (FEDERATED - 796)) | (1L << (INNODB - 796)) | (1L << (MEMORY - 796)) | (1L << (MRG_MYISAM - 796)) | (1L << (MYISAM - 796)) | (1L << (NDB - 796)) | (1L << (NDBCLUSTER - 796)) | (1L << (PERFORMANCE_SCHEMA - 796)) | (1L << (TOKUDB - 796)) | (1L << (REPEATABLE - 796)) | (1L << (COMMITTED - 796)) | (1L << (UNCOMMITTED - 796)) | (1L << (SERIALIZABLE - 796)) | (1L << (GEOMETRYCOLLECTION - 796)) | (1L << (GEOMETRY - 796)) | (1L << (LINESTRING - 796)) | (1L << (MULTILINESTRING - 796)) | (1L << (MULTIPOINT - 796)) | (1L << (MULTIPOLYGON - 796)) | (1L << (POINT - 796)) | (1L << (POLYGON - 796)) | (1L << (ABS - 796)) | (1L << (ACOS - 796)) | (1L << (ADDDATE - 796)) | (1L << (ADDTIME - 796)) | (1L << (AES_DECRYPT - 796)) | (1L << (AES_ENCRYPT - 796)) | (1L << (AREA - 796)) | (1L << (ASBINARY - 796)) | (1L << (ASIN - 796)) | (1L << (ASTEXT - 796)) | (1L << (ASWKB - 796)) | (1L << (ASWKT - 796)) | (1L << (ASYMMETRIC_DECRYPT - 796)) | (1L << (ASYMMETRIC_DERIVE - 796)) | (1L << (ASYMMETRIC_ENCRYPT - 796)) | (1L << (ASYMMETRIC_SIGN - 796)) | (1L << (ASYMMETRIC_VERIFY - 796)) | (1L << (ATAN - 796)) | (1L << (ATAN2 - 796)) | (1L << (BENCHMARK - 796)) | (1L << (BIN - 796)) | (1L << (BIT_COUNT - 796)) | (1L << (BIT_LENGTH - 796)) | (1L << (BUFFER - 796)) | (1L << (CATALOG_NAME - 796)) | (1L << (CEIL - 796)) | (1L << (CEILING - 796)) | (1L << (CENTROID - 796)) | (1L << (CHARACTER_LENGTH - 796)) | (1L << (CHARSET - 796)) | (1L << (CHAR_LENGTH - 796)) | (1L << (COERCIBILITY - 796)) | (1L << (COLLATION - 796)) | (1L << (COMPRESS - 796)) | (1L << (CONCAT - 796)) | (1L << (CONCAT_WS - 796)) | (1L << (CONNECTION_ID - 796)) | (1L << (CONV - 796)) | (1L << (CONVERT_TZ - 796)) | (1L << (COS - 796)))) != 0) || ((((_la - 860)) & ~0x3f) == 0 && ((1L << (_la - 860)) & ((1L << (COT - 860)) | (1L << (CRC32 - 860)) | (1L << (CREATE_ASYMMETRIC_PRIV_KEY - 860)) | (1L << (CREATE_ASYMMETRIC_PUB_KEY - 860)) | (1L << (CREATE_DH_PARAMETERS - 860)) | (1L << (CREATE_DIGEST - 860)) | (1L << (CROSSES - 860)) | (1L << (DATEDIFF - 860)) | (1L << (DATE_FORMAT - 860)) | (1L << (DAYNAME - 860)) | (1L << (DAYOFMONTH - 860)) | (1L << (DAYOFWEEK - 860)) | (1L << (DAYOFYEAR - 860)) | (1L << (DECODE - 860)) | (1L << (DEGREES - 860)) | (1L << (DES_DECRYPT - 860)) | (1L << (DES_ENCRYPT - 860)) | (1L << (DIMENSION - 860)) | (1L << (DISJOINT - 860)) | (1L << (ELT - 860)) | (1L << (ENCODE - 860)) | (1L << (ENCRYPT - 860)) | (1L << (ENDPOINT - 860)) | (1L << (ENGINE_ATTRIBUTE - 860)) | (1L << (ENVELOPE - 860)) | (1L << (EQUALS - 860)) | (1L << (EXP - 860)) | (1L << (EXPORT_SET - 860)) | (1L << (EXTERIORRING - 860)) | (1L << (EXTRACTVALUE - 860)) | (1L << (FIELD - 860)) | (1L << (FIND_IN_SET - 860)) | (1L << (FLOOR - 860)) | (1L << (FORMAT - 860)) | (1L << (FOUND_ROWS - 860)) | (1L << (FROM_BASE64 - 860)) | (1L << (FROM_DAYS - 860)) | (1L << (FROM_UNIXTIME - 860)) | (1L << (GEOMCOLLFROMTEXT - 860)) | (1L << (GEOMCOLLFROMWKB - 860)) | (1L << (GEOMETRYCOLLECTIONFROMTEXT - 860)) | (1L << (GEOMETRYCOLLECTIONFROMWKB - 860)) | (1L << (GEOMETRYFROMTEXT - 860)) | (1L << (GEOMETRYFROMWKB - 860)) | (1L << (GEOMETRYN - 860)) | (1L << (GEOMETRYTYPE - 860)) | (1L << (GEOMFROMTEXT - 860)) | (1L << (GEOMFROMWKB - 860)) | (1L << (GET_FORMAT - 860)) | (1L << (GET_LOCK - 860)) | (1L << (GLENGTH - 860)) | (1L << (GREATEST - 860)) | (1L << (GTID_SUBSET - 860)) | (1L << (GTID_SUBTRACT - 860)) | (1L << (HEX - 860)) | (1L << (IFNULL - 860)) | (1L << (INET6_ATON - 860)) | (1L << (INET6_NTOA - 860)) | (1L << (INET_ATON - 860)) | (1L << (INET_NTOA - 860)) | (1L << (INSTR - 860)) | (1L << (INTERIORRINGN - 860)) | (1L << (INTERSECTS - 860)) | (1L << (ISCLOSED - 860)))) != 0) || ((((_la - 924)) & ~0x3f) == 0 && ((1L << (_la - 924)) & ((1L << (ISEMPTY - 924)) | (1L << (ISNULL - 924)) | (1L << (ISSIMPLE - 924)) | (1L << (IS_FREE_LOCK - 924)) | (1L << (IS_IPV4 - 924)) | (1L << (IS_IPV4_COMPAT - 924)) | (1L << (IS_IPV4_MAPPED - 924)) | (1L << (IS_IPV6 - 924)) | (1L << (IS_USED_LOCK - 924)) | (1L << (LAST_INSERT_ID - 924)) | (1L << (LCASE - 924)) | (1L << (LEAST - 924)) | (1L << (LENGTH - 924)) | (1L << (LINEFROMTEXT - 924)) | (1L << (LINEFROMWKB - 924)) | (1L << (LINESTRINGFROMTEXT - 924)) | (1L << (LINESTRINGFROMWKB - 924)) | (1L << (LN - 924)) | (1L << (LOAD_FILE - 924)) | (1L << (LOCATE - 924)) | (1L << (LOG - 924)) | (1L << (LOG10 - 924)) | (1L << (LOG2 - 924)) | (1L << (LOWER - 924)) | (1L << (LPAD - 924)) | (1L << (LTRIM - 924)) | (1L << (MAKEDATE - 924)) | (1L << (MAKETIME - 924)) | (1L << (MAKE_SET - 924)) | (1L << (MASTER_POS_WAIT - 924)) | (1L << (MBRCONTAINS - 924)) | (1L << (MBRDISJOINT - 924)) | (1L << (MBREQUAL - 924)) | (1L << (MBRINTERSECTS - 924)) | (1L << (MBROVERLAPS - 924)) | (1L << (MBRTOUCHES - 924)) | (1L << (MBRWITHIN - 924)) | (1L << (MD5 - 924)) | (1L << (MLINEFROMTEXT - 924)) | (1L << (MLINEFROMWKB - 924)) | (1L << (MONTHNAME - 924)) | (1L << (MPOINTFROMTEXT - 924)) | (1L << (MPOINTFROMWKB - 924)) | (1L << (MPOLYFROMTEXT - 924)) | (1L << (MPOLYFROMWKB - 924)) | (1L << (MULTILINESTRINGFROMTEXT - 924)) | (1L << (MULTILINESTRINGFROMWKB - 924)) | (1L << (MULTIPOINTFROMTEXT - 924)) | (1L << (MULTIPOINTFROMWKB - 924)) | (1L << (MULTIPOLYGONFROMTEXT - 924)) | (1L << (MULTIPOLYGONFROMWKB - 924)) | (1L << (NAME_CONST - 924)) | (1L << (NULLIF - 924)) | (1L << (NUMGEOMETRIES - 924)) | (1L << (NUMINTERIORRINGS - 924)) | (1L << (NUMPOINTS - 924)) | (1L << (OCT - 924)) | (1L << (OCTET_LENGTH - 924)) | (1L << (ORD - 924)) | (1L << (OVERLAPS - 924)) | (1L << (PERIOD_ADD - 924)) | (1L << (PERIOD_DIFF - 924)) | (1L << (PI - 924)) | (1L << (POINTFROMTEXT - 924)))) != 0) || ((((_la - 988)) & ~0x3f) == 0 && ((1L << (_la - 988)) & ((1L << (POINTFROMWKB - 988)) | (1L << (POINTN - 988)) | (1L << (POLYFROMTEXT - 988)) | (1L << (POLYFROMWKB - 988)) | (1L << (POLYGONFROMTEXT - 988)) | (1L << (POLYGONFROMWKB - 988)) | (1L << (POW - 988)) | (1L << (POWER - 988)) | (1L << (QUOTE - 988)) | (1L << (RADIANS - 988)) | (1L << (RAND - 988)) | (1L << (RANDOM - 988)) | (1L << (RANDOM_BYTES - 988)) | (1L << (RELEASE_LOCK - 988)) | (1L << (REVERSE - 988)) | (1L << (ROUND - 988)) | (1L << (ROW_COUNT - 988)) | (1L << (RPAD - 988)) | (1L << (RTRIM - 988)) | (1L << (SEC_TO_TIME - 988)) | (1L << (SECONDARY_ENGINE_ATTRIBUTE - 988)) | (1L << (SENSITIVE_VARIABLES_OBSERVER - 988)) | (1L << (SESSION_USER - 988)) | (1L << (SHA - 988)) | (1L << (SHA1 - 988)) | (1L << (SHA2 - 988)) | (1L << (SCHEMA_NAME - 988)) | (1L << (SIGN - 988)) | (1L << (SIN - 988)) | (1L << (SLEEP - 988)) | (1L << (SOUNDEX - 988)) | (1L << (SQL_THREAD_WAIT_AFTER_GTIDS - 988)) | (1L << (SQRT - 988)) | (1L << (SRID - 988)) | (1L << (STARTPOINT - 988)) | (1L << (STRCMP - 988)) | (1L << (STR_TO_DATE - 988)) | (1L << (ST_AREA - 988)) | (1L << (ST_ASBINARY - 988)) | (1L << (ST_ASTEXT - 988)) | (1L << (ST_ASWKB - 988)) | (1L << (ST_ASWKT - 988)) | (1L << (ST_BUFFER - 988)) | (1L << (ST_CENTROID - 988)) | (1L << (ST_CONTAINS - 988)) | (1L << (ST_CROSSES - 988)) | (1L << (ST_DIFFERENCE - 988)) | (1L << (ST_DIMENSION - 988)) | (1L << (ST_DISJOINT - 988)) | (1L << (ST_DISTANCE - 988)) | (1L << (ST_ENDPOINT - 988)) | (1L << (ST_ENVELOPE - 988)) | (1L << (ST_EQUALS - 988)) | (1L << (ST_EXTERIORRING - 988)) | (1L << (ST_GEOMCOLLFROMTEXT - 988)) | (1L << (ST_GEOMCOLLFROMTXT - 988)) | (1L << (ST_GEOMCOLLFROMWKB - 988)) | (1L << (ST_GEOMETRYCOLLECTIONFROMTEXT - 988)) | (1L << (ST_GEOMETRYCOLLECTIONFROMWKB - 988)) | (1L << (ST_GEOMETRYFROMTEXT - 988)) | (1L << (ST_GEOMETRYFROMWKB - 988)) | (1L << (ST_GEOMETRYN - 988)) | (1L << (ST_GEOMETRYTYPE - 988)) | (1L << (ST_GEOMFROMTEXT - 988)))) != 0) || ((((_la - 1052)) & ~0x3f) == 0 && ((1L << (_la - 1052)) & ((1L << (ST_GEOMFROMWKB - 1052)) | (1L << (ST_INTERIORRINGN - 1052)) | (1L << (ST_INTERSECTION - 1052)) | (1L << (ST_INTERSECTS - 1052)) | (1L << (ST_ISCLOSED - 1052)) | (1L << (ST_ISEMPTY - 1052)) | (1L << (ST_ISSIMPLE - 1052)) | (1L << (ST_LINEFROMTEXT - 1052)) | (1L << (ST_LINEFROMWKB - 1052)) | (1L << (ST_LINESTRINGFROMTEXT - 1052)) | (1L << (ST_LINESTRINGFROMWKB - 1052)) | (1L << (ST_NUMGEOMETRIES - 1052)) | (1L << (ST_NUMINTERIORRING - 1052)) | (1L << (ST_NUMINTERIORRINGS - 1052)) | (1L << (ST_NUMPOINTS - 1052)) | (1L << (ST_OVERLAPS - 1052)) | (1L << (ST_POINTFROMTEXT - 1052)) | (1L << (ST_POINTFROMWKB - 1052)) | (1L << (ST_POINTN - 1052)) | (1L << (ST_POLYFROMTEXT - 1052)) | (1L << (ST_POLYFROMWKB - 1052)) | (1L << (ST_POLYGONFROMTEXT - 1052)) | (1L << (ST_POLYGONFROMWKB - 1052)) | (1L << (ST_SRID - 1052)) | (1L << (ST_STARTPOINT - 1052)) | (1L << (ST_SYMDIFFERENCE - 1052)) | (1L << (ST_TOUCHES - 1052)) | (1L << (ST_UNION - 1052)) | (1L << (ST_WITHIN - 1052)) | (1L << (ST_X - 1052)) | (1L << (ST_Y - 1052)) | (1L << (SUBDATE - 1052)) | (1L << (SUBSTRING_INDEX - 1052)) | (1L << (SUBTIME - 1052)) | (1L << (SYSTEM_USER - 1052)) | (1L << (SYSTEM - 1052)) | (1L << (TAN - 1052)) | (1L << (TELEMETRY_LOG_ADMIN - 1052)) | (1L << (TIMEDIFF - 1052)) | (1L << (TIMESTAMPADD - 1052)) | (1L << (TIMESTAMPDIFF - 1052)) | (1L << (TIME_FORMAT - 1052)) | (1L << (TIME_TO_SEC - 1052)) | (1L << (TOUCHES - 1052)) | (1L << (TO_BASE64 - 1052)) | (1L << (TO_DAYS - 1052)) | (1L << (TO_SECONDS - 1052)) | (1L << (TP_CONNECTION_ADMIN - 1052)) | (1L << (UCASE - 1052)) | (1L << (UNCOMPRESS - 1052)) | (1L << (UNCOMPRESSED_LENGTH - 1052)) | (1L << (UNHEX - 1052)) | (1L << (UNIX_TIMESTAMP - 1052)) | (1L << (UPDATEXML - 1052)) | (1L << (UPPER - 1052)) | (1L << (UUID - 1052)) | (1L << (UUID_SHORT - 1052)) | (1L << (VALIDATE_PASSWORD_STRENGTH - 1052)) | (1L << (VERSION - 1052)) | (1L << (VERSIONING - 1052)) | (1L << (WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS - 1052)) | (1L << (WEEKDAY - 1052)) | (1L << (WEEKOFYEAR - 1052)) | (1L << (WEIGHT_STRING - 1052)))) != 0) || ((((_la - 1116)) & ~0x3f) == 0 && ((1L << (_la - 1116)) & ((1L << (WITHIN - 1116)) | (1L << (YEARWEEK - 1116)) | (1L << (Y_FUNCTION - 1116)) | (1L << (X_FUNCTION - 1116)) | (1L << (VIA - 1116)) | (1L << (LASTVAL - 1116)) | (1L << (NEXTVAL - 1116)) | (1L << (SETVAL - 1116)) | (1L << (PREVIOUS - 1116)) | (1L << (PERSISTENT - 1116)) | (1L << (BINLOG_MONITOR - 1116)) | (1L << (BINLOG_REPLAY - 1116)) | (1L << (FEDERATED_ADMIN - 1116)) | (1L << (READ_ONLY_ADMIN - 1116)) | (1L << (REPLICA - 1116)) | (1L << (REPLICATION_MASTER_ADMIN - 1116)) | (1L << (MONITOR - 1116)) | (1L << (READ_ONLY - 1116)) | (1L << (REPLAY - 1116)) | (1L << (MOD - 1116)) | (1L << (CHARSET_REVERSE_QOUTE_STRING - 1116)) | (1L << (STRING_LITERAL - 1116)))) != 0) || _la==ID) {
				{
				setState(5109);
				uid();
				setState(5110);
				match(COLON_SYMB);
				}
			}

			setState(5114);
			match(LOOP);
			setState(5116); 
			_errHandler.sync(this);
			_alt = 1;
			do {
				switch (_alt) {
				case 1:
					{
					{
					setState(5115);
					procedureSqlStatement();
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(5118); 
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,765,_ctx);
			} while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
			setState(5120);
			match(END);
			setState(5121);
			match(LOOP);
			setState(5123);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ARRAY) | (1L << ATTRIBUTE) | (1L << BUCKETS) | (1L << CONDITION) | (1L << CURRENT) | (1L << CURRENT_ROLE) | (1L << CURRENT_USER) | (1L << DATABASE) | (1L << DEFAULT) | (1L << DIAGNOSTICS) | (1L << EMPTY) | (1L << ENFORCED) | (1L << EXCEPT))) != 0) || ((((_la - 74)) & ~0x3f) == 0 && ((1L << (_la - 74)) & ((1L << (GROUP - 74)) | (1L << (GROUP_REPLICATION_STREAM - 74)) | (1L << (IF - 74)) | (1L << (IGNORED - 74)) | (1L << (INSERT - 74)) | (1L << (LATERAL - 74)) | (1L << (LEFT - 74)) | (1L << (LOCKED - 74)) | (1L << (MAXVALUE - 74)) | (1L << (MINVALUE - 74)) | (1L << (NUMBER - 74)) | (1L << (OPTIONAL - 74)) | (1L << (ORDER - 74)) | (1L << (PRIMARY - 74)))) != 0) || ((((_la - 142)) & ~0x3f) == 0 && ((1L << (_la - 142)) & ((1L << (REPEAT - 142)) | (1L << (REPLACE - 142)) | (1L << (RIGHT - 142)) | (1L << (SCHEMA - 142)) | (1L << (SKIP_ - 142)) | (1L << (SKIP_QUERY_REWRITE - 142)) | (1L << (STACKED - 142)) | (1L << (STATEMENT - 142)))) != 0) || ((((_la - 220)) & ~0x3f) == 0 && ((1L << (_la - 220)) & ((1L << (DATE - 220)) | (1L << (TIME - 220)) | (1L << (TIMESTAMP - 220)) | (1L << (DATETIME - 220)) | (1L << (YEAR - 220)) | (1L << (NATIONAL - 220)) | (1L << (BINARY - 220)) | (1L << (TEXT - 220)) | (1L << (ENUM - 220)) | (1L << (SERIAL - 220)) | (1L << (JSON_ARRAY - 220)) | (1L << (JSON_ARRAYAGG - 220)) | (1L << (JSON_ARRAY_APPEND - 220)) | (1L << (JSON_ARRAY_INSERT - 220)) | (1L << (JSON_CONTAINS - 220)) | (1L << (JSON_CONTAINS_PATH - 220)) | (1L << (JSON_DEPTH - 220)) | (1L << (JSON_EXTRACT - 220)) | (1L << (JSON_INSERT - 220)) | (1L << (JSON_KEYS - 220)) | (1L << (JSON_LENGTH - 220)) | (1L << (JSON_MERGE - 220)) | (1L << (JSON_MERGE_PATCH - 220)) | (1L << (JSON_MERGE_PRESERVE - 220)) | (1L << (JSON_OBJECT - 220)) | (1L << (JSON_OBJECTAGG - 220)) | (1L << (JSON_OVERLAPS - 220)) | (1L << (JSON_PRETTY - 220)) | (1L << (JSON_QUOTE - 220)) | (1L << (JSON_REMOVE - 220)) | (1L << (JSON_REPLACE - 220)) | (1L << (JSON_SCHEMA_VALID - 220)) | (1L << (JSON_SCHEMA_VALIDATION_REPORT - 220)) | (1L << (JSON_SEARCH - 220)) | (1L << (JSON_SET - 220)) | (1L << (JSON_STORAGE_FREE - 220)) | (1L << (JSON_STORAGE_SIZE - 220)) | (1L << (JSON_TABLE - 220)) | (1L << (JSON_TYPE - 220)) | (1L << (JSON_UNQUOTE - 220)))) != 0) || ((((_la - 284)) & ~0x3f) == 0 && ((1L << (_la - 284)) & ((1L << (JSON_VALID - 284)) | (1L << (JSON_VALUE - 284)) | (1L << (NESTED - 284)) | (1L << (ORDINALITY - 284)) | (1L << (PATH - 284)) | (1L << (AVG - 284)) | (1L << (BIT_AND - 284)) | (1L << (BIT_OR - 284)) | (1L << (BIT_XOR - 284)) | (1L << (COUNT - 284)) | (1L << (CUME_DIST - 284)) | (1L << (DENSE_RANK - 284)) | (1L << (FIRST_VALUE - 284)) | (1L << (GROUP_CONCAT - 284)) | (1L << (LAG - 284)) | (1L << (LAST_VALUE - 284)) | (1L << (LEAD - 284)) | (1L << (MAX - 284)) | (1L << (MIN - 284)) | (1L << (NTILE - 284)) | (1L << (NTH_VALUE - 284)) | (1L << (PERCENT_RANK - 284)) | (1L << (RANK - 284)) | (1L << (ROW_NUMBER - 284)) | (1L << (STD - 284)) | (1L << (STDDEV - 284)) | (1L << (STDDEV_POP - 284)) | (1L << (STDDEV_SAMP - 284)) | (1L << (SUM - 284)) | (1L << (VAR_POP - 284)) | (1L << (VAR_SAMP - 284)) | (1L << (VARIANCE - 284)) | (1L << (CURRENT_DATE - 284)) | (1L << (CURRENT_TIME - 284)) | (1L << (CURRENT_TIMESTAMP - 284)) | (1L << (LOCALTIME - 284)) | (1L << (CURDATE - 284)) | (1L << (CURTIME - 284)) | (1L << (DATE_ADD - 284)) | (1L << (DATE_SUB - 284)) | (1L << (LOCALTIMESTAMP - 284)) | (1L << (NOW - 284)) | (1L << (POSITION - 284)) | (1L << (SUBSTR - 284)) | (1L << (SUBSTRING - 284)) | (1L << (SYSDATE - 284)) | (1L << (TRIM - 284)) | (1L << (UTC_DATE - 284)) | (1L << (UTC_TIME - 284)) | (1L << (UTC_TIMESTAMP - 284)) | (1L << (ACCOUNT - 284)) | (1L << (ACTION - 284)) | (1L << (AFTER - 284)) | (1L << (AGGREGATE - 284)) | (1L << (ALGORITHM - 284)) | (1L << (ANY - 284)) | (1L << (AT - 284)) | (1L << (AUTHORS - 284)) | (1L << (AUTOCOMMIT - 284)) | (1L << (AUTOEXTEND_SIZE - 284)) | (1L << (AUTO_INCREMENT - 284)) | (1L << (AVG_ROW_LENGTH - 284)) | (1L << (BEGIN - 284)))) != 0) || ((((_la - 348)) & ~0x3f) == 0 && ((1L << (_la - 348)) & ((1L << (BINLOG - 348)) | (1L << (BIT - 348)) | (1L << (BLOCK - 348)) | (1L << (BOOL - 348)) | (1L << (BOOLEAN - 348)) | (1L << (BTREE - 348)) | (1L << (CACHE - 348)) | (1L << (CASCADED - 348)) | (1L << (CHAIN - 348)) | (1L << (CHANGED - 348)) | (1L << (CHANNEL - 348)) | (1L << (CHECKSUM - 348)) | (1L << (PAGE_CHECKSUM - 348)) | (1L << (CIPHER - 348)) | (1L << (CLASS_ORIGIN - 348)) | (1L << (CLIENT - 348)) | (1L << (CLOSE - 348)) | (1L << (CLUSTERING - 348)) | (1L << (COALESCE - 348)) | (1L << (CODE - 348)) | (1L << (COLUMNS - 348)) | (1L << (COLUMN_FORMAT - 348)) | (1L << (COLUMN_NAME - 348)) | (1L << (COMMENT - 348)) | (1L << (COMMIT - 348)) | (1L << (COMPACT - 348)) | (1L << (COMPLETION - 348)) | (1L << (COMPRESSED - 348)) | (1L << (COMPRESSION - 348)) | (1L << (CONCURRENT - 348)) | (1L << (CONNECT - 348)) | (1L << (CONNECTION - 348)) | (1L << (CONSISTENT - 348)) | (1L << (CONSTRAINT_CATALOG - 348)) | (1L << (CONSTRAINT_SCHEMA - 348)) | (1L << (CONSTRAINT_NAME - 348)) | (1L << (CONTAINS - 348)) | (1L << (CONTEXT - 348)) | (1L << (CONTRIBUTORS - 348)) | (1L << (COPY - 348)) | (1L << (CPU - 348)) | (1L << (CYCLE - 348)) | (1L << (CURSOR_NAME - 348)) | (1L << (DATA - 348)) | (1L << (DATAFILE - 348)) | (1L << (DEALLOCATE - 348)) | (1L << (DEFAULT_AUTH - 348)) | (1L << (DEFINER - 348)) | (1L << (DELAY_KEY_WRITE - 348)) | (1L << (DES_KEY_FILE - 348)) | (1L << (DIRECTORY - 348)) | (1L << (DISABLE - 348)) | (1L << (DISCARD - 348)) | (1L << (DISK - 348)) | (1L << (DO - 348)) | (1L << (DUMPFILE - 348)) | (1L << (DUPLICATE - 348)) | (1L << (DYNAMIC - 348)) | (1L << (ENABLE - 348)) | (1L << (ENCRYPTED - 348)) | (1L << (ENCRYPTION - 348)) | (1L << (ENCRYPTION_KEY_ID - 348)) | (1L << (END - 348)) | (1L << (ENDS - 348)))) != 0) || ((((_la - 412)) & ~0x3f) == 0 && ((1L << (_la - 412)) & ((1L << (ENGINE - 412)) | (1L << (ENGINES - 412)) | (1L << (ERROR - 412)) | (1L << (ERRORS - 412)) | (1L << (ESCAPE - 412)) | (1L << (EVEN - 412)) | (1L << (EVENT - 412)) | (1L << (EVENTS - 412)) | (1L << (EVERY - 412)) | (1L << (EXCHANGE - 412)) | (1L << (EXCLUSIVE - 412)) | (1L << (EXPIRE - 412)) | (1L << (EXPORT - 412)) | (1L << (EXTENDED - 412)) | (1L << (EXTENT_SIZE - 412)) | (1L << (FAILED_LOGIN_ATTEMPTS - 412)) | (1L << (FAST - 412)) | (1L << (FAULTS - 412)) | (1L << (FIELDS - 412)) | (1L << (FILE_BLOCK_SIZE - 412)) | (1L << (FILTER - 412)) | (1L << (FIRST - 412)) | (1L << (FIXED - 412)) | (1L << (FLUSH - 412)) | (1L << (FOLLOWS - 412)) | (1L << (FOUND - 412)) | (1L << (FULL - 412)) | (1L << (FUNCTION - 412)) | (1L << (GENERAL - 412)) | (1L << (GLOBAL - 412)) | (1L << (GRANTS - 412)) | (1L << (GROUP_REPLICATION - 412)) | (1L << (HANDLER - 412)) | (1L << (HASH - 412)) | (1L << (HELP - 412)) | (1L << (HISTORY - 412)) | (1L << (HOST - 412)) | (1L << (HOSTS - 412)) | (1L << (IDENTIFIED - 412)) | (1L << (IGNORE_SERVER_IDS - 412)) | (1L << (IMPORT - 412)) | (1L << (INCREMENT - 412)) | (1L << (INDEXES - 412)) | (1L << (INITIAL_SIZE - 412)) | (1L << (INPLACE - 412)) | (1L << (INSERT_METHOD - 412)) | (1L << (INSTALL - 412)) | (1L << (INSTANCE - 412)) | (1L << (INSTANT - 412)) | (1L << (INVISIBLE - 412)) | (1L << (INVOKER - 412)) | (1L << (IO - 412)) | (1L << (IO_THREAD - 412)) | (1L << (IPC - 412)) | (1L << (ISOLATION - 412)) | (1L << (ISSUER - 412)) | (1L << (JSON - 412)) | (1L << (KEY_BLOCK_SIZE - 412)) | (1L << (LANGUAGE - 412)) | (1L << (LAST - 412)) | (1L << (LEAVES - 412)) | (1L << (LESS - 412)) | (1L << (LEVEL - 412)))) != 0) || ((((_la - 476)) & ~0x3f) == 0 && ((1L << (_la - 476)) & ((1L << (LIST - 476)) | (1L << (LOCAL - 476)) | (1L << (LOGFILE - 476)) | (1L << (LOGS - 476)) | (1L << (MASTER - 476)) | (1L << (MASTER_AUTO_POSITION - 476)) | (1L << (MASTER_CONNECT_RETRY - 476)) | (1L << (MASTER_DELAY - 476)) | (1L << (MASTER_HEARTBEAT_PERIOD - 476)) | (1L << (MASTER_HOST - 476)) | (1L << (MASTER_LOG_FILE - 476)) | (1L << (MASTER_LOG_POS - 476)) | (1L << (MASTER_PASSWORD - 476)) | (1L << (MASTER_PORT - 476)) | (1L << (MASTER_RETRY_COUNT - 476)) | (1L << (MASTER_SSL - 476)) | (1L << (MASTER_SSL_CA - 476)) | (1L << (MASTER_SSL_CAPATH - 476)) | (1L << (MASTER_SSL_CERT - 476)) | (1L << (MASTER_SSL_CIPHER - 476)) | (1L << (MASTER_SSL_CRL - 476)) | (1L << (MASTER_SSL_CRLPATH - 476)) | (1L << (MASTER_SSL_KEY - 476)) | (1L << (MASTER_TLS_VERSION - 476)) | (1L << (MASTER_USER - 476)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 476)) | (1L << (MAX_QUERIES_PER_HOUR - 476)) | (1L << (MAX_ROWS - 476)) | (1L << (MAX_SIZE - 476)) | (1L << (MAX_UPDATES_PER_HOUR - 476)) | (1L << (MAX_USER_CONNECTIONS - 476)) | (1L << (MEDIUM - 476)) | (1L << (MEMBER - 476)) | (1L << (MERGE - 476)) | (1L << (MESSAGE_TEXT - 476)) | (1L << (MID - 476)) | (1L << (MIGRATE - 476)) | (1L << (MIN_ROWS - 476)) | (1L << (MODE - 476)) | (1L << (MODIFY - 476)) | (1L << (MUTEX - 476)) | (1L << (MYSQL - 476)) | (1L << (MYSQL_ERRNO - 476)) | (1L << (NAME - 476)) | (1L << (NAMES - 476)) | (1L << (NCHAR - 476)) | (1L << (NEVER - 476)) | (1L << (NEXT - 476)) | (1L << (NO - 476)) | (1L << (NOCACHE - 476)) | (1L << (NOCOPY - 476)) | (1L << (NOCYCLE - 476)) | (1L << (NOMAXVALUE - 476)) | (1L << (NOMINVALUE - 476)) | (1L << (NOWAIT - 476)) | (1L << (NODEGROUP - 476)) | (1L << (NONE - 476)) | (1L << (ODBC - 476)) | (1L << (OFFLINE - 476)) | (1L << (OFFSET - 476)) | (1L << (OF - 476)) | (1L << (OJ - 476)) | (1L << (OLD_PASSWORD - 476)) | (1L << (ONE - 476)))) != 0) || ((((_la - 540)) & ~0x3f) == 0 && ((1L << (_la - 540)) & ((1L << (ONLINE - 540)) | (1L << (ONLY - 540)) | (1L << (OPEN - 540)) | (1L << (OPTIMIZER_COSTS - 540)) | (1L << (OPTIONS - 540)) | (1L << (OWNER - 540)) | (1L << (PACK_KEYS - 540)) | (1L << (PAGE - 540)) | (1L << (PARSER - 540)) | (1L << (PARTIAL - 540)) | (1L << (PARTITIONING - 540)) | (1L << (PARTITIONS - 540)) | (1L << (PASSWORD - 540)) | (1L << (PASSWORD_LOCK_TIME - 540)) | (1L << (PHASE - 540)) | (1L << (PLUGIN - 540)) | (1L << (PLUGIN_DIR - 540)) | (1L << (PLUGINS - 540)) | (1L << (PORT - 540)) | (1L << (PRECEDES - 540)) | (1L << (PREPARE - 540)) | (1L << (PRESERVE - 540)) | (1L << (PREV - 540)) | (1L << (PROCESSLIST - 540)) | (1L << (PROFILE - 540)) | (1L << (PROFILES - 540)) | (1L << (PROXY - 540)) | (1L << (QUERY - 540)) | (1L << (QUICK - 540)) | (1L << (REBUILD - 540)) | (1L << (RECOVER - 540)) | (1L << (RECURSIVE - 540)) | (1L << (REDO_BUFFER_SIZE - 540)) | (1L << (REDUNDANT - 540)) | (1L << (RELAY - 540)) | (1L << (RELAY_LOG_FILE - 540)) | (1L << (RELAY_LOG_POS - 540)) | (1L << (RELAYLOG - 540)) | (1L << (REMOVE - 540)) | (1L << (REORGANIZE - 540)) | (1L << (REPAIR - 540)) | (1L << (REPLICATE_DO_DB - 540)) | (1L << (REPLICATE_DO_TABLE - 540)) | (1L << (REPLICATE_IGNORE_DB - 540)) | (1L << (REPLICATE_IGNORE_TABLE - 540)) | (1L << (REPLICATE_REWRITE_DB - 540)) | (1L << (REPLICATE_WILD_DO_TABLE - 540)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 540)) | (1L << (REPLICATION - 540)) | (1L << (RESET - 540)) | (1L << (RESTART - 540)) | (1L << (RESUME - 540)) | (1L << (RETURNED_SQLSTATE - 540)) | (1L << (RETURNING - 540)) | (1L << (RETURNS - 540)) | (1L << (REUSE - 540)) | (1L << (ROLE - 540)) | (1L << (ROLLBACK - 540)) | (1L << (ROLLUP - 540)) | (1L << (ROTATE - 540)) | (1L << (ROW - 540)))) != 0) || ((((_la - 604)) & ~0x3f) == 0 && ((1L << (_la - 604)) & ((1L << (ROWS - 604)) | (1L << (ROW_FORMAT - 604)) | (1L << (RTREE - 604)) | (1L << (SAVEPOINT - 604)) | (1L << (SCHEDULE - 604)) | (1L << (SECURITY - 604)) | (1L << (SEQUENCE - 604)) | (1L << (SERVER - 604)) | (1L << (SESSION - 604)) | (1L << (SHARE - 604)) | (1L << (SHARED - 604)) | (1L << (SIGNED - 604)) | (1L << (SIMPLE - 604)) | (1L << (SLAVE - 604)) | (1L << (SLOW - 604)) | (1L << (SNAPSHOT - 604)) | (1L << (SOCKET - 604)) | (1L << (SOME - 604)) | (1L << (SONAME - 604)) | (1L << (SOUNDS - 604)) | (1L << (SOURCE - 604)) | (1L << (SQL_AFTER_GTIDS - 604)) | (1L << (SQL_AFTER_MTS_GAPS - 604)) | (1L << (SQL_BEFORE_GTIDS - 604)) | (1L << (SQL_BUFFER_RESULT - 604)) | (1L << (SQL_CACHE - 604)) | (1L << (SQL_NO_CACHE - 604)) | (1L << (SQL_THREAD - 604)) | (1L << (START - 604)) | (1L << (STARTS - 604)) | (1L << (STATS_AUTO_RECALC - 604)) | (1L << (STATS_PERSISTENT - 604)) | (1L << (STATS_SAMPLE_PAGES - 604)) | (1L << (STATUS - 604)) | (1L << (STOP - 604)) | (1L << (STORAGE - 604)) | (1L << (STRING - 604)) | (1L << (SUBCLASS_ORIGIN - 604)) | (1L << (SUBJECT - 604)) | (1L << (SUBPARTITION - 604)) | (1L << (SUBPARTITIONS - 604)) | (1L << (SUSPEND - 604)) | (1L << (SWAPS - 604)) | (1L << (SWITCHES - 604)) | (1L << (TABLE_NAME - 604)) | (1L << (TABLESPACE - 604)) | (1L << (TABLE_TYPE - 604)) | (1L << (TEMPORARY - 604)) | (1L << (TEMPTABLE - 604)) | (1L << (THAN - 604)) | (1L << (TRADITIONAL - 604)) | (1L << (TRANSACTION - 604)) | (1L << (TRANSACTIONAL - 604)) | (1L << (TRIGGERS - 604)) | (1L << (TRUNCATE - 604)) | (1L << (UNBOUNDED - 604)) | (1L << (UNDEFINED - 604)) | (1L << (UNDOFILE - 604)) | (1L << (UNDO_BUFFER_SIZE - 604)) | (1L << (UNINSTALL - 604)) | (1L << (UNKNOWN - 604)) | (1L << (UNTIL - 604)) | (1L << (UPGRADE - 604)))) != 0) || ((((_la - 668)) & ~0x3f) == 0 && ((1L << (_la - 668)) & ((1L << (USER - 668)) | (1L << (USE_FRM - 668)) | (1L << (USER_RESOURCES - 668)) | (1L << (VALIDATION - 668)) | (1L << (VALUE - 668)) | (1L << (VARIABLES - 668)) | (1L << (VIEW - 668)) | (1L << (VIRTUAL - 668)) | (1L << (VISIBLE - 668)) | (1L << (WAIT - 668)) | (1L << (WARNINGS - 668)) | (1L << (WITHOUT - 668)) | (1L << (WORK - 668)) | (1L << (WRAPPER - 668)) | (1L << (X509 - 668)) | (1L << (XA - 668)) | (1L << (XML - 668)) | (1L << (YES - 668)) | (1L << (EUR - 668)) | (1L << (USA - 668)) | (1L << (JIS - 668)) | (1L << (ISO - 668)) | (1L << (INTERNAL - 668)) | (1L << (QUARTER - 668)) | (1L << (MONTH - 668)) | (1L << (DAY - 668)) | (1L << (HOUR - 668)) | (1L << (MINUTE - 668)) | (1L << (WEEK - 668)) | (1L << (SECOND - 668)) | (1L << (MICROSECOND - 668)) | (1L << (USER_STATISTICS - 668)) | (1L << (CLIENT_STATISTICS - 668)) | (1L << (INDEX_STATISTICS - 668)) | (1L << (TABLE_STATISTICS - 668)) | (1L << (FIREWALL_RULES - 668)) | (1L << (ADMIN - 668)) | (1L << (APPLICATION_PASSWORD_ADMIN - 668)) | (1L << (AUDIT_ADMIN - 668)) | (1L << (AUDIT_ABORT_EXEMPT - 668)) | (1L << (AUTHENTICATION_POLICY_ADMIN - 668)) | (1L << (BACKUP_ADMIN - 668)) | (1L << (BINLOG_ADMIN - 668)) | (1L << (BINLOG_ENCRYPTION_ADMIN - 668)) | (1L << (CLONE_ADMIN - 668)) | (1L << (CONNECTION_ADMIN - 668)) | (1L << (ENCRYPTION_KEY_ADMIN - 668)) | (1L << (EXECUTE - 668)) | (1L << (FILE - 668)) | (1L << (FIREWALL_ADMIN - 668)) | (1L << (FIREWALL_EXEMPT - 668)) | (1L << (FIREWALL_USER - 668)) | (1L << (FLUSH_OPTIMIZER_COSTS - 668)) | (1L << (FLUSH_STATUS - 668)) | (1L << (FLUSH_TABLES - 668)) | (1L << (FLUSH_USER_RESOURCES - 668)) | (1L << (GROUP_REPLICATION_ADMIN - 668)) | (1L << (INNODB_REDO_LOG_ARCHIVE - 668)) | (1L << (INNODB_REDO_LOG_ENABLE - 668)) | (1L << (INVOKE - 668)) | (1L << (LAMBDA - 668)) | (1L << (NDB_STORED_USER - 668)) | (1L << (PASSWORDLESS_USER_ADMIN - 668)))) != 0) || ((((_la - 732)) & ~0x3f) == 0 && ((1L << (_la - 732)) & ((1L << (PERSIST_RO_VARIABLES_ADMIN - 732)) | (1L << (PRIVILEGES - 732)) | (1L << (PROCESS - 732)) | (1L << (RELOAD - 732)) | (1L << (REPLICATION_APPLIER - 732)) | (1L << (REPLICATION_SLAVE_ADMIN - 732)) | (1L << (RESOURCE_GROUP_ADMIN - 732)) | (1L << (RESOURCE_GROUP_USER - 732)) | (1L << (ROLE_ADMIN - 732)) | (1L << (ROUTINE - 732)) | (1L << (S3 - 732)) | (1L << (SESSION_VARIABLES_ADMIN - 732)) | (1L << (SET_USER_ID - 732)) | (1L << (SHOW_ROUTINE - 732)) | (1L << (SHUTDOWN - 732)) | (1L << (SUPER - 732)) | (1L << (SYSTEM_VARIABLES_ADMIN - 732)) | (1L << (TABLES - 732)) | (1L << (TABLE_ENCRYPTION_ADMIN - 732)) | (1L << (VERSION_TOKEN_ADMIN - 732)) | (1L << (XA_RECOVER_ADMIN - 732)) | (1L << (ARMSCII8 - 732)) | (1L << (ASCII - 732)) | (1L << (BIG5 - 732)) | (1L << (CP1250 - 732)) | (1L << (CP1251 - 732)) | (1L << (CP1256 - 732)) | (1L << (CP1257 - 732)) | (1L << (CP850 - 732)) | (1L << (CP852 - 732)) | (1L << (CP866 - 732)) | (1L << (CP932 - 732)) | (1L << (DEC8 - 732)) | (1L << (EUCJPMS - 732)) | (1L << (EUCKR - 732)) | (1L << (GB18030 - 732)) | (1L << (GB2312 - 732)) | (1L << (GBK - 732)) | (1L << (GEOSTD8 - 732)) | (1L << (GREEK - 732)) | (1L << (HEBREW - 732)) | (1L << (HP8 - 732)) | (1L << (KEYBCS2 - 732)) | (1L << (KOI8R - 732)) | (1L << (KOI8U - 732)) | (1L << (LATIN1 - 732)) | (1L << (LATIN2 - 732)) | (1L << (LATIN5 - 732)) | (1L << (LATIN7 - 732)) | (1L << (MACCE - 732)) | (1L << (MACROMAN - 732)) | (1L << (SJIS - 732)) | (1L << (SWE7 - 732)) | (1L << (TIS620 - 732)) | (1L << (UCS2 - 732)) | (1L << (UJIS - 732)) | (1L << (UTF16 - 732)) | (1L << (UTF16LE - 732)) | (1L << (UTF32 - 732)) | (1L << (UTF8 - 732)) | (1L << (UTF8MB3 - 732)) | (1L << (UTF8MB4 - 732)) | (1L << (ARCHIVE - 732)))) != 0) || ((((_la - 796)) & ~0x3f) == 0 && ((1L << (_la - 796)) & ((1L << (BLACKHOLE - 796)) | (1L << (CSV - 796)) | (1L << (FEDERATED - 796)) | (1L << (INNODB - 796)) | (1L << (MEMORY - 796)) | (1L << (MRG_MYISAM - 796)) | (1L << (MYISAM - 796)) | (1L << (NDB - 796)) | (1L << (NDBCLUSTER - 796)) | (1L << (PERFORMANCE_SCHEMA - 796)) | (1L << (TOKUDB - 796)) | (1L << (REPEATABLE - 796)) | (1L << (COMMITTED - 796)) | (1L << (UNCOMMITTED - 796)) | (1L << (SERIALIZABLE - 796)) | (1L << (GEOMETRYCOLLECTION - 796)) | (1L << (GEOMETRY - 796)) | (1L << (LINESTRING - 796)) | (1L << (MULTILINESTRING - 796)) | (1L << (MULTIPOINT - 796)) | (1L << (MULTIPOLYGON - 796)) | (1L << (POINT - 796)) | (1L << (POLYGON - 796)) | (1L << (ABS - 796)) | (1L << (ACOS - 796)) | (1L << (ADDDATE - 796)) | (1L << (ADDTIME - 796)) | (1L << (AES_DECRYPT - 796)) | (1L << (AES_ENCRYPT - 796)) | (1L << (AREA - 796)) | (1L << (ASBINARY - 796)) | (1L << (ASIN - 796)) | (1L << (ASTEXT - 796)) | (1L << (ASWKB - 796)) | (1L << (ASWKT - 796)) | (1L << (ASYMMETRIC_DECRYPT - 796)) | (1L << (ASYMMETRIC_DERIVE - 796)) | (1L << (ASYMMETRIC_ENCRYPT - 796)) | (1L << (ASYMMETRIC_SIGN - 796)) | (1L << (ASYMMETRIC_VERIFY - 796)) | (1L << (ATAN - 796)) | (1L << (ATAN2 - 796)) | (1L << (BENCHMARK - 796)) | (1L << (BIN - 796)) | (1L << (BIT_COUNT - 796)) | (1L << (BIT_LENGTH - 796)) | (1L << (BUFFER - 796)) | (1L << (CATALOG_NAME - 796)) | (1L << (CEIL - 796)) | (1L << (CEILING - 796)) | (1L << (CENTROID - 796)) | (1L << (CHARACTER_LENGTH - 796)) | (1L << (CHARSET - 796)) | (1L << (CHAR_LENGTH - 796)) | (1L << (COERCIBILITY - 796)) | (1L << (COLLATION - 796)) | (1L << (COMPRESS - 796)) | (1L << (CONCAT - 796)) | (1L << (CONCAT_WS - 796)) | (1L << (CONNECTION_ID - 796)) | (1L << (CONV - 796)) | (1L << (CONVERT_TZ - 796)) | (1L << (COS - 796)))) != 0) || ((((_la - 860)) & ~0x3f) == 0 && ((1L << (_la - 860)) & ((1L << (COT - 860)) | (1L << (CRC32 - 860)) | (1L << (CREATE_ASYMMETRIC_PRIV_KEY - 860)) | (1L << (CREATE_ASYMMETRIC_PUB_KEY - 860)) | (1L << (CREATE_DH_PARAMETERS - 860)) | (1L << (CREATE_DIGEST - 860)) | (1L << (CROSSES - 860)) | (1L << (DATEDIFF - 860)) | (1L << (DATE_FORMAT - 860)) | (1L << (DAYNAME - 860)) | (1L << (DAYOFMONTH - 860)) | (1L << (DAYOFWEEK - 860)) | (1L << (DAYOFYEAR - 860)) | (1L << (DECODE - 860)) | (1L << (DEGREES - 860)) | (1L << (DES_DECRYPT - 860)) | (1L << (DES_ENCRYPT - 860)) | (1L << (DIMENSION - 860)) | (1L << (DISJOINT - 860)) | (1L << (ELT - 860)) | (1L << (ENCODE - 860)) | (1L << (ENCRYPT - 860)) | (1L << (ENDPOINT - 860)) | (1L << (ENGINE_ATTRIBUTE - 860)) | (1L << (ENVELOPE - 860)) | (1L << (EQUALS - 860)) | (1L << (EXP - 860)) | (1L << (EXPORT_SET - 860)) | (1L << (EXTERIORRING - 860)) | (1L << (EXTRACTVALUE - 860)) | (1L << (FIELD - 860)) | (1L << (FIND_IN_SET - 860)) | (1L << (FLOOR - 860)) | (1L << (FORMAT - 860)) | (1L << (FOUND_ROWS - 860)) | (1L << (FROM_BASE64 - 860)) | (1L << (FROM_DAYS - 860)) | (1L << (FROM_UNIXTIME - 860)) | (1L << (GEOMCOLLFROMTEXT - 860)) | (1L << (GEOMCOLLFROMWKB - 860)) | (1L << (GEOMETRYCOLLECTIONFROMTEXT - 860)) | (1L << (GEOMETRYCOLLECTIONFROMWKB - 860)) | (1L << (GEOMETRYFROMTEXT - 860)) | (1L << (GEOMETRYFROMWKB - 860)) | (1L << (GEOMETRYN - 860)) | (1L << (GEOMETRYTYPE - 860)) | (1L << (GEOMFROMTEXT - 860)) | (1L << (GEOMFROMWKB - 860)) | (1L << (GET_FORMAT - 860)) | (1L << (GET_LOCK - 860)) | (1L << (GLENGTH - 860)) | (1L << (GREATEST - 860)) | (1L << (GTID_SUBSET - 860)) | (1L << (GTID_SUBTRACT - 860)) | (1L << (HEX - 860)) | (1L << (IFNULL - 860)) | (1L << (INET6_ATON - 860)) | (1L << (INET6_NTOA - 860)) | (1L << (INET_ATON - 860)) | (1L << (INET_NTOA - 860)) | (1L << (INSTR - 860)) | (1L << (INTERIORRINGN - 860)) | (1L << (INTERSECTS - 860)) | (1L << (ISCLOSED - 860)))) != 0) || ((((_la - 924)) & ~0x3f) == 0 && ((1L << (_la - 924)) & ((1L << (ISEMPTY - 924)) | (1L << (ISNULL - 924)) | (1L << (ISSIMPLE - 924)) | (1L << (IS_FREE_LOCK - 924)) | (1L << (IS_IPV4 - 924)) | (1L << (IS_IPV4_COMPAT - 924)) | (1L << (IS_IPV4_MAPPED - 924)) | (1L << (IS_IPV6 - 924)) | (1L << (IS_USED_LOCK - 924)) | (1L << (LAST_INSERT_ID - 924)) | (1L << (LCASE - 924)) | (1L << (LEAST - 924)) | (1L << (LENGTH - 924)) | (1L << (LINEFROMTEXT - 924)) | (1L << (LINEFROMWKB - 924)) | (1L << (LINESTRINGFROMTEXT - 924)) | (1L << (LINESTRINGFROMWKB - 924)) | (1L << (LN - 924)) | (1L << (LOAD_FILE - 924)) | (1L << (LOCATE - 924)) | (1L << (LOG - 924)) | (1L << (LOG10 - 924)) | (1L << (LOG2 - 924)) | (1L << (LOWER - 924)) | (1L << (LPAD - 924)) | (1L << (LTRIM - 924)) | (1L << (MAKEDATE - 924)) | (1L << (MAKETIME - 924)) | (1L << (MAKE_SET - 924)) | (1L << (MASTER_POS_WAIT - 924)) | (1L << (MBRCONTAINS - 924)) | (1L << (MBRDISJOINT - 924)) | (1L << (MBREQUAL - 924)) | (1L << (MBRINTERSECTS - 924)) | (1L << (MBROVERLAPS - 924)) | (1L << (MBRTOUCHES - 924)) | (1L << (MBRWITHIN - 924)) | (1L << (MD5 - 924)) | (1L << (MLINEFROMTEXT - 924)) | (1L << (MLINEFROMWKB - 924)) | (1L << (MONTHNAME - 924)) | (1L << (MPOINTFROMTEXT - 924)) | (1L << (MPOINTFROMWKB - 924)) | (1L << (MPOLYFROMTEXT - 924)) | (1L << (MPOLYFROMWKB - 924)) | (1L << (MULTILINESTRINGFROMTEXT - 924)) | (1L << (MULTILINESTRINGFROMWKB - 924)) | (1L << (MULTIPOINTFROMTEXT - 924)) | (1L << (MULTIPOINTFROMWKB - 924)) | (1L << (MULTIPOLYGONFROMTEXT - 924)) | (1L << (MULTIPOLYGONFROMWKB - 924)) | (1L << (NAME_CONST - 924)) | (1L << (NULLIF - 924)) | (1L << (NUMGEOMETRIES - 924)) | (1L << (NUMINTERIORRINGS - 924)) | (1L << (NUMPOINTS - 924)) | (1L << (OCT - 924)) | (1L << (OCTET_LENGTH - 924)) | (1L << (ORD - 924)) | (1L << (OVERLAPS - 924)) | (1L << (PERIOD_ADD - 924)) | (1L << (PERIOD_DIFF - 924)) | (1L << (PI - 924)) | (1L << (POINTFROMTEXT - 924)))) != 0) || ((((_la - 988)) & ~0x3f) == 0 && ((1L << (_la - 988)) & ((1L << (POINTFROMWKB - 988)) | (1L << (POINTN - 988)) | (1L << (POLYFROMTEXT - 988)) | (1L << (POLYFROMWKB - 988)) | (1L << (POLYGONFROMTEXT - 988)) | (1L << (POLYGONFROMWKB - 988)) | (1L << (POW - 988)) | (1L << (POWER - 988)) | (1L << (QUOTE - 988)) | (1L << (RADIANS - 988)) | (1L << (RAND - 988)) | (1L << (RANDOM - 988)) | (1L << (RANDOM_BYTES - 988)) | (1L << (RELEASE_LOCK - 988)) | (1L << (REVERSE - 988)) | (1L << (ROUND - 988)) | (1L << (ROW_COUNT - 988)) | (1L << (RPAD - 988)) | (1L << (RTRIM - 988)) | (1L << (SEC_TO_TIME - 988)) | (1L << (SECONDARY_ENGINE_ATTRIBUTE - 988)) | (1L << (SENSITIVE_VARIABLES_OBSERVER - 988)) | (1L << (SESSION_USER - 988)) | (1L << (SHA - 988)) | (1L << (SHA1 - 988)) | (1L << (SHA2 - 988)) | (1L << (SCHEMA_NAME - 988)) | (1L << (SIGN - 988)) | (1L << (SIN - 988)) | (1L << (SLEEP - 988)) | (1L << (SOUNDEX - 988)) | (1L << (SQL_THREAD_WAIT_AFTER_GTIDS - 988)) | (1L << (SQRT - 988)) | (1L << (SRID - 988)) | (1L << (STARTPOINT - 988)) | (1L << (STRCMP - 988)) | (1L << (STR_TO_DATE - 988)) | (1L << (ST_AREA - 988)) | (1L << (ST_ASBINARY - 988)) | (1L << (ST_ASTEXT - 988)) | (1L << (ST_ASWKB - 988)) | (1L << (ST_ASWKT - 988)) | (1L << (ST_BUFFER - 988)) | (1L << (ST_CENTROID - 988)) | (1L << (ST_CONTAINS - 988)) | (1L << (ST_CROSSES - 988)) | (1L << (ST_DIFFERENCE - 988)) | (1L << (ST_DIMENSION - 988)) | (1L << (ST_DISJOINT - 988)) | (1L << (ST_DISTANCE - 988)) | (1L << (ST_ENDPOINT - 988)) | (1L << (ST_ENVELOPE - 988)) | (1L << (ST_EQUALS - 988)) | (1L << (ST_EXTERIORRING - 988)) | (1L << (ST_GEOMCOLLFROMTEXT - 988)) | (1L << (ST_GEOMCOLLFROMTXT - 988)) | (1L << (ST_GEOMCOLLFROMWKB - 988)) | (1L << (ST_GEOMETRYCOLLECTIONFROMTEXT - 988)) | (1L << (ST_GEOMETRYCOLLECTIONFROMWKB - 988)) | (1L << (ST_GEOMETRYFROMTEXT - 988)) | (1L << (ST_GEOMETRYFROMWKB - 988)) | (1L << (ST_GEOMETRYN - 988)) | (1L << (ST_GEOMETRYTYPE - 988)) | (1L << (ST_GEOMFROMTEXT - 988)))) != 0) || ((((_la - 1052)) & ~0x3f) == 0 && ((1L << (_la - 1052)) & ((1L << (ST_GEOMFROMWKB - 1052)) | (1L << (ST_INTERIORRINGN - 1052)) | (1L << (ST_INTERSECTION - 1052)) | (1L << (ST_INTERSECTS - 1052)) | (1L << (ST_ISCLOSED - 1052)) | (1L << (ST_ISEMPTY - 1052)) | (1L << (ST_ISSIMPLE - 1052)) | (1L << (ST_LINEFROMTEXT - 1052)) | (1L << (ST_LINEFROMWKB - 1052)) | (1L << (ST_LINESTRINGFROMTEXT - 1052)) | (1L << (ST_LINESTRINGFROMWKB - 1052)) | (1L << (ST_NUMGEOMETRIES - 1052)) | (1L << (ST_NUMINTERIORRING - 1052)) | (1L << (ST_NUMINTERIORRINGS - 1052)) | (1L << (ST_NUMPOINTS - 1052)) | (1L << (ST_OVERLAPS - 1052)) | (1L << (ST_POINTFROMTEXT - 1052)) | (1L << (ST_POINTFROMWKB - 1052)) | (1L << (ST_POINTN - 1052)) | (1L << (ST_POLYFROMTEXT - 1052)) | (1L << (ST_POLYFROMWKB - 1052)) | (1L << (ST_POLYGONFROMTEXT - 1052)) | (1L << (ST_POLYGONFROMWKB - 1052)) | (1L << (ST_SRID - 1052)) | (1L << (ST_STARTPOINT - 1052)) | (1L << (ST_SYMDIFFERENCE - 1052)) | (1L << (ST_TOUCHES - 1052)) | (1L << (ST_UNION - 1052)) | (1L << (ST_WITHIN - 1052)) | (1L << (ST_X - 1052)) | (1L << (ST_Y - 1052)) | (1L << (SUBDATE - 1052)) | (1L << (SUBSTRING_INDEX - 1052)) | (1L << (SUBTIME - 1052)) | (1L << (SYSTEM_USER - 1052)) | (1L << (SYSTEM - 1052)) | (1L << (TAN - 1052)) | (1L << (TELEMETRY_LOG_ADMIN - 1052)) | (1L << (TIMEDIFF - 1052)) | (1L << (TIMESTAMPADD - 1052)) | (1L << (TIMESTAMPDIFF - 1052)) | (1L << (TIME_FORMAT - 1052)) | (1L << (TIME_TO_SEC - 1052)) | (1L << (TOUCHES - 1052)) | (1L << (TO_BASE64 - 1052)) | (1L << (TO_DAYS - 1052)) | (1L << (TO_SECONDS - 1052)) | (1L << (TP_CONNECTION_ADMIN - 1052)) | (1L << (UCASE - 1052)) | (1L << (UNCOMPRESS - 1052)) | (1L << (UNCOMPRESSED_LENGTH - 1052)) | (1L << (UNHEX - 1052)) | (1L << (UNIX_TIMESTAMP - 1052)) | (1L << (UPDATEXML - 1052)) | (1L << (UPPER - 1052)) | (1L << (UUID - 1052)) | (1L << (UUID_SHORT - 1052)) | (1L << (VALIDATE_PASSWORD_STRENGTH - 1052)) | (1L << (VERSION - 1052)) | (1L << (VERSIONING - 1052)) | (1L << (WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS - 1052)) | (1L << (WEEKDAY - 1052)) | (1L << (WEEKOFYEAR - 1052)) | (1L << (WEIGHT_STRING - 1052)))) != 0) || ((((_la - 1116)) & ~0x3f) == 0 && ((1L << (_la - 1116)) & ((1L << (WITHIN - 1116)) | (1L << (YEARWEEK - 1116)) | (1L << (Y_FUNCTION - 1116)) | (1L << (X_FUNCTION - 1116)) | (1L << (VIA - 1116)) | (1L << (LASTVAL - 1116)) | (1L << (NEXTVAL - 1116)) | (1L << (SETVAL - 1116)) | (1L << (PREVIOUS - 1116)) | (1L << (PERSISTENT - 1116)) | (1L << (BINLOG_MONITOR - 1116)) | (1L << (BINLOG_REPLAY - 1116)) | (1L << (FEDERATED_ADMIN - 1116)) | (1L << (READ_ONLY_ADMIN - 1116)) | (1L << (REPLICA - 1116)) | (1L << (REPLICATION_MASTER_ADMIN - 1116)) | (1L << (MONITOR - 1116)) | (1L << (READ_ONLY - 1116)) | (1L << (REPLAY - 1116)) | (1L << (MOD - 1116)) | (1L << (CHARSET_REVERSE_QOUTE_STRING - 1116)) | (1L << (STRING_LITERAL - 1116)))) != 0) || _la==ID) {
				{
				setState(5122);
				uid();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RepeatStatementContext extends ParserRuleContext {
		public List REPEAT() { return getTokens(MySqlParser.REPEAT); }
		public TerminalNode REPEAT(int i) {
			return getToken(MySqlParser.REPEAT, i);
		}
		public TerminalNode UNTIL() { return getToken(MySqlParser.UNTIL, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode END() { return getToken(MySqlParser.END, 0); }
		public List uid() {
			return getRuleContexts(UidContext.class);
		}
		public UidContext uid(int i) {
			return getRuleContext(UidContext.class,i);
		}
		public TerminalNode COLON_SYMB() { return getToken(MySqlParser.COLON_SYMB, 0); }
		public List procedureSqlStatement() {
			return getRuleContexts(ProcedureSqlStatementContext.class);
		}
		public ProcedureSqlStatementContext procedureSqlStatement(int i) {
			return getRuleContext(ProcedureSqlStatementContext.class,i);
		}
		public RepeatStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_repeatStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterRepeatStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitRepeatStatement(this);
		}
	}

	public final RepeatStatementContext repeatStatement() throws RecognitionException {
		RepeatStatementContext _localctx = new RepeatStatementContext(_ctx, getState());
		enterRule(_localctx, 420, RULE_repeatStatement);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(5128);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,767,_ctx) ) {
			case 1:
				{
				setState(5125);
				uid();
				setState(5126);
				match(COLON_SYMB);
				}
				break;
			}
			setState(5130);
			match(REPEAT);
			setState(5132); 
			_errHandler.sync(this);
			_alt = 1;
			do {
				switch (_alt) {
				case 1:
					{
					{
					setState(5131);
					procedureSqlStatement();
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(5134); 
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,768,_ctx);
			} while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
			setState(5136);
			match(UNTIL);
			setState(5137);
			expression(0);
			setState(5138);
			match(END);
			setState(5139);
			match(REPEAT);
			setState(5141);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ARRAY) | (1L << ATTRIBUTE) | (1L << BUCKETS) | (1L << CONDITION) | (1L << CURRENT) | (1L << CURRENT_ROLE) | (1L << CURRENT_USER) | (1L << DATABASE) | (1L << DEFAULT) | (1L << DIAGNOSTICS) | (1L << EMPTY) | (1L << ENFORCED) | (1L << EXCEPT))) != 0) || ((((_la - 74)) & ~0x3f) == 0 && ((1L << (_la - 74)) & ((1L << (GROUP - 74)) | (1L << (GROUP_REPLICATION_STREAM - 74)) | (1L << (IF - 74)) | (1L << (IGNORED - 74)) | (1L << (INSERT - 74)) | (1L << (LATERAL - 74)) | (1L << (LEFT - 74)) | (1L << (LOCKED - 74)) | (1L << (MAXVALUE - 74)) | (1L << (MINVALUE - 74)) | (1L << (NUMBER - 74)) | (1L << (OPTIONAL - 74)) | (1L << (ORDER - 74)) | (1L << (PRIMARY - 74)))) != 0) || ((((_la - 142)) & ~0x3f) == 0 && ((1L << (_la - 142)) & ((1L << (REPEAT - 142)) | (1L << (REPLACE - 142)) | (1L << (RIGHT - 142)) | (1L << (SCHEMA - 142)) | (1L << (SKIP_ - 142)) | (1L << (SKIP_QUERY_REWRITE - 142)) | (1L << (STACKED - 142)) | (1L << (STATEMENT - 142)))) != 0) || ((((_la - 220)) & ~0x3f) == 0 && ((1L << (_la - 220)) & ((1L << (DATE - 220)) | (1L << (TIME - 220)) | (1L << (TIMESTAMP - 220)) | (1L << (DATETIME - 220)) | (1L << (YEAR - 220)) | (1L << (NATIONAL - 220)) | (1L << (BINARY - 220)) | (1L << (TEXT - 220)) | (1L << (ENUM - 220)) | (1L << (SERIAL - 220)) | (1L << (JSON_ARRAY - 220)) | (1L << (JSON_ARRAYAGG - 220)) | (1L << (JSON_ARRAY_APPEND - 220)) | (1L << (JSON_ARRAY_INSERT - 220)) | (1L << (JSON_CONTAINS - 220)) | (1L << (JSON_CONTAINS_PATH - 220)) | (1L << (JSON_DEPTH - 220)) | (1L << (JSON_EXTRACT - 220)) | (1L << (JSON_INSERT - 220)) | (1L << (JSON_KEYS - 220)) | (1L << (JSON_LENGTH - 220)) | (1L << (JSON_MERGE - 220)) | (1L << (JSON_MERGE_PATCH - 220)) | (1L << (JSON_MERGE_PRESERVE - 220)) | (1L << (JSON_OBJECT - 220)) | (1L << (JSON_OBJECTAGG - 220)) | (1L << (JSON_OVERLAPS - 220)) | (1L << (JSON_PRETTY - 220)) | (1L << (JSON_QUOTE - 220)) | (1L << (JSON_REMOVE - 220)) | (1L << (JSON_REPLACE - 220)) | (1L << (JSON_SCHEMA_VALID - 220)) | (1L << (JSON_SCHEMA_VALIDATION_REPORT - 220)) | (1L << (JSON_SEARCH - 220)) | (1L << (JSON_SET - 220)) | (1L << (JSON_STORAGE_FREE - 220)) | (1L << (JSON_STORAGE_SIZE - 220)) | (1L << (JSON_TABLE - 220)) | (1L << (JSON_TYPE - 220)) | (1L << (JSON_UNQUOTE - 220)))) != 0) || ((((_la - 284)) & ~0x3f) == 0 && ((1L << (_la - 284)) & ((1L << (JSON_VALID - 284)) | (1L << (JSON_VALUE - 284)) | (1L << (NESTED - 284)) | (1L << (ORDINALITY - 284)) | (1L << (PATH - 284)) | (1L << (AVG - 284)) | (1L << (BIT_AND - 284)) | (1L << (BIT_OR - 284)) | (1L << (BIT_XOR - 284)) | (1L << (COUNT - 284)) | (1L << (CUME_DIST - 284)) | (1L << (DENSE_RANK - 284)) | (1L << (FIRST_VALUE - 284)) | (1L << (GROUP_CONCAT - 284)) | (1L << (LAG - 284)) | (1L << (LAST_VALUE - 284)) | (1L << (LEAD - 284)) | (1L << (MAX - 284)) | (1L << (MIN - 284)) | (1L << (NTILE - 284)) | (1L << (NTH_VALUE - 284)) | (1L << (PERCENT_RANK - 284)) | (1L << (RANK - 284)) | (1L << (ROW_NUMBER - 284)) | (1L << (STD - 284)) | (1L << (STDDEV - 284)) | (1L << (STDDEV_POP - 284)) | (1L << (STDDEV_SAMP - 284)) | (1L << (SUM - 284)) | (1L << (VAR_POP - 284)) | (1L << (VAR_SAMP - 284)) | (1L << (VARIANCE - 284)) | (1L << (CURRENT_DATE - 284)) | (1L << (CURRENT_TIME - 284)) | (1L << (CURRENT_TIMESTAMP - 284)) | (1L << (LOCALTIME - 284)) | (1L << (CURDATE - 284)) | (1L << (CURTIME - 284)) | (1L << (DATE_ADD - 284)) | (1L << (DATE_SUB - 284)) | (1L << (LOCALTIMESTAMP - 284)) | (1L << (NOW - 284)) | (1L << (POSITION - 284)) | (1L << (SUBSTR - 284)) | (1L << (SUBSTRING - 284)) | (1L << (SYSDATE - 284)) | (1L << (TRIM - 284)) | (1L << (UTC_DATE - 284)) | (1L << (UTC_TIME - 284)) | (1L << (UTC_TIMESTAMP - 284)) | (1L << (ACCOUNT - 284)) | (1L << (ACTION - 284)) | (1L << (AFTER - 284)) | (1L << (AGGREGATE - 284)) | (1L << (ALGORITHM - 284)) | (1L << (ANY - 284)) | (1L << (AT - 284)) | (1L << (AUTHORS - 284)) | (1L << (AUTOCOMMIT - 284)) | (1L << (AUTOEXTEND_SIZE - 284)) | (1L << (AUTO_INCREMENT - 284)) | (1L << (AVG_ROW_LENGTH - 284)) | (1L << (BEGIN - 284)))) != 0) || ((((_la - 348)) & ~0x3f) == 0 && ((1L << (_la - 348)) & ((1L << (BINLOG - 348)) | (1L << (BIT - 348)) | (1L << (BLOCK - 348)) | (1L << (BOOL - 348)) | (1L << (BOOLEAN - 348)) | (1L << (BTREE - 348)) | (1L << (CACHE - 348)) | (1L << (CASCADED - 348)) | (1L << (CHAIN - 348)) | (1L << (CHANGED - 348)) | (1L << (CHANNEL - 348)) | (1L << (CHECKSUM - 348)) | (1L << (PAGE_CHECKSUM - 348)) | (1L << (CIPHER - 348)) | (1L << (CLASS_ORIGIN - 348)) | (1L << (CLIENT - 348)) | (1L << (CLOSE - 348)) | (1L << (CLUSTERING - 348)) | (1L << (COALESCE - 348)) | (1L << (CODE - 348)) | (1L << (COLUMNS - 348)) | (1L << (COLUMN_FORMAT - 348)) | (1L << (COLUMN_NAME - 348)) | (1L << (COMMENT - 348)) | (1L << (COMMIT - 348)) | (1L << (COMPACT - 348)) | (1L << (COMPLETION - 348)) | (1L << (COMPRESSED - 348)) | (1L << (COMPRESSION - 348)) | (1L << (CONCURRENT - 348)) | (1L << (CONNECT - 348)) | (1L << (CONNECTION - 348)) | (1L << (CONSISTENT - 348)) | (1L << (CONSTRAINT_CATALOG - 348)) | (1L << (CONSTRAINT_SCHEMA - 348)) | (1L << (CONSTRAINT_NAME - 348)) | (1L << (CONTAINS - 348)) | (1L << (CONTEXT - 348)) | (1L << (CONTRIBUTORS - 348)) | (1L << (COPY - 348)) | (1L << (CPU - 348)) | (1L << (CYCLE - 348)) | (1L << (CURSOR_NAME - 348)) | (1L << (DATA - 348)) | (1L << (DATAFILE - 348)) | (1L << (DEALLOCATE - 348)) | (1L << (DEFAULT_AUTH - 348)) | (1L << (DEFINER - 348)) | (1L << (DELAY_KEY_WRITE - 348)) | (1L << (DES_KEY_FILE - 348)) | (1L << (DIRECTORY - 348)) | (1L << (DISABLE - 348)) | (1L << (DISCARD - 348)) | (1L << (DISK - 348)) | (1L << (DO - 348)) | (1L << (DUMPFILE - 348)) | (1L << (DUPLICATE - 348)) | (1L << (DYNAMIC - 348)) | (1L << (ENABLE - 348)) | (1L << (ENCRYPTED - 348)) | (1L << (ENCRYPTION - 348)) | (1L << (ENCRYPTION_KEY_ID - 348)) | (1L << (END - 348)) | (1L << (ENDS - 348)))) != 0) || ((((_la - 412)) & ~0x3f) == 0 && ((1L << (_la - 412)) & ((1L << (ENGINE - 412)) | (1L << (ENGINES - 412)) | (1L << (ERROR - 412)) | (1L << (ERRORS - 412)) | (1L << (ESCAPE - 412)) | (1L << (EVEN - 412)) | (1L << (EVENT - 412)) | (1L << (EVENTS - 412)) | (1L << (EVERY - 412)) | (1L << (EXCHANGE - 412)) | (1L << (EXCLUSIVE - 412)) | (1L << (EXPIRE - 412)) | (1L << (EXPORT - 412)) | (1L << (EXTENDED - 412)) | (1L << (EXTENT_SIZE - 412)) | (1L << (FAILED_LOGIN_ATTEMPTS - 412)) | (1L << (FAST - 412)) | (1L << (FAULTS - 412)) | (1L << (FIELDS - 412)) | (1L << (FILE_BLOCK_SIZE - 412)) | (1L << (FILTER - 412)) | (1L << (FIRST - 412)) | (1L << (FIXED - 412)) | (1L << (FLUSH - 412)) | (1L << (FOLLOWS - 412)) | (1L << (FOUND - 412)) | (1L << (FULL - 412)) | (1L << (FUNCTION - 412)) | (1L << (GENERAL - 412)) | (1L << (GLOBAL - 412)) | (1L << (GRANTS - 412)) | (1L << (GROUP_REPLICATION - 412)) | (1L << (HANDLER - 412)) | (1L << (HASH - 412)) | (1L << (HELP - 412)) | (1L << (HISTORY - 412)) | (1L << (HOST - 412)) | (1L << (HOSTS - 412)) | (1L << (IDENTIFIED - 412)) | (1L << (IGNORE_SERVER_IDS - 412)) | (1L << (IMPORT - 412)) | (1L << (INCREMENT - 412)) | (1L << (INDEXES - 412)) | (1L << (INITIAL_SIZE - 412)) | (1L << (INPLACE - 412)) | (1L << (INSERT_METHOD - 412)) | (1L << (INSTALL - 412)) | (1L << (INSTANCE - 412)) | (1L << (INSTANT - 412)) | (1L << (INVISIBLE - 412)) | (1L << (INVOKER - 412)) | (1L << (IO - 412)) | (1L << (IO_THREAD - 412)) | (1L << (IPC - 412)) | (1L << (ISOLATION - 412)) | (1L << (ISSUER - 412)) | (1L << (JSON - 412)) | (1L << (KEY_BLOCK_SIZE - 412)) | (1L << (LANGUAGE - 412)) | (1L << (LAST - 412)) | (1L << (LEAVES - 412)) | (1L << (LESS - 412)) | (1L << (LEVEL - 412)))) != 0) || ((((_la - 476)) & ~0x3f) == 0 && ((1L << (_la - 476)) & ((1L << (LIST - 476)) | (1L << (LOCAL - 476)) | (1L << (LOGFILE - 476)) | (1L << (LOGS - 476)) | (1L << (MASTER - 476)) | (1L << (MASTER_AUTO_POSITION - 476)) | (1L << (MASTER_CONNECT_RETRY - 476)) | (1L << (MASTER_DELAY - 476)) | (1L << (MASTER_HEARTBEAT_PERIOD - 476)) | (1L << (MASTER_HOST - 476)) | (1L << (MASTER_LOG_FILE - 476)) | (1L << (MASTER_LOG_POS - 476)) | (1L << (MASTER_PASSWORD - 476)) | (1L << (MASTER_PORT - 476)) | (1L << (MASTER_RETRY_COUNT - 476)) | (1L << (MASTER_SSL - 476)) | (1L << (MASTER_SSL_CA - 476)) | (1L << (MASTER_SSL_CAPATH - 476)) | (1L << (MASTER_SSL_CERT - 476)) | (1L << (MASTER_SSL_CIPHER - 476)) | (1L << (MASTER_SSL_CRL - 476)) | (1L << (MASTER_SSL_CRLPATH - 476)) | (1L << (MASTER_SSL_KEY - 476)) | (1L << (MASTER_TLS_VERSION - 476)) | (1L << (MASTER_USER - 476)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 476)) | (1L << (MAX_QUERIES_PER_HOUR - 476)) | (1L << (MAX_ROWS - 476)) | (1L << (MAX_SIZE - 476)) | (1L << (MAX_UPDATES_PER_HOUR - 476)) | (1L << (MAX_USER_CONNECTIONS - 476)) | (1L << (MEDIUM - 476)) | (1L << (MEMBER - 476)) | (1L << (MERGE - 476)) | (1L << (MESSAGE_TEXT - 476)) | (1L << (MID - 476)) | (1L << (MIGRATE - 476)) | (1L << (MIN_ROWS - 476)) | (1L << (MODE - 476)) | (1L << (MODIFY - 476)) | (1L << (MUTEX - 476)) | (1L << (MYSQL - 476)) | (1L << (MYSQL_ERRNO - 476)) | (1L << (NAME - 476)) | (1L << (NAMES - 476)) | (1L << (NCHAR - 476)) | (1L << (NEVER - 476)) | (1L << (NEXT - 476)) | (1L << (NO - 476)) | (1L << (NOCACHE - 476)) | (1L << (NOCOPY - 476)) | (1L << (NOCYCLE - 476)) | (1L << (NOMAXVALUE - 476)) | (1L << (NOMINVALUE - 476)) | (1L << (NOWAIT - 476)) | (1L << (NODEGROUP - 476)) | (1L << (NONE - 476)) | (1L << (ODBC - 476)) | (1L << (OFFLINE - 476)) | (1L << (OFFSET - 476)) | (1L << (OF - 476)) | (1L << (OJ - 476)) | (1L << (OLD_PASSWORD - 476)) | (1L << (ONE - 476)))) != 0) || ((((_la - 540)) & ~0x3f) == 0 && ((1L << (_la - 540)) & ((1L << (ONLINE - 540)) | (1L << (ONLY - 540)) | (1L << (OPEN - 540)) | (1L << (OPTIMIZER_COSTS - 540)) | (1L << (OPTIONS - 540)) | (1L << (OWNER - 540)) | (1L << (PACK_KEYS - 540)) | (1L << (PAGE - 540)) | (1L << (PARSER - 540)) | (1L << (PARTIAL - 540)) | (1L << (PARTITIONING - 540)) | (1L << (PARTITIONS - 540)) | (1L << (PASSWORD - 540)) | (1L << (PASSWORD_LOCK_TIME - 540)) | (1L << (PHASE - 540)) | (1L << (PLUGIN - 540)) | (1L << (PLUGIN_DIR - 540)) | (1L << (PLUGINS - 540)) | (1L << (PORT - 540)) | (1L << (PRECEDES - 540)) | (1L << (PREPARE - 540)) | (1L << (PRESERVE - 540)) | (1L << (PREV - 540)) | (1L << (PROCESSLIST - 540)) | (1L << (PROFILE - 540)) | (1L << (PROFILES - 540)) | (1L << (PROXY - 540)) | (1L << (QUERY - 540)) | (1L << (QUICK - 540)) | (1L << (REBUILD - 540)) | (1L << (RECOVER - 540)) | (1L << (RECURSIVE - 540)) | (1L << (REDO_BUFFER_SIZE - 540)) | (1L << (REDUNDANT - 540)) | (1L << (RELAY - 540)) | (1L << (RELAY_LOG_FILE - 540)) | (1L << (RELAY_LOG_POS - 540)) | (1L << (RELAYLOG - 540)) | (1L << (REMOVE - 540)) | (1L << (REORGANIZE - 540)) | (1L << (REPAIR - 540)) | (1L << (REPLICATE_DO_DB - 540)) | (1L << (REPLICATE_DO_TABLE - 540)) | (1L << (REPLICATE_IGNORE_DB - 540)) | (1L << (REPLICATE_IGNORE_TABLE - 540)) | (1L << (REPLICATE_REWRITE_DB - 540)) | (1L << (REPLICATE_WILD_DO_TABLE - 540)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 540)) | (1L << (REPLICATION - 540)) | (1L << (RESET - 540)) | (1L << (RESTART - 540)) | (1L << (RESUME - 540)) | (1L << (RETURNED_SQLSTATE - 540)) | (1L << (RETURNING - 540)) | (1L << (RETURNS - 540)) | (1L << (REUSE - 540)) | (1L << (ROLE - 540)) | (1L << (ROLLBACK - 540)) | (1L << (ROLLUP - 540)) | (1L << (ROTATE - 540)) | (1L << (ROW - 540)))) != 0) || ((((_la - 604)) & ~0x3f) == 0 && ((1L << (_la - 604)) & ((1L << (ROWS - 604)) | (1L << (ROW_FORMAT - 604)) | (1L << (RTREE - 604)) | (1L << (SAVEPOINT - 604)) | (1L << (SCHEDULE - 604)) | (1L << (SECURITY - 604)) | (1L << (SEQUENCE - 604)) | (1L << (SERVER - 604)) | (1L << (SESSION - 604)) | (1L << (SHARE - 604)) | (1L << (SHARED - 604)) | (1L << (SIGNED - 604)) | (1L << (SIMPLE - 604)) | (1L << (SLAVE - 604)) | (1L << (SLOW - 604)) | (1L << (SNAPSHOT - 604)) | (1L << (SOCKET - 604)) | (1L << (SOME - 604)) | (1L << (SONAME - 604)) | (1L << (SOUNDS - 604)) | (1L << (SOURCE - 604)) | (1L << (SQL_AFTER_GTIDS - 604)) | (1L << (SQL_AFTER_MTS_GAPS - 604)) | (1L << (SQL_BEFORE_GTIDS - 604)) | (1L << (SQL_BUFFER_RESULT - 604)) | (1L << (SQL_CACHE - 604)) | (1L << (SQL_NO_CACHE - 604)) | (1L << (SQL_THREAD - 604)) | (1L << (START - 604)) | (1L << (STARTS - 604)) | (1L << (STATS_AUTO_RECALC - 604)) | (1L << (STATS_PERSISTENT - 604)) | (1L << (STATS_SAMPLE_PAGES - 604)) | (1L << (STATUS - 604)) | (1L << (STOP - 604)) | (1L << (STORAGE - 604)) | (1L << (STRING - 604)) | (1L << (SUBCLASS_ORIGIN - 604)) | (1L << (SUBJECT - 604)) | (1L << (SUBPARTITION - 604)) | (1L << (SUBPARTITIONS - 604)) | (1L << (SUSPEND - 604)) | (1L << (SWAPS - 604)) | (1L << (SWITCHES - 604)) | (1L << (TABLE_NAME - 604)) | (1L << (TABLESPACE - 604)) | (1L << (TABLE_TYPE - 604)) | (1L << (TEMPORARY - 604)) | (1L << (TEMPTABLE - 604)) | (1L << (THAN - 604)) | (1L << (TRADITIONAL - 604)) | (1L << (TRANSACTION - 604)) | (1L << (TRANSACTIONAL - 604)) | (1L << (TRIGGERS - 604)) | (1L << (TRUNCATE - 604)) | (1L << (UNBOUNDED - 604)) | (1L << (UNDEFINED - 604)) | (1L << (UNDOFILE - 604)) | (1L << (UNDO_BUFFER_SIZE - 604)) | (1L << (UNINSTALL - 604)) | (1L << (UNKNOWN - 604)) | (1L << (UNTIL - 604)) | (1L << (UPGRADE - 604)))) != 0) || ((((_la - 668)) & ~0x3f) == 0 && ((1L << (_la - 668)) & ((1L << (USER - 668)) | (1L << (USE_FRM - 668)) | (1L << (USER_RESOURCES - 668)) | (1L << (VALIDATION - 668)) | (1L << (VALUE - 668)) | (1L << (VARIABLES - 668)) | (1L << (VIEW - 668)) | (1L << (VIRTUAL - 668)) | (1L << (VISIBLE - 668)) | (1L << (WAIT - 668)) | (1L << (WARNINGS - 668)) | (1L << (WITHOUT - 668)) | (1L << (WORK - 668)) | (1L << (WRAPPER - 668)) | (1L << (X509 - 668)) | (1L << (XA - 668)) | (1L << (XML - 668)) | (1L << (YES - 668)) | (1L << (EUR - 668)) | (1L << (USA - 668)) | (1L << (JIS - 668)) | (1L << (ISO - 668)) | (1L << (INTERNAL - 668)) | (1L << (QUARTER - 668)) | (1L << (MONTH - 668)) | (1L << (DAY - 668)) | (1L << (HOUR - 668)) | (1L << (MINUTE - 668)) | (1L << (WEEK - 668)) | (1L << (SECOND - 668)) | (1L << (MICROSECOND - 668)) | (1L << (USER_STATISTICS - 668)) | (1L << (CLIENT_STATISTICS - 668)) | (1L << (INDEX_STATISTICS - 668)) | (1L << (TABLE_STATISTICS - 668)) | (1L << (FIREWALL_RULES - 668)) | (1L << (ADMIN - 668)) | (1L << (APPLICATION_PASSWORD_ADMIN - 668)) | (1L << (AUDIT_ADMIN - 668)) | (1L << (AUDIT_ABORT_EXEMPT - 668)) | (1L << (AUTHENTICATION_POLICY_ADMIN - 668)) | (1L << (BACKUP_ADMIN - 668)) | (1L << (BINLOG_ADMIN - 668)) | (1L << (BINLOG_ENCRYPTION_ADMIN - 668)) | (1L << (CLONE_ADMIN - 668)) | (1L << (CONNECTION_ADMIN - 668)) | (1L << (ENCRYPTION_KEY_ADMIN - 668)) | (1L << (EXECUTE - 668)) | (1L << (FILE - 668)) | (1L << (FIREWALL_ADMIN - 668)) | (1L << (FIREWALL_EXEMPT - 668)) | (1L << (FIREWALL_USER - 668)) | (1L << (FLUSH_OPTIMIZER_COSTS - 668)) | (1L << (FLUSH_STATUS - 668)) | (1L << (FLUSH_TABLES - 668)) | (1L << (FLUSH_USER_RESOURCES - 668)) | (1L << (GROUP_REPLICATION_ADMIN - 668)) | (1L << (INNODB_REDO_LOG_ARCHIVE - 668)) | (1L << (INNODB_REDO_LOG_ENABLE - 668)) | (1L << (INVOKE - 668)) | (1L << (LAMBDA - 668)) | (1L << (NDB_STORED_USER - 668)) | (1L << (PASSWORDLESS_USER_ADMIN - 668)))) != 0) || ((((_la - 732)) & ~0x3f) == 0 && ((1L << (_la - 732)) & ((1L << (PERSIST_RO_VARIABLES_ADMIN - 732)) | (1L << (PRIVILEGES - 732)) | (1L << (PROCESS - 732)) | (1L << (RELOAD - 732)) | (1L << (REPLICATION_APPLIER - 732)) | (1L << (REPLICATION_SLAVE_ADMIN - 732)) | (1L << (RESOURCE_GROUP_ADMIN - 732)) | (1L << (RESOURCE_GROUP_USER - 732)) | (1L << (ROLE_ADMIN - 732)) | (1L << (ROUTINE - 732)) | (1L << (S3 - 732)) | (1L << (SESSION_VARIABLES_ADMIN - 732)) | (1L << (SET_USER_ID - 732)) | (1L << (SHOW_ROUTINE - 732)) | (1L << (SHUTDOWN - 732)) | (1L << (SUPER - 732)) | (1L << (SYSTEM_VARIABLES_ADMIN - 732)) | (1L << (TABLES - 732)) | (1L << (TABLE_ENCRYPTION_ADMIN - 732)) | (1L << (VERSION_TOKEN_ADMIN - 732)) | (1L << (XA_RECOVER_ADMIN - 732)) | (1L << (ARMSCII8 - 732)) | (1L << (ASCII - 732)) | (1L << (BIG5 - 732)) | (1L << (CP1250 - 732)) | (1L << (CP1251 - 732)) | (1L << (CP1256 - 732)) | (1L << (CP1257 - 732)) | (1L << (CP850 - 732)) | (1L << (CP852 - 732)) | (1L << (CP866 - 732)) | (1L << (CP932 - 732)) | (1L << (DEC8 - 732)) | (1L << (EUCJPMS - 732)) | (1L << (EUCKR - 732)) | (1L << (GB18030 - 732)) | (1L << (GB2312 - 732)) | (1L << (GBK - 732)) | (1L << (GEOSTD8 - 732)) | (1L << (GREEK - 732)) | (1L << (HEBREW - 732)) | (1L << (HP8 - 732)) | (1L << (KEYBCS2 - 732)) | (1L << (KOI8R - 732)) | (1L << (KOI8U - 732)) | (1L << (LATIN1 - 732)) | (1L << (LATIN2 - 732)) | (1L << (LATIN5 - 732)) | (1L << (LATIN7 - 732)) | (1L << (MACCE - 732)) | (1L << (MACROMAN - 732)) | (1L << (SJIS - 732)) | (1L << (SWE7 - 732)) | (1L << (TIS620 - 732)) | (1L << (UCS2 - 732)) | (1L << (UJIS - 732)) | (1L << (UTF16 - 732)) | (1L << (UTF16LE - 732)) | (1L << (UTF32 - 732)) | (1L << (UTF8 - 732)) | (1L << (UTF8MB3 - 732)) | (1L << (UTF8MB4 - 732)) | (1L << (ARCHIVE - 732)))) != 0) || ((((_la - 796)) & ~0x3f) == 0 && ((1L << (_la - 796)) & ((1L << (BLACKHOLE - 796)) | (1L << (CSV - 796)) | (1L << (FEDERATED - 796)) | (1L << (INNODB - 796)) | (1L << (MEMORY - 796)) | (1L << (MRG_MYISAM - 796)) | (1L << (MYISAM - 796)) | (1L << (NDB - 796)) | (1L << (NDBCLUSTER - 796)) | (1L << (PERFORMANCE_SCHEMA - 796)) | (1L << (TOKUDB - 796)) | (1L << (REPEATABLE - 796)) | (1L << (COMMITTED - 796)) | (1L << (UNCOMMITTED - 796)) | (1L << (SERIALIZABLE - 796)) | (1L << (GEOMETRYCOLLECTION - 796)) | (1L << (GEOMETRY - 796)) | (1L << (LINESTRING - 796)) | (1L << (MULTILINESTRING - 796)) | (1L << (MULTIPOINT - 796)) | (1L << (MULTIPOLYGON - 796)) | (1L << (POINT - 796)) | (1L << (POLYGON - 796)) | (1L << (ABS - 796)) | (1L << (ACOS - 796)) | (1L << (ADDDATE - 796)) | (1L << (ADDTIME - 796)) | (1L << (AES_DECRYPT - 796)) | (1L << (AES_ENCRYPT - 796)) | (1L << (AREA - 796)) | (1L << (ASBINARY - 796)) | (1L << (ASIN - 796)) | (1L << (ASTEXT - 796)) | (1L << (ASWKB - 796)) | (1L << (ASWKT - 796)) | (1L << (ASYMMETRIC_DECRYPT - 796)) | (1L << (ASYMMETRIC_DERIVE - 796)) | (1L << (ASYMMETRIC_ENCRYPT - 796)) | (1L << (ASYMMETRIC_SIGN - 796)) | (1L << (ASYMMETRIC_VERIFY - 796)) | (1L << (ATAN - 796)) | (1L << (ATAN2 - 796)) | (1L << (BENCHMARK - 796)) | (1L << (BIN - 796)) | (1L << (BIT_COUNT - 796)) | (1L << (BIT_LENGTH - 796)) | (1L << (BUFFER - 796)) | (1L << (CATALOG_NAME - 796)) | (1L << (CEIL - 796)) | (1L << (CEILING - 796)) | (1L << (CENTROID - 796)) | (1L << (CHARACTER_LENGTH - 796)) | (1L << (CHARSET - 796)) | (1L << (CHAR_LENGTH - 796)) | (1L << (COERCIBILITY - 796)) | (1L << (COLLATION - 796)) | (1L << (COMPRESS - 796)) | (1L << (CONCAT - 796)) | (1L << (CONCAT_WS - 796)) | (1L << (CONNECTION_ID - 796)) | (1L << (CONV - 796)) | (1L << (CONVERT_TZ - 796)) | (1L << (COS - 796)))) != 0) || ((((_la - 860)) & ~0x3f) == 0 && ((1L << (_la - 860)) & ((1L << (COT - 860)) | (1L << (CRC32 - 860)) | (1L << (CREATE_ASYMMETRIC_PRIV_KEY - 860)) | (1L << (CREATE_ASYMMETRIC_PUB_KEY - 860)) | (1L << (CREATE_DH_PARAMETERS - 860)) | (1L << (CREATE_DIGEST - 860)) | (1L << (CROSSES - 860)) | (1L << (DATEDIFF - 860)) | (1L << (DATE_FORMAT - 860)) | (1L << (DAYNAME - 860)) | (1L << (DAYOFMONTH - 860)) | (1L << (DAYOFWEEK - 860)) | (1L << (DAYOFYEAR - 860)) | (1L << (DECODE - 860)) | (1L << (DEGREES - 860)) | (1L << (DES_DECRYPT - 860)) | (1L << (DES_ENCRYPT - 860)) | (1L << (DIMENSION - 860)) | (1L << (DISJOINT - 860)) | (1L << (ELT - 860)) | (1L << (ENCODE - 860)) | (1L << (ENCRYPT - 860)) | (1L << (ENDPOINT - 860)) | (1L << (ENGINE_ATTRIBUTE - 860)) | (1L << (ENVELOPE - 860)) | (1L << (EQUALS - 860)) | (1L << (EXP - 860)) | (1L << (EXPORT_SET - 860)) | (1L << (EXTERIORRING - 860)) | (1L << (EXTRACTVALUE - 860)) | (1L << (FIELD - 860)) | (1L << (FIND_IN_SET - 860)) | (1L << (FLOOR - 860)) | (1L << (FORMAT - 860)) | (1L << (FOUND_ROWS - 860)) | (1L << (FROM_BASE64 - 860)) | (1L << (FROM_DAYS - 860)) | (1L << (FROM_UNIXTIME - 860)) | (1L << (GEOMCOLLFROMTEXT - 860)) | (1L << (GEOMCOLLFROMWKB - 860)) | (1L << (GEOMETRYCOLLECTIONFROMTEXT - 860)) | (1L << (GEOMETRYCOLLECTIONFROMWKB - 860)) | (1L << (GEOMETRYFROMTEXT - 860)) | (1L << (GEOMETRYFROMWKB - 860)) | (1L << (GEOMETRYN - 860)) | (1L << (GEOMETRYTYPE - 860)) | (1L << (GEOMFROMTEXT - 860)) | (1L << (GEOMFROMWKB - 860)) | (1L << (GET_FORMAT - 860)) | (1L << (GET_LOCK - 860)) | (1L << (GLENGTH - 860)) | (1L << (GREATEST - 860)) | (1L << (GTID_SUBSET - 860)) | (1L << (GTID_SUBTRACT - 860)) | (1L << (HEX - 860)) | (1L << (IFNULL - 860)) | (1L << (INET6_ATON - 860)) | (1L << (INET6_NTOA - 860)) | (1L << (INET_ATON - 860)) | (1L << (INET_NTOA - 860)) | (1L << (INSTR - 860)) | (1L << (INTERIORRINGN - 860)) | (1L << (INTERSECTS - 860)) | (1L << (ISCLOSED - 860)))) != 0) || ((((_la - 924)) & ~0x3f) == 0 && ((1L << (_la - 924)) & ((1L << (ISEMPTY - 924)) | (1L << (ISNULL - 924)) | (1L << (ISSIMPLE - 924)) | (1L << (IS_FREE_LOCK - 924)) | (1L << (IS_IPV4 - 924)) | (1L << (IS_IPV4_COMPAT - 924)) | (1L << (IS_IPV4_MAPPED - 924)) | (1L << (IS_IPV6 - 924)) | (1L << (IS_USED_LOCK - 924)) | (1L << (LAST_INSERT_ID - 924)) | (1L << (LCASE - 924)) | (1L << (LEAST - 924)) | (1L << (LENGTH - 924)) | (1L << (LINEFROMTEXT - 924)) | (1L << (LINEFROMWKB - 924)) | (1L << (LINESTRINGFROMTEXT - 924)) | (1L << (LINESTRINGFROMWKB - 924)) | (1L << (LN - 924)) | (1L << (LOAD_FILE - 924)) | (1L << (LOCATE - 924)) | (1L << (LOG - 924)) | (1L << (LOG10 - 924)) | (1L << (LOG2 - 924)) | (1L << (LOWER - 924)) | (1L << (LPAD - 924)) | (1L << (LTRIM - 924)) | (1L << (MAKEDATE - 924)) | (1L << (MAKETIME - 924)) | (1L << (MAKE_SET - 924)) | (1L << (MASTER_POS_WAIT - 924)) | (1L << (MBRCONTAINS - 924)) | (1L << (MBRDISJOINT - 924)) | (1L << (MBREQUAL - 924)) | (1L << (MBRINTERSECTS - 924)) | (1L << (MBROVERLAPS - 924)) | (1L << (MBRTOUCHES - 924)) | (1L << (MBRWITHIN - 924)) | (1L << (MD5 - 924)) | (1L << (MLINEFROMTEXT - 924)) | (1L << (MLINEFROMWKB - 924)) | (1L << (MONTHNAME - 924)) | (1L << (MPOINTFROMTEXT - 924)) | (1L << (MPOINTFROMWKB - 924)) | (1L << (MPOLYFROMTEXT - 924)) | (1L << (MPOLYFROMWKB - 924)) | (1L << (MULTILINESTRINGFROMTEXT - 924)) | (1L << (MULTILINESTRINGFROMWKB - 924)) | (1L << (MULTIPOINTFROMTEXT - 924)) | (1L << (MULTIPOINTFROMWKB - 924)) | (1L << (MULTIPOLYGONFROMTEXT - 924)) | (1L << (MULTIPOLYGONFROMWKB - 924)) | (1L << (NAME_CONST - 924)) | (1L << (NULLIF - 924)) | (1L << (NUMGEOMETRIES - 924)) | (1L << (NUMINTERIORRINGS - 924)) | (1L << (NUMPOINTS - 924)) | (1L << (OCT - 924)) | (1L << (OCTET_LENGTH - 924)) | (1L << (ORD - 924)) | (1L << (OVERLAPS - 924)) | (1L << (PERIOD_ADD - 924)) | (1L << (PERIOD_DIFF - 924)) | (1L << (PI - 924)) | (1L << (POINTFROMTEXT - 924)))) != 0) || ((((_la - 988)) & ~0x3f) == 0 && ((1L << (_la - 988)) & ((1L << (POINTFROMWKB - 988)) | (1L << (POINTN - 988)) | (1L << (POLYFROMTEXT - 988)) | (1L << (POLYFROMWKB - 988)) | (1L << (POLYGONFROMTEXT - 988)) | (1L << (POLYGONFROMWKB - 988)) | (1L << (POW - 988)) | (1L << (POWER - 988)) | (1L << (QUOTE - 988)) | (1L << (RADIANS - 988)) | (1L << (RAND - 988)) | (1L << (RANDOM - 988)) | (1L << (RANDOM_BYTES - 988)) | (1L << (RELEASE_LOCK - 988)) | (1L << (REVERSE - 988)) | (1L << (ROUND - 988)) | (1L << (ROW_COUNT - 988)) | (1L << (RPAD - 988)) | (1L << (RTRIM - 988)) | (1L << (SEC_TO_TIME - 988)) | (1L << (SECONDARY_ENGINE_ATTRIBUTE - 988)) | (1L << (SENSITIVE_VARIABLES_OBSERVER - 988)) | (1L << (SESSION_USER - 988)) | (1L << (SHA - 988)) | (1L << (SHA1 - 988)) | (1L << (SHA2 - 988)) | (1L << (SCHEMA_NAME - 988)) | (1L << (SIGN - 988)) | (1L << (SIN - 988)) | (1L << (SLEEP - 988)) | (1L << (SOUNDEX - 988)) | (1L << (SQL_THREAD_WAIT_AFTER_GTIDS - 988)) | (1L << (SQRT - 988)) | (1L << (SRID - 988)) | (1L << (STARTPOINT - 988)) | (1L << (STRCMP - 988)) | (1L << (STR_TO_DATE - 988)) | (1L << (ST_AREA - 988)) | (1L << (ST_ASBINARY - 988)) | (1L << (ST_ASTEXT - 988)) | (1L << (ST_ASWKB - 988)) | (1L << (ST_ASWKT - 988)) | (1L << (ST_BUFFER - 988)) | (1L << (ST_CENTROID - 988)) | (1L << (ST_CONTAINS - 988)) | (1L << (ST_CROSSES - 988)) | (1L << (ST_DIFFERENCE - 988)) | (1L << (ST_DIMENSION - 988)) | (1L << (ST_DISJOINT - 988)) | (1L << (ST_DISTANCE - 988)) | (1L << (ST_ENDPOINT - 988)) | (1L << (ST_ENVELOPE - 988)) | (1L << (ST_EQUALS - 988)) | (1L << (ST_EXTERIORRING - 988)) | (1L << (ST_GEOMCOLLFROMTEXT - 988)) | (1L << (ST_GEOMCOLLFROMTXT - 988)) | (1L << (ST_GEOMCOLLFROMWKB - 988)) | (1L << (ST_GEOMETRYCOLLECTIONFROMTEXT - 988)) | (1L << (ST_GEOMETRYCOLLECTIONFROMWKB - 988)) | (1L << (ST_GEOMETRYFROMTEXT - 988)) | (1L << (ST_GEOMETRYFROMWKB - 988)) | (1L << (ST_GEOMETRYN - 988)) | (1L << (ST_GEOMETRYTYPE - 988)) | (1L << (ST_GEOMFROMTEXT - 988)))) != 0) || ((((_la - 1052)) & ~0x3f) == 0 && ((1L << (_la - 1052)) & ((1L << (ST_GEOMFROMWKB - 1052)) | (1L << (ST_INTERIORRINGN - 1052)) | (1L << (ST_INTERSECTION - 1052)) | (1L << (ST_INTERSECTS - 1052)) | (1L << (ST_ISCLOSED - 1052)) | (1L << (ST_ISEMPTY - 1052)) | (1L << (ST_ISSIMPLE - 1052)) | (1L << (ST_LINEFROMTEXT - 1052)) | (1L << (ST_LINEFROMWKB - 1052)) | (1L << (ST_LINESTRINGFROMTEXT - 1052)) | (1L << (ST_LINESTRINGFROMWKB - 1052)) | (1L << (ST_NUMGEOMETRIES - 1052)) | (1L << (ST_NUMINTERIORRING - 1052)) | (1L << (ST_NUMINTERIORRINGS - 1052)) | (1L << (ST_NUMPOINTS - 1052)) | (1L << (ST_OVERLAPS - 1052)) | (1L << (ST_POINTFROMTEXT - 1052)) | (1L << (ST_POINTFROMWKB - 1052)) | (1L << (ST_POINTN - 1052)) | (1L << (ST_POLYFROMTEXT - 1052)) | (1L << (ST_POLYFROMWKB - 1052)) | (1L << (ST_POLYGONFROMTEXT - 1052)) | (1L << (ST_POLYGONFROMWKB - 1052)) | (1L << (ST_SRID - 1052)) | (1L << (ST_STARTPOINT - 1052)) | (1L << (ST_SYMDIFFERENCE - 1052)) | (1L << (ST_TOUCHES - 1052)) | (1L << (ST_UNION - 1052)) | (1L << (ST_WITHIN - 1052)) | (1L << (ST_X - 1052)) | (1L << (ST_Y - 1052)) | (1L << (SUBDATE - 1052)) | (1L << (SUBSTRING_INDEX - 1052)) | (1L << (SUBTIME - 1052)) | (1L << (SYSTEM_USER - 1052)) | (1L << (SYSTEM - 1052)) | (1L << (TAN - 1052)) | (1L << (TELEMETRY_LOG_ADMIN - 1052)) | (1L << (TIMEDIFF - 1052)) | (1L << (TIMESTAMPADD - 1052)) | (1L << (TIMESTAMPDIFF - 1052)) | (1L << (TIME_FORMAT - 1052)) | (1L << (TIME_TO_SEC - 1052)) | (1L << (TOUCHES - 1052)) | (1L << (TO_BASE64 - 1052)) | (1L << (TO_DAYS - 1052)) | (1L << (TO_SECONDS - 1052)) | (1L << (TP_CONNECTION_ADMIN - 1052)) | (1L << (UCASE - 1052)) | (1L << (UNCOMPRESS - 1052)) | (1L << (UNCOMPRESSED_LENGTH - 1052)) | (1L << (UNHEX - 1052)) | (1L << (UNIX_TIMESTAMP - 1052)) | (1L << (UPDATEXML - 1052)) | (1L << (UPPER - 1052)) | (1L << (UUID - 1052)) | (1L << (UUID_SHORT - 1052)) | (1L << (VALIDATE_PASSWORD_STRENGTH - 1052)) | (1L << (VERSION - 1052)) | (1L << (VERSIONING - 1052)) | (1L << (WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS - 1052)) | (1L << (WEEKDAY - 1052)) | (1L << (WEEKOFYEAR - 1052)) | (1L << (WEIGHT_STRING - 1052)))) != 0) || ((((_la - 1116)) & ~0x3f) == 0 && ((1L << (_la - 1116)) & ((1L << (WITHIN - 1116)) | (1L << (YEARWEEK - 1116)) | (1L << (Y_FUNCTION - 1116)) | (1L << (X_FUNCTION - 1116)) | (1L << (VIA - 1116)) | (1L << (LASTVAL - 1116)) | (1L << (NEXTVAL - 1116)) | (1L << (SETVAL - 1116)) | (1L << (PREVIOUS - 1116)) | (1L << (PERSISTENT - 1116)) | (1L << (BINLOG_MONITOR - 1116)) | (1L << (BINLOG_REPLAY - 1116)) | (1L << (FEDERATED_ADMIN - 1116)) | (1L << (READ_ONLY_ADMIN - 1116)) | (1L << (REPLICA - 1116)) | (1L << (REPLICATION_MASTER_ADMIN - 1116)) | (1L << (MONITOR - 1116)) | (1L << (READ_ONLY - 1116)) | (1L << (REPLAY - 1116)) | (1L << (MOD - 1116)) | (1L << (CHARSET_REVERSE_QOUTE_STRING - 1116)) | (1L << (STRING_LITERAL - 1116)))) != 0) || _la==ID) {
				{
				setState(5140);
				uid();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ReturnStatementContext extends ParserRuleContext {
		public TerminalNode RETURN() { return getToken(MySqlParser.RETURN, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public ReturnStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_returnStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterReturnStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitReturnStatement(this);
		}
	}

	public final ReturnStatementContext returnStatement() throws RecognitionException {
		ReturnStatementContext _localctx = new ReturnStatementContext(_ctx, getState());
		enterRule(_localctx, 422, RULE_returnStatement);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5143);
			match(RETURN);
			setState(5144);
			expression(0);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class WhileStatementContext extends ParserRuleContext {
		public List WHILE() { return getTokens(MySqlParser.WHILE); }
		public TerminalNode WHILE(int i) {
			return getToken(MySqlParser.WHILE, i);
		}
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode DO() { return getToken(MySqlParser.DO, 0); }
		public TerminalNode END() { return getToken(MySqlParser.END, 0); }
		public List uid() {
			return getRuleContexts(UidContext.class);
		}
		public UidContext uid(int i) {
			return getRuleContext(UidContext.class,i);
		}
		public TerminalNode COLON_SYMB() { return getToken(MySqlParser.COLON_SYMB, 0); }
		public List procedureSqlStatement() {
			return getRuleContexts(ProcedureSqlStatementContext.class);
		}
		public ProcedureSqlStatementContext procedureSqlStatement(int i) {
			return getRuleContext(ProcedureSqlStatementContext.class,i);
		}
		public WhileStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_whileStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterWhileStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitWhileStatement(this);
		}
	}

	public final WhileStatementContext whileStatement() throws RecognitionException {
		WhileStatementContext _localctx = new WhileStatementContext(_ctx, getState());
		enterRule(_localctx, 424, RULE_whileStatement);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(5149);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ARRAY) | (1L << ATTRIBUTE) | (1L << BUCKETS) | (1L << CONDITION) | (1L << CURRENT) | (1L << CURRENT_ROLE) | (1L << CURRENT_USER) | (1L << DATABASE) | (1L << DEFAULT) | (1L << DIAGNOSTICS) | (1L << EMPTY) | (1L << ENFORCED) | (1L << EXCEPT))) != 0) || ((((_la - 74)) & ~0x3f) == 0 && ((1L << (_la - 74)) & ((1L << (GROUP - 74)) | (1L << (GROUP_REPLICATION_STREAM - 74)) | (1L << (IF - 74)) | (1L << (IGNORED - 74)) | (1L << (INSERT - 74)) | (1L << (LATERAL - 74)) | (1L << (LEFT - 74)) | (1L << (LOCKED - 74)) | (1L << (MAXVALUE - 74)) | (1L << (MINVALUE - 74)) | (1L << (NUMBER - 74)) | (1L << (OPTIONAL - 74)) | (1L << (ORDER - 74)) | (1L << (PRIMARY - 74)))) != 0) || ((((_la - 142)) & ~0x3f) == 0 && ((1L << (_la - 142)) & ((1L << (REPEAT - 142)) | (1L << (REPLACE - 142)) | (1L << (RIGHT - 142)) | (1L << (SCHEMA - 142)) | (1L << (SKIP_ - 142)) | (1L << (SKIP_QUERY_REWRITE - 142)) | (1L << (STACKED - 142)) | (1L << (STATEMENT - 142)))) != 0) || ((((_la - 220)) & ~0x3f) == 0 && ((1L << (_la - 220)) & ((1L << (DATE - 220)) | (1L << (TIME - 220)) | (1L << (TIMESTAMP - 220)) | (1L << (DATETIME - 220)) | (1L << (YEAR - 220)) | (1L << (NATIONAL - 220)) | (1L << (BINARY - 220)) | (1L << (TEXT - 220)) | (1L << (ENUM - 220)) | (1L << (SERIAL - 220)) | (1L << (JSON_ARRAY - 220)) | (1L << (JSON_ARRAYAGG - 220)) | (1L << (JSON_ARRAY_APPEND - 220)) | (1L << (JSON_ARRAY_INSERT - 220)) | (1L << (JSON_CONTAINS - 220)) | (1L << (JSON_CONTAINS_PATH - 220)) | (1L << (JSON_DEPTH - 220)) | (1L << (JSON_EXTRACT - 220)) | (1L << (JSON_INSERT - 220)) | (1L << (JSON_KEYS - 220)) | (1L << (JSON_LENGTH - 220)) | (1L << (JSON_MERGE - 220)) | (1L << (JSON_MERGE_PATCH - 220)) | (1L << (JSON_MERGE_PRESERVE - 220)) | (1L << (JSON_OBJECT - 220)) | (1L << (JSON_OBJECTAGG - 220)) | (1L << (JSON_OVERLAPS - 220)) | (1L << (JSON_PRETTY - 220)) | (1L << (JSON_QUOTE - 220)) | (1L << (JSON_REMOVE - 220)) | (1L << (JSON_REPLACE - 220)) | (1L << (JSON_SCHEMA_VALID - 220)) | (1L << (JSON_SCHEMA_VALIDATION_REPORT - 220)) | (1L << (JSON_SEARCH - 220)) | (1L << (JSON_SET - 220)) | (1L << (JSON_STORAGE_FREE - 220)) | (1L << (JSON_STORAGE_SIZE - 220)) | (1L << (JSON_TABLE - 220)) | (1L << (JSON_TYPE - 220)) | (1L << (JSON_UNQUOTE - 220)))) != 0) || ((((_la - 284)) & ~0x3f) == 0 && ((1L << (_la - 284)) & ((1L << (JSON_VALID - 284)) | (1L << (JSON_VALUE - 284)) | (1L << (NESTED - 284)) | (1L << (ORDINALITY - 284)) | (1L << (PATH - 284)) | (1L << (AVG - 284)) | (1L << (BIT_AND - 284)) | (1L << (BIT_OR - 284)) | (1L << (BIT_XOR - 284)) | (1L << (COUNT - 284)) | (1L << (CUME_DIST - 284)) | (1L << (DENSE_RANK - 284)) | (1L << (FIRST_VALUE - 284)) | (1L << (GROUP_CONCAT - 284)) | (1L << (LAG - 284)) | (1L << (LAST_VALUE - 284)) | (1L << (LEAD - 284)) | (1L << (MAX - 284)) | (1L << (MIN - 284)) | (1L << (NTILE - 284)) | (1L << (NTH_VALUE - 284)) | (1L << (PERCENT_RANK - 284)) | (1L << (RANK - 284)) | (1L << (ROW_NUMBER - 284)) | (1L << (STD - 284)) | (1L << (STDDEV - 284)) | (1L << (STDDEV_POP - 284)) | (1L << (STDDEV_SAMP - 284)) | (1L << (SUM - 284)) | (1L << (VAR_POP - 284)) | (1L << (VAR_SAMP - 284)) | (1L << (VARIANCE - 284)) | (1L << (CURRENT_DATE - 284)) | (1L << (CURRENT_TIME - 284)) | (1L << (CURRENT_TIMESTAMP - 284)) | (1L << (LOCALTIME - 284)) | (1L << (CURDATE - 284)) | (1L << (CURTIME - 284)) | (1L << (DATE_ADD - 284)) | (1L << (DATE_SUB - 284)) | (1L << (LOCALTIMESTAMP - 284)) | (1L << (NOW - 284)) | (1L << (POSITION - 284)) | (1L << (SUBSTR - 284)) | (1L << (SUBSTRING - 284)) | (1L << (SYSDATE - 284)) | (1L << (TRIM - 284)) | (1L << (UTC_DATE - 284)) | (1L << (UTC_TIME - 284)) | (1L << (UTC_TIMESTAMP - 284)) | (1L << (ACCOUNT - 284)) | (1L << (ACTION - 284)) | (1L << (AFTER - 284)) | (1L << (AGGREGATE - 284)) | (1L << (ALGORITHM - 284)) | (1L << (ANY - 284)) | (1L << (AT - 284)) | (1L << (AUTHORS - 284)) | (1L << (AUTOCOMMIT - 284)) | (1L << (AUTOEXTEND_SIZE - 284)) | (1L << (AUTO_INCREMENT - 284)) | (1L << (AVG_ROW_LENGTH - 284)) | (1L << (BEGIN - 284)))) != 0) || ((((_la - 348)) & ~0x3f) == 0 && ((1L << (_la - 348)) & ((1L << (BINLOG - 348)) | (1L << (BIT - 348)) | (1L << (BLOCK - 348)) | (1L << (BOOL - 348)) | (1L << (BOOLEAN - 348)) | (1L << (BTREE - 348)) | (1L << (CACHE - 348)) | (1L << (CASCADED - 348)) | (1L << (CHAIN - 348)) | (1L << (CHANGED - 348)) | (1L << (CHANNEL - 348)) | (1L << (CHECKSUM - 348)) | (1L << (PAGE_CHECKSUM - 348)) | (1L << (CIPHER - 348)) | (1L << (CLASS_ORIGIN - 348)) | (1L << (CLIENT - 348)) | (1L << (CLOSE - 348)) | (1L << (CLUSTERING - 348)) | (1L << (COALESCE - 348)) | (1L << (CODE - 348)) | (1L << (COLUMNS - 348)) | (1L << (COLUMN_FORMAT - 348)) | (1L << (COLUMN_NAME - 348)) | (1L << (COMMENT - 348)) | (1L << (COMMIT - 348)) | (1L << (COMPACT - 348)) | (1L << (COMPLETION - 348)) | (1L << (COMPRESSED - 348)) | (1L << (COMPRESSION - 348)) | (1L << (CONCURRENT - 348)) | (1L << (CONNECT - 348)) | (1L << (CONNECTION - 348)) | (1L << (CONSISTENT - 348)) | (1L << (CONSTRAINT_CATALOG - 348)) | (1L << (CONSTRAINT_SCHEMA - 348)) | (1L << (CONSTRAINT_NAME - 348)) | (1L << (CONTAINS - 348)) | (1L << (CONTEXT - 348)) | (1L << (CONTRIBUTORS - 348)) | (1L << (COPY - 348)) | (1L << (CPU - 348)) | (1L << (CYCLE - 348)) | (1L << (CURSOR_NAME - 348)) | (1L << (DATA - 348)) | (1L << (DATAFILE - 348)) | (1L << (DEALLOCATE - 348)) | (1L << (DEFAULT_AUTH - 348)) | (1L << (DEFINER - 348)) | (1L << (DELAY_KEY_WRITE - 348)) | (1L << (DES_KEY_FILE - 348)) | (1L << (DIRECTORY - 348)) | (1L << (DISABLE - 348)) | (1L << (DISCARD - 348)) | (1L << (DISK - 348)) | (1L << (DO - 348)) | (1L << (DUMPFILE - 348)) | (1L << (DUPLICATE - 348)) | (1L << (DYNAMIC - 348)) | (1L << (ENABLE - 348)) | (1L << (ENCRYPTED - 348)) | (1L << (ENCRYPTION - 348)) | (1L << (ENCRYPTION_KEY_ID - 348)) | (1L << (END - 348)) | (1L << (ENDS - 348)))) != 0) || ((((_la - 412)) & ~0x3f) == 0 && ((1L << (_la - 412)) & ((1L << (ENGINE - 412)) | (1L << (ENGINES - 412)) | (1L << (ERROR - 412)) | (1L << (ERRORS - 412)) | (1L << (ESCAPE - 412)) | (1L << (EVEN - 412)) | (1L << (EVENT - 412)) | (1L << (EVENTS - 412)) | (1L << (EVERY - 412)) | (1L << (EXCHANGE - 412)) | (1L << (EXCLUSIVE - 412)) | (1L << (EXPIRE - 412)) | (1L << (EXPORT - 412)) | (1L << (EXTENDED - 412)) | (1L << (EXTENT_SIZE - 412)) | (1L << (FAILED_LOGIN_ATTEMPTS - 412)) | (1L << (FAST - 412)) | (1L << (FAULTS - 412)) | (1L << (FIELDS - 412)) | (1L << (FILE_BLOCK_SIZE - 412)) | (1L << (FILTER - 412)) | (1L << (FIRST - 412)) | (1L << (FIXED - 412)) | (1L << (FLUSH - 412)) | (1L << (FOLLOWS - 412)) | (1L << (FOUND - 412)) | (1L << (FULL - 412)) | (1L << (FUNCTION - 412)) | (1L << (GENERAL - 412)) | (1L << (GLOBAL - 412)) | (1L << (GRANTS - 412)) | (1L << (GROUP_REPLICATION - 412)) | (1L << (HANDLER - 412)) | (1L << (HASH - 412)) | (1L << (HELP - 412)) | (1L << (HISTORY - 412)) | (1L << (HOST - 412)) | (1L << (HOSTS - 412)) | (1L << (IDENTIFIED - 412)) | (1L << (IGNORE_SERVER_IDS - 412)) | (1L << (IMPORT - 412)) | (1L << (INCREMENT - 412)) | (1L << (INDEXES - 412)) | (1L << (INITIAL_SIZE - 412)) | (1L << (INPLACE - 412)) | (1L << (INSERT_METHOD - 412)) | (1L << (INSTALL - 412)) | (1L << (INSTANCE - 412)) | (1L << (INSTANT - 412)) | (1L << (INVISIBLE - 412)) | (1L << (INVOKER - 412)) | (1L << (IO - 412)) | (1L << (IO_THREAD - 412)) | (1L << (IPC - 412)) | (1L << (ISOLATION - 412)) | (1L << (ISSUER - 412)) | (1L << (JSON - 412)) | (1L << (KEY_BLOCK_SIZE - 412)) | (1L << (LANGUAGE - 412)) | (1L << (LAST - 412)) | (1L << (LEAVES - 412)) | (1L << (LESS - 412)) | (1L << (LEVEL - 412)))) != 0) || ((((_la - 476)) & ~0x3f) == 0 && ((1L << (_la - 476)) & ((1L << (LIST - 476)) | (1L << (LOCAL - 476)) | (1L << (LOGFILE - 476)) | (1L << (LOGS - 476)) | (1L << (MASTER - 476)) | (1L << (MASTER_AUTO_POSITION - 476)) | (1L << (MASTER_CONNECT_RETRY - 476)) | (1L << (MASTER_DELAY - 476)) | (1L << (MASTER_HEARTBEAT_PERIOD - 476)) | (1L << (MASTER_HOST - 476)) | (1L << (MASTER_LOG_FILE - 476)) | (1L << (MASTER_LOG_POS - 476)) | (1L << (MASTER_PASSWORD - 476)) | (1L << (MASTER_PORT - 476)) | (1L << (MASTER_RETRY_COUNT - 476)) | (1L << (MASTER_SSL - 476)) | (1L << (MASTER_SSL_CA - 476)) | (1L << (MASTER_SSL_CAPATH - 476)) | (1L << (MASTER_SSL_CERT - 476)) | (1L << (MASTER_SSL_CIPHER - 476)) | (1L << (MASTER_SSL_CRL - 476)) | (1L << (MASTER_SSL_CRLPATH - 476)) | (1L << (MASTER_SSL_KEY - 476)) | (1L << (MASTER_TLS_VERSION - 476)) | (1L << (MASTER_USER - 476)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 476)) | (1L << (MAX_QUERIES_PER_HOUR - 476)) | (1L << (MAX_ROWS - 476)) | (1L << (MAX_SIZE - 476)) | (1L << (MAX_UPDATES_PER_HOUR - 476)) | (1L << (MAX_USER_CONNECTIONS - 476)) | (1L << (MEDIUM - 476)) | (1L << (MEMBER - 476)) | (1L << (MERGE - 476)) | (1L << (MESSAGE_TEXT - 476)) | (1L << (MID - 476)) | (1L << (MIGRATE - 476)) | (1L << (MIN_ROWS - 476)) | (1L << (MODE - 476)) | (1L << (MODIFY - 476)) | (1L << (MUTEX - 476)) | (1L << (MYSQL - 476)) | (1L << (MYSQL_ERRNO - 476)) | (1L << (NAME - 476)) | (1L << (NAMES - 476)) | (1L << (NCHAR - 476)) | (1L << (NEVER - 476)) | (1L << (NEXT - 476)) | (1L << (NO - 476)) | (1L << (NOCACHE - 476)) | (1L << (NOCOPY - 476)) | (1L << (NOCYCLE - 476)) | (1L << (NOMAXVALUE - 476)) | (1L << (NOMINVALUE - 476)) | (1L << (NOWAIT - 476)) | (1L << (NODEGROUP - 476)) | (1L << (NONE - 476)) | (1L << (ODBC - 476)) | (1L << (OFFLINE - 476)) | (1L << (OFFSET - 476)) | (1L << (OF - 476)) | (1L << (OJ - 476)) | (1L << (OLD_PASSWORD - 476)) | (1L << (ONE - 476)))) != 0) || ((((_la - 540)) & ~0x3f) == 0 && ((1L << (_la - 540)) & ((1L << (ONLINE - 540)) | (1L << (ONLY - 540)) | (1L << (OPEN - 540)) | (1L << (OPTIMIZER_COSTS - 540)) | (1L << (OPTIONS - 540)) | (1L << (OWNER - 540)) | (1L << (PACK_KEYS - 540)) | (1L << (PAGE - 540)) | (1L << (PARSER - 540)) | (1L << (PARTIAL - 540)) | (1L << (PARTITIONING - 540)) | (1L << (PARTITIONS - 540)) | (1L << (PASSWORD - 540)) | (1L << (PASSWORD_LOCK_TIME - 540)) | (1L << (PHASE - 540)) | (1L << (PLUGIN - 540)) | (1L << (PLUGIN_DIR - 540)) | (1L << (PLUGINS - 540)) | (1L << (PORT - 540)) | (1L << (PRECEDES - 540)) | (1L << (PREPARE - 540)) | (1L << (PRESERVE - 540)) | (1L << (PREV - 540)) | (1L << (PROCESSLIST - 540)) | (1L << (PROFILE - 540)) | (1L << (PROFILES - 540)) | (1L << (PROXY - 540)) | (1L << (QUERY - 540)) | (1L << (QUICK - 540)) | (1L << (REBUILD - 540)) | (1L << (RECOVER - 540)) | (1L << (RECURSIVE - 540)) | (1L << (REDO_BUFFER_SIZE - 540)) | (1L << (REDUNDANT - 540)) | (1L << (RELAY - 540)) | (1L << (RELAY_LOG_FILE - 540)) | (1L << (RELAY_LOG_POS - 540)) | (1L << (RELAYLOG - 540)) | (1L << (REMOVE - 540)) | (1L << (REORGANIZE - 540)) | (1L << (REPAIR - 540)) | (1L << (REPLICATE_DO_DB - 540)) | (1L << (REPLICATE_DO_TABLE - 540)) | (1L << (REPLICATE_IGNORE_DB - 540)) | (1L << (REPLICATE_IGNORE_TABLE - 540)) | (1L << (REPLICATE_REWRITE_DB - 540)) | (1L << (REPLICATE_WILD_DO_TABLE - 540)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 540)) | (1L << (REPLICATION - 540)) | (1L << (RESET - 540)) | (1L << (RESTART - 540)) | (1L << (RESUME - 540)) | (1L << (RETURNED_SQLSTATE - 540)) | (1L << (RETURNING - 540)) | (1L << (RETURNS - 540)) | (1L << (REUSE - 540)) | (1L << (ROLE - 540)) | (1L << (ROLLBACK - 540)) | (1L << (ROLLUP - 540)) | (1L << (ROTATE - 540)) | (1L << (ROW - 540)))) != 0) || ((((_la - 604)) & ~0x3f) == 0 && ((1L << (_la - 604)) & ((1L << (ROWS - 604)) | (1L << (ROW_FORMAT - 604)) | (1L << (RTREE - 604)) | (1L << (SAVEPOINT - 604)) | (1L << (SCHEDULE - 604)) | (1L << (SECURITY - 604)) | (1L << (SEQUENCE - 604)) | (1L << (SERVER - 604)) | (1L << (SESSION - 604)) | (1L << (SHARE - 604)) | (1L << (SHARED - 604)) | (1L << (SIGNED - 604)) | (1L << (SIMPLE - 604)) | (1L << (SLAVE - 604)) | (1L << (SLOW - 604)) | (1L << (SNAPSHOT - 604)) | (1L << (SOCKET - 604)) | (1L << (SOME - 604)) | (1L << (SONAME - 604)) | (1L << (SOUNDS - 604)) | (1L << (SOURCE - 604)) | (1L << (SQL_AFTER_GTIDS - 604)) | (1L << (SQL_AFTER_MTS_GAPS - 604)) | (1L << (SQL_BEFORE_GTIDS - 604)) | (1L << (SQL_BUFFER_RESULT - 604)) | (1L << (SQL_CACHE - 604)) | (1L << (SQL_NO_CACHE - 604)) | (1L << (SQL_THREAD - 604)) | (1L << (START - 604)) | (1L << (STARTS - 604)) | (1L << (STATS_AUTO_RECALC - 604)) | (1L << (STATS_PERSISTENT - 604)) | (1L << (STATS_SAMPLE_PAGES - 604)) | (1L << (STATUS - 604)) | (1L << (STOP - 604)) | (1L << (STORAGE - 604)) | (1L << (STRING - 604)) | (1L << (SUBCLASS_ORIGIN - 604)) | (1L << (SUBJECT - 604)) | (1L << (SUBPARTITION - 604)) | (1L << (SUBPARTITIONS - 604)) | (1L << (SUSPEND - 604)) | (1L << (SWAPS - 604)) | (1L << (SWITCHES - 604)) | (1L << (TABLE_NAME - 604)) | (1L << (TABLESPACE - 604)) | (1L << (TABLE_TYPE - 604)) | (1L << (TEMPORARY - 604)) | (1L << (TEMPTABLE - 604)) | (1L << (THAN - 604)) | (1L << (TRADITIONAL - 604)) | (1L << (TRANSACTION - 604)) | (1L << (TRANSACTIONAL - 604)) | (1L << (TRIGGERS - 604)) | (1L << (TRUNCATE - 604)) | (1L << (UNBOUNDED - 604)) | (1L << (UNDEFINED - 604)) | (1L << (UNDOFILE - 604)) | (1L << (UNDO_BUFFER_SIZE - 604)) | (1L << (UNINSTALL - 604)) | (1L << (UNKNOWN - 604)) | (1L << (UNTIL - 604)) | (1L << (UPGRADE - 604)))) != 0) || ((((_la - 668)) & ~0x3f) == 0 && ((1L << (_la - 668)) & ((1L << (USER - 668)) | (1L << (USE_FRM - 668)) | (1L << (USER_RESOURCES - 668)) | (1L << (VALIDATION - 668)) | (1L << (VALUE - 668)) | (1L << (VARIABLES - 668)) | (1L << (VIEW - 668)) | (1L << (VIRTUAL - 668)) | (1L << (VISIBLE - 668)) | (1L << (WAIT - 668)) | (1L << (WARNINGS - 668)) | (1L << (WITHOUT - 668)) | (1L << (WORK - 668)) | (1L << (WRAPPER - 668)) | (1L << (X509 - 668)) | (1L << (XA - 668)) | (1L << (XML - 668)) | (1L << (YES - 668)) | (1L << (EUR - 668)) | (1L << (USA - 668)) | (1L << (JIS - 668)) | (1L << (ISO - 668)) | (1L << (INTERNAL - 668)) | (1L << (QUARTER - 668)) | (1L << (MONTH - 668)) | (1L << (DAY - 668)) | (1L << (HOUR - 668)) | (1L << (MINUTE - 668)) | (1L << (WEEK - 668)) | (1L << (SECOND - 668)) | (1L << (MICROSECOND - 668)) | (1L << (USER_STATISTICS - 668)) | (1L << (CLIENT_STATISTICS - 668)) | (1L << (INDEX_STATISTICS - 668)) | (1L << (TABLE_STATISTICS - 668)) | (1L << (FIREWALL_RULES - 668)) | (1L << (ADMIN - 668)) | (1L << (APPLICATION_PASSWORD_ADMIN - 668)) | (1L << (AUDIT_ADMIN - 668)) | (1L << (AUDIT_ABORT_EXEMPT - 668)) | (1L << (AUTHENTICATION_POLICY_ADMIN - 668)) | (1L << (BACKUP_ADMIN - 668)) | (1L << (BINLOG_ADMIN - 668)) | (1L << (BINLOG_ENCRYPTION_ADMIN - 668)) | (1L << (CLONE_ADMIN - 668)) | (1L << (CONNECTION_ADMIN - 668)) | (1L << (ENCRYPTION_KEY_ADMIN - 668)) | (1L << (EXECUTE - 668)) | (1L << (FILE - 668)) | (1L << (FIREWALL_ADMIN - 668)) | (1L << (FIREWALL_EXEMPT - 668)) | (1L << (FIREWALL_USER - 668)) | (1L << (FLUSH_OPTIMIZER_COSTS - 668)) | (1L << (FLUSH_STATUS - 668)) | (1L << (FLUSH_TABLES - 668)) | (1L << (FLUSH_USER_RESOURCES - 668)) | (1L << (GROUP_REPLICATION_ADMIN - 668)) | (1L << (INNODB_REDO_LOG_ARCHIVE - 668)) | (1L << (INNODB_REDO_LOG_ENABLE - 668)) | (1L << (INVOKE - 668)) | (1L << (LAMBDA - 668)) | (1L << (NDB_STORED_USER - 668)) | (1L << (PASSWORDLESS_USER_ADMIN - 668)))) != 0) || ((((_la - 732)) & ~0x3f) == 0 && ((1L << (_la - 732)) & ((1L << (PERSIST_RO_VARIABLES_ADMIN - 732)) | (1L << (PRIVILEGES - 732)) | (1L << (PROCESS - 732)) | (1L << (RELOAD - 732)) | (1L << (REPLICATION_APPLIER - 732)) | (1L << (REPLICATION_SLAVE_ADMIN - 732)) | (1L << (RESOURCE_GROUP_ADMIN - 732)) | (1L << (RESOURCE_GROUP_USER - 732)) | (1L << (ROLE_ADMIN - 732)) | (1L << (ROUTINE - 732)) | (1L << (S3 - 732)) | (1L << (SESSION_VARIABLES_ADMIN - 732)) | (1L << (SET_USER_ID - 732)) | (1L << (SHOW_ROUTINE - 732)) | (1L << (SHUTDOWN - 732)) | (1L << (SUPER - 732)) | (1L << (SYSTEM_VARIABLES_ADMIN - 732)) | (1L << (TABLES - 732)) | (1L << (TABLE_ENCRYPTION_ADMIN - 732)) | (1L << (VERSION_TOKEN_ADMIN - 732)) | (1L << (XA_RECOVER_ADMIN - 732)) | (1L << (ARMSCII8 - 732)) | (1L << (ASCII - 732)) | (1L << (BIG5 - 732)) | (1L << (CP1250 - 732)) | (1L << (CP1251 - 732)) | (1L << (CP1256 - 732)) | (1L << (CP1257 - 732)) | (1L << (CP850 - 732)) | (1L << (CP852 - 732)) | (1L << (CP866 - 732)) | (1L << (CP932 - 732)) | (1L << (DEC8 - 732)) | (1L << (EUCJPMS - 732)) | (1L << (EUCKR - 732)) | (1L << (GB18030 - 732)) | (1L << (GB2312 - 732)) | (1L << (GBK - 732)) | (1L << (GEOSTD8 - 732)) | (1L << (GREEK - 732)) | (1L << (HEBREW - 732)) | (1L << (HP8 - 732)) | (1L << (KEYBCS2 - 732)) | (1L << (KOI8R - 732)) | (1L << (KOI8U - 732)) | (1L << (LATIN1 - 732)) | (1L << (LATIN2 - 732)) | (1L << (LATIN5 - 732)) | (1L << (LATIN7 - 732)) | (1L << (MACCE - 732)) | (1L << (MACROMAN - 732)) | (1L << (SJIS - 732)) | (1L << (SWE7 - 732)) | (1L << (TIS620 - 732)) | (1L << (UCS2 - 732)) | (1L << (UJIS - 732)) | (1L << (UTF16 - 732)) | (1L << (UTF16LE - 732)) | (1L << (UTF32 - 732)) | (1L << (UTF8 - 732)) | (1L << (UTF8MB3 - 732)) | (1L << (UTF8MB4 - 732)) | (1L << (ARCHIVE - 732)))) != 0) || ((((_la - 796)) & ~0x3f) == 0 && ((1L << (_la - 796)) & ((1L << (BLACKHOLE - 796)) | (1L << (CSV - 796)) | (1L << (FEDERATED - 796)) | (1L << (INNODB - 796)) | (1L << (MEMORY - 796)) | (1L << (MRG_MYISAM - 796)) | (1L << (MYISAM - 796)) | (1L << (NDB - 796)) | (1L << (NDBCLUSTER - 796)) | (1L << (PERFORMANCE_SCHEMA - 796)) | (1L << (TOKUDB - 796)) | (1L << (REPEATABLE - 796)) | (1L << (COMMITTED - 796)) | (1L << (UNCOMMITTED - 796)) | (1L << (SERIALIZABLE - 796)) | (1L << (GEOMETRYCOLLECTION - 796)) | (1L << (GEOMETRY - 796)) | (1L << (LINESTRING - 796)) | (1L << (MULTILINESTRING - 796)) | (1L << (MULTIPOINT - 796)) | (1L << (MULTIPOLYGON - 796)) | (1L << (POINT - 796)) | (1L << (POLYGON - 796)) | (1L << (ABS - 796)) | (1L << (ACOS - 796)) | (1L << (ADDDATE - 796)) | (1L << (ADDTIME - 796)) | (1L << (AES_DECRYPT - 796)) | (1L << (AES_ENCRYPT - 796)) | (1L << (AREA - 796)) | (1L << (ASBINARY - 796)) | (1L << (ASIN - 796)) | (1L << (ASTEXT - 796)) | (1L << (ASWKB - 796)) | (1L << (ASWKT - 796)) | (1L << (ASYMMETRIC_DECRYPT - 796)) | (1L << (ASYMMETRIC_DERIVE - 796)) | (1L << (ASYMMETRIC_ENCRYPT - 796)) | (1L << (ASYMMETRIC_SIGN - 796)) | (1L << (ASYMMETRIC_VERIFY - 796)) | (1L << (ATAN - 796)) | (1L << (ATAN2 - 796)) | (1L << (BENCHMARK - 796)) | (1L << (BIN - 796)) | (1L << (BIT_COUNT - 796)) | (1L << (BIT_LENGTH - 796)) | (1L << (BUFFER - 796)) | (1L << (CATALOG_NAME - 796)) | (1L << (CEIL - 796)) | (1L << (CEILING - 796)) | (1L << (CENTROID - 796)) | (1L << (CHARACTER_LENGTH - 796)) | (1L << (CHARSET - 796)) | (1L << (CHAR_LENGTH - 796)) | (1L << (COERCIBILITY - 796)) | (1L << (COLLATION - 796)) | (1L << (COMPRESS - 796)) | (1L << (CONCAT - 796)) | (1L << (CONCAT_WS - 796)) | (1L << (CONNECTION_ID - 796)) | (1L << (CONV - 796)) | (1L << (CONVERT_TZ - 796)) | (1L << (COS - 796)))) != 0) || ((((_la - 860)) & ~0x3f) == 0 && ((1L << (_la - 860)) & ((1L << (COT - 860)) | (1L << (CRC32 - 860)) | (1L << (CREATE_ASYMMETRIC_PRIV_KEY - 860)) | (1L << (CREATE_ASYMMETRIC_PUB_KEY - 860)) | (1L << (CREATE_DH_PARAMETERS - 860)) | (1L << (CREATE_DIGEST - 860)) | (1L << (CROSSES - 860)) | (1L << (DATEDIFF - 860)) | (1L << (DATE_FORMAT - 860)) | (1L << (DAYNAME - 860)) | (1L << (DAYOFMONTH - 860)) | (1L << (DAYOFWEEK - 860)) | (1L << (DAYOFYEAR - 860)) | (1L << (DECODE - 860)) | (1L << (DEGREES - 860)) | (1L << (DES_DECRYPT - 860)) | (1L << (DES_ENCRYPT - 860)) | (1L << (DIMENSION - 860)) | (1L << (DISJOINT - 860)) | (1L << (ELT - 860)) | (1L << (ENCODE - 860)) | (1L << (ENCRYPT - 860)) | (1L << (ENDPOINT - 860)) | (1L << (ENGINE_ATTRIBUTE - 860)) | (1L << (ENVELOPE - 860)) | (1L << (EQUALS - 860)) | (1L << (EXP - 860)) | (1L << (EXPORT_SET - 860)) | (1L << (EXTERIORRING - 860)) | (1L << (EXTRACTVALUE - 860)) | (1L << (FIELD - 860)) | (1L << (FIND_IN_SET - 860)) | (1L << (FLOOR - 860)) | (1L << (FORMAT - 860)) | (1L << (FOUND_ROWS - 860)) | (1L << (FROM_BASE64 - 860)) | (1L << (FROM_DAYS - 860)) | (1L << (FROM_UNIXTIME - 860)) | (1L << (GEOMCOLLFROMTEXT - 860)) | (1L << (GEOMCOLLFROMWKB - 860)) | (1L << (GEOMETRYCOLLECTIONFROMTEXT - 860)) | (1L << (GEOMETRYCOLLECTIONFROMWKB - 860)) | (1L << (GEOMETRYFROMTEXT - 860)) | (1L << (GEOMETRYFROMWKB - 860)) | (1L << (GEOMETRYN - 860)) | (1L << (GEOMETRYTYPE - 860)) | (1L << (GEOMFROMTEXT - 860)) | (1L << (GEOMFROMWKB - 860)) | (1L << (GET_FORMAT - 860)) | (1L << (GET_LOCK - 860)) | (1L << (GLENGTH - 860)) | (1L << (GREATEST - 860)) | (1L << (GTID_SUBSET - 860)) | (1L << (GTID_SUBTRACT - 860)) | (1L << (HEX - 860)) | (1L << (IFNULL - 860)) | (1L << (INET6_ATON - 860)) | (1L << (INET6_NTOA - 860)) | (1L << (INET_ATON - 860)) | (1L << (INET_NTOA - 860)) | (1L << (INSTR - 860)) | (1L << (INTERIORRINGN - 860)) | (1L << (INTERSECTS - 860)) | (1L << (ISCLOSED - 860)))) != 0) || ((((_la - 924)) & ~0x3f) == 0 && ((1L << (_la - 924)) & ((1L << (ISEMPTY - 924)) | (1L << (ISNULL - 924)) | (1L << (ISSIMPLE - 924)) | (1L << (IS_FREE_LOCK - 924)) | (1L << (IS_IPV4 - 924)) | (1L << (IS_IPV4_COMPAT - 924)) | (1L << (IS_IPV4_MAPPED - 924)) | (1L << (IS_IPV6 - 924)) | (1L << (IS_USED_LOCK - 924)) | (1L << (LAST_INSERT_ID - 924)) | (1L << (LCASE - 924)) | (1L << (LEAST - 924)) | (1L << (LENGTH - 924)) | (1L << (LINEFROMTEXT - 924)) | (1L << (LINEFROMWKB - 924)) | (1L << (LINESTRINGFROMTEXT - 924)) | (1L << (LINESTRINGFROMWKB - 924)) | (1L << (LN - 924)) | (1L << (LOAD_FILE - 924)) | (1L << (LOCATE - 924)) | (1L << (LOG - 924)) | (1L << (LOG10 - 924)) | (1L << (LOG2 - 924)) | (1L << (LOWER - 924)) | (1L << (LPAD - 924)) | (1L << (LTRIM - 924)) | (1L << (MAKEDATE - 924)) | (1L << (MAKETIME - 924)) | (1L << (MAKE_SET - 924)) | (1L << (MASTER_POS_WAIT - 924)) | (1L << (MBRCONTAINS - 924)) | (1L << (MBRDISJOINT - 924)) | (1L << (MBREQUAL - 924)) | (1L << (MBRINTERSECTS - 924)) | (1L << (MBROVERLAPS - 924)) | (1L << (MBRTOUCHES - 924)) | (1L << (MBRWITHIN - 924)) | (1L << (MD5 - 924)) | (1L << (MLINEFROMTEXT - 924)) | (1L << (MLINEFROMWKB - 924)) | (1L << (MONTHNAME - 924)) | (1L << (MPOINTFROMTEXT - 924)) | (1L << (MPOINTFROMWKB - 924)) | (1L << (MPOLYFROMTEXT - 924)) | (1L << (MPOLYFROMWKB - 924)) | (1L << (MULTILINESTRINGFROMTEXT - 924)) | (1L << (MULTILINESTRINGFROMWKB - 924)) | (1L << (MULTIPOINTFROMTEXT - 924)) | (1L << (MULTIPOINTFROMWKB - 924)) | (1L << (MULTIPOLYGONFROMTEXT - 924)) | (1L << (MULTIPOLYGONFROMWKB - 924)) | (1L << (NAME_CONST - 924)) | (1L << (NULLIF - 924)) | (1L << (NUMGEOMETRIES - 924)) | (1L << (NUMINTERIORRINGS - 924)) | (1L << (NUMPOINTS - 924)) | (1L << (OCT - 924)) | (1L << (OCTET_LENGTH - 924)) | (1L << (ORD - 924)) | (1L << (OVERLAPS - 924)) | (1L << (PERIOD_ADD - 924)) | (1L << (PERIOD_DIFF - 924)) | (1L << (PI - 924)) | (1L << (POINTFROMTEXT - 924)))) != 0) || ((((_la - 988)) & ~0x3f) == 0 && ((1L << (_la - 988)) & ((1L << (POINTFROMWKB - 988)) | (1L << (POINTN - 988)) | (1L << (POLYFROMTEXT - 988)) | (1L << (POLYFROMWKB - 988)) | (1L << (POLYGONFROMTEXT - 988)) | (1L << (POLYGONFROMWKB - 988)) | (1L << (POW - 988)) | (1L << (POWER - 988)) | (1L << (QUOTE - 988)) | (1L << (RADIANS - 988)) | (1L << (RAND - 988)) | (1L << (RANDOM - 988)) | (1L << (RANDOM_BYTES - 988)) | (1L << (RELEASE_LOCK - 988)) | (1L << (REVERSE - 988)) | (1L << (ROUND - 988)) | (1L << (ROW_COUNT - 988)) | (1L << (RPAD - 988)) | (1L << (RTRIM - 988)) | (1L << (SEC_TO_TIME - 988)) | (1L << (SECONDARY_ENGINE_ATTRIBUTE - 988)) | (1L << (SENSITIVE_VARIABLES_OBSERVER - 988)) | (1L << (SESSION_USER - 988)) | (1L << (SHA - 988)) | (1L << (SHA1 - 988)) | (1L << (SHA2 - 988)) | (1L << (SCHEMA_NAME - 988)) | (1L << (SIGN - 988)) | (1L << (SIN - 988)) | (1L << (SLEEP - 988)) | (1L << (SOUNDEX - 988)) | (1L << (SQL_THREAD_WAIT_AFTER_GTIDS - 988)) | (1L << (SQRT - 988)) | (1L << (SRID - 988)) | (1L << (STARTPOINT - 988)) | (1L << (STRCMP - 988)) | (1L << (STR_TO_DATE - 988)) | (1L << (ST_AREA - 988)) | (1L << (ST_ASBINARY - 988)) | (1L << (ST_ASTEXT - 988)) | (1L << (ST_ASWKB - 988)) | (1L << (ST_ASWKT - 988)) | (1L << (ST_BUFFER - 988)) | (1L << (ST_CENTROID - 988)) | (1L << (ST_CONTAINS - 988)) | (1L << (ST_CROSSES - 988)) | (1L << (ST_DIFFERENCE - 988)) | (1L << (ST_DIMENSION - 988)) | (1L << (ST_DISJOINT - 988)) | (1L << (ST_DISTANCE - 988)) | (1L << (ST_ENDPOINT - 988)) | (1L << (ST_ENVELOPE - 988)) | (1L << (ST_EQUALS - 988)) | (1L << (ST_EXTERIORRING - 988)) | (1L << (ST_GEOMCOLLFROMTEXT - 988)) | (1L << (ST_GEOMCOLLFROMTXT - 988)) | (1L << (ST_GEOMCOLLFROMWKB - 988)) | (1L << (ST_GEOMETRYCOLLECTIONFROMTEXT - 988)) | (1L << (ST_GEOMETRYCOLLECTIONFROMWKB - 988)) | (1L << (ST_GEOMETRYFROMTEXT - 988)) | (1L << (ST_GEOMETRYFROMWKB - 988)) | (1L << (ST_GEOMETRYN - 988)) | (1L << (ST_GEOMETRYTYPE - 988)) | (1L << (ST_GEOMFROMTEXT - 988)))) != 0) || ((((_la - 1052)) & ~0x3f) == 0 && ((1L << (_la - 1052)) & ((1L << (ST_GEOMFROMWKB - 1052)) | (1L << (ST_INTERIORRINGN - 1052)) | (1L << (ST_INTERSECTION - 1052)) | (1L << (ST_INTERSECTS - 1052)) | (1L << (ST_ISCLOSED - 1052)) | (1L << (ST_ISEMPTY - 1052)) | (1L << (ST_ISSIMPLE - 1052)) | (1L << (ST_LINEFROMTEXT - 1052)) | (1L << (ST_LINEFROMWKB - 1052)) | (1L << (ST_LINESTRINGFROMTEXT - 1052)) | (1L << (ST_LINESTRINGFROMWKB - 1052)) | (1L << (ST_NUMGEOMETRIES - 1052)) | (1L << (ST_NUMINTERIORRING - 1052)) | (1L << (ST_NUMINTERIORRINGS - 1052)) | (1L << (ST_NUMPOINTS - 1052)) | (1L << (ST_OVERLAPS - 1052)) | (1L << (ST_POINTFROMTEXT - 1052)) | (1L << (ST_POINTFROMWKB - 1052)) | (1L << (ST_POINTN - 1052)) | (1L << (ST_POLYFROMTEXT - 1052)) | (1L << (ST_POLYFROMWKB - 1052)) | (1L << (ST_POLYGONFROMTEXT - 1052)) | (1L << (ST_POLYGONFROMWKB - 1052)) | (1L << (ST_SRID - 1052)) | (1L << (ST_STARTPOINT - 1052)) | (1L << (ST_SYMDIFFERENCE - 1052)) | (1L << (ST_TOUCHES - 1052)) | (1L << (ST_UNION - 1052)) | (1L << (ST_WITHIN - 1052)) | (1L << (ST_X - 1052)) | (1L << (ST_Y - 1052)) | (1L << (SUBDATE - 1052)) | (1L << (SUBSTRING_INDEX - 1052)) | (1L << (SUBTIME - 1052)) | (1L << (SYSTEM_USER - 1052)) | (1L << (SYSTEM - 1052)) | (1L << (TAN - 1052)) | (1L << (TELEMETRY_LOG_ADMIN - 1052)) | (1L << (TIMEDIFF - 1052)) | (1L << (TIMESTAMPADD - 1052)) | (1L << (TIMESTAMPDIFF - 1052)) | (1L << (TIME_FORMAT - 1052)) | (1L << (TIME_TO_SEC - 1052)) | (1L << (TOUCHES - 1052)) | (1L << (TO_BASE64 - 1052)) | (1L << (TO_DAYS - 1052)) | (1L << (TO_SECONDS - 1052)) | (1L << (TP_CONNECTION_ADMIN - 1052)) | (1L << (UCASE - 1052)) | (1L << (UNCOMPRESS - 1052)) | (1L << (UNCOMPRESSED_LENGTH - 1052)) | (1L << (UNHEX - 1052)) | (1L << (UNIX_TIMESTAMP - 1052)) | (1L << (UPDATEXML - 1052)) | (1L << (UPPER - 1052)) | (1L << (UUID - 1052)) | (1L << (UUID_SHORT - 1052)) | (1L << (VALIDATE_PASSWORD_STRENGTH - 1052)) | (1L << (VERSION - 1052)) | (1L << (VERSIONING - 1052)) | (1L << (WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS - 1052)) | (1L << (WEEKDAY - 1052)) | (1L << (WEEKOFYEAR - 1052)) | (1L << (WEIGHT_STRING - 1052)))) != 0) || ((((_la - 1116)) & ~0x3f) == 0 && ((1L << (_la - 1116)) & ((1L << (WITHIN - 1116)) | (1L << (YEARWEEK - 1116)) | (1L << (Y_FUNCTION - 1116)) | (1L << (X_FUNCTION - 1116)) | (1L << (VIA - 1116)) | (1L << (LASTVAL - 1116)) | (1L << (NEXTVAL - 1116)) | (1L << (SETVAL - 1116)) | (1L << (PREVIOUS - 1116)) | (1L << (PERSISTENT - 1116)) | (1L << (BINLOG_MONITOR - 1116)) | (1L << (BINLOG_REPLAY - 1116)) | (1L << (FEDERATED_ADMIN - 1116)) | (1L << (READ_ONLY_ADMIN - 1116)) | (1L << (REPLICA - 1116)) | (1L << (REPLICATION_MASTER_ADMIN - 1116)) | (1L << (MONITOR - 1116)) | (1L << (READ_ONLY - 1116)) | (1L << (REPLAY - 1116)) | (1L << (MOD - 1116)) | (1L << (CHARSET_REVERSE_QOUTE_STRING - 1116)) | (1L << (STRING_LITERAL - 1116)))) != 0) || _la==ID) {
				{
				setState(5146);
				uid();
				setState(5147);
				match(COLON_SYMB);
				}
			}

			setState(5151);
			match(WHILE);
			setState(5152);
			expression(0);
			setState(5153);
			match(DO);
			setState(5155); 
			_errHandler.sync(this);
			_alt = 1;
			do {
				switch (_alt) {
				case 1:
					{
					{
					setState(5154);
					procedureSqlStatement();
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(5157); 
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,771,_ctx);
			} while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
			setState(5159);
			match(END);
			setState(5160);
			match(WHILE);
			setState(5162);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ARRAY) | (1L << ATTRIBUTE) | (1L << BUCKETS) | (1L << CONDITION) | (1L << CURRENT) | (1L << CURRENT_ROLE) | (1L << CURRENT_USER) | (1L << DATABASE) | (1L << DEFAULT) | (1L << DIAGNOSTICS) | (1L << EMPTY) | (1L << ENFORCED) | (1L << EXCEPT))) != 0) || ((((_la - 74)) & ~0x3f) == 0 && ((1L << (_la - 74)) & ((1L << (GROUP - 74)) | (1L << (GROUP_REPLICATION_STREAM - 74)) | (1L << (IF - 74)) | (1L << (IGNORED - 74)) | (1L << (INSERT - 74)) | (1L << (LATERAL - 74)) | (1L << (LEFT - 74)) | (1L << (LOCKED - 74)) | (1L << (MAXVALUE - 74)) | (1L << (MINVALUE - 74)) | (1L << (NUMBER - 74)) | (1L << (OPTIONAL - 74)) | (1L << (ORDER - 74)) | (1L << (PRIMARY - 74)))) != 0) || ((((_la - 142)) & ~0x3f) == 0 && ((1L << (_la - 142)) & ((1L << (REPEAT - 142)) | (1L << (REPLACE - 142)) | (1L << (RIGHT - 142)) | (1L << (SCHEMA - 142)) | (1L << (SKIP_ - 142)) | (1L << (SKIP_QUERY_REWRITE - 142)) | (1L << (STACKED - 142)) | (1L << (STATEMENT - 142)))) != 0) || ((((_la - 220)) & ~0x3f) == 0 && ((1L << (_la - 220)) & ((1L << (DATE - 220)) | (1L << (TIME - 220)) | (1L << (TIMESTAMP - 220)) | (1L << (DATETIME - 220)) | (1L << (YEAR - 220)) | (1L << (NATIONAL - 220)) | (1L << (BINARY - 220)) | (1L << (TEXT - 220)) | (1L << (ENUM - 220)) | (1L << (SERIAL - 220)) | (1L << (JSON_ARRAY - 220)) | (1L << (JSON_ARRAYAGG - 220)) | (1L << (JSON_ARRAY_APPEND - 220)) | (1L << (JSON_ARRAY_INSERT - 220)) | (1L << (JSON_CONTAINS - 220)) | (1L << (JSON_CONTAINS_PATH - 220)) | (1L << (JSON_DEPTH - 220)) | (1L << (JSON_EXTRACT - 220)) | (1L << (JSON_INSERT - 220)) | (1L << (JSON_KEYS - 220)) | (1L << (JSON_LENGTH - 220)) | (1L << (JSON_MERGE - 220)) | (1L << (JSON_MERGE_PATCH - 220)) | (1L << (JSON_MERGE_PRESERVE - 220)) | (1L << (JSON_OBJECT - 220)) | (1L << (JSON_OBJECTAGG - 220)) | (1L << (JSON_OVERLAPS - 220)) | (1L << (JSON_PRETTY - 220)) | (1L << (JSON_QUOTE - 220)) | (1L << (JSON_REMOVE - 220)) | (1L << (JSON_REPLACE - 220)) | (1L << (JSON_SCHEMA_VALID - 220)) | (1L << (JSON_SCHEMA_VALIDATION_REPORT - 220)) | (1L << (JSON_SEARCH - 220)) | (1L << (JSON_SET - 220)) | (1L << (JSON_STORAGE_FREE - 220)) | (1L << (JSON_STORAGE_SIZE - 220)) | (1L << (JSON_TABLE - 220)) | (1L << (JSON_TYPE - 220)) | (1L << (JSON_UNQUOTE - 220)))) != 0) || ((((_la - 284)) & ~0x3f) == 0 && ((1L << (_la - 284)) & ((1L << (JSON_VALID - 284)) | (1L << (JSON_VALUE - 284)) | (1L << (NESTED - 284)) | (1L << (ORDINALITY - 284)) | (1L << (PATH - 284)) | (1L << (AVG - 284)) | (1L << (BIT_AND - 284)) | (1L << (BIT_OR - 284)) | (1L << (BIT_XOR - 284)) | (1L << (COUNT - 284)) | (1L << (CUME_DIST - 284)) | (1L << (DENSE_RANK - 284)) | (1L << (FIRST_VALUE - 284)) | (1L << (GROUP_CONCAT - 284)) | (1L << (LAG - 284)) | (1L << (LAST_VALUE - 284)) | (1L << (LEAD - 284)) | (1L << (MAX - 284)) | (1L << (MIN - 284)) | (1L << (NTILE - 284)) | (1L << (NTH_VALUE - 284)) | (1L << (PERCENT_RANK - 284)) | (1L << (RANK - 284)) | (1L << (ROW_NUMBER - 284)) | (1L << (STD - 284)) | (1L << (STDDEV - 284)) | (1L << (STDDEV_POP - 284)) | (1L << (STDDEV_SAMP - 284)) | (1L << (SUM - 284)) | (1L << (VAR_POP - 284)) | (1L << (VAR_SAMP - 284)) | (1L << (VARIANCE - 284)) | (1L << (CURRENT_DATE - 284)) | (1L << (CURRENT_TIME - 284)) | (1L << (CURRENT_TIMESTAMP - 284)) | (1L << (LOCALTIME - 284)) | (1L << (CURDATE - 284)) | (1L << (CURTIME - 284)) | (1L << (DATE_ADD - 284)) | (1L << (DATE_SUB - 284)) | (1L << (LOCALTIMESTAMP - 284)) | (1L << (NOW - 284)) | (1L << (POSITION - 284)) | (1L << (SUBSTR - 284)) | (1L << (SUBSTRING - 284)) | (1L << (SYSDATE - 284)) | (1L << (TRIM - 284)) | (1L << (UTC_DATE - 284)) | (1L << (UTC_TIME - 284)) | (1L << (UTC_TIMESTAMP - 284)) | (1L << (ACCOUNT - 284)) | (1L << (ACTION - 284)) | (1L << (AFTER - 284)) | (1L << (AGGREGATE - 284)) | (1L << (ALGORITHM - 284)) | (1L << (ANY - 284)) | (1L << (AT - 284)) | (1L << (AUTHORS - 284)) | (1L << (AUTOCOMMIT - 284)) | (1L << (AUTOEXTEND_SIZE - 284)) | (1L << (AUTO_INCREMENT - 284)) | (1L << (AVG_ROW_LENGTH - 284)) | (1L << (BEGIN - 284)))) != 0) || ((((_la - 348)) & ~0x3f) == 0 && ((1L << (_la - 348)) & ((1L << (BINLOG - 348)) | (1L << (BIT - 348)) | (1L << (BLOCK - 348)) | (1L << (BOOL - 348)) | (1L << (BOOLEAN - 348)) | (1L << (BTREE - 348)) | (1L << (CACHE - 348)) | (1L << (CASCADED - 348)) | (1L << (CHAIN - 348)) | (1L << (CHANGED - 348)) | (1L << (CHANNEL - 348)) | (1L << (CHECKSUM - 348)) | (1L << (PAGE_CHECKSUM - 348)) | (1L << (CIPHER - 348)) | (1L << (CLASS_ORIGIN - 348)) | (1L << (CLIENT - 348)) | (1L << (CLOSE - 348)) | (1L << (CLUSTERING - 348)) | (1L << (COALESCE - 348)) | (1L << (CODE - 348)) | (1L << (COLUMNS - 348)) | (1L << (COLUMN_FORMAT - 348)) | (1L << (COLUMN_NAME - 348)) | (1L << (COMMENT - 348)) | (1L << (COMMIT - 348)) | (1L << (COMPACT - 348)) | (1L << (COMPLETION - 348)) | (1L << (COMPRESSED - 348)) | (1L << (COMPRESSION - 348)) | (1L << (CONCURRENT - 348)) | (1L << (CONNECT - 348)) | (1L << (CONNECTION - 348)) | (1L << (CONSISTENT - 348)) | (1L << (CONSTRAINT_CATALOG - 348)) | (1L << (CONSTRAINT_SCHEMA - 348)) | (1L << (CONSTRAINT_NAME - 348)) | (1L << (CONTAINS - 348)) | (1L << (CONTEXT - 348)) | (1L << (CONTRIBUTORS - 348)) | (1L << (COPY - 348)) | (1L << (CPU - 348)) | (1L << (CYCLE - 348)) | (1L << (CURSOR_NAME - 348)) | (1L << (DATA - 348)) | (1L << (DATAFILE - 348)) | (1L << (DEALLOCATE - 348)) | (1L << (DEFAULT_AUTH - 348)) | (1L << (DEFINER - 348)) | (1L << (DELAY_KEY_WRITE - 348)) | (1L << (DES_KEY_FILE - 348)) | (1L << (DIRECTORY - 348)) | (1L << (DISABLE - 348)) | (1L << (DISCARD - 348)) | (1L << (DISK - 348)) | (1L << (DO - 348)) | (1L << (DUMPFILE - 348)) | (1L << (DUPLICATE - 348)) | (1L << (DYNAMIC - 348)) | (1L << (ENABLE - 348)) | (1L << (ENCRYPTED - 348)) | (1L << (ENCRYPTION - 348)) | (1L << (ENCRYPTION_KEY_ID - 348)) | (1L << (END - 348)) | (1L << (ENDS - 348)))) != 0) || ((((_la - 412)) & ~0x3f) == 0 && ((1L << (_la - 412)) & ((1L << (ENGINE - 412)) | (1L << (ENGINES - 412)) | (1L << (ERROR - 412)) | (1L << (ERRORS - 412)) | (1L << (ESCAPE - 412)) | (1L << (EVEN - 412)) | (1L << (EVENT - 412)) | (1L << (EVENTS - 412)) | (1L << (EVERY - 412)) | (1L << (EXCHANGE - 412)) | (1L << (EXCLUSIVE - 412)) | (1L << (EXPIRE - 412)) | (1L << (EXPORT - 412)) | (1L << (EXTENDED - 412)) | (1L << (EXTENT_SIZE - 412)) | (1L << (FAILED_LOGIN_ATTEMPTS - 412)) | (1L << (FAST - 412)) | (1L << (FAULTS - 412)) | (1L << (FIELDS - 412)) | (1L << (FILE_BLOCK_SIZE - 412)) | (1L << (FILTER - 412)) | (1L << (FIRST - 412)) | (1L << (FIXED - 412)) | (1L << (FLUSH - 412)) | (1L << (FOLLOWS - 412)) | (1L << (FOUND - 412)) | (1L << (FULL - 412)) | (1L << (FUNCTION - 412)) | (1L << (GENERAL - 412)) | (1L << (GLOBAL - 412)) | (1L << (GRANTS - 412)) | (1L << (GROUP_REPLICATION - 412)) | (1L << (HANDLER - 412)) | (1L << (HASH - 412)) | (1L << (HELP - 412)) | (1L << (HISTORY - 412)) | (1L << (HOST - 412)) | (1L << (HOSTS - 412)) | (1L << (IDENTIFIED - 412)) | (1L << (IGNORE_SERVER_IDS - 412)) | (1L << (IMPORT - 412)) | (1L << (INCREMENT - 412)) | (1L << (INDEXES - 412)) | (1L << (INITIAL_SIZE - 412)) | (1L << (INPLACE - 412)) | (1L << (INSERT_METHOD - 412)) | (1L << (INSTALL - 412)) | (1L << (INSTANCE - 412)) | (1L << (INSTANT - 412)) | (1L << (INVISIBLE - 412)) | (1L << (INVOKER - 412)) | (1L << (IO - 412)) | (1L << (IO_THREAD - 412)) | (1L << (IPC - 412)) | (1L << (ISOLATION - 412)) | (1L << (ISSUER - 412)) | (1L << (JSON - 412)) | (1L << (KEY_BLOCK_SIZE - 412)) | (1L << (LANGUAGE - 412)) | (1L << (LAST - 412)) | (1L << (LEAVES - 412)) | (1L << (LESS - 412)) | (1L << (LEVEL - 412)))) != 0) || ((((_la - 476)) & ~0x3f) == 0 && ((1L << (_la - 476)) & ((1L << (LIST - 476)) | (1L << (LOCAL - 476)) | (1L << (LOGFILE - 476)) | (1L << (LOGS - 476)) | (1L << (MASTER - 476)) | (1L << (MASTER_AUTO_POSITION - 476)) | (1L << (MASTER_CONNECT_RETRY - 476)) | (1L << (MASTER_DELAY - 476)) | (1L << (MASTER_HEARTBEAT_PERIOD - 476)) | (1L << (MASTER_HOST - 476)) | (1L << (MASTER_LOG_FILE - 476)) | (1L << (MASTER_LOG_POS - 476)) | (1L << (MASTER_PASSWORD - 476)) | (1L << (MASTER_PORT - 476)) | (1L << (MASTER_RETRY_COUNT - 476)) | (1L << (MASTER_SSL - 476)) | (1L << (MASTER_SSL_CA - 476)) | (1L << (MASTER_SSL_CAPATH - 476)) | (1L << (MASTER_SSL_CERT - 476)) | (1L << (MASTER_SSL_CIPHER - 476)) | (1L << (MASTER_SSL_CRL - 476)) | (1L << (MASTER_SSL_CRLPATH - 476)) | (1L << (MASTER_SSL_KEY - 476)) | (1L << (MASTER_TLS_VERSION - 476)) | (1L << (MASTER_USER - 476)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 476)) | (1L << (MAX_QUERIES_PER_HOUR - 476)) | (1L << (MAX_ROWS - 476)) | (1L << (MAX_SIZE - 476)) | (1L << (MAX_UPDATES_PER_HOUR - 476)) | (1L << (MAX_USER_CONNECTIONS - 476)) | (1L << (MEDIUM - 476)) | (1L << (MEMBER - 476)) | (1L << (MERGE - 476)) | (1L << (MESSAGE_TEXT - 476)) | (1L << (MID - 476)) | (1L << (MIGRATE - 476)) | (1L << (MIN_ROWS - 476)) | (1L << (MODE - 476)) | (1L << (MODIFY - 476)) | (1L << (MUTEX - 476)) | (1L << (MYSQL - 476)) | (1L << (MYSQL_ERRNO - 476)) | (1L << (NAME - 476)) | (1L << (NAMES - 476)) | (1L << (NCHAR - 476)) | (1L << (NEVER - 476)) | (1L << (NEXT - 476)) | (1L << (NO - 476)) | (1L << (NOCACHE - 476)) | (1L << (NOCOPY - 476)) | (1L << (NOCYCLE - 476)) | (1L << (NOMAXVALUE - 476)) | (1L << (NOMINVALUE - 476)) | (1L << (NOWAIT - 476)) | (1L << (NODEGROUP - 476)) | (1L << (NONE - 476)) | (1L << (ODBC - 476)) | (1L << (OFFLINE - 476)) | (1L << (OFFSET - 476)) | (1L << (OF - 476)) | (1L << (OJ - 476)) | (1L << (OLD_PASSWORD - 476)) | (1L << (ONE - 476)))) != 0) || ((((_la - 540)) & ~0x3f) == 0 && ((1L << (_la - 540)) & ((1L << (ONLINE - 540)) | (1L << (ONLY - 540)) | (1L << (OPEN - 540)) | (1L << (OPTIMIZER_COSTS - 540)) | (1L << (OPTIONS - 540)) | (1L << (OWNER - 540)) | (1L << (PACK_KEYS - 540)) | (1L << (PAGE - 540)) | (1L << (PARSER - 540)) | (1L << (PARTIAL - 540)) | (1L << (PARTITIONING - 540)) | (1L << (PARTITIONS - 540)) | (1L << (PASSWORD - 540)) | (1L << (PASSWORD_LOCK_TIME - 540)) | (1L << (PHASE - 540)) | (1L << (PLUGIN - 540)) | (1L << (PLUGIN_DIR - 540)) | (1L << (PLUGINS - 540)) | (1L << (PORT - 540)) | (1L << (PRECEDES - 540)) | (1L << (PREPARE - 540)) | (1L << (PRESERVE - 540)) | (1L << (PREV - 540)) | (1L << (PROCESSLIST - 540)) | (1L << (PROFILE - 540)) | (1L << (PROFILES - 540)) | (1L << (PROXY - 540)) | (1L << (QUERY - 540)) | (1L << (QUICK - 540)) | (1L << (REBUILD - 540)) | (1L << (RECOVER - 540)) | (1L << (RECURSIVE - 540)) | (1L << (REDO_BUFFER_SIZE - 540)) | (1L << (REDUNDANT - 540)) | (1L << (RELAY - 540)) | (1L << (RELAY_LOG_FILE - 540)) | (1L << (RELAY_LOG_POS - 540)) | (1L << (RELAYLOG - 540)) | (1L << (REMOVE - 540)) | (1L << (REORGANIZE - 540)) | (1L << (REPAIR - 540)) | (1L << (REPLICATE_DO_DB - 540)) | (1L << (REPLICATE_DO_TABLE - 540)) | (1L << (REPLICATE_IGNORE_DB - 540)) | (1L << (REPLICATE_IGNORE_TABLE - 540)) | (1L << (REPLICATE_REWRITE_DB - 540)) | (1L << (REPLICATE_WILD_DO_TABLE - 540)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 540)) | (1L << (REPLICATION - 540)) | (1L << (RESET - 540)) | (1L << (RESTART - 540)) | (1L << (RESUME - 540)) | (1L << (RETURNED_SQLSTATE - 540)) | (1L << (RETURNING - 540)) | (1L << (RETURNS - 540)) | (1L << (REUSE - 540)) | (1L << (ROLE - 540)) | (1L << (ROLLBACK - 540)) | (1L << (ROLLUP - 540)) | (1L << (ROTATE - 540)) | (1L << (ROW - 540)))) != 0) || ((((_la - 604)) & ~0x3f) == 0 && ((1L << (_la - 604)) & ((1L << (ROWS - 604)) | (1L << (ROW_FORMAT - 604)) | (1L << (RTREE - 604)) | (1L << (SAVEPOINT - 604)) | (1L << (SCHEDULE - 604)) | (1L << (SECURITY - 604)) | (1L << (SEQUENCE - 604)) | (1L << (SERVER - 604)) | (1L << (SESSION - 604)) | (1L << (SHARE - 604)) | (1L << (SHARED - 604)) | (1L << (SIGNED - 604)) | (1L << (SIMPLE - 604)) | (1L << (SLAVE - 604)) | (1L << (SLOW - 604)) | (1L << (SNAPSHOT - 604)) | (1L << (SOCKET - 604)) | (1L << (SOME - 604)) | (1L << (SONAME - 604)) | (1L << (SOUNDS - 604)) | (1L << (SOURCE - 604)) | (1L << (SQL_AFTER_GTIDS - 604)) | (1L << (SQL_AFTER_MTS_GAPS - 604)) | (1L << (SQL_BEFORE_GTIDS - 604)) | (1L << (SQL_BUFFER_RESULT - 604)) | (1L << (SQL_CACHE - 604)) | (1L << (SQL_NO_CACHE - 604)) | (1L << (SQL_THREAD - 604)) | (1L << (START - 604)) | (1L << (STARTS - 604)) | (1L << (STATS_AUTO_RECALC - 604)) | (1L << (STATS_PERSISTENT - 604)) | (1L << (STATS_SAMPLE_PAGES - 604)) | (1L << (STATUS - 604)) | (1L << (STOP - 604)) | (1L << (STORAGE - 604)) | (1L << (STRING - 604)) | (1L << (SUBCLASS_ORIGIN - 604)) | (1L << (SUBJECT - 604)) | (1L << (SUBPARTITION - 604)) | (1L << (SUBPARTITIONS - 604)) | (1L << (SUSPEND - 604)) | (1L << (SWAPS - 604)) | (1L << (SWITCHES - 604)) | (1L << (TABLE_NAME - 604)) | (1L << (TABLESPACE - 604)) | (1L << (TABLE_TYPE - 604)) | (1L << (TEMPORARY - 604)) | (1L << (TEMPTABLE - 604)) | (1L << (THAN - 604)) | (1L << (TRADITIONAL - 604)) | (1L << (TRANSACTION - 604)) | (1L << (TRANSACTIONAL - 604)) | (1L << (TRIGGERS - 604)) | (1L << (TRUNCATE - 604)) | (1L << (UNBOUNDED - 604)) | (1L << (UNDEFINED - 604)) | (1L << (UNDOFILE - 604)) | (1L << (UNDO_BUFFER_SIZE - 604)) | (1L << (UNINSTALL - 604)) | (1L << (UNKNOWN - 604)) | (1L << (UNTIL - 604)) | (1L << (UPGRADE - 604)))) != 0) || ((((_la - 668)) & ~0x3f) == 0 && ((1L << (_la - 668)) & ((1L << (USER - 668)) | (1L << (USE_FRM - 668)) | (1L << (USER_RESOURCES - 668)) | (1L << (VALIDATION - 668)) | (1L << (VALUE - 668)) | (1L << (VARIABLES - 668)) | (1L << (VIEW - 668)) | (1L << (VIRTUAL - 668)) | (1L << (VISIBLE - 668)) | (1L << (WAIT - 668)) | (1L << (WARNINGS - 668)) | (1L << (WITHOUT - 668)) | (1L << (WORK - 668)) | (1L << (WRAPPER - 668)) | (1L << (X509 - 668)) | (1L << (XA - 668)) | (1L << (XML - 668)) | (1L << (YES - 668)) | (1L << (EUR - 668)) | (1L << (USA - 668)) | (1L << (JIS - 668)) | (1L << (ISO - 668)) | (1L << (INTERNAL - 668)) | (1L << (QUARTER - 668)) | (1L << (MONTH - 668)) | (1L << (DAY - 668)) | (1L << (HOUR - 668)) | (1L << (MINUTE - 668)) | (1L << (WEEK - 668)) | (1L << (SECOND - 668)) | (1L << (MICROSECOND - 668)) | (1L << (USER_STATISTICS - 668)) | (1L << (CLIENT_STATISTICS - 668)) | (1L << (INDEX_STATISTICS - 668)) | (1L << (TABLE_STATISTICS - 668)) | (1L << (FIREWALL_RULES - 668)) | (1L << (ADMIN - 668)) | (1L << (APPLICATION_PASSWORD_ADMIN - 668)) | (1L << (AUDIT_ADMIN - 668)) | (1L << (AUDIT_ABORT_EXEMPT - 668)) | (1L << (AUTHENTICATION_POLICY_ADMIN - 668)) | (1L << (BACKUP_ADMIN - 668)) | (1L << (BINLOG_ADMIN - 668)) | (1L << (BINLOG_ENCRYPTION_ADMIN - 668)) | (1L << (CLONE_ADMIN - 668)) | (1L << (CONNECTION_ADMIN - 668)) | (1L << (ENCRYPTION_KEY_ADMIN - 668)) | (1L << (EXECUTE - 668)) | (1L << (FILE - 668)) | (1L << (FIREWALL_ADMIN - 668)) | (1L << (FIREWALL_EXEMPT - 668)) | (1L << (FIREWALL_USER - 668)) | (1L << (FLUSH_OPTIMIZER_COSTS - 668)) | (1L << (FLUSH_STATUS - 668)) | (1L << (FLUSH_TABLES - 668)) | (1L << (FLUSH_USER_RESOURCES - 668)) | (1L << (GROUP_REPLICATION_ADMIN - 668)) | (1L << (INNODB_REDO_LOG_ARCHIVE - 668)) | (1L << (INNODB_REDO_LOG_ENABLE - 668)) | (1L << (INVOKE - 668)) | (1L << (LAMBDA - 668)) | (1L << (NDB_STORED_USER - 668)) | (1L << (PASSWORDLESS_USER_ADMIN - 668)))) != 0) || ((((_la - 732)) & ~0x3f) == 0 && ((1L << (_la - 732)) & ((1L << (PERSIST_RO_VARIABLES_ADMIN - 732)) | (1L << (PRIVILEGES - 732)) | (1L << (PROCESS - 732)) | (1L << (RELOAD - 732)) | (1L << (REPLICATION_APPLIER - 732)) | (1L << (REPLICATION_SLAVE_ADMIN - 732)) | (1L << (RESOURCE_GROUP_ADMIN - 732)) | (1L << (RESOURCE_GROUP_USER - 732)) | (1L << (ROLE_ADMIN - 732)) | (1L << (ROUTINE - 732)) | (1L << (S3 - 732)) | (1L << (SESSION_VARIABLES_ADMIN - 732)) | (1L << (SET_USER_ID - 732)) | (1L << (SHOW_ROUTINE - 732)) | (1L << (SHUTDOWN - 732)) | (1L << (SUPER - 732)) | (1L << (SYSTEM_VARIABLES_ADMIN - 732)) | (1L << (TABLES - 732)) | (1L << (TABLE_ENCRYPTION_ADMIN - 732)) | (1L << (VERSION_TOKEN_ADMIN - 732)) | (1L << (XA_RECOVER_ADMIN - 732)) | (1L << (ARMSCII8 - 732)) | (1L << (ASCII - 732)) | (1L << (BIG5 - 732)) | (1L << (CP1250 - 732)) | (1L << (CP1251 - 732)) | (1L << (CP1256 - 732)) | (1L << (CP1257 - 732)) | (1L << (CP850 - 732)) | (1L << (CP852 - 732)) | (1L << (CP866 - 732)) | (1L << (CP932 - 732)) | (1L << (DEC8 - 732)) | (1L << (EUCJPMS - 732)) | (1L << (EUCKR - 732)) | (1L << (GB18030 - 732)) | (1L << (GB2312 - 732)) | (1L << (GBK - 732)) | (1L << (GEOSTD8 - 732)) | (1L << (GREEK - 732)) | (1L << (HEBREW - 732)) | (1L << (HP8 - 732)) | (1L << (KEYBCS2 - 732)) | (1L << (KOI8R - 732)) | (1L << (KOI8U - 732)) | (1L << (LATIN1 - 732)) | (1L << (LATIN2 - 732)) | (1L << (LATIN5 - 732)) | (1L << (LATIN7 - 732)) | (1L << (MACCE - 732)) | (1L << (MACROMAN - 732)) | (1L << (SJIS - 732)) | (1L << (SWE7 - 732)) | (1L << (TIS620 - 732)) | (1L << (UCS2 - 732)) | (1L << (UJIS - 732)) | (1L << (UTF16 - 732)) | (1L << (UTF16LE - 732)) | (1L << (UTF32 - 732)) | (1L << (UTF8 - 732)) | (1L << (UTF8MB3 - 732)) | (1L << (UTF8MB4 - 732)) | (1L << (ARCHIVE - 732)))) != 0) || ((((_la - 796)) & ~0x3f) == 0 && ((1L << (_la - 796)) & ((1L << (BLACKHOLE - 796)) | (1L << (CSV - 796)) | (1L << (FEDERATED - 796)) | (1L << (INNODB - 796)) | (1L << (MEMORY - 796)) | (1L << (MRG_MYISAM - 796)) | (1L << (MYISAM - 796)) | (1L << (NDB - 796)) | (1L << (NDBCLUSTER - 796)) | (1L << (PERFORMANCE_SCHEMA - 796)) | (1L << (TOKUDB - 796)) | (1L << (REPEATABLE - 796)) | (1L << (COMMITTED - 796)) | (1L << (UNCOMMITTED - 796)) | (1L << (SERIALIZABLE - 796)) | (1L << (GEOMETRYCOLLECTION - 796)) | (1L << (GEOMETRY - 796)) | (1L << (LINESTRING - 796)) | (1L << (MULTILINESTRING - 796)) | (1L << (MULTIPOINT - 796)) | (1L << (MULTIPOLYGON - 796)) | (1L << (POINT - 796)) | (1L << (POLYGON - 796)) | (1L << (ABS - 796)) | (1L << (ACOS - 796)) | (1L << (ADDDATE - 796)) | (1L << (ADDTIME - 796)) | (1L << (AES_DECRYPT - 796)) | (1L << (AES_ENCRYPT - 796)) | (1L << (AREA - 796)) | (1L << (ASBINARY - 796)) | (1L << (ASIN - 796)) | (1L << (ASTEXT - 796)) | (1L << (ASWKB - 796)) | (1L << (ASWKT - 796)) | (1L << (ASYMMETRIC_DECRYPT - 796)) | (1L << (ASYMMETRIC_DERIVE - 796)) | (1L << (ASYMMETRIC_ENCRYPT - 796)) | (1L << (ASYMMETRIC_SIGN - 796)) | (1L << (ASYMMETRIC_VERIFY - 796)) | (1L << (ATAN - 796)) | (1L << (ATAN2 - 796)) | (1L << (BENCHMARK - 796)) | (1L << (BIN - 796)) | (1L << (BIT_COUNT - 796)) | (1L << (BIT_LENGTH - 796)) | (1L << (BUFFER - 796)) | (1L << (CATALOG_NAME - 796)) | (1L << (CEIL - 796)) | (1L << (CEILING - 796)) | (1L << (CENTROID - 796)) | (1L << (CHARACTER_LENGTH - 796)) | (1L << (CHARSET - 796)) | (1L << (CHAR_LENGTH - 796)) | (1L << (COERCIBILITY - 796)) | (1L << (COLLATION - 796)) | (1L << (COMPRESS - 796)) | (1L << (CONCAT - 796)) | (1L << (CONCAT_WS - 796)) | (1L << (CONNECTION_ID - 796)) | (1L << (CONV - 796)) | (1L << (CONVERT_TZ - 796)) | (1L << (COS - 796)))) != 0) || ((((_la - 860)) & ~0x3f) == 0 && ((1L << (_la - 860)) & ((1L << (COT - 860)) | (1L << (CRC32 - 860)) | (1L << (CREATE_ASYMMETRIC_PRIV_KEY - 860)) | (1L << (CREATE_ASYMMETRIC_PUB_KEY - 860)) | (1L << (CREATE_DH_PARAMETERS - 860)) | (1L << (CREATE_DIGEST - 860)) | (1L << (CROSSES - 860)) | (1L << (DATEDIFF - 860)) | (1L << (DATE_FORMAT - 860)) | (1L << (DAYNAME - 860)) | (1L << (DAYOFMONTH - 860)) | (1L << (DAYOFWEEK - 860)) | (1L << (DAYOFYEAR - 860)) | (1L << (DECODE - 860)) | (1L << (DEGREES - 860)) | (1L << (DES_DECRYPT - 860)) | (1L << (DES_ENCRYPT - 860)) | (1L << (DIMENSION - 860)) | (1L << (DISJOINT - 860)) | (1L << (ELT - 860)) | (1L << (ENCODE - 860)) | (1L << (ENCRYPT - 860)) | (1L << (ENDPOINT - 860)) | (1L << (ENGINE_ATTRIBUTE - 860)) | (1L << (ENVELOPE - 860)) | (1L << (EQUALS - 860)) | (1L << (EXP - 860)) | (1L << (EXPORT_SET - 860)) | (1L << (EXTERIORRING - 860)) | (1L << (EXTRACTVALUE - 860)) | (1L << (FIELD - 860)) | (1L << (FIND_IN_SET - 860)) | (1L << (FLOOR - 860)) | (1L << (FORMAT - 860)) | (1L << (FOUND_ROWS - 860)) | (1L << (FROM_BASE64 - 860)) | (1L << (FROM_DAYS - 860)) | (1L << (FROM_UNIXTIME - 860)) | (1L << (GEOMCOLLFROMTEXT - 860)) | (1L << (GEOMCOLLFROMWKB - 860)) | (1L << (GEOMETRYCOLLECTIONFROMTEXT - 860)) | (1L << (GEOMETRYCOLLECTIONFROMWKB - 860)) | (1L << (GEOMETRYFROMTEXT - 860)) | (1L << (GEOMETRYFROMWKB - 860)) | (1L << (GEOMETRYN - 860)) | (1L << (GEOMETRYTYPE - 860)) | (1L << (GEOMFROMTEXT - 860)) | (1L << (GEOMFROMWKB - 860)) | (1L << (GET_FORMAT - 860)) | (1L << (GET_LOCK - 860)) | (1L << (GLENGTH - 860)) | (1L << (GREATEST - 860)) | (1L << (GTID_SUBSET - 860)) | (1L << (GTID_SUBTRACT - 860)) | (1L << (HEX - 860)) | (1L << (IFNULL - 860)) | (1L << (INET6_ATON - 860)) | (1L << (INET6_NTOA - 860)) | (1L << (INET_ATON - 860)) | (1L << (INET_NTOA - 860)) | (1L << (INSTR - 860)) | (1L << (INTERIORRINGN - 860)) | (1L << (INTERSECTS - 860)) | (1L << (ISCLOSED - 860)))) != 0) || ((((_la - 924)) & ~0x3f) == 0 && ((1L << (_la - 924)) & ((1L << (ISEMPTY - 924)) | (1L << (ISNULL - 924)) | (1L << (ISSIMPLE - 924)) | (1L << (IS_FREE_LOCK - 924)) | (1L << (IS_IPV4 - 924)) | (1L << (IS_IPV4_COMPAT - 924)) | (1L << (IS_IPV4_MAPPED - 924)) | (1L << (IS_IPV6 - 924)) | (1L << (IS_USED_LOCK - 924)) | (1L << (LAST_INSERT_ID - 924)) | (1L << (LCASE - 924)) | (1L << (LEAST - 924)) | (1L << (LENGTH - 924)) | (1L << (LINEFROMTEXT - 924)) | (1L << (LINEFROMWKB - 924)) | (1L << (LINESTRINGFROMTEXT - 924)) | (1L << (LINESTRINGFROMWKB - 924)) | (1L << (LN - 924)) | (1L << (LOAD_FILE - 924)) | (1L << (LOCATE - 924)) | (1L << (LOG - 924)) | (1L << (LOG10 - 924)) | (1L << (LOG2 - 924)) | (1L << (LOWER - 924)) | (1L << (LPAD - 924)) | (1L << (LTRIM - 924)) | (1L << (MAKEDATE - 924)) | (1L << (MAKETIME - 924)) | (1L << (MAKE_SET - 924)) | (1L << (MASTER_POS_WAIT - 924)) | (1L << (MBRCONTAINS - 924)) | (1L << (MBRDISJOINT - 924)) | (1L << (MBREQUAL - 924)) | (1L << (MBRINTERSECTS - 924)) | (1L << (MBROVERLAPS - 924)) | (1L << (MBRTOUCHES - 924)) | (1L << (MBRWITHIN - 924)) | (1L << (MD5 - 924)) | (1L << (MLINEFROMTEXT - 924)) | (1L << (MLINEFROMWKB - 924)) | (1L << (MONTHNAME - 924)) | (1L << (MPOINTFROMTEXT - 924)) | (1L << (MPOINTFROMWKB - 924)) | (1L << (MPOLYFROMTEXT - 924)) | (1L << (MPOLYFROMWKB - 924)) | (1L << (MULTILINESTRINGFROMTEXT - 924)) | (1L << (MULTILINESTRINGFROMWKB - 924)) | (1L << (MULTIPOINTFROMTEXT - 924)) | (1L << (MULTIPOINTFROMWKB - 924)) | (1L << (MULTIPOLYGONFROMTEXT - 924)) | (1L << (MULTIPOLYGONFROMWKB - 924)) | (1L << (NAME_CONST - 924)) | (1L << (NULLIF - 924)) | (1L << (NUMGEOMETRIES - 924)) | (1L << (NUMINTERIORRINGS - 924)) | (1L << (NUMPOINTS - 924)) | (1L << (OCT - 924)) | (1L << (OCTET_LENGTH - 924)) | (1L << (ORD - 924)) | (1L << (OVERLAPS - 924)) | (1L << (PERIOD_ADD - 924)) | (1L << (PERIOD_DIFF - 924)) | (1L << (PI - 924)) | (1L << (POINTFROMTEXT - 924)))) != 0) || ((((_la - 988)) & ~0x3f) == 0 && ((1L << (_la - 988)) & ((1L << (POINTFROMWKB - 988)) | (1L << (POINTN - 988)) | (1L << (POLYFROMTEXT - 988)) | (1L << (POLYFROMWKB - 988)) | (1L << (POLYGONFROMTEXT - 988)) | (1L << (POLYGONFROMWKB - 988)) | (1L << (POW - 988)) | (1L << (POWER - 988)) | (1L << (QUOTE - 988)) | (1L << (RADIANS - 988)) | (1L << (RAND - 988)) | (1L << (RANDOM - 988)) | (1L << (RANDOM_BYTES - 988)) | (1L << (RELEASE_LOCK - 988)) | (1L << (REVERSE - 988)) | (1L << (ROUND - 988)) | (1L << (ROW_COUNT - 988)) | (1L << (RPAD - 988)) | (1L << (RTRIM - 988)) | (1L << (SEC_TO_TIME - 988)) | (1L << (SECONDARY_ENGINE_ATTRIBUTE - 988)) | (1L << (SENSITIVE_VARIABLES_OBSERVER - 988)) | (1L << (SESSION_USER - 988)) | (1L << (SHA - 988)) | (1L << (SHA1 - 988)) | (1L << (SHA2 - 988)) | (1L << (SCHEMA_NAME - 988)) | (1L << (SIGN - 988)) | (1L << (SIN - 988)) | (1L << (SLEEP - 988)) | (1L << (SOUNDEX - 988)) | (1L << (SQL_THREAD_WAIT_AFTER_GTIDS - 988)) | (1L << (SQRT - 988)) | (1L << (SRID - 988)) | (1L << (STARTPOINT - 988)) | (1L << (STRCMP - 988)) | (1L << (STR_TO_DATE - 988)) | (1L << (ST_AREA - 988)) | (1L << (ST_ASBINARY - 988)) | (1L << (ST_ASTEXT - 988)) | (1L << (ST_ASWKB - 988)) | (1L << (ST_ASWKT - 988)) | (1L << (ST_BUFFER - 988)) | (1L << (ST_CENTROID - 988)) | (1L << (ST_CONTAINS - 988)) | (1L << (ST_CROSSES - 988)) | (1L << (ST_DIFFERENCE - 988)) | (1L << (ST_DIMENSION - 988)) | (1L << (ST_DISJOINT - 988)) | (1L << (ST_DISTANCE - 988)) | (1L << (ST_ENDPOINT - 988)) | (1L << (ST_ENVELOPE - 988)) | (1L << (ST_EQUALS - 988)) | (1L << (ST_EXTERIORRING - 988)) | (1L << (ST_GEOMCOLLFROMTEXT - 988)) | (1L << (ST_GEOMCOLLFROMTXT - 988)) | (1L << (ST_GEOMCOLLFROMWKB - 988)) | (1L << (ST_GEOMETRYCOLLECTIONFROMTEXT - 988)) | (1L << (ST_GEOMETRYCOLLECTIONFROMWKB - 988)) | (1L << (ST_GEOMETRYFROMTEXT - 988)) | (1L << (ST_GEOMETRYFROMWKB - 988)) | (1L << (ST_GEOMETRYN - 988)) | (1L << (ST_GEOMETRYTYPE - 988)) | (1L << (ST_GEOMFROMTEXT - 988)))) != 0) || ((((_la - 1052)) & ~0x3f) == 0 && ((1L << (_la - 1052)) & ((1L << (ST_GEOMFROMWKB - 1052)) | (1L << (ST_INTERIORRINGN - 1052)) | (1L << (ST_INTERSECTION - 1052)) | (1L << (ST_INTERSECTS - 1052)) | (1L << (ST_ISCLOSED - 1052)) | (1L << (ST_ISEMPTY - 1052)) | (1L << (ST_ISSIMPLE - 1052)) | (1L << (ST_LINEFROMTEXT - 1052)) | (1L << (ST_LINEFROMWKB - 1052)) | (1L << (ST_LINESTRINGFROMTEXT - 1052)) | (1L << (ST_LINESTRINGFROMWKB - 1052)) | (1L << (ST_NUMGEOMETRIES - 1052)) | (1L << (ST_NUMINTERIORRING - 1052)) | (1L << (ST_NUMINTERIORRINGS - 1052)) | (1L << (ST_NUMPOINTS - 1052)) | (1L << (ST_OVERLAPS - 1052)) | (1L << (ST_POINTFROMTEXT - 1052)) | (1L << (ST_POINTFROMWKB - 1052)) | (1L << (ST_POINTN - 1052)) | (1L << (ST_POLYFROMTEXT - 1052)) | (1L << (ST_POLYFROMWKB - 1052)) | (1L << (ST_POLYGONFROMTEXT - 1052)) | (1L << (ST_POLYGONFROMWKB - 1052)) | (1L << (ST_SRID - 1052)) | (1L << (ST_STARTPOINT - 1052)) | (1L << (ST_SYMDIFFERENCE - 1052)) | (1L << (ST_TOUCHES - 1052)) | (1L << (ST_UNION - 1052)) | (1L << (ST_WITHIN - 1052)) | (1L << (ST_X - 1052)) | (1L << (ST_Y - 1052)) | (1L << (SUBDATE - 1052)) | (1L << (SUBSTRING_INDEX - 1052)) | (1L << (SUBTIME - 1052)) | (1L << (SYSTEM_USER - 1052)) | (1L << (SYSTEM - 1052)) | (1L << (TAN - 1052)) | (1L << (TELEMETRY_LOG_ADMIN - 1052)) | (1L << (TIMEDIFF - 1052)) | (1L << (TIMESTAMPADD - 1052)) | (1L << (TIMESTAMPDIFF - 1052)) | (1L << (TIME_FORMAT - 1052)) | (1L << (TIME_TO_SEC - 1052)) | (1L << (TOUCHES - 1052)) | (1L << (TO_BASE64 - 1052)) | (1L << (TO_DAYS - 1052)) | (1L << (TO_SECONDS - 1052)) | (1L << (TP_CONNECTION_ADMIN - 1052)) | (1L << (UCASE - 1052)) | (1L << (UNCOMPRESS - 1052)) | (1L << (UNCOMPRESSED_LENGTH - 1052)) | (1L << (UNHEX - 1052)) | (1L << (UNIX_TIMESTAMP - 1052)) | (1L << (UPDATEXML - 1052)) | (1L << (UPPER - 1052)) | (1L << (UUID - 1052)) | (1L << (UUID_SHORT - 1052)) | (1L << (VALIDATE_PASSWORD_STRENGTH - 1052)) | (1L << (VERSION - 1052)) | (1L << (VERSIONING - 1052)) | (1L << (WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS - 1052)) | (1L << (WEEKDAY - 1052)) | (1L << (WEEKOFYEAR - 1052)) | (1L << (WEIGHT_STRING - 1052)))) != 0) || ((((_la - 1116)) & ~0x3f) == 0 && ((1L << (_la - 1116)) & ((1L << (WITHIN - 1116)) | (1L << (YEARWEEK - 1116)) | (1L << (Y_FUNCTION - 1116)) | (1L << (X_FUNCTION - 1116)) | (1L << (VIA - 1116)) | (1L << (LASTVAL - 1116)) | (1L << (NEXTVAL - 1116)) | (1L << (SETVAL - 1116)) | (1L << (PREVIOUS - 1116)) | (1L << (PERSISTENT - 1116)) | (1L << (BINLOG_MONITOR - 1116)) | (1L << (BINLOG_REPLAY - 1116)) | (1L << (FEDERATED_ADMIN - 1116)) | (1L << (READ_ONLY_ADMIN - 1116)) | (1L << (REPLICA - 1116)) | (1L << (REPLICATION_MASTER_ADMIN - 1116)) | (1L << (MONITOR - 1116)) | (1L << (READ_ONLY - 1116)) | (1L << (REPLAY - 1116)) | (1L << (MOD - 1116)) | (1L << (CHARSET_REVERSE_QOUTE_STRING - 1116)) | (1L << (STRING_LITERAL - 1116)))) != 0) || _la==ID) {
				{
				setState(5161);
				uid();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CursorStatementContext extends ParserRuleContext {
		public CursorStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_cursorStatement; }
	 
		public CursorStatementContext() { }
		public void copyFrom(CursorStatementContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class CloseCursorContext extends CursorStatementContext {
		public TerminalNode CLOSE() { return getToken(MySqlParser.CLOSE, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public CloseCursorContext(CursorStatementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCloseCursor(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCloseCursor(this);
		}
	}
	public static class OpenCursorContext extends CursorStatementContext {
		public TerminalNode OPEN() { return getToken(MySqlParser.OPEN, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public OpenCursorContext(CursorStatementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterOpenCursor(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitOpenCursor(this);
		}
	}
	public static class FetchCursorContext extends CursorStatementContext {
		public TerminalNode FETCH() { return getToken(MySqlParser.FETCH, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode INTO() { return getToken(MySqlParser.INTO, 0); }
		public UidListContext uidList() {
			return getRuleContext(UidListContext.class,0);
		}
		public TerminalNode FROM() { return getToken(MySqlParser.FROM, 0); }
		public TerminalNode NEXT() { return getToken(MySqlParser.NEXT, 0); }
		public FetchCursorContext(CursorStatementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterFetchCursor(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitFetchCursor(this);
		}
	}

	public final CursorStatementContext cursorStatement() throws RecognitionException {
		CursorStatementContext _localctx = new CursorStatementContext(_ctx, getState());
		enterRule(_localctx, 426, RULE_cursorStatement);
		int _la;
		try {
			setState(5179);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case CLOSE:
				_localctx = new CloseCursorContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(5164);
				match(CLOSE);
				setState(5165);
				uid();
				}
				break;
			case FETCH:
				_localctx = new FetchCursorContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(5166);
				match(FETCH);
				setState(5171);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,774,_ctx) ) {
				case 1:
					{
					setState(5168);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==NEXT) {
						{
						setState(5167);
						match(NEXT);
						}
					}

					setState(5170);
					match(FROM);
					}
					break;
				}
				setState(5173);
				uid();
				setState(5174);
				match(INTO);
				setState(5175);
				uidList();
				}
				break;
			case OPEN:
				_localctx = new OpenCursorContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(5177);
				match(OPEN);
				setState(5178);
				uid();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DeclareVariableContext extends ParserRuleContext {
		public TerminalNode DECLARE() { return getToken(MySqlParser.DECLARE, 0); }
		public UidListContext uidList() {
			return getRuleContext(UidListContext.class,0);
		}
		public DataTypeContext dataType() {
			return getRuleContext(DataTypeContext.class,0);
		}
		public TerminalNode DEFAULT() { return getToken(MySqlParser.DEFAULT, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public DeclareVariableContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_declareVariable; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDeclareVariable(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDeclareVariable(this);
		}
	}

	public final DeclareVariableContext declareVariable() throws RecognitionException {
		DeclareVariableContext _localctx = new DeclareVariableContext(_ctx, getState());
		enterRule(_localctx, 428, RULE_declareVariable);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5181);
			match(DECLARE);
			setState(5182);
			uidList();
			setState(5183);
			dataType();
			setState(5186);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==DEFAULT) {
				{
				setState(5184);
				match(DEFAULT);
				setState(5185);
				expression(0);
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DeclareConditionContext extends ParserRuleContext {
		public TerminalNode DECLARE() { return getToken(MySqlParser.DECLARE, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode CONDITION() { return getToken(MySqlParser.CONDITION, 0); }
		public TerminalNode FOR() { return getToken(MySqlParser.FOR, 0); }
		public DecimalLiteralContext decimalLiteral() {
			return getRuleContext(DecimalLiteralContext.class,0);
		}
		public TerminalNode SQLSTATE() { return getToken(MySqlParser.SQLSTATE, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode VALUE() { return getToken(MySqlParser.VALUE, 0); }
		public DeclareConditionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_declareCondition; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDeclareCondition(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDeclareCondition(this);
		}
	}

	public final DeclareConditionContext declareCondition() throws RecognitionException {
		DeclareConditionContext _localctx = new DeclareConditionContext(_ctx, getState());
		enterRule(_localctx, 430, RULE_declareCondition);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5188);
			match(DECLARE);
			setState(5189);
			uid();
			setState(5190);
			match(CONDITION);
			setState(5191);
			match(FOR);
			setState(5198);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case ZERO_DECIMAL:
			case ONE_DECIMAL:
			case TWO_DECIMAL:
			case DECIMAL_LITERAL:
			case REAL_LITERAL:
				{
				setState(5192);
				decimalLiteral();
				}
				break;
			case SQLSTATE:
				{
				setState(5193);
				match(SQLSTATE);
				setState(5195);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==VALUE) {
					{
					setState(5194);
					match(VALUE);
					}
				}

				setState(5197);
				match(STRING_LITERAL);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DeclareCursorContext extends ParserRuleContext {
		public TerminalNode DECLARE() { return getToken(MySqlParser.DECLARE, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode CURSOR() { return getToken(MySqlParser.CURSOR, 0); }
		public TerminalNode FOR() { return getToken(MySqlParser.FOR, 0); }
		public SelectStatementContext selectStatement() {
			return getRuleContext(SelectStatementContext.class,0);
		}
		public DeclareCursorContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_declareCursor; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDeclareCursor(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDeclareCursor(this);
		}
	}

	public final DeclareCursorContext declareCursor() throws RecognitionException {
		DeclareCursorContext _localctx = new DeclareCursorContext(_ctx, getState());
		enterRule(_localctx, 432, RULE_declareCursor);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5200);
			match(DECLARE);
			setState(5201);
			uid();
			setState(5202);
			match(CURSOR);
			setState(5203);
			match(FOR);
			setState(5204);
			selectStatement();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DeclareHandlerContext extends ParserRuleContext {
		public Token handlerAction;
		public TerminalNode DECLARE() { return getToken(MySqlParser.DECLARE, 0); }
		public TerminalNode HANDLER() { return getToken(MySqlParser.HANDLER, 0); }
		public TerminalNode FOR() { return getToken(MySqlParser.FOR, 0); }
		public List handlerConditionValue() {
			return getRuleContexts(HandlerConditionValueContext.class);
		}
		public HandlerConditionValueContext handlerConditionValue(int i) {
			return getRuleContext(HandlerConditionValueContext.class,i);
		}
		public RoutineBodyContext routineBody() {
			return getRuleContext(RoutineBodyContext.class,0);
		}
		public TerminalNode CONTINUE() { return getToken(MySqlParser.CONTINUE, 0); }
		public TerminalNode EXIT() { return getToken(MySqlParser.EXIT, 0); }
		public TerminalNode UNDO() { return getToken(MySqlParser.UNDO, 0); }
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public DeclareHandlerContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_declareHandler; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDeclareHandler(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDeclareHandler(this);
		}
	}

	public final DeclareHandlerContext declareHandler() throws RecognitionException {
		DeclareHandlerContext _localctx = new DeclareHandlerContext(_ctx, getState());
		enterRule(_localctx, 434, RULE_declareHandler);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5206);
			match(DECLARE);
			setState(5207);
			((DeclareHandlerContext)_localctx).handlerAction = _input.LT(1);
			_la = _input.LA(1);
			if ( !(_la==CONTINUE || _la==EXIT || _la==UNDO) ) {
				((DeclareHandlerContext)_localctx).handlerAction = (Token)_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(5208);
			match(HANDLER);
			setState(5209);
			match(FOR);
			setState(5210);
			handlerConditionValue();
			setState(5215);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(5211);
				match(COMMA);
				setState(5212);
				handlerConditionValue();
				}
				}
				setState(5217);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(5218);
			routineBody();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class HandlerConditionValueContext extends ParserRuleContext {
		public HandlerConditionValueContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_handlerConditionValue; }
	 
		public HandlerConditionValueContext() { }
		public void copyFrom(HandlerConditionValueContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class HandlerConditionWarningContext extends HandlerConditionValueContext {
		public TerminalNode SQLWARNING() { return getToken(MySqlParser.SQLWARNING, 0); }
		public HandlerConditionWarningContext(HandlerConditionValueContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterHandlerConditionWarning(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitHandlerConditionWarning(this);
		}
	}
	public static class HandlerConditionCodeContext extends HandlerConditionValueContext {
		public DecimalLiteralContext decimalLiteral() {
			return getRuleContext(DecimalLiteralContext.class,0);
		}
		public HandlerConditionCodeContext(HandlerConditionValueContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterHandlerConditionCode(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitHandlerConditionCode(this);
		}
	}
	public static class HandlerConditionNotfoundContext extends HandlerConditionValueContext {
		public TerminalNode NOT() { return getToken(MySqlParser.NOT, 0); }
		public TerminalNode FOUND() { return getToken(MySqlParser.FOUND, 0); }
		public HandlerConditionNotfoundContext(HandlerConditionValueContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterHandlerConditionNotfound(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitHandlerConditionNotfound(this);
		}
	}
	public static class HandlerConditionStateContext extends HandlerConditionValueContext {
		public TerminalNode SQLSTATE() { return getToken(MySqlParser.SQLSTATE, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode VALUE() { return getToken(MySqlParser.VALUE, 0); }
		public HandlerConditionStateContext(HandlerConditionValueContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterHandlerConditionState(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitHandlerConditionState(this);
		}
	}
	public static class HandlerConditionExceptionContext extends HandlerConditionValueContext {
		public TerminalNode SQLEXCEPTION() { return getToken(MySqlParser.SQLEXCEPTION, 0); }
		public HandlerConditionExceptionContext(HandlerConditionValueContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterHandlerConditionException(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitHandlerConditionException(this);
		}
	}
	public static class HandlerConditionNameContext extends HandlerConditionValueContext {
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public HandlerConditionNameContext(HandlerConditionValueContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterHandlerConditionName(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitHandlerConditionName(this);
		}
	}

	public final HandlerConditionValueContext handlerConditionValue() throws RecognitionException {
		HandlerConditionValueContext _localctx = new HandlerConditionValueContext(_ctx, getState());
		enterRule(_localctx, 436, RULE_handlerConditionValue);
		int _la;
		try {
			setState(5231);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case ZERO_DECIMAL:
			case ONE_DECIMAL:
			case TWO_DECIMAL:
			case DECIMAL_LITERAL:
			case REAL_LITERAL:
				_localctx = new HandlerConditionCodeContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(5220);
				decimalLiteral();
				}
				break;
			case SQLSTATE:
				_localctx = new HandlerConditionStateContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(5221);
				match(SQLSTATE);
				setState(5223);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==VALUE) {
					{
					setState(5222);
					match(VALUE);
					}
				}

				setState(5225);
				match(STRING_LITERAL);
				}
				break;
			case ARRAY:
			case ATTRIBUTE:
			case BUCKETS:
			case CONDITION:
			case CURRENT:
			case CURRENT_ROLE:
			case CURRENT_USER:
			case DATABASE:
			case DEFAULT:
			case DIAGNOSTICS:
			case EMPTY:
			case ENFORCED:
			case EXCEPT:
			case GROUP:
			case GROUP_REPLICATION_STREAM:
			case IF:
			case IGNORED:
			case INSERT:
			case LATERAL:
			case LEFT:
			case LOCKED:
			case MAXVALUE:
			case MINVALUE:
			case NUMBER:
			case OPTIONAL:
			case ORDER:
			case PRIMARY:
			case REPEAT:
			case REPLACE:
			case RIGHT:
			case SCHEMA:
			case SKIP_:
			case SKIP_QUERY_REWRITE:
			case STACKED:
			case STATEMENT:
			case DATE:
			case TIME:
			case TIMESTAMP:
			case DATETIME:
			case YEAR:
			case NATIONAL:
			case BINARY:
			case TEXT:
			case ENUM:
			case SERIAL:
			case JSON_ARRAY:
			case JSON_ARRAYAGG:
			case JSON_ARRAY_APPEND:
			case JSON_ARRAY_INSERT:
			case JSON_CONTAINS:
			case JSON_CONTAINS_PATH:
			case JSON_DEPTH:
			case JSON_EXTRACT:
			case JSON_INSERT:
			case JSON_KEYS:
			case JSON_LENGTH:
			case JSON_MERGE:
			case JSON_MERGE_PATCH:
			case JSON_MERGE_PRESERVE:
			case JSON_OBJECT:
			case JSON_OBJECTAGG:
			case JSON_OVERLAPS:
			case JSON_PRETTY:
			case JSON_QUOTE:
			case JSON_REMOVE:
			case JSON_REPLACE:
			case JSON_SCHEMA_VALID:
			case JSON_SCHEMA_VALIDATION_REPORT:
			case JSON_SEARCH:
			case JSON_SET:
			case JSON_STORAGE_FREE:
			case JSON_STORAGE_SIZE:
			case JSON_TABLE:
			case JSON_TYPE:
			case JSON_UNQUOTE:
			case JSON_VALID:
			case JSON_VALUE:
			case NESTED:
			case ORDINALITY:
			case PATH:
			case AVG:
			case BIT_AND:
			case BIT_OR:
			case BIT_XOR:
			case COUNT:
			case CUME_DIST:
			case DENSE_RANK:
			case FIRST_VALUE:
			case GROUP_CONCAT:
			case LAG:
			case LAST_VALUE:
			case LEAD:
			case MAX:
			case MIN:
			case NTILE:
			case NTH_VALUE:
			case PERCENT_RANK:
			case RANK:
			case ROW_NUMBER:
			case STD:
			case STDDEV:
			case STDDEV_POP:
			case STDDEV_SAMP:
			case SUM:
			case VAR_POP:
			case VAR_SAMP:
			case VARIANCE:
			case CURRENT_DATE:
			case CURRENT_TIME:
			case CURRENT_TIMESTAMP:
			case LOCALTIME:
			case CURDATE:
			case CURTIME:
			case DATE_ADD:
			case DATE_SUB:
			case LOCALTIMESTAMP:
			case NOW:
			case POSITION:
			case SUBSTR:
			case SUBSTRING:
			case SYSDATE:
			case TRIM:
			case UTC_DATE:
			case UTC_TIME:
			case UTC_TIMESTAMP:
			case ACCOUNT:
			case ACTION:
			case AFTER:
			case AGGREGATE:
			case ALGORITHM:
			case ANY:
			case AT:
			case AUTHORS:
			case AUTOCOMMIT:
			case AUTOEXTEND_SIZE:
			case AUTO_INCREMENT:
			case AVG_ROW_LENGTH:
			case BEGIN:
			case BINLOG:
			case BIT:
			case BLOCK:
			case BOOL:
			case BOOLEAN:
			case BTREE:
			case CACHE:
			case CASCADED:
			case CHAIN:
			case CHANGED:
			case CHANNEL:
			case CHECKSUM:
			case PAGE_CHECKSUM:
			case CIPHER:
			case CLASS_ORIGIN:
			case CLIENT:
			case CLOSE:
			case CLUSTERING:
			case COALESCE:
			case CODE:
			case COLUMNS:
			case COLUMN_FORMAT:
			case COLUMN_NAME:
			case COMMENT:
			case COMMIT:
			case COMPACT:
			case COMPLETION:
			case COMPRESSED:
			case COMPRESSION:
			case CONCURRENT:
			case CONNECT:
			case CONNECTION:
			case CONSISTENT:
			case CONSTRAINT_CATALOG:
			case CONSTRAINT_SCHEMA:
			case CONSTRAINT_NAME:
			case CONTAINS:
			case CONTEXT:
			case CONTRIBUTORS:
			case COPY:
			case CPU:
			case CYCLE:
			case CURSOR_NAME:
			case DATA:
			case DATAFILE:
			case DEALLOCATE:
			case DEFAULT_AUTH:
			case DEFINER:
			case DELAY_KEY_WRITE:
			case DES_KEY_FILE:
			case DIRECTORY:
			case DISABLE:
			case DISCARD:
			case DISK:
			case DO:
			case DUMPFILE:
			case DUPLICATE:
			case DYNAMIC:
			case ENABLE:
			case ENCRYPTED:
			case ENCRYPTION:
			case ENCRYPTION_KEY_ID:
			case END:
			case ENDS:
			case ENGINE:
			case ENGINES:
			case ERROR:
			case ERRORS:
			case ESCAPE:
			case EVEN:
			case EVENT:
			case EVENTS:
			case EVERY:
			case EXCHANGE:
			case EXCLUSIVE:
			case EXPIRE:
			case EXPORT:
			case EXTENDED:
			case EXTENT_SIZE:
			case FAILED_LOGIN_ATTEMPTS:
			case FAST:
			case FAULTS:
			case FIELDS:
			case FILE_BLOCK_SIZE:
			case FILTER:
			case FIRST:
			case FIXED:
			case FLUSH:
			case FOLLOWS:
			case FOUND:
			case FULL:
			case FUNCTION:
			case GENERAL:
			case GLOBAL:
			case GRANTS:
			case GROUP_REPLICATION:
			case HANDLER:
			case HASH:
			case HELP:
			case HISTORY:
			case HOST:
			case HOSTS:
			case IDENTIFIED:
			case IGNORE_SERVER_IDS:
			case IMPORT:
			case INCREMENT:
			case INDEXES:
			case INITIAL_SIZE:
			case INPLACE:
			case INSERT_METHOD:
			case INSTALL:
			case INSTANCE:
			case INSTANT:
			case INVISIBLE:
			case INVOKER:
			case IO:
			case IO_THREAD:
			case IPC:
			case ISOLATION:
			case ISSUER:
			case JSON:
			case KEY_BLOCK_SIZE:
			case LANGUAGE:
			case LAST:
			case LEAVES:
			case LESS:
			case LEVEL:
			case LIST:
			case LOCAL:
			case LOGFILE:
			case LOGS:
			case MASTER:
			case MASTER_AUTO_POSITION:
			case MASTER_CONNECT_RETRY:
			case MASTER_DELAY:
			case MASTER_HEARTBEAT_PERIOD:
			case MASTER_HOST:
			case MASTER_LOG_FILE:
			case MASTER_LOG_POS:
			case MASTER_PASSWORD:
			case MASTER_PORT:
			case MASTER_RETRY_COUNT:
			case MASTER_SSL:
			case MASTER_SSL_CA:
			case MASTER_SSL_CAPATH:
			case MASTER_SSL_CERT:
			case MASTER_SSL_CIPHER:
			case MASTER_SSL_CRL:
			case MASTER_SSL_CRLPATH:
			case MASTER_SSL_KEY:
			case MASTER_TLS_VERSION:
			case MASTER_USER:
			case MAX_CONNECTIONS_PER_HOUR:
			case MAX_QUERIES_PER_HOUR:
			case MAX_ROWS:
			case MAX_SIZE:
			case MAX_UPDATES_PER_HOUR:
			case MAX_USER_CONNECTIONS:
			case MEDIUM:
			case MEMBER:
			case MERGE:
			case MESSAGE_TEXT:
			case MID:
			case MIGRATE:
			case MIN_ROWS:
			case MODE:
			case MODIFY:
			case MUTEX:
			case MYSQL:
			case MYSQL_ERRNO:
			case NAME:
			case NAMES:
			case NCHAR:
			case NEVER:
			case NEXT:
			case NO:
			case NOCACHE:
			case NOCOPY:
			case NOCYCLE:
			case NOMAXVALUE:
			case NOMINVALUE:
			case NOWAIT:
			case NODEGROUP:
			case NONE:
			case ODBC:
			case OFFLINE:
			case OFFSET:
			case OF:
			case OJ:
			case OLD_PASSWORD:
			case ONE:
			case ONLINE:
			case ONLY:
			case OPEN:
			case OPTIMIZER_COSTS:
			case OPTIONS:
			case OWNER:
			case PACK_KEYS:
			case PAGE:
			case PARSER:
			case PARTIAL:
			case PARTITIONING:
			case PARTITIONS:
			case PASSWORD:
			case PASSWORD_LOCK_TIME:
			case PHASE:
			case PLUGIN:
			case PLUGIN_DIR:
			case PLUGINS:
			case PORT:
			case PRECEDES:
			case PREPARE:
			case PRESERVE:
			case PREV:
			case PROCESSLIST:
			case PROFILE:
			case PROFILES:
			case PROXY:
			case QUERY:
			case QUICK:
			case REBUILD:
			case RECOVER:
			case RECURSIVE:
			case REDO_BUFFER_SIZE:
			case REDUNDANT:
			case RELAY:
			case RELAY_LOG_FILE:
			case RELAY_LOG_POS:
			case RELAYLOG:
			case REMOVE:
			case REORGANIZE:
			case REPAIR:
			case REPLICATE_DO_DB:
			case REPLICATE_DO_TABLE:
			case REPLICATE_IGNORE_DB:
			case REPLICATE_IGNORE_TABLE:
			case REPLICATE_REWRITE_DB:
			case REPLICATE_WILD_DO_TABLE:
			case REPLICATE_WILD_IGNORE_TABLE:
			case REPLICATION:
			case RESET:
			case RESTART:
			case RESUME:
			case RETURNED_SQLSTATE:
			case RETURNING:
			case RETURNS:
			case REUSE:
			case ROLE:
			case ROLLBACK:
			case ROLLUP:
			case ROTATE:
			case ROW:
			case ROWS:
			case ROW_FORMAT:
			case RTREE:
			case SAVEPOINT:
			case SCHEDULE:
			case SECURITY:
			case SEQUENCE:
			case SERVER:
			case SESSION:
			case SHARE:
			case SHARED:
			case SIGNED:
			case SIMPLE:
			case SLAVE:
			case SLOW:
			case SNAPSHOT:
			case SOCKET:
			case SOME:
			case SONAME:
			case SOUNDS:
			case SOURCE:
			case SQL_AFTER_GTIDS:
			case SQL_AFTER_MTS_GAPS:
			case SQL_BEFORE_GTIDS:
			case SQL_BUFFER_RESULT:
			case SQL_CACHE:
			case SQL_NO_CACHE:
			case SQL_THREAD:
			case START:
			case STARTS:
			case STATS_AUTO_RECALC:
			case STATS_PERSISTENT:
			case STATS_SAMPLE_PAGES:
			case STATUS:
			case STOP:
			case STORAGE:
			case STRING:
			case SUBCLASS_ORIGIN:
			case SUBJECT:
			case SUBPARTITION:
			case SUBPARTITIONS:
			case SUSPEND:
			case SWAPS:
			case SWITCHES:
			case TABLE_NAME:
			case TABLESPACE:
			case TABLE_TYPE:
			case TEMPORARY:
			case TEMPTABLE:
			case THAN:
			case TRADITIONAL:
			case TRANSACTION:
			case TRANSACTIONAL:
			case TRIGGERS:
			case TRUNCATE:
			case UNBOUNDED:
			case UNDEFINED:
			case UNDOFILE:
			case UNDO_BUFFER_SIZE:
			case UNINSTALL:
			case UNKNOWN:
			case UNTIL:
			case UPGRADE:
			case USER:
			case USE_FRM:
			case USER_RESOURCES:
			case VALIDATION:
			case VALUE:
			case VARIABLES:
			case VIEW:
			case VIRTUAL:
			case VISIBLE:
			case WAIT:
			case WARNINGS:
			case WITHOUT:
			case WORK:
			case WRAPPER:
			case X509:
			case XA:
			case XML:
			case YES:
			case EUR:
			case USA:
			case JIS:
			case ISO:
			case INTERNAL:
			case QUARTER:
			case MONTH:
			case DAY:
			case HOUR:
			case MINUTE:
			case WEEK:
			case SECOND:
			case MICROSECOND:
			case USER_STATISTICS:
			case CLIENT_STATISTICS:
			case INDEX_STATISTICS:
			case TABLE_STATISTICS:
			case FIREWALL_RULES:
			case ADMIN:
			case APPLICATION_PASSWORD_ADMIN:
			case AUDIT_ADMIN:
			case AUDIT_ABORT_EXEMPT:
			case AUTHENTICATION_POLICY_ADMIN:
			case BACKUP_ADMIN:
			case BINLOG_ADMIN:
			case BINLOG_ENCRYPTION_ADMIN:
			case CLONE_ADMIN:
			case CONNECTION_ADMIN:
			case ENCRYPTION_KEY_ADMIN:
			case EXECUTE:
			case FILE:
			case FIREWALL_ADMIN:
			case FIREWALL_EXEMPT:
			case FIREWALL_USER:
			case FLUSH_OPTIMIZER_COSTS:
			case FLUSH_STATUS:
			case FLUSH_TABLES:
			case FLUSH_USER_RESOURCES:
			case GROUP_REPLICATION_ADMIN:
			case INNODB_REDO_LOG_ARCHIVE:
			case INNODB_REDO_LOG_ENABLE:
			case INVOKE:
			case LAMBDA:
			case NDB_STORED_USER:
			case PASSWORDLESS_USER_ADMIN:
			case PERSIST_RO_VARIABLES_ADMIN:
			case PRIVILEGES:
			case PROCESS:
			case RELOAD:
			case REPLICATION_APPLIER:
			case REPLICATION_SLAVE_ADMIN:
			case RESOURCE_GROUP_ADMIN:
			case RESOURCE_GROUP_USER:
			case ROLE_ADMIN:
			case ROUTINE:
			case S3:
			case SESSION_VARIABLES_ADMIN:
			case SET_USER_ID:
			case SHOW_ROUTINE:
			case SHUTDOWN:
			case SUPER:
			case SYSTEM_VARIABLES_ADMIN:
			case TABLES:
			case TABLE_ENCRYPTION_ADMIN:
			case VERSION_TOKEN_ADMIN:
			case XA_RECOVER_ADMIN:
			case ARMSCII8:
			case ASCII:
			case BIG5:
			case CP1250:
			case CP1251:
			case CP1256:
			case CP1257:
			case CP850:
			case CP852:
			case CP866:
			case CP932:
			case DEC8:
			case EUCJPMS:
			case EUCKR:
			case GB18030:
			case GB2312:
			case GBK:
			case GEOSTD8:
			case GREEK:
			case HEBREW:
			case HP8:
			case KEYBCS2:
			case KOI8R:
			case KOI8U:
			case LATIN1:
			case LATIN2:
			case LATIN5:
			case LATIN7:
			case MACCE:
			case MACROMAN:
			case SJIS:
			case SWE7:
			case TIS620:
			case UCS2:
			case UJIS:
			case UTF16:
			case UTF16LE:
			case UTF32:
			case UTF8:
			case UTF8MB3:
			case UTF8MB4:
			case ARCHIVE:
			case BLACKHOLE:
			case CSV:
			case FEDERATED:
			case INNODB:
			case MEMORY:
			case MRG_MYISAM:
			case MYISAM:
			case NDB:
			case NDBCLUSTER:
			case PERFORMANCE_SCHEMA:
			case TOKUDB:
			case REPEATABLE:
			case COMMITTED:
			case UNCOMMITTED:
			case SERIALIZABLE:
			case GEOMETRYCOLLECTION:
			case GEOMETRY:
			case LINESTRING:
			case MULTILINESTRING:
			case MULTIPOINT:
			case MULTIPOLYGON:
			case POINT:
			case POLYGON:
			case ABS:
			case ACOS:
			case ADDDATE:
			case ADDTIME:
			case AES_DECRYPT:
			case AES_ENCRYPT:
			case AREA:
			case ASBINARY:
			case ASIN:
			case ASTEXT:
			case ASWKB:
			case ASWKT:
			case ASYMMETRIC_DECRYPT:
			case ASYMMETRIC_DERIVE:
			case ASYMMETRIC_ENCRYPT:
			case ASYMMETRIC_SIGN:
			case ASYMMETRIC_VERIFY:
			case ATAN:
			case ATAN2:
			case BENCHMARK:
			case BIN:
			case BIT_COUNT:
			case BIT_LENGTH:
			case BUFFER:
			case CATALOG_NAME:
			case CEIL:
			case CEILING:
			case CENTROID:
			case CHARACTER_LENGTH:
			case CHARSET:
			case CHAR_LENGTH:
			case COERCIBILITY:
			case COLLATION:
			case COMPRESS:
			case CONCAT:
			case CONCAT_WS:
			case CONNECTION_ID:
			case CONV:
			case CONVERT_TZ:
			case COS:
			case COT:
			case CRC32:
			case CREATE_ASYMMETRIC_PRIV_KEY:
			case CREATE_ASYMMETRIC_PUB_KEY:
			case CREATE_DH_PARAMETERS:
			case CREATE_DIGEST:
			case CROSSES:
			case DATEDIFF:
			case DATE_FORMAT:
			case DAYNAME:
			case DAYOFMONTH:
			case DAYOFWEEK:
			case DAYOFYEAR:
			case DECODE:
			case DEGREES:
			case DES_DECRYPT:
			case DES_ENCRYPT:
			case DIMENSION:
			case DISJOINT:
			case ELT:
			case ENCODE:
			case ENCRYPT:
			case ENDPOINT:
			case ENGINE_ATTRIBUTE:
			case ENVELOPE:
			case EQUALS:
			case EXP:
			case EXPORT_SET:
			case EXTERIORRING:
			case EXTRACTVALUE:
			case FIELD:
			case FIND_IN_SET:
			case FLOOR:
			case FORMAT:
			case FOUND_ROWS:
			case FROM_BASE64:
			case FROM_DAYS:
			case FROM_UNIXTIME:
			case GEOMCOLLFROMTEXT:
			case GEOMCOLLFROMWKB:
			case GEOMETRYCOLLECTIONFROMTEXT:
			case GEOMETRYCOLLECTIONFROMWKB:
			case GEOMETRYFROMTEXT:
			case GEOMETRYFROMWKB:
			case GEOMETRYN:
			case GEOMETRYTYPE:
			case GEOMFROMTEXT:
			case GEOMFROMWKB:
			case GET_FORMAT:
			case GET_LOCK:
			case GLENGTH:
			case GREATEST:
			case GTID_SUBSET:
			case GTID_SUBTRACT:
			case HEX:
			case IFNULL:
			case INET6_ATON:
			case INET6_NTOA:
			case INET_ATON:
			case INET_NTOA:
			case INSTR:
			case INTERIORRINGN:
			case INTERSECTS:
			case ISCLOSED:
			case ISEMPTY:
			case ISNULL:
			case ISSIMPLE:
			case IS_FREE_LOCK:
			case IS_IPV4:
			case IS_IPV4_COMPAT:
			case IS_IPV4_MAPPED:
			case IS_IPV6:
			case IS_USED_LOCK:
			case LAST_INSERT_ID:
			case LCASE:
			case LEAST:
			case LENGTH:
			case LINEFROMTEXT:
			case LINEFROMWKB:
			case LINESTRINGFROMTEXT:
			case LINESTRINGFROMWKB:
			case LN:
			case LOAD_FILE:
			case LOCATE:
			case LOG:
			case LOG10:
			case LOG2:
			case LOWER:
			case LPAD:
			case LTRIM:
			case MAKEDATE:
			case MAKETIME:
			case MAKE_SET:
			case MASTER_POS_WAIT:
			case MBRCONTAINS:
			case MBRDISJOINT:
			case MBREQUAL:
			case MBRINTERSECTS:
			case MBROVERLAPS:
			case MBRTOUCHES:
			case MBRWITHIN:
			case MD5:
			case MLINEFROMTEXT:
			case MLINEFROMWKB:
			case MONTHNAME:
			case MPOINTFROMTEXT:
			case MPOINTFROMWKB:
			case MPOLYFROMTEXT:
			case MPOLYFROMWKB:
			case MULTILINESTRINGFROMTEXT:
			case MULTILINESTRINGFROMWKB:
			case MULTIPOINTFROMTEXT:
			case MULTIPOINTFROMWKB:
			case MULTIPOLYGONFROMTEXT:
			case MULTIPOLYGONFROMWKB:
			case NAME_CONST:
			case NULLIF:
			case NUMGEOMETRIES:
			case NUMINTERIORRINGS:
			case NUMPOINTS:
			case OCT:
			case OCTET_LENGTH:
			case ORD:
			case OVERLAPS:
			case PERIOD_ADD:
			case PERIOD_DIFF:
			case PI:
			case POINTFROMTEXT:
			case POINTFROMWKB:
			case POINTN:
			case POLYFROMTEXT:
			case POLYFROMWKB:
			case POLYGONFROMTEXT:
			case POLYGONFROMWKB:
			case POW:
			case POWER:
			case QUOTE:
			case RADIANS:
			case RAND:
			case RANDOM:
			case RANDOM_BYTES:
			case RELEASE_LOCK:
			case REVERSE:
			case ROUND:
			case ROW_COUNT:
			case RPAD:
			case RTRIM:
			case SEC_TO_TIME:
			case SECONDARY_ENGINE_ATTRIBUTE:
			case SENSITIVE_VARIABLES_OBSERVER:
			case SESSION_USER:
			case SHA:
			case SHA1:
			case SHA2:
			case SCHEMA_NAME:
			case SIGN:
			case SIN:
			case SLEEP:
			case SOUNDEX:
			case SQL_THREAD_WAIT_AFTER_GTIDS:
			case SQRT:
			case SRID:
			case STARTPOINT:
			case STRCMP:
			case STR_TO_DATE:
			case ST_AREA:
			case ST_ASBINARY:
			case ST_ASTEXT:
			case ST_ASWKB:
			case ST_ASWKT:
			case ST_BUFFER:
			case ST_CENTROID:
			case ST_CONTAINS:
			case ST_CROSSES:
			case ST_DIFFERENCE:
			case ST_DIMENSION:
			case ST_DISJOINT:
			case ST_DISTANCE:
			case ST_ENDPOINT:
			case ST_ENVELOPE:
			case ST_EQUALS:
			case ST_EXTERIORRING:
			case ST_GEOMCOLLFROMTEXT:
			case ST_GEOMCOLLFROMTXT:
			case ST_GEOMCOLLFROMWKB:
			case ST_GEOMETRYCOLLECTIONFROMTEXT:
			case ST_GEOMETRYCOLLECTIONFROMWKB:
			case ST_GEOMETRYFROMTEXT:
			case ST_GEOMETRYFROMWKB:
			case ST_GEOMETRYN:
			case ST_GEOMETRYTYPE:
			case ST_GEOMFROMTEXT:
			case ST_GEOMFROMWKB:
			case ST_INTERIORRINGN:
			case ST_INTERSECTION:
			case ST_INTERSECTS:
			case ST_ISCLOSED:
			case ST_ISEMPTY:
			case ST_ISSIMPLE:
			case ST_LINEFROMTEXT:
			case ST_LINEFROMWKB:
			case ST_LINESTRINGFROMTEXT:
			case ST_LINESTRINGFROMWKB:
			case ST_NUMGEOMETRIES:
			case ST_NUMINTERIORRING:
			case ST_NUMINTERIORRINGS:
			case ST_NUMPOINTS:
			case ST_OVERLAPS:
			case ST_POINTFROMTEXT:
			case ST_POINTFROMWKB:
			case ST_POINTN:
			case ST_POLYFROMTEXT:
			case ST_POLYFROMWKB:
			case ST_POLYGONFROMTEXT:
			case ST_POLYGONFROMWKB:
			case ST_SRID:
			case ST_STARTPOINT:
			case ST_SYMDIFFERENCE:
			case ST_TOUCHES:
			case ST_UNION:
			case ST_WITHIN:
			case ST_X:
			case ST_Y:
			case SUBDATE:
			case SUBSTRING_INDEX:
			case SUBTIME:
			case SYSTEM_USER:
			case SYSTEM:
			case TAN:
			case TELEMETRY_LOG_ADMIN:
			case TIMEDIFF:
			case TIMESTAMPADD:
			case TIMESTAMPDIFF:
			case TIME_FORMAT:
			case TIME_TO_SEC:
			case TOUCHES:
			case TO_BASE64:
			case TO_DAYS:
			case TO_SECONDS:
			case TP_CONNECTION_ADMIN:
			case UCASE:
			case UNCOMPRESS:
			case UNCOMPRESSED_LENGTH:
			case UNHEX:
			case UNIX_TIMESTAMP:
			case UPDATEXML:
			case UPPER:
			case UUID:
			case UUID_SHORT:
			case VALIDATE_PASSWORD_STRENGTH:
			case VERSION:
			case VERSIONING:
			case WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS:
			case WEEKDAY:
			case WEEKOFYEAR:
			case WEIGHT_STRING:
			case WITHIN:
			case YEARWEEK:
			case Y_FUNCTION:
			case X_FUNCTION:
			case VIA:
			case LASTVAL:
			case NEXTVAL:
			case SETVAL:
			case PREVIOUS:
			case PERSISTENT:
			case BINLOG_MONITOR:
			case BINLOG_REPLAY:
			case FEDERATED_ADMIN:
			case READ_ONLY_ADMIN:
			case REPLICA:
			case REPLICATION_MASTER_ADMIN:
			case MONITOR:
			case READ_ONLY:
			case REPLAY:
			case MOD:
			case CHARSET_REVERSE_QOUTE_STRING:
			case STRING_LITERAL:
			case ID:
				_localctx = new HandlerConditionNameContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(5226);
				uid();
				}
				break;
			case SQLWARNING:
				_localctx = new HandlerConditionWarningContext(_localctx);
				enterOuterAlt(_localctx, 4);
				{
				setState(5227);
				match(SQLWARNING);
				}
				break;
			case NOT:
				_localctx = new HandlerConditionNotfoundContext(_localctx);
				enterOuterAlt(_localctx, 5);
				{
				setState(5228);
				match(NOT);
				setState(5229);
				match(FOUND);
				}
				break;
			case SQLEXCEPTION:
				_localctx = new HandlerConditionExceptionContext(_localctx);
				enterOuterAlt(_localctx, 6);
				{
				setState(5230);
				match(SQLEXCEPTION);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ProcedureSqlStatementContext extends ParserRuleContext {
		public TerminalNode SEMI() { return getToken(MySqlParser.SEMI, 0); }
		public CompoundStatementContext compoundStatement() {
			return getRuleContext(CompoundStatementContext.class,0);
		}
		public SqlStatementContext sqlStatement() {
			return getRuleContext(SqlStatementContext.class,0);
		}
		public ProcedureSqlStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_procedureSqlStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterProcedureSqlStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitProcedureSqlStatement(this);
		}
	}

	public final ProcedureSqlStatementContext procedureSqlStatement() throws RecognitionException {
		ProcedureSqlStatementContext _localctx = new ProcedureSqlStatementContext(_ctx, getState());
		enterRule(_localctx, 438, RULE_procedureSqlStatement);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5235);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,782,_ctx) ) {
			case 1:
				{
				setState(5233);
				compoundStatement();
				}
				break;
			case 2:
				{
				setState(5234);
				sqlStatement();
				}
				break;
			}
			setState(5237);
			match(SEMI);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CaseAlternativeContext extends ParserRuleContext {
		public TerminalNode WHEN() { return getToken(MySqlParser.WHEN, 0); }
		public TerminalNode THEN() { return getToken(MySqlParser.THEN, 0); }
		public ConstantContext constant() {
			return getRuleContext(ConstantContext.class,0);
		}
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public List procedureSqlStatement() {
			return getRuleContexts(ProcedureSqlStatementContext.class);
		}
		public ProcedureSqlStatementContext procedureSqlStatement(int i) {
			return getRuleContext(ProcedureSqlStatementContext.class,i);
		}
		public CaseAlternativeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_caseAlternative; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCaseAlternative(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCaseAlternative(this);
		}
	}

	public final CaseAlternativeContext caseAlternative() throws RecognitionException {
		CaseAlternativeContext _localctx = new CaseAlternativeContext(_ctx, getState());
		enterRule(_localctx, 440, RULE_caseAlternative);
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(5239);
			match(WHEN);
			setState(5242);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,783,_ctx) ) {
			case 1:
				{
				setState(5240);
				constant();
				}
				break;
			case 2:
				{
				setState(5241);
				expression(0);
				}
				break;
			}
			setState(5244);
			match(THEN);
			setState(5246); 
			_errHandler.sync(this);
			_alt = 1;
			do {
				switch (_alt) {
				case 1:
					{
					{
					setState(5245);
					procedureSqlStatement();
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(5248); 
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,784,_ctx);
			} while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ElifAlternativeContext extends ParserRuleContext {
		public TerminalNode ELSEIF() { return getToken(MySqlParser.ELSEIF, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode THEN() { return getToken(MySqlParser.THEN, 0); }
		public List procedureSqlStatement() {
			return getRuleContexts(ProcedureSqlStatementContext.class);
		}
		public ProcedureSqlStatementContext procedureSqlStatement(int i) {
			return getRuleContext(ProcedureSqlStatementContext.class,i);
		}
		public ElifAlternativeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_elifAlternative; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterElifAlternative(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitElifAlternative(this);
		}
	}

	public final ElifAlternativeContext elifAlternative() throws RecognitionException {
		ElifAlternativeContext _localctx = new ElifAlternativeContext(_ctx, getState());
		enterRule(_localctx, 442, RULE_elifAlternative);
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(5250);
			match(ELSEIF);
			setState(5251);
			expression(0);
			setState(5252);
			match(THEN);
			setState(5254); 
			_errHandler.sync(this);
			_alt = 1;
			do {
				switch (_alt) {
				case 1:
					{
					{
					setState(5253);
					procedureSqlStatement();
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(5256); 
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,785,_ctx);
			} while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterUserContext extends ParserRuleContext {
		public AlterUserContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterUser; }
	 
		public AlterUserContext() { }
		public void copyFrom(AlterUserContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class AlterUserMysqlV80Context extends AlterUserContext {
		public Token tlsNone;
		public TerminalNode ALTER() { return getToken(MySqlParser.ALTER, 0); }
		public TerminalNode USER() { return getToken(MySqlParser.USER, 0); }
		public List userAuthOption() {
			return getRuleContexts(UserAuthOptionContext.class);
		}
		public UserAuthOptionContext userAuthOption(int i) {
			return getRuleContext(UserAuthOptionContext.class,i);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public TerminalNode REQUIRE() { return getToken(MySqlParser.REQUIRE, 0); }
		public TerminalNode WITH() { return getToken(MySqlParser.WITH, 0); }
		public List userPasswordOption() {
			return getRuleContexts(UserPasswordOptionContext.class);
		}
		public UserPasswordOptionContext userPasswordOption(int i) {
			return getRuleContext(UserPasswordOptionContext.class,i);
		}
		public List userLockOption() {
			return getRuleContexts(UserLockOptionContext.class);
		}
		public UserLockOptionContext userLockOption(int i) {
			return getRuleContext(UserLockOptionContext.class,i);
		}
		public TerminalNode COMMENT() { return getToken(MySqlParser.COMMENT, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode ATTRIBUTE() { return getToken(MySqlParser.ATTRIBUTE, 0); }
		public List tlsOption() {
			return getRuleContexts(TlsOptionContext.class);
		}
		public TlsOptionContext tlsOption(int i) {
			return getRuleContext(TlsOptionContext.class,i);
		}
		public TerminalNode NONE() { return getToken(MySqlParser.NONE, 0); }
		public List userResourceOption() {
			return getRuleContexts(UserResourceOptionContext.class);
		}
		public UserResourceOptionContext userResourceOption(int i) {
			return getRuleContext(UserResourceOptionContext.class,i);
		}
		public List AND() { return getTokens(MySqlParser.AND); }
		public TerminalNode AND(int i) {
			return getToken(MySqlParser.AND, i);
		}
		public TerminalNode DEFAULT() { return getToken(MySqlParser.DEFAULT, 0); }
		public TerminalNode ROLE() { return getToken(MySqlParser.ROLE, 0); }
		public RoleOptionContext roleOption() {
			return getRuleContext(RoleOptionContext.class,0);
		}
		public UserNameContext userName() {
			return getRuleContext(UserNameContext.class,0);
		}
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public AlterUserMysqlV80Context(AlterUserContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterUserMysqlV80(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterUserMysqlV80(this);
		}
	}
	public static class AlterUserMysqlV56Context extends AlterUserContext {
		public TerminalNode ALTER() { return getToken(MySqlParser.ALTER, 0); }
		public TerminalNode USER() { return getToken(MySqlParser.USER, 0); }
		public List userSpecification() {
			return getRuleContexts(UserSpecificationContext.class);
		}
		public UserSpecificationContext userSpecification(int i) {
			return getRuleContext(UserSpecificationContext.class,i);
		}
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public AlterUserMysqlV56Context(AlterUserContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAlterUserMysqlV56(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAlterUserMysqlV56(this);
		}
	}

	public final AlterUserContext alterUser() throws RecognitionException {
		AlterUserContext _localctx = new AlterUserContext(_ctx, getState());
		enterRule(_localctx, 444, RULE_alterUser);
		int _la;
		try {
			setState(5331);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,800,_ctx) ) {
			case 1:
				_localctx = new AlterUserMysqlV56Context(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(5258);
				match(ALTER);
				setState(5259);
				match(USER);
				setState(5260);
				userSpecification();
				setState(5265);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(5261);
					match(COMMA);
					setState(5262);
					userSpecification();
					}
					}
					setState(5267);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			case 2:
				_localctx = new AlterUserMysqlV80Context(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(5268);
				match(ALTER);
				setState(5269);
				match(USER);
				setState(5271);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==IF) {
					{
					setState(5270);
					ifExists();
					}
				}

				setState(5273);
				userAuthOption();
				setState(5278);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(5274);
					match(COMMA);
					setState(5275);
					userAuthOption();
					}
					}
					setState(5280);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(5295);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==REQUIRE) {
					{
					setState(5281);
					match(REQUIRE);
					setState(5293);
					_errHandler.sync(this);
					switch (_input.LA(1)) {
					case NONE:
						{
						setState(5282);
						((AlterUserMysqlV80Context)_localctx).tlsNone = match(NONE);
						}
						break;
					case SSL:
					case CIPHER:
					case ISSUER:
					case SUBJECT:
					case X509:
						{
						setState(5283);
						tlsOption();
						setState(5290);
						_errHandler.sync(this);
						_la = _input.LA(1);
						while (_la==AND || _la==SSL || _la==CIPHER || _la==ISSUER || _la==SUBJECT || _la==X509) {
							{
							{
							setState(5285);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==AND) {
								{
								setState(5284);
								match(AND);
								}
							}

							setState(5287);
							tlsOption();
							}
							}
							setState(5292);
							_errHandler.sync(this);
							_la = _input.LA(1);
						}
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					}
				}

				setState(5303);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,794,_ctx) ) {
				case 1:
					{
					setState(5297);
					match(WITH);
					setState(5299); 
					_errHandler.sync(this);
					_la = _input.LA(1);
					do {
						{
						{
						setState(5298);
						userResourceOption();
						}
						}
						setState(5301); 
						_errHandler.sync(this);
						_la = _input.LA(1);
					} while ( ((((_la - 501)) & ~0x3f) == 0 && ((1L << (_la - 501)) & ((1L << (MAX_CONNECTIONS_PER_HOUR - 501)) | (1L << (MAX_QUERIES_PER_HOUR - 501)) | (1L << (MAX_UPDATES_PER_HOUR - 501)) | (1L << (MAX_USER_CONNECTIONS - 501)))) != 0) );
					}
					break;
				}
				setState(5309);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==ACCOUNT || _la==FAILED_LOGIN_ATTEMPTS || _la==PASSWORD || _la==PASSWORD_LOCK_TIME) {
					{
					setState(5307);
					_errHandler.sync(this);
					switch (_input.LA(1)) {
					case FAILED_LOGIN_ATTEMPTS:
					case PASSWORD:
					case PASSWORD_LOCK_TIME:
						{
						setState(5305);
						userPasswordOption();
						}
						break;
					case ACCOUNT:
						{
						setState(5306);
						userLockOption();
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					}
					setState(5311);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(5316);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case COMMENT:
					{
					setState(5312);
					match(COMMENT);
					setState(5313);
					match(STRING_LITERAL);
					}
					break;
				case ATTRIBUTE:
					{
					setState(5314);
					match(ATTRIBUTE);
					setState(5315);
					match(STRING_LITERAL);
					}
					break;
				case EOF:
				case ALTER:
				case ANALYZE:
				case CALL:
				case CHANGE:
				case CHECK:
				case CREATE:
				case DELETE:
				case DESC:
				case DESCRIBE:
				case DROP:
				case EXPLAIN:
				case GET:
				case GRANT:
				case INSERT:
				case KILL:
				case LOAD:
				case LOCK:
				case OPTIMIZE:
				case PURGE:
				case RELEASE:
				case RENAME:
				case REPLACE:
				case RESIGNAL:
				case REVOKE:
				case SELECT:
				case SET:
				case SHOW:
				case SIGNAL:
				case TABLE:
				case UNLOCK:
				case UPDATE:
				case USE:
				case VALUES:
				case WITH:
				case BEGIN:
				case BINLOG:
				case CACHE:
				case CHECKSUM:
				case COMMIT:
				case DEALLOCATE:
				case DO:
				case FLUSH:
				case HANDLER:
				case HELP:
				case INSTALL:
				case PREPARE:
				case REPAIR:
				case RESET:
				case ROLLBACK:
				case SAVEPOINT:
				case START:
				case STOP:
				case TRUNCATE:
				case UNINSTALL:
				case XA:
				case EXECUTE:
				case SHUTDOWN:
				case MINUS:
				case LR_BRACKET:
				case SEMI:
					break;
				default:
					break;
				}
				}
				break;
			case 3:
				_localctx = new AlterUserMysqlV80Context(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(5318);
				match(ALTER);
				setState(5319);
				match(USER);
				setState(5321);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,798,_ctx) ) {
				case 1:
					{
					setState(5320);
					ifExists();
					}
					break;
				}
				setState(5325);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,799,_ctx) ) {
				case 1:
					{
					setState(5323);
					userName();
					}
					break;
				case 2:
					{
					setState(5324);
					uid();
					}
					break;
				}
				setState(5327);
				match(DEFAULT);
				setState(5328);
				match(ROLE);
				setState(5329);
				roleOption();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateUserContext extends ParserRuleContext {
		public CreateUserContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createUser; }
	 
		public CreateUserContext() { }
		public void copyFrom(CreateUserContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class CreateUserMysqlV56Context extends CreateUserContext {
		public TerminalNode CREATE() { return getToken(MySqlParser.CREATE, 0); }
		public TerminalNode USER() { return getToken(MySqlParser.USER, 0); }
		public List userAuthOption() {
			return getRuleContexts(UserAuthOptionContext.class);
		}
		public UserAuthOptionContext userAuthOption(int i) {
			return getRuleContext(UserAuthOptionContext.class,i);
		}
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public CreateUserMysqlV56Context(CreateUserContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCreateUserMysqlV56(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCreateUserMysqlV56(this);
		}
	}
	public static class CreateUserMysqlV80Context extends CreateUserContext {
		public Token tlsNone;
		public TerminalNode CREATE() { return getToken(MySqlParser.CREATE, 0); }
		public TerminalNode USER() { return getToken(MySqlParser.USER, 0); }
		public List userAuthOption() {
			return getRuleContexts(UserAuthOptionContext.class);
		}
		public UserAuthOptionContext userAuthOption(int i) {
			return getRuleContext(UserAuthOptionContext.class,i);
		}
		public IfNotExistsContext ifNotExists() {
			return getRuleContext(IfNotExistsContext.class,0);
		}
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public TerminalNode DEFAULT() { return getToken(MySqlParser.DEFAULT, 0); }
		public TerminalNode ROLE() { return getToken(MySqlParser.ROLE, 0); }
		public RoleOptionContext roleOption() {
			return getRuleContext(RoleOptionContext.class,0);
		}
		public TerminalNode REQUIRE() { return getToken(MySqlParser.REQUIRE, 0); }
		public TerminalNode WITH() { return getToken(MySqlParser.WITH, 0); }
		public List userPasswordOption() {
			return getRuleContexts(UserPasswordOptionContext.class);
		}
		public UserPasswordOptionContext userPasswordOption(int i) {
			return getRuleContext(UserPasswordOptionContext.class,i);
		}
		public List userLockOption() {
			return getRuleContexts(UserLockOptionContext.class);
		}
		public UserLockOptionContext userLockOption(int i) {
			return getRuleContext(UserLockOptionContext.class,i);
		}
		public TerminalNode COMMENT() { return getToken(MySqlParser.COMMENT, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode ATTRIBUTE() { return getToken(MySqlParser.ATTRIBUTE, 0); }
		public List tlsOption() {
			return getRuleContexts(TlsOptionContext.class);
		}
		public TlsOptionContext tlsOption(int i) {
			return getRuleContext(TlsOptionContext.class,i);
		}
		public TerminalNode NONE() { return getToken(MySqlParser.NONE, 0); }
		public List userResourceOption() {
			return getRuleContexts(UserResourceOptionContext.class);
		}
		public UserResourceOptionContext userResourceOption(int i) {
			return getRuleContext(UserResourceOptionContext.class,i);
		}
		public List AND() { return getTokens(MySqlParser.AND); }
		public TerminalNode AND(int i) {
			return getToken(MySqlParser.AND, i);
		}
		public CreateUserMysqlV80Context(CreateUserContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCreateUserMysqlV80(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCreateUserMysqlV80(this);
		}
	}

	public final CreateUserContext createUser() throws RecognitionException {
		CreateUserContext _localctx = new CreateUserContext(_ctx, getState());
		enterRule(_localctx, 446, RULE_createUser);
		int _la;
		try {
			setState(5398);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,814,_ctx) ) {
			case 1:
				_localctx = new CreateUserMysqlV56Context(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(5333);
				match(CREATE);
				setState(5334);
				match(USER);
				setState(5335);
				userAuthOption();
				setState(5340);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(5336);
					match(COMMA);
					setState(5337);
					userAuthOption();
					}
					}
					setState(5342);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			case 2:
				_localctx = new CreateUserMysqlV80Context(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(5343);
				match(CREATE);
				setState(5344);
				match(USER);
				setState(5346);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==IF) {
					{
					setState(5345);
					ifNotExists();
					}
				}

				setState(5348);
				userAuthOption();
				setState(5353);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(5349);
					match(COMMA);
					setState(5350);
					userAuthOption();
					}
					}
					setState(5355);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(5359);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==DEFAULT) {
					{
					setState(5356);
					match(DEFAULT);
					setState(5357);
					match(ROLE);
					setState(5358);
					roleOption();
					}
				}

				setState(5375);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==REQUIRE) {
					{
					setState(5361);
					match(REQUIRE);
					setState(5373);
					_errHandler.sync(this);
					switch (_input.LA(1)) {
					case NONE:
						{
						setState(5362);
						((CreateUserMysqlV80Context)_localctx).tlsNone = match(NONE);
						}
						break;
					case SSL:
					case CIPHER:
					case ISSUER:
					case SUBJECT:
					case X509:
						{
						setState(5363);
						tlsOption();
						setState(5370);
						_errHandler.sync(this);
						_la = _input.LA(1);
						while (_la==AND || _la==SSL || _la==CIPHER || _la==ISSUER || _la==SUBJECT || _la==X509) {
							{
							{
							setState(5365);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==AND) {
								{
								setState(5364);
								match(AND);
								}
							}

							setState(5367);
							tlsOption();
							}
							}
							setState(5372);
							_errHandler.sync(this);
							_la = _input.LA(1);
						}
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					}
				}

				setState(5383);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,810,_ctx) ) {
				case 1:
					{
					setState(5377);
					match(WITH);
					setState(5379); 
					_errHandler.sync(this);
					_la = _input.LA(1);
					do {
						{
						{
						setState(5378);
						userResourceOption();
						}
						}
						setState(5381); 
						_errHandler.sync(this);
						_la = _input.LA(1);
					} while ( ((((_la - 501)) & ~0x3f) == 0 && ((1L << (_la - 501)) & ((1L << (MAX_CONNECTIONS_PER_HOUR - 501)) | (1L << (MAX_QUERIES_PER_HOUR - 501)) | (1L << (MAX_UPDATES_PER_HOUR - 501)) | (1L << (MAX_USER_CONNECTIONS - 501)))) != 0) );
					}
					break;
				}
				setState(5389);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==ACCOUNT || _la==FAILED_LOGIN_ATTEMPTS || _la==PASSWORD || _la==PASSWORD_LOCK_TIME) {
					{
					setState(5387);
					_errHandler.sync(this);
					switch (_input.LA(1)) {
					case FAILED_LOGIN_ATTEMPTS:
					case PASSWORD:
					case PASSWORD_LOCK_TIME:
						{
						setState(5385);
						userPasswordOption();
						}
						break;
					case ACCOUNT:
						{
						setState(5386);
						userLockOption();
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					}
					setState(5391);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(5396);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case COMMENT:
					{
					setState(5392);
					match(COMMENT);
					setState(5393);
					match(STRING_LITERAL);
					}
					break;
				case ATTRIBUTE:
					{
					setState(5394);
					match(ATTRIBUTE);
					setState(5395);
					match(STRING_LITERAL);
					}
					break;
				case EOF:
				case ALTER:
				case ANALYZE:
				case CALL:
				case CHANGE:
				case CHECK:
				case CREATE:
				case DELETE:
				case DESC:
				case DESCRIBE:
				case DROP:
				case EXPLAIN:
				case GET:
				case GRANT:
				case INSERT:
				case KILL:
				case LOAD:
				case LOCK:
				case OPTIMIZE:
				case PURGE:
				case RELEASE:
				case RENAME:
				case REPLACE:
				case RESIGNAL:
				case REVOKE:
				case SELECT:
				case SET:
				case SHOW:
				case SIGNAL:
				case TABLE:
				case UNLOCK:
				case UPDATE:
				case USE:
				case VALUES:
				case WITH:
				case BEGIN:
				case BINLOG:
				case CACHE:
				case CHECKSUM:
				case COMMIT:
				case DEALLOCATE:
				case DO:
				case FLUSH:
				case HANDLER:
				case HELP:
				case INSTALL:
				case PREPARE:
				case REPAIR:
				case RESET:
				case ROLLBACK:
				case SAVEPOINT:
				case START:
				case STOP:
				case TRUNCATE:
				case UNINSTALL:
				case XA:
				case EXECUTE:
				case SHUTDOWN:
				case MINUS:
				case LR_BRACKET:
				case SEMI:
					break;
				default:
					break;
				}
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropUserContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(MySqlParser.DROP, 0); }
		public TerminalNode USER() { return getToken(MySqlParser.USER, 0); }
		public List userName() {
			return getRuleContexts(UserNameContext.class);
		}
		public UserNameContext userName(int i) {
			return getRuleContext(UserNameContext.class,i);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public DropUserContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropUser; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDropUser(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDropUser(this);
		}
	}

	public final DropUserContext dropUser() throws RecognitionException {
		DropUserContext _localctx = new DropUserContext(_ctx, getState());
		enterRule(_localctx, 448, RULE_dropUser);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5400);
			match(DROP);
			setState(5401);
			match(USER);
			setState(5403);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IF) {
				{
				setState(5402);
				ifExists();
				}
			}

			setState(5405);
			userName();
			setState(5410);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(5406);
				match(COMMA);
				setState(5407);
				userName();
				}
				}
				setState(5412);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class GrantStatementContext extends ParserRuleContext {
		public Token privilegeObject;
		public Token tlsNone;
		public List GRANT() { return getTokens(MySqlParser.GRANT); }
		public TerminalNode GRANT(int i) {
			return getToken(MySqlParser.GRANT, i);
		}
		public List privelegeClause() {
			return getRuleContexts(PrivelegeClauseContext.class);
		}
		public PrivelegeClauseContext privelegeClause(int i) {
			return getRuleContext(PrivelegeClauseContext.class,i);
		}
		public TerminalNode ON() { return getToken(MySqlParser.ON, 0); }
		public PrivilegeLevelContext privilegeLevel() {
			return getRuleContext(PrivilegeLevelContext.class,0);
		}
		public TerminalNode TO() { return getToken(MySqlParser.TO, 0); }
		public List userAuthOption() {
			return getRuleContexts(UserAuthOptionContext.class);
		}
		public UserAuthOptionContext userAuthOption(int i) {
			return getRuleContext(UserAuthOptionContext.class,i);
		}
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public TerminalNode REQUIRE() { return getToken(MySqlParser.REQUIRE, 0); }
		public List WITH() { return getTokens(MySqlParser.WITH); }
		public TerminalNode WITH(int i) {
			return getToken(MySqlParser.WITH, i);
		}
		public TerminalNode AS() { return getToken(MySqlParser.AS, 0); }
		public List userName() {
			return getRuleContexts(UserNameContext.class);
		}
		public UserNameContext userName(int i) {
			return getRuleContext(UserNameContext.class,i);
		}
		public TerminalNode ROLE() { return getToken(MySqlParser.ROLE, 0); }
		public RoleOptionContext roleOption() {
			return getRuleContext(RoleOptionContext.class,0);
		}
		public TerminalNode TABLE() { return getToken(MySqlParser.TABLE, 0); }
		public TerminalNode FUNCTION() { return getToken(MySqlParser.FUNCTION, 0); }
		public TerminalNode PROCEDURE() { return getToken(MySqlParser.PROCEDURE, 0); }
		public List tlsOption() {
			return getRuleContexts(TlsOptionContext.class);
		}
		public TlsOptionContext tlsOption(int i) {
			return getRuleContext(TlsOptionContext.class,i);
		}
		public TerminalNode NONE() { return getToken(MySqlParser.NONE, 0); }
		public List OPTION() { return getTokens(MySqlParser.OPTION); }
		public TerminalNode OPTION(int i) {
			return getToken(MySqlParser.OPTION, i);
		}
		public List userResourceOption() {
			return getRuleContexts(UserResourceOptionContext.class);
		}
		public UserResourceOptionContext userResourceOption(int i) {
			return getRuleContext(UserResourceOptionContext.class,i);
		}
		public List AND() { return getTokens(MySqlParser.AND); }
		public TerminalNode AND(int i) {
			return getToken(MySqlParser.AND, i);
		}
		public List uid() {
			return getRuleContexts(UidContext.class);
		}
		public UidContext uid(int i) {
			return getRuleContext(UidContext.class,i);
		}
		public TerminalNode ADMIN() { return getToken(MySqlParser.ADMIN, 0); }
		public GrantStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_grantStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterGrantStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitGrantStatement(this);
		}
	}

	public final GrantStatementContext grantStatement() throws RecognitionException {
		GrantStatementContext _localctx = new GrantStatementContext(_ctx, getState());
		enterRule(_localctx, 450, RULE_grantStatement);
		int _la;
		try {
			int _alt;
			setState(5506);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,835,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(5413);
				match(GRANT);
				setState(5414);
				privelegeClause();
				setState(5419);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(5415);
					match(COMMA);
					setState(5416);
					privelegeClause();
					}
					}
					setState(5421);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(5422);
				match(ON);
				setState(5424);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,818,_ctx) ) {
				case 1:
					{
					setState(5423);
					((GrantStatementContext)_localctx).privilegeObject = _input.LT(1);
					_la = _input.LA(1);
					if ( !(_la==PROCEDURE || _la==TABLE || _la==FUNCTION) ) {
						((GrantStatementContext)_localctx).privilegeObject = (Token)_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
					break;
				}
				setState(5426);
				privilegeLevel();
				setState(5427);
				match(TO);
				setState(5428);
				userAuthOption();
				setState(5433);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(5429);
					match(COMMA);
					setState(5430);
					userAuthOption();
					}
					}
					setState(5435);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(5450);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==REQUIRE) {
					{
					setState(5436);
					match(REQUIRE);
					setState(5448);
					_errHandler.sync(this);
					switch (_input.LA(1)) {
					case NONE:
						{
						setState(5437);
						((GrantStatementContext)_localctx).tlsNone = match(NONE);
						}
						break;
					case SSL:
					case CIPHER:
					case ISSUER:
					case SUBJECT:
					case X509:
						{
						setState(5438);
						tlsOption();
						setState(5445);
						_errHandler.sync(this);
						_la = _input.LA(1);
						while (_la==AND || _la==SSL || _la==CIPHER || _la==ISSUER || _la==SUBJECT || _la==X509) {
							{
							{
							setState(5440);
							_errHandler.sync(this);
							_la = _input.LA(1);
							if (_la==AND) {
								{
								setState(5439);
								match(AND);
								}
							}

							setState(5442);
							tlsOption();
							}
							}
							setState(5447);
							_errHandler.sync(this);
							_la = _input.LA(1);
						}
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					}
				}

				setState(5461);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,826,_ctx) ) {
				case 1:
					{
					setState(5452);
					match(WITH);
					setState(5458);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,825,_ctx);
					while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
						if ( _alt==1 ) {
							{
							setState(5456);
							_errHandler.sync(this);
							switch (_input.LA(1)) {
							case GRANT:
								{
								setState(5453);
								match(GRANT);
								setState(5454);
								match(OPTION);
								}
								break;
							case MAX_CONNECTIONS_PER_HOUR:
							case MAX_QUERIES_PER_HOUR:
							case MAX_UPDATES_PER_HOUR:
							case MAX_USER_CONNECTIONS:
								{
								setState(5455);
								userResourceOption();
								}
								break;
							default:
								throw new NoViableAltException(this);
							}
							} 
						}
						setState(5460);
						_errHandler.sync(this);
						_alt = getInterpreter().adaptivePredict(_input,825,_ctx);
					}
					}
					break;
				}
				setState(5469);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==AS) {
					{
					setState(5463);
					match(AS);
					setState(5464);
					userName();
					setState(5465);
					match(WITH);
					setState(5466);
					match(ROLE);
					setState(5467);
					roleOption();
					}
				}

				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(5471);
				match(GRANT);
				setState(5474);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,828,_ctx) ) {
				case 1:
					{
					setState(5472);
					userName();
					}
					break;
				case 2:
					{
					setState(5473);
					uid();
					}
					break;
				}
				setState(5483);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(5476);
					match(COMMA);
					setState(5479);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,829,_ctx) ) {
					case 1:
						{
						setState(5477);
						userName();
						}
						break;
					case 2:
						{
						setState(5478);
						uid();
						}
						break;
					}
					}
					}
					setState(5485);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(5486);
				match(TO);
				setState(5489);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,831,_ctx) ) {
				case 1:
					{
					setState(5487);
					userName();
					}
					break;
				case 2:
					{
					setState(5488);
					uid();
					}
					break;
				}
				setState(5498);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(5491);
					match(COMMA);
					setState(5494);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,832,_ctx) ) {
					case 1:
						{
						setState(5492);
						userName();
						}
						break;
					case 2:
						{
						setState(5493);
						uid();
						}
						break;
					}
					}
					}
					setState(5500);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(5504);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,834,_ctx) ) {
				case 1:
					{
					setState(5501);
					match(WITH);
					setState(5502);
					match(ADMIN);
					setState(5503);
					match(OPTION);
					}
					break;
				}
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RoleOptionContext extends ParserRuleContext {
		public TerminalNode DEFAULT() { return getToken(MySqlParser.DEFAULT, 0); }
		public TerminalNode NONE() { return getToken(MySqlParser.NONE, 0); }
		public TerminalNode ALL() { return getToken(MySqlParser.ALL, 0); }
		public TerminalNode EXCEPT() { return getToken(MySqlParser.EXCEPT, 0); }
		public List userName() {
			return getRuleContexts(UserNameContext.class);
		}
		public UserNameContext userName(int i) {
			return getRuleContext(UserNameContext.class,i);
		}
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public RoleOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_roleOption; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterRoleOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitRoleOption(this);
		}
	}

	public final RoleOptionContext roleOption() throws RecognitionException {
		RoleOptionContext _localctx = new RoleOptionContext(_ctx, getState());
		enterRule(_localctx, 452, RULE_roleOption);
		int _la;
		try {
			setState(5530);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,839,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(5508);
				match(DEFAULT);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(5509);
				match(NONE);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(5510);
				match(ALL);
				setState(5520);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EXCEPT) {
					{
					setState(5511);
					match(EXCEPT);
					setState(5512);
					userName();
					setState(5517);
					_errHandler.sync(this);
					_la = _input.LA(1);
					while (_la==COMMA) {
						{
						{
						setState(5513);
						match(COMMA);
						setState(5514);
						userName();
						}
						}
						setState(5519);
						_errHandler.sync(this);
						_la = _input.LA(1);
					}
					}
				}

				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(5522);
				userName();
				setState(5527);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(5523);
					match(COMMA);
					setState(5524);
					userName();
					}
					}
					setState(5529);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class GrantProxyContext extends ParserRuleContext {
		public UserNameContext fromFirst;
		public UserNameContext toFirst;
		public UserNameContext userName;
		public List toOther = new ArrayList();
		public List GRANT() { return getTokens(MySqlParser.GRANT); }
		public TerminalNode GRANT(int i) {
			return getToken(MySqlParser.GRANT, i);
		}
		public TerminalNode PROXY() { return getToken(MySqlParser.PROXY, 0); }
		public TerminalNode ON() { return getToken(MySqlParser.ON, 0); }
		public TerminalNode TO() { return getToken(MySqlParser.TO, 0); }
		public List userName() {
			return getRuleContexts(UserNameContext.class);
		}
		public UserNameContext userName(int i) {
			return getRuleContext(UserNameContext.class,i);
		}
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public TerminalNode WITH() { return getToken(MySqlParser.WITH, 0); }
		public TerminalNode OPTION() { return getToken(MySqlParser.OPTION, 0); }
		public GrantProxyContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_grantProxy; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterGrantProxy(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitGrantProxy(this);
		}
	}

	public final GrantProxyContext grantProxy() throws RecognitionException {
		GrantProxyContext _localctx = new GrantProxyContext(_ctx, getState());
		enterRule(_localctx, 454, RULE_grantProxy);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5532);
			match(GRANT);
			setState(5533);
			match(PROXY);
			setState(5534);
			match(ON);
			setState(5535);
			((GrantProxyContext)_localctx).fromFirst = userName();
			setState(5536);
			match(TO);
			setState(5537);
			((GrantProxyContext)_localctx).toFirst = userName();
			setState(5542);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(5538);
				match(COMMA);
				setState(5539);
				((GrantProxyContext)_localctx).userName = userName();
				((GrantProxyContext)_localctx).toOther.add(((GrantProxyContext)_localctx).userName);
				}
				}
				setState(5544);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(5548);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,841,_ctx) ) {
			case 1:
				{
				setState(5545);
				match(WITH);
				setState(5546);
				match(GRANT);
				setState(5547);
				match(OPTION);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RenameUserContext extends ParserRuleContext {
		public TerminalNode RENAME() { return getToken(MySqlParser.RENAME, 0); }
		public TerminalNode USER() { return getToken(MySqlParser.USER, 0); }
		public List renameUserClause() {
			return getRuleContexts(RenameUserClauseContext.class);
		}
		public RenameUserClauseContext renameUserClause(int i) {
			return getRuleContext(RenameUserClauseContext.class,i);
		}
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public RenameUserContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_renameUser; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterRenameUser(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitRenameUser(this);
		}
	}

	public final RenameUserContext renameUser() throws RecognitionException {
		RenameUserContext _localctx = new RenameUserContext(_ctx, getState());
		enterRule(_localctx, 456, RULE_renameUser);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5550);
			match(RENAME);
			setState(5551);
			match(USER);
			setState(5552);
			renameUserClause();
			setState(5557);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(5553);
				match(COMMA);
				setState(5554);
				renameUserClause();
				}
				}
				setState(5559);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RevokeStatementContext extends ParserRuleContext {
		public RevokeStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_revokeStatement; }
	 
		public RevokeStatementContext() { }
		public void copyFrom(RevokeStatementContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class DetailRevokeContext extends RevokeStatementContext {
		public Token privilegeObject;
		public TerminalNode REVOKE() { return getToken(MySqlParser.REVOKE, 0); }
		public List privelegeClause() {
			return getRuleContexts(PrivelegeClauseContext.class);
		}
		public PrivelegeClauseContext privelegeClause(int i) {
			return getRuleContext(PrivelegeClauseContext.class,i);
		}
		public TerminalNode ON() { return getToken(MySqlParser.ON, 0); }
		public PrivilegeLevelContext privilegeLevel() {
			return getRuleContext(PrivilegeLevelContext.class,0);
		}
		public TerminalNode FROM() { return getToken(MySqlParser.FROM, 0); }
		public List userName() {
			return getRuleContexts(UserNameContext.class);
		}
		public UserNameContext userName(int i) {
			return getRuleContext(UserNameContext.class,i);
		}
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public TerminalNode TABLE() { return getToken(MySqlParser.TABLE, 0); }
		public TerminalNode FUNCTION() { return getToken(MySqlParser.FUNCTION, 0); }
		public TerminalNode PROCEDURE() { return getToken(MySqlParser.PROCEDURE, 0); }
		public DetailRevokeContext(RevokeStatementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDetailRevoke(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDetailRevoke(this);
		}
	}
	public static class RoleRevokeContext extends RevokeStatementContext {
		public TerminalNode REVOKE() { return getToken(MySqlParser.REVOKE, 0); }
		public TerminalNode FROM() { return getToken(MySqlParser.FROM, 0); }
		public List userName() {
			return getRuleContexts(UserNameContext.class);
		}
		public UserNameContext userName(int i) {
			return getRuleContext(UserNameContext.class,i);
		}
		public List uid() {
			return getRuleContexts(UidContext.class);
		}
		public UidContext uid(int i) {
			return getRuleContext(UidContext.class,i);
		}
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public RoleRevokeContext(RevokeStatementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterRoleRevoke(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitRoleRevoke(this);
		}
	}
	public static class ShortRevokeContext extends RevokeStatementContext {
		public TerminalNode REVOKE() { return getToken(MySqlParser.REVOKE, 0); }
		public TerminalNode ALL() { return getToken(MySqlParser.ALL, 0); }
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public TerminalNode GRANT() { return getToken(MySqlParser.GRANT, 0); }
		public TerminalNode OPTION() { return getToken(MySqlParser.OPTION, 0); }
		public TerminalNode FROM() { return getToken(MySqlParser.FROM, 0); }
		public List userName() {
			return getRuleContexts(UserNameContext.class);
		}
		public UserNameContext userName(int i) {
			return getRuleContext(UserNameContext.class,i);
		}
		public TerminalNode PRIVILEGES() { return getToken(MySqlParser.PRIVILEGES, 0); }
		public ShortRevokeContext(RevokeStatementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterShortRevoke(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitShortRevoke(this);
		}
	}

	public final RevokeStatementContext revokeStatement() throws RecognitionException {
		RevokeStatementContext _localctx = new RevokeStatementContext(_ctx, getState());
		enterRule(_localctx, 458, RULE_revokeStatement);
		int _la;
		try {
			setState(5630);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,854,_ctx) ) {
			case 1:
				_localctx = new DetailRevokeContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(5560);
				match(REVOKE);
				setState(5561);
				privelegeClause();
				setState(5566);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(5562);
					match(COMMA);
					setState(5563);
					privelegeClause();
					}
					}
					setState(5568);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(5569);
				match(ON);
				setState(5571);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,844,_ctx) ) {
				case 1:
					{
					setState(5570);
					((DetailRevokeContext)_localctx).privilegeObject = _input.LT(1);
					_la = _input.LA(1);
					if ( !(_la==PROCEDURE || _la==TABLE || _la==FUNCTION) ) {
						((DetailRevokeContext)_localctx).privilegeObject = (Token)_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
					break;
				}
				setState(5573);
				privilegeLevel();
				setState(5574);
				match(FROM);
				setState(5575);
				userName();
				setState(5580);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(5576);
					match(COMMA);
					setState(5577);
					userName();
					}
					}
					setState(5582);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			case 2:
				_localctx = new ShortRevokeContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(5583);
				match(REVOKE);
				setState(5584);
				match(ALL);
				setState(5586);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==PRIVILEGES) {
					{
					setState(5585);
					match(PRIVILEGES);
					}
				}

				setState(5588);
				match(COMMA);
				setState(5589);
				match(GRANT);
				setState(5590);
				match(OPTION);
				setState(5591);
				match(FROM);
				setState(5592);
				userName();
				setState(5597);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(5593);
					match(COMMA);
					setState(5594);
					userName();
					}
					}
					setState(5599);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			case 3:
				_localctx = new RoleRevokeContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(5600);
				match(REVOKE);
				setState(5603);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,848,_ctx) ) {
				case 1:
					{
					setState(5601);
					userName();
					}
					break;
				case 2:
					{
					setState(5602);
					uid();
					}
					break;
				}
				setState(5612);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(5605);
					match(COMMA);
					setState(5608);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,849,_ctx) ) {
					case 1:
						{
						setState(5606);
						userName();
						}
						break;
					case 2:
						{
						setState(5607);
						uid();
						}
						break;
					}
					}
					}
					setState(5614);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(5615);
				match(FROM);
				setState(5618);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,851,_ctx) ) {
				case 1:
					{
					setState(5616);
					userName();
					}
					break;
				case 2:
					{
					setState(5617);
					uid();
					}
					break;
				}
				setState(5627);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(5620);
					match(COMMA);
					setState(5623);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,852,_ctx) ) {
					case 1:
						{
						setState(5621);
						userName();
						}
						break;
					case 2:
						{
						setState(5622);
						uid();
						}
						break;
					}
					}
					}
					setState(5629);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RevokeProxyContext extends ParserRuleContext {
		public UserNameContext onUser;
		public UserNameContext fromFirst;
		public UserNameContext userName;
		public List fromOther = new ArrayList();
		public TerminalNode REVOKE() { return getToken(MySqlParser.REVOKE, 0); }
		public TerminalNode PROXY() { return getToken(MySqlParser.PROXY, 0); }
		public TerminalNode ON() { return getToken(MySqlParser.ON, 0); }
		public TerminalNode FROM() { return getToken(MySqlParser.FROM, 0); }
		public List userName() {
			return getRuleContexts(UserNameContext.class);
		}
		public UserNameContext userName(int i) {
			return getRuleContext(UserNameContext.class,i);
		}
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public RevokeProxyContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_revokeProxy; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterRevokeProxy(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitRevokeProxy(this);
		}
	}

	public final RevokeProxyContext revokeProxy() throws RecognitionException {
		RevokeProxyContext _localctx = new RevokeProxyContext(_ctx, getState());
		enterRule(_localctx, 460, RULE_revokeProxy);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5632);
			match(REVOKE);
			setState(5633);
			match(PROXY);
			setState(5634);
			match(ON);
			setState(5635);
			((RevokeProxyContext)_localctx).onUser = userName();
			setState(5636);
			match(FROM);
			setState(5637);
			((RevokeProxyContext)_localctx).fromFirst = userName();
			setState(5642);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(5638);
				match(COMMA);
				setState(5639);
				((RevokeProxyContext)_localctx).userName = userName();
				((RevokeProxyContext)_localctx).fromOther.add(((RevokeProxyContext)_localctx).userName);
				}
				}
				setState(5644);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SetPasswordStatementContext extends ParserRuleContext {
		public TerminalNode SET() { return getToken(MySqlParser.SET, 0); }
		public TerminalNode PASSWORD() { return getToken(MySqlParser.PASSWORD, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public PasswordFunctionClauseContext passwordFunctionClause() {
			return getRuleContext(PasswordFunctionClauseContext.class,0);
		}
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode FOR() { return getToken(MySqlParser.FOR, 0); }
		public UserNameContext userName() {
			return getRuleContext(UserNameContext.class,0);
		}
		public SetPasswordStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_setPasswordStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSetPasswordStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSetPasswordStatement(this);
		}
	}

	public final SetPasswordStatementContext setPasswordStatement() throws RecognitionException {
		SetPasswordStatementContext _localctx = new SetPasswordStatementContext(_ctx, getState());
		enterRule(_localctx, 462, RULE_setPasswordStatement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5645);
			match(SET);
			setState(5646);
			match(PASSWORD);
			setState(5649);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==FOR) {
				{
				setState(5647);
				match(FOR);
				setState(5648);
				userName();
				}
			}

			setState(5651);
			match(EQUAL_SYMBOL);
			setState(5654);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case OLD_PASSWORD:
			case PASSWORD:
				{
				setState(5652);
				passwordFunctionClause();
				}
				break;
			case STRING_LITERAL:
				{
				setState(5653);
				match(STRING_LITERAL);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class UserSpecificationContext extends ParserRuleContext {
		public UserNameContext userName() {
			return getRuleContext(UserNameContext.class,0);
		}
		public UserPasswordOptionContext userPasswordOption() {
			return getRuleContext(UserPasswordOptionContext.class,0);
		}
		public UserSpecificationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_userSpecification; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterUserSpecification(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitUserSpecification(this);
		}
	}

	public final UserSpecificationContext userSpecification() throws RecognitionException {
		UserSpecificationContext _localctx = new UserSpecificationContext(_ctx, getState());
		enterRule(_localctx, 464, RULE_userSpecification);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5656);
			userName();
			setState(5657);
			userPasswordOption();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class UserAuthOptionContext extends ParserRuleContext {
		public UserAuthOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_userAuthOption; }
	 
		public UserAuthOptionContext() { }
		public void copyFrom(UserAuthOptionContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class SimpleAuthOptionContext extends UserAuthOptionContext {
		public UserNameContext userName() {
			return getRuleContext(UserNameContext.class,0);
		}
		public SimpleAuthOptionContext(UserAuthOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSimpleAuthOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSimpleAuthOption(this);
		}
	}
	public static class ModuleAuthOptionContext extends UserAuthOptionContext {
		public UserNameContext userName() {
			return getRuleContext(UserNameContext.class,0);
		}
		public TerminalNode IDENTIFIED() { return getToken(MySqlParser.IDENTIFIED, 0); }
		public List authenticationRule() {
			return getRuleContexts(AuthenticationRuleContext.class);
		}
		public AuthenticationRuleContext authenticationRule(int i) {
			return getRuleContext(AuthenticationRuleContext.class,i);
		}
		public TerminalNode WITH() { return getToken(MySqlParser.WITH, 0); }
		public TerminalNode VIA() { return getToken(MySqlParser.VIA, 0); }
		public List OR() { return getTokens(MySqlParser.OR); }
		public TerminalNode OR(int i) {
			return getToken(MySqlParser.OR, i);
		}
		public ModuleAuthOptionContext(UserAuthOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterModuleAuthOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitModuleAuthOption(this);
		}
	}
	public static class RandomAuthOptionContext extends UserAuthOptionContext {
		public UserNameContext userName() {
			return getRuleContext(UserNameContext.class,0);
		}
		public TerminalNode IDENTIFIED() { return getToken(MySqlParser.IDENTIFIED, 0); }
		public TerminalNode BY() { return getToken(MySqlParser.BY, 0); }
		public TerminalNode RANDOM() { return getToken(MySqlParser.RANDOM, 0); }
		public TerminalNode PASSWORD() { return getToken(MySqlParser.PASSWORD, 0); }
		public AuthOptionClauseContext authOptionClause() {
			return getRuleContext(AuthOptionClauseContext.class,0);
		}
		public RandomAuthOptionContext(UserAuthOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterRandomAuthOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitRandomAuthOption(this);
		}
	}
	public static class StringAuthOptionContext extends UserAuthOptionContext {
		public UserNameContext userName() {
			return getRuleContext(UserNameContext.class,0);
		}
		public TerminalNode IDENTIFIED() { return getToken(MySqlParser.IDENTIFIED, 0); }
		public TerminalNode BY() { return getToken(MySqlParser.BY, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public AuthOptionClauseContext authOptionClause() {
			return getRuleContext(AuthOptionClauseContext.class,0);
		}
		public StringAuthOptionContext(UserAuthOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterStringAuthOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitStringAuthOption(this);
		}
	}
	public static class HashAuthOptionContext extends UserAuthOptionContext {
		public Token hashed;
		public UserNameContext userName() {
			return getRuleContext(UserNameContext.class,0);
		}
		public TerminalNode IDENTIFIED() { return getToken(MySqlParser.IDENTIFIED, 0); }
		public TerminalNode BY() { return getToken(MySqlParser.BY, 0); }
		public TerminalNode PASSWORD() { return getToken(MySqlParser.PASSWORD, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public HashAuthOptionContext(UserAuthOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterHashAuthOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitHashAuthOption(this);
		}
	}

	public final UserAuthOptionContext userAuthOption() throws RecognitionException {
		UserAuthOptionContext _localctx = new UserAuthOptionContext(_ctx, getState());
		enterRule(_localctx, 466, RULE_userAuthOption);
		int _la;
		try {
			setState(5690);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,859,_ctx) ) {
			case 1:
				_localctx = new HashAuthOptionContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(5659);
				userName();
				setState(5660);
				match(IDENTIFIED);
				setState(5661);
				match(BY);
				setState(5662);
				match(PASSWORD);
				setState(5663);
				((HashAuthOptionContext)_localctx).hashed = match(STRING_LITERAL);
				}
				break;
			case 2:
				_localctx = new RandomAuthOptionContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(5665);
				userName();
				setState(5666);
				match(IDENTIFIED);
				setState(5667);
				match(BY);
				setState(5668);
				match(RANDOM);
				setState(5669);
				match(PASSWORD);
				setState(5670);
				authOptionClause();
				}
				break;
			case 3:
				_localctx = new StringAuthOptionContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(5672);
				userName();
				setState(5673);
				match(IDENTIFIED);
				setState(5674);
				match(BY);
				setState(5675);
				match(STRING_LITERAL);
				setState(5676);
				authOptionClause();
				}
				break;
			case 4:
				_localctx = new ModuleAuthOptionContext(_localctx);
				enterOuterAlt(_localctx, 4);
				{
				setState(5678);
				userName();
				setState(5679);
				match(IDENTIFIED);
				setState(5680);
				_la = _input.LA(1);
				if ( !(_la==WITH || _la==VIA) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(5681);
				authenticationRule();
				setState(5686);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==OR) {
					{
					{
					setState(5682);
					match(OR);
					setState(5683);
					authenticationRule();
					}
					}
					setState(5688);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			case 5:
				_localctx = new SimpleAuthOptionContext(_localctx);
				enterOuterAlt(_localctx, 5);
				{
				setState(5689);
				userName();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AuthOptionClauseContext extends ParserRuleContext {
		public TerminalNode REPLACE() { return getToken(MySqlParser.REPLACE, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode RETAIN() { return getToken(MySqlParser.RETAIN, 0); }
		public TerminalNode CURRENT() { return getToken(MySqlParser.CURRENT, 0); }
		public TerminalNode PASSWORD() { return getToken(MySqlParser.PASSWORD, 0); }
		public AuthOptionClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_authOptionClause; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAuthOptionClause(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAuthOptionClause(this);
		}
	}

	public final AuthOptionClauseContext authOptionClause() throws RecognitionException {
		AuthOptionClauseContext _localctx = new AuthOptionClauseContext(_ctx, getState());
		enterRule(_localctx, 468, RULE_authOptionClause);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5694);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,860,_ctx) ) {
			case 1:
				{
				setState(5692);
				match(REPLACE);
				setState(5693);
				match(STRING_LITERAL);
				}
				break;
			}
			setState(5699);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==RETAIN) {
				{
				setState(5696);
				match(RETAIN);
				setState(5697);
				match(CURRENT);
				setState(5698);
				match(PASSWORD);
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AuthenticationRuleContext extends ParserRuleContext {
		public AuthenticationRuleContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_authenticationRule; }
	 
		public AuthenticationRuleContext() { }
		public void copyFrom(AuthenticationRuleContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class PasswordModuleOptionContext extends AuthenticationRuleContext {
		public AuthPluginContext authPlugin() {
			return getRuleContext(AuthPluginContext.class,0);
		}
		public PasswordFunctionClauseContext passwordFunctionClause() {
			return getRuleContext(PasswordFunctionClauseContext.class,0);
		}
		public TerminalNode USING() { return getToken(MySqlParser.USING, 0); }
		public TerminalNode AS() { return getToken(MySqlParser.AS, 0); }
		public PasswordModuleOptionContext(AuthenticationRuleContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPasswordModuleOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPasswordModuleOption(this);
		}
	}
	public static class ModuleContext extends AuthenticationRuleContext {
		public AuthPluginContext authPlugin() {
			return getRuleContext(AuthPluginContext.class,0);
		}
		public AuthOptionClauseContext authOptionClause() {
			return getRuleContext(AuthOptionClauseContext.class,0);
		}
		public TerminalNode BY() { return getToken(MySqlParser.BY, 0); }
		public TerminalNode USING() { return getToken(MySqlParser.USING, 0); }
		public TerminalNode AS() { return getToken(MySqlParser.AS, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode RANDOM() { return getToken(MySqlParser.RANDOM, 0); }
		public TerminalNode PASSWORD() { return getToken(MySqlParser.PASSWORD, 0); }
		public ModuleContext(AuthenticationRuleContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterModule(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitModule(this);
		}
	}

	public final AuthenticationRuleContext authenticationRule() throws RecognitionException {
		AuthenticationRuleContext _localctx = new AuthenticationRuleContext(_ctx, getState());
		enterRule(_localctx, 470, RULE_authenticationRule);
		int _la;
		try {
			setState(5715);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,864,_ctx) ) {
			case 1:
				_localctx = new ModuleContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(5701);
				authPlugin();
				setState(5709);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,863,_ctx) ) {
				case 1:
					{
					setState(5702);
					_la = _input.LA(1);
					if ( !(_la==AS || _la==BY || _la==USING) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					setState(5706);
					_errHandler.sync(this);
					switch (_input.LA(1)) {
					case STRING_LITERAL:
						{
						setState(5703);
						match(STRING_LITERAL);
						}
						break;
					case RANDOM:
						{
						setState(5704);
						match(RANDOM);
						setState(5705);
						match(PASSWORD);
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					setState(5708);
					authOptionClause();
					}
					break;
				}
				}
				break;
			case 2:
				_localctx = new PasswordModuleOptionContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(5711);
				authPlugin();
				setState(5712);
				_la = _input.LA(1);
				if ( !(_la==AS || _la==USING) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(5713);
				passwordFunctionClause();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TlsOptionContext extends ParserRuleContext {
		public TerminalNode SSL() { return getToken(MySqlParser.SSL, 0); }
		public TerminalNode X509() { return getToken(MySqlParser.X509, 0); }
		public TerminalNode CIPHER() { return getToken(MySqlParser.CIPHER, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode ISSUER() { return getToken(MySqlParser.ISSUER, 0); }
		public TerminalNode SUBJECT() { return getToken(MySqlParser.SUBJECT, 0); }
		public TlsOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_tlsOption; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTlsOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTlsOption(this);
		}
	}

	public final TlsOptionContext tlsOption() throws RecognitionException {
		TlsOptionContext _localctx = new TlsOptionContext(_ctx, getState());
		enterRule(_localctx, 472, RULE_tlsOption);
		try {
			setState(5725);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case SSL:
				enterOuterAlt(_localctx, 1);
				{
				setState(5717);
				match(SSL);
				}
				break;
			case X509:
				enterOuterAlt(_localctx, 2);
				{
				setState(5718);
				match(X509);
				}
				break;
			case CIPHER:
				enterOuterAlt(_localctx, 3);
				{
				setState(5719);
				match(CIPHER);
				setState(5720);
				match(STRING_LITERAL);
				}
				break;
			case ISSUER:
				enterOuterAlt(_localctx, 4);
				{
				setState(5721);
				match(ISSUER);
				setState(5722);
				match(STRING_LITERAL);
				}
				break;
			case SUBJECT:
				enterOuterAlt(_localctx, 5);
				{
				setState(5723);
				match(SUBJECT);
				setState(5724);
				match(STRING_LITERAL);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class UserResourceOptionContext extends ParserRuleContext {
		public TerminalNode MAX_QUERIES_PER_HOUR() { return getToken(MySqlParser.MAX_QUERIES_PER_HOUR, 0); }
		public DecimalLiteralContext decimalLiteral() {
			return getRuleContext(DecimalLiteralContext.class,0);
		}
		public TerminalNode MAX_UPDATES_PER_HOUR() { return getToken(MySqlParser.MAX_UPDATES_PER_HOUR, 0); }
		public TerminalNode MAX_CONNECTIONS_PER_HOUR() { return getToken(MySqlParser.MAX_CONNECTIONS_PER_HOUR, 0); }
		public TerminalNode MAX_USER_CONNECTIONS() { return getToken(MySqlParser.MAX_USER_CONNECTIONS, 0); }
		public UserResourceOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_userResourceOption; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterUserResourceOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitUserResourceOption(this);
		}
	}

	public final UserResourceOptionContext userResourceOption() throws RecognitionException {
		UserResourceOptionContext _localctx = new UserResourceOptionContext(_ctx, getState());
		enterRule(_localctx, 474, RULE_userResourceOption);
		try {
			setState(5735);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case MAX_QUERIES_PER_HOUR:
				enterOuterAlt(_localctx, 1);
				{
				setState(5727);
				match(MAX_QUERIES_PER_HOUR);
				setState(5728);
				decimalLiteral();
				}
				break;
			case MAX_UPDATES_PER_HOUR:
				enterOuterAlt(_localctx, 2);
				{
				setState(5729);
				match(MAX_UPDATES_PER_HOUR);
				setState(5730);
				decimalLiteral();
				}
				break;
			case MAX_CONNECTIONS_PER_HOUR:
				enterOuterAlt(_localctx, 3);
				{
				setState(5731);
				match(MAX_CONNECTIONS_PER_HOUR);
				setState(5732);
				decimalLiteral();
				}
				break;
			case MAX_USER_CONNECTIONS:
				enterOuterAlt(_localctx, 4);
				{
				setState(5733);
				match(MAX_USER_CONNECTIONS);
				setState(5734);
				decimalLiteral();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class UserPasswordOptionContext extends ParserRuleContext {
		public Token expireType;
		public TerminalNode PASSWORD() { return getToken(MySqlParser.PASSWORD, 0); }
		public TerminalNode EXPIRE() { return getToken(MySqlParser.EXPIRE, 0); }
		public DecimalLiteralContext decimalLiteral() {
			return getRuleContext(DecimalLiteralContext.class,0);
		}
		public TerminalNode DAY() { return getToken(MySqlParser.DAY, 0); }
		public TerminalNode DEFAULT() { return getToken(MySqlParser.DEFAULT, 0); }
		public TerminalNode NEVER() { return getToken(MySqlParser.NEVER, 0); }
		public TerminalNode INTERVAL() { return getToken(MySqlParser.INTERVAL, 0); }
		public TerminalNode HISTORY() { return getToken(MySqlParser.HISTORY, 0); }
		public TerminalNode REUSE() { return getToken(MySqlParser.REUSE, 0); }
		public TerminalNode REQUIRE() { return getToken(MySqlParser.REQUIRE, 0); }
		public TerminalNode CURRENT() { return getToken(MySqlParser.CURRENT, 0); }
		public TerminalNode OPTIONAL() { return getToken(MySqlParser.OPTIONAL, 0); }
		public TerminalNode FAILED_LOGIN_ATTEMPTS() { return getToken(MySqlParser.FAILED_LOGIN_ATTEMPTS, 0); }
		public TerminalNode PASSWORD_LOCK_TIME() { return getToken(MySqlParser.PASSWORD_LOCK_TIME, 0); }
		public TerminalNode UNBOUNDED() { return getToken(MySqlParser.UNBOUNDED, 0); }
		public UserPasswordOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_userPasswordOption; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterUserPasswordOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitUserPasswordOption(this);
		}
	}

	public final UserPasswordOptionContext userPasswordOption() throws RecognitionException {
		UserPasswordOptionContext _localctx = new UserPasswordOptionContext(_ctx, getState());
		enterRule(_localctx, 476, RULE_userPasswordOption);
		int _la;
		try {
			setState(5775);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,872,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(5737);
				match(PASSWORD);
				setState(5738);
				match(EXPIRE);
				setState(5745);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case DEFAULT:
					{
					setState(5739);
					((UserPasswordOptionContext)_localctx).expireType = match(DEFAULT);
					}
					break;
				case NEVER:
					{
					setState(5740);
					((UserPasswordOptionContext)_localctx).expireType = match(NEVER);
					}
					break;
				case INTERVAL:
					{
					setState(5741);
					((UserPasswordOptionContext)_localctx).expireType = match(INTERVAL);
					setState(5742);
					decimalLiteral();
					setState(5743);
					match(DAY);
					}
					break;
				case EOF:
				case ALTER:
				case ANALYZE:
				case ATTRIBUTE:
				case CALL:
				case CHANGE:
				case CHECK:
				case CREATE:
				case DELETE:
				case DESC:
				case DESCRIBE:
				case DROP:
				case EXPLAIN:
				case GET:
				case GRANT:
				case INSERT:
				case KILL:
				case LOAD:
				case LOCK:
				case OPTIMIZE:
				case PURGE:
				case RELEASE:
				case RENAME:
				case REPLACE:
				case RESIGNAL:
				case REVOKE:
				case SELECT:
				case SET:
				case SHOW:
				case SIGNAL:
				case TABLE:
				case UNLOCK:
				case UPDATE:
				case USE:
				case VALUES:
				case WITH:
				case ACCOUNT:
				case BEGIN:
				case BINLOG:
				case CACHE:
				case CHECKSUM:
				case COMMENT:
				case COMMIT:
				case DEALLOCATE:
				case DO:
				case FAILED_LOGIN_ATTEMPTS:
				case FLUSH:
				case HANDLER:
				case HELP:
				case INSTALL:
				case PASSWORD:
				case PASSWORD_LOCK_TIME:
				case PREPARE:
				case REPAIR:
				case RESET:
				case ROLLBACK:
				case SAVEPOINT:
				case START:
				case STOP:
				case TRUNCATE:
				case UNINSTALL:
				case XA:
				case EXECUTE:
				case SHUTDOWN:
				case MINUS:
				case LR_BRACKET:
				case COMMA:
				case SEMI:
					break;
				default:
					break;
				}
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(5747);
				match(PASSWORD);
				setState(5748);
				match(HISTORY);
				setState(5751);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case DEFAULT:
					{
					setState(5749);
					match(DEFAULT);
					}
					break;
				case ZERO_DECIMAL:
				case ONE_DECIMAL:
				case TWO_DECIMAL:
				case DECIMAL_LITERAL:
				case REAL_LITERAL:
					{
					setState(5750);
					decimalLiteral();
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(5753);
				match(PASSWORD);
				setState(5754);
				match(REUSE);
				setState(5755);
				match(INTERVAL);
				setState(5760);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case DEFAULT:
					{
					setState(5756);
					match(DEFAULT);
					}
					break;
				case ZERO_DECIMAL:
				case ONE_DECIMAL:
				case TWO_DECIMAL:
				case DECIMAL_LITERAL:
				case REAL_LITERAL:
					{
					setState(5757);
					decimalLiteral();
					setState(5758);
					match(DAY);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(5762);
				match(PASSWORD);
				setState(5763);
				match(REQUIRE);
				setState(5764);
				match(CURRENT);
				setState(5766);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==DEFAULT || _la==OPTIONAL) {
					{
					setState(5765);
					_la = _input.LA(1);
					if ( !(_la==DEFAULT || _la==OPTIONAL) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
				}

				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(5768);
				match(FAILED_LOGIN_ATTEMPTS);
				setState(5769);
				decimalLiteral();
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(5770);
				match(PASSWORD_LOCK_TIME);
				setState(5773);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case ZERO_DECIMAL:
				case ONE_DECIMAL:
				case TWO_DECIMAL:
				case DECIMAL_LITERAL:
				case REAL_LITERAL:
					{
					setState(5771);
					decimalLiteral();
					}
					break;
				case UNBOUNDED:
					{
					setState(5772);
					match(UNBOUNDED);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class UserLockOptionContext extends ParserRuleContext {
		public Token lockType;
		public TerminalNode ACCOUNT() { return getToken(MySqlParser.ACCOUNT, 0); }
		public TerminalNode LOCK() { return getToken(MySqlParser.LOCK, 0); }
		public TerminalNode UNLOCK() { return getToken(MySqlParser.UNLOCK, 0); }
		public UserLockOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_userLockOption; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterUserLockOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitUserLockOption(this);
		}
	}

	public final UserLockOptionContext userLockOption() throws RecognitionException {
		UserLockOptionContext _localctx = new UserLockOptionContext(_ctx, getState());
		enterRule(_localctx, 478, RULE_userLockOption);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5777);
			match(ACCOUNT);
			setState(5778);
			((UserLockOptionContext)_localctx).lockType = _input.LT(1);
			_la = _input.LA(1);
			if ( !(_la==LOCK || _la==UNLOCK) ) {
				((UserLockOptionContext)_localctx).lockType = (Token)_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PrivelegeClauseContext extends ParserRuleContext {
		public PrivilegeContext privilege() {
			return getRuleContext(PrivilegeContext.class,0);
		}
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public UidListContext uidList() {
			return getRuleContext(UidListContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public PrivelegeClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_privelegeClause; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPrivelegeClause(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPrivelegeClause(this);
		}
	}

	public final PrivelegeClauseContext privelegeClause() throws RecognitionException {
		PrivelegeClauseContext _localctx = new PrivelegeClauseContext(_ctx, getState());
		enterRule(_localctx, 480, RULE_privelegeClause);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5780);
			privilege();
			setState(5785);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LR_BRACKET) {
				{
				setState(5781);
				match(LR_BRACKET);
				setState(5782);
				uidList();
				setState(5783);
				match(RR_BRACKET);
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PrivilegeContext extends ParserRuleContext {
		public TerminalNode ALL() { return getToken(MySqlParser.ALL, 0); }
		public TerminalNode PRIVILEGES() { return getToken(MySqlParser.PRIVILEGES, 0); }
		public TerminalNode ALTER() { return getToken(MySqlParser.ALTER, 0); }
		public TerminalNode ROUTINE() { return getToken(MySqlParser.ROUTINE, 0); }
		public TerminalNode CREATE() { return getToken(MySqlParser.CREATE, 0); }
		public TerminalNode TEMPORARY() { return getToken(MySqlParser.TEMPORARY, 0); }
		public TerminalNode TABLES() { return getToken(MySqlParser.TABLES, 0); }
		public TerminalNode VIEW() { return getToken(MySqlParser.VIEW, 0); }
		public TerminalNode USER() { return getToken(MySqlParser.USER, 0); }
		public TerminalNode TABLESPACE() { return getToken(MySqlParser.TABLESPACE, 0); }
		public TerminalNode ROLE() { return getToken(MySqlParser.ROLE, 0); }
		public TerminalNode DELETE() { return getToken(MySqlParser.DELETE, 0); }
		public TerminalNode HISTORY() { return getToken(MySqlParser.HISTORY, 0); }
		public TerminalNode DROP() { return getToken(MySqlParser.DROP, 0); }
		public TerminalNode EVENT() { return getToken(MySqlParser.EVENT, 0); }
		public TerminalNode EXECUTE() { return getToken(MySqlParser.EXECUTE, 0); }
		public TerminalNode FILE() { return getToken(MySqlParser.FILE, 0); }
		public TerminalNode GRANT() { return getToken(MySqlParser.GRANT, 0); }
		public TerminalNode OPTION() { return getToken(MySqlParser.OPTION, 0); }
		public TerminalNode INDEX() { return getToken(MySqlParser.INDEX, 0); }
		public TerminalNode INSERT() { return getToken(MySqlParser.INSERT, 0); }
		public TerminalNode LOCK() { return getToken(MySqlParser.LOCK, 0); }
		public TerminalNode PROCESS() { return getToken(MySqlParser.PROCESS, 0); }
		public TerminalNode PROXY() { return getToken(MySqlParser.PROXY, 0); }
		public TerminalNode REFERENCES() { return getToken(MySqlParser.REFERENCES, 0); }
		public TerminalNode RELOAD() { return getToken(MySqlParser.RELOAD, 0); }
		public TerminalNode REPLICATION() { return getToken(MySqlParser.REPLICATION, 0); }
		public TerminalNode CLIENT() { return getToken(MySqlParser.CLIENT, 0); }
		public TerminalNode SLAVE() { return getToken(MySqlParser.SLAVE, 0); }
		public TerminalNode REPLICA() { return getToken(MySqlParser.REPLICA, 0); }
		public TerminalNode MASTER() { return getToken(MySqlParser.MASTER, 0); }
		public TerminalNode ADMIN() { return getToken(MySqlParser.ADMIN, 0); }
		public TerminalNode SELECT() { return getToken(MySqlParser.SELECT, 0); }
		public TerminalNode SHOW() { return getToken(MySqlParser.SHOW, 0); }
		public TerminalNode DATABASES() { return getToken(MySqlParser.DATABASES, 0); }
		public TerminalNode SCHEMAS() { return getToken(MySqlParser.SCHEMAS, 0); }
		public TerminalNode SHUTDOWN() { return getToken(MySqlParser.SHUTDOWN, 0); }
		public TerminalNode SUPER() { return getToken(MySqlParser.SUPER, 0); }
		public TerminalNode TRIGGER() { return getToken(MySqlParser.TRIGGER, 0); }
		public TerminalNode UPDATE() { return getToken(MySqlParser.UPDATE, 0); }
		public TerminalNode USAGE() { return getToken(MySqlParser.USAGE, 0); }
		public TerminalNode APPLICATION_PASSWORD_ADMIN() { return getToken(MySqlParser.APPLICATION_PASSWORD_ADMIN, 0); }
		public TerminalNode AUDIT_ABORT_EXEMPT() { return getToken(MySqlParser.AUDIT_ABORT_EXEMPT, 0); }
		public TerminalNode AUDIT_ADMIN() { return getToken(MySqlParser.AUDIT_ADMIN, 0); }
		public TerminalNode AUTHENTICATION_POLICY_ADMIN() { return getToken(MySqlParser.AUTHENTICATION_POLICY_ADMIN, 0); }
		public TerminalNode BACKUP_ADMIN() { return getToken(MySqlParser.BACKUP_ADMIN, 0); }
		public TerminalNode BINLOG_ADMIN() { return getToken(MySqlParser.BINLOG_ADMIN, 0); }
		public TerminalNode BINLOG_ENCRYPTION_ADMIN() { return getToken(MySqlParser.BINLOG_ENCRYPTION_ADMIN, 0); }
		public TerminalNode CLONE_ADMIN() { return getToken(MySqlParser.CLONE_ADMIN, 0); }
		public TerminalNode CONNECTION_ADMIN() { return getToken(MySqlParser.CONNECTION_ADMIN, 0); }
		public TerminalNode ENCRYPTION_KEY_ADMIN() { return getToken(MySqlParser.ENCRYPTION_KEY_ADMIN, 0); }
		public TerminalNode FIREWALL_ADMIN() { return getToken(MySqlParser.FIREWALL_ADMIN, 0); }
		public TerminalNode FIREWALL_EXEMPT() { return getToken(MySqlParser.FIREWALL_EXEMPT, 0); }
		public TerminalNode FIREWALL_USER() { return getToken(MySqlParser.FIREWALL_USER, 0); }
		public TerminalNode FLUSH_OPTIMIZER_COSTS() { return getToken(MySqlParser.FLUSH_OPTIMIZER_COSTS, 0); }
		public TerminalNode FLUSH_STATUS() { return getToken(MySqlParser.FLUSH_STATUS, 0); }
		public TerminalNode FLUSH_TABLES() { return getToken(MySqlParser.FLUSH_TABLES, 0); }
		public TerminalNode FLUSH_USER_RESOURCES() { return getToken(MySqlParser.FLUSH_USER_RESOURCES, 0); }
		public TerminalNode GROUP_REPLICATION_ADMIN() { return getToken(MySqlParser.GROUP_REPLICATION_ADMIN, 0); }
		public TerminalNode GROUP_REPLICATION_STREAM() { return getToken(MySqlParser.GROUP_REPLICATION_STREAM, 0); }
		public TerminalNode INNODB_REDO_LOG_ARCHIVE() { return getToken(MySqlParser.INNODB_REDO_LOG_ARCHIVE, 0); }
		public TerminalNode INNODB_REDO_LOG_ENABLE() { return getToken(MySqlParser.INNODB_REDO_LOG_ENABLE, 0); }
		public TerminalNode NDB_STORED_USER() { return getToken(MySqlParser.NDB_STORED_USER, 0); }
		public TerminalNode PASSWORDLESS_USER_ADMIN() { return getToken(MySqlParser.PASSWORDLESS_USER_ADMIN, 0); }
		public TerminalNode PERSIST_RO_VARIABLES_ADMIN() { return getToken(MySqlParser.PERSIST_RO_VARIABLES_ADMIN, 0); }
		public TerminalNode REPLICATION_APPLIER() { return getToken(MySqlParser.REPLICATION_APPLIER, 0); }
		public TerminalNode REPLICATION_SLAVE_ADMIN() { return getToken(MySqlParser.REPLICATION_SLAVE_ADMIN, 0); }
		public TerminalNode RESOURCE_GROUP_ADMIN() { return getToken(MySqlParser.RESOURCE_GROUP_ADMIN, 0); }
		public TerminalNode RESOURCE_GROUP_USER() { return getToken(MySqlParser.RESOURCE_GROUP_USER, 0); }
		public TerminalNode ROLE_ADMIN() { return getToken(MySqlParser.ROLE_ADMIN, 0); }
		public TerminalNode SENSITIVE_VARIABLES_OBSERVER() { return getToken(MySqlParser.SENSITIVE_VARIABLES_OBSERVER, 0); }
		public TerminalNode SERVICE_CONNECTION_ADMIN() { return getToken(MySqlParser.SERVICE_CONNECTION_ADMIN, 0); }
		public TerminalNode SESSION_VARIABLES_ADMIN() { return getToken(MySqlParser.SESSION_VARIABLES_ADMIN, 0); }
		public TerminalNode SET_USER_ID() { return getToken(MySqlParser.SET_USER_ID, 0); }
		public TerminalNode SKIP_QUERY_REWRITE() { return getToken(MySqlParser.SKIP_QUERY_REWRITE, 0); }
		public TerminalNode SHOW_ROUTINE() { return getToken(MySqlParser.SHOW_ROUTINE, 0); }
		public TerminalNode SYSTEM_USER() { return getToken(MySqlParser.SYSTEM_USER, 0); }
		public TerminalNode SYSTEM_VARIABLES_ADMIN() { return getToken(MySqlParser.SYSTEM_VARIABLES_ADMIN, 0); }
		public TerminalNode TABLE_ENCRYPTION_ADMIN() { return getToken(MySqlParser.TABLE_ENCRYPTION_ADMIN, 0); }
		public TerminalNode TELEMETRY_LOG_ADMIN() { return getToken(MySqlParser.TELEMETRY_LOG_ADMIN, 0); }
		public TerminalNode TP_CONNECTION_ADMIN() { return getToken(MySqlParser.TP_CONNECTION_ADMIN, 0); }
		public TerminalNode VERSION_TOKEN_ADMIN() { return getToken(MySqlParser.VERSION_TOKEN_ADMIN, 0); }
		public TerminalNode XA_RECOVER_ADMIN() { return getToken(MySqlParser.XA_RECOVER_ADMIN, 0); }
		public TerminalNode BINLOG_MONITOR() { return getToken(MySqlParser.BINLOG_MONITOR, 0); }
		public TerminalNode BINLOG_REPLAY() { return getToken(MySqlParser.BINLOG_REPLAY, 0); }
		public TerminalNode FEDERATED_ADMIN() { return getToken(MySqlParser.FEDERATED_ADMIN, 0); }
		public TerminalNode READ_ONLY_ADMIN() { return getToken(MySqlParser.READ_ONLY_ADMIN, 0); }
		public TerminalNode REPLICATION_MASTER_ADMIN() { return getToken(MySqlParser.REPLICATION_MASTER_ADMIN, 0); }
		public TerminalNode BINLOG() { return getToken(MySqlParser.BINLOG, 0); }
		public TerminalNode MONITOR() { return getToken(MySqlParser.MONITOR, 0); }
		public TerminalNode REPLAY() { return getToken(MySqlParser.REPLAY, 0); }
		public TerminalNode FEDERATED() { return getToken(MySqlParser.FEDERATED, 0); }
		public TerminalNode READ() { return getToken(MySqlParser.READ, 0); }
		public TerminalNode ONLY() { return getToken(MySqlParser.ONLY, 0); }
		public TerminalNode READ_ONLY() { return getToken(MySqlParser.READ_ONLY, 0); }
		public TerminalNode CONNECTION() { return getToken(MySqlParser.CONNECTION, 0); }
		public TerminalNode SET() { return getToken(MySqlParser.SET, 0); }
		public TerminalNode LOAD() { return getToken(MySqlParser.LOAD, 0); }
		public TerminalNode FROM() { return getToken(MySqlParser.FROM, 0); }
		public TerminalNode S3() { return getToken(MySqlParser.S3, 0); }
		public TerminalNode INTO() { return getToken(MySqlParser.INTO, 0); }
		public TerminalNode INVOKE() { return getToken(MySqlParser.INVOKE, 0); }
		public TerminalNode LAMBDA() { return getToken(MySqlParser.LAMBDA, 0); }
		public PrivilegeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_privilege; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPrivilege(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPrivilege(this);
		}
	}

	public final PrivilegeContext privilege() throws RecognitionException {
		PrivilegeContext _localctx = new PrivilegeContext(_ctx, getState());
		enterRule(_localctx, 482, RULE_privilege);
		int _la;
		try {
			setState(5918);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,881,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(5787);
				match(ALL);
				setState(5789);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==PRIVILEGES) {
					{
					setState(5788);
					match(PRIVILEGES);
					}
				}

				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(5791);
				match(ALTER);
				setState(5793);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==ROUTINE) {
					{
					setState(5792);
					match(ROUTINE);
					}
				}

				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(5795);
				match(CREATE);
				setState(5803);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case TEMPORARY:
					{
					setState(5796);
					match(TEMPORARY);
					setState(5797);
					match(TABLES);
					}
					break;
				case ROUTINE:
					{
					setState(5798);
					match(ROUTINE);
					}
					break;
				case VIEW:
					{
					setState(5799);
					match(VIEW);
					}
					break;
				case USER:
					{
					setState(5800);
					match(USER);
					}
					break;
				case TABLESPACE:
					{
					setState(5801);
					match(TABLESPACE);
					}
					break;
				case ROLE:
					{
					setState(5802);
					match(ROLE);
					}
					break;
				case ON:
				case LR_BRACKET:
				case COMMA:
					break;
				default:
					break;
				}
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(5805);
				match(DELETE);
				setState(5807);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==HISTORY) {
					{
					setState(5806);
					match(HISTORY);
					}
				}

				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(5809);
				match(DROP);
				setState(5811);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==ROLE) {
					{
					setState(5810);
					match(ROLE);
					}
				}

				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(5813);
				match(EVENT);
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(5814);
				match(EXECUTE);
				}
				break;
			case 8:
				enterOuterAlt(_localctx, 8);
				{
				setState(5815);
				match(FILE);
				}
				break;
			case 9:
				enterOuterAlt(_localctx, 9);
				{
				setState(5816);
				match(GRANT);
				setState(5817);
				match(OPTION);
				}
				break;
			case 10:
				enterOuterAlt(_localctx, 10);
				{
				setState(5818);
				match(INDEX);
				}
				break;
			case 11:
				enterOuterAlt(_localctx, 11);
				{
				setState(5819);
				match(INSERT);
				}
				break;
			case 12:
				enterOuterAlt(_localctx, 12);
				{
				setState(5820);
				match(LOCK);
				setState(5821);
				match(TABLES);
				}
				break;
			case 13:
				enterOuterAlt(_localctx, 13);
				{
				setState(5822);
				match(PROCESS);
				}
				break;
			case 14:
				enterOuterAlt(_localctx, 14);
				{
				setState(5823);
				match(PROXY);
				}
				break;
			case 15:
				enterOuterAlt(_localctx, 15);
				{
				setState(5824);
				match(REFERENCES);
				}
				break;
			case 16:
				enterOuterAlt(_localctx, 16);
				{
				setState(5825);
				match(RELOAD);
				}
				break;
			case 17:
				enterOuterAlt(_localctx, 17);
				{
				setState(5826);
				match(REPLICATION);
				setState(5827);
				_la = _input.LA(1);
				if ( !(_la==CLIENT || _la==MASTER || _la==SLAVE || _la==REPLICA) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(5829);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==ADMIN) {
					{
					setState(5828);
					match(ADMIN);
					}
				}

				}
				break;
			case 18:
				enterOuterAlt(_localctx, 18);
				{
				setState(5831);
				match(SELECT);
				}
				break;
			case 19:
				enterOuterAlt(_localctx, 19);
				{
				setState(5832);
				match(SHOW);
				setState(5833);
				_la = _input.LA(1);
				if ( !(_la==DATABASES || _la==SCHEMAS || _la==VIEW) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case 20:
				enterOuterAlt(_localctx, 20);
				{
				setState(5834);
				match(SHUTDOWN);
				}
				break;
			case 21:
				enterOuterAlt(_localctx, 21);
				{
				setState(5835);
				match(SUPER);
				}
				break;
			case 22:
				enterOuterAlt(_localctx, 22);
				{
				setState(5836);
				match(TRIGGER);
				}
				break;
			case 23:
				enterOuterAlt(_localctx, 23);
				{
				setState(5837);
				match(UPDATE);
				}
				break;
			case 24:
				enterOuterAlt(_localctx, 24);
				{
				setState(5838);
				match(USAGE);
				}
				break;
			case 25:
				enterOuterAlt(_localctx, 25);
				{
				setState(5839);
				match(APPLICATION_PASSWORD_ADMIN);
				}
				break;
			case 26:
				enterOuterAlt(_localctx, 26);
				{
				setState(5840);
				match(AUDIT_ABORT_EXEMPT);
				}
				break;
			case 27:
				enterOuterAlt(_localctx, 27);
				{
				setState(5841);
				match(AUDIT_ADMIN);
				}
				break;
			case 28:
				enterOuterAlt(_localctx, 28);
				{
				setState(5842);
				match(AUTHENTICATION_POLICY_ADMIN);
				}
				break;
			case 29:
				enterOuterAlt(_localctx, 29);
				{
				setState(5843);
				match(BACKUP_ADMIN);
				}
				break;
			case 30:
				enterOuterAlt(_localctx, 30);
				{
				setState(5844);
				match(BINLOG_ADMIN);
				}
				break;
			case 31:
				enterOuterAlt(_localctx, 31);
				{
				setState(5845);
				match(BINLOG_ENCRYPTION_ADMIN);
				}
				break;
			case 32:
				enterOuterAlt(_localctx, 32);
				{
				setState(5846);
				match(CLONE_ADMIN);
				}
				break;
			case 33:
				enterOuterAlt(_localctx, 33);
				{
				setState(5847);
				match(CONNECTION_ADMIN);
				}
				break;
			case 34:
				enterOuterAlt(_localctx, 34);
				{
				setState(5848);
				match(ENCRYPTION_KEY_ADMIN);
				}
				break;
			case 35:
				enterOuterAlt(_localctx, 35);
				{
				setState(5849);
				match(FIREWALL_ADMIN);
				}
				break;
			case 36:
				enterOuterAlt(_localctx, 36);
				{
				setState(5850);
				match(FIREWALL_EXEMPT);
				}
				break;
			case 37:
				enterOuterAlt(_localctx, 37);
				{
				setState(5851);
				match(FIREWALL_USER);
				}
				break;
			case 38:
				enterOuterAlt(_localctx, 38);
				{
				setState(5852);
				match(FLUSH_OPTIMIZER_COSTS);
				}
				break;
			case 39:
				enterOuterAlt(_localctx, 39);
				{
				setState(5853);
				match(FLUSH_STATUS);
				}
				break;
			case 40:
				enterOuterAlt(_localctx, 40);
				{
				setState(5854);
				match(FLUSH_TABLES);
				}
				break;
			case 41:
				enterOuterAlt(_localctx, 41);
				{
				setState(5855);
				match(FLUSH_USER_RESOURCES);
				}
				break;
			case 42:
				enterOuterAlt(_localctx, 42);
				{
				setState(5856);
				match(GROUP_REPLICATION_ADMIN);
				}
				break;
			case 43:
				enterOuterAlt(_localctx, 43);
				{
				setState(5857);
				match(GROUP_REPLICATION_STREAM);
				}
				break;
			case 44:
				enterOuterAlt(_localctx, 44);
				{
				setState(5858);
				match(INNODB_REDO_LOG_ARCHIVE);
				}
				break;
			case 45:
				enterOuterAlt(_localctx, 45);
				{
				setState(5859);
				match(INNODB_REDO_LOG_ENABLE);
				}
				break;
			case 46:
				enterOuterAlt(_localctx, 46);
				{
				setState(5860);
				match(NDB_STORED_USER);
				}
				break;
			case 47:
				enterOuterAlt(_localctx, 47);
				{
				setState(5861);
				match(PASSWORDLESS_USER_ADMIN);
				}
				break;
			case 48:
				enterOuterAlt(_localctx, 48);
				{
				setState(5862);
				match(PERSIST_RO_VARIABLES_ADMIN);
				}
				break;
			case 49:
				enterOuterAlt(_localctx, 49);
				{
				setState(5863);
				match(REPLICATION_APPLIER);
				}
				break;
			case 50:
				enterOuterAlt(_localctx, 50);
				{
				setState(5864);
				match(REPLICATION_SLAVE_ADMIN);
				}
				break;
			case 51:
				enterOuterAlt(_localctx, 51);
				{
				setState(5865);
				match(RESOURCE_GROUP_ADMIN);
				}
				break;
			case 52:
				enterOuterAlt(_localctx, 52);
				{
				setState(5866);
				match(RESOURCE_GROUP_USER);
				}
				break;
			case 53:
				enterOuterAlt(_localctx, 53);
				{
				setState(5867);
				match(ROLE_ADMIN);
				}
				break;
			case 54:
				enterOuterAlt(_localctx, 54);
				{
				setState(5868);
				match(SENSITIVE_VARIABLES_OBSERVER);
				}
				break;
			case 55:
				enterOuterAlt(_localctx, 55);
				{
				setState(5869);
				match(SERVICE_CONNECTION_ADMIN);
				}
				break;
			case 56:
				enterOuterAlt(_localctx, 56);
				{
				setState(5870);
				match(SESSION_VARIABLES_ADMIN);
				}
				break;
			case 57:
				enterOuterAlt(_localctx, 57);
				{
				setState(5871);
				match(SET_USER_ID);
				}
				break;
			case 58:
				enterOuterAlt(_localctx, 58);
				{
				setState(5872);
				match(SKIP_QUERY_REWRITE);
				}
				break;
			case 59:
				enterOuterAlt(_localctx, 59);
				{
				setState(5873);
				match(SHOW_ROUTINE);
				}
				break;
			case 60:
				enterOuterAlt(_localctx, 60);
				{
				setState(5874);
				match(SYSTEM_USER);
				}
				break;
			case 61:
				enterOuterAlt(_localctx, 61);
				{
				setState(5875);
				match(SYSTEM_VARIABLES_ADMIN);
				}
				break;
			case 62:
				enterOuterAlt(_localctx, 62);
				{
				setState(5876);
				match(TABLE_ENCRYPTION_ADMIN);
				}
				break;
			case 63:
				enterOuterAlt(_localctx, 63);
				{
				setState(5877);
				match(TELEMETRY_LOG_ADMIN);
				}
				break;
			case 64:
				enterOuterAlt(_localctx, 64);
				{
				setState(5878);
				match(TP_CONNECTION_ADMIN);
				}
				break;
			case 65:
				enterOuterAlt(_localctx, 65);
				{
				setState(5879);
				match(VERSION_TOKEN_ADMIN);
				}
				break;
			case 66:
				enterOuterAlt(_localctx, 66);
				{
				setState(5880);
				match(XA_RECOVER_ADMIN);
				}
				break;
			case 67:
				enterOuterAlt(_localctx, 67);
				{
				setState(5881);
				match(BINLOG_MONITOR);
				}
				break;
			case 68:
				enterOuterAlt(_localctx, 68);
				{
				setState(5882);
				match(BINLOG_REPLAY);
				}
				break;
			case 69:
				enterOuterAlt(_localctx, 69);
				{
				setState(5883);
				match(FEDERATED_ADMIN);
				}
				break;
			case 70:
				enterOuterAlt(_localctx, 70);
				{
				setState(5884);
				match(READ_ONLY_ADMIN);
				}
				break;
			case 71:
				enterOuterAlt(_localctx, 71);
				{
				setState(5885);
				match(REPLICATION_MASTER_ADMIN);
				}
				break;
			case 72:
				enterOuterAlt(_localctx, 72);
				{
				setState(5886);
				match(BINLOG);
				setState(5887);
				_la = _input.LA(1);
				if ( !(_la==ADMIN || _la==MONITOR || _la==REPLAY) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case 73:
				enterOuterAlt(_localctx, 73);
				{
				setState(5888);
				match(FEDERATED);
				setState(5889);
				match(ADMIN);
				}
				break;
			case 74:
				enterOuterAlt(_localctx, 74);
				{
				setState(5893);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case READ:
					{
					setState(5890);
					match(READ);
					setState(5891);
					match(ONLY);
					}
					break;
				case READ_ONLY:
					{
					setState(5892);
					match(READ_ONLY);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(5895);
				match(ADMIN);
				}
				break;
			case 75:
				enterOuterAlt(_localctx, 75);
				{
				setState(5896);
				match(ADMIN);
				setState(5897);
				match(OPTION);
				}
				break;
			case 76:
				enterOuterAlt(_localctx, 76);
				{
				setState(5898);
				match(CONNECTION);
				setState(5899);
				match(ADMIN);
				}
				break;
			case 77:
				enterOuterAlt(_localctx, 77);
				{
				setState(5900);
				match(DELETE);
				setState(5901);
				match(HISTORY);
				}
				break;
			case 78:
				enterOuterAlt(_localctx, 78);
				{
				setState(5902);
				match(REPLICA);
				setState(5903);
				match(MONITOR);
				}
				break;
			case 79:
				enterOuterAlt(_localctx, 79);
				{
				setState(5904);
				match(GRANT);
				setState(5905);
				match(OPTION);
				}
				break;
			case 80:
				enterOuterAlt(_localctx, 80);
				{
				setState(5906);
				match(SET);
				setState(5907);
				match(USER);
				}
				break;
			case 81:
				enterOuterAlt(_localctx, 81);
				{
				setState(5908);
				match(SLAVE);
				setState(5909);
				match(MONITOR);
				}
				break;
			case 82:
				enterOuterAlt(_localctx, 82);
				{
				setState(5910);
				match(LOAD);
				setState(5911);
				match(FROM);
				setState(5912);
				match(S3);
				}
				break;
			case 83:
				enterOuterAlt(_localctx, 83);
				{
				setState(5913);
				match(SELECT);
				setState(5914);
				match(INTO);
				setState(5915);
				match(S3);
				}
				break;
			case 84:
				enterOuterAlt(_localctx, 84);
				{
				setState(5916);
				match(INVOKE);
				setState(5917);
				match(LAMBDA);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PrivilegeLevelContext extends ParserRuleContext {
		public PrivilegeLevelContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_privilegeLevel; }
	 
		public PrivilegeLevelContext() { }
		public void copyFrom(PrivilegeLevelContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class DefiniteSchemaPrivLevelContext extends PrivilegeLevelContext {
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode DOT() { return getToken(MySqlParser.DOT, 0); }
		public TerminalNode STAR() { return getToken(MySqlParser.STAR, 0); }
		public DefiniteSchemaPrivLevelContext(PrivilegeLevelContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDefiniteSchemaPrivLevel(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDefiniteSchemaPrivLevel(this);
		}
	}
	public static class DefiniteFullTablePrivLevel2Context extends PrivilegeLevelContext {
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public DottedIdContext dottedId() {
			return getRuleContext(DottedIdContext.class,0);
		}
		public DefiniteFullTablePrivLevel2Context(PrivilegeLevelContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDefiniteFullTablePrivLevel2(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDefiniteFullTablePrivLevel2(this);
		}
	}
	public static class DefiniteFullTablePrivLevelContext extends PrivilegeLevelContext {
		public List uid() {
			return getRuleContexts(UidContext.class);
		}
		public UidContext uid(int i) {
			return getRuleContext(UidContext.class,i);
		}
		public TerminalNode DOT() { return getToken(MySqlParser.DOT, 0); }
		public DefiniteFullTablePrivLevelContext(PrivilegeLevelContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDefiniteFullTablePrivLevel(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDefiniteFullTablePrivLevel(this);
		}
	}
	public static class GlobalPrivLevelContext extends PrivilegeLevelContext {
		public List STAR() { return getTokens(MySqlParser.STAR); }
		public TerminalNode STAR(int i) {
			return getToken(MySqlParser.STAR, i);
		}
		public TerminalNode DOT() { return getToken(MySqlParser.DOT, 0); }
		public GlobalPrivLevelContext(PrivilegeLevelContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterGlobalPrivLevel(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitGlobalPrivLevel(this);
		}
	}
	public static class DefiniteTablePrivLevelContext extends PrivilegeLevelContext {
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public DefiniteTablePrivLevelContext(PrivilegeLevelContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDefiniteTablePrivLevel(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDefiniteTablePrivLevel(this);
		}
	}
	public static class CurrentSchemaPriviLevelContext extends PrivilegeLevelContext {
		public TerminalNode STAR() { return getToken(MySqlParser.STAR, 0); }
		public CurrentSchemaPriviLevelContext(PrivilegeLevelContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCurrentSchemaPriviLevel(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCurrentSchemaPriviLevel(this);
		}
	}

	public final PrivilegeLevelContext privilegeLevel() throws RecognitionException {
		PrivilegeLevelContext _localctx = new PrivilegeLevelContext(_ctx, getState());
		enterRule(_localctx, 484, RULE_privilegeLevel);
		try {
			setState(5936);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,882,_ctx) ) {
			case 1:
				_localctx = new CurrentSchemaPriviLevelContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(5920);
				match(STAR);
				}
				break;
			case 2:
				_localctx = new GlobalPrivLevelContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(5921);
				match(STAR);
				setState(5922);
				match(DOT);
				setState(5923);
				match(STAR);
				}
				break;
			case 3:
				_localctx = new DefiniteSchemaPrivLevelContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(5924);
				uid();
				setState(5925);
				match(DOT);
				setState(5926);
				match(STAR);
				}
				break;
			case 4:
				_localctx = new DefiniteFullTablePrivLevelContext(_localctx);
				enterOuterAlt(_localctx, 4);
				{
				setState(5928);
				uid();
				setState(5929);
				match(DOT);
				setState(5930);
				uid();
				}
				break;
			case 5:
				_localctx = new DefiniteFullTablePrivLevel2Context(_localctx);
				enterOuterAlt(_localctx, 5);
				{
				setState(5932);
				uid();
				setState(5933);
				dottedId();
				}
				break;
			case 6:
				_localctx = new DefiniteTablePrivLevelContext(_localctx);
				enterOuterAlt(_localctx, 6);
				{
				setState(5935);
				uid();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RenameUserClauseContext extends ParserRuleContext {
		public UserNameContext fromFirst;
		public UserNameContext toFirst;
		public TerminalNode TO() { return getToken(MySqlParser.TO, 0); }
		public List userName() {
			return getRuleContexts(UserNameContext.class);
		}
		public UserNameContext userName(int i) {
			return getRuleContext(UserNameContext.class,i);
		}
		public RenameUserClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_renameUserClause; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterRenameUserClause(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitRenameUserClause(this);
		}
	}

	public final RenameUserClauseContext renameUserClause() throws RecognitionException {
		RenameUserClauseContext _localctx = new RenameUserClauseContext(_ctx, getState());
		enterRule(_localctx, 486, RULE_renameUserClause);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5938);
			((RenameUserClauseContext)_localctx).fromFirst = userName();
			setState(5939);
			match(TO);
			setState(5940);
			((RenameUserClauseContext)_localctx).toFirst = userName();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AnalyzeTableContext extends ParserRuleContext {
		public Token actionOption;
		public TerminalNode ANALYZE() { return getToken(MySqlParser.ANALYZE, 0); }
		public TablesContext tables() {
			return getRuleContext(TablesContext.class,0);
		}
		public TerminalNode TABLE() { return getToken(MySqlParser.TABLE, 0); }
		public TerminalNode TABLES() { return getToken(MySqlParser.TABLES, 0); }
		public TerminalNode UPDATE() { return getToken(MySqlParser.UPDATE, 0); }
		public List HISTOGRAM() { return getTokens(MySqlParser.HISTOGRAM); }
		public TerminalNode HISTOGRAM(int i) {
			return getToken(MySqlParser.HISTOGRAM, i);
		}
		public List ON() { return getTokens(MySqlParser.ON); }
		public TerminalNode ON(int i) {
			return getToken(MySqlParser.ON, i);
		}
		public List fullColumnName() {
			return getRuleContexts(FullColumnNameContext.class);
		}
		public FullColumnNameContext fullColumnName(int i) {
			return getRuleContext(FullColumnNameContext.class,i);
		}
		public TerminalNode DROP() { return getToken(MySqlParser.DROP, 0); }
		public TerminalNode NO_WRITE_TO_BINLOG() { return getToken(MySqlParser.NO_WRITE_TO_BINLOG, 0); }
		public TerminalNode LOCAL() { return getToken(MySqlParser.LOCAL, 0); }
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public TerminalNode WITH() { return getToken(MySqlParser.WITH, 0); }
		public DecimalLiteralContext decimalLiteral() {
			return getRuleContext(DecimalLiteralContext.class,0);
		}
		public TerminalNode BUCKETS() { return getToken(MySqlParser.BUCKETS, 0); }
		public AnalyzeTableContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_analyzeTable; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAnalyzeTable(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAnalyzeTable(this);
		}
	}

	public final AnalyzeTableContext analyzeTable() throws RecognitionException {
		AnalyzeTableContext _localctx = new AnalyzeTableContext(_ctx, getState());
		enterRule(_localctx, 488, RULE_analyzeTable);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5942);
			match(ANALYZE);
			setState(5944);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==NO_WRITE_TO_BINLOG || _la==LOCAL) {
				{
				setState(5943);
				((AnalyzeTableContext)_localctx).actionOption = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==NO_WRITE_TO_BINLOG || _la==LOCAL) ) {
					((AnalyzeTableContext)_localctx).actionOption = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(5946);
			_la = _input.LA(1);
			if ( !(_la==TABLE || _la==TABLES) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(5947);
			tables();
			setState(5965);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,886,_ctx) ) {
			case 1:
				{
				setState(5948);
				match(UPDATE);
				setState(5949);
				match(HISTOGRAM);
				setState(5950);
				match(ON);
				setState(5951);
				fullColumnName();
				setState(5956);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(5952);
					match(COMMA);
					setState(5953);
					fullColumnName();
					}
					}
					setState(5958);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(5963);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,885,_ctx) ) {
				case 1:
					{
					setState(5959);
					match(WITH);
					setState(5960);
					decimalLiteral();
					setState(5961);
					match(BUCKETS);
					}
					break;
				}
				}
				break;
			}
			setState(5978);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,888,_ctx) ) {
			case 1:
				{
				setState(5967);
				match(DROP);
				setState(5968);
				match(HISTOGRAM);
				setState(5969);
				match(ON);
				setState(5970);
				fullColumnName();
				setState(5975);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(5971);
					match(COMMA);
					setState(5972);
					fullColumnName();
					}
					}
					setState(5977);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CheckTableContext extends ParserRuleContext {
		public TerminalNode CHECK() { return getToken(MySqlParser.CHECK, 0); }
		public TerminalNode TABLE() { return getToken(MySqlParser.TABLE, 0); }
		public TablesContext tables() {
			return getRuleContext(TablesContext.class,0);
		}
		public List checkTableOption() {
			return getRuleContexts(CheckTableOptionContext.class);
		}
		public CheckTableOptionContext checkTableOption(int i) {
			return getRuleContext(CheckTableOptionContext.class,i);
		}
		public CheckTableContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_checkTable; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCheckTable(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCheckTable(this);
		}
	}

	public final CheckTableContext checkTable() throws RecognitionException {
		CheckTableContext _localctx = new CheckTableContext(_ctx, getState());
		enterRule(_localctx, 490, RULE_checkTable);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5980);
			match(CHECK);
			setState(5981);
			match(TABLE);
			setState(5982);
			tables();
			setState(5986);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==FOR || _la==CHANGED || _la==EXTENDED || _la==FAST || _la==MEDIUM || _la==QUICK) {
				{
				{
				setState(5983);
				checkTableOption();
				}
				}
				setState(5988);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ChecksumTableContext extends ParserRuleContext {
		public Token actionOption;
		public TerminalNode CHECKSUM() { return getToken(MySqlParser.CHECKSUM, 0); }
		public TerminalNode TABLE() { return getToken(MySqlParser.TABLE, 0); }
		public TablesContext tables() {
			return getRuleContext(TablesContext.class,0);
		}
		public TerminalNode QUICK() { return getToken(MySqlParser.QUICK, 0); }
		public TerminalNode EXTENDED() { return getToken(MySqlParser.EXTENDED, 0); }
		public ChecksumTableContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_checksumTable; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterChecksumTable(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitChecksumTable(this);
		}
	}

	public final ChecksumTableContext checksumTable() throws RecognitionException {
		ChecksumTableContext _localctx = new ChecksumTableContext(_ctx, getState());
		enterRule(_localctx, 492, RULE_checksumTable);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5989);
			match(CHECKSUM);
			setState(5990);
			match(TABLE);
			setState(5991);
			tables();
			setState(5993);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==EXTENDED || _la==QUICK) {
				{
				setState(5992);
				((ChecksumTableContext)_localctx).actionOption = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==EXTENDED || _la==QUICK) ) {
					((ChecksumTableContext)_localctx).actionOption = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class OptimizeTableContext extends ParserRuleContext {
		public Token actionOption;
		public TerminalNode OPTIMIZE() { return getToken(MySqlParser.OPTIMIZE, 0); }
		public TablesContext tables() {
			return getRuleContext(TablesContext.class,0);
		}
		public TerminalNode TABLE() { return getToken(MySqlParser.TABLE, 0); }
		public TerminalNode TABLES() { return getToken(MySqlParser.TABLES, 0); }
		public WaitNowaitClauseContext waitNowaitClause() {
			return getRuleContext(WaitNowaitClauseContext.class,0);
		}
		public TerminalNode NO_WRITE_TO_BINLOG() { return getToken(MySqlParser.NO_WRITE_TO_BINLOG, 0); }
		public TerminalNode LOCAL() { return getToken(MySqlParser.LOCAL, 0); }
		public OptimizeTableContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_optimizeTable; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterOptimizeTable(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitOptimizeTable(this);
		}
	}

	public final OptimizeTableContext optimizeTable() throws RecognitionException {
		OptimizeTableContext _localctx = new OptimizeTableContext(_ctx, getState());
		enterRule(_localctx, 494, RULE_optimizeTable);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5995);
			match(OPTIMIZE);
			setState(5997);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==NO_WRITE_TO_BINLOG || _la==LOCAL) {
				{
				setState(5996);
				((OptimizeTableContext)_localctx).actionOption = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==NO_WRITE_TO_BINLOG || _la==LOCAL) ) {
					((OptimizeTableContext)_localctx).actionOption = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(5999);
			_la = _input.LA(1);
			if ( !(_la==TABLE || _la==TABLES) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(6000);
			tables();
			setState(6002);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==NOWAIT || _la==WAIT) {
				{
				setState(6001);
				waitNowaitClause();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RepairTableContext extends ParserRuleContext {
		public Token actionOption;
		public TerminalNode REPAIR() { return getToken(MySqlParser.REPAIR, 0); }
		public TerminalNode TABLE() { return getToken(MySqlParser.TABLE, 0); }
		public TablesContext tables() {
			return getRuleContext(TablesContext.class,0);
		}
		public TerminalNode QUICK() { return getToken(MySqlParser.QUICK, 0); }
		public TerminalNode EXTENDED() { return getToken(MySqlParser.EXTENDED, 0); }
		public TerminalNode USE_FRM() { return getToken(MySqlParser.USE_FRM, 0); }
		public TerminalNode NO_WRITE_TO_BINLOG() { return getToken(MySqlParser.NO_WRITE_TO_BINLOG, 0); }
		public TerminalNode LOCAL() { return getToken(MySqlParser.LOCAL, 0); }
		public RepairTableContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_repairTable; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterRepairTable(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitRepairTable(this);
		}
	}

	public final RepairTableContext repairTable() throws RecognitionException {
		RepairTableContext _localctx = new RepairTableContext(_ctx, getState());
		enterRule(_localctx, 496, RULE_repairTable);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6004);
			match(REPAIR);
			setState(6006);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==NO_WRITE_TO_BINLOG || _la==LOCAL) {
				{
				setState(6005);
				((RepairTableContext)_localctx).actionOption = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==NO_WRITE_TO_BINLOG || _la==LOCAL) ) {
					((RepairTableContext)_localctx).actionOption = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(6008);
			match(TABLE);
			setState(6009);
			tables();
			setState(6011);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==QUICK) {
				{
				setState(6010);
				match(QUICK);
				}
			}

			setState(6014);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==EXTENDED) {
				{
				setState(6013);
				match(EXTENDED);
				}
			}

			setState(6017);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==USE_FRM) {
				{
				setState(6016);
				match(USE_FRM);
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CheckTableOptionContext extends ParserRuleContext {
		public TerminalNode FOR() { return getToken(MySqlParser.FOR, 0); }
		public TerminalNode UPGRADE() { return getToken(MySqlParser.UPGRADE, 0); }
		public TerminalNode QUICK() { return getToken(MySqlParser.QUICK, 0); }
		public TerminalNode FAST() { return getToken(MySqlParser.FAST, 0); }
		public TerminalNode MEDIUM() { return getToken(MySqlParser.MEDIUM, 0); }
		public TerminalNode EXTENDED() { return getToken(MySqlParser.EXTENDED, 0); }
		public TerminalNode CHANGED() { return getToken(MySqlParser.CHANGED, 0); }
		public CheckTableOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_checkTableOption; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCheckTableOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCheckTableOption(this);
		}
	}

	public final CheckTableOptionContext checkTableOption() throws RecognitionException {
		CheckTableOptionContext _localctx = new CheckTableOptionContext(_ctx, getState());
		enterRule(_localctx, 498, RULE_checkTableOption);
		try {
			setState(6026);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case FOR:
				enterOuterAlt(_localctx, 1);
				{
				setState(6019);
				match(FOR);
				setState(6020);
				match(UPGRADE);
				}
				break;
			case QUICK:
				enterOuterAlt(_localctx, 2);
				{
				setState(6021);
				match(QUICK);
				}
				break;
			case FAST:
				enterOuterAlt(_localctx, 3);
				{
				setState(6022);
				match(FAST);
				}
				break;
			case MEDIUM:
				enterOuterAlt(_localctx, 4);
				{
				setState(6023);
				match(MEDIUM);
				}
				break;
			case EXTENDED:
				enterOuterAlt(_localctx, 5);
				{
				setState(6024);
				match(EXTENDED);
				}
				break;
			case CHANGED:
				enterOuterAlt(_localctx, 6);
				{
				setState(6025);
				match(CHANGED);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateUdfunctionContext extends ParserRuleContext {
		public Token returnType;
		public TerminalNode CREATE() { return getToken(MySqlParser.CREATE, 0); }
		public TerminalNode FUNCTION() { return getToken(MySqlParser.FUNCTION, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode RETURNS() { return getToken(MySqlParser.RETURNS, 0); }
		public TerminalNode SONAME() { return getToken(MySqlParser.SONAME, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode STRING() { return getToken(MySqlParser.STRING, 0); }
		public TerminalNode INTEGER() { return getToken(MySqlParser.INTEGER, 0); }
		public TerminalNode REAL() { return getToken(MySqlParser.REAL, 0); }
		public TerminalNode DECIMAL() { return getToken(MySqlParser.DECIMAL, 0); }
		public OrReplaceContext orReplace() {
			return getRuleContext(OrReplaceContext.class,0);
		}
		public TerminalNode AGGREGATE() { return getToken(MySqlParser.AGGREGATE, 0); }
		public IfNotExistsContext ifNotExists() {
			return getRuleContext(IfNotExistsContext.class,0);
		}
		public CreateUdfunctionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createUdfunction; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCreateUdfunction(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCreateUdfunction(this);
		}
	}

	public final CreateUdfunctionContext createUdfunction() throws RecognitionException {
		CreateUdfunctionContext _localctx = new CreateUdfunctionContext(_ctx, getState());
		enterRule(_localctx, 500, RULE_createUdfunction);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6028);
			match(CREATE);
			setState(6030);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==OR) {
				{
				setState(6029);
				orReplace();
				}
			}

			setState(6033);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==AGGREGATE) {
				{
				setState(6032);
				match(AGGREGATE);
				}
			}

			setState(6035);
			match(FUNCTION);
			setState(6037);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,900,_ctx) ) {
			case 1:
				{
				setState(6036);
				ifNotExists();
				}
				break;
			}
			setState(6039);
			uid();
			setState(6040);
			match(RETURNS);
			setState(6041);
			((CreateUdfunctionContext)_localctx).returnType = _input.LT(1);
			_la = _input.LA(1);
			if ( !(((((_la - 209)) & ~0x3f) == 0 && ((1L << (_la - 209)) & ((1L << (INTEGER - 209)) | (1L << (REAL - 209)) | (1L << (DECIMAL - 209)))) != 0) || _la==STRING) ) {
				((CreateUdfunctionContext)_localctx).returnType = (Token)_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(6042);
			match(SONAME);
			setState(6043);
			match(STRING_LITERAL);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class InstallPluginContext extends ParserRuleContext {
		public TerminalNode INSTALL() { return getToken(MySqlParser.INSTALL, 0); }
		public TerminalNode PLUGIN() { return getToken(MySqlParser.PLUGIN, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode SONAME() { return getToken(MySqlParser.SONAME, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public InstallPluginContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_installPlugin; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterInstallPlugin(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitInstallPlugin(this);
		}
	}

	public final InstallPluginContext installPlugin() throws RecognitionException {
		InstallPluginContext _localctx = new InstallPluginContext(_ctx, getState());
		enterRule(_localctx, 502, RULE_installPlugin);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6045);
			match(INSTALL);
			setState(6046);
			match(PLUGIN);
			setState(6047);
			uid();
			setState(6048);
			match(SONAME);
			setState(6049);
			match(STRING_LITERAL);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class UninstallPluginContext extends ParserRuleContext {
		public TerminalNode UNINSTALL() { return getToken(MySqlParser.UNINSTALL, 0); }
		public TerminalNode PLUGIN() { return getToken(MySqlParser.PLUGIN, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public UninstallPluginContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_uninstallPlugin; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterUninstallPlugin(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitUninstallPlugin(this);
		}
	}

	public final UninstallPluginContext uninstallPlugin() throws RecognitionException {
		UninstallPluginContext _localctx = new UninstallPluginContext(_ctx, getState());
		enterRule(_localctx, 504, RULE_uninstallPlugin);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6051);
			match(UNINSTALL);
			setState(6052);
			match(PLUGIN);
			setState(6053);
			uid();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SetStatementContext extends ParserRuleContext {
		public SetStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_setStatement; }
	 
		public SetStatementContext() { }
		public void copyFrom(SetStatementContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class SetTransactionContext extends SetStatementContext {
		public SetTransactionStatementContext setTransactionStatement() {
			return getRuleContext(SetTransactionStatementContext.class,0);
		}
		public SetTransactionContext(SetStatementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSetTransaction(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSetTransaction(this);
		}
	}
	public static class SetCharsetContext extends SetStatementContext {
		public TerminalNode SET() { return getToken(MySqlParser.SET, 0); }
		public CharSetContext charSet() {
			return getRuleContext(CharSetContext.class,0);
		}
		public CharsetNameContext charsetName() {
			return getRuleContext(CharsetNameContext.class,0);
		}
		public TerminalNode DEFAULT() { return getToken(MySqlParser.DEFAULT, 0); }
		public SetCharsetContext(SetStatementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSetCharset(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSetCharset(this);
		}
	}
	public static class SetNamesContext extends SetStatementContext {
		public TerminalNode SET() { return getToken(MySqlParser.SET, 0); }
		public TerminalNode NAMES() { return getToken(MySqlParser.NAMES, 0); }
		public CharsetNameContext charsetName() {
			return getRuleContext(CharsetNameContext.class,0);
		}
		public TerminalNode DEFAULT() { return getToken(MySqlParser.DEFAULT, 0); }
		public TerminalNode COLLATE() { return getToken(MySqlParser.COLLATE, 0); }
		public CollationNameContext collationName() {
			return getRuleContext(CollationNameContext.class,0);
		}
		public SetNamesContext(SetStatementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSetNames(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSetNames(this);
		}
	}
	public static class SetPasswordContext extends SetStatementContext {
		public SetPasswordStatementContext setPasswordStatement() {
			return getRuleContext(SetPasswordStatementContext.class,0);
		}
		public SetPasswordContext(SetStatementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSetPassword(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSetPassword(this);
		}
	}
	public static class SetAutocommitContext extends SetStatementContext {
		public SetAutocommitStatementContext setAutocommitStatement() {
			return getRuleContext(SetAutocommitStatementContext.class,0);
		}
		public SetAutocommitContext(SetStatementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSetAutocommit(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSetAutocommit(this);
		}
	}
	public static class SetNewValueInsideTriggerContext extends SetStatementContext {
		public TerminalNode SET() { return getToken(MySqlParser.SET, 0); }
		public List fullId() {
			return getRuleContexts(FullIdContext.class);
		}
		public FullIdContext fullId(int i) {
			return getRuleContext(FullIdContext.class,i);
		}
		public List expression() {
			return getRuleContexts(ExpressionContext.class);
		}
		public ExpressionContext expression(int i) {
			return getRuleContext(ExpressionContext.class,i);
		}
		public List EQUAL_SYMBOL() { return getTokens(MySqlParser.EQUAL_SYMBOL); }
		public TerminalNode EQUAL_SYMBOL(int i) {
			return getToken(MySqlParser.EQUAL_SYMBOL, i);
		}
		public List VAR_ASSIGN() { return getTokens(MySqlParser.VAR_ASSIGN); }
		public TerminalNode VAR_ASSIGN(int i) {
			return getToken(MySqlParser.VAR_ASSIGN, i);
		}
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public SetNewValueInsideTriggerContext(SetStatementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSetNewValueInsideTrigger(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSetNewValueInsideTrigger(this);
		}
	}
	public static class SetVariableContext extends SetStatementContext {
		public TerminalNode SET() { return getToken(MySqlParser.SET, 0); }
		public List variableClause() {
			return getRuleContexts(VariableClauseContext.class);
		}
		public VariableClauseContext variableClause(int i) {
			return getRuleContext(VariableClauseContext.class,i);
		}
		public List EQUAL_SYMBOL() { return getTokens(MySqlParser.EQUAL_SYMBOL); }
		public TerminalNode EQUAL_SYMBOL(int i) {
			return getToken(MySqlParser.EQUAL_SYMBOL, i);
		}
		public List VAR_ASSIGN() { return getTokens(MySqlParser.VAR_ASSIGN); }
		public TerminalNode VAR_ASSIGN(int i) {
			return getToken(MySqlParser.VAR_ASSIGN, i);
		}
		public List expression() {
			return getRuleContexts(ExpressionContext.class);
		}
		public ExpressionContext expression(int i) {
			return getRuleContext(ExpressionContext.class,i);
		}
		public List ON() { return getTokens(MySqlParser.ON); }
		public TerminalNode ON(int i) {
			return getToken(MySqlParser.ON, i);
		}
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public SetVariableContext(SetStatementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSetVariable(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSetVariable(this);
		}
	}

	public final SetStatementContext setStatement() throws RecognitionException {
		SetStatementContext _localctx = new SetStatementContext(_ctx, getState());
		enterRule(_localctx, 506, RULE_setStatement);
		int _la;
		try {
			setState(6107);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,908,_ctx) ) {
			case 1:
				_localctx = new SetVariableContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(6055);
				match(SET);
				setState(6056);
				variableClause();
				setState(6057);
				_la = _input.LA(1);
				if ( !(_la==VAR_ASSIGN || _la==EQUAL_SYMBOL) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(6060);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,901,_ctx) ) {
				case 1:
					{
					setState(6058);
					expression(0);
					}
					break;
				case 2:
					{
					setState(6059);
					match(ON);
					}
					break;
				}
				setState(6071);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(6062);
					match(COMMA);
					setState(6063);
					variableClause();
					setState(6064);
					_la = _input.LA(1);
					if ( !(_la==VAR_ASSIGN || _la==EQUAL_SYMBOL) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					setState(6067);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,902,_ctx) ) {
					case 1:
						{
						setState(6065);
						expression(0);
						}
						break;
					case 2:
						{
						setState(6066);
						match(ON);
						}
						break;
					}
					}
					}
					setState(6073);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			case 2:
				_localctx = new SetCharsetContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(6074);
				match(SET);
				setState(6075);
				charSet();
				setState(6078);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case BINARY:
				case ARMSCII8:
				case ASCII:
				case BIG5:
				case CP1250:
				case CP1251:
				case CP1256:
				case CP1257:
				case CP850:
				case CP852:
				case CP866:
				case CP932:
				case DEC8:
				case EUCJPMS:
				case EUCKR:
				case GB18030:
				case GB2312:
				case GBK:
				case GEOSTD8:
				case GREEK:
				case HEBREW:
				case HP8:
				case KEYBCS2:
				case KOI8R:
				case KOI8U:
				case LATIN1:
				case LATIN2:
				case LATIN5:
				case LATIN7:
				case MACCE:
				case MACROMAN:
				case SJIS:
				case SWE7:
				case TIS620:
				case UCS2:
				case UJIS:
				case UTF16:
				case UTF16LE:
				case UTF32:
				case UTF8:
				case UTF8MB3:
				case UTF8MB4:
				case CHARSET_REVERSE_QOUTE_STRING:
				case STRING_LITERAL:
					{
					setState(6076);
					charsetName();
					}
					break;
				case DEFAULT:
					{
					setState(6077);
					match(DEFAULT);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case 3:
				_localctx = new SetNamesContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(6080);
				match(SET);
				setState(6081);
				match(NAMES);
				setState(6088);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case BINARY:
				case ARMSCII8:
				case ASCII:
				case BIG5:
				case CP1250:
				case CP1251:
				case CP1256:
				case CP1257:
				case CP850:
				case CP852:
				case CP866:
				case CP932:
				case DEC8:
				case EUCJPMS:
				case EUCKR:
				case GB18030:
				case GB2312:
				case GBK:
				case GEOSTD8:
				case GREEK:
				case HEBREW:
				case HP8:
				case KEYBCS2:
				case KOI8R:
				case KOI8U:
				case LATIN1:
				case LATIN2:
				case LATIN5:
				case LATIN7:
				case MACCE:
				case MACROMAN:
				case SJIS:
				case SWE7:
				case TIS620:
				case UCS2:
				case UJIS:
				case UTF16:
				case UTF16LE:
				case UTF32:
				case UTF8:
				case UTF8MB3:
				case UTF8MB4:
				case CHARSET_REVERSE_QOUTE_STRING:
				case STRING_LITERAL:
					{
					setState(6082);
					charsetName();
					setState(6085);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==COLLATE) {
						{
						setState(6083);
						match(COLLATE);
						setState(6084);
						collationName();
						}
					}

					}
					break;
				case DEFAULT:
					{
					setState(6087);
					match(DEFAULT);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case 4:
				_localctx = new SetPasswordContext(_localctx);
				enterOuterAlt(_localctx, 4);
				{
				setState(6090);
				setPasswordStatement();
				}
				break;
			case 5:
				_localctx = new SetTransactionContext(_localctx);
				enterOuterAlt(_localctx, 5);
				{
				setState(6091);
				setTransactionStatement();
				}
				break;
			case 6:
				_localctx = new SetAutocommitContext(_localctx);
				enterOuterAlt(_localctx, 6);
				{
				setState(6092);
				setAutocommitStatement();
				}
				break;
			case 7:
				_localctx = new SetNewValueInsideTriggerContext(_localctx);
				enterOuterAlt(_localctx, 7);
				{
				setState(6093);
				match(SET);
				setState(6094);
				fullId();
				setState(6095);
				_la = _input.LA(1);
				if ( !(_la==VAR_ASSIGN || _la==EQUAL_SYMBOL) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(6096);
				expression(0);
				setState(6104);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(6097);
					match(COMMA);
					setState(6098);
					fullId();
					setState(6099);
					_la = _input.LA(1);
					if ( !(_la==VAR_ASSIGN || _la==EQUAL_SYMBOL) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					setState(6100);
					expression(0);
					}
					}
					setState(6106);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ShowStatementContext extends ParserRuleContext {
		public ShowStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_showStatement; }
	 
		public ShowStatementContext() { }
		public void copyFrom(ShowStatementContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class ShowOpenTablesContext extends ShowStatementContext {
		public Token schemaFormat;
		public TerminalNode SHOW() { return getToken(MySqlParser.SHOW, 0); }
		public TerminalNode OPEN() { return getToken(MySqlParser.OPEN, 0); }
		public TerminalNode TABLES() { return getToken(MySqlParser.TABLES, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public ShowFilterContext showFilter() {
			return getRuleContext(ShowFilterContext.class,0);
		}
		public TerminalNode FROM() { return getToken(MySqlParser.FROM, 0); }
		public TerminalNode IN() { return getToken(MySqlParser.IN, 0); }
		public ShowOpenTablesContext(ShowStatementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterShowOpenTables(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitShowOpenTables(this);
		}
	}
	public static class ShowGlobalInfoContext extends ShowStatementContext {
		public TerminalNode SHOW() { return getToken(MySqlParser.SHOW, 0); }
		public ShowGlobalInfoClauseContext showGlobalInfoClause() {
			return getRuleContext(ShowGlobalInfoClauseContext.class,0);
		}
		public ShowGlobalInfoContext(ShowStatementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterShowGlobalInfo(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitShowGlobalInfo(this);
		}
	}
	public static class ShowCreateFullIdObjectContext extends ShowStatementContext {
		public Token namedEntity;
		public TerminalNode SHOW() { return getToken(MySqlParser.SHOW, 0); }
		public TerminalNode CREATE() { return getToken(MySqlParser.CREATE, 0); }
		public FullIdContext fullId() {
			return getRuleContext(FullIdContext.class,0);
		}
		public TerminalNode EVENT() { return getToken(MySqlParser.EVENT, 0); }
		public TerminalNode FUNCTION() { return getToken(MySqlParser.FUNCTION, 0); }
		public TerminalNode PROCEDURE() { return getToken(MySqlParser.PROCEDURE, 0); }
		public TerminalNode TABLE() { return getToken(MySqlParser.TABLE, 0); }
		public TerminalNode TRIGGER() { return getToken(MySqlParser.TRIGGER, 0); }
		public TerminalNode VIEW() { return getToken(MySqlParser.VIEW, 0); }
		public ShowCreateFullIdObjectContext(ShowStatementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterShowCreateFullIdObject(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitShowCreateFullIdObject(this);
		}
	}
	public static class ShowCreateUserContext extends ShowStatementContext {
		public TerminalNode SHOW() { return getToken(MySqlParser.SHOW, 0); }
		public TerminalNode CREATE() { return getToken(MySqlParser.CREATE, 0); }
		public TerminalNode USER() { return getToken(MySqlParser.USER, 0); }
		public UserNameContext userName() {
			return getRuleContext(UserNameContext.class,0);
		}
		public ShowCreateUserContext(ShowStatementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterShowCreateUser(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitShowCreateUser(this);
		}
	}
	public static class ShowErrorsContext extends ShowStatementContext {
		public Token errorFormat;
		public DecimalLiteralContext offset;
		public DecimalLiteralContext rowCount;
		public TerminalNode SHOW() { return getToken(MySqlParser.SHOW, 0); }
		public TerminalNode ERRORS() { return getToken(MySqlParser.ERRORS, 0); }
		public TerminalNode WARNINGS() { return getToken(MySqlParser.WARNINGS, 0); }
		public TerminalNode LIMIT() { return getToken(MySqlParser.LIMIT, 0); }
		public List decimalLiteral() {
			return getRuleContexts(DecimalLiteralContext.class);
		}
		public DecimalLiteralContext decimalLiteral(int i) {
			return getRuleContext(DecimalLiteralContext.class,i);
		}
		public TerminalNode COMMA() { return getToken(MySqlParser.COMMA, 0); }
		public ShowErrorsContext(ShowStatementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterShowErrors(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitShowErrors(this);
		}
	}
	public static class ShowUserstatPluginContext extends ShowStatementContext {
		public TerminalNode SHOW() { return getToken(MySqlParser.SHOW, 0); }
		public TerminalNode USER_STATISTICS() { return getToken(MySqlParser.USER_STATISTICS, 0); }
		public TerminalNode CLIENT_STATISTICS() { return getToken(MySqlParser.CLIENT_STATISTICS, 0); }
		public TerminalNode INDEX_STATISTICS() { return getToken(MySqlParser.INDEX_STATISTICS, 0); }
		public TerminalNode TABLE_STATISTICS() { return getToken(MySqlParser.TABLE_STATISTICS, 0); }
		public ShowUserstatPluginContext(ShowStatementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterShowUserstatPlugin(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitShowUserstatPlugin(this);
		}
	}
	public static class ShowCountErrorsContext extends ShowStatementContext {
		public Token errorFormat;
		public TerminalNode SHOW() { return getToken(MySqlParser.SHOW, 0); }
		public TerminalNode COUNT() { return getToken(MySqlParser.COUNT, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public TerminalNode STAR() { return getToken(MySqlParser.STAR, 0); }
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TerminalNode ERRORS() { return getToken(MySqlParser.ERRORS, 0); }
		public TerminalNode WARNINGS() { return getToken(MySqlParser.WARNINGS, 0); }
		public ShowCountErrorsContext(ShowStatementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterShowCountErrors(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitShowCountErrors(this);
		}
	}
	public static class ShowObjectFilterContext extends ShowStatementContext {
		public TerminalNode SHOW() { return getToken(MySqlParser.SHOW, 0); }
		public ShowCommonEntityContext showCommonEntity() {
			return getRuleContext(ShowCommonEntityContext.class,0);
		}
		public ShowFilterContext showFilter() {
			return getRuleContext(ShowFilterContext.class,0);
		}
		public ShowObjectFilterContext(ShowStatementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterShowObjectFilter(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitShowObjectFilter(this);
		}
	}
	public static class ShowCreateDbContext extends ShowStatementContext {
		public Token schemaFormat;
		public TerminalNode SHOW() { return getToken(MySqlParser.SHOW, 0); }
		public TerminalNode CREATE() { return getToken(MySqlParser.CREATE, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode DATABASE() { return getToken(MySqlParser.DATABASE, 0); }
		public TerminalNode SCHEMA() { return getToken(MySqlParser.SCHEMA, 0); }
		public IfNotExistsContext ifNotExists() {
			return getRuleContext(IfNotExistsContext.class,0);
		}
		public ShowCreateDbContext(ShowStatementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterShowCreateDb(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitShowCreateDb(this);
		}
	}
	public static class ShowEngineContext extends ShowStatementContext {
		public Token engineOption;
		public TerminalNode SHOW() { return getToken(MySqlParser.SHOW, 0); }
		public TerminalNode ENGINE() { return getToken(MySqlParser.ENGINE, 0); }
		public EngineNameContext engineName() {
			return getRuleContext(EngineNameContext.class,0);
		}
		public TerminalNode STATUS() { return getToken(MySqlParser.STATUS, 0); }
		public TerminalNode MUTEX() { return getToken(MySqlParser.MUTEX, 0); }
		public ShowEngineContext(ShowStatementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterShowEngine(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitShowEngine(this);
		}
	}
	public static class ShowSchemaFilterContext extends ShowStatementContext {
		public Token schemaFormat;
		public TerminalNode SHOW() { return getToken(MySqlParser.SHOW, 0); }
		public ShowSchemaEntityContext showSchemaEntity() {
			return getRuleContext(ShowSchemaEntityContext.class,0);
		}
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public ShowFilterContext showFilter() {
			return getRuleContext(ShowFilterContext.class,0);
		}
		public TerminalNode FROM() { return getToken(MySqlParser.FROM, 0); }
		public TerminalNode IN() { return getToken(MySqlParser.IN, 0); }
		public ShowSchemaFilterContext(ShowStatementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterShowSchemaFilter(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitShowSchemaFilter(this);
		}
	}
	public static class ShowIndexesContext extends ShowStatementContext {
		public Token indexFormat;
		public Token tableFormat;
		public Token schemaFormat;
		public TerminalNode SHOW() { return getToken(MySqlParser.SHOW, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public TerminalNode INDEX() { return getToken(MySqlParser.INDEX, 0); }
		public TerminalNode INDEXES() { return getToken(MySqlParser.INDEXES, 0); }
		public TerminalNode KEYS() { return getToken(MySqlParser.KEYS, 0); }
		public List FROM() { return getTokens(MySqlParser.FROM); }
		public TerminalNode FROM(int i) {
			return getToken(MySqlParser.FROM, i);
		}
		public List IN() { return getTokens(MySqlParser.IN); }
		public TerminalNode IN(int i) {
			return getToken(MySqlParser.IN, i);
		}
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode WHERE() { return getToken(MySqlParser.WHERE, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public ShowIndexesContext(ShowStatementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterShowIndexes(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitShowIndexes(this);
		}
	}
	public static class ShowLogEventsContext extends ShowStatementContext {
		public Token logFormat;
		public Token filename;
		public DecimalLiteralContext fromPosition;
		public DecimalLiteralContext offset;
		public DecimalLiteralContext rowCount;
		public TerminalNode SHOW() { return getToken(MySqlParser.SHOW, 0); }
		public TerminalNode EVENTS() { return getToken(MySqlParser.EVENTS, 0); }
		public TerminalNode BINLOG() { return getToken(MySqlParser.BINLOG, 0); }
		public TerminalNode RELAYLOG() { return getToken(MySqlParser.RELAYLOG, 0); }
		public TerminalNode IN() { return getToken(MySqlParser.IN, 0); }
		public TerminalNode FROM() { return getToken(MySqlParser.FROM, 0); }
		public TerminalNode LIMIT() { return getToken(MySqlParser.LIMIT, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public List decimalLiteral() {
			return getRuleContexts(DecimalLiteralContext.class);
		}
		public DecimalLiteralContext decimalLiteral(int i) {
			return getRuleContext(DecimalLiteralContext.class,i);
		}
		public TerminalNode COMMA() { return getToken(MySqlParser.COMMA, 0); }
		public ShowLogEventsContext(ShowStatementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterShowLogEvents(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitShowLogEvents(this);
		}
	}
	public static class ShowMasterLogsContext extends ShowStatementContext {
		public Token logFormat;
		public TerminalNode SHOW() { return getToken(MySqlParser.SHOW, 0); }
		public TerminalNode LOGS() { return getToken(MySqlParser.LOGS, 0); }
		public TerminalNode BINARY() { return getToken(MySqlParser.BINARY, 0); }
		public TerminalNode MASTER() { return getToken(MySqlParser.MASTER, 0); }
		public ShowMasterLogsContext(ShowStatementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterShowMasterLogs(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitShowMasterLogs(this);
		}
	}
	public static class ShowGrantsContext extends ShowStatementContext {
		public TerminalNode SHOW() { return getToken(MySqlParser.SHOW, 0); }
		public TerminalNode GRANTS() { return getToken(MySqlParser.GRANTS, 0); }
		public TerminalNode FOR() { return getToken(MySqlParser.FOR, 0); }
		public UserNameContext userName() {
			return getRuleContext(UserNameContext.class,0);
		}
		public ShowGrantsContext(ShowStatementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterShowGrants(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitShowGrants(this);
		}
	}
	public static class ShowSlaveStatusContext extends ShowStatementContext {
		public TerminalNode SHOW() { return getToken(MySqlParser.SHOW, 0); }
		public TerminalNode SLAVE() { return getToken(MySqlParser.SLAVE, 0); }
		public TerminalNode STATUS() { return getToken(MySqlParser.STATUS, 0); }
		public TerminalNode FOR() { return getToken(MySqlParser.FOR, 0); }
		public TerminalNode CHANNEL() { return getToken(MySqlParser.CHANNEL, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public ShowSlaveStatusContext(ShowStatementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterShowSlaveStatus(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitShowSlaveStatus(this);
		}
	}
	public static class ShowRoutineContext extends ShowStatementContext {
		public Token routine;
		public TerminalNode SHOW() { return getToken(MySqlParser.SHOW, 0); }
		public TerminalNode CODE() { return getToken(MySqlParser.CODE, 0); }
		public FullIdContext fullId() {
			return getRuleContext(FullIdContext.class,0);
		}
		public TerminalNode FUNCTION() { return getToken(MySqlParser.FUNCTION, 0); }
		public TerminalNode PROCEDURE() { return getToken(MySqlParser.PROCEDURE, 0); }
		public ShowRoutineContext(ShowStatementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterShowRoutine(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitShowRoutine(this);
		}
	}
	public static class ShowProfileContext extends ShowStatementContext {
		public DecimalLiteralContext queryCount;
		public DecimalLiteralContext offset;
		public DecimalLiteralContext rowCount;
		public TerminalNode SHOW() { return getToken(MySqlParser.SHOW, 0); }
		public TerminalNode PROFILE() { return getToken(MySqlParser.PROFILE, 0); }
		public List showProfileType() {
			return getRuleContexts(ShowProfileTypeContext.class);
		}
		public ShowProfileTypeContext showProfileType(int i) {
			return getRuleContext(ShowProfileTypeContext.class,i);
		}
		public TerminalNode LIMIT() { return getToken(MySqlParser.LIMIT, 0); }
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public TerminalNode FOR() { return getToken(MySqlParser.FOR, 0); }
		public TerminalNode QUERY() { return getToken(MySqlParser.QUERY, 0); }
		public List decimalLiteral() {
			return getRuleContexts(DecimalLiteralContext.class);
		}
		public DecimalLiteralContext decimalLiteral(int i) {
			return getRuleContext(DecimalLiteralContext.class,i);
		}
		public ShowProfileContext(ShowStatementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterShowProfile(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitShowProfile(this);
		}
	}
	public static class ShowColumnsContext extends ShowStatementContext {
		public Token columnsFormat;
		public Token tableFormat;
		public Token schemaFormat;
		public TerminalNode SHOW() { return getToken(MySqlParser.SHOW, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public TerminalNode COLUMNS() { return getToken(MySqlParser.COLUMNS, 0); }
		public TerminalNode FIELDS() { return getToken(MySqlParser.FIELDS, 0); }
		public List FROM() { return getTokens(MySqlParser.FROM); }
		public TerminalNode FROM(int i) {
			return getToken(MySqlParser.FROM, i);
		}
		public List IN() { return getTokens(MySqlParser.IN); }
		public TerminalNode IN(int i) {
			return getToken(MySqlParser.IN, i);
		}
		public TerminalNode FULL() { return getToken(MySqlParser.FULL, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public ShowFilterContext showFilter() {
			return getRuleContext(ShowFilterContext.class,0);
		}
		public ShowColumnsContext(ShowStatementContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterShowColumns(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitShowColumns(this);
		}
	}

	public final ShowStatementContext showStatement() throws RecognitionException {
		ShowStatementContext _localctx = new ShowStatementContext(_ctx, getState());
		enterRule(_localctx, 508, RULE_showStatement);
		int _la;
		try {
			setState(6264);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,931,_ctx) ) {
			case 1:
				_localctx = new ShowMasterLogsContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(6109);
				match(SHOW);
				setState(6110);
				((ShowMasterLogsContext)_localctx).logFormat = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==BINARY || _la==MASTER) ) {
					((ShowMasterLogsContext)_localctx).logFormat = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(6111);
				match(LOGS);
				}
				break;
			case 2:
				_localctx = new ShowLogEventsContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(6112);
				match(SHOW);
				setState(6113);
				((ShowLogEventsContext)_localctx).logFormat = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==BINLOG || _la==RELAYLOG) ) {
					((ShowLogEventsContext)_localctx).logFormat = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(6114);
				match(EVENTS);
				setState(6117);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==IN) {
					{
					setState(6115);
					match(IN);
					setState(6116);
					((ShowLogEventsContext)_localctx).filename = match(STRING_LITERAL);
					}
				}

				setState(6121);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==FROM) {
					{
					setState(6119);
					match(FROM);
					setState(6120);
					((ShowLogEventsContext)_localctx).fromPosition = decimalLiteral();
					}
				}

				setState(6130);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LIMIT) {
					{
					setState(6123);
					match(LIMIT);
					setState(6127);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,911,_ctx) ) {
					case 1:
						{
						setState(6124);
						((ShowLogEventsContext)_localctx).offset = decimalLiteral();
						setState(6125);
						match(COMMA);
						}
						break;
					}
					setState(6129);
					((ShowLogEventsContext)_localctx).rowCount = decimalLiteral();
					}
				}

				}
				break;
			case 3:
				_localctx = new ShowObjectFilterContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(6132);
				match(SHOW);
				setState(6133);
				showCommonEntity();
				setState(6135);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LIKE || _la==WHERE) {
					{
					setState(6134);
					showFilter();
					}
				}

				}
				break;
			case 4:
				_localctx = new ShowColumnsContext(_localctx);
				enterOuterAlt(_localctx, 4);
				{
				setState(6137);
				match(SHOW);
				setState(6139);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==FULL) {
					{
					setState(6138);
					match(FULL);
					}
				}

				setState(6141);
				((ShowColumnsContext)_localctx).columnsFormat = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==COLUMNS || _la==FIELDS) ) {
					((ShowColumnsContext)_localctx).columnsFormat = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(6142);
				((ShowColumnsContext)_localctx).tableFormat = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==FROM || _la==IN) ) {
					((ShowColumnsContext)_localctx).tableFormat = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(6143);
				tableName();
				setState(6146);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==FROM || _la==IN) {
					{
					setState(6144);
					((ShowColumnsContext)_localctx).schemaFormat = _input.LT(1);
					_la = _input.LA(1);
					if ( !(_la==FROM || _la==IN) ) {
						((ShowColumnsContext)_localctx).schemaFormat = (Token)_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					setState(6145);
					uid();
					}
				}

				setState(6149);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LIKE || _la==WHERE) {
					{
					setState(6148);
					showFilter();
					}
				}

				}
				break;
			case 5:
				_localctx = new ShowCreateDbContext(_localctx);
				enterOuterAlt(_localctx, 5);
				{
				setState(6151);
				match(SHOW);
				setState(6152);
				match(CREATE);
				setState(6153);
				((ShowCreateDbContext)_localctx).schemaFormat = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==DATABASE || _la==SCHEMA) ) {
					((ShowCreateDbContext)_localctx).schemaFormat = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(6155);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,917,_ctx) ) {
				case 1:
					{
					setState(6154);
					ifNotExists();
					}
					break;
				}
				setState(6157);
				uid();
				}
				break;
			case 6:
				_localctx = new ShowCreateFullIdObjectContext(_localctx);
				enterOuterAlt(_localctx, 6);
				{
				setState(6158);
				match(SHOW);
				setState(6159);
				match(CREATE);
				setState(6160);
				((ShowCreateFullIdObjectContext)_localctx).namedEntity = _input.LT(1);
				_la = _input.LA(1);
				if ( !(((((_la - 133)) & ~0x3f) == 0 && ((1L << (_la - 133)) & ((1L << (PROCEDURE - 133)) | (1L << (TABLE - 133)) | (1L << (TRIGGER - 133)))) != 0) || _la==EVENT || _la==FUNCTION || _la==VIEW) ) {
					((ShowCreateFullIdObjectContext)_localctx).namedEntity = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(6161);
				fullId();
				}
				break;
			case 7:
				_localctx = new ShowCreateUserContext(_localctx);
				enterOuterAlt(_localctx, 7);
				{
				setState(6162);
				match(SHOW);
				setState(6163);
				match(CREATE);
				setState(6164);
				match(USER);
				setState(6165);
				userName();
				}
				break;
			case 8:
				_localctx = new ShowEngineContext(_localctx);
				enterOuterAlt(_localctx, 8);
				{
				setState(6166);
				match(SHOW);
				setState(6167);
				match(ENGINE);
				setState(6168);
				engineName();
				setState(6169);
				((ShowEngineContext)_localctx).engineOption = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==MUTEX || _la==STATUS) ) {
					((ShowEngineContext)_localctx).engineOption = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case 9:
				_localctx = new ShowGlobalInfoContext(_localctx);
				enterOuterAlt(_localctx, 9);
				{
				setState(6171);
				match(SHOW);
				setState(6172);
				showGlobalInfoClause();
				}
				break;
			case 10:
				_localctx = new ShowErrorsContext(_localctx);
				enterOuterAlt(_localctx, 10);
				{
				setState(6173);
				match(SHOW);
				setState(6174);
				((ShowErrorsContext)_localctx).errorFormat = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==ERRORS || _la==WARNINGS) ) {
					((ShowErrorsContext)_localctx).errorFormat = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(6182);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LIMIT) {
					{
					setState(6175);
					match(LIMIT);
					setState(6179);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,918,_ctx) ) {
					case 1:
						{
						setState(6176);
						((ShowErrorsContext)_localctx).offset = decimalLiteral();
						setState(6177);
						match(COMMA);
						}
						break;
					}
					setState(6181);
					((ShowErrorsContext)_localctx).rowCount = decimalLiteral();
					}
				}

				}
				break;
			case 11:
				_localctx = new ShowCountErrorsContext(_localctx);
				enterOuterAlt(_localctx, 11);
				{
				setState(6184);
				match(SHOW);
				setState(6185);
				match(COUNT);
				setState(6186);
				match(LR_BRACKET);
				setState(6187);
				match(STAR);
				setState(6188);
				match(RR_BRACKET);
				setState(6189);
				((ShowCountErrorsContext)_localctx).errorFormat = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==ERRORS || _la==WARNINGS) ) {
					((ShowCountErrorsContext)_localctx).errorFormat = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case 12:
				_localctx = new ShowSchemaFilterContext(_localctx);
				enterOuterAlt(_localctx, 12);
				{
				setState(6190);
				match(SHOW);
				setState(6191);
				showSchemaEntity();
				setState(6194);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==FROM || _la==IN) {
					{
					setState(6192);
					((ShowSchemaFilterContext)_localctx).schemaFormat = _input.LT(1);
					_la = _input.LA(1);
					if ( !(_la==FROM || _la==IN) ) {
						((ShowSchemaFilterContext)_localctx).schemaFormat = (Token)_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					setState(6193);
					uid();
					}
				}

				setState(6197);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LIKE || _la==WHERE) {
					{
					setState(6196);
					showFilter();
					}
				}

				}
				break;
			case 13:
				_localctx = new ShowRoutineContext(_localctx);
				enterOuterAlt(_localctx, 13);
				{
				setState(6199);
				match(SHOW);
				setState(6200);
				((ShowRoutineContext)_localctx).routine = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==PROCEDURE || _la==FUNCTION) ) {
					((ShowRoutineContext)_localctx).routine = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(6201);
				match(CODE);
				setState(6202);
				fullId();
				}
				break;
			case 14:
				_localctx = new ShowGrantsContext(_localctx);
				enterOuterAlt(_localctx, 14);
				{
				setState(6203);
				match(SHOW);
				setState(6204);
				match(GRANTS);
				setState(6207);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==FOR) {
					{
					setState(6205);
					match(FOR);
					setState(6206);
					userName();
					}
				}

				}
				break;
			case 15:
				_localctx = new ShowIndexesContext(_localctx);
				enterOuterAlt(_localctx, 15);
				{
				setState(6209);
				match(SHOW);
				setState(6210);
				((ShowIndexesContext)_localctx).indexFormat = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==INDEX || _la==KEYS || _la==INDEXES) ) {
					((ShowIndexesContext)_localctx).indexFormat = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(6211);
				((ShowIndexesContext)_localctx).tableFormat = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==FROM || _la==IN) ) {
					((ShowIndexesContext)_localctx).tableFormat = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(6212);
				tableName();
				setState(6215);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==FROM || _la==IN) {
					{
					setState(6213);
					((ShowIndexesContext)_localctx).schemaFormat = _input.LT(1);
					_la = _input.LA(1);
					if ( !(_la==FROM || _la==IN) ) {
						((ShowIndexesContext)_localctx).schemaFormat = (Token)_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					setState(6214);
					uid();
					}
				}

				setState(6219);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==WHERE) {
					{
					setState(6217);
					match(WHERE);
					setState(6218);
					expression(0);
					}
				}

				}
				break;
			case 16:
				_localctx = new ShowOpenTablesContext(_localctx);
				enterOuterAlt(_localctx, 16);
				{
				setState(6221);
				match(SHOW);
				setState(6222);
				match(OPEN);
				setState(6223);
				match(TABLES);
				setState(6226);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==FROM || _la==IN) {
					{
					setState(6224);
					((ShowOpenTablesContext)_localctx).schemaFormat = _input.LT(1);
					_la = _input.LA(1);
					if ( !(_la==FROM || _la==IN) ) {
						((ShowOpenTablesContext)_localctx).schemaFormat = (Token)_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					setState(6225);
					uid();
					}
				}

				setState(6229);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LIKE || _la==WHERE) {
					{
					setState(6228);
					showFilter();
					}
				}

				}
				break;
			case 17:
				_localctx = new ShowProfileContext(_localctx);
				enterOuterAlt(_localctx, 17);
				{
				setState(6231);
				match(SHOW);
				setState(6232);
				match(PROFILE);
				setState(6233);
				showProfileType();
				setState(6238);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(6234);
					match(COMMA);
					setState(6235);
					showProfileType();
					}
					}
					setState(6240);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(6244);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==FOR) {
					{
					setState(6241);
					match(FOR);
					setState(6242);
					match(QUERY);
					setState(6243);
					((ShowProfileContext)_localctx).queryCount = decimalLiteral();
					}
				}

				{
				setState(6246);
				match(LIMIT);
				setState(6250);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,929,_ctx) ) {
				case 1:
					{
					setState(6247);
					((ShowProfileContext)_localctx).offset = decimalLiteral();
					setState(6248);
					match(COMMA);
					}
					break;
				}
				setState(6252);
				((ShowProfileContext)_localctx).rowCount = decimalLiteral();
				}
				}
				break;
			case 18:
				_localctx = new ShowSlaveStatusContext(_localctx);
				enterOuterAlt(_localctx, 18);
				{
				setState(6254);
				match(SHOW);
				setState(6255);
				match(SLAVE);
				setState(6256);
				match(STATUS);
				setState(6260);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==FOR) {
					{
					setState(6257);
					match(FOR);
					setState(6258);
					match(CHANNEL);
					setState(6259);
					match(STRING_LITERAL);
					}
				}

				}
				break;
			case 19:
				_localctx = new ShowUserstatPluginContext(_localctx);
				enterOuterAlt(_localctx, 19);
				{
				setState(6262);
				match(SHOW);
				setState(6263);
				_la = _input.LA(1);
				if ( !(((((_la - 700)) & ~0x3f) == 0 && ((1L << (_la - 700)) & ((1L << (USER_STATISTICS - 700)) | (1L << (CLIENT_STATISTICS - 700)) | (1L << (INDEX_STATISTICS - 700)) | (1L << (TABLE_STATISTICS - 700)))) != 0)) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class VariableClauseContext extends ParserRuleContext {
		public TerminalNode LOCAL_ID() { return getToken(MySqlParser.LOCAL_ID, 0); }
		public TerminalNode GLOBAL_ID() { return getToken(MySqlParser.GLOBAL_ID, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode GLOBAL() { return getToken(MySqlParser.GLOBAL, 0); }
		public TerminalNode SESSION() { return getToken(MySqlParser.SESSION, 0); }
		public TerminalNode LOCAL() { return getToken(MySqlParser.LOCAL, 0); }
		public List AT_SIGN() { return getTokens(MySqlParser.AT_SIGN); }
		public TerminalNode AT_SIGN(int i) {
			return getToken(MySqlParser.AT_SIGN, i);
		}
		public VariableClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_variableClause; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterVariableClause(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitVariableClause(this);
		}
	}

	public final VariableClauseContext variableClause() throws RecognitionException {
		VariableClauseContext _localctx = new VariableClauseContext(_ctx, getState());
		enterRule(_localctx, 510, RULE_variableClause);
		int _la;
		try {
			setState(6276);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case LOCAL_ID:
				enterOuterAlt(_localctx, 1);
				{
				setState(6266);
				match(LOCAL_ID);
				}
				break;
			case GLOBAL_ID:
				enterOuterAlt(_localctx, 2);
				{
				setState(6267);
				match(GLOBAL_ID);
				}
				break;
			case ARRAY:
			case ATTRIBUTE:
			case BUCKETS:
			case CONDITION:
			case CURRENT:
			case CURRENT_ROLE:
			case CURRENT_USER:
			case DATABASE:
			case DEFAULT:
			case DIAGNOSTICS:
			case EMPTY:
			case ENFORCED:
			case EXCEPT:
			case GROUP:
			case GROUP_REPLICATION_STREAM:
			case IF:
			case IGNORED:
			case INSERT:
			case LATERAL:
			case LEFT:
			case LOCKED:
			case MAXVALUE:
			case MINVALUE:
			case NUMBER:
			case OPTIONAL:
			case ORDER:
			case PRIMARY:
			case REPEAT:
			case REPLACE:
			case RIGHT:
			case SCHEMA:
			case SKIP_:
			case SKIP_QUERY_REWRITE:
			case STACKED:
			case STATEMENT:
			case DATE:
			case TIME:
			case TIMESTAMP:
			case DATETIME:
			case YEAR:
			case NATIONAL:
			case BINARY:
			case TEXT:
			case ENUM:
			case SERIAL:
			case JSON_ARRAY:
			case JSON_ARRAYAGG:
			case JSON_ARRAY_APPEND:
			case JSON_ARRAY_INSERT:
			case JSON_CONTAINS:
			case JSON_CONTAINS_PATH:
			case JSON_DEPTH:
			case JSON_EXTRACT:
			case JSON_INSERT:
			case JSON_KEYS:
			case JSON_LENGTH:
			case JSON_MERGE:
			case JSON_MERGE_PATCH:
			case JSON_MERGE_PRESERVE:
			case JSON_OBJECT:
			case JSON_OBJECTAGG:
			case JSON_OVERLAPS:
			case JSON_PRETTY:
			case JSON_QUOTE:
			case JSON_REMOVE:
			case JSON_REPLACE:
			case JSON_SCHEMA_VALID:
			case JSON_SCHEMA_VALIDATION_REPORT:
			case JSON_SEARCH:
			case JSON_SET:
			case JSON_STORAGE_FREE:
			case JSON_STORAGE_SIZE:
			case JSON_TABLE:
			case JSON_TYPE:
			case JSON_UNQUOTE:
			case JSON_VALID:
			case JSON_VALUE:
			case NESTED:
			case ORDINALITY:
			case PATH:
			case AVG:
			case BIT_AND:
			case BIT_OR:
			case BIT_XOR:
			case COUNT:
			case CUME_DIST:
			case DENSE_RANK:
			case FIRST_VALUE:
			case GROUP_CONCAT:
			case LAG:
			case LAST_VALUE:
			case LEAD:
			case MAX:
			case MIN:
			case NTILE:
			case NTH_VALUE:
			case PERCENT_RANK:
			case RANK:
			case ROW_NUMBER:
			case STD:
			case STDDEV:
			case STDDEV_POP:
			case STDDEV_SAMP:
			case SUM:
			case VAR_POP:
			case VAR_SAMP:
			case VARIANCE:
			case CURRENT_DATE:
			case CURRENT_TIME:
			case CURRENT_TIMESTAMP:
			case LOCALTIME:
			case CURDATE:
			case CURTIME:
			case DATE_ADD:
			case DATE_SUB:
			case LOCALTIMESTAMP:
			case NOW:
			case POSITION:
			case SUBSTR:
			case SUBSTRING:
			case SYSDATE:
			case TRIM:
			case UTC_DATE:
			case UTC_TIME:
			case UTC_TIMESTAMP:
			case ACCOUNT:
			case ACTION:
			case AFTER:
			case AGGREGATE:
			case ALGORITHM:
			case ANY:
			case AT:
			case AUTHORS:
			case AUTOCOMMIT:
			case AUTOEXTEND_SIZE:
			case AUTO_INCREMENT:
			case AVG_ROW_LENGTH:
			case BEGIN:
			case BINLOG:
			case BIT:
			case BLOCK:
			case BOOL:
			case BOOLEAN:
			case BTREE:
			case CACHE:
			case CASCADED:
			case CHAIN:
			case CHANGED:
			case CHANNEL:
			case CHECKSUM:
			case PAGE_CHECKSUM:
			case CIPHER:
			case CLASS_ORIGIN:
			case CLIENT:
			case CLOSE:
			case CLUSTERING:
			case COALESCE:
			case CODE:
			case COLUMNS:
			case COLUMN_FORMAT:
			case COLUMN_NAME:
			case COMMENT:
			case COMMIT:
			case COMPACT:
			case COMPLETION:
			case COMPRESSED:
			case COMPRESSION:
			case CONCURRENT:
			case CONNECT:
			case CONNECTION:
			case CONSISTENT:
			case CONSTRAINT_CATALOG:
			case CONSTRAINT_SCHEMA:
			case CONSTRAINT_NAME:
			case CONTAINS:
			case CONTEXT:
			case CONTRIBUTORS:
			case COPY:
			case CPU:
			case CYCLE:
			case CURSOR_NAME:
			case DATA:
			case DATAFILE:
			case DEALLOCATE:
			case DEFAULT_AUTH:
			case DEFINER:
			case DELAY_KEY_WRITE:
			case DES_KEY_FILE:
			case DIRECTORY:
			case DISABLE:
			case DISCARD:
			case DISK:
			case DO:
			case DUMPFILE:
			case DUPLICATE:
			case DYNAMIC:
			case ENABLE:
			case ENCRYPTED:
			case ENCRYPTION:
			case ENCRYPTION_KEY_ID:
			case END:
			case ENDS:
			case ENGINE:
			case ENGINES:
			case ERROR:
			case ERRORS:
			case ESCAPE:
			case EVEN:
			case EVENT:
			case EVENTS:
			case EVERY:
			case EXCHANGE:
			case EXCLUSIVE:
			case EXPIRE:
			case EXPORT:
			case EXTENDED:
			case EXTENT_SIZE:
			case FAILED_LOGIN_ATTEMPTS:
			case FAST:
			case FAULTS:
			case FIELDS:
			case FILE_BLOCK_SIZE:
			case FILTER:
			case FIRST:
			case FIXED:
			case FLUSH:
			case FOLLOWS:
			case FOUND:
			case FULL:
			case FUNCTION:
			case GENERAL:
			case GLOBAL:
			case GRANTS:
			case GROUP_REPLICATION:
			case HANDLER:
			case HASH:
			case HELP:
			case HISTORY:
			case HOST:
			case HOSTS:
			case IDENTIFIED:
			case IGNORE_SERVER_IDS:
			case IMPORT:
			case INCREMENT:
			case INDEXES:
			case INITIAL_SIZE:
			case INPLACE:
			case INSERT_METHOD:
			case INSTALL:
			case INSTANCE:
			case INSTANT:
			case INVISIBLE:
			case INVOKER:
			case IO:
			case IO_THREAD:
			case IPC:
			case ISOLATION:
			case ISSUER:
			case JSON:
			case KEY_BLOCK_SIZE:
			case LANGUAGE:
			case LAST:
			case LEAVES:
			case LESS:
			case LEVEL:
			case LIST:
			case LOCAL:
			case LOGFILE:
			case LOGS:
			case MASTER:
			case MASTER_AUTO_POSITION:
			case MASTER_CONNECT_RETRY:
			case MASTER_DELAY:
			case MASTER_HEARTBEAT_PERIOD:
			case MASTER_HOST:
			case MASTER_LOG_FILE:
			case MASTER_LOG_POS:
			case MASTER_PASSWORD:
			case MASTER_PORT:
			case MASTER_RETRY_COUNT:
			case MASTER_SSL:
			case MASTER_SSL_CA:
			case MASTER_SSL_CAPATH:
			case MASTER_SSL_CERT:
			case MASTER_SSL_CIPHER:
			case MASTER_SSL_CRL:
			case MASTER_SSL_CRLPATH:
			case MASTER_SSL_KEY:
			case MASTER_TLS_VERSION:
			case MASTER_USER:
			case MAX_CONNECTIONS_PER_HOUR:
			case MAX_QUERIES_PER_HOUR:
			case MAX_ROWS:
			case MAX_SIZE:
			case MAX_UPDATES_PER_HOUR:
			case MAX_USER_CONNECTIONS:
			case MEDIUM:
			case MEMBER:
			case MERGE:
			case MESSAGE_TEXT:
			case MID:
			case MIGRATE:
			case MIN_ROWS:
			case MODE:
			case MODIFY:
			case MUTEX:
			case MYSQL:
			case MYSQL_ERRNO:
			case NAME:
			case NAMES:
			case NCHAR:
			case NEVER:
			case NEXT:
			case NO:
			case NOCACHE:
			case NOCOPY:
			case NOCYCLE:
			case NOMAXVALUE:
			case NOMINVALUE:
			case NOWAIT:
			case NODEGROUP:
			case NONE:
			case ODBC:
			case OFFLINE:
			case OFFSET:
			case OF:
			case OJ:
			case OLD_PASSWORD:
			case ONE:
			case ONLINE:
			case ONLY:
			case OPEN:
			case OPTIMIZER_COSTS:
			case OPTIONS:
			case OWNER:
			case PACK_KEYS:
			case PAGE:
			case PARSER:
			case PARTIAL:
			case PARTITIONING:
			case PARTITIONS:
			case PASSWORD:
			case PASSWORD_LOCK_TIME:
			case PHASE:
			case PLUGIN:
			case PLUGIN_DIR:
			case PLUGINS:
			case PORT:
			case PRECEDES:
			case PREPARE:
			case PRESERVE:
			case PREV:
			case PROCESSLIST:
			case PROFILE:
			case PROFILES:
			case PROXY:
			case QUERY:
			case QUICK:
			case REBUILD:
			case RECOVER:
			case RECURSIVE:
			case REDO_BUFFER_SIZE:
			case REDUNDANT:
			case RELAY:
			case RELAY_LOG_FILE:
			case RELAY_LOG_POS:
			case RELAYLOG:
			case REMOVE:
			case REORGANIZE:
			case REPAIR:
			case REPLICATE_DO_DB:
			case REPLICATE_DO_TABLE:
			case REPLICATE_IGNORE_DB:
			case REPLICATE_IGNORE_TABLE:
			case REPLICATE_REWRITE_DB:
			case REPLICATE_WILD_DO_TABLE:
			case REPLICATE_WILD_IGNORE_TABLE:
			case REPLICATION:
			case RESET:
			case RESTART:
			case RESUME:
			case RETURNED_SQLSTATE:
			case RETURNING:
			case RETURNS:
			case REUSE:
			case ROLE:
			case ROLLBACK:
			case ROLLUP:
			case ROTATE:
			case ROW:
			case ROWS:
			case ROW_FORMAT:
			case RTREE:
			case SAVEPOINT:
			case SCHEDULE:
			case SECURITY:
			case SEQUENCE:
			case SERVER:
			case SESSION:
			case SHARE:
			case SHARED:
			case SIGNED:
			case SIMPLE:
			case SLAVE:
			case SLOW:
			case SNAPSHOT:
			case SOCKET:
			case SOME:
			case SONAME:
			case SOUNDS:
			case SOURCE:
			case SQL_AFTER_GTIDS:
			case SQL_AFTER_MTS_GAPS:
			case SQL_BEFORE_GTIDS:
			case SQL_BUFFER_RESULT:
			case SQL_CACHE:
			case SQL_NO_CACHE:
			case SQL_THREAD:
			case START:
			case STARTS:
			case STATS_AUTO_RECALC:
			case STATS_PERSISTENT:
			case STATS_SAMPLE_PAGES:
			case STATUS:
			case STOP:
			case STORAGE:
			case STRING:
			case SUBCLASS_ORIGIN:
			case SUBJECT:
			case SUBPARTITION:
			case SUBPARTITIONS:
			case SUSPEND:
			case SWAPS:
			case SWITCHES:
			case TABLE_NAME:
			case TABLESPACE:
			case TABLE_TYPE:
			case TEMPORARY:
			case TEMPTABLE:
			case THAN:
			case TRADITIONAL:
			case TRANSACTION:
			case TRANSACTIONAL:
			case TRIGGERS:
			case TRUNCATE:
			case UNBOUNDED:
			case UNDEFINED:
			case UNDOFILE:
			case UNDO_BUFFER_SIZE:
			case UNINSTALL:
			case UNKNOWN:
			case UNTIL:
			case UPGRADE:
			case USER:
			case USE_FRM:
			case USER_RESOURCES:
			case VALIDATION:
			case VALUE:
			case VARIABLES:
			case VIEW:
			case VIRTUAL:
			case VISIBLE:
			case WAIT:
			case WARNINGS:
			case WITHOUT:
			case WORK:
			case WRAPPER:
			case X509:
			case XA:
			case XML:
			case YES:
			case EUR:
			case USA:
			case JIS:
			case ISO:
			case INTERNAL:
			case QUARTER:
			case MONTH:
			case DAY:
			case HOUR:
			case MINUTE:
			case WEEK:
			case SECOND:
			case MICROSECOND:
			case USER_STATISTICS:
			case CLIENT_STATISTICS:
			case INDEX_STATISTICS:
			case TABLE_STATISTICS:
			case FIREWALL_RULES:
			case ADMIN:
			case APPLICATION_PASSWORD_ADMIN:
			case AUDIT_ADMIN:
			case AUDIT_ABORT_EXEMPT:
			case AUTHENTICATION_POLICY_ADMIN:
			case BACKUP_ADMIN:
			case BINLOG_ADMIN:
			case BINLOG_ENCRYPTION_ADMIN:
			case CLONE_ADMIN:
			case CONNECTION_ADMIN:
			case ENCRYPTION_KEY_ADMIN:
			case EXECUTE:
			case FILE:
			case FIREWALL_ADMIN:
			case FIREWALL_EXEMPT:
			case FIREWALL_USER:
			case FLUSH_OPTIMIZER_COSTS:
			case FLUSH_STATUS:
			case FLUSH_TABLES:
			case FLUSH_USER_RESOURCES:
			case GROUP_REPLICATION_ADMIN:
			case INNODB_REDO_LOG_ARCHIVE:
			case INNODB_REDO_LOG_ENABLE:
			case INVOKE:
			case LAMBDA:
			case NDB_STORED_USER:
			case PASSWORDLESS_USER_ADMIN:
			case PERSIST_RO_VARIABLES_ADMIN:
			case PRIVILEGES:
			case PROCESS:
			case RELOAD:
			case REPLICATION_APPLIER:
			case REPLICATION_SLAVE_ADMIN:
			case RESOURCE_GROUP_ADMIN:
			case RESOURCE_GROUP_USER:
			case ROLE_ADMIN:
			case ROUTINE:
			case S3:
			case SESSION_VARIABLES_ADMIN:
			case SET_USER_ID:
			case SHOW_ROUTINE:
			case SHUTDOWN:
			case SUPER:
			case SYSTEM_VARIABLES_ADMIN:
			case TABLES:
			case TABLE_ENCRYPTION_ADMIN:
			case VERSION_TOKEN_ADMIN:
			case XA_RECOVER_ADMIN:
			case ARMSCII8:
			case ASCII:
			case BIG5:
			case CP1250:
			case CP1251:
			case CP1256:
			case CP1257:
			case CP850:
			case CP852:
			case CP866:
			case CP932:
			case DEC8:
			case EUCJPMS:
			case EUCKR:
			case GB18030:
			case GB2312:
			case GBK:
			case GEOSTD8:
			case GREEK:
			case HEBREW:
			case HP8:
			case KEYBCS2:
			case KOI8R:
			case KOI8U:
			case LATIN1:
			case LATIN2:
			case LATIN5:
			case LATIN7:
			case MACCE:
			case MACROMAN:
			case SJIS:
			case SWE7:
			case TIS620:
			case UCS2:
			case UJIS:
			case UTF16:
			case UTF16LE:
			case UTF32:
			case UTF8:
			case UTF8MB3:
			case UTF8MB4:
			case ARCHIVE:
			case BLACKHOLE:
			case CSV:
			case FEDERATED:
			case INNODB:
			case MEMORY:
			case MRG_MYISAM:
			case MYISAM:
			case NDB:
			case NDBCLUSTER:
			case PERFORMANCE_SCHEMA:
			case TOKUDB:
			case REPEATABLE:
			case COMMITTED:
			case UNCOMMITTED:
			case SERIALIZABLE:
			case GEOMETRYCOLLECTION:
			case GEOMETRY:
			case LINESTRING:
			case MULTILINESTRING:
			case MULTIPOINT:
			case MULTIPOLYGON:
			case POINT:
			case POLYGON:
			case ABS:
			case ACOS:
			case ADDDATE:
			case ADDTIME:
			case AES_DECRYPT:
			case AES_ENCRYPT:
			case AREA:
			case ASBINARY:
			case ASIN:
			case ASTEXT:
			case ASWKB:
			case ASWKT:
			case ASYMMETRIC_DECRYPT:
			case ASYMMETRIC_DERIVE:
			case ASYMMETRIC_ENCRYPT:
			case ASYMMETRIC_SIGN:
			case ASYMMETRIC_VERIFY:
			case ATAN:
			case ATAN2:
			case BENCHMARK:
			case BIN:
			case BIT_COUNT:
			case BIT_LENGTH:
			case BUFFER:
			case CATALOG_NAME:
			case CEIL:
			case CEILING:
			case CENTROID:
			case CHARACTER_LENGTH:
			case CHARSET:
			case CHAR_LENGTH:
			case COERCIBILITY:
			case COLLATION:
			case COMPRESS:
			case CONCAT:
			case CONCAT_WS:
			case CONNECTION_ID:
			case CONV:
			case CONVERT_TZ:
			case COS:
			case COT:
			case CRC32:
			case CREATE_ASYMMETRIC_PRIV_KEY:
			case CREATE_ASYMMETRIC_PUB_KEY:
			case CREATE_DH_PARAMETERS:
			case CREATE_DIGEST:
			case CROSSES:
			case DATEDIFF:
			case DATE_FORMAT:
			case DAYNAME:
			case DAYOFMONTH:
			case DAYOFWEEK:
			case DAYOFYEAR:
			case DECODE:
			case DEGREES:
			case DES_DECRYPT:
			case DES_ENCRYPT:
			case DIMENSION:
			case DISJOINT:
			case ELT:
			case ENCODE:
			case ENCRYPT:
			case ENDPOINT:
			case ENGINE_ATTRIBUTE:
			case ENVELOPE:
			case EQUALS:
			case EXP:
			case EXPORT_SET:
			case EXTERIORRING:
			case EXTRACTVALUE:
			case FIELD:
			case FIND_IN_SET:
			case FLOOR:
			case FORMAT:
			case FOUND_ROWS:
			case FROM_BASE64:
			case FROM_DAYS:
			case FROM_UNIXTIME:
			case GEOMCOLLFROMTEXT:
			case GEOMCOLLFROMWKB:
			case GEOMETRYCOLLECTIONFROMTEXT:
			case GEOMETRYCOLLECTIONFROMWKB:
			case GEOMETRYFROMTEXT:
			case GEOMETRYFROMWKB:
			case GEOMETRYN:
			case GEOMETRYTYPE:
			case GEOMFROMTEXT:
			case GEOMFROMWKB:
			case GET_FORMAT:
			case GET_LOCK:
			case GLENGTH:
			case GREATEST:
			case GTID_SUBSET:
			case GTID_SUBTRACT:
			case HEX:
			case IFNULL:
			case INET6_ATON:
			case INET6_NTOA:
			case INET_ATON:
			case INET_NTOA:
			case INSTR:
			case INTERIORRINGN:
			case INTERSECTS:
			case ISCLOSED:
			case ISEMPTY:
			case ISNULL:
			case ISSIMPLE:
			case IS_FREE_LOCK:
			case IS_IPV4:
			case IS_IPV4_COMPAT:
			case IS_IPV4_MAPPED:
			case IS_IPV6:
			case IS_USED_LOCK:
			case LAST_INSERT_ID:
			case LCASE:
			case LEAST:
			case LENGTH:
			case LINEFROMTEXT:
			case LINEFROMWKB:
			case LINESTRINGFROMTEXT:
			case LINESTRINGFROMWKB:
			case LN:
			case LOAD_FILE:
			case LOCATE:
			case LOG:
			case LOG10:
			case LOG2:
			case LOWER:
			case LPAD:
			case LTRIM:
			case MAKEDATE:
			case MAKETIME:
			case MAKE_SET:
			case MASTER_POS_WAIT:
			case MBRCONTAINS:
			case MBRDISJOINT:
			case MBREQUAL:
			case MBRINTERSECTS:
			case MBROVERLAPS:
			case MBRTOUCHES:
			case MBRWITHIN:
			case MD5:
			case MLINEFROMTEXT:
			case MLINEFROMWKB:
			case MONTHNAME:
			case MPOINTFROMTEXT:
			case MPOINTFROMWKB:
			case MPOLYFROMTEXT:
			case MPOLYFROMWKB:
			case MULTILINESTRINGFROMTEXT:
			case MULTILINESTRINGFROMWKB:
			case MULTIPOINTFROMTEXT:
			case MULTIPOINTFROMWKB:
			case MULTIPOLYGONFROMTEXT:
			case MULTIPOLYGONFROMWKB:
			case NAME_CONST:
			case NULLIF:
			case NUMGEOMETRIES:
			case NUMINTERIORRINGS:
			case NUMPOINTS:
			case OCT:
			case OCTET_LENGTH:
			case ORD:
			case OVERLAPS:
			case PERIOD_ADD:
			case PERIOD_DIFF:
			case PI:
			case POINTFROMTEXT:
			case POINTFROMWKB:
			case POINTN:
			case POLYFROMTEXT:
			case POLYFROMWKB:
			case POLYGONFROMTEXT:
			case POLYGONFROMWKB:
			case POW:
			case POWER:
			case QUOTE:
			case RADIANS:
			case RAND:
			case RANDOM:
			case RANDOM_BYTES:
			case RELEASE_LOCK:
			case REVERSE:
			case ROUND:
			case ROW_COUNT:
			case RPAD:
			case RTRIM:
			case SEC_TO_TIME:
			case SECONDARY_ENGINE_ATTRIBUTE:
			case SENSITIVE_VARIABLES_OBSERVER:
			case SESSION_USER:
			case SHA:
			case SHA1:
			case SHA2:
			case SCHEMA_NAME:
			case SIGN:
			case SIN:
			case SLEEP:
			case SOUNDEX:
			case SQL_THREAD_WAIT_AFTER_GTIDS:
			case SQRT:
			case SRID:
			case STARTPOINT:
			case STRCMP:
			case STR_TO_DATE:
			case ST_AREA:
			case ST_ASBINARY:
			case ST_ASTEXT:
			case ST_ASWKB:
			case ST_ASWKT:
			case ST_BUFFER:
			case ST_CENTROID:
			case ST_CONTAINS:
			case ST_CROSSES:
			case ST_DIFFERENCE:
			case ST_DIMENSION:
			case ST_DISJOINT:
			case ST_DISTANCE:
			case ST_ENDPOINT:
			case ST_ENVELOPE:
			case ST_EQUALS:
			case ST_EXTERIORRING:
			case ST_GEOMCOLLFROMTEXT:
			case ST_GEOMCOLLFROMTXT:
			case ST_GEOMCOLLFROMWKB:
			case ST_GEOMETRYCOLLECTIONFROMTEXT:
			case ST_GEOMETRYCOLLECTIONFROMWKB:
			case ST_GEOMETRYFROMTEXT:
			case ST_GEOMETRYFROMWKB:
			case ST_GEOMETRYN:
			case ST_GEOMETRYTYPE:
			case ST_GEOMFROMTEXT:
			case ST_GEOMFROMWKB:
			case ST_INTERIORRINGN:
			case ST_INTERSECTION:
			case ST_INTERSECTS:
			case ST_ISCLOSED:
			case ST_ISEMPTY:
			case ST_ISSIMPLE:
			case ST_LINEFROMTEXT:
			case ST_LINEFROMWKB:
			case ST_LINESTRINGFROMTEXT:
			case ST_LINESTRINGFROMWKB:
			case ST_NUMGEOMETRIES:
			case ST_NUMINTERIORRING:
			case ST_NUMINTERIORRINGS:
			case ST_NUMPOINTS:
			case ST_OVERLAPS:
			case ST_POINTFROMTEXT:
			case ST_POINTFROMWKB:
			case ST_POINTN:
			case ST_POLYFROMTEXT:
			case ST_POLYFROMWKB:
			case ST_POLYGONFROMTEXT:
			case ST_POLYGONFROMWKB:
			case ST_SRID:
			case ST_STARTPOINT:
			case ST_SYMDIFFERENCE:
			case ST_TOUCHES:
			case ST_UNION:
			case ST_WITHIN:
			case ST_X:
			case ST_Y:
			case SUBDATE:
			case SUBSTRING_INDEX:
			case SUBTIME:
			case SYSTEM_USER:
			case SYSTEM:
			case TAN:
			case TELEMETRY_LOG_ADMIN:
			case TIMEDIFF:
			case TIMESTAMPADD:
			case TIMESTAMPDIFF:
			case TIME_FORMAT:
			case TIME_TO_SEC:
			case TOUCHES:
			case TO_BASE64:
			case TO_DAYS:
			case TO_SECONDS:
			case TP_CONNECTION_ADMIN:
			case UCASE:
			case UNCOMPRESS:
			case UNCOMPRESSED_LENGTH:
			case UNHEX:
			case UNIX_TIMESTAMP:
			case UPDATEXML:
			case UPPER:
			case UUID:
			case UUID_SHORT:
			case VALIDATE_PASSWORD_STRENGTH:
			case VERSION:
			case VERSIONING:
			case WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS:
			case WEEKDAY:
			case WEEKOFYEAR:
			case WEIGHT_STRING:
			case WITHIN:
			case YEARWEEK:
			case Y_FUNCTION:
			case X_FUNCTION:
			case VIA:
			case LASTVAL:
			case NEXTVAL:
			case SETVAL:
			case PREVIOUS:
			case PERSISTENT:
			case BINLOG_MONITOR:
			case BINLOG_REPLAY:
			case FEDERATED_ADMIN:
			case READ_ONLY_ADMIN:
			case REPLICA:
			case REPLICATION_MASTER_ADMIN:
			case MONITOR:
			case READ_ONLY:
			case REPLAY:
			case MOD:
			case AT_SIGN:
			case CHARSET_REVERSE_QOUTE_STRING:
			case STRING_LITERAL:
			case ID:
				enterOuterAlt(_localctx, 3);
				{
				setState(6273);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,933,_ctx) ) {
				case 1:
					{
					setState(6270);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==AT_SIGN) {
						{
						setState(6268);
						match(AT_SIGN);
						setState(6269);
						match(AT_SIGN);
						}
					}

					setState(6272);
					_la = _input.LA(1);
					if ( !(_la==GLOBAL || _la==LOCAL || _la==SESSION) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
					break;
				}
				setState(6275);
				uid();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ShowCommonEntityContext extends ParserRuleContext {
		public TerminalNode CHARACTER() { return getToken(MySqlParser.CHARACTER, 0); }
		public TerminalNode SET() { return getToken(MySqlParser.SET, 0); }
		public TerminalNode COLLATION() { return getToken(MySqlParser.COLLATION, 0); }
		public TerminalNode DATABASES() { return getToken(MySqlParser.DATABASES, 0); }
		public TerminalNode SCHEMAS() { return getToken(MySqlParser.SCHEMAS, 0); }
		public TerminalNode FUNCTION() { return getToken(MySqlParser.FUNCTION, 0); }
		public TerminalNode STATUS() { return getToken(MySqlParser.STATUS, 0); }
		public TerminalNode PROCEDURE() { return getToken(MySqlParser.PROCEDURE, 0); }
		public TerminalNode VARIABLES() { return getToken(MySqlParser.VARIABLES, 0); }
		public TerminalNode GLOBAL() { return getToken(MySqlParser.GLOBAL, 0); }
		public TerminalNode SESSION() { return getToken(MySqlParser.SESSION, 0); }
		public ShowCommonEntityContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_showCommonEntity; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterShowCommonEntity(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitShowCommonEntity(this);
		}
	}

	public final ShowCommonEntityContext showCommonEntity() throws RecognitionException {
		ShowCommonEntityContext _localctx = new ShowCommonEntityContext(_ctx, getState());
		enterRule(_localctx, 512, RULE_showCommonEntity);
		int _la;
		try {
			setState(6291);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case CHARACTER:
				enterOuterAlt(_localctx, 1);
				{
				setState(6278);
				match(CHARACTER);
				setState(6279);
				match(SET);
				}
				break;
			case COLLATION:
				enterOuterAlt(_localctx, 2);
				{
				setState(6280);
				match(COLLATION);
				}
				break;
			case DATABASES:
				enterOuterAlt(_localctx, 3);
				{
				setState(6281);
				match(DATABASES);
				}
				break;
			case SCHEMAS:
				enterOuterAlt(_localctx, 4);
				{
				setState(6282);
				match(SCHEMAS);
				}
				break;
			case FUNCTION:
				enterOuterAlt(_localctx, 5);
				{
				setState(6283);
				match(FUNCTION);
				setState(6284);
				match(STATUS);
				}
				break;
			case PROCEDURE:
				enterOuterAlt(_localctx, 6);
				{
				setState(6285);
				match(PROCEDURE);
				setState(6286);
				match(STATUS);
				}
				break;
			case GLOBAL:
			case SESSION:
			case STATUS:
			case VARIABLES:
				enterOuterAlt(_localctx, 7);
				{
				setState(6288);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==GLOBAL || _la==SESSION) {
					{
					setState(6287);
					_la = _input.LA(1);
					if ( !(_la==GLOBAL || _la==SESSION) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
				}

				setState(6290);
				_la = _input.LA(1);
				if ( !(_la==STATUS || _la==VARIABLES) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ShowFilterContext extends ParserRuleContext {
		public TerminalNode LIKE() { return getToken(MySqlParser.LIKE, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode WHERE() { return getToken(MySqlParser.WHERE, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public ShowFilterContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_showFilter; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterShowFilter(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitShowFilter(this);
		}
	}

	public final ShowFilterContext showFilter() throws RecognitionException {
		ShowFilterContext _localctx = new ShowFilterContext(_ctx, getState());
		enterRule(_localctx, 514, RULE_showFilter);
		try {
			setState(6297);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case LIKE:
				enterOuterAlt(_localctx, 1);
				{
				setState(6293);
				match(LIKE);
				setState(6294);
				match(STRING_LITERAL);
				}
				break;
			case WHERE:
				enterOuterAlt(_localctx, 2);
				{
				setState(6295);
				match(WHERE);
				setState(6296);
				expression(0);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ShowGlobalInfoClauseContext extends ParserRuleContext {
		public TerminalNode ENGINES() { return getToken(MySqlParser.ENGINES, 0); }
		public TerminalNode STORAGE() { return getToken(MySqlParser.STORAGE, 0); }
		public TerminalNode MASTER() { return getToken(MySqlParser.MASTER, 0); }
		public TerminalNode STATUS() { return getToken(MySqlParser.STATUS, 0); }
		public TerminalNode PLUGINS() { return getToken(MySqlParser.PLUGINS, 0); }
		public TerminalNode PRIVILEGES() { return getToken(MySqlParser.PRIVILEGES, 0); }
		public TerminalNode PROCESSLIST() { return getToken(MySqlParser.PROCESSLIST, 0); }
		public TerminalNode FULL() { return getToken(MySqlParser.FULL, 0); }
		public TerminalNode PROFILES() { return getToken(MySqlParser.PROFILES, 0); }
		public TerminalNode SLAVE() { return getToken(MySqlParser.SLAVE, 0); }
		public TerminalNode HOSTS() { return getToken(MySqlParser.HOSTS, 0); }
		public TerminalNode AUTHORS() { return getToken(MySqlParser.AUTHORS, 0); }
		public TerminalNode CONTRIBUTORS() { return getToken(MySqlParser.CONTRIBUTORS, 0); }
		public ShowGlobalInfoClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_showGlobalInfoClause; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterShowGlobalInfoClause(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitShowGlobalInfoClause(this);
		}
	}

	public final ShowGlobalInfoClauseContext showGlobalInfoClause() throws RecognitionException {
		ShowGlobalInfoClauseContext _localctx = new ShowGlobalInfoClauseContext(_ctx, getState());
		enterRule(_localctx, 516, RULE_showGlobalInfoClause);
		int _la;
		try {
			setState(6316);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case ENGINES:
			case STORAGE:
				enterOuterAlt(_localctx, 1);
				{
				setState(6300);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==STORAGE) {
					{
					setState(6299);
					match(STORAGE);
					}
				}

				setState(6302);
				match(ENGINES);
				}
				break;
			case MASTER:
				enterOuterAlt(_localctx, 2);
				{
				setState(6303);
				match(MASTER);
				setState(6304);
				match(STATUS);
				}
				break;
			case PLUGINS:
				enterOuterAlt(_localctx, 3);
				{
				setState(6305);
				match(PLUGINS);
				}
				break;
			case PRIVILEGES:
				enterOuterAlt(_localctx, 4);
				{
				setState(6306);
				match(PRIVILEGES);
				}
				break;
			case FULL:
			case PROCESSLIST:
				enterOuterAlt(_localctx, 5);
				{
				setState(6308);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==FULL) {
					{
					setState(6307);
					match(FULL);
					}
				}

				setState(6310);
				match(PROCESSLIST);
				}
				break;
			case PROFILES:
				enterOuterAlt(_localctx, 6);
				{
				setState(6311);
				match(PROFILES);
				}
				break;
			case SLAVE:
				enterOuterAlt(_localctx, 7);
				{
				setState(6312);
				match(SLAVE);
				setState(6313);
				match(HOSTS);
				}
				break;
			case AUTHORS:
				enterOuterAlt(_localctx, 8);
				{
				setState(6314);
				match(AUTHORS);
				}
				break;
			case CONTRIBUTORS:
				enterOuterAlt(_localctx, 9);
				{
				setState(6315);
				match(CONTRIBUTORS);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ShowSchemaEntityContext extends ParserRuleContext {
		public TerminalNode EVENTS() { return getToken(MySqlParser.EVENTS, 0); }
		public TerminalNode TABLE() { return getToken(MySqlParser.TABLE, 0); }
		public TerminalNode STATUS() { return getToken(MySqlParser.STATUS, 0); }
		public TerminalNode TABLES() { return getToken(MySqlParser.TABLES, 0); }
		public TerminalNode FULL() { return getToken(MySqlParser.FULL, 0); }
		public TerminalNode TRIGGERS() { return getToken(MySqlParser.TRIGGERS, 0); }
		public ShowSchemaEntityContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_showSchemaEntity; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterShowSchemaEntity(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitShowSchemaEntity(this);
		}
	}

	public final ShowSchemaEntityContext showSchemaEntity() throws RecognitionException {
		ShowSchemaEntityContext _localctx = new ShowSchemaEntityContext(_ctx, getState());
		enterRule(_localctx, 518, RULE_showSchemaEntity);
		int _la;
		try {
			setState(6326);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case EVENTS:
				enterOuterAlt(_localctx, 1);
				{
				setState(6318);
				match(EVENTS);
				}
				break;
			case TABLE:
				enterOuterAlt(_localctx, 2);
				{
				setState(6319);
				match(TABLE);
				setState(6320);
				match(STATUS);
				}
				break;
			case FULL:
			case TABLES:
				enterOuterAlt(_localctx, 3);
				{
				setState(6322);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==FULL) {
					{
					setState(6321);
					match(FULL);
					}
				}

				setState(6324);
				match(TABLES);
				}
				break;
			case TRIGGERS:
				enterOuterAlt(_localctx, 4);
				{
				setState(6325);
				match(TRIGGERS);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ShowProfileTypeContext extends ParserRuleContext {
		public TerminalNode ALL() { return getToken(MySqlParser.ALL, 0); }
		public TerminalNode BLOCK() { return getToken(MySqlParser.BLOCK, 0); }
		public TerminalNode IO() { return getToken(MySqlParser.IO, 0); }
		public TerminalNode CONTEXT() { return getToken(MySqlParser.CONTEXT, 0); }
		public TerminalNode SWITCHES() { return getToken(MySqlParser.SWITCHES, 0); }
		public TerminalNode CPU() { return getToken(MySqlParser.CPU, 0); }
		public TerminalNode IPC() { return getToken(MySqlParser.IPC, 0); }
		public TerminalNode MEMORY() { return getToken(MySqlParser.MEMORY, 0); }
		public TerminalNode PAGE() { return getToken(MySqlParser.PAGE, 0); }
		public TerminalNode FAULTS() { return getToken(MySqlParser.FAULTS, 0); }
		public TerminalNode SOURCE() { return getToken(MySqlParser.SOURCE, 0); }
		public TerminalNode SWAPS() { return getToken(MySqlParser.SWAPS, 0); }
		public ShowProfileTypeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_showProfileType; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterShowProfileType(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitShowProfileType(this);
		}
	}

	public final ShowProfileTypeContext showProfileType() throws RecognitionException {
		ShowProfileTypeContext _localctx = new ShowProfileTypeContext(_ctx, getState());
		enterRule(_localctx, 520, RULE_showProfileType);
		try {
			setState(6340);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case ALL:
				enterOuterAlt(_localctx, 1);
				{
				setState(6328);
				match(ALL);
				}
				break;
			case BLOCK:
				enterOuterAlt(_localctx, 2);
				{
				setState(6329);
				match(BLOCK);
				setState(6330);
				match(IO);
				}
				break;
			case CONTEXT:
				enterOuterAlt(_localctx, 3);
				{
				setState(6331);
				match(CONTEXT);
				setState(6332);
				match(SWITCHES);
				}
				break;
			case CPU:
				enterOuterAlt(_localctx, 4);
				{
				setState(6333);
				match(CPU);
				}
				break;
			case IPC:
				enterOuterAlt(_localctx, 5);
				{
				setState(6334);
				match(IPC);
				}
				break;
			case MEMORY:
				enterOuterAlt(_localctx, 6);
				{
				setState(6335);
				match(MEMORY);
				}
				break;
			case PAGE:
				enterOuterAlt(_localctx, 7);
				{
				setState(6336);
				match(PAGE);
				setState(6337);
				match(FAULTS);
				}
				break;
			case SOURCE:
				enterOuterAlt(_localctx, 8);
				{
				setState(6338);
				match(SOURCE);
				}
				break;
			case SWAPS:
				enterOuterAlt(_localctx, 9);
				{
				setState(6339);
				match(SWAPS);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class BinlogStatementContext extends ParserRuleContext {
		public TerminalNode BINLOG() { return getToken(MySqlParser.BINLOG, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public BinlogStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_binlogStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterBinlogStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitBinlogStatement(this);
		}
	}

	public final BinlogStatementContext binlogStatement() throws RecognitionException {
		BinlogStatementContext _localctx = new BinlogStatementContext(_ctx, getState());
		enterRule(_localctx, 522, RULE_binlogStatement);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6342);
			match(BINLOG);
			setState(6343);
			match(STRING_LITERAL);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CacheIndexStatementContext extends ParserRuleContext {
		public UidContext schema;
		public TerminalNode CACHE() { return getToken(MySqlParser.CACHE, 0); }
		public TerminalNode INDEX() { return getToken(MySqlParser.INDEX, 0); }
		public List tableIndexes() {
			return getRuleContexts(TableIndexesContext.class);
		}
		public TableIndexesContext tableIndexes(int i) {
			return getRuleContext(TableIndexesContext.class,i);
		}
		public TerminalNode IN() { return getToken(MySqlParser.IN, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public TerminalNode PARTITION() { return getToken(MySqlParser.PARTITION, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public UidListContext uidList() {
			return getRuleContext(UidListContext.class,0);
		}
		public TerminalNode ALL() { return getToken(MySqlParser.ALL, 0); }
		public CacheIndexStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_cacheIndexStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCacheIndexStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCacheIndexStatement(this);
		}
	}

	public final CacheIndexStatementContext cacheIndexStatement() throws RecognitionException {
		CacheIndexStatementContext _localctx = new CacheIndexStatementContext(_ctx, getState());
		enterRule(_localctx, 524, RULE_cacheIndexStatement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6345);
			match(CACHE);
			setState(6346);
			match(INDEX);
			setState(6347);
			tableIndexes();
			setState(6352);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(6348);
				match(COMMA);
				setState(6349);
				tableIndexes();
				}
				}
				setState(6354);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(6362);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==PARTITION) {
				{
				setState(6355);
				match(PARTITION);
				setState(6356);
				match(LR_BRACKET);
				setState(6359);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case ARRAY:
				case ATTRIBUTE:
				case BUCKETS:
				case CONDITION:
				case CURRENT:
				case CURRENT_ROLE:
				case CURRENT_USER:
				case DATABASE:
				case DEFAULT:
				case DIAGNOSTICS:
				case EMPTY:
				case ENFORCED:
				case EXCEPT:
				case GROUP:
				case GROUP_REPLICATION_STREAM:
				case IF:
				case IGNORED:
				case INSERT:
				case LATERAL:
				case LEFT:
				case LOCKED:
				case MAXVALUE:
				case MINVALUE:
				case NUMBER:
				case OPTIONAL:
				case ORDER:
				case PRIMARY:
				case REPEAT:
				case REPLACE:
				case RIGHT:
				case SCHEMA:
				case SKIP_:
				case SKIP_QUERY_REWRITE:
				case STACKED:
				case STATEMENT:
				case DATE:
				case TIME:
				case TIMESTAMP:
				case DATETIME:
				case YEAR:
				case NATIONAL:
				case BINARY:
				case TEXT:
				case ENUM:
				case SERIAL:
				case JSON_ARRAY:
				case JSON_ARRAYAGG:
				case JSON_ARRAY_APPEND:
				case JSON_ARRAY_INSERT:
				case JSON_CONTAINS:
				case JSON_CONTAINS_PATH:
				case JSON_DEPTH:
				case JSON_EXTRACT:
				case JSON_INSERT:
				case JSON_KEYS:
				case JSON_LENGTH:
				case JSON_MERGE:
				case JSON_MERGE_PATCH:
				case JSON_MERGE_PRESERVE:
				case JSON_OBJECT:
				case JSON_OBJECTAGG:
				case JSON_OVERLAPS:
				case JSON_PRETTY:
				case JSON_QUOTE:
				case JSON_REMOVE:
				case JSON_REPLACE:
				case JSON_SCHEMA_VALID:
				case JSON_SCHEMA_VALIDATION_REPORT:
				case JSON_SEARCH:
				case JSON_SET:
				case JSON_STORAGE_FREE:
				case JSON_STORAGE_SIZE:
				case JSON_TABLE:
				case JSON_TYPE:
				case JSON_UNQUOTE:
				case JSON_VALID:
				case JSON_VALUE:
				case NESTED:
				case ORDINALITY:
				case PATH:
				case AVG:
				case BIT_AND:
				case BIT_OR:
				case BIT_XOR:
				case COUNT:
				case CUME_DIST:
				case DENSE_RANK:
				case FIRST_VALUE:
				case GROUP_CONCAT:
				case LAG:
				case LAST_VALUE:
				case LEAD:
				case MAX:
				case MIN:
				case NTILE:
				case NTH_VALUE:
				case PERCENT_RANK:
				case RANK:
				case ROW_NUMBER:
				case STD:
				case STDDEV:
				case STDDEV_POP:
				case STDDEV_SAMP:
				case SUM:
				case VAR_POP:
				case VAR_SAMP:
				case VARIANCE:
				case CURRENT_DATE:
				case CURRENT_TIME:
				case CURRENT_TIMESTAMP:
				case LOCALTIME:
				case CURDATE:
				case CURTIME:
				case DATE_ADD:
				case DATE_SUB:
				case LOCALTIMESTAMP:
				case NOW:
				case POSITION:
				case SUBSTR:
				case SUBSTRING:
				case SYSDATE:
				case TRIM:
				case UTC_DATE:
				case UTC_TIME:
				case UTC_TIMESTAMP:
				case ACCOUNT:
				case ACTION:
				case AFTER:
				case AGGREGATE:
				case ALGORITHM:
				case ANY:
				case AT:
				case AUTHORS:
				case AUTOCOMMIT:
				case AUTOEXTEND_SIZE:
				case AUTO_INCREMENT:
				case AVG_ROW_LENGTH:
				case BEGIN:
				case BINLOG:
				case BIT:
				case BLOCK:
				case BOOL:
				case BOOLEAN:
				case BTREE:
				case CACHE:
				case CASCADED:
				case CHAIN:
				case CHANGED:
				case CHANNEL:
				case CHECKSUM:
				case PAGE_CHECKSUM:
				case CIPHER:
				case CLASS_ORIGIN:
				case CLIENT:
				case CLOSE:
				case CLUSTERING:
				case COALESCE:
				case CODE:
				case COLUMNS:
				case COLUMN_FORMAT:
				case COLUMN_NAME:
				case COMMENT:
				case COMMIT:
				case COMPACT:
				case COMPLETION:
				case COMPRESSED:
				case COMPRESSION:
				case CONCURRENT:
				case CONNECT:
				case CONNECTION:
				case CONSISTENT:
				case CONSTRAINT_CATALOG:
				case CONSTRAINT_SCHEMA:
				case CONSTRAINT_NAME:
				case CONTAINS:
				case CONTEXT:
				case CONTRIBUTORS:
				case COPY:
				case CPU:
				case CYCLE:
				case CURSOR_NAME:
				case DATA:
				case DATAFILE:
				case DEALLOCATE:
				case DEFAULT_AUTH:
				case DEFINER:
				case DELAY_KEY_WRITE:
				case DES_KEY_FILE:
				case DIRECTORY:
				case DISABLE:
				case DISCARD:
				case DISK:
				case DO:
				case DUMPFILE:
				case DUPLICATE:
				case DYNAMIC:
				case ENABLE:
				case ENCRYPTED:
				case ENCRYPTION:
				case ENCRYPTION_KEY_ID:
				case END:
				case ENDS:
				case ENGINE:
				case ENGINES:
				case ERROR:
				case ERRORS:
				case ESCAPE:
				case EVEN:
				case EVENT:
				case EVENTS:
				case EVERY:
				case EXCHANGE:
				case EXCLUSIVE:
				case EXPIRE:
				case EXPORT:
				case EXTENDED:
				case EXTENT_SIZE:
				case FAILED_LOGIN_ATTEMPTS:
				case FAST:
				case FAULTS:
				case FIELDS:
				case FILE_BLOCK_SIZE:
				case FILTER:
				case FIRST:
				case FIXED:
				case FLUSH:
				case FOLLOWS:
				case FOUND:
				case FULL:
				case FUNCTION:
				case GENERAL:
				case GLOBAL:
				case GRANTS:
				case GROUP_REPLICATION:
				case HANDLER:
				case HASH:
				case HELP:
				case HISTORY:
				case HOST:
				case HOSTS:
				case IDENTIFIED:
				case IGNORE_SERVER_IDS:
				case IMPORT:
				case INCREMENT:
				case INDEXES:
				case INITIAL_SIZE:
				case INPLACE:
				case INSERT_METHOD:
				case INSTALL:
				case INSTANCE:
				case INSTANT:
				case INVISIBLE:
				case INVOKER:
				case IO:
				case IO_THREAD:
				case IPC:
				case ISOLATION:
				case ISSUER:
				case JSON:
				case KEY_BLOCK_SIZE:
				case LANGUAGE:
				case LAST:
				case LEAVES:
				case LESS:
				case LEVEL:
				case LIST:
				case LOCAL:
				case LOGFILE:
				case LOGS:
				case MASTER:
				case MASTER_AUTO_POSITION:
				case MASTER_CONNECT_RETRY:
				case MASTER_DELAY:
				case MASTER_HEARTBEAT_PERIOD:
				case MASTER_HOST:
				case MASTER_LOG_FILE:
				case MASTER_LOG_POS:
				case MASTER_PASSWORD:
				case MASTER_PORT:
				case MASTER_RETRY_COUNT:
				case MASTER_SSL:
				case MASTER_SSL_CA:
				case MASTER_SSL_CAPATH:
				case MASTER_SSL_CERT:
				case MASTER_SSL_CIPHER:
				case MASTER_SSL_CRL:
				case MASTER_SSL_CRLPATH:
				case MASTER_SSL_KEY:
				case MASTER_TLS_VERSION:
				case MASTER_USER:
				case MAX_CONNECTIONS_PER_HOUR:
				case MAX_QUERIES_PER_HOUR:
				case MAX_ROWS:
				case MAX_SIZE:
				case MAX_UPDATES_PER_HOUR:
				case MAX_USER_CONNECTIONS:
				case MEDIUM:
				case MEMBER:
				case MERGE:
				case MESSAGE_TEXT:
				case MID:
				case MIGRATE:
				case MIN_ROWS:
				case MODE:
				case MODIFY:
				case MUTEX:
				case MYSQL:
				case MYSQL_ERRNO:
				case NAME:
				case NAMES:
				case NCHAR:
				case NEVER:
				case NEXT:
				case NO:
				case NOCACHE:
				case NOCOPY:
				case NOCYCLE:
				case NOMAXVALUE:
				case NOMINVALUE:
				case NOWAIT:
				case NODEGROUP:
				case NONE:
				case ODBC:
				case OFFLINE:
				case OFFSET:
				case OF:
				case OJ:
				case OLD_PASSWORD:
				case ONE:
				case ONLINE:
				case ONLY:
				case OPEN:
				case OPTIMIZER_COSTS:
				case OPTIONS:
				case OWNER:
				case PACK_KEYS:
				case PAGE:
				case PARSER:
				case PARTIAL:
				case PARTITIONING:
				case PARTITIONS:
				case PASSWORD:
				case PASSWORD_LOCK_TIME:
				case PHASE:
				case PLUGIN:
				case PLUGIN_DIR:
				case PLUGINS:
				case PORT:
				case PRECEDES:
				case PREPARE:
				case PRESERVE:
				case PREV:
				case PROCESSLIST:
				case PROFILE:
				case PROFILES:
				case PROXY:
				case QUERY:
				case QUICK:
				case REBUILD:
				case RECOVER:
				case RECURSIVE:
				case REDO_BUFFER_SIZE:
				case REDUNDANT:
				case RELAY:
				case RELAY_LOG_FILE:
				case RELAY_LOG_POS:
				case RELAYLOG:
				case REMOVE:
				case REORGANIZE:
				case REPAIR:
				case REPLICATE_DO_DB:
				case REPLICATE_DO_TABLE:
				case REPLICATE_IGNORE_DB:
				case REPLICATE_IGNORE_TABLE:
				case REPLICATE_REWRITE_DB:
				case REPLICATE_WILD_DO_TABLE:
				case REPLICATE_WILD_IGNORE_TABLE:
				case REPLICATION:
				case RESET:
				case RESTART:
				case RESUME:
				case RETURNED_SQLSTATE:
				case RETURNING:
				case RETURNS:
				case REUSE:
				case ROLE:
				case ROLLBACK:
				case ROLLUP:
				case ROTATE:
				case ROW:
				case ROWS:
				case ROW_FORMAT:
				case RTREE:
				case SAVEPOINT:
				case SCHEDULE:
				case SECURITY:
				case SEQUENCE:
				case SERVER:
				case SESSION:
				case SHARE:
				case SHARED:
				case SIGNED:
				case SIMPLE:
				case SLAVE:
				case SLOW:
				case SNAPSHOT:
				case SOCKET:
				case SOME:
				case SONAME:
				case SOUNDS:
				case SOURCE:
				case SQL_AFTER_GTIDS:
				case SQL_AFTER_MTS_GAPS:
				case SQL_BEFORE_GTIDS:
				case SQL_BUFFER_RESULT:
				case SQL_CACHE:
				case SQL_NO_CACHE:
				case SQL_THREAD:
				case START:
				case STARTS:
				case STATS_AUTO_RECALC:
				case STATS_PERSISTENT:
				case STATS_SAMPLE_PAGES:
				case STATUS:
				case STOP:
				case STORAGE:
				case STRING:
				case SUBCLASS_ORIGIN:
				case SUBJECT:
				case SUBPARTITION:
				case SUBPARTITIONS:
				case SUSPEND:
				case SWAPS:
				case SWITCHES:
				case TABLE_NAME:
				case TABLESPACE:
				case TABLE_TYPE:
				case TEMPORARY:
				case TEMPTABLE:
				case THAN:
				case TRADITIONAL:
				case TRANSACTION:
				case TRANSACTIONAL:
				case TRIGGERS:
				case TRUNCATE:
				case UNBOUNDED:
				case UNDEFINED:
				case UNDOFILE:
				case UNDO_BUFFER_SIZE:
				case UNINSTALL:
				case UNKNOWN:
				case UNTIL:
				case UPGRADE:
				case USER:
				case USE_FRM:
				case USER_RESOURCES:
				case VALIDATION:
				case VALUE:
				case VARIABLES:
				case VIEW:
				case VIRTUAL:
				case VISIBLE:
				case WAIT:
				case WARNINGS:
				case WITHOUT:
				case WORK:
				case WRAPPER:
				case X509:
				case XA:
				case XML:
				case YES:
				case EUR:
				case USA:
				case JIS:
				case ISO:
				case INTERNAL:
				case QUARTER:
				case MONTH:
				case DAY:
				case HOUR:
				case MINUTE:
				case WEEK:
				case SECOND:
				case MICROSECOND:
				case USER_STATISTICS:
				case CLIENT_STATISTICS:
				case INDEX_STATISTICS:
				case TABLE_STATISTICS:
				case FIREWALL_RULES:
				case ADMIN:
				case APPLICATION_PASSWORD_ADMIN:
				case AUDIT_ADMIN:
				case AUDIT_ABORT_EXEMPT:
				case AUTHENTICATION_POLICY_ADMIN:
				case BACKUP_ADMIN:
				case BINLOG_ADMIN:
				case BINLOG_ENCRYPTION_ADMIN:
				case CLONE_ADMIN:
				case CONNECTION_ADMIN:
				case ENCRYPTION_KEY_ADMIN:
				case EXECUTE:
				case FILE:
				case FIREWALL_ADMIN:
				case FIREWALL_EXEMPT:
				case FIREWALL_USER:
				case FLUSH_OPTIMIZER_COSTS:
				case FLUSH_STATUS:
				case FLUSH_TABLES:
				case FLUSH_USER_RESOURCES:
				case GROUP_REPLICATION_ADMIN:
				case INNODB_REDO_LOG_ARCHIVE:
				case INNODB_REDO_LOG_ENABLE:
				case INVOKE:
				case LAMBDA:
				case NDB_STORED_USER:
				case PASSWORDLESS_USER_ADMIN:
				case PERSIST_RO_VARIABLES_ADMIN:
				case PRIVILEGES:
				case PROCESS:
				case RELOAD:
				case REPLICATION_APPLIER:
				case REPLICATION_SLAVE_ADMIN:
				case RESOURCE_GROUP_ADMIN:
				case RESOURCE_GROUP_USER:
				case ROLE_ADMIN:
				case ROUTINE:
				case S3:
				case SESSION_VARIABLES_ADMIN:
				case SET_USER_ID:
				case SHOW_ROUTINE:
				case SHUTDOWN:
				case SUPER:
				case SYSTEM_VARIABLES_ADMIN:
				case TABLES:
				case TABLE_ENCRYPTION_ADMIN:
				case VERSION_TOKEN_ADMIN:
				case XA_RECOVER_ADMIN:
				case ARMSCII8:
				case ASCII:
				case BIG5:
				case CP1250:
				case CP1251:
				case CP1256:
				case CP1257:
				case CP850:
				case CP852:
				case CP866:
				case CP932:
				case DEC8:
				case EUCJPMS:
				case EUCKR:
				case GB18030:
				case GB2312:
				case GBK:
				case GEOSTD8:
				case GREEK:
				case HEBREW:
				case HP8:
				case KEYBCS2:
				case KOI8R:
				case KOI8U:
				case LATIN1:
				case LATIN2:
				case LATIN5:
				case LATIN7:
				case MACCE:
				case MACROMAN:
				case SJIS:
				case SWE7:
				case TIS620:
				case UCS2:
				case UJIS:
				case UTF16:
				case UTF16LE:
				case UTF32:
				case UTF8:
				case UTF8MB3:
				case UTF8MB4:
				case ARCHIVE:
				case BLACKHOLE:
				case CSV:
				case FEDERATED:
				case INNODB:
				case MEMORY:
				case MRG_MYISAM:
				case MYISAM:
				case NDB:
				case NDBCLUSTER:
				case PERFORMANCE_SCHEMA:
				case TOKUDB:
				case REPEATABLE:
				case COMMITTED:
				case UNCOMMITTED:
				case SERIALIZABLE:
				case GEOMETRYCOLLECTION:
				case GEOMETRY:
				case LINESTRING:
				case MULTILINESTRING:
				case MULTIPOINT:
				case MULTIPOLYGON:
				case POINT:
				case POLYGON:
				case ABS:
				case ACOS:
				case ADDDATE:
				case ADDTIME:
				case AES_DECRYPT:
				case AES_ENCRYPT:
				case AREA:
				case ASBINARY:
				case ASIN:
				case ASTEXT:
				case ASWKB:
				case ASWKT:
				case ASYMMETRIC_DECRYPT:
				case ASYMMETRIC_DERIVE:
				case ASYMMETRIC_ENCRYPT:
				case ASYMMETRIC_SIGN:
				case ASYMMETRIC_VERIFY:
				case ATAN:
				case ATAN2:
				case BENCHMARK:
				case BIN:
				case BIT_COUNT:
				case BIT_LENGTH:
				case BUFFER:
				case CATALOG_NAME:
				case CEIL:
				case CEILING:
				case CENTROID:
				case CHARACTER_LENGTH:
				case CHARSET:
				case CHAR_LENGTH:
				case COERCIBILITY:
				case COLLATION:
				case COMPRESS:
				case CONCAT:
				case CONCAT_WS:
				case CONNECTION_ID:
				case CONV:
				case CONVERT_TZ:
				case COS:
				case COT:
				case CRC32:
				case CREATE_ASYMMETRIC_PRIV_KEY:
				case CREATE_ASYMMETRIC_PUB_KEY:
				case CREATE_DH_PARAMETERS:
				case CREATE_DIGEST:
				case CROSSES:
				case DATEDIFF:
				case DATE_FORMAT:
				case DAYNAME:
				case DAYOFMONTH:
				case DAYOFWEEK:
				case DAYOFYEAR:
				case DECODE:
				case DEGREES:
				case DES_DECRYPT:
				case DES_ENCRYPT:
				case DIMENSION:
				case DISJOINT:
				case ELT:
				case ENCODE:
				case ENCRYPT:
				case ENDPOINT:
				case ENGINE_ATTRIBUTE:
				case ENVELOPE:
				case EQUALS:
				case EXP:
				case EXPORT_SET:
				case EXTERIORRING:
				case EXTRACTVALUE:
				case FIELD:
				case FIND_IN_SET:
				case FLOOR:
				case FORMAT:
				case FOUND_ROWS:
				case FROM_BASE64:
				case FROM_DAYS:
				case FROM_UNIXTIME:
				case GEOMCOLLFROMTEXT:
				case GEOMCOLLFROMWKB:
				case GEOMETRYCOLLECTIONFROMTEXT:
				case GEOMETRYCOLLECTIONFROMWKB:
				case GEOMETRYFROMTEXT:
				case GEOMETRYFROMWKB:
				case GEOMETRYN:
				case GEOMETRYTYPE:
				case GEOMFROMTEXT:
				case GEOMFROMWKB:
				case GET_FORMAT:
				case GET_LOCK:
				case GLENGTH:
				case GREATEST:
				case GTID_SUBSET:
				case GTID_SUBTRACT:
				case HEX:
				case IFNULL:
				case INET6_ATON:
				case INET6_NTOA:
				case INET_ATON:
				case INET_NTOA:
				case INSTR:
				case INTERIORRINGN:
				case INTERSECTS:
				case ISCLOSED:
				case ISEMPTY:
				case ISNULL:
				case ISSIMPLE:
				case IS_FREE_LOCK:
				case IS_IPV4:
				case IS_IPV4_COMPAT:
				case IS_IPV4_MAPPED:
				case IS_IPV6:
				case IS_USED_LOCK:
				case LAST_INSERT_ID:
				case LCASE:
				case LEAST:
				case LENGTH:
				case LINEFROMTEXT:
				case LINEFROMWKB:
				case LINESTRINGFROMTEXT:
				case LINESTRINGFROMWKB:
				case LN:
				case LOAD_FILE:
				case LOCATE:
				case LOG:
				case LOG10:
				case LOG2:
				case LOWER:
				case LPAD:
				case LTRIM:
				case MAKEDATE:
				case MAKETIME:
				case MAKE_SET:
				case MASTER_POS_WAIT:
				case MBRCONTAINS:
				case MBRDISJOINT:
				case MBREQUAL:
				case MBRINTERSECTS:
				case MBROVERLAPS:
				case MBRTOUCHES:
				case MBRWITHIN:
				case MD5:
				case MLINEFROMTEXT:
				case MLINEFROMWKB:
				case MONTHNAME:
				case MPOINTFROMTEXT:
				case MPOINTFROMWKB:
				case MPOLYFROMTEXT:
				case MPOLYFROMWKB:
				case MULTILINESTRINGFROMTEXT:
				case MULTILINESTRINGFROMWKB:
				case MULTIPOINTFROMTEXT:
				case MULTIPOINTFROMWKB:
				case MULTIPOLYGONFROMTEXT:
				case MULTIPOLYGONFROMWKB:
				case NAME_CONST:
				case NULLIF:
				case NUMGEOMETRIES:
				case NUMINTERIORRINGS:
				case NUMPOINTS:
				case OCT:
				case OCTET_LENGTH:
				case ORD:
				case OVERLAPS:
				case PERIOD_ADD:
				case PERIOD_DIFF:
				case PI:
				case POINTFROMTEXT:
				case POINTFROMWKB:
				case POINTN:
				case POLYFROMTEXT:
				case POLYFROMWKB:
				case POLYGONFROMTEXT:
				case POLYGONFROMWKB:
				case POW:
				case POWER:
				case QUOTE:
				case RADIANS:
				case RAND:
				case RANDOM:
				case RANDOM_BYTES:
				case RELEASE_LOCK:
				case REVERSE:
				case ROUND:
				case ROW_COUNT:
				case RPAD:
				case RTRIM:
				case SEC_TO_TIME:
				case SECONDARY_ENGINE_ATTRIBUTE:
				case SENSITIVE_VARIABLES_OBSERVER:
				case SESSION_USER:
				case SHA:
				case SHA1:
				case SHA2:
				case SCHEMA_NAME:
				case SIGN:
				case SIN:
				case SLEEP:
				case SOUNDEX:
				case SQL_THREAD_WAIT_AFTER_GTIDS:
				case SQRT:
				case SRID:
				case STARTPOINT:
				case STRCMP:
				case STR_TO_DATE:
				case ST_AREA:
				case ST_ASBINARY:
				case ST_ASTEXT:
				case ST_ASWKB:
				case ST_ASWKT:
				case ST_BUFFER:
				case ST_CENTROID:
				case ST_CONTAINS:
				case ST_CROSSES:
				case ST_DIFFERENCE:
				case ST_DIMENSION:
				case ST_DISJOINT:
				case ST_DISTANCE:
				case ST_ENDPOINT:
				case ST_ENVELOPE:
				case ST_EQUALS:
				case ST_EXTERIORRING:
				case ST_GEOMCOLLFROMTEXT:
				case ST_GEOMCOLLFROMTXT:
				case ST_GEOMCOLLFROMWKB:
				case ST_GEOMETRYCOLLECTIONFROMTEXT:
				case ST_GEOMETRYCOLLECTIONFROMWKB:
				case ST_GEOMETRYFROMTEXT:
				case ST_GEOMETRYFROMWKB:
				case ST_GEOMETRYN:
				case ST_GEOMETRYTYPE:
				case ST_GEOMFROMTEXT:
				case ST_GEOMFROMWKB:
				case ST_INTERIORRINGN:
				case ST_INTERSECTION:
				case ST_INTERSECTS:
				case ST_ISCLOSED:
				case ST_ISEMPTY:
				case ST_ISSIMPLE:
				case ST_LINEFROMTEXT:
				case ST_LINEFROMWKB:
				case ST_LINESTRINGFROMTEXT:
				case ST_LINESTRINGFROMWKB:
				case ST_NUMGEOMETRIES:
				case ST_NUMINTERIORRING:
				case ST_NUMINTERIORRINGS:
				case ST_NUMPOINTS:
				case ST_OVERLAPS:
				case ST_POINTFROMTEXT:
				case ST_POINTFROMWKB:
				case ST_POINTN:
				case ST_POLYFROMTEXT:
				case ST_POLYFROMWKB:
				case ST_POLYGONFROMTEXT:
				case ST_POLYGONFROMWKB:
				case ST_SRID:
				case ST_STARTPOINT:
				case ST_SYMDIFFERENCE:
				case ST_TOUCHES:
				case ST_UNION:
				case ST_WITHIN:
				case ST_X:
				case ST_Y:
				case SUBDATE:
				case SUBSTRING_INDEX:
				case SUBTIME:
				case SYSTEM_USER:
				case SYSTEM:
				case TAN:
				case TELEMETRY_LOG_ADMIN:
				case TIMEDIFF:
				case TIMESTAMPADD:
				case TIMESTAMPDIFF:
				case TIME_FORMAT:
				case TIME_TO_SEC:
				case TOUCHES:
				case TO_BASE64:
				case TO_DAYS:
				case TO_SECONDS:
				case TP_CONNECTION_ADMIN:
				case UCASE:
				case UNCOMPRESS:
				case UNCOMPRESSED_LENGTH:
				case UNHEX:
				case UNIX_TIMESTAMP:
				case UPDATEXML:
				case UPPER:
				case UUID:
				case UUID_SHORT:
				case VALIDATE_PASSWORD_STRENGTH:
				case VERSION:
				case VERSIONING:
				case WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS:
				case WEEKDAY:
				case WEEKOFYEAR:
				case WEIGHT_STRING:
				case WITHIN:
				case YEARWEEK:
				case Y_FUNCTION:
				case X_FUNCTION:
				case VIA:
				case LASTVAL:
				case NEXTVAL:
				case SETVAL:
				case PREVIOUS:
				case PERSISTENT:
				case BINLOG_MONITOR:
				case BINLOG_REPLAY:
				case FEDERATED_ADMIN:
				case READ_ONLY_ADMIN:
				case REPLICA:
				case REPLICATION_MASTER_ADMIN:
				case MONITOR:
				case READ_ONLY:
				case REPLAY:
				case MOD:
				case CHARSET_REVERSE_QOUTE_STRING:
				case STRING_LITERAL:
				case ID:
					{
					setState(6357);
					uidList();
					}
					break;
				case ALL:
					{
					setState(6358);
					match(ALL);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(6361);
				match(RR_BRACKET);
				}
			}

			setState(6364);
			match(IN);
			setState(6365);
			((CacheIndexStatementContext)_localctx).schema = uid();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FlushStatementContext extends ParserRuleContext {
		public Token flushFormat;
		public TerminalNode FLUSH() { return getToken(MySqlParser.FLUSH, 0); }
		public List flushOption() {
			return getRuleContexts(FlushOptionContext.class);
		}
		public FlushOptionContext flushOption(int i) {
			return getRuleContext(FlushOptionContext.class,i);
		}
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public TerminalNode NO_WRITE_TO_BINLOG() { return getToken(MySqlParser.NO_WRITE_TO_BINLOG, 0); }
		public TerminalNode LOCAL() { return getToken(MySqlParser.LOCAL, 0); }
		public TerminalNode USER_STATISTICS() { return getToken(MySqlParser.USER_STATISTICS, 0); }
		public TerminalNode CLIENT_STATISTICS() { return getToken(MySqlParser.CLIENT_STATISTICS, 0); }
		public TerminalNode INDEX_STATISTICS() { return getToken(MySqlParser.INDEX_STATISTICS, 0); }
		public TerminalNode TABLE_STATISTICS() { return getToken(MySqlParser.TABLE_STATISTICS, 0); }
		public TerminalNode FIREWALL_RULES() { return getToken(MySqlParser.FIREWALL_RULES, 0); }
		public FlushStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_flushStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterFlushStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitFlushStatement(this);
		}
	}

	public final FlushStatementContext flushStatement() throws RecognitionException {
		FlushStatementContext _localctx = new FlushStatementContext(_ctx, getState());
		enterRule(_localctx, 526, RULE_flushStatement);
		int _la;
		try {
			setState(6383);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,949,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(6367);
				match(FLUSH);
				setState(6369);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==NO_WRITE_TO_BINLOG || _la==LOCAL) {
					{
					setState(6368);
					((FlushStatementContext)_localctx).flushFormat = _input.LT(1);
					_la = _input.LA(1);
					if ( !(_la==NO_WRITE_TO_BINLOG || _la==LOCAL) ) {
						((FlushStatementContext)_localctx).flushFormat = (Token)_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
				}

				setState(6371);
				flushOption();
				setState(6376);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(6372);
					match(COMMA);
					setState(6373);
					flushOption();
					}
					}
					setState(6378);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(6379);
				match(FLUSH);
				setState(6380);
				_la = _input.LA(1);
				if ( !(((((_la - 700)) & ~0x3f) == 0 && ((1L << (_la - 700)) & ((1L << (USER_STATISTICS - 700)) | (1L << (CLIENT_STATISTICS - 700)) | (1L << (INDEX_STATISTICS - 700)) | (1L << (TABLE_STATISTICS - 700)))) != 0)) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(6381);
				match(FLUSH);
				setState(6382);
				match(FIREWALL_RULES);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class KillStatementContext extends ParserRuleContext {
		public Token connectionFormat;
		public TerminalNode KILL() { return getToken(MySqlParser.KILL, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode CONNECTION() { return getToken(MySqlParser.CONNECTION, 0); }
		public TerminalNode QUERY() { return getToken(MySqlParser.QUERY, 0); }
		public KillStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_killStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterKillStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitKillStatement(this);
		}
	}

	public final KillStatementContext killStatement() throws RecognitionException {
		KillStatementContext _localctx = new KillStatementContext(_ctx, getState());
		enterRule(_localctx, 528, RULE_killStatement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6385);
			match(KILL);
			setState(6387);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,950,_ctx) ) {
			case 1:
				{
				setState(6386);
				((KillStatementContext)_localctx).connectionFormat = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==CONNECTION || _la==QUERY) ) {
					((KillStatementContext)_localctx).connectionFormat = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			}
			setState(6389);
			expression(0);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class LoadIndexIntoCacheContext extends ParserRuleContext {
		public TerminalNode LOAD() { return getToken(MySqlParser.LOAD, 0); }
		public TerminalNode INDEX() { return getToken(MySqlParser.INDEX, 0); }
		public TerminalNode INTO() { return getToken(MySqlParser.INTO, 0); }
		public TerminalNode CACHE() { return getToken(MySqlParser.CACHE, 0); }
		public List loadedTableIndexes() {
			return getRuleContexts(LoadedTableIndexesContext.class);
		}
		public LoadedTableIndexesContext loadedTableIndexes(int i) {
			return getRuleContext(LoadedTableIndexesContext.class,i);
		}
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public LoadIndexIntoCacheContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_loadIndexIntoCache; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterLoadIndexIntoCache(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitLoadIndexIntoCache(this);
		}
	}

	public final LoadIndexIntoCacheContext loadIndexIntoCache() throws RecognitionException {
		LoadIndexIntoCacheContext _localctx = new LoadIndexIntoCacheContext(_ctx, getState());
		enterRule(_localctx, 530, RULE_loadIndexIntoCache);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6391);
			match(LOAD);
			setState(6392);
			match(INDEX);
			setState(6393);
			match(INTO);
			setState(6394);
			match(CACHE);
			setState(6395);
			loadedTableIndexes();
			setState(6400);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(6396);
				match(COMMA);
				setState(6397);
				loadedTableIndexes();
				}
				}
				setState(6402);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ResetStatementContext extends ParserRuleContext {
		public TerminalNode RESET() { return getToken(MySqlParser.RESET, 0); }
		public TerminalNode QUERY() { return getToken(MySqlParser.QUERY, 0); }
		public TerminalNode CACHE() { return getToken(MySqlParser.CACHE, 0); }
		public ResetStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_resetStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterResetStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitResetStatement(this);
		}
	}

	public final ResetStatementContext resetStatement() throws RecognitionException {
		ResetStatementContext _localctx = new ResetStatementContext(_ctx, getState());
		enterRule(_localctx, 532, RULE_resetStatement);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6403);
			match(RESET);
			setState(6404);
			match(QUERY);
			setState(6405);
			match(CACHE);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ShutdownStatementContext extends ParserRuleContext {
		public TerminalNode SHUTDOWN() { return getToken(MySqlParser.SHUTDOWN, 0); }
		public ShutdownStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_shutdownStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterShutdownStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitShutdownStatement(this);
		}
	}

	public final ShutdownStatementContext shutdownStatement() throws RecognitionException {
		ShutdownStatementContext _localctx = new ShutdownStatementContext(_ctx, getState());
		enterRule(_localctx, 534, RULE_shutdownStatement);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6407);
			match(SHUTDOWN);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TableIndexesContext extends ParserRuleContext {
		public Token indexFormat;
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public UidListContext uidList() {
			return getRuleContext(UidListContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TerminalNode INDEX() { return getToken(MySqlParser.INDEX, 0); }
		public TerminalNode KEY() { return getToken(MySqlParser.KEY, 0); }
		public TableIndexesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_tableIndexes; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableIndexes(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableIndexes(this);
		}
	}

	public final TableIndexesContext tableIndexes() throws RecognitionException {
		TableIndexesContext _localctx = new TableIndexesContext(_ctx, getState());
		enterRule(_localctx, 536, RULE_tableIndexes);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6409);
			tableName();
			setState(6417);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==INDEX || _la==KEY || _la==LR_BRACKET) {
				{
				setState(6411);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==INDEX || _la==KEY) {
					{
					setState(6410);
					((TableIndexesContext)_localctx).indexFormat = _input.LT(1);
					_la = _input.LA(1);
					if ( !(_la==INDEX || _la==KEY) ) {
						((TableIndexesContext)_localctx).indexFormat = (Token)_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
				}

				setState(6413);
				match(LR_BRACKET);
				setState(6414);
				uidList();
				setState(6415);
				match(RR_BRACKET);
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FlushOptionContext extends ParserRuleContext {
		public FlushOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_flushOption; }
	 
		public FlushOptionContext() { }
		public void copyFrom(FlushOptionContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class TableFlushOptionContext extends FlushOptionContext {
		public TerminalNode TABLE() { return getToken(MySqlParser.TABLE, 0); }
		public TerminalNode TABLES() { return getToken(MySqlParser.TABLES, 0); }
		public TablesContext tables() {
			return getRuleContext(TablesContext.class,0);
		}
		public FlushTableOptionContext flushTableOption() {
			return getRuleContext(FlushTableOptionContext.class,0);
		}
		public TableFlushOptionContext(FlushOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableFlushOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableFlushOption(this);
		}
	}
	public static class ChannelFlushOptionContext extends FlushOptionContext {
		public TerminalNode RELAY() { return getToken(MySqlParser.RELAY, 0); }
		public TerminalNode LOGS() { return getToken(MySqlParser.LOGS, 0); }
		public ChannelOptionContext channelOption() {
			return getRuleContext(ChannelOptionContext.class,0);
		}
		public ChannelFlushOptionContext(FlushOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterChannelFlushOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitChannelFlushOption(this);
		}
	}
	public static class SimpleFlushOptionContext extends FlushOptionContext {
		public TerminalNode DES_KEY_FILE() { return getToken(MySqlParser.DES_KEY_FILE, 0); }
		public TerminalNode HOSTS() { return getToken(MySqlParser.HOSTS, 0); }
		public TerminalNode LOGS() { return getToken(MySqlParser.LOGS, 0); }
		public TerminalNode OPTIMIZER_COSTS() { return getToken(MySqlParser.OPTIMIZER_COSTS, 0); }
		public TerminalNode PRIVILEGES() { return getToken(MySqlParser.PRIVILEGES, 0); }
		public TerminalNode QUERY() { return getToken(MySqlParser.QUERY, 0); }
		public TerminalNode CACHE() { return getToken(MySqlParser.CACHE, 0); }
		public TerminalNode STATUS() { return getToken(MySqlParser.STATUS, 0); }
		public TerminalNode USER_RESOURCES() { return getToken(MySqlParser.USER_RESOURCES, 0); }
		public TerminalNode TABLES() { return getToken(MySqlParser.TABLES, 0); }
		public TerminalNode WITH() { return getToken(MySqlParser.WITH, 0); }
		public TerminalNode READ() { return getToken(MySqlParser.READ, 0); }
		public TerminalNode LOCK() { return getToken(MySqlParser.LOCK, 0); }
		public TerminalNode BINARY() { return getToken(MySqlParser.BINARY, 0); }
		public TerminalNode ENGINE() { return getToken(MySqlParser.ENGINE, 0); }
		public TerminalNode ERROR() { return getToken(MySqlParser.ERROR, 0); }
		public TerminalNode GENERAL() { return getToken(MySqlParser.GENERAL, 0); }
		public TerminalNode RELAY() { return getToken(MySqlParser.RELAY, 0); }
		public TerminalNode SLOW() { return getToken(MySqlParser.SLOW, 0); }
		public SimpleFlushOptionContext(FlushOptionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSimpleFlushOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSimpleFlushOption(this);
		}
	}

	public final FlushOptionContext flushOption() throws RecognitionException {
		FlushOptionContext _localctx = new FlushOptionContext(_ctx, getState());
		enterRule(_localctx, 538, RULE_flushOption);
		int _la;
		try {
			setState(6451);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,960,_ctx) ) {
			case 1:
				_localctx = new SimpleFlushOptionContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(6437);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case DES_KEY_FILE:
					{
					setState(6419);
					match(DES_KEY_FILE);
					}
					break;
				case HOSTS:
					{
					setState(6420);
					match(HOSTS);
					}
					break;
				case BINARY:
				case ENGINE:
				case ERROR:
				case GENERAL:
				case LOGS:
				case RELAY:
				case SLOW:
					{
					setState(6422);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==BINARY || ((((_la - 412)) & ~0x3f) == 0 && ((1L << (_la - 412)) & ((1L << (ENGINE - 412)) | (1L << (ERROR - 412)) | (1L << (GENERAL - 412)))) != 0) || _la==RELAY || _la==SLOW) {
						{
						setState(6421);
						_la = _input.LA(1);
						if ( !(_la==BINARY || ((((_la - 412)) & ~0x3f) == 0 && ((1L << (_la - 412)) & ((1L << (ENGINE - 412)) | (1L << (ERROR - 412)) | (1L << (GENERAL - 412)))) != 0) || _la==RELAY || _la==SLOW) ) {
						_errHandler.recoverInline(this);
						}
						else {
							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
							_errHandler.reportMatch(this);
							consume();
						}
						}
					}

					setState(6424);
					match(LOGS);
					}
					break;
				case OPTIMIZER_COSTS:
					{
					setState(6425);
					match(OPTIMIZER_COSTS);
					}
					break;
				case PRIVILEGES:
					{
					setState(6426);
					match(PRIVILEGES);
					}
					break;
				case QUERY:
					{
					setState(6427);
					match(QUERY);
					setState(6428);
					match(CACHE);
					}
					break;
				case STATUS:
					{
					setState(6429);
					match(STATUS);
					}
					break;
				case USER_RESOURCES:
					{
					setState(6430);
					match(USER_RESOURCES);
					}
					break;
				case TABLES:
					{
					setState(6431);
					match(TABLES);
					setState(6435);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,955,_ctx) ) {
					case 1:
						{
						setState(6432);
						match(WITH);
						setState(6433);
						match(READ);
						setState(6434);
						match(LOCK);
						}
						break;
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case 2:
				_localctx = new ChannelFlushOptionContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(6439);
				match(RELAY);
				setState(6440);
				match(LOGS);
				setState(6442);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==FOR) {
					{
					setState(6441);
					channelOption();
					}
				}

				}
				break;
			case 3:
				_localctx = new TableFlushOptionContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(6444);
				_la = _input.LA(1);
				if ( !(_la==TABLE || _la==TABLES) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(6446);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,958,_ctx) ) {
				case 1:
					{
					setState(6445);
					tables();
					}
					break;
				}
				setState(6449);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,959,_ctx) ) {
				case 1:
					{
					setState(6448);
					flushTableOption();
					}
					break;
				}
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FlushTableOptionContext extends ParserRuleContext {
		public TerminalNode WITH() { return getToken(MySqlParser.WITH, 0); }
		public TerminalNode READ() { return getToken(MySqlParser.READ, 0); }
		public TerminalNode LOCK() { return getToken(MySqlParser.LOCK, 0); }
		public TerminalNode FOR() { return getToken(MySqlParser.FOR, 0); }
		public TerminalNode EXPORT() { return getToken(MySqlParser.EXPORT, 0); }
		public FlushTableOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_flushTableOption; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterFlushTableOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitFlushTableOption(this);
		}
	}

	public final FlushTableOptionContext flushTableOption() throws RecognitionException {
		FlushTableOptionContext _localctx = new FlushTableOptionContext(_ctx, getState());
		enterRule(_localctx, 540, RULE_flushTableOption);
		try {
			setState(6458);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case WITH:
				enterOuterAlt(_localctx, 1);
				{
				setState(6453);
				match(WITH);
				setState(6454);
				match(READ);
				setState(6455);
				match(LOCK);
				}
				break;
			case FOR:
				enterOuterAlt(_localctx, 2);
				{
				setState(6456);
				match(FOR);
				setState(6457);
				match(EXPORT);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class LoadedTableIndexesContext extends ParserRuleContext {
		public UidListContext partitionList;
		public Token indexFormat;
		public UidListContext indexList;
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public TerminalNode PARTITION() { return getToken(MySqlParser.PARTITION, 0); }
		public List LR_BRACKET() { return getTokens(MySqlParser.LR_BRACKET); }
		public TerminalNode LR_BRACKET(int i) {
			return getToken(MySqlParser.LR_BRACKET, i);
		}
		public List RR_BRACKET() { return getTokens(MySqlParser.RR_BRACKET); }
		public TerminalNode RR_BRACKET(int i) {
			return getToken(MySqlParser.RR_BRACKET, i);
		}
		public TerminalNode IGNORE() { return getToken(MySqlParser.IGNORE, 0); }
		public TerminalNode LEAVES() { return getToken(MySqlParser.LEAVES, 0); }
		public List uidList() {
			return getRuleContexts(UidListContext.class);
		}
		public UidListContext uidList(int i) {
			return getRuleContext(UidListContext.class,i);
		}
		public TerminalNode ALL() { return getToken(MySqlParser.ALL, 0); }
		public TerminalNode INDEX() { return getToken(MySqlParser.INDEX, 0); }
		public TerminalNode KEY() { return getToken(MySqlParser.KEY, 0); }
		public LoadedTableIndexesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_loadedTableIndexes; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterLoadedTableIndexes(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitLoadedTableIndexes(this);
		}
	}

	public final LoadedTableIndexesContext loadedTableIndexes() throws RecognitionException {
		LoadedTableIndexesContext _localctx = new LoadedTableIndexesContext(_ctx, getState());
		enterRule(_localctx, 542, RULE_loadedTableIndexes);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6460);
			tableName();
			setState(6468);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==PARTITION) {
				{
				setState(6461);
				match(PARTITION);
				setState(6462);
				match(LR_BRACKET);
				setState(6465);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case ARRAY:
				case ATTRIBUTE:
				case BUCKETS:
				case CONDITION:
				case CURRENT:
				case CURRENT_ROLE:
				case CURRENT_USER:
				case DATABASE:
				case DEFAULT:
				case DIAGNOSTICS:
				case EMPTY:
				case ENFORCED:
				case EXCEPT:
				case GROUP:
				case GROUP_REPLICATION_STREAM:
				case IF:
				case IGNORED:
				case INSERT:
				case LATERAL:
				case LEFT:
				case LOCKED:
				case MAXVALUE:
				case MINVALUE:
				case NUMBER:
				case OPTIONAL:
				case ORDER:
				case PRIMARY:
				case REPEAT:
				case REPLACE:
				case RIGHT:
				case SCHEMA:
				case SKIP_:
				case SKIP_QUERY_REWRITE:
				case STACKED:
				case STATEMENT:
				case DATE:
				case TIME:
				case TIMESTAMP:
				case DATETIME:
				case YEAR:
				case NATIONAL:
				case BINARY:
				case TEXT:
				case ENUM:
				case SERIAL:
				case JSON_ARRAY:
				case JSON_ARRAYAGG:
				case JSON_ARRAY_APPEND:
				case JSON_ARRAY_INSERT:
				case JSON_CONTAINS:
				case JSON_CONTAINS_PATH:
				case JSON_DEPTH:
				case JSON_EXTRACT:
				case JSON_INSERT:
				case JSON_KEYS:
				case JSON_LENGTH:
				case JSON_MERGE:
				case JSON_MERGE_PATCH:
				case JSON_MERGE_PRESERVE:
				case JSON_OBJECT:
				case JSON_OBJECTAGG:
				case JSON_OVERLAPS:
				case JSON_PRETTY:
				case JSON_QUOTE:
				case JSON_REMOVE:
				case JSON_REPLACE:
				case JSON_SCHEMA_VALID:
				case JSON_SCHEMA_VALIDATION_REPORT:
				case JSON_SEARCH:
				case JSON_SET:
				case JSON_STORAGE_FREE:
				case JSON_STORAGE_SIZE:
				case JSON_TABLE:
				case JSON_TYPE:
				case JSON_UNQUOTE:
				case JSON_VALID:
				case JSON_VALUE:
				case NESTED:
				case ORDINALITY:
				case PATH:
				case AVG:
				case BIT_AND:
				case BIT_OR:
				case BIT_XOR:
				case COUNT:
				case CUME_DIST:
				case DENSE_RANK:
				case FIRST_VALUE:
				case GROUP_CONCAT:
				case LAG:
				case LAST_VALUE:
				case LEAD:
				case MAX:
				case MIN:
				case NTILE:
				case NTH_VALUE:
				case PERCENT_RANK:
				case RANK:
				case ROW_NUMBER:
				case STD:
				case STDDEV:
				case STDDEV_POP:
				case STDDEV_SAMP:
				case SUM:
				case VAR_POP:
				case VAR_SAMP:
				case VARIANCE:
				case CURRENT_DATE:
				case CURRENT_TIME:
				case CURRENT_TIMESTAMP:
				case LOCALTIME:
				case CURDATE:
				case CURTIME:
				case DATE_ADD:
				case DATE_SUB:
				case LOCALTIMESTAMP:
				case NOW:
				case POSITION:
				case SUBSTR:
				case SUBSTRING:
				case SYSDATE:
				case TRIM:
				case UTC_DATE:
				case UTC_TIME:
				case UTC_TIMESTAMP:
				case ACCOUNT:
				case ACTION:
				case AFTER:
				case AGGREGATE:
				case ALGORITHM:
				case ANY:
				case AT:
				case AUTHORS:
				case AUTOCOMMIT:
				case AUTOEXTEND_SIZE:
				case AUTO_INCREMENT:
				case AVG_ROW_LENGTH:
				case BEGIN:
				case BINLOG:
				case BIT:
				case BLOCK:
				case BOOL:
				case BOOLEAN:
				case BTREE:
				case CACHE:
				case CASCADED:
				case CHAIN:
				case CHANGED:
				case CHANNEL:
				case CHECKSUM:
				case PAGE_CHECKSUM:
				case CIPHER:
				case CLASS_ORIGIN:
				case CLIENT:
				case CLOSE:
				case CLUSTERING:
				case COALESCE:
				case CODE:
				case COLUMNS:
				case COLUMN_FORMAT:
				case COLUMN_NAME:
				case COMMENT:
				case COMMIT:
				case COMPACT:
				case COMPLETION:
				case COMPRESSED:
				case COMPRESSION:
				case CONCURRENT:
				case CONNECT:
				case CONNECTION:
				case CONSISTENT:
				case CONSTRAINT_CATALOG:
				case CONSTRAINT_SCHEMA:
				case CONSTRAINT_NAME:
				case CONTAINS:
				case CONTEXT:
				case CONTRIBUTORS:
				case COPY:
				case CPU:
				case CYCLE:
				case CURSOR_NAME:
				case DATA:
				case DATAFILE:
				case DEALLOCATE:
				case DEFAULT_AUTH:
				case DEFINER:
				case DELAY_KEY_WRITE:
				case DES_KEY_FILE:
				case DIRECTORY:
				case DISABLE:
				case DISCARD:
				case DISK:
				case DO:
				case DUMPFILE:
				case DUPLICATE:
				case DYNAMIC:
				case ENABLE:
				case ENCRYPTED:
				case ENCRYPTION:
				case ENCRYPTION_KEY_ID:
				case END:
				case ENDS:
				case ENGINE:
				case ENGINES:
				case ERROR:
				case ERRORS:
				case ESCAPE:
				case EVEN:
				case EVENT:
				case EVENTS:
				case EVERY:
				case EXCHANGE:
				case EXCLUSIVE:
				case EXPIRE:
				case EXPORT:
				case EXTENDED:
				case EXTENT_SIZE:
				case FAILED_LOGIN_ATTEMPTS:
				case FAST:
				case FAULTS:
				case FIELDS:
				case FILE_BLOCK_SIZE:
				case FILTER:
				case FIRST:
				case FIXED:
				case FLUSH:
				case FOLLOWS:
				case FOUND:
				case FULL:
				case FUNCTION:
				case GENERAL:
				case GLOBAL:
				case GRANTS:
				case GROUP_REPLICATION:
				case HANDLER:
				case HASH:
				case HELP:
				case HISTORY:
				case HOST:
				case HOSTS:
				case IDENTIFIED:
				case IGNORE_SERVER_IDS:
				case IMPORT:
				case INCREMENT:
				case INDEXES:
				case INITIAL_SIZE:
				case INPLACE:
				case INSERT_METHOD:
				case INSTALL:
				case INSTANCE:
				case INSTANT:
				case INVISIBLE:
				case INVOKER:
				case IO:
				case IO_THREAD:
				case IPC:
				case ISOLATION:
				case ISSUER:
				case JSON:
				case KEY_BLOCK_SIZE:
				case LANGUAGE:
				case LAST:
				case LEAVES:
				case LESS:
				case LEVEL:
				case LIST:
				case LOCAL:
				case LOGFILE:
				case LOGS:
				case MASTER:
				case MASTER_AUTO_POSITION:
				case MASTER_CONNECT_RETRY:
				case MASTER_DELAY:
				case MASTER_HEARTBEAT_PERIOD:
				case MASTER_HOST:
				case MASTER_LOG_FILE:
				case MASTER_LOG_POS:
				case MASTER_PASSWORD:
				case MASTER_PORT:
				case MASTER_RETRY_COUNT:
				case MASTER_SSL:
				case MASTER_SSL_CA:
				case MASTER_SSL_CAPATH:
				case MASTER_SSL_CERT:
				case MASTER_SSL_CIPHER:
				case MASTER_SSL_CRL:
				case MASTER_SSL_CRLPATH:
				case MASTER_SSL_KEY:
				case MASTER_TLS_VERSION:
				case MASTER_USER:
				case MAX_CONNECTIONS_PER_HOUR:
				case MAX_QUERIES_PER_HOUR:
				case MAX_ROWS:
				case MAX_SIZE:
				case MAX_UPDATES_PER_HOUR:
				case MAX_USER_CONNECTIONS:
				case MEDIUM:
				case MEMBER:
				case MERGE:
				case MESSAGE_TEXT:
				case MID:
				case MIGRATE:
				case MIN_ROWS:
				case MODE:
				case MODIFY:
				case MUTEX:
				case MYSQL:
				case MYSQL_ERRNO:
				case NAME:
				case NAMES:
				case NCHAR:
				case NEVER:
				case NEXT:
				case NO:
				case NOCACHE:
				case NOCOPY:
				case NOCYCLE:
				case NOMAXVALUE:
				case NOMINVALUE:
				case NOWAIT:
				case NODEGROUP:
				case NONE:
				case ODBC:
				case OFFLINE:
				case OFFSET:
				case OF:
				case OJ:
				case OLD_PASSWORD:
				case ONE:
				case ONLINE:
				case ONLY:
				case OPEN:
				case OPTIMIZER_COSTS:
				case OPTIONS:
				case OWNER:
				case PACK_KEYS:
				case PAGE:
				case PARSER:
				case PARTIAL:
				case PARTITIONING:
				case PARTITIONS:
				case PASSWORD:
				case PASSWORD_LOCK_TIME:
				case PHASE:
				case PLUGIN:
				case PLUGIN_DIR:
				case PLUGINS:
				case PORT:
				case PRECEDES:
				case PREPARE:
				case PRESERVE:
				case PREV:
				case PROCESSLIST:
				case PROFILE:
				case PROFILES:
				case PROXY:
				case QUERY:
				case QUICK:
				case REBUILD:
				case RECOVER:
				case RECURSIVE:
				case REDO_BUFFER_SIZE:
				case REDUNDANT:
				case RELAY:
				case RELAY_LOG_FILE:
				case RELAY_LOG_POS:
				case RELAYLOG:
				case REMOVE:
				case REORGANIZE:
				case REPAIR:
				case REPLICATE_DO_DB:
				case REPLICATE_DO_TABLE:
				case REPLICATE_IGNORE_DB:
				case REPLICATE_IGNORE_TABLE:
				case REPLICATE_REWRITE_DB:
				case REPLICATE_WILD_DO_TABLE:
				case REPLICATE_WILD_IGNORE_TABLE:
				case REPLICATION:
				case RESET:
				case RESTART:
				case RESUME:
				case RETURNED_SQLSTATE:
				case RETURNING:
				case RETURNS:
				case REUSE:
				case ROLE:
				case ROLLBACK:
				case ROLLUP:
				case ROTATE:
				case ROW:
				case ROWS:
				case ROW_FORMAT:
				case RTREE:
				case SAVEPOINT:
				case SCHEDULE:
				case SECURITY:
				case SEQUENCE:
				case SERVER:
				case SESSION:
				case SHARE:
				case SHARED:
				case SIGNED:
				case SIMPLE:
				case SLAVE:
				case SLOW:
				case SNAPSHOT:
				case SOCKET:
				case SOME:
				case SONAME:
				case SOUNDS:
				case SOURCE:
				case SQL_AFTER_GTIDS:
				case SQL_AFTER_MTS_GAPS:
				case SQL_BEFORE_GTIDS:
				case SQL_BUFFER_RESULT:
				case SQL_CACHE:
				case SQL_NO_CACHE:
				case SQL_THREAD:
				case START:
				case STARTS:
				case STATS_AUTO_RECALC:
				case STATS_PERSISTENT:
				case STATS_SAMPLE_PAGES:
				case STATUS:
				case STOP:
				case STORAGE:
				case STRING:
				case SUBCLASS_ORIGIN:
				case SUBJECT:
				case SUBPARTITION:
				case SUBPARTITIONS:
				case SUSPEND:
				case SWAPS:
				case SWITCHES:
				case TABLE_NAME:
				case TABLESPACE:
				case TABLE_TYPE:
				case TEMPORARY:
				case TEMPTABLE:
				case THAN:
				case TRADITIONAL:
				case TRANSACTION:
				case TRANSACTIONAL:
				case TRIGGERS:
				case TRUNCATE:
				case UNBOUNDED:
				case UNDEFINED:
				case UNDOFILE:
				case UNDO_BUFFER_SIZE:
				case UNINSTALL:
				case UNKNOWN:
				case UNTIL:
				case UPGRADE:
				case USER:
				case USE_FRM:
				case USER_RESOURCES:
				case VALIDATION:
				case VALUE:
				case VARIABLES:
				case VIEW:
				case VIRTUAL:
				case VISIBLE:
				case WAIT:
				case WARNINGS:
				case WITHOUT:
				case WORK:
				case WRAPPER:
				case X509:
				case XA:
				case XML:
				case YES:
				case EUR:
				case USA:
				case JIS:
				case ISO:
				case INTERNAL:
				case QUARTER:
				case MONTH:
				case DAY:
				case HOUR:
				case MINUTE:
				case WEEK:
				case SECOND:
				case MICROSECOND:
				case USER_STATISTICS:
				case CLIENT_STATISTICS:
				case INDEX_STATISTICS:
				case TABLE_STATISTICS:
				case FIREWALL_RULES:
				case ADMIN:
				case APPLICATION_PASSWORD_ADMIN:
				case AUDIT_ADMIN:
				case AUDIT_ABORT_EXEMPT:
				case AUTHENTICATION_POLICY_ADMIN:
				case BACKUP_ADMIN:
				case BINLOG_ADMIN:
				case BINLOG_ENCRYPTION_ADMIN:
				case CLONE_ADMIN:
				case CONNECTION_ADMIN:
				case ENCRYPTION_KEY_ADMIN:
				case EXECUTE:
				case FILE:
				case FIREWALL_ADMIN:
				case FIREWALL_EXEMPT:
				case FIREWALL_USER:
				case FLUSH_OPTIMIZER_COSTS:
				case FLUSH_STATUS:
				case FLUSH_TABLES:
				case FLUSH_USER_RESOURCES:
				case GROUP_REPLICATION_ADMIN:
				case INNODB_REDO_LOG_ARCHIVE:
				case INNODB_REDO_LOG_ENABLE:
				case INVOKE:
				case LAMBDA:
				case NDB_STORED_USER:
				case PASSWORDLESS_USER_ADMIN:
				case PERSIST_RO_VARIABLES_ADMIN:
				case PRIVILEGES:
				case PROCESS:
				case RELOAD:
				case REPLICATION_APPLIER:
				case REPLICATION_SLAVE_ADMIN:
				case RESOURCE_GROUP_ADMIN:
				case RESOURCE_GROUP_USER:
				case ROLE_ADMIN:
				case ROUTINE:
				case S3:
				case SESSION_VARIABLES_ADMIN:
				case SET_USER_ID:
				case SHOW_ROUTINE:
				case SHUTDOWN:
				case SUPER:
				case SYSTEM_VARIABLES_ADMIN:
				case TABLES:
				case TABLE_ENCRYPTION_ADMIN:
				case VERSION_TOKEN_ADMIN:
				case XA_RECOVER_ADMIN:
				case ARMSCII8:
				case ASCII:
				case BIG5:
				case CP1250:
				case CP1251:
				case CP1256:
				case CP1257:
				case CP850:
				case CP852:
				case CP866:
				case CP932:
				case DEC8:
				case EUCJPMS:
				case EUCKR:
				case GB18030:
				case GB2312:
				case GBK:
				case GEOSTD8:
				case GREEK:
				case HEBREW:
				case HP8:
				case KEYBCS2:
				case KOI8R:
				case KOI8U:
				case LATIN1:
				case LATIN2:
				case LATIN5:
				case LATIN7:
				case MACCE:
				case MACROMAN:
				case SJIS:
				case SWE7:
				case TIS620:
				case UCS2:
				case UJIS:
				case UTF16:
				case UTF16LE:
				case UTF32:
				case UTF8:
				case UTF8MB3:
				case UTF8MB4:
				case ARCHIVE:
				case BLACKHOLE:
				case CSV:
				case FEDERATED:
				case INNODB:
				case MEMORY:
				case MRG_MYISAM:
				case MYISAM:
				case NDB:
				case NDBCLUSTER:
				case PERFORMANCE_SCHEMA:
				case TOKUDB:
				case REPEATABLE:
				case COMMITTED:
				case UNCOMMITTED:
				case SERIALIZABLE:
				case GEOMETRYCOLLECTION:
				case GEOMETRY:
				case LINESTRING:
				case MULTILINESTRING:
				case MULTIPOINT:
				case MULTIPOLYGON:
				case POINT:
				case POLYGON:
				case ABS:
				case ACOS:
				case ADDDATE:
				case ADDTIME:
				case AES_DECRYPT:
				case AES_ENCRYPT:
				case AREA:
				case ASBINARY:
				case ASIN:
				case ASTEXT:
				case ASWKB:
				case ASWKT:
				case ASYMMETRIC_DECRYPT:
				case ASYMMETRIC_DERIVE:
				case ASYMMETRIC_ENCRYPT:
				case ASYMMETRIC_SIGN:
				case ASYMMETRIC_VERIFY:
				case ATAN:
				case ATAN2:
				case BENCHMARK:
				case BIN:
				case BIT_COUNT:
				case BIT_LENGTH:
				case BUFFER:
				case CATALOG_NAME:
				case CEIL:
				case CEILING:
				case CENTROID:
				case CHARACTER_LENGTH:
				case CHARSET:
				case CHAR_LENGTH:
				case COERCIBILITY:
				case COLLATION:
				case COMPRESS:
				case CONCAT:
				case CONCAT_WS:
				case CONNECTION_ID:
				case CONV:
				case CONVERT_TZ:
				case COS:
				case COT:
				case CRC32:
				case CREATE_ASYMMETRIC_PRIV_KEY:
				case CREATE_ASYMMETRIC_PUB_KEY:
				case CREATE_DH_PARAMETERS:
				case CREATE_DIGEST:
				case CROSSES:
				case DATEDIFF:
				case DATE_FORMAT:
				case DAYNAME:
				case DAYOFMONTH:
				case DAYOFWEEK:
				case DAYOFYEAR:
				case DECODE:
				case DEGREES:
				case DES_DECRYPT:
				case DES_ENCRYPT:
				case DIMENSION:
				case DISJOINT:
				case ELT:
				case ENCODE:
				case ENCRYPT:
				case ENDPOINT:
				case ENGINE_ATTRIBUTE:
				case ENVELOPE:
				case EQUALS:
				case EXP:
				case EXPORT_SET:
				case EXTERIORRING:
				case EXTRACTVALUE:
				case FIELD:
				case FIND_IN_SET:
				case FLOOR:
				case FORMAT:
				case FOUND_ROWS:
				case FROM_BASE64:
				case FROM_DAYS:
				case FROM_UNIXTIME:
				case GEOMCOLLFROMTEXT:
				case GEOMCOLLFROMWKB:
				case GEOMETRYCOLLECTIONFROMTEXT:
				case GEOMETRYCOLLECTIONFROMWKB:
				case GEOMETRYFROMTEXT:
				case GEOMETRYFROMWKB:
				case GEOMETRYN:
				case GEOMETRYTYPE:
				case GEOMFROMTEXT:
				case GEOMFROMWKB:
				case GET_FORMAT:
				case GET_LOCK:
				case GLENGTH:
				case GREATEST:
				case GTID_SUBSET:
				case GTID_SUBTRACT:
				case HEX:
				case IFNULL:
				case INET6_ATON:
				case INET6_NTOA:
				case INET_ATON:
				case INET_NTOA:
				case INSTR:
				case INTERIORRINGN:
				case INTERSECTS:
				case ISCLOSED:
				case ISEMPTY:
				case ISNULL:
				case ISSIMPLE:
				case IS_FREE_LOCK:
				case IS_IPV4:
				case IS_IPV4_COMPAT:
				case IS_IPV4_MAPPED:
				case IS_IPV6:
				case IS_USED_LOCK:
				case LAST_INSERT_ID:
				case LCASE:
				case LEAST:
				case LENGTH:
				case LINEFROMTEXT:
				case LINEFROMWKB:
				case LINESTRINGFROMTEXT:
				case LINESTRINGFROMWKB:
				case LN:
				case LOAD_FILE:
				case LOCATE:
				case LOG:
				case LOG10:
				case LOG2:
				case LOWER:
				case LPAD:
				case LTRIM:
				case MAKEDATE:
				case MAKETIME:
				case MAKE_SET:
				case MASTER_POS_WAIT:
				case MBRCONTAINS:
				case MBRDISJOINT:
				case MBREQUAL:
				case MBRINTERSECTS:
				case MBROVERLAPS:
				case MBRTOUCHES:
				case MBRWITHIN:
				case MD5:
				case MLINEFROMTEXT:
				case MLINEFROMWKB:
				case MONTHNAME:
				case MPOINTFROMTEXT:
				case MPOINTFROMWKB:
				case MPOLYFROMTEXT:
				case MPOLYFROMWKB:
				case MULTILINESTRINGFROMTEXT:
				case MULTILINESTRINGFROMWKB:
				case MULTIPOINTFROMTEXT:
				case MULTIPOINTFROMWKB:
				case MULTIPOLYGONFROMTEXT:
				case MULTIPOLYGONFROMWKB:
				case NAME_CONST:
				case NULLIF:
				case NUMGEOMETRIES:
				case NUMINTERIORRINGS:
				case NUMPOINTS:
				case OCT:
				case OCTET_LENGTH:
				case ORD:
				case OVERLAPS:
				case PERIOD_ADD:
				case PERIOD_DIFF:
				case PI:
				case POINTFROMTEXT:
				case POINTFROMWKB:
				case POINTN:
				case POLYFROMTEXT:
				case POLYFROMWKB:
				case POLYGONFROMTEXT:
				case POLYGONFROMWKB:
				case POW:
				case POWER:
				case QUOTE:
				case RADIANS:
				case RAND:
				case RANDOM:
				case RANDOM_BYTES:
				case RELEASE_LOCK:
				case REVERSE:
				case ROUND:
				case ROW_COUNT:
				case RPAD:
				case RTRIM:
				case SEC_TO_TIME:
				case SECONDARY_ENGINE_ATTRIBUTE:
				case SENSITIVE_VARIABLES_OBSERVER:
				case SESSION_USER:
				case SHA:
				case SHA1:
				case SHA2:
				case SCHEMA_NAME:
				case SIGN:
				case SIN:
				case SLEEP:
				case SOUNDEX:
				case SQL_THREAD_WAIT_AFTER_GTIDS:
				case SQRT:
				case SRID:
				case STARTPOINT:
				case STRCMP:
				case STR_TO_DATE:
				case ST_AREA:
				case ST_ASBINARY:
				case ST_ASTEXT:
				case ST_ASWKB:
				case ST_ASWKT:
				case ST_BUFFER:
				case ST_CENTROID:
				case ST_CONTAINS:
				case ST_CROSSES:
				case ST_DIFFERENCE:
				case ST_DIMENSION:
				case ST_DISJOINT:
				case ST_DISTANCE:
				case ST_ENDPOINT:
				case ST_ENVELOPE:
				case ST_EQUALS:
				case ST_EXTERIORRING:
				case ST_GEOMCOLLFROMTEXT:
				case ST_GEOMCOLLFROMTXT:
				case ST_GEOMCOLLFROMWKB:
				case ST_GEOMETRYCOLLECTIONFROMTEXT:
				case ST_GEOMETRYCOLLECTIONFROMWKB:
				case ST_GEOMETRYFROMTEXT:
				case ST_GEOMETRYFROMWKB:
				case ST_GEOMETRYN:
				case ST_GEOMETRYTYPE:
				case ST_GEOMFROMTEXT:
				case ST_GEOMFROMWKB:
				case ST_INTERIORRINGN:
				case ST_INTERSECTION:
				case ST_INTERSECTS:
				case ST_ISCLOSED:
				case ST_ISEMPTY:
				case ST_ISSIMPLE:
				case ST_LINEFROMTEXT:
				case ST_LINEFROMWKB:
				case ST_LINESTRINGFROMTEXT:
				case ST_LINESTRINGFROMWKB:
				case ST_NUMGEOMETRIES:
				case ST_NUMINTERIORRING:
				case ST_NUMINTERIORRINGS:
				case ST_NUMPOINTS:
				case ST_OVERLAPS:
				case ST_POINTFROMTEXT:
				case ST_POINTFROMWKB:
				case ST_POINTN:
				case ST_POLYFROMTEXT:
				case ST_POLYFROMWKB:
				case ST_POLYGONFROMTEXT:
				case ST_POLYGONFROMWKB:
				case ST_SRID:
				case ST_STARTPOINT:
				case ST_SYMDIFFERENCE:
				case ST_TOUCHES:
				case ST_UNION:
				case ST_WITHIN:
				case ST_X:
				case ST_Y:
				case SUBDATE:
				case SUBSTRING_INDEX:
				case SUBTIME:
				case SYSTEM_USER:
				case SYSTEM:
				case TAN:
				case TELEMETRY_LOG_ADMIN:
				case TIMEDIFF:
				case TIMESTAMPADD:
				case TIMESTAMPDIFF:
				case TIME_FORMAT:
				case TIME_TO_SEC:
				case TOUCHES:
				case TO_BASE64:
				case TO_DAYS:
				case TO_SECONDS:
				case TP_CONNECTION_ADMIN:
				case UCASE:
				case UNCOMPRESS:
				case UNCOMPRESSED_LENGTH:
				case UNHEX:
				case UNIX_TIMESTAMP:
				case UPDATEXML:
				case UPPER:
				case UUID:
				case UUID_SHORT:
				case VALIDATE_PASSWORD_STRENGTH:
				case VERSION:
				case VERSIONING:
				case WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS:
				case WEEKDAY:
				case WEEKOFYEAR:
				case WEIGHT_STRING:
				case WITHIN:
				case YEARWEEK:
				case Y_FUNCTION:
				case X_FUNCTION:
				case VIA:
				case LASTVAL:
				case NEXTVAL:
				case SETVAL:
				case PREVIOUS:
				case PERSISTENT:
				case BINLOG_MONITOR:
				case BINLOG_REPLAY:
				case FEDERATED_ADMIN:
				case READ_ONLY_ADMIN:
				case REPLICA:
				case REPLICATION_MASTER_ADMIN:
				case MONITOR:
				case READ_ONLY:
				case REPLAY:
				case MOD:
				case CHARSET_REVERSE_QOUTE_STRING:
				case STRING_LITERAL:
				case ID:
					{
					setState(6463);
					((LoadedTableIndexesContext)_localctx).partitionList = uidList();
					}
					break;
				case ALL:
					{
					setState(6464);
					match(ALL);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(6467);
				match(RR_BRACKET);
				}
			}

			setState(6477);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,965,_ctx) ) {
			case 1:
				{
				setState(6471);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==INDEX || _la==KEY) {
					{
					setState(6470);
					((LoadedTableIndexesContext)_localctx).indexFormat = _input.LT(1);
					_la = _input.LA(1);
					if ( !(_la==INDEX || _la==KEY) ) {
						((LoadedTableIndexesContext)_localctx).indexFormat = (Token)_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
				}

				setState(6473);
				match(LR_BRACKET);
				setState(6474);
				((LoadedTableIndexesContext)_localctx).indexList = uidList();
				setState(6475);
				match(RR_BRACKET);
				}
				break;
			}
			setState(6481);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IGNORE) {
				{
				setState(6479);
				match(IGNORE);
				setState(6480);
				match(LEAVES);
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SimpleDescribeStatementContext extends ParserRuleContext {
		public Token command;
		public UidContext column;
		public Token pattern;
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public TerminalNode EXPLAIN() { return getToken(MySqlParser.EXPLAIN, 0); }
		public TerminalNode DESCRIBE() { return getToken(MySqlParser.DESCRIBE, 0); }
		public TerminalNode DESC() { return getToken(MySqlParser.DESC, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public SimpleDescribeStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_simpleDescribeStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSimpleDescribeStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSimpleDescribeStatement(this);
		}
	}

	public final SimpleDescribeStatementContext simpleDescribeStatement() throws RecognitionException {
		SimpleDescribeStatementContext _localctx = new SimpleDescribeStatementContext(_ctx, getState());
		enterRule(_localctx, 544, RULE_simpleDescribeStatement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6483);
			((SimpleDescribeStatementContext)_localctx).command = _input.LT(1);
			_la = _input.LA(1);
			if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << DESC) | (1L << DESCRIBE) | (1L << EXPLAIN))) != 0)) ) {
				((SimpleDescribeStatementContext)_localctx).command = (Token)_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(6484);
			tableName();
			setState(6487);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,967,_ctx) ) {
			case 1:
				{
				setState(6485);
				((SimpleDescribeStatementContext)_localctx).column = uid();
				}
				break;
			case 2:
				{
				setState(6486);
				((SimpleDescribeStatementContext)_localctx).pattern = match(STRING_LITERAL);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FullDescribeStatementContext extends ParserRuleContext {
		public Token command;
		public Token formatType;
		public Token formatValue;
		public DescribeObjectClauseContext describeObjectClause() {
			return getRuleContext(DescribeObjectClauseContext.class,0);
		}
		public TerminalNode EXPLAIN() { return getToken(MySqlParser.EXPLAIN, 0); }
		public TerminalNode DESCRIBE() { return getToken(MySqlParser.DESCRIBE, 0); }
		public TerminalNode DESC() { return getToken(MySqlParser.DESC, 0); }
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TerminalNode EXTENDED() { return getToken(MySqlParser.EXTENDED, 0); }
		public TerminalNode PARTITIONS() { return getToken(MySqlParser.PARTITIONS, 0); }
		public TerminalNode FORMAT() { return getToken(MySqlParser.FORMAT, 0); }
		public TerminalNode TRADITIONAL() { return getToken(MySqlParser.TRADITIONAL, 0); }
		public TerminalNode JSON() { return getToken(MySqlParser.JSON, 0); }
		public FullDescribeStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_fullDescribeStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterFullDescribeStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitFullDescribeStatement(this);
		}
	}

	public final FullDescribeStatementContext fullDescribeStatement() throws RecognitionException {
		FullDescribeStatementContext _localctx = new FullDescribeStatementContext(_ctx, getState());
		enterRule(_localctx, 546, RULE_fullDescribeStatement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6489);
			((FullDescribeStatementContext)_localctx).command = _input.LT(1);
			_la = _input.LA(1);
			if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << DESC) | (1L << DESCRIBE) | (1L << EXPLAIN))) != 0)) ) {
				((FullDescribeStatementContext)_localctx).command = (Token)_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(6493);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==EXTENDED || _la==PARTITIONS || _la==FORMAT) {
				{
				setState(6490);
				((FullDescribeStatementContext)_localctx).formatType = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==EXTENDED || _la==PARTITIONS || _la==FORMAT) ) {
					((FullDescribeStatementContext)_localctx).formatType = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(6491);
				match(EQUAL_SYMBOL);
				setState(6492);
				((FullDescribeStatementContext)_localctx).formatValue = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==JSON || _la==TRADITIONAL) ) {
					((FullDescribeStatementContext)_localctx).formatValue = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(6495);
			describeObjectClause();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class HelpStatementContext extends ParserRuleContext {
		public TerminalNode HELP() { return getToken(MySqlParser.HELP, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public HelpStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_helpStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterHelpStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitHelpStatement(this);
		}
	}

	public final HelpStatementContext helpStatement() throws RecognitionException {
		HelpStatementContext _localctx = new HelpStatementContext(_ctx, getState());
		enterRule(_localctx, 548, RULE_helpStatement);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6497);
			match(HELP);
			setState(6498);
			match(STRING_LITERAL);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class UseStatementContext extends ParserRuleContext {
		public TerminalNode USE() { return getToken(MySqlParser.USE, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public UseStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_useStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterUseStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitUseStatement(this);
		}
	}

	public final UseStatementContext useStatement() throws RecognitionException {
		UseStatementContext _localctx = new UseStatementContext(_ctx, getState());
		enterRule(_localctx, 550, RULE_useStatement);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6500);
			match(USE);
			setState(6501);
			uid();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SignalStatementContext extends ParserRuleContext {
		public TerminalNode SIGNAL() { return getToken(MySqlParser.SIGNAL, 0); }
		public TerminalNode ID() { return getToken(MySqlParser.ID, 0); }
		public TerminalNode REVERSE_QUOTE_ID() { return getToken(MySqlParser.REVERSE_QUOTE_ID, 0); }
		public TerminalNode SET() { return getToken(MySqlParser.SET, 0); }
		public List signalConditionInformation() {
			return getRuleContexts(SignalConditionInformationContext.class);
		}
		public SignalConditionInformationContext signalConditionInformation(int i) {
			return getRuleContext(SignalConditionInformationContext.class,i);
		}
		public TerminalNode SQLSTATE() { return getToken(MySqlParser.SQLSTATE, 0); }
		public StringLiteralContext stringLiteral() {
			return getRuleContext(StringLiteralContext.class,0);
		}
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public TerminalNode VALUE() { return getToken(MySqlParser.VALUE, 0); }
		public SignalStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_signalStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSignalStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSignalStatement(this);
		}
	}

	public final SignalStatementContext signalStatement() throws RecognitionException {
		SignalStatementContext _localctx = new SignalStatementContext(_ctx, getState());
		enterRule(_localctx, 552, RULE_signalStatement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6503);
			match(SIGNAL);
			setState(6511);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case SQLSTATE:
				{
				{
				setState(6504);
				match(SQLSTATE);
				setState(6506);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==VALUE) {
					{
					setState(6505);
					match(VALUE);
					}
				}

				setState(6508);
				stringLiteral();
				}
				}
				break;
			case ID:
				{
				setState(6509);
				match(ID);
				}
				break;
			case REVERSE_QUOTE_ID:
				{
				setState(6510);
				match(REVERSE_QUOTE_ID);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			setState(6522);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,972,_ctx) ) {
			case 1:
				{
				setState(6513);
				match(SET);
				setState(6514);
				signalConditionInformation();
				setState(6519);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(6515);
					match(COMMA);
					setState(6516);
					signalConditionInformation();
					}
					}
					setState(6521);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ResignalStatementContext extends ParserRuleContext {
		public TerminalNode RESIGNAL() { return getToken(MySqlParser.RESIGNAL, 0); }
		public TerminalNode ID() { return getToken(MySqlParser.ID, 0); }
		public TerminalNode REVERSE_QUOTE_ID() { return getToken(MySqlParser.REVERSE_QUOTE_ID, 0); }
		public TerminalNode SET() { return getToken(MySqlParser.SET, 0); }
		public List signalConditionInformation() {
			return getRuleContexts(SignalConditionInformationContext.class);
		}
		public SignalConditionInformationContext signalConditionInformation(int i) {
			return getRuleContext(SignalConditionInformationContext.class,i);
		}
		public TerminalNode SQLSTATE() { return getToken(MySqlParser.SQLSTATE, 0); }
		public StringLiteralContext stringLiteral() {
			return getRuleContext(StringLiteralContext.class,0);
		}
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public TerminalNode VALUE() { return getToken(MySqlParser.VALUE, 0); }
		public ResignalStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_resignalStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterResignalStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitResignalStatement(this);
		}
	}

	public final ResignalStatementContext resignalStatement() throws RecognitionException {
		ResignalStatementContext _localctx = new ResignalStatementContext(_ctx, getState());
		enterRule(_localctx, 554, RULE_resignalStatement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6524);
			match(RESIGNAL);
			setState(6532);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case SQLSTATE:
				{
				{
				setState(6525);
				match(SQLSTATE);
				setState(6527);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==VALUE) {
					{
					setState(6526);
					match(VALUE);
					}
				}

				setState(6529);
				stringLiteral();
				}
				}
				break;
			case ID:
				{
				setState(6530);
				match(ID);
				}
				break;
			case REVERSE_QUOTE_ID:
				{
				setState(6531);
				match(REVERSE_QUOTE_ID);
				}
				break;
			case EOF:
			case ALTER:
			case ANALYZE:
			case CALL:
			case CHANGE:
			case CHECK:
			case CREATE:
			case DELETE:
			case DESC:
			case DESCRIBE:
			case DROP:
			case EXPLAIN:
			case GET:
			case GRANT:
			case INSERT:
			case KILL:
			case LOAD:
			case LOCK:
			case OPTIMIZE:
			case PURGE:
			case RELEASE:
			case RENAME:
			case REPLACE:
			case RESIGNAL:
			case REVOKE:
			case SELECT:
			case SET:
			case SHOW:
			case SIGNAL:
			case TABLE:
			case UNLOCK:
			case UPDATE:
			case USE:
			case VALUES:
			case WITH:
			case BEGIN:
			case BINLOG:
			case CACHE:
			case CHECKSUM:
			case COMMIT:
			case DEALLOCATE:
			case DO:
			case FLUSH:
			case HANDLER:
			case HELP:
			case INSTALL:
			case PREPARE:
			case REPAIR:
			case RESET:
			case ROLLBACK:
			case SAVEPOINT:
			case START:
			case STOP:
			case TRUNCATE:
			case UNINSTALL:
			case XA:
			case EXECUTE:
			case SHUTDOWN:
			case MINUS:
			case LR_BRACKET:
			case SEMI:
				break;
			default:
				break;
			}
			setState(6543);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,976,_ctx) ) {
			case 1:
				{
				setState(6534);
				match(SET);
				setState(6535);
				signalConditionInformation();
				setState(6540);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(6536);
					match(COMMA);
					setState(6537);
					signalConditionInformation();
					}
					}
					setState(6542);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SignalConditionInformationContext extends ParserRuleContext {
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TerminalNode CLASS_ORIGIN() { return getToken(MySqlParser.CLASS_ORIGIN, 0); }
		public TerminalNode SUBCLASS_ORIGIN() { return getToken(MySqlParser.SUBCLASS_ORIGIN, 0); }
		public TerminalNode MESSAGE_TEXT() { return getToken(MySqlParser.MESSAGE_TEXT, 0); }
		public TerminalNode MYSQL_ERRNO() { return getToken(MySqlParser.MYSQL_ERRNO, 0); }
		public TerminalNode CONSTRAINT_CATALOG() { return getToken(MySqlParser.CONSTRAINT_CATALOG, 0); }
		public TerminalNode CONSTRAINT_SCHEMA() { return getToken(MySqlParser.CONSTRAINT_SCHEMA, 0); }
		public TerminalNode CONSTRAINT_NAME() { return getToken(MySqlParser.CONSTRAINT_NAME, 0); }
		public TerminalNode CATALOG_NAME() { return getToken(MySqlParser.CATALOG_NAME, 0); }
		public TerminalNode SCHEMA_NAME() { return getToken(MySqlParser.SCHEMA_NAME, 0); }
		public TerminalNode TABLE_NAME() { return getToken(MySqlParser.TABLE_NAME, 0); }
		public TerminalNode COLUMN_NAME() { return getToken(MySqlParser.COLUMN_NAME, 0); }
		public TerminalNode CURSOR_NAME() { return getToken(MySqlParser.CURSOR_NAME, 0); }
		public StringLiteralContext stringLiteral() {
			return getRuleContext(StringLiteralContext.class,0);
		}
		public TerminalNode DECIMAL_LITERAL() { return getToken(MySqlParser.DECIMAL_LITERAL, 0); }
		public MysqlVariableContext mysqlVariable() {
			return getRuleContext(MysqlVariableContext.class,0);
		}
		public SimpleIdContext simpleId() {
			return getRuleContext(SimpleIdContext.class,0);
		}
		public SignalConditionInformationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_signalConditionInformation; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSignalConditionInformation(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSignalConditionInformation(this);
		}
	}

	public final SignalConditionInformationContext signalConditionInformation() throws RecognitionException {
		SignalConditionInformationContext _localctx = new SignalConditionInformationContext(_ctx, getState());
		enterRule(_localctx, 556, RULE_signalConditionInformation);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6545);
			_la = _input.LA(1);
			if ( !(((((_la - 362)) & ~0x3f) == 0 && ((1L << (_la - 362)) & ((1L << (CLASS_ORIGIN - 362)) | (1L << (COLUMN_NAME - 362)) | (1L << (CONSTRAINT_CATALOG - 362)) | (1L << (CONSTRAINT_SCHEMA - 362)) | (1L << (CONSTRAINT_NAME - 362)) | (1L << (CURSOR_NAME - 362)))) != 0) || _la==MESSAGE_TEXT || _la==MYSQL_ERRNO || _la==SUBCLASS_ORIGIN || _la==TABLE_NAME || _la==CATALOG_NAME || _la==SCHEMA_NAME) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(6546);
			match(EQUAL_SYMBOL);
			setState(6551);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case START_NATIONAL_STRING_LITERAL:
			case STRING_LITERAL:
			case STRING_CHARSET_NAME:
				{
				setState(6547);
				stringLiteral();
				}
				break;
			case DECIMAL_LITERAL:
				{
				setState(6548);
				match(DECIMAL_LITERAL);
				}
				break;
			case LOCAL_ID:
			case GLOBAL_ID:
				{
				setState(6549);
				mysqlVariable();
				}
				break;
			case ARRAY:
			case ATTRIBUTE:
			case BUCKETS:
			case CONDITION:
			case CURRENT:
			case CURRENT_ROLE:
			case CURRENT_USER:
			case DATABASE:
			case DEFAULT:
			case DIAGNOSTICS:
			case EMPTY:
			case ENFORCED:
			case EXCEPT:
			case GROUP:
			case GROUP_REPLICATION_STREAM:
			case IF:
			case IGNORED:
			case INSERT:
			case LATERAL:
			case LEFT:
			case LOCKED:
			case MAXVALUE:
			case MINVALUE:
			case NUMBER:
			case OPTIONAL:
			case ORDER:
			case PRIMARY:
			case REPEAT:
			case REPLACE:
			case RIGHT:
			case SCHEMA:
			case SKIP_:
			case SKIP_QUERY_REWRITE:
			case STACKED:
			case STATEMENT:
			case DATE:
			case TIME:
			case TIMESTAMP:
			case DATETIME:
			case YEAR:
			case NATIONAL:
			case BINARY:
			case TEXT:
			case ENUM:
			case SERIAL:
			case JSON_ARRAY:
			case JSON_ARRAYAGG:
			case JSON_ARRAY_APPEND:
			case JSON_ARRAY_INSERT:
			case JSON_CONTAINS:
			case JSON_CONTAINS_PATH:
			case JSON_DEPTH:
			case JSON_EXTRACT:
			case JSON_INSERT:
			case JSON_KEYS:
			case JSON_LENGTH:
			case JSON_MERGE:
			case JSON_MERGE_PATCH:
			case JSON_MERGE_PRESERVE:
			case JSON_OBJECT:
			case JSON_OBJECTAGG:
			case JSON_OVERLAPS:
			case JSON_PRETTY:
			case JSON_QUOTE:
			case JSON_REMOVE:
			case JSON_REPLACE:
			case JSON_SCHEMA_VALID:
			case JSON_SCHEMA_VALIDATION_REPORT:
			case JSON_SEARCH:
			case JSON_SET:
			case JSON_STORAGE_FREE:
			case JSON_STORAGE_SIZE:
			case JSON_TABLE:
			case JSON_TYPE:
			case JSON_UNQUOTE:
			case JSON_VALID:
			case JSON_VALUE:
			case NESTED:
			case ORDINALITY:
			case PATH:
			case AVG:
			case BIT_AND:
			case BIT_OR:
			case BIT_XOR:
			case COUNT:
			case CUME_DIST:
			case DENSE_RANK:
			case FIRST_VALUE:
			case GROUP_CONCAT:
			case LAG:
			case LAST_VALUE:
			case LEAD:
			case MAX:
			case MIN:
			case NTILE:
			case NTH_VALUE:
			case PERCENT_RANK:
			case RANK:
			case ROW_NUMBER:
			case STD:
			case STDDEV:
			case STDDEV_POP:
			case STDDEV_SAMP:
			case SUM:
			case VAR_POP:
			case VAR_SAMP:
			case VARIANCE:
			case CURRENT_DATE:
			case CURRENT_TIME:
			case CURRENT_TIMESTAMP:
			case LOCALTIME:
			case CURDATE:
			case CURTIME:
			case DATE_ADD:
			case DATE_SUB:
			case LOCALTIMESTAMP:
			case NOW:
			case POSITION:
			case SUBSTR:
			case SUBSTRING:
			case SYSDATE:
			case TRIM:
			case UTC_DATE:
			case UTC_TIME:
			case UTC_TIMESTAMP:
			case ACCOUNT:
			case ACTION:
			case AFTER:
			case AGGREGATE:
			case ALGORITHM:
			case ANY:
			case AT:
			case AUTHORS:
			case AUTOCOMMIT:
			case AUTOEXTEND_SIZE:
			case AUTO_INCREMENT:
			case AVG_ROW_LENGTH:
			case BEGIN:
			case BINLOG:
			case BIT:
			case BLOCK:
			case BOOL:
			case BOOLEAN:
			case BTREE:
			case CACHE:
			case CASCADED:
			case CHAIN:
			case CHANGED:
			case CHANNEL:
			case CHECKSUM:
			case PAGE_CHECKSUM:
			case CIPHER:
			case CLASS_ORIGIN:
			case CLIENT:
			case CLOSE:
			case CLUSTERING:
			case COALESCE:
			case CODE:
			case COLUMNS:
			case COLUMN_FORMAT:
			case COLUMN_NAME:
			case COMMENT:
			case COMMIT:
			case COMPACT:
			case COMPLETION:
			case COMPRESSED:
			case COMPRESSION:
			case CONCURRENT:
			case CONNECT:
			case CONNECTION:
			case CONSISTENT:
			case CONSTRAINT_CATALOG:
			case CONSTRAINT_SCHEMA:
			case CONSTRAINT_NAME:
			case CONTAINS:
			case CONTEXT:
			case CONTRIBUTORS:
			case COPY:
			case CPU:
			case CYCLE:
			case CURSOR_NAME:
			case DATA:
			case DATAFILE:
			case DEALLOCATE:
			case DEFAULT_AUTH:
			case DEFINER:
			case DELAY_KEY_WRITE:
			case DES_KEY_FILE:
			case DIRECTORY:
			case DISABLE:
			case DISCARD:
			case DISK:
			case DO:
			case DUMPFILE:
			case DUPLICATE:
			case DYNAMIC:
			case ENABLE:
			case ENCRYPTED:
			case ENCRYPTION:
			case ENCRYPTION_KEY_ID:
			case END:
			case ENDS:
			case ENGINE:
			case ENGINES:
			case ERROR:
			case ERRORS:
			case ESCAPE:
			case EVEN:
			case EVENT:
			case EVENTS:
			case EVERY:
			case EXCHANGE:
			case EXCLUSIVE:
			case EXPIRE:
			case EXPORT:
			case EXTENDED:
			case EXTENT_SIZE:
			case FAILED_LOGIN_ATTEMPTS:
			case FAST:
			case FAULTS:
			case FIELDS:
			case FILE_BLOCK_SIZE:
			case FILTER:
			case FIRST:
			case FIXED:
			case FLUSH:
			case FOLLOWS:
			case FOUND:
			case FULL:
			case FUNCTION:
			case GENERAL:
			case GLOBAL:
			case GRANTS:
			case GROUP_REPLICATION:
			case HANDLER:
			case HASH:
			case HELP:
			case HISTORY:
			case HOST:
			case HOSTS:
			case IDENTIFIED:
			case IGNORE_SERVER_IDS:
			case IMPORT:
			case INCREMENT:
			case INDEXES:
			case INITIAL_SIZE:
			case INPLACE:
			case INSERT_METHOD:
			case INSTALL:
			case INSTANCE:
			case INSTANT:
			case INVISIBLE:
			case INVOKER:
			case IO:
			case IO_THREAD:
			case IPC:
			case ISOLATION:
			case ISSUER:
			case JSON:
			case KEY_BLOCK_SIZE:
			case LANGUAGE:
			case LAST:
			case LEAVES:
			case LESS:
			case LEVEL:
			case LIST:
			case LOCAL:
			case LOGFILE:
			case LOGS:
			case MASTER:
			case MASTER_AUTO_POSITION:
			case MASTER_CONNECT_RETRY:
			case MASTER_DELAY:
			case MASTER_HEARTBEAT_PERIOD:
			case MASTER_HOST:
			case MASTER_LOG_FILE:
			case MASTER_LOG_POS:
			case MASTER_PASSWORD:
			case MASTER_PORT:
			case MASTER_RETRY_COUNT:
			case MASTER_SSL:
			case MASTER_SSL_CA:
			case MASTER_SSL_CAPATH:
			case MASTER_SSL_CERT:
			case MASTER_SSL_CIPHER:
			case MASTER_SSL_CRL:
			case MASTER_SSL_CRLPATH:
			case MASTER_SSL_KEY:
			case MASTER_TLS_VERSION:
			case MASTER_USER:
			case MAX_CONNECTIONS_PER_HOUR:
			case MAX_QUERIES_PER_HOUR:
			case MAX_ROWS:
			case MAX_SIZE:
			case MAX_UPDATES_PER_HOUR:
			case MAX_USER_CONNECTIONS:
			case MEDIUM:
			case MEMBER:
			case MERGE:
			case MESSAGE_TEXT:
			case MID:
			case MIGRATE:
			case MIN_ROWS:
			case MODE:
			case MODIFY:
			case MUTEX:
			case MYSQL:
			case MYSQL_ERRNO:
			case NAME:
			case NAMES:
			case NCHAR:
			case NEVER:
			case NEXT:
			case NO:
			case NOCACHE:
			case NOCOPY:
			case NOCYCLE:
			case NOMAXVALUE:
			case NOMINVALUE:
			case NOWAIT:
			case NODEGROUP:
			case NONE:
			case ODBC:
			case OFFLINE:
			case OFFSET:
			case OF:
			case OJ:
			case OLD_PASSWORD:
			case ONE:
			case ONLINE:
			case ONLY:
			case OPEN:
			case OPTIMIZER_COSTS:
			case OPTIONS:
			case OWNER:
			case PACK_KEYS:
			case PAGE:
			case PARSER:
			case PARTIAL:
			case PARTITIONING:
			case PARTITIONS:
			case PASSWORD:
			case PASSWORD_LOCK_TIME:
			case PHASE:
			case PLUGIN:
			case PLUGIN_DIR:
			case PLUGINS:
			case PORT:
			case PRECEDES:
			case PREPARE:
			case PRESERVE:
			case PREV:
			case PROCESSLIST:
			case PROFILE:
			case PROFILES:
			case PROXY:
			case QUERY:
			case QUICK:
			case REBUILD:
			case RECOVER:
			case RECURSIVE:
			case REDO_BUFFER_SIZE:
			case REDUNDANT:
			case RELAY:
			case RELAY_LOG_FILE:
			case RELAY_LOG_POS:
			case RELAYLOG:
			case REMOVE:
			case REORGANIZE:
			case REPAIR:
			case REPLICATE_DO_DB:
			case REPLICATE_DO_TABLE:
			case REPLICATE_IGNORE_DB:
			case REPLICATE_IGNORE_TABLE:
			case REPLICATE_REWRITE_DB:
			case REPLICATE_WILD_DO_TABLE:
			case REPLICATE_WILD_IGNORE_TABLE:
			case REPLICATION:
			case RESET:
			case RESTART:
			case RESUME:
			case RETURNED_SQLSTATE:
			case RETURNING:
			case RETURNS:
			case REUSE:
			case ROLE:
			case ROLLBACK:
			case ROLLUP:
			case ROTATE:
			case ROW:
			case ROWS:
			case ROW_FORMAT:
			case RTREE:
			case SAVEPOINT:
			case SCHEDULE:
			case SECURITY:
			case SEQUENCE:
			case SERVER:
			case SESSION:
			case SHARE:
			case SHARED:
			case SIGNED:
			case SIMPLE:
			case SLAVE:
			case SLOW:
			case SNAPSHOT:
			case SOCKET:
			case SOME:
			case SONAME:
			case SOUNDS:
			case SOURCE:
			case SQL_AFTER_GTIDS:
			case SQL_AFTER_MTS_GAPS:
			case SQL_BEFORE_GTIDS:
			case SQL_BUFFER_RESULT:
			case SQL_CACHE:
			case SQL_NO_CACHE:
			case SQL_THREAD:
			case START:
			case STARTS:
			case STATS_AUTO_RECALC:
			case STATS_PERSISTENT:
			case STATS_SAMPLE_PAGES:
			case STATUS:
			case STOP:
			case STORAGE:
			case STRING:
			case SUBCLASS_ORIGIN:
			case SUBJECT:
			case SUBPARTITION:
			case SUBPARTITIONS:
			case SUSPEND:
			case SWAPS:
			case SWITCHES:
			case TABLE_NAME:
			case TABLESPACE:
			case TABLE_TYPE:
			case TEMPORARY:
			case TEMPTABLE:
			case THAN:
			case TRADITIONAL:
			case TRANSACTION:
			case TRANSACTIONAL:
			case TRIGGERS:
			case TRUNCATE:
			case UNBOUNDED:
			case UNDEFINED:
			case UNDOFILE:
			case UNDO_BUFFER_SIZE:
			case UNINSTALL:
			case UNKNOWN:
			case UNTIL:
			case UPGRADE:
			case USER:
			case USE_FRM:
			case USER_RESOURCES:
			case VALIDATION:
			case VALUE:
			case VARIABLES:
			case VIEW:
			case VIRTUAL:
			case VISIBLE:
			case WAIT:
			case WARNINGS:
			case WITHOUT:
			case WORK:
			case WRAPPER:
			case X509:
			case XA:
			case XML:
			case YES:
			case EUR:
			case USA:
			case JIS:
			case ISO:
			case INTERNAL:
			case QUARTER:
			case MONTH:
			case DAY:
			case HOUR:
			case MINUTE:
			case WEEK:
			case SECOND:
			case MICROSECOND:
			case USER_STATISTICS:
			case CLIENT_STATISTICS:
			case INDEX_STATISTICS:
			case TABLE_STATISTICS:
			case FIREWALL_RULES:
			case ADMIN:
			case APPLICATION_PASSWORD_ADMIN:
			case AUDIT_ADMIN:
			case AUDIT_ABORT_EXEMPT:
			case AUTHENTICATION_POLICY_ADMIN:
			case BACKUP_ADMIN:
			case BINLOG_ADMIN:
			case BINLOG_ENCRYPTION_ADMIN:
			case CLONE_ADMIN:
			case CONNECTION_ADMIN:
			case ENCRYPTION_KEY_ADMIN:
			case EXECUTE:
			case FILE:
			case FIREWALL_ADMIN:
			case FIREWALL_EXEMPT:
			case FIREWALL_USER:
			case FLUSH_OPTIMIZER_COSTS:
			case FLUSH_STATUS:
			case FLUSH_TABLES:
			case FLUSH_USER_RESOURCES:
			case GROUP_REPLICATION_ADMIN:
			case INNODB_REDO_LOG_ARCHIVE:
			case INNODB_REDO_LOG_ENABLE:
			case INVOKE:
			case LAMBDA:
			case NDB_STORED_USER:
			case PASSWORDLESS_USER_ADMIN:
			case PERSIST_RO_VARIABLES_ADMIN:
			case PRIVILEGES:
			case PROCESS:
			case RELOAD:
			case REPLICATION_APPLIER:
			case REPLICATION_SLAVE_ADMIN:
			case RESOURCE_GROUP_ADMIN:
			case RESOURCE_GROUP_USER:
			case ROLE_ADMIN:
			case ROUTINE:
			case S3:
			case SESSION_VARIABLES_ADMIN:
			case SET_USER_ID:
			case SHOW_ROUTINE:
			case SHUTDOWN:
			case SUPER:
			case SYSTEM_VARIABLES_ADMIN:
			case TABLES:
			case TABLE_ENCRYPTION_ADMIN:
			case VERSION_TOKEN_ADMIN:
			case XA_RECOVER_ADMIN:
			case ARMSCII8:
			case ASCII:
			case BIG5:
			case CP1250:
			case CP1251:
			case CP1256:
			case CP1257:
			case CP850:
			case CP852:
			case CP866:
			case CP932:
			case DEC8:
			case EUCJPMS:
			case EUCKR:
			case GB18030:
			case GB2312:
			case GBK:
			case GEOSTD8:
			case GREEK:
			case HEBREW:
			case HP8:
			case KEYBCS2:
			case KOI8R:
			case KOI8U:
			case LATIN1:
			case LATIN2:
			case LATIN5:
			case LATIN7:
			case MACCE:
			case MACROMAN:
			case SJIS:
			case SWE7:
			case TIS620:
			case UCS2:
			case UJIS:
			case UTF16:
			case UTF16LE:
			case UTF32:
			case UTF8:
			case UTF8MB3:
			case UTF8MB4:
			case ARCHIVE:
			case BLACKHOLE:
			case CSV:
			case FEDERATED:
			case INNODB:
			case MEMORY:
			case MRG_MYISAM:
			case MYISAM:
			case NDB:
			case NDBCLUSTER:
			case PERFORMANCE_SCHEMA:
			case TOKUDB:
			case REPEATABLE:
			case COMMITTED:
			case UNCOMMITTED:
			case SERIALIZABLE:
			case GEOMETRYCOLLECTION:
			case GEOMETRY:
			case LINESTRING:
			case MULTILINESTRING:
			case MULTIPOINT:
			case MULTIPOLYGON:
			case POINT:
			case POLYGON:
			case ABS:
			case ACOS:
			case ADDDATE:
			case ADDTIME:
			case AES_DECRYPT:
			case AES_ENCRYPT:
			case AREA:
			case ASBINARY:
			case ASIN:
			case ASTEXT:
			case ASWKB:
			case ASWKT:
			case ASYMMETRIC_DECRYPT:
			case ASYMMETRIC_DERIVE:
			case ASYMMETRIC_ENCRYPT:
			case ASYMMETRIC_SIGN:
			case ASYMMETRIC_VERIFY:
			case ATAN:
			case ATAN2:
			case BENCHMARK:
			case BIN:
			case BIT_COUNT:
			case BIT_LENGTH:
			case BUFFER:
			case CATALOG_NAME:
			case CEIL:
			case CEILING:
			case CENTROID:
			case CHARACTER_LENGTH:
			case CHARSET:
			case CHAR_LENGTH:
			case COERCIBILITY:
			case COLLATION:
			case COMPRESS:
			case CONCAT:
			case CONCAT_WS:
			case CONNECTION_ID:
			case CONV:
			case CONVERT_TZ:
			case COS:
			case COT:
			case CRC32:
			case CREATE_ASYMMETRIC_PRIV_KEY:
			case CREATE_ASYMMETRIC_PUB_KEY:
			case CREATE_DH_PARAMETERS:
			case CREATE_DIGEST:
			case CROSSES:
			case DATEDIFF:
			case DATE_FORMAT:
			case DAYNAME:
			case DAYOFMONTH:
			case DAYOFWEEK:
			case DAYOFYEAR:
			case DECODE:
			case DEGREES:
			case DES_DECRYPT:
			case DES_ENCRYPT:
			case DIMENSION:
			case DISJOINT:
			case ELT:
			case ENCODE:
			case ENCRYPT:
			case ENDPOINT:
			case ENGINE_ATTRIBUTE:
			case ENVELOPE:
			case EQUALS:
			case EXP:
			case EXPORT_SET:
			case EXTERIORRING:
			case EXTRACTVALUE:
			case FIELD:
			case FIND_IN_SET:
			case FLOOR:
			case FORMAT:
			case FOUND_ROWS:
			case FROM_BASE64:
			case FROM_DAYS:
			case FROM_UNIXTIME:
			case GEOMCOLLFROMTEXT:
			case GEOMCOLLFROMWKB:
			case GEOMETRYCOLLECTIONFROMTEXT:
			case GEOMETRYCOLLECTIONFROMWKB:
			case GEOMETRYFROMTEXT:
			case GEOMETRYFROMWKB:
			case GEOMETRYN:
			case GEOMETRYTYPE:
			case GEOMFROMTEXT:
			case GEOMFROMWKB:
			case GET_FORMAT:
			case GET_LOCK:
			case GLENGTH:
			case GREATEST:
			case GTID_SUBSET:
			case GTID_SUBTRACT:
			case HEX:
			case IFNULL:
			case INET6_ATON:
			case INET6_NTOA:
			case INET_ATON:
			case INET_NTOA:
			case INSTR:
			case INTERIORRINGN:
			case INTERSECTS:
			case ISCLOSED:
			case ISEMPTY:
			case ISNULL:
			case ISSIMPLE:
			case IS_FREE_LOCK:
			case IS_IPV4:
			case IS_IPV4_COMPAT:
			case IS_IPV4_MAPPED:
			case IS_IPV6:
			case IS_USED_LOCK:
			case LAST_INSERT_ID:
			case LCASE:
			case LEAST:
			case LENGTH:
			case LINEFROMTEXT:
			case LINEFROMWKB:
			case LINESTRINGFROMTEXT:
			case LINESTRINGFROMWKB:
			case LN:
			case LOAD_FILE:
			case LOCATE:
			case LOG:
			case LOG10:
			case LOG2:
			case LOWER:
			case LPAD:
			case LTRIM:
			case MAKEDATE:
			case MAKETIME:
			case MAKE_SET:
			case MASTER_POS_WAIT:
			case MBRCONTAINS:
			case MBRDISJOINT:
			case MBREQUAL:
			case MBRINTERSECTS:
			case MBROVERLAPS:
			case MBRTOUCHES:
			case MBRWITHIN:
			case MD5:
			case MLINEFROMTEXT:
			case MLINEFROMWKB:
			case MONTHNAME:
			case MPOINTFROMTEXT:
			case MPOINTFROMWKB:
			case MPOLYFROMTEXT:
			case MPOLYFROMWKB:
			case MULTILINESTRINGFROMTEXT:
			case MULTILINESTRINGFROMWKB:
			case MULTIPOINTFROMTEXT:
			case MULTIPOINTFROMWKB:
			case MULTIPOLYGONFROMTEXT:
			case MULTIPOLYGONFROMWKB:
			case NAME_CONST:
			case NULLIF:
			case NUMGEOMETRIES:
			case NUMINTERIORRINGS:
			case NUMPOINTS:
			case OCT:
			case OCTET_LENGTH:
			case ORD:
			case OVERLAPS:
			case PERIOD_ADD:
			case PERIOD_DIFF:
			case PI:
			case POINTFROMTEXT:
			case POINTFROMWKB:
			case POINTN:
			case POLYFROMTEXT:
			case POLYFROMWKB:
			case POLYGONFROMTEXT:
			case POLYGONFROMWKB:
			case POW:
			case POWER:
			case QUOTE:
			case RADIANS:
			case RAND:
			case RANDOM:
			case RANDOM_BYTES:
			case RELEASE_LOCK:
			case REVERSE:
			case ROUND:
			case ROW_COUNT:
			case RPAD:
			case RTRIM:
			case SEC_TO_TIME:
			case SECONDARY_ENGINE_ATTRIBUTE:
			case SENSITIVE_VARIABLES_OBSERVER:
			case SESSION_USER:
			case SHA:
			case SHA1:
			case SHA2:
			case SCHEMA_NAME:
			case SIGN:
			case SIN:
			case SLEEP:
			case SOUNDEX:
			case SQL_THREAD_WAIT_AFTER_GTIDS:
			case SQRT:
			case SRID:
			case STARTPOINT:
			case STRCMP:
			case STR_TO_DATE:
			case ST_AREA:
			case ST_ASBINARY:
			case ST_ASTEXT:
			case ST_ASWKB:
			case ST_ASWKT:
			case ST_BUFFER:
			case ST_CENTROID:
			case ST_CONTAINS:
			case ST_CROSSES:
			case ST_DIFFERENCE:
			case ST_DIMENSION:
			case ST_DISJOINT:
			case ST_DISTANCE:
			case ST_ENDPOINT:
			case ST_ENVELOPE:
			case ST_EQUALS:
			case ST_EXTERIORRING:
			case ST_GEOMCOLLFROMTEXT:
			case ST_GEOMCOLLFROMTXT:
			case ST_GEOMCOLLFROMWKB:
			case ST_GEOMETRYCOLLECTIONFROMTEXT:
			case ST_GEOMETRYCOLLECTIONFROMWKB:
			case ST_GEOMETRYFROMTEXT:
			case ST_GEOMETRYFROMWKB:
			case ST_GEOMETRYN:
			case ST_GEOMETRYTYPE:
			case ST_GEOMFROMTEXT:
			case ST_GEOMFROMWKB:
			case ST_INTERIORRINGN:
			case ST_INTERSECTION:
			case ST_INTERSECTS:
			case ST_ISCLOSED:
			case ST_ISEMPTY:
			case ST_ISSIMPLE:
			case ST_LINEFROMTEXT:
			case ST_LINEFROMWKB:
			case ST_LINESTRINGFROMTEXT:
			case ST_LINESTRINGFROMWKB:
			case ST_NUMGEOMETRIES:
			case ST_NUMINTERIORRING:
			case ST_NUMINTERIORRINGS:
			case ST_NUMPOINTS:
			case ST_OVERLAPS:
			case ST_POINTFROMTEXT:
			case ST_POINTFROMWKB:
			case ST_POINTN:
			case ST_POLYFROMTEXT:
			case ST_POLYFROMWKB:
			case ST_POLYGONFROMTEXT:
			case ST_POLYGONFROMWKB:
			case ST_SRID:
			case ST_STARTPOINT:
			case ST_SYMDIFFERENCE:
			case ST_TOUCHES:
			case ST_UNION:
			case ST_WITHIN:
			case ST_X:
			case ST_Y:
			case SUBDATE:
			case SUBSTRING_INDEX:
			case SUBTIME:
			case SYSTEM_USER:
			case SYSTEM:
			case TAN:
			case TELEMETRY_LOG_ADMIN:
			case TIMEDIFF:
			case TIMESTAMPADD:
			case TIMESTAMPDIFF:
			case TIME_FORMAT:
			case TIME_TO_SEC:
			case TOUCHES:
			case TO_BASE64:
			case TO_DAYS:
			case TO_SECONDS:
			case TP_CONNECTION_ADMIN:
			case UCASE:
			case UNCOMPRESS:
			case UNCOMPRESSED_LENGTH:
			case UNHEX:
			case UNIX_TIMESTAMP:
			case UPDATEXML:
			case UPPER:
			case UUID:
			case UUID_SHORT:
			case VALIDATE_PASSWORD_STRENGTH:
			case VERSION:
			case VERSIONING:
			case WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS:
			case WEEKDAY:
			case WEEKOFYEAR:
			case WEIGHT_STRING:
			case WITHIN:
			case YEARWEEK:
			case Y_FUNCTION:
			case X_FUNCTION:
			case VIA:
			case LASTVAL:
			case NEXTVAL:
			case SETVAL:
			case PREVIOUS:
			case PERSISTENT:
			case BINLOG_MONITOR:
			case BINLOG_REPLAY:
			case FEDERATED_ADMIN:
			case READ_ONLY_ADMIN:
			case REPLICA:
			case REPLICATION_MASTER_ADMIN:
			case MONITOR:
			case READ_ONLY:
			case REPLAY:
			case MOD:
			case ID:
				{
				setState(6550);
				simpleId();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DiagnosticsStatementContext extends ParserRuleContext {
		public TerminalNode GET() { return getToken(MySqlParser.GET, 0); }
		public TerminalNode DIAGNOSTICS() { return getToken(MySqlParser.DIAGNOSTICS, 0); }
		public TerminalNode CURRENT() { return getToken(MySqlParser.CURRENT, 0); }
		public TerminalNode STACKED() { return getToken(MySqlParser.STACKED, 0); }
		public List variableClause() {
			return getRuleContexts(VariableClauseContext.class);
		}
		public VariableClauseContext variableClause(int i) {
			return getRuleContext(VariableClauseContext.class,i);
		}
		public List EQUAL_SYMBOL() { return getTokens(MySqlParser.EQUAL_SYMBOL); }
		public TerminalNode EQUAL_SYMBOL(int i) {
			return getToken(MySqlParser.EQUAL_SYMBOL, i);
		}
		public TerminalNode CONDITION() { return getToken(MySqlParser.CONDITION, 0); }
		public List diagnosticsConditionInformationName() {
			return getRuleContexts(DiagnosticsConditionInformationNameContext.class);
		}
		public DiagnosticsConditionInformationNameContext diagnosticsConditionInformationName(int i) {
			return getRuleContext(DiagnosticsConditionInformationNameContext.class,i);
		}
		public List NUMBER() { return getTokens(MySqlParser.NUMBER); }
		public TerminalNode NUMBER(int i) {
			return getToken(MySqlParser.NUMBER, i);
		}
		public List ROW_COUNT() { return getTokens(MySqlParser.ROW_COUNT); }
		public TerminalNode ROW_COUNT(int i) {
			return getToken(MySqlParser.ROW_COUNT, i);
		}
		public DecimalLiteralContext decimalLiteral() {
			return getRuleContext(DecimalLiteralContext.class,0);
		}
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public DiagnosticsStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_diagnosticsStatement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDiagnosticsStatement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDiagnosticsStatement(this);
		}
	}

	public final DiagnosticsStatementContext diagnosticsStatement() throws RecognitionException {
		DiagnosticsStatementContext _localctx = new DiagnosticsStatementContext(_ctx, getState());
		enterRule(_localctx, 558, RULE_diagnosticsStatement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6553);
			match(GET);
			setState(6555);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CURRENT || _la==STACKED) {
				{
				setState(6554);
				_la = _input.LA(1);
				if ( !(_la==CURRENT || _la==STACKED) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(6557);
			match(DIAGNOSTICS);
			setState(6589);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,982,_ctx) ) {
			case 1:
				{
				{
				setState(6558);
				variableClause();
				setState(6559);
				match(EQUAL_SYMBOL);
				setState(6560);
				_la = _input.LA(1);
				if ( !(_la==NUMBER || _la==ROW_COUNT) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(6568);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(6561);
					match(COMMA);
					setState(6562);
					variableClause();
					setState(6563);
					match(EQUAL_SYMBOL);
					setState(6564);
					_la = _input.LA(1);
					if ( !(_la==NUMBER || _la==ROW_COUNT) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
					}
					setState(6570);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				}
				break;
			case 2:
				{
				{
				setState(6571);
				match(CONDITION);
				setState(6574);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case ZERO_DECIMAL:
				case ONE_DECIMAL:
				case TWO_DECIMAL:
				case DECIMAL_LITERAL:
				case REAL_LITERAL:
					{
					setState(6572);
					decimalLiteral();
					}
					break;
				case ARRAY:
				case ATTRIBUTE:
				case BUCKETS:
				case CONDITION:
				case CURRENT:
				case CURRENT_ROLE:
				case CURRENT_USER:
				case DATABASE:
				case DEFAULT:
				case DIAGNOSTICS:
				case EMPTY:
				case ENFORCED:
				case EXCEPT:
				case GROUP:
				case GROUP_REPLICATION_STREAM:
				case IF:
				case IGNORED:
				case INSERT:
				case LATERAL:
				case LEFT:
				case LOCKED:
				case MAXVALUE:
				case MINVALUE:
				case NUMBER:
				case OPTIONAL:
				case ORDER:
				case PRIMARY:
				case REPEAT:
				case REPLACE:
				case RIGHT:
				case SCHEMA:
				case SKIP_:
				case SKIP_QUERY_REWRITE:
				case STACKED:
				case STATEMENT:
				case DATE:
				case TIME:
				case TIMESTAMP:
				case DATETIME:
				case YEAR:
				case NATIONAL:
				case BINARY:
				case TEXT:
				case ENUM:
				case SERIAL:
				case JSON_ARRAY:
				case JSON_ARRAYAGG:
				case JSON_ARRAY_APPEND:
				case JSON_ARRAY_INSERT:
				case JSON_CONTAINS:
				case JSON_CONTAINS_PATH:
				case JSON_DEPTH:
				case JSON_EXTRACT:
				case JSON_INSERT:
				case JSON_KEYS:
				case JSON_LENGTH:
				case JSON_MERGE:
				case JSON_MERGE_PATCH:
				case JSON_MERGE_PRESERVE:
				case JSON_OBJECT:
				case JSON_OBJECTAGG:
				case JSON_OVERLAPS:
				case JSON_PRETTY:
				case JSON_QUOTE:
				case JSON_REMOVE:
				case JSON_REPLACE:
				case JSON_SCHEMA_VALID:
				case JSON_SCHEMA_VALIDATION_REPORT:
				case JSON_SEARCH:
				case JSON_SET:
				case JSON_STORAGE_FREE:
				case JSON_STORAGE_SIZE:
				case JSON_TABLE:
				case JSON_TYPE:
				case JSON_UNQUOTE:
				case JSON_VALID:
				case JSON_VALUE:
				case NESTED:
				case ORDINALITY:
				case PATH:
				case AVG:
				case BIT_AND:
				case BIT_OR:
				case BIT_XOR:
				case COUNT:
				case CUME_DIST:
				case DENSE_RANK:
				case FIRST_VALUE:
				case GROUP_CONCAT:
				case LAG:
				case LAST_VALUE:
				case LEAD:
				case MAX:
				case MIN:
				case NTILE:
				case NTH_VALUE:
				case PERCENT_RANK:
				case RANK:
				case ROW_NUMBER:
				case STD:
				case STDDEV:
				case STDDEV_POP:
				case STDDEV_SAMP:
				case SUM:
				case VAR_POP:
				case VAR_SAMP:
				case VARIANCE:
				case CURRENT_DATE:
				case CURRENT_TIME:
				case CURRENT_TIMESTAMP:
				case LOCALTIME:
				case CURDATE:
				case CURTIME:
				case DATE_ADD:
				case DATE_SUB:
				case LOCALTIMESTAMP:
				case NOW:
				case POSITION:
				case SUBSTR:
				case SUBSTRING:
				case SYSDATE:
				case TRIM:
				case UTC_DATE:
				case UTC_TIME:
				case UTC_TIMESTAMP:
				case ACCOUNT:
				case ACTION:
				case AFTER:
				case AGGREGATE:
				case ALGORITHM:
				case ANY:
				case AT:
				case AUTHORS:
				case AUTOCOMMIT:
				case AUTOEXTEND_SIZE:
				case AUTO_INCREMENT:
				case AVG_ROW_LENGTH:
				case BEGIN:
				case BINLOG:
				case BIT:
				case BLOCK:
				case BOOL:
				case BOOLEAN:
				case BTREE:
				case CACHE:
				case CASCADED:
				case CHAIN:
				case CHANGED:
				case CHANNEL:
				case CHECKSUM:
				case PAGE_CHECKSUM:
				case CIPHER:
				case CLASS_ORIGIN:
				case CLIENT:
				case CLOSE:
				case CLUSTERING:
				case COALESCE:
				case CODE:
				case COLUMNS:
				case COLUMN_FORMAT:
				case COLUMN_NAME:
				case COMMENT:
				case COMMIT:
				case COMPACT:
				case COMPLETION:
				case COMPRESSED:
				case COMPRESSION:
				case CONCURRENT:
				case CONNECT:
				case CONNECTION:
				case CONSISTENT:
				case CONSTRAINT_CATALOG:
				case CONSTRAINT_SCHEMA:
				case CONSTRAINT_NAME:
				case CONTAINS:
				case CONTEXT:
				case CONTRIBUTORS:
				case COPY:
				case CPU:
				case CYCLE:
				case CURSOR_NAME:
				case DATA:
				case DATAFILE:
				case DEALLOCATE:
				case DEFAULT_AUTH:
				case DEFINER:
				case DELAY_KEY_WRITE:
				case DES_KEY_FILE:
				case DIRECTORY:
				case DISABLE:
				case DISCARD:
				case DISK:
				case DO:
				case DUMPFILE:
				case DUPLICATE:
				case DYNAMIC:
				case ENABLE:
				case ENCRYPTED:
				case ENCRYPTION:
				case ENCRYPTION_KEY_ID:
				case END:
				case ENDS:
				case ENGINE:
				case ENGINES:
				case ERROR:
				case ERRORS:
				case ESCAPE:
				case EVEN:
				case EVENT:
				case EVENTS:
				case EVERY:
				case EXCHANGE:
				case EXCLUSIVE:
				case EXPIRE:
				case EXPORT:
				case EXTENDED:
				case EXTENT_SIZE:
				case FAILED_LOGIN_ATTEMPTS:
				case FAST:
				case FAULTS:
				case FIELDS:
				case FILE_BLOCK_SIZE:
				case FILTER:
				case FIRST:
				case FIXED:
				case FLUSH:
				case FOLLOWS:
				case FOUND:
				case FULL:
				case FUNCTION:
				case GENERAL:
				case GLOBAL:
				case GRANTS:
				case GROUP_REPLICATION:
				case HANDLER:
				case HASH:
				case HELP:
				case HISTORY:
				case HOST:
				case HOSTS:
				case IDENTIFIED:
				case IGNORE_SERVER_IDS:
				case IMPORT:
				case INCREMENT:
				case INDEXES:
				case INITIAL_SIZE:
				case INPLACE:
				case INSERT_METHOD:
				case INSTALL:
				case INSTANCE:
				case INSTANT:
				case INVISIBLE:
				case INVOKER:
				case IO:
				case IO_THREAD:
				case IPC:
				case ISOLATION:
				case ISSUER:
				case JSON:
				case KEY_BLOCK_SIZE:
				case LANGUAGE:
				case LAST:
				case LEAVES:
				case LESS:
				case LEVEL:
				case LIST:
				case LOCAL:
				case LOGFILE:
				case LOGS:
				case MASTER:
				case MASTER_AUTO_POSITION:
				case MASTER_CONNECT_RETRY:
				case MASTER_DELAY:
				case MASTER_HEARTBEAT_PERIOD:
				case MASTER_HOST:
				case MASTER_LOG_FILE:
				case MASTER_LOG_POS:
				case MASTER_PASSWORD:
				case MASTER_PORT:
				case MASTER_RETRY_COUNT:
				case MASTER_SSL:
				case MASTER_SSL_CA:
				case MASTER_SSL_CAPATH:
				case MASTER_SSL_CERT:
				case MASTER_SSL_CIPHER:
				case MASTER_SSL_CRL:
				case MASTER_SSL_CRLPATH:
				case MASTER_SSL_KEY:
				case MASTER_TLS_VERSION:
				case MASTER_USER:
				case MAX_CONNECTIONS_PER_HOUR:
				case MAX_QUERIES_PER_HOUR:
				case MAX_ROWS:
				case MAX_SIZE:
				case MAX_UPDATES_PER_HOUR:
				case MAX_USER_CONNECTIONS:
				case MEDIUM:
				case MEMBER:
				case MERGE:
				case MESSAGE_TEXT:
				case MID:
				case MIGRATE:
				case MIN_ROWS:
				case MODE:
				case MODIFY:
				case MUTEX:
				case MYSQL:
				case MYSQL_ERRNO:
				case NAME:
				case NAMES:
				case NCHAR:
				case NEVER:
				case NEXT:
				case NO:
				case NOCACHE:
				case NOCOPY:
				case NOCYCLE:
				case NOMAXVALUE:
				case NOMINVALUE:
				case NOWAIT:
				case NODEGROUP:
				case NONE:
				case ODBC:
				case OFFLINE:
				case OFFSET:
				case OF:
				case OJ:
				case OLD_PASSWORD:
				case ONE:
				case ONLINE:
				case ONLY:
				case OPEN:
				case OPTIMIZER_COSTS:
				case OPTIONS:
				case OWNER:
				case PACK_KEYS:
				case PAGE:
				case PARSER:
				case PARTIAL:
				case PARTITIONING:
				case PARTITIONS:
				case PASSWORD:
				case PASSWORD_LOCK_TIME:
				case PHASE:
				case PLUGIN:
				case PLUGIN_DIR:
				case PLUGINS:
				case PORT:
				case PRECEDES:
				case PREPARE:
				case PRESERVE:
				case PREV:
				case PROCESSLIST:
				case PROFILE:
				case PROFILES:
				case PROXY:
				case QUERY:
				case QUICK:
				case REBUILD:
				case RECOVER:
				case RECURSIVE:
				case REDO_BUFFER_SIZE:
				case REDUNDANT:
				case RELAY:
				case RELAY_LOG_FILE:
				case RELAY_LOG_POS:
				case RELAYLOG:
				case REMOVE:
				case REORGANIZE:
				case REPAIR:
				case REPLICATE_DO_DB:
				case REPLICATE_DO_TABLE:
				case REPLICATE_IGNORE_DB:
				case REPLICATE_IGNORE_TABLE:
				case REPLICATE_REWRITE_DB:
				case REPLICATE_WILD_DO_TABLE:
				case REPLICATE_WILD_IGNORE_TABLE:
				case REPLICATION:
				case RESET:
				case RESTART:
				case RESUME:
				case RETURNED_SQLSTATE:
				case RETURNING:
				case RETURNS:
				case REUSE:
				case ROLE:
				case ROLLBACK:
				case ROLLUP:
				case ROTATE:
				case ROW:
				case ROWS:
				case ROW_FORMAT:
				case RTREE:
				case SAVEPOINT:
				case SCHEDULE:
				case SECURITY:
				case SEQUENCE:
				case SERVER:
				case SESSION:
				case SHARE:
				case SHARED:
				case SIGNED:
				case SIMPLE:
				case SLAVE:
				case SLOW:
				case SNAPSHOT:
				case SOCKET:
				case SOME:
				case SONAME:
				case SOUNDS:
				case SOURCE:
				case SQL_AFTER_GTIDS:
				case SQL_AFTER_MTS_GAPS:
				case SQL_BEFORE_GTIDS:
				case SQL_BUFFER_RESULT:
				case SQL_CACHE:
				case SQL_NO_CACHE:
				case SQL_THREAD:
				case START:
				case STARTS:
				case STATS_AUTO_RECALC:
				case STATS_PERSISTENT:
				case STATS_SAMPLE_PAGES:
				case STATUS:
				case STOP:
				case STORAGE:
				case STRING:
				case SUBCLASS_ORIGIN:
				case SUBJECT:
				case SUBPARTITION:
				case SUBPARTITIONS:
				case SUSPEND:
				case SWAPS:
				case SWITCHES:
				case TABLE_NAME:
				case TABLESPACE:
				case TABLE_TYPE:
				case TEMPORARY:
				case TEMPTABLE:
				case THAN:
				case TRADITIONAL:
				case TRANSACTION:
				case TRANSACTIONAL:
				case TRIGGERS:
				case TRUNCATE:
				case UNBOUNDED:
				case UNDEFINED:
				case UNDOFILE:
				case UNDO_BUFFER_SIZE:
				case UNINSTALL:
				case UNKNOWN:
				case UNTIL:
				case UPGRADE:
				case USER:
				case USE_FRM:
				case USER_RESOURCES:
				case VALIDATION:
				case VALUE:
				case VARIABLES:
				case VIEW:
				case VIRTUAL:
				case VISIBLE:
				case WAIT:
				case WARNINGS:
				case WITHOUT:
				case WORK:
				case WRAPPER:
				case X509:
				case XA:
				case XML:
				case YES:
				case EUR:
				case USA:
				case JIS:
				case ISO:
				case INTERNAL:
				case QUARTER:
				case MONTH:
				case DAY:
				case HOUR:
				case MINUTE:
				case WEEK:
				case SECOND:
				case MICROSECOND:
				case USER_STATISTICS:
				case CLIENT_STATISTICS:
				case INDEX_STATISTICS:
				case TABLE_STATISTICS:
				case FIREWALL_RULES:
				case ADMIN:
				case APPLICATION_PASSWORD_ADMIN:
				case AUDIT_ADMIN:
				case AUDIT_ABORT_EXEMPT:
				case AUTHENTICATION_POLICY_ADMIN:
				case BACKUP_ADMIN:
				case BINLOG_ADMIN:
				case BINLOG_ENCRYPTION_ADMIN:
				case CLONE_ADMIN:
				case CONNECTION_ADMIN:
				case ENCRYPTION_KEY_ADMIN:
				case EXECUTE:
				case FILE:
				case FIREWALL_ADMIN:
				case FIREWALL_EXEMPT:
				case FIREWALL_USER:
				case FLUSH_OPTIMIZER_COSTS:
				case FLUSH_STATUS:
				case FLUSH_TABLES:
				case FLUSH_USER_RESOURCES:
				case GROUP_REPLICATION_ADMIN:
				case INNODB_REDO_LOG_ARCHIVE:
				case INNODB_REDO_LOG_ENABLE:
				case INVOKE:
				case LAMBDA:
				case NDB_STORED_USER:
				case PASSWORDLESS_USER_ADMIN:
				case PERSIST_RO_VARIABLES_ADMIN:
				case PRIVILEGES:
				case PROCESS:
				case RELOAD:
				case REPLICATION_APPLIER:
				case REPLICATION_SLAVE_ADMIN:
				case RESOURCE_GROUP_ADMIN:
				case RESOURCE_GROUP_USER:
				case ROLE_ADMIN:
				case ROUTINE:
				case S3:
				case SESSION_VARIABLES_ADMIN:
				case SET_USER_ID:
				case SHOW_ROUTINE:
				case SHUTDOWN:
				case SUPER:
				case SYSTEM_VARIABLES_ADMIN:
				case TABLES:
				case TABLE_ENCRYPTION_ADMIN:
				case VERSION_TOKEN_ADMIN:
				case XA_RECOVER_ADMIN:
				case ARMSCII8:
				case ASCII:
				case BIG5:
				case CP1250:
				case CP1251:
				case CP1256:
				case CP1257:
				case CP850:
				case CP852:
				case CP866:
				case CP932:
				case DEC8:
				case EUCJPMS:
				case EUCKR:
				case GB18030:
				case GB2312:
				case GBK:
				case GEOSTD8:
				case GREEK:
				case HEBREW:
				case HP8:
				case KEYBCS2:
				case KOI8R:
				case KOI8U:
				case LATIN1:
				case LATIN2:
				case LATIN5:
				case LATIN7:
				case MACCE:
				case MACROMAN:
				case SJIS:
				case SWE7:
				case TIS620:
				case UCS2:
				case UJIS:
				case UTF16:
				case UTF16LE:
				case UTF32:
				case UTF8:
				case UTF8MB3:
				case UTF8MB4:
				case ARCHIVE:
				case BLACKHOLE:
				case CSV:
				case FEDERATED:
				case INNODB:
				case MEMORY:
				case MRG_MYISAM:
				case MYISAM:
				case NDB:
				case NDBCLUSTER:
				case PERFORMANCE_SCHEMA:
				case TOKUDB:
				case REPEATABLE:
				case COMMITTED:
				case UNCOMMITTED:
				case SERIALIZABLE:
				case GEOMETRYCOLLECTION:
				case GEOMETRY:
				case LINESTRING:
				case MULTILINESTRING:
				case MULTIPOINT:
				case MULTIPOLYGON:
				case POINT:
				case POLYGON:
				case ABS:
				case ACOS:
				case ADDDATE:
				case ADDTIME:
				case AES_DECRYPT:
				case AES_ENCRYPT:
				case AREA:
				case ASBINARY:
				case ASIN:
				case ASTEXT:
				case ASWKB:
				case ASWKT:
				case ASYMMETRIC_DECRYPT:
				case ASYMMETRIC_DERIVE:
				case ASYMMETRIC_ENCRYPT:
				case ASYMMETRIC_SIGN:
				case ASYMMETRIC_VERIFY:
				case ATAN:
				case ATAN2:
				case BENCHMARK:
				case BIN:
				case BIT_COUNT:
				case BIT_LENGTH:
				case BUFFER:
				case CATALOG_NAME:
				case CEIL:
				case CEILING:
				case CENTROID:
				case CHARACTER_LENGTH:
				case CHARSET:
				case CHAR_LENGTH:
				case COERCIBILITY:
				case COLLATION:
				case COMPRESS:
				case CONCAT:
				case CONCAT_WS:
				case CONNECTION_ID:
				case CONV:
				case CONVERT_TZ:
				case COS:
				case COT:
				case CRC32:
				case CREATE_ASYMMETRIC_PRIV_KEY:
				case CREATE_ASYMMETRIC_PUB_KEY:
				case CREATE_DH_PARAMETERS:
				case CREATE_DIGEST:
				case CROSSES:
				case DATEDIFF:
				case DATE_FORMAT:
				case DAYNAME:
				case DAYOFMONTH:
				case DAYOFWEEK:
				case DAYOFYEAR:
				case DECODE:
				case DEGREES:
				case DES_DECRYPT:
				case DES_ENCRYPT:
				case DIMENSION:
				case DISJOINT:
				case ELT:
				case ENCODE:
				case ENCRYPT:
				case ENDPOINT:
				case ENGINE_ATTRIBUTE:
				case ENVELOPE:
				case EQUALS:
				case EXP:
				case EXPORT_SET:
				case EXTERIORRING:
				case EXTRACTVALUE:
				case FIELD:
				case FIND_IN_SET:
				case FLOOR:
				case FORMAT:
				case FOUND_ROWS:
				case FROM_BASE64:
				case FROM_DAYS:
				case FROM_UNIXTIME:
				case GEOMCOLLFROMTEXT:
				case GEOMCOLLFROMWKB:
				case GEOMETRYCOLLECTIONFROMTEXT:
				case GEOMETRYCOLLECTIONFROMWKB:
				case GEOMETRYFROMTEXT:
				case GEOMETRYFROMWKB:
				case GEOMETRYN:
				case GEOMETRYTYPE:
				case GEOMFROMTEXT:
				case GEOMFROMWKB:
				case GET_FORMAT:
				case GET_LOCK:
				case GLENGTH:
				case GREATEST:
				case GTID_SUBSET:
				case GTID_SUBTRACT:
				case HEX:
				case IFNULL:
				case INET6_ATON:
				case INET6_NTOA:
				case INET_ATON:
				case INET_NTOA:
				case INSTR:
				case INTERIORRINGN:
				case INTERSECTS:
				case ISCLOSED:
				case ISEMPTY:
				case ISNULL:
				case ISSIMPLE:
				case IS_FREE_LOCK:
				case IS_IPV4:
				case IS_IPV4_COMPAT:
				case IS_IPV4_MAPPED:
				case IS_IPV6:
				case IS_USED_LOCK:
				case LAST_INSERT_ID:
				case LCASE:
				case LEAST:
				case LENGTH:
				case LINEFROMTEXT:
				case LINEFROMWKB:
				case LINESTRINGFROMTEXT:
				case LINESTRINGFROMWKB:
				case LN:
				case LOAD_FILE:
				case LOCATE:
				case LOG:
				case LOG10:
				case LOG2:
				case LOWER:
				case LPAD:
				case LTRIM:
				case MAKEDATE:
				case MAKETIME:
				case MAKE_SET:
				case MASTER_POS_WAIT:
				case MBRCONTAINS:
				case MBRDISJOINT:
				case MBREQUAL:
				case MBRINTERSECTS:
				case MBROVERLAPS:
				case MBRTOUCHES:
				case MBRWITHIN:
				case MD5:
				case MLINEFROMTEXT:
				case MLINEFROMWKB:
				case MONTHNAME:
				case MPOINTFROMTEXT:
				case MPOINTFROMWKB:
				case MPOLYFROMTEXT:
				case MPOLYFROMWKB:
				case MULTILINESTRINGFROMTEXT:
				case MULTILINESTRINGFROMWKB:
				case MULTIPOINTFROMTEXT:
				case MULTIPOINTFROMWKB:
				case MULTIPOLYGONFROMTEXT:
				case MULTIPOLYGONFROMWKB:
				case NAME_CONST:
				case NULLIF:
				case NUMGEOMETRIES:
				case NUMINTERIORRINGS:
				case NUMPOINTS:
				case OCT:
				case OCTET_LENGTH:
				case ORD:
				case OVERLAPS:
				case PERIOD_ADD:
				case PERIOD_DIFF:
				case PI:
				case POINTFROMTEXT:
				case POINTFROMWKB:
				case POINTN:
				case POLYFROMTEXT:
				case POLYFROMWKB:
				case POLYGONFROMTEXT:
				case POLYGONFROMWKB:
				case POW:
				case POWER:
				case QUOTE:
				case RADIANS:
				case RAND:
				case RANDOM:
				case RANDOM_BYTES:
				case RELEASE_LOCK:
				case REVERSE:
				case ROUND:
				case ROW_COUNT:
				case RPAD:
				case RTRIM:
				case SEC_TO_TIME:
				case SECONDARY_ENGINE_ATTRIBUTE:
				case SENSITIVE_VARIABLES_OBSERVER:
				case SESSION_USER:
				case SHA:
				case SHA1:
				case SHA2:
				case SCHEMA_NAME:
				case SIGN:
				case SIN:
				case SLEEP:
				case SOUNDEX:
				case SQL_THREAD_WAIT_AFTER_GTIDS:
				case SQRT:
				case SRID:
				case STARTPOINT:
				case STRCMP:
				case STR_TO_DATE:
				case ST_AREA:
				case ST_ASBINARY:
				case ST_ASTEXT:
				case ST_ASWKB:
				case ST_ASWKT:
				case ST_BUFFER:
				case ST_CENTROID:
				case ST_CONTAINS:
				case ST_CROSSES:
				case ST_DIFFERENCE:
				case ST_DIMENSION:
				case ST_DISJOINT:
				case ST_DISTANCE:
				case ST_ENDPOINT:
				case ST_ENVELOPE:
				case ST_EQUALS:
				case ST_EXTERIORRING:
				case ST_GEOMCOLLFROMTEXT:
				case ST_GEOMCOLLFROMTXT:
				case ST_GEOMCOLLFROMWKB:
				case ST_GEOMETRYCOLLECTIONFROMTEXT:
				case ST_GEOMETRYCOLLECTIONFROMWKB:
				case ST_GEOMETRYFROMTEXT:
				case ST_GEOMETRYFROMWKB:
				case ST_GEOMETRYN:
				case ST_GEOMETRYTYPE:
				case ST_GEOMFROMTEXT:
				case ST_GEOMFROMWKB:
				case ST_INTERIORRINGN:
				case ST_INTERSECTION:
				case ST_INTERSECTS:
				case ST_ISCLOSED:
				case ST_ISEMPTY:
				case ST_ISSIMPLE:
				case ST_LINEFROMTEXT:
				case ST_LINEFROMWKB:
				case ST_LINESTRINGFROMTEXT:
				case ST_LINESTRINGFROMWKB:
				case ST_NUMGEOMETRIES:
				case ST_NUMINTERIORRING:
				case ST_NUMINTERIORRINGS:
				case ST_NUMPOINTS:
				case ST_OVERLAPS:
				case ST_POINTFROMTEXT:
				case ST_POINTFROMWKB:
				case ST_POINTN:
				case ST_POLYFROMTEXT:
				case ST_POLYFROMWKB:
				case ST_POLYGONFROMTEXT:
				case ST_POLYGONFROMWKB:
				case ST_SRID:
				case ST_STARTPOINT:
				case ST_SYMDIFFERENCE:
				case ST_TOUCHES:
				case ST_UNION:
				case ST_WITHIN:
				case ST_X:
				case ST_Y:
				case SUBDATE:
				case SUBSTRING_INDEX:
				case SUBTIME:
				case SYSTEM_USER:
				case SYSTEM:
				case TAN:
				case TELEMETRY_LOG_ADMIN:
				case TIMEDIFF:
				case TIMESTAMPADD:
				case TIMESTAMPDIFF:
				case TIME_FORMAT:
				case TIME_TO_SEC:
				case TOUCHES:
				case TO_BASE64:
				case TO_DAYS:
				case TO_SECONDS:
				case TP_CONNECTION_ADMIN:
				case UCASE:
				case UNCOMPRESS:
				case UNCOMPRESSED_LENGTH:
				case UNHEX:
				case UNIX_TIMESTAMP:
				case UPDATEXML:
				case UPPER:
				case UUID:
				case UUID_SHORT:
				case VALIDATE_PASSWORD_STRENGTH:
				case VERSION:
				case VERSIONING:
				case WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS:
				case WEEKDAY:
				case WEEKOFYEAR:
				case WEIGHT_STRING:
				case WITHIN:
				case YEARWEEK:
				case Y_FUNCTION:
				case X_FUNCTION:
				case VIA:
				case LASTVAL:
				case NEXTVAL:
				case SETVAL:
				case PREVIOUS:
				case PERSISTENT:
				case BINLOG_MONITOR:
				case BINLOG_REPLAY:
				case FEDERATED_ADMIN:
				case READ_ONLY_ADMIN:
				case REPLICA:
				case REPLICATION_MASTER_ADMIN:
				case MONITOR:
				case READ_ONLY:
				case REPLAY:
				case MOD:
				case AT_SIGN:
				case CHARSET_REVERSE_QOUTE_STRING:
				case STRING_LITERAL:
				case ID:
				case LOCAL_ID:
				case GLOBAL_ID:
					{
					setState(6573);
					variableClause();
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(6576);
				variableClause();
				setState(6577);
				match(EQUAL_SYMBOL);
				setState(6578);
				diagnosticsConditionInformationName();
				setState(6586);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(6579);
					match(COMMA);
					setState(6580);
					variableClause();
					setState(6581);
					match(EQUAL_SYMBOL);
					setState(6582);
					diagnosticsConditionInformationName();
					}
					}
					setState(6588);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DiagnosticsConditionInformationNameContext extends ParserRuleContext {
		public TerminalNode CLASS_ORIGIN() { return getToken(MySqlParser.CLASS_ORIGIN, 0); }
		public TerminalNode SUBCLASS_ORIGIN() { return getToken(MySqlParser.SUBCLASS_ORIGIN, 0); }
		public TerminalNode RETURNED_SQLSTATE() { return getToken(MySqlParser.RETURNED_SQLSTATE, 0); }
		public TerminalNode MESSAGE_TEXT() { return getToken(MySqlParser.MESSAGE_TEXT, 0); }
		public TerminalNode MYSQL_ERRNO() { return getToken(MySqlParser.MYSQL_ERRNO, 0); }
		public TerminalNode CONSTRAINT_CATALOG() { return getToken(MySqlParser.CONSTRAINT_CATALOG, 0); }
		public TerminalNode CONSTRAINT_SCHEMA() { return getToken(MySqlParser.CONSTRAINT_SCHEMA, 0); }
		public TerminalNode CONSTRAINT_NAME() { return getToken(MySqlParser.CONSTRAINT_NAME, 0); }
		public TerminalNode CATALOG_NAME() { return getToken(MySqlParser.CATALOG_NAME, 0); }
		public TerminalNode SCHEMA_NAME() { return getToken(MySqlParser.SCHEMA_NAME, 0); }
		public TerminalNode TABLE_NAME() { return getToken(MySqlParser.TABLE_NAME, 0); }
		public TerminalNode COLUMN_NAME() { return getToken(MySqlParser.COLUMN_NAME, 0); }
		public TerminalNode CURSOR_NAME() { return getToken(MySqlParser.CURSOR_NAME, 0); }
		public DiagnosticsConditionInformationNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_diagnosticsConditionInformationName; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDiagnosticsConditionInformationName(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDiagnosticsConditionInformationName(this);
		}
	}

	public final DiagnosticsConditionInformationNameContext diagnosticsConditionInformationName() throws RecognitionException {
		DiagnosticsConditionInformationNameContext _localctx = new DiagnosticsConditionInformationNameContext(_ctx, getState());
		enterRule(_localctx, 560, RULE_diagnosticsConditionInformationName);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6591);
			_la = _input.LA(1);
			if ( !(((((_la - 362)) & ~0x3f) == 0 && ((1L << (_la - 362)) & ((1L << (CLASS_ORIGIN - 362)) | (1L << (COLUMN_NAME - 362)) | (1L << (CONSTRAINT_CATALOG - 362)) | (1L << (CONSTRAINT_SCHEMA - 362)) | (1L << (CONSTRAINT_NAME - 362)) | (1L << (CURSOR_NAME - 362)))) != 0) || _la==MESSAGE_TEXT || _la==MYSQL_ERRNO || ((((_la - 595)) & ~0x3f) == 0 && ((1L << (_la - 595)) & ((1L << (RETURNED_SQLSTATE - 595)) | (1L << (SUBCLASS_ORIGIN - 595)) | (1L << (TABLE_NAME - 595)))) != 0) || _la==CATALOG_NAME || _la==SCHEMA_NAME) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DescribeObjectClauseContext extends ParserRuleContext {
		public DescribeObjectClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_describeObjectClause; }
	 
		public DescribeObjectClauseContext() { }
		public void copyFrom(DescribeObjectClauseContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class DescribeStatementsContext extends DescribeObjectClauseContext {
		public SelectStatementContext selectStatement() {
			return getRuleContext(SelectStatementContext.class,0);
		}
		public DeleteStatementContext deleteStatement() {
			return getRuleContext(DeleteStatementContext.class,0);
		}
		public InsertStatementContext insertStatement() {
			return getRuleContext(InsertStatementContext.class,0);
		}
		public ReplaceStatementContext replaceStatement() {
			return getRuleContext(ReplaceStatementContext.class,0);
		}
		public UpdateStatementContext updateStatement() {
			return getRuleContext(UpdateStatementContext.class,0);
		}
		public DescribeStatementsContext(DescribeObjectClauseContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDescribeStatements(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDescribeStatements(this);
		}
	}
	public static class DescribeConnectionContext extends DescribeObjectClauseContext {
		public TerminalNode FOR() { return getToken(MySqlParser.FOR, 0); }
		public TerminalNode CONNECTION() { return getToken(MySqlParser.CONNECTION, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public DescribeConnectionContext(DescribeObjectClauseContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDescribeConnection(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDescribeConnection(this);
		}
	}

	public final DescribeObjectClauseContext describeObjectClause() throws RecognitionException {
		DescribeObjectClauseContext _localctx = new DescribeObjectClauseContext(_ctx, getState());
		enterRule(_localctx, 562, RULE_describeObjectClause);
		try {
			setState(6603);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case DELETE:
			case INSERT:
			case REPLACE:
			case SELECT:
			case UPDATE:
			case LR_BRACKET:
				_localctx = new DescribeStatementsContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(6598);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case SELECT:
				case LR_BRACKET:
					{
					setState(6593);
					selectStatement();
					}
					break;
				case DELETE:
					{
					setState(6594);
					deleteStatement();
					}
					break;
				case INSERT:
					{
					setState(6595);
					insertStatement();
					}
					break;
				case REPLACE:
					{
					setState(6596);
					replaceStatement();
					}
					break;
				case UPDATE:
					{
					setState(6597);
					updateStatement();
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case FOR:
				_localctx = new DescribeConnectionContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(6600);
				match(FOR);
				setState(6601);
				match(CONNECTION);
				setState(6602);
				uid();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FullIdContext extends ParserRuleContext {
		public List uid() {
			return getRuleContexts(UidContext.class);
		}
		public UidContext uid(int i) {
			return getRuleContext(UidContext.class,i);
		}
		public TerminalNode DOT_ID() { return getToken(MySqlParser.DOT_ID, 0); }
		public TerminalNode DOT() { return getToken(MySqlParser.DOT, 0); }
		public FullIdContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_fullId; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterFullId(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitFullId(this);
		}
	}

	public final FullIdContext fullId() throws RecognitionException {
		FullIdContext _localctx = new FullIdContext(_ctx, getState());
		enterRule(_localctx, 564, RULE_fullId);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6605);
			uid();
			setState(6609);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,985,_ctx) ) {
			case 1:
				{
				setState(6606);
				match(DOT_ID);
				}
				break;
			case 2:
				{
				setState(6607);
				match(DOT);
				setState(6608);
				uid();
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TableNameContext extends ParserRuleContext {
		public FullIdContext fullId() {
			return getRuleContext(FullIdContext.class,0);
		}
		public TableNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_tableName; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTableName(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTableName(this);
		}
	}

	public final TableNameContext tableName() throws RecognitionException {
		TableNameContext _localctx = new TableNameContext(_ctx, getState());
		enterRule(_localctx, 566, RULE_tableName);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6611);
			fullId();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RoleNameContext extends ParserRuleContext {
		public UserNameContext userName() {
			return getRuleContext(UserNameContext.class,0);
		}
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public RoleNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_roleName; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterRoleName(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitRoleName(this);
		}
	}

	public final RoleNameContext roleName() throws RecognitionException {
		RoleNameContext _localctx = new RoleNameContext(_ctx, getState());
		enterRule(_localctx, 568, RULE_roleName);
		try {
			setState(6615);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,986,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(6613);
				userName();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(6614);
				uid();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FullColumnNameContext extends ParserRuleContext {
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public List dottedId() {
			return getRuleContexts(DottedIdContext.class);
		}
		public DottedIdContext dottedId(int i) {
			return getRuleContext(DottedIdContext.class,i);
		}
		public FullColumnNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_fullColumnName; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterFullColumnName(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitFullColumnName(this);
		}
	}

	public final FullColumnNameContext fullColumnName() throws RecognitionException {
		FullColumnNameContext _localctx = new FullColumnNameContext(_ctx, getState());
		enterRule(_localctx, 570, RULE_fullColumnName);
		try {
			setState(6631);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,991,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(6617);
				uid();
				setState(6622);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,988,_ctx) ) {
				case 1:
					{
					setState(6618);
					dottedId();
					setState(6620);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,987,_ctx) ) {
					case 1:
						{
						setState(6619);
						dottedId();
						}
						break;
					}
					}
					break;
				}
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(6625);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,989,_ctx) ) {
				case 1:
					{
					setState(6624);
					matchWildcard();
					}
					break;
				}
				setState(6627);
				dottedId();
				setState(6629);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,990,_ctx) ) {
				case 1:
					{
					setState(6628);
					dottedId();
					}
					break;
				}
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IndexColumnNameContext extends ParserRuleContext {
		public Token sortType;
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public DecimalLiteralContext decimalLiteral() {
			return getRuleContext(DecimalLiteralContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TerminalNode ASC() { return getToken(MySqlParser.ASC, 0); }
		public TerminalNode DESC() { return getToken(MySqlParser.DESC, 0); }
		public IndexColumnNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_indexColumnName; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterIndexColumnName(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitIndexColumnName(this);
		}
	}

	public final IndexColumnNameContext indexColumnName() throws RecognitionException {
		IndexColumnNameContext _localctx = new IndexColumnNameContext(_ctx, getState());
		enterRule(_localctx, 572, RULE_indexColumnName);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6644);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,994,_ctx) ) {
			case 1:
				{
				setState(6635);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,992,_ctx) ) {
				case 1:
					{
					setState(6633);
					uid();
					}
					break;
				case 2:
					{
					setState(6634);
					match(STRING_LITERAL);
					}
					break;
				}
				setState(6641);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LR_BRACKET) {
					{
					setState(6637);
					match(LR_BRACKET);
					setState(6638);
					decimalLiteral();
					setState(6639);
					match(RR_BRACKET);
					}
				}

				}
				break;
			case 2:
				{
				setState(6643);
				expression(0);
				}
				break;
			}
			setState(6647);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ASC || _la==DESC) {
				{
				setState(6646);
				((IndexColumnNameContext)_localctx).sortType = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==ASC || _la==DESC) ) {
					((IndexColumnNameContext)_localctx).sortType = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SimpleUserNameContext extends ParserRuleContext {
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode ID() { return getToken(MySqlParser.ID, 0); }
		public TerminalNode ADMIN() { return getToken(MySqlParser.ADMIN, 0); }
		public KeywordsCanBeIdContext keywordsCanBeId() {
			return getRuleContext(KeywordsCanBeIdContext.class,0);
		}
		public SimpleUserNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_simpleUserName; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSimpleUserName(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSimpleUserName(this);
		}
	}

	public final SimpleUserNameContext simpleUserName() throws RecognitionException {
		SimpleUserNameContext _localctx = new SimpleUserNameContext(_ctx, getState());
		enterRule(_localctx, 574, RULE_simpleUserName);
		try {
			setState(6653);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,996,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(6649);
				match(STRING_LITERAL);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(6650);
				match(ID);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(6651);
				match(ADMIN);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(6652);
				keywordsCanBeId();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class HostNameContext extends ParserRuleContext {
		public TerminalNode LOCAL_ID() { return getToken(MySqlParser.LOCAL_ID, 0); }
		public TerminalNode HOST_IP_ADDRESS() { return getToken(MySqlParser.HOST_IP_ADDRESS, 0); }
		public TerminalNode AT_SIGN() { return getToken(MySqlParser.AT_SIGN, 0); }
		public HostNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_hostName; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterHostName(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitHostName(this);
		}
	}

	public final HostNameContext hostName() throws RecognitionException {
		HostNameContext _localctx = new HostNameContext(_ctx, getState());
		enterRule(_localctx, 576, RULE_hostName);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6655);
			_la = _input.LA(1);
			if ( !(((((_la - 1164)) & ~0x3f) == 0 && ((1L << (_la - 1164)) & ((1L << (AT_SIGN - 1164)) | (1L << (HOST_IP_ADDRESS - 1164)) | (1L << (LOCAL_ID - 1164)))) != 0)) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class UserNameContext extends ParserRuleContext {
		public SimpleUserNameContext simpleUserName() {
			return getRuleContext(SimpleUserNameContext.class,0);
		}
		public HostNameContext hostName() {
			return getRuleContext(HostNameContext.class,0);
		}
		public CurrentUserExpressionContext currentUserExpression() {
			return getRuleContext(CurrentUserExpressionContext.class,0);
		}
		public UserNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_userName; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterUserName(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitUserName(this);
		}
	}

	public final UserNameContext userName() throws RecognitionException {
		UserNameContext _localctx = new UserNameContext(_ctx, getState());
		enterRule(_localctx, 578, RULE_userName);
		try {
			setState(6662);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,997,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(6657);
				simpleUserName();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(6658);
				simpleUserName();
				setState(6659);
				hostName();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(6661);
				currentUserExpression();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class MysqlVariableContext extends ParserRuleContext {
		public TerminalNode LOCAL_ID() { return getToken(MySqlParser.LOCAL_ID, 0); }
		public TerminalNode GLOBAL_ID() { return getToken(MySqlParser.GLOBAL_ID, 0); }
		public MysqlVariableContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_mysqlVariable; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterMysqlVariable(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitMysqlVariable(this);
		}
	}

	public final MysqlVariableContext mysqlVariable() throws RecognitionException {
		MysqlVariableContext _localctx = new MysqlVariableContext(_ctx, getState());
		enterRule(_localctx, 580, RULE_mysqlVariable);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6664);
			_la = _input.LA(1);
			if ( !(_la==LOCAL_ID || _la==GLOBAL_ID) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CharsetNameContext extends ParserRuleContext {
		public TerminalNode BINARY() { return getToken(MySqlParser.BINARY, 0); }
		public CharsetNameBaseContext charsetNameBase() {
			return getRuleContext(CharsetNameBaseContext.class,0);
		}
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode CHARSET_REVERSE_QOUTE_STRING() { return getToken(MySqlParser.CHARSET_REVERSE_QOUTE_STRING, 0); }
		public CharsetNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_charsetName; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCharsetName(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCharsetName(this);
		}
	}

	public final CharsetNameContext charsetName() throws RecognitionException {
		CharsetNameContext _localctx = new CharsetNameContext(_ctx, getState());
		enterRule(_localctx, 582, RULE_charsetName);
		try {
			setState(6670);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,998,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(6666);
				match(BINARY);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(6667);
				charsetNameBase();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(6668);
				match(STRING_LITERAL);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(6669);
				match(CHARSET_REVERSE_QOUTE_STRING);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CollationNameContext extends ParserRuleContext {
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public CollationNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_collationName; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCollationName(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCollationName(this);
		}
	}

	public final CollationNameContext collationName() throws RecognitionException {
		CollationNameContext _localctx = new CollationNameContext(_ctx, getState());
		enterRule(_localctx, 584, RULE_collationName);
		try {
			setState(6674);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,999,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(6672);
				uid();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(6673);
				match(STRING_LITERAL);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class EngineNameContext extends ParserRuleContext {
		public EngineNameBaseContext engineNameBase() {
			return getRuleContext(EngineNameBaseContext.class,0);
		}
		public TerminalNode ID() { return getToken(MySqlParser.ID, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public EngineNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_engineName; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterEngineName(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitEngineName(this);
		}
	}

	public final EngineNameContext engineName() throws RecognitionException {
		EngineNameContext _localctx = new EngineNameContext(_ctx, getState());
		enterRule(_localctx, 586, RULE_engineName);
		try {
			setState(6679);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case CONNECT:
			case ARCHIVE:
			case BLACKHOLE:
			case CSV:
			case FEDERATED:
			case INNODB:
			case MEMORY:
			case MRG_MYISAM:
			case MYISAM:
			case NDB:
			case NDBCLUSTER:
			case PERFORMANCE_SCHEMA:
			case TOKUDB:
				enterOuterAlt(_localctx, 1);
				{
				setState(6676);
				engineNameBase();
				}
				break;
			case ID:
				enterOuterAlt(_localctx, 2);
				{
				setState(6677);
				match(ID);
				}
				break;
			case STRING_LITERAL:
				enterOuterAlt(_localctx, 3);
				{
				setState(6678);
				match(STRING_LITERAL);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class EngineNameBaseContext extends ParserRuleContext {
		public TerminalNode ARCHIVE() { return getToken(MySqlParser.ARCHIVE, 0); }
		public TerminalNode BLACKHOLE() { return getToken(MySqlParser.BLACKHOLE, 0); }
		public TerminalNode CONNECT() { return getToken(MySqlParser.CONNECT, 0); }
		public TerminalNode CSV() { return getToken(MySqlParser.CSV, 0); }
		public TerminalNode FEDERATED() { return getToken(MySqlParser.FEDERATED, 0); }
		public TerminalNode INNODB() { return getToken(MySqlParser.INNODB, 0); }
		public TerminalNode MEMORY() { return getToken(MySqlParser.MEMORY, 0); }
		public TerminalNode MRG_MYISAM() { return getToken(MySqlParser.MRG_MYISAM, 0); }
		public TerminalNode MYISAM() { return getToken(MySqlParser.MYISAM, 0); }
		public TerminalNode NDB() { return getToken(MySqlParser.NDB, 0); }
		public TerminalNode NDBCLUSTER() { return getToken(MySqlParser.NDBCLUSTER, 0); }
		public TerminalNode PERFORMANCE_SCHEMA() { return getToken(MySqlParser.PERFORMANCE_SCHEMA, 0); }
		public TerminalNode TOKUDB() { return getToken(MySqlParser.TOKUDB, 0); }
		public EngineNameBaseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_engineNameBase; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterEngineNameBase(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitEngineNameBase(this);
		}
	}

	public final EngineNameBaseContext engineNameBase() throws RecognitionException {
		EngineNameBaseContext _localctx = new EngineNameBaseContext(_ctx, getState());
		enterRule(_localctx, 588, RULE_engineNameBase);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6681);
			_la = _input.LA(1);
			if ( !(_la==CONNECT || ((((_la - 795)) & ~0x3f) == 0 && ((1L << (_la - 795)) & ((1L << (ARCHIVE - 795)) | (1L << (BLACKHOLE - 795)) | (1L << (CSV - 795)) | (1L << (FEDERATED - 795)) | (1L << (INNODB - 795)) | (1L << (MEMORY - 795)) | (1L << (MRG_MYISAM - 795)) | (1L << (MYISAM - 795)) | (1L << (NDB - 795)) | (1L << (NDBCLUSTER - 795)) | (1L << (PERFORMANCE_SCHEMA - 795)) | (1L << (TOKUDB - 795)))) != 0)) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class EncryptedLiteralContext extends ParserRuleContext {
		public TerminalNode ENCRYPTED() { return getToken(MySqlParser.ENCRYPTED, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public EncryptedLiteralContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_encryptedLiteral; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterEncryptedLiteral(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitEncryptedLiteral(this);
		}
	}

	public final EncryptedLiteralContext encryptedLiteral() throws RecognitionException {
		EncryptedLiteralContext _localctx = new EncryptedLiteralContext(_ctx, getState());
		enterRule(_localctx, 590, RULE_encryptedLiteral);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6683);
			_la = _input.LA(1);
			if ( !(_la==ENCRYPTED || _la==STRING_LITERAL) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class UuidSetContext extends ParserRuleContext {
		public List decimalLiteral() {
			return getRuleContexts(DecimalLiteralContext.class);
		}
		public DecimalLiteralContext decimalLiteral(int i) {
			return getRuleContext(DecimalLiteralContext.class,i);
		}
		public List MINUS() { return getTokens(MySqlParser.MINUS); }
		public TerminalNode MINUS(int i) {
			return getToken(MySqlParser.MINUS, i);
		}
		public List COLON_SYMB() { return getTokens(MySqlParser.COLON_SYMB); }
		public TerminalNode COLON_SYMB(int i) {
			return getToken(MySqlParser.COLON_SYMB, i);
		}
		public UuidSetContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_uuidSet; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterUuidSet(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitUuidSet(this);
		}
	}

	public final UuidSetContext uuidSet() throws RecognitionException {
		UuidSetContext _localctx = new UuidSetContext(_ctx, getState());
		enterRule(_localctx, 592, RULE_uuidSet);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6685);
			decimalLiteral();
			setState(6686);
			match(MINUS);
			setState(6687);
			decimalLiteral();
			setState(6688);
			match(MINUS);
			setState(6689);
			decimalLiteral();
			setState(6690);
			match(MINUS);
			setState(6691);
			decimalLiteral();
			setState(6692);
			match(MINUS);
			setState(6693);
			decimalLiteral();
			setState(6699); 
			_errHandler.sync(this);
			_la = _input.LA(1);
			do {
				{
				{
				setState(6694);
				match(COLON_SYMB);
				setState(6695);
				decimalLiteral();
				setState(6696);
				match(MINUS);
				setState(6697);
				decimalLiteral();
				}
				}
				setState(6701); 
				_errHandler.sync(this);
				_la = _input.LA(1);
			} while ( _la==COLON_SYMB );
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class XidContext extends ParserRuleContext {
		public XuidStringIdContext globalTableUid;
		public XuidStringIdContext qualifier;
		public DecimalLiteralContext idFormat;
		public List xuidStringId() {
			return getRuleContexts(XuidStringIdContext.class);
		}
		public XuidStringIdContext xuidStringId(int i) {
			return getRuleContext(XuidStringIdContext.class,i);
		}
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public DecimalLiteralContext decimalLiteral() {
			return getRuleContext(DecimalLiteralContext.class,0);
		}
		public XidContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_xid; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterXid(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitXid(this);
		}
	}

	public final XidContext xid() throws RecognitionException {
		XidContext _localctx = new XidContext(_ctx, getState());
		enterRule(_localctx, 594, RULE_xid);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6703);
			((XidContext)_localctx).globalTableUid = xuidStringId();
			setState(6710);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==COMMA) {
				{
				setState(6704);
				match(COMMA);
				setState(6705);
				((XidContext)_localctx).qualifier = xuidStringId();
				setState(6708);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COMMA) {
					{
					setState(6706);
					match(COMMA);
					setState(6707);
					((XidContext)_localctx).idFormat = decimalLiteral();
					}
				}

				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class XuidStringIdContext extends ParserRuleContext {
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public TerminalNode BIT_STRING() { return getToken(MySqlParser.BIT_STRING, 0); }
		public List HEXADECIMAL_LITERAL() { return getTokens(MySqlParser.HEXADECIMAL_LITERAL); }
		public TerminalNode HEXADECIMAL_LITERAL(int i) {
			return getToken(MySqlParser.HEXADECIMAL_LITERAL, i);
		}
		public XuidStringIdContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_xuidStringId; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterXuidStringId(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitXuidStringId(this);
		}
	}

	public final XuidStringIdContext xuidStringId() throws RecognitionException {
		XuidStringIdContext _localctx = new XuidStringIdContext(_ctx, getState());
		enterRule(_localctx, 596, RULE_xuidStringId);
		int _la;
		try {
			setState(6719);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case STRING_LITERAL:
				enterOuterAlt(_localctx, 1);
				{
				setState(6712);
				match(STRING_LITERAL);
				}
				break;
			case BIT_STRING:
				enterOuterAlt(_localctx, 2);
				{
				setState(6713);
				match(BIT_STRING);
				}
				break;
			case HEXADECIMAL_LITERAL:
				enterOuterAlt(_localctx, 3);
				{
				setState(6715); 
				_errHandler.sync(this);
				_la = _input.LA(1);
				do {
					{
					{
					setState(6714);
					match(HEXADECIMAL_LITERAL);
					}
					}
					setState(6717); 
					_errHandler.sync(this);
					_la = _input.LA(1);
				} while ( _la==HEXADECIMAL_LITERAL );
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AuthPluginContext extends ParserRuleContext {
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public AuthPluginContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_authPlugin; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAuthPlugin(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAuthPlugin(this);
		}
	}

	public final AuthPluginContext authPlugin() throws RecognitionException {
		AuthPluginContext _localctx = new AuthPluginContext(_ctx, getState());
		enterRule(_localctx, 598, RULE_authPlugin);
		try {
			setState(6723);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1006,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(6721);
				uid();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(6722);
				match(STRING_LITERAL);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class UidContext extends ParserRuleContext {
		public SimpleIdContext simpleId() {
			return getRuleContext(SimpleIdContext.class,0);
		}
		public TerminalNode CHARSET_REVERSE_QOUTE_STRING() { return getToken(MySqlParser.CHARSET_REVERSE_QOUTE_STRING, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public UidContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_uid; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterUid(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitUid(this);
		}
	}

	public final UidContext uid() throws RecognitionException {
		UidContext _localctx = new UidContext(_ctx, getState());
		enterRule(_localctx, 600, RULE_uid);
		try {
			setState(6728);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case ARRAY:
			case ATTRIBUTE:
			case BUCKETS:
			case CONDITION:
			case CURRENT:
			case CURRENT_ROLE:
			case CURRENT_USER:
			case DATABASE:
			case DEFAULT:
			case DIAGNOSTICS:
			case EMPTY:
			case ENFORCED:
			case EXCEPT:
			case GROUP:
			case GROUP_REPLICATION_STREAM:
			case IF:
			case IGNORED:
			case INSERT:
			case LATERAL:
			case LEFT:
			case LOCKED:
			case MAXVALUE:
			case MINVALUE:
			case NUMBER:
			case OPTIONAL:
			case ORDER:
			case PRIMARY:
			case REPEAT:
			case REPLACE:
			case RIGHT:
			case SCHEMA:
			case SKIP_:
			case SKIP_QUERY_REWRITE:
			case STACKED:
			case STATEMENT:
			case DATE:
			case TIME:
			case TIMESTAMP:
			case DATETIME:
			case YEAR:
			case NATIONAL:
			case BINARY:
			case TEXT:
			case ENUM:
			case SERIAL:
			case JSON_ARRAY:
			case JSON_ARRAYAGG:
			case JSON_ARRAY_APPEND:
			case JSON_ARRAY_INSERT:
			case JSON_CONTAINS:
			case JSON_CONTAINS_PATH:
			case JSON_DEPTH:
			case JSON_EXTRACT:
			case JSON_INSERT:
			case JSON_KEYS:
			case JSON_LENGTH:
			case JSON_MERGE:
			case JSON_MERGE_PATCH:
			case JSON_MERGE_PRESERVE:
			case JSON_OBJECT:
			case JSON_OBJECTAGG:
			case JSON_OVERLAPS:
			case JSON_PRETTY:
			case JSON_QUOTE:
			case JSON_REMOVE:
			case JSON_REPLACE:
			case JSON_SCHEMA_VALID:
			case JSON_SCHEMA_VALIDATION_REPORT:
			case JSON_SEARCH:
			case JSON_SET:
			case JSON_STORAGE_FREE:
			case JSON_STORAGE_SIZE:
			case JSON_TABLE:
			case JSON_TYPE:
			case JSON_UNQUOTE:
			case JSON_VALID:
			case JSON_VALUE:
			case NESTED:
			case ORDINALITY:
			case PATH:
			case AVG:
			case BIT_AND:
			case BIT_OR:
			case BIT_XOR:
			case COUNT:
			case CUME_DIST:
			case DENSE_RANK:
			case FIRST_VALUE:
			case GROUP_CONCAT:
			case LAG:
			case LAST_VALUE:
			case LEAD:
			case MAX:
			case MIN:
			case NTILE:
			case NTH_VALUE:
			case PERCENT_RANK:
			case RANK:
			case ROW_NUMBER:
			case STD:
			case STDDEV:
			case STDDEV_POP:
			case STDDEV_SAMP:
			case SUM:
			case VAR_POP:
			case VAR_SAMP:
			case VARIANCE:
			case CURRENT_DATE:
			case CURRENT_TIME:
			case CURRENT_TIMESTAMP:
			case LOCALTIME:
			case CURDATE:
			case CURTIME:
			case DATE_ADD:
			case DATE_SUB:
			case LOCALTIMESTAMP:
			case NOW:
			case POSITION:
			case SUBSTR:
			case SUBSTRING:
			case SYSDATE:
			case TRIM:
			case UTC_DATE:
			case UTC_TIME:
			case UTC_TIMESTAMP:
			case ACCOUNT:
			case ACTION:
			case AFTER:
			case AGGREGATE:
			case ALGORITHM:
			case ANY:
			case AT:
			case AUTHORS:
			case AUTOCOMMIT:
			case AUTOEXTEND_SIZE:
			case AUTO_INCREMENT:
			case AVG_ROW_LENGTH:
			case BEGIN:
			case BINLOG:
			case BIT:
			case BLOCK:
			case BOOL:
			case BOOLEAN:
			case BTREE:
			case CACHE:
			case CASCADED:
			case CHAIN:
			case CHANGED:
			case CHANNEL:
			case CHECKSUM:
			case PAGE_CHECKSUM:
			case CIPHER:
			case CLASS_ORIGIN:
			case CLIENT:
			case CLOSE:
			case CLUSTERING:
			case COALESCE:
			case CODE:
			case COLUMNS:
			case COLUMN_FORMAT:
			case COLUMN_NAME:
			case COMMENT:
			case COMMIT:
			case COMPACT:
			case COMPLETION:
			case COMPRESSED:
			case COMPRESSION:
			case CONCURRENT:
			case CONNECT:
			case CONNECTION:
			case CONSISTENT:
			case CONSTRAINT_CATALOG:
			case CONSTRAINT_SCHEMA:
			case CONSTRAINT_NAME:
			case CONTAINS:
			case CONTEXT:
			case CONTRIBUTORS:
			case COPY:
			case CPU:
			case CYCLE:
			case CURSOR_NAME:
			case DATA:
			case DATAFILE:
			case DEALLOCATE:
			case DEFAULT_AUTH:
			case DEFINER:
			case DELAY_KEY_WRITE:
			case DES_KEY_FILE:
			case DIRECTORY:
			case DISABLE:
			case DISCARD:
			case DISK:
			case DO:
			case DUMPFILE:
			case DUPLICATE:
			case DYNAMIC:
			case ENABLE:
			case ENCRYPTED:
			case ENCRYPTION:
			case ENCRYPTION_KEY_ID:
			case END:
			case ENDS:
			case ENGINE:
			case ENGINES:
			case ERROR:
			case ERRORS:
			case ESCAPE:
			case EVEN:
			case EVENT:
			case EVENTS:
			case EVERY:
			case EXCHANGE:
			case EXCLUSIVE:
			case EXPIRE:
			case EXPORT:
			case EXTENDED:
			case EXTENT_SIZE:
			case FAILED_LOGIN_ATTEMPTS:
			case FAST:
			case FAULTS:
			case FIELDS:
			case FILE_BLOCK_SIZE:
			case FILTER:
			case FIRST:
			case FIXED:
			case FLUSH:
			case FOLLOWS:
			case FOUND:
			case FULL:
			case FUNCTION:
			case GENERAL:
			case GLOBAL:
			case GRANTS:
			case GROUP_REPLICATION:
			case HANDLER:
			case HASH:
			case HELP:
			case HISTORY:
			case HOST:
			case HOSTS:
			case IDENTIFIED:
			case IGNORE_SERVER_IDS:
			case IMPORT:
			case INCREMENT:
			case INDEXES:
			case INITIAL_SIZE:
			case INPLACE:
			case INSERT_METHOD:
			case INSTALL:
			case INSTANCE:
			case INSTANT:
			case INVISIBLE:
			case INVOKER:
			case IO:
			case IO_THREAD:
			case IPC:
			case ISOLATION:
			case ISSUER:
			case JSON:
			case KEY_BLOCK_SIZE:
			case LANGUAGE:
			case LAST:
			case LEAVES:
			case LESS:
			case LEVEL:
			case LIST:
			case LOCAL:
			case LOGFILE:
			case LOGS:
			case MASTER:
			case MASTER_AUTO_POSITION:
			case MASTER_CONNECT_RETRY:
			case MASTER_DELAY:
			case MASTER_HEARTBEAT_PERIOD:
			case MASTER_HOST:
			case MASTER_LOG_FILE:
			case MASTER_LOG_POS:
			case MASTER_PASSWORD:
			case MASTER_PORT:
			case MASTER_RETRY_COUNT:
			case MASTER_SSL:
			case MASTER_SSL_CA:
			case MASTER_SSL_CAPATH:
			case MASTER_SSL_CERT:
			case MASTER_SSL_CIPHER:
			case MASTER_SSL_CRL:
			case MASTER_SSL_CRLPATH:
			case MASTER_SSL_KEY:
			case MASTER_TLS_VERSION:
			case MASTER_USER:
			case MAX_CONNECTIONS_PER_HOUR:
			case MAX_QUERIES_PER_HOUR:
			case MAX_ROWS:
			case MAX_SIZE:
			case MAX_UPDATES_PER_HOUR:
			case MAX_USER_CONNECTIONS:
			case MEDIUM:
			case MEMBER:
			case MERGE:
			case MESSAGE_TEXT:
			case MID:
			case MIGRATE:
			case MIN_ROWS:
			case MODE:
			case MODIFY:
			case MUTEX:
			case MYSQL:
			case MYSQL_ERRNO:
			case NAME:
			case NAMES:
			case NCHAR:
			case NEVER:
			case NEXT:
			case NO:
			case NOCACHE:
			case NOCOPY:
			case NOCYCLE:
			case NOMAXVALUE:
			case NOMINVALUE:
			case NOWAIT:
			case NODEGROUP:
			case NONE:
			case ODBC:
			case OFFLINE:
			case OFFSET:
			case OF:
			case OJ:
			case OLD_PASSWORD:
			case ONE:
			case ONLINE:
			case ONLY:
			case OPEN:
			case OPTIMIZER_COSTS:
			case OPTIONS:
			case OWNER:
			case PACK_KEYS:
			case PAGE:
			case PARSER:
			case PARTIAL:
			case PARTITIONING:
			case PARTITIONS:
			case PASSWORD:
			case PASSWORD_LOCK_TIME:
			case PHASE:
			case PLUGIN:
			case PLUGIN_DIR:
			case PLUGINS:
			case PORT:
			case PRECEDES:
			case PREPARE:
			case PRESERVE:
			case PREV:
			case PROCESSLIST:
			case PROFILE:
			case PROFILES:
			case PROXY:
			case QUERY:
			case QUICK:
			case REBUILD:
			case RECOVER:
			case RECURSIVE:
			case REDO_BUFFER_SIZE:
			case REDUNDANT:
			case RELAY:
			case RELAY_LOG_FILE:
			case RELAY_LOG_POS:
			case RELAYLOG:
			case REMOVE:
			case REORGANIZE:
			case REPAIR:
			case REPLICATE_DO_DB:
			case REPLICATE_DO_TABLE:
			case REPLICATE_IGNORE_DB:
			case REPLICATE_IGNORE_TABLE:
			case REPLICATE_REWRITE_DB:
			case REPLICATE_WILD_DO_TABLE:
			case REPLICATE_WILD_IGNORE_TABLE:
			case REPLICATION:
			case RESET:
			case RESTART:
			case RESUME:
			case RETURNED_SQLSTATE:
			case RETURNING:
			case RETURNS:
			case REUSE:
			case ROLE:
			case ROLLBACK:
			case ROLLUP:
			case ROTATE:
			case ROW:
			case ROWS:
			case ROW_FORMAT:
			case RTREE:
			case SAVEPOINT:
			case SCHEDULE:
			case SECURITY:
			case SEQUENCE:
			case SERVER:
			case SESSION:
			case SHARE:
			case SHARED:
			case SIGNED:
			case SIMPLE:
			case SLAVE:
			case SLOW:
			case SNAPSHOT:
			case SOCKET:
			case SOME:
			case SONAME:
			case SOUNDS:
			case SOURCE:
			case SQL_AFTER_GTIDS:
			case SQL_AFTER_MTS_GAPS:
			case SQL_BEFORE_GTIDS:
			case SQL_BUFFER_RESULT:
			case SQL_CACHE:
			case SQL_NO_CACHE:
			case SQL_THREAD:
			case START:
			case STARTS:
			case STATS_AUTO_RECALC:
			case STATS_PERSISTENT:
			case STATS_SAMPLE_PAGES:
			case STATUS:
			case STOP:
			case STORAGE:
			case STRING:
			case SUBCLASS_ORIGIN:
			case SUBJECT:
			case SUBPARTITION:
			case SUBPARTITIONS:
			case SUSPEND:
			case SWAPS:
			case SWITCHES:
			case TABLE_NAME:
			case TABLESPACE:
			case TABLE_TYPE:
			case TEMPORARY:
			case TEMPTABLE:
			case THAN:
			case TRADITIONAL:
			case TRANSACTION:
			case TRANSACTIONAL:
			case TRIGGERS:
			case TRUNCATE:
			case UNBOUNDED:
			case UNDEFINED:
			case UNDOFILE:
			case UNDO_BUFFER_SIZE:
			case UNINSTALL:
			case UNKNOWN:
			case UNTIL:
			case UPGRADE:
			case USER:
			case USE_FRM:
			case USER_RESOURCES:
			case VALIDATION:
			case VALUE:
			case VARIABLES:
			case VIEW:
			case VIRTUAL:
			case VISIBLE:
			case WAIT:
			case WARNINGS:
			case WITHOUT:
			case WORK:
			case WRAPPER:
			case X509:
			case XA:
			case XML:
			case YES:
			case EUR:
			case USA:
			case JIS:
			case ISO:
			case INTERNAL:
			case QUARTER:
			case MONTH:
			case DAY:
			case HOUR:
			case MINUTE:
			case WEEK:
			case SECOND:
			case MICROSECOND:
			case USER_STATISTICS:
			case CLIENT_STATISTICS:
			case INDEX_STATISTICS:
			case TABLE_STATISTICS:
			case FIREWALL_RULES:
			case ADMIN:
			case APPLICATION_PASSWORD_ADMIN:
			case AUDIT_ADMIN:
			case AUDIT_ABORT_EXEMPT:
			case AUTHENTICATION_POLICY_ADMIN:
			case BACKUP_ADMIN:
			case BINLOG_ADMIN:
			case BINLOG_ENCRYPTION_ADMIN:
			case CLONE_ADMIN:
			case CONNECTION_ADMIN:
			case ENCRYPTION_KEY_ADMIN:
			case EXECUTE:
			case FILE:
			case FIREWALL_ADMIN:
			case FIREWALL_EXEMPT:
			case FIREWALL_USER:
			case FLUSH_OPTIMIZER_COSTS:
			case FLUSH_STATUS:
			case FLUSH_TABLES:
			case FLUSH_USER_RESOURCES:
			case GROUP_REPLICATION_ADMIN:
			case INNODB_REDO_LOG_ARCHIVE:
			case INNODB_REDO_LOG_ENABLE:
			case INVOKE:
			case LAMBDA:
			case NDB_STORED_USER:
			case PASSWORDLESS_USER_ADMIN:
			case PERSIST_RO_VARIABLES_ADMIN:
			case PRIVILEGES:
			case PROCESS:
			case RELOAD:
			case REPLICATION_APPLIER:
			case REPLICATION_SLAVE_ADMIN:
			case RESOURCE_GROUP_ADMIN:
			case RESOURCE_GROUP_USER:
			case ROLE_ADMIN:
			case ROUTINE:
			case S3:
			case SESSION_VARIABLES_ADMIN:
			case SET_USER_ID:
			case SHOW_ROUTINE:
			case SHUTDOWN:
			case SUPER:
			case SYSTEM_VARIABLES_ADMIN:
			case TABLES:
			case TABLE_ENCRYPTION_ADMIN:
			case VERSION_TOKEN_ADMIN:
			case XA_RECOVER_ADMIN:
			case ARMSCII8:
			case ASCII:
			case BIG5:
			case CP1250:
			case CP1251:
			case CP1256:
			case CP1257:
			case CP850:
			case CP852:
			case CP866:
			case CP932:
			case DEC8:
			case EUCJPMS:
			case EUCKR:
			case GB18030:
			case GB2312:
			case GBK:
			case GEOSTD8:
			case GREEK:
			case HEBREW:
			case HP8:
			case KEYBCS2:
			case KOI8R:
			case KOI8U:
			case LATIN1:
			case LATIN2:
			case LATIN5:
			case LATIN7:
			case MACCE:
			case MACROMAN:
			case SJIS:
			case SWE7:
			case TIS620:
			case UCS2:
			case UJIS:
			case UTF16:
			case UTF16LE:
			case UTF32:
			case UTF8:
			case UTF8MB3:
			case UTF8MB4:
			case ARCHIVE:
			case BLACKHOLE:
			case CSV:
			case FEDERATED:
			case INNODB:
			case MEMORY:
			case MRG_MYISAM:
			case MYISAM:
			case NDB:
			case NDBCLUSTER:
			case PERFORMANCE_SCHEMA:
			case TOKUDB:
			case REPEATABLE:
			case COMMITTED:
			case UNCOMMITTED:
			case SERIALIZABLE:
			case GEOMETRYCOLLECTION:
			case GEOMETRY:
			case LINESTRING:
			case MULTILINESTRING:
			case MULTIPOINT:
			case MULTIPOLYGON:
			case POINT:
			case POLYGON:
			case ABS:
			case ACOS:
			case ADDDATE:
			case ADDTIME:
			case AES_DECRYPT:
			case AES_ENCRYPT:
			case AREA:
			case ASBINARY:
			case ASIN:
			case ASTEXT:
			case ASWKB:
			case ASWKT:
			case ASYMMETRIC_DECRYPT:
			case ASYMMETRIC_DERIVE:
			case ASYMMETRIC_ENCRYPT:
			case ASYMMETRIC_SIGN:
			case ASYMMETRIC_VERIFY:
			case ATAN:
			case ATAN2:
			case BENCHMARK:
			case BIN:
			case BIT_COUNT:
			case BIT_LENGTH:
			case BUFFER:
			case CATALOG_NAME:
			case CEIL:
			case CEILING:
			case CENTROID:
			case CHARACTER_LENGTH:
			case CHARSET:
			case CHAR_LENGTH:
			case COERCIBILITY:
			case COLLATION:
			case COMPRESS:
			case CONCAT:
			case CONCAT_WS:
			case CONNECTION_ID:
			case CONV:
			case CONVERT_TZ:
			case COS:
			case COT:
			case CRC32:
			case CREATE_ASYMMETRIC_PRIV_KEY:
			case CREATE_ASYMMETRIC_PUB_KEY:
			case CREATE_DH_PARAMETERS:
			case CREATE_DIGEST:
			case CROSSES:
			case DATEDIFF:
			case DATE_FORMAT:
			case DAYNAME:
			case DAYOFMONTH:
			case DAYOFWEEK:
			case DAYOFYEAR:
			case DECODE:
			case DEGREES:
			case DES_DECRYPT:
			case DES_ENCRYPT:
			case DIMENSION:
			case DISJOINT:
			case ELT:
			case ENCODE:
			case ENCRYPT:
			case ENDPOINT:
			case ENGINE_ATTRIBUTE:
			case ENVELOPE:
			case EQUALS:
			case EXP:
			case EXPORT_SET:
			case EXTERIORRING:
			case EXTRACTVALUE:
			case FIELD:
			case FIND_IN_SET:
			case FLOOR:
			case FORMAT:
			case FOUND_ROWS:
			case FROM_BASE64:
			case FROM_DAYS:
			case FROM_UNIXTIME:
			case GEOMCOLLFROMTEXT:
			case GEOMCOLLFROMWKB:
			case GEOMETRYCOLLECTIONFROMTEXT:
			case GEOMETRYCOLLECTIONFROMWKB:
			case GEOMETRYFROMTEXT:
			case GEOMETRYFROMWKB:
			case GEOMETRYN:
			case GEOMETRYTYPE:
			case GEOMFROMTEXT:
			case GEOMFROMWKB:
			case GET_FORMAT:
			case GET_LOCK:
			case GLENGTH:
			case GREATEST:
			case GTID_SUBSET:
			case GTID_SUBTRACT:
			case HEX:
			case IFNULL:
			case INET6_ATON:
			case INET6_NTOA:
			case INET_ATON:
			case INET_NTOA:
			case INSTR:
			case INTERIORRINGN:
			case INTERSECTS:
			case ISCLOSED:
			case ISEMPTY:
			case ISNULL:
			case ISSIMPLE:
			case IS_FREE_LOCK:
			case IS_IPV4:
			case IS_IPV4_COMPAT:
			case IS_IPV4_MAPPED:
			case IS_IPV6:
			case IS_USED_LOCK:
			case LAST_INSERT_ID:
			case LCASE:
			case LEAST:
			case LENGTH:
			case LINEFROMTEXT:
			case LINEFROMWKB:
			case LINESTRINGFROMTEXT:
			case LINESTRINGFROMWKB:
			case LN:
			case LOAD_FILE:
			case LOCATE:
			case LOG:
			case LOG10:
			case LOG2:
			case LOWER:
			case LPAD:
			case LTRIM:
			case MAKEDATE:
			case MAKETIME:
			case MAKE_SET:
			case MASTER_POS_WAIT:
			case MBRCONTAINS:
			case MBRDISJOINT:
			case MBREQUAL:
			case MBRINTERSECTS:
			case MBROVERLAPS:
			case MBRTOUCHES:
			case MBRWITHIN:
			case MD5:
			case MLINEFROMTEXT:
			case MLINEFROMWKB:
			case MONTHNAME:
			case MPOINTFROMTEXT:
			case MPOINTFROMWKB:
			case MPOLYFROMTEXT:
			case MPOLYFROMWKB:
			case MULTILINESTRINGFROMTEXT:
			case MULTILINESTRINGFROMWKB:
			case MULTIPOINTFROMTEXT:
			case MULTIPOINTFROMWKB:
			case MULTIPOLYGONFROMTEXT:
			case MULTIPOLYGONFROMWKB:
			case NAME_CONST:
			case NULLIF:
			case NUMGEOMETRIES:
			case NUMINTERIORRINGS:
			case NUMPOINTS:
			case OCT:
			case OCTET_LENGTH:
			case ORD:
			case OVERLAPS:
			case PERIOD_ADD:
			case PERIOD_DIFF:
			case PI:
			case POINTFROMTEXT:
			case POINTFROMWKB:
			case POINTN:
			case POLYFROMTEXT:
			case POLYFROMWKB:
			case POLYGONFROMTEXT:
			case POLYGONFROMWKB:
			case POW:
			case POWER:
			case QUOTE:
			case RADIANS:
			case RAND:
			case RANDOM:
			case RANDOM_BYTES:
			case RELEASE_LOCK:
			case REVERSE:
			case ROUND:
			case ROW_COUNT:
			case RPAD:
			case RTRIM:
			case SEC_TO_TIME:
			case SECONDARY_ENGINE_ATTRIBUTE:
			case SENSITIVE_VARIABLES_OBSERVER:
			case SESSION_USER:
			case SHA:
			case SHA1:
			case SHA2:
			case SCHEMA_NAME:
			case SIGN:
			case SIN:
			case SLEEP:
			case SOUNDEX:
			case SQL_THREAD_WAIT_AFTER_GTIDS:
			case SQRT:
			case SRID:
			case STARTPOINT:
			case STRCMP:
			case STR_TO_DATE:
			case ST_AREA:
			case ST_ASBINARY:
			case ST_ASTEXT:
			case ST_ASWKB:
			case ST_ASWKT:
			case ST_BUFFER:
			case ST_CENTROID:
			case ST_CONTAINS:
			case ST_CROSSES:
			case ST_DIFFERENCE:
			case ST_DIMENSION:
			case ST_DISJOINT:
			case ST_DISTANCE:
			case ST_ENDPOINT:
			case ST_ENVELOPE:
			case ST_EQUALS:
			case ST_EXTERIORRING:
			case ST_GEOMCOLLFROMTEXT:
			case ST_GEOMCOLLFROMTXT:
			case ST_GEOMCOLLFROMWKB:
			case ST_GEOMETRYCOLLECTIONFROMTEXT:
			case ST_GEOMETRYCOLLECTIONFROMWKB:
			case ST_GEOMETRYFROMTEXT:
			case ST_GEOMETRYFROMWKB:
			case ST_GEOMETRYN:
			case ST_GEOMETRYTYPE:
			case ST_GEOMFROMTEXT:
			case ST_GEOMFROMWKB:
			case ST_INTERIORRINGN:
			case ST_INTERSECTION:
			case ST_INTERSECTS:
			case ST_ISCLOSED:
			case ST_ISEMPTY:
			case ST_ISSIMPLE:
			case ST_LINEFROMTEXT:
			case ST_LINEFROMWKB:
			case ST_LINESTRINGFROMTEXT:
			case ST_LINESTRINGFROMWKB:
			case ST_NUMGEOMETRIES:
			case ST_NUMINTERIORRING:
			case ST_NUMINTERIORRINGS:
			case ST_NUMPOINTS:
			case ST_OVERLAPS:
			case ST_POINTFROMTEXT:
			case ST_POINTFROMWKB:
			case ST_POINTN:
			case ST_POLYFROMTEXT:
			case ST_POLYFROMWKB:
			case ST_POLYGONFROMTEXT:
			case ST_POLYGONFROMWKB:
			case ST_SRID:
			case ST_STARTPOINT:
			case ST_SYMDIFFERENCE:
			case ST_TOUCHES:
			case ST_UNION:
			case ST_WITHIN:
			case ST_X:
			case ST_Y:
			case SUBDATE:
			case SUBSTRING_INDEX:
			case SUBTIME:
			case SYSTEM_USER:
			case SYSTEM:
			case TAN:
			case TELEMETRY_LOG_ADMIN:
			case TIMEDIFF:
			case TIMESTAMPADD:
			case TIMESTAMPDIFF:
			case TIME_FORMAT:
			case TIME_TO_SEC:
			case TOUCHES:
			case TO_BASE64:
			case TO_DAYS:
			case TO_SECONDS:
			case TP_CONNECTION_ADMIN:
			case UCASE:
			case UNCOMPRESS:
			case UNCOMPRESSED_LENGTH:
			case UNHEX:
			case UNIX_TIMESTAMP:
			case UPDATEXML:
			case UPPER:
			case UUID:
			case UUID_SHORT:
			case VALIDATE_PASSWORD_STRENGTH:
			case VERSION:
			case VERSIONING:
			case WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS:
			case WEEKDAY:
			case WEEKOFYEAR:
			case WEIGHT_STRING:
			case WITHIN:
			case YEARWEEK:
			case Y_FUNCTION:
			case X_FUNCTION:
			case VIA:
			case LASTVAL:
			case NEXTVAL:
			case SETVAL:
			case PREVIOUS:
			case PERSISTENT:
			case BINLOG_MONITOR:
			case BINLOG_REPLAY:
			case FEDERATED_ADMIN:
			case READ_ONLY_ADMIN:
			case REPLICA:
			case REPLICATION_MASTER_ADMIN:
			case MONITOR:
			case READ_ONLY:
			case REPLAY:
			case MOD:
			case ID:
				enterOuterAlt(_localctx, 1);
				{
				setState(6725);
				simpleId();
				}
				break;
			case CHARSET_REVERSE_QOUTE_STRING:
				enterOuterAlt(_localctx, 2);
				{
				setState(6726);
				match(CHARSET_REVERSE_QOUTE_STRING);
				}
				break;
			case STRING_LITERAL:
				enterOuterAlt(_localctx, 3);
				{
				setState(6727);
				match(STRING_LITERAL);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SimpleIdContext extends ParserRuleContext {
		public TerminalNode ID() { return getToken(MySqlParser.ID, 0); }
		public CharsetNameBaseContext charsetNameBase() {
			return getRuleContext(CharsetNameBaseContext.class,0);
		}
		public TransactionLevelBaseContext transactionLevelBase() {
			return getRuleContext(TransactionLevelBaseContext.class,0);
		}
		public EngineNameBaseContext engineNameBase() {
			return getRuleContext(EngineNameBaseContext.class,0);
		}
		public PrivilegesBaseContext privilegesBase() {
			return getRuleContext(PrivilegesBaseContext.class,0);
		}
		public IntervalTypeBaseContext intervalTypeBase() {
			return getRuleContext(IntervalTypeBaseContext.class,0);
		}
		public DataTypeBaseContext dataTypeBase() {
			return getRuleContext(DataTypeBaseContext.class,0);
		}
		public KeywordsCanBeIdContext keywordsCanBeId() {
			return getRuleContext(KeywordsCanBeIdContext.class,0);
		}
		public ScalarFunctionNameContext scalarFunctionName() {
			return getRuleContext(ScalarFunctionNameContext.class,0);
		}
		public SimpleIdContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_simpleId; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSimpleId(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSimpleId(this);
		}
	}

	public final SimpleIdContext simpleId() throws RecognitionException {
		SimpleIdContext _localctx = new SimpleIdContext(_ctx, getState());
		enterRule(_localctx, 602, RULE_simpleId);
		try {
			setState(6739);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1008,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(6730);
				match(ID);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(6731);
				charsetNameBase();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(6732);
				transactionLevelBase();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(6733);
				engineNameBase();
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(6734);
				privilegesBase();
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(6735);
				intervalTypeBase();
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(6736);
				dataTypeBase();
				}
				break;
			case 8:
				enterOuterAlt(_localctx, 8);
				{
				setState(6737);
				keywordsCanBeId();
				}
				break;
			case 9:
				enterOuterAlt(_localctx, 9);
				{
				setState(6738);
				scalarFunctionName();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DottedIdContext extends ParserRuleContext {
		public TerminalNode DOT_ID() { return getToken(MySqlParser.DOT_ID, 0); }
		public TerminalNode DOT() { return getToken(MySqlParser.DOT, 0); }
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public DottedIdContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dottedId; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDottedId(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDottedId(this);
		}
	}

	public final DottedIdContext dottedId() throws RecognitionException {
		DottedIdContext _localctx = new DottedIdContext(_ctx, getState());
		enterRule(_localctx, 604, RULE_dottedId);
		try {
			setState(6744);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case DOT_ID:
				enterOuterAlt(_localctx, 1);
				{
				setState(6741);
				match(DOT_ID);
				}
				break;
			case DOT:
				enterOuterAlt(_localctx, 2);
				{
				setState(6742);
				match(DOT);
				setState(6743);
				uid();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DecimalLiteralContext extends ParserRuleContext {
		public TerminalNode DECIMAL_LITERAL() { return getToken(MySqlParser.DECIMAL_LITERAL, 0); }
		public TerminalNode ZERO_DECIMAL() { return getToken(MySqlParser.ZERO_DECIMAL, 0); }
		public TerminalNode ONE_DECIMAL() { return getToken(MySqlParser.ONE_DECIMAL, 0); }
		public TerminalNode TWO_DECIMAL() { return getToken(MySqlParser.TWO_DECIMAL, 0); }
		public TerminalNode REAL_LITERAL() { return getToken(MySqlParser.REAL_LITERAL, 0); }
		public DecimalLiteralContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_decimalLiteral; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDecimalLiteral(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDecimalLiteral(this);
		}
	}

	public final DecimalLiteralContext decimalLiteral() throws RecognitionException {
		DecimalLiteralContext _localctx = new DecimalLiteralContext(_ctx, getState());
		enterRule(_localctx, 606, RULE_decimalLiteral);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6746);
			_la = _input.LA(1);
			if ( !(((((_la - 1165)) & ~0x3f) == 0 && ((1L << (_la - 1165)) & ((1L << (ZERO_DECIMAL - 1165)) | (1L << (ONE_DECIMAL - 1165)) | (1L << (TWO_DECIMAL - 1165)) | (1L << (DECIMAL_LITERAL - 1165)) | (1L << (REAL_LITERAL - 1165)))) != 0)) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FileSizeLiteralContext extends ParserRuleContext {
		public TerminalNode FILESIZE_LITERAL() { return getToken(MySqlParser.FILESIZE_LITERAL, 0); }
		public DecimalLiteralContext decimalLiteral() {
			return getRuleContext(DecimalLiteralContext.class,0);
		}
		public FileSizeLiteralContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_fileSizeLiteral; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterFileSizeLiteral(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitFileSizeLiteral(this);
		}
	}

	public final FileSizeLiteralContext fileSizeLiteral() throws RecognitionException {
		FileSizeLiteralContext _localctx = new FileSizeLiteralContext(_ctx, getState());
		enterRule(_localctx, 608, RULE_fileSizeLiteral);
		try {
			setState(6750);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case FILESIZE_LITERAL:
				enterOuterAlt(_localctx, 1);
				{
				setState(6748);
				match(FILESIZE_LITERAL);
				}
				break;
			case ZERO_DECIMAL:
			case ONE_DECIMAL:
			case TWO_DECIMAL:
			case DECIMAL_LITERAL:
			case REAL_LITERAL:
				enterOuterAlt(_localctx, 2);
				{
				setState(6749);
				decimalLiteral();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class StringLiteralContext extends ParserRuleContext {
		public List STRING_LITERAL() { return getTokens(MySqlParser.STRING_LITERAL); }
		public TerminalNode STRING_LITERAL(int i) {
			return getToken(MySqlParser.STRING_LITERAL, i);
		}
		public TerminalNode START_NATIONAL_STRING_LITERAL() { return getToken(MySqlParser.START_NATIONAL_STRING_LITERAL, 0); }
		public TerminalNode STRING_CHARSET_NAME() { return getToken(MySqlParser.STRING_CHARSET_NAME, 0); }
		public TerminalNode COLLATE() { return getToken(MySqlParser.COLLATE, 0); }
		public CollationNameContext collationName() {
			return getRuleContext(CollationNameContext.class,0);
		}
		public StringLiteralContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_stringLiteral; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterStringLiteral(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitStringLiteral(this);
		}
	}

	public final StringLiteralContext stringLiteral() throws RecognitionException {
		StringLiteralContext _localctx = new StringLiteralContext(_ctx, getState());
		enterRule(_localctx, 610, RULE_stringLiteral);
		int _la;
		try {
			int _alt;
			setState(6775);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1017,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(6757);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case STRING_LITERAL:
				case STRING_CHARSET_NAME:
					{
					setState(6753);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==STRING_CHARSET_NAME) {
						{
						setState(6752);
						match(STRING_CHARSET_NAME);
						}
					}

					setState(6755);
					match(STRING_LITERAL);
					}
					break;
				case START_NATIONAL_STRING_LITERAL:
					{
					setState(6756);
					match(START_NATIONAL_STRING_LITERAL);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(6760); 
				_errHandler.sync(this);
				_alt = 1;
				do {
					switch (_alt) {
					case 1:
						{
						{
						setState(6759);
						match(STRING_LITERAL);
						}
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					setState(6762); 
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,1013,_ctx);
				} while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(6769);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case STRING_LITERAL:
				case STRING_CHARSET_NAME:
					{
					setState(6765);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==STRING_CHARSET_NAME) {
						{
						setState(6764);
						match(STRING_CHARSET_NAME);
						}
					}

					setState(6767);
					match(STRING_LITERAL);
					}
					break;
				case START_NATIONAL_STRING_LITERAL:
					{
					setState(6768);
					match(START_NATIONAL_STRING_LITERAL);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(6773);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1016,_ctx) ) {
				case 1:
					{
					setState(6771);
					match(COLLATE);
					setState(6772);
					collationName();
					}
					break;
				}
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class BooleanLiteralContext extends ParserRuleContext {
		public TerminalNode TRUE() { return getToken(MySqlParser.TRUE, 0); }
		public TerminalNode FALSE() { return getToken(MySqlParser.FALSE, 0); }
		public BooleanLiteralContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_booleanLiteral; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterBooleanLiteral(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitBooleanLiteral(this);
		}
	}

	public final BooleanLiteralContext booleanLiteral() throws RecognitionException {
		BooleanLiteralContext _localctx = new BooleanLiteralContext(_ctx, getState());
		enterRule(_localctx, 612, RULE_booleanLiteral);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6777);
			_la = _input.LA(1);
			if ( !(_la==FALSE || _la==TRUE) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class HexadecimalLiteralContext extends ParserRuleContext {
		public TerminalNode HEXADECIMAL_LITERAL() { return getToken(MySqlParser.HEXADECIMAL_LITERAL, 0); }
		public TerminalNode STRING_CHARSET_NAME() { return getToken(MySqlParser.STRING_CHARSET_NAME, 0); }
		public HexadecimalLiteralContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_hexadecimalLiteral; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterHexadecimalLiteral(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitHexadecimalLiteral(this);
		}
	}

	public final HexadecimalLiteralContext hexadecimalLiteral() throws RecognitionException {
		HexadecimalLiteralContext _localctx = new HexadecimalLiteralContext(_ctx, getState());
		enterRule(_localctx, 614, RULE_hexadecimalLiteral);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6780);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==STRING_CHARSET_NAME) {
				{
				setState(6779);
				match(STRING_CHARSET_NAME);
				}
			}

			setState(6782);
			match(HEXADECIMAL_LITERAL);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class NullNotnullContext extends ParserRuleContext {
		public TerminalNode NULL_LITERAL() { return getToken(MySqlParser.NULL_LITERAL, 0); }
		public TerminalNode NULL_SPEC_LITERAL() { return getToken(MySqlParser.NULL_SPEC_LITERAL, 0); }
		public TerminalNode NOT() { return getToken(MySqlParser.NOT, 0); }
		public NullNotnullContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_nullNotnull; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterNullNotnull(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitNullNotnull(this);
		}
	}

	public final NullNotnullContext nullNotnull() throws RecognitionException {
		NullNotnullContext _localctx = new NullNotnullContext(_ctx, getState());
		enterRule(_localctx, 616, RULE_nullNotnull);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6785);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==NOT) {
				{
				setState(6784);
				match(NOT);
				}
			}

			setState(6787);
			_la = _input.LA(1);
			if ( !(_la==NULL_LITERAL || _la==NULL_SPEC_LITERAL) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ConstantContext extends ParserRuleContext {
		public Token nullLiteral;
		public StringLiteralContext stringLiteral() {
			return getRuleContext(StringLiteralContext.class,0);
		}
		public DecimalLiteralContext decimalLiteral() {
			return getRuleContext(DecimalLiteralContext.class,0);
		}
		public TerminalNode MINUS() { return getToken(MySqlParser.MINUS, 0); }
		public HexadecimalLiteralContext hexadecimalLiteral() {
			return getRuleContext(HexadecimalLiteralContext.class,0);
		}
		public BooleanLiteralContext booleanLiteral() {
			return getRuleContext(BooleanLiteralContext.class,0);
		}
		public TerminalNode REAL_LITERAL() { return getToken(MySqlParser.REAL_LITERAL, 0); }
		public TerminalNode BIT_STRING() { return getToken(MySqlParser.BIT_STRING, 0); }
		public TerminalNode NULL_LITERAL() { return getToken(MySqlParser.NULL_LITERAL, 0); }
		public TerminalNode NULL_SPEC_LITERAL() { return getToken(MySqlParser.NULL_SPEC_LITERAL, 0); }
		public TerminalNode NOT() { return getToken(MySqlParser.NOT, 0); }
		public ConstantContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_constant; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterConstant(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitConstant(this);
		}
	}

	public final ConstantContext constant() throws RecognitionException {
		ConstantContext _localctx = new ConstantContext(_ctx, getState());
		enterRule(_localctx, 618, RULE_constant);
		int _la;
		try {
			setState(6801);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1021,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(6789);
				stringLiteral();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(6790);
				decimalLiteral();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(6791);
				match(MINUS);
				setState(6792);
				decimalLiteral();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(6793);
				hexadecimalLiteral();
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(6794);
				booleanLiteral();
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(6795);
				match(REAL_LITERAL);
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(6796);
				match(BIT_STRING);
				}
				break;
			case 8:
				enterOuterAlt(_localctx, 8);
				{
				setState(6798);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==NOT) {
					{
					setState(6797);
					match(NOT);
					}
				}

				setState(6800);
				((ConstantContext)_localctx).nullLiteral = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==NULL_LITERAL || _la==NULL_SPEC_LITERAL) ) {
					((ConstantContext)_localctx).nullLiteral = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DataTypeContext extends ParserRuleContext {
		public DataTypeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dataType; }
	 
		public DataTypeContext() { }
		public void copyFrom(DataTypeContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class UuidDataTypeContext extends DataTypeContext {
		public TerminalNode UUID() { return getToken(MySqlParser.UUID, 0); }
		public UuidDataTypeContext(DataTypeContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterUuidDataType(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitUuidDataType(this);
		}
	}
	public static class SpatialDataTypeContext extends DataTypeContext {
		public Token typeName;
		public TerminalNode GEOMETRYCOLLECTION() { return getToken(MySqlParser.GEOMETRYCOLLECTION, 0); }
		public TerminalNode GEOMCOLLECTION() { return getToken(MySqlParser.GEOMCOLLECTION, 0); }
		public TerminalNode LINESTRING() { return getToken(MySqlParser.LINESTRING, 0); }
		public TerminalNode MULTILINESTRING() { return getToken(MySqlParser.MULTILINESTRING, 0); }
		public TerminalNode MULTIPOINT() { return getToken(MySqlParser.MULTIPOINT, 0); }
		public TerminalNode MULTIPOLYGON() { return getToken(MySqlParser.MULTIPOLYGON, 0); }
		public TerminalNode POINT() { return getToken(MySqlParser.POINT, 0); }
		public TerminalNode POLYGON() { return getToken(MySqlParser.POLYGON, 0); }
		public TerminalNode JSON() { return getToken(MySqlParser.JSON, 0); }
		public TerminalNode GEOMETRY() { return getToken(MySqlParser.GEOMETRY, 0); }
		public TerminalNode SRID() { return getToken(MySqlParser.SRID, 0); }
		public DecimalLiteralContext decimalLiteral() {
			return getRuleContext(DecimalLiteralContext.class,0);
		}
		public SpatialDataTypeContext(DataTypeContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSpatialDataType(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSpatialDataType(this);
		}
	}
	public static class LongVarbinaryDataTypeContext extends DataTypeContext {
		public TerminalNode LONG() { return getToken(MySqlParser.LONG, 0); }
		public TerminalNode VARBINARY() { return getToken(MySqlParser.VARBINARY, 0); }
		public LongVarbinaryDataTypeContext(DataTypeContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterLongVarbinaryDataType(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitLongVarbinaryDataType(this);
		}
	}
	public static class CollectionDataTypeContext extends DataTypeContext {
		public Token typeName;
		public CollectionOptionsContext collectionOptions() {
			return getRuleContext(CollectionOptionsContext.class,0);
		}
		public TerminalNode ENUM() { return getToken(MySqlParser.ENUM, 0); }
		public TerminalNode SET() { return getToken(MySqlParser.SET, 0); }
		public TerminalNode BINARY() { return getToken(MySqlParser.BINARY, 0); }
		public CharSetContext charSet() {
			return getRuleContext(CharSetContext.class,0);
		}
		public CharsetNameContext charsetName() {
			return getRuleContext(CharsetNameContext.class,0);
		}
		public CollectionDataTypeContext(DataTypeContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCollectionDataType(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCollectionDataType(this);
		}
	}
	public static class NationalVaryingStringDataTypeContext extends DataTypeContext {
		public Token typeName;
		public TerminalNode NATIONAL() { return getToken(MySqlParser.NATIONAL, 0); }
		public TerminalNode VARYING() { return getToken(MySqlParser.VARYING, 0); }
		public TerminalNode CHAR() { return getToken(MySqlParser.CHAR, 0); }
		public TerminalNode CHARACTER() { return getToken(MySqlParser.CHARACTER, 0); }
		public LengthOneDimensionContext lengthOneDimension() {
			return getRuleContext(LengthOneDimensionContext.class,0);
		}
		public TerminalNode BINARY() { return getToken(MySqlParser.BINARY, 0); }
		public NationalVaryingStringDataTypeContext(DataTypeContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterNationalVaryingStringDataType(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitNationalVaryingStringDataType(this);
		}
	}
	public static class DimensionDataTypeContext extends DataTypeContext {
		public Token typeName;
		public TerminalNode TINYINT() { return getToken(MySqlParser.TINYINT, 0); }
		public TerminalNode SMALLINT() { return getToken(MySqlParser.SMALLINT, 0); }
		public TerminalNode MEDIUMINT() { return getToken(MySqlParser.MEDIUMINT, 0); }
		public TerminalNode INT() { return getToken(MySqlParser.INT, 0); }
		public TerminalNode INTEGER() { return getToken(MySqlParser.INTEGER, 0); }
		public TerminalNode BIGINT() { return getToken(MySqlParser.BIGINT, 0); }
		public TerminalNode MIDDLEINT() { return getToken(MySqlParser.MIDDLEINT, 0); }
		public TerminalNode INT1() { return getToken(MySqlParser.INT1, 0); }
		public TerminalNode INT2() { return getToken(MySqlParser.INT2, 0); }
		public TerminalNode INT3() { return getToken(MySqlParser.INT3, 0); }
		public TerminalNode INT4() { return getToken(MySqlParser.INT4, 0); }
		public TerminalNode INT8() { return getToken(MySqlParser.INT8, 0); }
		public LengthOneDimensionContext lengthOneDimension() {
			return getRuleContext(LengthOneDimensionContext.class,0);
		}
		public List SIGNED() { return getTokens(MySqlParser.SIGNED); }
		public TerminalNode SIGNED(int i) {
			return getToken(MySqlParser.SIGNED, i);
		}
		public List UNSIGNED() { return getTokens(MySqlParser.UNSIGNED); }
		public TerminalNode UNSIGNED(int i) {
			return getToken(MySqlParser.UNSIGNED, i);
		}
		public List ZEROFILL() { return getTokens(MySqlParser.ZEROFILL); }
		public TerminalNode ZEROFILL(int i) {
			return getToken(MySqlParser.ZEROFILL, i);
		}
		public TerminalNode REAL() { return getToken(MySqlParser.REAL, 0); }
		public LengthTwoDimensionContext lengthTwoDimension() {
			return getRuleContext(LengthTwoDimensionContext.class,0);
		}
		public TerminalNode DOUBLE() { return getToken(MySqlParser.DOUBLE, 0); }
		public TerminalNode PRECISION() { return getToken(MySqlParser.PRECISION, 0); }
		public TerminalNode DECIMAL() { return getToken(MySqlParser.DECIMAL, 0); }
		public TerminalNode DEC() { return getToken(MySqlParser.DEC, 0); }
		public TerminalNode FIXED() { return getToken(MySqlParser.FIXED, 0); }
		public TerminalNode NUMERIC() { return getToken(MySqlParser.NUMERIC, 0); }
		public TerminalNode FLOAT() { return getToken(MySqlParser.FLOAT, 0); }
		public TerminalNode FLOAT4() { return getToken(MySqlParser.FLOAT4, 0); }
		public TerminalNode FLOAT8() { return getToken(MySqlParser.FLOAT8, 0); }
		public LengthTwoOptionalDimensionContext lengthTwoOptionalDimension() {
			return getRuleContext(LengthTwoOptionalDimensionContext.class,0);
		}
		public TerminalNode BIT() { return getToken(MySqlParser.BIT, 0); }
		public TerminalNode TIME() { return getToken(MySqlParser.TIME, 0); }
		public TerminalNode TIMESTAMP() { return getToken(MySqlParser.TIMESTAMP, 0); }
		public TerminalNode DATETIME() { return getToken(MySqlParser.DATETIME, 0); }
		public TerminalNode BINARY() { return getToken(MySqlParser.BINARY, 0); }
		public TerminalNode VARBINARY() { return getToken(MySqlParser.VARBINARY, 0); }
		public TerminalNode BLOB() { return getToken(MySqlParser.BLOB, 0); }
		public TerminalNode YEAR() { return getToken(MySqlParser.YEAR, 0); }
		public DimensionDataTypeContext(DataTypeContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDimensionDataType(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDimensionDataType(this);
		}
	}
	public static class StringDataTypeContext extends DataTypeContext {
		public Token typeName;
		public TerminalNode CHAR() { return getToken(MySqlParser.CHAR, 0); }
		public TerminalNode CHARACTER() { return getToken(MySqlParser.CHARACTER, 0); }
		public TerminalNode VARCHAR() { return getToken(MySqlParser.VARCHAR, 0); }
		public TerminalNode TINYTEXT() { return getToken(MySqlParser.TINYTEXT, 0); }
		public TerminalNode TEXT() { return getToken(MySqlParser.TEXT, 0); }
		public TerminalNode MEDIUMTEXT() { return getToken(MySqlParser.MEDIUMTEXT, 0); }
		public TerminalNode LONGTEXT() { return getToken(MySqlParser.LONGTEXT, 0); }
		public TerminalNode NCHAR() { return getToken(MySqlParser.NCHAR, 0); }
		public TerminalNode NVARCHAR() { return getToken(MySqlParser.NVARCHAR, 0); }
		public TerminalNode LONG() { return getToken(MySqlParser.LONG, 0); }
		public TerminalNode VARYING() { return getToken(MySqlParser.VARYING, 0); }
		public LengthOneDimensionContext lengthOneDimension() {
			return getRuleContext(LengthOneDimensionContext.class,0);
		}
		public List BINARY() { return getTokens(MySqlParser.BINARY); }
		public TerminalNode BINARY(int i) {
			return getToken(MySqlParser.BINARY, i);
		}
		public CharSetContext charSet() {
			return getRuleContext(CharSetContext.class,0);
		}
		public CharsetNameContext charsetName() {
			return getRuleContext(CharsetNameContext.class,0);
		}
		public TerminalNode COLLATE() { return getToken(MySqlParser.COLLATE, 0); }
		public CollationNameContext collationName() {
			return getRuleContext(CollationNameContext.class,0);
		}
		public StringDataTypeContext(DataTypeContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterStringDataType(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitStringDataType(this);
		}
	}
	public static class LongVarcharDataTypeContext extends DataTypeContext {
		public Token typeName;
		public TerminalNode LONG() { return getToken(MySqlParser.LONG, 0); }
		public TerminalNode VARCHAR() { return getToken(MySqlParser.VARCHAR, 0); }
		public TerminalNode BINARY() { return getToken(MySqlParser.BINARY, 0); }
		public CharSetContext charSet() {
			return getRuleContext(CharSetContext.class,0);
		}
		public CharsetNameContext charsetName() {
			return getRuleContext(CharsetNameContext.class,0);
		}
		public TerminalNode COLLATE() { return getToken(MySqlParser.COLLATE, 0); }
		public CollationNameContext collationName() {
			return getRuleContext(CollationNameContext.class,0);
		}
		public LongVarcharDataTypeContext(DataTypeContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterLongVarcharDataType(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitLongVarcharDataType(this);
		}
	}
	public static class NationalStringDataTypeContext extends DataTypeContext {
		public Token typeName;
		public TerminalNode NATIONAL() { return getToken(MySqlParser.NATIONAL, 0); }
		public TerminalNode VARCHAR() { return getToken(MySqlParser.VARCHAR, 0); }
		public TerminalNode CHARACTER() { return getToken(MySqlParser.CHARACTER, 0); }
		public TerminalNode CHAR() { return getToken(MySqlParser.CHAR, 0); }
		public LengthOneDimensionContext lengthOneDimension() {
			return getRuleContext(LengthOneDimensionContext.class,0);
		}
		public TerminalNode BINARY() { return getToken(MySqlParser.BINARY, 0); }
		public TerminalNode NCHAR() { return getToken(MySqlParser.NCHAR, 0); }
		public NationalStringDataTypeContext(DataTypeContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterNationalStringDataType(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitNationalStringDataType(this);
		}
	}
	public static class SimpleDataTypeContext extends DataTypeContext {
		public Token typeName;
		public TerminalNode DATE() { return getToken(MySqlParser.DATE, 0); }
		public TerminalNode TINYBLOB() { return getToken(MySqlParser.TINYBLOB, 0); }
		public TerminalNode MEDIUMBLOB() { return getToken(MySqlParser.MEDIUMBLOB, 0); }
		public TerminalNode LONGBLOB() { return getToken(MySqlParser.LONGBLOB, 0); }
		public TerminalNode BOOL() { return getToken(MySqlParser.BOOL, 0); }
		public TerminalNode BOOLEAN() { return getToken(MySqlParser.BOOLEAN, 0); }
		public TerminalNode SERIAL() { return getToken(MySqlParser.SERIAL, 0); }
		public SimpleDataTypeContext(DataTypeContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSimpleDataType(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSimpleDataType(this);
		}
	}

	public final DataTypeContext dataType() throws RecognitionException {
		DataTypeContext _localctx = new DataTypeContext(_ctx, getState());
		enterRule(_localctx, 620, RULE_dataType);
		int _la;
		try {
			int _alt;
			setState(6930);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1050,_ctx) ) {
			case 1:
				_localctx = new StringDataTypeContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(6803);
				((StringDataTypeContext)_localctx).typeName = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==CHARACTER || ((((_la - 225)) & ~0x3f) == 0 && ((1L << (_la - 225)) & ((1L << (CHAR - 225)) | (1L << (VARCHAR - 225)) | (1L << (NVARCHAR - 225)) | (1L << (LONG - 225)) | (1L << (TINYTEXT - 225)) | (1L << (TEXT - 225)) | (1L << (MEDIUMTEXT - 225)) | (1L << (LONGTEXT - 225)))) != 0) || _la==NCHAR) ) {
					((StringDataTypeContext)_localctx).typeName = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(6805);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==VARYING) {
					{
					setState(6804);
					match(VARYING);
					}
				}

				setState(6808);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1023,_ctx) ) {
				case 1:
					{
					setState(6807);
					lengthOneDimension();
					}
					break;
				}
				setState(6811);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1024,_ctx) ) {
				case 1:
					{
					setState(6810);
					match(BINARY);
					}
					break;
				}
				setState(6816);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1025,_ctx) ) {
				case 1:
					{
					setState(6813);
					charSet();
					setState(6814);
					charsetName();
					}
					break;
				}
				setState(6821);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1026,_ctx) ) {
				case 1:
					{
					setState(6818);
					match(COLLATE);
					setState(6819);
					collationName();
					}
					break;
				case 2:
					{
					setState(6820);
					match(BINARY);
					}
					break;
				}
				}
				break;
			case 2:
				_localctx = new NationalVaryingStringDataTypeContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(6823);
				match(NATIONAL);
				setState(6824);
				((NationalVaryingStringDataTypeContext)_localctx).typeName = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==CHARACTER || _la==CHAR) ) {
					((NationalVaryingStringDataTypeContext)_localctx).typeName = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(6825);
				match(VARYING);
				setState(6827);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1027,_ctx) ) {
				case 1:
					{
					setState(6826);
					lengthOneDimension();
					}
					break;
				}
				setState(6830);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1028,_ctx) ) {
				case 1:
					{
					setState(6829);
					match(BINARY);
					}
					break;
				}
				}
				break;
			case 3:
				_localctx = new NationalStringDataTypeContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(6832);
				match(NATIONAL);
				setState(6833);
				((NationalStringDataTypeContext)_localctx).typeName = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==CHARACTER || _la==CHAR || _la==VARCHAR) ) {
					((NationalStringDataTypeContext)_localctx).typeName = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(6835);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1029,_ctx) ) {
				case 1:
					{
					setState(6834);
					lengthOneDimension();
					}
					break;
				}
				setState(6838);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1030,_ctx) ) {
				case 1:
					{
					setState(6837);
					match(BINARY);
					}
					break;
				}
				}
				break;
			case 4:
				_localctx = new NationalStringDataTypeContext(_localctx);
				enterOuterAlt(_localctx, 4);
				{
				setState(6840);
				match(NCHAR);
				setState(6841);
				((NationalStringDataTypeContext)_localctx).typeName = match(VARCHAR);
				setState(6843);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1031,_ctx) ) {
				case 1:
					{
					setState(6842);
					lengthOneDimension();
					}
					break;
				}
				setState(6846);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1032,_ctx) ) {
				case 1:
					{
					setState(6845);
					match(BINARY);
					}
					break;
				}
				}
				break;
			case 5:
				_localctx = new DimensionDataTypeContext(_localctx);
				enterOuterAlt(_localctx, 5);
				{
				setState(6848);
				((DimensionDataTypeContext)_localctx).typeName = _input.LT(1);
				_la = _input.LA(1);
				if ( !(((((_la - 199)) & ~0x3f) == 0 && ((1L << (_la - 199)) & ((1L << (TINYINT - 199)) | (1L << (SMALLINT - 199)) | (1L << (MEDIUMINT - 199)) | (1L << (MIDDLEINT - 199)) | (1L << (INT - 199)) | (1L << (INT1 - 199)) | (1L << (INT2 - 199)) | (1L << (INT3 - 199)) | (1L << (INT4 - 199)) | (1L << (INT8 - 199)) | (1L << (INTEGER - 199)) | (1L << (BIGINT - 199)))) != 0)) ) {
					((DimensionDataTypeContext)_localctx).typeName = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(6850);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1033,_ctx) ) {
				case 1:
					{
					setState(6849);
					lengthOneDimension();
					}
					break;
				}
				setState(6855);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,1034,_ctx);
				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
					if ( _alt==1 ) {
						{
						{
						setState(6852);
						_la = _input.LA(1);
						if ( !(_la==UNSIGNED || _la==ZEROFILL || _la==SIGNED) ) {
						_errHandler.recoverInline(this);
						}
						else {
							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
							_errHandler.reportMatch(this);
							consume();
						}
						}
						} 
					}
					setState(6857);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,1034,_ctx);
				}
				}
				break;
			case 6:
				_localctx = new DimensionDataTypeContext(_localctx);
				enterOuterAlt(_localctx, 6);
				{
				setState(6858);
				((DimensionDataTypeContext)_localctx).typeName = match(REAL);
				setState(6860);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1035,_ctx) ) {
				case 1:
					{
					setState(6859);
					lengthTwoDimension();
					}
					break;
				}
				setState(6865);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,1036,_ctx);
				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
					if ( _alt==1 ) {
						{
						{
						setState(6862);
						_la = _input.LA(1);
						if ( !(_la==UNSIGNED || _la==ZEROFILL || _la==SIGNED) ) {
						_errHandler.recoverInline(this);
						}
						else {
							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
							_errHandler.reportMatch(this);
							consume();
						}
						}
						} 
					}
					setState(6867);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,1036,_ctx);
				}
				}
				break;
			case 7:
				_localctx = new DimensionDataTypeContext(_localctx);
				enterOuterAlt(_localctx, 7);
				{
				setState(6868);
				((DimensionDataTypeContext)_localctx).typeName = match(DOUBLE);
				setState(6870);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==PRECISION) {
					{
					setState(6869);
					match(PRECISION);
					}
				}

				setState(6873);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1038,_ctx) ) {
				case 1:
					{
					setState(6872);
					lengthTwoDimension();
					}
					break;
				}
				setState(6878);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,1039,_ctx);
				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
					if ( _alt==1 ) {
						{
						{
						setState(6875);
						_la = _input.LA(1);
						if ( !(_la==UNSIGNED || _la==ZEROFILL || _la==SIGNED) ) {
						_errHandler.recoverInline(this);
						}
						else {
							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
							_errHandler.reportMatch(this);
							consume();
						}
						}
						} 
					}
					setState(6880);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,1039,_ctx);
				}
				}
				break;
			case 8:
				_localctx = new DimensionDataTypeContext(_localctx);
				enterOuterAlt(_localctx, 8);
				{
				setState(6881);
				((DimensionDataTypeContext)_localctx).typeName = _input.LT(1);
				_la = _input.LA(1);
				if ( !(((((_la - 214)) & ~0x3f) == 0 && ((1L << (_la - 214)) & ((1L << (FLOAT - 214)) | (1L << (FLOAT4 - 214)) | (1L << (FLOAT8 - 214)) | (1L << (DECIMAL - 214)) | (1L << (DEC - 214)) | (1L << (NUMERIC - 214)))) != 0) || _la==FIXED) ) {
					((DimensionDataTypeContext)_localctx).typeName = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(6883);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1040,_ctx) ) {
				case 1:
					{
					setState(6882);
					lengthTwoOptionalDimension();
					}
					break;
				}
				setState(6888);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,1041,_ctx);
				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
					if ( _alt==1 ) {
						{
						{
						setState(6885);
						_la = _input.LA(1);
						if ( !(_la==UNSIGNED || _la==ZEROFILL || _la==SIGNED) ) {
						_errHandler.recoverInline(this);
						}
						else {
							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
							_errHandler.reportMatch(this);
							consume();
						}
						}
						} 
					}
					setState(6890);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,1041,_ctx);
				}
				}
				break;
			case 9:
				_localctx = new SimpleDataTypeContext(_localctx);
				enterOuterAlt(_localctx, 9);
				{
				setState(6891);
				((SimpleDataTypeContext)_localctx).typeName = _input.LT(1);
				_la = _input.LA(1);
				if ( !(((((_la - 220)) & ~0x3f) == 0 && ((1L << (_la - 220)) & ((1L << (DATE - 220)) | (1L << (TINYBLOB - 220)) | (1L << (MEDIUMBLOB - 220)) | (1L << (LONGBLOB - 220)) | (1L << (SERIAL - 220)))) != 0) || _la==BOOL || _la==BOOLEAN) ) {
					((SimpleDataTypeContext)_localctx).typeName = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case 10:
				_localctx = new DimensionDataTypeContext(_localctx);
				enterOuterAlt(_localctx, 10);
				{
				setState(6892);
				((DimensionDataTypeContext)_localctx).typeName = _input.LT(1);
				_la = _input.LA(1);
				if ( !(((((_la - 221)) & ~0x3f) == 0 && ((1L << (_la - 221)) & ((1L << (TIME - 221)) | (1L << (TIMESTAMP - 221)) | (1L << (DATETIME - 221)) | (1L << (YEAR - 221)) | (1L << (BINARY - 221)) | (1L << (VARBINARY - 221)) | (1L << (BLOB - 221)))) != 0) || _la==BIT) ) {
					((DimensionDataTypeContext)_localctx).typeName = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(6894);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1042,_ctx) ) {
				case 1:
					{
					setState(6893);
					lengthOneDimension();
					}
					break;
				}
				}
				break;
			case 11:
				_localctx = new CollectionDataTypeContext(_localctx);
				enterOuterAlt(_localctx, 11);
				{
				setState(6896);
				((CollectionDataTypeContext)_localctx).typeName = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==SET || _la==ENUM) ) {
					((CollectionDataTypeContext)_localctx).typeName = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(6897);
				collectionOptions();
				setState(6899);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1043,_ctx) ) {
				case 1:
					{
					setState(6898);
					match(BINARY);
					}
					break;
				}
				setState(6904);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1044,_ctx) ) {
				case 1:
					{
					setState(6901);
					charSet();
					setState(6902);
					charsetName();
					}
					break;
				}
				}
				break;
			case 12:
				_localctx = new SpatialDataTypeContext(_localctx);
				enterOuterAlt(_localctx, 12);
				{
				setState(6906);
				((SpatialDataTypeContext)_localctx).typeName = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==JSON || ((((_la - 811)) & ~0x3f) == 0 && ((1L << (_la - 811)) & ((1L << (GEOMETRYCOLLECTION - 811)) | (1L << (GEOMCOLLECTION - 811)) | (1L << (GEOMETRY - 811)) | (1L << (LINESTRING - 811)) | (1L << (MULTILINESTRING - 811)) | (1L << (MULTIPOINT - 811)) | (1L << (MULTIPOLYGON - 811)) | (1L << (POINT - 811)) | (1L << (POLYGON - 811)))) != 0)) ) {
					((SpatialDataTypeContext)_localctx).typeName = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(6909);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1045,_ctx) ) {
				case 1:
					{
					setState(6907);
					match(SRID);
					setState(6908);
					decimalLiteral();
					}
					break;
				}
				}
				break;
			case 13:
				_localctx = new LongVarcharDataTypeContext(_localctx);
				enterOuterAlt(_localctx, 13);
				{
				setState(6911);
				((LongVarcharDataTypeContext)_localctx).typeName = match(LONG);
				setState(6913);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==VARCHAR) {
					{
					setState(6912);
					match(VARCHAR);
					}
				}

				setState(6916);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1047,_ctx) ) {
				case 1:
					{
					setState(6915);
					match(BINARY);
					}
					break;
				}
				setState(6921);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1048,_ctx) ) {
				case 1:
					{
					setState(6918);
					charSet();
					setState(6919);
					charsetName();
					}
					break;
				}
				setState(6925);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1049,_ctx) ) {
				case 1:
					{
					setState(6923);
					match(COLLATE);
					setState(6924);
					collationName();
					}
					break;
				}
				}
				break;
			case 14:
				_localctx = new LongVarbinaryDataTypeContext(_localctx);
				enterOuterAlt(_localctx, 14);
				{
				setState(6927);
				match(LONG);
				setState(6928);
				match(VARBINARY);
				}
				break;
			case 15:
				_localctx = new UuidDataTypeContext(_localctx);
				enterOuterAlt(_localctx, 15);
				{
				setState(6929);
				match(UUID);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CollectionOptionsContext extends ParserRuleContext {
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public List collectionOption() {
			return getRuleContexts(CollectionOptionContext.class);
		}
		public CollectionOptionContext collectionOption(int i) {
			return getRuleContext(CollectionOptionContext.class,i);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public CollectionOptionsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_collectionOptions; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCollectionOptions(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCollectionOptions(this);
		}
	}

	public final CollectionOptionsContext collectionOptions() throws RecognitionException {
		CollectionOptionsContext _localctx = new CollectionOptionsContext(_ctx, getState());
		enterRule(_localctx, 622, RULE_collectionOptions);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6932);
			match(LR_BRACKET);
			setState(6933);
			collectionOption();
			setState(6938);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(6934);
				match(COMMA);
				setState(6935);
				collectionOption();
				}
				}
				setState(6940);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(6941);
			match(RR_BRACKET);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CollectionOptionContext extends ParserRuleContext {
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public CollectionOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_collectionOption; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCollectionOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCollectionOption(this);
		}
	}

	public final CollectionOptionContext collectionOption() throws RecognitionException {
		CollectionOptionContext _localctx = new CollectionOptionContext(_ctx, getState());
		enterRule(_localctx, 624, RULE_collectionOption);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6943);
			match(STRING_LITERAL);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ConvertedDataTypeContext extends ParserRuleContext {
		public Token typeName;
		public TerminalNode CHAR() { return getToken(MySqlParser.CHAR, 0); }
		public TerminalNode SIGNED() { return getToken(MySqlParser.SIGNED, 0); }
		public TerminalNode UNSIGNED() { return getToken(MySqlParser.UNSIGNED, 0); }
		public TerminalNode ARRAY() { return getToken(MySqlParser.ARRAY, 0); }
		public TerminalNode BINARY() { return getToken(MySqlParser.BINARY, 0); }
		public TerminalNode NCHAR() { return getToken(MySqlParser.NCHAR, 0); }
		public TerminalNode FLOAT() { return getToken(MySqlParser.FLOAT, 0); }
		public TerminalNode DATE() { return getToken(MySqlParser.DATE, 0); }
		public TerminalNode DATETIME() { return getToken(MySqlParser.DATETIME, 0); }
		public TerminalNode TIME() { return getToken(MySqlParser.TIME, 0); }
		public TerminalNode YEAR() { return getToken(MySqlParser.YEAR, 0); }
		public TerminalNode JSON() { return getToken(MySqlParser.JSON, 0); }
		public TerminalNode INT() { return getToken(MySqlParser.INT, 0); }
		public TerminalNode INTEGER() { return getToken(MySqlParser.INTEGER, 0); }
		public TerminalNode DOUBLE() { return getToken(MySqlParser.DOUBLE, 0); }
		public TerminalNode DECIMAL() { return getToken(MySqlParser.DECIMAL, 0); }
		public TerminalNode DEC() { return getToken(MySqlParser.DEC, 0); }
		public LengthOneDimensionContext lengthOneDimension() {
			return getRuleContext(LengthOneDimensionContext.class,0);
		}
		public CharSetContext charSet() {
			return getRuleContext(CharSetContext.class,0);
		}
		public CharsetNameContext charsetName() {
			return getRuleContext(CharsetNameContext.class,0);
		}
		public LengthTwoOptionalDimensionContext lengthTwoOptionalDimension() {
			return getRuleContext(LengthTwoOptionalDimensionContext.class,0);
		}
		public ConvertedDataTypeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_convertedDataType; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterConvertedDataType(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitConvertedDataType(this);
		}
	}

	public final ConvertedDataTypeContext convertedDataType() throws RecognitionException {
		ConvertedDataTypeContext _localctx = new ConvertedDataTypeContext(_ctx, getState());
		enterRule(_localctx, 626, RULE_convertedDataType);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6967);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case FLOAT:
			case BINARY:
			case NCHAR:
				{
				setState(6945);
				((ConvertedDataTypeContext)_localctx).typeName = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==FLOAT || _la==BINARY || _la==NCHAR) ) {
					((ConvertedDataTypeContext)_localctx).typeName = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(6947);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LR_BRACKET) {
					{
					setState(6946);
					lengthOneDimension();
					}
				}

				}
				break;
			case CHAR:
				{
				setState(6949);
				((ConvertedDataTypeContext)_localctx).typeName = match(CHAR);
				setState(6951);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LR_BRACKET) {
					{
					setState(6950);
					lengthOneDimension();
					}
				}

				setState(6956);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==CHARACTER || _la==CHAR || _la==CHARSET) {
					{
					setState(6953);
					charSet();
					setState(6954);
					charsetName();
					}
				}

				}
				break;
			case INT:
			case INTEGER:
			case DOUBLE:
			case DATE:
			case TIME:
			case DATETIME:
			case YEAR:
			case JSON:
				{
				setState(6958);
				((ConvertedDataTypeContext)_localctx).typeName = _input.LT(1);
				_la = _input.LA(1);
				if ( !(((((_la - 203)) & ~0x3f) == 0 && ((1L << (_la - 203)) & ((1L << (INT - 203)) | (1L << (INTEGER - 203)) | (1L << (DOUBLE - 203)) | (1L << (DATE - 203)) | (1L << (TIME - 203)) | (1L << (DATETIME - 203)) | (1L << (YEAR - 203)))) != 0) || _la==JSON) ) {
					((ConvertedDataTypeContext)_localctx).typeName = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case DECIMAL:
			case DEC:
				{
				setState(6959);
				((ConvertedDataTypeContext)_localctx).typeName = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==DECIMAL || _la==DEC) ) {
					((ConvertedDataTypeContext)_localctx).typeName = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(6961);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LR_BRACKET) {
					{
					setState(6960);
					lengthTwoOptionalDimension();
					}
				}

				}
				break;
			case UNSIGNED:
			case SIGNED:
				{
				setState(6963);
				_la = _input.LA(1);
				if ( !(_la==UNSIGNED || _la==SIGNED) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(6965);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==INT || _la==INTEGER) {
					{
					setState(6964);
					_la = _input.LA(1);
					if ( !(_la==INT || _la==INTEGER) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
				}

				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			setState(6970);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ARRAY) {
				{
				setState(6969);
				match(ARRAY);
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class LengthOneDimensionContext extends ParserRuleContext {
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public DecimalLiteralContext decimalLiteral() {
			return getRuleContext(DecimalLiteralContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public LengthOneDimensionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_lengthOneDimension; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterLengthOneDimension(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitLengthOneDimension(this);
		}
	}

	public final LengthOneDimensionContext lengthOneDimension() throws RecognitionException {
		LengthOneDimensionContext _localctx = new LengthOneDimensionContext(_ctx, getState());
		enterRule(_localctx, 628, RULE_lengthOneDimension);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6972);
			match(LR_BRACKET);
			setState(6973);
			decimalLiteral();
			setState(6974);
			match(RR_BRACKET);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class LengthTwoDimensionContext extends ParserRuleContext {
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public List decimalLiteral() {
			return getRuleContexts(DecimalLiteralContext.class);
		}
		public DecimalLiteralContext decimalLiteral(int i) {
			return getRuleContext(DecimalLiteralContext.class,i);
		}
		public TerminalNode COMMA() { return getToken(MySqlParser.COMMA, 0); }
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public LengthTwoDimensionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_lengthTwoDimension; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterLengthTwoDimension(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitLengthTwoDimension(this);
		}
	}

	public final LengthTwoDimensionContext lengthTwoDimension() throws RecognitionException {
		LengthTwoDimensionContext _localctx = new LengthTwoDimensionContext(_ctx, getState());
		enterRule(_localctx, 630, RULE_lengthTwoDimension);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6976);
			match(LR_BRACKET);
			setState(6977);
			decimalLiteral();
			setState(6978);
			match(COMMA);
			setState(6979);
			decimalLiteral();
			setState(6980);
			match(RR_BRACKET);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class LengthTwoOptionalDimensionContext extends ParserRuleContext {
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public List decimalLiteral() {
			return getRuleContexts(DecimalLiteralContext.class);
		}
		public DecimalLiteralContext decimalLiteral(int i) {
			return getRuleContext(DecimalLiteralContext.class,i);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TerminalNode COMMA() { return getToken(MySqlParser.COMMA, 0); }
		public LengthTwoOptionalDimensionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_lengthTwoOptionalDimension; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterLengthTwoOptionalDimension(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitLengthTwoOptionalDimension(this);
		}
	}

	public final LengthTwoOptionalDimensionContext lengthTwoOptionalDimension() throws RecognitionException {
		LengthTwoOptionalDimensionContext _localctx = new LengthTwoOptionalDimensionContext(_ctx, getState());
		enterRule(_localctx, 632, RULE_lengthTwoOptionalDimension);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6982);
			match(LR_BRACKET);
			setState(6983);
			decimalLiteral();
			setState(6986);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==COMMA) {
				{
				setState(6984);
				match(COMMA);
				setState(6985);
				decimalLiteral();
				}
			}

			setState(6988);
			match(RR_BRACKET);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class UidListContext extends ParserRuleContext {
		public List uid() {
			return getRuleContexts(UidContext.class);
		}
		public UidContext uid(int i) {
			return getRuleContext(UidContext.class,i);
		}
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public UidListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_uidList; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterUidList(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitUidList(this);
		}
	}

	public final UidListContext uidList() throws RecognitionException {
		UidListContext _localctx = new UidListContext(_ctx, getState());
		enterRule(_localctx, 634, RULE_uidList);
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(6990);
			uid();
			setState(6995);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,1060,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					{
					{
					setState(6991);
					match(COMMA);
					setState(6992);
					uid();
					}
					} 
				}
				setState(6997);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,1060,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FullColumnNameListContext extends ParserRuleContext {
		public List fullColumnName() {
			return getRuleContexts(FullColumnNameContext.class);
		}
		public FullColumnNameContext fullColumnName(int i) {
			return getRuleContext(FullColumnNameContext.class,i);
		}
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public FullColumnNameListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_fullColumnNameList; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterFullColumnNameList(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitFullColumnNameList(this);
		}
	}

	public final FullColumnNameListContext fullColumnNameList() throws RecognitionException {
		FullColumnNameListContext _localctx = new FullColumnNameListContext(_ctx, getState());
		enterRule(_localctx, 636, RULE_fullColumnNameList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6998);
			fullColumnName();
			setState(7003);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(6999);
				match(COMMA);
				setState(7000);
				fullColumnName();
				}
				}
				setState(7005);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TablesContext extends ParserRuleContext {
		public List tableName() {
			return getRuleContexts(TableNameContext.class);
		}
		public TableNameContext tableName(int i) {
			return getRuleContext(TableNameContext.class,i);
		}
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public TablesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_tables; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTables(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTables(this);
		}
	}

	public final TablesContext tables() throws RecognitionException {
		TablesContext _localctx = new TablesContext(_ctx, getState());
		enterRule(_localctx, 638, RULE_tables);
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(7006);
			tableName();
			setState(7011);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,1062,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					{
					{
					setState(7007);
					match(COMMA);
					setState(7008);
					tableName();
					}
					} 
				}
				setState(7013);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,1062,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IndexColumnNamesContext extends ParserRuleContext {
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public List indexColumnName() {
			return getRuleContexts(IndexColumnNameContext.class);
		}
		public IndexColumnNameContext indexColumnName(int i) {
			return getRuleContext(IndexColumnNameContext.class,i);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public IndexColumnNamesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_indexColumnNames; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterIndexColumnNames(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitIndexColumnNames(this);
		}
	}

	public final IndexColumnNamesContext indexColumnNames() throws RecognitionException {
		IndexColumnNamesContext _localctx = new IndexColumnNamesContext(_ctx, getState());
		enterRule(_localctx, 640, RULE_indexColumnNames);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7014);
			match(LR_BRACKET);
			setState(7015);
			indexColumnName();
			setState(7020);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(7016);
				match(COMMA);
				setState(7017);
				indexColumnName();
				}
				}
				setState(7022);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(7023);
			match(RR_BRACKET);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ExpressionsContext extends ParserRuleContext {
		public List expression() {
			return getRuleContexts(ExpressionContext.class);
		}
		public ExpressionContext expression(int i) {
			return getRuleContext(ExpressionContext.class,i);
		}
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public ExpressionsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_expressions; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterExpressions(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitExpressions(this);
		}
	}

	public final ExpressionsContext expressions() throws RecognitionException {
		ExpressionsContext _localctx = new ExpressionsContext(_ctx, getState());
		enterRule(_localctx, 642, RULE_expressions);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7025);
			expression(0);
			setState(7030);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(7026);
				match(COMMA);
				setState(7027);
				expression(0);
				}
				}
				setState(7032);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ExpressionsWithDefaultsContext extends ParserRuleContext {
		public List expressionOrDefault() {
			return getRuleContexts(ExpressionOrDefaultContext.class);
		}
		public ExpressionOrDefaultContext expressionOrDefault(int i) {
			return getRuleContext(ExpressionOrDefaultContext.class,i);
		}
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public ExpressionsWithDefaultsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_expressionsWithDefaults; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterExpressionsWithDefaults(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitExpressionsWithDefaults(this);
		}
	}

	public final ExpressionsWithDefaultsContext expressionsWithDefaults() throws RecognitionException {
		ExpressionsWithDefaultsContext _localctx = new ExpressionsWithDefaultsContext(_ctx, getState());
		enterRule(_localctx, 644, RULE_expressionsWithDefaults);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7033);
			expressionOrDefault();
			setState(7038);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(7034);
				match(COMMA);
				setState(7035);
				expressionOrDefault();
				}
				}
				setState(7040);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ConstantsContext extends ParserRuleContext {
		public List constant() {
			return getRuleContexts(ConstantContext.class);
		}
		public ConstantContext constant(int i) {
			return getRuleContext(ConstantContext.class,i);
		}
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public ConstantsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_constants; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterConstants(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitConstants(this);
		}
	}

	public final ConstantsContext constants() throws RecognitionException {
		ConstantsContext _localctx = new ConstantsContext(_ctx, getState());
		enterRule(_localctx, 646, RULE_constants);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7041);
			constant();
			setState(7046);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(7042);
				match(COMMA);
				setState(7043);
				constant();
				}
				}
				setState(7048);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SimpleStringsContext extends ParserRuleContext {
		public List STRING_LITERAL() { return getTokens(MySqlParser.STRING_LITERAL); }
		public TerminalNode STRING_LITERAL(int i) {
			return getToken(MySqlParser.STRING_LITERAL, i);
		}
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public SimpleStringsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_simpleStrings; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSimpleStrings(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSimpleStrings(this);
		}
	}

	public final SimpleStringsContext simpleStrings() throws RecognitionException {
		SimpleStringsContext _localctx = new SimpleStringsContext(_ctx, getState());
		enterRule(_localctx, 648, RULE_simpleStrings);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7049);
			match(STRING_LITERAL);
			setState(7054);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(7050);
				match(COMMA);
				setState(7051);
				match(STRING_LITERAL);
				}
				}
				setState(7056);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class UserVariablesContext extends ParserRuleContext {
		public List LOCAL_ID() { return getTokens(MySqlParser.LOCAL_ID); }
		public TerminalNode LOCAL_ID(int i) {
			return getToken(MySqlParser.LOCAL_ID, i);
		}
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public UserVariablesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_userVariables; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterUserVariables(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitUserVariables(this);
		}
	}

	public final UserVariablesContext userVariables() throws RecognitionException {
		UserVariablesContext _localctx = new UserVariablesContext(_ctx, getState());
		enterRule(_localctx, 650, RULE_userVariables);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7057);
			match(LOCAL_ID);
			setState(7062);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(7058);
				match(COMMA);
				setState(7059);
				match(LOCAL_ID);
				}
				}
				setState(7064);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DefaultValueContext extends ParserRuleContext {
		public TerminalNode NULL_LITERAL() { return getToken(MySqlParser.NULL_LITERAL, 0); }
		public TerminalNode CAST() { return getToken(MySqlParser.CAST, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode AS() { return getToken(MySqlParser.AS, 0); }
		public ConvertedDataTypeContext convertedDataType() {
			return getRuleContext(ConvertedDataTypeContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public ConstantContext constant() {
			return getRuleContext(ConstantContext.class,0);
		}
		public UnaryOperatorContext unaryOperator() {
			return getRuleContext(UnaryOperatorContext.class,0);
		}
		public List currentTimestamp() {
			return getRuleContexts(CurrentTimestampContext.class);
		}
		public CurrentTimestampContext currentTimestamp(int i) {
			return getRuleContext(CurrentTimestampContext.class,i);
		}
		public TerminalNode ON() { return getToken(MySqlParser.ON, 0); }
		public TerminalNode UPDATE() { return getToken(MySqlParser.UPDATE, 0); }
		public FullIdContext fullId() {
			return getRuleContext(FullIdContext.class,0);
		}
		public TerminalNode LASTVAL() { return getToken(MySqlParser.LASTVAL, 0); }
		public TerminalNode NEXTVAL() { return getToken(MySqlParser.NEXTVAL, 0); }
		public TerminalNode VALUE() { return getToken(MySqlParser.VALUE, 0); }
		public TerminalNode FOR() { return getToken(MySqlParser.FOR, 0); }
		public TerminalNode PREVIOUS() { return getToken(MySqlParser.PREVIOUS, 0); }
		public TerminalNode NEXT() { return getToken(MySqlParser.NEXT, 0); }
		public DefaultValueContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_defaultValue; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDefaultValue(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDefaultValue(this);
		}
	}

	public final DefaultValueContext defaultValue() throws RecognitionException {
		DefaultValueContext _localctx = new DefaultValueContext(_ctx, getState());
		enterRule(_localctx, 652, RULE_defaultValue);
		int _la;
		try {
			setState(7100);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1071,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(7065);
				match(NULL_LITERAL);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(7066);
				match(CAST);
				setState(7067);
				match(LR_BRACKET);
				setState(7068);
				expression(0);
				setState(7069);
				match(AS);
				setState(7070);
				convertedDataType();
				setState(7071);
				match(RR_BRACKET);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(7074);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1069,_ctx) ) {
				case 1:
					{
					setState(7073);
					unaryOperator();
					}
					break;
				}
				setState(7076);
				constant();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(7077);
				currentTimestamp();
				setState(7081);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1070,_ctx) ) {
				case 1:
					{
					setState(7078);
					match(ON);
					setState(7079);
					match(UPDATE);
					setState(7080);
					currentTimestamp();
					}
					break;
				}
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(7083);
				match(LR_BRACKET);
				setState(7084);
				expression(0);
				setState(7085);
				match(RR_BRACKET);
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(7087);
				_la = _input.LA(1);
				if ( !(_la==LASTVAL || _la==NEXTVAL) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(7088);
				match(LR_BRACKET);
				setState(7089);
				fullId();
				setState(7090);
				match(RR_BRACKET);
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(7092);
				match(LR_BRACKET);
				setState(7093);
				_la = _input.LA(1);
				if ( !(_la==NEXT || _la==PREVIOUS) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(7094);
				match(VALUE);
				setState(7095);
				match(FOR);
				setState(7096);
				fullId();
				setState(7097);
				match(RR_BRACKET);
				}
				break;
			case 8:
				enterOuterAlt(_localctx, 8);
				{
				setState(7099);
				expression(0);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CurrentTimestampContext extends ParserRuleContext {
		public TerminalNode NOW() { return getToken(MySqlParser.NOW, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TerminalNode CURRENT_TIMESTAMP() { return getToken(MySqlParser.CURRENT_TIMESTAMP, 0); }
		public TerminalNode LOCALTIME() { return getToken(MySqlParser.LOCALTIME, 0); }
		public TerminalNode LOCALTIMESTAMP() { return getToken(MySqlParser.LOCALTIMESTAMP, 0); }
		public TerminalNode CURDATE() { return getToken(MySqlParser.CURDATE, 0); }
		public TerminalNode CURTIME() { return getToken(MySqlParser.CURTIME, 0); }
		public DecimalLiteralContext decimalLiteral() {
			return getRuleContext(DecimalLiteralContext.class,0);
		}
		public CurrentTimestampContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_currentTimestamp; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCurrentTimestamp(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCurrentTimestamp(this);
		}
	}

	public final CurrentTimestampContext currentTimestamp() throws RecognitionException {
		CurrentTimestampContext _localctx = new CurrentTimestampContext(_ctx, getState());
		enterRule(_localctx, 654, RULE_currentTimestamp);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7116);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case CURRENT_TIMESTAMP:
			case LOCALTIME:
			case CURDATE:
			case CURTIME:
			case LOCALTIMESTAMP:
				{
				setState(7102);
				_la = _input.LA(1);
				if ( !(((((_la - 318)) & ~0x3f) == 0 && ((1L << (_la - 318)) & ((1L << (CURRENT_TIMESTAMP - 318)) | (1L << (LOCALTIME - 318)) | (1L << (CURDATE - 318)) | (1L << (CURTIME - 318)) | (1L << (LOCALTIMESTAMP - 318)))) != 0)) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(7108);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1073,_ctx) ) {
				case 1:
					{
					setState(7103);
					match(LR_BRACKET);
					setState(7105);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (((((_la - 1165)) & ~0x3f) == 0 && ((1L << (_la - 1165)) & ((1L << (ZERO_DECIMAL - 1165)) | (1L << (ONE_DECIMAL - 1165)) | (1L << (TWO_DECIMAL - 1165)) | (1L << (DECIMAL_LITERAL - 1165)) | (1L << (REAL_LITERAL - 1165)))) != 0)) {
						{
						setState(7104);
						decimalLiteral();
						}
					}

					setState(7107);
					match(RR_BRACKET);
					}
					break;
				}
				}
				break;
			case NOW:
				{
				setState(7110);
				match(NOW);
				setState(7111);
				match(LR_BRACKET);
				setState(7113);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (((((_la - 1165)) & ~0x3f) == 0 && ((1L << (_la - 1165)) & ((1L << (ZERO_DECIMAL - 1165)) | (1L << (ONE_DECIMAL - 1165)) | (1L << (TWO_DECIMAL - 1165)) | (1L << (DECIMAL_LITERAL - 1165)) | (1L << (REAL_LITERAL - 1165)))) != 0)) {
					{
					setState(7112);
					decimalLiteral();
					}
				}

				setState(7115);
				match(RR_BRACKET);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ExpressionOrDefaultContext extends ParserRuleContext {
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode DEFAULT() { return getToken(MySqlParser.DEFAULT, 0); }
		public ExpressionOrDefaultContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_expressionOrDefault; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterExpressionOrDefault(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitExpressionOrDefault(this);
		}
	}

	public final ExpressionOrDefaultContext expressionOrDefault() throws RecognitionException {
		ExpressionOrDefaultContext _localctx = new ExpressionOrDefaultContext(_ctx, getState());
		enterRule(_localctx, 656, RULE_expressionOrDefault);
		try {
			setState(7120);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1076,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(7118);
				expression(0);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(7119);
				match(DEFAULT);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IfExistsContext extends ParserRuleContext {
		public TerminalNode IF() { return getToken(MySqlParser.IF, 0); }
		public TerminalNode EXISTS() { return getToken(MySqlParser.EXISTS, 0); }
		public IfExistsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_ifExists; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterIfExists(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitIfExists(this);
		}
	}

	public final IfExistsContext ifExists() throws RecognitionException {
		IfExistsContext _localctx = new IfExistsContext(_ctx, getState());
		enterRule(_localctx, 658, RULE_ifExists);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7122);
			match(IF);
			setState(7123);
			match(EXISTS);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IfNotExistsContext extends ParserRuleContext {
		public TerminalNode IF() { return getToken(MySqlParser.IF, 0); }
		public TerminalNode NOT() { return getToken(MySqlParser.NOT, 0); }
		public TerminalNode EXISTS() { return getToken(MySqlParser.EXISTS, 0); }
		public IfNotExistsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_ifNotExists; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterIfNotExists(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitIfNotExists(this);
		}
	}

	public final IfNotExistsContext ifNotExists() throws RecognitionException {
		IfNotExistsContext _localctx = new IfNotExistsContext(_ctx, getState());
		enterRule(_localctx, 660, RULE_ifNotExists);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7125);
			match(IF);
			setState(7126);
			match(NOT);
			setState(7127);
			match(EXISTS);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class OrReplaceContext extends ParserRuleContext {
		public TerminalNode OR() { return getToken(MySqlParser.OR, 0); }
		public TerminalNode REPLACE() { return getToken(MySqlParser.REPLACE, 0); }
		public OrReplaceContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_orReplace; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterOrReplace(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitOrReplace(this);
		}
	}

	public final OrReplaceContext orReplace() throws RecognitionException {
		OrReplaceContext _localctx = new OrReplaceContext(_ctx, getState());
		enterRule(_localctx, 662, RULE_orReplace);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7129);
			match(OR);
			setState(7130);
			match(REPLACE);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class WaitNowaitClauseContext extends ParserRuleContext {
		public TerminalNode WAIT() { return getToken(MySqlParser.WAIT, 0); }
		public DecimalLiteralContext decimalLiteral() {
			return getRuleContext(DecimalLiteralContext.class,0);
		}
		public TerminalNode NOWAIT() { return getToken(MySqlParser.NOWAIT, 0); }
		public WaitNowaitClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_waitNowaitClause; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterWaitNowaitClause(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitWaitNowaitClause(this);
		}
	}

	public final WaitNowaitClauseContext waitNowaitClause() throws RecognitionException {
		WaitNowaitClauseContext _localctx = new WaitNowaitClauseContext(_ctx, getState());
		enterRule(_localctx, 664, RULE_waitNowaitClause);
		try {
			setState(7135);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case WAIT:
				enterOuterAlt(_localctx, 1);
				{
				setState(7132);
				match(WAIT);
				setState(7133);
				decimalLiteral();
				}
				break;
			case NOWAIT:
				enterOuterAlt(_localctx, 2);
				{
				setState(7134);
				match(NOWAIT);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class LockOptionContext extends ParserRuleContext {
		public WaitNowaitClauseContext waitNowaitClause() {
			return getRuleContext(WaitNowaitClauseContext.class,0);
		}
		public TerminalNode SKIP_() { return getToken(MySqlParser.SKIP_, 0); }
		public TerminalNode LOCKED() { return getToken(MySqlParser.LOCKED, 0); }
		public LockOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_lockOption; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterLockOption(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitLockOption(this);
		}
	}

	public final LockOptionContext lockOption() throws RecognitionException {
		LockOptionContext _localctx = new LockOptionContext(_ctx, getState());
		enterRule(_localctx, 666, RULE_lockOption);
		try {
			setState(7140);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case NOWAIT:
			case WAIT:
				enterOuterAlt(_localctx, 1);
				{
				setState(7137);
				waitNowaitClause();
				}
				break;
			case SKIP_:
				enterOuterAlt(_localctx, 2);
				{
				setState(7138);
				match(SKIP_);
				setState(7139);
				match(LOCKED);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FunctionCallContext extends ParserRuleContext {
		public FunctionCallContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_functionCall; }
	 
		public FunctionCallContext() { }
		public void copyFrom(FunctionCallContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class SpecificFunctionCallContext extends FunctionCallContext {
		public SpecificFunctionContext specificFunction() {
			return getRuleContext(SpecificFunctionContext.class,0);
		}
		public SpecificFunctionCallContext(FunctionCallContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSpecificFunctionCall(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSpecificFunctionCall(this);
		}
	}
	public static class PasswordFunctionCallContext extends FunctionCallContext {
		public PasswordFunctionClauseContext passwordFunctionClause() {
			return getRuleContext(PasswordFunctionClauseContext.class,0);
		}
		public PasswordFunctionCallContext(FunctionCallContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPasswordFunctionCall(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPasswordFunctionCall(this);
		}
	}
	public static class UdfFunctionCallContext extends FunctionCallContext {
		public FullIdContext fullId() {
			return getRuleContext(FullIdContext.class,0);
		}
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public FunctionArgsContext functionArgs() {
			return getRuleContext(FunctionArgsContext.class,0);
		}
		public UdfFunctionCallContext(FunctionCallContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterUdfFunctionCall(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitUdfFunctionCall(this);
		}
	}
	public static class NonAggregateFunctionCallContext extends FunctionCallContext {
		public NonAggregateWindowedFunctionContext nonAggregateWindowedFunction() {
			return getRuleContext(NonAggregateWindowedFunctionContext.class,0);
		}
		public NonAggregateFunctionCallContext(FunctionCallContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterNonAggregateFunctionCall(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitNonAggregateFunctionCall(this);
		}
	}
	public static class AggregateFunctionCallContext extends FunctionCallContext {
		public AggregateWindowedFunctionContext aggregateWindowedFunction() {
			return getRuleContext(AggregateWindowedFunctionContext.class,0);
		}
		public AggregateFunctionCallContext(FunctionCallContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAggregateFunctionCall(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAggregateFunctionCall(this);
		}
	}
	public static class ScalarFunctionCallContext extends FunctionCallContext {
		public ScalarFunctionNameContext scalarFunctionName() {
			return getRuleContext(ScalarFunctionNameContext.class,0);
		}
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public FunctionArgsContext functionArgs() {
			return getRuleContext(FunctionArgsContext.class,0);
		}
		public ScalarFunctionCallContext(FunctionCallContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterScalarFunctionCall(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitScalarFunctionCall(this);
		}
	}

	public final FunctionCallContext functionCall() throws RecognitionException {
		FunctionCallContext _localctx = new FunctionCallContext(_ctx, getState());
		enterRule(_localctx, 668, RULE_functionCall);
		try {
			setState(7160);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1081,_ctx) ) {
			case 1:
				_localctx = new SpecificFunctionCallContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(7142);
				specificFunction();
				}
				break;
			case 2:
				_localctx = new AggregateFunctionCallContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(7143);
				aggregateWindowedFunction();
				}
				break;
			case 3:
				_localctx = new NonAggregateFunctionCallContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(7144);
				nonAggregateWindowedFunction();
				}
				break;
			case 4:
				_localctx = new ScalarFunctionCallContext(_localctx);
				enterOuterAlt(_localctx, 4);
				{
				setState(7145);
				scalarFunctionName();
				setState(7146);
				match(LR_BRACKET);
				setState(7148);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1079,_ctx) ) {
				case 1:
					{
					setState(7147);
					functionArgs();
					}
					break;
				}
				setState(7150);
				match(RR_BRACKET);
				}
				break;
			case 5:
				_localctx = new UdfFunctionCallContext(_localctx);
				enterOuterAlt(_localctx, 5);
				{
				setState(7152);
				fullId();
				setState(7153);
				match(LR_BRACKET);
				setState(7155);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1080,_ctx) ) {
				case 1:
					{
					setState(7154);
					functionArgs();
					}
					break;
				}
				setState(7157);
				match(RR_BRACKET);
				}
				break;
			case 6:
				_localctx = new PasswordFunctionCallContext(_localctx);
				enterOuterAlt(_localctx, 6);
				{
				setState(7159);
				passwordFunctionClause();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SpecificFunctionContext extends ParserRuleContext {
		public SpecificFunctionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_specificFunction; }
	 
		public SpecificFunctionContext() { }
		public void copyFrom(SpecificFunctionContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class PositionFunctionCallContext extends SpecificFunctionContext {
		public StringLiteralContext positionString;
		public ExpressionContext positionExpression;
		public StringLiteralContext inString;
		public ExpressionContext inExpression;
		public TerminalNode POSITION() { return getToken(MySqlParser.POSITION, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public TerminalNode IN() { return getToken(MySqlParser.IN, 0); }
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public List stringLiteral() {
			return getRuleContexts(StringLiteralContext.class);
		}
		public StringLiteralContext stringLiteral(int i) {
			return getRuleContext(StringLiteralContext.class,i);
		}
		public List expression() {
			return getRuleContexts(ExpressionContext.class);
		}
		public ExpressionContext expression(int i) {
			return getRuleContext(ExpressionContext.class,i);
		}
		public PositionFunctionCallContext(SpecificFunctionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPositionFunctionCall(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPositionFunctionCall(this);
		}
	}
	public static class TrimFunctionCallContext extends SpecificFunctionContext {
		public Token positioinForm;
		public StringLiteralContext sourceString;
		public ExpressionContext sourceExpression;
		public StringLiteralContext fromString;
		public ExpressionContext fromExpression;
		public TerminalNode TRIM() { return getToken(MySqlParser.TRIM, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public TerminalNode FROM() { return getToken(MySqlParser.FROM, 0); }
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TerminalNode BOTH() { return getToken(MySqlParser.BOTH, 0); }
		public TerminalNode LEADING() { return getToken(MySqlParser.LEADING, 0); }
		public TerminalNode TRAILING() { return getToken(MySqlParser.TRAILING, 0); }
		public List stringLiteral() {
			return getRuleContexts(StringLiteralContext.class);
		}
		public StringLiteralContext stringLiteral(int i) {
			return getRuleContext(StringLiteralContext.class,i);
		}
		public List expression() {
			return getRuleContexts(ExpressionContext.class);
		}
		public ExpressionContext expression(int i) {
			return getRuleContext(ExpressionContext.class,i);
		}
		public TrimFunctionCallContext(SpecificFunctionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTrimFunctionCall(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTrimFunctionCall(this);
		}
	}
	public static class JsonValueFunctionCallContext extends SpecificFunctionContext {
		public TerminalNode JSON_VALUE() { return getToken(MySqlParser.JSON_VALUE, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public List expression() {
			return getRuleContexts(ExpressionContext.class);
		}
		public ExpressionContext expression(int i) {
			return getRuleContext(ExpressionContext.class,i);
		}
		public TerminalNode COMMA() { return getToken(MySqlParser.COMMA, 0); }
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TerminalNode RETURNING() { return getToken(MySqlParser.RETURNING, 0); }
		public ConvertedDataTypeContext convertedDataType() {
			return getRuleContext(ConvertedDataTypeContext.class,0);
		}
		public JsonOnEmptyContext jsonOnEmpty() {
			return getRuleContext(JsonOnEmptyContext.class,0);
		}
		public JsonOnErrorContext jsonOnError() {
			return getRuleContext(JsonOnErrorContext.class,0);
		}
		public JsonValueFunctionCallContext(SpecificFunctionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterJsonValueFunctionCall(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitJsonValueFunctionCall(this);
		}
	}
	public static class CaseFunctionCallContext extends SpecificFunctionContext {
		public FunctionArgContext elseArg;
		public TerminalNode CASE() { return getToken(MySqlParser.CASE, 0); }
		public TerminalNode END() { return getToken(MySqlParser.END, 0); }
		public List caseFuncAlternative() {
			return getRuleContexts(CaseFuncAlternativeContext.class);
		}
		public CaseFuncAlternativeContext caseFuncAlternative(int i) {
			return getRuleContext(CaseFuncAlternativeContext.class,i);
		}
		public TerminalNode ELSE() { return getToken(MySqlParser.ELSE, 0); }
		public FunctionArgContext functionArg() {
			return getRuleContext(FunctionArgContext.class,0);
		}
		public CaseFunctionCallContext(SpecificFunctionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCaseFunctionCall(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCaseFunctionCall(this);
		}
	}
	public static class ExtractFunctionCallContext extends SpecificFunctionContext {
		public StringLiteralContext sourceString;
		public ExpressionContext sourceExpression;
		public TerminalNode EXTRACT() { return getToken(MySqlParser.EXTRACT, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public IntervalTypeContext intervalType() {
			return getRuleContext(IntervalTypeContext.class,0);
		}
		public TerminalNode FROM() { return getToken(MySqlParser.FROM, 0); }
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public StringLiteralContext stringLiteral() {
			return getRuleContext(StringLiteralContext.class,0);
		}
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public ExtractFunctionCallContext(SpecificFunctionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterExtractFunctionCall(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitExtractFunctionCall(this);
		}
	}
	public static class DataTypeFunctionCallContext extends SpecificFunctionContext {
		public Token separator;
		public TerminalNode CONVERT() { return getToken(MySqlParser.CONVERT, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public ConvertedDataTypeContext convertedDataType() {
			return getRuleContext(ConvertedDataTypeContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TerminalNode COMMA() { return getToken(MySqlParser.COMMA, 0); }
		public TerminalNode USING() { return getToken(MySqlParser.USING, 0); }
		public CharsetNameContext charsetName() {
			return getRuleContext(CharsetNameContext.class,0);
		}
		public TerminalNode CAST() { return getToken(MySqlParser.CAST, 0); }
		public TerminalNode AS() { return getToken(MySqlParser.AS, 0); }
		public DataTypeFunctionCallContext(SpecificFunctionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDataTypeFunctionCall(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDataTypeFunctionCall(this);
		}
	}
	public static class ValuesFunctionCallContext extends SpecificFunctionContext {
		public TerminalNode VALUES() { return getToken(MySqlParser.VALUES, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public FullColumnNameContext fullColumnName() {
			return getRuleContext(FullColumnNameContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public ValuesFunctionCallContext(SpecificFunctionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterValuesFunctionCall(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitValuesFunctionCall(this);
		}
	}
	public static class CaseExpressionFunctionCallContext extends SpecificFunctionContext {
		public FunctionArgContext elseArg;
		public TerminalNode CASE() { return getToken(MySqlParser.CASE, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode END() { return getToken(MySqlParser.END, 0); }
		public List caseFuncAlternative() {
			return getRuleContexts(CaseFuncAlternativeContext.class);
		}
		public CaseFuncAlternativeContext caseFuncAlternative(int i) {
			return getRuleContext(CaseFuncAlternativeContext.class,i);
		}
		public TerminalNode ELSE() { return getToken(MySqlParser.ELSE, 0); }
		public FunctionArgContext functionArg() {
			return getRuleContext(FunctionArgContext.class,0);
		}
		public CaseExpressionFunctionCallContext(SpecificFunctionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCaseExpressionFunctionCall(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCaseExpressionFunctionCall(this);
		}
	}
	public static class CurrentUserContext extends SpecificFunctionContext {
		public CurrentUserExpressionContext currentUserExpression() {
			return getRuleContext(CurrentUserExpressionContext.class,0);
		}
		public CurrentUserContext(SpecificFunctionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCurrentUser(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCurrentUser(this);
		}
	}
	public static class SimpleFunctionCallContext extends SpecificFunctionContext {
		public TerminalNode CURRENT_DATE() { return getToken(MySqlParser.CURRENT_DATE, 0); }
		public TerminalNode CURRENT_TIME() { return getToken(MySqlParser.CURRENT_TIME, 0); }
		public TerminalNode CURRENT_TIMESTAMP() { return getToken(MySqlParser.CURRENT_TIMESTAMP, 0); }
		public TerminalNode CURDATE() { return getToken(MySqlParser.CURDATE, 0); }
		public TerminalNode CURTIME() { return getToken(MySqlParser.CURTIME, 0); }
		public TerminalNode LOCALTIME() { return getToken(MySqlParser.LOCALTIME, 0); }
		public TerminalNode UTC_TIMESTAMP() { return getToken(MySqlParser.UTC_TIMESTAMP, 0); }
		public TerminalNode SCHEMA() { return getToken(MySqlParser.SCHEMA, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public SimpleFunctionCallContext(SpecificFunctionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSimpleFunctionCall(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSimpleFunctionCall(this);
		}
	}
	public static class CharFunctionCallContext extends SpecificFunctionContext {
		public TerminalNode CHAR() { return getToken(MySqlParser.CHAR, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public FunctionArgsContext functionArgs() {
			return getRuleContext(FunctionArgsContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TerminalNode USING() { return getToken(MySqlParser.USING, 0); }
		public CharsetNameContext charsetName() {
			return getRuleContext(CharsetNameContext.class,0);
		}
		public CharFunctionCallContext(SpecificFunctionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCharFunctionCall(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCharFunctionCall(this);
		}
	}
	public static class WeightFunctionCallContext extends SpecificFunctionContext {
		public Token stringFormat;
		public TerminalNode WEIGHT_STRING() { return getToken(MySqlParser.WEIGHT_STRING, 0); }
		public List LR_BRACKET() { return getTokens(MySqlParser.LR_BRACKET); }
		public TerminalNode LR_BRACKET(int i) {
			return getToken(MySqlParser.LR_BRACKET, i);
		}
		public List RR_BRACKET() { return getTokens(MySqlParser.RR_BRACKET); }
		public TerminalNode RR_BRACKET(int i) {
			return getToken(MySqlParser.RR_BRACKET, i);
		}
		public StringLiteralContext stringLiteral() {
			return getRuleContext(StringLiteralContext.class,0);
		}
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode AS() { return getToken(MySqlParser.AS, 0); }
		public DecimalLiteralContext decimalLiteral() {
			return getRuleContext(DecimalLiteralContext.class,0);
		}
		public LevelsInWeightStringContext levelsInWeightString() {
			return getRuleContext(LevelsInWeightStringContext.class,0);
		}
		public TerminalNode CHAR() { return getToken(MySqlParser.CHAR, 0); }
		public TerminalNode BINARY() { return getToken(MySqlParser.BINARY, 0); }
		public WeightFunctionCallContext(SpecificFunctionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterWeightFunctionCall(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitWeightFunctionCall(this);
		}
	}
	public static class GetFormatFunctionCallContext extends SpecificFunctionContext {
		public Token datetimeFormat;
		public TerminalNode GET_FORMAT() { return getToken(MySqlParser.GET_FORMAT, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public TerminalNode COMMA() { return getToken(MySqlParser.COMMA, 0); }
		public StringLiteralContext stringLiteral() {
			return getRuleContext(StringLiteralContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TerminalNode DATE() { return getToken(MySqlParser.DATE, 0); }
		public TerminalNode TIME() { return getToken(MySqlParser.TIME, 0); }
		public TerminalNode DATETIME() { return getToken(MySqlParser.DATETIME, 0); }
		public GetFormatFunctionCallContext(SpecificFunctionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterGetFormatFunctionCall(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitGetFormatFunctionCall(this);
		}
	}
	public static class SubstrFunctionCallContext extends SpecificFunctionContext {
		public StringLiteralContext sourceString;
		public ExpressionContext sourceExpression;
		public DecimalLiteralContext fromDecimal;
		public ExpressionContext fromExpression;
		public DecimalLiteralContext forDecimal;
		public ExpressionContext forExpression;
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public TerminalNode FROM() { return getToken(MySqlParser.FROM, 0); }
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TerminalNode SUBSTR() { return getToken(MySqlParser.SUBSTR, 0); }
		public TerminalNode SUBSTRING() { return getToken(MySqlParser.SUBSTRING, 0); }
		public StringLiteralContext stringLiteral() {
			return getRuleContext(StringLiteralContext.class,0);
		}
		public List expression() {
			return getRuleContexts(ExpressionContext.class);
		}
		public ExpressionContext expression(int i) {
			return getRuleContext(ExpressionContext.class,i);
		}
		public List decimalLiteral() {
			return getRuleContexts(DecimalLiteralContext.class);
		}
		public DecimalLiteralContext decimalLiteral(int i) {
			return getRuleContext(DecimalLiteralContext.class,i);
		}
		public TerminalNode FOR() { return getToken(MySqlParser.FOR, 0); }
		public SubstrFunctionCallContext(SpecificFunctionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSubstrFunctionCall(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSubstrFunctionCall(this);
		}
	}

	public final SpecificFunctionContext specificFunction() throws RecognitionException {
		SpecificFunctionContext _localctx = new SpecificFunctionContext(_ctx, getState());
		enterRule(_localctx, 670, RULE_specificFunction);
		int _la;
		try {
			setState(7341);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1105,_ctx) ) {
			case 1:
				_localctx = new SimpleFunctionCallContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(7162);
				_la = _input.LA(1);
				if ( !(_la==SCHEMA || ((((_la - 316)) & ~0x3f) == 0 && ((1L << (_la - 316)) & ((1L << (CURRENT_DATE - 316)) | (1L << (CURRENT_TIME - 316)) | (1L << (CURRENT_TIMESTAMP - 316)) | (1L << (LOCALTIME - 316)) | (1L << (CURDATE - 316)) | (1L << (CURTIME - 316)) | (1L << (UTC_TIMESTAMP - 316)))) != 0)) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(7165);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1082,_ctx) ) {
				case 1:
					{
					setState(7163);
					match(LR_BRACKET);
					setState(7164);
					match(RR_BRACKET);
					}
					break;
				}
				}
				break;
			case 2:
				_localctx = new CurrentUserContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(7167);
				currentUserExpression();
				}
				break;
			case 3:
				_localctx = new DataTypeFunctionCallContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(7168);
				match(CONVERT);
				setState(7169);
				match(LR_BRACKET);
				setState(7170);
				expression(0);
				setState(7171);
				((DataTypeFunctionCallContext)_localctx).separator = match(COMMA);
				setState(7172);
				convertedDataType();
				setState(7173);
				match(RR_BRACKET);
				}
				break;
			case 4:
				_localctx = new DataTypeFunctionCallContext(_localctx);
				enterOuterAlt(_localctx, 4);
				{
				setState(7175);
				match(CONVERT);
				setState(7176);
				match(LR_BRACKET);
				setState(7177);
				expression(0);
				setState(7178);
				match(USING);
				setState(7179);
				charsetName();
				setState(7180);
				match(RR_BRACKET);
				}
				break;
			case 5:
				_localctx = new DataTypeFunctionCallContext(_localctx);
				enterOuterAlt(_localctx, 5);
				{
				setState(7182);
				match(CAST);
				setState(7183);
				match(LR_BRACKET);
				setState(7184);
				expression(0);
				setState(7185);
				match(AS);
				setState(7186);
				convertedDataType();
				setState(7187);
				match(RR_BRACKET);
				}
				break;
			case 6:
				_localctx = new ValuesFunctionCallContext(_localctx);
				enterOuterAlt(_localctx, 6);
				{
				setState(7189);
				match(VALUES);
				setState(7190);
				match(LR_BRACKET);
				setState(7191);
				fullColumnName();
				setState(7192);
				match(RR_BRACKET);
				}
				break;
			case 7:
				_localctx = new CaseExpressionFunctionCallContext(_localctx);
				enterOuterAlt(_localctx, 7);
				{
				setState(7194);
				match(CASE);
				setState(7195);
				expression(0);
				setState(7197); 
				_errHandler.sync(this);
				_la = _input.LA(1);
				do {
					{
					{
					setState(7196);
					caseFuncAlternative();
					}
					}
					setState(7199); 
					_errHandler.sync(this);
					_la = _input.LA(1);
				} while ( _la==WHEN );
				setState(7203);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==ELSE) {
					{
					setState(7201);
					match(ELSE);
					setState(7202);
					((CaseExpressionFunctionCallContext)_localctx).elseArg = functionArg();
					}
				}

				setState(7205);
				match(END);
				}
				break;
			case 8:
				_localctx = new CaseFunctionCallContext(_localctx);
				enterOuterAlt(_localctx, 8);
				{
				setState(7207);
				match(CASE);
				setState(7209); 
				_errHandler.sync(this);
				_la = _input.LA(1);
				do {
					{
					{
					setState(7208);
					caseFuncAlternative();
					}
					}
					setState(7211); 
					_errHandler.sync(this);
					_la = _input.LA(1);
				} while ( _la==WHEN );
				setState(7215);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==ELSE) {
					{
					setState(7213);
					match(ELSE);
					setState(7214);
					((CaseFunctionCallContext)_localctx).elseArg = functionArg();
					}
				}

				setState(7217);
				match(END);
				}
				break;
			case 9:
				_localctx = new CharFunctionCallContext(_localctx);
				enterOuterAlt(_localctx, 9);
				{
				setState(7219);
				match(CHAR);
				setState(7220);
				match(LR_BRACKET);
				setState(7221);
				functionArgs();
				setState(7224);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==USING) {
					{
					setState(7222);
					match(USING);
					setState(7223);
					charsetName();
					}
				}

				setState(7226);
				match(RR_BRACKET);
				}
				break;
			case 10:
				_localctx = new PositionFunctionCallContext(_localctx);
				enterOuterAlt(_localctx, 10);
				{
				setState(7228);
				match(POSITION);
				setState(7229);
				match(LR_BRACKET);
				setState(7232);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1088,_ctx) ) {
				case 1:
					{
					setState(7230);
					((PositionFunctionCallContext)_localctx).positionString = stringLiteral();
					}
					break;
				case 2:
					{
					setState(7231);
					((PositionFunctionCallContext)_localctx).positionExpression = expression(0);
					}
					break;
				}
				setState(7234);
				match(IN);
				setState(7237);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1089,_ctx) ) {
				case 1:
					{
					setState(7235);
					((PositionFunctionCallContext)_localctx).inString = stringLiteral();
					}
					break;
				case 2:
					{
					setState(7236);
					((PositionFunctionCallContext)_localctx).inExpression = expression(0);
					}
					break;
				}
				setState(7239);
				match(RR_BRACKET);
				}
				break;
			case 11:
				_localctx = new SubstrFunctionCallContext(_localctx);
				enterOuterAlt(_localctx, 11);
				{
				setState(7241);
				_la = _input.LA(1);
				if ( !(_la==SUBSTR || _la==SUBSTRING) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(7242);
				match(LR_BRACKET);
				setState(7245);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1090,_ctx) ) {
				case 1:
					{
					setState(7243);
					((SubstrFunctionCallContext)_localctx).sourceString = stringLiteral();
					}
					break;
				case 2:
					{
					setState(7244);
					((SubstrFunctionCallContext)_localctx).sourceExpression = expression(0);
					}
					break;
				}
				setState(7247);
				match(FROM);
				setState(7250);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1091,_ctx) ) {
				case 1:
					{
					setState(7248);
					((SubstrFunctionCallContext)_localctx).fromDecimal = decimalLiteral();
					}
					break;
				case 2:
					{
					setState(7249);
					((SubstrFunctionCallContext)_localctx).fromExpression = expression(0);
					}
					break;
				}
				setState(7257);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==FOR) {
					{
					setState(7252);
					match(FOR);
					setState(7255);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,1092,_ctx) ) {
					case 1:
						{
						setState(7253);
						((SubstrFunctionCallContext)_localctx).forDecimal = decimalLiteral();
						}
						break;
					case 2:
						{
						setState(7254);
						((SubstrFunctionCallContext)_localctx).forExpression = expression(0);
						}
						break;
					}
					}
				}

				setState(7259);
				match(RR_BRACKET);
				}
				break;
			case 12:
				_localctx = new TrimFunctionCallContext(_localctx);
				enterOuterAlt(_localctx, 12);
				{
				setState(7261);
				match(TRIM);
				setState(7262);
				match(LR_BRACKET);
				setState(7263);
				((TrimFunctionCallContext)_localctx).positioinForm = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==BOTH || _la==LEADING || _la==TRAILING) ) {
					((TrimFunctionCallContext)_localctx).positioinForm = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(7266);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1094,_ctx) ) {
				case 1:
					{
					setState(7264);
					((TrimFunctionCallContext)_localctx).sourceString = stringLiteral();
					}
					break;
				case 2:
					{
					setState(7265);
					((TrimFunctionCallContext)_localctx).sourceExpression = expression(0);
					}
					break;
				}
				setState(7268);
				match(FROM);
				setState(7271);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1095,_ctx) ) {
				case 1:
					{
					setState(7269);
					((TrimFunctionCallContext)_localctx).fromString = stringLiteral();
					}
					break;
				case 2:
					{
					setState(7270);
					((TrimFunctionCallContext)_localctx).fromExpression = expression(0);
					}
					break;
				}
				setState(7273);
				match(RR_BRACKET);
				}
				break;
			case 13:
				_localctx = new TrimFunctionCallContext(_localctx);
				enterOuterAlt(_localctx, 13);
				{
				setState(7275);
				match(TRIM);
				setState(7276);
				match(LR_BRACKET);
				setState(7279);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1096,_ctx) ) {
				case 1:
					{
					setState(7277);
					((TrimFunctionCallContext)_localctx).sourceString = stringLiteral();
					}
					break;
				case 2:
					{
					setState(7278);
					((TrimFunctionCallContext)_localctx).sourceExpression = expression(0);
					}
					break;
				}
				setState(7281);
				match(FROM);
				setState(7284);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1097,_ctx) ) {
				case 1:
					{
					setState(7282);
					((TrimFunctionCallContext)_localctx).fromString = stringLiteral();
					}
					break;
				case 2:
					{
					setState(7283);
					((TrimFunctionCallContext)_localctx).fromExpression = expression(0);
					}
					break;
				}
				setState(7286);
				match(RR_BRACKET);
				}
				break;
			case 14:
				_localctx = new WeightFunctionCallContext(_localctx);
				enterOuterAlt(_localctx, 14);
				{
				setState(7288);
				match(WEIGHT_STRING);
				setState(7289);
				match(LR_BRACKET);
				setState(7292);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1098,_ctx) ) {
				case 1:
					{
					setState(7290);
					stringLiteral();
					}
					break;
				case 2:
					{
					setState(7291);
					expression(0);
					}
					break;
				}
				setState(7300);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==AS) {
					{
					setState(7294);
					match(AS);
					setState(7295);
					((WeightFunctionCallContext)_localctx).stringFormat = _input.LT(1);
					_la = _input.LA(1);
					if ( !(_la==CHAR || _la==BINARY) ) {
						((WeightFunctionCallContext)_localctx).stringFormat = (Token)_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					setState(7296);
					match(LR_BRACKET);
					setState(7297);
					decimalLiteral();
					setState(7298);
					match(RR_BRACKET);
					}
				}

				setState(7303);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LEVEL) {
					{
					setState(7302);
					levelsInWeightString();
					}
				}

				setState(7305);
				match(RR_BRACKET);
				}
				break;
			case 15:
				_localctx = new ExtractFunctionCallContext(_localctx);
				enterOuterAlt(_localctx, 15);
				{
				setState(7307);
				match(EXTRACT);
				setState(7308);
				match(LR_BRACKET);
				setState(7309);
				intervalType();
				setState(7310);
				match(FROM);
				setState(7313);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1101,_ctx) ) {
				case 1:
					{
					setState(7311);
					((ExtractFunctionCallContext)_localctx).sourceString = stringLiteral();
					}
					break;
				case 2:
					{
					setState(7312);
					((ExtractFunctionCallContext)_localctx).sourceExpression = expression(0);
					}
					break;
				}
				setState(7315);
				match(RR_BRACKET);
				}
				break;
			case 16:
				_localctx = new GetFormatFunctionCallContext(_localctx);
				enterOuterAlt(_localctx, 16);
				{
				setState(7317);
				match(GET_FORMAT);
				setState(7318);
				match(LR_BRACKET);
				setState(7319);
				((GetFormatFunctionCallContext)_localctx).datetimeFormat = _input.LT(1);
				_la = _input.LA(1);
				if ( !(((((_la - 220)) & ~0x3f) == 0 && ((1L << (_la - 220)) & ((1L << (DATE - 220)) | (1L << (TIME - 220)) | (1L << (DATETIME - 220)))) != 0)) ) {
					((GetFormatFunctionCallContext)_localctx).datetimeFormat = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(7320);
				match(COMMA);
				setState(7321);
				stringLiteral();
				setState(7322);
				match(RR_BRACKET);
				}
				break;
			case 17:
				_localctx = new JsonValueFunctionCallContext(_localctx);
				enterOuterAlt(_localctx, 17);
				{
				setState(7324);
				match(JSON_VALUE);
				setState(7325);
				match(LR_BRACKET);
				setState(7326);
				expression(0);
				setState(7327);
				match(COMMA);
				setState(7328);
				expression(0);
				setState(7331);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==RETURNING) {
					{
					setState(7329);
					match(RETURNING);
					setState(7330);
					convertedDataType();
					}
				}

				setState(7334);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1103,_ctx) ) {
				case 1:
					{
					setState(7333);
					jsonOnEmpty();
					}
					break;
				}
				setState(7337);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==DEFAULT || _la==NULL_LITERAL || _la==ERROR) {
					{
					setState(7336);
					jsonOnError();
					}
				}

				setState(7339);
				match(RR_BRACKET);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CaseFuncAlternativeContext extends ParserRuleContext {
		public FunctionArgContext condition;
		public FunctionArgContext consequent;
		public TerminalNode WHEN() { return getToken(MySqlParser.WHEN, 0); }
		public TerminalNode THEN() { return getToken(MySqlParser.THEN, 0); }
		public List functionArg() {
			return getRuleContexts(FunctionArgContext.class);
		}
		public FunctionArgContext functionArg(int i) {
			return getRuleContext(FunctionArgContext.class,i);
		}
		public CaseFuncAlternativeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_caseFuncAlternative; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCaseFuncAlternative(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCaseFuncAlternative(this);
		}
	}

	public final CaseFuncAlternativeContext caseFuncAlternative() throws RecognitionException {
		CaseFuncAlternativeContext _localctx = new CaseFuncAlternativeContext(_ctx, getState());
		enterRule(_localctx, 672, RULE_caseFuncAlternative);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7343);
			match(WHEN);
			setState(7344);
			((CaseFuncAlternativeContext)_localctx).condition = functionArg();
			setState(7345);
			match(THEN);
			setState(7346);
			((CaseFuncAlternativeContext)_localctx).consequent = functionArg();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class LevelsInWeightStringContext extends ParserRuleContext {
		public LevelsInWeightStringContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_levelsInWeightString; }
	 
		public LevelsInWeightStringContext() { }
		public void copyFrom(LevelsInWeightStringContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class LevelWeightRangeContext extends LevelsInWeightStringContext {
		public DecimalLiteralContext firstLevel;
		public DecimalLiteralContext lastLevel;
		public TerminalNode LEVEL() { return getToken(MySqlParser.LEVEL, 0); }
		public TerminalNode MINUS() { return getToken(MySqlParser.MINUS, 0); }
		public List decimalLiteral() {
			return getRuleContexts(DecimalLiteralContext.class);
		}
		public DecimalLiteralContext decimalLiteral(int i) {
			return getRuleContext(DecimalLiteralContext.class,i);
		}
		public LevelWeightRangeContext(LevelsInWeightStringContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterLevelWeightRange(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitLevelWeightRange(this);
		}
	}
	public static class LevelWeightListContext extends LevelsInWeightStringContext {
		public TerminalNode LEVEL() { return getToken(MySqlParser.LEVEL, 0); }
		public List levelInWeightListElement() {
			return getRuleContexts(LevelInWeightListElementContext.class);
		}
		public LevelInWeightListElementContext levelInWeightListElement(int i) {
			return getRuleContext(LevelInWeightListElementContext.class,i);
		}
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public LevelWeightListContext(LevelsInWeightStringContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterLevelWeightList(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitLevelWeightList(this);
		}
	}

	public final LevelsInWeightStringContext levelsInWeightString() throws RecognitionException {
		LevelsInWeightStringContext _localctx = new LevelsInWeightStringContext(_ctx, getState());
		enterRule(_localctx, 674, RULE_levelsInWeightString);
		int _la;
		try {
			setState(7362);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1107,_ctx) ) {
			case 1:
				_localctx = new LevelWeightListContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(7348);
				match(LEVEL);
				setState(7349);
				levelInWeightListElement();
				setState(7354);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(7350);
					match(COMMA);
					setState(7351);
					levelInWeightListElement();
					}
					}
					setState(7356);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			case 2:
				_localctx = new LevelWeightRangeContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(7357);
				match(LEVEL);
				setState(7358);
				((LevelWeightRangeContext)_localctx).firstLevel = decimalLiteral();
				setState(7359);
				match(MINUS);
				setState(7360);
				((LevelWeightRangeContext)_localctx).lastLevel = decimalLiteral();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class LevelInWeightListElementContext extends ParserRuleContext {
		public Token orderType;
		public DecimalLiteralContext decimalLiteral() {
			return getRuleContext(DecimalLiteralContext.class,0);
		}
		public TerminalNode ASC() { return getToken(MySqlParser.ASC, 0); }
		public TerminalNode DESC() { return getToken(MySqlParser.DESC, 0); }
		public TerminalNode REVERSE() { return getToken(MySqlParser.REVERSE, 0); }
		public LevelInWeightListElementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_levelInWeightListElement; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterLevelInWeightListElement(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitLevelInWeightListElement(this);
		}
	}

	public final LevelInWeightListElementContext levelInWeightListElement() throws RecognitionException {
		LevelInWeightListElementContext _localctx = new LevelInWeightListElementContext(_ctx, getState());
		enterRule(_localctx, 676, RULE_levelInWeightListElement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7364);
			decimalLiteral();
			setState(7366);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ASC || _la==DESC || _la==REVERSE) {
				{
				setState(7365);
				((LevelInWeightListElementContext)_localctx).orderType = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==ASC || _la==DESC || _la==REVERSE) ) {
					((LevelInWeightListElementContext)_localctx).orderType = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AggregateWindowedFunctionContext extends ParserRuleContext {
		public Token aggregator;
		public Token starArg;
		public Token separator;
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public FunctionArgContext functionArg() {
			return getRuleContext(FunctionArgContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TerminalNode AVG() { return getToken(MySqlParser.AVG, 0); }
		public TerminalNode MAX() { return getToken(MySqlParser.MAX, 0); }
		public TerminalNode MIN() { return getToken(MySqlParser.MIN, 0); }
		public TerminalNode SUM() { return getToken(MySqlParser.SUM, 0); }
		public OverClauseContext overClause() {
			return getRuleContext(OverClauseContext.class,0);
		}
		public TerminalNode ALL() { return getToken(MySqlParser.ALL, 0); }
		public TerminalNode DISTINCT() { return getToken(MySqlParser.DISTINCT, 0); }
		public TerminalNode COUNT() { return getToken(MySqlParser.COUNT, 0); }
		public FunctionArgsContext functionArgs() {
			return getRuleContext(FunctionArgsContext.class,0);
		}
		public TerminalNode STAR() { return getToken(MySqlParser.STAR, 0); }
		public TerminalNode BIT_AND() { return getToken(MySqlParser.BIT_AND, 0); }
		public TerminalNode BIT_OR() { return getToken(MySqlParser.BIT_OR, 0); }
		public TerminalNode BIT_XOR() { return getToken(MySqlParser.BIT_XOR, 0); }
		public TerminalNode STD() { return getToken(MySqlParser.STD, 0); }
		public TerminalNode STDDEV() { return getToken(MySqlParser.STDDEV, 0); }
		public TerminalNode STDDEV_POP() { return getToken(MySqlParser.STDDEV_POP, 0); }
		public TerminalNode STDDEV_SAMP() { return getToken(MySqlParser.STDDEV_SAMP, 0); }
		public TerminalNode VAR_POP() { return getToken(MySqlParser.VAR_POP, 0); }
		public TerminalNode VAR_SAMP() { return getToken(MySqlParser.VAR_SAMP, 0); }
		public TerminalNode VARIANCE() { return getToken(MySqlParser.VARIANCE, 0); }
		public TerminalNode GROUP_CONCAT() { return getToken(MySqlParser.GROUP_CONCAT, 0); }
		public TerminalNode ORDER() { return getToken(MySqlParser.ORDER, 0); }
		public TerminalNode BY() { return getToken(MySqlParser.BY, 0); }
		public List orderByExpression() {
			return getRuleContexts(OrderByExpressionContext.class);
		}
		public OrderByExpressionContext orderByExpression(int i) {
			return getRuleContext(OrderByExpressionContext.class,i);
		}
		public TerminalNode SEPARATOR() { return getToken(MySqlParser.SEPARATOR, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public AggregateWindowedFunctionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_aggregateWindowedFunction; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAggregateWindowedFunction(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAggregateWindowedFunction(this);
		}
	}

	public final AggregateWindowedFunctionContext aggregateWindowedFunction() throws RecognitionException {
		AggregateWindowedFunctionContext _localctx = new AggregateWindowedFunctionContext(_ctx, getState());
		enterRule(_localctx, 678, RULE_aggregateWindowedFunction);
		int _la;
		try {
			setState(7427);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case AVG:
			case MAX:
			case MIN:
			case SUM:
				enterOuterAlt(_localctx, 1);
				{
				setState(7368);
				_la = _input.LA(1);
				if ( !(((((_la - 289)) & ~0x3f) == 0 && ((1L << (_la - 289)) & ((1L << (AVG - 289)) | (1L << (MAX - 289)) | (1L << (MIN - 289)) | (1L << (SUM - 289)))) != 0)) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(7369);
				match(LR_BRACKET);
				setState(7371);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1109,_ctx) ) {
				case 1:
					{
					setState(7370);
					((AggregateWindowedFunctionContext)_localctx).aggregator = _input.LT(1);
					_la = _input.LA(1);
					if ( !(_la==ALL || _la==DISTINCT) ) {
						((AggregateWindowedFunctionContext)_localctx).aggregator = (Token)_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
					break;
				}
				setState(7373);
				functionArg();
				setState(7374);
				match(RR_BRACKET);
				setState(7376);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1110,_ctx) ) {
				case 1:
					{
					setState(7375);
					overClause();
					}
					break;
				}
				}
				break;
			case COUNT:
				enterOuterAlt(_localctx, 2);
				{
				setState(7378);
				match(COUNT);
				setState(7379);
				match(LR_BRACKET);
				setState(7387);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1112,_ctx) ) {
				case 1:
					{
					setState(7380);
					((AggregateWindowedFunctionContext)_localctx).starArg = match(STAR);
					}
					break;
				case 2:
					{
					setState(7382);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,1111,_ctx) ) {
					case 1:
						{
						setState(7381);
						((AggregateWindowedFunctionContext)_localctx).aggregator = match(ALL);
						}
						break;
					}
					setState(7384);
					functionArg();
					}
					break;
				case 3:
					{
					setState(7385);
					((AggregateWindowedFunctionContext)_localctx).aggregator = match(DISTINCT);
					setState(7386);
					functionArgs();
					}
					break;
				}
				setState(7389);
				match(RR_BRACKET);
				setState(7391);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1113,_ctx) ) {
				case 1:
					{
					setState(7390);
					overClause();
					}
					break;
				}
				}
				break;
			case BIT_AND:
			case BIT_OR:
			case BIT_XOR:
			case STD:
			case STDDEV:
			case STDDEV_POP:
			case STDDEV_SAMP:
			case VAR_POP:
			case VAR_SAMP:
			case VARIANCE:
				enterOuterAlt(_localctx, 3);
				{
				setState(7393);
				_la = _input.LA(1);
				if ( !(((((_la - 290)) & ~0x3f) == 0 && ((1L << (_la - 290)) & ((1L << (BIT_AND - 290)) | (1L << (BIT_OR - 290)) | (1L << (BIT_XOR - 290)) | (1L << (STD - 290)) | (1L << (STDDEV - 290)) | (1L << (STDDEV_POP - 290)) | (1L << (STDDEV_SAMP - 290)) | (1L << (VAR_POP - 290)) | (1L << (VAR_SAMP - 290)) | (1L << (VARIANCE - 290)))) != 0)) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(7394);
				match(LR_BRACKET);
				setState(7396);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1114,_ctx) ) {
				case 1:
					{
					setState(7395);
					((AggregateWindowedFunctionContext)_localctx).aggregator = match(ALL);
					}
					break;
				}
				setState(7398);
				functionArg();
				setState(7399);
				match(RR_BRACKET);
				setState(7401);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1115,_ctx) ) {
				case 1:
					{
					setState(7400);
					overClause();
					}
					break;
				}
				}
				break;
			case GROUP_CONCAT:
				enterOuterAlt(_localctx, 4);
				{
				setState(7403);
				match(GROUP_CONCAT);
				setState(7404);
				match(LR_BRACKET);
				setState(7406);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1116,_ctx) ) {
				case 1:
					{
					setState(7405);
					((AggregateWindowedFunctionContext)_localctx).aggregator = match(DISTINCT);
					}
					break;
				}
				setState(7408);
				functionArgs();
				setState(7419);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==ORDER) {
					{
					setState(7409);
					match(ORDER);
					setState(7410);
					match(BY);
					setState(7411);
					orderByExpression();
					setState(7416);
					_errHandler.sync(this);
					_la = _input.LA(1);
					while (_la==COMMA) {
						{
						{
						setState(7412);
						match(COMMA);
						setState(7413);
						orderByExpression();
						}
						}
						setState(7418);
						_errHandler.sync(this);
						_la = _input.LA(1);
					}
					}
				}

				setState(7423);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==SEPARATOR) {
					{
					setState(7421);
					match(SEPARATOR);
					setState(7422);
					((AggregateWindowedFunctionContext)_localctx).separator = match(STRING_LITERAL);
					}
				}

				setState(7425);
				match(RR_BRACKET);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class NonAggregateWindowedFunctionContext extends ParserRuleContext {
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public OverClauseContext overClause() {
			return getRuleContext(OverClauseContext.class,0);
		}
		public TerminalNode LAG() { return getToken(MySqlParser.LAG, 0); }
		public TerminalNode LEAD() { return getToken(MySqlParser.LEAD, 0); }
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public List decimalLiteral() {
			return getRuleContexts(DecimalLiteralContext.class);
		}
		public DecimalLiteralContext decimalLiteral(int i) {
			return getRuleContext(DecimalLiteralContext.class,i);
		}
		public TerminalNode FIRST_VALUE() { return getToken(MySqlParser.FIRST_VALUE, 0); }
		public TerminalNode LAST_VALUE() { return getToken(MySqlParser.LAST_VALUE, 0); }
		public TerminalNode CUME_DIST() { return getToken(MySqlParser.CUME_DIST, 0); }
		public TerminalNode DENSE_RANK() { return getToken(MySqlParser.DENSE_RANK, 0); }
		public TerminalNode PERCENT_RANK() { return getToken(MySqlParser.PERCENT_RANK, 0); }
		public TerminalNode RANK() { return getToken(MySqlParser.RANK, 0); }
		public TerminalNode ROW_NUMBER() { return getToken(MySqlParser.ROW_NUMBER, 0); }
		public TerminalNode NTH_VALUE() { return getToken(MySqlParser.NTH_VALUE, 0); }
		public TerminalNode NTILE() { return getToken(MySqlParser.NTILE, 0); }
		public NonAggregateWindowedFunctionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_nonAggregateWindowedFunction; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterNonAggregateWindowedFunction(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitNonAggregateWindowedFunction(this);
		}
	}

	public final NonAggregateWindowedFunctionContext nonAggregateWindowedFunction() throws RecognitionException {
		NonAggregateWindowedFunctionContext _localctx = new NonAggregateWindowedFunctionContext(_ctx, getState());
		enterRule(_localctx, 680, RULE_nonAggregateWindowedFunction);
		int _la;
		try {
			setState(7467);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case LAG:
			case LEAD:
				enterOuterAlt(_localctx, 1);
				{
				setState(7429);
				_la = _input.LA(1);
				if ( !(_la==LAG || _la==LEAD) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(7430);
				match(LR_BRACKET);
				setState(7431);
				expression(0);
				setState(7434);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1121,_ctx) ) {
				case 1:
					{
					setState(7432);
					match(COMMA);
					setState(7433);
					decimalLiteral();
					}
					break;
				}
				setState(7438);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COMMA) {
					{
					setState(7436);
					match(COMMA);
					setState(7437);
					decimalLiteral();
					}
				}

				setState(7440);
				match(RR_BRACKET);
				setState(7441);
				overClause();
				}
				break;
			case FIRST_VALUE:
			case LAST_VALUE:
				enterOuterAlt(_localctx, 2);
				{
				setState(7443);
				_la = _input.LA(1);
				if ( !(_la==FIRST_VALUE || _la==LAST_VALUE) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(7444);
				match(LR_BRACKET);
				setState(7445);
				expression(0);
				setState(7446);
				match(RR_BRACKET);
				setState(7447);
				overClause();
				}
				break;
			case CUME_DIST:
			case DENSE_RANK:
			case PERCENT_RANK:
			case RANK:
			case ROW_NUMBER:
				enterOuterAlt(_localctx, 3);
				{
				setState(7449);
				_la = _input.LA(1);
				if ( !(((((_la - 294)) & ~0x3f) == 0 && ((1L << (_la - 294)) & ((1L << (CUME_DIST - 294)) | (1L << (DENSE_RANK - 294)) | (1L << (PERCENT_RANK - 294)) | (1L << (RANK - 294)) | (1L << (ROW_NUMBER - 294)))) != 0)) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(7450);
				match(LR_BRACKET);
				setState(7451);
				match(RR_BRACKET);
				setState(7452);
				overClause();
				}
				break;
			case NTH_VALUE:
				enterOuterAlt(_localctx, 4);
				{
				setState(7453);
				match(NTH_VALUE);
				setState(7454);
				match(LR_BRACKET);
				setState(7455);
				expression(0);
				setState(7456);
				match(COMMA);
				setState(7457);
				decimalLiteral();
				setState(7458);
				match(RR_BRACKET);
				setState(7459);
				overClause();
				}
				break;
			case NTILE:
				enterOuterAlt(_localctx, 5);
				{
				setState(7461);
				match(NTILE);
				setState(7462);
				match(LR_BRACKET);
				setState(7463);
				decimalLiteral();
				setState(7464);
				match(RR_BRACKET);
				setState(7465);
				overClause();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class OverClauseContext extends ParserRuleContext {
		public TerminalNode OVER() { return getToken(MySqlParser.OVER, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public WindowNameContext windowName() {
			return getRuleContext(WindowNameContext.class,0);
		}
		public WindowSpecContext windowSpec() {
			return getRuleContext(WindowSpecContext.class,0);
		}
		public OverClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_overClause; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterOverClause(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitOverClause(this);
		}
	}

	public final OverClauseContext overClause() throws RecognitionException {
		OverClauseContext _localctx = new OverClauseContext(_ctx, getState());
		enterRule(_localctx, 682, RULE_overClause);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7469);
			match(OVER);
			setState(7476);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case LR_BRACKET:
				{
				setState(7470);
				match(LR_BRACKET);
				setState(7472);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1124,_ctx) ) {
				case 1:
					{
					setState(7471);
					windowSpec();
					}
					break;
				}
				setState(7474);
				match(RR_BRACKET);
				}
				break;
			case ARRAY:
			case ATTRIBUTE:
			case BUCKETS:
			case CONDITION:
			case CURRENT:
			case CURRENT_ROLE:
			case CURRENT_USER:
			case DATABASE:
			case DEFAULT:
			case DIAGNOSTICS:
			case EMPTY:
			case ENFORCED:
			case EXCEPT:
			case GROUP:
			case GROUP_REPLICATION_STREAM:
			case IF:
			case IGNORED:
			case INSERT:
			case LATERAL:
			case LEFT:
			case LOCKED:
			case MAXVALUE:
			case MINVALUE:
			case NUMBER:
			case OPTIONAL:
			case ORDER:
			case PRIMARY:
			case REPEAT:
			case REPLACE:
			case RIGHT:
			case SCHEMA:
			case SKIP_:
			case SKIP_QUERY_REWRITE:
			case STACKED:
			case STATEMENT:
			case DATE:
			case TIME:
			case TIMESTAMP:
			case DATETIME:
			case YEAR:
			case NATIONAL:
			case BINARY:
			case TEXT:
			case ENUM:
			case SERIAL:
			case JSON_ARRAY:
			case JSON_ARRAYAGG:
			case JSON_ARRAY_APPEND:
			case JSON_ARRAY_INSERT:
			case JSON_CONTAINS:
			case JSON_CONTAINS_PATH:
			case JSON_DEPTH:
			case JSON_EXTRACT:
			case JSON_INSERT:
			case JSON_KEYS:
			case JSON_LENGTH:
			case JSON_MERGE:
			case JSON_MERGE_PATCH:
			case JSON_MERGE_PRESERVE:
			case JSON_OBJECT:
			case JSON_OBJECTAGG:
			case JSON_OVERLAPS:
			case JSON_PRETTY:
			case JSON_QUOTE:
			case JSON_REMOVE:
			case JSON_REPLACE:
			case JSON_SCHEMA_VALID:
			case JSON_SCHEMA_VALIDATION_REPORT:
			case JSON_SEARCH:
			case JSON_SET:
			case JSON_STORAGE_FREE:
			case JSON_STORAGE_SIZE:
			case JSON_TABLE:
			case JSON_TYPE:
			case JSON_UNQUOTE:
			case JSON_VALID:
			case JSON_VALUE:
			case NESTED:
			case ORDINALITY:
			case PATH:
			case AVG:
			case BIT_AND:
			case BIT_OR:
			case BIT_XOR:
			case COUNT:
			case CUME_DIST:
			case DENSE_RANK:
			case FIRST_VALUE:
			case GROUP_CONCAT:
			case LAG:
			case LAST_VALUE:
			case LEAD:
			case MAX:
			case MIN:
			case NTILE:
			case NTH_VALUE:
			case PERCENT_RANK:
			case RANK:
			case ROW_NUMBER:
			case STD:
			case STDDEV:
			case STDDEV_POP:
			case STDDEV_SAMP:
			case SUM:
			case VAR_POP:
			case VAR_SAMP:
			case VARIANCE:
			case CURRENT_DATE:
			case CURRENT_TIME:
			case CURRENT_TIMESTAMP:
			case LOCALTIME:
			case CURDATE:
			case CURTIME:
			case DATE_ADD:
			case DATE_SUB:
			case LOCALTIMESTAMP:
			case NOW:
			case POSITION:
			case SUBSTR:
			case SUBSTRING:
			case SYSDATE:
			case TRIM:
			case UTC_DATE:
			case UTC_TIME:
			case UTC_TIMESTAMP:
			case ACCOUNT:
			case ACTION:
			case AFTER:
			case AGGREGATE:
			case ALGORITHM:
			case ANY:
			case AT:
			case AUTHORS:
			case AUTOCOMMIT:
			case AUTOEXTEND_SIZE:
			case AUTO_INCREMENT:
			case AVG_ROW_LENGTH:
			case BEGIN:
			case BINLOG:
			case BIT:
			case BLOCK:
			case BOOL:
			case BOOLEAN:
			case BTREE:
			case CACHE:
			case CASCADED:
			case CHAIN:
			case CHANGED:
			case CHANNEL:
			case CHECKSUM:
			case PAGE_CHECKSUM:
			case CIPHER:
			case CLASS_ORIGIN:
			case CLIENT:
			case CLOSE:
			case CLUSTERING:
			case COALESCE:
			case CODE:
			case COLUMNS:
			case COLUMN_FORMAT:
			case COLUMN_NAME:
			case COMMENT:
			case COMMIT:
			case COMPACT:
			case COMPLETION:
			case COMPRESSED:
			case COMPRESSION:
			case CONCURRENT:
			case CONNECT:
			case CONNECTION:
			case CONSISTENT:
			case CONSTRAINT_CATALOG:
			case CONSTRAINT_SCHEMA:
			case CONSTRAINT_NAME:
			case CONTAINS:
			case CONTEXT:
			case CONTRIBUTORS:
			case COPY:
			case CPU:
			case CYCLE:
			case CURSOR_NAME:
			case DATA:
			case DATAFILE:
			case DEALLOCATE:
			case DEFAULT_AUTH:
			case DEFINER:
			case DELAY_KEY_WRITE:
			case DES_KEY_FILE:
			case DIRECTORY:
			case DISABLE:
			case DISCARD:
			case DISK:
			case DO:
			case DUMPFILE:
			case DUPLICATE:
			case DYNAMIC:
			case ENABLE:
			case ENCRYPTED:
			case ENCRYPTION:
			case ENCRYPTION_KEY_ID:
			case END:
			case ENDS:
			case ENGINE:
			case ENGINES:
			case ERROR:
			case ERRORS:
			case ESCAPE:
			case EVEN:
			case EVENT:
			case EVENTS:
			case EVERY:
			case EXCHANGE:
			case EXCLUSIVE:
			case EXPIRE:
			case EXPORT:
			case EXTENDED:
			case EXTENT_SIZE:
			case FAILED_LOGIN_ATTEMPTS:
			case FAST:
			case FAULTS:
			case FIELDS:
			case FILE_BLOCK_SIZE:
			case FILTER:
			case FIRST:
			case FIXED:
			case FLUSH:
			case FOLLOWS:
			case FOUND:
			case FULL:
			case FUNCTION:
			case GENERAL:
			case GLOBAL:
			case GRANTS:
			case GROUP_REPLICATION:
			case HANDLER:
			case HASH:
			case HELP:
			case HISTORY:
			case HOST:
			case HOSTS:
			case IDENTIFIED:
			case IGNORE_SERVER_IDS:
			case IMPORT:
			case INCREMENT:
			case INDEXES:
			case INITIAL_SIZE:
			case INPLACE:
			case INSERT_METHOD:
			case INSTALL:
			case INSTANCE:
			case INSTANT:
			case INVISIBLE:
			case INVOKER:
			case IO:
			case IO_THREAD:
			case IPC:
			case ISOLATION:
			case ISSUER:
			case JSON:
			case KEY_BLOCK_SIZE:
			case LANGUAGE:
			case LAST:
			case LEAVES:
			case LESS:
			case LEVEL:
			case LIST:
			case LOCAL:
			case LOGFILE:
			case LOGS:
			case MASTER:
			case MASTER_AUTO_POSITION:
			case MASTER_CONNECT_RETRY:
			case MASTER_DELAY:
			case MASTER_HEARTBEAT_PERIOD:
			case MASTER_HOST:
			case MASTER_LOG_FILE:
			case MASTER_LOG_POS:
			case MASTER_PASSWORD:
			case MASTER_PORT:
			case MASTER_RETRY_COUNT:
			case MASTER_SSL:
			case MASTER_SSL_CA:
			case MASTER_SSL_CAPATH:
			case MASTER_SSL_CERT:
			case MASTER_SSL_CIPHER:
			case MASTER_SSL_CRL:
			case MASTER_SSL_CRLPATH:
			case MASTER_SSL_KEY:
			case MASTER_TLS_VERSION:
			case MASTER_USER:
			case MAX_CONNECTIONS_PER_HOUR:
			case MAX_QUERIES_PER_HOUR:
			case MAX_ROWS:
			case MAX_SIZE:
			case MAX_UPDATES_PER_HOUR:
			case MAX_USER_CONNECTIONS:
			case MEDIUM:
			case MEMBER:
			case MERGE:
			case MESSAGE_TEXT:
			case MID:
			case MIGRATE:
			case MIN_ROWS:
			case MODE:
			case MODIFY:
			case MUTEX:
			case MYSQL:
			case MYSQL_ERRNO:
			case NAME:
			case NAMES:
			case NCHAR:
			case NEVER:
			case NEXT:
			case NO:
			case NOCACHE:
			case NOCOPY:
			case NOCYCLE:
			case NOMAXVALUE:
			case NOMINVALUE:
			case NOWAIT:
			case NODEGROUP:
			case NONE:
			case ODBC:
			case OFFLINE:
			case OFFSET:
			case OF:
			case OJ:
			case OLD_PASSWORD:
			case ONE:
			case ONLINE:
			case ONLY:
			case OPEN:
			case OPTIMIZER_COSTS:
			case OPTIONS:
			case OWNER:
			case PACK_KEYS:
			case PAGE:
			case PARSER:
			case PARTIAL:
			case PARTITIONING:
			case PARTITIONS:
			case PASSWORD:
			case PASSWORD_LOCK_TIME:
			case PHASE:
			case PLUGIN:
			case PLUGIN_DIR:
			case PLUGINS:
			case PORT:
			case PRECEDES:
			case PREPARE:
			case PRESERVE:
			case PREV:
			case PROCESSLIST:
			case PROFILE:
			case PROFILES:
			case PROXY:
			case QUERY:
			case QUICK:
			case REBUILD:
			case RECOVER:
			case RECURSIVE:
			case REDO_BUFFER_SIZE:
			case REDUNDANT:
			case RELAY:
			case RELAY_LOG_FILE:
			case RELAY_LOG_POS:
			case RELAYLOG:
			case REMOVE:
			case REORGANIZE:
			case REPAIR:
			case REPLICATE_DO_DB:
			case REPLICATE_DO_TABLE:
			case REPLICATE_IGNORE_DB:
			case REPLICATE_IGNORE_TABLE:
			case REPLICATE_REWRITE_DB:
			case REPLICATE_WILD_DO_TABLE:
			case REPLICATE_WILD_IGNORE_TABLE:
			case REPLICATION:
			case RESET:
			case RESTART:
			case RESUME:
			case RETURNED_SQLSTATE:
			case RETURNING:
			case RETURNS:
			case REUSE:
			case ROLE:
			case ROLLBACK:
			case ROLLUP:
			case ROTATE:
			case ROW:
			case ROWS:
			case ROW_FORMAT:
			case RTREE:
			case SAVEPOINT:
			case SCHEDULE:
			case SECURITY:
			case SEQUENCE:
			case SERVER:
			case SESSION:
			case SHARE:
			case SHARED:
			case SIGNED:
			case SIMPLE:
			case SLAVE:
			case SLOW:
			case SNAPSHOT:
			case SOCKET:
			case SOME:
			case SONAME:
			case SOUNDS:
			case SOURCE:
			case SQL_AFTER_GTIDS:
			case SQL_AFTER_MTS_GAPS:
			case SQL_BEFORE_GTIDS:
			case SQL_BUFFER_RESULT:
			case SQL_CACHE:
			case SQL_NO_CACHE:
			case SQL_THREAD:
			case START:
			case STARTS:
			case STATS_AUTO_RECALC:
			case STATS_PERSISTENT:
			case STATS_SAMPLE_PAGES:
			case STATUS:
			case STOP:
			case STORAGE:
			case STRING:
			case SUBCLASS_ORIGIN:
			case SUBJECT:
			case SUBPARTITION:
			case SUBPARTITIONS:
			case SUSPEND:
			case SWAPS:
			case SWITCHES:
			case TABLE_NAME:
			case TABLESPACE:
			case TABLE_TYPE:
			case TEMPORARY:
			case TEMPTABLE:
			case THAN:
			case TRADITIONAL:
			case TRANSACTION:
			case TRANSACTIONAL:
			case TRIGGERS:
			case TRUNCATE:
			case UNBOUNDED:
			case UNDEFINED:
			case UNDOFILE:
			case UNDO_BUFFER_SIZE:
			case UNINSTALL:
			case UNKNOWN:
			case UNTIL:
			case UPGRADE:
			case USER:
			case USE_FRM:
			case USER_RESOURCES:
			case VALIDATION:
			case VALUE:
			case VARIABLES:
			case VIEW:
			case VIRTUAL:
			case VISIBLE:
			case WAIT:
			case WARNINGS:
			case WITHOUT:
			case WORK:
			case WRAPPER:
			case X509:
			case XA:
			case XML:
			case YES:
			case EUR:
			case USA:
			case JIS:
			case ISO:
			case INTERNAL:
			case QUARTER:
			case MONTH:
			case DAY:
			case HOUR:
			case MINUTE:
			case WEEK:
			case SECOND:
			case MICROSECOND:
			case USER_STATISTICS:
			case CLIENT_STATISTICS:
			case INDEX_STATISTICS:
			case TABLE_STATISTICS:
			case FIREWALL_RULES:
			case ADMIN:
			case APPLICATION_PASSWORD_ADMIN:
			case AUDIT_ADMIN:
			case AUDIT_ABORT_EXEMPT:
			case AUTHENTICATION_POLICY_ADMIN:
			case BACKUP_ADMIN:
			case BINLOG_ADMIN:
			case BINLOG_ENCRYPTION_ADMIN:
			case CLONE_ADMIN:
			case CONNECTION_ADMIN:
			case ENCRYPTION_KEY_ADMIN:
			case EXECUTE:
			case FILE:
			case FIREWALL_ADMIN:
			case FIREWALL_EXEMPT:
			case FIREWALL_USER:
			case FLUSH_OPTIMIZER_COSTS:
			case FLUSH_STATUS:
			case FLUSH_TABLES:
			case FLUSH_USER_RESOURCES:
			case GROUP_REPLICATION_ADMIN:
			case INNODB_REDO_LOG_ARCHIVE:
			case INNODB_REDO_LOG_ENABLE:
			case INVOKE:
			case LAMBDA:
			case NDB_STORED_USER:
			case PASSWORDLESS_USER_ADMIN:
			case PERSIST_RO_VARIABLES_ADMIN:
			case PRIVILEGES:
			case PROCESS:
			case RELOAD:
			case REPLICATION_APPLIER:
			case REPLICATION_SLAVE_ADMIN:
			case RESOURCE_GROUP_ADMIN:
			case RESOURCE_GROUP_USER:
			case ROLE_ADMIN:
			case ROUTINE:
			case S3:
			case SESSION_VARIABLES_ADMIN:
			case SET_USER_ID:
			case SHOW_ROUTINE:
			case SHUTDOWN:
			case SUPER:
			case SYSTEM_VARIABLES_ADMIN:
			case TABLES:
			case TABLE_ENCRYPTION_ADMIN:
			case VERSION_TOKEN_ADMIN:
			case XA_RECOVER_ADMIN:
			case ARMSCII8:
			case ASCII:
			case BIG5:
			case CP1250:
			case CP1251:
			case CP1256:
			case CP1257:
			case CP850:
			case CP852:
			case CP866:
			case CP932:
			case DEC8:
			case EUCJPMS:
			case EUCKR:
			case GB18030:
			case GB2312:
			case GBK:
			case GEOSTD8:
			case GREEK:
			case HEBREW:
			case HP8:
			case KEYBCS2:
			case KOI8R:
			case KOI8U:
			case LATIN1:
			case LATIN2:
			case LATIN5:
			case LATIN7:
			case MACCE:
			case MACROMAN:
			case SJIS:
			case SWE7:
			case TIS620:
			case UCS2:
			case UJIS:
			case UTF16:
			case UTF16LE:
			case UTF32:
			case UTF8:
			case UTF8MB3:
			case UTF8MB4:
			case ARCHIVE:
			case BLACKHOLE:
			case CSV:
			case FEDERATED:
			case INNODB:
			case MEMORY:
			case MRG_MYISAM:
			case MYISAM:
			case NDB:
			case NDBCLUSTER:
			case PERFORMANCE_SCHEMA:
			case TOKUDB:
			case REPEATABLE:
			case COMMITTED:
			case UNCOMMITTED:
			case SERIALIZABLE:
			case GEOMETRYCOLLECTION:
			case GEOMETRY:
			case LINESTRING:
			case MULTILINESTRING:
			case MULTIPOINT:
			case MULTIPOLYGON:
			case POINT:
			case POLYGON:
			case ABS:
			case ACOS:
			case ADDDATE:
			case ADDTIME:
			case AES_DECRYPT:
			case AES_ENCRYPT:
			case AREA:
			case ASBINARY:
			case ASIN:
			case ASTEXT:
			case ASWKB:
			case ASWKT:
			case ASYMMETRIC_DECRYPT:
			case ASYMMETRIC_DERIVE:
			case ASYMMETRIC_ENCRYPT:
			case ASYMMETRIC_SIGN:
			case ASYMMETRIC_VERIFY:
			case ATAN:
			case ATAN2:
			case BENCHMARK:
			case BIN:
			case BIT_COUNT:
			case BIT_LENGTH:
			case BUFFER:
			case CATALOG_NAME:
			case CEIL:
			case CEILING:
			case CENTROID:
			case CHARACTER_LENGTH:
			case CHARSET:
			case CHAR_LENGTH:
			case COERCIBILITY:
			case COLLATION:
			case COMPRESS:
			case CONCAT:
			case CONCAT_WS:
			case CONNECTION_ID:
			case CONV:
			case CONVERT_TZ:
			case COS:
			case COT:
			case CRC32:
			case CREATE_ASYMMETRIC_PRIV_KEY:
			case CREATE_ASYMMETRIC_PUB_KEY:
			case CREATE_DH_PARAMETERS:
			case CREATE_DIGEST:
			case CROSSES:
			case DATEDIFF:
			case DATE_FORMAT:
			case DAYNAME:
			case DAYOFMONTH:
			case DAYOFWEEK:
			case DAYOFYEAR:
			case DECODE:
			case DEGREES:
			case DES_DECRYPT:
			case DES_ENCRYPT:
			case DIMENSION:
			case DISJOINT:
			case ELT:
			case ENCODE:
			case ENCRYPT:
			case ENDPOINT:
			case ENGINE_ATTRIBUTE:
			case ENVELOPE:
			case EQUALS:
			case EXP:
			case EXPORT_SET:
			case EXTERIORRING:
			case EXTRACTVALUE:
			case FIELD:
			case FIND_IN_SET:
			case FLOOR:
			case FORMAT:
			case FOUND_ROWS:
			case FROM_BASE64:
			case FROM_DAYS:
			case FROM_UNIXTIME:
			case GEOMCOLLFROMTEXT:
			case GEOMCOLLFROMWKB:
			case GEOMETRYCOLLECTIONFROMTEXT:
			case GEOMETRYCOLLECTIONFROMWKB:
			case GEOMETRYFROMTEXT:
			case GEOMETRYFROMWKB:
			case GEOMETRYN:
			case GEOMETRYTYPE:
			case GEOMFROMTEXT:
			case GEOMFROMWKB:
			case GET_FORMAT:
			case GET_LOCK:
			case GLENGTH:
			case GREATEST:
			case GTID_SUBSET:
			case GTID_SUBTRACT:
			case HEX:
			case IFNULL:
			case INET6_ATON:
			case INET6_NTOA:
			case INET_ATON:
			case INET_NTOA:
			case INSTR:
			case INTERIORRINGN:
			case INTERSECTS:
			case ISCLOSED:
			case ISEMPTY:
			case ISNULL:
			case ISSIMPLE:
			case IS_FREE_LOCK:
			case IS_IPV4:
			case IS_IPV4_COMPAT:
			case IS_IPV4_MAPPED:
			case IS_IPV6:
			case IS_USED_LOCK:
			case LAST_INSERT_ID:
			case LCASE:
			case LEAST:
			case LENGTH:
			case LINEFROMTEXT:
			case LINEFROMWKB:
			case LINESTRINGFROMTEXT:
			case LINESTRINGFROMWKB:
			case LN:
			case LOAD_FILE:
			case LOCATE:
			case LOG:
			case LOG10:
			case LOG2:
			case LOWER:
			case LPAD:
			case LTRIM:
			case MAKEDATE:
			case MAKETIME:
			case MAKE_SET:
			case MASTER_POS_WAIT:
			case MBRCONTAINS:
			case MBRDISJOINT:
			case MBREQUAL:
			case MBRINTERSECTS:
			case MBROVERLAPS:
			case MBRTOUCHES:
			case MBRWITHIN:
			case MD5:
			case MLINEFROMTEXT:
			case MLINEFROMWKB:
			case MONTHNAME:
			case MPOINTFROMTEXT:
			case MPOINTFROMWKB:
			case MPOLYFROMTEXT:
			case MPOLYFROMWKB:
			case MULTILINESTRINGFROMTEXT:
			case MULTILINESTRINGFROMWKB:
			case MULTIPOINTFROMTEXT:
			case MULTIPOINTFROMWKB:
			case MULTIPOLYGONFROMTEXT:
			case MULTIPOLYGONFROMWKB:
			case NAME_CONST:
			case NULLIF:
			case NUMGEOMETRIES:
			case NUMINTERIORRINGS:
			case NUMPOINTS:
			case OCT:
			case OCTET_LENGTH:
			case ORD:
			case OVERLAPS:
			case PERIOD_ADD:
			case PERIOD_DIFF:
			case PI:
			case POINTFROMTEXT:
			case POINTFROMWKB:
			case POINTN:
			case POLYFROMTEXT:
			case POLYFROMWKB:
			case POLYGONFROMTEXT:
			case POLYGONFROMWKB:
			case POW:
			case POWER:
			case QUOTE:
			case RADIANS:
			case RAND:
			case RANDOM:
			case RANDOM_BYTES:
			case RELEASE_LOCK:
			case REVERSE:
			case ROUND:
			case ROW_COUNT:
			case RPAD:
			case RTRIM:
			case SEC_TO_TIME:
			case SECONDARY_ENGINE_ATTRIBUTE:
			case SENSITIVE_VARIABLES_OBSERVER:
			case SESSION_USER:
			case SHA:
			case SHA1:
			case SHA2:
			case SCHEMA_NAME:
			case SIGN:
			case SIN:
			case SLEEP:
			case SOUNDEX:
			case SQL_THREAD_WAIT_AFTER_GTIDS:
			case SQRT:
			case SRID:
			case STARTPOINT:
			case STRCMP:
			case STR_TO_DATE:
			case ST_AREA:
			case ST_ASBINARY:
			case ST_ASTEXT:
			case ST_ASWKB:
			case ST_ASWKT:
			case ST_BUFFER:
			case ST_CENTROID:
			case ST_CONTAINS:
			case ST_CROSSES:
			case ST_DIFFERENCE:
			case ST_DIMENSION:
			case ST_DISJOINT:
			case ST_DISTANCE:
			case ST_ENDPOINT:
			case ST_ENVELOPE:
			case ST_EQUALS:
			case ST_EXTERIORRING:
			case ST_GEOMCOLLFROMTEXT:
			case ST_GEOMCOLLFROMTXT:
			case ST_GEOMCOLLFROMWKB:
			case ST_GEOMETRYCOLLECTIONFROMTEXT:
			case ST_GEOMETRYCOLLECTIONFROMWKB:
			case ST_GEOMETRYFROMTEXT:
			case ST_GEOMETRYFROMWKB:
			case ST_GEOMETRYN:
			case ST_GEOMETRYTYPE:
			case ST_GEOMFROMTEXT:
			case ST_GEOMFROMWKB:
			case ST_INTERIORRINGN:
			case ST_INTERSECTION:
			case ST_INTERSECTS:
			case ST_ISCLOSED:
			case ST_ISEMPTY:
			case ST_ISSIMPLE:
			case ST_LINEFROMTEXT:
			case ST_LINEFROMWKB:
			case ST_LINESTRINGFROMTEXT:
			case ST_LINESTRINGFROMWKB:
			case ST_NUMGEOMETRIES:
			case ST_NUMINTERIORRING:
			case ST_NUMINTERIORRINGS:
			case ST_NUMPOINTS:
			case ST_OVERLAPS:
			case ST_POINTFROMTEXT:
			case ST_POINTFROMWKB:
			case ST_POINTN:
			case ST_POLYFROMTEXT:
			case ST_POLYFROMWKB:
			case ST_POLYGONFROMTEXT:
			case ST_POLYGONFROMWKB:
			case ST_SRID:
			case ST_STARTPOINT:
			case ST_SYMDIFFERENCE:
			case ST_TOUCHES:
			case ST_UNION:
			case ST_WITHIN:
			case ST_X:
			case ST_Y:
			case SUBDATE:
			case SUBSTRING_INDEX:
			case SUBTIME:
			case SYSTEM_USER:
			case SYSTEM:
			case TAN:
			case TELEMETRY_LOG_ADMIN:
			case TIMEDIFF:
			case TIMESTAMPADD:
			case TIMESTAMPDIFF:
			case TIME_FORMAT:
			case TIME_TO_SEC:
			case TOUCHES:
			case TO_BASE64:
			case TO_DAYS:
			case TO_SECONDS:
			case TP_CONNECTION_ADMIN:
			case UCASE:
			case UNCOMPRESS:
			case UNCOMPRESSED_LENGTH:
			case UNHEX:
			case UNIX_TIMESTAMP:
			case UPDATEXML:
			case UPPER:
			case UUID:
			case UUID_SHORT:
			case VALIDATE_PASSWORD_STRENGTH:
			case VERSION:
			case VERSIONING:
			case WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS:
			case WEEKDAY:
			case WEEKOFYEAR:
			case WEIGHT_STRING:
			case WITHIN:
			case YEARWEEK:
			case Y_FUNCTION:
			case X_FUNCTION:
			case VIA:
			case LASTVAL:
			case NEXTVAL:
			case SETVAL:
			case PREVIOUS:
			case PERSISTENT:
			case BINLOG_MONITOR:
			case BINLOG_REPLAY:
			case FEDERATED_ADMIN:
			case READ_ONLY_ADMIN:
			case REPLICA:
			case REPLICATION_MASTER_ADMIN:
			case MONITOR:
			case READ_ONLY:
			case REPLAY:
			case MOD:
			case CHARSET_REVERSE_QOUTE_STRING:
			case STRING_LITERAL:
			case ID:
				{
				setState(7475);
				windowName();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class WindowSpecContext extends ParserRuleContext {
		public WindowNameContext windowName() {
			return getRuleContext(WindowNameContext.class,0);
		}
		public PartitionClauseContext partitionClause() {
			return getRuleContext(PartitionClauseContext.class,0);
		}
		public OrderByClauseContext orderByClause() {
			return getRuleContext(OrderByClauseContext.class,0);
		}
		public FrameClauseContext frameClause() {
			return getRuleContext(FrameClauseContext.class,0);
		}
		public WindowSpecContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_windowSpec; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterWindowSpec(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitWindowSpec(this);
		}
	}

	public final WindowSpecContext windowSpec() throws RecognitionException {
		WindowSpecContext _localctx = new WindowSpecContext(_ctx, getState());
		enterRule(_localctx, 684, RULE_windowSpec);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7479);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1126,_ctx) ) {
			case 1:
				{
				setState(7478);
				windowName();
				}
				break;
			}
			setState(7482);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==PARTITION) {
				{
				setState(7481);
				partitionClause();
				}
			}

			setState(7485);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ORDER) {
				{
				setState(7484);
				orderByClause();
				}
			}

			setState(7488);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==RANGE || _la==ROWS) {
				{
				setState(7487);
				frameClause();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class WindowNameContext extends ParserRuleContext {
		public UidContext uid() {
			return getRuleContext(UidContext.class,0);
		}
		public WindowNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_windowName; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterWindowName(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitWindowName(this);
		}
	}

	public final WindowNameContext windowName() throws RecognitionException {
		WindowNameContext _localctx = new WindowNameContext(_ctx, getState());
		enterRule(_localctx, 686, RULE_windowName);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7490);
			uid();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FrameClauseContext extends ParserRuleContext {
		public FrameUnitsContext frameUnits() {
			return getRuleContext(FrameUnitsContext.class,0);
		}
		public FrameExtentContext frameExtent() {
			return getRuleContext(FrameExtentContext.class,0);
		}
		public FrameClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_frameClause; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterFrameClause(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitFrameClause(this);
		}
	}

	public final FrameClauseContext frameClause() throws RecognitionException {
		FrameClauseContext _localctx = new FrameClauseContext(_ctx, getState());
		enterRule(_localctx, 688, RULE_frameClause);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7492);
			frameUnits();
			setState(7493);
			frameExtent();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FrameUnitsContext extends ParserRuleContext {
		public TerminalNode ROWS() { return getToken(MySqlParser.ROWS, 0); }
		public TerminalNode RANGE() { return getToken(MySqlParser.RANGE, 0); }
		public FrameUnitsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_frameUnits; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterFrameUnits(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitFrameUnits(this);
		}
	}

	public final FrameUnitsContext frameUnits() throws RecognitionException {
		FrameUnitsContext _localctx = new FrameUnitsContext(_ctx, getState());
		enterRule(_localctx, 690, RULE_frameUnits);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7495);
			_la = _input.LA(1);
			if ( !(_la==RANGE || _la==ROWS) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FrameExtentContext extends ParserRuleContext {
		public FrameRangeContext frameRange() {
			return getRuleContext(FrameRangeContext.class,0);
		}
		public FrameBetweenContext frameBetween() {
			return getRuleContext(FrameBetweenContext.class,0);
		}
		public FrameExtentContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_frameExtent; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterFrameExtent(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitFrameExtent(this);
		}
	}

	public final FrameExtentContext frameExtent() throws RecognitionException {
		FrameExtentContext _localctx = new FrameExtentContext(_ctx, getState());
		enterRule(_localctx, 692, RULE_frameExtent);
		try {
			setState(7499);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1130,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(7497);
				frameRange();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(7498);
				frameBetween();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FrameBetweenContext extends ParserRuleContext {
		public TerminalNode BETWEEN() { return getToken(MySqlParser.BETWEEN, 0); }
		public List frameRange() {
			return getRuleContexts(FrameRangeContext.class);
		}
		public FrameRangeContext frameRange(int i) {
			return getRuleContext(FrameRangeContext.class,i);
		}
		public TerminalNode AND() { return getToken(MySqlParser.AND, 0); }
		public FrameBetweenContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_frameBetween; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterFrameBetween(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitFrameBetween(this);
		}
	}

	public final FrameBetweenContext frameBetween() throws RecognitionException {
		FrameBetweenContext _localctx = new FrameBetweenContext(_ctx, getState());
		enterRule(_localctx, 694, RULE_frameBetween);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7501);
			match(BETWEEN);
			setState(7502);
			frameRange();
			setState(7503);
			match(AND);
			setState(7504);
			frameRange();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FrameRangeContext extends ParserRuleContext {
		public TerminalNode CURRENT() { return getToken(MySqlParser.CURRENT, 0); }
		public TerminalNode ROW() { return getToken(MySqlParser.ROW, 0); }
		public TerminalNode UNBOUNDED() { return getToken(MySqlParser.UNBOUNDED, 0); }
		public TerminalNode PRECEDING() { return getToken(MySqlParser.PRECEDING, 0); }
		public TerminalNode FOLLOWING() { return getToken(MySqlParser.FOLLOWING, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public FrameRangeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_frameRange; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterFrameRange(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitFrameRange(this);
		}
	}

	public final FrameRangeContext frameRange() throws RecognitionException {
		FrameRangeContext _localctx = new FrameRangeContext(_ctx, getState());
		enterRule(_localctx, 696, RULE_frameRange);
		int _la;
		try {
			setState(7513);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1131,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(7506);
				match(CURRENT);
				setState(7507);
				match(ROW);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(7508);
				match(UNBOUNDED);
				setState(7509);
				_la = _input.LA(1);
				if ( !(_la==FOLLOWING || _la==PRECEDING) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(7510);
				expression(0);
				setState(7511);
				_la = _input.LA(1);
				if ( !(_la==FOLLOWING || _la==PRECEDING) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PartitionClauseContext extends ParserRuleContext {
		public TerminalNode PARTITION() { return getToken(MySqlParser.PARTITION, 0); }
		public TerminalNode BY() { return getToken(MySqlParser.BY, 0); }
		public List expression() {
			return getRuleContexts(ExpressionContext.class);
		}
		public ExpressionContext expression(int i) {
			return getRuleContext(ExpressionContext.class,i);
		}
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public PartitionClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_partitionClause; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPartitionClause(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPartitionClause(this);
		}
	}

	public final PartitionClauseContext partitionClause() throws RecognitionException {
		PartitionClauseContext _localctx = new PartitionClauseContext(_ctx, getState());
		enterRule(_localctx, 698, RULE_partitionClause);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7515);
			match(PARTITION);
			setState(7516);
			match(BY);
			setState(7517);
			expression(0);
			setState(7522);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(7518);
				match(COMMA);
				setState(7519);
				expression(0);
				}
				}
				setState(7524);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ScalarFunctionNameContext extends ParserRuleContext {
		public FunctionNameBaseContext functionNameBase() {
			return getRuleContext(FunctionNameBaseContext.class,0);
		}
		public TerminalNode ASCII() { return getToken(MySqlParser.ASCII, 0); }
		public TerminalNode CURDATE() { return getToken(MySqlParser.CURDATE, 0); }
		public TerminalNode CURRENT_DATE() { return getToken(MySqlParser.CURRENT_DATE, 0); }
		public TerminalNode CURRENT_TIME() { return getToken(MySqlParser.CURRENT_TIME, 0); }
		public TerminalNode CURRENT_TIMESTAMP() { return getToken(MySqlParser.CURRENT_TIMESTAMP, 0); }
		public TerminalNode CURTIME() { return getToken(MySqlParser.CURTIME, 0); }
		public TerminalNode DATE_ADD() { return getToken(MySqlParser.DATE_ADD, 0); }
		public TerminalNode DATE_SUB() { return getToken(MySqlParser.DATE_SUB, 0); }
		public TerminalNode IF() { return getToken(MySqlParser.IF, 0); }
		public TerminalNode INSERT() { return getToken(MySqlParser.INSERT, 0); }
		public TerminalNode LOCALTIME() { return getToken(MySqlParser.LOCALTIME, 0); }
		public TerminalNode LOCALTIMESTAMP() { return getToken(MySqlParser.LOCALTIMESTAMP, 0); }
		public TerminalNode MID() { return getToken(MySqlParser.MID, 0); }
		public TerminalNode NOW() { return getToken(MySqlParser.NOW, 0); }
		public TerminalNode REPEAT() { return getToken(MySqlParser.REPEAT, 0); }
		public TerminalNode REPLACE() { return getToken(MySqlParser.REPLACE, 0); }
		public TerminalNode SUBSTR() { return getToken(MySqlParser.SUBSTR, 0); }
		public TerminalNode SUBSTRING() { return getToken(MySqlParser.SUBSTRING, 0); }
		public TerminalNode SYSDATE() { return getToken(MySqlParser.SYSDATE, 0); }
		public TerminalNode TRIM() { return getToken(MySqlParser.TRIM, 0); }
		public TerminalNode UTC_DATE() { return getToken(MySqlParser.UTC_DATE, 0); }
		public TerminalNode UTC_TIME() { return getToken(MySqlParser.UTC_TIME, 0); }
		public TerminalNode UTC_TIMESTAMP() { return getToken(MySqlParser.UTC_TIMESTAMP, 0); }
		public ScalarFunctionNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_scalarFunctionName; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterScalarFunctionName(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitScalarFunctionName(this);
		}
	}

	public final ScalarFunctionNameContext scalarFunctionName() throws RecognitionException {
		ScalarFunctionNameContext _localctx = new ScalarFunctionNameContext(_ctx, getState());
		enterRule(_localctx, 700, RULE_scalarFunctionName);
		try {
			setState(7549);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case DATABASE:
			case LEFT:
			case RIGHT:
			case SCHEMA:
			case DATE:
			case TIME:
			case TIMESTAMP:
			case YEAR:
			case JSON_ARRAY:
			case JSON_ARRAYAGG:
			case JSON_ARRAY_APPEND:
			case JSON_ARRAY_INSERT:
			case JSON_CONTAINS:
			case JSON_CONTAINS_PATH:
			case JSON_DEPTH:
			case JSON_EXTRACT:
			case JSON_INSERT:
			case JSON_KEYS:
			case JSON_LENGTH:
			case JSON_MERGE:
			case JSON_MERGE_PATCH:
			case JSON_MERGE_PRESERVE:
			case JSON_OBJECT:
			case JSON_OBJECTAGG:
			case JSON_OVERLAPS:
			case JSON_PRETTY:
			case JSON_QUOTE:
			case JSON_REMOVE:
			case JSON_REPLACE:
			case JSON_SCHEMA_VALID:
			case JSON_SCHEMA_VALIDATION_REPORT:
			case JSON_SEARCH:
			case JSON_SET:
			case JSON_STORAGE_FREE:
			case JSON_STORAGE_SIZE:
			case JSON_TABLE:
			case JSON_TYPE:
			case JSON_UNQUOTE:
			case JSON_VALID:
			case JSON_VALUE:
			case COUNT:
			case CUME_DIST:
			case DENSE_RANK:
			case FIRST_VALUE:
			case LAG:
			case LAST_VALUE:
			case LEAD:
			case NTILE:
			case NTH_VALUE:
			case PERCENT_RANK:
			case RANK:
			case ROW_NUMBER:
			case POSITION:
			case INVISIBLE:
			case VISIBLE:
			case QUARTER:
			case MONTH:
			case DAY:
			case HOUR:
			case MINUTE:
			case WEEK:
			case SECOND:
			case MICROSECOND:
			case SESSION_VARIABLES_ADMIN:
			case GEOMETRYCOLLECTION:
			case LINESTRING:
			case MULTILINESTRING:
			case MULTIPOINT:
			case MULTIPOLYGON:
			case POINT:
			case POLYGON:
			case ABS:
			case ACOS:
			case ADDDATE:
			case ADDTIME:
			case AES_DECRYPT:
			case AES_ENCRYPT:
			case AREA:
			case ASBINARY:
			case ASIN:
			case ASTEXT:
			case ASWKB:
			case ASWKT:
			case ASYMMETRIC_DECRYPT:
			case ASYMMETRIC_DERIVE:
			case ASYMMETRIC_ENCRYPT:
			case ASYMMETRIC_SIGN:
			case ASYMMETRIC_VERIFY:
			case ATAN:
			case ATAN2:
			case BENCHMARK:
			case BIN:
			case BIT_COUNT:
			case BIT_LENGTH:
			case BUFFER:
			case CEIL:
			case CEILING:
			case CENTROID:
			case CHARACTER_LENGTH:
			case CHARSET:
			case CHAR_LENGTH:
			case COERCIBILITY:
			case COLLATION:
			case COMPRESS:
			case CONCAT:
			case CONCAT_WS:
			case CONNECTION_ID:
			case CONV:
			case CONVERT_TZ:
			case COS:
			case COT:
			case CRC32:
			case CREATE_ASYMMETRIC_PRIV_KEY:
			case CREATE_ASYMMETRIC_PUB_KEY:
			case CREATE_DH_PARAMETERS:
			case CREATE_DIGEST:
			case CROSSES:
			case DATEDIFF:
			case DATE_FORMAT:
			case DAYNAME:
			case DAYOFMONTH:
			case DAYOFWEEK:
			case DAYOFYEAR:
			case DECODE:
			case DEGREES:
			case DES_DECRYPT:
			case DES_ENCRYPT:
			case DIMENSION:
			case DISJOINT:
			case ELT:
			case ENCODE:
			case ENCRYPT:
			case ENDPOINT:
			case ENVELOPE:
			case EQUALS:
			case EXP:
			case EXPORT_SET:
			case EXTERIORRING:
			case EXTRACTVALUE:
			case FIELD:
			case FIND_IN_SET:
			case FLOOR:
			case FORMAT:
			case FOUND_ROWS:
			case FROM_BASE64:
			case FROM_DAYS:
			case FROM_UNIXTIME:
			case GEOMCOLLFROMTEXT:
			case GEOMCOLLFROMWKB:
			case GEOMETRYCOLLECTIONFROMTEXT:
			case GEOMETRYCOLLECTIONFROMWKB:
			case GEOMETRYFROMTEXT:
			case GEOMETRYFROMWKB:
			case GEOMETRYN:
			case GEOMETRYTYPE:
			case GEOMFROMTEXT:
			case GEOMFROMWKB:
			case GET_FORMAT:
			case GET_LOCK:
			case GLENGTH:
			case GREATEST:
			case GTID_SUBSET:
			case GTID_SUBTRACT:
			case HEX:
			case IFNULL:
			case INET6_ATON:
			case INET6_NTOA:
			case INET_ATON:
			case INET_NTOA:
			case INSTR:
			case INTERIORRINGN:
			case INTERSECTS:
			case ISCLOSED:
			case ISEMPTY:
			case ISNULL:
			case ISSIMPLE:
			case IS_FREE_LOCK:
			case IS_IPV4:
			case IS_IPV4_COMPAT:
			case IS_IPV4_MAPPED:
			case IS_IPV6:
			case IS_USED_LOCK:
			case LAST_INSERT_ID:
			case LCASE:
			case LEAST:
			case LENGTH:
			case LINEFROMTEXT:
			case LINEFROMWKB:
			case LINESTRINGFROMTEXT:
			case LINESTRINGFROMWKB:
			case LN:
			case LOAD_FILE:
			case LOCATE:
			case LOG:
			case LOG10:
			case LOG2:
			case LOWER:
			case LPAD:
			case LTRIM:
			case MAKEDATE:
			case MAKETIME:
			case MAKE_SET:
			case MASTER_POS_WAIT:
			case MBRCONTAINS:
			case MBRDISJOINT:
			case MBREQUAL:
			case MBRINTERSECTS:
			case MBROVERLAPS:
			case MBRTOUCHES:
			case MBRWITHIN:
			case MD5:
			case MLINEFROMTEXT:
			case MLINEFROMWKB:
			case MONTHNAME:
			case MPOINTFROMTEXT:
			case MPOINTFROMWKB:
			case MPOLYFROMTEXT:
			case MPOLYFROMWKB:
			case MULTILINESTRINGFROMTEXT:
			case MULTILINESTRINGFROMWKB:
			case MULTIPOINTFROMTEXT:
			case MULTIPOINTFROMWKB:
			case MULTIPOLYGONFROMTEXT:
			case MULTIPOLYGONFROMWKB:
			case NAME_CONST:
			case NULLIF:
			case NUMGEOMETRIES:
			case NUMINTERIORRINGS:
			case NUMPOINTS:
			case OCT:
			case OCTET_LENGTH:
			case ORD:
			case OVERLAPS:
			case PERIOD_ADD:
			case PERIOD_DIFF:
			case PI:
			case POINTFROMTEXT:
			case POINTFROMWKB:
			case POINTN:
			case POLYFROMTEXT:
			case POLYFROMWKB:
			case POLYGONFROMTEXT:
			case POLYGONFROMWKB:
			case POW:
			case POWER:
			case QUOTE:
			case RADIANS:
			case RAND:
			case RANDOM:
			case RANDOM_BYTES:
			case RELEASE_LOCK:
			case REVERSE:
			case ROUND:
			case ROW_COUNT:
			case RPAD:
			case RTRIM:
			case SEC_TO_TIME:
			case SESSION_USER:
			case SHA:
			case SHA1:
			case SHA2:
			case SIGN:
			case SIN:
			case SLEEP:
			case SOUNDEX:
			case SQL_THREAD_WAIT_AFTER_GTIDS:
			case SQRT:
			case SRID:
			case STARTPOINT:
			case STRCMP:
			case STR_TO_DATE:
			case ST_AREA:
			case ST_ASBINARY:
			case ST_ASTEXT:
			case ST_ASWKB:
			case ST_ASWKT:
			case ST_BUFFER:
			case ST_CENTROID:
			case ST_CONTAINS:
			case ST_CROSSES:
			case ST_DIFFERENCE:
			case ST_DIMENSION:
			case ST_DISJOINT:
			case ST_DISTANCE:
			case ST_ENDPOINT:
			case ST_ENVELOPE:
			case ST_EQUALS:
			case ST_EXTERIORRING:
			case ST_GEOMCOLLFROMTEXT:
			case ST_GEOMCOLLFROMTXT:
			case ST_GEOMCOLLFROMWKB:
			case ST_GEOMETRYCOLLECTIONFROMTEXT:
			case ST_GEOMETRYCOLLECTIONFROMWKB:
			case ST_GEOMETRYFROMTEXT:
			case ST_GEOMETRYFROMWKB:
			case ST_GEOMETRYN:
			case ST_GEOMETRYTYPE:
			case ST_GEOMFROMTEXT:
			case ST_GEOMFROMWKB:
			case ST_INTERIORRINGN:
			case ST_INTERSECTION:
			case ST_INTERSECTS:
			case ST_ISCLOSED:
			case ST_ISEMPTY:
			case ST_ISSIMPLE:
			case ST_LINEFROMTEXT:
			case ST_LINEFROMWKB:
			case ST_LINESTRINGFROMTEXT:
			case ST_LINESTRINGFROMWKB:
			case ST_NUMGEOMETRIES:
			case ST_NUMINTERIORRING:
			case ST_NUMINTERIORRINGS:
			case ST_NUMPOINTS:
			case ST_OVERLAPS:
			case ST_POINTFROMTEXT:
			case ST_POINTFROMWKB:
			case ST_POINTN:
			case ST_POLYFROMTEXT:
			case ST_POLYFROMWKB:
			case ST_POLYGONFROMTEXT:
			case ST_POLYGONFROMWKB:
			case ST_SRID:
			case ST_STARTPOINT:
			case ST_SYMDIFFERENCE:
			case ST_TOUCHES:
			case ST_UNION:
			case ST_WITHIN:
			case ST_X:
			case ST_Y:
			case SUBDATE:
			case SUBSTRING_INDEX:
			case SUBTIME:
			case SYSTEM_USER:
			case TAN:
			case TIMEDIFF:
			case TIMESTAMPADD:
			case TIMESTAMPDIFF:
			case TIME_FORMAT:
			case TIME_TO_SEC:
			case TOUCHES:
			case TO_BASE64:
			case TO_DAYS:
			case TO_SECONDS:
			case UCASE:
			case UNCOMPRESS:
			case UNCOMPRESSED_LENGTH:
			case UNHEX:
			case UNIX_TIMESTAMP:
			case UPDATEXML:
			case UPPER:
			case UUID:
			case UUID_SHORT:
			case VALIDATE_PASSWORD_STRENGTH:
			case VERSION:
			case WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS:
			case WEEKDAY:
			case WEEKOFYEAR:
			case WEIGHT_STRING:
			case WITHIN:
			case YEARWEEK:
			case Y_FUNCTION:
			case X_FUNCTION:
			case LASTVAL:
			case NEXTVAL:
			case SETVAL:
			case MOD:
				enterOuterAlt(_localctx, 1);
				{
				setState(7525);
				functionNameBase();
				}
				break;
			case ASCII:
				enterOuterAlt(_localctx, 2);
				{
				setState(7526);
				match(ASCII);
				}
				break;
			case CURDATE:
				enterOuterAlt(_localctx, 3);
				{
				setState(7527);
				match(CURDATE);
				}
				break;
			case CURRENT_DATE:
				enterOuterAlt(_localctx, 4);
				{
				setState(7528);
				match(CURRENT_DATE);
				}
				break;
			case CURRENT_TIME:
				enterOuterAlt(_localctx, 5);
				{
				setState(7529);
				match(CURRENT_TIME);
				}
				break;
			case CURRENT_TIMESTAMP:
				enterOuterAlt(_localctx, 6);
				{
				setState(7530);
				match(CURRENT_TIMESTAMP);
				}
				break;
			case CURTIME:
				enterOuterAlt(_localctx, 7);
				{
				setState(7531);
				match(CURTIME);
				}
				break;
			case DATE_ADD:
				enterOuterAlt(_localctx, 8);
				{
				setState(7532);
				match(DATE_ADD);
				}
				break;
			case DATE_SUB:
				enterOuterAlt(_localctx, 9);
				{
				setState(7533);
				match(DATE_SUB);
				}
				break;
			case IF:
				enterOuterAlt(_localctx, 10);
				{
				setState(7534);
				match(IF);
				}
				break;
			case INSERT:
				enterOuterAlt(_localctx, 11);
				{
				setState(7535);
				match(INSERT);
				}
				break;
			case LOCALTIME:
				enterOuterAlt(_localctx, 12);
				{
				setState(7536);
				match(LOCALTIME);
				}
				break;
			case LOCALTIMESTAMP:
				enterOuterAlt(_localctx, 13);
				{
				setState(7537);
				match(LOCALTIMESTAMP);
				}
				break;
			case MID:
				enterOuterAlt(_localctx, 14);
				{
				setState(7538);
				match(MID);
				}
				break;
			case NOW:
				enterOuterAlt(_localctx, 15);
				{
				setState(7539);
				match(NOW);
				}
				break;
			case REPEAT:
				enterOuterAlt(_localctx, 16);
				{
				setState(7540);
				match(REPEAT);
				}
				break;
			case REPLACE:
				enterOuterAlt(_localctx, 17);
				{
				setState(7541);
				match(REPLACE);
				}
				break;
			case SUBSTR:
				enterOuterAlt(_localctx, 18);
				{
				setState(7542);
				match(SUBSTR);
				}
				break;
			case SUBSTRING:
				enterOuterAlt(_localctx, 19);
				{
				setState(7543);
				match(SUBSTRING);
				}
				break;
			case SYSDATE:
				enterOuterAlt(_localctx, 20);
				{
				setState(7544);
				match(SYSDATE);
				}
				break;
			case TRIM:
				enterOuterAlt(_localctx, 21);
				{
				setState(7545);
				match(TRIM);
				}
				break;
			case UTC_DATE:
				enterOuterAlt(_localctx, 22);
				{
				setState(7546);
				match(UTC_DATE);
				}
				break;
			case UTC_TIME:
				enterOuterAlt(_localctx, 23);
				{
				setState(7547);
				match(UTC_TIME);
				}
				break;
			case UTC_TIMESTAMP:
				enterOuterAlt(_localctx, 24);
				{
				setState(7548);
				match(UTC_TIMESTAMP);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PasswordFunctionClauseContext extends ParserRuleContext {
		public Token functionName;
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public FunctionArgContext functionArg() {
			return getRuleContext(FunctionArgContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TerminalNode PASSWORD() { return getToken(MySqlParser.PASSWORD, 0); }
		public TerminalNode OLD_PASSWORD() { return getToken(MySqlParser.OLD_PASSWORD, 0); }
		public PasswordFunctionClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_passwordFunctionClause; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPasswordFunctionClause(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPasswordFunctionClause(this);
		}
	}

	public final PasswordFunctionClauseContext passwordFunctionClause() throws RecognitionException {
		PasswordFunctionClauseContext _localctx = new PasswordFunctionClauseContext(_ctx, getState());
		enterRule(_localctx, 702, RULE_passwordFunctionClause);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7551);
			((PasswordFunctionClauseContext)_localctx).functionName = _input.LT(1);
			_la = _input.LA(1);
			if ( !(_la==OLD_PASSWORD || _la==PASSWORD) ) {
				((PasswordFunctionClauseContext)_localctx).functionName = (Token)_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(7552);
			match(LR_BRACKET);
			setState(7553);
			functionArg();
			setState(7554);
			match(RR_BRACKET);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FunctionArgsContext extends ParserRuleContext {
		public List constant() {
			return getRuleContexts(ConstantContext.class);
		}
		public ConstantContext constant(int i) {
			return getRuleContext(ConstantContext.class,i);
		}
		public List fullColumnName() {
			return getRuleContexts(FullColumnNameContext.class);
		}
		public FullColumnNameContext fullColumnName(int i) {
			return getRuleContext(FullColumnNameContext.class,i);
		}
		public List functionCall() {
			return getRuleContexts(FunctionCallContext.class);
		}
		public FunctionCallContext functionCall(int i) {
			return getRuleContext(FunctionCallContext.class,i);
		}
		public List expression() {
			return getRuleContexts(ExpressionContext.class);
		}
		public ExpressionContext expression(int i) {
			return getRuleContext(ExpressionContext.class,i);
		}
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public FunctionArgsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_functionArgs; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterFunctionArgs(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitFunctionArgs(this);
		}
	}

	public final FunctionArgsContext functionArgs() throws RecognitionException {
		FunctionArgsContext _localctx = new FunctionArgsContext(_ctx, getState());
		enterRule(_localctx, 704, RULE_functionArgs);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7560);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1134,_ctx) ) {
			case 1:
				{
				setState(7556);
				constant();
				}
				break;
			case 2:
				{
				setState(7557);
				fullColumnName();
				}
				break;
			case 3:
				{
				setState(7558);
				functionCall();
				}
				break;
			case 4:
				{
				setState(7559);
				expression(0);
				}
				break;
			}
			setState(7571);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA) {
				{
				{
				setState(7562);
				match(COMMA);
				setState(7567);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,1135,_ctx) ) {
				case 1:
					{
					setState(7563);
					constant();
					}
					break;
				case 2:
					{
					setState(7564);
					fullColumnName();
					}
					break;
				case 3:
					{
					setState(7565);
					functionCall();
					}
					break;
				case 4:
					{
					setState(7566);
					expression(0);
					}
					break;
				}
				}
				}
				setState(7573);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FunctionArgContext extends ParserRuleContext {
		public ConstantContext constant() {
			return getRuleContext(ConstantContext.class,0);
		}
		public FullColumnNameContext fullColumnName() {
			return getRuleContext(FullColumnNameContext.class,0);
		}
		public FunctionCallContext functionCall() {
			return getRuleContext(FunctionCallContext.class,0);
		}
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public FunctionArgContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_functionArg; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterFunctionArg(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitFunctionArg(this);
		}
	}

	public final FunctionArgContext functionArg() throws RecognitionException {
		FunctionArgContext _localctx = new FunctionArgContext(_ctx, getState());
		enterRule(_localctx, 706, RULE_functionArg);
		try {
			setState(7578);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1137,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(7574);
				constant();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(7575);
				fullColumnName();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(7576);
				functionCall();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(7577);
				expression(0);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ExpressionContext extends ParserRuleContext {
		public ExpressionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_expression; }
	 
		public ExpressionContext() { }
		public void copyFrom(ExpressionContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class IsExpressionContext extends ExpressionContext {
		public Token testValue;
		public PredicateContext predicate() {
			return getRuleContext(PredicateContext.class,0);
		}
		public TerminalNode IS() { return getToken(MySqlParser.IS, 0); }
		public TerminalNode TRUE() { return getToken(MySqlParser.TRUE, 0); }
		public TerminalNode FALSE() { return getToken(MySqlParser.FALSE, 0); }
		public TerminalNode UNKNOWN() { return getToken(MySqlParser.UNKNOWN, 0); }
		public TerminalNode NOT() { return getToken(MySqlParser.NOT, 0); }
		public IsExpressionContext(ExpressionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterIsExpression(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitIsExpression(this);
		}
	}
	public static class NotExpressionContext extends ExpressionContext {
		public Token notOperator;
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public TerminalNode NOT() { return getToken(MySqlParser.NOT, 0); }
		public TerminalNode EXCLAMATION_SYMBOL() { return getToken(MySqlParser.EXCLAMATION_SYMBOL, 0); }
		public NotExpressionContext(ExpressionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterNotExpression(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitNotExpression(this);
		}
	}
	public static class LogicalExpressionContext extends ExpressionContext {
		public List expression() {
			return getRuleContexts(ExpressionContext.class);
		}
		public ExpressionContext expression(int i) {
			return getRuleContext(ExpressionContext.class,i);
		}
		public LogicalOperatorContext logicalOperator() {
			return getRuleContext(LogicalOperatorContext.class,0);
		}
		public LogicalExpressionContext(ExpressionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterLogicalExpression(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitLogicalExpression(this);
		}
	}
	public static class PredicateExpressionContext extends ExpressionContext {
		public PredicateContext predicate() {
			return getRuleContext(PredicateContext.class,0);
		}
		public PredicateExpressionContext(ExpressionContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPredicateExpression(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPredicateExpression(this);
		}
	}

	public final ExpressionContext expression() throws RecognitionException {
		return expression(0);
	}

	private ExpressionContext expression(int _p) throws RecognitionException {
		ParserRuleContext _parentctx = _ctx;
		int _parentState = getState();
		ExpressionContext _localctx = new ExpressionContext(_ctx, _parentState);
		ExpressionContext _prevctx = _localctx;
		int _startState = 708;
		enterRecursionRule(_localctx, 708, RULE_expression, _p);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(7591);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1139,_ctx) ) {
			case 1:
				{
				_localctx = new NotExpressionContext(_localctx);
				_ctx = _localctx;
				_prevctx = _localctx;

				setState(7581);
				((NotExpressionContext)_localctx).notOperator = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==NOT || _la==EXCLAMATION_SYMBOL) ) {
					((NotExpressionContext)_localctx).notOperator = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(7582);
				expression(4);
				}
				break;
			case 2:
				{
				_localctx = new IsExpressionContext(_localctx);
				_ctx = _localctx;
				_prevctx = _localctx;
				setState(7583);
				predicate(0);
				setState(7584);
				match(IS);
				setState(7586);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==NOT) {
					{
					setState(7585);
					match(NOT);
					}
				}

				setState(7588);
				((IsExpressionContext)_localctx).testValue = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==FALSE || _la==TRUE || _la==UNKNOWN) ) {
					((IsExpressionContext)_localctx).testValue = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case 3:
				{
				_localctx = new PredicateExpressionContext(_localctx);
				_ctx = _localctx;
				_prevctx = _localctx;
				setState(7590);
				predicate(0);
				}
				break;
			}
			_ctx.stop = _input.LT(-1);
			setState(7599);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,1140,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					if ( _parseListeners!=null ) triggerExitRuleEvent();
					_prevctx = _localctx;
					{
					{
					_localctx = new LogicalExpressionContext(new ExpressionContext(_parentctx, _parentState));
					pushNewRecursionContext(_localctx, _startState, RULE_expression);
					setState(7593);
					if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)");
					setState(7594);
					logicalOperator();
					setState(7595);
					expression(4);
					}
					} 
				}
				setState(7601);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,1140,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			unrollRecursionContexts(_parentctx);
		}
		return _localctx;
	}

	public static class PredicateContext extends ParserRuleContext {
		public PredicateContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_predicate; }
	 
		public PredicateContext() { }
		public void copyFrom(PredicateContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class SoundsLikePredicateContext extends PredicateContext {
		public List predicate() {
			return getRuleContexts(PredicateContext.class);
		}
		public PredicateContext predicate(int i) {
			return getRuleContext(PredicateContext.class,i);
		}
		public TerminalNode SOUNDS() { return getToken(MySqlParser.SOUNDS, 0); }
		public TerminalNode LIKE() { return getToken(MySqlParser.LIKE, 0); }
		public SoundsLikePredicateContext(PredicateContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSoundsLikePredicate(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSoundsLikePredicate(this);
		}
	}
	public static class ExpressionAtomPredicateContext extends PredicateContext {
		public ExpressionAtomContext expressionAtom() {
			return getRuleContext(ExpressionAtomContext.class,0);
		}
		public ExpressionAtomPredicateContext(PredicateContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterExpressionAtomPredicate(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitExpressionAtomPredicate(this);
		}
	}
	public static class SubqueryComparisonPredicateContext extends PredicateContext {
		public Token quantifier;
		public PredicateContext predicate() {
			return getRuleContext(PredicateContext.class,0);
		}
		public ComparisonOperatorContext comparisonOperator() {
			return getRuleContext(ComparisonOperatorContext.class,0);
		}
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public SelectStatementContext selectStatement() {
			return getRuleContext(SelectStatementContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public TerminalNode ALL() { return getToken(MySqlParser.ALL, 0); }
		public TerminalNode ANY() { return getToken(MySqlParser.ANY, 0); }
		public TerminalNode SOME() { return getToken(MySqlParser.SOME, 0); }
		public SubqueryComparisonPredicateContext(PredicateContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSubqueryComparisonPredicate(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSubqueryComparisonPredicate(this);
		}
	}
	public static class JsonMemberOfPredicateContext extends PredicateContext {
		public List predicate() {
			return getRuleContexts(PredicateContext.class);
		}
		public PredicateContext predicate(int i) {
			return getRuleContext(PredicateContext.class,i);
		}
		public TerminalNode MEMBER() { return getToken(MySqlParser.MEMBER, 0); }
		public TerminalNode OF() { return getToken(MySqlParser.OF, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public JsonMemberOfPredicateContext(PredicateContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterJsonMemberOfPredicate(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitJsonMemberOfPredicate(this);
		}
	}
	public static class BinaryComparisonPredicateContext extends PredicateContext {
		public PredicateContext left;
		public PredicateContext right;
		public ComparisonOperatorContext comparisonOperator() {
			return getRuleContext(ComparisonOperatorContext.class,0);
		}
		public List predicate() {
			return getRuleContexts(PredicateContext.class);
		}
		public PredicateContext predicate(int i) {
			return getRuleContext(PredicateContext.class,i);
		}
		public BinaryComparisonPredicateContext(PredicateContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterBinaryComparisonPredicate(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitBinaryComparisonPredicate(this);
		}
	}
	public static class InPredicateContext extends PredicateContext {
		public PredicateContext predicate() {
			return getRuleContext(PredicateContext.class,0);
		}
		public TerminalNode IN() { return getToken(MySqlParser.IN, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public SelectStatementContext selectStatement() {
			return getRuleContext(SelectStatementContext.class,0);
		}
		public ExpressionsContext expressions() {
			return getRuleContext(ExpressionsContext.class,0);
		}
		public TerminalNode NOT() { return getToken(MySqlParser.NOT, 0); }
		public InPredicateContext(PredicateContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterInPredicate(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitInPredicate(this);
		}
	}
	public static class BetweenPredicateContext extends PredicateContext {
		public List predicate() {
			return getRuleContexts(PredicateContext.class);
		}
		public PredicateContext predicate(int i) {
			return getRuleContext(PredicateContext.class,i);
		}
		public TerminalNode BETWEEN() { return getToken(MySqlParser.BETWEEN, 0); }
		public TerminalNode AND() { return getToken(MySqlParser.AND, 0); }
		public TerminalNode NOT() { return getToken(MySqlParser.NOT, 0); }
		public BetweenPredicateContext(PredicateContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterBetweenPredicate(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitBetweenPredicate(this);
		}
	}
	public static class IsNullPredicateContext extends PredicateContext {
		public PredicateContext predicate() {
			return getRuleContext(PredicateContext.class,0);
		}
		public TerminalNode IS() { return getToken(MySqlParser.IS, 0); }
		public NullNotnullContext nullNotnull() {
			return getRuleContext(NullNotnullContext.class,0);
		}
		public IsNullPredicateContext(PredicateContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterIsNullPredicate(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitIsNullPredicate(this);
		}
	}
	public static class LikePredicateContext extends PredicateContext {
		public List predicate() {
			return getRuleContexts(PredicateContext.class);
		}
		public PredicateContext predicate(int i) {
			return getRuleContext(PredicateContext.class,i);
		}
		public TerminalNode LIKE() { return getToken(MySqlParser.LIKE, 0); }
		public TerminalNode NOT() { return getToken(MySqlParser.NOT, 0); }
		public TerminalNode ESCAPE() { return getToken(MySqlParser.ESCAPE, 0); }
		public TerminalNode STRING_LITERAL() { return getToken(MySqlParser.STRING_LITERAL, 0); }
		public LikePredicateContext(PredicateContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterLikePredicate(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitLikePredicate(this);
		}
	}
	public static class RegexpPredicateContext extends PredicateContext {
		public Token regex;
		public List predicate() {
			return getRuleContexts(PredicateContext.class);
		}
		public PredicateContext predicate(int i) {
			return getRuleContext(PredicateContext.class,i);
		}
		public TerminalNode REGEXP() { return getToken(MySqlParser.REGEXP, 0); }
		public TerminalNode RLIKE() { return getToken(MySqlParser.RLIKE, 0); }
		public TerminalNode NOT() { return getToken(MySqlParser.NOT, 0); }
		public RegexpPredicateContext(PredicateContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterRegexpPredicate(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitRegexpPredicate(this);
		}
	}

	public final PredicateContext predicate() throws RecognitionException {
		return predicate(0);
	}

	private PredicateContext predicate(int _p) throws RecognitionException {
		ParserRuleContext _parentctx = _ctx;
		int _parentState = getState();
		PredicateContext _localctx = new PredicateContext(_ctx, _parentState);
		PredicateContext _prevctx = _localctx;
		int _startState = 710;
		enterRecursionRule(_localctx, 710, RULE_predicate, _p);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			{
			_localctx = new ExpressionAtomPredicateContext(_localctx);
			_ctx = _localctx;
			_prevctx = _localctx;

			setState(7603);
			expressionAtom(0);
			}
			_ctx.stop = _input.LT(-1);
			setState(7669);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,1148,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					if ( _parseListeners!=null ) triggerExitRuleEvent();
					_prevctx = _localctx;
					{
					setState(7667);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,1147,_ctx) ) {
					case 1:
						{
						_localctx = new BinaryComparisonPredicateContext(new PredicateContext(_parentctx, _parentState));
						((BinaryComparisonPredicateContext)_localctx).left = _prevctx;
						pushNewRecursionContext(_localctx, _startState, RULE_predicate);
						setState(7605);
						if (!(precpred(_ctx, 8))) throw new FailedPredicateException(this, "precpred(_ctx, 8)");
						setState(7606);
						comparisonOperator();
						setState(7607);
						((BinaryComparisonPredicateContext)_localctx).right = predicate(9);
						}
						break;
					case 2:
						{
						_localctx = new BetweenPredicateContext(new PredicateContext(_parentctx, _parentState));
						pushNewRecursionContext(_localctx, _startState, RULE_predicate);
						setState(7609);
						if (!(precpred(_ctx, 6))) throw new FailedPredicateException(this, "precpred(_ctx, 6)");
						setState(7611);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==NOT) {
							{
							setState(7610);
							match(NOT);
							}
						}

						setState(7613);
						match(BETWEEN);
						setState(7614);
						predicate(0);
						setState(7615);
						match(AND);
						setState(7616);
						predicate(7);
						}
						break;
					case 3:
						{
						_localctx = new SoundsLikePredicateContext(new PredicateContext(_parentctx, _parentState));
						pushNewRecursionContext(_localctx, _startState, RULE_predicate);
						setState(7618);
						if (!(precpred(_ctx, 5))) throw new FailedPredicateException(this, "precpred(_ctx, 5)");
						setState(7619);
						match(SOUNDS);
						setState(7620);
						match(LIKE);
						setState(7621);
						predicate(6);
						}
						break;
					case 4:
						{
						_localctx = new RegexpPredicateContext(new PredicateContext(_parentctx, _parentState));
						pushNewRecursionContext(_localctx, _startState, RULE_predicate);
						setState(7622);
						if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)");
						setState(7624);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==NOT) {
							{
							setState(7623);
							match(NOT);
							}
						}

						setState(7626);
						((RegexpPredicateContext)_localctx).regex = _input.LT(1);
						_la = _input.LA(1);
						if ( !(_la==REGEXP || _la==RLIKE) ) {
							((RegexpPredicateContext)_localctx).regex = (Token)_errHandler.recoverInline(this);
						}
						else {
							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
							_errHandler.reportMatch(this);
							consume();
						}
						setState(7627);
						predicate(4);
						}
						break;
					case 5:
						{
						_localctx = new InPredicateContext(new PredicateContext(_parentctx, _parentState));
						pushNewRecursionContext(_localctx, _startState, RULE_predicate);
						setState(7628);
						if (!(precpred(_ctx, 10))) throw new FailedPredicateException(this, "precpred(_ctx, 10)");
						setState(7630);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==NOT) {
							{
							setState(7629);
							match(NOT);
							}
						}

						setState(7632);
						match(IN);
						setState(7633);
						match(LR_BRACKET);
						setState(7636);
						_errHandler.sync(this);
						switch ( getInterpreter().adaptivePredict(_input,1144,_ctx) ) {
						case 1:
							{
							setState(7634);
							selectStatement();
							}
							break;
						case 2:
							{
							setState(7635);
							expressions();
							}
							break;
						}
						setState(7638);
						match(RR_BRACKET);
						}
						break;
					case 6:
						{
						_localctx = new IsNullPredicateContext(new PredicateContext(_parentctx, _parentState));
						pushNewRecursionContext(_localctx, _startState, RULE_predicate);
						setState(7640);
						if (!(precpred(_ctx, 9))) throw new FailedPredicateException(this, "precpred(_ctx, 9)");
						setState(7641);
						match(IS);
						setState(7642);
						nullNotnull();
						}
						break;
					case 7:
						{
						_localctx = new SubqueryComparisonPredicateContext(new PredicateContext(_parentctx, _parentState));
						pushNewRecursionContext(_localctx, _startState, RULE_predicate);
						setState(7643);
						if (!(precpred(_ctx, 7))) throw new FailedPredicateException(this, "precpred(_ctx, 7)");
						setState(7644);
						comparisonOperator();
						setState(7645);
						((SubqueryComparisonPredicateContext)_localctx).quantifier = _input.LT(1);
						_la = _input.LA(1);
						if ( !(_la==ALL || _la==ANY || _la==SOME) ) {
							((SubqueryComparisonPredicateContext)_localctx).quantifier = (Token)_errHandler.recoverInline(this);
						}
						else {
							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
							_errHandler.reportMatch(this);
							consume();
						}
						setState(7646);
						match(LR_BRACKET);
						setState(7647);
						selectStatement();
						setState(7648);
						match(RR_BRACKET);
						}
						break;
					case 8:
						{
						_localctx = new LikePredicateContext(new PredicateContext(_parentctx, _parentState));
						pushNewRecursionContext(_localctx, _startState, RULE_predicate);
						setState(7650);
						if (!(precpred(_ctx, 4))) throw new FailedPredicateException(this, "precpred(_ctx, 4)");
						setState(7652);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==NOT) {
							{
							setState(7651);
							match(NOT);
							}
						}

						setState(7654);
						match(LIKE);
						setState(7655);
						predicate(0);
						setState(7658);
						_errHandler.sync(this);
						switch ( getInterpreter().adaptivePredict(_input,1146,_ctx) ) {
						case 1:
							{
							setState(7656);
							match(ESCAPE);
							setState(7657);
							match(STRING_LITERAL);
							}
							break;
						}
						}
						break;
					case 9:
						{
						_localctx = new JsonMemberOfPredicateContext(new PredicateContext(_parentctx, _parentState));
						pushNewRecursionContext(_localctx, _startState, RULE_predicate);
						setState(7660);
						if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)");
						setState(7661);
						match(MEMBER);
						setState(7662);
						match(OF);
						setState(7663);
						match(LR_BRACKET);
						setState(7664);
						predicate(0);
						setState(7665);
						match(RR_BRACKET);
						}
						break;
					}
					} 
				}
				setState(7671);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,1148,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			unrollRecursionContexts(_parentctx);
		}
		return _localctx;
	}

	public static class ExpressionAtomContext extends ParserRuleContext {
		public ExpressionAtomContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_expressionAtom; }
	 
		public ExpressionAtomContext() { }
		public void copyFrom(ExpressionAtomContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class UnaryExpressionAtomContext extends ExpressionAtomContext {
		public UnaryOperatorContext unaryOperator() {
			return getRuleContext(UnaryOperatorContext.class,0);
		}
		public ExpressionAtomContext expressionAtom() {
			return getRuleContext(ExpressionAtomContext.class,0);
		}
		public UnaryExpressionAtomContext(ExpressionAtomContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterUnaryExpressionAtom(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitUnaryExpressionAtom(this);
		}
	}
	public static class CollateExpressionAtomContext extends ExpressionAtomContext {
		public ExpressionAtomContext expressionAtom() {
			return getRuleContext(ExpressionAtomContext.class,0);
		}
		public TerminalNode COLLATE() { return getToken(MySqlParser.COLLATE, 0); }
		public CollationNameContext collationName() {
			return getRuleContext(CollationNameContext.class,0);
		}
		public CollateExpressionAtomContext(ExpressionAtomContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCollateExpressionAtom(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCollateExpressionAtom(this);
		}
	}
	public static class VariableAssignExpressionAtomContext extends ExpressionAtomContext {
		public TerminalNode LOCAL_ID() { return getToken(MySqlParser.LOCAL_ID, 0); }
		public TerminalNode VAR_ASSIGN() { return getToken(MySqlParser.VAR_ASSIGN, 0); }
		public ExpressionAtomContext expressionAtom() {
			return getRuleContext(ExpressionAtomContext.class,0);
		}
		public VariableAssignExpressionAtomContext(ExpressionAtomContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterVariableAssignExpressionAtom(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitVariableAssignExpressionAtom(this);
		}
	}
	public static class MysqlVariableExpressionAtomContext extends ExpressionAtomContext {
		public MysqlVariableContext mysqlVariable() {
			return getRuleContext(MysqlVariableContext.class,0);
		}
		public MysqlVariableExpressionAtomContext(ExpressionAtomContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterMysqlVariableExpressionAtom(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitMysqlVariableExpressionAtom(this);
		}
	}
	public static class NestedExpressionAtomContext extends ExpressionAtomContext {
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public List expression() {
			return getRuleContexts(ExpressionContext.class);
		}
		public ExpressionContext expression(int i) {
			return getRuleContext(ExpressionContext.class,i);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public NestedExpressionAtomContext(ExpressionAtomContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterNestedExpressionAtom(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitNestedExpressionAtom(this);
		}
	}
	public static class NestedRowExpressionAtomContext extends ExpressionAtomContext {
		public TerminalNode ROW() { return getToken(MySqlParser.ROW, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public List expression() {
			return getRuleContexts(ExpressionContext.class);
		}
		public ExpressionContext expression(int i) {
			return getRuleContext(ExpressionContext.class,i);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public List COMMA() { return getTokens(MySqlParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(MySqlParser.COMMA, i);
		}
		public NestedRowExpressionAtomContext(ExpressionAtomContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterNestedRowExpressionAtom(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitNestedRowExpressionAtom(this);
		}
	}
	public static class MathExpressionAtomContext extends ExpressionAtomContext {
		public ExpressionAtomContext left;
		public ExpressionAtomContext right;
		public MultOperatorContext multOperator() {
			return getRuleContext(MultOperatorContext.class,0);
		}
		public List expressionAtom() {
			return getRuleContexts(ExpressionAtomContext.class);
		}
		public ExpressionAtomContext expressionAtom(int i) {
			return getRuleContext(ExpressionAtomContext.class,i);
		}
		public AddOperatorContext addOperator() {
			return getRuleContext(AddOperatorContext.class,0);
		}
		public MathExpressionAtomContext(ExpressionAtomContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterMathExpressionAtom(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitMathExpressionAtom(this);
		}
	}
	public static class ExistsExpressionAtomContext extends ExpressionAtomContext {
		public TerminalNode EXISTS() { return getToken(MySqlParser.EXISTS, 0); }
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public SelectStatementContext selectStatement() {
			return getRuleContext(SelectStatementContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public ExistsExpressionAtomContext(ExpressionAtomContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterExistsExpressionAtom(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitExistsExpressionAtom(this);
		}
	}
	public static class IntervalExpressionAtomContext extends ExpressionAtomContext {
		public TerminalNode INTERVAL() { return getToken(MySqlParser.INTERVAL, 0); }
		public ExpressionContext expression() {
			return getRuleContext(ExpressionContext.class,0);
		}
		public IntervalTypeContext intervalType() {
			return getRuleContext(IntervalTypeContext.class,0);
		}
		public IntervalExpressionAtomContext(ExpressionAtomContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterIntervalExpressionAtom(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitIntervalExpressionAtom(this);
		}
	}
	public static class JsonExpressionAtomContext extends ExpressionAtomContext {
		public ExpressionAtomContext left;
		public ExpressionAtomContext right;
		public JsonOperatorContext jsonOperator() {
			return getRuleContext(JsonOperatorContext.class,0);
		}
		public List expressionAtom() {
			return getRuleContexts(ExpressionAtomContext.class);
		}
		public ExpressionAtomContext expressionAtom(int i) {
			return getRuleContext(ExpressionAtomContext.class,i);
		}
		public JsonExpressionAtomContext(ExpressionAtomContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterJsonExpressionAtom(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitJsonExpressionAtom(this);
		}
	}
	public static class SubqueryExpressionAtomContext extends ExpressionAtomContext {
		public TerminalNode LR_BRACKET() { return getToken(MySqlParser.LR_BRACKET, 0); }
		public SelectStatementContext selectStatement() {
			return getRuleContext(SelectStatementContext.class,0);
		}
		public TerminalNode RR_BRACKET() { return getToken(MySqlParser.RR_BRACKET, 0); }
		public SubqueryExpressionAtomContext(ExpressionAtomContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterSubqueryExpressionAtom(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitSubqueryExpressionAtom(this);
		}
	}
	public static class ConstantExpressionAtomContext extends ExpressionAtomContext {
		public ConstantContext constant() {
			return getRuleContext(ConstantContext.class,0);
		}
		public ConstantExpressionAtomContext(ExpressionAtomContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterConstantExpressionAtom(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitConstantExpressionAtom(this);
		}
	}
	public static class FunctionCallExpressionAtomContext extends ExpressionAtomContext {
		public FunctionCallContext functionCall() {
			return getRuleContext(FunctionCallContext.class,0);
		}
		public FunctionCallExpressionAtomContext(ExpressionAtomContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterFunctionCallExpressionAtom(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitFunctionCallExpressionAtom(this);
		}
	}
	public static class BinaryExpressionAtomContext extends ExpressionAtomContext {
		public TerminalNode BINARY() { return getToken(MySqlParser.BINARY, 0); }
		public ExpressionAtomContext expressionAtom() {
			return getRuleContext(ExpressionAtomContext.class,0);
		}
		public BinaryExpressionAtomContext(ExpressionAtomContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterBinaryExpressionAtom(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitBinaryExpressionAtom(this);
		}
	}
	public static class FullColumnNameExpressionAtomContext extends ExpressionAtomContext {
		public FullColumnNameContext fullColumnName() {
			return getRuleContext(FullColumnNameContext.class,0);
		}
		public FullColumnNameExpressionAtomContext(ExpressionAtomContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterFullColumnNameExpressionAtom(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitFullColumnNameExpressionAtom(this);
		}
	}
	public static class BitExpressionAtomContext extends ExpressionAtomContext {
		public ExpressionAtomContext left;
		public ExpressionAtomContext right;
		public BitOperatorContext bitOperator() {
			return getRuleContext(BitOperatorContext.class,0);
		}
		public List expressionAtom() {
			return getRuleContexts(ExpressionAtomContext.class);
		}
		public ExpressionAtomContext expressionAtom(int i) {
			return getRuleContext(ExpressionAtomContext.class,i);
		}
		public BitExpressionAtomContext(ExpressionAtomContext ctx) { copyFrom(ctx); }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterBitExpressionAtom(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitBitExpressionAtom(this);
		}
	}

	public final ExpressionAtomContext expressionAtom() throws RecognitionException {
		return expressionAtom(0);
	}

	private ExpressionAtomContext expressionAtom(int _p) throws RecognitionException {
		ParserRuleContext _parentctx = _ctx;
		int _parentState = getState();
		ExpressionAtomContext _localctx = new ExpressionAtomContext(_ctx, _parentState);
		ExpressionAtomContext _prevctx = _localctx;
		int _startState = 712;
		enterRecursionRule(_localctx, 712, RULE_expressionAtom, _p);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(7720);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1151,_ctx) ) {
			case 1:
				{
				_localctx = new ConstantExpressionAtomContext(_localctx);
				_ctx = _localctx;
				_prevctx = _localctx;

				setState(7673);
				constant();
				}
				break;
			case 2:
				{
				_localctx = new FullColumnNameExpressionAtomContext(_localctx);
				_ctx = _localctx;
				_prevctx = _localctx;
				setState(7674);
				fullColumnName();
				}
				break;
			case 3:
				{
				_localctx = new FunctionCallExpressionAtomContext(_localctx);
				_ctx = _localctx;
				_prevctx = _localctx;
				setState(7675);
				functionCall();
				}
				break;
			case 4:
				{
				_localctx = new MysqlVariableExpressionAtomContext(_localctx);
				_ctx = _localctx;
				_prevctx = _localctx;
				setState(7676);
				mysqlVariable();
				}
				break;
			case 5:
				{
				_localctx = new UnaryExpressionAtomContext(_localctx);
				_ctx = _localctx;
				_prevctx = _localctx;
				setState(7677);
				unaryOperator();
				setState(7678);
				expressionAtom(12);
				}
				break;
			case 6:
				{
				_localctx = new BinaryExpressionAtomContext(_localctx);
				_ctx = _localctx;
				_prevctx = _localctx;
				setState(7680);
				match(BINARY);
				setState(7681);
				expressionAtom(11);
				}
				break;
			case 7:
				{
				_localctx = new VariableAssignExpressionAtomContext(_localctx);
				_ctx = _localctx;
				_prevctx = _localctx;
				setState(7682);
				match(LOCAL_ID);
				setState(7683);
				match(VAR_ASSIGN);
				setState(7684);
				expressionAtom(10);
				}
				break;
			case 8:
				{
				_localctx = new NestedExpressionAtomContext(_localctx);
				_ctx = _localctx;
				_prevctx = _localctx;
				setState(7685);
				match(LR_BRACKET);
				setState(7686);
				expression(0);
				setState(7691);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(7687);
					match(COMMA);
					setState(7688);
					expression(0);
					}
					}
					setState(7693);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(7694);
				match(RR_BRACKET);
				}
				break;
			case 9:
				{
				_localctx = new NestedRowExpressionAtomContext(_localctx);
				_ctx = _localctx;
				_prevctx = _localctx;
				setState(7696);
				match(ROW);
				setState(7697);
				match(LR_BRACKET);
				setState(7698);
				expression(0);
				setState(7701); 
				_errHandler.sync(this);
				_la = _input.LA(1);
				do {
					{
					{
					setState(7699);
					match(COMMA);
					setState(7700);
					expression(0);
					}
					}
					setState(7703); 
					_errHandler.sync(this);
					_la = _input.LA(1);
				} while ( _la==COMMA );
				setState(7705);
				match(RR_BRACKET);
				}
				break;
			case 10:
				{
				_localctx = new ExistsExpressionAtomContext(_localctx);
				_ctx = _localctx;
				_prevctx = _localctx;
				setState(7707);
				match(EXISTS);
				setState(7708);
				match(LR_BRACKET);
				setState(7709);
				selectStatement();
				setState(7710);
				match(RR_BRACKET);
				}
				break;
			case 11:
				{
				_localctx = new SubqueryExpressionAtomContext(_localctx);
				_ctx = _localctx;
				_prevctx = _localctx;
				setState(7712);
				match(LR_BRACKET);
				setState(7713);
				selectStatement();
				setState(7714);
				match(RR_BRACKET);
				}
				break;
			case 12:
				{
				_localctx = new IntervalExpressionAtomContext(_localctx);
				_ctx = _localctx;
				_prevctx = _localctx;
				setState(7716);
				match(INTERVAL);
				setState(7717);
				expression(0);
				setState(7718);
				intervalType();
				}
				break;
			}
			_ctx.stop = _input.LT(-1);
			setState(7743);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,1153,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					if ( _parseListeners!=null ) triggerExitRuleEvent();
					_prevctx = _localctx;
					{
					setState(7741);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,1152,_ctx) ) {
					case 1:
						{
						_localctx = new BitExpressionAtomContext(new ExpressionAtomContext(_parentctx, _parentState));
						((BitExpressionAtomContext)_localctx).left = _prevctx;
						pushNewRecursionContext(_localctx, _startState, RULE_expressionAtom);
						setState(7722);
						if (!(precpred(_ctx, 4))) throw new FailedPredicateException(this, "precpred(_ctx, 4)");
						setState(7723);
						bitOperator();
						setState(7724);
						((BitExpressionAtomContext)_localctx).right = expressionAtom(5);
						}
						break;
					case 2:
						{
						_localctx = new MathExpressionAtomContext(new ExpressionAtomContext(_parentctx, _parentState));
						((MathExpressionAtomContext)_localctx).left = _prevctx;
						pushNewRecursionContext(_localctx, _startState, RULE_expressionAtom);
						setState(7726);
						if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)");
						setState(7727);
						multOperator();
						setState(7728);
						((MathExpressionAtomContext)_localctx).right = expressionAtom(4);
						}
						break;
					case 3:
						{
						_localctx = new MathExpressionAtomContext(new ExpressionAtomContext(_parentctx, _parentState));
						((MathExpressionAtomContext)_localctx).left = _prevctx;
						pushNewRecursionContext(_localctx, _startState, RULE_expressionAtom);
						setState(7730);
						if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)");
						setState(7731);
						addOperator();
						setState(7732);
						((MathExpressionAtomContext)_localctx).right = expressionAtom(3);
						}
						break;
					case 4:
						{
						_localctx = new JsonExpressionAtomContext(new ExpressionAtomContext(_parentctx, _parentState));
						((JsonExpressionAtomContext)_localctx).left = _prevctx;
						pushNewRecursionContext(_localctx, _startState, RULE_expressionAtom);
						setState(7734);
						if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
						setState(7735);
						jsonOperator();
						setState(7736);
						((JsonExpressionAtomContext)_localctx).right = expressionAtom(2);
						}
						break;
					case 5:
						{
						_localctx = new CollateExpressionAtomContext(new ExpressionAtomContext(_parentctx, _parentState));
						pushNewRecursionContext(_localctx, _startState, RULE_expressionAtom);
						setState(7738);
						if (!(precpred(_ctx, 14))) throw new FailedPredicateException(this, "precpred(_ctx, 14)");
						setState(7739);
						match(COLLATE);
						setState(7740);
						collationName();
						}
						break;
					}
					} 
				}
				setState(7745);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,1153,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			unrollRecursionContexts(_parentctx);
		}
		return _localctx;
	}

	public static class UnaryOperatorContext extends ParserRuleContext {
		public TerminalNode EXCLAMATION_SYMBOL() { return getToken(MySqlParser.EXCLAMATION_SYMBOL, 0); }
		public TerminalNode BIT_NOT_OP() { return getToken(MySqlParser.BIT_NOT_OP, 0); }
		public TerminalNode PLUS() { return getToken(MySqlParser.PLUS, 0); }
		public TerminalNode MINUS() { return getToken(MySqlParser.MINUS, 0); }
		public TerminalNode NOT() { return getToken(MySqlParser.NOT, 0); }
		public UnaryOperatorContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_unaryOperator; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterUnaryOperator(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitUnaryOperator(this);
		}
	}

	public final UnaryOperatorContext unaryOperator() throws RecognitionException {
		UnaryOperatorContext _localctx = new UnaryOperatorContext(_ctx, getState());
		enterRule(_localctx, 714, RULE_unaryOperator);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7746);
			_la = _input.LA(1);
			if ( !(_la==NOT || ((((_la - 1147)) & ~0x3f) == 0 && ((1L << (_la - 1147)) & ((1L << (PLUS - 1147)) | (1L << (MINUS - 1147)) | (1L << (EXCLAMATION_SYMBOL - 1147)) | (1L << (BIT_NOT_OP - 1147)))) != 0)) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ComparisonOperatorContext extends ParserRuleContext {
		public TerminalNode EQUAL_SYMBOL() { return getToken(MySqlParser.EQUAL_SYMBOL, 0); }
		public TerminalNode GREATER_SYMBOL() { return getToken(MySqlParser.GREATER_SYMBOL, 0); }
		public TerminalNode LESS_SYMBOL() { return getToken(MySqlParser.LESS_SYMBOL, 0); }
		public TerminalNode EXCLAMATION_SYMBOL() { return getToken(MySqlParser.EXCLAMATION_SYMBOL, 0); }
		public ComparisonOperatorContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_comparisonOperator; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterComparisonOperator(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitComparisonOperator(this);
		}
	}

	public final ComparisonOperatorContext comparisonOperator() throws RecognitionException {
		ComparisonOperatorContext _localctx = new ComparisonOperatorContext(_ctx, getState());
		enterRule(_localctx, 716, RULE_comparisonOperator);
		try {
			setState(7762);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1154,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(7748);
				match(EQUAL_SYMBOL);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(7749);
				match(GREATER_SYMBOL);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(7750);
				match(LESS_SYMBOL);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(7751);
				match(LESS_SYMBOL);
				setState(7752);
				match(EQUAL_SYMBOL);
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(7753);
				match(GREATER_SYMBOL);
				setState(7754);
				match(EQUAL_SYMBOL);
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(7755);
				match(LESS_SYMBOL);
				setState(7756);
				match(GREATER_SYMBOL);
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(7757);
				match(EXCLAMATION_SYMBOL);
				setState(7758);
				match(EQUAL_SYMBOL);
				}
				break;
			case 8:
				enterOuterAlt(_localctx, 8);
				{
				setState(7759);
				match(LESS_SYMBOL);
				setState(7760);
				match(EQUAL_SYMBOL);
				setState(7761);
				match(GREATER_SYMBOL);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class LogicalOperatorContext extends ParserRuleContext {
		public TerminalNode AND() { return getToken(MySqlParser.AND, 0); }
		public List BIT_AND_OP() { return getTokens(MySqlParser.BIT_AND_OP); }
		public TerminalNode BIT_AND_OP(int i) {
			return getToken(MySqlParser.BIT_AND_OP, i);
		}
		public TerminalNode XOR() { return getToken(MySqlParser.XOR, 0); }
		public TerminalNode OR() { return getToken(MySqlParser.OR, 0); }
		public List BIT_OR_OP() { return getTokens(MySqlParser.BIT_OR_OP); }
		public TerminalNode BIT_OR_OP(int i) {
			return getToken(MySqlParser.BIT_OR_OP, i);
		}
		public LogicalOperatorContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_logicalOperator; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterLogicalOperator(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitLogicalOperator(this);
		}
	}

	public final LogicalOperatorContext logicalOperator() throws RecognitionException {
		LogicalOperatorContext _localctx = new LogicalOperatorContext(_ctx, getState());
		enterRule(_localctx, 718, RULE_logicalOperator);
		try {
			setState(7771);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case AND:
				enterOuterAlt(_localctx, 1);
				{
				setState(7764);
				match(AND);
				}
				break;
			case BIT_AND_OP:
				enterOuterAlt(_localctx, 2);
				{
				setState(7765);
				match(BIT_AND_OP);
				setState(7766);
				match(BIT_AND_OP);
				}
				break;
			case XOR:
				enterOuterAlt(_localctx, 3);
				{
				setState(7767);
				match(XOR);
				}
				break;
			case OR:
				enterOuterAlt(_localctx, 4);
				{
				setState(7768);
				match(OR);
				}
				break;
			case BIT_OR_OP:
				enterOuterAlt(_localctx, 5);
				{
				setState(7769);
				match(BIT_OR_OP);
				setState(7770);
				match(BIT_OR_OP);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class BitOperatorContext extends ParserRuleContext {
		public List LESS_SYMBOL() { return getTokens(MySqlParser.LESS_SYMBOL); }
		public TerminalNode LESS_SYMBOL(int i) {
			return getToken(MySqlParser.LESS_SYMBOL, i);
		}
		public List GREATER_SYMBOL() { return getTokens(MySqlParser.GREATER_SYMBOL); }
		public TerminalNode GREATER_SYMBOL(int i) {
			return getToken(MySqlParser.GREATER_SYMBOL, i);
		}
		public TerminalNode BIT_AND_OP() { return getToken(MySqlParser.BIT_AND_OP, 0); }
		public TerminalNode BIT_XOR_OP() { return getToken(MySqlParser.BIT_XOR_OP, 0); }
		public TerminalNode BIT_OR_OP() { return getToken(MySqlParser.BIT_OR_OP, 0); }
		public BitOperatorContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_bitOperator; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterBitOperator(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitBitOperator(this);
		}
	}

	public final BitOperatorContext bitOperator() throws RecognitionException {
		BitOperatorContext _localctx = new BitOperatorContext(_ctx, getState());
		enterRule(_localctx, 720, RULE_bitOperator);
		try {
			setState(7780);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case LESS_SYMBOL:
				enterOuterAlt(_localctx, 1);
				{
				setState(7773);
				match(LESS_SYMBOL);
				setState(7774);
				match(LESS_SYMBOL);
				}
				break;
			case GREATER_SYMBOL:
				enterOuterAlt(_localctx, 2);
				{
				setState(7775);
				match(GREATER_SYMBOL);
				setState(7776);
				match(GREATER_SYMBOL);
				}
				break;
			case BIT_AND_OP:
				enterOuterAlt(_localctx, 3);
				{
				setState(7777);
				match(BIT_AND_OP);
				}
				break;
			case BIT_XOR_OP:
				enterOuterAlt(_localctx, 4);
				{
				setState(7778);
				match(BIT_XOR_OP);
				}
				break;
			case BIT_OR_OP:
				enterOuterAlt(_localctx, 5);
				{
				setState(7779);
				match(BIT_OR_OP);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class MultOperatorContext extends ParserRuleContext {
		public TerminalNode STAR() { return getToken(MySqlParser.STAR, 0); }
		public TerminalNode DIVIDE() { return getToken(MySqlParser.DIVIDE, 0); }
		public TerminalNode MODULE() { return getToken(MySqlParser.MODULE, 0); }
		public TerminalNode DIV() { return getToken(MySqlParser.DIV, 0); }
		public TerminalNode MOD() { return getToken(MySqlParser.MOD, 0); }
		public MultOperatorContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_multOperator; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterMultOperator(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitMultOperator(this);
		}
	}

	public final MultOperatorContext multOperator() throws RecognitionException {
		MultOperatorContext _localctx = new MultOperatorContext(_ctx, getState());
		enterRule(_localctx, 722, RULE_multOperator);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7782);
			_la = _input.LA(1);
			if ( !(((((_la - 1144)) & ~0x3f) == 0 && ((1L << (_la - 1144)) & ((1L << (STAR - 1144)) | (1L << (DIVIDE - 1144)) | (1L << (MODULE - 1144)) | (1L << (DIV - 1144)) | (1L << (MOD - 1144)))) != 0)) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AddOperatorContext extends ParserRuleContext {
		public TerminalNode PLUS() { return getToken(MySqlParser.PLUS, 0); }
		public TerminalNode MINUS() { return getToken(MySqlParser.MINUS, 0); }
		public AddOperatorContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_addOperator; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterAddOperator(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitAddOperator(this);
		}
	}

	public final AddOperatorContext addOperator() throws RecognitionException {
		AddOperatorContext _localctx = new AddOperatorContext(_ctx, getState());
		enterRule(_localctx, 724, RULE_addOperator);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7784);
			_la = _input.LA(1);
			if ( !(_la==PLUS || _la==MINUS) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class JsonOperatorContext extends ParserRuleContext {
		public TerminalNode MINUS() { return getToken(MySqlParser.MINUS, 0); }
		public List GREATER_SYMBOL() { return getTokens(MySqlParser.GREATER_SYMBOL); }
		public TerminalNode GREATER_SYMBOL(int i) {
			return getToken(MySqlParser.GREATER_SYMBOL, i);
		}
		public JsonOperatorContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_jsonOperator; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterJsonOperator(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitJsonOperator(this);
		}
	}

	public final JsonOperatorContext jsonOperator() throws RecognitionException {
		JsonOperatorContext _localctx = new JsonOperatorContext(_ctx, getState());
		enterRule(_localctx, 726, RULE_jsonOperator);
		try {
			setState(7791);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1157,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(7786);
				match(MINUS);
				setState(7787);
				match(GREATER_SYMBOL);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(7788);
				match(MINUS);
				setState(7789);
				match(GREATER_SYMBOL);
				setState(7790);
				match(GREATER_SYMBOL);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CharsetNameBaseContext extends ParserRuleContext {
		public TerminalNode ARMSCII8() { return getToken(MySqlParser.ARMSCII8, 0); }
		public TerminalNode ASCII() { return getToken(MySqlParser.ASCII, 0); }
		public TerminalNode BIG5() { return getToken(MySqlParser.BIG5, 0); }
		public TerminalNode BINARY() { return getToken(MySqlParser.BINARY, 0); }
		public TerminalNode CP1250() { return getToken(MySqlParser.CP1250, 0); }
		public TerminalNode CP1251() { return getToken(MySqlParser.CP1251, 0); }
		public TerminalNode CP1256() { return getToken(MySqlParser.CP1256, 0); }
		public TerminalNode CP1257() { return getToken(MySqlParser.CP1257, 0); }
		public TerminalNode CP850() { return getToken(MySqlParser.CP850, 0); }
		public TerminalNode CP852() { return getToken(MySqlParser.CP852, 0); }
		public TerminalNode CP866() { return getToken(MySqlParser.CP866, 0); }
		public TerminalNode CP932() { return getToken(MySqlParser.CP932, 0); }
		public TerminalNode DEC8() { return getToken(MySqlParser.DEC8, 0); }
		public TerminalNode EUCJPMS() { return getToken(MySqlParser.EUCJPMS, 0); }
		public TerminalNode EUCKR() { return getToken(MySqlParser.EUCKR, 0); }
		public TerminalNode GB18030() { return getToken(MySqlParser.GB18030, 0); }
		public TerminalNode GB2312() { return getToken(MySqlParser.GB2312, 0); }
		public TerminalNode GBK() { return getToken(MySqlParser.GBK, 0); }
		public TerminalNode GEOSTD8() { return getToken(MySqlParser.GEOSTD8, 0); }
		public TerminalNode GREEK() { return getToken(MySqlParser.GREEK, 0); }
		public TerminalNode HEBREW() { return getToken(MySqlParser.HEBREW, 0); }
		public TerminalNode HP8() { return getToken(MySqlParser.HP8, 0); }
		public TerminalNode KEYBCS2() { return getToken(MySqlParser.KEYBCS2, 0); }
		public TerminalNode KOI8R() { return getToken(MySqlParser.KOI8R, 0); }
		public TerminalNode KOI8U() { return getToken(MySqlParser.KOI8U, 0); }
		public TerminalNode LATIN1() { return getToken(MySqlParser.LATIN1, 0); }
		public TerminalNode LATIN2() { return getToken(MySqlParser.LATIN2, 0); }
		public TerminalNode LATIN5() { return getToken(MySqlParser.LATIN5, 0); }
		public TerminalNode LATIN7() { return getToken(MySqlParser.LATIN7, 0); }
		public TerminalNode MACCE() { return getToken(MySqlParser.MACCE, 0); }
		public TerminalNode MACROMAN() { return getToken(MySqlParser.MACROMAN, 0); }
		public TerminalNode SJIS() { return getToken(MySqlParser.SJIS, 0); }
		public TerminalNode SWE7() { return getToken(MySqlParser.SWE7, 0); }
		public TerminalNode TIS620() { return getToken(MySqlParser.TIS620, 0); }
		public TerminalNode UCS2() { return getToken(MySqlParser.UCS2, 0); }
		public TerminalNode UJIS() { return getToken(MySqlParser.UJIS, 0); }
		public TerminalNode UTF16() { return getToken(MySqlParser.UTF16, 0); }
		public TerminalNode UTF16LE() { return getToken(MySqlParser.UTF16LE, 0); }
		public TerminalNode UTF32() { return getToken(MySqlParser.UTF32, 0); }
		public TerminalNode UTF8() { return getToken(MySqlParser.UTF8, 0); }
		public TerminalNode UTF8MB3() { return getToken(MySqlParser.UTF8MB3, 0); }
		public TerminalNode UTF8MB4() { return getToken(MySqlParser.UTF8MB4, 0); }
		public CharsetNameBaseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_charsetNameBase; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterCharsetNameBase(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitCharsetNameBase(this);
		}
	}

	public final CharsetNameBaseContext charsetNameBase() throws RecognitionException {
		CharsetNameBaseContext _localctx = new CharsetNameBaseContext(_ctx, getState());
		enterRule(_localctx, 728, RULE_charsetNameBase);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7793);
			_la = _input.LA(1);
			if ( !(_la==BINARY || ((((_la - 754)) & ~0x3f) == 0 && ((1L << (_la - 754)) & ((1L << (ARMSCII8 - 754)) | (1L << (ASCII - 754)) | (1L << (BIG5 - 754)) | (1L << (CP1250 - 754)) | (1L << (CP1251 - 754)) | (1L << (CP1256 - 754)) | (1L << (CP1257 - 754)) | (1L << (CP850 - 754)) | (1L << (CP852 - 754)) | (1L << (CP866 - 754)) | (1L << (CP932 - 754)) | (1L << (DEC8 - 754)) | (1L << (EUCJPMS - 754)) | (1L << (EUCKR - 754)) | (1L << (GB18030 - 754)) | (1L << (GB2312 - 754)) | (1L << (GBK - 754)) | (1L << (GEOSTD8 - 754)) | (1L << (GREEK - 754)) | (1L << (HEBREW - 754)) | (1L << (HP8 - 754)) | (1L << (KEYBCS2 - 754)) | (1L << (KOI8R - 754)) | (1L << (KOI8U - 754)) | (1L << (LATIN1 - 754)) | (1L << (LATIN2 - 754)) | (1L << (LATIN5 - 754)) | (1L << (LATIN7 - 754)) | (1L << (MACCE - 754)) | (1L << (MACROMAN - 754)) | (1L << (SJIS - 754)) | (1L << (SWE7 - 754)) | (1L << (TIS620 - 754)) | (1L << (UCS2 - 754)) | (1L << (UJIS - 754)) | (1L << (UTF16 - 754)) | (1L << (UTF16LE - 754)) | (1L << (UTF32 - 754)) | (1L << (UTF8 - 754)) | (1L << (UTF8MB3 - 754)) | (1L << (UTF8MB4 - 754)))) != 0)) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TransactionLevelBaseContext extends ParserRuleContext {
		public TerminalNode REPEATABLE() { return getToken(MySqlParser.REPEATABLE, 0); }
		public TerminalNode COMMITTED() { return getToken(MySqlParser.COMMITTED, 0); }
		public TerminalNode UNCOMMITTED() { return getToken(MySqlParser.UNCOMMITTED, 0); }
		public TerminalNode SERIALIZABLE() { return getToken(MySqlParser.SERIALIZABLE, 0); }
		public TransactionLevelBaseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_transactionLevelBase; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterTransactionLevelBase(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitTransactionLevelBase(this);
		}
	}

	public final TransactionLevelBaseContext transactionLevelBase() throws RecognitionException {
		TransactionLevelBaseContext _localctx = new TransactionLevelBaseContext(_ctx, getState());
		enterRule(_localctx, 730, RULE_transactionLevelBase);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7795);
			_la = _input.LA(1);
			if ( !(((((_la - 807)) & ~0x3f) == 0 && ((1L << (_la - 807)) & ((1L << (REPEATABLE - 807)) | (1L << (COMMITTED - 807)) | (1L << (UNCOMMITTED - 807)) | (1L << (SERIALIZABLE - 807)))) != 0)) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PrivilegesBaseContext extends ParserRuleContext {
		public TerminalNode TABLES() { return getToken(MySqlParser.TABLES, 0); }
		public TerminalNode ROUTINE() { return getToken(MySqlParser.ROUTINE, 0); }
		public TerminalNode EXECUTE() { return getToken(MySqlParser.EXECUTE, 0); }
		public TerminalNode FILE() { return getToken(MySqlParser.FILE, 0); }
		public TerminalNode PROCESS() { return getToken(MySqlParser.PROCESS, 0); }
		public TerminalNode RELOAD() { return getToken(MySqlParser.RELOAD, 0); }
		public TerminalNode SHUTDOWN() { return getToken(MySqlParser.SHUTDOWN, 0); }
		public TerminalNode SUPER() { return getToken(MySqlParser.SUPER, 0); }
		public TerminalNode PRIVILEGES() { return getToken(MySqlParser.PRIVILEGES, 0); }
		public PrivilegesBaseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_privilegesBase; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterPrivilegesBase(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitPrivilegesBase(this);
		}
	}

	public final PrivilegesBaseContext privilegesBase() throws RecognitionException {
		PrivilegesBaseContext _localctx = new PrivilegesBaseContext(_ctx, getState());
		enterRule(_localctx, 732, RULE_privilegesBase);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7797);
			_la = _input.LA(1);
			if ( !(((((_la - 716)) & ~0x3f) == 0 && ((1L << (_la - 716)) & ((1L << (EXECUTE - 716)) | (1L << (FILE - 716)) | (1L << (PRIVILEGES - 716)) | (1L << (PROCESS - 716)) | (1L << (RELOAD - 716)) | (1L << (ROUTINE - 716)) | (1L << (SHUTDOWN - 716)) | (1L << (SUPER - 716)) | (1L << (TABLES - 716)))) != 0)) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IntervalTypeBaseContext extends ParserRuleContext {
		public TerminalNode QUARTER() { return getToken(MySqlParser.QUARTER, 0); }
		public TerminalNode MONTH() { return getToken(MySqlParser.MONTH, 0); }
		public TerminalNode DAY() { return getToken(MySqlParser.DAY, 0); }
		public TerminalNode HOUR() { return getToken(MySqlParser.HOUR, 0); }
		public TerminalNode MINUTE() { return getToken(MySqlParser.MINUTE, 0); }
		public TerminalNode WEEK() { return getToken(MySqlParser.WEEK, 0); }
		public TerminalNode SECOND() { return getToken(MySqlParser.SECOND, 0); }
		public TerminalNode MICROSECOND() { return getToken(MySqlParser.MICROSECOND, 0); }
		public IntervalTypeBaseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_intervalTypeBase; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterIntervalTypeBase(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitIntervalTypeBase(this);
		}
	}

	public final IntervalTypeBaseContext intervalTypeBase() throws RecognitionException {
		IntervalTypeBaseContext _localctx = new IntervalTypeBaseContext(_ctx, getState());
		enterRule(_localctx, 734, RULE_intervalTypeBase);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7799);
			_la = _input.LA(1);
			if ( !(((((_la - 692)) & ~0x3f) == 0 && ((1L << (_la - 692)) & ((1L << (QUARTER - 692)) | (1L << (MONTH - 692)) | (1L << (DAY - 692)) | (1L << (HOUR - 692)) | (1L << (MINUTE - 692)) | (1L << (WEEK - 692)) | (1L << (SECOND - 692)) | (1L << (MICROSECOND - 692)))) != 0)) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DataTypeBaseContext extends ParserRuleContext {
		public TerminalNode DATE() { return getToken(MySqlParser.DATE, 0); }
		public TerminalNode TIME() { return getToken(MySqlParser.TIME, 0); }
		public TerminalNode TIMESTAMP() { return getToken(MySqlParser.TIMESTAMP, 0); }
		public TerminalNode DATETIME() { return getToken(MySqlParser.DATETIME, 0); }
		public TerminalNode YEAR() { return getToken(MySqlParser.YEAR, 0); }
		public TerminalNode ENUM() { return getToken(MySqlParser.ENUM, 0); }
		public TerminalNode TEXT() { return getToken(MySqlParser.TEXT, 0); }
		public DataTypeBaseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dataTypeBase; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterDataTypeBase(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitDataTypeBase(this);
		}
	}

	public final DataTypeBaseContext dataTypeBase() throws RecognitionException {
		DataTypeBaseContext _localctx = new DataTypeBaseContext(_ctx, getState());
		enterRule(_localctx, 736, RULE_dataTypeBase);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7801);
			_la = _input.LA(1);
			if ( !(((((_la - 220)) & ~0x3f) == 0 && ((1L << (_la - 220)) & ((1L << (DATE - 220)) | (1L << (TIME - 220)) | (1L << (TIMESTAMP - 220)) | (1L << (DATETIME - 220)) | (1L << (YEAR - 220)) | (1L << (TEXT - 220)) | (1L << (ENUM - 220)))) != 0)) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class KeywordsCanBeIdContext extends ParserRuleContext {
		public TerminalNode ACCOUNT() { return getToken(MySqlParser.ACCOUNT, 0); }
		public TerminalNode ACTION() { return getToken(MySqlParser.ACTION, 0); }
		public TerminalNode ADMIN() { return getToken(MySqlParser.ADMIN, 0); }
		public TerminalNode AFTER() { return getToken(MySqlParser.AFTER, 0); }
		public TerminalNode AGGREGATE() { return getToken(MySqlParser.AGGREGATE, 0); }
		public TerminalNode ALGORITHM() { return getToken(MySqlParser.ALGORITHM, 0); }
		public TerminalNode ANY() { return getToken(MySqlParser.ANY, 0); }
		public TerminalNode APPLICATION_PASSWORD_ADMIN() { return getToken(MySqlParser.APPLICATION_PASSWORD_ADMIN, 0); }
		public TerminalNode ARRAY() { return getToken(MySqlParser.ARRAY, 0); }
		public TerminalNode AT() { return getToken(MySqlParser.AT, 0); }
		public TerminalNode AUDIT_ADMIN() { return getToken(MySqlParser.AUDIT_ADMIN, 0); }
		public TerminalNode AUDIT_ABORT_EXEMPT() { return getToken(MySqlParser.AUDIT_ABORT_EXEMPT, 0); }
		public TerminalNode AUTHENTICATION_POLICY_ADMIN() { return getToken(MySqlParser.AUTHENTICATION_POLICY_ADMIN, 0); }
		public TerminalNode AUTHORS() { return getToken(MySqlParser.AUTHORS, 0); }
		public TerminalNode AUTOCOMMIT() { return getToken(MySqlParser.AUTOCOMMIT, 0); }
		public TerminalNode AUTOEXTEND_SIZE() { return getToken(MySqlParser.AUTOEXTEND_SIZE, 0); }
		public TerminalNode AUTO_INCREMENT() { return getToken(MySqlParser.AUTO_INCREMENT, 0); }
		public TerminalNode AVG() { return getToken(MySqlParser.AVG, 0); }
		public TerminalNode AVG_ROW_LENGTH() { return getToken(MySqlParser.AVG_ROW_LENGTH, 0); }
		public TerminalNode ATTRIBUTE() { return getToken(MySqlParser.ATTRIBUTE, 0); }
		public TerminalNode BACKUP_ADMIN() { return getToken(MySqlParser.BACKUP_ADMIN, 0); }
		public TerminalNode BEGIN() { return getToken(MySqlParser.BEGIN, 0); }
		public TerminalNode BINLOG() { return getToken(MySqlParser.BINLOG, 0); }
		public TerminalNode BINLOG_ADMIN() { return getToken(MySqlParser.BINLOG_ADMIN, 0); }
		public TerminalNode BINLOG_ENCRYPTION_ADMIN() { return getToken(MySqlParser.BINLOG_ENCRYPTION_ADMIN, 0); }
		public TerminalNode BIT() { return getToken(MySqlParser.BIT, 0); }
		public TerminalNode BIT_AND() { return getToken(MySqlParser.BIT_AND, 0); }
		public TerminalNode BIT_OR() { return getToken(MySqlParser.BIT_OR, 0); }
		public TerminalNode BIT_XOR() { return getToken(MySqlParser.BIT_XOR, 0); }
		public TerminalNode BLOCK() { return getToken(MySqlParser.BLOCK, 0); }
		public TerminalNode BOOL() { return getToken(MySqlParser.BOOL, 0); }
		public TerminalNode BOOLEAN() { return getToken(MySqlParser.BOOLEAN, 0); }
		public TerminalNode BTREE() { return getToken(MySqlParser.BTREE, 0); }
		public TerminalNode BUCKETS() { return getToken(MySqlParser.BUCKETS, 0); }
		public TerminalNode CACHE() { return getToken(MySqlParser.CACHE, 0); }
		public TerminalNode CASCADED() { return getToken(MySqlParser.CASCADED, 0); }
		public TerminalNode CHAIN() { return getToken(MySqlParser.CHAIN, 0); }
		public TerminalNode CHANGED() { return getToken(MySqlParser.CHANGED, 0); }
		public TerminalNode CHANNEL() { return getToken(MySqlParser.CHANNEL, 0); }
		public TerminalNode CHECKSUM() { return getToken(MySqlParser.CHECKSUM, 0); }
		public TerminalNode PAGE_CHECKSUM() { return getToken(MySqlParser.PAGE_CHECKSUM, 0); }
		public TerminalNode CATALOG_NAME() { return getToken(MySqlParser.CATALOG_NAME, 0); }
		public TerminalNode CIPHER() { return getToken(MySqlParser.CIPHER, 0); }
		public TerminalNode CLASS_ORIGIN() { return getToken(MySqlParser.CLASS_ORIGIN, 0); }
		public TerminalNode CLIENT() { return getToken(MySqlParser.CLIENT, 0); }
		public TerminalNode CLONE_ADMIN() { return getToken(MySqlParser.CLONE_ADMIN, 0); }
		public TerminalNode CLOSE() { return getToken(MySqlParser.CLOSE, 0); }
		public TerminalNode CLUSTERING() { return getToken(MySqlParser.CLUSTERING, 0); }
		public TerminalNode COALESCE() { return getToken(MySqlParser.COALESCE, 0); }
		public TerminalNode CODE() { return getToken(MySqlParser.CODE, 0); }
		public TerminalNode COLUMNS() { return getToken(MySqlParser.COLUMNS, 0); }
		public TerminalNode COLUMN_FORMAT() { return getToken(MySqlParser.COLUMN_FORMAT, 0); }
		public TerminalNode COLUMN_NAME() { return getToken(MySqlParser.COLUMN_NAME, 0); }
		public TerminalNode COMMENT() { return getToken(MySqlParser.COMMENT, 0); }
		public TerminalNode COMMIT() { return getToken(MySqlParser.COMMIT, 0); }
		public TerminalNode COMPACT() { return getToken(MySqlParser.COMPACT, 0); }
		public TerminalNode COMPLETION() { return getToken(MySqlParser.COMPLETION, 0); }
		public TerminalNode COMPRESSED() { return getToken(MySqlParser.COMPRESSED, 0); }
		public TerminalNode COMPRESSION() { return getToken(MySqlParser.COMPRESSION, 0); }
		public TerminalNode CONCURRENT() { return getToken(MySqlParser.CONCURRENT, 0); }
		public TerminalNode CONDITION() { return getToken(MySqlParser.CONDITION, 0); }
		public TerminalNode CONNECT() { return getToken(MySqlParser.CONNECT, 0); }
		public TerminalNode CONNECTION() { return getToken(MySqlParser.CONNECTION, 0); }
		public TerminalNode CONNECTION_ADMIN() { return getToken(MySqlParser.CONNECTION_ADMIN, 0); }
		public TerminalNode CONSISTENT() { return getToken(MySqlParser.CONSISTENT, 0); }
		public TerminalNode CONSTRAINT_CATALOG() { return getToken(MySqlParser.CONSTRAINT_CATALOG, 0); }
		public TerminalNode CONSTRAINT_NAME() { return getToken(MySqlParser.CONSTRAINT_NAME, 0); }
		public TerminalNode CONSTRAINT_SCHEMA() { return getToken(MySqlParser.CONSTRAINT_SCHEMA, 0); }
		public TerminalNode CONTAINS() { return getToken(MySqlParser.CONTAINS, 0); }
		public TerminalNode CONTEXT() { return getToken(MySqlParser.CONTEXT, 0); }
		public TerminalNode CONTRIBUTORS() { return getToken(MySqlParser.CONTRIBUTORS, 0); }
		public TerminalNode COPY() { return getToken(MySqlParser.COPY, 0); }
		public TerminalNode COUNT() { return getToken(MySqlParser.COUNT, 0); }
		public TerminalNode CPU() { return getToken(MySqlParser.CPU, 0); }
		public TerminalNode CURRENT() { return getToken(MySqlParser.CURRENT, 0); }
		public TerminalNode CURRENT_USER() { return getToken(MySqlParser.CURRENT_USER, 0); }
		public TerminalNode CURSOR_NAME() { return getToken(MySqlParser.CURSOR_NAME, 0); }
		public TerminalNode DATA() { return getToken(MySqlParser.DATA, 0); }
		public TerminalNode DATAFILE() { return getToken(MySqlParser.DATAFILE, 0); }
		public TerminalNode DEALLOCATE() { return getToken(MySqlParser.DEALLOCATE, 0); }
		public TerminalNode DEFAULT() { return getToken(MySqlParser.DEFAULT, 0); }
		public TerminalNode DEFAULT_AUTH() { return getToken(MySqlParser.DEFAULT_AUTH, 0); }
		public TerminalNode DEFINER() { return getToken(MySqlParser.DEFINER, 0); }
		public TerminalNode DELAY_KEY_WRITE() { return getToken(MySqlParser.DELAY_KEY_WRITE, 0); }
		public TerminalNode DES_KEY_FILE() { return getToken(MySqlParser.DES_KEY_FILE, 0); }
		public TerminalNode DIAGNOSTICS() { return getToken(MySqlParser.DIAGNOSTICS, 0); }
		public TerminalNode DIRECTORY() { return getToken(MySqlParser.DIRECTORY, 0); }
		public TerminalNode DISABLE() { return getToken(MySqlParser.DISABLE, 0); }
		public TerminalNode DISCARD() { return getToken(MySqlParser.DISCARD, 0); }
		public TerminalNode DISK() { return getToken(MySqlParser.DISK, 0); }
		public TerminalNode DO() { return getToken(MySqlParser.DO, 0); }
		public TerminalNode DUMPFILE() { return getToken(MySqlParser.DUMPFILE, 0); }
		public TerminalNode DUPLICATE() { return getToken(MySqlParser.DUPLICATE, 0); }
		public TerminalNode DYNAMIC() { return getToken(MySqlParser.DYNAMIC, 0); }
		public TerminalNode EMPTY() { return getToken(MySqlParser.EMPTY, 0); }
		public TerminalNode ENABLE() { return getToken(MySqlParser.ENABLE, 0); }
		public TerminalNode ENCRYPTION() { return getToken(MySqlParser.ENCRYPTION, 0); }
		public TerminalNode ENCRYPTION_KEY_ADMIN() { return getToken(MySqlParser.ENCRYPTION_KEY_ADMIN, 0); }
		public TerminalNode END() { return getToken(MySqlParser.END, 0); }
		public TerminalNode ENDS() { return getToken(MySqlParser.ENDS, 0); }
		public TerminalNode ENGINE() { return getToken(MySqlParser.ENGINE, 0); }
		public TerminalNode ENGINE_ATTRIBUTE() { return getToken(MySqlParser.ENGINE_ATTRIBUTE, 0); }
		public TerminalNode ENGINES() { return getToken(MySqlParser.ENGINES, 0); }
		public TerminalNode ENFORCED() { return getToken(MySqlParser.ENFORCED, 0); }
		public TerminalNode ERROR() { return getToken(MySqlParser.ERROR, 0); }
		public TerminalNode ERRORS() { return getToken(MySqlParser.ERRORS, 0); }
		public TerminalNode ESCAPE() { return getToken(MySqlParser.ESCAPE, 0); }
		public TerminalNode EUR() { return getToken(MySqlParser.EUR, 0); }
		public TerminalNode EVEN() { return getToken(MySqlParser.EVEN, 0); }
		public TerminalNode EVENT() { return getToken(MySqlParser.EVENT, 0); }
		public TerminalNode EVENTS() { return getToken(MySqlParser.EVENTS, 0); }
		public TerminalNode EVERY() { return getToken(MySqlParser.EVERY, 0); }
		public TerminalNode EXCEPT() { return getToken(MySqlParser.EXCEPT, 0); }
		public TerminalNode EXCHANGE() { return getToken(MySqlParser.EXCHANGE, 0); }
		public TerminalNode EXCLUSIVE() { return getToken(MySqlParser.EXCLUSIVE, 0); }
		public TerminalNode EXPIRE() { return getToken(MySqlParser.EXPIRE, 0); }
		public TerminalNode EXPORT() { return getToken(MySqlParser.EXPORT, 0); }
		public TerminalNode EXTENDED() { return getToken(MySqlParser.EXTENDED, 0); }
		public TerminalNode EXTENT_SIZE() { return getToken(MySqlParser.EXTENT_SIZE, 0); }
		public TerminalNode FAILED_LOGIN_ATTEMPTS() { return getToken(MySqlParser.FAILED_LOGIN_ATTEMPTS, 0); }
		public TerminalNode FAST() { return getToken(MySqlParser.FAST, 0); }
		public TerminalNode FAULTS() { return getToken(MySqlParser.FAULTS, 0); }
		public TerminalNode FIELDS() { return getToken(MySqlParser.FIELDS, 0); }
		public TerminalNode FILE_BLOCK_SIZE() { return getToken(MySqlParser.FILE_BLOCK_SIZE, 0); }
		public TerminalNode FILTER() { return getToken(MySqlParser.FILTER, 0); }
		public TerminalNode FIREWALL_ADMIN() { return getToken(MySqlParser.FIREWALL_ADMIN, 0); }
		public TerminalNode FIREWALL_EXEMPT() { return getToken(MySqlParser.FIREWALL_EXEMPT, 0); }
		public TerminalNode FIREWALL_USER() { return getToken(MySqlParser.FIREWALL_USER, 0); }
		public TerminalNode FIRST() { return getToken(MySqlParser.FIRST, 0); }
		public TerminalNode FIXED() { return getToken(MySqlParser.FIXED, 0); }
		public TerminalNode FLUSH() { return getToken(MySqlParser.FLUSH, 0); }
		public TerminalNode FLUSH_OPTIMIZER_COSTS() { return getToken(MySqlParser.FLUSH_OPTIMIZER_COSTS, 0); }
		public TerminalNode FLUSH_STATUS() { return getToken(MySqlParser.FLUSH_STATUS, 0); }
		public TerminalNode FLUSH_TABLES() { return getToken(MySqlParser.FLUSH_TABLES, 0); }
		public TerminalNode FLUSH_USER_RESOURCES() { return getToken(MySqlParser.FLUSH_USER_RESOURCES, 0); }
		public TerminalNode FOLLOWS() { return getToken(MySqlParser.FOLLOWS, 0); }
		public TerminalNode FOUND() { return getToken(MySqlParser.FOUND, 0); }
		public TerminalNode FULL() { return getToken(MySqlParser.FULL, 0); }
		public TerminalNode FUNCTION() { return getToken(MySqlParser.FUNCTION, 0); }
		public TerminalNode GENERAL() { return getToken(MySqlParser.GENERAL, 0); }
		public TerminalNode GEOMETRY() { return getToken(MySqlParser.GEOMETRY, 0); }
		public TerminalNode GLOBAL() { return getToken(MySqlParser.GLOBAL, 0); }
		public TerminalNode GRANTS() { return getToken(MySqlParser.GRANTS, 0); }
		public TerminalNode GROUP() { return getToken(MySqlParser.GROUP, 0); }
		public TerminalNode GROUP_CONCAT() { return getToken(MySqlParser.GROUP_CONCAT, 0); }
		public TerminalNode GROUP_REPLICATION() { return getToken(MySqlParser.GROUP_REPLICATION, 0); }
		public TerminalNode GROUP_REPLICATION_ADMIN() { return getToken(MySqlParser.GROUP_REPLICATION_ADMIN, 0); }
		public TerminalNode GROUP_REPLICATION_STREAM() { return getToken(MySqlParser.GROUP_REPLICATION_STREAM, 0); }
		public TerminalNode HANDLER() { return getToken(MySqlParser.HANDLER, 0); }
		public TerminalNode HASH() { return getToken(MySqlParser.HASH, 0); }
		public TerminalNode HELP() { return getToken(MySqlParser.HELP, 0); }
		public TerminalNode HISTORY() { return getToken(MySqlParser.HISTORY, 0); }
		public TerminalNode HOST() { return getToken(MySqlParser.HOST, 0); }
		public TerminalNode HOSTS() { return getToken(MySqlParser.HOSTS, 0); }
		public TerminalNode IDENTIFIED() { return getToken(MySqlParser.IDENTIFIED, 0); }
		public TerminalNode IGNORED() { return getToken(MySqlParser.IGNORED, 0); }
		public TerminalNode IGNORE_SERVER_IDS() { return getToken(MySqlParser.IGNORE_SERVER_IDS, 0); }
		public TerminalNode IMPORT() { return getToken(MySqlParser.IMPORT, 0); }
		public TerminalNode INDEXES() { return getToken(MySqlParser.INDEXES, 0); }
		public TerminalNode INITIAL_SIZE() { return getToken(MySqlParser.INITIAL_SIZE, 0); }
		public TerminalNode INNODB_REDO_LOG_ARCHIVE() { return getToken(MySqlParser.INNODB_REDO_LOG_ARCHIVE, 0); }
		public TerminalNode INNODB_REDO_LOG_ENABLE() { return getToken(MySqlParser.INNODB_REDO_LOG_ENABLE, 0); }
		public TerminalNode INPLACE() { return getToken(MySqlParser.INPLACE, 0); }
		public TerminalNode INSERT_METHOD() { return getToken(MySqlParser.INSERT_METHOD, 0); }
		public TerminalNode INSTALL() { return getToken(MySqlParser.INSTALL, 0); }
		public TerminalNode INSTANCE() { return getToken(MySqlParser.INSTANCE, 0); }
		public TerminalNode INSTANT() { return getToken(MySqlParser.INSTANT, 0); }
		public TerminalNode INTERNAL() { return getToken(MySqlParser.INTERNAL, 0); }
		public TerminalNode INVOKE() { return getToken(MySqlParser.INVOKE, 0); }
		public TerminalNode INVOKER() { return getToken(MySqlParser.INVOKER, 0); }
		public TerminalNode IO() { return getToken(MySqlParser.IO, 0); }
		public TerminalNode IO_THREAD() { return getToken(MySqlParser.IO_THREAD, 0); }
		public TerminalNode IPC() { return getToken(MySqlParser.IPC, 0); }
		public TerminalNode ISO() { return getToken(MySqlParser.ISO, 0); }
		public TerminalNode ISOLATION() { return getToken(MySqlParser.ISOLATION, 0); }
		public TerminalNode ISSUER() { return getToken(MySqlParser.ISSUER, 0); }
		public TerminalNode JIS() { return getToken(MySqlParser.JIS, 0); }
		public TerminalNode JSON() { return getToken(MySqlParser.JSON, 0); }
		public TerminalNode KEY_BLOCK_SIZE() { return getToken(MySqlParser.KEY_BLOCK_SIZE, 0); }
		public TerminalNode LAMBDA() { return getToken(MySqlParser.LAMBDA, 0); }
		public TerminalNode LANGUAGE() { return getToken(MySqlParser.LANGUAGE, 0); }
		public TerminalNode LAST() { return getToken(MySqlParser.LAST, 0); }
		public TerminalNode LATERAL() { return getToken(MySqlParser.LATERAL, 0); }
		public TerminalNode LEAVES() { return getToken(MySqlParser.LEAVES, 0); }
		public TerminalNode LESS() { return getToken(MySqlParser.LESS, 0); }
		public TerminalNode LEVEL() { return getToken(MySqlParser.LEVEL, 0); }
		public TerminalNode LIST() { return getToken(MySqlParser.LIST, 0); }
		public TerminalNode LOCAL() { return getToken(MySqlParser.LOCAL, 0); }
		public TerminalNode LOGFILE() { return getToken(MySqlParser.LOGFILE, 0); }
		public TerminalNode LOGS() { return getToken(MySqlParser.LOGS, 0); }
		public TerminalNode MASTER() { return getToken(MySqlParser.MASTER, 0); }
		public TerminalNode MASTER_AUTO_POSITION() { return getToken(MySqlParser.MASTER_AUTO_POSITION, 0); }
		public TerminalNode MASTER_CONNECT_RETRY() { return getToken(MySqlParser.MASTER_CONNECT_RETRY, 0); }
		public TerminalNode MASTER_DELAY() { return getToken(MySqlParser.MASTER_DELAY, 0); }
		public TerminalNode MASTER_HEARTBEAT_PERIOD() { return getToken(MySqlParser.MASTER_HEARTBEAT_PERIOD, 0); }
		public TerminalNode MASTER_HOST() { return getToken(MySqlParser.MASTER_HOST, 0); }
		public TerminalNode MASTER_LOG_FILE() { return getToken(MySqlParser.MASTER_LOG_FILE, 0); }
		public TerminalNode MASTER_LOG_POS() { return getToken(MySqlParser.MASTER_LOG_POS, 0); }
		public TerminalNode MASTER_PASSWORD() { return getToken(MySqlParser.MASTER_PASSWORD, 0); }
		public TerminalNode MASTER_PORT() { return getToken(MySqlParser.MASTER_PORT, 0); }
		public TerminalNode MASTER_RETRY_COUNT() { return getToken(MySqlParser.MASTER_RETRY_COUNT, 0); }
		public TerminalNode MASTER_SSL() { return getToken(MySqlParser.MASTER_SSL, 0); }
		public TerminalNode MASTER_SSL_CA() { return getToken(MySqlParser.MASTER_SSL_CA, 0); }
		public TerminalNode MASTER_SSL_CAPATH() { return getToken(MySqlParser.MASTER_SSL_CAPATH, 0); }
		public TerminalNode MASTER_SSL_CERT() { return getToken(MySqlParser.MASTER_SSL_CERT, 0); }
		public TerminalNode MASTER_SSL_CIPHER() { return getToken(MySqlParser.MASTER_SSL_CIPHER, 0); }
		public TerminalNode MASTER_SSL_CRL() { return getToken(MySqlParser.MASTER_SSL_CRL, 0); }
		public TerminalNode MASTER_SSL_CRLPATH() { return getToken(MySqlParser.MASTER_SSL_CRLPATH, 0); }
		public TerminalNode MASTER_SSL_KEY() { return getToken(MySqlParser.MASTER_SSL_KEY, 0); }
		public TerminalNode MASTER_TLS_VERSION() { return getToken(MySqlParser.MASTER_TLS_VERSION, 0); }
		public TerminalNode MASTER_USER() { return getToken(MySqlParser.MASTER_USER, 0); }
		public TerminalNode MAX_CONNECTIONS_PER_HOUR() { return getToken(MySqlParser.MAX_CONNECTIONS_PER_HOUR, 0); }
		public TerminalNode MAX_QUERIES_PER_HOUR() { return getToken(MySqlParser.MAX_QUERIES_PER_HOUR, 0); }
		public TerminalNode MAX() { return getToken(MySqlParser.MAX, 0); }
		public TerminalNode MAX_ROWS() { return getToken(MySqlParser.MAX_ROWS, 0); }
		public TerminalNode MAX_SIZE() { return getToken(MySqlParser.MAX_SIZE, 0); }
		public TerminalNode MAX_UPDATES_PER_HOUR() { return getToken(MySqlParser.MAX_UPDATES_PER_HOUR, 0); }
		public TerminalNode MAX_USER_CONNECTIONS() { return getToken(MySqlParser.MAX_USER_CONNECTIONS, 0); }
		public TerminalNode MEDIUM() { return getToken(MySqlParser.MEDIUM, 0); }
		public TerminalNode MEMBER() { return getToken(MySqlParser.MEMBER, 0); }
		public TerminalNode MEMORY() { return getToken(MySqlParser.MEMORY, 0); }
		public TerminalNode MERGE() { return getToken(MySqlParser.MERGE, 0); }
		public TerminalNode MESSAGE_TEXT() { return getToken(MySqlParser.MESSAGE_TEXT, 0); }
		public TerminalNode MID() { return getToken(MySqlParser.MID, 0); }
		public TerminalNode MIGRATE() { return getToken(MySqlParser.MIGRATE, 0); }
		public TerminalNode MIN() { return getToken(MySqlParser.MIN, 0); }
		public TerminalNode MIN_ROWS() { return getToken(MySqlParser.MIN_ROWS, 0); }
		public TerminalNode MODE() { return getToken(MySqlParser.MODE, 0); }
		public TerminalNode MODIFY() { return getToken(MySqlParser.MODIFY, 0); }
		public TerminalNode MUTEX() { return getToken(MySqlParser.MUTEX, 0); }
		public TerminalNode MYSQL() { return getToken(MySqlParser.MYSQL, 0); }
		public TerminalNode MYSQL_ERRNO() { return getToken(MySqlParser.MYSQL_ERRNO, 0); }
		public TerminalNode NAME() { return getToken(MySqlParser.NAME, 0); }
		public TerminalNode NAMES() { return getToken(MySqlParser.NAMES, 0); }
		public TerminalNode NATIONAL() { return getToken(MySqlParser.NATIONAL, 0); }
		public TerminalNode NCHAR() { return getToken(MySqlParser.NCHAR, 0); }
		public TerminalNode NDB_STORED_USER() { return getToken(MySqlParser.NDB_STORED_USER, 0); }
		public TerminalNode NESTED() { return getToken(MySqlParser.NESTED, 0); }
		public TerminalNode NEVER() { return getToken(MySqlParser.NEVER, 0); }
		public TerminalNode NEXT() { return getToken(MySqlParser.NEXT, 0); }
		public TerminalNode NO() { return getToken(MySqlParser.NO, 0); }
		public TerminalNode NOCOPY() { return getToken(MySqlParser.NOCOPY, 0); }
		public TerminalNode NODEGROUP() { return getToken(MySqlParser.NODEGROUP, 0); }
		public TerminalNode NONE() { return getToken(MySqlParser.NONE, 0); }
		public TerminalNode NOWAIT() { return getToken(MySqlParser.NOWAIT, 0); }
		public TerminalNode NUMBER() { return getToken(MySqlParser.NUMBER, 0); }
		public TerminalNode ODBC() { return getToken(MySqlParser.ODBC, 0); }
		public TerminalNode OFFLINE() { return getToken(MySqlParser.OFFLINE, 0); }
		public TerminalNode OFFSET() { return getToken(MySqlParser.OFFSET, 0); }
		public TerminalNode OF() { return getToken(MySqlParser.OF, 0); }
		public TerminalNode OJ() { return getToken(MySqlParser.OJ, 0); }
		public TerminalNode OLD_PASSWORD() { return getToken(MySqlParser.OLD_PASSWORD, 0); }
		public TerminalNode ONE() { return getToken(MySqlParser.ONE, 0); }
		public TerminalNode ONLINE() { return getToken(MySqlParser.ONLINE, 0); }
		public TerminalNode ONLY() { return getToken(MySqlParser.ONLY, 0); }
		public TerminalNode OPEN() { return getToken(MySqlParser.OPEN, 0); }
		public TerminalNode OPTIMIZER_COSTS() { return getToken(MySqlParser.OPTIMIZER_COSTS, 0); }
		public TerminalNode OPTIONAL() { return getToken(MySqlParser.OPTIONAL, 0); }
		public TerminalNode OPTIONS() { return getToken(MySqlParser.OPTIONS, 0); }
		public TerminalNode ORDER() { return getToken(MySqlParser.ORDER, 0); }
		public TerminalNode ORDINALITY() { return getToken(MySqlParser.ORDINALITY, 0); }
		public TerminalNode OWNER() { return getToken(MySqlParser.OWNER, 0); }
		public TerminalNode PACK_KEYS() { return getToken(MySqlParser.PACK_KEYS, 0); }
		public TerminalNode PAGE() { return getToken(MySqlParser.PAGE, 0); }
		public TerminalNode PARSER() { return getToken(MySqlParser.PARSER, 0); }
		public TerminalNode PARTIAL() { return getToken(MySqlParser.PARTIAL, 0); }
		public TerminalNode PARTITIONING() { return getToken(MySqlParser.PARTITIONING, 0); }
		public TerminalNode PARTITIONS() { return getToken(MySqlParser.PARTITIONS, 0); }
		public TerminalNode PASSWORD() { return getToken(MySqlParser.PASSWORD, 0); }
		public TerminalNode PASSWORDLESS_USER_ADMIN() { return getToken(MySqlParser.PASSWORDLESS_USER_ADMIN, 0); }
		public TerminalNode PASSWORD_LOCK_TIME() { return getToken(MySqlParser.PASSWORD_LOCK_TIME, 0); }
		public TerminalNode PATH() { return getToken(MySqlParser.PATH, 0); }
		public TerminalNode PERSIST_RO_VARIABLES_ADMIN() { return getToken(MySqlParser.PERSIST_RO_VARIABLES_ADMIN, 0); }
		public TerminalNode PHASE() { return getToken(MySqlParser.PHASE, 0); }
		public TerminalNode PLUGINS() { return getToken(MySqlParser.PLUGINS, 0); }
		public TerminalNode PLUGIN_DIR() { return getToken(MySqlParser.PLUGIN_DIR, 0); }
		public TerminalNode PLUGIN() { return getToken(MySqlParser.PLUGIN, 0); }
		public TerminalNode PORT() { return getToken(MySqlParser.PORT, 0); }
		public TerminalNode PRECEDES() { return getToken(MySqlParser.PRECEDES, 0); }
		public TerminalNode PREPARE() { return getToken(MySqlParser.PREPARE, 0); }
		public TerminalNode PRESERVE() { return getToken(MySqlParser.PRESERVE, 0); }
		public TerminalNode PREV() { return getToken(MySqlParser.PREV, 0); }
		public TerminalNode PRIMARY() { return getToken(MySqlParser.PRIMARY, 0); }
		public TerminalNode PROCESSLIST() { return getToken(MySqlParser.PROCESSLIST, 0); }
		public TerminalNode PROFILE() { return getToken(MySqlParser.PROFILE, 0); }
		public TerminalNode PROFILES() { return getToken(MySqlParser.PROFILES, 0); }
		public TerminalNode PROXY() { return getToken(MySqlParser.PROXY, 0); }
		public TerminalNode QUERY() { return getToken(MySqlParser.QUERY, 0); }
		public TerminalNode QUICK() { return getToken(MySqlParser.QUICK, 0); }
		public TerminalNode REBUILD() { return getToken(MySqlParser.REBUILD, 0); }
		public TerminalNode RECOVER() { return getToken(MySqlParser.RECOVER, 0); }
		public TerminalNode RECURSIVE() { return getToken(MySqlParser.RECURSIVE, 0); }
		public TerminalNode REDO_BUFFER_SIZE() { return getToken(MySqlParser.REDO_BUFFER_SIZE, 0); }
		public TerminalNode REDUNDANT() { return getToken(MySqlParser.REDUNDANT, 0); }
		public TerminalNode RELAY() { return getToken(MySqlParser.RELAY, 0); }
		public TerminalNode RELAYLOG() { return getToken(MySqlParser.RELAYLOG, 0); }
		public TerminalNode RELAY_LOG_FILE() { return getToken(MySqlParser.RELAY_LOG_FILE, 0); }
		public TerminalNode RELAY_LOG_POS() { return getToken(MySqlParser.RELAY_LOG_POS, 0); }
		public TerminalNode REMOVE() { return getToken(MySqlParser.REMOVE, 0); }
		public TerminalNode REORGANIZE() { return getToken(MySqlParser.REORGANIZE, 0); }
		public TerminalNode REPAIR() { return getToken(MySqlParser.REPAIR, 0); }
		public TerminalNode REPLICATE_DO_DB() { return getToken(MySqlParser.REPLICATE_DO_DB, 0); }
		public TerminalNode REPLICATE_DO_TABLE() { return getToken(MySqlParser.REPLICATE_DO_TABLE, 0); }
		public TerminalNode REPLICATE_IGNORE_DB() { return getToken(MySqlParser.REPLICATE_IGNORE_DB, 0); }
		public TerminalNode REPLICATE_IGNORE_TABLE() { return getToken(MySqlParser.REPLICATE_IGNORE_TABLE, 0); }
		public TerminalNode REPLICATE_REWRITE_DB() { return getToken(MySqlParser.REPLICATE_REWRITE_DB, 0); }
		public TerminalNode REPLICATE_WILD_DO_TABLE() { return getToken(MySqlParser.REPLICATE_WILD_DO_TABLE, 0); }
		public TerminalNode REPLICATE_WILD_IGNORE_TABLE() { return getToken(MySqlParser.REPLICATE_WILD_IGNORE_TABLE, 0); }
		public TerminalNode REPLICATION() { return getToken(MySqlParser.REPLICATION, 0); }
		public TerminalNode REPLICATION_APPLIER() { return getToken(MySqlParser.REPLICATION_APPLIER, 0); }
		public TerminalNode REPLICATION_SLAVE_ADMIN() { return getToken(MySqlParser.REPLICATION_SLAVE_ADMIN, 0); }
		public TerminalNode RESET() { return getToken(MySqlParser.RESET, 0); }
		public TerminalNode RESOURCE_GROUP_ADMIN() { return getToken(MySqlParser.RESOURCE_GROUP_ADMIN, 0); }
		public TerminalNode RESOURCE_GROUP_USER() { return getToken(MySqlParser.RESOURCE_GROUP_USER, 0); }
		public TerminalNode RESUME() { return getToken(MySqlParser.RESUME, 0); }
		public TerminalNode RETURNED_SQLSTATE() { return getToken(MySqlParser.RETURNED_SQLSTATE, 0); }
		public TerminalNode RETURNING() { return getToken(MySqlParser.RETURNING, 0); }
		public TerminalNode RETURNS() { return getToken(MySqlParser.RETURNS, 0); }
		public TerminalNode REUSE() { return getToken(MySqlParser.REUSE, 0); }
		public TerminalNode ROLE() { return getToken(MySqlParser.ROLE, 0); }
		public TerminalNode ROLE_ADMIN() { return getToken(MySqlParser.ROLE_ADMIN, 0); }
		public TerminalNode ROLLBACK() { return getToken(MySqlParser.ROLLBACK, 0); }
		public TerminalNode ROLLUP() { return getToken(MySqlParser.ROLLUP, 0); }
		public TerminalNode ROTATE() { return getToken(MySqlParser.ROTATE, 0); }
		public TerminalNode ROW() { return getToken(MySqlParser.ROW, 0); }
		public TerminalNode ROWS() { return getToken(MySqlParser.ROWS, 0); }
		public TerminalNode ROW_FORMAT() { return getToken(MySqlParser.ROW_FORMAT, 0); }
		public TerminalNode RTREE() { return getToken(MySqlParser.RTREE, 0); }
		public TerminalNode S3() { return getToken(MySqlParser.S3, 0); }
		public TerminalNode SAVEPOINT() { return getToken(MySqlParser.SAVEPOINT, 0); }
		public TerminalNode SCHEDULE() { return getToken(MySqlParser.SCHEDULE, 0); }
		public TerminalNode SCHEMA_NAME() { return getToken(MySqlParser.SCHEMA_NAME, 0); }
		public TerminalNode SECURITY() { return getToken(MySqlParser.SECURITY, 0); }
		public TerminalNode SECONDARY_ENGINE_ATTRIBUTE() { return getToken(MySqlParser.SECONDARY_ENGINE_ATTRIBUTE, 0); }
		public TerminalNode SENSITIVE_VARIABLES_OBSERVER() { return getToken(MySqlParser.SENSITIVE_VARIABLES_OBSERVER, 0); }
		public TerminalNode SERIAL() { return getToken(MySqlParser.SERIAL, 0); }
		public TerminalNode SERVER() { return getToken(MySqlParser.SERVER, 0); }
		public TerminalNode SESSION() { return getToken(MySqlParser.SESSION, 0); }
		public TerminalNode SESSION_VARIABLES_ADMIN() { return getToken(MySqlParser.SESSION_VARIABLES_ADMIN, 0); }
		public TerminalNode SET_USER_ID() { return getToken(MySqlParser.SET_USER_ID, 0); }
		public TerminalNode SHARE() { return getToken(MySqlParser.SHARE, 0); }
		public TerminalNode SHARED() { return getToken(MySqlParser.SHARED, 0); }
		public TerminalNode SHOW_ROUTINE() { return getToken(MySqlParser.SHOW_ROUTINE, 0); }
		public TerminalNode SIGNED() { return getToken(MySqlParser.SIGNED, 0); }
		public TerminalNode SIMPLE() { return getToken(MySqlParser.SIMPLE, 0); }
		public TerminalNode SLAVE() { return getToken(MySqlParser.SLAVE, 0); }
		public TerminalNode SLOW() { return getToken(MySqlParser.SLOW, 0); }
		public TerminalNode SKIP_QUERY_REWRITE() { return getToken(MySqlParser.SKIP_QUERY_REWRITE, 0); }
		public TerminalNode SNAPSHOT() { return getToken(MySqlParser.SNAPSHOT, 0); }
		public TerminalNode SOCKET() { return getToken(MySqlParser.SOCKET, 0); }
		public TerminalNode SOME() { return getToken(MySqlParser.SOME, 0); }
		public TerminalNode SONAME() { return getToken(MySqlParser.SONAME, 0); }
		public TerminalNode SOUNDS() { return getToken(MySqlParser.SOUNDS, 0); }
		public TerminalNode SOURCE() { return getToken(MySqlParser.SOURCE, 0); }
		public TerminalNode SQL_AFTER_GTIDS() { return getToken(MySqlParser.SQL_AFTER_GTIDS, 0); }
		public TerminalNode SQL_AFTER_MTS_GAPS() { return getToken(MySqlParser.SQL_AFTER_MTS_GAPS, 0); }
		public TerminalNode SQL_BEFORE_GTIDS() { return getToken(MySqlParser.SQL_BEFORE_GTIDS, 0); }
		public TerminalNode SQL_BUFFER_RESULT() { return getToken(MySqlParser.SQL_BUFFER_RESULT, 0); }
		public TerminalNode SQL_CACHE() { return getToken(MySqlParser.SQL_CACHE, 0); }
		public TerminalNode SQL_NO_CACHE() { return getToken(MySqlParser.SQL_NO_CACHE, 0); }
		public TerminalNode SQL_THREAD() { return getToken(MySqlParser.SQL_THREAD, 0); }
		public TerminalNode STACKED() { return getToken(MySqlParser.STACKED, 0); }
		public TerminalNode START() { return getToken(MySqlParser.START, 0); }
		public TerminalNode STARTS() { return getToken(MySqlParser.STARTS, 0); }
		public TerminalNode STATS_AUTO_RECALC() { return getToken(MySqlParser.STATS_AUTO_RECALC, 0); }
		public TerminalNode STATS_PERSISTENT() { return getToken(MySqlParser.STATS_PERSISTENT, 0); }
		public TerminalNode STATS_SAMPLE_PAGES() { return getToken(MySqlParser.STATS_SAMPLE_PAGES, 0); }
		public TerminalNode STATUS() { return getToken(MySqlParser.STATUS, 0); }
		public TerminalNode STD() { return getToken(MySqlParser.STD, 0); }
		public TerminalNode STDDEV() { return getToken(MySqlParser.STDDEV, 0); }
		public TerminalNode STDDEV_POP() { return getToken(MySqlParser.STDDEV_POP, 0); }
		public TerminalNode STDDEV_SAMP() { return getToken(MySqlParser.STDDEV_SAMP, 0); }
		public TerminalNode STOP() { return getToken(MySqlParser.STOP, 0); }
		public TerminalNode STORAGE() { return getToken(MySqlParser.STORAGE, 0); }
		public TerminalNode STRING() { return getToken(MySqlParser.STRING, 0); }
		public TerminalNode SUBCLASS_ORIGIN() { return getToken(MySqlParser.SUBCLASS_ORIGIN, 0); }
		public TerminalNode SUBJECT() { return getToken(MySqlParser.SUBJECT, 0); }
		public TerminalNode SUBPARTITION() { return getToken(MySqlParser.SUBPARTITION, 0); }
		public TerminalNode SUBPARTITIONS() { return getToken(MySqlParser.SUBPARTITIONS, 0); }
		public TerminalNode SUM() { return getToken(MySqlParser.SUM, 0); }
		public TerminalNode SUSPEND() { return getToken(MySqlParser.SUSPEND, 0); }
		public TerminalNode SWAPS() { return getToken(MySqlParser.SWAPS, 0); }
		public TerminalNode SWITCHES() { return getToken(MySqlParser.SWITCHES, 0); }
		public TerminalNode SYSTEM_VARIABLES_ADMIN() { return getToken(MySqlParser.SYSTEM_VARIABLES_ADMIN, 0); }
		public TerminalNode SYSTEM_USER() { return getToken(MySqlParser.SYSTEM_USER, 0); }
		public TerminalNode SYSTEM() { return getToken(MySqlParser.SYSTEM, 0); }
		public TerminalNode TABLE_NAME() { return getToken(MySqlParser.TABLE_NAME, 0); }
		public TerminalNode TABLESPACE() { return getToken(MySqlParser.TABLESPACE, 0); }
		public TerminalNode TABLE_ENCRYPTION_ADMIN() { return getToken(MySqlParser.TABLE_ENCRYPTION_ADMIN, 0); }
		public TerminalNode TABLE_TYPE() { return getToken(MySqlParser.TABLE_TYPE, 0); }
		public TerminalNode TELEMETRY_LOG_ADMIN() { return getToken(MySqlParser.TELEMETRY_LOG_ADMIN, 0); }
		public TerminalNode TEMPORARY() { return getToken(MySqlParser.TEMPORARY, 0); }
		public TerminalNode TEMPTABLE() { return getToken(MySqlParser.TEMPTABLE, 0); }
		public TerminalNode THAN() { return getToken(MySqlParser.THAN, 0); }
		public TerminalNode TP_CONNECTION_ADMIN() { return getToken(MySqlParser.TP_CONNECTION_ADMIN, 0); }
		public TerminalNode TRADITIONAL() { return getToken(MySqlParser.TRADITIONAL, 0); }
		public TerminalNode TRANSACTION() { return getToken(MySqlParser.TRANSACTION, 0); }
		public TerminalNode TRANSACTIONAL() { return getToken(MySqlParser.TRANSACTIONAL, 0); }
		public TerminalNode TRIGGERS() { return getToken(MySqlParser.TRIGGERS, 0); }
		public TerminalNode TRUNCATE() { return getToken(MySqlParser.TRUNCATE, 0); }
		public TerminalNode UNBOUNDED() { return getToken(MySqlParser.UNBOUNDED, 0); }
		public TerminalNode UNDEFINED() { return getToken(MySqlParser.UNDEFINED, 0); }
		public TerminalNode UNDOFILE() { return getToken(MySqlParser.UNDOFILE, 0); }
		public TerminalNode UNDO_BUFFER_SIZE() { return getToken(MySqlParser.UNDO_BUFFER_SIZE, 0); }
		public TerminalNode UNINSTALL() { return getToken(MySqlParser.UNINSTALL, 0); }
		public TerminalNode UNKNOWN() { return getToken(MySqlParser.UNKNOWN, 0); }
		public TerminalNode UNTIL() { return getToken(MySqlParser.UNTIL, 0); }
		public TerminalNode UPGRADE() { return getToken(MySqlParser.UPGRADE, 0); }
		public TerminalNode USA() { return getToken(MySqlParser.USA, 0); }
		public TerminalNode USER() { return getToken(MySqlParser.USER, 0); }
		public TerminalNode USE_FRM() { return getToken(MySqlParser.USE_FRM, 0); }
		public TerminalNode USER_RESOURCES() { return getToken(MySqlParser.USER_RESOURCES, 0); }
		public TerminalNode VALIDATION() { return getToken(MySqlParser.VALIDATION, 0); }
		public TerminalNode VALUE() { return getToken(MySqlParser.VALUE, 0); }
		public TerminalNode VAR_POP() { return getToken(MySqlParser.VAR_POP, 0); }
		public TerminalNode VAR_SAMP() { return getToken(MySqlParser.VAR_SAMP, 0); }
		public TerminalNode VARIABLES() { return getToken(MySqlParser.VARIABLES, 0); }
		public TerminalNode VARIANCE() { return getToken(MySqlParser.VARIANCE, 0); }
		public TerminalNode VERSIONING() { return getToken(MySqlParser.VERSIONING, 0); }
		public TerminalNode VERSION_TOKEN_ADMIN() { return getToken(MySqlParser.VERSION_TOKEN_ADMIN, 0); }
		public TerminalNode VIEW() { return getToken(MySqlParser.VIEW, 0); }
		public TerminalNode VIRTUAL() { return getToken(MySqlParser.VIRTUAL, 0); }
		public TerminalNode WAIT() { return getToken(MySqlParser.WAIT, 0); }
		public TerminalNode WARNINGS() { return getToken(MySqlParser.WARNINGS, 0); }
		public TerminalNode WITHOUT() { return getToken(MySqlParser.WITHOUT, 0); }
		public TerminalNode WORK() { return getToken(MySqlParser.WORK, 0); }
		public TerminalNode WRAPPER() { return getToken(MySqlParser.WRAPPER, 0); }
		public TerminalNode X509() { return getToken(MySqlParser.X509, 0); }
		public TerminalNode XA() { return getToken(MySqlParser.XA, 0); }
		public TerminalNode XA_RECOVER_ADMIN() { return getToken(MySqlParser.XA_RECOVER_ADMIN, 0); }
		public TerminalNode XML() { return getToken(MySqlParser.XML, 0); }
		public TerminalNode YES() { return getToken(MySqlParser.YES, 0); }
		public TerminalNode BINLOG_MONITOR() { return getToken(MySqlParser.BINLOG_MONITOR, 0); }
		public TerminalNode BINLOG_REPLAY() { return getToken(MySqlParser.BINLOG_REPLAY, 0); }
		public TerminalNode CURRENT_ROLE() { return getToken(MySqlParser.CURRENT_ROLE, 0); }
		public TerminalNode CYCLE() { return getToken(MySqlParser.CYCLE, 0); }
		public TerminalNode ENCRYPTED() { return getToken(MySqlParser.ENCRYPTED, 0); }
		public TerminalNode ENCRYPTION_KEY_ID() { return getToken(MySqlParser.ENCRYPTION_KEY_ID, 0); }
		public TerminalNode FEDERATED_ADMIN() { return getToken(MySqlParser.FEDERATED_ADMIN, 0); }
		public TerminalNode INCREMENT() { return getToken(MySqlParser.INCREMENT, 0); }
		public TerminalNode LASTVAL() { return getToken(MySqlParser.LASTVAL, 0); }
		public TerminalNode LOCKED() { return getToken(MySqlParser.LOCKED, 0); }
		public TerminalNode MAXVALUE() { return getToken(MySqlParser.MAXVALUE, 0); }
		public TerminalNode MINVALUE() { return getToken(MySqlParser.MINVALUE, 0); }
		public TerminalNode NEXTVAL() { return getToken(MySqlParser.NEXTVAL, 0); }
		public TerminalNode NOCACHE() { return getToken(MySqlParser.NOCACHE, 0); }
		public TerminalNode NOCYCLE() { return getToken(MySqlParser.NOCYCLE, 0); }
		public TerminalNode NOMAXVALUE() { return getToken(MySqlParser.NOMAXVALUE, 0); }
		public TerminalNode NOMINVALUE() { return getToken(MySqlParser.NOMINVALUE, 0); }
		public TerminalNode PERSISTENT() { return getToken(MySqlParser.PERSISTENT, 0); }
		public TerminalNode PREVIOUS() { return getToken(MySqlParser.PREVIOUS, 0); }
		public TerminalNode READ_ONLY_ADMIN() { return getToken(MySqlParser.READ_ONLY_ADMIN, 0); }
		public TerminalNode REPLICA() { return getToken(MySqlParser.REPLICA, 0); }
		public TerminalNode REPLICATION_MASTER_ADMIN() { return getToken(MySqlParser.REPLICATION_MASTER_ADMIN, 0); }
		public TerminalNode RESTART() { return getToken(MySqlParser.RESTART, 0); }
		public TerminalNode SEQUENCE() { return getToken(MySqlParser.SEQUENCE, 0); }
		public TerminalNode SETVAL() { return getToken(MySqlParser.SETVAL, 0); }
		public TerminalNode SKIP_() { return getToken(MySqlParser.SKIP_, 0); }
		public TerminalNode STATEMENT() { return getToken(MySqlParser.STATEMENT, 0); }
		public TerminalNode UUID() { return getToken(MySqlParser.UUID, 0); }
		public TerminalNode VIA() { return getToken(MySqlParser.VIA, 0); }
		public TerminalNode MONITOR() { return getToken(MySqlParser.MONITOR, 0); }
		public TerminalNode READ_ONLY() { return getToken(MySqlParser.READ_ONLY, 0); }
		public TerminalNode REPLAY() { return getToken(MySqlParser.REPLAY, 0); }
		public TerminalNode USER_STATISTICS() { return getToken(MySqlParser.USER_STATISTICS, 0); }
		public TerminalNode CLIENT_STATISTICS() { return getToken(MySqlParser.CLIENT_STATISTICS, 0); }
		public TerminalNode INDEX_STATISTICS() { return getToken(MySqlParser.INDEX_STATISTICS, 0); }
		public TerminalNode TABLE_STATISTICS() { return getToken(MySqlParser.TABLE_STATISTICS, 0); }
		public TerminalNode FIREWALL_RULES() { return getToken(MySqlParser.FIREWALL_RULES, 0); }
		public KeywordsCanBeIdContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_keywordsCanBeId; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterKeywordsCanBeId(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitKeywordsCanBeId(this);
		}
	}

	public final KeywordsCanBeIdContext keywordsCanBeId() throws RecognitionException {
		KeywordsCanBeIdContext _localctx = new KeywordsCanBeIdContext(_ctx, getState());
		enterRule(_localctx, 738, RULE_keywordsCanBeId);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7803);
			_la = _input.LA(1);
			if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ARRAY) | (1L << ATTRIBUTE) | (1L << BUCKETS) | (1L << CONDITION) | (1L << CURRENT) | (1L << CURRENT_ROLE) | (1L << CURRENT_USER) | (1L << DEFAULT) | (1L << DIAGNOSTICS) | (1L << EMPTY) | (1L << ENFORCED) | (1L << EXCEPT))) != 0) || ((((_la - 74)) & ~0x3f) == 0 && ((1L << (_la - 74)) & ((1L << (GROUP - 74)) | (1L << (GROUP_REPLICATION_STREAM - 74)) | (1L << (IGNORED - 74)) | (1L << (LATERAL - 74)) | (1L << (LOCKED - 74)) | (1L << (MAXVALUE - 74)) | (1L << (MINVALUE - 74)) | (1L << (NUMBER - 74)) | (1L << (OPTIONAL - 74)) | (1L << (ORDER - 74)) | (1L << (PRIMARY - 74)))) != 0) || ((((_la - 159)) & ~0x3f) == 0 && ((1L << (_la - 159)) & ((1L << (SKIP_ - 159)) | (1L << (SKIP_QUERY_REWRITE - 159)) | (1L << (STACKED - 159)) | (1L << (STATEMENT - 159)))) != 0) || ((((_la - 228)) & ~0x3f) == 0 && ((1L << (_la - 228)) & ((1L << (NATIONAL - 228)) | (1L << (SERIAL - 228)) | (1L << (NESTED - 228)) | (1L << (ORDINALITY - 228)) | (1L << (PATH - 228)) | (1L << (AVG - 228)) | (1L << (BIT_AND - 228)) | (1L << (BIT_OR - 228)))) != 0) || ((((_la - 292)) & ~0x3f) == 0 && ((1L << (_la - 292)) & ((1L << (BIT_XOR - 292)) | (1L << (COUNT - 292)) | (1L << (GROUP_CONCAT - 292)) | (1L << (MAX - 292)) | (1L << (MIN - 292)) | (1L << (STD - 292)) | (1L << (STDDEV - 292)) | (1L << (STDDEV_POP - 292)) | (1L << (STDDEV_SAMP - 292)) | (1L << (SUM - 292)) | (1L << (VAR_POP - 292)) | (1L << (VAR_SAMP - 292)) | (1L << (VARIANCE - 292)) | (1L << (ACCOUNT - 292)) | (1L << (ACTION - 292)) | (1L << (AFTER - 292)) | (1L << (AGGREGATE - 292)) | (1L << (ALGORITHM - 292)) | (1L << (ANY - 292)) | (1L << (AT - 292)) | (1L << (AUTHORS - 292)) | (1L << (AUTOCOMMIT - 292)) | (1L << (AUTOEXTEND_SIZE - 292)) | (1L << (AUTO_INCREMENT - 292)) | (1L << (AVG_ROW_LENGTH - 292)) | (1L << (BEGIN - 292)) | (1L << (BINLOG - 292)) | (1L << (BIT - 292)) | (1L << (BLOCK - 292)) | (1L << (BOOL - 292)) | (1L << (BOOLEAN - 292)) | (1L << (BTREE - 292)) | (1L << (CACHE - 292)) | (1L << (CASCADED - 292)))) != 0) || ((((_la - 356)) & ~0x3f) == 0 && ((1L << (_la - 356)) & ((1L << (CHAIN - 356)) | (1L << (CHANGED - 356)) | (1L << (CHANNEL - 356)) | (1L << (CHECKSUM - 356)) | (1L << (PAGE_CHECKSUM - 356)) | (1L << (CIPHER - 356)) | (1L << (CLASS_ORIGIN - 356)) | (1L << (CLIENT - 356)) | (1L << (CLOSE - 356)) | (1L << (CLUSTERING - 356)) | (1L << (COALESCE - 356)) | (1L << (CODE - 356)) | (1L << (COLUMNS - 356)) | (1L << (COLUMN_FORMAT - 356)) | (1L << (COLUMN_NAME - 356)) | (1L << (COMMENT - 356)) | (1L << (COMMIT - 356)) | (1L << (COMPACT - 356)) | (1L << (COMPLETION - 356)) | (1L << (COMPRESSED - 356)) | (1L << (COMPRESSION - 356)) | (1L << (CONCURRENT - 356)) | (1L << (CONNECT - 356)) | (1L << (CONNECTION - 356)) | (1L << (CONSISTENT - 356)) | (1L << (CONSTRAINT_CATALOG - 356)) | (1L << (CONSTRAINT_SCHEMA - 356)) | (1L << (CONSTRAINT_NAME - 356)) | (1L << (CONTAINS - 356)) | (1L << (CONTEXT - 356)) | (1L << (CONTRIBUTORS - 356)) | (1L << (COPY - 356)) | (1L << (CPU - 356)) | (1L << (CYCLE - 356)) | (1L << (CURSOR_NAME - 356)) | (1L << (DATA - 356)) | (1L << (DATAFILE - 356)) | (1L << (DEALLOCATE - 356)) | (1L << (DEFAULT_AUTH - 356)) | (1L << (DEFINER - 356)) | (1L << (DELAY_KEY_WRITE - 356)) | (1L << (DES_KEY_FILE - 356)) | (1L << (DIRECTORY - 356)) | (1L << (DISABLE - 356)) | (1L << (DISCARD - 356)) | (1L << (DISK - 356)) | (1L << (DO - 356)) | (1L << (DUMPFILE - 356)) | (1L << (DUPLICATE - 356)) | (1L << (DYNAMIC - 356)) | (1L << (ENABLE - 356)) | (1L << (ENCRYPTED - 356)) | (1L << (ENCRYPTION - 356)) | (1L << (ENCRYPTION_KEY_ID - 356)) | (1L << (END - 356)) | (1L << (ENDS - 356)) | (1L << (ENGINE - 356)) | (1L << (ENGINES - 356)) | (1L << (ERROR - 356)) | (1L << (ERRORS - 356)) | (1L << (ESCAPE - 356)) | (1L << (EVEN - 356)) | (1L << (EVENT - 356)) | (1L << (EVENTS - 356)))) != 0) || ((((_la - 420)) & ~0x3f) == 0 && ((1L << (_la - 420)) & ((1L << (EVERY - 420)) | (1L << (EXCHANGE - 420)) | (1L << (EXCLUSIVE - 420)) | (1L << (EXPIRE - 420)) | (1L << (EXPORT - 420)) | (1L << (EXTENDED - 420)) | (1L << (EXTENT_SIZE - 420)) | (1L << (FAILED_LOGIN_ATTEMPTS - 420)) | (1L << (FAST - 420)) | (1L << (FAULTS - 420)) | (1L << (FIELDS - 420)) | (1L << (FILE_BLOCK_SIZE - 420)) | (1L << (FILTER - 420)) | (1L << (FIRST - 420)) | (1L << (FIXED - 420)) | (1L << (FLUSH - 420)) | (1L << (FOLLOWS - 420)) | (1L << (FOUND - 420)) | (1L << (FULL - 420)) | (1L << (FUNCTION - 420)) | (1L << (GENERAL - 420)) | (1L << (GLOBAL - 420)) | (1L << (GRANTS - 420)) | (1L << (GROUP_REPLICATION - 420)) | (1L << (HANDLER - 420)) | (1L << (HASH - 420)) | (1L << (HELP - 420)) | (1L << (HISTORY - 420)) | (1L << (HOST - 420)) | (1L << (HOSTS - 420)) | (1L << (IDENTIFIED - 420)) | (1L << (IGNORE_SERVER_IDS - 420)) | (1L << (IMPORT - 420)) | (1L << (INCREMENT - 420)) | (1L << (INDEXES - 420)) | (1L << (INITIAL_SIZE - 420)) | (1L << (INPLACE - 420)) | (1L << (INSERT_METHOD - 420)) | (1L << (INSTALL - 420)) | (1L << (INSTANCE - 420)) | (1L << (INSTANT - 420)) | (1L << (INVOKER - 420)) | (1L << (IO - 420)) | (1L << (IO_THREAD - 420)) | (1L << (IPC - 420)) | (1L << (ISOLATION - 420)) | (1L << (ISSUER - 420)) | (1L << (JSON - 420)) | (1L << (KEY_BLOCK_SIZE - 420)) | (1L << (LANGUAGE - 420)) | (1L << (LAST - 420)) | (1L << (LEAVES - 420)) | (1L << (LESS - 420)) | (1L << (LEVEL - 420)) | (1L << (LIST - 420)) | (1L << (LOCAL - 420)) | (1L << (LOGFILE - 420)) | (1L << (LOGS - 420)) | (1L << (MASTER - 420)) | (1L << (MASTER_AUTO_POSITION - 420)) | (1L << (MASTER_CONNECT_RETRY - 420)) | (1L << (MASTER_DELAY - 420)))) != 0) || ((((_la - 484)) & ~0x3f) == 0 && ((1L << (_la - 484)) & ((1L << (MASTER_HEARTBEAT_PERIOD - 484)) | (1L << (MASTER_HOST - 484)) | (1L << (MASTER_LOG_FILE - 484)) | (1L << (MASTER_LOG_POS - 484)) | (1L << (MASTER_PASSWORD - 484)) | (1L << (MASTER_PORT - 484)) | (1L << (MASTER_RETRY_COUNT - 484)) | (1L << (MASTER_SSL - 484)) | (1L << (MASTER_SSL_CA - 484)) | (1L << (MASTER_SSL_CAPATH - 484)) | (1L << (MASTER_SSL_CERT - 484)) | (1L << (MASTER_SSL_CIPHER - 484)) | (1L << (MASTER_SSL_CRL - 484)) | (1L << (MASTER_SSL_CRLPATH - 484)) | (1L << (MASTER_SSL_KEY - 484)) | (1L << (MASTER_TLS_VERSION - 484)) | (1L << (MASTER_USER - 484)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 484)) | (1L << (MAX_QUERIES_PER_HOUR - 484)) | (1L << (MAX_ROWS - 484)) | (1L << (MAX_SIZE - 484)) | (1L << (MAX_UPDATES_PER_HOUR - 484)) | (1L << (MAX_USER_CONNECTIONS - 484)) | (1L << (MEDIUM - 484)) | (1L << (MEMBER - 484)) | (1L << (MERGE - 484)) | (1L << (MESSAGE_TEXT - 484)) | (1L << (MID - 484)) | (1L << (MIGRATE - 484)) | (1L << (MIN_ROWS - 484)) | (1L << (MODE - 484)) | (1L << (MODIFY - 484)) | (1L << (MUTEX - 484)) | (1L << (MYSQL - 484)) | (1L << (MYSQL_ERRNO - 484)) | (1L << (NAME - 484)) | (1L << (NAMES - 484)) | (1L << (NCHAR - 484)) | (1L << (NEVER - 484)) | (1L << (NEXT - 484)) | (1L << (NO - 484)) | (1L << (NOCACHE - 484)) | (1L << (NOCOPY - 484)) | (1L << (NOCYCLE - 484)) | (1L << (NOMAXVALUE - 484)) | (1L << (NOMINVALUE - 484)) | (1L << (NOWAIT - 484)) | (1L << (NODEGROUP - 484)) | (1L << (NONE - 484)) | (1L << (ODBC - 484)) | (1L << (OFFLINE - 484)) | (1L << (OFFSET - 484)) | (1L << (OF - 484)) | (1L << (OJ - 484)) | (1L << (OLD_PASSWORD - 484)) | (1L << (ONE - 484)) | (1L << (ONLINE - 484)) | (1L << (ONLY - 484)) | (1L << (OPEN - 484)) | (1L << (OPTIMIZER_COSTS - 484)) | (1L << (OPTIONS - 484)) | (1L << (OWNER - 484)) | (1L << (PACK_KEYS - 484)) | (1L << (PAGE - 484)))) != 0) || ((((_la - 550)) & ~0x3f) == 0 && ((1L << (_la - 550)) & ((1L << (PARSER - 550)) | (1L << (PARTIAL - 550)) | (1L << (PARTITIONING - 550)) | (1L << (PARTITIONS - 550)) | (1L << (PASSWORD - 550)) | (1L << (PASSWORD_LOCK_TIME - 550)) | (1L << (PHASE - 550)) | (1L << (PLUGIN - 550)) | (1L << (PLUGIN_DIR - 550)) | (1L << (PLUGINS - 550)) | (1L << (PORT - 550)) | (1L << (PRECEDES - 550)) | (1L << (PREPARE - 550)) | (1L << (PRESERVE - 550)) | (1L << (PREV - 550)) | (1L << (PROCESSLIST - 550)) | (1L << (PROFILE - 550)) | (1L << (PROFILES - 550)) | (1L << (PROXY - 550)) | (1L << (QUERY - 550)) | (1L << (QUICK - 550)) | (1L << (REBUILD - 550)) | (1L << (RECOVER - 550)) | (1L << (RECURSIVE - 550)) | (1L << (REDO_BUFFER_SIZE - 550)) | (1L << (REDUNDANT - 550)) | (1L << (RELAY - 550)) | (1L << (RELAY_LOG_FILE - 550)) | (1L << (RELAY_LOG_POS - 550)) | (1L << (RELAYLOG - 550)) | (1L << (REMOVE - 550)) | (1L << (REORGANIZE - 550)) | (1L << (REPAIR - 550)) | (1L << (REPLICATE_DO_DB - 550)) | (1L << (REPLICATE_DO_TABLE - 550)) | (1L << (REPLICATE_IGNORE_DB - 550)) | (1L << (REPLICATE_IGNORE_TABLE - 550)) | (1L << (REPLICATE_REWRITE_DB - 550)) | (1L << (REPLICATE_WILD_DO_TABLE - 550)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 550)) | (1L << (REPLICATION - 550)) | (1L << (RESET - 550)) | (1L << (RESTART - 550)) | (1L << (RESUME - 550)) | (1L << (RETURNED_SQLSTATE - 550)) | (1L << (RETURNING - 550)) | (1L << (RETURNS - 550)) | (1L << (REUSE - 550)) | (1L << (ROLE - 550)) | (1L << (ROLLBACK - 550)) | (1L << (ROLLUP - 550)) | (1L << (ROTATE - 550)) | (1L << (ROW - 550)) | (1L << (ROWS - 550)) | (1L << (ROW_FORMAT - 550)) | (1L << (RTREE - 550)) | (1L << (SAVEPOINT - 550)) | (1L << (SCHEDULE - 550)) | (1L << (SECURITY - 550)) | (1L << (SEQUENCE - 550)) | (1L << (SERVER - 550)) | (1L << (SESSION - 550)) | (1L << (SHARE - 550)))) != 0) || ((((_la - 614)) & ~0x3f) == 0 && ((1L << (_la - 614)) & ((1L << (SHARED - 614)) | (1L << (SIGNED - 614)) | (1L << (SIMPLE - 614)) | (1L << (SLAVE - 614)) | (1L << (SLOW - 614)) | (1L << (SNAPSHOT - 614)) | (1L << (SOCKET - 614)) | (1L << (SOME - 614)) | (1L << (SONAME - 614)) | (1L << (SOUNDS - 614)) | (1L << (SOURCE - 614)) | (1L << (SQL_AFTER_GTIDS - 614)) | (1L << (SQL_AFTER_MTS_GAPS - 614)) | (1L << (SQL_BEFORE_GTIDS - 614)) | (1L << (SQL_BUFFER_RESULT - 614)) | (1L << (SQL_CACHE - 614)) | (1L << (SQL_NO_CACHE - 614)) | (1L << (SQL_THREAD - 614)) | (1L << (START - 614)) | (1L << (STARTS - 614)) | (1L << (STATS_AUTO_RECALC - 614)) | (1L << (STATS_PERSISTENT - 614)) | (1L << (STATS_SAMPLE_PAGES - 614)) | (1L << (STATUS - 614)) | (1L << (STOP - 614)) | (1L << (STORAGE - 614)) | (1L << (STRING - 614)) | (1L << (SUBCLASS_ORIGIN - 614)) | (1L << (SUBJECT - 614)) | (1L << (SUBPARTITION - 614)) | (1L << (SUBPARTITIONS - 614)) | (1L << (SUSPEND - 614)) | (1L << (SWAPS - 614)) | (1L << (SWITCHES - 614)) | (1L << (TABLE_NAME - 614)) | (1L << (TABLESPACE - 614)) | (1L << (TABLE_TYPE - 614)) | (1L << (TEMPORARY - 614)) | (1L << (TEMPTABLE - 614)) | (1L << (THAN - 614)) | (1L << (TRADITIONAL - 614)) | (1L << (TRANSACTION - 614)) | (1L << (TRANSACTIONAL - 614)) | (1L << (TRIGGERS - 614)) | (1L << (TRUNCATE - 614)) | (1L << (UNBOUNDED - 614)) | (1L << (UNDEFINED - 614)) | (1L << (UNDOFILE - 614)) | (1L << (UNDO_BUFFER_SIZE - 614)) | (1L << (UNINSTALL - 614)) | (1L << (UNKNOWN - 614)) | (1L << (UNTIL - 614)) | (1L << (UPGRADE - 614)) | (1L << (USER - 614)) | (1L << (USE_FRM - 614)) | (1L << (USER_RESOURCES - 614)) | (1L << (VALIDATION - 614)) | (1L << (VALUE - 614)) | (1L << (VARIABLES - 614)) | (1L << (VIEW - 614)) | (1L << (VIRTUAL - 614)) | (1L << (WAIT - 614)))) != 0) || ((((_la - 678)) & ~0x3f) == 0 && ((1L << (_la - 678)) & ((1L << (WARNINGS - 678)) | (1L << (WITHOUT - 678)) | (1L << (WORK - 678)) | (1L << (WRAPPER - 678)) | (1L << (X509 - 678)) | (1L << (XA - 678)) | (1L << (XML - 678)) | (1L << (YES - 678)) | (1L << (EUR - 678)) | (1L << (USA - 678)) | (1L << (JIS - 678)) | (1L << (ISO - 678)) | (1L << (INTERNAL - 678)) | (1L << (USER_STATISTICS - 678)) | (1L << (CLIENT_STATISTICS - 678)) | (1L << (INDEX_STATISTICS - 678)) | (1L << (TABLE_STATISTICS - 678)) | (1L << (FIREWALL_RULES - 678)) | (1L << (ADMIN - 678)) | (1L << (APPLICATION_PASSWORD_ADMIN - 678)) | (1L << (AUDIT_ADMIN - 678)) | (1L << (AUDIT_ABORT_EXEMPT - 678)) | (1L << (AUTHENTICATION_POLICY_ADMIN - 678)) | (1L << (BACKUP_ADMIN - 678)) | (1L << (BINLOG_ADMIN - 678)) | (1L << (BINLOG_ENCRYPTION_ADMIN - 678)) | (1L << (CLONE_ADMIN - 678)) | (1L << (CONNECTION_ADMIN - 678)) | (1L << (ENCRYPTION_KEY_ADMIN - 678)) | (1L << (FIREWALL_ADMIN - 678)) | (1L << (FIREWALL_EXEMPT - 678)) | (1L << (FIREWALL_USER - 678)) | (1L << (FLUSH_OPTIMIZER_COSTS - 678)) | (1L << (FLUSH_STATUS - 678)) | (1L << (FLUSH_TABLES - 678)) | (1L << (FLUSH_USER_RESOURCES - 678)) | (1L << (GROUP_REPLICATION_ADMIN - 678)) | (1L << (INNODB_REDO_LOG_ARCHIVE - 678)) | (1L << (INNODB_REDO_LOG_ENABLE - 678)) | (1L << (INVOKE - 678)) | (1L << (LAMBDA - 678)) | (1L << (NDB_STORED_USER - 678)) | (1L << (PASSWORDLESS_USER_ADMIN - 678)) | (1L << (PERSIST_RO_VARIABLES_ADMIN - 678)) | (1L << (REPLICATION_APPLIER - 678)) | (1L << (REPLICATION_SLAVE_ADMIN - 678)) | (1L << (RESOURCE_GROUP_ADMIN - 678)) | (1L << (RESOURCE_GROUP_USER - 678)) | (1L << (ROLE_ADMIN - 678)))) != 0) || ((((_la - 742)) & ~0x3f) == 0 && ((1L << (_la - 742)) & ((1L << (S3 - 742)) | (1L << (SESSION_VARIABLES_ADMIN - 742)) | (1L << (SET_USER_ID - 742)) | (1L << (SHOW_ROUTINE - 742)) | (1L << (SYSTEM_VARIABLES_ADMIN - 742)) | (1L << (TABLE_ENCRYPTION_ADMIN - 742)) | (1L << (VERSION_TOKEN_ADMIN - 742)) | (1L << (XA_RECOVER_ADMIN - 742)) | (1L << (MEMORY - 742)))) != 0) || _la==GEOMETRY || _la==CATALOG_NAME || _la==ENGINE_ATTRIBUTE || ((((_la - 1008)) & ~0x3f) == 0 && ((1L << (_la - 1008)) & ((1L << (SECONDARY_ENGINE_ATTRIBUTE - 1008)) | (1L << (SENSITIVE_VARIABLES_OBSERVER - 1008)) | (1L << (SCHEMA_NAME - 1008)))) != 0) || ((((_la - 1086)) & ~0x3f) == 0 && ((1L << (_la - 1086)) & ((1L << (SYSTEM_USER - 1086)) | (1L << (SYSTEM - 1086)) | (1L << (TELEMETRY_LOG_ADMIN - 1086)) | (1L << (TP_CONNECTION_ADMIN - 1086)) | (1L << (UUID - 1086)) | (1L << (VERSIONING - 1086)) | (1L << (VIA - 1086)) | (1L << (LASTVAL - 1086)) | (1L << (NEXTVAL - 1086)) | (1L << (SETVAL - 1086)) | (1L << (PREVIOUS - 1086)) | (1L << (PERSISTENT - 1086)) | (1L << (BINLOG_MONITOR - 1086)) | (1L << (BINLOG_REPLAY - 1086)) | (1L << (FEDERATED_ADMIN - 1086)) | (1L << (READ_ONLY_ADMIN - 1086)) | (1L << (REPLICA - 1086)) | (1L << (REPLICATION_MASTER_ADMIN - 1086)) | (1L << (MONITOR - 1086)) | (1L << (READ_ONLY - 1086)) | (1L << (REPLAY - 1086)))) != 0)) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FunctionNameBaseContext extends ParserRuleContext {
		public TerminalNode ABS() { return getToken(MySqlParser.ABS, 0); }
		public TerminalNode ACOS() { return getToken(MySqlParser.ACOS, 0); }
		public TerminalNode ADDDATE() { return getToken(MySqlParser.ADDDATE, 0); }
		public TerminalNode ADDTIME() { return getToken(MySqlParser.ADDTIME, 0); }
		public TerminalNode AES_DECRYPT() { return getToken(MySqlParser.AES_DECRYPT, 0); }
		public TerminalNode AES_ENCRYPT() { return getToken(MySqlParser.AES_ENCRYPT, 0); }
		public TerminalNode AREA() { return getToken(MySqlParser.AREA, 0); }
		public TerminalNode ASBINARY() { return getToken(MySqlParser.ASBINARY, 0); }
		public TerminalNode ASIN() { return getToken(MySqlParser.ASIN, 0); }
		public TerminalNode ASTEXT() { return getToken(MySqlParser.ASTEXT, 0); }
		public TerminalNode ASWKB() { return getToken(MySqlParser.ASWKB, 0); }
		public TerminalNode ASWKT() { return getToken(MySqlParser.ASWKT, 0); }
		public TerminalNode ASYMMETRIC_DECRYPT() { return getToken(MySqlParser.ASYMMETRIC_DECRYPT, 0); }
		public TerminalNode ASYMMETRIC_DERIVE() { return getToken(MySqlParser.ASYMMETRIC_DERIVE, 0); }
		public TerminalNode ASYMMETRIC_ENCRYPT() { return getToken(MySqlParser.ASYMMETRIC_ENCRYPT, 0); }
		public TerminalNode ASYMMETRIC_SIGN() { return getToken(MySqlParser.ASYMMETRIC_SIGN, 0); }
		public TerminalNode ASYMMETRIC_VERIFY() { return getToken(MySqlParser.ASYMMETRIC_VERIFY, 0); }
		public TerminalNode ATAN() { return getToken(MySqlParser.ATAN, 0); }
		public TerminalNode ATAN2() { return getToken(MySqlParser.ATAN2, 0); }
		public TerminalNode BENCHMARK() { return getToken(MySqlParser.BENCHMARK, 0); }
		public TerminalNode BIN() { return getToken(MySqlParser.BIN, 0); }
		public TerminalNode BIT_COUNT() { return getToken(MySqlParser.BIT_COUNT, 0); }
		public TerminalNode BIT_LENGTH() { return getToken(MySqlParser.BIT_LENGTH, 0); }
		public TerminalNode BUFFER() { return getToken(MySqlParser.BUFFER, 0); }
		public TerminalNode CEIL() { return getToken(MySqlParser.CEIL, 0); }
		public TerminalNode CEILING() { return getToken(MySqlParser.CEILING, 0); }
		public TerminalNode CENTROID() { return getToken(MySqlParser.CENTROID, 0); }
		public TerminalNode CHARACTER_LENGTH() { return getToken(MySqlParser.CHARACTER_LENGTH, 0); }
		public TerminalNode CHARSET() { return getToken(MySqlParser.CHARSET, 0); }
		public TerminalNode CHAR_LENGTH() { return getToken(MySqlParser.CHAR_LENGTH, 0); }
		public TerminalNode COERCIBILITY() { return getToken(MySqlParser.COERCIBILITY, 0); }
		public TerminalNode COLLATION() { return getToken(MySqlParser.COLLATION, 0); }
		public TerminalNode COMPRESS() { return getToken(MySqlParser.COMPRESS, 0); }
		public TerminalNode CONCAT() { return getToken(MySqlParser.CONCAT, 0); }
		public TerminalNode CONCAT_WS() { return getToken(MySqlParser.CONCAT_WS, 0); }
		public TerminalNode CONNECTION_ID() { return getToken(MySqlParser.CONNECTION_ID, 0); }
		public TerminalNode CONV() { return getToken(MySqlParser.CONV, 0); }
		public TerminalNode CONVERT_TZ() { return getToken(MySqlParser.CONVERT_TZ, 0); }
		public TerminalNode COS() { return getToken(MySqlParser.COS, 0); }
		public TerminalNode COT() { return getToken(MySqlParser.COT, 0); }
		public TerminalNode COUNT() { return getToken(MySqlParser.COUNT, 0); }
		public TerminalNode CRC32() { return getToken(MySqlParser.CRC32, 0); }
		public TerminalNode CREATE_ASYMMETRIC_PRIV_KEY() { return getToken(MySqlParser.CREATE_ASYMMETRIC_PRIV_KEY, 0); }
		public TerminalNode CREATE_ASYMMETRIC_PUB_KEY() { return getToken(MySqlParser.CREATE_ASYMMETRIC_PUB_KEY, 0); }
		public TerminalNode CREATE_DH_PARAMETERS() { return getToken(MySqlParser.CREATE_DH_PARAMETERS, 0); }
		public TerminalNode CREATE_DIGEST() { return getToken(MySqlParser.CREATE_DIGEST, 0); }
		public TerminalNode CROSSES() { return getToken(MySqlParser.CROSSES, 0); }
		public TerminalNode CUME_DIST() { return getToken(MySqlParser.CUME_DIST, 0); }
		public TerminalNode DATABASE() { return getToken(MySqlParser.DATABASE, 0); }
		public TerminalNode DATE() { return getToken(MySqlParser.DATE, 0); }
		public TerminalNode DATEDIFF() { return getToken(MySqlParser.DATEDIFF, 0); }
		public TerminalNode DATE_FORMAT() { return getToken(MySqlParser.DATE_FORMAT, 0); }
		public TerminalNode DAY() { return getToken(MySqlParser.DAY, 0); }
		public TerminalNode DAYNAME() { return getToken(MySqlParser.DAYNAME, 0); }
		public TerminalNode DAYOFMONTH() { return getToken(MySqlParser.DAYOFMONTH, 0); }
		public TerminalNode DAYOFWEEK() { return getToken(MySqlParser.DAYOFWEEK, 0); }
		public TerminalNode DAYOFYEAR() { return getToken(MySqlParser.DAYOFYEAR, 0); }
		public TerminalNode DECODE() { return getToken(MySqlParser.DECODE, 0); }
		public TerminalNode DEGREES() { return getToken(MySqlParser.DEGREES, 0); }
		public TerminalNode DENSE_RANK() { return getToken(MySqlParser.DENSE_RANK, 0); }
		public TerminalNode DES_DECRYPT() { return getToken(MySqlParser.DES_DECRYPT, 0); }
		public TerminalNode DES_ENCRYPT() { return getToken(MySqlParser.DES_ENCRYPT, 0); }
		public TerminalNode DIMENSION() { return getToken(MySqlParser.DIMENSION, 0); }
		public TerminalNode DISJOINT() { return getToken(MySqlParser.DISJOINT, 0); }
		public TerminalNode ELT() { return getToken(MySqlParser.ELT, 0); }
		public TerminalNode ENCODE() { return getToken(MySqlParser.ENCODE, 0); }
		public TerminalNode ENCRYPT() { return getToken(MySqlParser.ENCRYPT, 0); }
		public TerminalNode ENDPOINT() { return getToken(MySqlParser.ENDPOINT, 0); }
		public TerminalNode ENVELOPE() { return getToken(MySqlParser.ENVELOPE, 0); }
		public TerminalNode EQUALS() { return getToken(MySqlParser.EQUALS, 0); }
		public TerminalNode EXP() { return getToken(MySqlParser.EXP, 0); }
		public TerminalNode EXPORT_SET() { return getToken(MySqlParser.EXPORT_SET, 0); }
		public TerminalNode EXTERIORRING() { return getToken(MySqlParser.EXTERIORRING, 0); }
		public TerminalNode EXTRACTVALUE() { return getToken(MySqlParser.EXTRACTVALUE, 0); }
		public TerminalNode FIELD() { return getToken(MySqlParser.FIELD, 0); }
		public TerminalNode FIND_IN_SET() { return getToken(MySqlParser.FIND_IN_SET, 0); }
		public TerminalNode FIRST_VALUE() { return getToken(MySqlParser.FIRST_VALUE, 0); }
		public TerminalNode FLOOR() { return getToken(MySqlParser.FLOOR, 0); }
		public TerminalNode FORMAT() { return getToken(MySqlParser.FORMAT, 0); }
		public TerminalNode FOUND_ROWS() { return getToken(MySqlParser.FOUND_ROWS, 0); }
		public TerminalNode FROM_BASE64() { return getToken(MySqlParser.FROM_BASE64, 0); }
		public TerminalNode FROM_DAYS() { return getToken(MySqlParser.FROM_DAYS, 0); }
		public TerminalNode FROM_UNIXTIME() { return getToken(MySqlParser.FROM_UNIXTIME, 0); }
		public TerminalNode GEOMCOLLFROMTEXT() { return getToken(MySqlParser.GEOMCOLLFROMTEXT, 0); }
		public TerminalNode GEOMCOLLFROMWKB() { return getToken(MySqlParser.GEOMCOLLFROMWKB, 0); }
		public TerminalNode GEOMETRYCOLLECTION() { return getToken(MySqlParser.GEOMETRYCOLLECTION, 0); }
		public TerminalNode GEOMETRYCOLLECTIONFROMTEXT() { return getToken(MySqlParser.GEOMETRYCOLLECTIONFROMTEXT, 0); }
		public TerminalNode GEOMETRYCOLLECTIONFROMWKB() { return getToken(MySqlParser.GEOMETRYCOLLECTIONFROMWKB, 0); }
		public TerminalNode GEOMETRYFROMTEXT() { return getToken(MySqlParser.GEOMETRYFROMTEXT, 0); }
		public TerminalNode GEOMETRYFROMWKB() { return getToken(MySqlParser.GEOMETRYFROMWKB, 0); }
		public TerminalNode GEOMETRYN() { return getToken(MySqlParser.GEOMETRYN, 0); }
		public TerminalNode GEOMETRYTYPE() { return getToken(MySqlParser.GEOMETRYTYPE, 0); }
		public TerminalNode GEOMFROMTEXT() { return getToken(MySqlParser.GEOMFROMTEXT, 0); }
		public TerminalNode GEOMFROMWKB() { return getToken(MySqlParser.GEOMFROMWKB, 0); }
		public TerminalNode GET_FORMAT() { return getToken(MySqlParser.GET_FORMAT, 0); }
		public TerminalNode GET_LOCK() { return getToken(MySqlParser.GET_LOCK, 0); }
		public TerminalNode GLENGTH() { return getToken(MySqlParser.GLENGTH, 0); }
		public TerminalNode GREATEST() { return getToken(MySqlParser.GREATEST, 0); }
		public TerminalNode GTID_SUBSET() { return getToken(MySqlParser.GTID_SUBSET, 0); }
		public TerminalNode GTID_SUBTRACT() { return getToken(MySqlParser.GTID_SUBTRACT, 0); }
		public TerminalNode HEX() { return getToken(MySqlParser.HEX, 0); }
		public TerminalNode HOUR() { return getToken(MySqlParser.HOUR, 0); }
		public TerminalNode IFNULL() { return getToken(MySqlParser.IFNULL, 0); }
		public TerminalNode INET6_ATON() { return getToken(MySqlParser.INET6_ATON, 0); }
		public TerminalNode INET6_NTOA() { return getToken(MySqlParser.INET6_NTOA, 0); }
		public TerminalNode INET_ATON() { return getToken(MySqlParser.INET_ATON, 0); }
		public TerminalNode INET_NTOA() { return getToken(MySqlParser.INET_NTOA, 0); }
		public TerminalNode INSTR() { return getToken(MySqlParser.INSTR, 0); }
		public TerminalNode INTERIORRINGN() { return getToken(MySqlParser.INTERIORRINGN, 0); }
		public TerminalNode INTERSECTS() { return getToken(MySqlParser.INTERSECTS, 0); }
		public TerminalNode INVISIBLE() { return getToken(MySqlParser.INVISIBLE, 0); }
		public TerminalNode ISCLOSED() { return getToken(MySqlParser.ISCLOSED, 0); }
		public TerminalNode ISEMPTY() { return getToken(MySqlParser.ISEMPTY, 0); }
		public TerminalNode ISNULL() { return getToken(MySqlParser.ISNULL, 0); }
		public TerminalNode ISSIMPLE() { return getToken(MySqlParser.ISSIMPLE, 0); }
		public TerminalNode IS_FREE_LOCK() { return getToken(MySqlParser.IS_FREE_LOCK, 0); }
		public TerminalNode IS_IPV4() { return getToken(MySqlParser.IS_IPV4, 0); }
		public TerminalNode IS_IPV4_COMPAT() { return getToken(MySqlParser.IS_IPV4_COMPAT, 0); }
		public TerminalNode IS_IPV4_MAPPED() { return getToken(MySqlParser.IS_IPV4_MAPPED, 0); }
		public TerminalNode IS_IPV6() { return getToken(MySqlParser.IS_IPV6, 0); }
		public TerminalNode IS_USED_LOCK() { return getToken(MySqlParser.IS_USED_LOCK, 0); }
		public TerminalNode LAG() { return getToken(MySqlParser.LAG, 0); }
		public TerminalNode LAST_INSERT_ID() { return getToken(MySqlParser.LAST_INSERT_ID, 0); }
		public TerminalNode LAST_VALUE() { return getToken(MySqlParser.LAST_VALUE, 0); }
		public TerminalNode LCASE() { return getToken(MySqlParser.LCASE, 0); }
		public TerminalNode LEAD() { return getToken(MySqlParser.LEAD, 0); }
		public TerminalNode LEAST() { return getToken(MySqlParser.LEAST, 0); }
		public TerminalNode LEFT() { return getToken(MySqlParser.LEFT, 0); }
		public TerminalNode LENGTH() { return getToken(MySqlParser.LENGTH, 0); }
		public TerminalNode LINEFROMTEXT() { return getToken(MySqlParser.LINEFROMTEXT, 0); }
		public TerminalNode LINEFROMWKB() { return getToken(MySqlParser.LINEFROMWKB, 0); }
		public TerminalNode LINESTRING() { return getToken(MySqlParser.LINESTRING, 0); }
		public TerminalNode LINESTRINGFROMTEXT() { return getToken(MySqlParser.LINESTRINGFROMTEXT, 0); }
		public TerminalNode LINESTRINGFROMWKB() { return getToken(MySqlParser.LINESTRINGFROMWKB, 0); }
		public TerminalNode LN() { return getToken(MySqlParser.LN, 0); }
		public TerminalNode LOAD_FILE() { return getToken(MySqlParser.LOAD_FILE, 0); }
		public TerminalNode LOCATE() { return getToken(MySqlParser.LOCATE, 0); }
		public TerminalNode LOG() { return getToken(MySqlParser.LOG, 0); }
		public TerminalNode LOG10() { return getToken(MySqlParser.LOG10, 0); }
		public TerminalNode LOG2() { return getToken(MySqlParser.LOG2, 0); }
		public TerminalNode LOWER() { return getToken(MySqlParser.LOWER, 0); }
		public TerminalNode LPAD() { return getToken(MySqlParser.LPAD, 0); }
		public TerminalNode LTRIM() { return getToken(MySqlParser.LTRIM, 0); }
		public TerminalNode MAKEDATE() { return getToken(MySqlParser.MAKEDATE, 0); }
		public TerminalNode MAKETIME() { return getToken(MySqlParser.MAKETIME, 0); }
		public TerminalNode MAKE_SET() { return getToken(MySqlParser.MAKE_SET, 0); }
		public TerminalNode MASTER_POS_WAIT() { return getToken(MySqlParser.MASTER_POS_WAIT, 0); }
		public TerminalNode MBRCONTAINS() { return getToken(MySqlParser.MBRCONTAINS, 0); }
		public TerminalNode MBRDISJOINT() { return getToken(MySqlParser.MBRDISJOINT, 0); }
		public TerminalNode MBREQUAL() { return getToken(MySqlParser.MBREQUAL, 0); }
		public TerminalNode MBRINTERSECTS() { return getToken(MySqlParser.MBRINTERSECTS, 0); }
		public TerminalNode MBROVERLAPS() { return getToken(MySqlParser.MBROVERLAPS, 0); }
		public TerminalNode MBRTOUCHES() { return getToken(MySqlParser.MBRTOUCHES, 0); }
		public TerminalNode MBRWITHIN() { return getToken(MySqlParser.MBRWITHIN, 0); }
		public TerminalNode MD5() { return getToken(MySqlParser.MD5, 0); }
		public TerminalNode MICROSECOND() { return getToken(MySqlParser.MICROSECOND, 0); }
		public TerminalNode MINUTE() { return getToken(MySqlParser.MINUTE, 0); }
		public TerminalNode MLINEFROMTEXT() { return getToken(MySqlParser.MLINEFROMTEXT, 0); }
		public TerminalNode MLINEFROMWKB() { return getToken(MySqlParser.MLINEFROMWKB, 0); }
		public TerminalNode MOD() { return getToken(MySqlParser.MOD, 0); }
		public TerminalNode MONTH() { return getToken(MySqlParser.MONTH, 0); }
		public TerminalNode MONTHNAME() { return getToken(MySqlParser.MONTHNAME, 0); }
		public TerminalNode MPOINTFROMTEXT() { return getToken(MySqlParser.MPOINTFROMTEXT, 0); }
		public TerminalNode MPOINTFROMWKB() { return getToken(MySqlParser.MPOINTFROMWKB, 0); }
		public TerminalNode MPOLYFROMTEXT() { return getToken(MySqlParser.MPOLYFROMTEXT, 0); }
		public TerminalNode MPOLYFROMWKB() { return getToken(MySqlParser.MPOLYFROMWKB, 0); }
		public TerminalNode MULTILINESTRING() { return getToken(MySqlParser.MULTILINESTRING, 0); }
		public TerminalNode MULTILINESTRINGFROMTEXT() { return getToken(MySqlParser.MULTILINESTRINGFROMTEXT, 0); }
		public TerminalNode MULTILINESTRINGFROMWKB() { return getToken(MySqlParser.MULTILINESTRINGFROMWKB, 0); }
		public TerminalNode MULTIPOINT() { return getToken(MySqlParser.MULTIPOINT, 0); }
		public TerminalNode MULTIPOINTFROMTEXT() { return getToken(MySqlParser.MULTIPOINTFROMTEXT, 0); }
		public TerminalNode MULTIPOINTFROMWKB() { return getToken(MySqlParser.MULTIPOINTFROMWKB, 0); }
		public TerminalNode MULTIPOLYGON() { return getToken(MySqlParser.MULTIPOLYGON, 0); }
		public TerminalNode MULTIPOLYGONFROMTEXT() { return getToken(MySqlParser.MULTIPOLYGONFROMTEXT, 0); }
		public TerminalNode MULTIPOLYGONFROMWKB() { return getToken(MySqlParser.MULTIPOLYGONFROMWKB, 0); }
		public TerminalNode NAME_CONST() { return getToken(MySqlParser.NAME_CONST, 0); }
		public TerminalNode NTH_VALUE() { return getToken(MySqlParser.NTH_VALUE, 0); }
		public TerminalNode NTILE() { return getToken(MySqlParser.NTILE, 0); }
		public TerminalNode NULLIF() { return getToken(MySqlParser.NULLIF, 0); }
		public TerminalNode NUMGEOMETRIES() { return getToken(MySqlParser.NUMGEOMETRIES, 0); }
		public TerminalNode NUMINTERIORRINGS() { return getToken(MySqlParser.NUMINTERIORRINGS, 0); }
		public TerminalNode NUMPOINTS() { return getToken(MySqlParser.NUMPOINTS, 0); }
		public TerminalNode OCT() { return getToken(MySqlParser.OCT, 0); }
		public TerminalNode OCTET_LENGTH() { return getToken(MySqlParser.OCTET_LENGTH, 0); }
		public TerminalNode ORD() { return getToken(MySqlParser.ORD, 0); }
		public TerminalNode OVERLAPS() { return getToken(MySqlParser.OVERLAPS, 0); }
		public TerminalNode PERCENT_RANK() { return getToken(MySqlParser.PERCENT_RANK, 0); }
		public TerminalNode PERIOD_ADD() { return getToken(MySqlParser.PERIOD_ADD, 0); }
		public TerminalNode PERIOD_DIFF() { return getToken(MySqlParser.PERIOD_DIFF, 0); }
		public TerminalNode PI() { return getToken(MySqlParser.PI, 0); }
		public TerminalNode POINT() { return getToken(MySqlParser.POINT, 0); }
		public TerminalNode POINTFROMTEXT() { return getToken(MySqlParser.POINTFROMTEXT, 0); }
		public TerminalNode POINTFROMWKB() { return getToken(MySqlParser.POINTFROMWKB, 0); }
		public TerminalNode POINTN() { return getToken(MySqlParser.POINTN, 0); }
		public TerminalNode POLYFROMTEXT() { return getToken(MySqlParser.POLYFROMTEXT, 0); }
		public TerminalNode POLYFROMWKB() { return getToken(MySqlParser.POLYFROMWKB, 0); }
		public TerminalNode POLYGON() { return getToken(MySqlParser.POLYGON, 0); }
		public TerminalNode POLYGONFROMTEXT() { return getToken(MySqlParser.POLYGONFROMTEXT, 0); }
		public TerminalNode POLYGONFROMWKB() { return getToken(MySqlParser.POLYGONFROMWKB, 0); }
		public TerminalNode POSITION() { return getToken(MySqlParser.POSITION, 0); }
		public TerminalNode POW() { return getToken(MySqlParser.POW, 0); }
		public TerminalNode POWER() { return getToken(MySqlParser.POWER, 0); }
		public TerminalNode QUARTER() { return getToken(MySqlParser.QUARTER, 0); }
		public TerminalNode QUOTE() { return getToken(MySqlParser.QUOTE, 0); }
		public TerminalNode RADIANS() { return getToken(MySqlParser.RADIANS, 0); }
		public TerminalNode RAND() { return getToken(MySqlParser.RAND, 0); }
		public TerminalNode RANDOM() { return getToken(MySqlParser.RANDOM, 0); }
		public TerminalNode RANK() { return getToken(MySqlParser.RANK, 0); }
		public TerminalNode RANDOM_BYTES() { return getToken(MySqlParser.RANDOM_BYTES, 0); }
		public TerminalNode RELEASE_LOCK() { return getToken(MySqlParser.RELEASE_LOCK, 0); }
		public TerminalNode REVERSE() { return getToken(MySqlParser.REVERSE, 0); }
		public TerminalNode RIGHT() { return getToken(MySqlParser.RIGHT, 0); }
		public TerminalNode ROUND() { return getToken(MySqlParser.ROUND, 0); }
		public TerminalNode ROW_COUNT() { return getToken(MySqlParser.ROW_COUNT, 0); }
		public TerminalNode ROW_NUMBER() { return getToken(MySqlParser.ROW_NUMBER, 0); }
		public TerminalNode RPAD() { return getToken(MySqlParser.RPAD, 0); }
		public TerminalNode RTRIM() { return getToken(MySqlParser.RTRIM, 0); }
		public TerminalNode SCHEMA() { return getToken(MySqlParser.SCHEMA, 0); }
		public TerminalNode SECOND() { return getToken(MySqlParser.SECOND, 0); }
		public TerminalNode SEC_TO_TIME() { return getToken(MySqlParser.SEC_TO_TIME, 0); }
		public TerminalNode SESSION_USER() { return getToken(MySqlParser.SESSION_USER, 0); }
		public TerminalNode SESSION_VARIABLES_ADMIN() { return getToken(MySqlParser.SESSION_VARIABLES_ADMIN, 0); }
		public TerminalNode SHA() { return getToken(MySqlParser.SHA, 0); }
		public TerminalNode SHA1() { return getToken(MySqlParser.SHA1, 0); }
		public TerminalNode SHA2() { return getToken(MySqlParser.SHA2, 0); }
		public TerminalNode SIGN() { return getToken(MySqlParser.SIGN, 0); }
		public TerminalNode SIN() { return getToken(MySqlParser.SIN, 0); }
		public TerminalNode SLEEP() { return getToken(MySqlParser.SLEEP, 0); }
		public TerminalNode SOUNDEX() { return getToken(MySqlParser.SOUNDEX, 0); }
		public TerminalNode SQL_THREAD_WAIT_AFTER_GTIDS() { return getToken(MySqlParser.SQL_THREAD_WAIT_AFTER_GTIDS, 0); }
		public TerminalNode SQRT() { return getToken(MySqlParser.SQRT, 0); }
		public TerminalNode SRID() { return getToken(MySqlParser.SRID, 0); }
		public TerminalNode STARTPOINT() { return getToken(MySqlParser.STARTPOINT, 0); }
		public TerminalNode STRCMP() { return getToken(MySqlParser.STRCMP, 0); }
		public TerminalNode STR_TO_DATE() { return getToken(MySqlParser.STR_TO_DATE, 0); }
		public TerminalNode ST_AREA() { return getToken(MySqlParser.ST_AREA, 0); }
		public TerminalNode ST_ASBINARY() { return getToken(MySqlParser.ST_ASBINARY, 0); }
		public TerminalNode ST_ASTEXT() { return getToken(MySqlParser.ST_ASTEXT, 0); }
		public TerminalNode ST_ASWKB() { return getToken(MySqlParser.ST_ASWKB, 0); }
		public TerminalNode ST_ASWKT() { return getToken(MySqlParser.ST_ASWKT, 0); }
		public TerminalNode ST_BUFFER() { return getToken(MySqlParser.ST_BUFFER, 0); }
		public TerminalNode ST_CENTROID() { return getToken(MySqlParser.ST_CENTROID, 0); }
		public TerminalNode ST_CONTAINS() { return getToken(MySqlParser.ST_CONTAINS, 0); }
		public TerminalNode ST_CROSSES() { return getToken(MySqlParser.ST_CROSSES, 0); }
		public TerminalNode ST_DIFFERENCE() { return getToken(MySqlParser.ST_DIFFERENCE, 0); }
		public TerminalNode ST_DIMENSION() { return getToken(MySqlParser.ST_DIMENSION, 0); }
		public TerminalNode ST_DISJOINT() { return getToken(MySqlParser.ST_DISJOINT, 0); }
		public TerminalNode ST_DISTANCE() { return getToken(MySqlParser.ST_DISTANCE, 0); }
		public TerminalNode ST_ENDPOINT() { return getToken(MySqlParser.ST_ENDPOINT, 0); }
		public TerminalNode ST_ENVELOPE() { return getToken(MySqlParser.ST_ENVELOPE, 0); }
		public TerminalNode ST_EQUALS() { return getToken(MySqlParser.ST_EQUALS, 0); }
		public TerminalNode ST_EXTERIORRING() { return getToken(MySqlParser.ST_EXTERIORRING, 0); }
		public TerminalNode ST_GEOMCOLLFROMTEXT() { return getToken(MySqlParser.ST_GEOMCOLLFROMTEXT, 0); }
		public TerminalNode ST_GEOMCOLLFROMTXT() { return getToken(MySqlParser.ST_GEOMCOLLFROMTXT, 0); }
		public TerminalNode ST_GEOMCOLLFROMWKB() { return getToken(MySqlParser.ST_GEOMCOLLFROMWKB, 0); }
		public TerminalNode ST_GEOMETRYCOLLECTIONFROMTEXT() { return getToken(MySqlParser.ST_GEOMETRYCOLLECTIONFROMTEXT, 0); }
		public TerminalNode ST_GEOMETRYCOLLECTIONFROMWKB() { return getToken(MySqlParser.ST_GEOMETRYCOLLECTIONFROMWKB, 0); }
		public TerminalNode ST_GEOMETRYFROMTEXT() { return getToken(MySqlParser.ST_GEOMETRYFROMTEXT, 0); }
		public TerminalNode ST_GEOMETRYFROMWKB() { return getToken(MySqlParser.ST_GEOMETRYFROMWKB, 0); }
		public TerminalNode ST_GEOMETRYN() { return getToken(MySqlParser.ST_GEOMETRYN, 0); }
		public TerminalNode ST_GEOMETRYTYPE() { return getToken(MySqlParser.ST_GEOMETRYTYPE, 0); }
		public TerminalNode ST_GEOMFROMTEXT() { return getToken(MySqlParser.ST_GEOMFROMTEXT, 0); }
		public TerminalNode ST_GEOMFROMWKB() { return getToken(MySqlParser.ST_GEOMFROMWKB, 0); }
		public TerminalNode ST_INTERIORRINGN() { return getToken(MySqlParser.ST_INTERIORRINGN, 0); }
		public TerminalNode ST_INTERSECTION() { return getToken(MySqlParser.ST_INTERSECTION, 0); }
		public TerminalNode ST_INTERSECTS() { return getToken(MySqlParser.ST_INTERSECTS, 0); }
		public TerminalNode ST_ISCLOSED() { return getToken(MySqlParser.ST_ISCLOSED, 0); }
		public TerminalNode ST_ISEMPTY() { return getToken(MySqlParser.ST_ISEMPTY, 0); }
		public TerminalNode ST_ISSIMPLE() { return getToken(MySqlParser.ST_ISSIMPLE, 0); }
		public TerminalNode ST_LINEFROMTEXT() { return getToken(MySqlParser.ST_LINEFROMTEXT, 0); }
		public TerminalNode ST_LINEFROMWKB() { return getToken(MySqlParser.ST_LINEFROMWKB, 0); }
		public TerminalNode ST_LINESTRINGFROMTEXT() { return getToken(MySqlParser.ST_LINESTRINGFROMTEXT, 0); }
		public TerminalNode ST_LINESTRINGFROMWKB() { return getToken(MySqlParser.ST_LINESTRINGFROMWKB, 0); }
		public TerminalNode ST_NUMGEOMETRIES() { return getToken(MySqlParser.ST_NUMGEOMETRIES, 0); }
		public TerminalNode ST_NUMINTERIORRING() { return getToken(MySqlParser.ST_NUMINTERIORRING, 0); }
		public TerminalNode ST_NUMINTERIORRINGS() { return getToken(MySqlParser.ST_NUMINTERIORRINGS, 0); }
		public TerminalNode ST_NUMPOINTS() { return getToken(MySqlParser.ST_NUMPOINTS, 0); }
		public TerminalNode ST_OVERLAPS() { return getToken(MySqlParser.ST_OVERLAPS, 0); }
		public TerminalNode ST_POINTFROMTEXT() { return getToken(MySqlParser.ST_POINTFROMTEXT, 0); }
		public TerminalNode ST_POINTFROMWKB() { return getToken(MySqlParser.ST_POINTFROMWKB, 0); }
		public TerminalNode ST_POINTN() { return getToken(MySqlParser.ST_POINTN, 0); }
		public TerminalNode ST_POLYFROMTEXT() { return getToken(MySqlParser.ST_POLYFROMTEXT, 0); }
		public TerminalNode ST_POLYFROMWKB() { return getToken(MySqlParser.ST_POLYFROMWKB, 0); }
		public TerminalNode ST_POLYGONFROMTEXT() { return getToken(MySqlParser.ST_POLYGONFROMTEXT, 0); }
		public TerminalNode ST_POLYGONFROMWKB() { return getToken(MySqlParser.ST_POLYGONFROMWKB, 0); }
		public TerminalNode ST_SRID() { return getToken(MySqlParser.ST_SRID, 0); }
		public TerminalNode ST_STARTPOINT() { return getToken(MySqlParser.ST_STARTPOINT, 0); }
		public TerminalNode ST_SYMDIFFERENCE() { return getToken(MySqlParser.ST_SYMDIFFERENCE, 0); }
		public TerminalNode ST_TOUCHES() { return getToken(MySqlParser.ST_TOUCHES, 0); }
		public TerminalNode ST_UNION() { return getToken(MySqlParser.ST_UNION, 0); }
		public TerminalNode ST_WITHIN() { return getToken(MySqlParser.ST_WITHIN, 0); }
		public TerminalNode ST_X() { return getToken(MySqlParser.ST_X, 0); }
		public TerminalNode ST_Y() { return getToken(MySqlParser.ST_Y, 0); }
		public TerminalNode SUBDATE() { return getToken(MySqlParser.SUBDATE, 0); }
		public TerminalNode SUBSTRING_INDEX() { return getToken(MySqlParser.SUBSTRING_INDEX, 0); }
		public TerminalNode SUBTIME() { return getToken(MySqlParser.SUBTIME, 0); }
		public TerminalNode SYSTEM_USER() { return getToken(MySqlParser.SYSTEM_USER, 0); }
		public TerminalNode TAN() { return getToken(MySqlParser.TAN, 0); }
		public TerminalNode TIME() { return getToken(MySqlParser.TIME, 0); }
		public TerminalNode TIMEDIFF() { return getToken(MySqlParser.TIMEDIFF, 0); }
		public TerminalNode TIMESTAMP() { return getToken(MySqlParser.TIMESTAMP, 0); }
		public TerminalNode TIMESTAMPADD() { return getToken(MySqlParser.TIMESTAMPADD, 0); }
		public TerminalNode TIMESTAMPDIFF() { return getToken(MySqlParser.TIMESTAMPDIFF, 0); }
		public TerminalNode TIME_FORMAT() { return getToken(MySqlParser.TIME_FORMAT, 0); }
		public TerminalNode TIME_TO_SEC() { return getToken(MySqlParser.TIME_TO_SEC, 0); }
		public TerminalNode TOUCHES() { return getToken(MySqlParser.TOUCHES, 0); }
		public TerminalNode TO_BASE64() { return getToken(MySqlParser.TO_BASE64, 0); }
		public TerminalNode TO_DAYS() { return getToken(MySqlParser.TO_DAYS, 0); }
		public TerminalNode TO_SECONDS() { return getToken(MySqlParser.TO_SECONDS, 0); }
		public TerminalNode UCASE() { return getToken(MySqlParser.UCASE, 0); }
		public TerminalNode UNCOMPRESS() { return getToken(MySqlParser.UNCOMPRESS, 0); }
		public TerminalNode UNCOMPRESSED_LENGTH() { return getToken(MySqlParser.UNCOMPRESSED_LENGTH, 0); }
		public TerminalNode UNHEX() { return getToken(MySqlParser.UNHEX, 0); }
		public TerminalNode UNIX_TIMESTAMP() { return getToken(MySqlParser.UNIX_TIMESTAMP, 0); }
		public TerminalNode UPDATEXML() { return getToken(MySqlParser.UPDATEXML, 0); }
		public TerminalNode UPPER() { return getToken(MySqlParser.UPPER, 0); }
		public TerminalNode UUID() { return getToken(MySqlParser.UUID, 0); }
		public TerminalNode UUID_SHORT() { return getToken(MySqlParser.UUID_SHORT, 0); }
		public TerminalNode VALIDATE_PASSWORD_STRENGTH() { return getToken(MySqlParser.VALIDATE_PASSWORD_STRENGTH, 0); }
		public TerminalNode VERSION() { return getToken(MySqlParser.VERSION, 0); }
		public TerminalNode VISIBLE() { return getToken(MySqlParser.VISIBLE, 0); }
		public TerminalNode WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS() { return getToken(MySqlParser.WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS, 0); }
		public TerminalNode WEEK() { return getToken(MySqlParser.WEEK, 0); }
		public TerminalNode WEEKDAY() { return getToken(MySqlParser.WEEKDAY, 0); }
		public TerminalNode WEEKOFYEAR() { return getToken(MySqlParser.WEEKOFYEAR, 0); }
		public TerminalNode WEIGHT_STRING() { return getToken(MySqlParser.WEIGHT_STRING, 0); }
		public TerminalNode WITHIN() { return getToken(MySqlParser.WITHIN, 0); }
		public TerminalNode YEAR() { return getToken(MySqlParser.YEAR, 0); }
		public TerminalNode YEARWEEK() { return getToken(MySqlParser.YEARWEEK, 0); }
		public TerminalNode Y_FUNCTION() { return getToken(MySqlParser.Y_FUNCTION, 0); }
		public TerminalNode X_FUNCTION() { return getToken(MySqlParser.X_FUNCTION, 0); }
		public TerminalNode JSON_ARRAY() { return getToken(MySqlParser.JSON_ARRAY, 0); }
		public TerminalNode JSON_OBJECT() { return getToken(MySqlParser.JSON_OBJECT, 0); }
		public TerminalNode JSON_QUOTE() { return getToken(MySqlParser.JSON_QUOTE, 0); }
		public TerminalNode JSON_CONTAINS() { return getToken(MySqlParser.JSON_CONTAINS, 0); }
		public TerminalNode JSON_CONTAINS_PATH() { return getToken(MySqlParser.JSON_CONTAINS_PATH, 0); }
		public TerminalNode JSON_EXTRACT() { return getToken(MySqlParser.JSON_EXTRACT, 0); }
		public TerminalNode JSON_KEYS() { return getToken(MySqlParser.JSON_KEYS, 0); }
		public TerminalNode JSON_OVERLAPS() { return getToken(MySqlParser.JSON_OVERLAPS, 0); }
		public TerminalNode JSON_SEARCH() { return getToken(MySqlParser.JSON_SEARCH, 0); }
		public TerminalNode JSON_VALUE() { return getToken(MySqlParser.JSON_VALUE, 0); }
		public TerminalNode JSON_ARRAY_APPEND() { return getToken(MySqlParser.JSON_ARRAY_APPEND, 0); }
		public TerminalNode JSON_ARRAY_INSERT() { return getToken(MySqlParser.JSON_ARRAY_INSERT, 0); }
		public TerminalNode JSON_INSERT() { return getToken(MySqlParser.JSON_INSERT, 0); }
		public TerminalNode JSON_MERGE() { return getToken(MySqlParser.JSON_MERGE, 0); }
		public TerminalNode JSON_MERGE_PATCH() { return getToken(MySqlParser.JSON_MERGE_PATCH, 0); }
		public TerminalNode JSON_MERGE_PRESERVE() { return getToken(MySqlParser.JSON_MERGE_PRESERVE, 0); }
		public TerminalNode JSON_REMOVE() { return getToken(MySqlParser.JSON_REMOVE, 0); }
		public TerminalNode JSON_REPLACE() { return getToken(MySqlParser.JSON_REPLACE, 0); }
		public TerminalNode JSON_SET() { return getToken(MySqlParser.JSON_SET, 0); }
		public TerminalNode JSON_UNQUOTE() { return getToken(MySqlParser.JSON_UNQUOTE, 0); }
		public TerminalNode JSON_DEPTH() { return getToken(MySqlParser.JSON_DEPTH, 0); }
		public TerminalNode JSON_LENGTH() { return getToken(MySqlParser.JSON_LENGTH, 0); }
		public TerminalNode JSON_TYPE() { return getToken(MySqlParser.JSON_TYPE, 0); }
		public TerminalNode JSON_VALID() { return getToken(MySqlParser.JSON_VALID, 0); }
		public TerminalNode JSON_TABLE() { return getToken(MySqlParser.JSON_TABLE, 0); }
		public TerminalNode JSON_SCHEMA_VALID() { return getToken(MySqlParser.JSON_SCHEMA_VALID, 0); }
		public TerminalNode JSON_SCHEMA_VALIDATION_REPORT() { return getToken(MySqlParser.JSON_SCHEMA_VALIDATION_REPORT, 0); }
		public TerminalNode JSON_PRETTY() { return getToken(MySqlParser.JSON_PRETTY, 0); }
		public TerminalNode JSON_STORAGE_FREE() { return getToken(MySqlParser.JSON_STORAGE_FREE, 0); }
		public TerminalNode JSON_STORAGE_SIZE() { return getToken(MySqlParser.JSON_STORAGE_SIZE, 0); }
		public TerminalNode JSON_ARRAYAGG() { return getToken(MySqlParser.JSON_ARRAYAGG, 0); }
		public TerminalNode JSON_OBJECTAGG() { return getToken(MySqlParser.JSON_OBJECTAGG, 0); }
		public TerminalNode LASTVAL() { return getToken(MySqlParser.LASTVAL, 0); }
		public TerminalNode NEXTVAL() { return getToken(MySqlParser.NEXTVAL, 0); }
		public TerminalNode SETVAL() { return getToken(MySqlParser.SETVAL, 0); }
		public FunctionNameBaseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_functionNameBase; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).enterFunctionNameBase(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof MySqlParserListener ) ((MySqlParserListener)listener).exitFunctionNameBase(this);
		}
	}

	public final FunctionNameBaseContext functionNameBase() throws RecognitionException {
		FunctionNameBaseContext _localctx = new FunctionNameBaseContext(_ctx, getState());
		enterRule(_localctx, 740, RULE_functionNameBase);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7805);
			_la = _input.LA(1);
			if ( !(_la==DATABASE || ((((_la - 99)) & ~0x3f) == 0 && ((1L << (_la - 99)) & ((1L << (LEFT - 99)) | (1L << (RIGHT - 99)) | (1L << (SCHEMA - 99)))) != 0) || ((((_la - 220)) & ~0x3f) == 0 && ((1L << (_la - 220)) & ((1L << (DATE - 220)) | (1L << (TIME - 220)) | (1L << (TIMESTAMP - 220)) | (1L << (YEAR - 220)) | (1L << (JSON_ARRAY - 220)) | (1L << (JSON_ARRAYAGG - 220)) | (1L << (JSON_ARRAY_APPEND - 220)) | (1L << (JSON_ARRAY_INSERT - 220)) | (1L << (JSON_CONTAINS - 220)) | (1L << (JSON_CONTAINS_PATH - 220)) | (1L << (JSON_DEPTH - 220)) | (1L << (JSON_EXTRACT - 220)) | (1L << (JSON_INSERT - 220)) | (1L << (JSON_KEYS - 220)) | (1L << (JSON_LENGTH - 220)) | (1L << (JSON_MERGE - 220)) | (1L << (JSON_MERGE_PATCH - 220)) | (1L << (JSON_MERGE_PRESERVE - 220)) | (1L << (JSON_OBJECT - 220)) | (1L << (JSON_OBJECTAGG - 220)) | (1L << (JSON_OVERLAPS - 220)) | (1L << (JSON_PRETTY - 220)) | (1L << (JSON_QUOTE - 220)) | (1L << (JSON_REMOVE - 220)) | (1L << (JSON_REPLACE - 220)) | (1L << (JSON_SCHEMA_VALID - 220)) | (1L << (JSON_SCHEMA_VALIDATION_REPORT - 220)) | (1L << (JSON_SEARCH - 220)) | (1L << (JSON_SET - 220)) | (1L << (JSON_STORAGE_FREE - 220)) | (1L << (JSON_STORAGE_SIZE - 220)) | (1L << (JSON_TABLE - 220)) | (1L << (JSON_TYPE - 220)) | (1L << (JSON_UNQUOTE - 220)))) != 0) || ((((_la - 284)) & ~0x3f) == 0 && ((1L << (_la - 284)) & ((1L << (JSON_VALID - 284)) | (1L << (JSON_VALUE - 284)) | (1L << (COUNT - 284)) | (1L << (CUME_DIST - 284)) | (1L << (DENSE_RANK - 284)) | (1L << (FIRST_VALUE - 284)) | (1L << (LAG - 284)) | (1L << (LAST_VALUE - 284)) | (1L << (LEAD - 284)) | (1L << (NTILE - 284)) | (1L << (NTH_VALUE - 284)) | (1L << (PERCENT_RANK - 284)) | (1L << (RANK - 284)) | (1L << (ROW_NUMBER - 284)) | (1L << (POSITION - 284)))) != 0) || _la==INVISIBLE || ((((_la - 676)) & ~0x3f) == 0 && ((1L << (_la - 676)) & ((1L << (VISIBLE - 676)) | (1L << (QUARTER - 676)) | (1L << (MONTH - 676)) | (1L << (DAY - 676)) | (1L << (HOUR - 676)) | (1L << (MINUTE - 676)) | (1L << (WEEK - 676)) | (1L << (SECOND - 676)) | (1L << (MICROSECOND - 676)))) != 0) || _la==SESSION_VARIABLES_ADMIN || ((((_la - 811)) & ~0x3f) == 0 && ((1L << (_la - 811)) & ((1L << (GEOMETRYCOLLECTION - 811)) | (1L << (LINESTRING - 811)) | (1L << (MULTILINESTRING - 811)) | (1L << (MULTIPOINT - 811)) | (1L << (MULTIPOLYGON - 811)) | (1L << (POINT - 811)) | (1L << (POLYGON - 811)) | (1L << (ABS - 811)) | (1L << (ACOS - 811)) | (1L << (ADDDATE - 811)) | (1L << (ADDTIME - 811)) | (1L << (AES_DECRYPT - 811)) | (1L << (AES_ENCRYPT - 811)) | (1L << (AREA - 811)) | (1L << (ASBINARY - 811)) | (1L << (ASIN - 811)) | (1L << (ASTEXT - 811)) | (1L << (ASWKB - 811)) | (1L << (ASWKT - 811)) | (1L << (ASYMMETRIC_DECRYPT - 811)) | (1L << (ASYMMETRIC_DERIVE - 811)) | (1L << (ASYMMETRIC_ENCRYPT - 811)) | (1L << (ASYMMETRIC_SIGN - 811)) | (1L << (ASYMMETRIC_VERIFY - 811)) | (1L << (ATAN - 811)) | (1L << (ATAN2 - 811)) | (1L << (BENCHMARK - 811)) | (1L << (BIN - 811)) | (1L << (BIT_COUNT - 811)) | (1L << (BIT_LENGTH - 811)) | (1L << (BUFFER - 811)) | (1L << (CEIL - 811)) | (1L << (CEILING - 811)) | (1L << (CENTROID - 811)) | (1L << (CHARACTER_LENGTH - 811)) | (1L << (CHARSET - 811)) | (1L << (CHAR_LENGTH - 811)) | (1L << (COERCIBILITY - 811)) | (1L << (COLLATION - 811)) | (1L << (COMPRESS - 811)) | (1L << (CONCAT - 811)) | (1L << (CONCAT_WS - 811)) | (1L << (CONNECTION_ID - 811)) | (1L << (CONV - 811)) | (1L << (CONVERT_TZ - 811)) | (1L << (COS - 811)) | (1L << (COT - 811)) | (1L << (CRC32 - 811)) | (1L << (CREATE_ASYMMETRIC_PRIV_KEY - 811)) | (1L << (CREATE_ASYMMETRIC_PUB_KEY - 811)) | (1L << (CREATE_DH_PARAMETERS - 811)) | (1L << (CREATE_DIGEST - 811)) | (1L << (CROSSES - 811)) | (1L << (DATEDIFF - 811)) | (1L << (DATE_FORMAT - 811)) | (1L << (DAYNAME - 811)) | (1L << (DAYOFMONTH - 811)) | (1L << (DAYOFWEEK - 811)) | (1L << (DAYOFYEAR - 811)) | (1L << (DECODE - 811)) | (1L << (DEGREES - 811)))) != 0) || ((((_la - 875)) & ~0x3f) == 0 && ((1L << (_la - 875)) & ((1L << (DES_DECRYPT - 875)) | (1L << (DES_ENCRYPT - 875)) | (1L << (DIMENSION - 875)) | (1L << (DISJOINT - 875)) | (1L << (ELT - 875)) | (1L << (ENCODE - 875)) | (1L << (ENCRYPT - 875)) | (1L << (ENDPOINT - 875)) | (1L << (ENVELOPE - 875)) | (1L << (EQUALS - 875)) | (1L << (EXP - 875)) | (1L << (EXPORT_SET - 875)) | (1L << (EXTERIORRING - 875)) | (1L << (EXTRACTVALUE - 875)) | (1L << (FIELD - 875)) | (1L << (FIND_IN_SET - 875)) | (1L << (FLOOR - 875)) | (1L << (FORMAT - 875)) | (1L << (FOUND_ROWS - 875)) | (1L << (FROM_BASE64 - 875)) | (1L << (FROM_DAYS - 875)) | (1L << (FROM_UNIXTIME - 875)) | (1L << (GEOMCOLLFROMTEXT - 875)) | (1L << (GEOMCOLLFROMWKB - 875)) | (1L << (GEOMETRYCOLLECTIONFROMTEXT - 875)) | (1L << (GEOMETRYCOLLECTIONFROMWKB - 875)) | (1L << (GEOMETRYFROMTEXT - 875)) | (1L << (GEOMETRYFROMWKB - 875)) | (1L << (GEOMETRYN - 875)) | (1L << (GEOMETRYTYPE - 875)) | (1L << (GEOMFROMTEXT - 875)) | (1L << (GEOMFROMWKB - 875)) | (1L << (GET_FORMAT - 875)) | (1L << (GET_LOCK - 875)) | (1L << (GLENGTH - 875)) | (1L << (GREATEST - 875)) | (1L << (GTID_SUBSET - 875)) | (1L << (GTID_SUBTRACT - 875)) | (1L << (HEX - 875)) | (1L << (IFNULL - 875)) | (1L << (INET6_ATON - 875)) | (1L << (INET6_NTOA - 875)) | (1L << (INET_ATON - 875)) | (1L << (INET_NTOA - 875)) | (1L << (INSTR - 875)) | (1L << (INTERIORRINGN - 875)) | (1L << (INTERSECTS - 875)) | (1L << (ISCLOSED - 875)) | (1L << (ISEMPTY - 875)) | (1L << (ISNULL - 875)) | (1L << (ISSIMPLE - 875)) | (1L << (IS_FREE_LOCK - 875)) | (1L << (IS_IPV4 - 875)) | (1L << (IS_IPV4_COMPAT - 875)) | (1L << (IS_IPV4_MAPPED - 875)) | (1L << (IS_IPV6 - 875)) | (1L << (IS_USED_LOCK - 875)) | (1L << (LAST_INSERT_ID - 875)) | (1L << (LCASE - 875)) | (1L << (LEAST - 875)) | (1L << (LENGTH - 875)) | (1L << (LINEFROMTEXT - 875)) | (1L << (LINEFROMWKB - 875)))) != 0) || ((((_la - 939)) & ~0x3f) == 0 && ((1L << (_la - 939)) & ((1L << (LINESTRINGFROMTEXT - 939)) | (1L << (LINESTRINGFROMWKB - 939)) | (1L << (LN - 939)) | (1L << (LOAD_FILE - 939)) | (1L << (LOCATE - 939)) | (1L << (LOG - 939)) | (1L << (LOG10 - 939)) | (1L << (LOG2 - 939)) | (1L << (LOWER - 939)) | (1L << (LPAD - 939)) | (1L << (LTRIM - 939)) | (1L << (MAKEDATE - 939)) | (1L << (MAKETIME - 939)) | (1L << (MAKE_SET - 939)) | (1L << (MASTER_POS_WAIT - 939)) | (1L << (MBRCONTAINS - 939)) | (1L << (MBRDISJOINT - 939)) | (1L << (MBREQUAL - 939)) | (1L << (MBRINTERSECTS - 939)) | (1L << (MBROVERLAPS - 939)) | (1L << (MBRTOUCHES - 939)) | (1L << (MBRWITHIN - 939)) | (1L << (MD5 - 939)) | (1L << (MLINEFROMTEXT - 939)) | (1L << (MLINEFROMWKB - 939)) | (1L << (MONTHNAME - 939)) | (1L << (MPOINTFROMTEXT - 939)) | (1L << (MPOINTFROMWKB - 939)) | (1L << (MPOLYFROMTEXT - 939)) | (1L << (MPOLYFROMWKB - 939)) | (1L << (MULTILINESTRINGFROMTEXT - 939)) | (1L << (MULTILINESTRINGFROMWKB - 939)) | (1L << (MULTIPOINTFROMTEXT - 939)) | (1L << (MULTIPOINTFROMWKB - 939)) | (1L << (MULTIPOLYGONFROMTEXT - 939)) | (1L << (MULTIPOLYGONFROMWKB - 939)) | (1L << (NAME_CONST - 939)) | (1L << (NULLIF - 939)) | (1L << (NUMGEOMETRIES - 939)) | (1L << (NUMINTERIORRINGS - 939)) | (1L << (NUMPOINTS - 939)) | (1L << (OCT - 939)) | (1L << (OCTET_LENGTH - 939)) | (1L << (ORD - 939)) | (1L << (OVERLAPS - 939)) | (1L << (PERIOD_ADD - 939)) | (1L << (PERIOD_DIFF - 939)) | (1L << (PI - 939)) | (1L << (POINTFROMTEXT - 939)) | (1L << (POINTFROMWKB - 939)) | (1L << (POINTN - 939)) | (1L << (POLYFROMTEXT - 939)) | (1L << (POLYFROMWKB - 939)) | (1L << (POLYGONFROMTEXT - 939)) | (1L << (POLYGONFROMWKB - 939)) | (1L << (POW - 939)) | (1L << (POWER - 939)) | (1L << (QUOTE - 939)) | (1L << (RADIANS - 939)) | (1L << (RAND - 939)) | (1L << (RANDOM - 939)) | (1L << (RANDOM_BYTES - 939)) | (1L << (RELEASE_LOCK - 939)) | (1L << (REVERSE - 939)))) != 0) || ((((_la - 1003)) & ~0x3f) == 0 && ((1L << (_la - 1003)) & ((1L << (ROUND - 1003)) | (1L << (ROW_COUNT - 1003)) | (1L << (RPAD - 1003)) | (1L << (RTRIM - 1003)) | (1L << (SEC_TO_TIME - 1003)) | (1L << (SESSION_USER - 1003)) | (1L << (SHA - 1003)) | (1L << (SHA1 - 1003)) | (1L << (SHA2 - 1003)) | (1L << (SIGN - 1003)) | (1L << (SIN - 1003)) | (1L << (SLEEP - 1003)) | (1L << (SOUNDEX - 1003)) | (1L << (SQL_THREAD_WAIT_AFTER_GTIDS - 1003)) | (1L << (SQRT - 1003)) | (1L << (SRID - 1003)) | (1L << (STARTPOINT - 1003)) | (1L << (STRCMP - 1003)) | (1L << (STR_TO_DATE - 1003)) | (1L << (ST_AREA - 1003)) | (1L << (ST_ASBINARY - 1003)) | (1L << (ST_ASTEXT - 1003)) | (1L << (ST_ASWKB - 1003)) | (1L << (ST_ASWKT - 1003)) | (1L << (ST_BUFFER - 1003)) | (1L << (ST_CENTROID - 1003)) | (1L << (ST_CONTAINS - 1003)) | (1L << (ST_CROSSES - 1003)) | (1L << (ST_DIFFERENCE - 1003)) | (1L << (ST_DIMENSION - 1003)) | (1L << (ST_DISJOINT - 1003)) | (1L << (ST_DISTANCE - 1003)) | (1L << (ST_ENDPOINT - 1003)) | (1L << (ST_ENVELOPE - 1003)) | (1L << (ST_EQUALS - 1003)) | (1L << (ST_EXTERIORRING - 1003)) | (1L << (ST_GEOMCOLLFROMTEXT - 1003)) | (1L << (ST_GEOMCOLLFROMTXT - 1003)) | (1L << (ST_GEOMCOLLFROMWKB - 1003)) | (1L << (ST_GEOMETRYCOLLECTIONFROMTEXT - 1003)) | (1L << (ST_GEOMETRYCOLLECTIONFROMWKB - 1003)) | (1L << (ST_GEOMETRYFROMTEXT - 1003)) | (1L << (ST_GEOMETRYFROMWKB - 1003)) | (1L << (ST_GEOMETRYN - 1003)) | (1L << (ST_GEOMETRYTYPE - 1003)) | (1L << (ST_GEOMFROMTEXT - 1003)) | (1L << (ST_GEOMFROMWKB - 1003)) | (1L << (ST_INTERIORRINGN - 1003)) | (1L << (ST_INTERSECTION - 1003)) | (1L << (ST_INTERSECTS - 1003)) | (1L << (ST_ISCLOSED - 1003)) | (1L << (ST_ISEMPTY - 1003)) | (1L << (ST_ISSIMPLE - 1003)) | (1L << (ST_LINEFROMTEXT - 1003)) | (1L << (ST_LINEFROMWKB - 1003)) | (1L << (ST_LINESTRINGFROMTEXT - 1003)) | (1L << (ST_LINESTRINGFROMWKB - 1003)) | (1L << (ST_NUMGEOMETRIES - 1003)) | (1L << (ST_NUMINTERIORRING - 1003)) | (1L << (ST_NUMINTERIORRINGS - 1003)) | (1L << (ST_NUMPOINTS - 1003)))) != 0) || ((((_la - 1067)) & ~0x3f) == 0 && ((1L << (_la - 1067)) & ((1L << (ST_OVERLAPS - 1067)) | (1L << (ST_POINTFROMTEXT - 1067)) | (1L << (ST_POINTFROMWKB - 1067)) | (1L << (ST_POINTN - 1067)) | (1L << (ST_POLYFROMTEXT - 1067)) | (1L << (ST_POLYFROMWKB - 1067)) | (1L << (ST_POLYGONFROMTEXT - 1067)) | (1L << (ST_POLYGONFROMWKB - 1067)) | (1L << (ST_SRID - 1067)) | (1L << (ST_STARTPOINT - 1067)) | (1L << (ST_SYMDIFFERENCE - 1067)) | (1L << (ST_TOUCHES - 1067)) | (1L << (ST_UNION - 1067)) | (1L << (ST_WITHIN - 1067)) | (1L << (ST_X - 1067)) | (1L << (ST_Y - 1067)) | (1L << (SUBDATE - 1067)) | (1L << (SUBSTRING_INDEX - 1067)) | (1L << (SUBTIME - 1067)) | (1L << (SYSTEM_USER - 1067)) | (1L << (TAN - 1067)) | (1L << (TIMEDIFF - 1067)) | (1L << (TIMESTAMPADD - 1067)) | (1L << (TIMESTAMPDIFF - 1067)) | (1L << (TIME_FORMAT - 1067)) | (1L << (TIME_TO_SEC - 1067)) | (1L << (TOUCHES - 1067)) | (1L << (TO_BASE64 - 1067)) | (1L << (TO_DAYS - 1067)) | (1L << (TO_SECONDS - 1067)) | (1L << (UCASE - 1067)) | (1L << (UNCOMPRESS - 1067)) | (1L << (UNCOMPRESSED_LENGTH - 1067)) | (1L << (UNHEX - 1067)) | (1L << (UNIX_TIMESTAMP - 1067)) | (1L << (UPDATEXML - 1067)) | (1L << (UPPER - 1067)) | (1L << (UUID - 1067)) | (1L << (UUID_SHORT - 1067)) | (1L << (VALIDATE_PASSWORD_STRENGTH - 1067)) | (1L << (VERSION - 1067)) | (1L << (WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS - 1067)) | (1L << (WEEKDAY - 1067)) | (1L << (WEEKOFYEAR - 1067)) | (1L << (WEIGHT_STRING - 1067)) | (1L << (WITHIN - 1067)) | (1L << (YEARWEEK - 1067)) | (1L << (Y_FUNCTION - 1067)) | (1L << (X_FUNCTION - 1067)) | (1L << (LASTVAL - 1067)) | (1L << (NEXTVAL - 1067)) | (1L << (SETVAL - 1067)))) != 0) || _la==MOD) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) {
		switch (ruleIndex) {
		case 354:
			return expression_sempred((ExpressionContext)_localctx, predIndex);
		case 355:
			return predicate_sempred((PredicateContext)_localctx, predIndex);
		case 356:
			return expressionAtom_sempred((ExpressionAtomContext)_localctx, predIndex);
		}
		return true;
	}
	private boolean expression_sempred(ExpressionContext _localctx, int predIndex) {
		switch (predIndex) {
		case 0:
			return precpred(_ctx, 3);
		}
		return true;
	}
	private boolean predicate_sempred(PredicateContext _localctx, int predIndex) {
		switch (predIndex) {
		case 1:
			return precpred(_ctx, 8);
		case 2:
			return precpred(_ctx, 6);
		case 3:
			return precpred(_ctx, 5);
		case 4:
			return precpred(_ctx, 3);
		case 5:
			return precpred(_ctx, 10);
		case 6:
			return precpred(_ctx, 9);
		case 7:
			return precpred(_ctx, 7);
		case 8:
			return precpred(_ctx, 4);
		case 9:
			return precpred(_ctx, 2);
		}
		return true;
	}
	private boolean expressionAtom_sempred(ExpressionAtomContext _localctx, int predIndex) {
		switch (predIndex) {
		case 10:
			return precpred(_ctx, 4);
		case 11:
			return precpred(_ctx, 3);
		case 12:
			return precpred(_ctx, 2);
		case 13:
			return precpred(_ctx, 1);
		case 14:
			return precpred(_ctx, 14);
		}
		return true;
	}

	private static final String _serializedATNSegment0 =
		"\u0004\u0001\u04a4\u1e80\u0002\u0000\u0007\u0000\u0002\u0001\u0007\u0001"+
		"\u0002\u0002\u0007\u0002\u0002\u0003\u0007\u0003\u0002\u0004\u0007\u0004"+
		"\u0002\u0005\u0007\u0005\u0002\u0006\u0007\u0006\u0002\u0007\u0007\u0007"+
		"\u0002\b\u0007\b\u0002\t\u0007\t\u0002\n\u0007\n\u0002\u000b\u0007\u000b"+
		"\u0002\f\u0007\f\u0002\r\u0007\r\u0002\u000e\u0007\u000e\u0002\u000f\u0007"+
		"\u000f\u0002\u0010\u0007\u0010\u0002\u0011\u0007\u0011\u0002\u0012\u0007"+
		"\u0012\u0002\u0013\u0007\u0013\u0002\u0014\u0007\u0014\u0002\u0015\u0007"+
		"\u0015\u0002\u0016\u0007\u0016\u0002\u0017\u0007\u0017\u0002\u0018\u0007"+
		"\u0018\u0002\u0019\u0007\u0019\u0002\u001a\u0007\u001a\u0002\u001b\u0007"+
		"\u001b\u0002\u001c\u0007\u001c\u0002\u001d\u0007\u001d\u0002\u001e\u0007"+
		"\u001e\u0002\u001f\u0007\u001f\u0002 \u0007 \u0002!\u0007!\u0002\"\u0007"+
		"\"\u0002#\u0007#\u0002$\u0007$\u0002%\u0007%\u0002&\u0007&\u0002\'\u0007"+
		"\'\u0002(\u0007(\u0002)\u0007)\u0002*\u0007*\u0002+\u0007+\u0002,\u0007"+
		",\u0002-\u0007-\u0002.\u0007.\u0002/\u0007/\u00020\u00070\u00021\u0007"+
		"1\u00022\u00072\u00023\u00073\u00024\u00074\u00025\u00075\u00026\u0007"+
		"6\u00027\u00077\u00028\u00078\u00029\u00079\u0002:\u0007:\u0002;\u0007"+
		";\u0002<\u0007<\u0002=\u0007=\u0002>\u0007>\u0002?\u0007?\u0002@\u0007"+
		"@\u0002A\u0007A\u0002B\u0007B\u0002C\u0007C\u0002D\u0007D\u0002E\u0007"+
		"E\u0002F\u0007F\u0002G\u0007G\u0002H\u0007H\u0002I\u0007I\u0002J\u0007"+
		"J\u0002K\u0007K\u0002L\u0007L\u0002M\u0007M\u0002N\u0007N\u0002O\u0007"+
		"O\u0002P\u0007P\u0002Q\u0007Q\u0002R\u0007R\u0002S\u0007S\u0002T\u0007"+
		"T\u0002U\u0007U\u0002V\u0007V\u0002W\u0007W\u0002X\u0007X\u0002Y\u0007"+
		"Y\u0002Z\u0007Z\u0002[\u0007[\u0002\\\u0007\\\u0002]\u0007]\u0002^\u0007"+
		"^\u0002_\u0007_\u0002`\u0007`\u0002a\u0007a\u0002b\u0007b\u0002c\u0007"+
		"c\u0002d\u0007d\u0002e\u0007e\u0002f\u0007f\u0002g\u0007g\u0002h\u0007"+
		"h\u0002i\u0007i\u0002j\u0007j\u0002k\u0007k\u0002l\u0007l\u0002m\u0007"+
		"m\u0002n\u0007n\u0002o\u0007o\u0002p\u0007p\u0002q\u0007q\u0002r\u0007"+
		"r\u0002s\u0007s\u0002t\u0007t\u0002u\u0007u\u0002v\u0007v\u0002w\u0007"+
		"w\u0002x\u0007x\u0002y\u0007y\u0002z\u0007z\u0002{\u0007{\u0002|\u0007"+
		"|\u0002}\u0007}\u0002~\u0007~\u0002\u007f\u0007\u007f\u0002\u0080\u0007"+
		"\u0080\u0002\u0081\u0007\u0081\u0002\u0082\u0007\u0082\u0002\u0083\u0007"+
		"\u0083\u0002\u0084\u0007\u0084\u0002\u0085\u0007\u0085\u0002\u0086\u0007"+
		"\u0086\u0002\u0087\u0007\u0087\u0002\u0088\u0007\u0088\u0002\u0089\u0007"+
		"\u0089\u0002\u008a\u0007\u008a\u0002\u008b\u0007\u008b\u0002\u008c\u0007"+
		"\u008c\u0002\u008d\u0007\u008d\u0002\u008e\u0007\u008e\u0002\u008f\u0007"+
		"\u008f\u0002\u0090\u0007\u0090\u0002\u0091\u0007\u0091\u0002\u0092\u0007"+
		"\u0092\u0002\u0093\u0007\u0093\u0002\u0094\u0007\u0094\u0002\u0095\u0007"+
		"\u0095\u0002\u0096\u0007\u0096\u0002\u0097\u0007\u0097\u0002\u0098\u0007"+
		"\u0098\u0002\u0099\u0007\u0099\u0002\u009a\u0007\u009a\u0002\u009b\u0007"+
		"\u009b\u0002\u009c\u0007\u009c\u0002\u009d\u0007\u009d\u0002\u009e\u0007"+
		"\u009e\u0002\u009f\u0007\u009f\u0002\u00a0\u0007\u00a0\u0002\u00a1\u0007"+
		"\u00a1\u0002\u00a2\u0007\u00a2\u0002\u00a3\u0007\u00a3\u0002\u00a4\u0007"+
		"\u00a4\u0002\u00a5\u0007\u00a5\u0002\u00a6\u0007\u00a6\u0002\u00a7\u0007"+
		"\u00a7\u0002\u00a8\u0007\u00a8\u0002\u00a9\u0007\u00a9\u0002\u00aa\u0007"+
		"\u00aa\u0002\u00ab\u0007\u00ab\u0002\u00ac\u0007\u00ac\u0002\u00ad\u0007"+
		"\u00ad\u0002\u00ae\u0007\u00ae\u0002\u00af\u0007\u00af\u0002\u00b0\u0007"+
		"\u00b0\u0002\u00b1\u0007\u00b1\u0002\u00b2\u0007\u00b2\u0002\u00b3\u0007"+
		"\u00b3\u0002\u00b4\u0007\u00b4\u0002\u00b5\u0007\u00b5\u0002\u00b6\u0007"+
		"\u00b6\u0002\u00b7\u0007\u00b7\u0002\u00b8\u0007\u00b8\u0002\u00b9\u0007"+
		"\u00b9\u0002\u00ba\u0007\u00ba\u0002\u00bb\u0007\u00bb\u0002\u00bc\u0007"+
		"\u00bc\u0002\u00bd\u0007\u00bd\u0002\u00be\u0007\u00be\u0002\u00bf\u0007"+
		"\u00bf\u0002\u00c0\u0007\u00c0\u0002\u00c1\u0007\u00c1\u0002\u00c2\u0007"+
		"\u00c2\u0002\u00c3\u0007\u00c3\u0002\u00c4\u0007\u00c4\u0002\u00c5\u0007"+
		"\u00c5\u0002\u00c6\u0007\u00c6\u0002\u00c7\u0007\u00c7\u0002\u00c8\u0007"+
		"\u00c8\u0002\u00c9\u0007\u00c9\u0002\u00ca\u0007\u00ca\u0002\u00cb\u0007"+
		"\u00cb\u0002\u00cc\u0007\u00cc\u0002\u00cd\u0007\u00cd\u0002\u00ce\u0007"+
		"\u00ce\u0002\u00cf\u0007\u00cf\u0002\u00d0\u0007\u00d0\u0002\u00d1\u0007"+
		"\u00d1\u0002\u00d2\u0007\u00d2\u0002\u00d3\u0007\u00d3\u0002\u00d4\u0007"+
		"\u00d4\u0002\u00d5\u0007\u00d5\u0002\u00d6\u0007\u00d6\u0002\u00d7\u0007"+
		"\u00d7\u0002\u00d8\u0007\u00d8\u0002\u00d9\u0007\u00d9\u0002\u00da\u0007"+
		"\u00da\u0002\u00db\u0007\u00db\u0002\u00dc\u0007\u00dc\u0002\u00dd\u0007"+
		"\u00dd\u0002\u00de\u0007\u00de\u0002\u00df\u0007\u00df\u0002\u00e0\u0007"+
		"\u00e0\u0002\u00e1\u0007\u00e1\u0002\u00e2\u0007\u00e2\u0002\u00e3\u0007"+
		"\u00e3\u0002\u00e4\u0007\u00e4\u0002\u00e5\u0007\u00e5\u0002\u00e6\u0007"+
		"\u00e6\u0002\u00e7\u0007\u00e7\u0002\u00e8\u0007\u00e8\u0002\u00e9\u0007"+
		"\u00e9\u0002\u00ea\u0007\u00ea\u0002\u00eb\u0007\u00eb\u0002\u00ec\u0007"+
		"\u00ec\u0002\u00ed\u0007\u00ed\u0002\u00ee\u0007\u00ee\u0002\u00ef\u0007"+
		"\u00ef\u0002\u00f0\u0007\u00f0\u0002\u00f1\u0007\u00f1\u0002\u00f2\u0007"+
		"\u00f2\u0002\u00f3\u0007\u00f3\u0002\u00f4\u0007\u00f4\u0002\u00f5\u0007"+
		"\u00f5\u0002\u00f6\u0007\u00f6\u0002\u00f7\u0007\u00f7\u0002\u00f8\u0007"+
		"\u00f8\u0002\u00f9\u0007\u00f9\u0002\u00fa\u0007\u00fa\u0002\u00fb\u0007"+
		"\u00fb\u0002\u00fc\u0007\u00fc\u0002\u00fd\u0007\u00fd\u0002\u00fe\u0007"+
		"\u00fe\u0002\u00ff\u0007\u00ff\u0002\u0100\u0007\u0100\u0002\u0101\u0007"+
		"\u0101\u0002\u0102\u0007\u0102\u0002\u0103\u0007\u0103\u0002\u0104\u0007"+
		"\u0104\u0002\u0105\u0007\u0105\u0002\u0106\u0007\u0106\u0002\u0107\u0007"+
		"\u0107\u0002\u0108\u0007\u0108\u0002\u0109\u0007\u0109\u0002\u010a\u0007"+
		"\u010a\u0002\u010b\u0007\u010b\u0002\u010c\u0007\u010c\u0002\u010d\u0007"+
		"\u010d\u0002\u010e\u0007\u010e\u0002\u010f\u0007\u010f\u0002\u0110\u0007"+
		"\u0110\u0002\u0111\u0007\u0111\u0002\u0112\u0007\u0112\u0002\u0113\u0007"+
		"\u0113\u0002\u0114\u0007\u0114\u0002\u0115\u0007\u0115\u0002\u0116\u0007"+
		"\u0116\u0002\u0117\u0007\u0117\u0002\u0118\u0007\u0118\u0002\u0119\u0007"+
		"\u0119\u0002\u011a\u0007\u011a\u0002\u011b\u0007\u011b\u0002\u011c\u0007"+
		"\u011c\u0002\u011d\u0007\u011d\u0002\u011e\u0007\u011e\u0002\u011f\u0007"+
		"\u011f\u0002\u0120\u0007\u0120\u0002\u0121\u0007\u0121\u0002\u0122\u0007"+
		"\u0122\u0002\u0123\u0007\u0123\u0002\u0124\u0007\u0124\u0002\u0125\u0007"+
		"\u0125\u0002\u0126\u0007\u0126\u0002\u0127\u0007\u0127\u0002\u0128\u0007"+
		"\u0128\u0002\u0129\u0007\u0129\u0002\u012a\u0007\u012a\u0002\u012b\u0007"+
		"\u012b\u0002\u012c\u0007\u012c\u0002\u012d\u0007\u012d\u0002\u012e\u0007"+
		"\u012e\u0002\u012f\u0007\u012f\u0002\u0130\u0007\u0130\u0002\u0131\u0007"+
		"\u0131\u0002\u0132\u0007\u0132\u0002\u0133\u0007\u0133\u0002\u0134\u0007"+
		"\u0134\u0002\u0135\u0007\u0135\u0002\u0136\u0007\u0136\u0002\u0137\u0007"+
		"\u0137\u0002\u0138\u0007\u0138\u0002\u0139\u0007\u0139\u0002\u013a\u0007"+
		"\u013a\u0002\u013b\u0007\u013b\u0002\u013c\u0007\u013c\u0002\u013d\u0007"+
		"\u013d\u0002\u013e\u0007\u013e\u0002\u013f\u0007\u013f\u0002\u0140\u0007"+
		"\u0140\u0002\u0141\u0007\u0141\u0002\u0142\u0007\u0142\u0002\u0143\u0007"+
		"\u0143\u0002\u0144\u0007\u0144\u0002\u0145\u0007\u0145\u0002\u0146\u0007"+
		"\u0146\u0002\u0147\u0007\u0147\u0002\u0148\u0007\u0148\u0002\u0149\u0007"+
		"\u0149\u0002\u014a\u0007\u014a\u0002\u014b\u0007\u014b\u0002\u014c\u0007"+
		"\u014c\u0002\u014d\u0007\u014d\u0002\u014e\u0007\u014e\u0002\u014f\u0007"+
		"\u014f\u0002\u0150\u0007\u0150\u0002\u0151\u0007\u0151\u0002\u0152\u0007"+
		"\u0152\u0002\u0153\u0007\u0153\u0002\u0154\u0007\u0154\u0002\u0155\u0007"+
		"\u0155\u0002\u0156\u0007\u0156\u0002\u0157\u0007\u0157\u0002\u0158\u0007"+
		"\u0158\u0002\u0159\u0007\u0159\u0002\u015a\u0007\u015a\u0002\u015b\u0007"+
		"\u015b\u0002\u015c\u0007\u015c\u0002\u015d\u0007\u015d\u0002\u015e\u0007"+
		"\u015e\u0002\u015f\u0007\u015f\u0002\u0160\u0007\u0160\u0002\u0161\u0007"+
		"\u0161\u0002\u0162\u0007\u0162\u0002\u0163\u0007\u0163\u0002\u0164\u0007"+
		"\u0164\u0002\u0165\u0007\u0165\u0002\u0166\u0007\u0166\u0002\u0167\u0007"+
		"\u0167\u0002\u0168\u0007\u0168\u0002\u0169\u0007\u0169\u0002\u016a\u0007"+
		"\u016a\u0002\u016b\u0007\u016b\u0002\u016c\u0007\u016c\u0002\u016d\u0007"+
		"\u016d\u0002\u016e\u0007\u016e\u0002\u016f\u0007\u016f\u0002\u0170\u0007"+
		"\u0170\u0002\u0171\u0007\u0171\u0002\u0172\u0007\u0172\u0001\u0000\u0003"+
		"\u0000\u02e8\b\u0000\u0001\u0000\u0001\u0000\u0003\u0000\u02ec\b\u0000"+
		"\u0001\u0000\u0001\u0000\u0001\u0001\u0001\u0001\u0001\u0001\u0003\u0001"+
		"\u02f3\b\u0001\u0001\u0001\u0003\u0001\u02f6\b\u0001\u0001\u0001\u0005"+
		"\u0001\u02f9\b\u0001\n\u0001\f\u0001\u02fc\t\u0001\u0001\u0001\u0001\u0001"+
		"\u0001\u0001\u0003\u0001\u0301\b\u0001\u0001\u0001\u0003\u0001\u0304\b"+
		"\u0001\u0001\u0001\u0003\u0001\u0307\b\u0001\u0001\u0002\u0003\u0002\u030a"+
		"\b\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0001"+
		"\u0002\u0001\u0002\u0003\u0002\u0313\b\u0002\u0001\u0003\u0001\u0003\u0001"+
		"\u0003\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003\u0001"+
		"\u0003\u0005\u0003\u031e\b\u0003\n\u0003\f\u0003\u0321\t\u0003\u0001\u0003"+
		"\u0001\u0003\u0001\u0004\u0001\u0004\u0001\u0005\u0001\u0005\u0001\u0005"+
		"\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005"+
		"\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005"+
		"\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005"+
		"\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005"+
		"\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005"+
		"\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005"+
		"\u0001\u0005\u0001\u0005\u0003\u0005\u0350\b\u0005\u0001\u0006\u0001\u0006"+
		"\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006"+
		"\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0003\u0006"+
		"\u035f\b\u0006\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007"+
		"\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0003\u0007\u036a\b\u0007"+
		"\u0001\b\u0001\b\u0001\b\u0001\b\u0001\b\u0001\b\u0001\b\u0001\b\u0001"+
		"\b\u0001\b\u0001\b\u0001\b\u0001\b\u0001\b\u0001\b\u0003\b\u037b\b\b\u0001"+
		"\t\u0001\t\u0001\t\u0003\t\u0380\b\t\u0001\n\u0001\n\u0001\n\u0001\n\u0001"+
		"\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0003"+
		"\n\u038f\b\n\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b"+
		"\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b"+
		"\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b"+
		"\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b"+
		"\u0001\u000b\u0001\u000b\u0003\u000b\u03aa\b\u000b\u0001\f\u0001\f\u0001"+
		"\f\u0001\f\u0001\f\u0001\f\u0001\f\u0003\f\u03b3\b\f\u0001\r\u0001\r\u0001"+
		"\r\u0003\r\u03b8\b\r\u0001\r\u0001\r\u0005\r\u03bc\b\r\n\r\f\r\u03bf\t"+
		"\r\u0001\u000e\u0001\u000e\u0003\u000e\u03c3\b\u000e\u0001\u000e\u0001"+
		"\u000e\u0003\u000e\u03c7\b\u000e\u0001\u000e\u0001\u000e\u0001\u000e\u0001"+
		"\u000e\u0001\u000e\u0001\u000e\u0001\u000e\u0003\u000e\u03d0\b\u000e\u0001"+
		"\u000e\u0003\u000e\u03d3\b\u000e\u0001\u000e\u0003\u000e\u03d6\b\u000e"+
		"\u0001\u000e\u0001\u000e\u0003\u000e\u03da\b\u000e\u0001\u000e\u0001\u000e"+
		"\u0001\u000e\u0001\u000f\u0001\u000f\u0003\u000f\u03e1\b\u000f\u0001\u000f"+
		"\u0003\u000f\u03e4\b\u000f\u0001\u000f\u0003\u000f\u03e7\b\u000f\u0001"+
		"\u000f\u0001\u000f\u0003\u000f\u03eb\b\u000f\u0001\u000f\u0001\u000f\u0003"+
		"\u000f\u03ef\b\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0003"+
		"\u000f\u03f5\b\u000f\u0001\u000f\u0005\u000f\u03f8\b\u000f\n\u000f\f\u000f"+
		"\u03fb\t\u000f\u0001\u000f\u0001\u000f\u0003\u000f\u03ff\b\u000f\u0001"+
		"\u000f\u0001\u000f\u0001\u000f\u0003\u000f\u0404\b\u000f\u0001\u000f\u0005"+
		"\u000f\u0407\b\u000f\n\u000f\f\u000f\u040a\t\u000f\u0001\u0010\u0001\u0010"+
		"\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010"+
		"\u0001\u0010\u0003\u0010\u0415\b\u0010\u0001\u0010\u0003\u0010\u0418\b"+
		"\u0010\u0001\u0010\u0001\u0010\u0003\u0010\u041c\b\u0010\u0001\u0010\u0003"+
		"\u0010\u041f\b\u0010\u0001\u0010\u0001\u0010\u0003\u0010\u0423\b\u0010"+
		"\u0001\u0010\u0003\u0010\u0426\b\u0010\u0001\u0010\u0001\u0010\u0003\u0010"+
		"\u042a\b\u0010\u0001\u0010\u0003\u0010\u042d\b\u0010\u0001\u0010\u0003"+
		"\u0010\u0430\b\u0010\u0001\u0010\u0001\u0010\u0003\u0010\u0434\b\u0010"+
		"\u0001\u0010\u0003\u0010\u0437\b\u0010\u0001\u0010\u0001\u0010\u0003\u0010"+
		"\u043b\b\u0010\u0001\u0010\u0001\u0010\u0001\u0011\u0001\u0011\u0003\u0011"+
		"\u0441\b\u0011\u0001\u0011\u0003\u0011\u0444\b\u0011\u0001\u0011\u0001"+
		"\u0011\u0001\u0011\u0001\u0011\u0003\u0011\u044a\b\u0011\u0001\u0011\u0001"+
		"\u0011\u0005\u0011\u044e\b\u0011\n\u0011\f\u0011\u0451\t\u0011\u0001\u0011"+
		"\u0001\u0011\u0005\u0011\u0455\b\u0011\n\u0011\f\u0011\u0458\t\u0011\u0001"+
		"\u0011\u0001\u0011\u0001\u0012\u0001\u0012\u0003\u0012\u045e\b\u0012\u0001"+
		"\u0012\u0003\u0012\u0461\b\u0012\u0001\u0012\u0003\u0012\u0464\b\u0012"+
		"\u0001\u0012\u0001\u0012\u0003\u0012\u0468\b\u0012\u0001\u0012\u0001\u0012"+
		"\u0001\u0012\u0003\u0012\u046d\b\u0012\u0001\u0012\u0001\u0012\u0005\u0012"+
		"\u0471\b\u0012\n\u0012\f\u0012\u0474\t\u0012\u0001\u0012\u0001\u0012\u0001"+
		"\u0012\u0001\u0012\u0005\u0012\u047a\b\u0012\n\u0012\f\u0012\u047d\t\u0012"+
		"\u0001\u0012\u0001\u0012\u0003\u0012\u0481\b\u0012\u0001\u0013\u0001\u0013"+
		"\u0001\u0013\u0003\u0013\u0486\b\u0013\u0001\u0013\u0001\u0013\u0001\u0013"+
		"\u0005\u0013\u048b\b\u0013\n\u0013\f\u0013\u048e\t\u0013\u0001\u0014\u0001"+
		"\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001"+
		"\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0005\u0014\u049c"+
		"\b\u0014\n\u0014\f\u0014\u049f\t\u0014\u0001\u0014\u0001\u0014\u0001\u0015"+
		"\u0001\u0015\u0003\u0015\u04a5\b\u0015\u0001\u0015\u0003\u0015\u04a8\b"+
		"\u0015\u0001\u0015\u0001\u0015\u0003\u0015\u04ac\b\u0015\u0001\u0015\u0001"+
		"\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0001"+
		"\u0015\u0003\u0015\u04b6\b\u0015\u0001\u0015\u0001\u0015\u0003\u0015\u04ba"+
		"\b\u0015\u0001\u0015\u0003\u0015\u04bd\b\u0015\u0001\u0015\u0001\u0015"+
		"\u0003\u0015\u04c1\b\u0015\u0001\u0015\u0001\u0015\u0003\u0015\u04c5\b"+
		"\u0015\u0001\u0015\u0001\u0015\u0003\u0015\u04c9\b\u0015\u0001\u0015\u0005"+
		"\u0015\u04cc\b\u0015\n\u0015\f\u0015\u04cf\t\u0015\u0003\u0015\u04d1\b"+
		"\u0015\u0001\u0015\u0003\u0015\u04d4\b\u0015\u0001\u0015\u0003\u0015\u04d7"+
		"\b\u0015\u0001\u0015\u0003\u0015\u04da\b\u0015\u0001\u0015\u0001\u0015"+
		"\u0001\u0015\u0001\u0015\u0003\u0015\u04e0\b\u0015\u0001\u0015\u0003\u0015"+
		"\u04e3\b\u0015\u0001\u0015\u0001\u0015\u0003\u0015\u04e7\b\u0015\u0001"+
		"\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0003\u0015\u04ed\b\u0015\u0001"+
		"\u0015\u0005\u0015\u04f0\b\u0015\n\u0015\f\u0015\u04f3\t\u0015\u0003\u0015"+
		"\u04f5\b\u0015\u0001\u0015\u0003\u0015\u04f8\b\u0015\u0003\u0015\u04fa"+
		"\b\u0015\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0001"+
		"\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0003\u0016\u0505\b\u0016\u0001"+
		"\u0016\u0001\u0016\u0003\u0016\u0509\b\u0016\u0001\u0016\u0003\u0016\u050c"+
		"\b\u0016\u0001\u0017\u0001\u0017\u0001\u0017\u0001\u0017\u0001\u0017\u0001"+
		"\u0017\u0001\u0017\u0001\u0017\u0001\u0017\u0001\u0017\u0001\u0017\u0001"+
		"\u0017\u0003\u0017\u051a\b\u0017\u0001\u0017\u0003\u0017\u051d\b\u0017"+
		"\u0001\u0017\u0001\u0017\u0003\u0017\u0521\b\u0017\u0001\u0017\u0003\u0017"+
		"\u0524\b\u0017\u0001\u0017\u0001\u0017\u0003\u0017\u0528\b\u0017\u0001"+
		"\u0017\u0003\u0017\u052b\b\u0017\u0001\u0017\u0001\u0017\u0003\u0017\u052f"+
		"\b\u0017\u0001\u0017\u0003\u0017\u0532\b\u0017\u0001\u0017\u0001\u0017"+
		"\u0003\u0017\u0536\b\u0017\u0001\u0017\u0003\u0017\u0539\b\u0017\u0001"+
		"\u0017\u0003\u0017\u053c\b\u0017\u0001\u0017\u0001\u0017\u0003\u0017\u0540"+
		"\b\u0017\u0001\u0017\u0003\u0017\u0543\b\u0017\u0001\u0017\u0001\u0017"+
		"\u0003\u0017\u0547\b\u0017\u0001\u0017\u0001\u0017\u0001\u0018\u0001\u0018"+
		"\u0003\u0018\u054d\b\u0018\u0001\u0018\u0003\u0018\u0550\b\u0018\u0001"+
		"\u0018\u0001\u0018\u0003\u0018\u0554\b\u0018\u0001\u0018\u0001\u0018\u0001"+
		"\u0018\u0001\u0018\u0001\u0018\u0001\u0018\u0001\u0018\u0001\u0018\u0001"+
		"\u0018\u0001\u0018\u0003\u0018\u0560\b\u0018\u0001\u0018\u0001\u0018\u0001"+
		"\u0019\u0001\u0019\u0003\u0019\u0566\b\u0019\u0001\u0019\u0001\u0019\u0001"+
		"\u001a\u0001\u001a\u0001\u001a\u0001\u001a\u0001\u001a\u0005\u001a\u056f"+
		"\b\u001a\n\u001a\f\u001a\u0572\t\u001a\u0001\u001a\u0001\u001a\u0003\u001a"+
		"\u0576\b\u001a\u0001\u001a\u0001\u001a\u0001\u001a\u0001\u001a\u0001\u001a"+
		"\u0001\u001a\u0003\u001a\u057e\b\u001a\u0001\u001b\u0001\u001b\u0001\u001c"+
		"\u0001\u001c\u0001\u001d\u0001\u001d\u0003\u001d\u0586\b\u001d\u0001\u001d"+
		"\u0001\u001d\u0001\u001d\u0003\u001d\u058b\b\u001d\u0001\u001d\u0003\u001d"+
		"\u058e\b\u001d\u0001\u001d\u0001\u001d\u0001\u001d\u0003\u001d\u0593\b"+
		"\u001d\u0001\u001d\u0001\u001d\u0001\u001d\u0001\u001d\u0001\u001d\u0001"+
		"\u001d\u0003\u001d\u059b\b\u001d\u0001\u001d\u0001\u001d\u0001\u001d\u0003"+
		"\u001d\u05a0\b\u001d\u0001\u001d\u0001\u001d\u0001\u001d\u0001\u001d\u0003"+
		"\u001d\u05a6\b\u001d\u0001\u001d\u0001\u001d\u0001\u001d\u0003\u001d\u05ab"+
		"\b\u001d\u0001\u001d\u0001\u001d\u0003\u001d\u05af\b\u001d\u0003\u001d"+
		"\u05b1\b\u001d\u0001\u001e\u0001\u001e\u0003\u001e\u05b5\b\u001e\u0001"+
		"\u001e\u0003\u001e\u05b8\b\u001e\u0001\u001e\u0001\u001e\u0003\u001e\u05bc"+
		"\b\u001e\u0001\u001e\u0001\u001e\u0001\u001e\u0005\u001e\u05c1\b\u001e"+
		"\n\u001e\f\u001e\u05c4\t\u001e\u0001\u001f\u0001\u001f\u0003\u001f\u05c8"+
		"\b\u001f\u0001\u001f\u0001\u001f\u0001\u001f\u0003\u001f\u05cd\b\u001f"+
		"\u0001\u001f\u0001\u001f\u0001\u001f\u0001\u001f\u0001\u001f\u0001\u001f"+
		"\u0003\u001f\u05d5\b\u001f\u0001\u001f\u0001\u001f\u0001\u001f\u0001\u001f"+
		"\u0001\u001f\u0001\u001f\u0003\u001f\u05dd\b\u001f\u0001\u001f\u0001\u001f"+
		"\u0001\u001f\u0003\u001f\u05e2\b\u001f\u0001\u001f\u0001\u001f\u0001\u001f"+
		"\u0001\u001f\u0001\u001f\u0001\u001f\u0003\u001f\u05ea\b\u001f\u0001\u001f"+
		"\u0003\u001f\u05ed\b\u001f\u0001 \u0003 \u05f0\b \u0001 \u0001 \u0003"+
		" \u05f4\b \u0001 \u0001 \u0003 \u05f8\b \u0001 \u0003 \u05fb\b \u0001"+
		" \u0001 \u0003 \u05ff\b \u0001 \u0001 \u0003 \u0603\b \u0001 \u0001 \u0003"+
		" \u0607\b \u0001 \u0001 \u0001 \u0001 \u0003 \u060d\b \u0001 \u0003 \u0610"+
		"\b \u0001!\u0001!\u0001!\u0001!\u0001!\u0003!\u0617\b!\u0001\"\u0001\""+
		"\u0001\"\u0003\"\u061c\b\"\u0001#\u0001#\u0001#\u0001#\u0001#\u0003#\u0623"+
		"\b#\u0001$\u0001$\u0001$\u0005$\u0628\b$\n$\f$\u062b\t$\u0001$\u0001$"+
		"\u0001$\u0003$\u0630\b$\u0001$\u0001$\u0001$\u0001$\u0005$\u0636\b$\n"+
		"$\f$\u0639\t$\u0003$\u063b\b$\u0001$\u0001$\u0001$\u0005$\u0640\b$\n$"+
		"\f$\u0643\t$\u0003$\u0645\b$\u0003$\u0647\b$\u0001%\u0001%\u0001%\u0001"+
		"%\u0003%\u064d\b%\u0001&\u0001&\u0001&\u0001&\u0003&\u0653\b&\u0001&\u0001"+
		"&\u0001\'\u0001\'\u0001\'\u0001\'\u0001\'\u0001\'\u0001\'\u0001\'\u0001"+
		"\'\u0001\'\u0001\'\u0001\'\u0001\'\u0003\'\u0664\b\'\u0001(\u0001(\u0001"+
		"(\u0001(\u0001(\u0003(\u066b\b(\u0001)\u0001)\u0001)\u0001*\u0001*\u0003"+
		"*\u0672\b*\u0001*\u0001*\u0001*\u0001*\u0001*\u0001*\u0001*\u0001*\u0001"+
		"*\u0001*\u0003*\u067e\b*\u0001*\u0001*\u0001*\u0003*\u0683\b*\u0001*\u0001"+
		"*\u0001*\u0001*\u0001*\u0001*\u0001*\u0003*\u068c\b*\u0003*\u068e\b*\u0001"+
		"+\u0003+\u0691\b+\u0001+\u0001+\u0001+\u0001,\u0001,\u0001,\u0001-\u0001"+
		"-\u0001-\u0001-\u0001-\u0003-\u069e\b-\u0001-\u0001-\u0001-\u0001-\u0001"+
		"-\u0001-\u0001-\u0001-\u0001-\u0001-\u0001-\u0003-\u06ab\b-\u0001-\u0001"+
		"-\u0001-\u0003-\u06b0\b-\u0001.\u0001.\u0001.\u0001.\u0001.\u0001.\u0001"+
		".\u0001.\u0001.\u0001.\u0001.\u0001.\u0001.\u0001.\u0003.\u06c0\b.\u0001"+
		"/\u0001/\u0001/\u0001/\u0005/\u06c6\b/\n/\f/\u06c9\t/\u0001/\u0001/\u0001"+
		"0\u00010\u00010\u00010\u00010\u00030\u06d2\b0\u00010\u00030\u06d5\b0\u0001"+
		"0\u00030\u06d8\b0\u00011\u00011\u00051\u06dc\b1\n1\f1\u06df\t1\u00011"+
		"\u00031\u06e2\b1\u00011\u00031\u06e5\b1\u00012\u00012\u00012\u00012\u0001"+
		"2\u00012\u00012\u00012\u00012\u00032\u06f0\b2\u00012\u00032\u06f3\b2\u0001"+
		"2\u00012\u00012\u00012\u00012\u00032\u06fa\b2\u00012\u00012\u00012\u0001"+
		"2\u00012\u00012\u00012\u00012\u00012\u00012\u00012\u00032\u0707\b2\u0001"+
		"2\u00012\u00012\u00012\u00012\u00032\u070e\b2\u00012\u00012\u00012\u0001"+
		"2\u00012\u00032\u0715\b2\u00032\u0717\b2\u00012\u00012\u00012\u00012\u0001"+
		"2\u00032\u071e\b2\u00013\u00013\u00033\u0722\b3\u00033\u0724\b3\u0001"+
		"3\u00013\u00013\u00033\u0729\b3\u00013\u00033\u072c\b3\u00013\u00013\u0005"+
		"3\u0730\b3\n3\f3\u0733\t3\u00013\u00013\u00033\u0737\b3\u00033\u0739\b"+
		"3\u00013\u00013\u00033\u073d\b3\u00013\u00033\u0740\b3\u00013\u00033\u0743"+
		"\b3\u00013\u00013\u00053\u0747\b3\n3\f3\u074a\t3\u00013\u00013\u00033"+
		"\u074e\b3\u00033\u0750\b3\u00013\u00013\u00013\u00033\u0755\b3\u00013"+
		"\u00013\u00013\u00013\u00013\u00033\u075c\b3\u00033\u075e\b3\u00013\u0001"+
		"3\u00013\u00013\u00013\u00013\u00013\u00013\u00033\u0768\b3\u00013\u0003"+
		"3\u076b\b3\u00014\u00014\u00014\u00034\u0770\b4\u00014\u00014\u00034\u0774"+
		"\b4\u00014\u00034\u0777\b4\u00015\u00015\u00015\u00015\u00015\u00015\u0003"+
		"5\u077f\b5\u00015\u00015\u00015\u00015\u00015\u00015\u00035\u0787\b5\u0003"+
		"5\u0789\b5\u00016\u00016\u00016\u00016\u00016\u00016\u00016\u00016\u0003"+
		"6\u0793\b6\u00017\u00017\u00037\u0797\b7\u00017\u00037\u079a\b7\u0001"+
		"7\u00017\u00057\u079e\b7\n7\f7\u07a1\t7\u00017\u00017\u00037\u07a5\b7"+
		"\u00017\u00037\u07a8\b7\u00017\u00017\u00057\u07ac\b7\n7\f7\u07af\t7\u0003"+
		"7\u07b1\b7\u00018\u00018\u00038\u07b5\b8\u00018\u00038\u07b8\b8\u0001"+
		"8\u00018\u00038\u07bc\b8\u00018\u00018\u00018\u00038\u07c1\b8\u00018\u0001"+
		"8\u00018\u00038\u07c6\b8\u00018\u00018\u00018\u00038\u07cb\b8\u00018\u0001"+
		"8\u00038\u07cf\b8\u00018\u00018\u00038\u07d3\b8\u00018\u00018\u00038\u07d7"+
		"\b8\u00018\u00018\u00038\u07db\b8\u00018\u00018\u00038\u07df\b8\u0001"+
		"8\u00018\u00038\u07e3\b8\u00018\u00018\u00018\u00038\u07e8\b8\u00018\u0001"+
		"8\u00018\u00038\u07ed\b8\u00018\u00018\u00018\u00038\u07f2\b8\u00018\u0001"+
		"8\u00018\u00018\u00038\u07f8\b8\u00018\u00018\u00018\u00038\u07fd\b8\u0001"+
		"8\u00018\u00018\u00038\u0802\b8\u00018\u00018\u00018\u00038\u0807\b8\u0001"+
		"8\u00018\u00018\u00018\u00038\u080d\b8\u00018\u00018\u00018\u00038\u0812"+
		"\b8\u00018\u00018\u00018\u00038\u0817\b8\u00018\u00018\u00018\u00018\u0003"+
		"8\u081d\b8\u00018\u00018\u00018\u00038\u0822\b8\u00018\u00018\u00018\u0003"+
		"8\u0827\b8\u00018\u00018\u00018\u00038\u082c\b8\u00018\u00018\u00018\u0003"+
		"8\u0831\b8\u00018\u00018\u00018\u00038\u0836\b8\u00018\u00018\u00018\u0003"+
		"8\u083b\b8\u00018\u00018\u00018\u00038\u0840\b8\u00018\u00018\u00018\u0001"+
		"8\u00018\u00038\u0847\b8\u00018\u00018\u00018\u00038\u084c\b8\u00018\u0001"+
		"8\u00018\u00038\u0851\b8\u00018\u00018\u00018\u00038\u0856\b8\u00018\u0001"+
		"8\u00038\u085a\b8\u00018\u00018\u00018\u00038\u085f\b8\u00018\u00018\u0001"+
		"8\u00018\u00018\u00018\u00038\u0867\b8\u00018\u00018\u00018\u00038\u086c"+
		"\b8\u00018\u00018\u00018\u00018\u00018\u00018\u00018\u00038\u0875\b8\u0001"+
		"9\u00019\u0001:\u0001:\u0001:\u0001;\u0001;\u0001;\u0001;\u0001;\u0003"+
		";\u0881\b;\u0001;\u0001;\u0001;\u0001;\u0001;\u0003;\u0888\b;\u0003;\u088a"+
		"\b;\u0001;\u0001;\u0001;\u0001;\u0005;\u0890\b;\n;\f;\u0893\t;\u0001;"+
		"\u0001;\u0003;\u0897\b;\u0001<\u0003<\u089a\b<\u0001<\u0001<\u0001<\u0001"+
		"<\u0001<\u0001<\u0003<\u08a2\b<\u0001<\u0001<\u0001<\u0001<\u0003<\u08a8"+
		"\b<\u0001<\u0001<\u0003<\u08ac\b<\u0001<\u0001<\u0001<\u0001<\u0001<\u0001"+
		"<\u0001<\u0001<\u0001<\u0001<\u0001<\u0003<\u08b9\b<\u0001<\u0001<\u0001"+
		"<\u0001<\u0001<\u0001<\u0001<\u0001<\u0001<\u0001<\u0003<\u08c5\b<\u0001"+
		"<\u0001<\u0001<\u0001<\u0003<\u08cb\b<\u0001<\u0001<\u0001<\u0001<\u0003"+
		"<\u08d1\b<\u0003<\u08d3\b<\u0001<\u0003<\u08d6\b<\u0001<\u0003<\u08d9"+
		"\b<\u0003<\u08db\b<\u0001=\u0001=\u0001=\u0001=\u0005=\u08e1\b=\n=\f="+
		"\u08e4\t=\u0001=\u0001=\u0001>\u0001>\u0001>\u0001>\u0001?\u0003?\u08ed"+
		"\b?\u0001?\u0001?\u0001?\u0001?\u0001?\u0001?\u0003?\u08f5\b?\u0001?\u0001"+
		"?\u0001?\u0001?\u0003?\u08fb\b?\u0001?\u0001?\u0001?\u0001?\u0003?\u0901"+
		"\b?\u0001@\u0001@\u0001@\u0001@\u0001@\u0001@\u0001@\u0001@\u0001@\u0005"+
		"@\u090c\b@\n@\f@\u090f\t@\u0001@\u0001@\u0005@\u0913\b@\n@\f@\u0916\t"+
		"@\u0001@\u0001@\u0001@\u0001@\u0005@\u091c\b@\n@\f@\u091f\t@\u0001@\u0001"+
		"@\u0003@\u0923\b@\u0001@\u0001@\u0001@\u0001@\u0001@\u0001@\u0001@\u0005"+
		"@\u092c\b@\n@\f@\u092f\t@\u0001@\u0001@\u0001@\u0001@\u0005@\u0935\b@"+
		"\n@\f@\u0938\t@\u0001@\u0001@\u0003@\u093c\b@\u0001@\u0001@\u0001@\u0001"+
		"@\u0001@\u0001@\u0001@\u0001@\u0005@\u0946\b@\n@\f@\u0949\t@\u0001@\u0001"+
		"@\u0005@\u094d\b@\n@\f@\u0950\t@\u0001@\u0001@\u0001@\u0001@\u0005@\u0956"+
		"\b@\n@\f@\u0959\t@\u0001@\u0001@\u0003@\u095d\b@\u0001@\u0001@\u0001@"+
		"\u0001@\u0001@\u0001@\u0001@\u0001@\u0005@\u0967\b@\n@\f@\u096a\t@\u0001"+
		"@\u0001@\u0005@\u096e\b@\n@\f@\u0971\t@\u0001@\u0001@\u0001@\u0001@\u0005"+
		"@\u0977\b@\n@\f@\u097a\t@\u0001@\u0001@\u0003@\u097e\b@\u0001@\u0001@"+
		"\u0001@\u0005@\u0983\b@\n@\f@\u0986\t@\u0001@\u0001@\u0001@\u0001@\u0005"+
		"@\u098c\b@\n@\f@\u098f\t@\u0001@\u0001@\u0003@\u0993\b@\u0003@\u0995\b"+
		"@\u0001A\u0001A\u0001A\u0003A\u099a\bA\u0001B\u0001B\u0001B\u0001B\u0004"+
		"B\u09a0\bB\u000bB\fB\u09a1\u0001B\u0001B\u0001C\u0001C\u0001C\u0005C\u09a9"+
		"\bC\nC\fC\u09ac\tC\u0001D\u0003D\u09af\bD\u0001D\u0003D\u09b2\bD\u0001"+
		"D\u0001D\u0003D\u09b6\bD\u0001D\u0001D\u0001D\u0003D\u09bb\bD\u0001D\u0001"+
		"D\u0001D\u0001D\u0003D\u09c1\bD\u0001D\u0001D\u0001D\u0001D\u0003D\u09c7"+
		"\bD\u0001D\u0001D\u0001D\u0003D\u09cc\bD\u0001D\u0001D\u0001D\u0003D\u09d1"+
		"\bD\u0001D\u0001D\u0001D\u0003D\u09d6\bD\u0001D\u0001D\u0001D\u0003D\u09db"+
		"\bD\u0001D\u0003D\u09de\bD\u0001E\u0001E\u0001E\u0003E\u09e3\bE\u0001"+
		"E\u0004E\u09e6\bE\u000bE\fE\u09e7\u0001E\u0001E\u0001E\u0001E\u0001E\u0001"+
		"E\u0001E\u0001E\u0003E\u09f2\bE\u0001F\u0001F\u0003F\u09f6\bF\u0001F\u0001"+
		"F\u0001F\u0001F\u0001F\u0003F\u09fd\bF\u0001F\u0001F\u0001F\u0003F\u0a02"+
		"\bF\u0001F\u0003F\u0a05\bF\u0001F\u0001F\u0001F\u0003F\u0a0a\bF\u0001"+
		"F\u0003F\u0a0d\bF\u0001F\u0001F\u0003F\u0a11\bF\u0001F\u0001F\u0003F\u0a15"+
		"\bF\u0001G\u0001G\u0001G\u0001G\u0005G\u0a1b\bG\nG\fG\u0a1e\tG\u0001H"+
		"\u0001H\u0001H\u0001H\u0001H\u0001H\u0001H\u0001I\u0001I\u0001I\u0001"+
		"I\u0001I\u0001I\u0001I\u0001I\u0001I\u0003I\u0a30\bI\u0001I\u0003I\u0a33"+
		"\bI\u0001I\u0003I\u0a36\bI\u0001I\u0001I\u0003I\u0a3a\bI\u0001I\u0001"+
		"I\u0001J\u0001J\u0001J\u0001J\u0005J\u0a42\bJ\nJ\fJ\u0a45\tJ\u0001K\u0001"+
		"K\u0001K\u0001K\u0001K\u0001K\u0001K\u0001K\u0005K\u0a4f\bK\nK\fK\u0a52"+
		"\tK\u0001K\u0001K\u0001L\u0001L\u0003L\u0a58\bL\u0001L\u0003L\u0a5b\b"+
		"L\u0001L\u0001L\u0003L\u0a5f\bL\u0001L\u0001L\u0003L\u0a63\bL\u0001L\u0001"+
		"L\u0001L\u0005L\u0a68\bL\nL\fL\u0a6b\tL\u0003L\u0a6d\bL\u0001L\u0003L"+
		"\u0a70\bL\u0001M\u0001M\u0001M\u0001M\u0001M\u0001M\u0001M\u0001M\u0001"+
		"M\u0003M\u0a7b\bM\u0001M\u0003M\u0a7e\bM\u0001M\u0001M\u0003M\u0a82\b"+
		"M\u0001M\u0001M\u0001N\u0001N\u0001N\u0001N\u0003N\u0a8a\bN\u0001N\u0003"+
		"N\u0a8d\bN\u0001N\u0001N\u0001N\u0003N\u0a92\bN\u0001N\u0001N\u0001N\u0001"+
		"N\u0001N\u0001N\u0003N\u0a9a\bN\u0001N\u0001N\u0001N\u0001N\u0003N\u0aa0"+
		"\bN\u0001N\u0001N\u0003N\u0aa4\bN\u0001O\u0001O\u0001O\u0003O\u0aa9\b"+
		"O\u0001O\u0001O\u0004O\u0aad\bO\u000bO\fO\u0aae\u0001P\u0001P\u0003P\u0ab3"+
		"\bP\u0001P\u0005P\u0ab6\bP\nP\fP\u0ab9\tP\u0001P\u0001P\u0003P\u0abd\b"+
		"P\u0001P\u0003P\u0ac0\bP\u0001P\u0001P\u0001P\u0001P\u0001P\u0003P\u0ac7"+
		"\bP\u0001P\u0001P\u0003P\u0acb\bP\u0001P\u0003P\u0ace\bP\u0001P\u0001"+
		"P\u0001P\u0001P\u0001P\u0001P\u0001P\u0005P\u0ad7\bP\nP\fP\u0ada\tP\u0001"+
		"P\u0001P\u0001P\u0001P\u0001P\u0003P\u0ae1\bP\u0001P\u0003P\u0ae4\bP\u0001"+
		"P\u0003P\u0ae7\bP\u0001P\u0001P\u0005P\u0aeb\bP\nP\fP\u0aee\tP\u0001P"+
		"\u0001P\u0001P\u0003P\u0af3\bP\u0003P\u0af5\bP\u0001P\u0001P\u0001P\u0003"+
		"P\u0afa\bP\u0001P\u0003P\u0afd\bP\u0001P\u0001P\u0005P\u0b01\bP\nP\fP"+
		"\u0b04\tP\u0001P\u0001P\u0001P\u0003P\u0b09\bP\u0003P\u0b0b\bP\u0001P"+
		"\u0001P\u0003P\u0b0f\bP\u0001P\u0003P\u0b12\bP\u0001P\u0003P\u0b15\bP"+
		"\u0001P\u0003P\u0b18\bP\u0001P\u0001P\u0005P\u0b1c\bP\nP\fP\u0b1f\tP\u0001"+
		"P\u0001P\u0001P\u0003P\u0b24\bP\u0001P\u0003P\u0b27\bP\u0001P\u0001P\u0005"+
		"P\u0b2b\bP\nP\fP\u0b2e\tP\u0001P\u0001P\u0001P\u0003P\u0b33\bP\u0003P"+
		"\u0b35\bP\u0001P\u0001P\u0001P\u0003P\u0b3a\bP\u0001P\u0003P\u0b3d\bP"+
		"\u0001P\u0001P\u0001P\u0001P\u0001P\u0001P\u0003P\u0b45\bP\u0003P\u0b47"+
		"\bP\u0001P\u0001P\u0001P\u0001P\u0001P\u0001P\u0001P\u0003P\u0b50\bP\u0001"+
		"P\u0003P\u0b53\bP\u0001P\u0003P\u0b56\bP\u0001P\u0001P\u0001P\u0003P\u0b5b"+
		"\bP\u0003P\u0b5d\bP\u0001P\u0001P\u0001P\u0001P\u0001P\u0001P\u0001P\u0003"+
		"P\u0b66\bP\u0001P\u0003P\u0b69\bP\u0001P\u0003P\u0b6c\bP\u0001P\u0001"+
		"P\u0003P\u0b70\bP\u0001P\u0001P\u0001P\u0003P\u0b75\bP\u0001P\u0001P\u0001"+
		"P\u0001P\u0001P\u0001P\u0003P\u0b7d\bP\u0001P\u0001P\u0003P\u0b81\bP\u0001"+
		"P\u0003P\u0b84\bP\u0001P\u0001P\u0001P\u0001P\u0001P\u0001P\u0003P\u0b8c"+
		"\bP\u0001P\u0001P\u0001P\u0001P\u0001P\u0001P\u0001P\u0001P\u0003P\u0b96"+
		"\bP\u0001P\u0001P\u0001P\u0003P\u0b9b\bP\u0001P\u0003P\u0b9e\bP\u0001"+
		"P\u0001P\u0001P\u0001P\u0001P\u0003P\u0ba5\bP\u0001P\u0001P\u0003P\u0ba9"+
		"\bP\u0001P\u0003P\u0bac\bP\u0001P\u0001P\u0003P\u0bb0\bP\u0001P\u0001"+
		"P\u0001P\u0003P\u0bb5\bP\u0001P\u0001P\u0001P\u0001P\u0001P\u0001P\u0001"+
		"P\u0003P\u0bbe\bP\u0001P\u0001P\u0001P\u0001P\u0001P\u0001P\u0001P\u0001"+
		"P\u0001P\u0003P\u0bc9\bP\u0001P\u0001P\u0001P\u0001P\u0001P\u0001P\u0001"+
		"P\u0001P\u0003P\u0bd3\bP\u0001P\u0001P\u0001P\u0001P\u0003P\u0bd9\bP\u0001"+
		"P\u0001P\u0001P\u0001P\u0001P\u0001P\u0001P\u0001P\u0001P\u0003P\u0be4"+
		"\bP\u0001P\u0001P\u0003P\u0be8\bP\u0001P\u0001P\u0001P\u0001P\u0001P\u0001"+
		"P\u0003P\u0bf0\bP\u0001P\u0001P\u0003P\u0bf4\bP\u0001P\u0001P\u0001P\u0001"+
		"P\u0001P\u0001P\u0001P\u0001P\u0003P\u0bfe\bP\u0001P\u0001P\u0001P\u0003"+
		"P\u0c03\bP\u0001P\u0003P\u0c06\bP\u0001P\u0001P\u0001P\u0001P\u0001P\u0001"+
		"P\u0001P\u0003P\u0c0f\bP\u0001P\u0001P\u0001P\u0001P\u0001P\u0001P\u0001"+
		"P\u0001P\u0001P\u0003P\u0c1a\bP\u0001P\u0003P\u0c1d\bP\u0001P\u0001P\u0001"+
		"P\u0001P\u0005P\u0c23\bP\nP\fP\u0c26\tP\u0001P\u0001P\u0001P\u0003P\u0c2b"+
		"\bP\u0001Q\u0001Q\u0001Q\u0003Q\u0c30\bQ\u0001Q\u0001Q\u0001Q\u0001Q\u0005"+
		"Q\u0c36\bQ\nQ\fQ\u0c39\tQ\u0001Q\u0001Q\u0001Q\u0001Q\u0001Q\u0003Q\u0c40"+
		"\bQ\u0001Q\u0001Q\u0001Q\u0001Q\u0001Q\u0003Q\u0c47\bQ\u0001Q\u0001Q\u0001"+
		"Q\u0001Q\u0001Q\u0003Q\u0c4e\bQ\u0001Q\u0001Q\u0001Q\u0001Q\u0001Q\u0003"+
		"Q\u0c55\bQ\u0001Q\u0001Q\u0001Q\u0001Q\u0001Q\u0001Q\u0001Q\u0001Q\u0001"+
		"Q\u0001Q\u0001Q\u0005Q\u0c62\bQ\nQ\fQ\u0c65\tQ\u0001Q\u0001Q\u0001Q\u0001"+
		"Q\u0001Q\u0001Q\u0001Q\u0001Q\u0001Q\u0001Q\u0003Q\u0c71\bQ\u0001Q\u0001"+
		"Q\u0001Q\u0001Q\u0003Q\u0c77\bQ\u0001Q\u0001Q\u0001Q\u0001Q\u0003Q\u0c7d"+
		"\bQ\u0001Q\u0001Q\u0001Q\u0001Q\u0003Q\u0c83\bQ\u0001Q\u0001Q\u0001Q\u0001"+
		"Q\u0003Q\u0c89\bQ\u0001Q\u0001Q\u0001Q\u0001Q\u0003Q\u0c8f\bQ\u0001Q\u0001"+
		"Q\u0001Q\u0001Q\u0003Q\u0c95\bQ\u0001R\u0001R\u0001R\u0003R\u0c9a\bR\u0001"+
		"R\u0001R\u0001S\u0001S\u0001S\u0003S\u0ca1\bS\u0001S\u0001S\u0001T\u0001"+
		"T\u0001T\u0003T\u0ca8\bT\u0001T\u0003T\u0cab\bT\u0001T\u0001T\u0001T\u0001"+
		"T\u0001T\u0003T\u0cb2\bT\u0001T\u0001T\u0001T\u0003T\u0cb7\bT\u0001T\u0005"+
		"T\u0cba\bT\nT\fT\u0cbd\tT\u0001T\u0003T\u0cc0\bT\u0001U\u0001U\u0001U"+
		"\u0001U\u0001U\u0001U\u0001U\u0001U\u0001V\u0001V\u0001V\u0003V\u0ccd"+
		"\bV\u0001V\u0001V\u0001W\u0001W\u0001W\u0003W\u0cd4\bW\u0001W\u0001W\u0001"+
		"X\u0001X\u0001X\u0003X\u0cdb\bX\u0001X\u0001X\u0001Y\u0001Y\u0003Y\u0ce1"+
		"\bY\u0001Y\u0001Y\u0003Y\u0ce5\bY\u0001Y\u0001Y\u0003Y\u0ce9\bY\u0001"+
		"Y\u0003Y\u0cec\bY\u0001Z\u0001Z\u0001Z\u0001Z\u0001Z\u0003Z\u0cf3\bZ\u0001"+
		"Z\u0003Z\u0cf6\bZ\u0001[\u0001[\u0001[\u0003[\u0cfb\b[\u0001[\u0001[\u0001"+
		"\\\u0001\\\u0001\\\u0003\\\u0d02\b\\\u0001\\\u0001\\\u0001\\\u0005\\\u0d07"+
		"\b\\\n\\\f\\\u0d0a\t\\\u0001\\\u0003\\\u0d0d\b\\\u0001]\u0001]\u0001]"+
		"\u0003]\u0d12\b]\u0001]\u0001]\u0001]\u0005]\u0d17\b]\n]\f]\u0d1a\t]\u0001"+
		"^\u0001^\u0001^\u0001^\u0001^\u0001^\u0001^\u0001^\u0005^\u0d24\b^\n^"+
		"\f^\u0d27\t^\u0003^\u0d29\b^\u0001^\u0001^\u0001^\u0003^\u0d2e\b^\u0001"+
		"^\u0001^\u0001^\u0003^\u0d33\b^\u0005^\u0d35\b^\n^\f^\u0d38\t^\u0001^"+
		"\u0001^\u0001^\u0003^\u0d3d\b^\u0001_\u0001_\u0003_\u0d41\b_\u0001_\u0001"+
		"_\u0003_\u0d45\b_\u0001_\u0003_\u0d48\b_\u0001_\u0001_\u0001_\u0005_\u0d4d"+
		"\b_\n_\f_\u0d50\t_\u0001`\u0001`\u0001`\u0001`\u0001`\u0005`\u0d57\b`"+
		"\n`\f`\u0d5a\t`\u0001a\u0001a\u0003a\u0d5e\ba\u0001a\u0001a\u0001a\u0001"+
		"b\u0001b\u0003b\u0d65\bb\u0001b\u0001b\u0003b\u0d69\bb\u0001c\u0001c\u0001"+
		"c\u0001c\u0001c\u0003c\u0d70\bc\u0001c\u0003c\u0d73\bc\u0001d\u0001d\u0003"+
		"d\u0d77\bd\u0001e\u0001e\u0001e\u0001f\u0001f\u0001f\u0001f\u0003f\u0d80"+
		"\bf\u0001g\u0001g\u0003g\u0d84\bg\u0001g\u0003g\u0d87\bg\u0001g\u0003"+
		"g\u0d8a\bg\u0001g\u0001g\u0001g\u0001g\u0003g\u0d90\bg\u0001g\u0003g\u0d93"+
		"\bg\u0001g\u0001g\u0003g\u0d97\bg\u0001g\u0003g\u0d9a\bg\u0001g\u0001"+
		"g\u0003g\u0d9e\bg\u0001g\u0003g\u0da1\bg\u0001g\u0001g\u0001g\u0001g\u0005"+
		"g\u0da7\bg\ng\fg\u0daa\tg\u0003g\u0dac\bg\u0001g\u0001g\u0001g\u0001g"+
		"\u0001g\u0001g\u0001g\u0005g\u0db5\bg\ng\fg\u0db8\tg\u0003g\u0dba\bg\u0001"+
		"h\u0001h\u0001h\u0003h\u0dbf\bh\u0001h\u0003h\u0dc2\bh\u0001h\u0001h\u0001"+
		"h\u0003h\u0dc7\bh\u0001h\u0001h\u0001h\u0001h\u0001h\u0001h\u0001h\u0001"+
		"h\u0003h\u0dd1\bh\u0001h\u0001h\u0001h\u0003h\u0dd6\bh\u0001h\u0001h\u0004"+
		"h\u0dda\bh\u000bh\fh\u0ddb\u0003h\u0dde\bh\u0001h\u0001h\u0004h\u0de2"+
		"\bh\u000bh\fh\u0de3\u0003h\u0de6\bh\u0001h\u0001h\u0001h\u0001h\u0003"+
		"h\u0dec\bh\u0001h\u0001h\u0001h\u0001h\u0005h\u0df2\bh\nh\fh\u0df5\th"+
		"\u0001h\u0001h\u0003h\u0df9\bh\u0001h\u0001h\u0001h\u0001h\u0005h\u0dff"+
		"\bh\nh\fh\u0e02\th\u0003h\u0e04\bh\u0001i\u0001i\u0001i\u0003i\u0e09\b"+
		"i\u0001i\u0003i\u0e0c\bi\u0001i\u0001i\u0001i\u0003i\u0e11\bi\u0001i\u0001"+
		"i\u0001i\u0001i\u0001i\u0001i\u0003i\u0e19\bi\u0001i\u0001i\u0001i\u0001"+
		"i\u0001i\u0001i\u0003i\u0e21\bi\u0001i\u0001i\u0001i\u0001i\u0003i\u0e27"+
		"\bi\u0001i\u0001i\u0001i\u0001i\u0005i\u0e2d\bi\ni\fi\u0e30\ti\u0001i"+
		"\u0001i\u0003i\u0e34\bi\u0001i\u0001i\u0001i\u0001i\u0005i\u0e3a\bi\n"+
		"i\fi\u0e3d\ti\u0003i\u0e3f\bi\u0001j\u0001j\u0003j\u0e43\bj\u0001j\u0003"+
		"j\u0e46\bj\u0001j\u0001j\u0001j\u0001j\u0001j\u0001j\u0003j\u0e4e\bj\u0001"+
		"j\u0001j\u0001j\u0001j\u0003j\u0e54\bj\u0001j\u0001j\u0001j\u0001j\u0001"+
		"j\u0005j\u0e5b\bj\nj\fj\u0e5e\tj\u0003j\u0e60\bj\u0001k\u0001k\u0003k"+
		"\u0e64\bk\u0001k\u0001k\u0003k\u0e68\bk\u0001k\u0001k\u0003k\u0e6c\bk"+
		"\u0001k\u0004k\u0e6f\bk\u000bk\fk\u0e70\u0001k\u0001k\u0003k\u0e75\bk"+
		"\u0001k\u0001k\u0003k\u0e79\bk\u0003k\u0e7b\bk\u0001k\u0003k\u0e7e\bk"+
		"\u0001k\u0003k\u0e81\bk\u0001k\u0003k\u0e84\bk\u0001k\u0001k\u0004k\u0e88"+
		"\bk\u000bk\fk\u0e89\u0001k\u0001k\u0003k\u0e8e\bk\u0001k\u0003k\u0e91"+
		"\bk\u0001k\u0003k\u0e94\bk\u0001k\u0003k\u0e97\bk\u0001k\u0003k\u0e9a"+
		"\bk\u0001k\u0001k\u0001k\u0004k\u0e9f\bk\u000bk\fk\u0ea0\u0003k\u0ea3"+
		"\bk\u0001l\u0001l\u0001l\u0003l\u0ea8\bl\u0001l\u0001l\u0001l\u0001l\u0003"+
		"l\u0eae\bl\u0001l\u0005l\u0eb1\bl\nl\fl\u0eb4\tl\u0001m\u0001m\u0003m"+
		"\u0eb8\bm\u0001m\u0001m\u0001m\u0005m\u0ebd\bm\nm\fm\u0ec0\tm\u0001n\u0001"+
		"n\u0001n\u0003n\u0ec5\bn\u0001n\u0003n\u0ec8\bn\u0001o\u0001o\u0003o\u0ecc"+
		"\bo\u0001p\u0001p\u0001p\u0001p\u0003p\u0ed2\bp\u0001p\u0001p\u0001p\u0001"+
		"p\u0003p\u0ed8\bp\u0001p\u0005p\u0edb\bp\np\fp\u0ede\tp\u0003p\u0ee0\b"+
		"p\u0001q\u0001q\u0001q\u0001q\u0003q\u0ee6\bq\u0001r\u0001r\u0003r\u0eea"+
		"\br\u0001s\u0001s\u0001s\u0001s\u0001s\u0001s\u0003s\u0ef2\bs\u0001s\u0003"+
		"s\u0ef5\bs\u0001t\u0001t\u0003t\u0ef9\bt\u0001t\u0003t\u0efc\bt\u0001"+
		"t\u0003t\u0eff\bt\u0001t\u0001t\u0001t\u0003t\u0f04\bt\u0001t\u0003t\u0f07"+
		"\bt\u0001t\u0001t\u0001t\u0001t\u0001t\u0003t\u0f0e\bt\u0001t\u0001t\u0003"+
		"t\u0f12\bt\u0001t\u0003t\u0f15\bt\u0001t\u0001t\u0003t\u0f19\bt\u0001"+
		"u\u0001u\u0003u\u0f1d\bu\u0001u\u0003u\u0f20\bu\u0001u\u0003u\u0f23\b"+
		"u\u0001u\u0001u\u0001u\u0003u\u0f28\bu\u0001u\u0001u\u0001u\u0001u\u0003"+
		"u\u0f2e\bu\u0005u\u0f30\bu\nu\fu\u0f33\tu\u0001u\u0001u\u0001u\u0001u"+
		"\u0001u\u0001u\u0001u\u0003u\u0f3c\bu\u0001u\u0001u\u0001u\u0001u\u0003"+
		"u\u0f42\bu\u0005u\u0f44\bu\nu\fu\u0f47\tu\u0001u\u0001u\u0001u\u0003u"+
		"\u0f4c\bu\u0001u\u0001u\u0003u\u0f50\bu\u0001v\u0001v\u0001v\u0001v\u0003"+
		"v\u0f56\bv\u0001v\u0003v\u0f59\bv\u0001w\u0001w\u0001w\u0001w\u0001w\u0001"+
		"w\u0001w\u0001w\u0001w\u0001w\u0003w\u0f65\bw\u0001w\u0001w\u0003w\u0f69"+
		"\bw\u0001w\u0001w\u0003w\u0f6d\bw\u0001x\u0001x\u0001x\u0001x\u0001x\u0001"+
		"x\u0003x\u0f75\bx\u0001x\u0001x\u0003x\u0f79\bx\u0001y\u0001y\u0001y\u0001"+
		"y\u0001z\u0001z\u0003z\u0f81\bz\u0001z\u0003z\u0f84\bz\u0001z\u0001z\u0003"+
		"z\u0f88\bz\u0001z\u0003z\u0f8b\bz\u0001z\u0001z\u0001z\u0001z\u0005z\u0f91"+
		"\bz\nz\fz\u0f94\tz\u0001z\u0001z\u0003z\u0f98\bz\u0001z\u0003z\u0f9b\b"+
		"z\u0001z\u0003z\u0f9e\bz\u0001{\u0001{\u0003{\u0fa2\b{\u0001{\u0003{\u0fa5"+
		"\b{\u0001{\u0001{\u0001{\u0001{\u0001{\u0005{\u0fac\b{\n{\f{\u0faf\t{"+
		"\u0001{\u0001{\u0003{\u0fb3\b{\u0001|\u0001|\u0001|\u0001|\u0001|\u0005"+
		"|\u0fba\b|\n|\f|\u0fbd\t|\u0001}\u0001}\u0003}\u0fc1\b}\u0001~\u0001~"+
		"\u0001~\u0005~\u0fc6\b~\n~\f~\u0fc9\t~\u0001\u007f\u0001\u007f\u0005\u007f"+
		"\u0fcd\b\u007f\n\u007f\f\u007f\u0fd0\t\u007f\u0001\u007f\u0001\u007f\u0001"+
		"\u007f\u0005\u007f\u0fd5\b\u007f\n\u007f\f\u007f\u0fd8\t\u007f\u0001\u007f"+
		"\u0001\u007f\u0001\u007f\u0003\u007f\u0fdd\b\u007f\u0001\u0080\u0001\u0080"+
		"\u0001\u0080\u0001\u0080\u0001\u0080\u0001\u0080\u0003\u0080\u0fe5\b\u0080"+
		"\u0001\u0080\u0003\u0080\u0fe8\b\u0080\u0001\u0080\u0003\u0080\u0feb\b"+
		"\u0080\u0001\u0080\u0001\u0080\u0001\u0080\u0005\u0080\u0ff0\b\u0080\n"+
		"\u0080\f\u0080\u0ff3\t\u0080\u0003\u0080\u0ff5\b\u0080\u0001\u0080\u0001"+
		"\u0080\u0001\u0080\u0001\u0080\u0001\u0080\u0003\u0080\u0ffc\b\u0080\u0001"+
		"\u0080\u0003\u0080\u0fff\b\u0080\u0001\u0080\u0001\u0080\u0001\u0080\u0001"+
		"\u0080\u0001\u0080\u0001\u0080\u0003\u0080\u1007\b\u0080\u0001\u0081\u0001"+
		"\u0081\u0001\u0081\u0001\u0081\u0003\u0081\u100d\b\u0081\u0001\u0081\u0001"+
		"\u0081\u0001\u0081\u0001\u0081\u0001\u0082\u0001\u0082\u0001\u0082\u0001"+
		"\u0082\u0001\u0082\u0003\u0082\u1018\b\u0082\u0001\u0083\u0003\u0083\u101b"+
		"\b\u0083\u0001\u0083\u0001\u0083\u0003\u0083\u101f\b\u0083\u0001\u0083"+
		"\u0001\u0083\u0005\u0083\u1023\b\u0083\n\u0083\f\u0083\u1026\t\u0083\u0001"+
		"\u0083\u0001\u0083\u0001\u0083\u0001\u0083\u0005\u0083\u102c\b\u0083\n"+
		"\u0083\f\u0083\u102f\t\u0083\u0001\u0083\u0001\u0083\u0003\u0083\u1033"+
		"\b\u0083\u0001\u0083\u0001\u0083\u0003\u0083\u1037\b\u0083\u0001\u0083"+
		"\u0001\u0083\u0005\u0083\u103b\b\u0083\n\u0083\f\u0083\u103e\t\u0083\u0001"+
		"\u0083\u0001\u0083\u0001\u0083\u0003\u0083\u1043\b\u0083\u0003\u0083\u1045"+
		"\b\u0083\u0001\u0083\u0001\u0083\u0003\u0083\u1049\b\u0083\u0001\u0084"+
		"\u0001\u0084\u0001\u0084\u0001\u0084\u0001\u0084\u0001\u0084\u0001\u0084"+
		"\u0003\u0084\u1052\b\u0084\u0001\u0085\u0001\u0085\u0001\u0085\u0001\u0085"+
		"\u0001\u0085\u0001\u0085\u0001\u0085\u0001\u0085\u0003\u0085\u105c\b\u0085"+
		"\u0001\u0086\u0001\u0086\u0001\u0086\u0001\u0086\u0001\u0086\u0001\u0086"+
		"\u0001\u0086\u0001\u0086\u0003\u0086\u1066\b\u0086\u0001\u0087\u0001\u0087"+
		"\u0005\u0087\u106a\b\u0087\n\u0087\f\u0087\u106d\t\u0087\u0001\u0087\u0001"+
		"\u0087\u0003\u0087\u1071\b\u0087\u0001\u0087\u0003\u0087\u1074\b\u0087"+
		"\u0001\u0087\u0003\u0087\u1077\b\u0087\u0001\u0087\u0003\u0087\u107a\b"+
		"\u0087\u0001\u0087\u0003\u0087\u107d\b\u0087\u0001\u0087\u0003\u0087\u1080"+
		"\b\u0087\u0001\u0087\u0003\u0087\u1083\b\u0087\u0001\u0087\u0001\u0087"+
		"\u0005\u0087\u1087\b\u0087\n\u0087\f\u0087\u108a\t\u0087\u0001\u0087\u0001"+
		"\u0087\u0003\u0087\u108e\b\u0087\u0001\u0087\u0003\u0087\u1091\b\u0087"+
		"\u0001\u0087\u0003\u0087\u1094\b\u0087\u0001\u0087\u0003\u0087\u1097\b"+
		"\u0087\u0001\u0087\u0003\u0087\u109a\b\u0087\u0001\u0087\u0003\u0087\u109d"+
		"\b\u0087\u0001\u0087\u0003\u0087\u10a0\b\u0087\u0003\u0087\u10a2\b\u0087"+
		"\u0001\u0088\u0001\u0088\u0005\u0088\u10a6\b\u0088\n\u0088\f\u0088\u10a9"+
		"\t\u0088\u0001\u0088\u0001\u0088\u0003\u0088\u10ad\b\u0088\u0001\u0088"+
		"\u0003\u0088\u10b0\b\u0088\u0001\u0088\u0003\u0088\u10b3\b\u0088\u0001"+
		"\u0088\u0003\u0088\u10b6\b\u0088\u0001\u0088\u0003\u0088\u10b9\b\u0088"+
		"\u0001\u0088\u0003\u0088\u10bc\b\u0088\u0001\u0088\u0003\u0088\u10bf\b"+
		"\u0088\u0001\u0089\u0001\u0089\u0003\u0089\u10c3\b\u0089\u0001\u0089\u0001"+
		"\u0089\u0001\u008a\u0001\u008a\u0003\u008a\u10c9\b\u008a\u0001\u008a\u0001"+
		"\u008a\u0003\u008a\u10cd\b\u008a\u0001\u008b\u0001\u008b\u0001\u008b\u0001"+
		"\u008b\u0001\u008b\u0001\u008b\u0003\u008b\u10d5\b\u008b\u0001\u008b\u0001"+
		"\u008b\u0003\u008b\u10d9\b\u008b\u0001\u008b\u0003\u008b\u10dc\b\u008b"+
		"\u0003\u008b\u10de\b\u008b\u0001\u008c\u0001\u008c\u0001\u008c\u0001\u008c"+
		"\u0001\u008c\u0001\u008c\u0001\u008c\u0001\u008c\u0001\u008c\u0001\u008c"+
		"\u0001\u008c\u0003\u008c\u10eb\b\u008c\u0001\u008c\u0003\u008c\u10ee\b"+
		"\u008c\u0001\u008d\u0001\u008d\u0001\u008d\u0005\u008d\u10f3\b\u008d\n"+
		"\u008d\f\u008d\u10f6\t\u008d\u0001\u008e\u0001\u008e\u0001\u008e\u0001"+
		"\u008e\u0001\u008e\u0001\u008e\u0001\u008e\u0003\u008e\u10ff\b\u008e\u0001"+
		"\u008e\u0003\u008e\u1102\b\u008e\u0001\u008e\u0001\u008e\u0001\u008e\u0003"+
		"\u008e\u1107\b\u008e\u0003\u008e\u1109\b\u008e\u0001\u008e\u0001\u008e"+
		"\u0003\u008e\u110d\b\u008e\u0001\u008e\u0001\u008e\u0001\u008e\u0001\u008e"+
		"\u0001\u008e\u0001\u008e\u0003\u008e\u1115\b\u008e\u0001\u008f\u0001\u008f"+
		"\u0001\u008f\u0001\u008f\u0003\u008f\u111b\b\u008f\u0001\u008f\u0001\u008f"+
		"\u0001\u008f\u0001\u0090\u0001\u0090\u0001\u0090\u0001\u0090\u0003\u0090"+
		"\u1124\b\u0090\u0001\u0090\u0001\u0090\u0001\u0090\u0001\u0091\u0001\u0091"+
		"\u0001\u0091\u0001\u0091\u0001\u0091\u0001\u0091\u0001\u0091\u0001\u0091"+
		"\u0003\u0091\u1131\b\u0091\u0001\u0092\u0001\u0092\u0003\u0092\u1135\b"+
		"\u0092\u0001\u0092\u0001\u0092\u0005\u0092\u1139\b\u0092\n\u0092\f\u0092"+
		"\u113c\t\u0092\u0001\u0093\u0001\u0093\u0001\u0093\u0001\u0093\u0001\u0093"+
		"\u0001\u0093\u0003\u0093\u1144\b\u0093\u0001\u0093\u0003\u0093\u1147\b"+
		"\u0093\u0001\u0093\u0001\u0093\u0003\u0093\u114b\b\u0093\u0001\u0093\u0003"+
		"\u0093\u114e\b\u0093\u0001\u0093\u0001\u0093\u0003\u0093\u1152\b\u0093"+
		"\u0001\u0093\u0001\u0093\u0003\u0093\u1156\b\u0093\u0001\u0093\u0003\u0093"+
		"\u1159\b\u0093\u0003\u0093\u115b\b\u0093\u0001\u0094\u0001\u0094\u0001"+
		"\u0094\u0001\u0094\u0005\u0094\u1161\b\u0094\n\u0094\f\u0094\u1164\t\u0094"+
		"\u0001\u0094\u0001\u0094\u0001\u0094\u0001\u0094\u0001\u0094\u0001\u0094"+
		"\u0001\u0094\u0001\u0094\u0001\u0094\u0003\u0094\u116f\b\u0094\u0001\u0094"+
		"\u0001\u0094\u0004\u0094\u1173\b\u0094\u000b\u0094\f\u0094\u1174\u0003"+
		"\u0094\u1177\b\u0094\u0001\u0094\u0001\u0094\u0004\u0094\u117b\b\u0094"+
		"\u000b\u0094\f\u0094\u117c\u0003\u0094\u117f\b\u0094\u0003\u0094\u1181"+
		"\b\u0094\u0001\u0095\u0001\u0095\u0001\u0095\u0001\u0095\u0003\u0095\u1187"+
		"\b\u0095\u0001\u0095\u0001\u0095\u0001\u0095\u0001\u0095\u0001\u0095\u0001"+
		"\u0095\u0003\u0095\u118f\b\u0095\u0001\u0096\u0001\u0096\u0001\u0096\u0001"+
		"\u0096\u0001\u0096\u0001\u0096\u0003\u0096\u1197\b\u0096\u0001\u0097\u0001"+
		"\u0097\u0003\u0097\u119b\b\u0097\u0001\u0097\u0001\u0097\u0003\u0097\u119f"+
		"\b\u0097\u0001\u0098\u0001\u0098\u0001\u0098\u0001\u0098\u0001\u0098\u0005"+
		"\u0098\u11a6\b\u0098\n\u0098\f\u0098\u11a9\t\u0098\u0001\u0098\u0001\u0098"+
		"\u0003\u0098\u11ad\b\u0098\u0001\u0099\u0001\u0099\u0001\u0099\u0001\u009a"+
		"\u0001\u009a\u0001\u009a\u0001\u009a\u0001\u009a\u0001\u009a\u0001\u009a"+
		"\u0001\u009a\u0001\u009a\u0001\u009a\u0001\u009a\u0001\u009a\u0001\u009a"+
		"\u0005\u009a\u11bf\b\u009a\n\u009a\f\u009a\u11c2\t\u009a\u0001\u009b\u0001"+
		"\u009b\u0003\u009b\u11c6\b\u009b\u0001\u009c\u0001\u009c\u0001\u009c\u0001"+
		"\u009c\u0003\u009c\u11cc\b\u009c\u0001\u009c\u0001\u009c\u0001\u009c\u0001"+
		"\u009c\u0001\u009c\u0003\u009c\u11d3\b\u009c\u0001\u009d\u0001\u009d\u0001"+
		"\u009d\u0003\u009d\u11d8\b\u009d\u0001\u009e\u0001\u009e\u0001\u009e\u0001"+
		"\u009e\u0001\u009e\u0005\u009e\u11df\b\u009e\n\u009e\f\u009e\u11e2\t\u009e"+
		"\u0003\u009e\u11e4\b\u009e\u0001\u009f\u0001\u009f\u0003\u009f\u11e8\b"+
		"\u009f\u0001\u00a0\u0001\u00a0\u0003\u00a0\u11ec\b\u00a0\u0001\u00a0\u0001"+
		"\u00a0\u0003\u00a0\u11f0\b\u00a0\u0001\u00a0\u0003\u00a0\u11f3\b\u00a0"+
		"\u0001\u00a0\u0003\u00a0\u11f6\b\u00a0\u0001\u00a0\u0003\u00a0\u11f9\b"+
		"\u00a0\u0001\u00a1\u0001\u00a1\u0003\u00a1\u11fd\b\u00a1\u0001\u00a1\u0001"+
		"\u00a1\u0003\u00a1\u1201\b\u00a1\u0001\u00a1\u0003\u00a1\u1204\b\u00a1"+
		"\u0001\u00a1\u0003\u00a1\u1207\b\u00a1\u0001\u00a1\u0003\u00a1\u120a\b"+
		"\u00a1\u0001\u00a2\u0001\u00a2\u0001\u00a2\u0001\u00a3\u0001\u00a3\u0003"+
		"\u00a3\u1211\b\u00a3\u0001\u00a3\u0001\u00a3\u0003\u00a3\u1215\b\u00a3"+
		"\u0001\u00a3\u0001\u00a3\u0001\u00a4\u0001\u00a4\u0001\u00a4\u0001\u00a4"+
		"\u0001\u00a5\u0001\u00a5\u0001\u00a5\u0001\u00a5\u0001\u00a5\u0005\u00a5"+
		"\u1222\b\u00a5\n\u00a5\f\u00a5\u1225\t\u00a5\u0001\u00a5\u0003\u00a5\u1228"+
		"\b\u00a5\u0001\u00a6\u0001\u00a6\u0001\u00a6\u0001\u00a7\u0001\u00a7\u0001"+
		"\u00a7\u0001\u00a7\u0001\u00a7\u0001\u00a8\u0001\u00a8\u0003\u00a8\u1234"+
		"\b\u00a8\u0001\u00a8\u0001\u00a8\u0001\u00a8\u0001\u00a8\u0005\u00a8\u123a"+
		"\b\u00a8\n\u00a8\f\u00a8\u123d\t\u00a8\u0001\u00a9\u0001\u00a9\u0001\u00a9"+
		"\u0001\u00a9\u0001\u00a9\u0001\u00a9\u0001\u00a9\u0003\u00a9\u1246\b\u00a9"+
		"\u0001\u00aa\u0001\u00aa\u0003\u00aa\u124a\b\u00aa\u0001\u00aa\u0003\u00aa"+
		"\u124d\b\u00aa\u0001\u00aa\u0001\u00aa\u0001\u00ab\u0001\u00ab\u0003\u00ab"+
		"\u1253\b\u00ab\u0001\u00ab\u0003\u00ab\u1256\b\u00ab\u0001\u00ab\u0003"+
		"\u00ab\u1259\b\u00ab\u0001\u00ac\u0001\u00ac\u0001\u00ac\u0001\u00ac\u0001"+
		"\u00ac\u0001\u00ac\u0001\u00ac\u0003\u00ac\u1262\b\u00ac\u0001\u00ad\u0001"+
		"\u00ad\u0001\u00ad\u0001\u00ad\u0001\u00ad\u0001\u00ad\u0001\u00ad\u0003"+
		"\u00ad\u126b\b\u00ad\u0001\u00ae\u0001\u00ae\u0001\u00ae\u0001\u00ae\u0001"+
		"\u00ae\u0001\u00ae\u0005\u00ae\u1273\b\u00ae\n\u00ae\f\u00ae\u1276\t\u00ae"+
		"\u0001\u00ae\u0003\u00ae\u1279\b\u00ae\u0001\u00af\u0001\u00af\u0001\u00af"+
		"\u0001\u00af\u0001\u00af\u0001\u00af\u0005\u00af\u1281\b\u00af\n\u00af"+
		"\f\u00af\u1284\t\u00af\u0001\u00b0\u0001\u00b0\u0001\u00b0\u0001\u00b0"+
		"\u0001\u00b0\u0001\u00b0\u0001\u00b0\u0003\u00b0\u128d\b\u00b0\u0001\u00b1"+
		"\u0001\u00b1\u0001\u00b1\u0001\u00b2\u0001\u00b2\u0001\u00b2\u0003\u00b2"+
		"\u1295\b\u00b2\u0001\u00b2\u0003\u00b2\u1298\b\u00b2\u0001\u00b3\u0001"+
		"\u00b3\u0001\u00b3\u0001\u00b3\u0001\u00b3\u0005\u00b3\u129f\b\u00b3\n"+
		"\u00b3\f\u00b3\u12a2\t\u00b3\u0003\u00b3\u12a4\b\u00b3\u0001\u00b3\u0001"+
		"\u00b3\u0003\u00b3\u12a8\b\u00b3\u0001\u00b3\u0005\u00b3\u12ab\b\u00b3"+
		"\n\u00b3\f\u00b3\u12ae\t\u00b3\u0001\u00b3\u0003\u00b3\u12b1\b\u00b3\u0001"+
		"\u00b4\u0001\u00b4\u0001\u00b4\u0001\u00b4\u0001\u00b4\u0005\u00b4\u12b8"+
		"\b\u00b4\n\u00b4\f\u00b4\u12bb\t\u00b4\u0003\u00b4\u12bd\b\u00b4\u0001"+
		"\u00b5\u0001\u00b5\u0001\u00b5\u0001\u00b6\u0001\u00b6\u0001\u00b6\u0001"+
		"\u00b7\u0001\u00b7\u0001\u00b7\u0001\u00b7\u0001\u00b7\u0001\u00b7\u0001"+
		"\u00b7\u0001\u00b7\u0001\u00b7\u0001\u00b7\u0001\u00b7\u0001\u00b7\u0001"+
		"\u00b7\u0001\u00b7\u0001\u00b7\u0001\u00b7\u0001\u00b7\u0001\u00b7\u0001"+
		"\u00b7\u0001\u00b7\u0001\u00b7\u0005\u00b7\u12da\b\u00b7\n\u00b7\f\u00b7"+
		"\u12dd\t\u00b7\u0003\u00b7\u12df\b\u00b7\u0001\u00b7\u0003\u00b7\u12e2"+
		"\b\u00b7\u0001\u00b8\u0001\u00b8\u0001\u00b9\u0001\u00b9\u0001\u00ba\u0001"+
		"\u00ba\u0001\u00bb\u0001\u00bb\u0001\u00bb\u0001\u00bb\u0001\u00bc\u0001"+
		"\u00bc\u0001\u00bc\u0001\u00bc\u0001\u00bc\u0001\u00bc\u0001\u00bc\u0001"+
		"\u00bc\u0001\u00bc\u0001\u00bc\u0001\u00bc\u0001\u00bc\u0001\u00bc\u0001"+
		"\u00bc\u0001\u00bc\u0001\u00bc\u0001\u00bc\u0001\u00bc\u0001\u00bc\u0001"+
		"\u00bc\u0001\u00bc\u0001\u00bc\u0001\u00bc\u0001\u00bc\u0001\u00bc\u0001"+
		"\u00bc\u0001\u00bc\u0001\u00bc\u0001\u00bc\u0001\u00bc\u0001\u00bc\u0001"+
		"\u00bc\u0001\u00bc\u0001\u00bc\u0001\u00bc\u0001\u00bc\u0001\u00bc\u0001"+
		"\u00bc\u0001\u00bc\u0001\u00bc\u0001\u00bc\u0001\u00bc\u0005\u00bc\u1318"+
		"\b\u00bc\n\u00bc\f\u00bc\u131b\t\u00bc\u0001\u00bc\u0001\u00bc\u0003\u00bc"+
		"\u131f\b\u00bc\u0001\u00bd\u0001\u00bd\u0001\u00bd\u0001\u00bd\u0001\u00bd"+
		"\u0001\u00bd\u0001\u00be\u0001\u00be\u0001\u00bf\u0001\u00bf\u0001\u00bf"+
		"\u0001\u00bf\u0001\u00bf\u0001\u00bf\u0001\u00bf\u0001\u00bf\u0001\u00bf"+
		"\u0001\u00bf\u0001\u00bf\u0001\u00bf\u0001\u00bf\u0001\u00bf\u0001\u00bf"+
		"\u0001\u00bf\u0001\u00bf\u0001\u00bf\u0003\u00bf\u133b\b\u00bf\u0001\u00c0"+
		"\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0"+
		"\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0003\u00c0"+
		"\u1349\b\u00c0\u0001\u00c1\u0001\u00c1\u0001\u00c1\u0005\u00c1\u134e\b"+
		"\u00c1\n\u00c1\f\u00c1\u1351\t\u00c1\u0001\u00c1\u0003\u00c1\u1354\b\u00c1"+
		"\u0001\u00c2\u0001\u00c2\u0001\u00c2\u0001\u00c2\u0003\u00c2\u135a\b\u00c2"+
		"\u0001\u00c3\u0001\u00c3\u0001\u00c3\u0001\u00c3\u0001\u00c3\u0001\u00c3"+
		"\u0003\u00c3\u1362\b\u00c3\u0003\u00c3\u1364\b\u00c3\u0001\u00c4\u0001"+
		"\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c5\u0001\u00c5\u0001\u00c5\u0001"+
		"\u00c5\u0001\u00c5\u0003\u00c5\u136f\b\u00c5\u0001\u00c6\u0001\u00c6\u0001"+
		"\u00c6\u0001\u00c6\u0001\u00c7\u0001\u00c7\u0001\u00c7\u0001\u00c7\u0003"+
		"\u00c7\u1379\b\u00c7\u0001\u00c8\u0001\u00c8\u0001\u00c8\u0001\u00c8\u0001"+
		"\u00c8\u0003\u00c8\u1380\b\u00c8\u0001\u00c9\u0001\u00c9\u0001\u00c9\u0001"+
		"\u00c9\u0003\u00c9\u1386\b\u00c9\u0001\u00ca\u0001\u00ca\u0001\u00ca\u0001"+
		"\u00ca\u0001\u00cb\u0001\u00cb\u0003\u00cb\u138e\b\u00cb\u0001\u00cc\u0001"+
		"\u00cc\u0001\u00cc\u0003\u00cc\u1393\b\u00cc\u0001\u00cc\u0001\u00cc\u0001"+
		"\u00cc\u0001\u00cc\u0005\u00cc\u1399\b\u00cc\n\u00cc\f\u00cc\u139c\t\u00cc"+
		"\u0001\u00cc\u0001\u00cc\u0001\u00cc\u0005\u00cc\u13a1\b\u00cc\n\u00cc"+
		"\f\u00cc\u13a4\t\u00cc\u0001\u00cc\u0001\u00cc\u0001\u00cc\u0005\u00cc"+
		"\u13a9\b\u00cc\n\u00cc\f\u00cc\u13ac\t\u00cc\u0001\u00cc\u0001\u00cc\u0001"+
		"\u00cc\u0005\u00cc\u13b1\b\u00cc\n\u00cc\f\u00cc\u13b4\t\u00cc\u0001\u00cc"+
		"\u0005\u00cc\u13b7\b\u00cc\n\u00cc\f\u00cc\u13ba\t\u00cc\u0003\u00cc\u13bc"+
		"\b\u00cc\u0001\u00cc\u0001\u00cc\u0003\u00cc\u13c0\b\u00cc\u0001\u00cd"+
		"\u0001\u00cd\u0001\u00cd\u0003\u00cd\u13c5\b\u00cd\u0001\u00cd\u0004\u00cd"+
		"\u13c8\b\u00cd\u000b\u00cd\f\u00cd\u13c9\u0001\u00cd\u0001\u00cd\u0004"+
		"\u00cd\u13ce\b\u00cd\u000b\u00cd\f\u00cd\u13cf\u0003\u00cd\u13d2\b\u00cd"+
		"\u0001\u00cd\u0001\u00cd\u0001\u00cd\u0001\u00ce\u0001\u00ce\u0001\u00ce"+
		"\u0001\u00ce\u0004\u00ce\u13db\b\u00ce\u000b\u00ce\f\u00ce\u13dc\u0001"+
		"\u00ce\u0005\u00ce\u13e0\b\u00ce\n\u00ce\f\u00ce\u13e3\t\u00ce\u0001\u00ce"+
		"\u0001\u00ce\u0004\u00ce\u13e7\b\u00ce\u000b\u00ce\f\u00ce\u13e8\u0003"+
		"\u00ce\u13eb\b\u00ce\u0001\u00ce\u0001\u00ce\u0001\u00ce\u0001\u00cf\u0001"+
		"\u00cf\u0001\u00cf\u0001\u00d0\u0001\u00d0\u0001\u00d0\u0001\u00d1\u0001"+
		"\u00d1\u0001\u00d1\u0003\u00d1\u13f9\b\u00d1\u0001\u00d1\u0001\u00d1\u0004"+
		"\u00d1\u13fd\b\u00d1\u000b\u00d1\f\u00d1\u13fe\u0001\u00d1\u0001\u00d1"+
		"\u0001\u00d1\u0003\u00d1\u1404\b\u00d1\u0001\u00d2\u0001\u00d2\u0001\u00d2"+
		"\u0003\u00d2\u1409\b\u00d2\u0001\u00d2\u0001\u00d2\u0004\u00d2\u140d\b"+
		"\u00d2\u000b\u00d2\f\u00d2\u140e\u0001\u00d2\u0001\u00d2\u0001\u00d2\u0001"+
		"\u00d2\u0001\u00d2\u0003\u00d2\u1416\b\u00d2\u0001\u00d3\u0001\u00d3\u0001"+
		"\u00d3\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0003\u00d4\u141e\b\u00d4\u0001"+
		"\u00d4\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0004\u00d4\u1424\b\u00d4\u000b"+
		"\u00d4\f\u00d4\u1425\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0003\u00d4\u142b"+
		"\b\u00d4\u0001\u00d5\u0001\u00d5\u0001\u00d5\u0001\u00d5\u0003\u00d5\u1431"+
		"\b\u00d5\u0001\u00d5\u0003\u00d5\u1434\b\u00d5\u0001\u00d5\u0001\u00d5"+
		"\u0001\u00d5\u0001\u00d5\u0001\u00d5\u0001\u00d5\u0003\u00d5\u143c\b\u00d5"+
		"\u0001\u00d6\u0001\u00d6\u0001\u00d6\u0001\u00d6\u0001\u00d6\u0003\u00d6"+
		"\u1443\b\u00d6\u0001\u00d7\u0001\u00d7\u0001\u00d7\u0001\u00d7\u0001\u00d7"+
		"\u0001\u00d7\u0001\u00d7\u0003\u00d7\u144c\b\u00d7\u0001\u00d7\u0003\u00d7"+
		"\u144f\b\u00d7\u0001\u00d8\u0001\u00d8\u0001\u00d8\u0001\u00d8\u0001\u00d8"+
		"\u0001\u00d8\u0001\u00d9\u0001\u00d9\u0001\u00d9\u0001\u00d9\u0001\u00d9"+
		"\u0001\u00d9\u0001\u00d9\u0005\u00d9\u145e\b\u00d9\n\u00d9\f\u00d9\u1461"+
		"\t\u00d9\u0001\u00d9\u0001\u00d9\u0001\u00da\u0001\u00da\u0001\u00da\u0003"+
		"\u00da\u1468\b\u00da\u0001\u00da\u0001\u00da\u0001\u00da\u0001\u00da\u0001"+
		"\u00da\u0001\u00da\u0003\u00da\u1470\b\u00da\u0001\u00db\u0001\u00db\u0003"+
		"\u00db\u1474\b\u00db\u0001\u00db\u0001\u00db\u0001\u00dc\u0001\u00dc\u0001"+
		"\u00dc\u0003\u00dc\u147b\b\u00dc\u0001\u00dc\u0001\u00dc\u0004\u00dc\u147f"+
		"\b\u00dc\u000b\u00dc\f\u00dc\u1480\u0001\u00dd\u0001\u00dd\u0001\u00dd"+
		"\u0001\u00dd\u0004\u00dd\u1487\b\u00dd\u000b\u00dd\f\u00dd\u1488\u0001"+
		"\u00de\u0001\u00de\u0001\u00de\u0001\u00de\u0001\u00de\u0005\u00de\u1490"+
		"\b\u00de\n\u00de\f\u00de\u1493\t\u00de\u0001\u00de\u0001\u00de\u0001\u00de"+
		"\u0003\u00de\u1498\b\u00de\u0001\u00de\u0001\u00de\u0001\u00de\u0005\u00de"+
		"\u149d\b\u00de\n\u00de\f\u00de\u14a0\t\u00de\u0001\u00de\u0001\u00de\u0001"+
		"\u00de\u0001\u00de\u0003\u00de\u14a6\b\u00de\u0001\u00de\u0005\u00de\u14a9"+
		"\b\u00de\n\u00de\f\u00de\u14ac\t\u00de\u0003\u00de\u14ae\b\u00de\u0003"+
		"\u00de\u14b0\b\u00de\u0001\u00de\u0001\u00de\u0004\u00de\u14b4\b\u00de"+
		"\u000b\u00de\f\u00de\u14b5\u0003\u00de\u14b8\b\u00de\u0001\u00de\u0001"+
		"\u00de\u0005\u00de\u14bc\b\u00de\n\u00de\f\u00de\u14bf\t\u00de\u0001\u00de"+
		"\u0001\u00de\u0001\u00de\u0001\u00de\u0003\u00de\u14c5\b\u00de\u0001\u00de"+
		"\u0001\u00de\u0001\u00de\u0003\u00de\u14ca\b\u00de\u0001\u00de\u0001\u00de"+
		"\u0003\u00de\u14ce\b\u00de\u0001\u00de\u0001\u00de\u0001\u00de\u0001\u00de"+
		"\u0003\u00de\u14d4\b\u00de\u0001\u00df\u0001\u00df\u0001\u00df\u0001\u00df"+
		"\u0001\u00df\u0005\u00df\u14db\b\u00df\n\u00df\f\u00df\u14de\t\u00df\u0001"+
		"\u00df\u0001\u00df\u0001\u00df\u0003\u00df\u14e3\b\u00df\u0001\u00df\u0001"+
		"\u00df\u0001\u00df\u0005\u00df\u14e8\b\u00df\n\u00df\f\u00df\u14eb\t\u00df"+
		"\u0001\u00df\u0001\u00df\u0001\u00df\u0003\u00df\u14f0\b\u00df\u0001\u00df"+
		"\u0001\u00df\u0001\u00df\u0001\u00df\u0003\u00df\u14f6\b\u00df\u0001\u00df"+
		"\u0005\u00df\u14f9\b\u00df\n\u00df\f\u00df\u14fc\t\u00df\u0003\u00df\u14fe"+
		"\b\u00df\u0003\u00df\u1500\b\u00df\u0001\u00df\u0001\u00df\u0004\u00df"+
		"\u1504\b\u00df\u000b\u00df\f\u00df\u1505\u0003\u00df\u1508\b\u00df\u0001"+
		"\u00df\u0001\u00df\u0005\u00df\u150c\b\u00df\n\u00df\f\u00df\u150f\t\u00df"+
		"\u0001\u00df\u0001\u00df\u0001\u00df\u0001\u00df\u0003\u00df\u1515\b\u00df"+
		"\u0003\u00df\u1517\b\u00df\u0001\u00e0\u0001\u00e0\u0001\u00e0\u0003\u00e0"+
		"\u151c\b\u00e0\u0001\u00e0\u0001\u00e0\u0001\u00e0\u0005\u00e0\u1521\b"+
		"\u00e0\n\u00e0\f\u00e0\u1524\t\u00e0\u0001\u00e1\u0001\u00e1\u0001\u00e1"+
		"\u0001\u00e1\u0005\u00e1\u152a\b\u00e1\n\u00e1\f\u00e1\u152d\t\u00e1\u0001"+
		"\u00e1\u0001\u00e1\u0003\u00e1\u1531\b\u00e1\u0001\u00e1\u0001\u00e1\u0001"+
		"\u00e1\u0001\u00e1\u0001\u00e1\u0005\u00e1\u1538\b\u00e1\n\u00e1\f\u00e1"+
		"\u153b\t\u00e1\u0001\u00e1\u0001\u00e1\u0001\u00e1\u0001\u00e1\u0003\u00e1"+
		"\u1541\b\u00e1\u0001\u00e1\u0005\u00e1\u1544\b\u00e1\n\u00e1\f\u00e1\u1547"+
		"\t\u00e1\u0003\u00e1\u1549\b\u00e1\u0003\u00e1\u154b\b\u00e1\u0001\u00e1"+
		"\u0001\u00e1\u0001\u00e1\u0001\u00e1\u0005\u00e1\u1551\b\u00e1\n\u00e1"+
		"\f\u00e1\u1554\t\u00e1\u0003\u00e1\u1556\b\u00e1\u0001\u00e1\u0001\u00e1"+
		"\u0001\u00e1\u0001\u00e1\u0001\u00e1\u0001\u00e1\u0003\u00e1\u155e\b\u00e1"+
		"\u0001\u00e1\u0001\u00e1\u0001\u00e1\u0003\u00e1\u1563\b\u00e1\u0001\u00e1"+
		"\u0001\u00e1\u0001\u00e1\u0003\u00e1\u1568\b\u00e1\u0005\u00e1\u156a\b"+
		"\u00e1\n\u00e1\f\u00e1\u156d\t\u00e1\u0001\u00e1\u0001\u00e1\u0001\u00e1"+
		"\u0003\u00e1\u1572\b\u00e1\u0001\u00e1\u0001\u00e1\u0001\u00e1\u0003\u00e1"+
		"\u1577\b\u00e1\u0005\u00e1\u1579\b\u00e1\n\u00e1\f\u00e1\u157c\t\u00e1"+
		"\u0001\u00e1\u0001\u00e1\u0001\u00e1\u0003\u00e1\u1581\b\u00e1\u0003\u00e1"+
		"\u1583\b\u00e1\u0001\u00e2\u0001\u00e2\u0001\u00e2\u0001\u00e2\u0001\u00e2"+
		"\u0001\u00e2\u0001\u00e2\u0005\u00e2\u158c\b\u00e2\n\u00e2\f\u00e2\u158f"+
		"\t\u00e2\u0003\u00e2\u1591\b\u00e2\u0001\u00e2\u0001\u00e2\u0001\u00e2"+
		"\u0005\u00e2\u1596\b\u00e2\n\u00e2\f\u00e2\u1599\t\u00e2\u0003\u00e2\u159b"+
		"\b\u00e2\u0001\u00e3\u0001\u00e3\u0001\u00e3\u0001\u00e3\u0001\u00e3\u0001"+
		"\u00e3\u0001\u00e3\u0001\u00e3\u0005\u00e3\u15a5\b\u00e3\n\u00e3\f\u00e3"+
		"\u15a8\t\u00e3\u0001\u00e3\u0001\u00e3\u0001\u00e3\u0003\u00e3\u15ad\b"+
		"\u00e3\u0001\u00e4\u0001\u00e4\u0001\u00e4\u0001\u00e4\u0001\u00e4\u0005"+
		"\u00e4\u15b4\b\u00e4\n\u00e4\f\u00e4\u15b7\t\u00e4\u0001\u00e5\u0001\u00e5"+
		"\u0001\u00e5\u0001\u00e5\u0005\u00e5\u15bd\b\u00e5\n\u00e5\f\u00e5\u15c0"+
		"\t\u00e5\u0001\u00e5\u0001\u00e5\u0003\u00e5\u15c4\b\u00e5\u0001\u00e5"+
		"\u0001\u00e5\u0001\u00e5\u0001\u00e5\u0001\u00e5\u0005\u00e5\u15cb\b\u00e5"+
		"\n\u00e5\f\u00e5\u15ce\t\u00e5\u0001\u00e5\u0001\u00e5\u0001\u00e5\u0003"+
		"\u00e5\u15d3\b\u00e5\u0001\u00e5\u0001\u00e5\u0001\u00e5\u0001\u00e5\u0001"+
		"\u00e5\u0001\u00e5\u0001\u00e5\u0005\u00e5\u15dc\b\u00e5\n\u00e5\f\u00e5"+
		"\u15df\t\u00e5\u0001\u00e5\u0001\u00e5\u0001\u00e5\u0003\u00e5\u15e4\b"+
		"\u00e5\u0001\u00e5\u0001\u00e5\u0001\u00e5\u0003\u00e5\u15e9\b\u00e5\u0005"+
		"\u00e5\u15eb\b\u00e5\n\u00e5\f\u00e5\u15ee\t\u00e5\u0001\u00e5\u0001\u00e5"+
		"\u0001\u00e5\u0003\u00e5\u15f3\b\u00e5\u0001\u00e5\u0001\u00e5\u0001\u00e5"+
		"\u0003\u00e5\u15f8\b\u00e5\u0005\u00e5\u15fa\b\u00e5\n\u00e5\f\u00e5\u15fd"+
		"\t\u00e5\u0003\u00e5\u15ff\b\u00e5\u0001\u00e6\u0001\u00e6\u0001\u00e6"+
		"\u0001\u00e6\u0001\u00e6\u0001\u00e6\u0001\u00e6\u0001\u00e6\u0005\u00e6"+
		"\u1609\b\u00e6\n\u00e6\f\u00e6\u160c\t\u00e6\u0001\u00e7\u0001\u00e7\u0001"+
		"\u00e7\u0001\u00e7\u0003\u00e7\u1612\b\u00e7\u0001\u00e7\u0001\u00e7\u0001"+
		"\u00e7\u0003\u00e7\u1617\b\u00e7\u0001\u00e8\u0001\u00e8\u0001\u00e8\u0001"+
		"\u00e9\u0001\u00e9\u0001\u00e9\u0001\u00e9\u0001\u00e9\u0001\u00e9\u0001"+
		"\u00e9\u0001\u00e9\u0001\u00e9\u0001\u00e9\u0001\u00e9\u0001\u00e9\u0001"+
		"\u00e9\u0001\u00e9\u0001\u00e9\u0001\u00e9\u0001\u00e9\u0001\u00e9\u0001"+
		"\u00e9\u0001\u00e9\u0001\u00e9\u0001\u00e9\u0001\u00e9\u0001\u00e9\u0001"+
		"\u00e9\u0005\u00e9\u1635\b\u00e9\n\u00e9\f\u00e9\u1638\t\u00e9\u0001\u00e9"+
		"\u0003\u00e9\u163b\b\u00e9\u0001\u00ea\u0001\u00ea\u0003\u00ea\u163f\b"+
		"\u00ea\u0001\u00ea\u0001\u00ea\u0001\u00ea\u0003\u00ea\u1644\b\u00ea\u0001"+
		"\u00eb\u0001\u00eb\u0001\u00eb\u0001\u00eb\u0001\u00eb\u0003\u00eb\u164b"+
		"\b\u00eb\u0001\u00eb\u0003\u00eb\u164e\b\u00eb\u0001\u00eb\u0001\u00eb"+
		"\u0001\u00eb\u0001\u00eb\u0003\u00eb\u1654\b\u00eb\u0001\u00ec\u0001\u00ec"+
		"\u0001\u00ec\u0001\u00ec\u0001\u00ec\u0001\u00ec\u0001\u00ec\u0001\u00ec"+
		"\u0003\u00ec\u165e\b\u00ec\u0001\u00ed\u0001\u00ed\u0001\u00ed\u0001\u00ed"+
		"\u0001\u00ed\u0001\u00ed\u0001\u00ed\u0001\u00ed\u0003\u00ed\u1668\b\u00ed"+
		"\u0001\u00ee\u0001\u00ee\u0001\u00ee\u0001\u00ee\u0001\u00ee\u0001\u00ee"+
		"\u0001\u00ee\u0001\u00ee\u0003\u00ee\u1672\b\u00ee\u0001\u00ee\u0001\u00ee"+
		"\u0001\u00ee\u0001\u00ee\u0003\u00ee\u1678\b\u00ee\u0001\u00ee\u0001\u00ee"+
		"\u0001\u00ee\u0001\u00ee\u0001\u00ee\u0001\u00ee\u0001\u00ee\u0003\u00ee"+
		"\u1681\b\u00ee\u0001\u00ee\u0001\u00ee\u0001\u00ee\u0001\u00ee\u0003\u00ee"+
		"\u1687\b\u00ee\u0001\u00ee\u0001\u00ee\u0001\u00ee\u0001\u00ee\u0001\u00ee"+
		"\u0003\u00ee\u168e\b\u00ee\u0003\u00ee\u1690\b\u00ee\u0001\u00ef\u0001"+
		"\u00ef\u0001\u00ef\u0001\u00f0\u0001\u00f0\u0001\u00f0\u0001\u00f0\u0001"+
		"\u00f0\u0003\u00f0\u169a\b\u00f0\u0001\u00f1\u0001\u00f1\u0003\u00f1\u169e"+
		"\b\u00f1\u0001\u00f1\u0001\u00f1\u0003\u00f1\u16a2\b\u00f1\u0001\u00f1"+
		"\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1"+
		"\u0001\u00f1\u0003\u00f1\u16ac\b\u00f1\u0001\u00f1\u0001\u00f1\u0003\u00f1"+
		"\u16b0\b\u00f1\u0001\u00f1\u0001\u00f1\u0003\u00f1\u16b4\b\u00f1\u0001"+
		"\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001"+
		"\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001"+
		"\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0003\u00f1\u16c6\b\u00f1\u0001"+
		"\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001"+
		"\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001"+
		"\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001"+
		"\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001"+
		"\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001"+
		"\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001"+
		"\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001"+
		"\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001"+
		"\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001"+
		"\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001"+
		"\u00f1\u0001\u00f1\u0003\u00f1\u1706\b\u00f1\u0001\u00f1\u0001\u00f1\u0001"+
		"\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001"+
		"\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001"+
		"\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001"+
		"\u00f1\u0001\u00f1\u0001\u00f1\u0003\u00f1\u171f\b\u00f1\u0001\u00f2\u0001"+
		"\u00f2\u0001\u00f2\u0001\u00f2\u0001\u00f2\u0001\u00f2\u0001\u00f2\u0001"+
		"\u00f2\u0001\u00f2\u0001\u00f2\u0001\u00f2\u0001\u00f2\u0001\u00f2\u0001"+
		"\u00f2\u0001\u00f2\u0001\u00f2\u0003\u00f2\u1731\b\u00f2\u0001\u00f3\u0001"+
		"\u00f3\u0001\u00f3\u0001\u00f3\u0001\u00f4\u0001\u00f4\u0003\u00f4\u1739"+
		"\b\u00f4\u0001\u00f4\u0001\u00f4\u0001\u00f4\u0001\u00f4\u0001\u00f4\u0001"+
		"\u00f4\u0001\u00f4\u0001\u00f4\u0005\u00f4\u1743\b\u00f4\n\u00f4\f\u00f4"+
		"\u1746\t\u00f4\u0001\u00f4\u0001\u00f4\u0001\u00f4\u0001\u00f4\u0003\u00f4"+
		"\u174c\b\u00f4\u0003\u00f4\u174e\b\u00f4\u0001\u00f4\u0001\u00f4\u0001"+
		"\u00f4\u0001\u00f4\u0001\u00f4\u0001\u00f4\u0005\u00f4\u1756\b\u00f4\n"+
		"\u00f4\f\u00f4\u1759\t\u00f4\u0003\u00f4\u175b\b\u00f4\u0001\u00f5\u0001"+
		"\u00f5\u0001\u00f5\u0001\u00f5\u0005\u00f5\u1761\b\u00f5\n\u00f5\f\u00f5"+
		"\u1764\t\u00f5\u0001\u00f6\u0001\u00f6\u0001\u00f6\u0001\u00f6\u0003\u00f6"+
		"\u176a\b\u00f6\u0001\u00f7\u0001\u00f7\u0003\u00f7\u176e\b\u00f7\u0001"+
		"\u00f7\u0001\u00f7\u0001\u00f7\u0003\u00f7\u1773\b\u00f7\u0001\u00f8\u0001"+
		"\u00f8\u0003\u00f8\u1777\b\u00f8\u0001\u00f8\u0001\u00f8\u0001\u00f8\u0003"+
		"\u00f8\u177c\b\u00f8\u0001\u00f8\u0003\u00f8\u177f\b\u00f8\u0001\u00f8"+
		"\u0003\u00f8\u1782\b\u00f8\u0001\u00f9\u0001\u00f9\u0001\u00f9\u0001\u00f9"+
		"\u0001\u00f9\u0001\u00f9\u0001\u00f9\u0003\u00f9\u178b\b\u00f9\u0001\u00fa"+
		"\u0001\u00fa\u0003\u00fa\u178f\b\u00fa\u0001\u00fa\u0003\u00fa\u1792\b"+
		"\u00fa\u0001\u00fa\u0001\u00fa\u0003\u00fa\u1796\b\u00fa\u0001\u00fa\u0001"+
		"\u00fa\u0001\u00fa\u0001\u00fa\u0001\u00fa\u0001\u00fa\u0001\u00fb\u0001"+
		"\u00fb\u0001\u00fb\u0001\u00fb\u0001\u00fb\u0001\u00fb\u0001\u00fc\u0001"+
		"\u00fc\u0001\u00fc\u0001\u00fc\u0001\u00fd\u0001\u00fd\u0001\u00fd\u0001"+
		"\u00fd\u0001\u00fd\u0003\u00fd\u17ad\b\u00fd\u0001\u00fd\u0001\u00fd\u0001"+
		"\u00fd\u0001\u00fd\u0001\u00fd\u0003\u00fd\u17b4\b\u00fd\u0005\u00fd\u17b6"+
		"\b\u00fd\n\u00fd\f\u00fd\u17b9\t\u00fd\u0001\u00fd\u0001\u00fd\u0001\u00fd"+
		"\u0001\u00fd\u0003\u00fd\u17bf\b\u00fd\u0001\u00fd\u0001\u00fd\u0001\u00fd"+
		"\u0001\u00fd\u0001\u00fd\u0003\u00fd\u17c6\b\u00fd\u0001\u00fd\u0003\u00fd"+
		"\u17c9\b\u00fd\u0001\u00fd\u0001\u00fd\u0001\u00fd\u0001\u00fd\u0001\u00fd"+
		"\u0001\u00fd\u0001\u00fd\u0001\u00fd\u0001\u00fd\u0001\u00fd\u0001\u00fd"+
		"\u0001\u00fd\u0005\u00fd\u17d7\b\u00fd\n\u00fd\f\u00fd\u17da\t\u00fd\u0003"+
		"\u00fd\u17dc\b\u00fd\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0001"+
		"\u00fe\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0003\u00fe\u17e6\b\u00fe\u0001"+
		"\u00fe\u0001\u00fe\u0003\u00fe\u17ea\b\u00fe\u0001\u00fe\u0001\u00fe\u0001"+
		"\u00fe\u0001\u00fe\u0003\u00fe\u17f0\b\u00fe\u0001\u00fe\u0003\u00fe\u17f3"+
		"\b\u00fe\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0003\u00fe\u17f8\b\u00fe"+
		"\u0001\u00fe\u0001\u00fe\u0003\u00fe\u17fc\b\u00fe\u0001\u00fe\u0001\u00fe"+
		"\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0003\u00fe\u1803\b\u00fe\u0001\u00fe"+
		"\u0003\u00fe\u1806\b\u00fe\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0001\u00fe"+
		"\u0003\u00fe\u180c\b\u00fe\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0001\u00fe"+
		"\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0001\u00fe"+
		"\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0001\u00fe"+
		"\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0001\u00fe"+
		"\u0003\u00fe\u1824\b\u00fe\u0001\u00fe\u0003\u00fe\u1827\b\u00fe\u0001"+
		"\u00fe\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0001"+
		"\u00fe\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0003\u00fe\u1833\b\u00fe\u0001"+
		"\u00fe\u0003\u00fe\u1836\b\u00fe\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0001"+
		"\u00fe\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0003\u00fe\u1840"+
		"\b\u00fe\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0001"+
		"\u00fe\u0003\u00fe\u1848\b\u00fe\u0001\u00fe\u0001\u00fe\u0003\u00fe\u184c"+
		"\b\u00fe\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0003"+
		"\u00fe\u1853\b\u00fe\u0001\u00fe\u0003\u00fe\u1856\b\u00fe\u0001\u00fe"+
		"\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0005\u00fe\u185d\b\u00fe"+
		"\n\u00fe\f\u00fe\u1860\t\u00fe\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0003"+
		"\u00fe\u1865\b\u00fe\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0003"+
		"\u00fe\u186b\b\u00fe\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0001"+
		"\u00fe\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0003\u00fe\u1875\b\u00fe\u0001"+
		"\u00fe\u0001\u00fe\u0003\u00fe\u1879\b\u00fe\u0001\u00ff\u0001\u00ff\u0001"+
		"\u00ff\u0001\u00ff\u0003\u00ff\u187f\b\u00ff\u0001\u00ff\u0003\u00ff\u1882"+
		"\b\u00ff\u0001\u00ff\u0003\u00ff\u1885\b\u00ff\u0001\u0100\u0001\u0100"+
		"\u0001\u0100\u0001\u0100\u0001\u0100\u0001\u0100\u0001\u0100\u0001\u0100"+
		"\u0001\u0100\u0001\u0100\u0003\u0100\u1891\b\u0100\u0001\u0100\u0003\u0100"+
		"\u1894\b\u0100\u0001\u0101\u0001\u0101\u0001\u0101\u0001\u0101\u0003\u0101"+
		"\u189a\b\u0101\u0001\u0102\u0003\u0102\u189d\b\u0102\u0001\u0102\u0001"+
		"\u0102\u0001\u0102\u0001\u0102\u0001\u0102\u0001\u0102\u0003\u0102\u18a5"+
		"\b\u0102\u0001\u0102\u0001\u0102\u0001\u0102\u0001\u0102\u0001\u0102\u0001"+
		"\u0102\u0003\u0102\u18ad\b\u0102\u0001\u0103\u0001\u0103\u0001\u0103\u0001"+
		"\u0103\u0003\u0103\u18b3\b\u0103\u0001\u0103\u0001\u0103\u0003\u0103\u18b7"+
		"\b\u0103\u0001\u0104\u0001\u0104\u0001\u0104\u0001\u0104\u0001\u0104\u0001"+
		"\u0104\u0001\u0104\u0001\u0104\u0001\u0104\u0001\u0104\u0001\u0104\u0001"+
		"\u0104\u0003\u0104\u18c5\b\u0104\u0001\u0105\u0001\u0105\u0001\u0105\u0001"+
		"\u0106\u0001\u0106\u0001\u0106\u0001\u0106\u0001\u0106\u0005\u0106\u18cf"+
		"\b\u0106\n\u0106\f\u0106\u18d2\t\u0106\u0001\u0106\u0001\u0106\u0001\u0106"+
		"\u0001\u0106\u0003\u0106\u18d8\b\u0106\u0001\u0106\u0003\u0106\u18db\b"+
		"\u0106\u0001\u0106\u0001\u0106\u0001\u0106\u0001\u0107\u0001\u0107\u0003"+
		"\u0107\u18e2\b\u0107\u0001\u0107\u0001\u0107\u0001\u0107\u0005\u0107\u18e7"+
		"\b\u0107\n\u0107\f\u0107\u18ea\t\u0107\u0001\u0107\u0001\u0107\u0001\u0107"+
		"\u0001\u0107\u0003\u0107\u18f0\b\u0107\u0001\u0108\u0001\u0108\u0003\u0108"+
		"\u18f4\b\u0108\u0001\u0108\u0001\u0108\u0001\u0109\u0001\u0109\u0001\u0109"+
		"\u0001\u0109\u0001\u0109\u0001\u0109\u0001\u0109\u0005\u0109\u18ff\b\u0109"+
		"\n\u0109\f\u0109\u1902\t\u0109\u0001\u010a\u0001\u010a\u0001\u010a\u0001"+
		"\u010a\u0001\u010b\u0001\u010b\u0001\u010c\u0001\u010c\u0003\u010c\u190c"+
		"\b\u010c\u0001\u010c\u0001\u010c\u0001\u010c\u0001\u010c\u0003\u010c\u1912"+
		"\b\u010c\u0001\u010d\u0001\u010d\u0001\u010d\u0003\u010d\u1917\b\u010d"+
		"\u0001\u010d\u0001\u010d\u0001\u010d\u0001\u010d\u0001\u010d\u0001\u010d"+
		"\u0001\u010d\u0001\u010d\u0001\u010d\u0001\u010d\u0001\u010d\u0003\u010d"+
		"\u1924\b\u010d\u0003\u010d\u1926\b\u010d\u0001\u010d\u0001\u010d\u0001"+
		"\u010d\u0003\u010d\u192b\b\u010d\u0001\u010d\u0001\u010d\u0003\u010d\u192f"+
		"\b\u010d\u0001\u010d\u0003\u010d\u1932\b\u010d\u0003\u010d\u1934\b\u010d"+
		"\u0001\u010e\u0001\u010e\u0001\u010e\u0001\u010e\u0001\u010e\u0003\u010e"+
		"\u193b\b\u010e\u0001\u010f\u0001\u010f\u0001\u010f\u0001\u010f\u0001\u010f"+
		"\u0003\u010f\u1942\b\u010f\u0001\u010f\u0003\u010f\u1945\b\u010f\u0001"+
		"\u010f\u0003\u010f\u1948\b\u010f\u0001\u010f\u0001\u010f\u0001\u010f\u0001"+
		"\u010f\u0003\u010f\u194e\b\u010f\u0001\u010f\u0001\u010f\u0003\u010f\u1952"+
		"\b\u010f\u0001\u0110\u0001\u0110\u0001\u0110\u0001\u0110\u0003\u0110\u1958"+
		"\b\u0110\u0001\u0111\u0001\u0111\u0001\u0111\u0001\u0111\u0003\u0111\u195e"+
		"\b\u0111\u0001\u0111\u0001\u0111\u0001\u0112\u0001\u0112\u0001\u0112\u0001"+
		"\u0113\u0001\u0113\u0001\u0113\u0001\u0114\u0001\u0114\u0001\u0114\u0003"+
		"\u0114\u196b\b\u0114\u0001\u0114\u0001\u0114\u0001\u0114\u0003\u0114\u1970"+
		"\b\u0114\u0001\u0114\u0001\u0114\u0001\u0114\u0001\u0114\u0005\u0114\u1976"+
		"\b\u0114\n\u0114\f\u0114\u1979\t\u0114\u0003\u0114\u197b\b\u0114\u0001"+
		"\u0115\u0001\u0115\u0001\u0115\u0003\u0115\u1980\b\u0115\u0001\u0115\u0001"+
		"\u0115\u0001\u0115\u0003\u0115\u1985\b\u0115\u0001\u0115\u0001\u0115\u0001"+
		"\u0115\u0001\u0115\u0005\u0115\u198b\b\u0115\n\u0115\f\u0115\u198e\t\u0115"+
		"\u0003\u0115\u1990\b\u0115\u0001\u0116\u0001\u0116\u0001\u0116\u0001\u0116"+
		"\u0001\u0116\u0001\u0116\u0003\u0116\u1998\b\u0116\u0001\u0117\u0001\u0117"+
		"\u0003\u0117\u199c\b\u0117\u0001\u0117\u0001\u0117\u0001\u0117\u0001\u0117"+
		"\u0001\u0117\u0001\u0117\u0001\u0117\u0001\u0117\u0001\u0117\u0005\u0117"+
		"\u19a7\b\u0117\n\u0117\f\u0117\u19aa\t\u0117\u0001\u0117\u0001\u0117\u0001"+
		"\u0117\u0003\u0117\u19af\b\u0117\u0001\u0117\u0001\u0117\u0001\u0117\u0001"+
		"\u0117\u0001\u0117\u0001\u0117\u0001\u0117\u0001\u0117\u0005\u0117\u19b9"+
		"\b\u0117\n\u0117\f\u0117\u19bc\t\u0117\u0003\u0117\u19be\b\u0117\u0001"+
		"\u0118\u0001\u0118\u0001\u0119\u0001\u0119\u0001\u0119\u0001\u0119\u0001"+
		"\u0119\u0003\u0119\u19c7\b\u0119\u0001\u0119\u0001\u0119\u0001\u0119\u0003"+
		"\u0119\u19cc\b\u0119\u0001\u011a\u0001\u011a\u0001\u011a\u0001\u011a\u0003"+
		"\u011a\u19d2\b\u011a\u0001\u011b\u0001\u011b\u0001\u011c\u0001\u011c\u0003"+
		"\u011c\u19d8\b\u011c\u0001\u011d\u0001\u011d\u0001\u011d\u0003\u011d\u19dd"+
		"\b\u011d\u0003\u011d\u19df\b\u011d\u0001\u011d\u0003\u011d\u19e2\b\u011d"+
		"\u0001\u011d\u0001\u011d\u0003\u011d\u19e6\b\u011d\u0003\u011d\u19e8\b"+
		"\u011d\u0001\u011e\u0001\u011e\u0003\u011e\u19ec\b\u011e\u0001\u011e\u0001"+
		"\u011e\u0001\u011e\u0001\u011e\u0003\u011e\u19f2\b\u011e\u0001\u011e\u0003"+
		"\u011e\u19f5\b\u011e\u0001\u011e\u0003\u011e\u19f8\b\u011e\u0001\u011f"+
		"\u0001\u011f\u0001\u011f\u0001\u011f\u0003\u011f\u19fe\b\u011f\u0001\u0120"+
		"\u0001\u0120\u0001\u0121\u0001\u0121\u0001\u0121\u0001\u0121\u0001\u0121"+
		"\u0003\u0121\u1a07\b\u0121\u0001\u0122\u0001\u0122\u0001\u0123\u0001\u0123"+
		"\u0001\u0123\u0001\u0123\u0003\u0123\u1a0f\b\u0123\u0001\u0124\u0001\u0124"+
		"\u0003\u0124\u1a13\b\u0124\u0001\u0125\u0001\u0125\u0001\u0125\u0003\u0125"+
		"\u1a18\b\u0125\u0001\u0126\u0001\u0126\u0001\u0127\u0001\u0127\u0001\u0128"+
		"\u0001\u0128\u0001\u0128\u0001\u0128\u0001\u0128\u0001\u0128\u0001\u0128"+
		"\u0001\u0128\u0001\u0128\u0001\u0128\u0001\u0128\u0001\u0128\u0001\u0128"+
		"\u0001\u0128\u0004\u0128\u1a2c\b\u0128\u000b\u0128\f\u0128\u1a2d\u0001"+
		"\u0129\u0001\u0129\u0001\u0129\u0001\u0129\u0001\u0129\u0003\u0129\u1a35"+
		"\b\u0129\u0003\u0129\u1a37\b\u0129\u0001\u012a\u0001\u012a\u0001\u012a"+
		"\u0004\u012a\u1a3c\b\u012a\u000b\u012a\f\u012a\u1a3d\u0003\u012a\u1a40"+
		"\b\u012a\u0001\u012b\u0001\u012b\u0003\u012b\u1a44\b\u012b\u0001\u012c"+
		"\u0001\u012c\u0001\u012c\u0003\u012c\u1a49\b\u012c\u0001\u012d\u0001\u012d"+
		"\u0001\u012d\u0001\u012d\u0001\u012d\u0001\u012d\u0001\u012d\u0001\u012d"+
		"\u0001\u012d\u0003\u012d\u1a54\b\u012d\u0001\u012e\u0001\u012e\u0001\u012e"+
		"\u0003\u012e\u1a59\b\u012e\u0001\u012f\u0001\u012f\u0001\u0130\u0001\u0130"+
		"\u0003\u0130\u1a5f\b\u0130\u0001\u0131\u0003\u0131\u1a62\b\u0131\u0001"+
		"\u0131\u0001\u0131\u0003\u0131\u1a66\b\u0131\u0001\u0131\u0004\u0131\u1a69"+
		"\b\u0131\u000b\u0131\f\u0131\u1a6a\u0001\u0131\u0003\u0131\u1a6e\b\u0131"+
		"\u0001\u0131\u0001\u0131\u0003\u0131\u1a72\b\u0131\u0001\u0131\u0001\u0131"+
		"\u0003\u0131\u1a76\b\u0131\u0003\u0131\u1a78\b\u0131\u0001\u0132\u0001"+
		"\u0132\u0001\u0133\u0003\u0133\u1a7d\b\u0133\u0001\u0133\u0001\u0133\u0001"+
		"\u0134\u0003\u0134\u1a82\b\u0134\u0001\u0134\u0001\u0134\u0001\u0135\u0001"+
		"\u0135\u0001\u0135\u0001\u0135\u0001\u0135\u0001\u0135\u0001\u0135\u0001"+
		"\u0135\u0001\u0135\u0003\u0135\u1a8f\b\u0135\u0001\u0135\u0003\u0135\u1a92"+
		"\b\u0135\u0001\u0136\u0001\u0136\u0003\u0136\u1a96\b\u0136\u0001\u0136"+
		"\u0003\u0136\u1a99\b\u0136\u0001\u0136\u0003\u0136\u1a9c\b\u0136\u0001"+
		"\u0136\u0001\u0136\u0001\u0136\u0003\u0136\u1aa1\b\u0136\u0001\u0136\u0001"+
		"\u0136\u0001\u0136\u0003\u0136\u1aa6\b\u0136\u0001\u0136\u0001\u0136\u0001"+
		"\u0136\u0001\u0136\u0003\u0136\u1aac\b\u0136\u0001\u0136\u0003\u0136\u1aaf"+
		"\b\u0136\u0001\u0136\u0001\u0136\u0001\u0136\u0003\u0136\u1ab4\b\u0136"+
		"\u0001\u0136\u0003\u0136\u1ab7\b\u0136\u0001\u0136\u0001\u0136\u0001\u0136"+
		"\u0003\u0136\u1abc\b\u0136\u0001\u0136\u0003\u0136\u1abf\b\u0136\u0001"+
		"\u0136\u0001\u0136\u0003\u0136\u1ac3\b\u0136\u0001\u0136\u0005\u0136\u1ac6"+
		"\b\u0136\n\u0136\f\u0136\u1ac9\t\u0136\u0001\u0136\u0001\u0136\u0003\u0136"+
		"\u1acd\b\u0136\u0001\u0136\u0005\u0136\u1ad0\b\u0136\n\u0136\f\u0136\u1ad3"+
		"\t\u0136\u0001\u0136\u0001\u0136\u0003\u0136\u1ad7\b\u0136\u0001\u0136"+
		"\u0003\u0136\u1ada\b\u0136\u0001\u0136\u0005\u0136\u1add\b\u0136\n\u0136"+
		"\f\u0136\u1ae0\t\u0136\u0001\u0136\u0001\u0136\u0003\u0136\u1ae4\b\u0136"+
		"\u0001\u0136\u0005\u0136\u1ae7\b\u0136\n\u0136\f\u0136\u1aea\t\u0136\u0001"+
		"\u0136\u0001\u0136\u0001\u0136\u0003\u0136\u1aef\b\u0136\u0001\u0136\u0001"+
		"\u0136\u0001\u0136\u0003\u0136\u1af4\b\u0136\u0001\u0136\u0001\u0136\u0001"+
		"\u0136\u0003\u0136\u1af9\b\u0136\u0001\u0136\u0001\u0136\u0001\u0136\u0003"+
		"\u0136\u1afe\b\u0136\u0001\u0136\u0001\u0136\u0003\u0136\u1b02\b\u0136"+
		"\u0001\u0136\u0003\u0136\u1b05\b\u0136\u0001\u0136\u0001\u0136\u0001\u0136"+
		"\u0003\u0136\u1b0a\b\u0136\u0001\u0136\u0001\u0136\u0003\u0136\u1b0e\b"+
		"\u0136\u0001\u0136\u0001\u0136\u0001\u0136\u0003\u0136\u1b13\b\u0136\u0001"+
		"\u0137\u0001\u0137\u0001\u0137\u0001\u0137\u0005\u0137\u1b19\b\u0137\n"+
		"\u0137\f\u0137\u1b1c\t\u0137\u0001\u0137\u0001\u0137\u0001\u0138\u0001"+
		"\u0138\u0001\u0139\u0001\u0139\u0003\u0139\u1b24\b\u0139\u0001\u0139\u0001"+
		"\u0139\u0003\u0139\u1b28\b\u0139\u0001\u0139\u0001\u0139\u0001\u0139\u0003"+
		"\u0139\u1b2d\b\u0139\u0001\u0139\u0001\u0139\u0001\u0139\u0003\u0139\u1b32"+
		"\b\u0139\u0001\u0139\u0001\u0139\u0003\u0139\u1b36\b\u0139\u0003\u0139"+
		"\u1b38\b\u0139\u0001\u0139\u0003\u0139\u1b3b\b\u0139\u0001\u013a\u0001"+
		"\u013a\u0001\u013a\u0001\u013a\u0001\u013b\u0001\u013b\u0001\u013b\u0001"+
		"\u013b\u0001\u013b\u0001\u013b\u0001\u013c\u0001\u013c\u0001\u013c\u0001"+
		"\u013c\u0003\u013c\u1b4b\b\u013c\u0001\u013c\u0001\u013c\u0001\u013d\u0001"+
		"\u013d\u0001\u013d\u0005\u013d\u1b52\b\u013d\n\u013d\f\u013d\u1b55\t\u013d"+
		"\u0001\u013e\u0001\u013e\u0001\u013e\u0005\u013e\u1b5a\b\u013e\n\u013e"+
		"\f\u013e\u1b5d\t\u013e\u0001\u013f\u0001\u013f\u0001\u013f\u0005\u013f"+
		"\u1b62\b\u013f\n\u013f\f\u013f\u1b65\t\u013f\u0001\u0140\u0001\u0140\u0001"+
		"\u0140\u0001\u0140\u0005\u0140\u1b6b\b\u0140\n\u0140\f\u0140\u1b6e\t\u0140"+
		"\u0001\u0140\u0001\u0140\u0001\u0141\u0001\u0141\u0001\u0141\u0005\u0141"+
		"\u1b75\b\u0141\n\u0141\f\u0141\u1b78\t\u0141\u0001\u0142\u0001\u0142\u0001"+
		"\u0142\u0005\u0142\u1b7d\b\u0142\n\u0142\f\u0142\u1b80\t\u0142\u0001\u0143"+
		"\u0001\u0143\u0001\u0143\u0005\u0143\u1b85\b\u0143\n\u0143\f\u0143\u1b88"+
		"\t\u0143\u0001\u0144\u0001\u0144\u0001\u0144\u0005\u0144\u1b8d\b\u0144"+
		"\n\u0144\f\u0144\u1b90\t\u0144\u0001\u0145\u0001\u0145\u0001\u0145\u0005"+
		"\u0145\u1b95\b\u0145\n\u0145\f\u0145\u1b98\t\u0145\u0001\u0146\u0001\u0146"+
		"\u0001\u0146\u0001\u0146\u0001\u0146\u0001\u0146\u0001\u0146\u0001\u0146"+
		"\u0001\u0146\u0003\u0146\u1ba3\b\u0146\u0001\u0146\u0001\u0146\u0001\u0146"+
		"\u0001\u0146\u0001\u0146\u0003\u0146\u1baa\b\u0146\u0001\u0146\u0001\u0146"+
		"\u0001\u0146\u0001\u0146\u0001\u0146\u0001\u0146\u0001\u0146\u0001\u0146"+
		"\u0001\u0146\u0001\u0146\u0001\u0146\u0001\u0146\u0001\u0146\u0001\u0146"+
		"\u0001\u0146\u0001\u0146\u0001\u0146\u0003\u0146\u1bbd\b\u0146\u0001\u0147"+
		"\u0001\u0147\u0001\u0147\u0003\u0147\u1bc2\b\u0147\u0001\u0147\u0003\u0147"+
		"\u1bc5\b\u0147\u0001\u0147\u0001\u0147\u0001\u0147\u0003\u0147\u1bca\b"+
		"\u0147\u0001\u0147\u0003\u0147\u1bcd\b\u0147\u0001\u0148\u0001\u0148\u0003"+
		"\u0148\u1bd1\b\u0148\u0001\u0149\u0001\u0149\u0001\u0149\u0001\u014a\u0001"+
		"\u014a\u0001\u014a\u0001\u014a\u0001\u014b\u0001\u014b\u0001\u014b\u0001"+
		"\u014c\u0001\u014c\u0001\u014c\u0003\u014c\u1be0\b\u014c\u0001\u014d\u0001"+
		"\u014d\u0001\u014d\u0003\u014d\u1be5\b\u014d\u0001\u014e\u0001\u014e\u0001"+
		"\u014e\u0001\u014e\u0001\u014e\u0001\u014e\u0003\u014e\u1bed\b\u014e\u0001"+
		"\u014e\u0001\u014e\u0001\u014e\u0001\u014e\u0001\u014e\u0003\u014e\u1bf4"+
		"\b\u014e\u0001\u014e\u0001\u014e\u0001\u014e\u0003\u014e\u1bf9\b\u014e"+
		"\u0001\u014f\u0001\u014f\u0001\u014f\u0003\u014f\u1bfe\b\u014f\u0001\u014f"+
		"\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u014f"+
		"\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u014f"+
		"\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u014f"+
		"\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u014f"+
		"\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0004\u014f"+
		"\u1c1e\b\u014f\u000b\u014f\f\u014f\u1c1f\u0001\u014f\u0001\u014f\u0003"+
		"\u014f\u1c24\b\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0004"+
		"\u014f\u1c2a\b\u014f\u000b\u014f\f\u014f\u1c2b\u0001\u014f\u0001\u014f"+
		"\u0003\u014f\u1c30\b\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u014f"+
		"\u0001\u014f\u0001\u014f\u0001\u014f\u0003\u014f\u1c39\b\u014f\u0001\u014f"+
		"\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0003\u014f"+
		"\u1c41\b\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0003\u014f\u1c46\b"+
		"\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0001"+
		"\u014f\u0003\u014f\u1c4e\b\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0003"+
		"\u014f\u1c53\b\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0003\u014f\u1c58"+
		"\b\u014f\u0003\u014f\u1c5a\b\u014f\u0001\u014f\u0001\u014f\u0001\u014f"+
		"\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0003\u014f\u1c63\b\u014f"+
		"\u0001\u014f\u0001\u014f\u0001\u014f\u0003\u014f\u1c68\b\u014f\u0001\u014f"+
		"\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0003\u014f"+
		"\u1c70\b\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0003\u014f\u1c75\b"+
		"\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0001"+
		"\u014f\u0003\u014f\u1c7d\b\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0001"+
		"\u014f\u0001\u014f\u0001\u014f\u0003\u014f\u1c85\b\u014f\u0001\u014f\u0003"+
		"\u014f\u1c88\b\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0001"+
		"\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0003\u014f\u1c92\b\u014f\u0001"+
		"\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0001"+
		"\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0001"+
		"\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0003\u014f\u1ca4\b\u014f\u0001"+
		"\u014f\u0003\u014f\u1ca7\b\u014f\u0001\u014f\u0003\u014f\u1caa\b\u014f"+
		"\u0001\u014f\u0001\u014f\u0003\u014f\u1cae\b\u014f\u0001\u0150\u0001\u0150"+
		"\u0001\u0150\u0001\u0150\u0001\u0150\u0001\u0151\u0001\u0151\u0001\u0151"+
		"\u0001\u0151\u0005\u0151\u1cb9\b\u0151\n\u0151\f\u0151\u1cbc\t\u0151\u0001"+
		"\u0151\u0001\u0151\u0001\u0151\u0001\u0151\u0001\u0151\u0003\u0151\u1cc3"+
		"\b\u0151\u0001\u0152\u0001\u0152\u0003\u0152\u1cc7\b\u0152\u0001\u0153"+
		"\u0001\u0153\u0001\u0153\u0003\u0153\u1ccc\b\u0153\u0001\u0153\u0001\u0153"+
		"\u0001\u0153\u0003\u0153\u1cd1\b\u0153\u0001\u0153\u0001\u0153\u0001\u0153"+
		"\u0001\u0153\u0003\u0153\u1cd7\b\u0153\u0001\u0153\u0001\u0153\u0001\u0153"+
		"\u0003\u0153\u1cdc\b\u0153\u0001\u0153\u0001\u0153\u0003\u0153\u1ce0\b"+
		"\u0153\u0001\u0153\u0001\u0153\u0001\u0153\u0003\u0153\u1ce5\b\u0153\u0001"+
		"\u0153\u0001\u0153\u0001\u0153\u0003\u0153\u1cea\b\u0153\u0001\u0153\u0001"+
		"\u0153\u0001\u0153\u0003\u0153\u1cef\b\u0153\u0001\u0153\u0001\u0153\u0001"+
		"\u0153\u0001\u0153\u0001\u0153\u0001\u0153\u0005\u0153\u1cf7\b\u0153\n"+
		"\u0153\f\u0153\u1cfa\t\u0153\u0003\u0153\u1cfc\b\u0153\u0001\u0153\u0001"+
		"\u0153\u0003\u0153\u1d00\b\u0153\u0001\u0153\u0001\u0153\u0003\u0153\u1d04"+
		"\b\u0153\u0001\u0154\u0001\u0154\u0001\u0154\u0001\u0154\u0001\u0154\u0003"+
		"\u0154\u1d0b\b\u0154\u0001\u0154\u0001\u0154\u0003\u0154\u1d0f\b\u0154"+
		"\u0001\u0154\u0001\u0154\u0001\u0154\u0001\u0154\u0001\u0154\u0001\u0154"+
		"\u0001\u0154\u0001\u0154\u0001\u0154\u0001\u0154\u0001\u0154\u0001\u0154"+
		"\u0001\u0154\u0001\u0154\u0001\u0154\u0001\u0154\u0001\u0154\u0001\u0154"+
		"\u0001\u0154\u0001\u0154\u0001\u0154\u0001\u0154\u0001\u0154\u0001\u0154"+
		"\u0001\u0154\u0001\u0154\u0001\u0154\u0003\u0154\u1d2c\b\u0154\u0001\u0155"+
		"\u0001\u0155\u0001\u0155\u0003\u0155\u1d31\b\u0155\u0001\u0155\u0001\u0155"+
		"\u0003\u0155\u1d35\b\u0155\u0001\u0156\u0003\u0156\u1d38\b\u0156\u0001"+
		"\u0156\u0003\u0156\u1d3b\b\u0156\u0001\u0156\u0003\u0156\u1d3e\b\u0156"+
		"\u0001\u0156\u0003\u0156\u1d41\b\u0156\u0001\u0157\u0001\u0157\u0001\u0158"+
		"\u0001\u0158\u0001\u0158\u0001\u0159\u0001\u0159\u0001\u015a\u0001\u015a"+
		"\u0003\u015a\u1d4c\b\u015a\u0001\u015b\u0001\u015b\u0001\u015b\u0001\u015b"+
		"\u0001\u015b\u0001\u015c\u0001\u015c\u0001\u015c\u0001\u015c\u0001\u015c"+
		"\u0001\u015c\u0001\u015c\u0003\u015c\u1d5a\b\u015c\u0001\u015d\u0001\u015d"+
		"\u0001\u015d\u0001\u015d\u0001\u015d\u0005\u015d\u1d61\b\u015d\n\u015d"+
		"\f\u015d\u1d64\t\u015d\u0001\u015e\u0001\u015e\u0001\u015e\u0001\u015e"+
		"\u0001\u015e\u0001\u015e\u0001\u015e\u0001\u015e\u0001\u015e\u0001\u015e"+
		"\u0001\u015e\u0001\u015e\u0001\u015e\u0001\u015e\u0001\u015e\u0001\u015e"+
		"\u0001\u015e\u0001\u015e\u0001\u015e\u0001\u015e\u0001\u015e\u0001\u015e"+
		"\u0001\u015e\u0001\u015e\u0003\u015e\u1d7e\b\u015e\u0001\u015f\u0001\u015f"+
		"\u0001\u015f\u0001\u015f\u0001\u015f\u0001\u0160\u0001\u0160\u0001\u0160"+
		"\u0001\u0160\u0003\u0160\u1d89\b\u0160\u0001\u0160\u0001\u0160\u0001\u0160"+
		"\u0001\u0160\u0001\u0160\u0003\u0160\u1d90\b\u0160\u0005\u0160\u1d92\b"+
		"\u0160\n\u0160\f\u0160\u1d95\t\u0160\u0001\u0161\u0001\u0161\u0001\u0161"+
		"\u0001\u0161\u0003\u0161\u1d9b\b\u0161\u0001\u0162\u0001\u0162\u0001\u0162"+
		"\u0001\u0162\u0001\u0162\u0001\u0162\u0003\u0162\u1da3\b\u0162\u0001\u0162"+
		"\u0001\u0162\u0001\u0162\u0003\u0162\u1da8\b\u0162\u0001\u0162\u0001\u0162"+
		"\u0001\u0162\u0001\u0162\u0005\u0162\u1dae\b\u0162\n\u0162\f\u0162\u1db1"+
		"\t\u0162\u0001\u0163\u0001\u0163\u0001\u0163\u0001\u0163\u0001\u0163\u0001"+
		"\u0163\u0001\u0163\u0001\u0163\u0001\u0163\u0003\u0163\u1dbc\b\u0163\u0001"+
		"\u0163\u0001\u0163\u0001\u0163\u0001\u0163\u0001\u0163\u0001\u0163\u0001"+
		"\u0163\u0001\u0163\u0001\u0163\u0001\u0163\u0001\u0163\u0003\u0163\u1dc9"+
		"\b\u0163\u0001\u0163\u0001\u0163\u0001\u0163\u0001\u0163\u0003\u0163\u1dcf"+
		"\b\u0163\u0001\u0163\u0001\u0163\u0001\u0163\u0001\u0163\u0003\u0163\u1dd5"+
		"\b\u0163\u0001\u0163\u0001\u0163\u0001\u0163\u0001\u0163\u0001\u0163\u0001"+
		"\u0163\u0001\u0163\u0001\u0163\u0001\u0163\u0001\u0163\u0001\u0163\u0001"+
		"\u0163\u0001\u0163\u0001\u0163\u0003\u0163\u1de5\b\u0163\u0001\u0163\u0001"+
		"\u0163\u0001\u0163\u0001\u0163\u0003\u0163\u1deb\b\u0163\u0001\u0163\u0001"+
		"\u0163\u0001\u0163\u0001\u0163\u0001\u0163\u0001\u0163\u0001\u0163\u0005"+
		"\u0163\u1df4\b\u0163\n\u0163\f\u0163\u1df7\t\u0163\u0001\u0164\u0001\u0164"+
		"\u0001\u0164\u0001\u0164\u0001\u0164\u0001\u0164\u0001\u0164\u0001\u0164"+
		"\u0001\u0164\u0001\u0164\u0001\u0164\u0001\u0164\u0001\u0164\u0001\u0164"+
		"\u0001\u0164\u0001\u0164\u0001\u0164\u0005\u0164\u1e0a\b\u0164\n\u0164"+
		"\f\u0164\u1e0d\t\u0164\u0001\u0164\u0001\u0164\u0001\u0164\u0001\u0164"+
		"\u0001\u0164\u0001\u0164\u0001\u0164\u0004\u0164\u1e16\b\u0164\u000b\u0164"+
		"\f\u0164\u1e17\u0001\u0164\u0001\u0164\u0001\u0164\u0001\u0164\u0001\u0164"+
		"\u0001\u0164\u0001\u0164\u0001\u0164\u0001\u0164\u0001\u0164\u0001\u0164"+
		"\u0001\u0164\u0001\u0164\u0001\u0164\u0001\u0164\u0003\u0164\u1e29\b\u0164"+
		"\u0001\u0164\u0001\u0164\u0001\u0164\u0001\u0164\u0001\u0164\u0001\u0164"+
		"\u0001\u0164\u0001\u0164\u0001\u0164\u0001\u0164\u0001\u0164\u0001\u0164"+
		"\u0001\u0164\u0001\u0164\u0001\u0164\u0001\u0164\u0001\u0164\u0001\u0164"+
		"\u0001\u0164\u0005\u0164\u1e3e\b\u0164\n\u0164\f\u0164\u1e41\t\u0164\u0001"+
		"\u0165\u0001\u0165\u0001\u0166\u0001\u0166\u0001\u0166\u0001\u0166\u0001"+
		"\u0166\u0001\u0166\u0001\u0166\u0001\u0166\u0001\u0166\u0001\u0166\u0001"+
		"\u0166\u0001\u0166\u0001\u0166\u0001\u0166\u0003\u0166\u1e53\b\u0166\u0001"+
		"\u0167\u0001\u0167\u0001\u0167\u0001\u0167\u0001\u0167\u0001\u0167\u0001"+
		"\u0167\u0003\u0167\u1e5c\b\u0167\u0001\u0168\u0001\u0168\u0001\u0168\u0001"+
		"\u0168\u0001\u0168\u0001\u0168\u0001\u0168\u0003\u0168\u1e65\b\u0168\u0001"+
		"\u0169\u0001\u0169\u0001\u016a\u0001\u016a\u0001\u016b\u0001\u016b\u0001"+
		"\u016b\u0001\u016b\u0001\u016b\u0003\u016b\u1e70\b\u016b\u0001\u016c\u0001"+
		"\u016c\u0001\u016d\u0001\u016d\u0001\u016e\u0001\u016e\u0001\u016f\u0001"+
		"\u016f\u0001\u0170\u0001\u0170\u0001\u0171\u0001\u0171\u0001\u0172\u0001"+
		"\u0172\u0001\u0172\u0000\u0003\u02c4\u02c6\u02c8\u0173\u0000\u0002\u0004"+
		"\u0006\b\n\f\u000e\u0010\u0012\u0014\u0016\u0018\u001a\u001c\u001e \""+
		"$&(*,.02468:<>@BDFHJLNPRTVXZ\\^`bdfhjlnprtvxz|~\u0080\u0082\u0084\u0086"+
		"\u0088\u008a\u008c\u008e\u0090\u0092\u0094\u0096\u0098\u009a\u009c\u009e"+
		"\u00a0\u00a2\u00a4\u00a6\u00a8\u00aa\u00ac\u00ae\u00b0\u00b2\u00b4\u00b6"+
		"\u00b8\u00ba\u00bc\u00be\u00c0\u00c2\u00c4\u00c6\u00c8\u00ca\u00cc\u00ce"+
		"\u00d0\u00d2\u00d4\u00d6\u00d8\u00da\u00dc\u00de\u00e0\u00e2\u00e4\u00e6"+
		"\u00e8\u00ea\u00ec\u00ee\u00f0\u00f2\u00f4\u00f6\u00f8\u00fa\u00fc\u00fe"+
		"\u0100\u0102\u0104\u0106\u0108\u010a\u010c\u010e\u0110\u0112\u0114\u0116"+
		"\u0118\u011a\u011c\u011e\u0120\u0122\u0124\u0126\u0128\u012a\u012c\u012e"+
		"\u0130\u0132\u0134\u0136\u0138\u013a\u013c\u013e\u0140\u0142\u0144\u0146"+
		"\u0148\u014a\u014c\u014e\u0150\u0152\u0154\u0156\u0158\u015a\u015c\u015e"+
		"\u0160\u0162\u0164\u0166\u0168\u016a\u016c\u016e\u0170\u0172\u0174\u0176"+
		"\u0178\u017a\u017c\u017e\u0180\u0182\u0184\u0186\u0188\u018a\u018c\u018e"+
		"\u0190\u0192\u0194\u0196\u0198\u019a\u019c\u019e\u01a0\u01a2\u01a4\u01a6"+
		"\u01a8\u01aa\u01ac\u01ae\u01b0\u01b2\u01b4\u01b6\u01b8\u01ba\u01bc\u01be"+
		"\u01c0\u01c2\u01c4\u01c6\u01c8\u01ca\u01cc\u01ce\u01d0\u01d2\u01d4\u01d6"+
		"\u01d8\u01da\u01dc\u01de\u01e0\u01e2\u01e4\u01e6\u01e8\u01ea\u01ec\u01ee"+
		"\u01f0\u01f2\u01f4\u01f6\u01f8\u01fa\u01fc\u01fe\u0200\u0202\u0204\u0206"+
		"\u0208\u020a\u020c\u020e\u0210\u0212\u0214\u0216\u0218\u021a\u021c\u021e"+
		"\u0220\u0222\u0224\u0226\u0228\u022a\u022c\u022e\u0230\u0232\u0234\u0236"+
		"\u0238\u023a\u023c\u023e\u0240\u0242\u0244\u0246\u0248\u024a\u024c\u024e"+
		"\u0250\u0252\u0254\u0256\u0258\u025a\u025c\u025e\u0260\u0262\u0264\u0266"+
		"\u0268\u026a\u026c\u026e\u0270\u0272\u0274\u0276\u0278\u027a\u027c\u027e"+
		"\u0280\u0282\u0284\u0286\u0288\u028a\u028c\u028e\u0290\u0292\u0294\u0296"+
		"\u0298\u029a\u029c\u029e\u02a0\u02a2\u02a4\u02a6\u02a8\u02aa\u02ac\u02ae"+
		"\u02b0\u02b2\u02b4\u02b6\u02b8\u02ba\u02bc\u02be\u02c0\u02c2\u02c4\u02c6"+
		"\u02c8\u02ca\u02cc\u02ce\u02d0\u02d2\u02d4\u02d6\u02d8\u02da\u02dc\u02de"+
		"\u02e0\u02e2\u02e4\u0000\u009b\u0002\u0000((\u0098\u0098\u0002\u0000\u0216"+
		"\u0216\u021c\u021c\u0003\u0000FF\u00a1\u00a1\u00b8\u00b8\u0005\u0000+"+
		"+\u0183\u0183\u01c9\u01c9\u01cd\u01cd\u020e\u020e\u0004\u0000++\u01a6"+
		"\u01a6\u0214\u0214\u0266\u0266\u0002\u0000\u0205\u0205\u0497\u0497\u0002"+
		"\u0000PP\u008f\u008f\u0002\u0000\u0010\u0010\u0151\u0151\u0003\u0000-"+
		"-WW\u00bb\u00bb\u0002\u0000\u01b5\u01b5\u0231\u0231\u0003\u0000\u01fd"+
		"\u01fd\u028d\u028d\u0295\u0295\u0002\u0000\u018b\u018b\u01cf\u01cf\u0002"+
		"\u0000\u0163\u0163\u01dd\u01dd\u0002\u0000\u0014\u0014\u047f\u047f\u0002"+
		"\u0000\u00c3\u00c3\u047f\u047f\u0002\u0000++\u048d\u048e\u0003\u0000\u0161"+
		"\u0161\u01be\u01be\u025e\u025e\u0002\u0000\u01ce\u01ce\u02a4\u02a4\u0002"+
		"\u0000\u020c\u020c\u02ae\u02ae\u0003\u0000RRVV\u007f\u007f\u0003\u0000"+
		"++\u0195\u0195\u01b2\u01b2\u0003\u0000++\u0191\u0191\u0320\u0320\u0003"+
		"\u0000\u0280\u0280\u02a3\u02a3\u0465\u0465\u0002\u0000SS]]\u0003\u0000"+
		"\u01b7\u01b7\u0227\u0227\u0268\u0268\u0002\u0000FF\u00a1\u00a1\u0001\u0000"+
		"\u0167\u0168\u0001\u0000\u048d\u048e\u0002\u0000\u0497\u0497\u049f\u049f"+
		"\u0002\u0000SS\u0187\u0187\u0002\u0000\u0224\u0224\u0497\u0497\u0002\u0000"+
		"\u0225\u0225\u0497\u0497\u0003\u0000\u01b1\u01b1\u01d8\u01d8\u020c\u020c"+
		"\u0007\u0000++\u0175\u0175\u0177\u0177\u0195\u0195\u01b2\u01b2\u0240\u0240"+
		"\u049f\u049f\u0002\u0000\u0205\u0205\u0215\u0215\u0001\u0000\u048e\u048f"+
		"\u0002\u0000$$\u01c0\u01c0\u0002\u0000\u0005\u000544\u0002\u0000\u001b"+
		"\u001b\u001f\u001f\u0002\u0000\f\f\u00b2\u00b2\u0002\u0000\u00c3\u00c3"+
		"\u02a8\u02a8\u0003\u0000++\u0183\u0183\u01c9\u01c9\u0002\u0000\u0016\u0016"+
		"\u0092\u0092\u0003\u0000,,MMll\u0002\u0000ll\u0179\u0179\u0002\u0000\u0170"+
		"\u0170\u01ae\u01ae\u0002\u0000gg\u025c\u025c\u0002\u0000,,ll\u0002\u0000"+
		"\u0006\u000622\u0002\u0000\u00bf\u00bf\u02a0\u02a0\u0004\u0000\u01b1\u01b1"+
		"\u01d8\u01d8\u020b\u020b\u0235\u0235\u0002\u0000\u01b1\u01b1\u020b\u020b"+
		"\u0002\u0000\r\r..\u0003\u0000CCPP\u00bd\u00bd\u0002\u0000##UU\u0002\u0000"+
		"cc\u0096\u0096\u0002\u0000\u0006\u000623\u0001\u0000\u0275\u0276\u0002"+
		"\u0000\u00af\u00af\u02ee\u02ee\u0002\u0000\u01ba\u01ba\u0264\u0264\u0002"+
		"\u0000\u00e5\u00e5\u01e0\u01e0\u0005\u0000mm\u01e5\u01e6\u01e8\u01e8\u01ec"+
		"\u01f4\u0242\u0242\u0004\u0000\u01e2\u01e3\u01e7\u01e7\u01e9\u01ea\u0243"+
		"\u0243\u0003\u0000nn\u01e1\u01e1\u01eb\u01eb\u0002\u0000\u01d1\u01d1\u0277"+
		"\u0277\u0002\u0000\u0271\u0271\u0273\u0273\u0002\u0000\u015b\u015b\u0278"+
		"\u0278\u0002\u0000\\\\\u0252\u0252\u0002\u000044\u0189\u0189\u0003\u0000"+
		"  >>\u00b6\u00b6\u0003\u0000\u0085\u0085\u00af\u00af\u01b8\u01b8\u0002"+
		"\u0000\u00c3\u00c3\u0460\u0460\u0003\u0000\f\f\u0014\u0014\u00be\u00be"+
		"\u0002\u0000\f\f\u00be\u00be\u0002\u0000++{{\u0002\u0000ii\u00b9\u00b9"+
		"\u0004\u0000\u016b\u016b\u01e0\u01e0\u0269\u0269\u046a\u046a\u0003\u0000"+
		"))\u0099\u0099\u02a2\u02a2\u0003\u0000\u02c1\u02c1\u046c\u046c\u046e\u046e"+
		"\u0002\u0000uu\u01dd\u01dd\u0002\u0000\u01a9\u01a9\u023b\u023b\u0004\u0000"+
		"\u00d1\u00d1\u00d3\u00d3\u00d9\u00d9\u0281\u0281\u0002\u0000\u046f\u046f"+
		"\u047f\u047f\u0002\u0000\u015c\u015c\u0244\u0244\u0002\u0000EERR\u0006"+
		"\u0000\u0085\u0085\u00af\u00af\u00b4\u00b4\u01a2\u01a2\u01b8\u01b8\u02a2"+
		"\u02a2\u0002\u0000\u0204\u0204\u027d\u027d\u0002\u0000\u019f\u019f\u02a6"+
		"\u02a6\u0002\u0000\u0085\u0085\u01b8\u01b8\u0003\u0000SS^^\u01c7\u01c7"+
		"\u0001\u0000\u02bc\u02bf\u0003\u0000\u01ba\u01ba\u01dd\u01dd\u0264\u0264"+
		"\u0002\u0000\u027d\u027d\u02a1\u02a1\u0002\u0000\u017b\u017b\u023a\u023a"+
		"\u0006\u0000\u00e5\u00e5\u019c\u019c\u019e\u019e\u01b9\u01b9\u0241\u0241"+
		"\u026a\u026a\u0002\u0000./??\u0003\u0000\u01a9\u01a9\u0229\u0229\u037d"+
		"\u037d\u0002\u0000\u01d5\u01d5\u028f\u028f\n\u0000\u016a\u016a\u0172\u0172"+
		"\u017d\u017f\u0186\u0186\u01fe\u01fe\u0206\u0206\u0282\u0282\u0289\u0289"+
		"\u034c\u034c\u03f6\u03f6\u0002\u0000$$\u00aa\u00aa\u0002\u0000ww\u03ec"+
		"\u03ec\u000b\u0000\u016a\u016a\u0172\u0172\u017d\u017f\u0186\u0186\u01fe"+
		"\u01fe\u0206\u0206\u0253\u0253\u0282\u0282\u0289\u0289\u034c\u034c\u03f6"+
		"\u03f6\u0002\u0000\u048c\u048c\u04a1\u04a2\u0001\u0000\u04a2\u04a3\u0002"+
		"\u0000\u017a\u017a\u031b\u0326\u0002\u0000\u0197\u0197\u0497\u0497\u0003"+
		"\u0000\u048d\u048f\u0498\u0498\u049a\u049a\u0002\u0000@@\u00b5\u00b5\u0002"+
		"\u0000vv\u049b\u049b\u0005\u0000\u001a\u001a\u00e1\u00e3\u00ea\u00ea\u00ec"+
		"\u00ef\u0209\u0209\u0002\u0000\u001a\u001a\u00e1\u00e1\u0002\u0000\u001a"+
		"\u001a\u00e1\u00e2\u0001\u0000\u00c7\u00d2\u0003\u0000\u00ba\u00ba\u00c6"+
		"\u00c6\u0267\u0267\u0002\u0000\u00d6\u00db\u01b2\u01b2\u0006\u0000\u00dc"+
		"\u00dc\u00e7\u00e7\u00e9\u00e9\u00eb\u00eb\u00f2\u00f2\u015f\u0160\u0004"+
		"\u0000\u00dd\u00e0\u00e5\u00e6\u00e8\u00e8\u015d\u015d\u0002\u0000\u009b"+
		"\u009b\u00f0\u00f0\u0002\u0000\u01d5\u01d5\u032b\u0333\u0003\u0000\u00d6"+
		"\u00d6\u00e5\u00e5\u0209\u0209\u0006\u0000\u00cb\u00cb\u00d1\u00d1\u00d4"+
		"\u00d4\u00dc\u00dd\u00df\u00e0\u01d5\u01d5\u0001\u0000\u00d9\u00da\u0002"+
		"\u0000\u00ba\u00ba\u0267\u0267\u0002\u0000\u00cb\u00cb\u00d1\u00d1\u0001"+
		"\u0000\u0461\u0462\u0002\u0000\u020b\u020b\u0464\u0464\u0002\u0000\u013e"+
		"\u0141\u0145\u0145\u0003\u0000\u0098\u0098\u013c\u0141\u014e\u014e\u0001"+
		"\u0000\u0148\u0149\u0003\u0000\u0012\u0012aa\u00b3\u00b3\u0002\u0000\u00e1"+
		"\u00e1\u00e5\u00e5\u0002\u0000\u00dc\u00dd\u00df\u00df\u0003\u0000\r\r"+
		"..\u03ea\u03ea\u0003\u0000\u0121\u0121\u012d\u012e\u0138\u0138\u0003\u0000"+
		"\u0122\u0124\u0134\u0137\u0139\u013b\u0002\u0000\u012a\u012a\u012c\u012c"+
		"\u0002\u0000\u0128\u0128\u012b\u012b\u0002\u0000\u0126\u0127\u0131\u0133"+
		"\u0002\u0000\u0087\u0087\u025c\u025c\u0002\u0000\u01b4\u01b4\u0232\u0232"+
		"\u0002\u0000\u021a\u021a\u022a\u022a\u0002\u0000tt\u0482\u0482\u0003\u0000"+
		"@@\u00b5\u00b5\u0299\u0299\u0002\u0000\u008b\u008b\u0097\u0097\u0003\u0000"+
		"\u0006\u0006\u0154\u0154\u026d\u026d\u0003\u0000tt\u047b\u047c\u0482\u0483"+
		"\u0002\u0000\u0478\u047a\u047d\u047e\u0001\u0000\u047b\u047c\u0002\u0000"+
		"\u00e5\u00e5\u02f2\u031a\u0001\u0000\u0327\u032a\u0005\u0000\u02cc\u02cd"+
		"\u02dd\u02df\u02e5\u02e5\u02eb\u02ec\u02ee\u02ee\u0001\u0000\u02b4\u02bb"+
		"\u0003\u0000\u00dc\u00e0\u00ed\u00ed\u00f0\u00f07\u0000\u000b\u000b\u000e"+
		"\u000e\u0013\u0013\u001e\u001e$&++1188::<\u05ec\u0001"+
		"\u0000\u0000\u0000@\u060f\u0001\u0000\u0000\u0000B\u0616\u0001\u0000\u0000"+
		"\u0000D\u0618\u0001\u0000\u0000\u0000F\u061d\u0001\u0000\u0000\u0000H"+
		"\u0646\u0001\u0000\u0000\u0000J\u064c\u0001\u0000\u0000\u0000L\u064e\u0001"+
		"\u0000\u0000\u0000N\u0663\u0001\u0000\u0000\u0000P\u066a\u0001\u0000\u0000"+
		"\u0000R\u066c\u0001\u0000\u0000\u0000T\u068d\u0001\u0000\u0000\u0000V"+
		"\u0690\u0001\u0000\u0000\u0000X\u0695\u0001\u0000\u0000\u0000Z\u06af\u0001"+
		"\u0000\u0000\u0000\\\u06bf\u0001\u0000\u0000\u0000^\u06c1\u0001\u0000"+
		"\u0000\u0000`\u06d7\u0001\u0000\u0000\u0000b\u06d9\u0001\u0000\u0000\u0000"+
		"d\u071d\u0001\u0000\u0000\u0000f\u076a\u0001\u0000\u0000\u0000h\u076c"+
		"\u0001\u0000\u0000\u0000j\u0788\u0001\u0000\u0000\u0000l\u0792\u0001\u0000"+
		"\u0000\u0000n\u07b0\u0001\u0000\u0000\u0000p\u0874\u0001\u0000\u0000\u0000"+
		"r\u0876\u0001\u0000\u0000\u0000t\u0878\u0001\u0000\u0000\u0000v\u087b"+
		"\u0001\u0000\u0000\u0000x\u08da\u0001\u0000\u0000\u0000z\u08dc\u0001\u0000"+
		"\u0000\u0000|\u08e7\u0001\u0000\u0000\u0000~\u0900\u0001\u0000\u0000\u0000"+
		"\u0080\u0994\u0001\u0000\u0000\u0000\u0082\u0999\u0001\u0000\u0000\u0000"+
		"\u0084\u099b\u0001\u0000\u0000\u0000\u0086\u09a5\u0001\u0000\u0000\u0000"+
		"\u0088\u09dd\u0001\u0000\u0000\u0000\u008a\u09f1\u0001\u0000\u0000\u0000"+
		"\u008c\u09f3\u0001\u0000\u0000\u0000\u008e\u0a16\u0001\u0000\u0000\u0000"+
		"\u0090\u0a1f\u0001\u0000\u0000\u0000\u0092\u0a26\u0001\u0000\u0000\u0000"+
		"\u0094\u0a3d\u0001\u0000\u0000\u0000\u0096\u0a46\u0001\u0000\u0000\u0000"+
		"\u0098\u0a55\u0001\u0000\u0000\u0000\u009a\u0a71\u0001\u0000\u0000\u0000"+
		"\u009c\u0a85\u0001\u0000\u0000\u0000\u009e\u0aa5\u0001\u0000\u0000\u0000"+
		"\u00a0\u0c2a\u0001\u0000\u0000\u0000\u00a2\u0c94\u0001\u0000\u0000\u0000"+
		"\u00a4\u0c96\u0001\u0000\u0000\u0000\u00a6\u0c9d\u0001\u0000\u0000\u0000"+
		"\u00a8\u0ca4\u0001\u0000\u0000\u0000\u00aa\u0cc1\u0001\u0000\u0000\u0000"+
		"\u00ac\u0cc9\u0001\u0000\u0000\u0000\u00ae\u0cd0\u0001\u0000\u0000\u0000"+
		"\u00b0\u0cd7\u0001\u0000\u0000\u0000\u00b2\u0cde\u0001\u0000\u0000\u0000"+
		"\u00b4\u0ced\u0001\u0000\u0000\u0000\u00b6\u0cf7\u0001\u0000\u0000\u0000"+
		"\u00b8\u0cfe\u0001\u0000\u0000\u0000\u00ba\u0d0e\u0001\u0000\u0000\u0000"+
		"\u00bc\u0d3c\u0001\u0000\u0000\u0000\u00be\u0d3e\u0001\u0000\u0000\u0000"+
		"\u00c0\u0d51\u0001\u0000\u0000\u0000\u00c2\u0d5b\u0001\u0000\u0000\u0000"+
		"\u00c4\u0d62\u0001\u0000\u0000\u0000\u00c6\u0d6a\u0001\u0000\u0000\u0000"+
		"\u00c8\u0d76\u0001\u0000\u0000\u0000\u00ca\u0d78\u0001\u0000\u0000\u0000"+
		"\u00cc\u0d7f\u0001\u0000\u0000\u0000\u00ce\u0d81\u0001\u0000\u0000\u0000"+
		"\u00d0\u0dbb\u0001\u0000\u0000\u0000\u00d2\u0e05\u0001\u0000\u0000\u0000"+
		"\u00d4\u0e40\u0001\u0000\u0000\u0000\u00d6\u0ea2\u0001\u0000\u0000\u0000"+
		"\u00d8\u0ea4\u0001\u0000\u0000\u0000\u00da\u0eb5\u0001\u0000\u0000\u0000"+
		"\u00dc\u0ec1\u0001\u0000\u0000\u0000\u00de\u0ecb\u0001\u0000\u0000\u0000"+
		"\u00e0\u0edf\u0001\u0000\u0000\u0000\u00e2\u0ee1\u0001\u0000\u0000\u0000"+
		"\u00e4\u0ee9\u0001\u0000\u0000\u0000\u00e6\u0ef1\u0001\u0000\u0000\u0000"+
		"\u00e8\u0ef6\u0001\u0000\u0000\u0000\u00ea\u0f1a\u0001\u0000\u0000\u0000"+
		"\u00ec\u0f51\u0001\u0000\u0000\u0000\u00ee\u0f5a\u0001\u0000\u0000\u0000"+
		"\u00f0\u0f6e\u0001\u0000\u0000\u0000\u00f2\u0f7a\u0001\u0000\u0000\u0000"+
		"\u00f4\u0f7e\u0001\u0000\u0000\u0000\u00f6\u0f9f\u0001\u0000\u0000\u0000"+
		"\u00f8\u0fb4\u0001\u0000\u0000\u0000\u00fa\u0fbe\u0001\u0000\u0000\u0000"+
		"\u00fc\u0fc2\u0001\u0000\u0000\u0000\u00fe\u0fdc\u0001\u0000\u0000\u0000"+
		"\u0100\u1006\u0001\u0000\u0000\u0000\u0102\u1008\u0001\u0000\u0000\u0000"+
		"\u0104\u1017\u0001\u0000\u0000\u0000\u0106\u1048\u0001\u0000\u0000\u0000"+
		"\u0108\u1051\u0001\u0000\u0000\u0000\u010a\u105b\u0001\u0000\u0000\u0000"+
		"\u010c\u1065\u0001\u0000\u0000\u0000\u010e\u10a1\u0001\u0000\u0000\u0000"+
		"\u0110\u10a3\u0001\u0000\u0000\u0000\u0112\u10c0\u0001\u0000\u0000\u0000"+
		"\u0114\u10c6\u0001\u0000\u0000\u0000\u0116\u10ce\u0001\u0000\u0000\u0000"+
		"\u0118\u10df\u0001\u0000\u0000\u0000\u011a\u10ef\u0001\u0000\u0000\u0000"+
		"\u011c\u1114\u0001\u0000\u0000\u0000\u011e\u111a\u0001\u0000\u0000\u0000"+
		"\u0120\u1123\u0001\u0000\u0000\u0000\u0122\u1130\u0001\u0000\u0000\u0000"+
		"\u0124\u1134\u0001\u0000\u0000\u0000\u0126\u115a\u0001\u0000\u0000\u0000"+
		"\u0128\u1180\u0001\u0000\u0000\u0000\u012a\u118e\u0001\u0000\u0000\u0000"+
		"\u012c\u1196\u0001\u0000\u0000\u0000\u012e\u119a\u0001\u0000\u0000\u0000"+
		"\u0130\u11a0\u0001\u0000\u0000\u0000\u0132\u11ae\u0001\u0000\u0000\u0000"+
		"\u0134\u11b1\u0001\u0000\u0000\u0000\u0136\u11c3\u0001\u0000\u0000\u0000"+
		"\u0138\u11c7\u0001\u0000\u0000\u0000\u013a\u11d7\u0001\u0000\u0000\u0000"+
		"\u013c\u11d9\u0001\u0000\u0000\u0000\u013e\u11e5\u0001\u0000\u0000\u0000"+
		"\u0140\u11e9\u0001\u0000\u0000\u0000\u0142\u11fa\u0001\u0000\u0000\u0000"+
		"\u0144\u120b\u0001\u0000\u0000\u0000\u0146\u120e\u0001\u0000\u0000\u0000"+
		"\u0148\u1218\u0001\u0000\u0000\u0000\u014a\u121c\u0001\u0000\u0000\u0000"+
		"\u014c\u1229\u0001\u0000\u0000\u0000\u014e\u122c\u0001\u0000\u0000\u0000"+
		"\u0150\u1231\u0001\u0000\u0000\u0000\u0152\u1245\u0001\u0000\u0000\u0000"+
		"\u0154\u1247\u0001\u0000\u0000\u0000\u0156\u1258\u0001\u0000\u0000\u0000"+
		"\u0158\u1261\u0001\u0000\u0000\u0000\u015a\u126a\u0001\u0000\u0000\u0000"+
		"\u015c\u126c\u0001\u0000\u0000\u0000\u015e\u127a\u0001\u0000\u0000\u0000"+
		"\u0160\u1285\u0001\u0000\u0000\u0000\u0162\u128e\u0001\u0000\u0000\u0000"+
		"\u0164\u1291\u0001\u0000\u0000\u0000\u0166\u1299\u0001\u0000\u0000\u0000"+
		"\u0168\u12b2\u0001\u0000\u0000\u0000\u016a\u12be\u0001\u0000\u0000\u0000"+
		"\u016c\u12c1\u0001\u0000\u0000\u0000\u016e\u12e1\u0001\u0000\u0000\u0000"+
		"\u0170\u12e3\u0001\u0000\u0000\u0000\u0172\u12e5\u0001\u0000\u0000\u0000"+
		"\u0174\u12e7\u0001\u0000\u0000\u0000\u0176\u12e9\u0001\u0000\u0000\u0000"+
		"\u0178\u131e\u0001\u0000\u0000\u0000\u017a\u1320\u0001\u0000\u0000\u0000"+
		"\u017c\u1326\u0001\u0000\u0000\u0000\u017e\u133a\u0001\u0000\u0000\u0000"+
		"\u0180\u1348\u0001\u0000\u0000\u0000\u0182\u1353\u0001\u0000\u0000\u0000"+
		"\u0184\u1355\u0001\u0000\u0000\u0000\u0186\u135b\u0001\u0000\u0000\u0000"+
		"\u0188\u1365\u0001\u0000\u0000\u0000\u018a\u1369\u0001\u0000\u0000\u0000"+
		"\u018c\u1370\u0001\u0000\u0000\u0000\u018e\u1374\u0001\u0000\u0000\u0000"+
		"\u0190\u137a\u0001\u0000\u0000\u0000\u0192\u1381\u0001\u0000\u0000\u0000"+
		"\u0194\u1387\u0001\u0000\u0000\u0000\u0196\u138d\u0001\u0000\u0000\u0000"+
		"\u0198\u1392\u0001\u0000\u0000\u0000\u019a\u13c1\u0001\u0000\u0000\u0000"+
		"\u019c\u13d6\u0001\u0000\u0000\u0000\u019e\u13ef\u0001\u0000\u0000\u0000"+
		"\u01a0\u13f2\u0001\u0000\u0000\u0000\u01a2\u13f8\u0001\u0000\u0000\u0000"+
		"\u01a4\u1408\u0001\u0000\u0000\u0000\u01a6\u1417\u0001\u0000\u0000\u0000"+
		"\u01a8\u141d\u0001\u0000\u0000\u0000\u01aa\u143b\u0001\u0000\u0000\u0000"+
		"\u01ac\u143d\u0001\u0000\u0000\u0000\u01ae\u1444\u0001\u0000\u0000\u0000"+
		"\u01b0\u1450\u0001\u0000\u0000\u0000\u01b2\u1456\u0001\u0000\u0000\u0000"+
		"\u01b4\u146f\u0001\u0000\u0000\u0000\u01b6\u1473\u0001\u0000\u0000\u0000"+
		"\u01b8\u1477\u0001\u0000\u0000\u0000\u01ba\u1482\u0001\u0000\u0000\u0000"+
		"\u01bc\u14d3\u0001\u0000\u0000\u0000\u01be\u1516\u0001\u0000\u0000\u0000"+
		"\u01c0\u1518\u0001\u0000\u0000\u0000\u01c2\u1582\u0001\u0000\u0000\u0000"+
		"\u01c4\u159a\u0001\u0000\u0000\u0000\u01c6\u159c\u0001\u0000\u0000\u0000"+
		"\u01c8\u15ae\u0001\u0000\u0000\u0000\u01ca\u15fe\u0001\u0000\u0000\u0000"+
		"\u01cc\u1600\u0001\u0000\u0000\u0000\u01ce\u160d\u0001\u0000\u0000\u0000"+
		"\u01d0\u1618\u0001\u0000\u0000\u0000\u01d2\u163a\u0001\u0000\u0000\u0000"+
		"\u01d4\u163e\u0001\u0000\u0000\u0000\u01d6\u1653\u0001\u0000\u0000\u0000"+
		"\u01d8\u165d\u0001\u0000\u0000\u0000\u01da\u1667\u0001\u0000\u0000\u0000"+
		"\u01dc\u168f\u0001\u0000\u0000\u0000\u01de\u1691\u0001\u0000\u0000\u0000"+
		"\u01e0\u1694\u0001\u0000\u0000\u0000\u01e2\u171e\u0001\u0000\u0000\u0000"+
		"\u01e4\u1730\u0001\u0000\u0000\u0000\u01e6\u1732\u0001\u0000\u0000\u0000"+
		"\u01e8\u1736\u0001\u0000\u0000\u0000\u01ea\u175c\u0001\u0000\u0000\u0000"+
		"\u01ec\u1765\u0001\u0000\u0000\u0000\u01ee\u176b\u0001\u0000\u0000\u0000"+
		"\u01f0\u1774\u0001\u0000\u0000\u0000\u01f2\u178a\u0001\u0000\u0000\u0000"+
		"\u01f4\u178c\u0001\u0000\u0000\u0000\u01f6\u179d\u0001\u0000\u0000\u0000"+
		"\u01f8\u17a3\u0001\u0000\u0000\u0000\u01fa\u17db\u0001\u0000\u0000\u0000"+
		"\u01fc\u1878\u0001\u0000\u0000\u0000\u01fe\u1884\u0001\u0000\u0000\u0000"+
		"\u0200\u1893\u0001\u0000\u0000\u0000\u0202\u1899\u0001\u0000\u0000\u0000"+
		"\u0204\u18ac\u0001\u0000\u0000\u0000\u0206\u18b6\u0001\u0000\u0000\u0000"+
		"\u0208\u18c4\u0001\u0000\u0000\u0000\u020a\u18c6\u0001\u0000\u0000\u0000"+
		"\u020c\u18c9\u0001\u0000\u0000\u0000\u020e\u18ef\u0001\u0000\u0000\u0000"+
		"\u0210\u18f1\u0001\u0000\u0000\u0000\u0212\u18f7\u0001\u0000\u0000\u0000"+
		"\u0214\u1903\u0001\u0000\u0000\u0000\u0216\u1907\u0001\u0000\u0000\u0000"+
		"\u0218\u1909\u0001\u0000\u0000\u0000\u021a\u1933\u0001\u0000\u0000\u0000"+
		"\u021c\u193a\u0001\u0000\u0000\u0000\u021e\u193c\u0001\u0000\u0000\u0000"+
		"\u0220\u1953\u0001\u0000\u0000\u0000\u0222\u1959\u0001\u0000\u0000\u0000"+
		"\u0224\u1961\u0001\u0000\u0000\u0000\u0226\u1964\u0001\u0000\u0000\u0000"+
		"\u0228\u1967\u0001\u0000\u0000\u0000\u022a\u197c\u0001\u0000\u0000\u0000"+
		"\u022c\u1991\u0001\u0000\u0000\u0000\u022e\u1999\u0001\u0000\u0000\u0000"+
		"\u0230\u19bf\u0001\u0000\u0000\u0000\u0232\u19cb\u0001\u0000\u0000\u0000"+
		"\u0234\u19cd\u0001\u0000\u0000\u0000\u0236\u19d3\u0001\u0000\u0000\u0000"+
		"\u0238\u19d7\u0001\u0000\u0000\u0000\u023a\u19e7\u0001\u0000\u0000\u0000"+
		"\u023c\u19f4\u0001\u0000\u0000\u0000\u023e\u19fd\u0001\u0000\u0000\u0000"+
		"\u0240\u19ff\u0001\u0000\u0000\u0000\u0242\u1a06\u0001\u0000\u0000\u0000"+
		"\u0244\u1a08\u0001\u0000\u0000\u0000\u0246\u1a0e\u0001\u0000\u0000\u0000"+
		"\u0248\u1a12\u0001\u0000\u0000\u0000\u024a\u1a17\u0001\u0000\u0000\u0000"+
		"\u024c\u1a19\u0001\u0000\u0000\u0000\u024e\u1a1b\u0001\u0000\u0000\u0000"+
		"\u0250\u1a1d\u0001\u0000\u0000\u0000\u0252\u1a2f\u0001\u0000\u0000\u0000"+
		"\u0254\u1a3f\u0001\u0000\u0000\u0000\u0256\u1a43\u0001\u0000\u0000\u0000"+
		"\u0258\u1a48\u0001\u0000\u0000\u0000\u025a\u1a53\u0001\u0000\u0000\u0000"+
		"\u025c\u1a58\u0001\u0000\u0000\u0000\u025e\u1a5a\u0001\u0000\u0000\u0000"+
		"\u0260\u1a5e\u0001\u0000\u0000\u0000\u0262\u1a77\u0001\u0000\u0000\u0000"+
		"\u0264\u1a79\u0001\u0000\u0000\u0000\u0266\u1a7c\u0001\u0000\u0000\u0000"+
		"\u0268\u1a81\u0001\u0000\u0000\u0000\u026a\u1a91\u0001\u0000\u0000\u0000"+
		"\u026c\u1b12\u0001\u0000\u0000\u0000\u026e\u1b14\u0001\u0000\u0000\u0000"+
		"\u0270\u1b1f\u0001\u0000\u0000\u0000\u0272\u1b37\u0001\u0000\u0000\u0000"+
		"\u0274\u1b3c\u0001\u0000\u0000\u0000\u0276\u1b40\u0001\u0000\u0000\u0000"+
		"\u0278\u1b46\u0001\u0000\u0000\u0000\u027a\u1b4e\u0001\u0000\u0000\u0000"+
		"\u027c\u1b56\u0001\u0000\u0000\u0000\u027e\u1b5e\u0001\u0000\u0000\u0000"+
		"\u0280\u1b66\u0001\u0000\u0000\u0000\u0282\u1b71\u0001\u0000\u0000\u0000"+
		"\u0284\u1b79\u0001\u0000\u0000\u0000\u0286\u1b81\u0001\u0000\u0000\u0000"+
		"\u0288\u1b89\u0001\u0000\u0000\u0000\u028a\u1b91\u0001\u0000\u0000\u0000"+
		"\u028c\u1bbc\u0001\u0000\u0000\u0000\u028e\u1bcc\u0001\u0000\u0000\u0000"+
		"\u0290\u1bd0\u0001\u0000\u0000\u0000\u0292\u1bd2\u0001\u0000\u0000\u0000"+
		"\u0294\u1bd5\u0001\u0000\u0000\u0000\u0296\u1bd9\u0001\u0000\u0000\u0000"+
		"\u0298\u1bdf\u0001\u0000\u0000\u0000\u029a\u1be4\u0001\u0000\u0000\u0000"+
		"\u029c\u1bf8\u0001\u0000\u0000\u0000\u029e\u1cad\u0001\u0000\u0000\u0000"+
		"\u02a0\u1caf\u0001\u0000\u0000\u0000\u02a2\u1cc2\u0001\u0000\u0000\u0000"+
		"\u02a4\u1cc4\u0001\u0000\u0000\u0000\u02a6\u1d03\u0001\u0000\u0000\u0000"+
		"\u02a8\u1d2b\u0001\u0000\u0000\u0000\u02aa\u1d2d\u0001\u0000\u0000\u0000"+
		"\u02ac\u1d37\u0001\u0000\u0000\u0000\u02ae\u1d42\u0001\u0000\u0000\u0000"+
		"\u02b0\u1d44\u0001\u0000\u0000\u0000\u02b2\u1d47\u0001\u0000\u0000\u0000"+
		"\u02b4\u1d4b\u0001\u0000\u0000\u0000\u02b6\u1d4d\u0001\u0000\u0000\u0000"+
		"\u02b8\u1d59\u0001\u0000\u0000\u0000\u02ba\u1d5b\u0001\u0000\u0000\u0000"+
		"\u02bc\u1d7d\u0001\u0000\u0000\u0000\u02be\u1d7f\u0001\u0000\u0000\u0000"+
		"\u02c0\u1d88\u0001\u0000\u0000\u0000\u02c2\u1d9a\u0001\u0000\u0000\u0000"+
		"\u02c4\u1da7\u0001\u0000\u0000\u0000\u02c6\u1db2\u0001\u0000\u0000\u0000"+
		"\u02c8\u1e28\u0001\u0000\u0000\u0000\u02ca\u1e42\u0001\u0000\u0000\u0000"+
		"\u02cc\u1e52\u0001\u0000\u0000\u0000\u02ce\u1e5b\u0001\u0000\u0000\u0000"+
		"\u02d0\u1e64\u0001\u0000\u0000\u0000\u02d2\u1e66\u0001\u0000\u0000\u0000"+
		"\u02d4\u1e68\u0001\u0000\u0000\u0000\u02d6\u1e6f\u0001\u0000\u0000\u0000"+
		"\u02d8\u1e71\u0001\u0000\u0000\u0000\u02da\u1e73\u0001\u0000\u0000\u0000"+
		"\u02dc\u1e75\u0001\u0000\u0000\u0000\u02de\u1e77\u0001\u0000\u0000\u0000"+
		"\u02e0\u1e79\u0001\u0000\u0000\u0000\u02e2\u1e7b\u0001\u0000\u0000\u0000"+
		"\u02e4\u1e7d\u0001\u0000\u0000\u0000\u02e6\u02e8\u0003\u0002\u0001\u0000"+
		"\u02e7\u02e6\u0001\u0000\u0000\u0000\u02e7\u02e8\u0001\u0000\u0000\u0000"+
		"\u02e8\u02eb\u0001\u0000\u0000\u0000\u02e9\u02ea\u0005\u047c\u0000\u0000"+
		"\u02ea\u02ec\u0005\u047c\u0000\u0000\u02eb\u02e9\u0001\u0000\u0000\u0000"+
		"\u02eb\u02ec\u0001\u0000\u0000\u0000\u02ec\u02ed\u0001\u0000\u0000\u0000"+
		"\u02ed\u02ee\u0005\u0000\u0000\u0001\u02ee\u0001\u0001\u0000\u0000\u0000"+
		"\u02ef\u02f2\u0003\u0004\u0002\u0000\u02f0\u02f1\u0005\u047c\u0000\u0000"+
		"\u02f1\u02f3\u0005\u047c\u0000\u0000\u02f2\u02f0\u0001\u0000\u0000\u0000"+
		"\u02f2\u02f3\u0001\u0000\u0000\u0000\u02f3\u02f5\u0001\u0000\u0000\u0000"+
		"\u02f4\u02f6\u0005\u048b\u0000\u0000\u02f5\u02f4\u0001\u0000\u0000\u0000"+
		"\u02f5\u02f6\u0001\u0000\u0000\u0000\u02f6\u02f9\u0001\u0000\u0000\u0000"+
		"\u02f7\u02f9\u0003\b\u0004\u0000\u02f8\u02ef\u0001\u0000\u0000\u0000\u02f8"+
		"\u02f7\u0001\u0000\u0000\u0000\u02f9\u02fc\u0001\u0000\u0000\u0000\u02fa"+
		"\u02f8\u0001\u0000\u0000\u0000\u02fa\u02fb\u0001\u0000\u0000\u0000\u02fb"+
		"\u0306\u0001\u0000\u0000\u0000\u02fc\u02fa\u0001\u0000\u0000\u0000\u02fd"+
		"\u0303\u0003\u0004\u0002\u0000\u02fe\u02ff\u0005\u047c\u0000\u0000\u02ff"+
		"\u0301\u0005\u047c\u0000\u0000\u0300\u02fe\u0001\u0000\u0000\u0000\u0300"+
		"\u0301\u0001\u0000\u0000\u0000\u0301\u0302\u0001\u0000\u0000\u0000\u0302"+
		"\u0304\u0005\u048b\u0000\u0000\u0303\u0300\u0001\u0000\u0000\u0000\u0303"+
		"\u0304\u0001\u0000\u0000\u0000\u0304\u0307\u0001\u0000\u0000\u0000\u0305"+
		"\u0307\u0003\b\u0004\u0000\u0306\u02fd\u0001\u0000\u0000\u0000\u0306\u0305"+
		"\u0001\u0000\u0000\u0000\u0307\u0003\u0001\u0000\u0000\u0000\u0308\u030a"+
		"\u0003\u0006\u0003\u0000\u0309\u0308\u0001\u0000\u0000\u0000\u0309\u030a"+
		"\u0001\u0000\u0000\u0000\u030a\u0312\u0001\u0000\u0000\u0000\u030b\u0313"+
		"\u0003\n\u0005\u0000\u030c\u0313\u0003\f\u0006\u0000\u030d\u0313\u0003"+
		"\u000e\u0007\u0000\u030e\u0313\u0003\u0010\b\u0000\u030f\u0313\u0003\u0012"+
		"\t\u0000\u0310\u0313\u0003\u0016\u000b\u0000\u0311\u0313\u0003\u0018\f"+
		"\u0000\u0312\u030b\u0001\u0000\u0000\u0000\u0312\u030c\u0001\u0000\u0000"+
		"\u0000\u0312\u030d\u0001\u0000\u0000\u0000\u0312\u030e\u0001\u0000\u0000"+
		"\u0000\u0312\u030f\u0001\u0000\u0000\u0000\u0312\u0310\u0001\u0000\u0000"+
		"\u0000\u0312\u0311\u0001\u0000\u0000\u0000\u0313\u0005\u0001\u0000\u0000"+
		"\u0000\u0314\u0315\u0005\u009b\u0000\u0000\u0315\u0316\u0005\u00ac\u0000"+
		"\u0000\u0316\u0317\u0005\u049f\u0000\u0000\u0317\u0318\u0005\u047f\u0000"+
		"\u0000\u0318\u031f\u0003\u026a\u0135\u0000\u0319\u031a\u0005\u048a\u0000"+
		"\u0000\u031a\u031b\u0005\u049f\u0000\u0000\u031b\u031c\u0005\u047f\u0000"+
		"\u0000\u031c\u031e\u0003\u026a\u0135\u0000\u031d\u0319\u0001\u0000\u0000"+
		"\u0000\u031e\u0321\u0001\u0000\u0000\u0000\u031f\u031d\u0001\u0000\u0000"+
		"\u0000\u031f\u0320\u0001\u0000\u0000\u0000\u0320\u0322\u0001\u0000\u0000"+
		"\u0000\u0321\u031f\u0001\u0000\u0000\u0000\u0322\u0323\u0005B\u0000\u0000"+
		"\u0323\u0007\u0001\u0000\u0000\u0000\u0324\u0325\u0005\u048b\u0000\u0000"+
		"\u0325\t\u0001\u0000\u0000\u0000\u0326\u0350\u0003\u001a\r\u0000\u0327"+
		"\u0350\u0003\u001c\u000e\u0000\u0328\u0350\u0003\u001e\u000f\u0000\u0329"+
		"\u0350\u0003 \u0010\u0000\u032a\u0350\u0003\"\u0011\u0000\u032b\u0350"+
		"\u0003$\u0012\u0000\u032c\u0350\u0003(\u0014\u0000\u032d\u0350\u0003*"+
		"\u0015\u0000\u032e\u0350\u0003,\u0016\u0000\u032f\u0350\u0003.\u0017\u0000"+
		"\u0330\u0350\u00030\u0018\u0000\u0331\u0350\u0003:\u001d\u0000\u0332\u0350"+
		"\u0003&\u0013\u0000\u0333\u0350\u0003<\u001e\u0000\u0334\u0350\u0003\u008a"+
		"E\u0000\u0335\u0350\u0003\u008cF\u0000\u0336\u0350\u0003\u008eG\u0000"+
		"\u0337\u0350\u0003\u0090H\u0000\u0338\u0350\u0003\u0092I\u0000\u0339\u0350"+
		"\u0003\u0094J\u0000\u033a\u0350\u0003\u0096K\u0000\u033b\u0350\u0003\u0098"+
		"L\u0000\u033c\u0350\u0003\u009aM\u0000\u033d\u0350\u0003\u009cN\u0000"+
		"\u033e\u0350\u0003\u009eO\u0000\u033f\u0350\u0003\u00a4R\u0000\u0340\u0350"+
		"\u0003\u00a6S\u0000\u0341\u0350\u0003\u00a8T\u0000\u0342\u0350\u0003\u00aa"+
		"U\u0000\u0343\u0350\u0003\u00acV\u0000\u0344\u0350\u0003\u00aeW\u0000"+
		"\u0345\u0350\u0003\u00b0X\u0000\u0346\u0350\u0003\u00b2Y\u0000\u0347\u0350"+
		"\u0003\u00b4Z\u0000\u0348\u0350\u0003\u00b6[\u0000\u0349\u0350\u0003\u00b8"+
		"\\\u0000\u034a\u0350\u0003\u00ba]\u0000\u034b\u0350\u0003\u00be_\u0000"+
		"\u034c\u0350\u0003\u00bc^\u0000\u034d\u0350\u0003\u00c0`\u0000\u034e\u0350"+
		"\u0003\u00c4b\u0000\u034f\u0326\u0001\u0000\u0000\u0000\u034f\u0327\u0001"+
		"\u0000\u0000\u0000\u034f\u0328\u0001\u0000\u0000\u0000\u034f\u0329\u0001"+
		"\u0000\u0000\u0000\u034f\u032a\u0001\u0000\u0000\u0000\u034f\u032b\u0001"+
		"\u0000\u0000\u0000\u034f\u032c\u0001\u0000\u0000\u0000\u034f\u032d\u0001"+
		"\u0000\u0000\u0000\u034f\u032e\u0001\u0000\u0000\u0000\u034f\u032f\u0001"+
		"\u0000\u0000\u0000\u034f\u0330\u0001\u0000\u0000\u0000\u034f\u0331\u0001"+
		"\u0000\u0000\u0000\u034f\u0332\u0001\u0000\u0000\u0000\u034f\u0333\u0001"+
		"\u0000\u0000\u0000\u034f\u0334\u0001\u0000\u0000\u0000\u034f\u0335\u0001"+
		"\u0000\u0000\u0000\u034f\u0336\u0001\u0000\u0000\u0000\u034f\u0337\u0001"+
		"\u0000\u0000\u0000\u034f\u0338\u0001\u0000\u0000\u0000\u034f\u0339\u0001"+
		"\u0000\u0000\u0000\u034f\u033a\u0001\u0000\u0000\u0000\u034f\u033b\u0001"+
		"\u0000\u0000\u0000\u034f\u033c\u0001\u0000\u0000\u0000\u034f\u033d\u0001"+
		"\u0000\u0000\u0000\u034f\u033e\u0001\u0000\u0000\u0000\u034f\u033f\u0001"+
		"\u0000\u0000\u0000\u034f\u0340\u0001\u0000\u0000\u0000\u034f\u0341\u0001"+
		"\u0000\u0000\u0000\u034f\u0342\u0001\u0000\u0000\u0000\u034f\u0343\u0001"+
		"\u0000\u0000\u0000\u034f\u0344\u0001\u0000\u0000\u0000\u034f\u0345\u0001"+
		"\u0000\u0000\u0000\u034f\u0346\u0001\u0000\u0000\u0000\u034f\u0347\u0001"+
		"\u0000\u0000\u0000\u034f\u0348\u0001\u0000\u0000\u0000\u034f\u0349\u0001"+
		"\u0000\u0000\u0000\u034f\u034a\u0001\u0000\u0000\u0000\u034f\u034b\u0001"+
		"\u0000\u0000\u0000\u034f\u034c\u0001\u0000\u0000\u0000\u034f\u034d\u0001"+
		"\u0000\u0000\u0000\u034f\u034e\u0001\u0000\u0000\u0000\u0350\u000b\u0001"+
		"\u0000\u0000\u0000\u0351\u035f\u0003\u00d6k\u0000\u0352\u035f\u0003\u00ce"+
		"g\u0000\u0353\u035f\u0003\u00deo\u0000\u0354\u035f\u0003\u00c8d\u0000"+
		"\u0355\u035f\u0003\u00d4j\u0000\u0356\u035f\u0003\u00c6c\u0000\u0357\u035f";
	private static final String _serializedATNSegment1 =
		"\u0003\u00d0h\u0000\u0358\u035f\u0003\u00d2i\u0000\u0359\u035f\u0003\u00ca"+
		"e\u0000\u035a\u035f\u0003\u00ccf\u0000\u035b\u035f\u0003\u00d8l\u0000"+
		"\u035c\u035f\u0003\u00dam\u0000\u035d\u035f\u0003\u00dcn\u0000\u035e\u0351"+
		"\u0001\u0000\u0000\u0000\u035e\u0352\u0001\u0000\u0000\u0000\u035e\u0353"+
		"\u0001\u0000\u0000\u0000\u035e\u0354\u0001\u0000\u0000\u0000\u035e\u0355"+
		"\u0001\u0000\u0000\u0000\u035e\u0356\u0001\u0000\u0000\u0000\u035e\u0357"+
		"\u0001\u0000\u0000\u0000\u035e\u0358\u0001\u0000\u0000\u0000\u035e\u0359"+
		"\u0001\u0000\u0000\u0000\u035e\u035a\u0001\u0000\u0000\u0000\u035e\u035b"+
		"\u0001\u0000\u0000\u0000\u035e\u035c\u0001\u0000\u0000\u0000\u035e\u035d"+
		"\u0001\u0000\u0000\u0000\u035f\r\u0001\u0000\u0000\u0000\u0360\u036a\u0003"+
		"\u013c\u009e\u0000\u0361\u036a\u0003\u013e\u009f\u0000\u0362\u036a\u0003"+
		"\u0140\u00a0\u0000\u0363\u036a\u0003\u0142\u00a1\u0000\u0364\u036a\u0003"+
		"\u0144\u00a2\u0000\u0365\u036a\u0003\u0146\u00a3\u0000\u0366\u036a\u0003"+
		"\u0148\u00a4\u0000\u0367\u036a\u0003\u014a\u00a5\u0000\u0368\u036a\u0003"+
		"\u014c\u00a6\u0000\u0369\u0360\u0001\u0000\u0000\u0000\u0369\u0361\u0001"+
		"\u0000\u0000\u0000\u0369\u0362\u0001\u0000\u0000\u0000\u0369\u0363\u0001"+
		"\u0000\u0000\u0000\u0369\u0364\u0001\u0000\u0000\u0000\u0369\u0365\u0001"+
		"\u0000\u0000\u0000\u0369\u0366\u0001\u0000\u0000\u0000\u0369\u0367\u0001"+
		"\u0000\u0000\u0000\u0369\u0368\u0001\u0000\u0000\u0000\u036a\u000f\u0001"+
		"\u0000\u0000\u0000\u036b\u037b\u0003\u015c\u00ae\u0000\u036c\u037b\u0003"+
		"\u015e\u00af\u0000\u036d\u037b\u0003\u0160\u00b0\u0000\u036e\u037b\u0003"+
		"\u0162\u00b1\u0000\u036f\u037b\u0003\u0164\u00b2\u0000\u0370\u037b\u0003"+
		"\u0166\u00b3\u0000\u0371\u037b\u0003\u0168\u00b4\u0000\u0372\u037b\u0003"+
		"\u016a\u00b5\u0000\u0373\u037b\u0003\u016c\u00b6\u0000\u0374\u037b\u0003"+
		"\u0184\u00c2\u0000\u0375\u037b\u0003\u0186\u00c3\u0000\u0376\u037b\u0003"+
		"\u0188\u00c4\u0000\u0377\u037b\u0003\u018a\u00c5\u0000\u0378\u037b\u0003"+
		"\u018c\u00c6\u0000\u0379\u037b\u0003\u018e\u00c7\u0000\u037a\u036b\u0001"+
		"\u0000\u0000\u0000\u037a\u036c\u0001\u0000\u0000\u0000\u037a\u036d\u0001"+
		"\u0000\u0000\u0000\u037a\u036e\u0001\u0000\u0000\u0000\u037a\u036f\u0001"+
		"\u0000\u0000\u0000\u037a\u0370\u0001\u0000\u0000\u0000\u037a\u0371\u0001"+
		"\u0000\u0000\u0000\u037a\u0372\u0001\u0000\u0000\u0000\u037a\u0373\u0001"+
		"\u0000\u0000\u0000\u037a\u0374\u0001\u0000\u0000\u0000\u037a\u0375\u0001"+
		"\u0000\u0000\u0000\u037a\u0376\u0001\u0000\u0000\u0000\u037a\u0377\u0001"+
		"\u0000\u0000\u0000\u037a\u0378\u0001\u0000\u0000\u0000\u037a\u0379\u0001"+
		"\u0000\u0000\u0000\u037b\u0011\u0001\u0000\u0000\u0000\u037c\u0380\u0003"+
		"\u0190\u00c8\u0000\u037d\u0380\u0003\u0192\u00c9\u0000\u037e\u0380\u0003"+
		"\u0194\u00ca\u0000\u037f\u037c\u0001\u0000\u0000\u0000\u037f\u037d\u0001"+
		"\u0000\u0000\u0000\u037f\u037e\u0001\u0000\u0000\u0000\u0380\u0013\u0001"+
		"\u0000\u0000\u0000\u0381\u038f\u0003\u0198\u00cc\u0000\u0382\u038f\u0003"+
		"\u019a\u00cd\u0000\u0383\u038f\u0003\u019c\u00ce\u0000\u0384\u038f\u0003"+
		"\u01a0\u00d0\u0000\u0385\u038f\u0003\u01a2\u00d1\u0000\u0386\u038f\u0003"+
		"\u01a4\u00d2\u0000\u0387\u038f\u0003\u01a8\u00d4\u0000\u0388\u038f\u0003"+
		"\u019e\u00cf\u0000\u0389\u038f\u0003\u01a6\u00d3\u0000\u038a\u038f\u0003"+
		"\u01aa\u00d5\u0000\u038b\u038c\u0003\u00dam\u0000\u038c\u038d\u0003\f"+
		"\u0006\u0000\u038d\u038f\u0001\u0000\u0000\u0000\u038e\u0381\u0001\u0000"+
		"\u0000\u0000\u038e\u0382\u0001\u0000\u0000\u0000\u038e\u0383\u0001\u0000"+
		"\u0000\u0000\u038e\u0384\u0001\u0000\u0000\u0000\u038e\u0385\u0001\u0000"+
		"\u0000\u0000\u038e\u0386\u0001\u0000\u0000\u0000\u038e\u0387\u0001\u0000"+
		"\u0000\u0000\u038e\u0388\u0001\u0000\u0000\u0000\u038e\u0389\u0001\u0000"+
		"\u0000\u0000\u038e\u038a\u0001\u0000\u0000\u0000\u038e\u038b\u0001\u0000"+
		"\u0000\u0000\u038f\u0015\u0001\u0000\u0000\u0000\u0390\u03aa\u0003\u01bc"+
		"\u00de\u0000\u0391\u03aa\u0003\u01be\u00df\u0000\u0392\u03aa\u0003\u01c0"+
		"\u00e0\u0000\u0393\u03aa\u0003\u01c2\u00e1\u0000\u0394\u03aa\u0003\u01c6"+
		"\u00e3\u0000\u0395\u03aa\u0003\u01c8\u00e4\u0000\u0396\u03aa\u0003\u01ca"+
		"\u00e5\u0000\u0397\u03aa\u0003\u01cc\u00e6\u0000\u0398\u03aa\u0003\u01e8"+
		"\u00f4\u0000\u0399\u03aa\u0003\u01ea\u00f5\u0000\u039a\u03aa\u0003\u01ec"+
		"\u00f6\u0000\u039b\u03aa\u0003\u01ee\u00f7\u0000\u039c\u03aa\u0003\u01f0"+
		"\u00f8\u0000\u039d\u03aa\u0003\u01f4\u00fa\u0000\u039e\u03aa\u0003\u01f6"+
		"\u00fb\u0000\u039f\u03aa\u0003\u01f8\u00fc\u0000\u03a0\u03aa\u0003\u01fa"+
		"\u00fd\u0000\u03a1\u03aa\u0003\u01fc\u00fe\u0000\u03a2\u03aa\u0003\u020a"+
		"\u0105\u0000\u03a3\u03aa\u0003\u020c\u0106\u0000\u03a4\u03aa\u0003\u020e"+
		"\u0107\u0000\u03a5\u03aa\u0003\u0210\u0108\u0000\u03a6\u03aa\u0003\u0212"+
		"\u0109\u0000\u03a7\u03aa\u0003\u0214\u010a\u0000\u03a8\u03aa\u0003\u0216"+
		"\u010b\u0000\u03a9\u0390\u0001\u0000\u0000\u0000\u03a9\u0391\u0001\u0000"+
		"\u0000\u0000\u03a9\u0392\u0001\u0000\u0000\u0000\u03a9\u0393\u0001\u0000"+
		"\u0000\u0000\u03a9\u0394\u0001\u0000\u0000\u0000\u03a9\u0395\u0001\u0000"+
		"\u0000\u0000\u03a9\u0396\u0001\u0000\u0000\u0000\u03a9\u0397\u0001\u0000"+
		"\u0000\u0000\u03a9\u0398\u0001\u0000\u0000\u0000\u03a9\u0399\u0001\u0000"+
		"\u0000\u0000\u03a9\u039a\u0001\u0000\u0000\u0000\u03a9\u039b\u0001\u0000"+
		"\u0000\u0000\u03a9\u039c\u0001\u0000\u0000\u0000\u03a9\u039d\u0001\u0000"+
		"\u0000\u0000\u03a9\u039e\u0001\u0000\u0000\u0000\u03a9\u039f\u0001\u0000"+
		"\u0000\u0000\u03a9\u03a0\u0001\u0000\u0000\u0000\u03a9\u03a1\u0001\u0000"+
		"\u0000\u0000\u03a9\u03a2\u0001\u0000\u0000\u0000\u03a9\u03a3\u0001\u0000"+
		"\u0000\u0000\u03a9\u03a4\u0001\u0000\u0000\u0000\u03a9\u03a5\u0001\u0000"+
		"\u0000\u0000\u03a9\u03a6\u0001\u0000\u0000\u0000\u03a9\u03a7\u0001\u0000"+
		"\u0000\u0000\u03a9\u03a8\u0001\u0000\u0000\u0000\u03aa\u0017\u0001\u0000"+
		"\u0000\u0000\u03ab\u03b3\u0003\u0220\u0110\u0000\u03ac\u03b3\u0003\u0222"+
		"\u0111\u0000\u03ad\u03b3\u0003\u0224\u0112\u0000\u03ae\u03b3\u0003\u0226"+
		"\u0113\u0000\u03af\u03b3\u0003\u0228\u0114\u0000\u03b0\u03b3\u0003\u022a"+
		"\u0115\u0000\u03b1\u03b3\u0003\u022e\u0117\u0000\u03b2\u03ab\u0001\u0000"+
		"\u0000\u0000\u03b2\u03ac\u0001\u0000\u0000\u0000\u03b2\u03ad\u0001\u0000"+
		"\u0000\u0000\u03b2\u03ae\u0001\u0000\u0000\u0000\u03b2\u03af\u0001\u0000"+
		"\u0000\u0000\u03b2\u03b0\u0001\u0000\u0000\u0000\u03b2\u03b1\u0001\u0000"+
		"\u0000\u0000\u03b3\u0019\u0001\u0000\u0000\u0000\u03b4\u03b5\u0005\"\u0000"+
		"\u0000\u03b5\u03b7\u0007\u0000\u0000\u0000\u03b6\u03b8\u0003\u0294\u014a"+
		"\u0000\u03b7\u03b6\u0001\u0000\u0000\u0000\u03b7\u03b8\u0001\u0000\u0000"+
		"\u0000\u03b8\u03b9\u0001\u0000\u0000\u0000\u03b9\u03bd\u0003\u0258\u012c"+
		"\u0000\u03ba\u03bc\u0003@ \u0000\u03bb\u03ba\u0001\u0000\u0000\u0000\u03bc"+
		"\u03bf\u0001\u0000\u0000\u0000\u03bd\u03bb\u0001\u0000\u0000\u0000\u03bd"+
		"\u03be\u0001\u0000\u0000\u0000\u03be\u001b\u0001\u0000\u0000\u0000\u03bf"+
		"\u03bd\u0001\u0000\u0000\u0000\u03c0\u03c2\u0005\"\u0000\u0000\u03c1\u03c3"+
		"\u0003F#\u0000\u03c2\u03c1\u0001\u0000\u0000\u0000\u03c2\u03c3\u0001\u0000"+
		"\u0000\u0000\u03c3\u03c4\u0001\u0000\u0000\u0000\u03c4\u03c6\u0005\u01a2"+
		"\u0000\u0000\u03c5\u03c7\u0003\u0294\u014a\u0000\u03c6\u03c5\u0001\u0000"+
		"\u0000\u0000\u03c6\u03c7\u0001\u0000\u0000\u0000\u03c7\u03c8\u0001\u0000"+
		"\u0000\u0000\u03c8\u03c9\u0003\u0234\u011a\u0000\u03c9\u03ca\u0005x\u0000"+
		"\u0000\u03ca\u03cb\u0005\u0260\u0000\u0000\u03cb\u03d2\u0003H$\u0000\u03cc"+
		"\u03cd\u0005x\u0000\u0000\u03cd\u03cf\u0005\u0176\u0000\u0000\u03ce\u03d0"+
		"\u0005t\u0000\u0000\u03cf\u03ce\u0001\u0000\u0000\u0000\u03cf\u03d0\u0001"+
		"\u0000\u0000\u0000\u03d0\u03d1\u0001\u0000\u0000\u0000\u03d1\u03d3\u0005"+
		"\u0234\u0000\u0000\u03d2\u03cc\u0001\u0000\u0000\u0000\u03d2\u03d3\u0001"+
		"\u0000\u0000\u0000\u03d3\u03d5\u0001\u0000\u0000\u0000\u03d4\u03d6\u0003"+
		"P(\u0000\u03d5\u03d4\u0001\u0000\u0000\u0000\u03d5\u03d6\u0001\u0000\u0000"+
		"\u0000\u03d6\u03d9\u0001\u0000\u0000\u0000\u03d7\u03d8\u0005\u0173\u0000"+
		"\u0000\u03d8\u03da\u0005\u0497\u0000\u0000\u03d9\u03d7\u0001\u0000\u0000"+
		"\u0000\u03d9\u03da\u0001\u0000\u0000\u0000\u03da\u03db\u0001\u0000\u0000"+
		"\u0000\u03db\u03dc\u0005\u0192\u0000\u0000\u03dc\u03dd\u0003\u0196\u00cb"+
		"\u0000\u03dd\u001d\u0001\u0000\u0000\u0000\u03de\u03e0\u0005\"\u0000\u0000"+
		"\u03df\u03e1\u0003\u0296\u014b\u0000\u03e0\u03df\u0001\u0000\u0000\u0000"+
		"\u03e0\u03e1\u0001\u0000\u0000\u0000\u03e1\u03e3\u0001\u0000\u0000\u0000"+
		"\u03e2\u03e4\u0007\u0001\u0000\u0000\u03e3\u03e2\u0001\u0000\u0000\u0000"+
		"\u03e3\u03e4\u0001\u0000\u0000\u0000\u03e4\u03e6\u0001\u0000\u0000\u0000"+
		"\u03e5\u03e7\u0007\u0002\u0000\u0000\u03e6\u03e5\u0001\u0000\u0000\u0000"+
		"\u03e6\u03e7\u0001\u0000\u0000\u0000\u03e7\u03e8\u0001\u0000\u0000\u0000"+
		"\u03e8\u03ea\u0005S\u0000\u0000\u03e9\u03eb\u0003\u0294\u014a\u0000\u03ea"+
		"\u03e9\u0001\u0000\u0000\u0000\u03ea\u03eb\u0001\u0000\u0000\u0000\u03eb"+
		"\u03ec\u0001\u0000\u0000\u0000\u03ec\u03ee\u0003\u0258\u012c\u0000\u03ed"+
		"\u03ef\u0003R)\u0000\u03ee\u03ed\u0001\u0000\u0000\u0000\u03ee\u03ef\u0001"+
		"\u0000\u0000\u0000\u03ef\u03f0\u0001\u0000\u0000\u0000\u03f0\u03f1\u0005"+
		"x\u0000\u0000\u03f1\u03f2\u0003\u0236\u011b\u0000\u03f2\u03f4\u0003\u0280"+
		"\u0140\u0000\u03f3\u03f5\u0003\u0298\u014c\u0000\u03f4\u03f3\u0001\u0000"+
		"\u0000\u0000\u03f4\u03f5\u0001\u0000\u0000\u0000\u03f5\u03f9\u0001\u0000"+
		"\u0000\u0000\u03f6\u03f8\u0003T*\u0000\u03f7\u03f6\u0001\u0000\u0000\u0000"+
		"\u03f8\u03fb\u0001\u0000\u0000\u0000\u03f9\u03f7\u0001\u0000\u0000\u0000"+
		"\u03f9\u03fa\u0001\u0000\u0000\u0000\u03fa\u0408\u0001\u0000\u0000\u0000"+
		"\u03fb\u03f9\u0001\u0000\u0000\u0000\u03fc\u03fe\u0005\u0153\u0000\u0000"+
		"\u03fd\u03ff\u0005\u047f\u0000\u0000\u03fe\u03fd\u0001\u0000\u0000\u0000"+
		"\u03fe\u03ff\u0001\u0000\u0000\u0000\u03ff\u0400\u0001\u0000\u0000\u0000"+
		"\u0400\u0407\u0007\u0003\u0000\u0000\u0401\u0403\u0005i\u0000\u0000\u0402"+
		"\u0404\u0005\u047f\u0000\u0000\u0403\u0402\u0001\u0000\u0000\u0000\u0403"+
		"\u0404\u0001\u0000\u0000\u0000\u0404\u0405\u0001\u0000\u0000\u0000\u0405"+
		"\u0407\u0007\u0004\u0000\u0000\u0406\u03fc\u0001\u0000\u0000\u0000\u0406"+
		"\u0401\u0001\u0000\u0000\u0000\u0407\u040a\u0001\u0000\u0000\u0000\u0408"+
		"\u0406\u0001\u0000\u0000\u0000\u0408\u0409\u0001\u0000\u0000\u0000\u0409"+
		"\u001f\u0001\u0000\u0000\u0000\u040a\u0408\u0001\u0000\u0000\u0000\u040b"+
		"\u040c\u0005\"\u0000\u0000\u040c\u040d\u0005\u01de\u0000\u0000\u040d\u040e"+
		"\u0005J\u0000\u0000\u040e\u040f\u0003\u0258\u012c\u0000\u040f\u0410\u0005"+
		"\u0005\u0000\u0000\u0410\u0411\u0005\u0296\u0000\u0000\u0411\u0417\u0005"+
		"\u0497\u0000\u0000\u0412\u0414\u0005\u01c8\u0000\u0000\u0413\u0415\u0005"+
		"\u047f\u0000\u0000\u0414\u0413\u0001\u0000\u0000\u0000\u0414\u0415\u0001"+
		"\u0000\u0000\u0000\u0415\u0416\u0001\u0000\u0000\u0000\u0416\u0418\u0003"+
		"\u0260\u0130\u0000\u0417\u0412\u0001\u0000\u0000\u0000\u0417\u0418\u0001"+
		"\u0000\u0000\u0000\u0418\u041e\u0001\u0000\u0000\u0000\u0419\u041b\u0005"+
		"\u0297\u0000\u0000\u041a\u041c\u0005\u047f\u0000\u0000\u041b\u041a\u0001"+
		"\u0000\u0000\u0000\u041b\u041c\u0001\u0000\u0000\u0000\u041c\u041d\u0001"+
		"\u0000\u0000\u0000\u041d\u041f\u0003\u0260\u0130\u0000\u041e\u0419\u0001"+
		"\u0000\u0000\u0000\u041e\u041f\u0001\u0000\u0000\u0000\u041f\u0425\u0001"+
		"\u0000\u0000\u0000\u0420\u0422\u0005\u023f\u0000\u0000\u0421\u0423\u0005"+
		"\u047f\u0000\u0000\u0422\u0421\u0001\u0000\u0000\u0000\u0422\u0423\u0001"+
		"\u0000\u0000\u0000\u0423\u0424\u0001\u0000\u0000\u0000\u0424\u0426\u0003"+
		"\u0260\u0130\u0000\u0425\u0420\u0001\u0000\u0000\u0000\u0425\u0426\u0001"+
		"\u0000\u0000\u0000\u0426\u042c\u0001\u0000\u0000\u0000\u0427\u0429\u0005"+
		"\u0213\u0000\u0000\u0428\u042a\u0005\u047f\u0000\u0000\u0429\u0428\u0001"+
		"\u0000\u0000\u0000\u0429\u042a\u0001\u0000\u0000\u0000\u042a\u042b\u0001"+
		"\u0000\u0000\u0000\u042b\u042d\u0003\u0258\u012c\u0000\u042c\u0427\u0001"+
		"\u0000\u0000\u0000\u042c\u042d\u0001\u0000\u0000\u0000\u042d\u042f\u0001"+
		"\u0000\u0000\u0000\u042e\u0430\u0005\u02a5\u0000\u0000\u042f\u042e\u0001"+
		"\u0000\u0000\u0000\u042f\u0430\u0001\u0000\u0000\u0000\u0430\u0436\u0001"+
		"\u0000\u0000\u0000\u0431\u0433\u0005\u0173\u0000\u0000\u0432\u0434\u0005"+
		"\u047f\u0000\u0000\u0433\u0432\u0001\u0000\u0000\u0000\u0433\u0434\u0001"+
		"\u0000\u0000\u0000\u0434\u0435\u0001\u0000\u0000\u0000\u0435\u0437\u0005"+
		"\u0497\u0000\u0000\u0436\u0431\u0001\u0000\u0000\u0000\u0436\u0437\u0001"+
		"\u0000\u0000\u0000\u0437\u0438\u0001\u0000\u0000\u0000\u0438\u043a\u0005"+
		"\u019c\u0000\u0000\u0439\u043b\u0005\u047f\u0000\u0000\u043a\u0439\u0001"+
		"\u0000\u0000\u0000\u043a\u043b\u0001\u0000\u0000\u0000\u043b\u043c\u0001"+
		"\u0000\u0000\u0000\u043c\u043d\u0003\u024a\u0125\u0000\u043d!\u0001\u0000"+
		"\u0000\u0000\u043e\u0440\u0005\"\u0000\u0000\u043f\u0441\u0003\u0296\u014b"+
		"\u0000\u0440\u043f\u0001\u0000\u0000\u0000\u0440\u0441\u0001\u0000\u0000"+
		"\u0000\u0441\u0443\u0001\u0000\u0000\u0000\u0442\u0444\u0003F#\u0000\u0443"+
		"\u0442\u0001\u0000\u0000\u0000\u0443\u0444\u0001\u0000\u0000\u0000\u0444"+
		"\u0445\u0001\u0000\u0000\u0000\u0445\u0446\u0005\u0085\u0000\u0000\u0446"+
		"\u0447\u0003\u0234\u011a\u0000\u0447\u0449\u0005\u0488\u0000\u0000\u0448"+
		"\u044a\u0003V+\u0000\u0449\u0448\u0001\u0000\u0000\u0000\u0449\u044a\u0001"+
		"\u0000\u0000\u0000\u044a\u044f\u0001\u0000\u0000\u0000\u044b\u044c\u0005"+
		"\u048a\u0000\u0000\u044c\u044e\u0003V+\u0000\u044d\u044b\u0001\u0000\u0000"+
		"\u0000\u044e\u0451\u0001\u0000\u0000\u0000\u044f\u044d\u0001\u0000\u0000"+
		"\u0000\u044f\u0450\u0001\u0000\u0000\u0000\u0450\u0452\u0001\u0000\u0000"+
		"\u0000\u0451\u044f\u0001\u0000\u0000\u0000\u0452\u0456\u0005\u0489\u0000"+
		"\u0000\u0453\u0455\u0003Z-\u0000\u0454\u0453\u0001\u0000\u0000\u0000\u0455"+
		"\u0458\u0001\u0000\u0000\u0000\u0456\u0454\u0001\u0000\u0000\u0000\u0456"+
		"\u0457\u0001\u0000\u0000\u0000\u0457\u0459\u0001\u0000\u0000\u0000\u0458"+
		"\u0456\u0001\u0000\u0000\u0000\u0459\u045a\u0003\u0196\u00cb\u0000\u045a"+
		"#\u0001\u0000\u0000\u0000\u045b\u045d\u0005\"\u0000\u0000\u045c\u045e"+
		"\u0003\u0296\u014b\u0000\u045d\u045c\u0001\u0000\u0000\u0000\u045d\u045e"+
		"\u0001\u0000\u0000\u0000\u045e\u0460\u0001\u0000\u0000\u0000\u045f\u0461"+
		"\u0003F#\u0000\u0460\u045f\u0001\u0000\u0000\u0000\u0460\u0461\u0001\u0000"+
		"\u0000\u0000\u0461\u0463\u0001\u0000\u0000\u0000\u0462\u0464\u0005\u0152"+
		"\u0000\u0000\u0463\u0462\u0001\u0000\u0000\u0000\u0463\u0464\u0001\u0000"+
		"\u0000\u0000\u0464\u0465\u0001\u0000\u0000\u0000\u0465\u0467\u0005\u01b8"+
		"\u0000\u0000\u0466\u0468\u0003\u0294\u014a\u0000\u0467\u0466\u0001\u0000"+
		"\u0000\u0000\u0467\u0468\u0001\u0000\u0000\u0000\u0468\u0469\u0001\u0000"+
		"\u0000\u0000\u0469\u046a\u0003\u0234\u011a\u0000\u046a\u046c\u0005\u0488"+
		"\u0000\u0000\u046b\u046d\u0003X,\u0000\u046c\u046b\u0001\u0000\u0000\u0000"+
		"\u046c\u046d\u0001\u0000\u0000\u0000\u046d\u0472\u0001\u0000\u0000\u0000"+
		"\u046e\u046f\u0005\u048a\u0000\u0000\u046f\u0471\u0003X,\u0000\u0470\u046e"+
		"\u0001\u0000\u0000\u0000\u0471\u0474\u0001\u0000\u0000\u0000\u0472\u0470"+
		"\u0001\u0000\u0000\u0000\u0472\u0473\u0001\u0000\u0000\u0000\u0473\u0475"+
		"\u0001\u0000\u0000\u0000\u0474\u0472\u0001\u0000\u0000\u0000\u0475\u0476"+
		"\u0005\u0489\u0000\u0000\u0476\u0477\u0005\u0255\u0000\u0000\u0477\u047b"+
		"\u0003\u026c\u0136\u0000\u0478\u047a\u0003Z-\u0000\u0479\u0478\u0001\u0000"+
		"\u0000\u0000\u047a\u047d\u0001\u0000\u0000\u0000\u047b\u0479\u0001\u0000"+
		"\u0000\u0000\u047b\u047c\u0001\u0000\u0000\u0000\u047c\u0480\u0001\u0000"+
		"\u0000\u0000\u047d\u047b\u0001\u0000\u0000\u0000\u047e\u0481\u0003\u0196"+
		"\u00cb\u0000\u047f\u0481\u0003\u01a6\u00d3\u0000\u0480\u047e\u0001\u0000"+
		"\u0000\u0000\u0480\u047f\u0001\u0000\u0000\u0000\u0481%\u0001\u0000\u0000"+
		"\u0000\u0482\u0483\u0005\"\u0000\u0000\u0483\u0485\u0005\u0257\u0000\u0000"+
		"\u0484\u0486\u0003\u0294\u014a\u0000\u0485\u0484\u0001\u0000\u0000\u0000"+
		"\u0485\u0486\u0001\u0000\u0000\u0000\u0486\u0487\u0001\u0000\u0000\u0000"+
		"\u0487\u048c\u0003\u0238\u011c\u0000\u0488\u0489\u0005\u048a\u0000\u0000"+
		"\u0489\u048b\u0003\u0238\u011c\u0000\u048a\u0488\u0001\u0000\u0000\u0000"+
		"\u048b\u048e\u0001\u0000\u0000\u0000\u048c\u048a\u0001\u0000\u0000\u0000"+
		"\u048c\u048d\u0001\u0000\u0000\u0000\u048d\'\u0001\u0000\u0000\u0000\u048e"+
		"\u048c\u0001\u0000\u0000\u0000\u048f\u0490\u0005\"\u0000\u0000\u0490\u0491"+
		"\u0005\u0263\u0000\u0000\u0491\u0492\u0003\u0258\u012c\u0000\u0492\u0493"+
		"\u0005D\u0000\u0000\u0493\u0494\u0005\u0187\u0000\u0000\u0494\u0495\u0005"+
		"\u02aa\u0000\u0000\u0495\u0496\u0007\u0005\u0000\u0000\u0496\u0497\u0005"+
		"\u0220\u0000\u0000\u0497\u0498\u0005\u0488\u0000\u0000\u0498\u049d\u0003"+
		"\\.\u0000\u0499\u049a\u0005\u048a\u0000\u0000\u049a\u049c\u0003\\.\u0000"+
		"\u049b\u0499\u0001\u0000\u0000\u0000\u049c\u049f\u0001\u0000\u0000\u0000"+
		"\u049d\u049b\u0001\u0000\u0000\u0000\u049d\u049e\u0001\u0000\u0000\u0000"+
		"\u049e\u04a0\u0001\u0000\u0000\u0000\u049f\u049d\u0001\u0000\u0000\u0000"+
		"\u04a0\u04a1\u0005\u0489\u0000\u0000\u04a1)\u0001\u0000\u0000\u0000\u04a2"+
		"\u04a4\u0005\"\u0000\u0000\u04a3\u04a5\u0003\u0296\u014b\u0000\u04a4\u04a3"+
		"\u0001\u0000\u0000\u0000\u04a4\u04a5\u0001\u0000\u0000\u0000\u04a5\u04a7"+
		"\u0001\u0000\u0000\u0000\u04a6\u04a8\u0005\u028c\u0000\u0000\u04a7\u04a6"+
		"\u0001\u0000\u0000\u0000\u04a7\u04a8\u0001\u0000\u0000\u0000\u04a8\u04a9"+
		"\u0001\u0000\u0000\u0000\u04a9\u04ab\u0005\u00af\u0000\u0000\u04aa\u04ac"+
		"\u0003\u0294\u014a\u0000\u04ab\u04aa\u0001\u0000\u0000\u0000\u04ab\u04ac"+
		"\u0001\u0000\u0000\u0000\u04ac\u04ad\u0001\u0000\u0000\u0000\u04ad\u04b5"+
		"\u0003\u0236\u011b\u0000\u04ae\u04af\u0005d\u0000\u0000\u04af\u04b6\u0003"+
		"\u0236\u011b\u0000\u04b0\u04b1\u0005\u0488\u0000\u0000\u04b1\u04b2\u0005"+
		"d\u0000\u0000\u04b2\u04b3\u0003\u0236\u011b\u0000\u04b3\u04b4\u0005\u0489"+
		"\u0000\u0000\u04b4\u04b6\u0001\u0000\u0000\u0000\u04b5\u04ae\u0001\u0000"+
		"\u0000\u0000\u04b5\u04b0\u0001\u0000\u0000\u0000\u04b6\u04fa\u0001\u0000"+
		"\u0000\u0000\u04b7\u04b9\u0005\"\u0000\u0000\u04b8\u04ba\u0003\u0296\u014b"+
		"\u0000\u04b9\u04b8\u0001\u0000\u0000\u0000\u04b9\u04ba\u0001\u0000\u0000"+
		"\u0000\u04ba\u04bc\u0001\u0000\u0000\u0000\u04bb\u04bd\u0005\u028c\u0000"+
		"\u0000\u04bc\u04bb\u0001\u0000\u0000\u0000\u04bc\u04bd\u0001\u0000\u0000"+
		"\u0000\u04bd\u04be\u0001\u0000\u0000\u0000\u04be\u04c0\u0005\u00af\u0000"+
		"\u0000\u04bf\u04c1\u0003\u0294\u014a\u0000\u04c0\u04bf\u0001\u0000\u0000"+
		"\u0000\u04c0\u04c1\u0001\u0000\u0000\u0000\u04c1\u04c2\u0001\u0000\u0000"+
		"\u0000\u04c2\u04c4\u0003\u0236\u011b\u0000\u04c3\u04c5\u0003^/\u0000\u04c4"+
		"\u04c3\u0001\u0000\u0000\u0000\u04c4\u04c5\u0001\u0000\u0000\u0000\u04c5"+
		"\u04d0\u0001\u0000\u0000\u0000\u04c6\u04cd\u0003p8\u0000\u04c7\u04c9\u0005"+
		"\u048a\u0000\u0000\u04c8\u04c7\u0001\u0000\u0000\u0000\u04c8\u04c9\u0001"+
		"\u0000\u0000\u0000\u04c9\u04ca\u0001\u0000\u0000\u0000\u04ca\u04cc\u0003"+
		"p8\u0000\u04cb\u04c8\u0001\u0000\u0000\u0000\u04cc\u04cf\u0001\u0000\u0000"+
		"\u0000\u04cd\u04cb\u0001\u0000\u0000\u0000\u04cd\u04ce\u0001\u0000\u0000"+
		"\u0000\u04ce\u04d1\u0001\u0000\u0000\u0000\u04cf\u04cd\u0001\u0000\u0000"+
		"\u0000\u04d0\u04c6\u0001\u0000\u0000\u0000\u04d0\u04d1\u0001\u0000\u0000"+
		"\u0000\u04d1\u04d3\u0001\u0000\u0000\u0000\u04d2\u04d4\u0003v;\u0000\u04d3"+
		"\u04d2\u0001\u0000\u0000\u0000\u04d3\u04d4\u0001\u0000\u0000\u0000\u04d4"+
		"\u04d6\u0001\u0000\u0000\u0000\u04d5\u04d7\u0007\u0006\u0000\u0000\u04d6"+
		"\u04d5\u0001\u0000\u0000\u0000\u04d6\u04d7\u0001\u0000\u0000\u0000\u04d7"+
		"\u04d9\u0001\u0000\u0000\u0000\u04d8\u04da\u0005\f\u0000\u0000\u04d9\u04d8"+
		"\u0001\u0000\u0000\u0000\u04d9\u04da\u0001\u0000\u0000\u0000\u04da\u04db"+
		"\u0001\u0000\u0000\u0000\u04db\u04dc\u0003\u00d6k\u0000\u04dc\u04fa\u0001"+
		"\u0000\u0000\u0000\u04dd\u04df\u0005\"\u0000\u0000\u04de\u04e0\u0003\u0296"+
		"\u014b\u0000\u04df\u04de\u0001\u0000\u0000\u0000\u04df\u04e0\u0001\u0000"+
		"\u0000\u0000\u04e0\u04e2\u0001\u0000\u0000\u0000\u04e1\u04e3\u0005\u028c"+
		"\u0000\u0000\u04e2\u04e1\u0001\u0000\u0000\u0000\u04e2\u04e3\u0001\u0000"+
		"\u0000\u0000\u04e3\u04e4\u0001\u0000\u0000\u0000\u04e4\u04e6\u0005\u00af"+
		"\u0000\u0000\u04e5\u04e7\u0003\u0294\u014a\u0000\u04e6\u04e5\u0001\u0000"+
		"\u0000\u0000\u04e6\u04e7\u0001\u0000\u0000\u0000\u04e7\u04e8\u0001\u0000"+
		"\u0000\u0000\u04e8\u04e9\u0003\u0236\u011b\u0000\u04e9\u04f4\u0003^/\u0000"+
		"\u04ea\u04f1\u0003p8\u0000\u04eb\u04ed\u0005\u048a\u0000\u0000\u04ec\u04eb"+
		"\u0001\u0000\u0000\u0000\u04ec\u04ed\u0001\u0000\u0000\u0000\u04ed\u04ee"+
		"\u0001\u0000\u0000\u0000\u04ee\u04f0\u0003p8\u0000\u04ef\u04ec\u0001\u0000"+
		"\u0000\u0000\u04f0\u04f3\u0001\u0000\u0000\u0000\u04f1\u04ef\u0001\u0000"+
		"\u0000\u0000\u04f1\u04f2\u0001\u0000\u0000\u0000\u04f2\u04f5\u0001\u0000"+
		"\u0000\u0000\u04f3\u04f1\u0001\u0000\u0000\u0000\u04f4\u04ea\u0001\u0000"+
		"\u0000\u0000\u04f4\u04f5\u0001\u0000\u0000\u0000\u04f5\u04f7\u0001\u0000"+
		"\u0000\u0000\u04f6\u04f8\u0003v;\u0000\u04f7\u04f6\u0001\u0000\u0000\u0000"+
		"\u04f7\u04f8\u0001\u0000\u0000\u0000\u04f8\u04fa\u0001\u0000\u0000\u0000"+
		"\u04f9\u04a2\u0001\u0000\u0000\u0000\u04f9\u04b7\u0001\u0000\u0000\u0000"+
		"\u04f9\u04dd\u0001\u0000\u0000\u0000\u04fa+\u0001\u0000\u0000\u0000\u04fb"+
		"\u04fc\u0005\"\u0000\u0000\u04fc\u04fd\u0005\u028a\u0000\u0000\u04fd\u04fe"+
		"\u0003\u0258\u012c\u0000\u04fe\u04ff\u0005\u0005\u0000\u0000\u04ff\u0500"+
		"\u0005\u0188\u0000\u0000\u0500\u0504\u0005\u0497\u0000\u0000\u0501\u0502"+
		"\u0005\u01af\u0000\u0000\u0502\u0503\u0005\u047f\u0000\u0000\u0503\u0505"+
		"\u0003\u0260\u0130\u0000\u0504\u0501\u0001\u0000\u0000\u0000\u0504\u0505"+
		"\u0001\u0000\u0000\u0000\u0505\u050b\u0001\u0000\u0000\u0000\u0506\u0508"+
		"\u0005\u019c\u0000\u0000\u0507\u0509\u0005\u047f\u0000\u0000\u0508\u0507"+
		"\u0001\u0000\u0000\u0000\u0508\u0509\u0001\u0000\u0000\u0000\u0509\u050a"+
		"\u0001\u0000\u0000\u0000\u050a\u050c\u0003\u024a\u0125\u0000\u050b\u0506"+
		"\u0001\u0000\u0000\u0000\u050b\u050c\u0001\u0000\u0000\u0000\u050c-\u0001"+
		"\u0000\u0000\u0000\u050d\u050e\u0005\"\u0000\u0000\u050e\u050f\u0005\u028a"+
		"\u0000\u0000\u050f\u0510\u0003\u0258\u012c\u0000\u0510\u0511\u0005\u0005"+
		"\u0000\u0000\u0511\u0512\u0005\u0188\u0000\u0000\u0512\u0513\u0005\u0497"+
		"\u0000\u0000\u0513\u0514\u0005\u00bd\u0000\u0000\u0514\u0515\u0005\u01de"+
		"\u0000\u0000\u0515\u0516\u0005J\u0000\u0000\u0516\u051c\u0003\u0258\u012c"+
		"\u0000\u0517\u0519\u0005\u01aa\u0000\u0000\u0518\u051a\u0005\u047f\u0000"+
		"\u0000\u0519\u0518\u0001\u0000\u0000\u0000\u0519\u051a\u0001\u0000\u0000"+
		"\u0000\u051a\u051b\u0001\u0000\u0000\u0000\u051b\u051d\u0003\u0260\u0130"+
		"\u0000\u051c\u0517\u0001\u0000\u0000\u0000\u051c\u051d\u0001\u0000\u0000"+
		"\u0000\u051d\u0523\u0001\u0000\u0000\u0000\u051e\u0520\u0005\u01c8\u0000"+
		"\u0000\u051f\u0521\u0005\u047f\u0000\u0000\u0520\u051f\u0001\u0000\u0000"+
		"\u0000\u0520\u0521\u0001\u0000\u0000\u0000\u0521\u0522\u0001\u0000\u0000"+
		"\u0000\u0522\u0524\u0003\u0260\u0130\u0000\u0523\u051e\u0001\u0000\u0000"+
		"\u0000\u0523\u0524\u0001\u0000\u0000\u0000\u0524\u052a\u0001\u0000\u0000"+
		"\u0000\u0525\u0527\u0005\u0158\u0000\u0000\u0526\u0528\u0005\u047f\u0000"+
		"\u0000\u0527\u0526\u0001\u0000\u0000\u0000\u0527\u0528\u0001\u0000\u0000"+
		"\u0000\u0528\u0529\u0001\u0000\u0000\u0000\u0529\u052b\u0003\u0260\u0130"+
		"\u0000\u052a\u0525\u0001\u0000\u0000\u0000\u052a\u052b\u0001\u0000\u0000"+
		"\u0000\u052b\u0531\u0001\u0000\u0000\u0000\u052c\u052e\u0005\u01f8\u0000"+
		"\u0000\u052d\u052f\u0005\u047f\u0000\u0000\u052e\u052d\u0001\u0000\u0000"+
		"\u0000\u052e\u052f\u0001\u0000\u0000\u0000\u052f\u0530\u0001\u0000\u0000"+
		"\u0000\u0530\u0532\u0003\u0260\u0130\u0000\u0531\u052c\u0001\u0000\u0000"+
		"\u0000\u0531\u0532\u0001\u0000\u0000\u0000\u0532\u0538\u0001\u0000\u0000"+
		"\u0000\u0533\u0535\u0005\u0213\u0000\u0000\u0534\u0536\u0005\u047f\u0000"+
		"\u0000\u0535\u0534\u0001\u0000\u0000\u0000\u0535\u0536\u0001\u0000\u0000"+
		"\u0000\u0536\u0537\u0001\u0000\u0000\u0000\u0537\u0539\u0003\u0258\u012c"+
		"\u0000\u0538\u0533\u0001\u0000\u0000\u0000\u0538\u0539\u0001\u0000\u0000"+
		"\u0000\u0539\u053b\u0001\u0000\u0000\u0000\u053a\u053c\u0005\u02a5\u0000"+
		"\u0000\u053b\u053a\u0001\u0000\u0000\u0000\u053b\u053c\u0001\u0000\u0000"+
		"\u0000\u053c\u0542\u0001\u0000\u0000\u0000\u053d\u053f\u0005\u0173\u0000"+
		"\u0000\u053e\u0540\u0005\u047f\u0000\u0000\u053f\u053e\u0001\u0000\u0000"+
		"\u0000\u053f\u0540\u0001\u0000\u0000\u0000\u0540\u0541\u0001\u0000\u0000"+
		"\u0000\u0541\u0543\u0005\u0497\u0000\u0000\u0542\u053d\u0001\u0000\u0000"+
		"\u0000\u0542\u0543\u0001\u0000\u0000\u0000\u0543\u0544\u0001\u0000\u0000"+
		"\u0000\u0544\u0546\u0005\u019c\u0000\u0000\u0545\u0547\u0005\u047f\u0000"+
		"\u0000\u0546\u0545\u0001\u0000\u0000\u0000\u0546\u0547\u0001\u0000\u0000"+
		"\u0000\u0547\u0548\u0001\u0000\u0000\u0000\u0548\u0549\u0003\u024a\u0125"+
		"\u0000\u0549/\u0001\u0000\u0000\u0000\u054a\u054c\u0005\"\u0000\u0000"+
		"\u054b\u054d\u0003\u0296\u014b\u0000\u054c\u054b\u0001\u0000\u0000\u0000"+
		"\u054c\u054d\u0001\u0000\u0000\u0000\u054d\u054f\u0001\u0000\u0000\u0000"+
		"\u054e\u0550\u0003F#\u0000\u054f\u054e\u0001\u0000\u0000\u0000\u054f\u0550"+
		"\u0001\u0000\u0000\u0000\u0550\u0551\u0001\u0000\u0000\u0000\u0551\u0553"+
		"\u0005\u00b4\u0000\u0000\u0552\u0554\u0003\u0294\u014a\u0000\u0553\u0552"+
		"\u0001\u0000\u0000\u0000\u0553\u0554\u0001\u0000\u0000\u0000\u0554\u0555"+
		"\u0001\u0000\u0000\u0000\u0555\u0556\u0003\u0234\u011a\u0000\u0556\u0557"+
		"\u0007\u0007\u0000\u0000\u0557\u0558\u0007\b\u0000\u0000\u0558\u0559\u0005"+
		"x\u0000\u0000\u0559\u055a\u0003\u0236\u011b\u0000\u055a\u055b\u0005B\u0000"+
		"\u0000\u055b\u055c\u00055\u0000\u0000\u055c\u055f\u0005\u025b\u0000\u0000"+
		"\u055d\u055e\u0007\t\u0000\u0000\u055e\u0560\u0003\u0234\u011a\u0000\u055f"+
		"\u055d\u0001\u0000\u0000\u0000\u055f\u0560\u0001\u0000\u0000\u0000\u0560"+
		"\u0561\u0001\u0000\u0000\u0000\u0561\u0562\u0003\u0196\u00cb\u0000\u0562"+
		"1\u0001\u0000\u0000\u0000\u0563\u0565\u0005\u00c3\u0000\u0000\u0564\u0566"+
		"\u0005\u023e\u0000\u0000\u0565\u0564\u0001\u0000\u0000\u0000\u0565\u0566"+
		"\u0001\u0000\u0000\u0000\u0566\u0567\u0001\u0000\u0000\u0000\u0567\u0568"+
		"\u00034\u001a\u0000\u05683\u0001\u0000\u0000\u0000\u0569\u0575\u00036"+
		"\u001b\u0000\u056a\u056b\u0005\u0488\u0000\u0000\u056b\u0570\u00038\u001c"+
		"\u0000\u056c\u056d\u0005\u048a\u0000\u0000\u056d\u056f\u00038\u001c\u0000"+
		"\u056e\u056c\u0001\u0000\u0000\u0000\u056f\u0572\u0001\u0000\u0000\u0000"+
		"\u0570\u056e\u0001\u0000\u0000\u0000\u0570\u0571\u0001\u0000\u0000\u0000"+
		"\u0571\u0573\u0001\u0000\u0000\u0000\u0572\u0570\u0001\u0000\u0000\u0000"+
		"\u0573\u0574\u0005\u0489\u0000\u0000\u0574\u0576\u0001\u0000\u0000\u0000"+
		"\u0575\u056a\u0001\u0000\u0000\u0000\u0575\u0576\u0001\u0000\u0000\u0000"+
		"\u0576\u0577\u0001\u0000\u0000\u0000\u0577\u0578\u0005\f\u0000\u0000\u0578"+
		"\u0579\u0005\u0488\u0000\u0000\u0579\u057a\u0003\f\u0006\u0000\u057a\u057d"+
		"\u0005\u0489\u0000\u0000\u057b\u057c\u0005\u048a\u0000\u0000\u057c\u057e"+
		"\u00034\u001a\u0000\u057d\u057b\u0001\u0000\u0000\u0000\u057d\u057e\u0001"+
		"\u0000\u0000\u0000\u057e5\u0001\u0000\u0000\u0000\u057f\u0580\u0003\u0258"+
		"\u012c\u0000\u05807\u0001\u0000\u0000\u0000\u0581\u0582\u0003\u0258\u012c"+
		"\u0000\u05829\u0001\u0000\u0000\u0000\u0583\u0585\u0005\"\u0000\u0000"+
		"\u0584\u0586\u0003\u0296\u014b\u0000\u0585\u0584\u0001\u0000\u0000\u0000"+
		"\u0585\u0586\u0001\u0000\u0000\u0000\u0586\u058a\u0001\u0000\u0000\u0000"+
		"\u0587\u0588\u0005\u0153\u0000\u0000\u0588\u0589\u0005\u047f\u0000\u0000"+
		"\u0589\u058b\u0007\n\u0000\u0000\u058a\u0587\u0001\u0000\u0000\u0000\u058a"+
		"\u058b\u0001\u0000\u0000\u0000\u058b\u058d\u0001\u0000\u0000\u0000\u058c"+
		"\u058e\u0003F#\u0000\u058d\u058c\u0001\u0000\u0000\u0000\u058d\u058e\u0001"+
		"\u0000\u0000\u0000\u058e\u0592\u0001\u0000\u0000\u0000\u058f\u0590\u0005"+
		"\u00a2\u0000\u0000\u0590\u0591\u0005\u0261\u0000\u0000\u0591\u0593\u0007"+
		"\u000b\u0000\u0000\u0592\u058f\u0001\u0000\u0000\u0000\u0592\u0593\u0001"+
		"\u0000\u0000\u0000\u0593\u0594\u0001\u0000\u0000\u0000\u0594\u0595\u0005"+
		"\u02a2\u0000\u0000\u0595\u059a\u0003\u0234\u011a\u0000\u0596\u0597\u0005"+
		"\u0488\u0000\u0000\u0597\u0598\u0003\u027a\u013d\u0000\u0598\u0599\u0005"+
		"\u0489\u0000\u0000\u0599\u059b\u0001\u0000\u0000\u0000\u059a\u0596\u0001"+
		"\u0000\u0000\u0000\u059a\u059b\u0001\u0000\u0000\u0000\u059b\u059c\u0001"+
		"\u0000\u0000\u0000\u059c\u05b0\u0005\f\u0000\u0000\u059d\u059f\u0005\u0488"+
		"\u0000\u0000\u059e\u05a0\u00032\u0019\u0000\u059f\u059e\u0001\u0000\u0000"+
		"\u0000\u059f\u05a0\u0001\u0000\u0000\u0000\u05a0\u05a1\u0001\u0000\u0000"+
		"\u0000\u05a1\u05a2\u0003\u00d6k\u0000\u05a2\u05a3\u0005\u0489\u0000\u0000"+
		"\u05a3\u05b1\u0001\u0000\u0000\u0000\u05a4\u05a6\u00032\u0019\u0000\u05a5"+
		"\u05a4\u0001\u0000\u0000\u0000\u05a5\u05a6\u0001\u0000\u0000\u0000\u05a6"+
		"\u05a7\u0001\u0000\u0000\u0000\u05a7\u05ae\u0003\u00d6k\u0000\u05a8\u05aa"+
		"\u0005\u00c3\u0000\u0000\u05a9\u05ab\u0007\f\u0000\u0000\u05aa\u05a9\u0001"+
		"\u0000\u0000\u0000\u05aa\u05ab\u0001\u0000\u0000\u0000\u05ab\u05ac\u0001"+
		"\u0000\u0000\u0000\u05ac\u05ad\u0005\u001b\u0000\u0000\u05ad\u05af\u0005"+
		"z\u0000\u0000\u05ae\u05a8\u0001\u0000\u0000\u0000\u05ae\u05af\u0001\u0000"+
		"\u0000\u0000\u05af\u05b1\u0001\u0000\u0000\u0000\u05b0\u059d\u0001\u0000"+
		"\u0000\u0000\u05b0\u05a5\u0001\u0000\u0000\u0000\u05b1;\u0001\u0000\u0000"+
		"\u0000\u05b2\u05b4\u0005\"\u0000\u0000\u05b3\u05b5\u0003\u0296\u014b\u0000"+
		"\u05b4\u05b3\u0001\u0000\u0000\u0000\u05b4\u05b5\u0001\u0000\u0000\u0000"+
		"\u05b5\u05b7\u0001\u0000\u0000\u0000\u05b6\u05b8\u0005\u028c\u0000\u0000"+
		"\u05b7\u05b6\u0001\u0000\u0000\u0000\u05b7\u05b8\u0001\u0000\u0000\u0000"+
		"\u05b8\u05b9\u0001\u0000\u0000\u0000\u05b9\u05bb\u0005\u0262\u0000\u0000"+
		"\u05ba\u05bc\u0003\u0294\u014a\u0000\u05bb\u05ba\u0001\u0000\u0000\u0000"+
		"\u05bb\u05bc\u0001\u0000\u0000\u0000\u05bc\u05bd\u0001\u0000\u0000\u0000"+
		"\u05bd\u05c2\u0003\u0234\u011a\u0000\u05be\u05c1\u0003>\u001f\u0000\u05bf"+
		"\u05c1\u0003p8\u0000\u05c0\u05be\u0001\u0000\u0000\u0000\u05c0\u05bf\u0001"+
		"\u0000\u0000\u0000\u05c1\u05c4\u0001\u0000\u0000\u0000\u05c2\u05c0\u0001"+
		"\u0000\u0000\u0000\u05c2\u05c3\u0001\u0000\u0000\u0000\u05c3=\u0001\u0000"+
		"\u0000\u0000\u05c4\u05c2\u0001\u0000\u0000\u0000\u05c5\u05c7\u0005\u01c6"+
		"\u0000\u0000\u05c6\u05c8\u0007\r\u0000\u0000\u05c7\u05c6\u0001\u0000\u0000"+
		"\u0000\u05c7\u05c8\u0001\u0000\u0000\u0000\u05c8\u05c9\u0001\u0000\u0000"+
		"\u0000\u05c9\u05ed\u0003\u025e\u012f\u0000\u05ca\u05cc\u0005q\u0000\u0000"+
		"\u05cb\u05cd\u0005\u047f\u0000\u0000\u05cc\u05cb\u0001\u0000\u0000\u0000"+
		"\u05cc\u05cd\u0001\u0000\u0000\u0000\u05cd\u05ce\u0001\u0000\u0000\u0000"+
		"\u05ce\u05ed\u0003\u025e\u012f\u0000\u05cf\u05d0\u0005\u020c\u0000\u0000"+
		"\u05d0\u05ed\u0005q\u0000\u0000\u05d1\u05ed\u0005\u0211\u0000\u0000\u05d2"+
		"\u05d4\u0005p\u0000\u0000\u05d3\u05d5\u0005\u047f\u0000\u0000\u05d4\u05d3"+
		"\u0001\u0000\u0000\u0000\u05d4\u05d5\u0001\u0000\u0000\u0000\u05d5\u05d6"+
		"\u0001\u0000\u0000\u0000\u05d6\u05ed\u0003\u025e\u012f\u0000\u05d7\u05d8"+
		"\u0005\u020c\u0000\u0000\u05d8\u05ed\u0005p\u0000\u0000\u05d9\u05ed\u0005"+
		"\u0210\u0000\u0000\u05da\u05dc\u0005\u0278\u0000\u0000\u05db\u05dd\u0007"+
		"\u000e\u0000\u0000\u05dc\u05db\u0001\u0000\u0000\u0000\u05dc\u05dd\u0001"+
		"\u0000\u0000\u0000\u05dd\u05de\u0001\u0000\u0000\u0000\u05de\u05ed\u0003"+
		"\u025e\u012f\u0000\u05df\u05e1\u0005\u0162\u0000\u0000\u05e0\u05e2\u0005"+
		"\u047f\u0000\u0000\u05e1\u05e0\u0001\u0000\u0000\u0000\u05e1\u05e2\u0001"+
		"\u0000\u0000\u0000\u05e2\u05e3\u0001\u0000\u0000\u0000\u05e3\u05ed\u0003"+
		"\u025e\u012f\u0000\u05e4\u05ed\u0005\u020d\u0000\u0000\u05e5\u05ed\u0005"+
		"\u0185\u0000\u0000\u05e6\u05ed\u0005\u020f\u0000\u0000\u05e7\u05e9\u0005"+
		"\u0251\u0000\u0000\u05e8\u05ea\u0007\u000e\u0000\u0000\u05e9\u05e8\u0001"+
		"\u0000\u0000\u0000\u05e9\u05ea\u0001\u0000\u0000\u0000\u05ea\u05eb\u0001"+
		"\u0000\u0000\u0000\u05eb\u05ed\u0003\u025e\u012f\u0000\u05ec\u05c5\u0001"+
		"\u0000\u0000\u0000\u05ec\u05ca\u0001\u0000\u0000\u0000\u05ec\u05cf\u0001"+
		"\u0000\u0000\u0000\u05ec\u05d1\u0001\u0000\u0000\u0000\u05ec\u05d2\u0001"+
		"\u0000\u0000\u0000\u05ec\u05d7\u0001\u0000\u0000\u0000\u05ec\u05d9\u0001"+
		"\u0000\u0000\u0000\u05ec\u05da\u0001\u0000\u0000\u0000\u05ec\u05df\u0001"+
		"\u0000\u0000\u0000\u05ec\u05e4\u0001\u0000\u0000\u0000\u05ec\u05e5\u0001"+
		"\u0000\u0000\u0000\u05ec\u05e6\u0001\u0000\u0000\u0000\u05ec\u05e7\u0001"+
		"\u0000\u0000\u0000\u05ed?\u0001\u0000\u0000\u0000\u05ee\u05f0\u0005+\u0000"+
		"\u0000\u05ef\u05ee\u0001\u0000\u0000\u0000\u05ef\u05f0\u0001\u0000\u0000"+
		"\u0000\u05f0\u05f1\u0001\u0000\u0000\u0000\u05f1\u05f3\u0003B!\u0000\u05f2"+
		"\u05f4\u0005\u047f\u0000\u0000\u05f3\u05f2\u0001\u0000\u0000\u0000\u05f3"+
		"\u05f4\u0001\u0000\u0000\u0000\u05f4\u05f7\u0001\u0000\u0000\u0000\u05f5"+
		"\u05f8\u0003\u0246\u0123\u0000\u05f6\u05f8\u0005+\u0000\u0000\u05f7\u05f5"+
		"\u0001\u0000\u0000\u0000\u05f7\u05f6\u0001\u0000\u0000\u0000\u05f8\u0610"+
		"\u0001\u0000\u0000\u0000\u05f9\u05fb\u0005+\u0000\u0000\u05fa\u05f9\u0001"+
		"\u0000\u0000\u0000\u05fa\u05fb\u0001\u0000\u0000\u0000\u05fb\u05fc\u0001"+
		"\u0000\u0000\u0000\u05fc\u05fe\u0005\u001c\u0000\u0000\u05fd\u05ff\u0005"+
		"\u047f\u0000\u0000\u05fe\u05fd\u0001\u0000\u0000\u0000\u05fe\u05ff\u0001"+
		"\u0000\u0000\u0000\u05ff\u0600\u0001\u0000\u0000\u0000\u0600\u0610\u0003"+
		"\u0248\u0124\u0000\u0601\u0603\u0005+\u0000\u0000\u0602\u0601\u0001\u0000"+
		"\u0000\u0000\u0602\u0603\u0001\u0000\u0000\u0000\u0603\u0604\u0001\u0000"+
		"\u0000\u0000\u0604\u0606\u0005\u0198\u0000\u0000\u0605\u0607\u0005\u047f"+
		"\u0000\u0000\u0606\u0605\u0001\u0000\u0000\u0000\u0606\u0607\u0001\u0000"+
		"\u0000\u0000\u0607\u0608\u0001\u0000\u0000\u0000\u0608\u0610\u0005\u0497"+
		"\u0000\u0000\u0609\u060a\u0005\u0088\u0000\u0000\u060a\u060c\u0005\u021d"+
		"\u0000\u0000\u060b\u060d\u0005\u047f\u0000\u0000\u060c\u060b\u0001\u0000"+
		"\u0000\u0000\u060c\u060d\u0001\u0000\u0000\u0000\u060d\u060e\u0001\u0000"+
		"\u0000\u0000\u060e\u0610\u0007\u000f\u0000\u0000\u060f\u05ef\u0001\u0000"+
		"\u0000\u0000\u060f\u05fa\u0001\u0000\u0000\u0000\u060f\u0602\u0001\u0000"+
		"\u0000\u0000\u060f\u0609\u0001\u0000\u0000\u0000\u0610A\u0001\u0000\u0000"+
		"\u0000\u0611\u0612\u0005\u001a\u0000\u0000\u0612\u0617\u0005\u009b\u0000"+
		"\u0000\u0613\u0617\u0005\u0351\u0000\u0000\u0614\u0615\u0005\u00e1\u0000"+
		"\u0000\u0615\u0617\u0005\u009b\u0000\u0000\u0616\u0611\u0001\u0000\u0000"+
		"\u0000\u0616\u0613\u0001\u0000\u0000\u0000\u0616\u0614\u0001\u0000\u0000"+
		"\u0000\u0617C\u0001\u0000\u0000\u0000\u0618\u061b\u0005&\u0000\u0000\u0619"+
		"\u061a\u0005\u0488\u0000\u0000\u061a\u061c\u0005\u0489\u0000\u0000\u061b"+
		"\u0619\u0001\u0000\u0000\u0000\u061b\u061c\u0001\u0000\u0000\u0000\u061c"+
		"E\u0001\u0000\u0000\u0000\u061d\u061e\u0005\u018b\u0000\u0000\u061e\u0622"+
		"\u0005\u047f\u0000\u0000\u061f\u0623\u0003\u0242\u0121\u0000\u0620\u0623"+
		"\u0003D\"\u0000\u0621\u0623\u0005%\u0000\u0000\u0622\u061f\u0001\u0000"+
		"\u0000\u0000\u0622\u0620\u0001\u0000\u0000\u0000\u0622\u0621\u0001\u0000"+
		"\u0000\u0000\u0623G\u0001\u0000\u0000\u0000\u0624\u0625\u0005\u0155\u0000"+
		"\u0000\u0625\u0629\u0003J%\u0000\u0626\u0628\u0003L&\u0000\u0627\u0626"+
		"\u0001\u0000\u0000\u0000\u0628\u062b\u0001\u0000\u0000\u0000\u0629\u0627"+
		"\u0001\u0000\u0000\u0000\u0629\u062a\u0001\u0000\u0000\u0000\u062a\u0647"+
		"\u0001\u0000\u0000\u0000\u062b\u0629\u0001\u0000\u0000\u0000\u062c\u062f"+
		"\u0005\u01a4\u0000\u0000\u062d\u0630\u0003\u025e\u012f\u0000\u062e\u0630"+
		"\u0003\u02c4\u0162\u0000\u062f\u062d\u0001\u0000\u0000\u0000\u062f\u062e"+
		"\u0001\u0000\u0000\u0000\u0630\u0631\u0001\u0000\u0000\u0000\u0631\u063a"+
		"\u0003N\'\u0000\u0632\u0633\u0005\u0279\u0000\u0000\u0633\u0637\u0003"+
		"J%\u0000\u0634\u0636\u0003L&\u0000\u0635\u0634\u0001\u0000\u0000\u0000"+
		"\u0636\u0639\u0001\u0000\u0000\u0000\u0637\u0635\u0001\u0000\u0000\u0000"+
		"\u0637\u0638\u0001\u0000\u0000\u0000\u0638\u063b\u0001\u0000\u0000\u0000"+
		"\u0639\u0637\u0001\u0000\u0000\u0000\u063a\u0632\u0001\u0000\u0000\u0000"+
		"\u063a\u063b\u0001\u0000\u0000\u0000\u063b\u0644\u0001\u0000\u0000\u0000"+
		"\u063c\u063d\u0005\u019b\u0000\u0000\u063d\u0641\u0003J%\u0000\u063e\u0640"+
		"\u0003L&\u0000\u063f\u063e\u0001\u0000\u0000\u0000\u0640\u0643\u0001\u0000"+
		"\u0000\u0000\u0641\u063f\u0001\u0000\u0000\u0000\u0641\u0642\u0001\u0000"+
		"\u0000\u0000\u0642\u0645\u0001\u0000\u0000\u0000\u0643\u0641\u0001\u0000"+
		"\u0000\u0000\u0644\u063c\u0001\u0000\u0000\u0000\u0644\u0645\u0001\u0000"+
		"\u0000\u0000\u0645\u0647\u0001\u0000\u0000\u0000\u0646\u0624\u0001\u0000"+
		"\u0000\u0000\u0646\u062c\u0001\u0000\u0000\u0000\u0647I\u0001\u0000\u0000"+
		"\u0000\u0648\u064d\u0005\u013e\u0000\u0000\u0649\u064d\u0003\u0262\u0131"+
		"\u0000\u064a\u064d\u0003\u025e\u012f\u0000\u064b\u064d\u0003\u02c4\u0162"+
		"\u0000\u064c\u0648\u0001\u0000\u0000\u0000\u064c\u0649\u0001\u0000\u0000"+
		"\u0000\u064c\u064a\u0001\u0000\u0000\u0000\u064c\u064b\u0001\u0000\u0000"+
		"\u0000\u064dK\u0001\u0000\u0000\u0000\u064e\u064f\u0005\u047b\u0000\u0000"+
		"\u064f\u0652\u0005X\u0000\u0000\u0650\u0653\u0003\u025e\u012f\u0000\u0651"+
		"\u0653\u0003\u02c4\u0162\u0000\u0652\u0650\u0001\u0000\u0000\u0000\u0652"+
		"\u0651\u0001\u0000\u0000\u0000\u0653\u0654\u0001\u0000\u0000\u0000\u0654"+
		"\u0655\u0003N\'\u0000\u0655M\u0001\u0000\u0000\u0000\u0656\u0664\u0003"+
		"\u02de\u016f\u0000\u0657\u0664\u0005\u00e0\u0000\u0000\u0658\u0664\u0005"+
		"\u00f3\u0000\u0000\u0659\u0664\u0005\u00f4\u0000\u0000\u065a\u0664\u0005"+
		"\u00f5\u0000\u0000\u065b\u0664\u0005\u00f6\u0000\u0000\u065c\u0664\u0005"+
		"\u00f7\u0000\u0000\u065d\u0664\u0005\u00f8\u0000\u0000\u065e\u0664\u0005"+
		"\u00f9\u0000\u0000\u065f\u0664\u0005\u00fa\u0000\u0000\u0660\u0664\u0005"+
		"\u00fb\u0000\u0000\u0661\u0664\u0005\u00fc\u0000\u0000\u0662\u0664\u0005"+
		"\u00fd\u0000\u0000\u0663\u0656\u0001\u0000\u0000\u0000\u0663\u0657\u0001"+
		"\u0000\u0000\u0000\u0663\u0658\u0001\u0000\u0000\u0000\u0663\u0659\u0001"+
		"\u0000\u0000\u0000\u0663\u065a\u0001\u0000\u0000\u0000\u0663\u065b\u0001"+
		"\u0000\u0000\u0000\u0663\u065c\u0001\u0000\u0000\u0000\u0663\u065d\u0001"+
		"\u0000\u0000\u0000\u0663\u065e\u0001\u0000\u0000\u0000\u0663\u065f\u0001"+
		"\u0000\u0000\u0000\u0663\u0660\u0001\u0000\u0000\u0000\u0663\u0661\u0001"+
		"\u0000\u0000\u0000\u0663\u0662\u0001\u0000\u0000\u0000\u0664O\u0001\u0000"+
		"\u0000\u0000\u0665\u066b\u0005\u0196\u0000\u0000\u0666\u066b\u0005\u018f"+
		"\u0000\u0000\u0667\u0668\u0005\u018f\u0000\u0000\u0668\u0669\u0005x\u0000"+
		"\u0000\u0669\u066b\u0005\u0269\u0000\u0000\u066a\u0665\u0001\u0000\u0000"+
		"\u0000\u066a\u0666\u0001\u0000\u0000\u0000\u066a\u0667\u0001\u0000\u0000"+
		"\u0000\u066bQ\u0001\u0000\u0000\u0000\u066c\u066d\u0005\u00be\u0000\u0000"+
		"\u066d\u066e\u0007\u0010\u0000\u0000\u066eS\u0001\u0000\u0000\u0000\u066f"+
		"\u0671\u0005\u01d6\u0000\u0000\u0670\u0672\u0005\u047f\u0000\u0000\u0671"+
		"\u0670\u0001\u0000\u0000\u0000\u0671\u0672\u0001\u0000\u0000\u0000\u0672"+
		"\u0673\u0001\u0000\u0000\u0000\u0673\u068e\u0003\u0260\u0130\u0000\u0674"+
		"\u068e\u0003R)\u0000\u0675\u0676\u0005\u00c3\u0000\u0000\u0676\u0677\u0005"+
		"\u0226\u0000\u0000\u0677\u068e\u0003\u0258\u012c\u0000\u0678\u0679\u0005"+
		"\u0173\u0000\u0000\u0679\u068e\u0005\u0497\u0000\u0000\u067a\u068e\u0007"+
		"\u0011\u0000\u0000\u067b\u067d\u0005\u0373\u0000\u0000\u067c\u067e\u0005"+
		"\u047f\u0000\u0000\u067d\u067c\u0001\u0000\u0000\u0000\u067d\u067e\u0001"+
		"\u0000\u0000\u0000\u067e\u067f\u0001\u0000\u0000\u0000\u067f\u068e\u0005"+
		"\u0497\u0000\u0000\u0680\u0682\u0005\u03f0\u0000\u0000\u0681\u0683\u0005"+
		"\u047f\u0000\u0000\u0682\u0681\u0001\u0000\u0000\u0000\u0682\u0683\u0001"+
		"\u0000\u0000\u0000\u0683\u0684\u0001\u0000\u0000\u0000\u0684\u068e\u0005"+
		"\u0497\u0000\u0000\u0685\u0686\u0005\u016d\u0000\u0000\u0686\u0687\u0005"+
		"\u047f\u0000\u0000\u0687\u068e\u0007\u0012\u0000\u0000\u0688\u068c\u0005"+
		"Q\u0000\u0000\u0689\u068a\u0005t\u0000\u0000\u068a\u068c\u0005Q\u0000"+
		"\u0000\u068b\u0688\u0001\u0000\u0000\u0000\u068b\u0689\u0001\u0000\u0000"+
		"\u0000\u068c\u068e\u0001\u0000\u0000\u0000\u068d\u066f\u0001\u0000\u0000"+
		"\u0000\u068d\u0674\u0001\u0000\u0000\u0000\u068d\u0675\u0001\u0000\u0000"+
		"\u0000\u068d\u0678\u0001\u0000\u0000\u0000\u068d\u067a\u0001\u0000\u0000"+
		"\u0000\u068d\u067b\u0001\u0000\u0000\u0000\u068d\u0680\u0001\u0000\u0000"+
		"\u0000\u068d\u0685\u0001\u0000\u0000\u0000\u068d\u068b\u0001\u0000\u0000"+
		"\u0000\u068eU\u0001\u0000\u0000\u0000\u068f\u0691\u0007\u0013\u0000\u0000"+
		"\u0690\u068f\u0001\u0000\u0000\u0000\u0690\u0691\u0001\u0000\u0000\u0000"+
		"\u0691\u0692\u0001\u0000\u0000\u0000\u0692\u0693\u0003\u0258\u012c\u0000"+
		"\u0693\u0694\u0003\u026c\u0136\u0000\u0694W\u0001\u0000\u0000\u0000\u0695"+
		"\u0696\u0003\u0258\u012c\u0000\u0696\u0697\u0003\u026c\u0136\u0000\u0697"+
		"Y\u0001\u0000\u0000\u0000\u0698\u0699\u0005\u0173\u0000\u0000\u0699\u06b0"+
		"\u0005\u0497\u0000\u0000\u069a\u069b\u0005\u01d7\u0000\u0000\u069b\u06b0"+
		"\u0005\u00a2\u0000\u0000\u069c\u069e\u0005t\u0000\u0000\u069d\u069c\u0001"+
		"\u0000\u0000\u0000\u069d\u069e\u0001\u0000\u0000\u0000\u069e\u069f\u0001"+
		"\u0000\u0000\u0000\u069f\u06b0\u00050\u0000\u0000\u06a0\u06a1\u0005\u0180"+
		"\u0000\u0000\u06a1\u06ab\u0005\u00a2\u0000\u0000\u06a2\u06a3\u0005\u020c"+
		"\u0000\u0000\u06a3\u06ab\u0005\u00a2\u0000\u0000\u06a4\u06a5\u0005\u0089"+
		"\u0000\u0000\u06a5\u06a6\u0005\u00a2\u0000\u0000\u06a6\u06ab\u0005\u0187"+
		"\u0000\u0000\u06a7\u06a8\u0005r\u0000\u0000\u06a8\u06a9\u0005\u00a2\u0000"+
		"\u0000\u06a9\u06ab\u0005\u0187\u0000\u0000\u06aa\u06a0\u0001\u0000\u0000"+
		"\u0000\u06aa\u06a2\u0001\u0000\u0000\u0000\u06aa\u06a4\u0001\u0000\u0000"+
		"\u0000\u06aa\u06a7\u0001\u0000\u0000\u0000\u06ab\u06b0\u0001\u0000\u0000"+
		"\u0000\u06ac\u06ad\u0005\u00a2\u0000\u0000\u06ad\u06ae\u0005\u0261\u0000"+
		"\u0000\u06ae\u06b0\u0007\u000b\u0000\u0000\u06af\u0698\u0001\u0000\u0000"+
		"\u0000\u06af\u069a\u0001\u0000\u0000\u0000\u06af\u069d\u0001\u0000\u0000"+
		"\u0000\u06af\u06aa\u0001\u0000\u0000\u0000\u06af\u06ac\u0001\u0000\u0000"+
		"\u0000\u06b0[\u0001\u0000\u0000\u0000\u06b1\u06b2\u0005\u01c1\u0000\u0000"+
		"\u06b2\u06c0\u0005\u0497\u0000\u0000\u06b3\u06b4\u0005(\u0000\u0000\u06b4"+
		"\u06c0\u0005\u0497\u0000\u0000\u06b5\u06b6\u0005\u029c\u0000\u0000\u06b6"+
		"\u06c0\u0005\u0497\u0000\u0000\u06b7\u06b8\u0005\u022a\u0000\u0000\u06b8"+
		"\u06c0\u0005\u0497\u0000\u0000\u06b9\u06ba\u0005\u026c\u0000\u0000\u06ba"+
		"\u06c0\u0005\u0497\u0000\u0000\u06bb\u06bc\u0005\u0221\u0000\u0000\u06bc"+
		"\u06c0\u0005\u0497\u0000\u0000\u06bd\u06be\u0005\u0230\u0000\u0000\u06be"+
		"\u06c0\u0003\u025e\u012f\u0000\u06bf\u06b1\u0001\u0000\u0000\u0000\u06bf"+
		"\u06b3\u0001\u0000\u0000\u0000\u06bf\u06b5\u0001\u0000\u0000\u0000\u06bf"+
		"\u06b7\u0001\u0000\u0000\u0000\u06bf\u06b9\u0001\u0000\u0000\u0000\u06bf"+
		"\u06bb\u0001\u0000\u0000\u0000\u06bf\u06bd\u0001\u0000\u0000\u0000\u06c0"+
		"]\u0001\u0000\u0000\u0000\u06c1\u06c2\u0005\u0488\u0000\u0000\u06c2\u06c7"+
		"\u0003`0\u0000\u06c3\u06c4\u0005\u048a\u0000\u0000\u06c4\u06c6\u0003`"+
		"0\u0000\u06c5\u06c3\u0001\u0000\u0000\u0000\u06c6\u06c9\u0001\u0000\u0000"+
		"\u0000\u06c7\u06c5\u0001\u0000\u0000\u0000\u06c7\u06c8\u0001\u0000\u0000"+
		"\u0000\u06c8\u06ca\u0001\u0000\u0000\u0000\u06c9\u06c7\u0001\u0000\u0000"+
		"\u0000\u06ca\u06cb\u0005\u0489\u0000\u0000\u06cb_\u0001\u0000\u0000\u0000"+
		"\u06cc\u06cd\u0003\u023a\u011d\u0000\u06cd\u06ce\u0003b1\u0000\u06ce\u06d8"+
		"\u0001\u0000\u0000\u0000\u06cf\u06d1\u0003f3\u0000\u06d0\u06d2\u0005t"+
		"\u0000\u0000\u06d1\u06d0\u0001\u0000\u0000\u0000\u06d1\u06d2\u0001\u0000"+
		"\u0000\u0000\u06d2\u06d4\u0001\u0000\u0000\u0000\u06d3\u06d5\u0005:\u0000"+
		"\u0000\u06d4\u06d3\u0001\u0000\u0000\u0000\u06d4\u06d5\u0001\u0000\u0000"+
		"\u0000\u06d5\u06d8\u0001\u0000\u0000\u0000\u06d6\u06d8\u0003n7\u0000\u06d7"+
		"\u06cc\u0001\u0000\u0000\u0000\u06d7\u06cf\u0001\u0000\u0000\u0000\u06d7"+
		"\u06d6\u0001\u0000\u0000\u0000\u06d8a\u0001\u0000\u0000\u0000\u06d9\u06dd"+
		"\u0003\u026c\u0136\u0000\u06da\u06dc\u0003d2\u0000\u06db\u06da\u0001\u0000"+
		"\u0000\u0000\u06dc\u06df\u0001\u0000\u0000\u0000\u06dd\u06db\u0001\u0000"+
		"\u0000\u0000\u06dd\u06de\u0001\u0000\u0000\u0000\u06de\u06e1\u0001\u0000"+
		"\u0000\u0000\u06df\u06dd\u0001\u0000\u0000\u0000\u06e0\u06e2\u0005t\u0000"+
		"\u0000\u06e1\u06e0\u0001\u0000\u0000\u0000\u06e1\u06e2\u0001\u0000\u0000"+
		"\u0000\u06e2\u06e4\u0001\u0000\u0000\u0000\u06e3\u06e5\u0005:\u0000\u0000"+
		"\u06e4\u06e3\u0001\u0000\u0000\u0000\u06e4\u06e5\u0001\u0000\u0000\u0000"+
		"\u06e5c\u0001\u0000\u0000\u0000\u06e6\u071e\u0003\u0268\u0134\u0000\u06e7"+
		"\u06e8\u0005+\u0000\u0000\u06e8\u071e\u0003\u028c\u0146\u0000\u06e9\u071e"+
		"\u0005\u02a4\u0000\u0000\u06ea\u071e\u0005\u01ce\u0000\u0000\u06eb\u06f0"+
		"\u0005\u0159\u0000\u0000\u06ec\u06ed\u0005x\u0000\u0000\u06ed\u06ee\u0005"+
		"\u00bb\u0000\u0000\u06ee\u06f0\u0003\u028e\u0147\u0000\u06ef\u06eb\u0001"+
		"\u0000\u0000\u0000\u06ef\u06ec\u0001\u0000\u0000\u0000\u06f0\u071e\u0001"+
		"\u0000\u0000\u0000\u06f1\u06f3\u0005\u0084\u0000\u0000\u06f2\u06f1\u0001"+
		"\u0000\u0000\u0000\u06f2\u06f3\u0001\u0000\u0000\u0000\u06f3\u06f4\u0001"+
		"\u0000\u0000\u0000\u06f4\u071e\u0005]\u0000\u0000\u06f5\u06f6\u0005\u016d"+
		"\u0000\u0000\u06f6\u071e\u0005]\u0000\u0000\u06f7\u06f9\u0005\u00b8\u0000"+
		"\u0000\u06f8\u06fa\u0005]\u0000\u0000\u06f9\u06f8\u0001\u0000\u0000\u0000"+
		"\u06f9\u06fa\u0001\u0000\u0000\u0000\u06fa\u071e\u0001\u0000\u0000\u0000"+
		"\u06fb\u06fc\u0005\u0173\u0000\u0000\u06fc\u071e\u0005\u0497\u0000\u0000"+
		"\u06fd\u06fe\u0005\u0171\u0000\u0000\u06fe\u071e\u0007\u0014\u0000\u0000"+
		"\u06ff\u0700\u0005\u027f\u0000\u0000\u0700\u071e\u0007\u0015\u0000\u0000"+
		"\u0701\u071e\u0003h4\u0000\u0702\u0703\u0005\u001c\u0000\u0000\u0703\u071e"+
		"\u0003\u0248\u0124\u0000\u0704\u0705\u0005G\u0000\u0000\u0705\u0707\u0005"+
		"\b\u0000\u0000\u0706\u0704\u0001\u0000\u0000\u0000\u0706\u0707\u0001\u0000"+
		"\u0000\u0000\u0707\u0708\u0001\u0000\u0000\u0000\u0708\u0709\u0005\f\u0000"+
		"\u0000\u0709\u070a\u0005\u0488\u0000\u0000\u070a\u070b\u0003\u02c4\u0162"+
		"\u0000\u070b\u070d\u0005\u0489\u0000\u0000\u070c\u070e\u0007\u0016\u0000"+
		"\u0000\u070d\u070c\u0001\u0000\u0000\u0000\u070d\u070e\u0001\u0000\u0000"+
		"\u0000\u070e\u071e\u0001\u0000\u0000\u0000\u070f\u0710\u0005\u00f2\u0000"+
		"\u0000\u0710\u0711\u0005+\u0000\u0000\u0711\u071e\u0005\u02a0\u0000\u0000"+
		"\u0712\u0714\u0005\u001f\u0000\u0000\u0713\u0715\u0003\u0258\u012c\u0000"+
		"\u0714\u0713\u0001\u0000\u0000\u0000\u0714\u0715\u0001\u0000\u0000\u0000"+
		"\u0715\u0717\u0001\u0000\u0000\u0000\u0716\u0712\u0001\u0000\u0000\u0000"+
		"\u0716\u0717\u0001\u0000\u0000\u0000\u0717\u0718\u0001\u0000\u0000\u0000"+
		"\u0718\u0719\u0005\u001b\u0000\u0000\u0719\u071a\u0005\u0488\u0000\u0000"+
		"\u071a\u071b\u0003\u02c4\u0162\u0000\u071b\u071c\u0005\u0489\u0000\u0000"+
		"\u071c\u071e\u0001\u0000\u0000\u0000\u071d\u06e6\u0001\u0000\u0000\u0000"+
		"\u071d\u06e7\u0001\u0000\u0000\u0000\u071d\u06e9\u0001\u0000\u0000\u0000"+
		"\u071d\u06ea\u0001\u0000\u0000\u0000\u071d\u06ef\u0001\u0000\u0000\u0000"+
		"\u071d\u06f2\u0001\u0000\u0000\u0000\u071d\u06f5\u0001\u0000\u0000\u0000"+
		"\u071d\u06f7\u0001\u0000\u0000\u0000\u071d\u06fb\u0001\u0000\u0000\u0000"+
		"\u071d\u06fd\u0001\u0000\u0000\u0000\u071d\u06ff\u0001\u0000\u0000\u0000"+
		"\u071d\u0701\u0001\u0000\u0000\u0000\u071d\u0702\u0001\u0000\u0000\u0000"+
		"\u071d\u0706\u0001\u0000\u0000\u0000\u071d\u070f\u0001\u0000\u0000\u0000"+
		"\u071d\u0716\u0001\u0000\u0000\u0000\u071ee\u0001\u0000\u0000\u0000\u071f"+
		"\u0721\u0005\u001f\u0000\u0000\u0720\u0722\u0003\u0258\u012c\u0000\u0721"+
		"\u0720\u0001\u0000\u0000\u0000\u0721\u0722\u0001\u0000\u0000\u0000\u0722"+
		"\u0724\u0001\u0000\u0000\u0000\u0723\u071f\u0001\u0000\u0000\u0000\u0723"+
		"\u0724\u0001\u0000\u0000\u0000\u0724\u0725\u0001\u0000\u0000\u0000\u0725"+
		"\u0726\u0005\u0084\u0000\u0000\u0726\u0728\u0005]\u0000\u0000\u0727\u0729"+
		"\u0003\u0258\u012c\u0000\u0728\u0727\u0001\u0000\u0000\u0000\u0728\u0729"+
		"\u0001\u0000\u0000\u0000\u0729\u072b\u0001\u0000\u0000\u0000\u072a\u072c"+
		"\u0003R)\u0000\u072b\u072a\u0001\u0000\u0000\u0000\u072b\u072c\u0001\u0000"+
		"\u0000\u0000\u072c\u072d\u0001\u0000\u0000\u0000\u072d\u0731\u0003\u0280"+
		"\u0140\u0000\u072e\u0730\u0003T*\u0000\u072f\u072e\u0001\u0000\u0000\u0000"+
		"\u0730\u0733\u0001\u0000\u0000\u0000\u0731\u072f\u0001\u0000\u0000\u0000"+
		"\u0731\u0732\u0001\u0000\u0000\u0000\u0732\u076b\u0001\u0000\u0000\u0000"+
		"\u0733\u0731\u0001\u0000\u0000\u0000\u0734\u0736\u0005\u001f\u0000\u0000"+
		"\u0735\u0737\u0003\u0258\u012c\u0000\u0736\u0735\u0001\u0000\u0000\u0000"+
		"\u0736\u0737\u0001\u0000\u0000\u0000\u0737\u0739\u0001\u0000\u0000\u0000"+
		"\u0738\u0734\u0001\u0000\u0000\u0000\u0738\u0739\u0001\u0000\u0000\u0000"+
		"\u0739\u073a\u0001\u0000\u0000\u0000\u073a\u073c\u0005\u00b8\u0000\u0000"+
		"\u073b\u073d\u0007\u0017\u0000\u0000\u073c\u073b\u0001\u0000\u0000\u0000"+
		"\u073c\u073d\u0001\u0000\u0000\u0000\u073d\u073f\u0001\u0000\u0000\u0000"+
		"\u073e\u0740\u0003\u0258\u012c\u0000\u073f\u073e\u0001\u0000\u0000\u0000"+
		"\u073f\u0740\u0001\u0000\u0000\u0000\u0740\u0742\u0001\u0000\u0000\u0000"+
		"\u0741\u0743\u0003R)\u0000\u0742\u0741\u0001\u0000\u0000\u0000\u0742\u0743"+
		"\u0001\u0000\u0000\u0000\u0743\u0744\u0001\u0000\u0000\u0000\u0744\u0748"+
		"\u0003\u0280\u0140\u0000\u0745\u0747\u0003T*\u0000\u0746\u0745\u0001\u0000"+
		"\u0000\u0000\u0747\u074a\u0001\u0000\u0000\u0000\u0748\u0746\u0001\u0000"+
		"\u0000\u0000\u0748\u0749\u0001\u0000\u0000\u0000\u0749\u076b\u0001\u0000"+
		"\u0000\u0000\u074a\u0748\u0001\u0000\u0000\u0000\u074b\u074d\u0005\u001f"+
		"\u0000\u0000\u074c\u074e\u0003\u0258\u012c\u0000\u074d\u074c\u0001\u0000"+
		"\u0000\u0000\u074d\u074e\u0001\u0000\u0000\u0000\u074e\u0750\u0001\u0000"+
		"\u0000\u0000\u074f\u074b\u0001\u0000\u0000\u0000\u074f\u0750\u0001\u0000"+
		"\u0000\u0000\u0750\u0751\u0001\u0000\u0000\u0000\u0751\u0752\u0005D\u0000"+
		"\u0000\u0752\u0754\u0005]\u0000\u0000\u0753\u0755\u0003\u0258\u012c\u0000"+
		"\u0754\u0753\u0001\u0000\u0000\u0000\u0754\u0755\u0001\u0000\u0000\u0000"+
		"\u0755\u0756\u0001\u0000\u0000\u0000\u0756\u0757\u0003\u0280\u0140\u0000"+
		"\u0757\u0758\u0003h4\u0000\u0758\u076b\u0001\u0000\u0000\u0000\u0759\u075b"+
		"\u0005\u001f\u0000\u0000\u075a\u075c\u0003\u0258\u012c\u0000\u075b\u075a"+
		"\u0001\u0000\u0000\u0000\u075b\u075c\u0001\u0000\u0000\u0000\u075c\u075e"+
		"\u0001\u0000\u0000\u0000\u075d\u0759\u0001\u0000\u0000\u0000\u075d\u075e"+
		"\u0001\u0000\u0000\u0000\u075e\u075f\u0001\u0000\u0000\u0000\u075f\u0760"+
		"\u0005\u001b\u0000\u0000\u0760\u0761\u0005\u0488\u0000\u0000\u0761\u0762"+
		"\u0003\u02c4\u0162\u0000\u0762\u0763\u0005\u0489\u0000\u0000\u0763\u076b"+
		"\u0001\u0000\u0000\u0000\u0764\u0765\u0005\u016d\u0000\u0000\u0765\u0767"+
		"\u0005]\u0000\u0000\u0766\u0768\u0003\u0258\u012c\u0000\u0767\u0766\u0001"+
		"\u0000\u0000\u0000\u0767\u0768\u0001\u0000\u0000\u0000\u0768\u0769\u0001"+
		"\u0000\u0000\u0000\u0769\u076b\u0003\u0280\u0140\u0000\u076a\u0723\u0001"+
		"\u0000\u0000\u0000\u076a\u0738\u0001\u0000\u0000\u0000\u076a\u074f\u0001"+
		"\u0000\u0000\u0000\u076a\u075d\u0001\u0000\u0000\u0000\u076a\u0764\u0001"+
		"\u0000\u0000\u0000\u076bg\u0001\u0000\u0000\u0000\u076c\u076d\u0005\u008a"+
		"\u0000\u0000\u076d\u076f\u0003\u0236\u011b\u0000\u076e\u0770\u0003\u0280"+
		"\u0140\u0000\u076f\u076e\u0001\u0000\u0000\u0000\u076f\u0770\u0001\u0000"+
		"\u0000\u0000\u0770\u0773\u0001\u0000\u0000\u0000\u0771\u0772\u0005o\u0000"+
		"\u0000\u0772\u0774\u0007\u0018\u0000\u0000\u0773\u0771\u0001\u0000\u0000"+
		"\u0000\u0773\u0774\u0001\u0000\u0000\u0000\u0774\u0776\u0001\u0000\u0000"+
		"\u0000\u0775\u0777\u0003j5\u0000\u0776\u0775\u0001\u0000\u0000\u0000\u0776"+
		"\u0777\u0001\u0000\u0000\u0000\u0777i\u0001\u0000\u0000\u0000\u0778\u0779"+
		"\u0005x\u0000\u0000\u0779\u077a\u0005-\u0000\u0000\u077a\u077e\u0003l"+
		"6\u0000\u077b\u077c\u0005x\u0000\u0000\u077c\u077d\u0005\u00bb\u0000\u0000"+
		"\u077d\u077f\u0003l6\u0000\u077e\u077b\u0001\u0000\u0000\u0000\u077e\u077f"+
		"\u0001\u0000\u0000\u0000\u077f\u0789\u0001\u0000\u0000\u0000\u0780\u0781"+
		"\u0005x\u0000\u0000\u0781\u0782\u0005\u00bb\u0000\u0000\u0782\u0786\u0003"+
		"l6\u0000\u0783\u0784\u0005x\u0000\u0000\u0784\u0785\u0005-\u0000\u0000"+
		"\u0785\u0787\u0003l6\u0000\u0786\u0783\u0001\u0000\u0000\u0000\u0786\u0787"+
		"\u0001\u0000\u0000\u0000\u0787\u0789\u0001\u0000\u0000\u0000\u0788\u0778"+
		"\u0001\u0000\u0000\u0000\u0788\u0780\u0001\u0000\u0000\u0000\u0789k\u0001"+
		"\u0000\u0000\u0000\u078a\u0793\u0005\u0092\u0000\u0000\u078b\u0793\u0005"+
		"\u0016\u0000\u0000\u078c\u078d\u0005\u009b\u0000\u0000\u078d\u0793\u0005"+
		"v\u0000\u0000\u078e\u078f\u0005\u020c\u0000\u0000\u078f\u0793\u0005\u0150"+
		"\u0000\u0000\u0790\u0791\u0005\u009b\u0000\u0000\u0791\u0793\u0005+\u0000"+
		"\u0000\u0792\u078a\u0001\u0000\u0000\u0000\u0792\u078b\u0001\u0000\u0000"+
		"\u0000\u0792\u078c\u0001\u0000\u0000\u0000\u0792\u078e\u0001\u0000\u0000"+
		"\u0000\u0792\u0790\u0001\u0000\u0000\u0000\u0793m\u0001\u0000\u0000\u0000"+
		"\u0794\u0796\u0007\u0017\u0000\u0000\u0795\u0797\u0003\u0258\u012c\u0000"+
		"\u0796\u0795\u0001\u0000\u0000\u0000\u0796\u0797\u0001\u0000\u0000\u0000"+
		"\u0797\u0799\u0001\u0000\u0000\u0000\u0798\u079a\u0003R)\u0000\u0799\u0798"+
		"\u0001\u0000\u0000\u0000\u0799\u079a\u0001\u0000\u0000\u0000\u079a\u079b"+
		"\u0001\u0000\u0000\u0000\u079b\u079f\u0003\u0280\u0140\u0000\u079c\u079e"+
		"\u0003T*\u0000\u079d\u079c\u0001\u0000\u0000\u0000\u079e\u07a1\u0001\u0000"+
		"\u0000\u0000\u079f\u079d\u0001\u0000\u0000\u0000\u079f\u07a0\u0001\u0000"+
		"\u0000\u0000\u07a0\u07b1\u0001\u0000\u0000\u0000\u07a1\u079f\u0001\u0000"+
		"\u0000\u0000\u07a2\u07a4\u0007\u0019\u0000\u0000\u07a3\u07a5\u0007\u0017"+
		"\u0000\u0000\u07a4\u07a3\u0001\u0000\u0000\u0000\u07a4\u07a5\u0001\u0000"+
		"\u0000\u0000\u07a5\u07a7\u0001\u0000\u0000\u0000\u07a6\u07a8\u0003\u0258"+
		"\u012c\u0000\u07a7\u07a6\u0001\u0000\u0000\u0000\u07a7\u07a8\u0001\u0000"+
		"\u0000\u0000\u07a8\u07a9\u0001\u0000\u0000\u0000\u07a9\u07ad\u0003\u0280"+
		"\u0140\u0000\u07aa\u07ac\u0003T*\u0000\u07ab\u07aa\u0001\u0000\u0000\u0000"+
		"\u07ac\u07af\u0001\u0000\u0000\u0000\u07ad\u07ab\u0001\u0000\u0000\u0000"+
		"\u07ad\u07ae\u0001\u0000\u0000\u0000\u07ae\u07b1\u0001\u0000\u0000\u0000"+
		"\u07af\u07ad\u0001\u0000\u0000\u0000\u07b0\u0794\u0001\u0000\u0000\u0000"+
		"\u07b0\u07a2\u0001\u0000\u0000\u0000\u07b1o\u0001\u0000\u0000\u0000\u07b2"+
		"\u07b4\u0005\u019c\u0000\u0000\u07b3\u07b5\u0005\u047f\u0000\u0000\u07b4"+
		"\u07b3\u0001\u0000\u0000\u0000\u07b4\u07b5\u0001\u0000\u0000\u0000\u07b5"+
		"\u07b7\u0001\u0000\u0000\u0000\u07b6\u07b8\u0003\u024a\u0125\u0000\u07b7"+
		"\u07b6\u0001\u0000\u0000\u0000\u07b7\u07b8\u0001\u0000\u0000\u0000\u07b8"+
		"\u0875\u0001\u0000\u0000\u0000\u07b9\u07bb\u0005\u0373\u0000\u0000\u07ba"+
		"\u07bc\u0005\u047f\u0000\u0000\u07bb\u07ba\u0001\u0000\u0000\u0000\u07bb"+
		"\u07bc\u0001\u0000\u0000\u0000\u07bc\u07bd\u0001\u0000\u0000\u0000\u07bd"+
		"\u0875\u0005\u0497\u0000\u0000\u07be\u07c0\u0005\u0158\u0000\u0000\u07bf"+
		"\u07c1\u0005\u047f\u0000\u0000\u07c0\u07bf\u0001\u0000\u0000\u0000\u07c0"+
		"\u07c1\u0001\u0000\u0000\u0000\u07c1\u07c2\u0001\u0000\u0000\u0000\u07c2"+
		"\u0875\u0003\u025e\u012f\u0000\u07c3\u07c5\u0005\u0159\u0000\u0000\u07c4"+
		"\u07c6\u0005\u047f\u0000\u0000\u07c5\u07c4\u0001\u0000\u0000\u0000\u07c5"+
		"\u07c6\u0001\u0000\u0000\u0000\u07c6\u07c7\u0001\u0000\u0000\u0000\u07c7"+
		"\u0875\u0003\u025e\u012f\u0000\u07c8\u07ca\u0005\u015a\u0000\u0000\u07c9"+
		"\u07cb\u0005\u047f\u0000\u0000\u07ca\u07c9\u0001\u0000\u0000\u0000\u07ca"+
		"\u07cb\u0001\u0000\u0000\u0000\u07cb\u07cc\u0001\u0000\u0000\u0000\u07cc"+
		"\u0875\u0003\u025e\u012f\u0000\u07cd\u07cf\u0005+\u0000\u0000\u07ce\u07cd"+
		"\u0001\u0000\u0000\u0000\u07ce\u07cf\u0001\u0000\u0000\u0000\u07cf\u07d0"+
		"\u0001\u0000\u0000\u0000\u07d0\u07d2\u0003B!\u0000\u07d1\u07d3\u0005\u047f"+
		"\u0000\u0000\u07d2\u07d1\u0001\u0000\u0000\u0000\u07d2\u07d3\u0001\u0000"+
		"\u0000\u0000\u07d3\u07d6\u0001\u0000\u0000\u0000\u07d4\u07d7\u0003\u0246"+
		"\u0123\u0000\u07d5\u07d7\u0005+\u0000\u0000\u07d6\u07d4\u0001\u0000\u0000"+
		"\u0000\u07d6\u07d5\u0001\u0000\u0000\u0000\u07d7\u0875\u0001\u0000\u0000"+
		"\u0000\u07d8\u07da\u0007\u001a\u0000\u0000\u07d9\u07db\u0005\u047f\u0000"+
		"\u0000\u07da\u07d9\u0001\u0000\u0000\u0000\u07da\u07db\u0001\u0000\u0000"+
		"\u0000\u07db\u07dc\u0001\u0000\u0000\u0000\u07dc\u0875\u0007\u001b\u0000"+
		"\u0000\u07dd\u07df\u0005+\u0000\u0000\u07de\u07dd\u0001\u0000\u0000\u0000"+
		"\u07de\u07df\u0001\u0000\u0000\u0000\u07df\u07e0\u0001\u0000\u0000\u0000"+
		"\u07e0\u07e2\u0005\u001c\u0000\u0000\u07e1\u07e3\u0005\u047f\u0000\u0000"+
		"\u07e2\u07e1\u0001\u0000\u0000\u0000\u07e2\u07e3\u0001\u0000\u0000\u0000"+
		"\u07e3\u07e4\u0001\u0000\u0000\u0000\u07e4\u0875\u0003\u0248\u0124\u0000"+
		"\u07e5\u07e7\u0005\u0173\u0000\u0000\u07e6\u07e8\u0005\u047f\u0000\u0000"+
		"\u07e7\u07e6\u0001\u0000\u0000\u0000\u07e7\u07e8\u0001\u0000\u0000\u0000"+
		"\u07e8\u07e9\u0001\u0000\u0000\u0000\u07e9\u0875\u0005\u0497\u0000\u0000"+
		"\u07ea\u07ec\u0005\u0178\u0000\u0000\u07eb\u07ed\u0005\u047f\u0000\u0000"+
		"\u07ec\u07eb\u0001\u0000\u0000\u0000\u07ec\u07ed\u0001\u0000\u0000\u0000"+
		"\u07ed\u07ee\u0001\u0000\u0000\u0000\u07ee\u0875\u0007\u001c\u0000\u0000"+
		"\u07ef\u07f1\u0005\u017b\u0000\u0000\u07f0\u07f2\u0005\u047f\u0000\u0000"+
		"\u07f1\u07f0\u0001\u0000\u0000\u0000\u07f1\u07f2\u0001\u0000\u0000\u0000"+
		"\u07f2\u07f3\u0001\u0000\u0000\u0000\u07f3\u0875\u0005\u0497\u0000\u0000"+
		"\u07f4\u07f5\u0007\u001d\u0000\u0000\u07f5\u07f7\u0005\u018e\u0000\u0000"+
		"\u07f6\u07f8\u0005\u047f\u0000\u0000\u07f7\u07f6\u0001\u0000\u0000\u0000"+
		"\u07f7\u07f8\u0001\u0000\u0000\u0000\u07f8\u07f9\u0001\u0000\u0000\u0000"+
		"\u07f9\u0875\u0005\u0497\u0000\u0000\u07fa\u07fc\u0005\u018c\u0000\u0000"+
		"\u07fb\u07fd\u0005\u047f\u0000\u0000\u07fc\u07fb\u0001\u0000\u0000\u0000"+
		"\u07fc\u07fd\u0001\u0000\u0000\u0000\u07fd\u07fe\u0001\u0000\u0000\u0000"+
		"\u07fe\u0875\u0007\u001b\u0000\u0000\u07ff\u0801\u0005\u0198\u0000\u0000"+
		"\u0800\u0802\u0005\u047f\u0000\u0000\u0801\u0800\u0001\u0000\u0000\u0000"+
		"\u0801\u0802\u0001\u0000\u0000\u0000\u0802\u0803\u0001\u0000\u0000\u0000"+
		"\u0803\u0875\u0005\u0497\u0000\u0000\u0804\u0806\u0003\u024e\u0127\u0000"+
		"\u0805\u0807\u0005\u047f\u0000\u0000\u0806\u0805\u0001\u0000\u0000\u0000"+
		"\u0806\u0807\u0001\u0000\u0000\u0000\u0807\u0808\u0001\u0000\u0000\u0000"+
		"\u0808\u0809\u0007\u0012\u0000\u0000\u0809\u0875\u0001\u0000\u0000\u0000"+
		"\u080a\u080c\u0007\u001e\u0000\u0000\u080b\u080d\u0005\u047f\u0000\u0000"+
		"\u080c\u080b\u0001\u0000\u0000\u0000\u080c\u080d\u0001\u0000\u0000\u0000"+
		"\u080d\u080e\u0001\u0000\u0000\u0000\u080e\u0875\u0007\u001b\u0000\u0000"+
		"\u080f\u0811\u0007\u001f\u0000\u0000\u0810\u0812\u0005\u047f\u0000\u0000"+
		"\u0811\u0810\u0001\u0000\u0000\u0000\u0811\u0812\u0001\u0000\u0000\u0000"+
		"\u0812\u0813\u0001\u0000\u0000\u0000\u0813\u0875\u0003\u025e\u012f\u0000"+
		"\u0814\u0816\u0005\u0199\u0000\u0000\u0815\u0817\u0005\u047f\u0000\u0000"+
		"\u0816\u0815\u0001\u0000\u0000\u0000\u0816\u0817\u0001\u0000\u0000\u0000"+
		"\u0817\u0818\u0001\u0000\u0000\u0000\u0818\u0875\u0003\u025e\u012f\u0000"+
		"\u0819\u081a\u0005S\u0000\u0000\u081a\u081c\u0005\u018e\u0000\u0000\u081b"+
		"\u081d\u0005\u047f\u0000\u0000\u081c\u081b\u0001\u0000\u0000\u0000\u081c"+
		"\u081d\u0001\u0000\u0000\u0000\u081d\u081e\u0001\u0000\u0000\u0000\u081e"+
		"\u0875\u0005\u0497\u0000\u0000\u081f\u0821\u0005\u01ca\u0000\u0000\u0820"+
		"\u0822\u0005\u047f\u0000\u0000\u0821\u0820\u0001\u0000\u0000\u0000\u0821"+
		"\u0822\u0001\u0000\u0000\u0000\u0822\u0823\u0001\u0000\u0000\u0000\u0823"+
		"\u0875\u0007 \u0000\u0000\u0824\u0826\u0005\u01d6\u0000\u0000\u0825\u0827"+
		"\u0005\u047f\u0000\u0000\u0826\u0825\u0001\u0000\u0000\u0000\u0826\u0827"+
		"\u0001\u0000\u0000\u0000\u0827\u0828\u0001\u0000\u0000\u0000\u0828\u0875"+
		"\u0003\u0260\u0130\u0000\u0829\u082b\u0005\u01f7\u0000\u0000\u082a\u082c"+
		"\u0005\u047f\u0000\u0000\u082b\u082a\u0001\u0000\u0000\u0000\u082b\u082c"+
		"\u0001\u0000\u0000\u0000\u082c\u082d\u0001\u0000\u0000\u0000\u082d\u0875"+
		"\u0003\u025e\u012f\u0000\u082e\u0830\u0005\u0201\u0000\u0000\u082f\u0831"+
		"\u0005\u047f\u0000\u0000\u0830\u082f\u0001\u0000\u0000\u0000\u0830\u0831"+
		"\u0001\u0000\u0000\u0000\u0831\u0832\u0001\u0000\u0000\u0000\u0832\u0875"+
		"\u0003\u025e\u012f\u0000\u0833\u0835\u0005\u0222\u0000\u0000\u0834\u0836"+
		"\u0005\u047f\u0000\u0000\u0835\u0834\u0001\u0000\u0000\u0000\u0835\u0836"+
		"\u0001\u0000\u0000\u0000\u0836\u0837\u0001\u0000\u0000\u0000\u0837\u0875"+
		"\u0007\u000f\u0000\u0000\u0838\u083a\u0005\u022a\u0000\u0000\u0839\u083b"+
		"\u0005\u047f\u0000\u0000\u083a\u0839\u0001\u0000\u0000\u0000\u083a\u083b"+
		"\u0001\u0000\u0000\u0000\u083b\u083c\u0001\u0000\u0000\u0000\u083c\u0875"+
		"\u0005\u0497\u0000\u0000\u083d\u083f\u0005\u025d\u0000\u0000\u083e\u0840"+
		"\u0005\u047f\u0000\u0000\u083f\u083e\u0001\u0000\u0000\u0000\u083f\u0840"+
		"\u0001\u0000\u0000\u0000\u0840\u0841\u0001\u0000\u0000\u0000\u0841\u0875"+
		"\u0007!\u0000\u0000\u0842\u0843\u0005\u0278\u0000\u0000\u0843\u0875\u0005"+
		"\u0290\u0000\u0000\u0844\u0846\u0005\u03f0\u0000\u0000\u0845\u0847\u0005"+
		"\u047f\u0000\u0000\u0846\u0845\u0001\u0000\u0000\u0000\u0846\u0847\u0001"+
		"\u0000\u0000\u0000\u0847\u0848\u0001\u0000\u0000\u0000\u0848\u0875\u0005"+
		"\u0497\u0000\u0000\u0849\u084b\u0005\u027a\u0000\u0000\u084a\u084c\u0005"+
		"\u047f\u0000\u0000\u084b\u084a\u0001\u0000\u0000\u0000\u084b\u084c\u0001"+
		"\u0000\u0000\u0000\u084c\u084d\u0001\u0000\u0000\u0000\u084d\u0875\u0007"+
		"\u000f\u0000\u0000\u084e\u0850\u0005\u027b\u0000\u0000\u084f\u0851\u0005"+
		"\u047f\u0000\u0000\u0850\u084f\u0001\u0000\u0000\u0000\u0850\u0851\u0001"+
		"\u0000\u0000\u0000\u0851\u0852\u0001\u0000\u0000\u0000\u0852\u0875\u0007"+
		"\u000f\u0000\u0000\u0853\u0855\u0005\u027c\u0000\u0000\u0854\u0856\u0005"+
		"\u047f\u0000\u0000\u0855\u0854\u0001\u0000\u0000\u0000\u0855\u0856\u0001"+
		"\u0000\u0000\u0000\u0856\u0859\u0001\u0000\u0000\u0000\u0857\u085a\u0005"+
		"+\u0000\u0000\u0858\u085a\u0003\u025e\u012f\u0000\u0859\u0857\u0001\u0000"+
		"\u0000\u0000\u0859\u0858\u0001\u0000\u0000\u0000\u085a\u0875\u0001\u0000"+
		"\u0000\u0000\u085b\u085c\u0005\u028a\u0000\u0000\u085c\u085e\u0003\u0258"+
		"\u012c\u0000\u085d\u085f\u0003t:\u0000\u085e\u085d\u0001\u0000\u0000\u0000"+
		"\u085e\u085f\u0001\u0000\u0000\u0000\u085f\u0875\u0001\u0000\u0000\u0000"+
		"\u0860\u0861\u0005\u028b\u0000\u0000\u0861\u0862\u0005\u047f\u0000\u0000"+
		"\u0862\u0875\u0003r9\u0000\u0863\u0875\u0003t:\u0000\u0864\u0866\u0005"+
		"\u0291\u0000\u0000\u0865\u0867\u0005\u047f\u0000\u0000\u0866\u0865\u0001"+
		"\u0000\u0000\u0000\u0866\u0867\u0001\u0000\u0000\u0000\u0867\u0868\u0001"+
		"\u0000\u0000\u0000\u0868\u0875\u0007\u001b\u0000\u0000\u0869\u086b\u0005"+
		"\u00b7\u0000\u0000\u086a\u086c\u0005\u047f\u0000\u0000\u086b\u086a\u0001"+
		"\u0000\u0000\u0000\u086b\u086c\u0001\u0000\u0000\u0000\u086c\u086d\u0001"+
		"\u0000\u0000\u0000\u086d\u086e\u0005\u0488\u0000\u0000\u086e\u086f\u0003"+
		"\u027e\u013f\u0000\u086f\u0870\u0005\u0489\u0000\u0000\u0870\u0875\u0001"+
		"\u0000\u0000\u0000\u0871\u0872\u0005\u00c3\u0000\u0000\u0872\u0873\u0005"+
		"\u043f\u0000\u0000\u0873\u0875\u0005\u0457\u0000\u0000\u0874\u07b2\u0001"+
		"\u0000\u0000\u0000\u0874\u07b9\u0001\u0000\u0000\u0000\u0874\u07be\u0001"+
		"\u0000\u0000\u0000\u0874\u07c3\u0001\u0000\u0000\u0000\u0874\u07c8\u0001"+
		"\u0000\u0000\u0000\u0874\u07ce\u0001\u0000\u0000\u0000\u0874\u07d8\u0001"+
		"\u0000\u0000\u0000\u0874\u07de\u0001\u0000\u0000\u0000\u0874\u07e5\u0001"+
		"\u0000\u0000\u0000\u0874\u07ea\u0001\u0000\u0000\u0000\u0874\u07ef\u0001"+
		"\u0000\u0000\u0000\u0874\u07f4\u0001\u0000\u0000\u0000\u0874\u07fa\u0001"+
		"\u0000\u0000\u0000\u0874\u07ff\u0001\u0000\u0000\u0000\u0874\u0804\u0001"+
		"\u0000\u0000\u0000\u0874\u080a\u0001\u0000\u0000\u0000\u0874\u080f\u0001"+
		"\u0000\u0000\u0000\u0874\u0814\u0001\u0000\u0000\u0000\u0874\u0819\u0001"+
		"\u0000\u0000\u0000\u0874\u081f\u0001\u0000\u0000\u0000\u0874\u0824\u0001"+
		"\u0000\u0000\u0000\u0874\u0829\u0001\u0000\u0000\u0000\u0874\u082e\u0001"+
		"\u0000\u0000\u0000\u0874\u0833\u0001\u0000\u0000\u0000\u0874\u0838\u0001"+
		"\u0000\u0000\u0000\u0874\u083d\u0001\u0000\u0000\u0000\u0874\u0842\u0001"+
		"\u0000\u0000\u0000\u0874\u0844\u0001\u0000\u0000\u0000\u0874\u0849\u0001"+
		"\u0000\u0000\u0000\u0874\u084e\u0001\u0000\u0000\u0000\u0874\u0853\u0001"+
		"\u0000\u0000\u0000\u0874\u085b\u0001\u0000\u0000\u0000\u0874\u0860\u0001"+
		"\u0000\u0000\u0000\u0874\u0863\u0001\u0000\u0000\u0000\u0874\u0864\u0001"+
		"\u0000\u0000\u0000\u0874\u0869\u0001\u0000\u0000\u0000\u0874\u0871\u0001"+
		"\u0000\u0000\u0000\u0875q\u0001\u0000\u0000\u0000\u0876\u0877\u0007\""+
		"\u0000\u0000\u0877s\u0001\u0000\u0000\u0000\u0878\u0879\u0005\u027f\u0000"+
		"\u0000\u0879\u087a\u0007\u0015\u0000\u0000\u087au\u0001\u0000\u0000\u0000"+
		"\u087b\u087c\u0005\u0083\u0000\u0000\u087c\u087d\u0005\u0014\u0000\u0000"+
		"\u087d\u0880\u0003x<\u0000\u087e\u087f\u0005\u0229\u0000\u0000\u087f\u0881"+
		"\u0003\u025e\u012f\u0000\u0880\u087e\u0001\u0000\u0000\u0000\u0880\u0881"+
		"\u0001\u0000\u0000\u0000\u0881\u0889\u0001\u0000\u0000\u0000\u0882\u0883"+
		"\u0005\u0284\u0000\u0000\u0883\u0884\u0005\u0014\u0000\u0000\u0884\u0887"+
		"\u0003~?\u0000\u0885\u0886\u0005\u0285\u0000\u0000\u0886\u0888\u0003\u025e"+
		"\u012f\u0000\u0887\u0885\u0001\u0000\u0000\u0000\u0887\u0888\u0001\u0000"+
		"\u0000\u0000\u0888\u088a\u0001\u0000\u0000\u0000\u0889\u0882\u0001\u0000"+
		"\u0000\u0000\u0889\u088a\u0001\u0000\u0000\u0000\u088a\u0896\u0001\u0000"+
		"\u0000\u0000\u088b\u088c\u0005\u0488\u0000\u0000\u088c\u0891\u0003\u0080"+
		"@\u0000\u088d\u088e\u0005\u048a\u0000\u0000\u088e\u0890\u0003\u0080@\u0000"+
		"\u088f\u088d\u0001\u0000\u0000\u0000\u0890\u0893\u0001\u0000\u0000\u0000"+
		"\u0891\u088f\u0001\u0000\u0000\u0000\u0891\u0892\u0001\u0000\u0000\u0000"+
		"\u0892\u0894\u0001\u0000\u0000\u0000\u0893\u0891\u0001\u0000\u0000\u0000"+
		"\u0894\u0895\u0005\u0489\u0000\u0000\u0895\u0897\u0001\u0000\u0000\u0000"+
		"\u0896\u088b\u0001\u0000\u0000\u0000\u0896\u0897\u0001\u0000\u0000\u0000"+
		"\u0897w\u0001\u0000\u0000\u0000\u0898\u089a\u0005f\u0000\u0000\u0899\u0898"+
		"\u0001\u0000\u0000\u0000\u0899\u089a\u0001\u0000\u0000\u0000\u089a\u089b"+
		"\u0001\u0000\u0000\u0000\u089b\u089c\u0005\u01be\u0000\u0000\u089c\u089d"+
		"\u0005\u0488\u0000\u0000\u089d\u089e\u0003\u02c4\u0162\u0000\u089e\u089f"+
		"\u0005\u0489\u0000\u0000\u089f\u08db\u0001\u0000\u0000\u0000\u08a0\u08a2"+
		"\u0005f\u0000\u0000\u08a1\u08a0\u0001\u0000\u0000\u0000\u08a1\u08a2\u0001"+
		"\u0000\u0000\u0000\u08a2\u08a3\u0001\u0000\u0000\u0000\u08a3\u08a7\u0005"+
		"]\u0000\u0000\u08a4\u08a5\u0005\u0153\u0000\u0000\u08a5\u08a6\u0005\u047f"+
		"\u0000\u0000\u08a6\u08a8\u0007#\u0000\u0000\u08a7\u08a4\u0001\u0000\u0000"+
		"\u0000\u08a7\u08a8\u0001\u0000\u0000\u0000\u08a8\u08a9\u0001\u0000\u0000"+
		"\u0000\u08a9\u08ab\u0005\u0488\u0000\u0000\u08aa\u08ac\u0003\u027a\u013d"+
		"\u0000\u08ab\u08aa\u0001\u0000\u0000\u0000\u08ab\u08ac\u0001\u0000\u0000"+
		"\u0000\u08ac\u08ad\u0001\u0000\u0000\u0000\u08ad\u08db\u0005\u0489\u0000"+
		"\u0000\u08ae\u08b8\u0005\u0087\u0000\u0000\u08af\u08b0\u0005\u0488\u0000"+
		"\u0000\u08b0\u08b1\u0003\u02c4\u0162\u0000\u08b1\u08b2\u0005\u0489\u0000"+
		"\u0000\u08b2\u08b9\u0001\u0000\u0000\u0000\u08b3\u08b4\u0005\u0170\u0000"+
		"\u0000\u08b4\u08b5\u0005\u0488\u0000\u0000\u08b5\u08b6\u0003\u027a\u013d"+
		"\u0000\u08b6\u08b7\u0005\u0489\u0000\u0000\u08b7\u08b9\u0001\u0000\u0000"+
		"\u0000\u08b8\u08af\u0001\u0000\u0000\u0000\u08b8\u08b3\u0001\u0000\u0000"+
		"\u0000\u08b9\u08db\u0001\u0000\u0000\u0000\u08ba\u08c4\u0005\u01dc\u0000"+
		"\u0000\u08bb\u08bc\u0005\u0488\u0000\u0000\u08bc\u08bd\u0003\u02c4\u0162"+
		"\u0000\u08bd\u08be\u0005\u0489\u0000\u0000\u08be\u08c5\u0001\u0000\u0000"+
		"\u0000\u08bf\u08c0\u0005\u0170\u0000\u0000\u08c0\u08c1\u0005\u0488\u0000"+
		"\u0000\u08c1\u08c2\u0003\u027a\u013d\u0000\u08c2\u08c3\u0005\u0489\u0000"+
		"\u0000\u08c3\u08c5\u0001\u0000\u0000\u0000\u08c4\u08bb\u0001\u0000\u0000"+
		"\u0000\u08c4\u08bf\u0001\u0000\u0000\u0000\u08c5\u08db\u0001\u0000\u0000"+
		"\u0000\u08c6\u08ca\u0005\u00ae\u0000\u0000\u08c7\u08cb\u0003\u02c4\u0162"+
		"\u0000\u08c8\u08c9\u0005e\u0000\u0000\u08c9\u08cb\u0003\u02c4\u0162\u0000"+
		"\u08ca\u08c7\u0001\u0000\u0000\u0000\u08ca\u08c8\u0001\u0000\u0000\u0000"+
		"\u08cb\u08d2\u0001\u0000\u0000\u0000\u08cc\u08d0\u0005\u0279\u0000\u0000"+
		"\u08cd\u08ce\u0005\u00de\u0000\u0000\u08ce\u08d1\u0003J%\u0000\u08cf\u08d1"+
		"\u0003J%\u0000\u08d0\u08cd\u0001\u0000\u0000\u0000\u08d0\u08cf\u0001\u0000"+
		"\u0000\u0000\u08d1\u08d3\u0001\u0000\u0000\u0000\u08d2\u08cc\u0001\u0000"+
		"\u0000\u0000\u08d2\u08d3\u0001\u0000\u0000\u0000\u08d3\u08d5\u0001\u0000"+
		"\u0000\u0000\u08d4\u08d6\u0005\u000f\u0000\u0000\u08d5\u08d4\u0001\u0000"+
		"\u0000\u0000\u08d5\u08d6\u0001\u0000\u0000\u0000\u08d6\u08d8\u0001\u0000"+
		"\u0000\u0000\u08d7\u08d9\u0003z=\u0000\u08d8\u08d7\u0001\u0000\u0000\u0000"+
		"\u08d8\u08d9\u0001\u0000\u0000\u0000\u08d9\u08db\u0001\u0000\u0000\u0000"+
		"\u08da\u0899\u0001\u0000\u0000\u0000\u08da\u08a1\u0001\u0000\u0000\u0000"+
		"\u08da\u08ae\u0001\u0000\u0000\u0000\u08da\u08ba\u0001\u0000\u0000\u0000"+
		"\u08da\u08c6\u0001\u0000\u0000\u0000\u08dby\u0001\u0000\u0000\u0000\u08dc"+
		"\u08dd\u0005\u0488\u0000\u0000\u08dd\u08e2\u0003|>\u0000\u08de\u08df\u0005"+
		"\u048a\u0000\u0000\u08df\u08e1\u0003|>\u0000\u08e0\u08de\u0001\u0000\u0000"+
		"\u0000\u08e1\u08e4\u0001\u0000\u0000\u0000\u08e2\u08e0\u0001\u0000\u0000"+
		"\u0000\u08e2\u08e3\u0001\u0000\u0000\u0000\u08e3\u08e5\u0001\u0000\u0000"+
		"\u0000\u08e4\u08e2\u0001\u0000\u0000\u0000\u08e5\u08e6\u0005\u0489\u0000"+
		"\u0000\u08e6{\u0001\u0000\u0000\u0000\u08e7\u08e8\u0005\u0083\u0000\u0000"+
		"\u08e8\u08e9\u0003\u0258\u012c\u0000\u08e9\u08ea\u0007$\u0000\u0000\u08ea"+
		"}\u0001\u0000\u0000\u0000\u08eb\u08ed\u0005f\u0000\u0000\u08ec\u08eb\u0001"+
		"\u0000\u0000\u0000\u08ec\u08ed\u0001\u0000\u0000\u0000\u08ed\u08ee\u0001"+
		"\u0000\u0000\u0000\u08ee\u08ef\u0005\u01be\u0000\u0000\u08ef\u08f0\u0005"+
		"\u0488\u0000\u0000\u08f0\u08f1\u0003\u02c4\u0162\u0000\u08f1\u08f2\u0005"+
		"\u0489\u0000\u0000\u08f2\u0901\u0001\u0000\u0000\u0000\u08f3\u08f5\u0005"+
		"f\u0000\u0000\u08f4\u08f3\u0001\u0000\u0000\u0000\u08f4\u08f5\u0001\u0000"+
		"\u0000\u0000\u08f5\u08f6\u0001\u0000\u0000\u0000\u08f6\u08fa\u0005]\u0000"+
		"\u0000\u08f7\u08f8\u0005\u0153\u0000\u0000\u08f8\u08f9\u0005\u047f\u0000"+
		"\u0000\u08f9\u08fb\u0007#\u0000\u0000\u08fa\u08f7\u0001\u0000\u0000\u0000"+
		"\u08fa\u08fb\u0001\u0000\u0000\u0000\u08fb\u08fc\u0001\u0000\u0000\u0000"+
		"\u08fc\u08fd\u0005\u0488\u0000\u0000\u08fd\u08fe\u0003\u027a\u013d\u0000"+
		"\u08fe\u08ff\u0005\u0489\u0000\u0000\u08ff\u0901\u0001\u0000\u0000\u0000"+
		"\u0900\u08ec\u0001\u0000\u0000\u0000\u0900\u08f4\u0001\u0000\u0000\u0000"+
		"\u0901\u007f\u0001\u0000\u0000\u0000\u0902\u0903\u0005\u0083\u0000\u0000"+
		"\u0903\u0904\u0003\u0258\u012c\u0000\u0904\u0905\u0005\u00bf\u0000\u0000"+
		"\u0905\u0906\u0005\u01da\u0000\u0000\u0906\u0907\u0005\u028e\u0000\u0000"+
		"\u0907\u0908\u0005\u0488\u0000\u0000\u0908\u090d\u0003\u0082A\u0000\u0909"+
		"\u090a\u0005\u048a\u0000\u0000\u090a\u090c\u0003\u0082A\u0000\u090b\u0909"+
		"\u0001\u0000\u0000\u0000\u090c\u090f\u0001\u0000\u0000\u0000\u090d\u090b"+
		"\u0001\u0000\u0000\u0000\u090d\u090e\u0001\u0000\u0000\u0000\u090e\u0910"+
		"\u0001\u0000\u0000\u0000\u090f\u090d\u0001\u0000\u0000\u0000\u0910\u0914"+
		"\u0005\u0489\u0000\u0000\u0911\u0913\u0003\u0088D\u0000\u0912\u0911\u0001"+
		"\u0000\u0000\u0000\u0913\u0916\u0001\u0000\u0000\u0000\u0914\u0912\u0001"+
		"\u0000\u0000\u0000\u0914\u0915\u0001\u0000\u0000\u0000\u0915\u0922\u0001"+
		"\u0000\u0000\u0000\u0916\u0914\u0001\u0000\u0000\u0000\u0917\u0918\u0005"+
		"\u0488\u0000\u0000\u0918\u091d\u0003\u0086C\u0000\u0919\u091a\u0005\u048a"+
		"\u0000\u0000\u091a\u091c\u0003\u0086C\u0000\u091b\u0919\u0001\u0000\u0000"+
		"\u0000\u091c\u091f\u0001\u0000\u0000\u0000\u091d\u091b\u0001\u0000\u0000"+
		"\u0000\u091d\u091e\u0001\u0000\u0000\u0000\u091e\u0920\u0001\u0000\u0000"+
		"\u0000\u091f\u091d\u0001\u0000\u0000\u0000\u0920\u0921\u0005\u0489\u0000"+
		"\u0000\u0921\u0923\u0001\u0000\u0000\u0000\u0922\u0917\u0001\u0000\u0000"+
		"\u0000\u0922\u0923\u0001\u0000\u0000\u0000\u0923\u0995\u0001\u0000\u0000"+
		"\u0000\u0924\u0925\u0005\u0083\u0000\u0000\u0925\u0926\u0003\u0258\u012c"+
		"\u0000\u0926\u0927\u0005\u00bf\u0000\u0000\u0927\u0928\u0005\u01da\u0000"+
		"\u0000\u0928\u0929\u0005\u028e\u0000\u0000\u0929\u092d\u0003\u0082A\u0000"+
		"\u092a\u092c\u0003\u0088D\u0000\u092b\u092a\u0001\u0000\u0000\u0000\u092c"+
		"\u092f\u0001\u0000\u0000\u0000\u092d\u092b\u0001\u0000\u0000\u0000\u092d"+
		"\u092e\u0001\u0000\u0000\u0000\u092e\u093b\u0001\u0000\u0000\u0000\u092f"+
		"\u092d\u0001\u0000\u0000\u0000\u0930\u0931\u0005\u0488\u0000\u0000\u0931"+
		"\u0936\u0003\u0086C\u0000\u0932\u0933\u0005\u048a\u0000\u0000\u0933\u0935"+
		"\u0003\u0086C\u0000\u0934\u0932\u0001\u0000\u0000\u0000\u0935\u0938\u0001"+
		"\u0000\u0000\u0000\u0936\u0934\u0001\u0000\u0000\u0000\u0936\u0937\u0001"+
		"\u0000\u0000\u0000\u0937\u0939\u0001\u0000\u0000\u0000\u0938\u0936\u0001"+
		"\u0000\u0000\u0000\u0939\u093a\u0005\u0489\u0000\u0000\u093a\u093c\u0001"+
		"\u0000\u0000\u0000\u093b\u0930\u0001\u0000\u0000\u0000\u093b\u093c\u0001"+
		"\u0000\u0000\u0000\u093c\u0995\u0001\u0000\u0000\u0000\u093d\u093e\u0005"+
		"\u0083\u0000\u0000\u093e\u093f\u0003\u0258\u012c\u0000\u093f\u0940\u0005"+
		"\u00bf\u0000\u0000\u0940\u0941\u0005R\u0000\u0000\u0941\u0942\u0005\u0488"+
		"\u0000\u0000\u0942\u0947\u0003\u0082A\u0000\u0943\u0944\u0005\u048a\u0000"+
		"\u0000\u0944\u0946\u0003\u0082A\u0000\u0945\u0943\u0001\u0000\u0000\u0000"+
		"\u0946\u0949\u0001\u0000\u0000\u0000\u0947\u0945\u0001\u0000\u0000\u0000"+
		"\u0947\u0948\u0001\u0000\u0000\u0000\u0948\u094a\u0001\u0000\u0000\u0000"+
		"\u0949\u0947\u0001\u0000\u0000\u0000\u094a\u094e\u0005\u0489\u0000\u0000"+
		"\u094b\u094d\u0003\u0088D\u0000\u094c\u094b\u0001\u0000\u0000\u0000\u094d"+
		"\u0950\u0001\u0000\u0000\u0000\u094e\u094c\u0001\u0000\u0000\u0000\u094e"+
		"\u094f\u0001\u0000\u0000\u0000\u094f\u095c\u0001\u0000\u0000\u0000\u0950"+
		"\u094e\u0001\u0000\u0000\u0000\u0951\u0952\u0005\u0488\u0000\u0000\u0952"+
		"\u0957\u0003\u0086C\u0000\u0953\u0954\u0005\u048a\u0000\u0000\u0954\u0956"+
		"\u0003\u0086C\u0000\u0955\u0953\u0001\u0000\u0000\u0000\u0956\u0959\u0001"+
		"\u0000\u0000\u0000\u0957\u0955\u0001\u0000\u0000\u0000\u0957\u0958\u0001"+
		"\u0000\u0000\u0000\u0958\u095a\u0001\u0000\u0000\u0000\u0959\u0957\u0001"+
		"\u0000\u0000\u0000\u095a\u095b\u0005\u0489\u0000\u0000\u095b\u095d\u0001"+
		"\u0000\u0000\u0000\u095c\u0951\u0001\u0000\u0000\u0000\u095c\u095d\u0001"+
		"\u0000\u0000\u0000\u095d\u0995\u0001\u0000\u0000\u0000\u095e\u095f\u0005"+
		"\u0083\u0000\u0000\u095f\u0960\u0003\u0258\u012c\u0000\u0960\u0961\u0005"+
		"\u00bf\u0000\u0000\u0961\u0962\u0005R\u0000\u0000\u0962\u0963\u0005\u0488"+
		"\u0000\u0000\u0963\u0968\u0003\u0084B\u0000\u0964\u0965\u0005\u048a\u0000"+
		"\u0000\u0965\u0967\u0003\u0084B\u0000\u0966\u0964\u0001\u0000\u0000\u0000"+
		"\u0967\u096a\u0001\u0000\u0000\u0000\u0968\u0966\u0001\u0000\u0000\u0000"+
		"\u0968\u0969\u0001\u0000\u0000\u0000\u0969\u096b\u0001\u0000\u0000\u0000"+
		"\u096a\u0968\u0001\u0000\u0000\u0000\u096b\u096f\u0005\u0489\u0000\u0000"+
		"\u096c\u096e\u0003\u0088D\u0000\u096d\u096c\u0001\u0000\u0000\u0000\u096e"+
		"\u0971\u0001\u0000\u0000\u0000\u096f\u096d\u0001\u0000\u0000\u0000\u096f"+
		"\u0970\u0001\u0000\u0000\u0000\u0970\u097d\u0001\u0000\u0000\u0000\u0971"+
		"\u096f\u0001\u0000\u0000\u0000\u0972\u0973\u0005\u0488\u0000\u0000\u0973"+
		"\u0978\u0003\u0086C\u0000\u0974\u0975\u0005\u048a\u0000\u0000\u0975\u0977"+
		"\u0003\u0086C\u0000\u0976\u0974\u0001\u0000\u0000\u0000\u0977\u097a\u0001"+
		"\u0000\u0000\u0000\u0978\u0976\u0001\u0000\u0000\u0000\u0978\u0979\u0001"+
		"\u0000\u0000\u0000\u0979\u097b\u0001\u0000\u0000\u0000\u097a\u0978\u0001"+
		"\u0000\u0000\u0000\u097b\u097c\u0005\u0489\u0000\u0000\u097c\u097e\u0001"+
		"\u0000\u0000\u0000\u097d\u0972\u0001\u0000\u0000\u0000\u097d\u097e\u0001"+
		"\u0000\u0000\u0000\u097e\u0995\u0001\u0000\u0000\u0000\u097f\u0980\u0005"+
		"\u0083\u0000\u0000\u0980\u0984\u0003\u0258\u012c\u0000\u0981\u0983\u0003"+
		"\u0088D\u0000\u0982\u0981\u0001\u0000\u0000\u0000\u0983\u0986\u0001\u0000"+
		"\u0000\u0000\u0984\u0982\u0001\u0000\u0000\u0000\u0984\u0985\u0001\u0000"+
		"\u0000\u0000\u0985\u0992\u0001\u0000\u0000\u0000\u0986\u0984\u0001\u0000"+
		"\u0000\u0000\u0987\u0988\u0005\u0488\u0000\u0000\u0988\u098d\u0003\u0086"+
		"C\u0000\u0989\u098a\u0005\u048a\u0000\u0000\u098a\u098c\u0003\u0086C\u0000"+
		"\u098b\u0989\u0001\u0000\u0000\u0000\u098c\u098f\u0001\u0000\u0000\u0000"+
		"\u098d\u098b\u0001\u0000\u0000\u0000\u098d\u098e\u0001\u0000\u0000\u0000"+
		"\u098e\u0990\u0001\u0000\u0000\u0000\u098f\u098d\u0001\u0000\u0000\u0000"+
		"\u0990\u0991\u0005\u0489\u0000\u0000\u0991\u0993\u0001\u0000\u0000\u0000"+
		"\u0992\u0987\u0001\u0000\u0000\u0000\u0992\u0993\u0001\u0000\u0000\u0000"+
		"\u0993\u0995\u0001\u0000\u0000\u0000\u0994\u0902\u0001\u0000\u0000\u0000"+
		"\u0994\u0924\u0001\u0000\u0000\u0000\u0994\u093d\u0001\u0000\u0000\u0000"+
		"\u0994\u095e\u0001\u0000\u0000\u0000\u0994\u097f\u0001\u0000\u0000\u0000"+
		"\u0995\u0081\u0001\u0000\u0000\u0000\u0996\u099a\u0003\u026a\u0135\u0000"+
		"\u0997\u099a\u0003\u02c4\u0162\u0000\u0998\u099a\u0005p\u0000\u0000\u0999"+
		"\u0996\u0001\u0000\u0000\u0000\u0999\u0997\u0001\u0000\u0000\u0000\u0999"+
		"\u0998\u0001\u0000\u0000\u0000\u099a\u0083\u0001\u0000\u0000\u0000\u099b"+
		"\u099c\u0005\u0488\u0000\u0000\u099c\u099f\u0003\u0082A\u0000\u099d\u099e"+
		"\u0005\u048a\u0000\u0000\u099e\u09a0\u0003\u0082A\u0000\u099f\u099d\u0001"+
		"\u0000\u0000\u0000\u09a0\u09a1\u0001\u0000\u0000\u0000\u09a1\u099f\u0001"+
		"\u0000\u0000\u0000\u09a1\u09a2\u0001\u0000\u0000\u0000\u09a2\u09a3\u0001"+
		"\u0000\u0000\u0000\u09a3\u09a4\u0005\u0489\u0000\u0000\u09a4\u0085\u0001"+
		"\u0000\u0000\u0000\u09a5\u09a6\u0005\u0284\u0000\u0000\u09a6\u09aa\u0003"+
		"\u0258\u012c\u0000\u09a7\u09a9\u0003\u0088D\u0000\u09a8\u09a7\u0001\u0000"+
		"\u0000\u0000\u09a9\u09ac\u0001\u0000\u0000\u0000\u09aa\u09a8\u0001\u0000"+
		"\u0000\u0000\u09aa\u09ab\u0001\u0000\u0000\u0000\u09ab\u0087\u0001\u0000"+
		"\u0000\u0000\u09ac\u09aa\u0001\u0000\u0000\u0000\u09ad\u09af\u0005+\u0000"+
		"\u0000\u09ae\u09ad\u0001\u0000\u0000\u0000\u09ae\u09af\u0001\u0000\u0000"+
		"\u0000\u09af\u09b1\u0001\u0000\u0000\u0000\u09b0\u09b2\u0005\u027f\u0000"+
		"\u0000\u09b1\u09b0\u0001\u0000\u0000\u0000\u09b1\u09b2\u0001\u0000\u0000"+
		"\u0000\u09b2\u09b3\u0001\u0000\u0000\u0000\u09b3\u09b5\u0005\u019c\u0000"+
		"\u0000\u09b4\u09b6\u0005\u047f\u0000\u0000\u09b5\u09b4\u0001\u0000\u0000"+
		"\u0000\u09b5\u09b6\u0001\u0000\u0000\u0000\u09b6\u09b7\u0001\u0000\u0000"+
		"\u0000\u09b7\u09de\u0003\u024a\u0125\u0000\u09b8\u09ba\u0005\u0173\u0000"+
		"\u0000\u09b9\u09bb\u0005\u047f\u0000\u0000\u09ba\u09b9\u0001\u0000\u0000"+
		"\u0000\u09ba\u09bb\u0001\u0000\u0000\u0000\u09bb\u09bc\u0001\u0000\u0000"+
		"\u0000\u09bc\u09de\u0005\u0497\u0000\u0000\u09bd\u09be\u0005\u0187\u0000"+
		"\u0000\u09be\u09c0\u0005\u018e\u0000\u0000\u09bf\u09c1\u0005\u047f\u0000"+
		"\u0000\u09c0\u09bf\u0001\u0000\u0000\u0000\u09c0\u09c1\u0001\u0000\u0000"+
		"\u0000\u09c1\u09c2\u0001\u0000\u0000\u0000\u09c2\u09de\u0005\u0497\u0000"+
		"\u0000\u09c3\u09c4\u0005S\u0000\u0000\u09c4\u09c6\u0005\u018e\u0000\u0000"+
		"\u09c5\u09c7\u0005\u047f\u0000\u0000\u09c6\u09c5\u0001\u0000\u0000\u0000"+
		"\u09c6\u09c7\u0001\u0000\u0000\u0000\u09c7\u09c8\u0001\u0000\u0000\u0000"+
		"\u09c8\u09de\u0005\u0497\u0000\u0000\u09c9\u09cb\u0005\u01f7\u0000\u0000"+
		"\u09ca\u09cc\u0005\u047f\u0000\u0000\u09cb\u09ca\u0001\u0000\u0000\u0000"+
		"\u09cb\u09cc\u0001\u0000\u0000\u0000\u09cc\u09cd\u0001\u0000\u0000\u0000"+
		"\u09cd\u09de\u0003\u025e\u012f\u0000\u09ce\u09d0\u0005\u0201\u0000\u0000"+
		"\u09cf\u09d1\u0005\u047f\u0000\u0000\u09d0\u09cf\u0001\u0000\u0000\u0000"+
		"\u09d0\u09d1\u0001\u0000\u0000\u0000\u09d1\u09d2\u0001\u0000\u0000\u0000"+
		"\u09d2\u09de\u0003\u025e\u012f\u0000\u09d3\u09d5\u0005\u028a\u0000\u0000"+
		"\u09d4\u09d6\u0005\u047f\u0000\u0000\u09d5\u09d4\u0001\u0000\u0000\u0000"+
		"\u09d5\u09d6\u0001\u0000\u0000\u0000\u09d6\u09d7\u0001\u0000\u0000\u0000"+
		"\u09d7\u09de\u0003\u0258\u012c\u0000\u09d8\u09da\u0005\u0213\u0000\u0000"+
		"\u09d9\u09db\u0005\u047f\u0000\u0000\u09da\u09d9\u0001\u0000\u0000\u0000"+
		"\u09da\u09db\u0001\u0000\u0000\u0000\u09db\u09dc\u0001\u0000\u0000\u0000"+
		"\u09dc\u09de\u0003\u0258\u012c\u0000\u09dd\u09ae\u0001\u0000\u0000\u0000"+
		"\u09dd\u09b8\u0001\u0000\u0000\u0000\u09dd\u09bd\u0001\u0000\u0000\u0000"+
		"\u09dd\u09c3\u0001\u0000\u0000\u0000\u09dd\u09c9\u0001\u0000\u0000\u0000"+
		"\u09dd\u09ce\u0001\u0000\u0000\u0000\u09dd\u09d3\u0001\u0000\u0000\u0000"+
		"\u09dd\u09d8\u0001\u0000\u0000\u0000\u09de\u0089\u0001\u0000\u0000\u0000"+
		"\u09df\u09e0\u0005\u0007\u0000\u0000\u09e0\u09e2\u0007\u0000\u0000\u0000"+
		"\u09e1\u09e3\u0003\u0258\u012c\u0000\u09e2\u09e1\u0001\u0000\u0000\u0000"+
		"\u09e2\u09e3\u0001\u0000\u0000\u0000\u09e3\u09e5\u0001\u0000\u0000\u0000"+
		"\u09e4\u09e6\u0003@ \u0000\u09e5\u09e4\u0001\u0000\u0000\u0000\u09e6\u09e7"+
		"\u0001\u0000\u0000\u0000\u09e7\u09e5\u0001\u0000\u0000\u0000\u09e7\u09e8"+
		"\u0001\u0000\u0000\u0000\u09e8\u09f2\u0001\u0000\u0000\u0000\u09e9\u09ea"+
		"\u0005\u0007\u0000\u0000\u09ea\u09eb\u0007\u0000\u0000\u0000\u09eb\u09ec"+
		"\u0003\u0258\u012c\u0000\u09ec\u09ed\u0005\u029b\u0000\u0000\u09ed\u09ee"+
		"\u0005\u0187\u0000\u0000\u09ee\u09ef\u0005\u018e\u0000\u0000\u09ef\u09f0"+
		"\u0005\u0207\u0000\u0000\u09f0\u09f2\u0001\u0000\u0000\u0000\u09f1\u09df"+
		"\u0001\u0000\u0000\u0000\u09f1\u09e9\u0001\u0000\u0000\u0000\u09f2\u008b"+
		"\u0001\u0000\u0000\u0000\u09f3\u09f5\u0005\u0007\u0000\u0000\u09f4\u09f6"+
		"\u0003F#\u0000\u09f5\u09f4\u0001\u0000\u0000\u0000\u09f5\u09f6\u0001\u0000"+
		"\u0000\u0000\u09f6\u09f7\u0001\u0000\u0000\u0000\u09f7\u09f8\u0005\u01a2"+
		"\u0000\u0000\u09f8\u09fc\u0003\u0234\u011a\u0000\u09f9\u09fa\u0005x\u0000"+
		"\u0000\u09fa\u09fb\u0005\u0260\u0000\u0000\u09fb\u09fd\u0003H$\u0000\u09fc"+
		"\u09f9\u0001\u0000\u0000\u0000\u09fc\u09fd\u0001\u0000\u0000\u0000\u09fd"+
		"\u0a04\u0001\u0000\u0000\u0000\u09fe\u09ff\u0005x\u0000\u0000\u09ff\u0a01"+
		"\u0005\u0176\u0000\u0000\u0a00\u0a02\u0005t\u0000\u0000\u0a01\u0a00\u0001"+
		"\u0000\u0000\u0000\u0a01\u0a02\u0001\u0000\u0000\u0000\u0a02\u0a03\u0001"+
		"\u0000\u0000\u0000\u0a03\u0a05\u0005\u0234\u0000\u0000\u0a04\u09fe\u0001"+
		"\u0000\u0000\u0000\u0a04\u0a05\u0001\u0000\u0000\u0000\u0a05\u0a09\u0001"+
		"\u0000\u0000\u0000\u0a06\u0a07\u0005\u008d\u0000\u0000\u0a07\u0a08\u0005"+
		"\u00b2\u0000\u0000\u0a08\u0a0a\u0003\u0234\u011a\u0000\u0a09\u0a06\u0001"+
		"\u0000\u0000\u0000\u0a09\u0a0a\u0001\u0000\u0000\u0000\u0a0a\u0a0c\u0001"+
		"\u0000\u0000\u0000\u0a0b\u0a0d\u0003P(\u0000\u0a0c\u0a0b\u0001\u0000\u0000"+
		"\u0000\u0a0c\u0a0d\u0001\u0000\u0000\u0000\u0a0d\u0a10\u0001\u0000\u0000"+
		"\u0000\u0a0e\u0a0f\u0005\u0173\u0000\u0000\u0a0f\u0a11\u0005\u0497\u0000"+
		"\u0000\u0a10\u0a0e\u0001\u0000\u0000\u0000\u0a10\u0a11\u0001\u0000\u0000"+
		"\u0000\u0a11\u0a14\u0001\u0000\u0000\u0000\u0a12\u0a13\u0005\u0192\u0000"+
		"\u0000\u0a13\u0a15\u0003\u0196\u00cb\u0000\u0a14\u0a12\u0001\u0000\u0000"+
		"\u0000\u0a14\u0a15\u0001\u0000\u0000\u0000\u0a15\u008d\u0001\u0000\u0000"+
		"\u0000\u0a16\u0a17\u0005\u0007\u0000\u0000\u0a17\u0a18\u0005\u01b8\u0000"+
		"\u0000\u0a18\u0a1c\u0003\u0234\u011a\u0000\u0a19\u0a1b\u0003Z-\u0000\u0a1a"+
		"\u0a19\u0001\u0000\u0000\u0000\u0a1b\u0a1e\u0001\u0000\u0000\u0000\u0a1c"+
		"\u0a1a\u0001\u0000\u0000\u0000\u0a1c\u0a1d\u0001\u0000\u0000\u0000\u0a1d"+
		"\u008f\u0001\u0000\u0000\u0000\u0a1e\u0a1c\u0001\u0000\u0000\u0000\u0a1f"+
		"\u0a20\u0005\u0007\u0000\u0000\u0a20\u0a21\u0005\u01cc\u0000\u0000\u0a21"+
		"\u0a22\u0005\u025a\u0000\u0000\u0a22\u0a23\u0005\u031f\u0000\u0000\u0a23"+
		"\u0a24\u0005\u01e0\u0000\u0000\u0a24\u0a25\u0005]\u0000\u0000\u0a25\u0091"+
		"\u0001\u0000\u0000\u0000\u0a26\u0a27\u0005\u0007\u0000\u0000\u0a27\u0a28"+
		"\u0005\u01de\u0000\u0000\u0a28\u0a29\u0005J\u0000\u0000\u0a29\u0a2a\u0003"+
		"\u0258\u012c\u0000\u0a2a\u0a2b\u0005\u0005\u0000\u0000\u0a2b\u0a2c\u0005"+
		"\u0296\u0000\u0000\u0a2c\u0a32\u0005\u0497\u0000\u0000\u0a2d\u0a2f\u0005"+
		"\u01c8\u0000\u0000\u0a2e\u0a30\u0005\u047f\u0000\u0000\u0a2f\u0a2e\u0001"+
		"\u0000\u0000\u0000\u0a2f\u0a30\u0001\u0000\u0000\u0000\u0a30\u0a31\u0001"+
		"\u0000\u0000\u0000\u0a31\u0a33\u0003\u0260\u0130\u0000\u0a32\u0a2d\u0001"+
		"\u0000\u0000\u0000\u0a32\u0a33\u0001\u0000\u0000\u0000\u0a33\u0a35\u0001"+
		"\u0000\u0000\u0000\u0a34\u0a36\u0005\u02a5\u0000\u0000\u0a35\u0a34\u0001"+
		"\u0000\u0000\u0000\u0a35\u0a36\u0001\u0000\u0000\u0000\u0a36\u0a37\u0001"+
		"\u0000\u0000\u0000\u0a37\u0a39\u0005\u019c\u0000\u0000\u0a38\u0a3a\u0005"+
		"\u047f\u0000\u0000\u0a39\u0a38\u0001\u0000\u0000\u0000\u0a39\u0a3a\u0001"+
		"\u0000\u0000\u0000\u0a3a\u0a3b\u0001\u0000\u0000\u0000\u0a3b\u0a3c\u0003"+
		"\u024a\u0125\u0000\u0a3c\u0093\u0001\u0000\u0000\u0000\u0a3d\u0a3e\u0005"+
		"\u0007\u0000\u0000\u0a3e\u0a3f\u0005\u0085\u0000\u0000\u0a3f\u0a43\u0003"+
		"\u0234\u011a\u0000\u0a40\u0a42\u0003Z-\u0000\u0a41\u0a40\u0001\u0000\u0000"+
		"\u0000\u0a42\u0a45\u0001\u0000\u0000\u0000\u0a43\u0a41\u0001\u0000\u0000"+
		"\u0000\u0a43\u0a44\u0001\u0000\u0000\u0000\u0a44\u0095\u0001\u0000\u0000"+
		"\u0000\u0a45\u0a43\u0001\u0000\u0000\u0000\u0a46\u0a47\u0005\u0007\u0000"+
		"\u0000\u0a47\u0a48\u0005\u0263\u0000\u0000\u0a48\u0a49\u0003\u0258\u012c"+
		"\u0000\u0a49\u0a4a\u0005\u0220\u0000\u0000\u0a4a\u0a4b\u0005\u0488\u0000"+
		"\u0000\u0a4b\u0a50\u0003\\.\u0000\u0a4c\u0a4d\u0005\u048a\u0000\u0000"+
		"\u0a4d\u0a4f\u0003\\.\u0000\u0a4e\u0a4c\u0001\u0000\u0000\u0000\u0a4f"+
		"\u0a52\u0001\u0000\u0000\u0000\u0a50\u0a4e\u0001\u0000\u0000\u0000\u0a50"+
		"\u0a51\u0001\u0000\u0000\u0000\u0a51\u0a53\u0001\u0000\u0000\u0000\u0a52"+
		"\u0a50\u0001\u0000\u0000\u0000\u0a53\u0a54\u0005\u0489\u0000\u0000\u0a54"+
		"\u0097\u0001\u0000\u0000\u0000\u0a55\u0a57\u0005\u0007\u0000\u0000\u0a56"+
		"\u0a58\u0007\u0001\u0000\u0000\u0a57\u0a56\u0001\u0000\u0000\u0000\u0a57"+
		"\u0a58\u0001\u0000\u0000\u0000\u0a58\u0a5a\u0001\u0000\u0000\u0000\u0a59"+
		"\u0a5b\u0005P\u0000\u0000\u0a5a\u0a59\u0001\u0000\u0000\u0000\u0a5a\u0a5b"+
		"\u0001\u0000\u0000\u0000\u0a5b\u0a5c\u0001\u0000\u0000\u0000\u0a5c\u0a5e"+
		"\u0005\u00af\u0000\u0000\u0a5d\u0a5f\u0003\u0292\u0149\u0000\u0a5e\u0a5d"+
		"\u0001\u0000\u0000\u0000\u0a5e\u0a5f\u0001\u0000\u0000\u0000\u0a5f\u0a60"+
		"\u0001\u0000\u0000\u0000\u0a60\u0a62\u0003\u0236\u011b\u0000\u0a61\u0a63"+
		"\u0003\u0298\u014c\u0000\u0a62\u0a61\u0001\u0000\u0000\u0000\u0a62\u0a63"+
		"\u0001\u0000\u0000\u0000\u0a63\u0a6c\u0001\u0000\u0000\u0000\u0a64\u0a69"+
		"\u0003\u00a0P\u0000\u0a65\u0a66\u0005\u048a\u0000\u0000\u0a66\u0a68\u0003"+
		"\u00a0P\u0000\u0a67\u0a65\u0001\u0000\u0000\u0000\u0a68\u0a6b\u0001\u0000"+
		"\u0000\u0000\u0a69\u0a67\u0001\u0000\u0000\u0000\u0a69\u0a6a\u0001\u0000"+
		"\u0000\u0000\u0a6a\u0a6d\u0001\u0000\u0000\u0000\u0a6b\u0a69\u0001\u0000"+
		"\u0000\u0000\u0a6c\u0a64\u0001\u0000\u0000\u0000\u0a6c\u0a6d\u0001\u0000"+
		"\u0000\u0000\u0a6d\u0a6f\u0001\u0000\u0000\u0000\u0a6e\u0a70\u0003v;\u0000"+
		"\u0a6f\u0a6e\u0001\u0000\u0000\u0000\u0a6f\u0a70\u0001\u0000\u0000\u0000"+
		"\u0a70\u0099\u0001\u0000\u0000\u0000\u0a71\u0a72\u0005\u0007\u0000\u0000"+
		"\u0a72\u0a73\u0005\u028a\u0000\u0000\u0a73\u0a74\u0003\u0258\u012c\u0000"+
		"\u0a74\u0a75\u0007%\u0000\u0000\u0a75\u0a76\u0005\u0188\u0000\u0000\u0a76"+
		"\u0a7a\u0005\u0497\u0000\u0000\u0a77\u0a78\u0005\u01c8\u0000\u0000\u0a78"+
		"\u0a79\u0005\u047f\u0000\u0000\u0a79\u0a7b\u0003\u0260\u0130\u0000\u0a7a"+
		"\u0a77\u0001\u0000\u0000\u0000\u0a7a\u0a7b\u0001\u0000\u0000\u0000\u0a7b"+
		"\u0a7d\u0001\u0000\u0000\u0000\u0a7c\u0a7e\u0005\u02a5\u0000\u0000\u0a7d"+
		"\u0a7c\u0001\u0000\u0000\u0000\u0a7d\u0a7e\u0001\u0000\u0000\u0000\u0a7e"+
		"\u0a7f\u0001\u0000\u0000\u0000\u0a7f\u0a81\u0005\u019c\u0000\u0000\u0a80"+
		"\u0a82\u0005\u047f\u0000\u0000\u0a81\u0a80\u0001\u0000\u0000\u0000\u0a81"+
		"\u0a82\u0001\u0000\u0000\u0000\u0a82\u0a83\u0001\u0000\u0000\u0000\u0a83"+
		"\u0a84\u0003\u024a\u0125\u0000\u0a84\u009b\u0001\u0000\u0000\u0000\u0a85"+
		"\u0a89\u0005\u0007\u0000\u0000\u0a86\u0a87\u0005\u0153\u0000\u0000\u0a87"+
		"\u0a88\u0005\u047f\u0000\u0000\u0a88\u0a8a\u0007\n\u0000\u0000\u0a89\u0a86"+
		"\u0001\u0000\u0000\u0000\u0a89\u0a8a\u0001\u0000\u0000\u0000\u0a8a\u0a8c"+
		"\u0001\u0000\u0000\u0000\u0a8b\u0a8d\u0003F#\u0000\u0a8c\u0a8b\u0001\u0000"+
		"\u0000\u0000\u0a8c\u0a8d\u0001\u0000\u0000\u0000\u0a8d\u0a91\u0001\u0000"+
		"\u0000\u0000\u0a8e\u0a8f\u0005\u00a2\u0000\u0000\u0a8f\u0a90\u0005\u0261"+
		"\u0000\u0000\u0a90\u0a92\u0007\u000b\u0000\u0000\u0a91\u0a8e\u0001\u0000"+
		"\u0000\u0000\u0a91\u0a92\u0001\u0000\u0000\u0000\u0a92\u0a93\u0001\u0000"+
		"\u0000\u0000\u0a93\u0a94\u0005\u02a2\u0000\u0000\u0a94\u0a99\u0003\u0234"+
		"\u011a\u0000\u0a95\u0a96\u0005\u0488\u0000\u0000\u0a96\u0a97\u0003\u027a"+
		"\u013d\u0000\u0a97\u0a98\u0005\u0489\u0000\u0000\u0a98\u0a9a\u0001\u0000"+
		"\u0000\u0000\u0a99\u0a95\u0001\u0000\u0000\u0000\u0a99\u0a9a\u0001\u0000"+
		"\u0000\u0000\u0a9a\u0a9b\u0001\u0000\u0000\u0000\u0a9b\u0a9c\u0005\f\u0000"+
		"\u0000\u0a9c\u0aa3\u0003\u00d6k\u0000\u0a9d\u0a9f\u0005\u00c3\u0000\u0000"+
		"\u0a9e\u0aa0\u0007\f\u0000\u0000\u0a9f\u0a9e\u0001\u0000\u0000\u0000\u0a9f"+
		"\u0aa0\u0001\u0000\u0000\u0000\u0aa0\u0aa1\u0001\u0000\u0000\u0000\u0aa1"+
		"\u0aa2\u0005\u001b\u0000\u0000\u0aa2\u0aa4\u0005z\u0000\u0000\u0aa3\u0a9d"+
		"\u0001\u0000\u0000\u0000\u0aa3\u0aa4\u0001\u0000\u0000\u0000\u0aa4\u009d"+
		"\u0001\u0000\u0000\u0000\u0aa5\u0aa6\u0005\u0007\u0000\u0000\u0aa6\u0aa8"+
		"\u0005\u0262\u0000\u0000\u0aa7\u0aa9\u0003\u0292\u0149\u0000\u0aa8\u0aa7"+
		"\u0001\u0000\u0000\u0000\u0aa8\u0aa9\u0001\u0000\u0000\u0000\u0aa9\u0aaa"+
		"\u0001\u0000\u0000\u0000\u0aaa\u0aac\u0003\u0234\u011a\u0000\u0aab\u0aad"+
		"\u0003>\u001f\u0000\u0aac\u0aab\u0001\u0000\u0000\u0000\u0aad\u0aae\u0001"+
		"\u0000\u0000\u0000\u0aae\u0aac\u0001\u0000\u0000\u0000\u0aae\u0aaf\u0001"+
		"\u0000\u0000\u0000\u0aaf\u009f\u0001\u0000\u0000\u0000\u0ab0\u0ab7\u0003"+
		"p8\u0000\u0ab1\u0ab3\u0005\u048a\u0000\u0000\u0ab2\u0ab1\u0001\u0000\u0000"+
		"\u0000\u0ab2\u0ab3\u0001\u0000\u0000\u0000\u0ab3\u0ab4\u0001\u0000\u0000"+
		"\u0000\u0ab4\u0ab6\u0003p8\u0000\u0ab5\u0ab2\u0001\u0000\u0000\u0000\u0ab6"+
		"\u0ab9\u0001\u0000\u0000\u0000\u0ab7\u0ab5\u0001\u0000\u0000\u0000\u0ab7"+
		"\u0ab8\u0001\u0000\u0000\u0000\u0ab8\u0c2b\u0001\u0000\u0000\u0000\u0ab9"+
		"\u0ab7\u0001\u0000\u0000\u0000\u0aba\u0abc\u0005\u0005\u0000\u0000\u0abb"+
		"\u0abd\u0005\u001d\u0000\u0000\u0abc\u0abb\u0001\u0000\u0000\u0000\u0abc"+
		"\u0abd\u0001\u0000\u0000\u0000\u0abd\u0abf\u0001\u0000\u0000\u0000\u0abe"+
		"\u0ac0\u0003\u0294\u014a\u0000\u0abf\u0abe\u0001\u0000\u0000\u0000\u0abf"+
		"\u0ac0\u0001\u0000\u0000\u0000\u0ac0\u0ac1\u0001\u0000\u0000\u0000\u0ac1"+
		"\u0ac2\u0003\u0258\u012c\u0000\u0ac2\u0ac6\u0003b1\u0000\u0ac3\u0ac7\u0005"+
		"\u01b1\u0000\u0000\u0ac4\u0ac5\u0005\u0151\u0000\u0000\u0ac5\u0ac7\u0003"+
		"\u0258\u012c\u0000\u0ac6\u0ac3\u0001\u0000\u0000\u0000\u0ac6\u0ac4\u0001"+
		"\u0000\u0000\u0000\u0ac6\u0ac7\u0001\u0000\u0000\u0000\u0ac7\u0c2b\u0001"+
		"\u0000\u0000\u0000\u0ac8\u0aca\u0005\u0005\u0000\u0000\u0ac9\u0acb\u0005"+
		"\u001d\u0000\u0000\u0aca\u0ac9\u0001\u0000\u0000\u0000\u0aca\u0acb\u0001"+
		"\u0000\u0000\u0000\u0acb\u0acd\u0001\u0000\u0000\u0000\u0acc\u0ace\u0003"+
		"\u0294\u014a\u0000\u0acd\u0acc\u0001\u0000\u0000\u0000\u0acd\u0ace\u0001"+
		"\u0000\u0000\u0000\u0ace\u0acf\u0001\u0000\u0000\u0000\u0acf\u0ad0\u0005"+
		"\u0488\u0000\u0000\u0ad0\u0ad1\u0003\u0258\u012c\u0000\u0ad1\u0ad8\u0003"+
		"b1\u0000\u0ad2\u0ad3\u0005\u048a\u0000\u0000\u0ad3\u0ad4\u0003\u0258\u012c"+
		"\u0000\u0ad4\u0ad5\u0003b1\u0000\u0ad5\u0ad7\u0001\u0000\u0000\u0000\u0ad6"+
		"\u0ad2\u0001\u0000\u0000\u0000\u0ad7\u0ada\u0001\u0000\u0000\u0000\u0ad8"+
		"\u0ad6\u0001\u0000\u0000\u0000\u0ad8\u0ad9\u0001\u0000\u0000\u0000\u0ad9"+
		"\u0adb\u0001\u0000\u0000\u0000\u0ada\u0ad8\u0001\u0000\u0000\u0000\u0adb"+
		"\u0adc\u0005\u0489\u0000\u0000\u0adc\u0c2b\u0001\u0000\u0000\u0000\u0add"+
		"\u0ade\u0005\u0005\u0000\u0000\u0ade\u0ae0\u0007\u0017\u0000\u0000\u0adf"+
		"\u0ae1\u0003\u0294\u014a\u0000\u0ae0\u0adf\u0001\u0000\u0000\u0000\u0ae0"+
		"\u0ae1\u0001\u0000\u0000\u0000\u0ae1\u0ae3\u0001\u0000\u0000\u0000\u0ae2"+
		"\u0ae4\u0003\u0258\u012c\u0000\u0ae3\u0ae2\u0001\u0000\u0000\u0000\u0ae3"+
		"\u0ae4\u0001\u0000\u0000\u0000\u0ae4\u0ae6\u0001\u0000\u0000\u0000\u0ae5"+
		"\u0ae7\u0003R)\u0000\u0ae6\u0ae5\u0001\u0000\u0000\u0000\u0ae6\u0ae7\u0001"+
		"\u0000\u0000\u0000\u0ae7\u0ae8\u0001\u0000\u0000\u0000\u0ae8\u0aec\u0003"+
		"\u0280\u0140\u0000\u0ae9\u0aeb\u0003T*\u0000\u0aea\u0ae9\u0001\u0000\u0000"+
		"\u0000\u0aeb\u0aee\u0001\u0000\u0000\u0000\u0aec\u0aea\u0001\u0000\u0000"+
		"\u0000\u0aec\u0aed\u0001\u0000\u0000\u0000\u0aed\u0c2b\u0001\u0000\u0000"+
		"\u0000\u0aee\u0aec\u0001\u0000\u0000\u0000\u0aef\u0af4\u0005\u0005\u0000"+
		"\u0000\u0af0\u0af2\u0005\u001f\u0000\u0000\u0af1\u0af3\u0003\u0258\u012c"+
		"\u0000\u0af2\u0af1\u0001\u0000\u0000\u0000\u0af2\u0af3\u0001\u0000\u0000"+
		"\u0000\u0af3\u0af5\u0001\u0000\u0000\u0000\u0af4\u0af0\u0001\u0000\u0000"+
		"\u0000\u0af4\u0af5\u0001\u0000\u0000\u0000\u0af5\u0af6\u0001\u0000\u0000"+
		"\u0000\u0af6\u0af7\u0005\u0084\u0000\u0000\u0af7\u0af9\u0005]\u0000\u0000"+
		"\u0af8\u0afa\u0003\u0258\u012c\u0000\u0af9\u0af8\u0001\u0000\u0000\u0000"+
		"\u0af9\u0afa\u0001\u0000\u0000\u0000\u0afa\u0afc\u0001\u0000\u0000\u0000"+
		"\u0afb\u0afd\u0003R)\u0000\u0afc\u0afb\u0001\u0000\u0000\u0000\u0afc\u0afd"+
		"\u0001\u0000\u0000\u0000\u0afd\u0afe\u0001\u0000\u0000\u0000\u0afe\u0b02"+
		"\u0003\u0280\u0140\u0000\u0aff\u0b01\u0003T*\u0000\u0b00\u0aff\u0001\u0000"+
		"\u0000\u0000\u0b01\u0b04\u0001\u0000\u0000\u0000\u0b02\u0b00\u0001\u0000"+
		"\u0000\u0000\u0b02\u0b03\u0001\u0000\u0000\u0000\u0b03\u0c2b\u0001\u0000"+
		"\u0000\u0000\u0b04\u0b02\u0001\u0000\u0000\u0000\u0b05\u0b0a\u0005\u0005"+
		"\u0000\u0000\u0b06\u0b08\u0005\u001f\u0000\u0000\u0b07\u0b09\u0003\u0258"+
		"\u012c\u0000\u0b08\u0b07\u0001\u0000\u0000\u0000\u0b08\u0b09\u0001\u0000"+
		"\u0000\u0000\u0b09\u0b0b\u0001\u0000\u0000\u0000\u0b0a\u0b06\u0001\u0000"+
		"\u0000\u0000\u0b0a\u0b0b\u0001\u0000\u0000\u0000\u0b0b\u0b0c\u0001\u0000"+
		"\u0000\u0000\u0b0c\u0b0e\u0005\u00b8\u0000\u0000\u0b0d\u0b0f\u0003\u0294"+
		"\u014a\u0000\u0b0e\u0b0d\u0001\u0000\u0000\u0000\u0b0e\u0b0f\u0001\u0000"+
		"\u0000\u0000\u0b0f\u0b11\u0001\u0000\u0000\u0000\u0b10\u0b12\u0007\u0017"+
		"\u0000\u0000\u0b11\u0b10\u0001\u0000\u0000\u0000\u0b11\u0b12\u0001\u0000"+
		"\u0000\u0000\u0b12\u0b14\u0001\u0000\u0000\u0000\u0b13\u0b15\u0003\u0258"+
		"\u012c\u0000\u0b14\u0b13\u0001\u0000\u0000\u0000\u0b14\u0b15\u0001\u0000"+
		"\u0000\u0000\u0b15\u0b17\u0001\u0000\u0000\u0000\u0b16\u0b18\u0003R)\u0000"+
		"\u0b17\u0b16\u0001\u0000\u0000\u0000\u0b17\u0b18\u0001\u0000\u0000\u0000"+
		"\u0b18\u0b19\u0001\u0000\u0000\u0000\u0b19\u0b1d\u0003\u0280\u0140\u0000"+
		"\u0b1a\u0b1c\u0003T*\u0000\u0b1b\u0b1a\u0001\u0000\u0000\u0000\u0b1c\u0b1f"+
		"\u0001\u0000\u0000\u0000\u0b1d\u0b1b\u0001\u0000\u0000\u0000\u0b1d\u0b1e"+
		"\u0001\u0000\u0000\u0000\u0b1e\u0c2b\u0001\u0000\u0000\u0000\u0b1f\u0b1d"+
		"\u0001\u0000\u0000\u0000\u0b20\u0b21\u0005\u0005\u0000\u0000\u0b21\u0b23"+
		"\u0007\u0019\u0000\u0000\u0b22\u0b24\u0007\u0017\u0000\u0000\u0b23\u0b22"+
		"\u0001\u0000\u0000\u0000\u0b23\u0b24\u0001\u0000\u0000\u0000\u0b24\u0b26"+
		"\u0001\u0000\u0000\u0000\u0b25\u0b27\u0003\u0258\u012c\u0000\u0b26\u0b25"+
		"\u0001\u0000\u0000\u0000\u0b26\u0b27\u0001\u0000\u0000\u0000\u0b27\u0b28"+
		"\u0001\u0000\u0000\u0000\u0b28\u0b2c\u0003\u0280\u0140\u0000\u0b29\u0b2b"+
		"\u0003T*\u0000\u0b2a\u0b29\u0001\u0000\u0000\u0000\u0b2b\u0b2e\u0001\u0000"+
		"\u0000\u0000\u0b2c\u0b2a\u0001\u0000\u0000\u0000\u0b2c\u0b2d\u0001\u0000"+
		"\u0000\u0000\u0b2d\u0c2b\u0001\u0000\u0000\u0000\u0b2e\u0b2c\u0001\u0000"+
		"\u0000\u0000\u0b2f\u0b34\u0005\u0005\u0000\u0000\u0b30\u0b32\u0005\u001f"+
		"\u0000\u0000\u0b31\u0b33\u0003\u0258\u012c\u0000\u0b32\u0b31\u0001\u0000"+
		"\u0000\u0000\u0b32\u0b33\u0001\u0000\u0000\u0000\u0b33\u0b35\u0001\u0000"+
		"\u0000\u0000\u0b34\u0b30\u0001\u0000\u0000\u0000\u0b34\u0b35\u0001\u0000"+
		"\u0000\u0000\u0b35\u0b36\u0001\u0000\u0000\u0000\u0b36\u0b37\u0005D\u0000"+
		"\u0000\u0b37\u0b39\u0005]\u0000\u0000\u0b38\u0b3a\u0003\u0294\u014a\u0000"+
		"\u0b39\u0b38\u0001\u0000\u0000\u0000\u0b39\u0b3a\u0001\u0000\u0000\u0000"+
		"\u0b3a\u0b3c\u0001\u0000\u0000\u0000\u0b3b\u0b3d\u0003\u0258\u012c\u0000"+
		"\u0b3c\u0b3b\u0001\u0000\u0000\u0000\u0b3c\u0b3d\u0001\u0000\u0000\u0000"+
		"\u0b3d\u0b3e\u0001\u0000\u0000\u0000\u0b3e\u0b3f\u0003\u0280\u0140\u0000"+
		"\u0b3f\u0b40\u0003h4\u0000\u0b40\u0c2b\u0001\u0000\u0000\u0000\u0b41\u0b46"+
		"\u0005\u0005\u0000\u0000\u0b42\u0b44\u0005\u001f\u0000\u0000\u0b43\u0b45"+
		"\u0003\u0258\u012c\u0000\u0b44\u0b43\u0001\u0000\u0000\u0000\u0b44\u0b45"+
		"\u0001\u0000\u0000\u0000\u0b45\u0b47\u0001\u0000\u0000\u0000\u0b46\u0b42"+
		"\u0001\u0000\u0000\u0000\u0b46\u0b47\u0001\u0000\u0000\u0000\u0b47\u0b48"+
		"\u0001\u0000\u0000\u0000\u0b48\u0b4f\u0005\u001b\u0000\u0000\u0b49\u0b50"+
		"\u0003\u0258\u012c\u0000\u0b4a\u0b50\u0003\u0262\u0131\u0000\u0b4b\u0b4c"+
		"\u0005\u0488\u0000\u0000\u0b4c\u0b4d\u0003\u02c4\u0162\u0000\u0b4d\u0b4e"+
		"\u0005\u0489\u0000\u0000\u0b4e\u0b50\u0001\u0000\u0000\u0000\u0b4f\u0b49"+
		"\u0001\u0000\u0000\u0000\u0b4f\u0b4a\u0001\u0000\u0000\u0000\u0b4f\u0b4b"+
		"\u0001\u0000\u0000\u0000\u0b50\u0b52\u0001\u0000\u0000\u0000\u0b51\u0b53"+
		"\u0005t\u0000\u0000\u0b52\u0b51\u0001\u0000\u0000\u0000\u0b52\u0b53\u0001"+
		"\u0000\u0000\u0000\u0b53\u0b55\u0001\u0000\u0000\u0000\u0b54\u0b56\u0005"+
		":\u0000\u0000\u0b55\u0b54\u0001\u0000\u0000\u0000\u0b55\u0b56\u0001\u0000"+
		"\u0000\u0000\u0b56\u0c2b\u0001\u0000\u0000\u0000\u0b57\u0b5c\u0005\u0007"+
		"\u0000\u0000\u0b58\u0b5a\u0005\u001f\u0000\u0000\u0b59\u0b5b\u0003\u0258"+
		"\u012c\u0000\u0b5a\u0b59\u0001\u0000\u0000\u0000\u0b5a\u0b5b\u0001\u0000"+
		"\u0000\u0000\u0b5b\u0b5d\u0001\u0000\u0000\u0000\u0b5c\u0b58\u0001\u0000"+
		"\u0000\u0000\u0b5c\u0b5d\u0001\u0000\u0000\u0000\u0b5d\u0b5e\u0001\u0000"+
		"\u0000\u0000\u0b5e\u0b65\u0005\u001b\u0000\u0000\u0b5f\u0b66\u0003\u0258"+
		"\u012c\u0000\u0b60\u0b66\u0003\u0262\u0131\u0000\u0b61\u0b62\u0005\u0488"+
		"\u0000\u0000\u0b62\u0b63\u0003\u02c4\u0162\u0000\u0b63\u0b64\u0005\u0489"+
		"\u0000\u0000\u0b64\u0b66\u0001\u0000\u0000\u0000\u0b65\u0b5f\u0001\u0000"+
		"\u0000\u0000\u0b65\u0b60\u0001\u0000\u0000\u0000\u0b65\u0b61\u0001\u0000"+
		"\u0000\u0000\u0b66\u0b68\u0001\u0000\u0000\u0000\u0b67\u0b69\u0005t\u0000"+
		"\u0000\u0b68\u0b67\u0001\u0000\u0000\u0000\u0b68\u0b69\u0001\u0000\u0000"+
		"\u0000\u0b69\u0b6b\u0001\u0000\u0000\u0000\u0b6a\u0b6c\u0005:\u0000\u0000"+
		"\u0b6b\u0b6a\u0001\u0000\u0000\u0000\u0b6b\u0b6c\u0001\u0000\u0000\u0000"+
		"\u0b6c\u0c2b\u0001\u0000\u0000\u0000\u0b6d\u0b6f\u0005\u0153\u0000\u0000"+
		"\u0b6e\u0b70\u0005\u047f\u0000\u0000\u0b6f\u0b6e\u0001\u0000\u0000\u0000"+
		"\u0b6f\u0b70\u0001\u0000\u0000\u0000\u0b70\u0b71\u0001\u0000\u0000\u0000"+
		"\u0b71\u0c2b\u0007\u0003\u0000\u0000\u0b72\u0b74\u0005\u0007\u0000\u0000"+
		"\u0b73\u0b75\u0005\u001d\u0000\u0000\u0b74\u0b73\u0001\u0000\u0000\u0000"+
		"\u0b74\u0b75\u0001\u0000\u0000\u0000\u0b75\u0b76\u0001\u0000\u0000\u0000"+
		"\u0b76\u0b7c\u0003\u0258\u012c\u0000\u0b77\u0b78\u0005\u009b\u0000\u0000"+
		"\u0b78\u0b79\u0005+\u0000\u0000\u0b79\u0b7d\u0003\u028c\u0146\u0000\u0b7a"+
		"\u0b7b\u00054\u0000\u0000\u0b7b\u0b7d\u0005+\u0000\u0000\u0b7c\u0b77\u0001"+
		"\u0000\u0000\u0000\u0b7c\u0b7a\u0001\u0000\u0000\u0000\u0b7d\u0c2b\u0001"+
		"\u0000\u0000\u0000\u0b7e\u0b80\u0005\u0019\u0000\u0000\u0b7f\u0b81\u0005"+
		"\u001d\u0000\u0000\u0b80\u0b7f\u0001\u0000\u0000\u0000\u0b80\u0b81\u0001"+
		"\u0000\u0000\u0000\u0b81\u0b83\u0001\u0000\u0000\u0000\u0b82\u0b84\u0003"+
		"\u0292\u0149\u0000\u0b83\u0b82\u0001\u0000\u0000\u0000\u0b83\u0b84\u0001"+
		"\u0000\u0000\u0000\u0b84\u0b85\u0001\u0000\u0000\u0000\u0b85\u0b86\u0003"+
		"\u0258\u012c\u0000\u0b86\u0b87\u0003\u0258\u012c\u0000\u0b87\u0b8b\u0003"+
		"b1\u0000\u0b88\u0b8c\u0005\u01b1\u0000\u0000\u0b89\u0b8a\u0005\u0151\u0000"+
		"\u0000\u0b8a\u0b8c\u0003\u0258\u012c\u0000\u0b8b\u0b88\u0001\u0000\u0000"+
		"\u0000\u0b8b\u0b89\u0001\u0000\u0000\u0000\u0b8b\u0b8c\u0001\u0000\u0000"+
		"\u0000\u0b8c\u0c2b\u0001\u0000\u0000\u0000\u0b8d\u0b8e\u0005\u008d\u0000"+
		"\u0000\u0b8e\u0b8f\u0005\u001d\u0000\u0000\u0b8f\u0b90\u0003\u0258\u012c"+
		"\u0000\u0b90\u0b91\u0005\u00b2\u0000\u0000\u0b91\u0b92\u0003\u0258\u012c"+
		"\u0000\u0b92\u0c2b\u0001\u0000\u0000\u0000\u0b93\u0b95\u0005i\u0000\u0000"+
		"\u0b94\u0b96\u0005\u047f\u0000\u0000\u0b95\u0b94\u0001\u0000\u0000\u0000"+
		"\u0b95\u0b96\u0001\u0000\u0000\u0000\u0b96\u0b97\u0001\u0000\u0000\u0000"+
		"\u0b97\u0c2b\u0007\u0004\u0000\u0000\u0b98\u0b9a\u0005\u0203\u0000\u0000"+
		"\u0b99\u0b9b\u0005\u001d\u0000\u0000\u0b9a\u0b99\u0001\u0000\u0000\u0000"+
		"\u0b9a\u0b9b\u0001\u0000\u0000\u0000\u0b9b\u0b9d\u0001\u0000\u0000\u0000"+
		"\u0b9c\u0b9e\u0003\u0292\u0149\u0000\u0b9d\u0b9c\u0001\u0000\u0000\u0000"+
		"\u0b9d\u0b9e\u0001\u0000\u0000\u0000\u0b9e\u0b9f\u0001\u0000\u0000\u0000"+
		"\u0b9f\u0ba0\u0003\u0258\u012c\u0000\u0ba0\u0ba4\u0003b1\u0000\u0ba1\u0ba5"+
		"\u0005\u01b1\u0000\u0000\u0ba2\u0ba3\u0005\u0151\u0000\u0000\u0ba3\u0ba5"+
		"\u0003\u0258\u012c\u0000\u0ba4\u0ba1\u0001\u0000\u0000\u0000\u0ba4\u0ba2"+
		"\u0001\u0000\u0000\u0000\u0ba4\u0ba5\u0001\u0000\u0000\u0000\u0ba5\u0c2b"+
		"\u0001\u0000\u0000\u0000\u0ba6\u0ba8\u00054\u0000\u0000\u0ba7\u0ba9\u0005"+
		"\u001d\u0000\u0000\u0ba8\u0ba7\u0001\u0000\u0000\u0000\u0ba8\u0ba9\u0001"+
		"\u0000\u0000\u0000\u0ba9\u0bab\u0001\u0000\u0000\u0000\u0baa\u0bac\u0003"+
		"\u0292\u0149\u0000\u0bab\u0baa\u0001\u0000\u0000\u0000\u0bab\u0bac\u0001"+
		"\u0000\u0000\u0000\u0bac\u0bad\u0001\u0000\u0000\u0000\u0bad\u0baf\u0003"+
		"\u0258\u012c\u0000\u0bae\u0bb0\u0005\u0092\u0000\u0000\u0baf\u0bae\u0001"+
		"\u0000\u0000\u0000\u0baf\u0bb0\u0001\u0000\u0000\u0000\u0bb0\u0c2b\u0001"+
		"\u0000\u0000\u0000\u0bb1\u0bb2\u00054\u0000\u0000\u0bb2\u0bb4\u0007&\u0000"+
		"\u0000\u0bb3\u0bb5\u0003\u0292\u0149\u0000\u0bb4\u0bb3\u0001\u0000\u0000"+
		"\u0000\u0bb4\u0bb5\u0001\u0000\u0000\u0000\u0bb5\u0bb6\u0001\u0000\u0000"+
		"\u0000\u0bb6\u0c2b\u0003\u0258\u012c\u0000\u0bb7\u0bb8\u00054\u0000\u0000"+
		"\u0bb8\u0bb9\u0005\u0084\u0000\u0000\u0bb9\u0c2b\u0005]\u0000\u0000\u0bba"+
		"\u0bbb\u00054\u0000\u0000\u0bbb\u0bbd\u0007\u0017\u0000\u0000\u0bbc\u0bbe"+
		"\u0003\u0292\u0149\u0000\u0bbd\u0bbc\u0001\u0000\u0000\u0000\u0bbd\u0bbe"+
		"\u0001\u0000\u0000\u0000\u0bbe\u0bbf\u0001\u0000\u0000\u0000\u0bbf\u0c2b"+
		"\u0003\u0258\u012c\u0000\u0bc0\u0bc1\u0005\u008d\u0000\u0000\u0bc1\u0bc2"+
		"\u0007\u0017\u0000\u0000\u0bc2\u0bc3\u0003\u0258\u012c\u0000\u0bc3\u0bc4"+
		"\u0005\u00b2\u0000\u0000\u0bc4\u0bc5\u0003\u0258\u012c\u0000\u0bc5\u0c2b"+
		"\u0001\u0000\u0000\u0000\u0bc6\u0bc8\u0005\u0007\u0000\u0000\u0bc7\u0bc9"+
		"\u0005\u001d\u0000\u0000\u0bc8\u0bc7\u0001\u0000\u0000\u0000\u0bc8\u0bc9"+
		"\u0001\u0000\u0000\u0000\u0bc9\u0bca\u0001\u0000\u0000\u0000\u0bca\u0bd8"+
		"\u0003\u0258\u012c\u0000\u0bcb\u0bcc\u0005\u009b\u0000\u0000\u0bcc\u0bd2"+
		"\u0005+\u0000\u0000\u0bcd\u0bd3\u0003\u0262\u0131\u0000\u0bce\u0bcf\u0005"+
		"\u0488\u0000\u0000\u0bcf\u0bd0\u0003\u02c4\u0162\u0000\u0bd0\u0bd1\u0005"+
		"\u0489\u0000\u0000\u0bd1\u0bd3\u0001\u0000\u0000\u0000\u0bd2\u0bcd\u0001"+
		"\u0000\u0000\u0000\u0bd2\u0bce\u0001\u0000\u0000\u0000\u0bd3\u0bd9\u0001"+
		"\u0000\u0000\u0000\u0bd4\u0bd5\u0005\u009b\u0000\u0000\u0bd5\u0bd9\u0007"+
		"\u0011\u0000\u0000\u0bd6\u0bd7\u00054\u0000\u0000\u0bd7\u0bd9\u0005+\u0000"+
		"\u0000\u0bd8\u0bcb\u0001\u0000\u0000\u0000\u0bd8\u0bd4\u0001\u0000\u0000"+
		"\u0000\u0bd8\u0bd6\u0001\u0000\u0000\u0000\u0bd9\u0c2b\u0001\u0000\u0000"+
		"\u0000\u0bda\u0bdb\u0005\u0007\u0000\u0000\u0bdb\u0bdc\u0005S\u0000\u0000"+
		"\u0bdc\u0bdd\u0003\u0258\u012c\u0000\u0bdd\u0bde\u0007\u0011\u0000\u0000"+
		"\u0bde\u0c2b\u0001\u0000\u0000\u0000\u0bdf\u0be0\u00054\u0000\u0000\u0be0"+
		"\u0be1\u0005D\u0000\u0000\u0be1\u0be3\u0005]\u0000\u0000\u0be2\u0be4\u0003"+
		"\u0292\u0149\u0000\u0be3\u0be2\u0001\u0000\u0000\u0000\u0be3\u0be4\u0001"+
		"\u0000\u0000\u0000\u0be4\u0be5\u0001\u0000\u0000\u0000\u0be5\u0be7\u0003"+
		"\u0258\u012c\u0000\u0be6\u0be8\u0003\u025c\u012e\u0000\u0be7\u0be6\u0001"+
		"\u0000\u0000\u0000\u0be7\u0be8\u0001\u0000\u0000\u0000\u0be8\u0c2b\u0001"+
		"\u0000\u0000\u0000\u0be9\u0bea\u0005\u018f\u0000\u0000\u0bea\u0c2b\u0005"+
		"^\u0000\u0000\u0beb\u0bec\u0005\u0196\u0000\u0000\u0bec\u0c2b\u0005^\u0000"+
		"\u0000\u0bed\u0bef\u0005\u008d\u0000\u0000\u0bee\u0bf0\u0007\'\u0000\u0000"+
		"\u0bef\u0bee\u0001\u0000\u0000\u0000\u0bef\u0bf0\u0001\u0000\u0000\u0000"+
		"\u0bf0\u0bf3\u0001\u0000\u0000\u0000\u0bf1\u0bf4\u0003\u0258\u012c\u0000"+
		"\u0bf2\u0bf4\u0003\u0234\u011a\u0000\u0bf3\u0bf1\u0001\u0000\u0000\u0000"+
		"\u0bf3\u0bf2\u0001\u0000\u0000\u0000\u0bf4\u0c2b\u0001\u0000\u0000\u0000"+
		"\u0bf5\u0bf6\u0005~\u0000\u0000\u0bf6\u0bf7\u0005\u0014\u0000\u0000\u0bf7"+
		"\u0c2b\u0003\u027a\u013d\u0000\u0bf8\u0bf9\u0005!\u0000\u0000\u0bf9\u0bfd"+
		"\u0005\u00b2\u0000\u0000\u0bfa\u0bfe\u0005\u0351\u0000\u0000\u0bfb\u0bfc"+
		"\u0005\u001a\u0000\u0000\u0bfc\u0bfe\u0005\u009b\u0000\u0000\u0bfd\u0bfa"+
		"\u0001\u0000\u0000\u0000\u0bfd\u0bfb\u0001\u0000\u0000\u0000\u0bfe\u0bff"+
		"\u0001\u0000\u0000\u0000\u0bff\u0c02\u0003\u0246\u0123\u0000\u0c00\u0c01"+
		"\u0005\u001c\u0000\u0000\u0c01\u0c03\u0003\u0248\u0124\u0000\u0c02\u0c00"+
		"\u0001\u0000\u0000\u0000\u0c02\u0c03\u0001\u0000\u0000\u0000\u0c03\u0c2b"+
		"\u0001\u0000\u0000\u0000\u0c04\u0c06\u0005+\u0000\u0000\u0c05\u0c04\u0001"+
		"\u0000\u0000\u0000\u0c05\u0c06\u0001\u0000\u0000\u0000\u0c06\u0c07\u0001"+
		"\u0000\u0000\u0000\u0c07\u0c08\u0005\u001a\u0000\u0000\u0c08\u0c09\u0005"+
		"\u009b\u0000\u0000\u0c09\u0c0a\u0005\u047f\u0000\u0000\u0c0a\u0c0e\u0003"+
		"\u0246\u0123\u0000\u0c0b\u0c0c\u0005\u001c\u0000\u0000\u0c0c\u0c0d\u0005"+
		"\u047f\u0000\u0000\u0c0d\u0c0f\u0003\u0248\u0124\u0000\u0c0e\u0c0b\u0001"+
		"\u0000\u0000\u0000\u0c0e\u0c0f\u0001\u0000\u0000\u0000\u0c0f\u0c2b\u0001"+
		"\u0000\u0000\u0000\u0c10\u0c11\u0005\u0190\u0000\u0000\u0c11\u0c2b\u0005"+
		"\u028a\u0000\u0000\u0c12\u0c13\u0005\u01c5\u0000\u0000\u0c13\u0c2b\u0005"+
		"\u028a\u0000\u0000\u0c14\u0c2b\u0005C\u0000\u0000\u0c15\u0c16\u0007(\u0000"+
		"\u0000\u0c16\u0c2b\u0005\u029f\u0000\u0000\u0c17\u0c19\u0005\u0005\u0000"+
		"\u0000\u0c18\u0c1a\u0005\u001d\u0000\u0000\u0c19\u0c18\u0001\u0000\u0000"+
		"\u0000\u0c19\u0c1a\u0001\u0000\u0000\u0000\u0c1a\u0c1c\u0001\u0000\u0000"+
		"\u0000\u0c1b\u0c1d\u0003\u0294\u014a\u0000\u0c1c\u0c1b\u0001\u0000\u0000"+
		"\u0000\u0c1c\u0c1d\u0001\u0000\u0000\u0000\u0c1d\u0c1e\u0001\u0000\u0000"+
		"\u0000\u0c1e\u0c1f\u0005\u0488\u0000\u0000\u0c1f\u0c24\u0003`0\u0000\u0c20"+
		"\u0c21\u0005\u048a\u0000\u0000\u0c21\u0c23\u0003`0\u0000\u0c22\u0c20\u0001"+
		"\u0000\u0000\u0000\u0c23\u0c26\u0001\u0000\u0000\u0000\u0c24\u0c22\u0001"+
		"\u0000\u0000\u0000\u0c24\u0c25\u0001\u0000\u0000\u0000\u0c25\u0c27\u0001"+
		"\u0000\u0000\u0000\u0c26\u0c24\u0001\u0000\u0000\u0000\u0c27\u0c28\u0005"+
		"\u0489\u0000\u0000\u0c28\u0c2b\u0001\u0000\u0000\u0000\u0c29\u0c2b\u0003"+
		"\u00a2Q\u0000\u0c2a\u0ab0\u0001\u0000\u0000\u0000\u0c2a\u0aba\u0001\u0000"+
		"\u0000\u0000\u0c2a\u0ac8\u0001\u0000\u0000\u0000\u0c2a\u0add\u0001\u0000"+
		"\u0000\u0000\u0c2a\u0aef\u0001\u0000\u0000\u0000\u0c2a\u0b05\u0001\u0000"+
		"\u0000\u0000\u0c2a\u0b20\u0001\u0000\u0000\u0000\u0c2a\u0b2f\u0001\u0000"+
		"\u0000\u0000\u0c2a\u0b41\u0001\u0000\u0000\u0000\u0c2a\u0b57\u0001\u0000"+
		"\u0000\u0000\u0c2a\u0b6d\u0001\u0000\u0000\u0000\u0c2a\u0b72\u0001\u0000"+
		"\u0000\u0000\u0c2a\u0b7e\u0001\u0000\u0000\u0000\u0c2a\u0b8d\u0001\u0000"+
		"\u0000\u0000\u0c2a\u0b93\u0001\u0000\u0000\u0000\u0c2a\u0b98\u0001\u0000"+
		"\u0000\u0000\u0c2a\u0ba6\u0001\u0000\u0000\u0000\u0c2a\u0bb1\u0001\u0000"+
		"\u0000\u0000\u0c2a\u0bb7\u0001\u0000\u0000\u0000\u0c2a\u0bba\u0001\u0000"+
		"\u0000\u0000\u0c2a\u0bc0\u0001\u0000\u0000\u0000\u0c2a\u0bc6\u0001\u0000"+
		"\u0000\u0000\u0c2a\u0bda\u0001\u0000\u0000\u0000\u0c2a\u0bdf\u0001\u0000"+
		"\u0000\u0000\u0c2a\u0be9\u0001\u0000\u0000\u0000\u0c2a\u0beb\u0001\u0000"+
		"\u0000\u0000\u0c2a\u0bed\u0001\u0000\u0000\u0000\u0c2a\u0bf5\u0001\u0000"+
		"\u0000\u0000\u0c2a\u0bf8\u0001\u0000\u0000\u0000\u0c2a\u0c05\u0001\u0000"+
		"\u0000\u0000\u0c2a\u0c10\u0001\u0000\u0000\u0000\u0c2a\u0c12\u0001\u0000"+
		"\u0000\u0000\u0c2a\u0c14\u0001\u0000\u0000\u0000\u0c2a\u0c15\u0001\u0000"+
		"\u0000\u0000\u0c2a\u0c17\u0001\u0000\u0000\u0000\u0c2a\u0c29\u0001\u0000"+
		"\u0000\u0000\u0c2b\u00a1\u0001\u0000\u0000\u0000\u0c2c\u0c2d\u0005\u0005"+
		"\u0000\u0000\u0c2d\u0c2f\u0005\u0083\u0000\u0000\u0c2e\u0c30\u0003\u0294"+
		"\u014a\u0000\u0c2f\u0c2e\u0001\u0000\u0000\u0000\u0c2f\u0c30\u0001\u0000"+
		"\u0000\u0000\u0c30\u0c31\u0001\u0000\u0000\u0000\u0c31\u0c32\u0005\u0488"+
		"\u0000\u0000\u0c32\u0c37\u0003\u0080@\u0000\u0c33\u0c34\u0005\u048a\u0000"+
		"\u0000\u0c34\u0c36\u0003\u0080@\u0000\u0c35\u0c33\u0001\u0000\u0000\u0000"+
		"\u0c36\u0c39\u0001\u0000\u0000\u0000\u0c37\u0c35\u0001\u0000\u0000\u0000"+
		"\u0c37\u0c38\u0001\u0000\u0000\u0000\u0c38\u0c3a\u0001\u0000\u0000\u0000"+
		"\u0c39\u0c37\u0001\u0000\u0000\u0000\u0c3a\u0c3b\u0005\u0489\u0000\u0000"+
		"\u0c3b\u0c95\u0001\u0000\u0000\u0000\u0c3c\u0c3d\u00054\u0000\u0000\u0c3d"+
		"\u0c3f\u0005\u0083\u0000\u0000\u0c3e\u0c40\u0003\u0292\u0149\u0000\u0c3f"+
		"\u0c3e\u0001\u0000\u0000\u0000\u0c3f\u0c40\u0001\u0000\u0000\u0000\u0c40"+
		"\u0c41\u0001\u0000\u0000\u0000\u0c41\u0c95\u0003\u027a\u013d\u0000\u0c42"+
		"\u0c43\u0005\u0190\u0000\u0000\u0c43\u0c46\u0005\u0083\u0000\u0000\u0c44"+
		"\u0c47\u0003\u027a\u013d\u0000\u0c45\u0c47\u0005\u0006\u0000\u0000\u0c46"+
		"\u0c44\u0001\u0000\u0000\u0000\u0c46\u0c45\u0001\u0000\u0000\u0000\u0c47"+
		"\u0c48\u0001\u0000\u0000\u0000\u0c48\u0c95\u0005\u028a\u0000\u0000\u0c49"+
		"\u0c4a\u0005\u01c5\u0000\u0000\u0c4a\u0c4d\u0005\u0083\u0000\u0000\u0c4b"+
		"\u0c4e\u0003\u027a\u013d\u0000\u0c4c\u0c4e\u0005\u0006\u0000\u0000\u0c4d"+
		"\u0c4b\u0001\u0000\u0000\u0000\u0c4d\u0c4c\u0001\u0000\u0000\u0000\u0c4e"+
		"\u0c4f\u0001\u0000\u0000\u0000\u0c4f\u0c95\u0005\u028a\u0000\u0000\u0c50"+
		"\u0c51\u0005\u0293\u0000\u0000\u0c51\u0c54\u0005\u0083\u0000\u0000\u0c52"+
		"\u0c55\u0003\u027a\u013d\u0000\u0c53\u0c55\u0005\u0006\u0000\u0000\u0c54"+
		"\u0c52\u0001\u0000\u0000\u0000\u0c54\u0c53\u0001\u0000\u0000\u0000\u0c55"+
		"\u0c95\u0001\u0000\u0000\u0000\u0c56\u0c57\u0005\u016e\u0000\u0000\u0c57"+
		"\u0c58\u0005\u0083\u0000\u0000\u0c58\u0c95\u0003\u025e\u012f\u0000\u0c59"+
		"\u0c5a\u0005\u0246\u0000\u0000\u0c5a\u0c5b\u0005\u0083\u0000\u0000\u0c5b"+
		"\u0c5c\u0003\u027a\u013d\u0000\u0c5c\u0c5d\u0005Y\u0000\u0000\u0c5d\u0c5e"+
		"\u0005\u0488\u0000\u0000\u0c5e\u0c63\u0003\u0080@\u0000\u0c5f\u0c60\u0005"+
		"\u048a\u0000\u0000\u0c60\u0c62\u0003\u0080@\u0000\u0c61\u0c5f\u0001\u0000"+
		"\u0000\u0000\u0c62\u0c65\u0001\u0000\u0000\u0000\u0c63\u0c61\u0001\u0000"+
		"\u0000\u0000\u0c63\u0c64\u0001\u0000\u0000\u0000\u0c64\u0c66\u0001\u0000"+
		"\u0000\u0000\u0c65\u0c63\u0001\u0000\u0000\u0000\u0c66\u0c67\u0005\u0489"+
		"\u0000\u0000\u0c67\u0c95\u0001\u0000\u0000\u0000\u0c68\u0c69\u0005\u01a5"+
		"\u0000\u0000\u0c69\u0c6a\u0005\u0083\u0000\u0000\u0c6a\u0c6b\u0003\u0258"+
		"\u012c\u0000\u0c6b\u0c6c\u0005\u00c3\u0000\u0000\u0c6c\u0c6d\u0005\u00af"+
		"\u0000\u0000\u0c6d\u0c70\u0003\u0236\u011b\u0000\u0c6e\u0c6f\u0007(\u0000"+
		"\u0000\u0c6f\u0c71\u0005\u029f\u0000\u0000\u0c70\u0c6e\u0001\u0000\u0000"+
		"\u0000\u0c70\u0c71\u0001\u0000\u0000\u0000\u0c71\u0c95\u0001\u0000\u0000"+
		"\u0000\u0c72\u0c73\u0005\t\u0000\u0000\u0c73\u0c76\u0005\u0083\u0000\u0000"+
		"\u0c74\u0c77\u0003\u027a\u013d\u0000\u0c75\u0c77\u0005\u0006\u0000\u0000"+
		"\u0c76\u0c74\u0001\u0000\u0000\u0000\u0c76\u0c75\u0001\u0000\u0000\u0000"+
		"\u0c77\u0c95\u0001\u0000\u0000\u0000\u0c78\u0c79\u0005\u001b\u0000\u0000"+
		"\u0c79\u0c7c\u0005\u0083\u0000\u0000\u0c7a\u0c7d\u0003\u027a\u013d\u0000"+
		"\u0c7b\u0c7d\u0005\u0006\u0000\u0000\u0c7c\u0c7a\u0001\u0000\u0000\u0000"+
		"\u0c7c\u0c7b\u0001\u0000\u0000\u0000\u0c7d\u0c95\u0001\u0000\u0000\u0000"+
		"\u0c7e\u0c7f\u0005y\u0000\u0000\u0c7f\u0c82\u0005\u0083\u0000\u0000\u0c80"+
		"\u0c83\u0003\u027a\u013d\u0000\u0c81\u0c83\u0005\u0006\u0000\u0000\u0c82"+
		"\u0c80\u0001\u0000\u0000\u0000\u0c82\u0c81\u0001\u0000\u0000\u0000\u0c83"+
		"\u0c95\u0001\u0000\u0000\u0000\u0c84\u0c85\u0005\u023c\u0000\u0000\u0c85"+
		"\u0c88\u0005\u0083\u0000\u0000\u0c86\u0c89\u0003\u027a\u013d\u0000\u0c87"+
		"\u0c89\u0005\u0006\u0000\u0000\u0c88\u0c86\u0001\u0000\u0000\u0000\u0c88"+
		"\u0c87\u0001\u0000\u0000\u0000\u0c89\u0c95\u0001\u0000\u0000\u0000\u0c8a"+
		"\u0c8b\u0005\u0247\u0000\u0000\u0c8b\u0c8e\u0005\u0083\u0000\u0000\u0c8c"+
		"\u0c8f\u0003\u027a\u013d\u0000\u0c8d\u0c8f\u0005\u0006\u0000\u0000\u0c8e"+
		"\u0c8c\u0001\u0000\u0000\u0000\u0c8e\u0c8d\u0001\u0000\u0000\u0000\u0c8f"+
		"\u0c95\u0001\u0000\u0000\u0000\u0c90\u0c91\u0005\u0245\u0000\u0000\u0c91"+
		"\u0c95\u0005\u0228\u0000\u0000\u0c92\u0c93\u0005\u029b\u0000\u0000\u0c93"+
		"\u0c95\u0005\u0228\u0000\u0000\u0c94\u0c2c\u0001\u0000\u0000\u0000\u0c94"+
		"\u0c3c\u0001\u0000\u0000\u0000\u0c94\u0c42\u0001\u0000\u0000\u0000\u0c94"+
		"\u0c49\u0001\u0000\u0000\u0000\u0c94\u0c50\u0001\u0000\u0000\u0000\u0c94"+
		"\u0c56\u0001\u0000\u0000\u0000\u0c94\u0c59\u0001\u0000\u0000\u0000\u0c94"+
		"\u0c68\u0001\u0000\u0000\u0000\u0c94\u0c72\u0001\u0000\u0000\u0000\u0c94"+
		"\u0c78\u0001\u0000\u0000\u0000\u0c94\u0c7e\u0001\u0000\u0000\u0000\u0c94"+
		"\u0c84\u0001\u0000\u0000\u0000\u0c94\u0c8a\u0001\u0000\u0000\u0000\u0c94"+
		"\u0c90\u0001\u0000\u0000\u0000\u0c94\u0c92\u0001\u0000\u0000\u0000\u0c95"+
		"\u00a3\u0001\u0000\u0000\u0000\u0c96\u0c97\u00054\u0000\u0000\u0c97\u0c99"+
		"\u0007\u0000\u0000\u0000\u0c98\u0c9a\u0003\u0292\u0149\u0000\u0c99\u0c98"+
		"\u0001\u0000\u0000\u0000\u0c99\u0c9a\u0001\u0000\u0000\u0000\u0c9a\u0c9b"+
		"\u0001\u0000\u0000\u0000\u0c9b\u0c9c\u0003\u0258\u012c\u0000\u0c9c\u00a5"+
		"\u0001\u0000\u0000\u0000\u0c9d\u0c9e\u00054\u0000\u0000\u0c9e\u0ca0\u0005"+
		"\u01a2\u0000\u0000\u0c9f\u0ca1\u0003\u0292\u0149\u0000\u0ca0\u0c9f\u0001"+
		"\u0000\u0000\u0000\u0ca0\u0ca1\u0001\u0000\u0000\u0000\u0ca1\u0ca2\u0001"+
		"\u0000\u0000\u0000\u0ca2\u0ca3\u0003\u0234\u011a\u0000\u0ca3\u00a7\u0001"+
		"\u0000\u0000\u0000\u0ca4\u0ca5\u00054\u0000\u0000\u0ca5\u0ca7\u0005S\u0000"+
		"\u0000\u0ca6\u0ca8\u0003\u0292\u0149\u0000\u0ca7\u0ca6\u0001\u0000\u0000"+
		"\u0000\u0ca7\u0ca8\u0001\u0000\u0000\u0000\u0ca8\u0caa\u0001\u0000\u0000"+
		"\u0000\u0ca9\u0cab\u0007\u0001\u0000\u0000\u0caa\u0ca9\u0001\u0000\u0000"+
		"\u0000\u0caa\u0cab\u0001\u0000\u0000\u0000\u0cab\u0cac\u0001\u0000\u0000"+
		"\u0000\u0cac\u0cad\u0003\u0258\u012c\u0000\u0cad\u0cae\u0005x\u0000\u0000"+
		"\u0cae\u0cbb\u0003\u0236\u011b\u0000\u0caf\u0cb1\u0005\u0153\u0000\u0000"+
		"\u0cb0\u0cb2\u0005\u047f\u0000\u0000\u0cb1\u0cb0\u0001\u0000\u0000\u0000"+
		"\u0cb1\u0cb2\u0001\u0000\u0000\u0000\u0cb2\u0cb3\u0001\u0000\u0000\u0000"+
		"\u0cb3\u0cba\u0007)\u0000\u0000\u0cb4\u0cb6\u0005i\u0000\u0000\u0cb5\u0cb7"+
		"\u0005\u047f\u0000\u0000\u0cb6\u0cb5\u0001\u0000\u0000\u0000\u0cb6\u0cb7"+
		"\u0001\u0000\u0000\u0000\u0cb7\u0cb8\u0001\u0000\u0000\u0000\u0cb8\u0cba"+
		"\u0007\u0004\u0000\u0000\u0cb9\u0caf\u0001\u0000\u0000\u0000\u0cb9\u0cb4"+
		"\u0001\u0000\u0000\u0000\u0cba\u0cbd\u0001\u0000\u0000\u0000\u0cbb\u0cb9"+
		"\u0001\u0000\u0000\u0000\u0cbb\u0cbc\u0001\u0000\u0000\u0000\u0cbc\u0cbf"+
		"\u0001\u0000\u0000\u0000\u0cbd\u0cbb\u0001\u0000\u0000\u0000\u0cbe\u0cc0"+
		"\u0003\u0298\u014c\u0000\u0cbf\u0cbe\u0001\u0000\u0000\u0000\u0cbf\u0cc0"+
		"\u0001\u0000\u0000\u0000\u0cc0\u00a9\u0001\u0000\u0000\u0000\u0cc1\u0cc2"+
		"\u00054\u0000\u0000\u0cc2\u0cc3\u0005\u01de\u0000\u0000\u0cc3\u0cc4\u0005"+
		"J\u0000\u0000\u0cc4\u0cc5\u0003\u0258\u012c\u0000\u0cc5\u0cc6\u0005\u019c"+
		"\u0000\u0000\u0cc6\u0cc7\u0005\u047f\u0000\u0000\u0cc7\u0cc8\u0003\u024a"+
		"\u0125\u0000\u0cc8\u00ab\u0001\u0000\u0000\u0000\u0cc9\u0cca\u00054\u0000"+
		"\u0000\u0cca\u0ccc\u0005\u0085\u0000\u0000\u0ccb\u0ccd\u0003\u0292\u0149"+
		"\u0000\u0ccc\u0ccb\u0001\u0000\u0000\u0000\u0ccc\u0ccd\u0001\u0000\u0000"+
		"\u0000\u0ccd\u0cce\u0001\u0000\u0000\u0000\u0cce\u0ccf\u0003\u0234\u011a"+
		"\u0000\u0ccf\u00ad\u0001\u0000\u0000\u0000\u0cd0\u0cd1\u00054\u0000\u0000"+
		"\u0cd1\u0cd3\u0005\u01b8\u0000\u0000\u0cd2\u0cd4\u0003\u0292\u0149\u0000"+
		"\u0cd3\u0cd2\u0001\u0000\u0000\u0000\u0cd3\u0cd4\u0001\u0000\u0000\u0000"+
		"\u0cd4\u0cd5\u0001\u0000\u0000\u0000\u0cd5\u0cd6\u0003\u0234\u011a\u0000"+
		"\u0cd6\u00af\u0001\u0000\u0000\u0000\u0cd7\u0cd8\u00054\u0000\u0000\u0cd8"+
		"\u0cda\u0005\u0263\u0000\u0000\u0cd9\u0cdb\u0003\u0292\u0149\u0000\u0cda"+
		"\u0cd9\u0001\u0000\u0000\u0000\u0cda\u0cdb\u0001\u0000\u0000\u0000\u0cdb"+
		"\u0cdc\u0001\u0000\u0000\u0000\u0cdc\u0cdd\u0003\u0258\u012c\u0000\u0cdd"+
		"\u00b1\u0001\u0000\u0000\u0000\u0cde\u0ce0\u00054\u0000\u0000\u0cdf\u0ce1"+
		"\u0005\u028c\u0000\u0000\u0ce0\u0cdf\u0001\u0000\u0000\u0000\u0ce0\u0ce1"+
		"\u0001\u0000\u0000\u0000\u0ce1\u0ce2\u0001\u0000\u0000\u0000\u0ce2\u0ce4"+
		"\u0005\u00af\u0000\u0000\u0ce3\u0ce5\u0003\u0292\u0149\u0000\u0ce4\u0ce3"+
		"\u0001\u0000\u0000\u0000\u0ce4\u0ce5\u0001\u0000\u0000\u0000\u0ce5\u0ce6"+
		"\u0001\u0000\u0000\u0000\u0ce6\u0ce8\u0003\u027e\u013f\u0000\u0ce7\u0ce9"+
		"\u0003\u0298\u014c\u0000\u0ce8\u0ce7\u0001\u0000\u0000\u0000\u0ce8\u0ce9"+
		"\u0001\u0000\u0000\u0000\u0ce9\u0ceb\u0001\u0000\u0000\u0000\u0cea\u0cec"+
		"\u0007*\u0000\u0000\u0ceb\u0cea\u0001\u0000\u0000\u0000\u0ceb\u0cec\u0001"+
		"\u0000\u0000\u0000\u0cec\u00b3\u0001\u0000\u0000\u0000\u0ced\u0cee\u0005"+
		"4\u0000\u0000\u0cee\u0cef\u0005\u028a\u0000\u0000\u0cef\u0cf5\u0003\u0258"+
		"\u012c\u0000\u0cf0\u0cf2\u0005\u019c\u0000\u0000\u0cf1\u0cf3\u0005\u047f"+
		"\u0000\u0000\u0cf2\u0cf1\u0001\u0000\u0000\u0000\u0cf2\u0cf3\u0001\u0000"+
		"\u0000\u0000\u0cf3\u0cf4\u0001\u0000\u0000\u0000\u0cf4\u0cf6\u0003\u024a"+
		"\u0125\u0000\u0cf5\u0cf0\u0001\u0000\u0000\u0000\u0cf5\u0cf6\u0001\u0000"+
		"\u0000\u0000\u0cf6\u00b5\u0001\u0000\u0000\u0000\u0cf7\u0cf8\u00054\u0000"+
		"\u0000\u0cf8\u0cfa\u0005\u00b4\u0000\u0000\u0cf9\u0cfb\u0003\u0292\u0149"+
		"\u0000\u0cfa\u0cf9\u0001\u0000\u0000\u0000\u0cfa\u0cfb\u0001\u0000\u0000"+
		"\u0000\u0cfb\u0cfc\u0001\u0000\u0000\u0000\u0cfc\u0cfd\u0003\u0234\u011a"+
		"\u0000\u0cfd\u00b7\u0001\u0000\u0000\u0000\u0cfe\u0cff\u00054\u0000\u0000"+
		"\u0cff\u0d01\u0005\u02a2\u0000\u0000\u0d00\u0d02\u0003\u0292\u0149\u0000"+
		"\u0d01\u0d00\u0001\u0000\u0000\u0000\u0d01\u0d02\u0001\u0000\u0000\u0000"+
		"\u0d02\u0d03\u0001\u0000\u0000\u0000\u0d03\u0d08\u0003\u0234\u011a\u0000"+
		"\u0d04\u0d05\u0005\u048a\u0000\u0000\u0d05\u0d07\u0003\u0234\u011a\u0000"+
		"\u0d06\u0d04\u0001\u0000\u0000\u0000\u0d07\u0d0a\u0001\u0000\u0000\u0000"+
		"\u0d08\u0d06\u0001\u0000\u0000\u0000\u0d08\u0d09\u0001\u0000\u0000\u0000"+
		"\u0d09\u0d0c\u0001\u0000\u0000\u0000\u0d0a\u0d08\u0001\u0000\u0000\u0000"+
		"\u0d0b\u0d0d\u0007*\u0000\u0000\u0d0c\u0d0b\u0001\u0000\u0000\u0000\u0d0c"+
		"\u0d0d\u0001\u0000\u0000\u0000\u0d0d\u00b9\u0001\u0000\u0000\u0000\u0d0e"+
		"\u0d0f\u00054\u0000\u0000\u0d0f\u0d11\u0005\u0257\u0000\u0000\u0d10\u0d12"+
		"\u0003\u0292\u0149\u0000\u0d11\u0d10\u0001\u0000\u0000\u0000\u0d11\u0d12"+
		"\u0001\u0000\u0000\u0000\u0d12\u0d13\u0001\u0000\u0000\u0000\u0d13\u0d18"+
		"\u0003\u0238\u011c\u0000\u0d14\u0d15\u0005\u048a\u0000\u0000\u0d15\u0d17"+
		"\u0003\u0238\u011c\u0000\u0d16\u0d14\u0001\u0000\u0000\u0000\u0d17\u0d1a"+
		"\u0001\u0000\u0000\u0000\u0d18\u0d16\u0001\u0000\u0000\u0000\u0d18\u0d19"+
		"\u0001\u0000\u0000\u0000\u0d19\u00bb\u0001\u0000\u0000\u0000\u0d1a\u0d18"+
		"\u0001\u0000\u0000\u0000\u0d1b\u0d1c\u0005\u009b\u0000\u0000\u0d1c\u0d1d"+
		"\u0005+\u0000\u0000\u0d1d\u0d28\u0005\u0257\u0000\u0000\u0d1e\u0d29\u0005"+
		"\u0214\u0000\u0000\u0d1f\u0d29\u0005\u0006\u0000\u0000\u0d20\u0d25\u0003"+
		"\u0238\u011c\u0000\u0d21\u0d22\u0005\u048a\u0000\u0000\u0d22\u0d24\u0003"+
		"\u0238\u011c\u0000\u0d23\u0d21\u0001\u0000\u0000\u0000\u0d24\u0d27\u0001"+
		"\u0000\u0000\u0000\u0d25\u0d23\u0001\u0000\u0000\u0000\u0d25\u0d26\u0001"+
		"\u0000\u0000\u0000\u0d26\u0d29\u0001\u0000\u0000\u0000\u0d27\u0d25\u0001"+
		"\u0000\u0000\u0000\u0d28\u0d1e\u0001\u0000\u0000\u0000\u0d28\u0d1f\u0001"+
		"\u0000\u0000\u0000\u0d28\u0d20\u0001\u0000\u0000\u0000\u0d29\u0d2a\u0001"+
		"\u0000\u0000\u0000\u0d2a\u0d2d\u0005\u00b2\u0000\u0000\u0d2b\u0d2e\u0003"+
		"\u0242\u0121\u0000\u0d2c\u0d2e\u0003\u0258\u012c\u0000\u0d2d\u0d2b\u0001"+
		"\u0000\u0000\u0000\u0d2d\u0d2c\u0001\u0000\u0000\u0000\u0d2e\u0d36\u0001"+
		"\u0000\u0000\u0000\u0d2f\u0d32\u0005\u048a\u0000\u0000\u0d30\u0d33\u0003"+
		"\u0242\u0121\u0000\u0d31\u0d33\u0003\u0258\u012c\u0000\u0d32\u0d30\u0001"+
		"\u0000\u0000\u0000\u0d32\u0d31\u0001\u0000\u0000\u0000\u0d33\u0d35\u0001"+
		"\u0000\u0000\u0000\u0d34\u0d2f\u0001\u0000\u0000\u0000\u0d35\u0d38\u0001"+
		"\u0000\u0000\u0000\u0d36\u0d34\u0001\u0000\u0000\u0000\u0d36\u0d37\u0001"+
		"\u0000\u0000\u0000\u0d37\u0d3d\u0001\u0000\u0000\u0000\u0d38\u0d36\u0001"+
		"\u0000\u0000\u0000\u0d39\u0d3a\u0005\u009b\u0000\u0000\u0d3a\u0d3b\u0005"+
		"\u0257\u0000\u0000\u0d3b\u0d3d\u0003\u01c4\u00e2\u0000\u0d3c\u0d1b\u0001"+
		"\u0000\u0000\u0000\u0d3c\u0d39\u0001\u0000\u0000\u0000\u0d3d\u00bd\u0001"+
		"\u0000\u0000\u0000\u0d3e\u0d40\u00054\u0000\u0000\u0d3f\u0d41\u0005\u028c"+
		"\u0000\u0000\u0d40\u0d3f\u0001\u0000\u0000\u0000\u0d40\u0d41\u0001\u0000"+
		"\u0000\u0000\u0d41\u0d42\u0001\u0000\u0000\u0000\u0d42\u0d44\u0005\u0262"+
		"\u0000\u0000\u0d43\u0d45\u0003\u0292\u0149\u0000\u0d44\u0d43\u0001\u0000"+
		"\u0000\u0000\u0d44\u0d45\u0001\u0000\u0000\u0000\u0d45\u0d47\u0001\u0000"+
		"\u0000\u0000\u0d46\u0d48\u0005\u0003\u0000\u0000\u0d47\u0d46\u0001\u0000"+
		"\u0000\u0000\u0d47\u0d48\u0001\u0000\u0000\u0000\u0d48\u0d49\u0001\u0000"+
		"\u0000\u0000\u0d49\u0d4e\u0003\u0234\u011a\u0000\u0d4a\u0d4b\u0005\u048a"+
		"\u0000\u0000\u0d4b\u0d4d\u0003\u0234\u011a\u0000\u0d4c\u0d4a\u0001\u0000"+
		"\u0000\u0000\u0d4d\u0d50\u0001\u0000\u0000\u0000\u0d4e\u0d4c\u0001\u0000"+
		"\u0000\u0000\u0d4e\u0d4f\u0001\u0000\u0000\u0000\u0d4f\u00bf\u0001\u0000"+
		"\u0000\u0000\u0d50\u0d4e\u0001\u0000\u0000\u0000\u0d51\u0d52\u0005\u008d"+
		"\u0000\u0000\u0d52\u0d53\u0005\u00af\u0000\u0000\u0d53\u0d58\u0003\u00c2"+
		"a\u0000\u0d54\u0d55\u0005\u048a\u0000\u0000\u0d55\u0d57\u0003\u00c2a\u0000"+
		"\u0d56\u0d54\u0001\u0000\u0000\u0000\u0d57\u0d5a\u0001\u0000\u0000\u0000"+
		"\u0d58\u0d56\u0001\u0000\u0000\u0000\u0d58\u0d59\u0001\u0000\u0000\u0000"+
		"\u0d59\u00c1\u0001\u0000\u0000\u0000\u0d5a\u0d58\u0001\u0000\u0000\u0000"+
		"\u0d5b\u0d5d\u0003\u0236\u011b\u0000\u0d5c\u0d5e\u0003\u0298\u014c\u0000"+
		"\u0d5d\u0d5c\u0001\u0000\u0000\u0000\u0d5d\u0d5e\u0001\u0000\u0000\u0000"+
		"\u0d5e\u0d5f\u0001\u0000\u0000\u0000\u0d5f\u0d60\u0005\u00b2\u0000\u0000"+
		"\u0d60\u0d61\u0003\u0236\u011b\u0000\u0d61\u00c3\u0001\u0000\u0000\u0000"+
		"\u0d62\u0d64\u0005\u0293\u0000\u0000\u0d63\u0d65\u0005\u00af\u0000\u0000"+
		"\u0d64\u0d63\u0001\u0000\u0000\u0000\u0d64\u0d65\u0001\u0000\u0000\u0000"+
		"\u0d65\u0d66\u0001\u0000\u0000\u0000\u0d66\u0d68\u0003\u0236\u011b\u0000"+
		"\u0d67\u0d69\u0003\u0298\u014c\u0000\u0d68\u0d67\u0001\u0000\u0000\u0000"+
		"\u0d68\u0d69\u0001\u0000\u0000\u0000\u0d69\u00c5\u0001\u0000\u0000\u0000"+
		"\u0d6a\u0d6b\u0005\u0015\u0000\u0000\u0d6b\u0d72\u0003\u0234\u011a\u0000"+
		"\u0d6c\u0d6f\u0005\u0488\u0000\u0000\u0d6d\u0d70\u0003\u0286\u0143\u0000"+
		"\u0d6e\u0d70\u0003\u0282\u0141\u0000\u0d6f\u0d6d\u0001\u0000\u0000\u0000"+
		"\u0d6f\u0d6e\u0001\u0000\u0000\u0000\u0d6f\u0d70\u0001\u0000\u0000\u0000"+
		"\u0d70\u0d71\u0001\u0000\u0000\u0000\u0d71\u0d73\u0005\u0489\u0000\u0000"+
		"\u0d72\u0d6c\u0001\u0000\u0000\u0000\u0d72\u0d73\u0001\u0000\u0000\u0000"+
		"\u0d73\u00c7\u0001\u0000\u0000\u0000\u0d74\u0d77\u0003\u00e8t\u0000\u0d75"+
		"\u0d77\u0003\u00eau\u0000\u0d76\u0d74\u0001\u0000\u0000\u0000\u0d76\u0d75"+
		"\u0001\u0000\u0000\u0000\u0d77\u00c9\u0001\u0000\u0000\u0000\u0d78\u0d79"+
		"\u0005\u0192\u0000\u0000\u0d79\u0d7a\u0003\u0282\u0141\u0000\u0d7a\u00cb"+
		"\u0001\u0000\u0000\u0000\u0d7b\u0d80\u0003\u00ecv\u0000\u0d7c\u0d80\u0003"+
		"\u00eew\u0000\u0d7d\u0d80\u0003\u00f0x\u0000\u0d7e\u0d80\u0003\u00f2y"+
		"\u0000\u0d7f\u0d7b\u0001\u0000\u0000\u0000\u0d7f\u0d7c\u0001\u0000\u0000"+
		"\u0000\u0d7f\u0d7d\u0001\u0000\u0000\u0000\u0d7f\u0d7e\u0001\u0000\u0000"+
		"\u0000\u0d80\u00cd\u0001\u0000\u0000\u0000\u0d81\u0d83\u0005W\u0000\u0000"+
		"\u0d82\u0d84\u0007+\u0000\u0000\u0d83\u0d82\u0001\u0000\u0000\u0000\u0d83"+
		"\u0d84\u0001\u0000\u0000\u0000\u0d84\u0d86\u0001\u0000\u0000\u0000\u0d85"+
		"\u0d87\u0005P\u0000\u0000\u0d86\u0d85\u0001\u0000\u0000\u0000\u0d86\u0d87"+
		"\u0001\u0000\u0000\u0000\u0d87\u0d89\u0001\u0000\u0000\u0000\u0d88\u0d8a"+
		"\u0005Y\u0000\u0000\u0d89\u0d88\u0001\u0000\u0000\u0000\u0d89\u0d8a\u0001"+
		"\u0000\u0000\u0000\u0d8a\u0d8b\u0001\u0000\u0000\u0000\u0d8b\u0d92\u0003"+
		"\u0236\u011b\u0000\u0d8c\u0d8d\u0005\u0083\u0000\u0000\u0d8d\u0d8f\u0005"+
		"\u0488\u0000\u0000\u0d8e\u0d90\u0003\u027a\u013d\u0000\u0d8f\u0d8e\u0001"+
		"\u0000\u0000\u0000\u0d8f\u0d90\u0001\u0000\u0000\u0000\u0d90\u0d91\u0001"+
		"\u0000\u0000\u0000\u0d91\u0d93\u0005\u0489\u0000\u0000\u0d92\u0d8c\u0001"+
		"\u0000\u0000\u0000\u0d92\u0d93\u0001\u0000\u0000\u0000\u0d93\u0dab\u0001"+
		"\u0000\u0000\u0000\u0d94\u0d96\u0005\u0488\u0000\u0000\u0d95\u0d97\u0003"+
		"\u027c\u013e\u0000\u0d96\u0d95\u0001\u0000\u0000\u0000\u0d96\u0d97\u0001"+
		"\u0000\u0000\u0000\u0d97\u0d98\u0001\u0000\u0000\u0000\u0d98\u0d9a\u0005"+
		"\u0489\u0000\u0000\u0d99\u0d94\u0001\u0000\u0000\u0000\u0d99\u0d9a\u0001"+
		"\u0000\u0000\u0000\u0d9a\u0d9b\u0001\u0000\u0000\u0000\u0d9b\u0da0\u0003"+
		"\u00e0p\u0000\u0d9c\u0d9e\u0005\f\u0000\u0000\u0d9d\u0d9c\u0001\u0000"+
		"\u0000\u0000\u0d9d\u0d9e\u0001\u0000\u0000\u0000\u0d9e\u0d9f\u0001\u0000"+
		"\u0000\u0000\u0d9f\u0da1\u0003\u0258\u012c\u0000\u0da0\u0d9d\u0001\u0000"+
		"\u0000\u0000\u0da0\u0da1\u0001\u0000\u0000\u0000\u0da1\u0dac\u0001\u0000"+
		"\u0000\u0000\u0da2\u0da3\u0005\u009b\u0000\u0000\u0da3\u0da8\u0003\u00e2"+
		"q\u0000\u0da4\u0da5\u0005\u048a\u0000\u0000\u0da5\u0da7\u0003\u00e2q\u0000"+
		"\u0da6\u0da4\u0001\u0000\u0000\u0000\u0da7\u0daa\u0001\u0000\u0000\u0000"+
		"\u0da8\u0da6\u0001\u0000\u0000\u0000\u0da8\u0da9\u0001\u0000\u0000\u0000"+
		"\u0da9\u0dac\u0001\u0000\u0000\u0000\u0daa\u0da8\u0001\u0000\u0000\u0000"+
		"\u0dab\u0d99\u0001\u0000\u0000\u0000\u0dab\u0da2\u0001\u0000\u0000\u0000"+
		"\u0dac\u0db9\u0001\u0000\u0000\u0000\u0dad\u0dae\u0005x\u0000\u0000\u0dae"+
		"\u0daf\u0005\u0194\u0000\u0000\u0daf\u0db0\u0005]\u0000\u0000\u0db0\u0db1"+
		"\u0005\u00bb\u0000\u0000\u0db1\u0db6\u0003\u00e2q\u0000\u0db2\u0db3\u0005"+
		"\u048a\u0000\u0000\u0db3\u0db5\u0003\u00e2q\u0000\u0db4\u0db2\u0001\u0000"+
		"\u0000\u0000\u0db5\u0db8\u0001\u0000\u0000\u0000\u0db6\u0db4\u0001\u0000"+
		"\u0000\u0000\u0db6\u0db7\u0001\u0000\u0000\u0000\u0db7\u0dba\u0001\u0000"+
		"\u0000\u0000\u0db8\u0db6\u0001\u0000\u0000\u0000\u0db9\u0dad\u0001\u0000"+
		"\u0000\u0000\u0db9\u0dba\u0001\u0000\u0000\u0000\u0dba\u00cf\u0001\u0000"+
		"\u0000\u0000\u0dbb\u0dbc\u0005h\u0000\u0000\u0dbc\u0dbe\u0005\u0187\u0000"+
		"\u0000\u0dbd\u0dbf\u0007,\u0000\u0000\u0dbe\u0dbd\u0001\u0000\u0000\u0000"+
		"\u0dbe\u0dbf\u0001\u0000\u0000\u0000\u0dbf\u0dc1\u0001\u0000\u0000\u0000"+
		"\u0dc0\u0dc2\u0005\u01dd\u0000\u0000\u0dc1\u0dc0\u0001\u0000\u0000\u0000"+
		"\u0dc1\u0dc2\u0001\u0000\u0000\u0000\u0dc2\u0dc3\u0001\u0000\u0000\u0000"+
		"\u0dc3\u0dc4\u0005T\u0000\u0000\u0dc4\u0dc6\u0005\u0497\u0000\u0000\u0dc5"+
		"\u0dc7\u0007\u0006\u0000\u0000\u0dc6\u0dc5\u0001\u0000\u0000\u0000\u0dc6"+
		"\u0dc7\u0001\u0000\u0000\u0000\u0dc7\u0dc8\u0001\u0000\u0000\u0000\u0dc8"+
		"\u0dc9\u0005Y\u0000\u0000\u0dc9\u0dca\u0005\u00af\u0000\u0000\u0dca\u0dd0"+
		"\u0003\u0236\u011b\u0000\u0dcb\u0dcc\u0005\u0083\u0000\u0000\u0dcc\u0dcd"+
		"\u0005\u0488\u0000\u0000\u0dcd\u0dce\u0003\u027a\u013d\u0000\u0dce\u0dcf"+
		"\u0005\u0489\u0000\u0000\u0dcf\u0dd1\u0001\u0000\u0000\u0000\u0dd0\u0dcb"+
		"\u0001\u0000\u0000\u0000\u0dd0\u0dd1\u0001\u0000\u0000\u0000\u0dd1\u0dd5"+
		"\u0001\u0000\u0000\u0000\u0dd2\u0dd3\u0005\u001a\u0000\u0000\u0dd3\u0dd4"+
		"\u0005\u009b\u0000\u0000\u0dd4\u0dd6\u0003\u0246\u0123\u0000\u0dd5\u0dd2"+
		"\u0001\u0000\u0000\u0000\u0dd5\u0dd6\u0001\u0000\u0000\u0000\u0dd6\u0ddd"+
		"\u0001\u0000\u0000\u0000\u0dd7\u0dd9\u0007-\u0000\u0000\u0dd8\u0dda\u0003"+
		"\u012a\u0095\u0000\u0dd9\u0dd8\u0001\u0000\u0000\u0000\u0dda\u0ddb\u0001"+
		"\u0000\u0000\u0000\u0ddb\u0dd9\u0001\u0000\u0000\u0000\u0ddb\u0ddc\u0001"+
		"\u0000\u0000\u0000\u0ddc\u0dde\u0001\u0000\u0000\u0000\u0ddd\u0dd7\u0001"+
		"\u0000\u0000\u0000\u0ddd\u0dde\u0001\u0000\u0000\u0000\u0dde\u0de5\u0001"+
		"\u0000\u0000\u0000\u0ddf\u0de1\u0005g\u0000\u0000\u0de0\u0de2\u0003\u012c"+
		"\u0096\u0000\u0de1\u0de0\u0001\u0000\u0000\u0000\u0de2\u0de3\u0001\u0000"+
		"\u0000\u0000\u0de3\u0de1\u0001\u0000\u0000\u0000\u0de3\u0de4\u0001\u0000"+
		"\u0000\u0000\u0de4\u0de6\u0001\u0000\u0000\u0000\u0de5\u0ddf\u0001\u0000"+
		"\u0000\u0000\u0de5\u0de6\u0001\u0000\u0000\u0000\u0de6\u0deb\u0001\u0000"+
		"\u0000\u0000\u0de7\u0de8\u0005P\u0000\u0000\u0de8\u0de9\u0003\u025e\u012f"+
		"\u0000\u0de9\u0dea\u0007.\u0000\u0000\u0dea\u0dec\u0001\u0000\u0000\u0000"+
		"\u0deb\u0de7\u0001\u0000\u0000\u0000\u0deb\u0dec\u0001\u0000\u0000\u0000"+
		"\u0dec\u0df8\u0001\u0000\u0000\u0000\u0ded\u0dee\u0005\u0488\u0000\u0000"+
		"\u0dee\u0df3\u0003\u00e4r\u0000\u0def\u0df0\u0005\u048a\u0000\u0000\u0df0"+
		"\u0df2\u0003\u00e4r\u0000\u0df1\u0def\u0001\u0000\u0000\u0000\u0df2\u0df5"+
		"\u0001\u0000\u0000\u0000\u0df3\u0df1\u0001\u0000\u0000\u0000\u0df3\u0df4"+
		"\u0001\u0000\u0000\u0000\u0df4\u0df6\u0001\u0000\u0000\u0000\u0df5\u0df3"+
		"\u0001\u0000\u0000\u0000\u0df6\u0df7\u0005\u0489\u0000\u0000\u0df7\u0df9"+
		"\u0001\u0000\u0000\u0000\u0df8\u0ded\u0001\u0000\u0000\u0000\u0df8\u0df9"+
		"\u0001\u0000\u0000\u0000\u0df9\u0e03\u0001\u0000\u0000\u0000\u0dfa\u0dfb"+
		"\u0005\u009b\u0000\u0000\u0dfb\u0e00\u0003\u00e2q\u0000\u0dfc\u0dfd\u0005"+
		"\u048a\u0000\u0000\u0dfd\u0dff\u0003\u00e2q\u0000\u0dfe\u0dfc\u0001\u0000"+
		"\u0000\u0000\u0dff\u0e02\u0001\u0000\u0000\u0000\u0e00\u0dfe\u0001\u0000"+
		"\u0000\u0000\u0e00\u0e01\u0001\u0000\u0000\u0000\u0e01\u0e04\u0001\u0000"+
		"\u0000\u0000\u0e02\u0e00\u0001\u0000\u0000\u0000\u0e03\u0dfa\u0001\u0000"+
		"\u0000\u0000\u0e03\u0e04\u0001\u0000\u0000\u0000\u0e04\u00d1\u0001\u0000"+
		"\u0000\u0000\u0e05\u0e06\u0005h\u0000\u0000\u0e06\u0e08\u0005\u02ad\u0000"+
		"\u0000\u0e07\u0e09\u0007,\u0000\u0000\u0e08\u0e07\u0001\u0000\u0000\u0000"+
		"\u0e08\u0e09\u0001\u0000\u0000\u0000\u0e09\u0e0b\u0001\u0000\u0000\u0000"+
		"\u0e0a\u0e0c\u0005\u01dd\u0000\u0000\u0e0b\u0e0a\u0001\u0000\u0000\u0000"+
		"\u0e0b\u0e0c\u0001\u0000\u0000\u0000\u0e0c\u0e0d\u0001\u0000\u0000\u0000"+
		"\u0e0d\u0e0e\u0005T\u0000\u0000\u0e0e\u0e10\u0005\u0497\u0000\u0000\u0e0f"+
		"\u0e11\u0007\u0006\u0000\u0000\u0e10\u0e0f\u0001\u0000\u0000\u0000\u0e10"+
		"\u0e11\u0001\u0000\u0000\u0000\u0e11\u0e12\u0001\u0000\u0000\u0000\u0e12"+
		"\u0e13\u0005Y\u0000\u0000\u0e13\u0e14\u0005\u00af\u0000\u0000\u0e14\u0e18"+
		"\u0003\u0236\u011b\u0000\u0e15\u0e16\u0005\u001a\u0000\u0000\u0e16\u0e17"+
		"\u0005\u009b\u0000\u0000\u0e17\u0e19\u0003\u0246\u0123\u0000\u0e18\u0e15"+
		"\u0001\u0000\u0000\u0000\u0e18\u0e19\u0001\u0000\u0000\u0000\u0e19\u0e20"+
		"\u0001\u0000\u0000\u0000\u0e1a\u0e1b\u0005\u025c\u0000\u0000\u0e1b\u0e1c"+
		"\u0005\u01c3\u0000\u0000\u0e1c\u0e1d\u0005\u0014\u0000\u0000\u0e1d\u0e1e"+
		"\u0005\u0481\u0000\u0000\u0e1e\u0e1f\u0005\u0497\u0000\u0000\u0e1f\u0e21"+
		"\u0005\u0480\u0000\u0000\u0e20\u0e1a\u0001\u0000\u0000\u0000\u0e20\u0e21"+
		"\u0001\u0000\u0000\u0000\u0e21\u0e26\u0001\u0000\u0000\u0000\u0e22\u0e23"+
		"\u0005P\u0000\u0000\u0e23\u0e24\u0003\u025e\u012f\u0000\u0e24\u0e25\u0007"+
		".\u0000\u0000\u0e25\u0e27\u0001\u0000\u0000\u0000\u0e26\u0e22\u0001\u0000"+
		"\u0000\u0000\u0e26\u0e27\u0001\u0000\u0000\u0000\u0e27\u0e33\u0001\u0000"+
		"\u0000\u0000\u0e28\u0e29\u0005\u0488\u0000\u0000\u0e29\u0e2e\u0003\u00e4"+
		"r\u0000\u0e2a\u0e2b\u0005\u048a\u0000\u0000\u0e2b\u0e2d\u0003\u00e4r\u0000"+
		"\u0e2c\u0e2a\u0001\u0000\u0000\u0000\u0e2d\u0e30\u0001\u0000\u0000\u0000"+
		"\u0e2e\u0e2c\u0001\u0000\u0000\u0000\u0e2e\u0e2f\u0001\u0000\u0000\u0000"+
		"\u0e2f\u0e31\u0001\u0000\u0000\u0000\u0e30\u0e2e\u0001\u0000\u0000\u0000"+
		"\u0e31\u0e32\u0005\u0489\u0000\u0000\u0e32\u0e34\u0001\u0000\u0000\u0000"+
		"\u0e33\u0e28\u0001\u0000\u0000\u0000\u0e33\u0e34\u0001\u0000\u0000\u0000"+
		"\u0e34\u0e3e\u0001\u0000\u0000\u0000\u0e35\u0e36\u0005\u009b\u0000\u0000"+
		"\u0e36\u0e3b\u0003\u00e2q\u0000\u0e37\u0e38\u0005\u048a\u0000\u0000\u0e38"+
		"\u0e3a\u0003\u00e2q\u0000\u0e39\u0e37\u0001\u0000\u0000\u0000\u0e3a\u0e3d"+
		"\u0001\u0000\u0000\u0000\u0e3b\u0e39\u0001\u0000\u0000\u0000\u0e3b\u0e3c"+
		"\u0001\u0000\u0000\u0000\u0e3c\u0e3f\u0001\u0000\u0000\u0000\u0e3d\u0e3b"+
		"\u0001\u0000\u0000\u0000\u0e3e\u0e35\u0001\u0000\u0000\u0000\u0e3e\u0e3f"+
		"\u0001\u0000\u0000\u0000\u0e3f\u00d3\u0001\u0000\u0000\u0000\u0e40\u0e42"+
		"\u0005\u008f\u0000\u0000\u0e41\u0e43\u0007/\u0000\u0000\u0e42\u0e41\u0001"+
		"\u0000\u0000\u0000\u0e42\u0e43\u0001\u0000\u0000\u0000\u0e43\u0e45\u0001"+
		"\u0000\u0000\u0000\u0e44\u0e46\u0005Y\u0000\u0000\u0e45\u0e44\u0001\u0000"+
		"\u0000\u0000\u0e45\u0e46\u0001\u0000\u0000\u0000\u0e46\u0e47\u0001\u0000"+
		"\u0000\u0000\u0e47\u0e4d\u0003\u0236\u011b\u0000\u0e48\u0e49\u0005\u0083"+
		"\u0000\u0000\u0e49\u0e4a\u0005\u0488\u0000\u0000\u0e4a\u0e4b\u0003\u027a"+
		"\u013d\u0000\u0e4b\u0e4c\u0005\u0489\u0000\u0000\u0e4c\u0e4e\u0001\u0000"+
		"\u0000\u0000\u0e4d\u0e48\u0001\u0000\u0000\u0000\u0e4d\u0e4e\u0001\u0000"+
		"\u0000\u0000\u0e4e\u0e5f\u0001\u0000\u0000\u0000\u0e4f\u0e50\u0005\u0488"+
		"\u0000\u0000\u0e50\u0e51\u0003\u027a\u013d\u0000\u0e51\u0e52\u0005\u0489"+
		"\u0000\u0000\u0e52\u0e54\u0001\u0000\u0000\u0000\u0e53\u0e4f\u0001\u0000"+
		"\u0000\u0000\u0e53\u0e54\u0001\u0000\u0000\u0000\u0e54\u0e55\u0001\u0000"+
		"\u0000\u0000\u0e55\u0e60\u0003\u00e0p\u0000\u0e56\u0e57\u0005\u009b\u0000"+
		"\u0000\u0e57\u0e5c\u0003\u00e2q\u0000\u0e58\u0e59\u0005\u048a\u0000\u0000"+
		"\u0e59\u0e5b\u0003\u00e2q\u0000\u0e5a\u0e58\u0001\u0000\u0000\u0000\u0e5b"+
		"\u0e5e\u0001\u0000\u0000\u0000\u0e5c\u0e5a\u0001\u0000\u0000\u0000\u0e5c"+
		"\u0e5d\u0001\u0000\u0000\u0000\u0e5d\u0e60\u0001\u0000\u0000\u0000\u0e5e"+
		"\u0e5c\u0001\u0000\u0000\u0000\u0e5f\u0e53\u0001\u0000\u0000\u0000\u0e5f"+
		"\u0e56\u0001\u0000\u0000\u0000\u0e60\u00d5\u0001\u0000\u0000\u0000\u0e61"+
		"\u0e63\u0003\u010e\u0087\u0000\u0e62\u0e64\u0003\u00e6s\u0000\u0e63\u0e62"+
		"\u0001\u0000\u0000\u0000\u0e63\u0e64\u0001\u0000\u0000\u0000\u0e64\u0ea3"+
		"\u0001\u0000\u0000\u0000\u0e65\u0e67\u0003\u010a\u0085\u0000\u0e66\u0e68"+
		"\u0003\u00e6s\u0000\u0e67\u0e66\u0001\u0000\u0000\u0000\u0e67\u0e68\u0001"+
		"\u0000\u0000\u0000\u0e68\u0ea3\u0001\u0000\u0000\u0000\u0e69\u0e6c\u0003"+
		"\u0110\u0088\u0000\u0e6a\u0e6c\u0003\u010c\u0086\u0000\u0e6b\u0e69\u0001"+
		"\u0000\u0000\u0000\u0e6b\u0e6a\u0001\u0000\u0000\u0000\u0e6c\u0e6e\u0001"+
		"\u0000\u0000\u0000\u0e6d\u0e6f\u0003\u0114\u008a\u0000\u0e6e\u0e6d\u0001"+
		"\u0000\u0000\u0000\u0e6f\u0e70\u0001\u0000\u0000\u0000\u0e70\u0e6e\u0001"+
		"\u0000\u0000\u0000\u0e70\u0e71\u0001\u0000\u0000\u0000\u0e71\u0e7a\u0001"+
		"\u0000\u0000\u0000\u0e72\u0e74\u0005\u00b7\u0000\u0000\u0e73\u0e75\u0007"+
		"0\u0000\u0000\u0e74\u0e73\u0001\u0000\u0000\u0000\u0e74\u0e75\u0001\u0000"+
		"\u0000\u0000\u0e75\u0e78\u0001\u0000\u0000\u0000\u0e76\u0e79\u0003\u010e"+
		"\u0087\u0000\u0e77\u0e79\u0003\u010a\u0085\u0000\u0e78\u0e76\u0001\u0000"+
		"\u0000\u0000\u0e78\u0e77\u0001\u0000\u0000\u0000\u0e79\u0e7b\u0001\u0000"+
		"\u0000\u0000\u0e7a\u0e72\u0001\u0000\u0000\u0000\u0e7a\u0e7b\u0001\u0000"+
		"\u0000\u0000\u0e7b\u0e7d\u0001\u0000\u0000\u0000\u0e7c\u0e7e\u0003\u00f8"+
		"|\u0000\u0e7d\u0e7c\u0001\u0000\u0000\u0000\u0e7d\u0e7e\u0001\u0000\u0000"+
		"\u0000\u0e7e\u0e80\u0001\u0000\u0000\u0000\u0e7f\u0e81\u0003\u0138\u009c"+
		"\u0000\u0e80\u0e7f\u0001\u0000\u0000\u0000\u0e80\u0e81\u0001\u0000\u0000"+
		"\u0000\u0e81\u0e83\u0001\u0000\u0000\u0000\u0e82\u0e84\u0003\u00e6s\u0000"+
		"\u0e83\u0e82\u0001\u0000\u0000\u0000\u0e83\u0e84\u0001\u0000\u0000\u0000"+
		"\u0e84\u0ea3\u0001\u0000\u0000\u0000\u0e85\u0e87\u0003\u010c\u0086\u0000"+
		"\u0e86\u0e88\u0003\u0112\u0089\u0000\u0e87\u0e86\u0001\u0000\u0000\u0000"+
		"\u0e88\u0e89\u0001\u0000\u0000\u0000\u0e89\u0e87\u0001\u0000\u0000\u0000"+
		"\u0e89\u0e8a\u0001\u0000\u0000\u0000\u0e8a\u0e90\u0001\u0000\u0000\u0000"+
		"\u0e8b\u0e8d\u0005\u00b7\u0000\u0000\u0e8c\u0e8e\u00070\u0000\u0000\u0e8d"+
		"\u0e8c\u0001\u0000\u0000\u0000\u0e8d\u0e8e\u0001\u0000\u0000\u0000\u0e8e"+
		"\u0e8f\u0001\u0000\u0000\u0000\u0e8f\u0e91\u0003\u010a\u0085\u0000\u0e90"+
		"\u0e8b\u0001\u0000\u0000\u0000\u0e90\u0e91\u0001\u0000\u0000\u0000\u0e91"+
		"\u0e93\u0001\u0000\u0000\u0000\u0e92\u0e94\u0003\u00f8|\u0000\u0e93\u0e92"+
		"\u0001\u0000\u0000\u0000\u0e93\u0e94\u0001\u0000\u0000\u0000\u0e94\u0e96"+
		"\u0001\u0000\u0000\u0000\u0e95\u0e97\u0003\u0138\u009c\u0000\u0e96\u0e95"+
		"\u0001\u0000\u0000\u0000\u0e96\u0e97\u0001\u0000\u0000\u0000\u0e97\u0e99"+
		"\u0001\u0000\u0000\u0000\u0e98";
	private static final String _serializedATNSegment2 =
		"\u0e9a\u0003\u00e6s\u0000\u0e99\u0e98\u0001\u0000\u0000\u0000\u0e99\u0e9a"+
		"\u0001\u0000\u0000\u0000\u0e9a\u0ea3\u0001\u0000\u0000\u0000\u0e9b\u0e9e"+
		"\u0003\u0110\u0088\u0000\u0e9c\u0e9d\u0005\u048a\u0000\u0000\u0e9d\u0e9f"+
		"\u0003\u0116\u008b\u0000\u0e9e\u0e9c\u0001\u0000\u0000\u0000\u0e9f\u0ea0"+
		"\u0001\u0000\u0000\u0000\u0ea0\u0e9e\u0001\u0000\u0000\u0000\u0ea0\u0ea1"+
		"\u0001\u0000\u0000\u0000\u0ea1\u0ea3\u0001\u0000\u0000\u0000\u0ea2\u0e61"+
		"\u0001\u0000\u0000\u0000\u0ea2\u0e65\u0001\u0000\u0000\u0000\u0ea2\u0e6b"+
		"\u0001\u0000\u0000\u0000\u0ea2\u0e85\u0001\u0000\u0000\u0000\u0ea2\u0e9b"+
		"\u0001\u0000\u0000\u0000\u0ea3\u00d7\u0001\u0000\u0000\u0000\u0ea4\u0ea5"+
		"\u0005\u00bf\u0000\u0000\u0ea5\u0ea7\u0005\u0488\u0000\u0000\u0ea6\u0ea8"+
		"\u0003\u0284\u0142\u0000\u0ea7\u0ea6\u0001\u0000\u0000\u0000\u0ea7\u0ea8"+
		"\u0001\u0000\u0000\u0000\u0ea8\u0ea9\u0001\u0000\u0000\u0000\u0ea9\u0eb2"+
		"\u0005\u0489\u0000\u0000\u0eaa\u0eab\u0005\u048a\u0000\u0000\u0eab\u0ead"+
		"\u0005\u0488\u0000\u0000\u0eac\u0eae\u0003\u0284\u0142\u0000\u0ead\u0eac"+
		"\u0001\u0000\u0000\u0000\u0ead\u0eae\u0001\u0000\u0000\u0000\u0eae\u0eaf"+
		"\u0001\u0000\u0000\u0000\u0eaf\u0eb1\u0005\u0489\u0000\u0000\u0eb0\u0eaa"+
		"\u0001\u0000\u0000\u0000\u0eb1\u0eb4\u0001\u0000\u0000\u0000\u0eb2\u0eb0"+
		"\u0001\u0000\u0000\u0000\u0eb2\u0eb3\u0001\u0000\u0000\u0000\u0eb3\u00d9"+
		"\u0001\u0000\u0000\u0000\u0eb4\u0eb2\u0001\u0000\u0000\u0000\u0eb5\u0eb7"+
		"\u0005\u00c3\u0000\u0000\u0eb6\u0eb8\u0005\u023e\u0000\u0000\u0eb7\u0eb6"+
		"\u0001\u0000\u0000\u0000\u0eb7\u0eb8\u0001\u0000\u0000\u0000\u0eb8\u0eb9"+
		"\u0001\u0000\u0000\u0000\u0eb9\u0ebe\u00034\u001a\u0000\u0eba\u0ebb\u0005"+
		"\u048a\u0000\u0000\u0ebb\u0ebd\u00034\u001a\u0000\u0ebc\u0eba\u0001\u0000"+
		"\u0000\u0000\u0ebd\u0ec0\u0001\u0000\u0000\u0000\u0ebe\u0ebc\u0001\u0000"+
		"\u0000\u0000\u0ebe\u0ebf\u0001\u0000\u0000\u0000\u0ebf\u00db\u0001\u0000"+
		"\u0000\u0000\u0ec0\u0ebe\u0001\u0000\u0000\u0000\u0ec1\u0ec2\u0005\u00af"+
		"\u0000\u0000\u0ec2\u0ec4\u0003\u0236\u011b\u0000\u0ec3\u0ec5\u0003\u00f8"+
		"|\u0000\u0ec4\u0ec3\u0001\u0000\u0000\u0000\u0ec4\u0ec5\u0001\u0000\u0000"+
		"\u0000\u0ec5\u0ec7\u0001\u0000\u0000\u0000\u0ec6\u0ec8\u0003\u0138\u009c"+
		"\u0000\u0ec7\u0ec6\u0001\u0000\u0000\u0000\u0ec7\u0ec8\u0001\u0000\u0000"+
		"\u0000\u0ec8\u00dd\u0001\u0000\u0000\u0000\u0ec9\u0ecc\u0003\u00f4z\u0000"+
		"\u0eca\u0ecc\u0003\u00f6{\u0000\u0ecb\u0ec9\u0001\u0000\u0000\u0000\u0ecb"+
		"\u0eca\u0001\u0000\u0000\u0000\u0ecc\u00df\u0001\u0000\u0000\u0000\u0ecd"+
		"\u0ee0\u0003\u00d6k\u0000\u0ece\u0ecf\u00071\u0000\u0000\u0ecf\u0ed1\u0005"+
		"\u0488\u0000\u0000\u0ed0\u0ed2\u0003\u0284\u0142\u0000\u0ed1\u0ed0\u0001"+
		"\u0000\u0000\u0000\u0ed1\u0ed2\u0001\u0000\u0000\u0000\u0ed2\u0ed3\u0001"+
		"\u0000\u0000\u0000\u0ed3\u0edc\u0005\u0489\u0000\u0000\u0ed4\u0ed5\u0005"+
		"\u048a\u0000\u0000\u0ed5\u0ed7\u0005\u0488\u0000\u0000\u0ed6\u0ed8\u0003"+
		"\u0284\u0142\u0000\u0ed7\u0ed6\u0001\u0000\u0000\u0000\u0ed7\u0ed8\u0001"+
		"\u0000\u0000\u0000\u0ed8\u0ed9\u0001\u0000\u0000\u0000\u0ed9\u0edb\u0005"+
		"\u0489\u0000\u0000\u0eda\u0ed4\u0001\u0000\u0000\u0000\u0edb\u0ede\u0001"+
		"\u0000\u0000\u0000\u0edc\u0eda\u0001\u0000\u0000\u0000\u0edc\u0edd\u0001"+
		"\u0000\u0000\u0000\u0edd\u0ee0\u0001\u0000\u0000\u0000\u0ede\u0edc\u0001"+
		"\u0000\u0000\u0000\u0edf\u0ecd\u0001\u0000\u0000\u0000\u0edf\u0ece\u0001"+
		"\u0000\u0000\u0000\u0ee0\u00e1\u0001\u0000\u0000\u0000\u0ee1\u0ee2\u0003"+
		"\u023a\u011d\u0000\u0ee2\u0ee5\u0005\u047f\u0000\u0000\u0ee3\u0ee6\u0003"+
		"\u02c4\u0162\u0000\u0ee4\u0ee6\u0005+\u0000\u0000\u0ee5\u0ee3\u0001\u0000"+
		"\u0000\u0000\u0ee5\u0ee4\u0001\u0000\u0000\u0000\u0ee6\u00e3\u0001\u0000"+
		"\u0000\u0000\u0ee7\u0eea\u0003\u0258\u012c\u0000\u0ee8\u0eea\u0005\u04a2"+
		"\u0000\u0000\u0ee9\u0ee7\u0001\u0000\u0000\u0000\u0ee9\u0ee8\u0001\u0000"+
		"\u0000\u0000\u0eea\u00e5\u0001\u0000\u0000\u0000\u0eeb\u0eec\u0005B\u0000"+
		"\u0000\u0eec\u0ef2\u0005\u00bb\u0000\u0000\u0eed\u0eee\u0005i\u0000\u0000"+
		"\u0eee\u0eef\u0005R\u0000\u0000\u0eef\u0ef0\u0005\u0265\u0000\u0000\u0ef0"+
		"\u0ef2\u0005\u0202\u0000\u0000\u0ef1\u0eeb\u0001\u0000\u0000\u0000\u0ef1"+
		"\u0eed\u0001\u0000\u0000\u0000\u0ef2\u0ef4\u0001\u0000\u0000\u0000\u0ef3"+
		"\u0ef5\u0003\u029a\u014d\u0000\u0ef4\u0ef3\u0001\u0000\u0000\u0000\u0ef4"+
		"\u0ef5\u0001\u0000\u0000\u0000\u0ef5\u00e7\u0001\u0000\u0000\u0000\u0ef6"+
		"\u0ef8\u0005-\u0000\u0000\u0ef7\u0ef9\u0005l\u0000\u0000\u0ef8\u0ef7\u0001"+
		"\u0000\u0000\u0000\u0ef8\u0ef9\u0001\u0000\u0000\u0000\u0ef9\u0efb\u0001"+
		"\u0000\u0000\u0000\u0efa\u0efc\u0005\u023b\u0000\u0000\u0efb\u0efa\u0001"+
		"\u0000\u0000\u0000\u0efb\u0efc\u0001\u0000\u0000\u0000\u0efc\u0efe\u0001"+
		"\u0000\u0000\u0000\u0efd\u0eff\u0005P\u0000\u0000\u0efe\u0efd\u0001\u0000"+
		"\u0000\u0000\u0efe\u0eff\u0001\u0000\u0000\u0000\u0eff\u0f00\u0001\u0000"+
		"\u0000\u0000\u0f00\u0f01\u0005E\u0000\u0000\u0f01\u0f06\u0003\u0236\u011b"+
		"\u0000\u0f02\u0f04\u0005\f\u0000\u0000\u0f03\u0f02\u0001\u0000\u0000\u0000"+
		"\u0f03\u0f04\u0001\u0000\u0000\u0000\u0f04\u0f05\u0001\u0000\u0000\u0000"+
		"\u0f05\u0f07\u0003\u0258\u012c\u0000\u0f06\u0f03\u0001\u0000\u0000\u0000"+
		"\u0f06\u0f07\u0001\u0000\u0000\u0000\u0f07\u0f0d\u0001\u0000\u0000\u0000"+
		"\u0f08\u0f09\u0005\u0083\u0000\u0000\u0f09\u0f0a\u0005\u0488\u0000\u0000"+
		"\u0f0a\u0f0b\u0003\u027a\u013d\u0000\u0f0b\u0f0c\u0005\u0489\u0000\u0000"+
		"\u0f0c\u0f0e\u0001\u0000\u0000\u0000\u0f0d\u0f08\u0001\u0000\u0000\u0000"+
		"\u0f0d\u0f0e\u0001\u0000\u0000\u0000\u0f0e\u0f11\u0001\u0000\u0000\u0000"+
		"\u0f0f\u0f10\u0005\u00c1\u0000\u0000\u0f10\u0f12\u0003\u02c4\u0162\u0000"+
		"\u0f11\u0f0f\u0001\u0000\u0000\u0000\u0f11\u0f12\u0001\u0000\u0000\u0000"+
		"\u0f12\u0f14\u0001\u0000\u0000\u0000\u0f13\u0f15\u0003\u00f8|\u0000\u0f14"+
		"\u0f13\u0001\u0000\u0000\u0000\u0f14\u0f15\u0001\u0000\u0000\u0000\u0f15"+
		"\u0f18\u0001\u0000\u0000\u0000\u0f16\u0f17\u0005e\u0000\u0000\u0f17\u0f19"+
		"\u0003\u013a\u009d\u0000\u0f18\u0f16\u0001\u0000\u0000\u0000\u0f18\u0f19"+
		"\u0001\u0000\u0000\u0000\u0f19\u00e9\u0001\u0000\u0000\u0000\u0f1a\u0f1c"+
		"\u0005-\u0000\u0000\u0f1b\u0f1d\u0005l\u0000\u0000\u0f1c\u0f1b\u0001\u0000"+
		"\u0000\u0000\u0f1c\u0f1d\u0001\u0000\u0000\u0000\u0f1d\u0f1f\u0001\u0000"+
		"\u0000\u0000\u0f1e\u0f20\u0005\u023b\u0000\u0000\u0f1f\u0f1e\u0001\u0000"+
		"\u0000\u0000\u0f1f\u0f20\u0001\u0000\u0000\u0000\u0f20\u0f22\u0001\u0000"+
		"\u0000\u0000\u0f21\u0f23\u0005P\u0000\u0000\u0f22\u0f21\u0001\u0000\u0000"+
		"\u0000\u0f22\u0f23\u0001\u0000\u0000\u0000\u0f23\u0f4b\u0001\u0000\u0000"+
		"\u0000\u0f24\u0f27\u0003\u0236\u011b\u0000\u0f25\u0f26\u0005\u0487\u0000"+
		"\u0000\u0f26\u0f28\u0005\u0478\u0000\u0000\u0f27\u0f25\u0001\u0000\u0000"+
		"\u0000\u0f27\u0f28\u0001\u0000\u0000\u0000\u0f28\u0f31\u0001\u0000\u0000"+
		"\u0000\u0f29\u0f2a\u0005\u048a\u0000\u0000\u0f2a\u0f2d\u0003\u0236\u011b"+
		"\u0000\u0f2b\u0f2c\u0005\u0487\u0000\u0000\u0f2c\u0f2e\u0005\u0478\u0000"+
		"\u0000\u0f2d\u0f2b\u0001\u0000\u0000\u0000\u0f2d\u0f2e\u0001\u0000\u0000"+
		"\u0000\u0f2e\u0f30\u0001\u0000\u0000\u0000\u0f2f\u0f29\u0001\u0000\u0000"+
		"\u0000\u0f30\u0f33\u0001\u0000\u0000\u0000\u0f31\u0f2f\u0001\u0000\u0000"+
		"\u0000\u0f31\u0f32\u0001\u0000\u0000\u0000\u0f32\u0f34\u0001\u0000\u0000"+
		"\u0000\u0f33\u0f31\u0001\u0000\u0000\u0000\u0f34\u0f35\u0005E\u0000\u0000"+
		"\u0f35\u0f36\u0003\u00fc~\u0000\u0f36\u0f4c\u0001\u0000\u0000\u0000\u0f37"+
		"\u0f38\u0005E\u0000\u0000\u0f38\u0f3b\u0003\u0236\u011b\u0000\u0f39\u0f3a"+
		"\u0005\u0487\u0000\u0000\u0f3a\u0f3c\u0005\u0478\u0000\u0000\u0f3b\u0f39"+
		"\u0001\u0000\u0000\u0000\u0f3b\u0f3c\u0001\u0000\u0000\u0000\u0f3c\u0f45"+
		"\u0001\u0000\u0000\u0000\u0f3d\u0f3e\u0005\u048a\u0000\u0000\u0f3e\u0f41"+
		"\u0003\u0236\u011b\u0000\u0f3f\u0f40\u0005\u0487\u0000\u0000\u0f40\u0f42"+
		"\u0005\u0478\u0000\u0000\u0f41\u0f3f\u0001\u0000\u0000\u0000\u0f41\u0f42"+
		"\u0001\u0000\u0000\u0000\u0f42\u0f44\u0001\u0000\u0000\u0000\u0f43\u0f3d"+
		"\u0001\u0000\u0000\u0000\u0f44\u0f47\u0001\u0000\u0000\u0000\u0f45\u0f43"+
		"\u0001\u0000\u0000\u0000\u0f45\u0f46\u0001\u0000\u0000\u0000\u0f46\u0f48"+
		"\u0001\u0000\u0000\u0000\u0f47\u0f45\u0001\u0000\u0000\u0000\u0f48\u0f49"+
		"\u0005\u00be\u0000\u0000\u0f49\u0f4a\u0003\u00fc~\u0000\u0f4a\u0f4c\u0001"+
		"\u0000\u0000\u0000\u0f4b\u0f24\u0001\u0000\u0000\u0000\u0f4b\u0f37\u0001"+
		"\u0000\u0000\u0000\u0f4c\u0f4f\u0001\u0000\u0000\u0000\u0f4d\u0f4e\u0005"+
		"\u00c1\u0000\u0000\u0f4e\u0f50\u0003\u02c4\u0162\u0000\u0f4f\u0f4d\u0001"+
		"\u0000\u0000\u0000\u0f4f\u0f50\u0001\u0000\u0000\u0000\u0f50\u00eb\u0001"+
		"\u0000\u0000\u0000\u0f51\u0f52\u0005\u01bd\u0000\u0000\u0f52\u0f53\u0003"+
		"\u0236\u011b\u0000\u0f53\u0f58\u0005\u021e\u0000\u0000\u0f54\u0f56\u0005"+
		"\f\u0000\u0000\u0f55\u0f54\u0001\u0000\u0000\u0000\u0f55\u0f56\u0001\u0000"+
		"\u0000\u0000\u0f56\u0f57\u0001\u0000\u0000\u0000\u0f57\u0f59\u0003\u0258"+
		"\u012c\u0000\u0f58\u0f55\u0001\u0000\u0000\u0000\u0f58\u0f59\u0001\u0000"+
		"\u0000\u0000\u0f59\u00ed\u0001\u0000\u0000\u0000\u0f5a\u0f5b\u0005\u01bd"+
		"\u0000\u0000\u0f5b\u0f5c\u0003\u0236\u011b\u0000\u0f5c\u0f5d\u0005\u0088"+
		"\u0000\u0000\u0f5d\u0f64\u0003\u0258\u012c\u0000\u0f5e\u0f5f\u0003\u02cc"+
		"\u0166\u0000\u0f5f\u0f60\u0005\u0488\u0000\u0000\u0f60\u0f61\u0003\u0286"+
		"\u0143\u0000\u0f61\u0f62\u0005\u0489\u0000\u0000\u0f62\u0f65\u0001\u0000"+
		"\u0000\u0000\u0f63\u0f65\u00072\u0000\u0000\u0f64\u0f5e\u0001\u0000\u0000"+
		"\u0000\u0f64\u0f63\u0001\u0000\u0000\u0000\u0f65\u0f68\u0001\u0000\u0000"+
		"\u0000\u0f66\u0f67\u0005\u00c1\u0000\u0000\u0f67\u0f69\u0003\u02c4\u0162"+
		"\u0000\u0f68\u0f66\u0001\u0000\u0000\u0000\u0f68\u0f69\u0001\u0000\u0000"+
		"\u0000\u0f69\u0f6c\u0001\u0000\u0000\u0000\u0f6a\u0f6b\u0005e\u0000\u0000"+
		"\u0f6b\u0f6d\u0003\u013a\u009d\u0000\u0f6c\u0f6a\u0001\u0000\u0000\u0000"+
		"\u0f6c\u0f6d\u0001\u0000\u0000\u0000\u0f6d\u00ef\u0001\u0000\u0000\u0000"+
		"\u0f6e\u0f6f\u0005\u01bd\u0000\u0000\u0f6f\u0f70\u0003\u0236\u011b\u0000"+
		"\u0f70\u0f71\u0005\u0088\u0000\u0000\u0f71\u0f74\u00073\u0000\u0000\u0f72"+
		"\u0f73\u0005\u00c1\u0000\u0000\u0f73\u0f75\u0003\u02c4\u0162\u0000\u0f74"+
		"\u0f72\u0001\u0000\u0000\u0000\u0f74\u0f75\u0001\u0000\u0000\u0000\u0f75"+
		"\u0f78\u0001\u0000\u0000\u0000\u0f76\u0f77\u0005e\u0000\u0000\u0f77\u0f79"+
		"\u0003\u013a\u009d\u0000\u0f78\u0f76\u0001\u0000\u0000\u0000\u0f78\u0f79"+
		"\u0001\u0000\u0000\u0000\u0f79\u00f1\u0001\u0000\u0000\u0000\u0f7a\u0f7b"+
		"\u0005\u01bd\u0000\u0000\u0f7b\u0f7c\u0003\u0236\u011b\u0000\u0f7c\u0f7d"+
		"\u0005\u016c\u0000\u0000\u0f7d\u00f3\u0001\u0000\u0000\u0000\u0f7e\u0f80"+
		"\u0005\u00bb\u0000\u0000\u0f7f\u0f81\u0005l\u0000\u0000\u0f80\u0f7f\u0001"+
		"\u0000\u0000\u0000\u0f80\u0f81\u0001\u0000\u0000\u0000\u0f81\u0f83\u0001"+
		"\u0000\u0000\u0000\u0f82\u0f84\u0005P\u0000\u0000\u0f83\u0f82\u0001\u0000"+
		"\u0000\u0000\u0f83\u0f84\u0001\u0000\u0000\u0000\u0f84\u0f85\u0001\u0000"+
		"\u0000\u0000\u0f85\u0f8a\u0003\u00fc~\u0000\u0f86\u0f88\u0005\f\u0000"+
		"\u0000\u0f87\u0f86\u0001\u0000\u0000\u0000\u0f87\u0f88\u0001\u0000\u0000"+
		"\u0000\u0f88\u0f89\u0001\u0000\u0000\u0000\u0f89\u0f8b\u0003\u0258\u012c"+
		"\u0000\u0f8a\u0f87\u0001\u0000\u0000\u0000\u0f8a\u0f8b\u0001\u0000\u0000"+
		"\u0000\u0f8b\u0f8c\u0001\u0000\u0000\u0000\u0f8c\u0f8d\u0005\u009b\u0000"+
		"\u0000\u0f8d\u0f92\u0003\u00e2q\u0000\u0f8e\u0f8f\u0005\u048a\u0000\u0000"+
		"\u0f8f\u0f91\u0003\u00e2q\u0000\u0f90\u0f8e\u0001\u0000\u0000\u0000\u0f91"+
		"\u0f94\u0001\u0000\u0000\u0000\u0f92\u0f90\u0001\u0000\u0000\u0000\u0f92"+
		"\u0f93\u0001\u0000\u0000\u0000\u0f93\u0f97\u0001\u0000\u0000\u0000\u0f94"+
		"\u0f92\u0001\u0000\u0000\u0000\u0f95\u0f96\u0005\u00c1\u0000\u0000\u0f96"+
		"\u0f98\u0003\u02c4\u0162\u0000\u0f97\u0f95\u0001\u0000\u0000\u0000\u0f97"+
		"\u0f98\u0001\u0000\u0000\u0000\u0f98\u0f9a\u0001\u0000\u0000\u0000\u0f99"+
		"\u0f9b\u0003\u00f8|\u0000\u0f9a\u0f99\u0001\u0000\u0000\u0000\u0f9a\u0f9b"+
		"\u0001\u0000\u0000\u0000\u0f9b\u0f9d\u0001\u0000\u0000\u0000\u0f9c\u0f9e"+
		"\u0003\u0138\u009c\u0000\u0f9d\u0f9c\u0001\u0000\u0000\u0000\u0f9d\u0f9e"+
		"\u0001\u0000\u0000\u0000\u0f9e\u00f5\u0001\u0000\u0000\u0000\u0f9f\u0fa1"+
		"\u0005\u00bb\u0000\u0000\u0fa0\u0fa2\u0005l\u0000\u0000\u0fa1\u0fa0\u0001"+
		"\u0000\u0000\u0000\u0fa1\u0fa2\u0001\u0000\u0000\u0000\u0fa2\u0fa4\u0001"+
		"\u0000\u0000\u0000\u0fa3\u0fa5\u0005P\u0000\u0000\u0fa4\u0fa3\u0001\u0000"+
		"\u0000\u0000\u0fa4\u0fa5\u0001\u0000\u0000\u0000\u0fa5\u0fa6\u0001\u0000"+
		"\u0000\u0000\u0fa6\u0fa7\u0003\u00fc~\u0000\u0fa7\u0fa8\u0005\u009b\u0000"+
		"\u0000\u0fa8\u0fad\u0003\u00e2q\u0000\u0fa9\u0faa\u0005\u048a\u0000\u0000"+
		"\u0faa\u0fac\u0003\u00e2q\u0000\u0fab\u0fa9\u0001\u0000\u0000\u0000\u0fac"+
		"\u0faf\u0001\u0000\u0000\u0000\u0fad\u0fab\u0001\u0000\u0000\u0000\u0fad"+
		"\u0fae\u0001\u0000\u0000\u0000\u0fae\u0fb2\u0001\u0000\u0000\u0000\u0faf"+
		"\u0fad\u0001\u0000\u0000\u0000\u0fb0\u0fb1\u0005\u00c1\u0000\u0000\u0fb1"+
		"\u0fb3\u0003\u02c4\u0162\u0000\u0fb2\u0fb0\u0001\u0000\u0000\u0000\u0fb2"+
		"\u0fb3\u0001\u0000\u0000\u0000\u0fb3\u00f7\u0001\u0000\u0000\u0000\u0fb4"+
		"\u0fb5\u0005~\u0000\u0000\u0fb5\u0fb6\u0005\u0014\u0000\u0000\u0fb6\u0fbb"+
		"\u0003\u00fa}\u0000\u0fb7\u0fb8\u0005\u048a\u0000\u0000\u0fb8\u0fba\u0003"+
		"\u00fa}\u0000\u0fb9\u0fb7\u0001\u0000\u0000\u0000\u0fba\u0fbd\u0001\u0000"+
		"\u0000\u0000\u0fbb\u0fb9\u0001\u0000\u0000\u0000\u0fbb\u0fbc\u0001\u0000"+
		"\u0000\u0000\u0fbc\u00f9\u0001\u0000\u0000\u0000\u0fbd\u0fbb\u0001\u0000"+
		"\u0000\u0000\u0fbe\u0fc0\u0003\u02c4\u0162\u0000\u0fbf\u0fc1\u00074\u0000"+
		"\u0000\u0fc0\u0fbf\u0001\u0000\u0000\u0000\u0fc0\u0fc1\u0001\u0000\u0000"+
		"\u0000\u0fc1\u00fb\u0001\u0000\u0000\u0000\u0fc2\u0fc7\u0003\u00fe\u007f"+
		"\u0000\u0fc3\u0fc4\u0005\u048a\u0000\u0000\u0fc4\u0fc6\u0003\u00fe\u007f"+
		"\u0000\u0fc5\u0fc3\u0001\u0000\u0000\u0000\u0fc6\u0fc9\u0001\u0000\u0000"+
		"\u0000\u0fc7\u0fc5\u0001\u0000\u0000\u0000\u0fc7\u0fc8\u0001\u0000\u0000"+
		"\u0000\u0fc8\u00fd\u0001\u0000\u0000\u0000\u0fc9\u0fc7\u0001\u0000\u0000"+
		"\u0000\u0fca\u0fce\u0003\u0100\u0080\u0000\u0fcb\u0fcd\u0003\u0106\u0083"+
		"\u0000\u0fcc\u0fcb\u0001\u0000\u0000\u0000\u0fcd\u0fd0\u0001\u0000\u0000"+
		"\u0000\u0fce\u0fcc\u0001\u0000\u0000\u0000\u0fce\u0fcf\u0001\u0000\u0000"+
		"\u0000\u0fcf\u0fdd\u0001\u0000\u0000\u0000\u0fd0\u0fce\u0001\u0000\u0000"+
		"\u0000\u0fd1\u0fd2\u0005\u0488\u0000\u0000\u0fd2\u0fd6\u0003\u0100\u0080"+
		"\u0000\u0fd3\u0fd5\u0003\u0106\u0083\u0000\u0fd4\u0fd3\u0001\u0000\u0000"+
		"\u0000\u0fd5\u0fd8\u0001\u0000\u0000\u0000\u0fd6\u0fd4\u0001\u0000\u0000"+
		"\u0000\u0fd6\u0fd7\u0001\u0000\u0000\u0000\u0fd7\u0fd9\u0001\u0000\u0000"+
		"\u0000\u0fd8\u0fd6\u0001\u0000\u0000\u0000\u0fd9\u0fda\u0005\u0489\u0000"+
		"\u0000\u0fda\u0fdd\u0001\u0000\u0000\u0000\u0fdb\u0fdd\u0003\u0118\u008c"+
		"\u0000\u0fdc\u0fca\u0001\u0000\u0000\u0000\u0fdc\u0fd1\u0001\u0000\u0000"+
		"\u0000\u0fdc\u0fdb\u0001\u0000\u0000\u0000\u0fdd\u00ff\u0001\u0000\u0000"+
		"\u0000\u0fde\u0fe4\u0003\u0236\u011b\u0000\u0fdf\u0fe0\u0005\u0083\u0000"+
		"\u0000\u0fe0\u0fe1\u0005\u0488\u0000\u0000\u0fe1\u0fe2\u0003\u027a\u013d"+
		"\u0000\u0fe2\u0fe3\u0005\u0489\u0000\u0000\u0fe3\u0fe5\u0001\u0000\u0000"+
		"\u0000\u0fe4\u0fdf\u0001\u0000\u0000\u0000\u0fe4\u0fe5\u0001\u0000\u0000"+
		"\u0000\u0fe5\u0fea\u0001\u0000\u0000\u0000\u0fe6\u0fe8\u0005\f\u0000\u0000"+
		"\u0fe7\u0fe6\u0001\u0000\u0000\u0000\u0fe7\u0fe8\u0001\u0000\u0000\u0000"+
		"\u0fe8\u0fe9\u0001\u0000\u0000\u0000\u0fe9\u0feb\u0003\u0258\u012c\u0000"+
		"\u0fea\u0fe7\u0001\u0000\u0000\u0000\u0fea\u0feb\u0001\u0000\u0000\u0000"+
		"\u0feb\u0ff4\u0001\u0000\u0000\u0000\u0fec\u0ff1\u0003\u0102\u0081\u0000"+
		"\u0fed\u0fee\u0005\u048a\u0000\u0000\u0fee\u0ff0\u0003\u0102\u0081\u0000"+
		"\u0fef\u0fed\u0001\u0000\u0000\u0000\u0ff0\u0ff3\u0001\u0000\u0000\u0000"+
		"\u0ff1\u0fef\u0001\u0000\u0000\u0000\u0ff1\u0ff2\u0001\u0000\u0000\u0000"+
		"\u0ff2\u0ff5\u0001\u0000\u0000\u0000\u0ff3\u0ff1\u0001\u0000\u0000\u0000"+
		"\u0ff4\u0fec\u0001\u0000\u0000\u0000\u0ff4\u0ff5\u0001\u0000\u0000\u0000"+
		"\u0ff5\u1007\u0001\u0000\u0000\u0000\u0ff6\u0ffc\u0003\u00d6k\u0000\u0ff7"+
		"\u0ff8\u0005\u0488\u0000\u0000\u0ff8\u0ff9\u0003\u00d6k\u0000\u0ff9\u0ffa"+
		"\u0005\u0489\u0000\u0000\u0ffa\u0ffc\u0001\u0000\u0000\u0000\u0ffb\u0ff6"+
		"\u0001\u0000\u0000\u0000\u0ffb\u0ff7\u0001\u0000\u0000\u0000\u0ffc\u0ffe"+
		"\u0001\u0000\u0000\u0000\u0ffd\u0fff\u0005\f\u0000\u0000\u0ffe\u0ffd\u0001"+
		"\u0000\u0000\u0000\u0ffe\u0fff\u0001\u0000\u0000\u0000\u0fff\u1000\u0001"+
		"\u0000\u0000\u0000\u1000\u1001\u0003\u0258\u012c\u0000\u1001\u1007\u0001"+
		"\u0000\u0000\u0000\u1002\u1003\u0005\u0488\u0000\u0000\u1003\u1004\u0003"+
		"\u00fc~\u0000\u1004\u1005\u0005\u0489\u0000\u0000\u1005\u1007\u0001\u0000"+
		"\u0000\u0000\u1006\u0fde\u0001\u0000\u0000\u0000\u1006\u0ffb\u0001\u0000"+
		"\u0000\u0000\u1006\u1002\u0001\u0000\u0000\u0000\u1007\u0101\u0001\u0000"+
		"\u0000\u0000\u1008\u1009\u00075\u0000\u0000\u1009\u100c\u0007\u0017\u0000"+
		"\u0000\u100a\u100b\u0005B\u0000\u0000\u100b\u100d\u0003\u0104\u0082\u0000"+
		"\u100c\u100a\u0001\u0000\u0000\u0000\u100c\u100d\u0001\u0000\u0000\u0000"+
		"\u100d\u100e\u0001\u0000\u0000\u0000\u100e\u100f\u0005\u0488\u0000\u0000"+
		"\u100f\u1010\u0003\u027a\u013d\u0000\u1010\u1011\u0005\u0489\u0000\u0000"+
		"\u1011\u0103\u0001\u0000\u0000\u0000\u1012\u1018\u0005\\\u0000\u0000\u1013"+
		"\u1014\u0005~\u0000\u0000\u1014\u1018\u0005\u0014\u0000\u0000\u1015\u1016"+
		"\u0005J\u0000\u0000\u1016\u1018\u0005\u0014\u0000\u0000\u1017\u1012\u0001"+
		"\u0000\u0000\u0000\u1017\u1013\u0001\u0000\u0000\u0000\u1017\u1015\u0001"+
		"\u0000\u0000\u0000\u1018\u0105\u0001\u0000\u0000\u0000\u1019\u101b\u0007"+
		"6\u0000\u0000\u101a\u1019\u0001\u0000\u0000\u0000\u101a\u101b\u0001\u0000"+
		"\u0000\u0000\u101b\u101c\u0001\u0000\u0000\u0000\u101c\u101e\u0005\\\u0000"+
		"\u0000\u101d\u101f\u0005`\u0000\u0000\u101e\u101d\u0001\u0000\u0000\u0000"+
		"\u101e\u101f\u0001\u0000\u0000\u0000\u101f\u1020\u0001\u0000\u0000\u0000"+
		"\u1020\u1024\u0003\u0100\u0080\u0000\u1021\u1023\u0003\u0108\u0084\u0000"+
		"\u1022\u1021\u0001\u0000\u0000\u0000\u1023\u1026\u0001\u0000\u0000\u0000"+
		"\u1024\u1022\u0001\u0000\u0000\u0000\u1024\u1025\u0001\u0000\u0000\u0000"+
		"\u1025\u1049\u0001\u0000\u0000\u0000\u1026\u1024\u0001\u0000\u0000\u0000"+
		"\u1027\u1028\u0005\u00ad\u0000\u0000\u1028\u102d\u0003\u0100\u0080\u0000"+
		"\u1029\u102a\u0005x\u0000\u0000\u102a\u102c\u0003\u02c4\u0162\u0000\u102b"+
		"\u1029\u0001\u0000\u0000\u0000\u102c\u102f\u0001\u0000\u0000\u0000\u102d"+
		"\u102b\u0001\u0000\u0000\u0000\u102d\u102e\u0001\u0000\u0000\u0000\u102e"+
		"\u1049\u0001\u0000\u0000\u0000\u102f\u102d\u0001\u0000\u0000\u0000\u1030"+
		"\u1032\u00077\u0000\u0000\u1031\u1033\u0005\u0080\u0000\u0000\u1032\u1031"+
		"\u0001\u0000\u0000\u0000\u1032\u1033\u0001\u0000\u0000\u0000\u1033\u1034"+
		"\u0001\u0000\u0000\u0000\u1034\u1036\u0005\\\u0000\u0000\u1035\u1037\u0005"+
		"`\u0000\u0000\u1036\u1035\u0001\u0000\u0000\u0000\u1036\u1037\u0001\u0000"+
		"\u0000\u0000\u1037\u1038\u0001\u0000\u0000\u0000\u1038\u103c\u0003\u0100"+
		"\u0080\u0000\u1039\u103b\u0003\u0108\u0084\u0000\u103a\u1039\u0001\u0000"+
		"\u0000\u0000\u103b\u103e\u0001\u0000\u0000\u0000\u103c\u103a\u0001\u0000"+
		"\u0000\u0000\u103c\u103d\u0001\u0000\u0000\u0000\u103d\u1049\u0001\u0000"+
		"\u0000\u0000\u103e\u103c\u0001\u0000\u0000\u0000\u103f\u1044\u0005s\u0000"+
		"\u0000\u1040\u1042\u00077\u0000\u0000\u1041\u1043\u0005\u0080\u0000\u0000"+
		"\u1042\u1041\u0001\u0000\u0000\u0000\u1042\u1043\u0001\u0000\u0000\u0000"+
		"\u1043\u1045\u0001\u0000\u0000\u0000\u1044\u1040\u0001\u0000\u0000\u0000"+
		"\u1044\u1045\u0001\u0000\u0000\u0000\u1045\u1046\u0001\u0000\u0000\u0000"+
		"\u1046\u1047\u0005\\\u0000\u0000\u1047\u1049\u0003\u0100\u0080\u0000\u1048"+
		"\u101a\u0001\u0000\u0000\u0000\u1048\u1027\u0001\u0000\u0000\u0000\u1048"+
		"\u1030\u0001\u0000\u0000\u0000\u1048\u103f\u0001\u0000\u0000\u0000\u1049"+
		"\u0107\u0001\u0000\u0000\u0000\u104a\u104b\u0005x\u0000\u0000\u104b\u1052"+
		"\u0003\u02c4\u0162\u0000\u104c\u104d\u0005\u00be\u0000\u0000\u104d\u104e"+
		"\u0005\u0488\u0000\u0000\u104e\u104f\u0003\u027a\u013d\u0000\u104f\u1050"+
		"\u0005\u0489\u0000\u0000\u1050\u1052\u0001\u0000\u0000\u0000\u1051\u104a"+
		"\u0001\u0000\u0000\u0000\u1051\u104c\u0001\u0000\u0000\u0000\u1052\u0109"+
		"\u0001\u0000\u0000\u0000\u1053\u1054\u0005\u0488\u0000\u0000\u1054\u1055"+
		"\u0003\u010e\u0087\u0000\u1055\u1056\u0005\u0489\u0000\u0000\u1056\u105c"+
		"\u0001\u0000\u0000\u0000\u1057\u1058\u0005\u0488\u0000\u0000\u1058\u1059"+
		"\u0003\u010a\u0085\u0000\u1059\u105a\u0005\u0489\u0000\u0000\u105a\u105c"+
		"\u0001\u0000\u0000\u0000\u105b\u1053\u0001\u0000\u0000\u0000\u105b\u1057"+
		"\u0001\u0000\u0000\u0000\u105c\u010b\u0001\u0000\u0000\u0000\u105d\u105e"+
		"\u0005\u0488\u0000\u0000\u105e\u105f\u0003\u0110\u0088\u0000\u105f\u1060"+
		"\u0005\u0489\u0000\u0000\u1060\u1066\u0001\u0000\u0000\u0000\u1061\u1062"+
		"\u0005\u0488\u0000\u0000\u1062\u1063\u0003\u010c\u0086\u0000\u1063\u1064"+
		"\u0005\u0489\u0000\u0000\u1064\u1066\u0001\u0000\u0000\u0000\u1065\u105d"+
		"\u0001\u0000\u0000\u0000\u1065\u1061\u0001\u0000\u0000\u0000\u1066\u010d"+
		"\u0001\u0000\u0000\u0000\u1067\u106b\u0005\u009a\u0000\u0000\u1068\u106a"+
		"\u0003\u0122\u0091\u0000\u1069\u1068\u0001\u0000\u0000\u0000\u106a\u106d"+
		"\u0001\u0000\u0000\u0000\u106b\u1069\u0001\u0000\u0000\u0000\u106b\u106c"+
		"\u0001\u0000\u0000\u0000\u106c\u106e\u0001\u0000\u0000\u0000\u106d\u106b"+
		"\u0001\u0000\u0000\u0000\u106e\u1070\u0003\u0124\u0092\u0000\u106f\u1071"+
		"\u0003\u0128\u0094\u0000\u1070\u106f\u0001\u0000\u0000\u0000\u1070\u1071"+
		"\u0001\u0000\u0000\u0000\u1071\u1073\u0001\u0000\u0000\u0000\u1072\u1074"+
		"\u0003\u012e\u0097\u0000\u1073\u1072\u0001\u0000\u0000\u0000\u1073\u1074"+
		"\u0001\u0000\u0000\u0000\u1074\u1076\u0001\u0000\u0000\u0000\u1075\u1077"+
		"\u0003\u0130\u0098\u0000\u1076\u1075\u0001\u0000\u0000\u0000\u1076\u1077"+
		"\u0001\u0000\u0000\u0000\u1077\u1079\u0001\u0000\u0000\u0000\u1078\u107a"+
		"\u0003\u0132\u0099\u0000\u1079\u1078\u0001\u0000\u0000\u0000\u1079\u107a"+
		"\u0001\u0000\u0000\u0000\u107a\u107c\u0001\u0000\u0000\u0000\u107b\u107d"+
		"\u0003\u0134\u009a\u0000\u107c\u107b\u0001\u0000\u0000\u0000\u107c\u107d"+
		"\u0001\u0000\u0000\u0000\u107d\u107f\u0001\u0000\u0000\u0000\u107e\u1080"+
		"\u0003\u00f8|\u0000\u107f\u107e\u0001\u0000\u0000\u0000\u107f\u1080\u0001"+
		"\u0000\u0000\u0000\u1080\u1082\u0001\u0000\u0000\u0000\u1081\u1083\u0003"+
		"\u0138\u009c\u0000\u1082\u1081\u0001\u0000\u0000\u0000\u1082\u1083\u0001"+
		"\u0000\u0000\u0000\u1083\u10a2\u0001\u0000\u0000\u0000\u1084\u1088\u0005"+
		"\u009a\u0000\u0000\u1085\u1087\u0003\u0122\u0091\u0000\u1086\u1085\u0001"+
		"\u0000\u0000\u0000\u1087\u108a\u0001\u0000\u0000\u0000\u1088\u1086\u0001"+
		"\u0000\u0000\u0000\u1088\u1089\u0001\u0000\u0000\u0000\u1089\u108b\u0001"+
		"\u0000\u0000\u0000\u108a\u1088\u0001\u0000\u0000\u0000\u108b\u108d\u0003"+
		"\u0124\u0092\u0000\u108c\u108e\u0003\u012e\u0097\u0000\u108d\u108c\u0001"+
		"\u0000\u0000\u0000\u108d\u108e\u0001\u0000\u0000\u0000\u108e\u1090\u0001"+
		"\u0000\u0000\u0000\u108f\u1091\u0003\u0130\u0098\u0000\u1090\u108f\u0001"+
		"\u0000\u0000\u0000\u1090\u1091\u0001\u0000\u0000\u0000\u1091\u1093\u0001"+
		"\u0000\u0000\u0000\u1092\u1094\u0003\u0132\u0099\u0000\u1093\u1092\u0001"+
		"\u0000\u0000\u0000\u1093\u1094\u0001\u0000\u0000\u0000\u1094\u1096\u0001"+
		"\u0000\u0000\u0000\u1095\u1097\u0003\u0134\u009a\u0000\u1096\u1095\u0001"+
		"\u0000\u0000\u0000\u1096\u1097\u0001\u0000\u0000\u0000\u1097\u1099\u0001"+
		"\u0000\u0000\u0000\u1098\u109a\u0003\u00f8|\u0000\u1099\u1098\u0001\u0000"+
		"\u0000\u0000\u1099\u109a\u0001\u0000\u0000\u0000\u109a\u109c\u0001\u0000"+
		"\u0000\u0000\u109b\u109d\u0003\u0138\u009c\u0000\u109c\u109b\u0001\u0000"+
		"\u0000\u0000\u109c\u109d\u0001\u0000\u0000\u0000\u109d\u109f\u0001\u0000"+
		"\u0000\u0000\u109e\u10a0\u0003\u0128\u0094\u0000\u109f\u109e\u0001\u0000"+
		"\u0000\u0000\u109f\u10a0\u0001\u0000\u0000\u0000\u10a0\u10a2\u0001\u0000"+
		"\u0000\u0000\u10a1\u1067\u0001\u0000\u0000\u0000\u10a1\u1084\u0001\u0000"+
		"\u0000\u0000\u10a2\u010f\u0001\u0000\u0000\u0000\u10a3\u10a7\u0005\u009a"+
		"\u0000\u0000\u10a4\u10a6\u0003\u0122\u0091\u0000\u10a5\u10a4\u0001\u0000"+
		"\u0000\u0000\u10a6\u10a9\u0001\u0000\u0000\u0000\u10a7\u10a5\u0001\u0000"+
		"\u0000\u0000\u10a7\u10a8\u0001\u0000\u0000\u0000\u10a8\u10aa\u0001\u0000"+
		"\u0000\u0000\u10a9\u10a7\u0001\u0000\u0000\u0000\u10aa\u10ac\u0003\u0124"+
		"\u0092\u0000\u10ab\u10ad\u0003\u012e\u0097\u0000\u10ac\u10ab\u0001\u0000"+
		"\u0000\u0000\u10ac\u10ad\u0001\u0000\u0000\u0000\u10ad\u10af\u0001\u0000"+
		"\u0000\u0000\u10ae\u10b0\u0003\u0130\u0098\u0000\u10af\u10ae\u0001\u0000"+
		"\u0000\u0000\u10af\u10b0\u0001\u0000\u0000\u0000\u10b0\u10b2\u0001\u0000"+
		"\u0000\u0000\u10b1\u10b3\u0003\u0132\u0099\u0000\u10b2\u10b1\u0001\u0000"+
		"\u0000\u0000\u10b2\u10b3\u0001\u0000\u0000\u0000\u10b3\u10b5\u0001\u0000"+
		"\u0000\u0000\u10b4\u10b6\u0003\u0134\u009a\u0000\u10b5\u10b4\u0001\u0000"+
		"\u0000\u0000\u10b5\u10b6\u0001\u0000\u0000\u0000\u10b6\u10b8\u0001\u0000"+
		"\u0000\u0000\u10b7\u10b9\u0003\u00f8|\u0000\u10b8\u10b7\u0001\u0000\u0000"+
		"\u0000\u10b8\u10b9\u0001\u0000\u0000\u0000\u10b9\u10bb\u0001\u0000\u0000"+
		"\u0000\u10ba\u10bc\u0003\u0138\u009c\u0000\u10bb\u10ba\u0001\u0000\u0000"+
		"\u0000\u10bb\u10bc\u0001\u0000\u0000\u0000\u10bc\u10be\u0001\u0000\u0000"+
		"\u0000\u10bd\u10bf\u0003\u0114\u008a\u0000\u10be\u10bd\u0001\u0000\u0000"+
		"\u0000\u10be\u10bf\u0001\u0000\u0000\u0000\u10bf\u0111\u0001\u0000\u0000"+
		"\u0000\u10c0\u10c2\u0005\u00b7\u0000\u0000\u10c1\u10c3\u00070\u0000\u0000"+
		"\u10c2\u10c1\u0001\u0000\u0000\u0000\u10c2\u10c3\u0001\u0000\u0000\u0000"+
		"\u10c3\u10c4\u0001\u0000\u0000\u0000\u10c4\u10c5\u0003\u010c\u0086\u0000"+
		"\u10c5\u0113\u0001\u0000\u0000\u0000\u10c6\u10c8\u0005\u00b7\u0000\u0000"+
		"\u10c7\u10c9\u00070\u0000\u0000\u10c8\u10c7\u0001\u0000\u0000\u0000\u10c8"+
		"\u10c9\u0001\u0000\u0000\u0000\u10c9\u10cc\u0001\u0000\u0000\u0000\u10ca"+
		"\u10cd\u0003\u0110\u0088\u0000\u10cb\u10cd\u0003\u010c\u0086\u0000\u10cc"+
		"\u10ca\u0001\u0000\u0000\u0000\u10cc\u10cb\u0001\u0000\u0000\u0000\u10cd"+
		"\u0115\u0001\u0000\u0000\u0000\u10ce\u10dd\u0005`\u0000\u0000\u10cf\u10de"+
		"\u0003\u0110\u0088\u0000\u10d0\u10de\u0003\u010c\u0086\u0000\u10d1\u10d4"+
		"\u0005\u0488\u0000\u0000\u10d2\u10d5\u0003\u0110\u0088\u0000\u10d3\u10d5"+
		"\u0003\u010c\u0086\u0000\u10d4\u10d2\u0001\u0000\u0000\u0000\u10d4\u10d3"+
		"\u0001\u0000\u0000\u0000\u10d5\u10d6\u0001\u0000\u0000\u0000\u10d6\u10db"+
		"\u0005\u0489\u0000\u0000\u10d7\u10d9\u0005\f\u0000\u0000\u10d8\u10d7\u0001"+
		"\u0000\u0000\u0000\u10d8\u10d9\u0001\u0000\u0000\u0000\u10d9\u10da\u0001"+
		"\u0000\u0000\u0000\u10da\u10dc\u0003\u0258\u012c\u0000\u10db\u10d8\u0001"+
		"\u0000\u0000\u0000\u10db\u10dc\u0001\u0000\u0000\u0000\u10dc\u10de\u0001"+
		"\u0000\u0000\u0000\u10dd\u10cf\u0001\u0000\u0000\u0000\u10dd\u10d0\u0001"+
		"\u0000\u0000\u0000\u10dd\u10d1\u0001\u0000\u0000\u0000\u10de\u0117\u0001"+
		"\u0000\u0000\u0000\u10df\u10e0\u0005\u0119\u0000\u0000\u10e0\u10e1\u0005"+
		"\u0488\u0000\u0000\u10e1\u10e2\u0003\u02c4\u0162\u0000\u10e2\u10e3\u0005"+
		"\u048a\u0000\u0000\u10e3\u10e4\u0005\u0497\u0000\u0000\u10e4\u10e5\u0005"+
		"\u0170\u0000\u0000\u10e5\u10e6\u0005\u0488\u0000\u0000\u10e6\u10e7\u0003"+
		"\u011a\u008d\u0000\u10e7\u10e8\u0005\u0489\u0000\u0000\u10e8\u10ed\u0005"+
		"\u0489\u0000\u0000\u10e9\u10eb\u0005\f\u0000\u0000\u10ea\u10e9\u0001\u0000"+
		"\u0000\u0000\u10ea\u10eb\u0001\u0000\u0000\u0000\u10eb\u10ec\u0001\u0000"+
		"\u0000\u0000\u10ec\u10ee\u0003\u0258\u012c\u0000\u10ed\u10ea\u0001\u0000"+
		"\u0000\u0000\u10ed\u10ee\u0001\u0000\u0000\u0000\u10ee\u0119\u0001\u0000"+
		"\u0000\u0000\u10ef\u10f4\u0003\u011c\u008e\u0000\u10f0\u10f1\u0005\u048a"+
		"\u0000\u0000\u10f1\u10f3\u0003\u011c\u008e\u0000\u10f2\u10f0\u0001\u0000"+
		"\u0000\u0000\u10f3\u10f6\u0001\u0000\u0000\u0000\u10f4\u10f2\u0001\u0000"+
		"\u0000\u0000\u10f4\u10f5\u0001\u0000\u0000\u0000\u10f5\u011b\u0001\u0000"+
		"\u0000\u0000\u10f6\u10f4\u0001\u0000\u0000\u0000\u10f7\u1108\u0003\u023a"+
		"\u011d\u0000\u10f8\u10f9\u0005B\u0000\u0000\u10f9\u1109\u0005\u011f\u0000"+
		"\u0000\u10fa\u1106\u0003\u026c\u0136\u0000\u10fb\u10fc\u0005\u0120\u0000"+
		"\u0000\u10fc\u10fe\u0005\u0497\u0000\u0000\u10fd\u10ff\u0003\u011e\u008f"+
		"\u0000\u10fe\u10fd\u0001\u0000\u0000\u0000\u10fe\u10ff\u0001\u0000\u0000"+
		"\u0000\u10ff\u1101\u0001\u0000\u0000\u0000\u1100\u1102\u0003\u0120\u0090"+
		"\u0000\u1101\u1100\u0001\u0000\u0000\u0000\u1101\u1102\u0001\u0000\u0000"+
		"\u0000\u1102\u1107\u0001\u0000\u0000\u0000\u1103\u1104\u0005=\u0000\u0000"+
		"\u1104\u1105\u0005\u0120\u0000\u0000\u1105\u1107\u0005\u0497\u0000\u0000"+
		"\u1106\u10fb\u0001\u0000\u0000\u0000\u1106\u1103\u0001\u0000\u0000\u0000"+
		"\u1107\u1109\u0001\u0000\u0000\u0000\u1108\u10f8\u0001\u0000\u0000\u0000"+
		"\u1108\u10fa\u0001\u0000\u0000\u0000\u1109\u1115\u0001\u0000\u0000\u0000"+
		"\u110a\u110c\u0005\u011e\u0000\u0000\u110b\u110d\u0005\u0120\u0000\u0000"+
		"\u110c\u110b\u0001\u0000\u0000\u0000\u110c\u110d\u0001\u0000\u0000\u0000"+
		"\u110d\u110e\u0001\u0000\u0000\u0000\u110e\u110f\u0005\u0497\u0000\u0000"+
		"\u110f\u1110\u0005\u0170\u0000\u0000\u1110\u1111\u0005\u0488\u0000\u0000"+
		"\u1111\u1112\u0003\u011a\u008d\u0000\u1112\u1113\u0005\u0489\u0000\u0000"+
		"\u1113\u1115\u0001\u0000\u0000\u0000\u1114\u10f7\u0001\u0000\u0000\u0000"+
		"\u1114\u110a\u0001\u0000\u0000\u0000\u1115\u011d\u0001\u0000\u0000\u0000"+
		"\u1116\u111b\u0005v\u0000\u0000\u1117\u111b\u0005\u019e\u0000\u0000\u1118"+
		"\u1119\u0005+\u0000\u0000\u1119\u111b\u0003\u028c\u0146\u0000\u111a\u1116"+
		"\u0001\u0000\u0000\u0000\u111a\u1117\u0001\u0000\u0000\u0000\u111a\u1118"+
		"\u0001\u0000\u0000\u0000\u111b\u111c\u0001\u0000\u0000\u0000\u111c\u111d"+
		"\u0005x\u0000\u0000\u111d\u111e\u00058\u0000\u0000\u111e\u011f\u0001\u0000"+
		"\u0000\u0000\u111f\u1124\u0005v\u0000\u0000\u1120\u1124\u0005\u019e\u0000"+
		"\u0000\u1121\u1122\u0005+\u0000\u0000\u1122\u1124\u0003\u028c\u0146\u0000"+
		"\u1123\u111f\u0001\u0000\u0000\u0000\u1123\u1120\u0001\u0000\u0000\u0000"+
		"\u1123\u1121\u0001\u0000\u0000\u0000\u1124\u1125\u0001\u0000\u0000\u0000"+
		"\u1125\u1126\u0005x\u0000\u0000\u1126\u1127\u0005\u019e\u0000\u0000\u1127"+
		"\u0121\u0001\u0000\u0000\u0000\u1128\u1131\u00078\u0000\u0000\u1129\u1131"+
		"\u0005M\u0000\u0000\u112a\u1131\u0005\u00ad\u0000\u0000\u112b\u1131\u0005"+
		"\u00a8\u0000\u0000\u112c\u1131\u0005\u00a6\u0000\u0000\u112d\u1131\u0005"+
		"\u0274\u0000\u0000\u112e\u1131\u00079\u0000\u0000\u112f\u1131\u0005\u00a7"+
		"\u0000\u0000\u1130\u1128\u0001\u0000\u0000\u0000\u1130\u1129\u0001\u0000"+
		"\u0000\u0000\u1130\u112a\u0001\u0000\u0000\u0000\u1130\u112b\u0001\u0000"+
		"\u0000\u0000\u1130\u112c\u0001\u0000\u0000\u0000\u1130\u112d\u0001\u0000"+
		"\u0000\u0000\u1130\u112e\u0001\u0000\u0000\u0000\u1130\u112f\u0001\u0000"+
		"\u0000\u0000\u1131\u0123\u0001\u0000\u0000\u0000\u1132\u1135\u0005\u0478"+
		"\u0000\u0000\u1133\u1135\u0003\u0126\u0093\u0000\u1134\u1132\u0001\u0000"+
		"\u0000\u0000\u1134\u1133\u0001\u0000\u0000\u0000\u1135\u113a\u0001\u0000"+
		"\u0000\u0000\u1136\u1137\u0005\u048a\u0000\u0000\u1137\u1139\u0003\u0126"+
		"\u0093\u0000\u1138\u1136\u0001\u0000\u0000\u0000\u1139\u113c\u0001\u0000"+
		"\u0000\u0000\u113a\u1138\u0001\u0000\u0000\u0000\u113a\u113b\u0001\u0000"+
		"\u0000\u0000\u113b\u0125\u0001\u0000\u0000\u0000\u113c\u113a\u0001\u0000"+
		"\u0000\u0000\u113d\u113e\u0003\u0234\u011a\u0000\u113e\u113f\u0005\u0487"+
		"\u0000\u0000\u113f\u1140\u0005\u0478\u0000\u0000\u1140\u115b\u0001\u0000"+
		"\u0000\u0000\u1141\u1146\u0003\u023a\u011d\u0000\u1142\u1144\u0005\f\u0000"+
		"\u0000\u1143\u1142\u0001\u0000\u0000\u0000\u1143\u1144\u0001\u0000\u0000"+
		"\u0000\u1144\u1145\u0001\u0000\u0000\u0000\u1145\u1147\u0003\u0258\u012c"+
		"\u0000\u1146\u1143\u0001\u0000\u0000\u0000\u1146\u1147\u0001\u0000\u0000"+
		"\u0000\u1147\u115b\u0001\u0000\u0000\u0000\u1148\u114d\u0003\u029c\u014e"+
		"\u0000\u1149\u114b\u0005\f\u0000\u0000\u114a\u1149\u0001\u0000\u0000\u0000"+
		"\u114a\u114b\u0001\u0000\u0000\u0000\u114b\u114c\u0001\u0000\u0000\u0000"+
		"\u114c\u114e\u0003\u0258\u012c\u0000\u114d\u114a\u0001\u0000\u0000\u0000"+
		"\u114d\u114e\u0001\u0000\u0000\u0000\u114e\u115b\u0001\u0000\u0000\u0000"+
		"\u114f\u1150\u0005\u04a2\u0000\u0000\u1150\u1152\u0005\u046f\u0000\u0000"+
		"\u1151\u114f\u0001\u0000\u0000\u0000\u1151\u1152\u0001\u0000\u0000\u0000"+
		"\u1152\u1153\u0001\u0000\u0000\u0000\u1153\u1158\u0003\u02c4\u0162\u0000"+
		"\u1154\u1156\u0005\f\u0000\u0000\u1155\u1154\u0001\u0000\u0000\u0000\u1155"+
		"\u1156\u0001\u0000\u0000\u0000\u1156\u1157\u0001\u0000\u0000\u0000\u1157"+
		"\u1159\u0003\u0258\u012c\u0000\u1158\u1155\u0001\u0000\u0000\u0000\u1158"+
		"\u1159\u0001\u0000\u0000\u0000\u1159\u115b\u0001\u0000\u0000\u0000\u115a"+
		"\u113d\u0001\u0000\u0000\u0000\u115a\u1141\u0001\u0000\u0000\u0000\u115a"+
		"\u1148\u0001\u0000\u0000\u0000\u115a\u1151\u0001\u0000\u0000\u0000\u115b"+
		"\u0127\u0001\u0000\u0000\u0000\u115c\u115d\u0005Y\u0000\u0000\u115d\u1162"+
		"\u0003\u00e4r\u0000\u115e\u115f\u0005\u048a\u0000\u0000\u115f\u1161\u0003"+
		"\u00e4r\u0000\u1160\u115e\u0001\u0000\u0000\u0000\u1161\u1164\u0001\u0000"+
		"\u0000\u0000\u1162\u1160\u0001\u0000\u0000\u0000\u1162\u1163\u0001\u0000"+
		"\u0000\u0000\u1163\u1181\u0001\u0000\u0000\u0000\u1164\u1162\u0001\u0000"+
		"\u0000\u0000\u1165\u1166\u0005Y\u0000\u0000\u1166\u1167\u0005\u0193\u0000"+
		"\u0000\u1167\u1181\u0005\u0497\u0000\u0000\u1168\u1169\u0005Y\u0000\u0000"+
		"\u1169\u116a\u0005\u0081\u0000\u0000\u116a\u116e\u0005\u0497\u0000\u0000"+
		"\u116b\u116c\u0005\u001a\u0000\u0000\u116c\u116d\u0005\u009b\u0000\u0000"+
		"\u116d\u116f\u0003\u0246\u0123\u0000\u116e\u116b\u0001\u0000\u0000\u0000"+
		"\u116e\u116f\u0001\u0000\u0000\u0000\u116f\u1176\u0001\u0000\u0000\u0000"+
		"\u1170\u1172\u0007-\u0000\u0000\u1171\u1173\u0003\u012a\u0095\u0000\u1172"+
		"\u1171\u0001\u0000\u0000\u0000\u1173\u1174\u0001\u0000\u0000\u0000\u1174"+
		"\u1172\u0001\u0000\u0000\u0000\u1174\u1175\u0001\u0000\u0000\u0000\u1175"+
		"\u1177\u0001\u0000\u0000\u0000\u1176\u1170\u0001\u0000\u0000\u0000\u1176"+
		"\u1177\u0001\u0000\u0000\u0000\u1177\u117e\u0001\u0000\u0000\u0000\u1178"+
		"\u117a\u0005g\u0000\u0000\u1179\u117b\u0003\u012c\u0096\u0000\u117a\u1179"+
		"\u0001\u0000\u0000\u0000\u117b\u117c\u0001\u0000\u0000\u0000\u117c\u117a"+
		"\u0001\u0000\u0000\u0000\u117c\u117d\u0001\u0000\u0000\u0000\u117d\u117f"+
		"\u0001\u0000\u0000\u0000\u117e\u1178\u0001\u0000\u0000\u0000\u117e\u117f"+
		"\u0001\u0000\u0000\u0000\u117f\u1181\u0001\u0000\u0000\u0000\u1180\u115c"+
		"\u0001\u0000\u0000\u0000\u1180\u1165\u0001\u0000\u0000\u0000\u1180\u1168"+
		"\u0001\u0000\u0000\u0000\u1181\u0129\u0001\u0000\u0000\u0000\u1182\u1183"+
		"\u0005\u00b0\u0000\u0000\u1183\u1184\u0005\u0014\u0000\u0000\u1184\u118f"+
		"\u0005\u0497\u0000\u0000\u1185\u1187\u0005|\u0000\u0000\u1186\u1185\u0001"+
		"\u0000\u0000\u0000\u1186\u1187\u0001\u0000\u0000\u0000\u1187\u1188\u0001"+
		"\u0000\u0000\u0000\u1188\u1189\u00059\u0000\u0000\u1189\u118a\u0005\u0014"+
		"\u0000\u0000\u118a\u118f\u0005\u0497\u0000\u0000\u118b\u118c\u0005;\u0000"+
		"\u0000\u118c\u118d\u0005\u0014\u0000\u0000\u118d\u118f\u0005\u0497\u0000"+
		"\u0000\u118e\u1182\u0001\u0000\u0000\u0000\u118e\u1186\u0001\u0000\u0000"+
		"\u0000\u118e\u118b\u0001\u0000\u0000\u0000\u118f\u012b\u0001\u0000\u0000"+
		"\u0000\u1190\u1191\u0005\u00ab\u0000\u0000\u1191\u1192\u0005\u0014\u0000"+
		"\u0000\u1192\u1197\u0005\u0497\u0000\u0000\u1193\u1194\u0005\u00b0\u0000"+
		"\u0000\u1194\u1195\u0005\u0014\u0000\u0000\u1195\u1197\u0005\u0497\u0000"+
		"\u0000\u1196\u1190\u0001\u0000\u0000\u0000\u1196\u1193\u0001\u0000\u0000"+
		"\u0000\u1197\u012d\u0001\u0000\u0000\u0000\u1198\u1199\u0005E\u0000\u0000"+
		"\u1199\u119b\u0003\u00fc~\u0000\u119a\u1198\u0001\u0000\u0000\u0000\u119a"+
		"\u119b\u0001\u0000\u0000\u0000\u119b\u119e\u0001\u0000\u0000\u0000\u119c"+
		"\u119d\u0005\u00c1\u0000\u0000\u119d\u119f\u0003\u02c4\u0162\u0000\u119e"+
		"\u119c\u0001\u0000\u0000\u0000\u119e\u119f\u0001\u0000\u0000\u0000\u119f"+
		"\u012f\u0001\u0000\u0000\u0000\u11a0\u11a1\u0005J\u0000\u0000\u11a1\u11a2"+
		"\u0005\u0014\u0000\u0000\u11a2\u11a7\u0003\u0136\u009b\u0000\u11a3\u11a4"+
		"\u0005\u048a\u0000\u0000\u11a4\u11a6\u0003\u0136\u009b\u0000\u11a5\u11a3"+
		"\u0001\u0000\u0000\u0000\u11a6\u11a9\u0001\u0000\u0000\u0000\u11a7\u11a5"+
		"\u0001\u0000\u0000\u0000\u11a7\u11a8\u0001\u0000\u0000\u0000\u11a8\u11ac"+
		"\u0001\u0000\u0000\u0000\u11a9\u11a7\u0001\u0000\u0000\u0000\u11aa\u11ab"+
		"\u0005\u00c3\u0000\u0000\u11ab\u11ad\u0005\u0259\u0000\u0000\u11ac\u11aa"+
		"\u0001\u0000\u0000\u0000\u11ac\u11ad\u0001\u0000\u0000\u0000\u11ad\u0131"+
		"\u0001\u0000\u0000\u0000\u11ae\u11af\u0005L\u0000\u0000\u11af\u11b0\u0003"+
		"\u02c4\u0162\u0000\u11b0\u0133\u0001\u0000\u0000\u0000\u11b1\u11b2\u0005"+
		"\u02a7\u0000\u0000\u11b2\u11b3\u0003\u02ae\u0157\u0000\u11b3\u11b4\u0005"+
		"\f\u0000\u0000\u11b4\u11b5\u0005\u0488\u0000\u0000\u11b5\u11b6\u0003\u02ac"+
		"\u0156\u0000\u11b6\u11c0\u0005\u0489\u0000\u0000\u11b7\u11b8\u0005\u048a"+
		"\u0000\u0000\u11b8\u11b9\u0003\u02ae\u0157\u0000\u11b9\u11ba\u0005\f\u0000"+
		"\u0000\u11ba\u11bb\u0005\u0488\u0000\u0000\u11bb\u11bc\u0003\u02ac\u0156"+
		"\u0000\u11bc\u11bd\u0005\u0489\u0000\u0000\u11bd\u11bf\u0001\u0000\u0000"+
		"\u0000\u11be\u11b7\u0001\u0000\u0000\u0000\u11bf\u11c2\u0001\u0000\u0000"+
		"\u0000\u11c0\u11be\u0001\u0000\u0000\u0000\u11c0\u11c1\u0001\u0000\u0000"+
		"\u0000\u11c1\u0135\u0001\u0000\u0000\u0000\u11c2\u11c0\u0001\u0000\u0000"+
		"\u0000\u11c3\u11c5\u0003\u02c4\u0162\u0000\u11c4\u11c6\u00074\u0000\u0000"+
		"\u11c5\u11c4\u0001\u0000\u0000\u0000\u11c5\u11c6\u0001\u0000\u0000\u0000"+
		"\u11c6\u0137\u0001\u0000\u0000\u0000\u11c7\u11d2\u0005e\u0000\u0000\u11c8"+
		"\u11c9\u0003\u013a\u009d\u0000\u11c9\u11ca\u0005\u048a\u0000\u0000\u11ca"+
		"\u11cc\u0001\u0000\u0000\u0000\u11cb\u11c8\u0001\u0000\u0000\u0000\u11cb"+
		"\u11cc\u0001\u0000\u0000\u0000\u11cc\u11cd\u0001\u0000\u0000\u0000\u11cd"+
		"\u11d3\u0003\u013a\u009d\u0000\u11ce\u11cf\u0003\u013a\u009d\u0000\u11cf"+
		"\u11d0\u0005\u0217\u0000\u0000\u11d0\u11d1\u0003\u013a\u009d\u0000\u11d1"+
		"\u11d3\u0001\u0000\u0000\u0000\u11d2\u11cb\u0001\u0000\u0000\u0000\u11d2"+
		"\u11ce\u0001\u0000\u0000\u0000\u11d3\u0139\u0001\u0000\u0000\u0000\u11d4"+
		"\u11d8\u0003\u025e\u012f\u0000\u11d5\u11d8\u0003\u0244\u0122\u0000\u11d6"+
		"\u11d8\u0003\u025a\u012d\u0000\u11d7\u11d4\u0001\u0000\u0000\u0000\u11d7"+
		"\u11d5\u0001\u0000\u0000\u0000\u11d7\u11d6\u0001\u0000\u0000\u0000\u11d8"+
		"\u013b\u0001\u0000\u0000\u0000\u11d9\u11da\u0005\u0278\u0000\u0000\u11da"+
		"\u11e3\u0005\u0290\u0000\u0000\u11db\u11e0\u0003\u0152\u00a9\u0000\u11dc"+
		"\u11dd\u0005\u048a\u0000\u0000\u11dd\u11df\u0003\u0152\u00a9\u0000\u11de"+
		"\u11dc\u0001\u0000\u0000\u0000\u11df\u11e2\u0001\u0000\u0000\u0000\u11e0"+
		"\u11de\u0001\u0000\u0000\u0000\u11e0\u11e1\u0001\u0000\u0000\u0000\u11e1"+
		"\u11e4\u0001\u0000\u0000\u0000\u11e2\u11e0\u0001\u0000\u0000\u0000\u11e3"+
		"\u11db\u0001\u0000\u0000\u0000\u11e3\u11e4\u0001\u0000\u0000\u0000\u11e4"+
		"\u013d\u0001\u0000\u0000\u0000\u11e5\u11e7\u0005\u015b\u0000\u0000\u11e6"+
		"\u11e8\u0005\u02a9\u0000\u0000\u11e7\u11e6\u0001\u0000\u0000\u0000\u11e7"+
		"\u11e8\u0001\u0000\u0000\u0000\u11e8\u013f\u0001\u0000\u0000\u0000\u11e9"+
		"\u11eb\u0005\u0174\u0000\u0000\u11ea\u11ec\u0005\u02a9\u0000\u0000\u11eb"+
		"\u11ea\u0001\u0000\u0000\u0000\u11eb\u11ec\u0001\u0000\u0000\u0000\u11ec"+
		"\u11f2\u0001\u0000\u0000\u0000\u11ed\u11ef\u0005\n\u0000\u0000\u11ee\u11f0"+
		"\u0005\u020c\u0000\u0000\u11ef\u11ee\u0001\u0000\u0000\u0000\u11ef\u11f0"+
		"\u0001\u0000\u0000\u0000\u11f0\u11f1\u0001\u0000\u0000\u0000\u11f1\u11f3"+
		"\u0005\u0164\u0000\u0000\u11f2\u11ed\u0001\u0000\u0000\u0000\u11f2\u11f3"+
		"\u0001\u0000\u0000\u0000\u11f3\u11f8\u0001\u0000\u0000\u0000\u11f4\u11f6"+
		"\u0005\u020c\u0000\u0000\u11f5\u11f4\u0001\u0000\u0000\u0000\u11f5\u11f6"+
		"\u0001\u0000\u0000\u0000\u11f6\u11f7\u0001\u0000\u0000\u0000\u11f7\u11f9"+
		"\u0005\u008c\u0000\u0000\u11f8\u11f5\u0001\u0000\u0000\u0000\u11f8\u11f9"+
		"\u0001\u0000\u0000\u0000\u11f9\u0141\u0001\u0000\u0000\u0000\u11fa\u11fc"+
		"\u0005\u0258\u0000\u0000\u11fb\u11fd\u0005\u02a9\u0000\u0000\u11fc\u11fb"+
		"\u0001\u0000\u0000\u0000\u11fc\u11fd\u0001\u0000\u0000\u0000\u11fd\u1203"+
		"\u0001\u0000\u0000\u0000\u11fe\u1200\u0005\n\u0000\u0000\u11ff\u1201\u0005"+
		"\u020c\u0000\u0000\u1200\u11ff\u0001\u0000\u0000\u0000\u1200\u1201\u0001"+
		"\u0000\u0000\u0000\u1201\u1202\u0001\u0000\u0000\u0000\u1202\u1204\u0005"+
		"\u0164\u0000\u0000\u1203\u11fe\u0001\u0000\u0000\u0000\u1203\u1204\u0001"+
		"\u0000\u0000\u0000\u1204\u1209\u0001\u0000\u0000\u0000\u1205\u1207\u0005"+
		"\u020c\u0000\u0000\u1206\u1205\u0001\u0000\u0000\u0000\u1206\u1207\u0001"+
		"\u0000\u0000\u0000\u1207\u1208\u0001\u0000\u0000\u0000\u1208\u120a\u0005"+
		"\u008c\u0000\u0000\u1209\u1206\u0001\u0000\u0000\u0000\u1209\u120a\u0001"+
		"\u0000\u0000\u0000\u120a\u0143\u0001\u0000\u0000\u0000\u120b\u120c\u0005"+
		"\u025f\u0000\u0000\u120c\u120d\u0003\u0258\u012c\u0000\u120d\u0145\u0001"+
		"\u0000\u0000\u0000\u120e\u1210\u0005\u0258\u0000\u0000\u120f\u1211\u0005"+
		"\u02a9\u0000\u0000\u1210\u120f\u0001\u0000\u0000\u0000\u1210\u1211\u0001"+
		"\u0000\u0000\u0000\u1211\u1212\u0001\u0000\u0000\u0000\u1212\u1214\u0005"+
		"\u00b2\u0000\u0000\u1213\u1215\u0005\u025f\u0000\u0000\u1214\u1213\u0001"+
		"\u0000\u0000\u0000\u1214\u1215\u0001\u0000\u0000\u0000\u1215\u1216\u0001"+
		"\u0000\u0000\u0000\u1216\u1217\u0003\u0258\u012c\u0000\u1217\u0147\u0001"+
		"\u0000\u0000\u0000\u1218\u1219\u0005\u008c\u0000\u0000\u1219\u121a\u0005"+
		"\u025f\u0000\u0000\u121a\u121b\u0003\u0258\u012c\u0000\u121b\u0149\u0001"+
		"\u0000\u0000\u0000\u121c\u121d\u0005i\u0000\u0000\u121d\u121e\u0007:\u0000"+
		"\u0000\u121e\u1223\u0003\u0154\u00aa\u0000\u121f\u1220\u0005\u048a\u0000"+
		"\u0000\u1220\u1222\u0003\u0154\u00aa\u0000\u1221\u121f\u0001\u0000\u0000"+
		"\u0000\u1222\u1225\u0001\u0000\u0000\u0000\u1223\u1221\u0001\u0000\u0000"+
		"\u0000\u1223\u1224\u0001\u0000\u0000\u0000\u1224\u1227\u0001\u0000\u0000"+
		"\u0000\u1225\u1223\u0001\u0000\u0000\u0000\u1226\u1228\u0003\u0298\u014c"+
		"\u0000\u1227\u1226\u0001\u0000\u0000\u0000\u1227\u1228\u0001\u0000\u0000"+
		"\u0000\u1228\u014b\u0001\u0000\u0000\u0000\u1229\u122a\u0005\u00b9\u0000"+
		"\u0000\u122a\u122b\u0005\u02ee\u0000\u0000\u122b\u014d\u0001\u0000\u0000"+
		"\u0000\u122c\u122d\u0005\u009b\u0000\u0000\u122d\u122e\u0005\u0157\u0000"+
		"\u0000\u122e\u122f\u0005\u047f\u0000\u0000\u122f\u1230\u0007\u001b\u0000"+
		"\u0000\u1230\u014f\u0001\u0000\u0000\u0000\u1231\u1233\u0005\u009b\u0000"+
		"\u0000\u1232\u1234\u0007;\u0000\u0000\u1233\u1232\u0001\u0000\u0000\u0000"+
		"\u1233\u1234\u0001\u0000\u0000\u0000\u1234\u1235\u0001\u0000\u0000\u0000"+
		"\u1235\u1236\u0005\u0290\u0000\u0000\u1236\u123b\u0003\u0158\u00ac\u0000"+
		"\u1237\u1238\u0005\u048a\u0000\u0000\u1238\u123a\u0003\u0158\u00ac\u0000"+
		"\u1239\u1237\u0001\u0000\u0000\u0000\u123a\u123d\u0001\u0000\u0000\u0000"+
		"\u123b\u1239\u0001\u0000\u0000\u0000\u123b\u123c\u0001\u0000\u0000\u0000"+
		"\u123c\u0151\u0001\u0000\u0000\u0000\u123d\u123b\u0001\u0000\u0000\u0000"+
		"\u123e\u123f\u0005\u00c3\u0000\u0000\u123f\u1240\u0005\u017c\u0000\u0000"+
		"\u1240\u1246\u0005\u026b\u0000\u0000\u1241\u1242\u0005\u0088\u0000\u0000"+
		"\u1242\u1246\u0005\u00c4\u0000\u0000\u1243\u1244\u0005\u0088\u0000\u0000"+
		"\u1244\u1246\u0005\u021d\u0000\u0000\u1245\u123e\u0001\u0000\u0000\u0000"+
		"\u1245\u1241\u0001\u0000\u0000\u0000\u1245\u1243\u0001\u0000\u0000\u0000"+
		"\u1246\u0153\u0001\u0000\u0000\u0000\u1247\u124c\u0003\u0236\u011b\u0000"+
		"\u1248\u124a\u0005\f\u0000\u0000\u1249\u1248\u0001\u0000\u0000\u0000\u1249"+
		"\u124a\u0001\u0000\u0000\u0000\u124a\u124b\u0001\u0000\u0000\u0000\u124b"+
		"\u124d\u0003\u0258\u012c\u0000\u124c\u1249\u0001\u0000\u0000\u0000\u124c"+
		"\u124d\u0001\u0000\u0000\u0000\u124d\u124e\u0001\u0000\u0000\u0000\u124e"+
		"\u124f\u0003\u0156\u00ab\u0000\u124f\u0155\u0001\u0000\u0000\u0000\u1250"+
		"\u1252\u0005\u0088\u0000\u0000\u1251\u1253\u0005\u01dd\u0000\u0000\u1252"+
		"\u1251\u0001\u0000\u0000\u0000\u1252\u1253\u0001\u0000\u0000\u0000\u1253"+
		"\u1259\u0001\u0000\u0000\u0000\u1254\u1256\u0005l\u0000\u0000\u1255\u1254"+
		"\u0001\u0000\u0000\u0000\u1255\u1256\u0001\u0000\u0000\u0000\u1256\u1257"+
		"\u0001\u0000\u0000\u0000\u1257\u1259\u0005\u00c4\u0000\u0000\u1258\u1250"+
		"\u0001\u0000\u0000\u0000\u1258\u1255\u0001\u0000\u0000\u0000\u1259\u0157"+
		"\u0001\u0000\u0000\u0000\u125a\u125b\u0005\u01d3\u0000\u0000\u125b\u125c"+
		"\u0005\u01db\u0000\u0000\u125c\u1262\u0003\u015a\u00ad\u0000\u125d\u125e"+
		"\u0005\u0088\u0000\u0000\u125e\u1262\u0005\u00c4\u0000\u0000\u125f\u1260"+
		"\u0005\u0088\u0000\u0000\u1260\u1262\u0005\u021d\u0000\u0000\u1261\u125a"+
		"\u0001\u0000\u0000\u0000\u1261\u125d\u0001\u0000\u0000\u0000\u1261\u125f"+
		"\u0001\u0000\u0000\u0000\u1262\u0159\u0001\u0000\u0000\u0000\u1263\u1264"+
		"\u0005\u0327\u0000\u0000\u1264\u126b\u0005\u0088\u0000\u0000\u1265\u1266"+
		"\u0005\u0088\u0000\u0000\u1266\u126b\u0005\u0328\u0000\u0000\u1267\u1268"+
		"\u0005\u0088\u0000\u0000\u1268\u126b\u0005\u0329\u0000\u0000\u1269\u126b"+
		"\u0005\u032a\u0000\u0000\u126a\u1263\u0001\u0000\u0000\u0000\u126a\u1265"+
		"\u0001\u0000\u0000\u0000\u126a\u1267\u0001\u0000\u0000\u0000\u126a\u1269"+
		"\u0001\u0000\u0000\u0000\u126b\u015b\u0001\u0000\u0000\u0000\u126c\u126d"+
		"\u0005\u0019\u0000\u0000\u126d\u126e\u0005\u01e0\u0000\u0000\u126e\u126f"+
		"\u0005\u00b2\u0000\u0000\u126f\u1274\u0003\u016e\u00b7\u0000\u1270\u1271"+
		"\u0005\u048a\u0000\u0000\u1271\u1273\u0003\u016e\u00b7\u0000\u1272\u1270"+
		"\u0001\u0000\u0000\u0000\u1273\u1276\u0001\u0000\u0000\u0000\u1274\u1272"+
		"\u0001\u0000\u0000\u0000\u1274\u1275\u0001\u0000\u0000\u0000\u1275\u1278"+
		"\u0001\u0000\u0000\u0000\u1276\u1274\u0001\u0000\u0000\u0000\u1277\u1279"+
		"\u0003\u0176\u00bb\u0000\u1278\u1277\u0001\u0000\u0000\u0000\u1278\u1279"+
		"\u0001\u0000\u0000\u0000\u1279\u015d\u0001\u0000\u0000\u0000\u127a\u127b"+
		"\u0005\u0019\u0000\u0000\u127b\u127c\u0005\u024f\u0000\u0000\u127c\u127d"+
		"\u0005\u01b0\u0000\u0000\u127d\u1282\u0003\u0178\u00bc\u0000\u127e\u127f"+
		"\u0005\u048a\u0000\u0000\u127f\u1281\u0003\u0178\u00bc\u0000\u1280\u127e"+
		"\u0001\u0000\u0000\u0000\u1281\u1284\u0001\u0000\u0000\u0000\u1282\u1280"+
		"\u0001\u0000\u0000\u0000\u1282\u1283\u0001\u0000\u0000\u0000\u1283\u015f"+
		"\u0001\u0000\u0000\u0000\u1284\u1282\u0001\u0000\u0000\u0000\u1285\u1286"+
		"\u0005\u0086\u0000\u0000\u1286\u1287\u0007<\u0000\u0000\u1287\u128c\u0005"+
		"\u01df\u0000\u0000\u1288\u1289\u0005\u00b2\u0000\u0000\u1289\u128d\u0005"+
		"\u0497\u0000\u0000\u128a\u128b\u0005\u0010\u0000\u0000\u128b\u128d\u0005"+
		"\u0497\u0000\u0000\u128c\u1288\u0001\u0000\u0000\u0000\u128c\u128a\u0001"+
		"\u0000\u0000\u0000\u128d\u0161\u0001\u0000\u0000\u0000\u128e\u128f\u0005"+
		"\u0250\u0000\u0000\u128f\u1290\u0005\u01e0\u0000\u0000\u1290\u0163\u0001"+
		"\u0000\u0000\u0000\u1291\u1292\u0005\u0250\u0000\u0000\u1292\u1294\u0005"+
		"\u0269\u0000\u0000\u1293\u1295\u0005\u0006\u0000\u0000\u1294\u1293\u0001"+
		"\u0000\u0000\u0000\u1294\u1295\u0001\u0000\u0000\u0000\u1295\u1297\u0001"+
		"\u0000\u0000\u0000\u1296\u1298\u0003\u0176\u00bb\u0000\u1297\u1296\u0001"+
		"\u0000\u0000\u0000\u1297\u1298\u0001\u0000\u0000\u0000\u1298\u0165\u0001"+
		"\u0000\u0000\u0000\u1299\u129a\u0005\u0278\u0000\u0000\u129a\u12a3\u0005"+
		"\u0269\u0000\u0000\u129b\u12a0\u0003\u017c\u00be\u0000\u129c\u129d\u0005"+
		"\u048a\u0000\u0000\u129d\u129f\u0003\u017c\u00be\u0000\u129e\u129c\u0001"+
		"\u0000\u0000\u0000\u129f\u12a2\u0001\u0000\u0000\u0000\u12a0\u129e\u0001"+
		"\u0000\u0000\u0000\u12a0\u12a1\u0001\u0000\u0000\u0000\u12a1\u12a4\u0001"+
		"\u0000\u0000\u0000\u12a2\u12a0\u0001\u0000\u0000\u0000\u12a3\u129b\u0001"+
		"\u0000\u0000\u0000\u12a3\u12a4\u0001\u0000\u0000\u0000\u12a4\u12a7\u0001"+
		"\u0000\u0000\u0000\u12a5\u12a6\u0005\u029a\u0000\u0000\u12a6\u12a8\u0003"+
		"\u017e\u00bf\u0000\u12a7\u12a5\u0001\u0000\u0000\u0000\u12a7\u12a8\u0001"+
		"\u0000\u0000\u0000\u12a8\u12ac\u0001\u0000\u0000\u0000\u12a9\u12ab\u0003"+
		"\u0180\u00c0\u0000\u12aa\u12a9\u0001\u0000\u0000\u0000\u12ab\u12ae\u0001"+
		"\u0000\u0000\u0000\u12ac\u12aa\u0001\u0000\u0000\u0000\u12ac\u12ad\u0001"+
		"\u0000\u0000\u0000\u12ad\u12b0\u0001\u0000\u0000\u0000\u12ae\u12ac\u0001"+
		"\u0000\u0000\u0000\u12af\u12b1\u0003\u0176\u00bb\u0000\u12b0\u12af\u0001"+
		"\u0000\u0000\u0000\u12b0\u12b1\u0001\u0000\u0000\u0000\u12b1\u0167\u0001"+
		"\u0000\u0000\u0000\u12b2\u12b3\u0005\u027e\u0000\u0000\u12b3\u12bc\u0005"+
		"\u0269\u0000\u0000\u12b4\u12b9\u0003\u017c\u00be\u0000\u12b5\u12b6\u0005"+
		"\u048a\u0000\u0000\u12b6\u12b8\u0003\u017c\u00be\u0000\u12b7\u12b5\u0001"+
		"\u0000\u0000\u0000\u12b8\u12bb\u0001\u0000\u0000\u0000\u12b9\u12b7\u0001"+
		"\u0000\u0000\u0000\u12b9\u12ba\u0001\u0000\u0000\u0000\u12ba\u12bd\u0001"+
		"\u0000\u0000\u0000\u12bb\u12b9\u0001\u0000\u0000\u0000\u12bc\u12b4\u0001"+
		"\u0000\u0000\u0000\u12bc\u12bd\u0001\u0000\u0000\u0000\u12bd\u0169\u0001"+
		"\u0000\u0000\u0000\u12be\u12bf\u0005\u0278\u0000\u0000\u12bf\u12c0\u0005"+
		"\u01bc\u0000\u0000\u12c0\u016b\u0001\u0000\u0000\u0000\u12c1\u12c2\u0005"+
		"\u027e\u0000\u0000\u12c2\u12c3\u0005\u01bc\u0000\u0000\u12c3\u016d\u0001"+
		"\u0000\u0000\u0000\u12c4\u12c5\u0003\u0170\u00b8\u0000\u12c5\u12c6\u0005"+
		"\u047f\u0000\u0000\u12c6\u12c7\u0005\u0497\u0000\u0000\u12c7\u12e2\u0001"+
		"\u0000\u0000\u0000\u12c8\u12c9\u0003\u0172\u00b9\u0000\u12c9\u12ca\u0005"+
		"\u047f\u0000\u0000\u12ca\u12cb\u0003\u025e\u012f\u0000\u12cb\u12e2\u0001"+
		"\u0000\u0000\u0000\u12cc\u12cd\u0003\u0174\u00ba\u0000\u12cd\u12ce\u0005"+
		"\u047f\u0000\u0000\u12ce\u12cf\u0007\u001b\u0000\u0000\u12cf\u12e2\u0001"+
		"\u0000\u0000\u0000\u12d0\u12d1\u0005\u01e4\u0000\u0000\u12d1\u12d2\u0005"+
		"\u047f\u0000\u0000\u12d2\u12e2\u0005\u049a\u0000\u0000\u12d3\u12d4\u0005"+
		"\u01c4\u0000\u0000\u12d4\u12d5\u0005\u047f\u0000\u0000\u12d5\u12de\u0005"+
		"\u0488\u0000\u0000\u12d6\u12db\u0003\u0258\u012c\u0000\u12d7\u12d8\u0005"+
		"\u048a\u0000\u0000\u12d8\u12da\u0003\u0258\u012c\u0000\u12d9\u12d7\u0001"+
		"\u0000\u0000\u0000\u12da\u12dd\u0001\u0000\u0000\u0000\u12db\u12d9\u0001"+
		"\u0000\u0000\u0000\u12db\u12dc\u0001\u0000\u0000\u0000\u12dc\u12df\u0001"+
		"\u0000\u0000\u0000\u12dd\u12db\u0001\u0000\u0000\u0000\u12de\u12d6\u0001"+
		"\u0000\u0000\u0000\u12de\u12df\u0001\u0000\u0000\u0000\u12df\u12e0\u0001"+
		"\u0000\u0000\u0000\u12e0\u12e2\u0005\u0489\u0000\u0000\u12e1\u12c4\u0001"+
		"\u0000\u0000\u0000\u12e1\u12c8\u0001\u0000\u0000\u0000\u12e1\u12cc\u0001"+
		"\u0000\u0000\u0000\u12e1\u12d0\u0001\u0000\u0000\u0000\u12e1\u12d3\u0001"+
		"\u0000\u0000\u0000\u12e2\u016f\u0001\u0000\u0000\u0000\u12e3\u12e4\u0007"+
		"=\u0000\u0000\u12e4\u0171\u0001\u0000\u0000\u0000\u12e5\u12e6\u0007>\u0000"+
		"\u0000\u12e6\u0173\u0001\u0000\u0000\u0000\u12e7\u12e8\u0007?\u0000\u0000"+
		"\u12e8\u0175\u0001\u0000\u0000\u0000\u12e9\u12ea\u0005B\u0000\u0000\u12ea"+
		"\u12eb\u0005\u0166\u0000\u0000\u12eb\u12ec\u0005\u0497\u0000\u0000\u12ec"+
		"\u0177\u0001\u0000\u0000\u0000\u12ed\u12ee\u0005\u0248\u0000\u0000\u12ee"+
		"\u12ef\u0005\u047f\u0000\u0000\u12ef\u12f0\u0005\u0488\u0000\u0000\u12f0"+
		"\u12f1\u0003\u027a\u013d\u0000\u12f1\u12f2\u0005\u0489\u0000\u0000\u12f2"+
		"\u131f\u0001\u0000\u0000\u0000\u12f3\u12f4\u0005\u024a\u0000\u0000\u12f4"+
		"\u12f5\u0005\u047f\u0000\u0000\u12f5\u12f6\u0005\u0488\u0000\u0000\u12f6"+
		"\u12f7\u0003\u027a\u013d\u0000\u12f7\u12f8\u0005\u0489\u0000\u0000\u12f8"+
		"\u131f\u0001\u0000\u0000\u0000\u12f9\u12fa\u0005\u0249\u0000\u0000\u12fa"+
		"\u12fb\u0005\u047f\u0000\u0000\u12fb\u12fc\u0005\u0488\u0000\u0000\u12fc"+
		"\u12fd\u0003\u027e\u013f\u0000\u12fd\u12fe\u0005\u0489\u0000\u0000\u12fe"+
		"\u131f\u0001\u0000\u0000\u0000\u12ff\u1300\u0005\u024b\u0000\u0000\u1300"+
		"\u1301\u0005\u047f\u0000\u0000\u1301\u1302\u0005\u0488\u0000\u0000\u1302"+
		"\u1303\u0003\u027e\u013f\u0000\u1303\u1304\u0005\u0489\u0000\u0000\u1304"+
		"\u131f\u0001\u0000\u0000\u0000\u1305\u1306\u0005\u024d\u0000\u0000\u1306"+
		"\u1307\u0005\u047f\u0000\u0000\u1307\u1308\u0005\u0488\u0000\u0000\u1308"+
		"\u1309\u0003\u0288\u0144\u0000\u1309\u130a\u0005\u0489\u0000\u0000\u130a"+
		"\u131f\u0001\u0000\u0000\u0000\u130b\u130c\u0005\u024e\u0000\u0000\u130c"+
		"\u130d\u0005\u047f\u0000\u0000\u130d\u130e\u0005\u0488\u0000\u0000\u130e"+
		"\u130f\u0003\u0288\u0144\u0000\u130f\u1310\u0005\u0489\u0000\u0000\u1310"+
		"\u131f\u0001\u0000\u0000\u0000\u1311\u1312\u0005\u024c\u0000\u0000\u1312"+
		"\u1313\u0005\u047f\u0000\u0000\u1313\u1314\u0005\u0488\u0000\u0000\u1314"+
		"\u1319\u0003\u017a\u00bd\u0000\u1315\u1316\u0005\u048a\u0000\u0000\u1316"+
		"\u1318\u0003\u017a\u00bd\u0000\u1317\u1315\u0001\u0000\u0000\u0000\u1318"+
		"\u131b\u0001\u0000\u0000\u0000\u1319\u1317\u0001\u0000\u0000\u0000\u1319"+
		"\u131a\u0001\u0000\u0000\u0000\u131a\u131c\u0001\u0000\u0000\u0000\u131b"+
		"\u1319\u0001\u0000\u0000\u0000\u131c\u131d\u0005\u0489\u0000\u0000\u131d"+
		"\u131f\u0001\u0000\u0000\u0000\u131e\u12ed\u0001\u0000\u0000\u0000\u131e"+
		"\u12f3\u0001\u0000\u0000\u0000\u131e\u12f9\u0001\u0000\u0000\u0000\u131e"+
		"\u12ff\u0001\u0000\u0000\u0000\u131e\u1305\u0001\u0000\u0000\u0000\u131e"+
		"\u130b\u0001\u0000\u0000\u0000\u131e\u1311\u0001\u0000\u0000\u0000\u131f"+
		"\u0179\u0001\u0000\u0000\u0000\u1320\u1321\u0005\u0488\u0000\u0000\u1321"+
		"\u1322\u0003\u0236\u011b\u0000\u1322\u1323\u0005\u048a\u0000\u0000\u1323"+
		"\u1324\u0003\u0236\u011b\u0000\u1324\u1325\u0005\u0489\u0000\u0000\u1325"+
		"\u017b\u0001\u0000\u0000\u0000\u1326\u1327\u0007@\u0000\u0000\u1327\u017d"+
		"\u0001\u0000\u0000\u0000\u1328\u1329\u0007A\u0000\u0000\u1329\u132a\u0005"+
		"\u047f\u0000\u0000\u132a\u133b\u0003\u0182\u00c1\u0000\u132b\u132c\u0005"+
		"\u01e6\u0000\u0000\u132c\u132d\u0005\u047f\u0000\u0000\u132d\u132e\u0005"+
		"\u0497\u0000\u0000\u132e\u132f\u0005\u048a\u0000\u0000\u132f\u1330\u0005"+
		"\u01e7\u0000\u0000\u1330\u1331\u0005\u047f\u0000\u0000\u1331\u133b\u0003"+
		"\u025e\u012f\u0000\u1332\u1333\u0005\u0242\u0000\u0000\u1333\u1334\u0005"+
		"\u047f\u0000\u0000\u1334\u1335\u0005\u0497\u0000\u0000\u1335\u1336\u0005"+
		"\u048a\u0000\u0000\u1336\u1337\u0005\u0243\u0000\u0000\u1337\u1338\u0005"+
		"\u047f\u0000\u0000\u1338\u133b\u0003\u025e\u012f\u0000\u1339\u133b\u0005"+
		"\u0272\u0000\u0000\u133a\u1328\u0001\u0000\u0000\u0000\u133a\u132b\u0001"+
		"\u0000\u0000\u0000\u133a\u1332\u0001\u0000\u0000\u0000\u133a\u1339\u0001"+
		"\u0000\u0000\u0000\u133b\u017f\u0001\u0000\u0000\u0000\u133c\u133d\u0005"+
		"\u029c\u0000\u0000\u133d\u133e\u0005\u047f\u0000\u0000\u133e\u1349\u0005"+
		"\u0497\u0000\u0000\u133f\u1340\u0005\u022a\u0000\u0000\u1340\u1341\u0005"+
		"\u047f\u0000\u0000\u1341\u1349\u0005\u0497\u0000\u0000\u1342\u1343\u0005"+
		"\u018a\u0000\u0000\u1343\u1344\u0005\u047f\u0000\u0000\u1344\u1349\u0005"+
		"\u0497\u0000\u0000\u1345\u1346\u0005\u022e\u0000\u0000\u1346\u1347\u0005"+
		"\u047f\u0000\u0000\u1347\u1349\u0005\u0497\u0000\u0000\u1348\u133c\u0001"+
		"\u0000\u0000\u0000\u1348\u133f\u0001\u0000\u0000\u0000\u1348\u1342\u0001"+
		"\u0000\u0000\u0000\u1348\u1345\u0001\u0000\u0000\u0000\u1349\u0181\u0001"+
		"\u0000\u0000\u0000\u134a\u134f\u0003\u0250\u0128\u0000\u134b\u134c\u0005"+
		"\u048a\u0000\u0000\u134c\u134e\u0003\u0250\u0128\u0000\u134d\u134b\u0001"+
		"\u0000\u0000\u0000\u134e\u1351\u0001\u0000\u0000\u0000\u134f\u134d\u0001"+
		"\u0000\u0000\u0000\u134f\u1350\u0001\u0000\u0000\u0000\u1350\u1354\u0001"+
		"\u0000\u0000\u0000\u1351\u134f\u0001\u0000\u0000\u0000\u1352\u1354\u0005"+
		"\u0497\u0000\u0000\u1353\u134a\u0001\u0000\u0000\u0000\u1353\u1352\u0001"+
		"\u0000\u0000\u0000\u1354\u0183\u0001\u0000\u0000\u0000\u1355\u1356\u0005"+
		"\u02ac\u0000\u0000\u1356\u1357\u0007B\u0000\u0000\u1357\u1359\u0003\u0252"+
		"\u0129\u0000\u1358\u135a\u0007C\u0000\u0000\u1359\u1358\u0001\u0000\u0000"+
		"\u0000\u1359\u135a\u0001\u0000\u0000\u0000\u135a\u0185\u0001\u0000\u0000"+
		"\u0000\u135b\u135c\u0005\u02ac\u0000\u0000\u135c\u135d\u0005\u019a\u0000"+
		"\u0000\u135d\u1363\u0003\u0252\u0129\u0000\u135e\u1361\u0005\u0286\u0000"+
		"\u0000\u135f\u1360\u0005B\u0000\u0000\u1360\u1362\u0005\u0200\u0000\u0000"+
		"\u1361\u135f\u0001\u0000\u0000\u0000\u1361\u1362\u0001\u0000\u0000\u0000"+
		"\u1362\u1364\u0001\u0000\u0000\u0000\u1363\u135e\u0001\u0000\u0000\u0000"+
		"\u1363\u1364\u0001\u0000\u0000\u0000\u1364\u0187\u0001\u0000\u0000\u0000"+
		"\u1365\u1366\u0005\u02ac\u0000\u0000\u1366\u1367\u0005\u0233\u0000\u0000"+
		"\u1367\u1368\u0003\u0252\u0129\u0000\u1368\u0189\u0001\u0000\u0000\u0000"+
		"\u1369\u136a\u0005\u02ac\u0000\u0000\u136a\u136b\u0005\u0174\u0000\u0000"+
		"\u136b\u136e\u0003\u0252\u0129\u0000\u136c\u136d\u0005\u021b\u0000\u0000"+
		"\u136d\u136f\u0005\u022c\u0000\u0000\u136e\u136c\u0001\u0000\u0000\u0000"+
		"\u136e\u136f\u0001\u0000\u0000\u0000\u136f\u018b\u0001\u0000\u0000\u0000"+
		"\u1370\u1371\u0005\u02ac\u0000\u0000\u1371\u1372\u0005\u0258\u0000\u0000"+
		"\u1372\u1373\u0003\u0252\u0129\u0000\u1373\u018d\u0001\u0000\u0000\u0000"+
		"\u1374\u1375\u0005\u02ac\u0000\u0000\u1375\u1378\u0005\u023d\u0000\u0000"+
		"\u1376\u1377\u0005!\u0000\u0000\u1377\u1379\u0003\u0252\u0129\u0000\u1378"+
		"\u1376\u0001\u0000\u0000\u0000\u1378\u1379\u0001\u0000\u0000\u0000\u1379"+
		"\u018f\u0001\u0000\u0000\u0000\u137a\u137b\u0005\u0233\u0000\u0000\u137b"+
		"\u137c\u0003\u0258\u012c\u0000\u137c\u137f\u0005E\u0000\u0000\u137d\u1380"+
		"\u0005\u0497\u0000\u0000\u137e\u1380\u0005\u04a2\u0000\u0000\u137f\u137d"+
		"\u0001\u0000\u0000\u0000\u137f\u137e\u0001\u0000\u0000\u0000\u1380\u0191"+
		"\u0001\u0000\u0000\u0000\u1381\u1382\u0005\u02cc\u0000\u0000\u1382\u1385"+
		"\u0003\u0258\u012c\u0000\u1383\u1384\u0005\u00be\u0000\u0000\u1384\u1386"+
		"\u0003\u028a\u0145\u0000\u1385\u1383\u0001\u0000\u0000\u0000\u1385\u1386"+
		"\u0001\u0000\u0000\u0000\u1386\u0193\u0001\u0000\u0000\u0000\u1387\u1388"+
		"\u0007D\u0000\u0000\u1388\u1389\u0005\u0233\u0000\u0000\u1389\u138a\u0003"+
		"\u0258\u012c\u0000\u138a\u0195\u0001\u0000\u0000\u0000\u138b\u138e\u0003"+
		"\u0198\u00cc\u0000\u138c\u138e\u0003\u0004\u0002\u0000\u138d\u138b\u0001"+
		"\u0000\u0000\u0000\u138d\u138c\u0001\u0000\u0000\u0000\u138e\u0197\u0001"+
		"\u0000\u0000\u0000\u138f\u1390\u0003\u0258\u012c\u0000\u1390\u1391\u0005"+
		"\u0493\u0000\u0000\u1391\u1393\u0001\u0000\u0000\u0000\u1392\u138f\u0001"+
		"\u0000\u0000\u0000\u1392\u1393\u0001\u0000\u0000\u0000\u1393\u1394\u0001"+
		"\u0000\u0000\u0000\u1394\u13bb\u0005\u015b\u0000\u0000\u1395\u1396\u0003"+
		"\u01ac\u00d6\u0000\u1396\u1397\u0005\u048b\u0000\u0000\u1397\u1399\u0001"+
		"\u0000\u0000\u0000\u1398\u1395\u0001\u0000\u0000\u0000\u1399\u139c\u0001"+
		"\u0000\u0000\u0000\u139a\u1398\u0001\u0000\u0000\u0000\u139a\u139b\u0001"+
		"\u0000\u0000\u0000\u139b\u13a2\u0001\u0000\u0000\u0000\u139c\u139a\u0001"+
		"\u0000\u0000\u0000\u139d\u139e\u0003\u01ae\u00d7\u0000\u139e\u139f\u0005"+
		"\u048b\u0000\u0000\u139f\u13a1\u0001\u0000\u0000\u0000\u13a0\u139d\u0001"+
		"\u0000\u0000\u0000\u13a1\u13a4\u0001\u0000\u0000\u0000\u13a2\u13a0\u0001"+
		"\u0000\u0000\u0000\u13a2\u13a3\u0001\u0000\u0000\u0000\u13a3\u13aa\u0001"+
		"\u0000\u0000\u0000\u13a4\u13a2\u0001\u0000\u0000\u0000\u13a5\u13a6\u0003"+
		"\u01b0\u00d8\u0000\u13a6\u13a7\u0005\u048b\u0000\u0000\u13a7\u13a9\u0001"+
		"\u0000\u0000\u0000\u13a8\u13a5\u0001\u0000\u0000\u0000\u13a9\u13ac\u0001"+
		"\u0000\u0000\u0000\u13aa\u13a8\u0001\u0000\u0000\u0000\u13aa\u13ab\u0001"+
		"\u0000\u0000\u0000\u13ab\u13b2\u0001\u0000\u0000\u0000\u13ac\u13aa\u0001"+
		"\u0000\u0000\u0000\u13ad\u13ae\u0003\u01b2\u00d9\u0000\u13ae\u13af\u0005"+
		"\u048b\u0000\u0000\u13af\u13b1\u0001\u0000\u0000\u0000\u13b0\u13ad\u0001"+
		"\u0000\u0000\u0000\u13b1\u13b4\u0001\u0000\u0000\u0000\u13b2\u13b0\u0001"+
		"\u0000\u0000\u0000\u13b2\u13b3\u0001\u0000\u0000\u0000\u13b3\u13b8\u0001"+
		"\u0000\u0000\u0000\u13b4\u13b2\u0001\u0000\u0000\u0000\u13b5\u13b7\u0003"+
		"\u01b6\u00db\u0000\u13b6\u13b5\u0001\u0000\u0000\u0000\u13b7\u13ba\u0001"+
		"\u0000\u0000\u0000\u13b8\u13b6\u0001\u0000\u0000\u0000\u13b8\u13b9\u0001"+
		"\u0000\u0000\u0000\u13b9\u13bc\u0001\u0000\u0000\u0000\u13ba\u13b8\u0001"+
		"\u0000\u0000\u0000\u13bb\u139a\u0001\u0000\u0000\u0000\u13bb\u13bc\u0001"+
		"\u0000\u0000\u0000\u13bc\u13bd\u0001\u0000\u0000\u0000\u13bd\u13bf\u0005"+
		"\u019a\u0000\u0000\u13be\u13c0\u0003\u0258\u012c\u0000\u13bf\u13be\u0001"+
		"\u0000\u0000\u0000\u13bf\u13c0\u0001\u0000\u0000\u0000\u13c0\u0199\u0001"+
		"\u0000\u0000\u0000\u13c1\u13c4\u0005\u0017\u0000\u0000\u13c2\u13c5\u0003"+
		"\u0258\u012c\u0000\u13c3\u13c5\u0003\u02c4\u0162\u0000\u13c4\u13c2\u0001"+
		"\u0000\u0000\u0000\u13c4\u13c3\u0001\u0000\u0000\u0000\u13c4\u13c5\u0001"+
		"\u0000\u0000\u0000\u13c5\u13c7\u0001\u0000\u0000\u0000\u13c6\u13c8\u0003"+
		"\u01b8\u00dc\u0000\u13c7\u13c6\u0001\u0000\u0000\u0000\u13c8\u13c9\u0001"+
		"\u0000\u0000\u0000\u13c9\u13c7\u0001\u0000\u0000\u0000\u13c9\u13ca\u0001"+
		"\u0000\u0000\u0000\u13ca\u13d1\u0001\u0000\u0000\u0000\u13cb\u13cd\u0005"+
		"6\u0000\u0000\u13cc\u13ce\u0003\u01b6\u00db\u0000\u13cd\u13cc\u0001\u0000"+
		"\u0000\u0000\u13ce\u13cf\u0001\u0000\u0000\u0000\u13cf\u13cd\u0001\u0000"+
		"\u0000\u0000\u13cf\u13d0\u0001\u0000\u0000\u0000\u13d0\u13d2\u0001\u0000"+
		"\u0000\u0000\u13d1\u13cb\u0001\u0000\u0000\u0000\u13d1\u13d2\u0001\u0000"+
		"\u0000\u0000\u13d2\u13d3\u0001\u0000\u0000\u0000\u13d3\u13d4\u0005\u019a"+
		"\u0000\u0000\u13d4\u13d5\u0005\u0017\u0000\u0000\u13d5\u019b\u0001\u0000"+
		"\u0000\u0000\u13d6\u13d7\u0005O\u0000\u0000\u13d7\u13d8\u0003\u02c4\u0162"+
		"\u0000\u13d8\u13da\u0005\u00b1\u0000\u0000\u13d9\u13db\u0003\u01b6\u00db"+
		"\u0000\u13da\u13d9\u0001\u0000\u0000\u0000\u13db\u13dc\u0001\u0000\u0000"+
		"\u0000\u13dc\u13da\u0001\u0000\u0000\u0000\u13dc\u13dd\u0001\u0000\u0000"+
		"\u0000\u13dd\u13e1\u0001\u0000\u0000\u0000\u13de\u13e0\u0003\u01ba\u00dd"+
		"\u0000\u13df\u13de\u0001\u0000\u0000\u0000\u13e0\u13e3\u0001\u0000\u0000"+
		"\u0000\u13e1\u13df\u0001\u0000\u0000\u0000\u13e1\u13e2\u0001\u0000\u0000"+
		"\u0000\u13e2\u13ea\u0001\u0000\u0000\u0000\u13e3\u13e1\u0001\u0000\u0000"+
		"\u0000\u13e4\u13e6\u00056\u0000\u0000\u13e5\u13e7\u0003\u01b6\u00db\u0000"+
		"\u13e6\u13e5\u0001\u0000\u0000\u0000\u13e7\u13e8\u0001\u0000\u0000\u0000"+
		"\u13e8\u13e6\u0001\u0000\u0000\u0000\u13e8\u13e9\u0001\u0000\u0000\u0000"+
		"\u13e9\u13eb\u0001\u0000\u0000\u0000\u13ea\u13e4\u0001\u0000\u0000\u0000"+
		"\u13ea\u13eb\u0001\u0000\u0000\u0000\u13eb\u13ec\u0001\u0000\u0000\u0000"+
		"\u13ec\u13ed\u0005\u019a\u0000\u0000\u13ed\u13ee\u0005O\u0000\u0000\u13ee"+
		"\u019d\u0001\u0000\u0000\u0000\u13ef\u13f0\u0005[\u0000\u0000\u13f0\u13f1"+
		"\u0003\u0258\u012c\u0000\u13f1\u019f\u0001\u0000\u0000\u0000\u13f2\u13f3"+
		"\u0005b\u0000\u0000\u13f3\u13f4\u0003\u0258\u012c\u0000\u13f4\u01a1\u0001"+
		"\u0000\u0000\u0000\u13f5\u13f6\u0003\u0258\u012c\u0000\u13f6\u13f7\u0005"+
		"\u0493\u0000\u0000\u13f7\u13f9\u0001\u0000\u0000\u0000\u13f8\u13f5\u0001"+
		"\u0000\u0000\u0000\u13f8\u13f9\u0001\u0000\u0000\u0000\u13f9\u13fa\u0001"+
		"\u0000\u0000\u0000\u13fa\u13fc\u0005k\u0000\u0000\u13fb\u13fd\u0003\u01b6"+
		"\u00db\u0000\u13fc\u13fb\u0001\u0000\u0000\u0000\u13fd\u13fe\u0001\u0000"+
		"\u0000\u0000\u13fe\u13fc\u0001\u0000\u0000\u0000\u13fe\u13ff\u0001\u0000"+
		"\u0000\u0000\u13ff\u1400\u0001\u0000\u0000\u0000\u1400\u1401\u0005\u019a"+
		"\u0000\u0000\u1401\u1403\u0005k\u0000\u0000\u1402\u1404\u0003\u0258\u012c"+
		"\u0000\u1403\u1402\u0001\u0000\u0000\u0000\u1403\u1404\u0001\u0000\u0000"+
		"\u0000\u1404\u01a3\u0001\u0000\u0000\u0000\u1405\u1406\u0003\u0258\u012c"+
		"\u0000\u1406\u1407\u0005\u0493\u0000\u0000\u1407\u1409\u0001\u0000\u0000"+
		"\u0000\u1408\u1405\u0001\u0000\u0000\u0000\u1408\u1409\u0001\u0000\u0000"+
		"\u0000\u1409\u140a\u0001\u0000\u0000\u0000\u140a\u140c\u0005\u008e\u0000"+
		"\u0000\u140b\u140d\u0003\u01b6\u00db\u0000\u140c\u140b\u0001\u0000\u0000"+
		"\u0000\u140d\u140e\u0001\u0000\u0000\u0000\u140e\u140c\u0001\u0000\u0000"+
		"\u0000\u140e\u140f\u0001\u0000\u0000\u0000\u140f\u1410\u0001\u0000\u0000"+
		"\u0000\u1410\u1411\u0005\u029a\u0000\u0000\u1411\u1412\u0003\u02c4\u0162"+
		"\u0000\u1412\u1413\u0005\u019a\u0000\u0000\u1413\u1415\u0005\u008e\u0000"+
		"\u0000\u1414\u1416\u0003\u0258\u012c\u0000\u1415\u1414\u0001\u0000\u0000"+
		"\u0000\u1415\u1416\u0001\u0000\u0000\u0000\u1416\u01a5\u0001\u0000\u0000"+
		"\u0000\u1417\u1418\u0005\u0094\u0000\u0000\u1418\u1419\u0003\u02c4\u0162"+
		"\u0000\u1419\u01a7\u0001\u0000\u0000\u0000\u141a\u141b\u0003\u0258\u012c"+
		"\u0000\u141b\u141c\u0005\u0493\u0000\u0000\u141c\u141e\u0001\u0000\u0000"+
		"\u0000\u141d\u141a\u0001\u0000\u0000\u0000\u141d\u141e\u0001\u0000\u0000"+
		"\u0000\u141e\u141f\u0001\u0000\u0000\u0000\u141f\u1420\u0005\u00c2\u0000"+
		"\u0000\u1420\u1421\u0003\u02c4\u0162\u0000\u1421\u1423\u0005\u0192\u0000"+
		"\u0000\u1422\u1424\u0003\u01b6\u00db\u0000\u1423\u1422\u0001\u0000\u0000"+
		"\u0000\u1424\u1425\u0001\u0000\u0000\u0000\u1425\u1423\u0001\u0000\u0000"+
		"\u0000\u1425\u1426\u0001\u0000\u0000\u0000\u1426\u1427\u0001\u0000\u0000"+
		"\u0000\u1427\u1428\u0005\u019a\u0000\u0000\u1428\u142a\u0005\u00c2\u0000"+
		"\u0000\u1429\u142b\u0003\u0258\u012c\u0000\u142a\u1429\u0001\u0000\u0000"+
		"\u0000\u142a\u142b\u0001\u0000\u0000\u0000\u142b\u01a9\u0001\u0000\u0000"+
		"\u0000\u142c\u142d\u0005\u016c\u0000\u0000\u142d\u143c\u0003\u0258\u012c"+
		"\u0000\u142e\u1433\u0005A\u0000\u0000\u142f\u1431\u0005\u020b\u0000\u0000"+
		"\u1430\u142f\u0001\u0000\u0000\u0000\u1430\u1431\u0001\u0000\u0000\u0000"+
		"\u1431\u1432\u0001\u0000\u0000\u0000\u1432\u1434\u0005E\u0000\u0000\u1433"+
		"\u1430\u0001\u0000\u0000\u0000\u1433\u1434\u0001\u0000\u0000\u0000\u1434"+
		"\u1435\u0001\u0000\u0000\u0000\u1435\u1436\u0003\u0258\u012c\u0000\u1436"+
		"\u1437\u0005Y\u0000\u0000\u1437\u1438\u0003\u027a\u013d\u0000\u1438\u143c"+
		"\u0001\u0000\u0000\u0000\u1439\u143a\u0005\u021e\u0000\u0000\u143a\u143c"+
		"\u0003\u0258\u012c\u0000\u143b\u142c\u0001\u0000\u0000\u0000\u143b\u142e"+
		"\u0001\u0000\u0000\u0000\u143b\u1439\u0001\u0000\u0000\u0000\u143c\u01ab"+
		"\u0001\u0000\u0000\u0000\u143d\u143e\u0005*\u0000\u0000\u143e\u143f\u0003"+
		"\u027a\u013d\u0000\u143f\u1442\u0003\u026c\u0136\u0000\u1440\u1441\u0005"+
		"+\u0000\u0000\u1441\u1443\u0003\u02c4\u0162\u0000\u1442\u1440\u0001\u0000"+
		"\u0000\u0000\u1442\u1443\u0001\u0000\u0000\u0000\u1443\u01ad\u0001\u0000"+
		"\u0000\u0000\u1444\u1445\u0005*\u0000\u0000\u1445\u1446\u0003\u0258\u012c"+
		"\u0000\u1446\u1447\u0005\u001e\u0000\u0000\u1447\u144e\u0005B\u0000\u0000"+
		"\u1448\u144f\u0003\u025e\u012f\u0000\u1449\u144b\u0005\u00a4\u0000\u0000"+
		"\u144a\u144c\u0005\u02a0\u0000\u0000\u144b\u144a\u0001\u0000\u0000\u0000"+
		"\u144b\u144c\u0001\u0000\u0000\u0000\u144c\u144d\u0001\u0000\u0000\u0000"+
		"\u144d\u144f\u0005\u0497\u0000\u0000\u144e\u1448\u0001\u0000\u0000\u0000"+
		"\u144e\u1449\u0001\u0000\u0000\u0000\u144f\u01af\u0001\u0000\u0000\u0000"+
		"\u1450\u1451\u0005*\u0000\u0000\u1451\u1452\u0003\u0258\u012c\u0000\u1452"+
		"\u1453\u0005\'\u0000\u0000\u1453\u1454\u0005B\u0000\u0000\u1454\u1455"+
		"\u0003\u00d6k\u0000\u1455\u01b1\u0001\u0000\u0000\u0000\u1456\u1457\u0005"+
		"*\u0000\u0000\u1457\u1458\u0007E\u0000\u0000\u1458\u1459\u0005\u01bd\u0000"+
		"\u0000\u1459\u145a\u0005B\u0000\u0000\u145a\u145f\u0003\u01b4\u00da\u0000"+
		"\u145b\u145c\u0005\u048a\u0000\u0000\u145c\u145e\u0003\u01b4\u00da\u0000"+
		"\u145d\u145b\u0001\u0000\u0000\u0000\u145e\u1461\u0001\u0000\u0000\u0000"+
		"\u145f\u145d\u0001\u0000\u0000\u0000\u145f\u1460\u0001\u0000\u0000\u0000"+
		"\u1460\u1462\u0001\u0000\u0000\u0000\u1461\u145f\u0001\u0000\u0000\u0000"+
		"\u1462\u1463\u0003\u0196\u00cb\u0000\u1463\u01b3\u0001\u0000\u0000\u0000"+
		"\u1464\u1470\u0003\u025e\u012f\u0000\u1465\u1467\u0005\u00a4\u0000\u0000"+
		"\u1466\u1468\u0005\u02a0\u0000\u0000\u1467\u1466\u0001\u0000\u0000\u0000"+
		"\u1467\u1468\u0001\u0000\u0000\u0000\u1468\u1469\u0001\u0000\u0000\u0000"+
		"\u1469\u1470\u0005\u0497\u0000\u0000\u146a\u1470\u0003\u0258\u012c\u0000"+
		"\u146b\u1470\u0005\u00a5\u0000\u0000\u146c\u146d\u0005t\u0000\u0000\u146d"+
		"\u1470\u0005\u01b6\u0000\u0000\u146e\u1470\u0005\u00a3\u0000\u0000\u146f"+
		"\u1464\u0001\u0000\u0000\u0000\u146f\u1465\u0001\u0000\u0000\u0000\u146f"+
		"\u146a\u0001\u0000\u0000\u0000\u146f\u146b\u0001\u0000\u0000\u0000\u146f"+
		"\u146c\u0001\u0000\u0000\u0000\u146f\u146e\u0001\u0000\u0000\u0000\u1470"+
		"\u01b5\u0001\u0000\u0000\u0000\u1471\u1474\u0003\u0014\n\u0000\u1472\u1474"+
		"\u0003\u0004\u0002\u0000\u1473\u1471\u0001\u0000\u0000\u0000\u1473\u1472"+
		"\u0001\u0000\u0000\u0000\u1474\u1475\u0001\u0000\u0000\u0000\u1475\u1476"+
		"\u0005\u048b\u0000\u0000\u1476\u01b7\u0001\u0000\u0000\u0000\u1477\u147a"+
		"\u0005\u00c0\u0000\u0000\u1478\u147b\u0003\u026a\u0135\u0000\u1479\u147b"+
		"\u0003\u02c4\u0162\u0000\u147a\u1478\u0001\u0000\u0000\u0000\u147a\u1479"+
		"\u0001\u0000\u0000\u0000\u147b\u147c\u0001\u0000\u0000\u0000\u147c\u147e"+
		"\u0005\u00b1\u0000\u0000\u147d\u147f\u0003\u01b6\u00db\u0000\u147e\u147d"+
		"\u0001\u0000\u0000\u0000\u147f\u1480\u0001\u0000\u0000\u0000\u1480\u147e"+
		"\u0001\u0000\u0000\u0000\u1480\u1481\u0001\u0000\u0000\u0000\u1481\u01b9"+
		"\u0001\u0000\u0000\u0000\u1482\u1483\u00057\u0000\u0000\u1483\u1484\u0003"+
		"\u02c4\u0162\u0000\u1484\u1486\u0005\u00b1\u0000\u0000\u1485\u1487\u0003"+
		"\u01b6\u00db\u0000\u1486\u1485\u0001\u0000\u0000\u0000\u1487\u1488\u0001"+
		"\u0000\u0000\u0000\u1488\u1486\u0001\u0000\u0000\u0000\u1488\u1489\u0001"+
		"\u0000\u0000\u0000\u1489\u01bb\u0001\u0000\u0000\u0000\u148a\u148b\u0005"+
		"\u0007\u0000\u0000\u148b\u148c\u0005\u029c\u0000\u0000\u148c\u1491\u0003"+
		"\u01d0\u00e8\u0000\u148d\u148e\u0005\u048a\u0000\u0000\u148e\u1490\u0003"+
		"\u01d0\u00e8\u0000\u148f\u148d\u0001\u0000\u0000\u0000\u1490\u1493\u0001"+
		"\u0000\u0000\u0000\u1491\u148f\u0001\u0000\u0000\u0000\u1491\u1492\u0001"+
		"\u0000\u0000\u0000\u1492\u14d4\u0001\u0000\u0000\u0000\u1493\u1491\u0001"+
		"\u0000\u0000\u0000\u1494\u1495\u0005\u0007\u0000\u0000\u1495\u1497\u0005"+
		"\u029c\u0000\u0000\u1496\u1498\u0003\u0292\u0149\u0000\u1497\u1496\u0001"+
		"\u0000\u0000\u0000\u1497\u1498\u0001\u0000\u0000\u0000\u1498\u1499\u0001"+
		"\u0000\u0000\u0000\u1499\u149e\u0003\u01d2\u00e9\u0000\u149a\u149b\u0005"+
		"\u048a\u0000\u0000\u149b\u149d\u0003\u01d2\u00e9\u0000\u149c\u149a\u0001"+
		"\u0000\u0000\u0000\u149d\u14a0\u0001\u0000\u0000\u0000\u149e\u149c\u0001"+
		"\u0000\u0000\u0000\u149e\u149f\u0001\u0000\u0000\u0000\u149f\u14af\u0001"+
		"\u0000\u0000\u0000\u14a0\u149e\u0001\u0000\u0000\u0000\u14a1\u14ad\u0005"+
		"\u0090\u0000\u0000\u14a2\u14ae\u0005\u0214\u0000\u0000\u14a3\u14aa\u0003"+
		"\u01d8\u00ec\u0000\u14a4\u14a6\u0005\n\u0000\u0000\u14a5\u14a4\u0001\u0000"+
		"\u0000\u0000\u14a5\u14a6\u0001\u0000\u0000\u0000\u14a6\u14a7\u0001\u0000"+
		"\u0000\u0000\u14a7\u14a9\u0003\u01d8\u00ec\u0000\u14a8\u14a5\u0001\u0000"+
		"\u0000\u0000\u14a9\u14ac\u0001\u0000\u0000\u0000\u14aa\u14a8\u0001\u0000"+
		"\u0000\u0000\u14aa\u14ab\u0001\u0000\u0000\u0000\u14ab\u14ae\u0001\u0000"+
		"\u0000\u0000\u14ac\u14aa\u0001\u0000\u0000\u0000\u14ad\u14a2\u0001\u0000"+
		"\u0000\u0000\u14ad\u14a3\u0001\u0000\u0000\u0000\u14ae\u14b0\u0001\u0000"+
		"\u0000\u0000\u14af\u14a1\u0001\u0000\u0000\u0000\u14af\u14b0\u0001\u0000"+
		"\u0000\u0000\u14b0\u14b7\u0001\u0000\u0000\u0000\u14b1\u14b3\u0005\u00c3"+
		"\u0000\u0000\u14b2\u14b4\u0003\u01da\u00ed\u0000\u14b3\u14b2\u0001\u0000"+
		"\u0000\u0000\u14b4\u14b5\u0001\u0000\u0000\u0000\u14b5\u14b3\u0001\u0000"+
		"\u0000\u0000\u14b5\u14b6\u0001\u0000\u0000\u0000\u14b6\u14b8\u0001\u0000"+
		"\u0000\u0000\u14b7\u14b1\u0001\u0000\u0000\u0000\u14b7\u14b8\u0001\u0000"+
		"\u0000\u0000\u14b8\u14bd\u0001\u0000\u0000\u0000\u14b9\u14bc\u0003\u01dc"+
		"\u00ee\u0000\u14ba\u14bc\u0003\u01de\u00ef\u0000\u14bb\u14b9\u0001\u0000"+
		"\u0000\u0000\u14bb\u14ba\u0001\u0000\u0000\u0000\u14bc\u14bf\u0001\u0000"+
		"\u0000\u0000\u14bd\u14bb\u0001\u0000\u0000\u0000\u14bd\u14be\u0001\u0000"+
		"\u0000\u0000\u14be\u14c4\u0001\u0000\u0000\u0000\u14bf\u14bd\u0001\u0000"+
		"\u0000\u0000\u14c0\u14c1\u0005\u0173\u0000\u0000\u14c1\u14c5\u0005\u0497"+
		"\u0000\u0000\u14c2\u14c3\u0005\u000e\u0000\u0000\u14c3\u14c5\u0005\u0497"+
		"\u0000\u0000\u14c4\u14c0\u0001\u0000\u0000\u0000\u14c4\u14c2\u0001\u0000"+
		"\u0000\u0000\u14c4\u14c5\u0001\u0000\u0000\u0000\u14c5\u14d4\u0001\u0000"+
		"\u0000\u0000\u14c6\u14c7\u0005\u0007\u0000\u0000\u14c7\u14c9\u0005\u029c"+
		"\u0000\u0000\u14c8\u14ca\u0003\u0292\u0149\u0000\u14c9\u14c8\u0001\u0000"+
		"\u0000\u0000\u14c9\u14ca\u0001\u0000\u0000\u0000\u14ca\u14cd\u0001\u0000"+
		"\u0000\u0000\u14cb\u14ce\u0003\u0242\u0121\u0000\u14cc\u14ce\u0003\u0258"+
		"\u012c\u0000\u14cd\u14cb\u0001\u0000\u0000\u0000\u14cd\u14cc\u0001\u0000"+
		"\u0000\u0000\u14ce\u14cf\u0001\u0000\u0000\u0000\u14cf\u14d0\u0005+\u0000"+
		"\u0000\u14d0\u14d1\u0005\u0257\u0000\u0000\u14d1\u14d2\u0003\u01c4\u00e2"+
		"\u0000\u14d2\u14d4\u0001\u0000\u0000\u0000\u14d3\u148a\u0001\u0000\u0000"+
		"\u0000\u14d3\u1494\u0001\u0000\u0000\u0000\u14d3\u14c6\u0001\u0000\u0000"+
		"\u0000\u14d4\u01bd\u0001\u0000\u0000\u0000\u14d5\u14d6\u0005\"\u0000\u0000"+
		"\u14d6\u14d7\u0005\u029c\u0000\u0000\u14d7\u14dc\u0003\u01d2\u00e9\u0000"+
		"\u14d8\u14d9\u0005\u048a\u0000\u0000\u14d9\u14db\u0003\u01d2\u00e9\u0000"+
		"\u14da\u14d8\u0001\u0000\u0000\u0000\u14db\u14de\u0001\u0000\u0000\u0000"+
		"\u14dc\u14da\u0001\u0000\u0000\u0000\u14dc\u14dd\u0001\u0000\u0000\u0000"+
		"\u14dd\u1517\u0001\u0000\u0000\u0000\u14de\u14dc\u0001\u0000\u0000\u0000"+
		"\u14df\u14e0\u0005\"\u0000\u0000\u14e0\u14e2\u0005\u029c\u0000\u0000\u14e1"+
		"\u14e3\u0003\u0294\u014a\u0000\u14e2\u14e1\u0001\u0000\u0000\u0000\u14e2"+
		"\u14e3\u0001\u0000\u0000\u0000\u14e3\u14e4\u0001\u0000\u0000\u0000\u14e4"+
		"\u14e9\u0003\u01d2\u00e9\u0000\u14e5\u14e6\u0005\u048a\u0000\u0000\u14e6"+
		"\u14e8\u0003\u01d2\u00e9\u0000\u14e7\u14e5\u0001\u0000\u0000\u0000\u14e8"+
		"\u14eb\u0001\u0000\u0000\u0000\u14e9\u14e7\u0001\u0000\u0000\u0000\u14e9"+
		"\u14ea\u0001\u0000\u0000\u0000\u14ea\u14ef\u0001\u0000\u0000\u0000\u14eb"+
		"\u14e9\u0001\u0000\u0000\u0000\u14ec\u14ed\u0005+\u0000\u0000\u14ed\u14ee"+
		"\u0005\u0257\u0000\u0000\u14ee\u14f0\u0003\u01c4\u00e2\u0000\u14ef\u14ec"+
		"\u0001\u0000\u0000\u0000\u14ef\u14f0\u0001\u0000\u0000\u0000\u14f0\u14ff"+
		"\u0001\u0000\u0000\u0000\u14f1\u14fd\u0005\u0090\u0000\u0000\u14f2\u14fe"+
		"\u0005\u0214\u0000\u0000\u14f3\u14fa\u0003\u01d8\u00ec\u0000\u14f4\u14f6"+
		"\u0005\n\u0000\u0000\u14f5\u14f4\u0001\u0000\u0000\u0000\u14f5\u14f6\u0001"+
		"\u0000\u0000\u0000\u14f6\u14f7\u0001\u0000\u0000\u0000\u14f7\u14f9\u0003"+
		"\u01d8\u00ec\u0000\u14f8\u14f5\u0001\u0000\u0000\u0000\u14f9\u14fc\u0001"+
		"\u0000\u0000\u0000\u14fa\u14f8\u0001\u0000\u0000\u0000\u14fa\u14fb\u0001"+
		"\u0000\u0000\u0000\u14fb\u14fe\u0001\u0000\u0000\u0000\u14fc\u14fa\u0001"+
		"\u0000\u0000\u0000\u14fd\u14f2\u0001\u0000\u0000\u0000\u14fd\u14f3\u0001"+
		"\u0000\u0000\u0000\u14fe\u1500\u0001\u0000\u0000\u0000\u14ff\u14f1\u0001"+
		"\u0000\u0000\u0000\u14ff\u1500\u0001\u0000\u0000\u0000\u1500\u1507\u0001"+
		"\u0000\u0000\u0000\u1501\u1503\u0005\u00c3\u0000\u0000\u1502\u1504\u0003"+
		"\u01da\u00ed\u0000\u1503\u1502\u0001\u0000\u0000\u0000\u1504\u1505\u0001"+
		"\u0000\u0000\u0000\u1505\u1503\u0001\u0000\u0000\u0000\u1505\u1506\u0001"+
		"\u0000\u0000\u0000\u1506\u1508\u0001\u0000\u0000\u0000\u1507\u1501\u0001"+
		"\u0000\u0000\u0000\u1507\u1508\u0001\u0000\u0000\u0000\u1508\u150d\u0001"+
		"\u0000\u0000\u0000\u1509\u150c\u0003\u01dc\u00ee\u0000\u150a\u150c\u0003"+
		"\u01de\u00ef\u0000\u150b\u1509\u0001\u0000\u0000\u0000\u150b\u150a\u0001"+
		"\u0000\u0000\u0000\u150c\u150f\u0001\u0000\u0000\u0000\u150d\u150b\u0001"+
		"\u0000\u0000\u0000\u150d\u150e\u0001\u0000\u0000\u0000\u150e\u1514\u0001"+
		"\u0000\u0000\u0000\u150f\u150d\u0001\u0000\u0000\u0000\u1510\u1511\u0005"+
		"\u0173\u0000\u0000\u1511\u1515\u0005\u0497\u0000\u0000\u1512\u1513\u0005"+
		"\u000e\u0000\u0000\u1513\u1515\u0005\u0497\u0000\u0000\u1514\u1510\u0001"+
		"\u0000\u0000\u0000\u1514\u1512\u0001\u0000\u0000\u0000\u1514\u1515\u0001"+
		"\u0000\u0000\u0000\u1515\u1517\u0001\u0000\u0000\u0000\u1516\u14d5\u0001"+
		"\u0000\u0000\u0000\u1516\u14df\u0001\u0000\u0000\u0000\u1517\u01bf\u0001"+
		"\u0000\u0000\u0000\u1518\u1519\u00054\u0000\u0000\u1519\u151b\u0005\u029c"+
		"\u0000\u0000\u151a\u151c\u0003\u0292\u0149\u0000\u151b\u151a\u0001\u0000"+
		"\u0000\u0000\u151b\u151c\u0001\u0000\u0000\u0000\u151c\u151d\u0001\u0000"+
		"\u0000\u0000\u151d\u1522\u0003\u0242\u0121\u0000\u151e\u151f\u0005\u048a"+
		"\u0000\u0000\u151f\u1521\u0003\u0242\u0121\u0000\u1520\u151e\u0001\u0000"+
		"\u0000\u0000\u1521\u1524\u0001\u0000\u0000\u0000\u1522\u1520\u0001\u0000"+
		"\u0000\u0000\u1522\u1523\u0001\u0000\u0000\u0000\u1523\u01c1\u0001\u0000"+
		"\u0000\u0000\u1524\u1522\u0001\u0000\u0000\u0000\u1525\u1526\u0005I\u0000"+
		"\u0000\u1526\u152b\u0003\u01e0\u00f0\u0000\u1527\u1528\u0005\u048a\u0000"+
		"\u0000\u1528\u152a\u0003\u01e0\u00f0\u0000\u1529\u1527\u0001\u0000\u0000"+
		"\u0000\u152a\u152d\u0001\u0000\u0000\u0000\u152b\u1529\u0001\u0000\u0000"+
		"\u0000\u152b\u152c\u0001\u0000\u0000\u0000\u152c\u152e\u0001\u0000\u0000"+
		"\u0000\u152d\u152b\u0001\u0000\u0000\u0000\u152e\u1530\u0005x\u0000\u0000"+
		"\u152f\u1531\u0007F\u0000\u0000\u1530\u152f\u0001\u0000\u0000\u0000\u1530"+
		"\u1531\u0001\u0000\u0000\u0000\u1531\u1532\u0001\u0000\u0000\u0000\u1532"+
		"\u1533\u0003\u01e4\u00f2\u0000\u1533\u1534\u0005\u00b2\u0000\u0000\u1534"+
		"\u1539\u0003\u01d2\u00e9\u0000\u1535\u1536\u0005\u048a\u0000\u0000\u1536"+
		"\u1538\u0003\u01d2\u00e9\u0000\u1537\u1535\u0001\u0000\u0000\u0000\u1538"+
		"\u153b\u0001\u0000\u0000\u0000\u1539\u1537\u0001\u0000\u0000\u0000\u1539"+
		"\u153a\u0001\u0000\u0000\u0000\u153a\u154a\u0001\u0000\u0000\u0000\u153b"+
		"\u1539\u0001\u0000\u0000\u0000\u153c\u1548\u0005\u0090\u0000\u0000\u153d"+
		"\u1549\u0005\u0214\u0000\u0000\u153e\u1545\u0003\u01d8\u00ec\u0000\u153f"+
		"\u1541\u0005\n\u0000\u0000\u1540\u153f\u0001\u0000\u0000\u0000\u1540\u1541"+
		"\u0001\u0000\u0000\u0000\u1541\u1542\u0001\u0000\u0000\u0000\u1542\u1544"+
		"\u0003\u01d8\u00ec\u0000\u1543\u1540\u0001\u0000\u0000\u0000\u1544\u1547"+
		"\u0001\u0000\u0000\u0000\u1545\u1543\u0001\u0000\u0000\u0000\u1545\u1546"+
		"\u0001\u0000\u0000\u0000\u1546\u1549\u0001\u0000\u0000\u0000\u1547\u1545"+
		"\u0001\u0000\u0000\u0000\u1548\u153d\u0001\u0000\u0000\u0000\u1548\u153e"+
		"\u0001\u0000\u0000\u0000\u1549\u154b\u0001\u0000\u0000\u0000\u154a\u153c"+
		"\u0001\u0000\u0000\u0000\u154a\u154b\u0001\u0000\u0000\u0000\u154b\u1555"+
		"\u0001\u0000\u0000\u0000\u154c\u1552\u0005\u00c3\u0000\u0000\u154d\u154e"+
		"\u0005I\u0000\u0000\u154e\u1551\u0005z\u0000\u0000\u154f\u1551\u0003\u01da"+
		"\u00ed\u0000\u1550\u154d\u0001\u0000\u0000\u0000\u1550\u154f\u0001\u0000"+
		"\u0000\u0000\u1551\u1554\u0001\u0000\u0000\u0000\u1552\u1550\u0001\u0000"+
		"\u0000\u0000\u1552\u1553\u0001\u0000\u0000\u0000\u1553\u1556\u0001\u0000"+
		"\u0000\u0000\u1554\u1552\u0001\u0000\u0000\u0000\u1555\u154c\u0001\u0000"+
		"\u0000\u0000\u1555\u1556\u0001\u0000\u0000\u0000\u1556\u155d\u0001\u0000"+
		"\u0000\u0000\u1557\u1558\u0005\f\u0000\u0000\u1558\u1559\u0003\u0242\u0121"+
		"\u0000\u1559\u155a\u0005\u00c3\u0000\u0000\u155a\u155b\u0005\u0257\u0000"+
		"\u0000\u155b\u155c\u0003\u01c4\u00e2\u0000\u155c\u155e\u0001\u0000\u0000"+
		"\u0000\u155d\u1557\u0001\u0000\u0000\u0000\u155d\u155e\u0001\u0000\u0000"+
		"\u0000\u155e\u1583\u0001\u0000\u0000\u0000\u155f\u1562\u0005I\u0000\u0000"+
		"\u1560\u1563\u0003\u0242\u0121\u0000\u1561\u1563\u0003\u0258\u012c\u0000"+
		"\u1562\u1560\u0001\u0000\u0000\u0000\u1562\u1561\u0001\u0000\u0000\u0000"+
		"\u1563\u156b\u0001\u0000\u0000\u0000\u1564\u1567\u0005\u048a\u0000\u0000"+
		"\u1565\u1568\u0003\u0242\u0121\u0000\u1566\u1568\u0003\u0258\u012c\u0000"+
		"\u1567\u1565\u0001\u0000\u0000\u0000\u1567\u1566\u0001\u0000\u0000\u0000"+
		"\u1568\u156a\u0001\u0000\u0000\u0000\u1569\u1564\u0001\u0000\u0000\u0000"+
		"\u156a\u156d\u0001\u0000\u0000\u0000\u156b\u1569\u0001\u0000\u0000\u0000"+
		"\u156b\u156c\u0001\u0000\u0000\u0000\u156c\u156e\u0001\u0000\u0000\u0000"+
		"\u156d\u156b\u0001\u0000\u0000\u0000\u156e\u1571\u0005\u00b2\u0000\u0000"+
		"\u156f\u1572\u0003\u0242\u0121\u0000\u1570\u1572\u0003\u0258\u012c\u0000"+
		"\u1571\u156f\u0001\u0000\u0000\u0000\u1571\u1570\u0001\u0000\u0000\u0000"+
		"\u1572\u157a\u0001\u0000\u0000\u0000\u1573\u1576\u0005\u048a\u0000\u0000"+
		"\u1574\u1577\u0003\u0242\u0121\u0000\u1575\u1577\u0003\u0258\u012c\u0000"+
		"\u1576\u1574\u0001\u0000\u0000\u0000\u1576\u1575\u0001\u0000\u0000\u0000"+
		"\u1577\u1579\u0001\u0000\u0000\u0000\u1578\u1573\u0001\u0000\u0000\u0000"+
		"\u1579\u157c\u0001\u0000\u0000\u0000\u157a\u1578\u0001\u0000\u0000\u0000"+
		"\u157a\u157b\u0001\u0000\u0000\u0000\u157b\u1580\u0001\u0000\u0000\u0000"+
		"\u157c\u157a\u0001\u0000\u0000\u0000\u157d\u157e\u0005\u00c3\u0000\u0000"+
		"\u157e\u157f\u0005\u02c1\u0000\u0000\u157f\u1581\u0005z\u0000\u0000\u1580"+
		"\u157d\u0001\u0000\u0000\u0000\u1580\u1581\u0001\u0000\u0000\u0000\u1581"+
		"\u1583\u0001\u0000\u0000\u0000\u1582\u1525\u0001\u0000\u0000\u0000\u1582"+
		"\u155f\u0001\u0000\u0000\u0000\u1583\u01c3\u0001\u0000\u0000\u0000\u1584"+
		"\u159b\u0005+\u0000\u0000\u1585\u159b\u0005\u0214\u0000\u0000\u1586\u1590"+
		"\u0005\u0006\u0000\u0000\u1587\u1588\u0005<\u0000\u0000\u1588\u158d\u0003"+
		"\u0242\u0121\u0000\u1589\u158a\u0005\u048a\u0000\u0000\u158a\u158c\u0003"+
		"\u0242\u0121\u0000\u158b\u1589\u0001\u0000\u0000\u0000\u158c\u158f\u0001"+
		"\u0000\u0000\u0000\u158d\u158b\u0001\u0000\u0000\u0000\u158d\u158e\u0001"+
		"\u0000\u0000\u0000\u158e\u1591\u0001\u0000\u0000\u0000\u158f\u158d\u0001"+
		"\u0000\u0000\u0000\u1590\u1587\u0001\u0000\u0000\u0000\u1590\u1591\u0001"+
		"\u0000\u0000\u0000\u1591\u159b\u0001\u0000\u0000\u0000\u1592\u1597\u0003"+
		"\u0242\u0121\u0000\u1593\u1594\u0005\u048a\u0000\u0000\u1594\u1596\u0003"+
		"\u0242\u0121\u0000\u1595\u1593\u0001\u0000\u0000\u0000\u1596\u1599\u0001"+
		"\u0000\u0000\u0000\u1597\u1595\u0001\u0000\u0000\u0000\u1597\u1598\u0001"+
		"\u0000\u0000\u0000\u1598\u159b\u0001\u0000\u0000\u0000\u1599\u1597\u0001"+
		"\u0000\u0000\u0000\u159a\u1584\u0001\u0000\u0000\u0000\u159a\u1585\u0001"+
		"\u0000\u0000\u0000\u159a\u1586\u0001\u0000\u0000\u0000\u159a\u1592\u0001"+
		"\u0000\u0000\u0000\u159b\u01c5\u0001\u0000\u0000\u0000\u159c\u159d\u0005"+
		"I\u0000\u0000\u159d\u159e\u0005\u0239\u0000\u0000\u159e\u159f\u0005x\u0000"+
		"\u0000\u159f\u15a0\u0003\u0242\u0121\u0000\u15a0\u15a1\u0005\u00b2\u0000"+
		"\u0000\u15a1\u15a6\u0003\u0242\u0121\u0000\u15a2\u15a3\u0005\u048a\u0000"+
		"\u0000\u15a3\u15a5\u0003\u0242\u0121\u0000\u15a4\u15a2\u0001\u0000\u0000"+
		"\u0000\u15a5\u15a8\u0001\u0000\u0000\u0000\u15a6\u15a4\u0001\u0000\u0000"+
		"\u0000\u15a6\u15a7\u0001\u0000\u0000\u0000\u15a7\u15ac\u0001\u0000\u0000"+
		"\u0000\u15a8\u15a6\u0001\u0000\u0000\u0000\u15a9\u15aa\u0005\u00c3\u0000"+
		"\u0000\u15aa\u15ab\u0005I\u0000\u0000\u15ab\u15ad\u0005z\u0000\u0000\u15ac"+
		"\u15a9\u0001\u0000\u0000\u0000\u15ac\u15ad\u0001\u0000\u0000\u0000\u15ad"+
		"\u01c7\u0001\u0000\u0000\u0000\u15ae\u15af\u0005\u008d\u0000\u0000\u15af"+
		"\u15b0\u0005\u029c\u0000\u0000\u15b0\u15b5\u0003\u01e6\u00f3\u0000\u15b1"+
		"\u15b2\u0005\u048a\u0000\u0000\u15b2\u15b4\u0003\u01e6\u00f3\u0000\u15b3"+
		"\u15b1\u0001\u0000\u0000\u0000\u15b4\u15b7\u0001\u0000\u0000\u0000\u15b5"+
		"\u15b3\u0001\u0000\u0000\u0000\u15b5\u15b6\u0001\u0000\u0000\u0000\u15b6"+
		"\u01c9\u0001\u0000\u0000\u0000\u15b7\u15b5\u0001\u0000\u0000\u0000\u15b8"+
		"\u15b9\u0005\u0095\u0000\u0000\u15b9\u15be\u0003\u01e0\u00f0\u0000\u15ba"+
		"\u15bb\u0005\u048a\u0000\u0000\u15bb\u15bd\u0003\u01e0\u00f0\u0000\u15bc"+
		"\u15ba\u0001\u0000\u0000\u0000\u15bd\u15c0\u0001\u0000\u0000\u0000\u15be"+
		"\u15bc\u0001\u0000\u0000\u0000\u15be\u15bf\u0001\u0000\u0000\u0000\u15bf"+
		"\u15c1\u0001\u0000\u0000\u0000\u15c0\u15be\u0001\u0000\u0000\u0000\u15c1"+
		"\u15c3\u0005x\u0000\u0000\u15c2\u15c4\u0007F\u0000\u0000\u15c3\u15c2\u0001"+
		"\u0000\u0000\u0000\u15c3\u15c4\u0001\u0000\u0000\u0000\u15c4\u15c5\u0001"+
		"\u0000\u0000\u0000\u15c5\u15c6\u0003\u01e4\u00f2\u0000\u15c6\u15c7\u0005"+
		"E\u0000\u0000\u15c7\u15cc\u0003\u0242\u0121\u0000\u15c8\u15c9\u0005\u048a"+
		"\u0000\u0000\u15c9\u15cb\u0003\u0242\u0121\u0000\u15ca\u15c8\u0001\u0000"+
		"\u0000\u0000\u15cb\u15ce\u0001\u0000\u0000\u0000\u15cc\u15ca\u0001\u0000"+
		"\u0000\u0000\u15cc\u15cd\u0001\u0000\u0000\u0000\u15cd\u15ff\u0001\u0000"+
		"\u0000\u0000\u15ce\u15cc\u0001\u0000\u0000\u0000\u15cf\u15d0\u0005\u0095"+
		"\u0000\u0000\u15d0\u15d2\u0005\u0006\u0000\u0000\u15d1\u15d3\u0005\u02dd"+
		"\u0000\u0000\u15d2\u15d1\u0001\u0000\u0000\u0000\u15d2\u15d3\u0001\u0000"+
		"\u0000\u0000\u15d3\u15d4\u0001\u0000\u0000\u0000\u15d4\u15d5\u0005\u048a"+
		"\u0000\u0000\u15d5\u15d6\u0005I\u0000\u0000\u15d6\u15d7\u0005z\u0000\u0000"+
		"\u15d7\u15d8\u0005E\u0000\u0000\u15d8\u15dd\u0003\u0242\u0121\u0000\u15d9"+
		"\u15da\u0005\u048a\u0000\u0000\u15da\u15dc\u0003\u0242\u0121\u0000\u15db"+
		"\u15d9\u0001\u0000\u0000\u0000\u15dc\u15df\u0001\u0000\u0000\u0000\u15dd"+
		"\u15db\u0001\u0000\u0000\u0000\u15dd\u15de\u0001\u0000\u0000\u0000\u15de"+
		"\u15ff\u0001\u0000\u0000\u0000\u15df\u15dd\u0001\u0000\u0000\u0000\u15e0"+
		"\u15e3\u0005\u0095\u0000\u0000\u15e1\u15e4\u0003\u0242\u0121\u0000\u15e2"+
		"\u15e4\u0003\u0258\u012c\u0000\u15e3\u15e1\u0001\u0000\u0000\u0000\u15e3"+
		"\u15e2\u0001\u0000\u0000\u0000\u15e4\u15ec\u0001\u0000\u0000\u0000\u15e5"+
		"\u15e8\u0005\u048a\u0000\u0000\u15e6\u15e9\u0003\u0242\u0121\u0000\u15e7"+
		"\u15e9\u0003\u0258\u012c\u0000\u15e8\u15e6\u0001\u0000\u0000\u0000\u15e8"+
		"\u15e7\u0001\u0000\u0000\u0000\u15e9\u15eb\u0001\u0000\u0000\u0000\u15ea"+
		"\u15e5\u0001\u0000\u0000\u0000\u15eb\u15ee\u0001\u0000\u0000\u0000\u15ec"+
		"\u15ea\u0001\u0000\u0000\u0000\u15ec\u15ed\u0001\u0000\u0000\u0000\u15ed"+
		"\u15ef\u0001\u0000\u0000\u0000\u15ee\u15ec\u0001\u0000\u0000\u0000\u15ef"+
		"\u15f2\u0005E\u0000\u0000\u15f0\u15f3\u0003\u0242\u0121\u0000\u15f1\u15f3"+
		"\u0003\u0258\u012c\u0000\u15f2\u15f0\u0001\u0000\u0000\u0000\u15f2\u15f1"+
		"\u0001\u0000\u0000\u0000\u15f3\u15fb\u0001\u0000\u0000\u0000\u15f4\u15f7"+
		"\u0005\u048a\u0000\u0000\u15f5\u15f8\u0003\u0242\u0121\u0000\u15f6\u15f8"+
		"\u0003\u0258\u012c\u0000\u15f7\u15f5\u0001\u0000\u0000\u0000\u15f7\u15f6"+
		"\u0001\u0000\u0000\u0000\u15f8\u15fa\u0001\u0000\u0000\u0000\u15f9\u15f4"+
		"\u0001\u0000\u0000\u0000\u15fa\u15fd\u0001\u0000\u0000\u0000\u15fb\u15f9"+
		"\u0001\u0000\u0000\u0000\u15fb\u15fc\u0001\u0000\u0000\u0000\u15fc\u15ff"+
		"\u0001\u0000\u0000\u0000\u15fd\u15fb\u0001\u0000\u0000\u0000\u15fe\u15b8"+
		"\u0001\u0000\u0000\u0000\u15fe\u15cf\u0001\u0000\u0000\u0000\u15fe\u15e0"+
		"\u0001\u0000\u0000\u0000\u15ff\u01cb\u0001\u0000\u0000\u0000\u1600\u1601"+
		"\u0005\u0095\u0000\u0000\u1601\u1602\u0005\u0239\u0000\u0000\u1602\u1603"+
		"\u0005x\u0000\u0000\u1603\u1604\u0003\u0242\u0121\u0000\u1604\u1605\u0005"+
		"E\u0000\u0000\u1605\u160a\u0003\u0242\u0121\u0000\u1606\u1607\u0005\u048a"+
		"\u0000\u0000\u1607\u1609\u0003\u0242\u0121\u0000\u1608\u1606\u0001\u0000"+
		"\u0000\u0000\u1609\u160c\u0001\u0000\u0000\u0000\u160a\u1608\u0001\u0000"+
		"\u0000\u0000\u160a\u160b\u0001\u0000\u0000\u0000\u160b\u01cd\u0001\u0000"+
		"\u0000\u0000\u160c\u160a\u0001\u0000\u0000\u0000\u160d\u160e\u0005\u009b"+
		"\u0000\u0000\u160e\u1611\u0005\u022a\u0000\u0000\u160f\u1610\u0005B\u0000"+
		"\u0000\u1610\u1612\u0003\u0242\u0121\u0000\u1611\u160f\u0001\u0000\u0000"+
		"\u0000\u1611\u1612\u0001\u0000\u0000\u0000\u1612\u1613\u0001\u0000\u0000"+
		"\u0000\u1613\u1616\u0005\u047f\u0000\u0000\u1614\u1617\u0003\u02be\u015f"+
		"\u0000\u1615\u1617\u0005\u0497\u0000\u0000\u1616\u1614\u0001\u0000\u0000"+
		"\u0000\u1616\u1615\u0001\u0000\u0000\u0000\u1617\u01cf\u0001\u0000\u0000"+
		"\u0000\u1618\u1619\u0003\u0242\u0121\u0000\u1619\u161a\u0003\u01dc\u00ee"+
		"\u0000\u161a\u01d1\u0001\u0000\u0000\u0000\u161b\u161c\u0003\u0242\u0121"+
		"\u0000\u161c\u161d\u0005\u01c3\u0000\u0000\u161d\u161e\u0005\u0014\u0000"+
		"\u0000\u161e\u161f\u0005\u022a\u0000\u0000\u161f\u1620\u0005\u0497\u0000"+
		"\u0000\u1620\u163b\u0001\u0000\u0000\u0000\u1621\u1622\u0003\u0242\u0121"+
		"\u0000\u1622\u1623\u0005\u01c3\u0000\u0000\u1623\u1624\u0005\u0014\u0000"+
		"\u0000\u1624\u1625\u0005\u03e7\u0000\u0000\u1625\u1626\u0005\u022a\u0000"+
		"\u0000\u1626\u1627\u0003\u01d4\u00ea\u0000\u1627\u163b\u0001\u0000\u0000"+
		"\u0000\u1628\u1629\u0003\u0242\u0121\u0000\u1629\u162a\u0005\u01c3\u0000"+
		"\u0000\u162a\u162b\u0005\u0014\u0000\u0000\u162b\u162c\u0005\u0497\u0000"+
		"\u0000\u162c\u162d\u0003\u01d4\u00ea\u0000\u162d\u163b\u0001\u0000\u0000"+
		"\u0000\u162e\u162f\u0003\u0242\u0121\u0000\u162f\u1630\u0005\u01c3\u0000"+
		"\u0000\u1630\u1631\u0007G\u0000\u0000\u1631\u1636\u0003\u01d6\u00eb\u0000"+
		"\u1632\u1633\u0005}\u0000\u0000\u1633\u1635\u0003\u01d6\u00eb\u0000\u1634"+
		"\u1632\u0001\u0000\u0000\u0000\u1635\u1638\u0001\u0000\u0000\u0000\u1636"+
		"\u1634\u0001\u0000\u0000\u0000\u1636\u1637\u0001\u0000\u0000\u0000\u1637"+
		"\u163b\u0001\u0000\u0000\u0000\u1638\u1636\u0001\u0000\u0000\u0000\u1639"+
		"\u163b\u0003\u0242\u0121\u0000\u163a\u161b\u0001\u0000\u0000\u0000\u163a"+
		"\u1621\u0001\u0000\u0000\u0000\u163a\u1628\u0001\u0000\u0000\u0000\u163a"+
		"\u162e\u0001\u0000\u0000\u0000\u163a\u1639\u0001\u0000\u0000\u0000\u163b"+
		"\u01d3\u0001\u0000\u0000\u0000\u163c\u163d\u0005\u008f\u0000\u0000\u163d"+
		"\u163f\u0005\u0497\u0000\u0000\u163e\u163c\u0001\u0000\u0000\u0000\u163e"+
		"\u163f\u0001\u0000\u0000\u0000\u163f\u1643\u0001\u0000\u0000\u0000\u1640"+
		"\u1641\u0005\u0093\u0000\u0000\u1641\u1642\u0005$\u0000\u0000\u1642\u1644"+
		"\u0005\u022a\u0000\u0000\u1643\u1640\u0001\u0000\u0000\u0000\u1643\u1644"+
		"\u0001\u0000\u0000\u0000\u1644\u01d5\u0001\u0000\u0000\u0000\u1645\u164d"+
		"\u0003\u0256\u012b\u0000\u1646\u164a\u0007H\u0000\u0000\u1647\u164b\u0005"+
		"\u0497\u0000\u0000\u1648\u1649\u0005\u03e7\u0000\u0000\u1649\u164b\u0005"+
		"\u022a\u0000\u0000\u164a\u1647\u0001\u0000\u0000\u0000\u164a\u1648\u0001"+
		"\u0000\u0000\u0000\u164b\u164c\u0001\u0000\u0000\u0000\u164c\u164e\u0003"+
		"\u01d4\u00ea\u0000\u164d\u1646\u0001\u0000\u0000\u0000\u164d\u164e\u0001"+
		"\u0000\u0000\u0000\u164e\u1654\u0001\u0000\u0000\u0000\u164f\u1650\u0003"+
		"\u0256\u012b\u0000\u1650\u1651\u0007I\u0000\u0000\u1651\u1652\u0003\u02be"+
		"\u015f\u0000\u1652\u1654\u0001\u0000\u0000\u0000\u1653\u1645\u0001\u0000"+
		"\u0000\u0000\u1653\u164f\u0001\u0000\u0000\u0000\u1654\u01d7\u0001\u0000"+
		"\u0000\u0000\u1655\u165e\u0005\u00a9\u0000\u0000\u1656\u165e\u0005\u02ab"+
		"\u0000\u0000\u1657\u1658\u0005\u0169\u0000\u0000\u1658\u165e\u0005\u0497"+
		"\u0000\u0000\u1659\u165a\u0005\u01d4\u0000\u0000\u165a\u165e\u0005\u0497"+
		"\u0000\u0000\u165b\u165c\u0005\u0283\u0000\u0000\u165c\u165e\u0005\u0497"+
		"\u0000\u0000\u165d\u1655\u0001\u0000\u0000\u0000\u165d\u1656\u0001\u0000"+
		"\u0000\u0000\u165d\u1657\u0001\u0000\u0000\u0000\u165d\u1659\u0001\u0000"+
		"\u0000\u0000\u165d\u165b\u0001\u0000\u0000\u0000\u165e\u01d9\u0001\u0000"+
		"\u0000\u0000\u165f\u1660\u0005\u01f6\u0000\u0000\u1660\u1668\u0003\u025e"+
		"\u012f\u0000\u1661\u1662\u0005\u01f9\u0000\u0000\u1662\u1668\u0003\u025e"+
		"\u012f\u0000\u1663\u1664\u0005\u01f5\u0000\u0000\u1664\u1668\u0003\u025e"+
		"\u012f\u0000\u1665\u1666\u0005\u01fa\u0000\u0000\u1666\u1668\u0003\u025e"+
		"\u012f\u0000\u1667\u165f\u0001\u0000\u0000\u0000\u1667\u1661\u0001\u0000"+
		"\u0000\u0000\u1667\u1663\u0001\u0000\u0000\u0000\u1667\u1665\u0001\u0000"+
		"\u0000\u0000\u1668\u01db\u0001\u0000\u0000\u0000\u1669\u166a\u0005\u022a"+
		"\u0000\u0000\u166a\u1671\u0005\u01a7\u0000\u0000\u166b\u1672\u0005+\u0000"+
		"\u0000\u166c\u1672\u0005\u020a\u0000\u0000\u166d\u166e\u0005X\u0000\u0000"+
		"\u166e\u166f\u0003\u025e\u012f\u0000\u166f\u1670\u0005\u02b6\u0000\u0000"+
		"\u1670\u1672\u0001\u0000\u0000\u0000\u1671\u166b\u0001\u0000\u0000\u0000"+
		"\u1671\u166c\u0001\u0000\u0000\u0000\u1671\u166d\u0001\u0000\u0000\u0000"+
		"\u1671\u1672\u0001\u0000\u0000\u0000\u1672\u1690\u0001\u0000\u0000\u0000"+
		"\u1673\u1674\u0005\u022a\u0000\u0000\u1674\u1677\u0005\u01c0\u0000\u0000"+
		"\u1675\u1678\u0005+\u0000\u0000\u1676\u1678\u0003\u025e\u012f\u0000\u1677"+
		"\u1675\u0001\u0000\u0000\u0000\u1677\u1676\u0001\u0000\u0000\u0000\u1678"+
		"\u1690\u0001\u0000\u0000\u0000\u1679\u167a\u0005\u022a\u0000\u0000\u167a"+
		"\u167b\u0005\u0256\u0000\u0000\u167b\u1680\u0005X\u0000\u0000\u167c\u1681"+
		"\u0005+\u0000\u0000\u167d\u167e\u0003\u025e\u012f\u0000\u167e\u167f\u0005"+
		"\u02b6\u0000\u0000\u167f\u1681\u0001\u0000\u0000\u0000\u1680\u167c\u0001"+
		"\u0000\u0000\u0000\u1680\u167d\u0001\u0000\u0000\u0000\u1681\u1690\u0001"+
		"\u0000\u0000\u0000\u1682\u1683\u0005\u022a\u0000\u0000\u1683\u1684\u0005"+
		"\u0090\u0000\u0000\u1684\u1686\u0005$\u0000\u0000\u1685\u1687\u0007J\u0000"+
		"\u0000\u1686\u1685\u0001\u0000\u0000\u0000\u1686\u1687\u0001\u0000\u0000"+
		"\u0000\u1687\u1690\u0001\u0000\u0000\u0000\u1688\u1689\u0005\u01ab\u0000"+
		"\u0000\u1689\u1690\u0003\u025e\u012f\u0000\u168a\u168d\u0005\u022b\u0000"+
		"\u0000\u168b\u168e\u0003\u025e\u012f\u0000\u168c\u168e\u0005\u0294\u0000"+
		"\u0000\u168d\u168b\u0001\u0000\u0000\u0000\u168d\u168c\u0001\u0000\u0000"+
		"\u0000\u168e\u1690\u0001\u0000\u0000\u0000\u168f\u1669\u0001\u0000\u0000"+
		"\u0000\u168f\u1673\u0001\u0000\u0000\u0000\u168f\u1679\u0001\u0000\u0000"+
		"\u0000\u168f\u1682\u0001\u0000\u0000\u0000\u168f\u1688\u0001\u0000\u0000"+
		"\u0000\u168f\u168a\u0001\u0000\u0000\u0000\u1690\u01dd\u0001\u0000\u0000"+
		"\u0000\u1691\u1692\u0005\u014f\u0000\u0000\u1692\u1693\u0007K\u0000\u0000"+
		"\u1693\u01df\u0001\u0000\u0000\u0000\u1694\u1699\u0003\u01e2\u00f1\u0000"+
		"\u1695\u1696\u0005\u0488\u0000\u0000\u1696\u1697\u0003\u027a\u013d\u0000"+
		"\u1697\u1698\u0005\u0489\u0000\u0000\u1698\u169a\u0001\u0000\u0000\u0000"+
		"\u1699\u1695\u0001\u0000\u0000\u0000\u1699\u169a\u0001\u0000\u0000\u0000"+
		"\u169a\u01e1\u0001\u0000\u0000\u0000\u169b\u169d\u0005\u0006\u0000\u0000"+
		"\u169c\u169e\u0005\u02dd\u0000\u0000\u169d\u169c\u0001\u0000\u0000\u0000"+
		"\u169d\u169e\u0001\u0000\u0000\u0000\u169e\u171f\u0001\u0000\u0000\u0000"+
		"\u169f\u16a1\u0005\u0007\u0000\u0000\u16a0\u16a2\u0005\u02e5\u0000\u0000"+
		"\u16a1\u16a0\u0001\u0000\u0000\u0000\u16a1\u16a2\u0001\u0000\u0000\u0000"+
		"\u16a2\u171f\u0001\u0000\u0000\u0000\u16a3\u16ab\u0005\"\u0000\u0000\u16a4"+
		"\u16a5\u0005\u028c\u0000\u0000\u16a5\u16ac\u0005\u02ee\u0000\u0000\u16a6"+
		"\u16ac\u0005\u02e5\u0000\u0000\u16a7\u16ac\u0005\u02a2\u0000\u0000\u16a8"+
		"\u16ac\u0005\u029c\u0000\u0000\u16a9\u16ac\u0005\u028a\u0000\u0000\u16aa"+
		"\u16ac\u0005\u0257\u0000\u0000\u16ab\u16a4\u0001\u0000\u0000\u0000\u16ab"+
		"\u16a6\u0001\u0000\u0000\u0000\u16ab\u16a7\u0001\u0000\u0000\u0000\u16ab"+
		"\u16a8\u0001\u0000\u0000\u0000\u16ab\u16a9\u0001\u0000\u0000\u0000\u16ab"+
		"\u16aa\u0001\u0000\u0000\u0000\u16ab\u16ac\u0001\u0000\u0000\u0000\u16ac"+
		"\u171f\u0001\u0000\u0000\u0000\u16ad\u16af\u0005-\u0000\u0000\u16ae\u16b0"+
		"\u0005\u01c0\u0000\u0000\u16af\u16ae\u0001\u0000\u0000\u0000\u16af\u16b0"+
		"\u0001\u0000\u0000\u0000\u16b0\u171f\u0001\u0000\u0000\u0000\u16b1\u16b3"+
		"\u00054\u0000\u0000\u16b2\u16b4\u0005\u0257\u0000\u0000\u16b3\u16b2\u0001"+
		"\u0000\u0000\u0000\u16b3\u16b4\u0001\u0000\u0000\u0000\u16b4\u171f\u0001"+
		"\u0000\u0000\u0000\u16b5\u171f\u0005\u01a2\u0000\u0000\u16b6\u171f\u0005"+
		"\u02cc\u0000\u0000\u16b7\u171f\u0005\u02cd\u0000\u0000\u16b8\u16b9\u0005"+
		"I\u0000\u0000\u16b9\u171f\u0005z\u0000\u0000\u16ba\u171f\u0005S\u0000"+
		"\u0000\u16bb\u171f\u0005W\u0000\u0000\u16bc\u16bd\u0005i\u0000\u0000\u16bd"+
		"\u171f\u0005\u02ee\u0000\u0000\u16be\u171f\u0005\u02de\u0000\u0000\u16bf"+
		"\u171f\u0005\u0239\u0000\u0000\u16c0\u171f\u0005\u008a\u0000\u0000\u16c1"+
		"\u171f\u0005\u02df\u0000\u0000\u16c2\u16c3\u0005\u024f\u0000\u0000\u16c3"+
		"\u16c5\u0007L\u0000\u0000\u16c4\u16c6\u0005\u02c1\u0000\u0000\u16c5\u16c4"+
		"\u0001\u0000\u0000\u0000\u16c5\u16c6\u0001\u0000\u0000\u0000\u16c6\u171f"+
		"\u0001\u0000\u0000\u0000\u16c7\u171f\u0005\u009a\u0000\u0000\u16c8\u16c9"+
		"\u0005\u009d\u0000\u0000\u16c9\u171f\u0007M\u0000\u0000\u16ca\u171f\u0005"+
		"\u02eb\u0000\u0000\u16cb\u171f\u0005\u02ec\u0000\u0000\u16cc\u171f\u0005"+
		"\u00b4\u0000\u0000\u16cd\u171f\u0005\u00bb\u0000\u0000\u16ce\u171f\u0005"+
		"\u00bc\u0000\u0000\u16cf\u171f\u0005\u02c2\u0000\u0000\u16d0\u171f\u0005"+
		"\u02c4\u0000\u0000\u16d1\u171f\u0005\u02c3\u0000\u0000\u16d2\u171f\u0005"+
		"\u02c5\u0000\u0000\u16d3\u171f\u0005\u02c6\u0000\u0000\u16d4\u171f\u0005"+
		"\u02c7\u0000\u0000\u16d5\u171f\u0005\u02c8\u0000\u0000\u16d6\u171f\u0005"+
		"\u02c9\u0000\u0000\u16d7\u171f\u0005\u02ca\u0000\u0000\u16d8\u171f\u0005"+
		"\u02cb\u0000\u0000\u16d9\u171f\u0005\u02ce\u0000\u0000\u16da\u171f\u0005"+
		"\u02cf\u0000\u0000\u16db\u171f\u0005\u02d0\u0000\u0000\u16dc\u171f\u0005"+
		"\u02d1\u0000\u0000\u16dd\u171f\u0005\u02d2\u0000\u0000\u16de\u171f\u0005"+
		"\u02d3\u0000\u0000\u16df\u171f\u0005\u02d4\u0000\u0000\u16e0\u171f\u0005"+
		"\u02d5\u0000\u0000\u16e1\u171f\u0005K\u0000\u0000\u16e2\u171f\u0005\u02d6"+
		"\u0000\u0000\u16e3\u171f\u0005\u02d7\u0000\u0000\u16e4\u171f\u0005\u02da"+
		"\u0000\u0000\u16e5\u171f\u0005\u02db\u0000\u0000\u16e6\u171f\u0005\u02dc"+
		"\u0000\u0000\u16e7\u171f\u0005\u02e0\u0000\u0000\u16e8\u171f\u0005\u02e1"+
		"\u0000\u0000\u16e9\u171f\u0005\u02e2\u0000\u0000\u16ea\u171f\u0005\u02e3"+
		"\u0000\u0000\u16eb\u171f\u0005\u02e4\u0000\u0000\u16ec\u171f\u0005\u03f1"+
		"\u0000\u0000\u16ed\u171f\u0005\u02e7\u0000\u0000\u16ee\u171f\u0005\u02e8"+
		"\u0000\u0000\u16ef\u171f\u0005\u02e9\u0000\u0000\u16f0\u171f\u0005\u00a0"+
		"\u0000\u0000\u16f1\u171f\u0005\u02ea\u0000\u0000\u16f2\u171f\u0005\u043e"+
		"\u0000\u0000\u16f3\u171f\u0005\u02ed\u0000\u0000\u16f4\u171f\u0005\u02ef"+
		"\u0000\u0000\u16f5\u171f\u0005\u0441\u0000\u0000\u16f6\u171f\u0005\u044b"+
		"\u0000\u0000\u16f7\u171f\u0005\u02f0\u0000\u0000\u16f8\u171f\u0005\u02f1"+
		"\u0000\u0000\u16f9\u171f\u0005\u0466\u0000\u0000\u16fa\u171f\u0005\u0467"+
		"\u0000\u0000\u16fb\u171f\u0005\u0468\u0000\u0000\u16fc\u171f\u0005\u0469"+
		"\u0000\u0000\u16fd\u171f\u0005\u046b\u0000\u0000\u16fe\u16ff\u0005\u015c"+
		"\u0000\u0000\u16ff\u171f\u0007N\u0000\u0000\u1700\u1701\u0005\u031e\u0000"+
		"\u0000\u1701\u171f\u0005\u02c1\u0000\u0000\u1702\u1703\u0005\u0088\u0000"+
		"\u0000\u1703\u1706\u0005\u021d\u0000\u0000\u1704\u1706\u0005\u046d\u0000"+
		"\u0000\u1705\u1702\u0001\u0000\u0000\u0000\u1705\u1704\u0001\u0000\u0000"+
		"\u0000\u1706\u1707\u0001\u0000\u0000\u0000\u1707\u171f\u0005\u02c1\u0000"+
		"\u0000\u1708\u1709\u0005\u02c1\u0000\u0000\u1709\u171f\u0005z\u0000\u0000"+
		"\u170a\u170b\u0005\u017b\u0000\u0000\u170b\u171f\u0005\u02c1\u0000\u0000"+
		"\u170c\u170d\u0005-\u0000\u0000\u170d\u171f\u0005\u01c0\u0000\u0000\u170e"+
		"\u170f\u0005\u046a\u0000\u0000\u170f\u171f\u0005\u046c\u0000\u0000\u1710"+
		"\u1711\u0005I\u0000\u0000\u1711\u171f\u0005z\u0000\u0000\u1712\u1713\u0005"+
		"\u009b\u0000\u0000\u1713\u171f\u0005\u029c\u0000\u0000\u1714\u1715\u0005"+
		"\u0269\u0000\u0000\u1715\u171f\u0005\u046c\u0000\u0000\u1716\u1717\u0005"+
		"h\u0000\u0000\u1717\u1718\u0005E\u0000\u0000\u1718\u171f\u0005\u02e6\u0000"+
		"\u0000\u1719\u171a\u0005\u009a\u0000\u0000\u171a\u171b\u0005Y\u0000\u0000"+
		"\u171b\u171f\u0005\u02e6\u0000\u0000\u171c\u171d\u0005\u02d8\u0000\u0000"+
		"\u171d\u171f\u0005\u02d9\u0000\u0000\u171e\u169b\u0001\u0000\u0000\u0000"+
		"\u171e\u169f\u0001\u0000\u0000\u0000\u171e\u16a3\u0001\u0000\u0000\u0000"+
		"\u171e\u16ad\u0001\u0000\u0000\u0000\u171e\u16b1\u0001\u0000\u0000\u0000"+
		"\u171e\u16b5\u0001\u0000\u0000\u0000\u171e\u16b6\u0001\u0000\u0000\u0000"+
		"\u171e\u16b7\u0001\u0000\u0000\u0000\u171e\u16b8\u0001\u0000\u0000\u0000"+
		"\u171e\u16ba\u0001\u0000\u0000\u0000\u171e\u16bb\u0001\u0000\u0000\u0000"+
		"\u171e\u16bc\u0001\u0000\u0000\u0000\u171e\u16be\u0001\u0000\u0000\u0000"+
		"\u171e\u16bf\u0001\u0000\u0000\u0000\u171e\u16c0\u0001\u0000\u0000\u0000"+
		"\u171e\u16c1\u0001\u0000\u0000\u0000\u171e\u16c2\u0001\u0000\u0000\u0000"+
		"\u171e\u16c7\u0001\u0000\u0000\u0000\u171e\u16c8\u0001\u0000\u0000\u0000"+
		"\u171e\u16ca\u0001\u0000\u0000\u0000\u171e\u16cb\u0001\u0000\u0000\u0000"+
		"\u171e\u16cc\u0001\u0000\u0000\u0000\u171e\u16cd\u0001\u0000\u0000\u0000"+
		"\u171e\u16ce\u0001\u0000\u0000\u0000\u171e\u16cf\u0001\u0000\u0000\u0000"+
		"\u171e\u16d0\u0001\u0000\u0000\u0000\u171e\u16d1\u0001\u0000\u0000\u0000"+
		"\u171e\u16d2\u0001\u0000\u0000\u0000\u171e\u16d3\u0001\u0000\u0000\u0000"+
		"\u171e\u16d4\u0001\u0000\u0000\u0000\u171e\u16d5\u0001\u0000\u0000\u0000"+
		"\u171e\u16d6\u0001\u0000\u0000\u0000\u171e\u16d7\u0001\u0000\u0000\u0000"+
		"\u171e\u16d8\u0001\u0000\u0000\u0000\u171e\u16d9\u0001\u0000\u0000\u0000"+
		"\u171e\u16da\u0001\u0000\u0000\u0000\u171e\u16db\u0001\u0000\u0000\u0000"+
		"\u171e\u16dc\u0001\u0000\u0000\u0000\u171e\u16dd\u0001\u0000\u0000\u0000"+
		"\u171e\u16de\u0001\u0000\u0000\u0000\u171e\u16df\u0001\u0000\u0000\u0000"+
		"\u171e\u16e0\u0001\u0000\u0000\u0000\u171e\u16e1\u0001\u0000\u0000\u0000"+
		"\u171e\u16e2\u0001\u0000\u0000\u0000\u171e\u16e3\u0001\u0000\u0000\u0000"+
		"\u171e\u16e4\u0001\u0000\u0000\u0000\u171e\u16e5\u0001\u0000\u0000\u0000"+
		"\u171e\u16e6\u0001\u0000\u0000\u0000\u171e\u16e7\u0001\u0000\u0000\u0000"+
		"\u171e\u16e8\u0001\u0000\u0000\u0000\u171e\u16e9\u0001\u0000\u0000\u0000"+
		"\u171e\u16ea\u0001\u0000\u0000\u0000\u171e\u16eb\u0001\u0000\u0000\u0000"+
		"\u171e\u16ec\u0001\u0000\u0000\u0000\u171e\u16ed\u0001\u0000\u0000\u0000"+
		"\u171e\u16ee\u0001\u0000\u0000\u0000\u171e\u16ef\u0001\u0000\u0000\u0000"+
		"\u171e\u16f0\u0001\u0000\u0000\u0000\u171e\u16f1\u0001\u0000\u0000\u0000"+
		"\u171e\u16f2\u0001\u0000\u0000\u0000\u171e\u16f3\u0001\u0000\u0000\u0000"+
		"\u171e\u16f4\u0001\u0000\u0000\u0000\u171e\u16f5\u0001\u0000\u0000\u0000"+
		"\u171e\u16f6\u0001\u0000\u0000\u0000\u171e\u16f7\u0001\u0000\u0000\u0000"+
		"\u171e\u16f8\u0001\u0000\u0000\u0000\u171e\u16f9\u0001\u0000\u0000\u0000"+
		"\u171e\u16fa\u0001\u0000\u0000\u0000\u171e\u16fb\u0001\u0000\u0000\u0000"+
		"\u171e\u16fc\u0001\u0000\u0000\u0000\u171e\u16fd\u0001\u0000\u0000\u0000"+
		"\u171e\u16fe\u0001\u0000\u0000\u0000\u171e\u1700\u0001\u0000\u0000\u0000"+
		"\u171e\u1705\u0001\u0000\u0000\u0000\u171e\u1708\u0001\u0000\u0000\u0000"+
		"\u171e\u170a\u0001\u0000\u0000\u0000\u171e\u170c\u0001\u0000\u0000\u0000"+
		"\u171e\u170e\u0001\u0000\u0000\u0000\u171e\u1710\u0001\u0000\u0000\u0000"+
		"\u171e\u1712\u0001\u0000\u0000\u0000\u171e\u1714\u0001\u0000\u0000\u0000"+
		"\u171e\u1716\u0001\u0000\u0000\u0000\u171e\u1719\u0001\u0000\u0000\u0000"+
		"\u171e\u171c\u0001\u0000\u0000\u0000\u171f\u01e3\u0001\u0000\u0000\u0000"+
		"\u1720\u1731\u0005\u0478\u0000\u0000\u1721\u1722\u0005\u0478\u0000\u0000"+
		"\u1722\u1723\u0005\u0487\u0000\u0000\u1723\u1731\u0005\u0478\u0000\u0000"+
		"\u1724\u1725\u0003\u0258\u012c\u0000\u1725\u1726\u0005\u0487\u0000\u0000"+
		"\u1726\u1727\u0005\u0478\u0000\u0000\u1727\u1731\u0001\u0000\u0000\u0000"+
		"\u1728\u1729\u0003\u0258\u012c\u0000\u1729\u172a\u0005\u0487\u0000\u0000"+
		"\u172a\u172b\u0003\u0258\u012c\u0000\u172b\u1731\u0001\u0000\u0000\u0000"+
		"\u172c\u172d\u0003\u0258\u012c\u0000\u172d\u172e\u0003\u025c\u012e\u0000"+
		"\u172e\u1731\u0001\u0000\u0000\u0000\u172f\u1731\u0003\u0258\u012c\u0000"+
		"\u1730\u1720\u0001\u0000\u0000\u0000\u1730\u1721\u0001\u0000\u0000\u0000"+
		"\u1730\u1724\u0001\u0000\u0000\u0000\u1730\u1728\u0001\u0000\u0000\u0000"+
		"\u1730\u172c\u0001\u0000\u0000\u0000\u1730\u172f\u0001\u0000\u0000\u0000"+
		"\u1731\u01e5\u0001\u0000\u0000\u0000\u1732\u1733\u0003\u0242\u0121\u0000"+
		"\u1733\u1734\u0005\u00b2\u0000\u0000\u1734\u1735\u0003\u0242\u0121\u0000"+
		"\u1735\u01e7\u0001\u0000\u0000\u0000\u1736\u1738\u0005\t\u0000\u0000\u1737"+
		"\u1739\u0007O\u0000\u0000\u1738\u1737\u0001\u0000\u0000\u0000\u1738\u1739"+
		"\u0001\u0000\u0000\u0000\u1739\u173a\u0001\u0000\u0000\u0000\u173a\u173b"+
		"\u0007:\u0000\u0000\u173b\u174d\u0003\u027e\u013f\u0000\u173c\u173d\u0005"+
		"\u00bb\u0000\u0000\u173d\u173e\u0005N\u0000\u0000\u173e\u173f\u0005x\u0000"+
		"\u0000\u173f\u1744\u0003\u023a\u011d\u0000\u1740\u1741\u0005\u048a\u0000"+
		"\u0000\u1741\u1743\u0003\u023a\u011d\u0000\u1742\u1740\u0001\u0000\u0000"+
		"\u0000\u1743\u1746\u0001\u0000\u0000\u0000\u1744\u1742\u0001\u0000\u0000"+
		"\u0000\u1744\u1745\u0001\u0000\u0000\u0000\u1745\u174b\u0001\u0000\u0000"+
		"\u0000\u1746\u1744\u0001\u0000\u0000\u0000\u1747\u1748\u0005\u00c3\u0000"+
		"\u0000\u1748\u1749\u0003\u025e\u012f\u0000\u1749\u174a\u0005\u0013\u0000"+
		"\u0000\u174a\u174c\u0001\u0000\u0000\u0000\u174b\u1747\u0001\u0000\u0000"+
		"\u0000\u174b\u174c\u0001\u0000\u0000\u0000\u174c\u174e\u0001\u0000\u0000"+
		"\u0000\u174d\u173c\u0001\u0000\u0000\u0000\u174d\u174e\u0001\u0000\u0000"+
		"\u0000\u174e\u175a\u0001\u0000\u0000\u0000\u174f\u1750\u00054\u0000\u0000"+
		"\u1750\u1751\u0005N\u0000\u0000\u1751\u1752\u0005x\u0000\u0000\u1752\u1757"+
		"\u0003\u023a\u011d\u0000\u1753\u1754\u0005\u048a\u0000\u0000\u1754\u1756"+
		"\u0003\u023a\u011d\u0000\u1755\u1753\u0001\u0000\u0000\u0000\u1756\u1759"+
		"\u0001\u0000\u0000\u0000\u1757\u1755\u0001\u0000\u0000\u0000\u1757\u1758"+
		"\u0001\u0000\u0000\u0000\u1758\u175b\u0001\u0000\u0000\u0000\u1759\u1757"+
		"\u0001\u0000\u0000\u0000\u175a\u174f\u0001\u0000\u0000\u0000\u175a\u175b"+
		"\u0001\u0000\u0000\u0000\u175b\u01e9\u0001\u0000\u0000\u0000\u175c\u175d"+
		"\u0005\u001b\u0000\u0000\u175d\u175e\u0005\u00af\u0000\u0000\u175e\u1762"+
		"\u0003\u027e\u013f\u0000\u175f\u1761\u0003\u01f2\u00f9\u0000\u1760\u175f"+
		"\u0001\u0000\u0000\u0000\u1761\u1764\u0001\u0000\u0000\u0000\u1762\u1760"+
		"\u0001\u0000\u0000\u0000\u1762\u1763\u0001\u0000\u0000\u0000\u1763\u01eb"+
		"\u0001\u0000\u0000\u0000\u1764\u1762\u0001\u0000\u0000\u0000\u1765\u1766"+
		"\u0005\u0167\u0000\u0000\u1766\u1767\u0005\u00af\u0000\u0000\u1767\u1769"+
		"\u0003\u027e\u013f\u0000\u1768\u176a\u0007P\u0000\u0000\u1769\u1768\u0001"+
		"\u0000\u0000\u0000\u1769\u176a\u0001\u0000\u0000\u0000\u176a\u01ed\u0001"+
		"\u0000\u0000\u0000\u176b\u176d\u0005y\u0000\u0000\u176c\u176e\u0007O\u0000"+
		"\u0000\u176d\u176c\u0001\u0000\u0000\u0000\u176d\u176e\u0001\u0000\u0000"+
		"\u0000\u176e\u176f\u0001\u0000\u0000\u0000\u176f\u1770\u0007:\u0000\u0000"+
		"\u1770\u1772\u0003\u027e\u013f\u0000\u1771\u1773\u0003\u0298\u014c\u0000"+
		"\u1772\u1771\u0001\u0000\u0000\u0000\u1772\u1773\u0001\u0000\u0000\u0000"+
		"\u1773\u01ef\u0001\u0000\u0000\u0000\u1774\u1776\u0005\u0247\u0000\u0000"+
		"\u1775\u1777\u0007O\u0000\u0000\u1776\u1775\u0001\u0000\u0000\u0000\u1776"+
		"\u1777\u0001\u0000\u0000\u0000\u1777\u1778\u0001\u0000\u0000\u0000\u1778"+
		"\u1779\u0005\u00af\u0000\u0000\u1779\u177b\u0003\u027e\u013f\u0000\u177a"+
		"\u177c\u0005\u023b\u0000\u0000\u177b\u177a\u0001\u0000\u0000\u0000\u177b"+
		"\u177c\u0001\u0000\u0000\u0000\u177c\u177e\u0001\u0000\u0000\u0000\u177d"+
		"\u177f\u0005\u01a9\u0000\u0000\u177e\u177d\u0001\u0000\u0000\u0000\u177e"+
		"\u177f\u0001\u0000\u0000\u0000\u177f\u1781\u0001\u0000\u0000\u0000\u1780"+
		"\u1782\u0005\u029d\u0000\u0000\u1781\u1780\u0001\u0000\u0000\u0000\u1781"+
		"\u1782\u0001\u0000\u0000\u0000\u1782\u01f1\u0001\u0000\u0000\u0000\u1783"+
		"\u1784\u0005B\u0000\u0000\u1784\u178b\u0005\u029b\u0000\u0000\u1785\u178b"+
		"\u0005\u023b\u0000\u0000\u1786\u178b\u0005\u01ac\u0000\u0000\u1787\u178b"+
		"\u0005\u01fb\u0000\u0000\u1788\u178b\u0005\u01a9\u0000\u0000\u1789\u178b"+
		"\u0005\u0165\u0000\u0000\u178a\u1783\u0001\u0000\u0000\u0000\u178a\u1785"+
		"\u0001\u0000\u0000\u0000\u178a\u1786\u0001\u0000\u0000\u0000\u178a\u1787"+
		"\u0001\u0000\u0000\u0000\u178a\u1788\u0001\u0000\u0000\u0000\u178a\u1789"+
		"\u0001\u0000\u0000\u0000\u178b\u01f3\u0001\u0000\u0000\u0000\u178c\u178e"+
		"\u0005\"\u0000\u0000\u178d\u178f\u0003\u0296\u014b\u0000\u178e\u178d\u0001"+
		"\u0000\u0000\u0000\u178e\u178f\u0001\u0000\u0000\u0000\u178f\u1791\u0001"+
		"\u0000\u0000\u0000\u1790\u1792\u0005\u0152\u0000\u0000\u1791\u1790\u0001"+
		"\u0000\u0000\u0000\u1791\u1792\u0001\u0000\u0000\u0000\u1792\u1793\u0001"+
		"\u0000\u0000\u0000\u1793\u1795\u0005\u01b8\u0000\u0000\u1794\u1796\u0003"+
		"\u0294\u014a\u0000\u1795\u1794\u0001\u0000\u0000\u0000\u1795\u1796\u0001"+
		"\u0000\u0000\u0000\u1796\u1797\u0001\u0000\u0000\u0000\u1797\u1798\u0003"+
		"\u0258\u012c\u0000\u1798\u1799\u0005\u0255\u0000\u0000\u1799\u179a\u0007"+
		"Q\u0000\u0000\u179a\u179b\u0005\u026e\u0000\u0000\u179b\u179c\u0005\u0497"+
		"\u0000\u0000\u179c\u01f5\u0001\u0000\u0000\u0000\u179d\u179e\u0005\u01cb"+
		"\u0000\u0000\u179e\u179f\u0005\u022d\u0000\u0000\u179f\u17a0\u0003\u0258"+
		"\u012c\u0000\u17a0\u17a1\u0005\u026e\u0000\u0000\u17a1\u17a2\u0005\u0497"+
		"\u0000\u0000\u17a2\u01f7\u0001\u0000\u0000\u0000\u17a3\u17a4\u0005\u0298"+
		"\u0000\u0000\u17a4\u17a5\u0005\u022d\u0000\u0000\u17a5\u17a6\u0003\u0258"+
		"\u012c\u0000\u17a6\u01f9\u0001\u0000\u0000\u0000\u17a7\u17a8\u0005\u009b"+
		"\u0000\u0000\u17a8\u17a9\u0003\u01fe\u00ff\u0000\u17a9\u17ac\u0007R\u0000"+
		"\u0000\u17aa\u17ad\u0003\u02c4\u0162\u0000\u17ab\u17ad\u0005x\u0000\u0000"+
		"\u17ac\u17aa\u0001\u0000\u0000\u0000\u17ac\u17ab\u0001\u0000\u0000\u0000"+
		"\u17ad\u17b7\u0001\u0000\u0000\u0000\u17ae\u17af\u0005\u048a\u0000\u0000"+
		"\u17af\u17b0\u0003\u01fe\u00ff\u0000\u17b0\u17b3\u0007R\u0000\u0000\u17b1"+
		"\u17b4\u0003\u02c4\u0162\u0000\u17b2\u17b4\u0005x\u0000\u0000\u17b3\u17b1"+
		"\u0001\u0000\u0000\u0000\u17b3\u17b2\u0001\u0000\u0000\u0000\u17b4\u17b6"+
		"\u0001\u0000\u0000\u0000\u17b5\u17ae\u0001\u0000\u0000\u0000\u17b6\u17b9"+
		"\u0001\u0000\u0000\u0000\u17b7\u17b5\u0001\u0000\u0000\u0000\u17b7\u17b8"+
		"\u0001\u0000\u0000\u0000\u17b8\u17dc\u0001\u0000\u0000\u0000\u17b9\u17b7"+
		"\u0001\u0000\u0000\u0000\u17ba\u17bb\u0005\u009b\u0000\u0000\u17bb\u17be"+
		"\u0003B!\u0000\u17bc\u17bf\u0003\u0246\u0123\u0000\u17bd\u17bf\u0005+"+
		"\u0000\u0000\u17be\u17bc\u0001\u0000\u0000\u0000\u17be\u17bd\u0001\u0000"+
		"\u0000\u0000\u17bf\u17dc\u0001\u0000\u0000\u0000\u17c0\u17c1\u0005\u009b"+
		"\u0000\u0000\u17c1\u17c8\u0005\u0208\u0000\u0000\u17c2\u17c5\u0003\u0246"+
		"\u0123\u0000\u17c3\u17c4\u0005\u001c\u0000\u0000\u17c4\u17c6\u0003\u0248"+
		"\u0124\u0000\u17c5\u17c3\u0001\u0000\u0000\u0000\u17c5\u17c6\u0001\u0000"+
		"\u0000\u0000\u17c6\u17c9\u0001\u0000\u0000\u0000\u17c7\u17c9\u0005+\u0000"+
		"\u0000\u17c8\u17c2\u0001\u0000\u0000\u0000\u17c8\u17c7\u0001\u0000\u0000"+
		"\u0000\u17c9\u17dc\u0001\u0000\u0000\u0000\u17ca\u17dc\u0003\u01ce\u00e7"+
		"\u0000\u17cb\u17dc\u0003\u0150\u00a8\u0000\u17cc\u17dc\u0003\u014e\u00a7"+
		"\u0000\u17cd\u17ce\u0005\u009b\u0000\u0000\u17ce\u17cf\u0003\u0234\u011a"+
		"\u0000\u17cf\u17d0\u0007R\u0000\u0000\u17d0\u17d8\u0003\u02c4\u0162\u0000"+
		"\u17d1\u17d2\u0005\u048a\u0000\u0000\u17d2\u17d3\u0003\u0234\u011a\u0000"+
		"\u17d3\u17d4\u0007R\u0000\u0000\u17d4\u17d5\u0003\u02c4\u0162\u0000\u17d5"+
		"\u17d7\u0001\u0000\u0000\u0000\u17d6\u17d1\u0001\u0000\u0000\u0000\u17d7"+
		"\u17da\u0001\u0000\u0000\u0000\u17d8\u17d6\u0001\u0000\u0000\u0000\u17d8"+
		"\u17d9\u0001\u0000\u0000\u0000\u17d9\u17dc\u0001\u0000\u0000\u0000\u17da"+
		"\u17d8\u0001\u0000\u0000\u0000\u17db\u17a7\u0001\u0000\u0000\u0000\u17db"+
		"\u17ba\u0001\u0000\u0000\u0000\u17db\u17c0\u0001\u0000\u0000\u0000\u17db"+
		"\u17ca\u0001\u0000\u0000\u0000\u17db\u17cb\u0001\u0000\u0000\u0000\u17db"+
		"\u17cc\u0001\u0000\u0000\u0000\u17db\u17cd\u0001\u0000\u0000\u0000\u17dc"+
		"\u01fb\u0001\u0000\u0000\u0000\u17dd\u17de\u0005\u009d\u0000\u0000\u17de"+
		"\u17df\u0007<\u0000\u0000\u17df\u1879\u0005\u01df\u0000\u0000\u17e0\u17e1"+
		"\u0005\u009d\u0000\u0000\u17e1\u17e2\u0007S\u0000\u0000\u17e2\u17e5\u0005"+
		"\u01a3\u0000\u0000\u17e3\u17e4\u0005R\u0000\u0000\u17e4\u17e6\u0005\u0497"+
		"\u0000\u0000\u17e5\u17e3\u0001\u0000\u0000\u0000\u17e5\u17e6\u0001\u0000"+
		"\u0000\u0000\u17e6\u17e9\u0001\u0000\u0000\u0000\u17e7\u17e8\u0005E\u0000"+
		"\u0000\u17e8\u17ea\u0003\u025e\u012f\u0000\u17e9\u17e7\u0001\u0000\u0000"+
		"\u0000\u17e9\u17ea\u0001\u0000\u0000\u0000\u17ea\u17f2\u0001\u0000\u0000"+
		"\u0000\u17eb\u17ef\u0005e\u0000\u0000\u17ec\u17ed\u0003\u025e\u012f\u0000"+
		"\u17ed\u17ee\u0005\u048a\u0000\u0000\u17ee\u17f0\u0001\u0000\u0000\u0000"+
		"\u17ef\u17ec\u0001\u0000\u0000\u0000\u17ef\u17f0\u0001\u0000\u0000\u0000"+
		"\u17f0\u17f1\u0001\u0000\u0000\u0000\u17f1\u17f3\u0003\u025e\u012f\u0000"+
		"\u17f2\u17eb\u0001\u0000\u0000\u0000\u17f2\u17f3\u0001\u0000\u0000\u0000"+
		"\u17f3\u1879\u0001\u0000\u0000\u0000\u17f4\u17f5\u0005\u009d\u0000\u0000"+
		"\u17f5\u17f7\u0003\u0200\u0100\u0000\u17f6\u17f8\u0003\u0202\u0101\u0000"+
		"\u17f7\u17f6\u0001\u0000\u0000\u0000\u17f7\u17f8\u0001\u0000\u0000\u0000"+
		"\u17f8\u1879\u0001\u0000\u0000\u0000\u17f9\u17fb\u0005\u009d\u0000\u0000"+
		"\u17fa\u17fc\u0005\u01b7\u0000\u0000\u17fb\u17fa\u0001\u0000\u0000\u0000"+
		"\u17fb\u17fc\u0001\u0000\u0000\u0000\u17fc\u17fd\u0001\u0000\u0000\u0000"+
		"\u17fd\u17fe\u0007-\u0000\u0000\u17fe\u17ff\u0007T\u0000\u0000\u17ff\u1802"+
		"\u0003\u0236\u011b\u0000\u1800\u1801\u0007T\u0000\u0000\u1801\u1803\u0003"+
		"\u0258\u012c\u0000\u1802\u1800\u0001\u0000\u0000\u0000\u1802\u1803\u0001"+
		"\u0000\u0000\u0000\u1803\u1805\u0001\u0000\u0000\u0000\u1804\u1806\u0003"+
		"\u0202\u0101\u0000\u1805\u1804\u0001\u0000\u0000\u0000\u1805\u1806\u0001"+
		"\u0000\u0000\u0000\u1806\u1879\u0001\u0000\u0000\u0000\u1807\u1808\u0005"+
		"\u009d\u0000\u0000\u1808\u1809\u0005\"\u0000\u0000\u1809\u180b\u0007\u0000"+
		"\u0000\u0000\u180a\u180c\u0003\u0294\u014a\u0000\u180b\u180a\u0001\u0000"+
		"\u0000\u0000\u180b\u180c\u0001\u0000\u0000\u0000\u180c\u180d\u0001\u0000"+
		"\u0000\u0000\u180d\u1879\u0003\u0258\u012c\u0000\u180e\u180f\u0005\u009d"+
		"\u0000\u0000\u180f\u1810\u0005\"\u0000\u0000\u1810\u1811\u0007U\u0000"+
		"\u0000\u1811\u1879\u0003\u0234\u011a\u0000\u1812\u1813\u0005\u009d\u0000"+
		"\u0000\u1813\u1814\u0005\"\u0000\u0000\u1814\u1815\u0005\u029c\u0000\u0000"+
		"\u1815\u1879\u0003\u0242\u0121\u0000\u1816\u1817\u0005\u009d\u0000\u0000"+
		"\u1817\u1818\u0005\u019c\u0000\u0000\u1818\u1819\u0003\u024a\u0125\u0000"+
		"\u1819\u181a\u0007V\u0000\u0000\u181a\u1879\u0001\u0000\u0000\u0000\u181b"+
		"\u181c\u0005\u009d\u0000\u0000\u181c\u1879\u0003\u0204\u0102\u0000\u181d"+
		"\u181e\u0005\u009d\u0000\u0000\u181e\u1826\u0007W\u0000\u0000\u181f\u1823"+
		"\u0005e\u0000\u0000\u1820\u1821\u0003\u025e\u012f\u0000\u1821\u1822\u0005"+
		"\u048a\u0000\u0000\u1822\u1824\u0001\u0000\u0000\u0000\u1823\u1820\u0001"+
		"\u0000\u0000\u0000\u1823\u1824\u0001\u0000\u0000\u0000\u1824\u1825\u0001"+
		"\u0000\u0000\u0000\u1825\u1827\u0003\u025e\u012f\u0000\u1826\u181f\u0001"+
		"\u0000\u0000\u0000\u1826\u1827\u0001\u0000\u0000\u0000\u1827\u1879\u0001"+
		"\u0000\u0000\u0000\u1828\u1829\u0005\u009d\u0000\u0000\u1829\u182a\u0005"+
		"\u0125\u0000\u0000\u182a\u182b\u0005\u0488\u0000\u0000\u182b\u182c\u0005"+
		"\u0478\u0000\u0000\u182c\u182d\u0005\u0489\u0000\u0000\u182d\u1879\u0007"+
		"W\u0000\u0000\u182e\u182f\u0005\u009d\u0000\u0000\u182f\u1832\u0003\u0206"+
		"\u0103\u0000\u1830\u1831\u0007T\u0000\u0000\u1831\u1833\u0003\u0258\u012c"+
		"\u0000\u1832\u1830\u0001\u0000\u0000\u0000\u1832\u1833\u0001\u0000\u0000"+
		"\u0000\u1833\u1835\u0001\u0000\u0000\u0000\u1834\u1836\u0003\u0202\u0101"+
		"\u0000\u1835\u1834\u0001\u0000\u0000\u0000\u1835\u1836\u0001\u0000\u0000"+
		"\u0000\u1836\u1879\u0001\u0000\u0000\u0000\u1837\u1838\u0005\u009d\u0000"+
		"\u0000\u1838\u1839\u0007X\u0000\u0000\u1839\u183a\u0005\u016f\u0000\u0000"+
		"\u183a\u1879\u0003\u0234\u011a\u0000\u183b\u183c\u0005\u009d\u0000\u0000"+
		"\u183c\u183f\u0005\u01bb\u0000\u0000\u183d\u183e\u0005B\u0000\u0000\u183e"+
		"\u1840\u0003\u0242\u0121\u0000\u183f\u183d\u0001\u0000\u0000\u0000\u183f"+
		"\u1840\u0001\u0000\u0000\u0000\u1840\u1879\u0001\u0000\u0000\u0000\u1841"+
		"\u1842\u0005\u009d\u0000\u0000\u1842\u1843\u0007Y\u0000\u0000\u1843\u1844"+
		"\u0007T\u0000\u0000\u1844\u1847\u0003\u0236\u011b\u0000\u1845\u1846\u0007"+
		"T\u0000\u0000\u1846\u1848\u0003\u0258\u012c\u0000\u1847\u1845\u0001\u0000"+
		"\u0000\u0000\u1847\u1848\u0001\u0000\u0000\u0000\u1848\u184b\u0001\u0000"+
		"\u0000\u0000\u1849\u184a\u0005\u00c1\u0000\u0000\u184a\u184c\u0003\u02c4"+
		"\u0162\u0000\u184b\u1849\u0001\u0000\u0000\u0000\u184b\u184c\u0001\u0000"+
		"\u0000\u0000\u184c\u1879\u0001\u0000\u0000\u0000\u184d\u184e\u0005\u009d"+
		"\u0000\u0000\u184e\u184f\u0005\u021e\u0000\u0000\u184f\u1852\u0005\u02ee"+
		"\u0000\u0000\u1850\u1851\u0007T\u0000\u0000\u1851\u1853\u0003\u0258\u012c"+
		"\u0000\u1852\u1850\u0001\u0000\u0000\u0000\u1852\u1853\u0001\u0000\u0000"+
		"\u0000\u1853\u1855\u0001\u0000\u0000\u0000\u1854\u1856\u0003\u0202\u0101"+
		"\u0000\u1855\u1854\u0001\u0000\u0000\u0000\u1855\u1856\u0001\u0000\u0000"+
		"\u0000\u1856\u1879\u0001\u0000\u0000\u0000\u1857\u1858\u0005\u009d\u0000"+
		"\u0000\u1858\u1859\u0005\u0237\u0000\u0000\u1859\u185e\u0003\u0208\u0104"+
		"\u0000\u185a\u185b\u0005\u048a\u0000\u0000\u185b\u185d\u0003\u0208\u0104"+
		"\u0000\u185c\u185a\u0001\u0000\u0000\u0000\u185d\u1860\u0001\u0000\u0000"+
		"\u0000\u185e\u185c\u0001\u0000\u0000\u0000\u185e\u185f\u0001\u0000\u0000"+
		"\u0000\u185f\u1864\u0001\u0000\u0000\u0000\u1860\u185e\u0001\u0000\u0000"+
		"\u0000\u1861\u1862\u0005B\u0000\u0000\u1862\u1863\u0005\u023a\u0000\u0000"+
		"\u1863\u1865\u0003\u025e\u012f\u0000\u1864\u1861\u0001\u0000\u0000\u0000"+
		"\u1864\u1865\u0001\u0000\u0000\u0000\u1865\u1866\u0001\u0000\u0000\u0000"+
		"\u1866\u186a\u0005e\u0000\u0000\u1867\u1868\u0003\u025e\u012f\u0000\u1868"+
		"\u1869\u0005\u048a\u0000\u0000\u1869\u186b\u0001\u0000\u0000\u0000\u186a"+
		"\u1867\u0001\u0000\u0000\u0000\u186a\u186b\u0001\u0000\u0000\u0000\u186b"+
		"\u186c\u0001\u0000\u0000\u0000\u186c\u186d\u0003\u025e\u012f\u0000\u186d"+
		"\u1879\u0001\u0000\u0000\u0000\u186e\u186f\u0005\u009d\u0000\u0000\u186f"+
		"\u1870\u0005\u0269\u0000\u0000\u1870\u1874\u0005\u027d\u0000\u0000\u1871"+
		"\u1872\u0005B\u0000\u0000\u1872\u1873\u0005\u0166\u0000\u0000\u1873\u1875"+
		"\u0005\u0497\u0000\u0000\u1874\u1871\u0001\u0000\u0000\u0000\u1874\u1875"+
		"\u0001\u0000\u0000\u0000\u1875\u1879\u0001\u0000\u0000\u0000\u1876\u1877"+
		"\u0005\u009d\u0000\u0000\u1877\u1879\u0007Z\u0000\u0000\u1878\u17dd\u0001"+
		"\u0000\u0000\u0000\u1878\u17e0\u0001\u0000\u0000\u0000\u1878\u17f4\u0001"+
		"\u0000\u0000\u0000\u1878\u17f9\u0001\u0000\u0000\u0000\u1878\u1807\u0001"+
		"\u0000\u0000\u0000\u1878\u180e\u0001\u0000\u0000\u0000\u1878\u1812\u0001"+
		"\u0000\u0000\u0000\u1878\u1816\u0001\u0000\u0000\u0000\u1878\u181b\u0001"+
		"\u0000\u0000\u0000\u1878\u181d\u0001\u0000\u0000\u0000\u1878\u1828\u0001"+
		"\u0000\u0000\u0000\u1878\u182e\u0001\u0000\u0000\u0000\u1878\u1837\u0001"+
		"\u0000\u0000\u0000\u1878\u183b\u0001\u0000\u0000\u0000\u1878\u1841\u0001"+
		"\u0000\u0000\u0000\u1878\u184d\u0001\u0000\u0000\u0000\u1878\u1857\u0001"+
		"\u0000\u0000\u0000\u1878\u186e\u0001\u0000\u0000\u0000\u1878\u1876\u0001"+
		"\u0000\u0000\u0000\u1879\u01fd\u0001\u0000\u0000\u0000\u187a\u1885\u0005"+
		"\u04a2\u0000\u0000\u187b\u1885\u0005\u04a3\u0000\u0000\u187c\u187d\u0005"+
		"\u048c\u0000\u0000\u187d\u187f\u0005\u048c\u0000\u0000\u187e\u187c\u0001"+
		"\u0000\u0000\u0000\u187e\u187f\u0001\u0000\u0000\u0000\u187f\u1880\u0001"+
		"\u0000\u0000\u0000\u1880\u1882\u0007[\u0000\u0000\u1881\u187e\u0001\u0000"+
		"\u0000\u0000\u1881\u1882\u0001\u0000\u0000\u0000\u1882\u1883\u0001\u0000"+
		"\u0000\u0000\u1883\u1885\u0003\u0258\u012c\u0000\u1884\u187a\u0001\u0000"+
		"\u0000\u0000\u1884\u187b\u0001\u0000\u0000\u0000\u1884\u1881\u0001\u0000"+
		"\u0000\u0000\u1885\u01ff\u0001\u0000\u0000\u0000\u1886\u1887\u0005\u001a"+
		"\u0000\u0000\u1887\u1894\u0005\u009b\u0000\u0000\u1888\u1894\u0005\u0354"+
		"\u0000\u0000\u1889\u1894\u0005)\u0000\u0000\u188a\u1894\u0005\u0099\u0000"+
		"\u0000\u188b\u188c\u0005\u01b8\u0000\u0000\u188c\u1894\u0005\u027d\u0000"+
		"\u0000\u188d\u188e\u0005\u0085\u0000\u0000\u188e\u1894\u0005\u027d\u0000"+
		"\u0000\u188f\u1891\u0007;\u0000\u0000\u1890\u188f\u0001\u0000\u0000\u0000"+
		"\u1890\u1891\u0001\u0000\u0000\u0000\u1891\u1892\u0001\u0000\u0000\u0000"+
		"\u1892\u1894\u0007\\\u0000\u0000\u1893\u1886\u0001\u0000\u0000\u0000\u1893"+
		"\u1888\u0001\u0000\u0000\u0000\u1893\u1889\u0001\u0000\u0000\u0000\u1893"+
		"\u188a\u0001\u0000\u0000\u0000\u1893\u188b\u0001\u0000\u0000\u0000\u1893"+
		"\u188d\u0001\u0000\u0000\u0000\u1893\u1890\u0001\u0000\u0000\u0000\u1894"+
		"\u0201\u0001\u0000\u0000\u0000\u1895\u1896\u0005d\u0000\u0000\u1896\u189a"+
		"\u0005\u0497\u0000\u0000\u1897\u1898\u0005\u00c1\u0000\u0000\u1898\u189a"+
		"\u0003\u02c4\u0162\u0000\u1899\u1895\u0001\u0000\u0000\u0000\u1899\u1897"+
		"\u0001\u0000\u0000\u0000\u189a\u0203\u0001\u0000\u0000\u0000\u189b\u189d"+
		"\u0005\u027f\u0000\u0000\u189c\u189b\u0001\u0000\u0000\u0000\u189c\u189d"+
		"\u0001\u0000\u0000\u0000\u189d\u189e\u0001\u0000\u0000\u0000\u189e\u18ad"+
		"\u0005\u019d\u0000\u0000\u189f\u18a0\u0005\u01e0\u0000\u0000\u18a0\u18ad"+
		"\u0005\u027d\u0000\u0000\u18a1\u18ad\u0005\u022f\u0000\u0000\u18a2\u18ad"+
		"\u0005\u02dd\u0000\u0000\u18a3\u18a5\u0005\u01b7\u0000\u0000\u18a4\u18a3"+
		"\u0001\u0000\u0000\u0000\u18a4\u18a5\u0001\u0000\u0000\u0000\u18a5\u18a6"+
		"\u0001\u0000\u0000\u0000\u18a6\u18ad\u0005\u0236\u0000\u0000\u18a7\u18ad"+
		"\u0005\u0238\u0000\u0000\u18a8\u18a9\u0005\u0269\u0000\u0000\u18a9\u18ad"+
		"\u0005\u01c2\u0000\u0000\u18aa\u18ad\u0005\u0156\u0000\u0000\u18ab\u18ad"+
		"\u0005\u0182\u0000\u0000\u18ac\u189c\u0001\u0000\u0000\u0000\u18ac\u189f"+
		"\u0001\u0000\u0000\u0000\u18ac\u18a1\u0001\u0000\u0000\u0000\u18ac\u18a2"+
		"\u0001\u0000\u0000\u0000\u18ac\u18a4\u0001\u0000\u0000\u0000\u18ac\u18a7"+
		"\u0001\u0000\u0000\u0000\u18ac\u18a8\u0001\u0000\u0000\u0000\u18ac\u18aa"+
		"\u0001\u0000\u0000\u0000\u18ac\u18ab\u0001\u0000\u0000\u0000\u18ad\u0205"+
		"\u0001\u0000\u0000\u0000\u18ae\u18b7\u0005\u01a3\u0000\u0000\u18af\u18b0"+
		"\u0005\u00af\u0000\u0000\u18b0\u18b7\u0005\u027d\u0000\u0000\u18b1\u18b3"+
		"\u0005\u01b7\u0000\u0000\u18b2\u18b1\u0001\u0000\u0000\u0000\u18b2\u18b3"+
		"\u0001\u0000\u0000\u0000\u18b3\u18b4\u0001\u0000\u0000\u0000\u18b4\u18b7"+
		"\u0005\u02ee\u0000\u0000\u18b5\u18b7\u0005\u0292\u0000\u0000\u18b6\u18ae"+
		"\u0001\u0000\u0000\u0000\u18b6\u18af\u0001\u0000\u0000\u0000\u18b6\u18b2"+
		"\u0001\u0000\u0000\u0000\u18b6\u18b5\u0001\u0000\u0000\u0000\u18b7\u0207"+
		"\u0001\u0000\u0000\u0000\u18b8\u18c5\u0005\u0006\u0000\u0000\u18b9\u18ba"+
		"\u0005\u015e\u0000\u0000\u18ba\u18c5\u0005\u01d0\u0000\u0000\u18bb\u18bc"+
		"\u0005\u0181\u0000\u0000\u18bc\u18c5\u0005\u0288\u0000\u0000\u18bd\u18c5"+
		"\u0005\u0184\u0000\u0000\u18be\u18c5\u0005\u01d2\u0000\u0000\u18bf\u18c5"+
		"\u0005\u0320\u0000\u0000\u18c0\u18c1\u0005\u0223\u0000\u0000\u18c1\u18c5"+
		"\u0005\u01ad\u0000\u0000\u18c2\u18c5\u0005\u0270\u0000\u0000\u18c3\u18c5"+
		"\u0005\u0287\u0000\u0000\u18c4\u18b8\u0001\u0000\u0000\u0000\u18c4\u18b9"+
		"\u0001\u0000\u0000\u0000\u18c4\u18bb\u0001\u0000\u0000\u0000\u18c4\u18bd"+
		"\u0001\u0000\u0000\u0000\u18c4\u18be\u0001\u0000\u0000\u0000\u18c4\u18bf"+
		"\u0001\u0000\u0000\u0000\u18c4\u18c0\u0001\u0000\u0000\u0000\u18c4\u18c2"+
		"\u0001\u0000\u0000\u0000\u18c4\u18c3\u0001\u0000\u0000\u0000\u18c5\u0209"+
		"\u0001\u0000\u0000\u0000\u18c6\u18c7\u0005\u015c\u0000\u0000\u18c7\u18c8"+
		"\u0005\u0497\u0000\u0000\u18c8\u020b\u0001\u0000\u0000\u0000\u18c9\u18ca"+
		"\u0005\u0162\u0000\u0000\u18ca\u18cb\u0005S\u0000\u0000\u18cb\u18d0\u0003"+
		"\u0218\u010c\u0000\u18cc\u18cd\u0005\u048a\u0000\u0000\u18cd\u18cf\u0003"+
		"\u0218\u010c\u0000\u18ce\u18cc\u0001\u0000\u0000\u0000\u18cf\u18d2\u0001"+
		"\u0000\u0000\u0000\u18d0\u18ce\u0001\u0000\u0000\u0000\u18d0\u18d1\u0001"+
		"\u0000\u0000\u0000\u18d1\u18da\u0001\u0000\u0000\u0000\u18d2\u18d0\u0001"+
		"\u0000\u0000\u0000\u18d3\u18d4\u0005\u0083\u0000\u0000\u18d4\u18d7\u0005"+
		"\u0488\u0000\u0000\u18d5\u18d8\u0003\u027a\u013d\u0000\u18d6\u18d8\u0005"+
		"\u0006\u0000\u0000\u18d7\u18d5\u0001\u0000\u0000\u0000\u18d7\u18d6\u0001"+
		"\u0000\u0000\u0000\u18d8\u18d9\u0001\u0000\u0000\u0000\u18d9\u18db\u0005"+
		"\u0489\u0000\u0000\u18da\u18d3\u0001\u0000\u0000\u0000\u18da\u18db\u0001"+
		"\u0000\u0000\u0000\u18db\u18dc\u0001\u0000\u0000\u0000\u18dc\u18dd\u0005"+
		"R\u0000\u0000\u18dd\u18de\u0003\u0258\u012c\u0000\u18de\u020d\u0001\u0000"+
		"\u0000\u0000\u18df\u18e1\u0005\u01b3\u0000\u0000\u18e0\u18e2\u0007O\u0000"+
		"\u0000\u18e1\u18e0\u0001\u0000\u0000\u0000\u18e1\u18e2\u0001\u0000\u0000"+
		"\u0000\u18e2\u18e3\u0001\u0000\u0000\u0000\u18e3\u18e8\u0003\u021a\u010d"+
		"\u0000\u18e4\u18e5\u0005\u048a\u0000\u0000\u18e5\u18e7\u0003\u021a\u010d"+
		"\u0000\u18e6\u18e4\u0001\u0000\u0000\u0000\u18e7\u18ea\u0001\u0000\u0000"+
		"\u0000\u18e8\u18e6\u0001\u0000\u0000\u0000\u18e8\u18e9\u0001\u0000\u0000"+
		"\u0000\u18e9\u18f0\u0001\u0000\u0000\u0000\u18ea\u18e8\u0001\u0000\u0000"+
		"\u0000\u18eb\u18ec\u0005\u01b3\u0000\u0000\u18ec\u18f0\u0007Z\u0000\u0000"+
		"\u18ed\u18ee\u0005\u01b3\u0000\u0000\u18ee\u18f0\u0005\u02c0\u0000\u0000"+
		"\u18ef\u18df\u0001\u0000\u0000\u0000\u18ef\u18eb\u0001\u0000\u0000\u0000"+
		"\u18ef\u18ed\u0001\u0000\u0000\u0000\u18f0\u020f\u0001\u0000\u0000\u0000"+
		"\u18f1\u18f3\u0005_\u0000\u0000\u18f2\u18f4\u0007]\u0000\u0000\u18f3\u18f2"+
		"\u0001\u0000\u0000\u0000\u18f3\u18f4\u0001\u0000\u0000\u0000\u18f4\u18f5"+
		"\u0001\u0000\u0000\u0000\u18f5\u18f6\u0003\u02c4\u0162\u0000\u18f6\u0211"+
		"\u0001\u0000\u0000\u0000\u18f7\u18f8\u0005h\u0000\u0000\u18f8\u18f9\u0005"+
		"S\u0000\u0000\u18f9\u18fa\u0005Y\u0000\u0000\u18fa\u18fb\u0005\u0162\u0000"+
		"\u0000\u18fb\u1900\u0003\u021e\u010f\u0000\u18fc\u18fd\u0005\u048a\u0000"+
		"\u0000\u18fd\u18ff\u0003\u021e\u010f\u0000\u18fe\u18fc\u0001\u0000\u0000"+
		"\u0000\u18ff\u1902\u0001\u0000\u0000\u0000\u1900\u18fe\u0001\u0000\u0000"+
		"\u0000\u1900\u1901\u0001\u0000\u0000\u0000\u1901\u0213\u0001\u0000\u0000"+
		"\u0000\u1902\u1900\u0001\u0000\u0000\u0000\u1903\u1904\u0005\u0250\u0000"+
		"\u0000\u1904\u1905\u0005\u023a\u0000\u0000\u1905\u1906\u0005\u0162\u0000"+
		"\u0000\u1906\u0215\u0001\u0000\u0000\u0000\u1907\u1908\u0005\u02eb\u0000"+
		"\u0000\u1908\u0217\u0001\u0000\u0000\u0000\u1909\u1911\u0003\u0236\u011b"+
		"\u0000\u190a\u190c\u0007\u0017\u0000\u0000\u190b\u190a\u0001\u0000\u0000"+
		"\u0000\u190b\u190c\u0001\u0000\u0000\u0000\u190c\u190d\u0001\u0000\u0000"+
		"\u0000\u190d\u190e\u0005\u0488\u0000\u0000\u190e\u190f\u0003\u027a\u013d"+
		"\u0000\u190f\u1910\u0005\u0489\u0000\u0000\u1910\u1912\u0001\u0000\u0000"+
		"\u0000\u1911\u190b\u0001\u0000\u0000\u0000\u1911\u1912\u0001\u0000\u0000"+
		"\u0000\u1912\u0219\u0001\u0000\u0000\u0000\u1913\u1926\u0005\u018d\u0000"+
		"\u0000\u1914\u1926\u0005\u01c2\u0000\u0000\u1915\u1917\u0007^\u0000\u0000"+
		"\u1916\u1915\u0001\u0000\u0000\u0000\u1916\u1917\u0001\u0000\u0000\u0000"+
		"\u1917\u1918\u0001\u0000\u0000\u0000\u1918\u1926\u0005\u01df\u0000\u0000"+
		"\u1919\u1926\u0005\u021f\u0000\u0000\u191a\u1926\u0005\u02dd\u0000\u0000"+
		"\u191b\u191c\u0005\u023a\u0000\u0000\u191c\u1926\u0005\u0162\u0000\u0000"+
		"\u191d\u1926\u0005\u027d\u0000\u0000\u191e\u1926\u0005\u029e\u0000\u0000"+
		"\u191f\u1923\u0005\u02ee\u0000\u0000\u1920\u1921\u0005\u00c3\u0000\u0000"+
		"\u1921\u1922\u0005\u0088\u0000\u0000\u1922\u1924\u0005i\u0000\u0000\u1923"+
		"\u1920\u0001\u0000\u0000\u0000\u1923\u1924\u0001\u0000\u0000\u0000\u1924"+
		"\u1926\u0001\u0000\u0000\u0000\u1925\u1913\u0001\u0000\u0000\u0000\u1925"+
		"\u1914\u0001\u0000\u0000\u0000\u1925\u1916\u0001\u0000\u0000\u0000\u1925"+
		"\u1919\u0001\u0000\u0000\u0000\u1925\u191a\u0001\u0000\u0000\u0000\u1925"+
		"\u191b\u0001\u0000\u0000\u0000\u1925\u191d\u0001\u0000\u0000\u0000\u1925"+
		"\u191e\u0001\u0000\u0000\u0000\u1925\u191f\u0001\u0000\u0000\u0000\u1926"+
		"\u1934\u0001\u0000\u0000\u0000\u1927\u1928\u0005\u0241\u0000\u0000\u1928"+
		"\u192a\u0005\u01df\u0000\u0000\u1929\u192b\u0003\u0176\u00bb\u0000\u192a"+
		"\u1929\u0001\u0000\u0000\u0000\u192a\u192b\u0001\u0000\u0000\u0000\u192b"+
		"\u1934\u0001\u0000\u0000\u0000\u192c\u192e\u0007:\u0000\u0000\u192d\u192f"+
		"\u0003\u027e\u013f\u0000\u192e\u192d\u0001\u0000\u0000\u0000\u192e\u192f"+
		"\u0001\u0000\u0000\u0000\u192f\u1931\u0001\u0000\u0000\u0000\u1930\u1932"+
		"\u0003\u021c\u010e\u0000\u1931\u1930\u0001\u0000\u0000\u0000\u1931\u1932"+
		"\u0001\u0000\u0000\u0000\u1932\u1934\u0001\u0000\u0000\u0000\u1933\u1925"+
		"\u0001\u0000\u0000\u0000\u1933\u1927\u0001\u0000\u0000\u0000\u1933\u192c"+
		"\u0001\u0000\u0000\u0000\u1934\u021b\u0001\u0000\u0000\u0000\u1935\u1936"+
		"\u0005\u00c3\u0000\u0000\u1936\u1937\u0005\u0088\u0000\u0000\u1937\u193b"+
		"\u0005i\u0000\u0000\u1938\u1939\u0005B\u0000\u0000\u1939\u193b\u0005\u01a8"+
		"\u0000\u0000\u193a\u1935\u0001\u0000\u0000\u0000\u193a\u1938\u0001\u0000"+
		"\u0000\u0000\u193b\u021d\u0001\u0000\u0000\u0000\u193c\u1944\u0003\u0236"+
		"\u011b\u0000\u193d\u193e\u0005\u0083\u0000\u0000\u193e\u1941\u0005\u0488"+
		"\u0000\u0000\u193f\u1942\u0003\u027a\u013d\u0000\u1940\u1942\u0005\u0006"+
		"\u0000\u0000\u1941\u193f\u0001\u0000\u0000\u0000\u1941\u1940\u0001\u0000"+
		"\u0000\u0000\u1942\u1943\u0001\u0000\u0000\u0000\u1943\u1945\u0005\u0489"+
		"\u0000\u0000\u1944\u193d\u0001\u0000\u0000\u0000\u1944\u1945\u0001\u0000"+
		"\u0000\u0000\u1945\u194d\u0001\u0000\u0000\u0000\u1946\u1948\u0007\u0017"+
		"\u0000\u0000\u1947\u1946\u0001\u0000\u0000\u0000\u1947\u1948\u0001\u0000"+
		"\u0000\u0000\u1948\u1949\u0001\u0000\u0000\u0000\u1949\u194a\u0005\u0488"+
		"\u0000\u0000\u194a\u194b\u0003\u027a\u013d\u0000\u194b\u194c\u0005\u0489"+
		"\u0000\u0000\u194c\u194e\u0001\u0000\u0000\u0000\u194d\u1947\u0001\u0000"+
		"\u0000\u0000\u194d\u194e\u0001\u0000\u0000\u0000\u194e\u1951\u0001\u0000"+
		"\u0000\u0000\u194f\u1950\u0005P\u0000\u0000\u1950\u1952\u0005\u01d9\u0000"+
		"\u0000\u1951\u194f\u0001\u0000\u0000\u0000\u1951\u1952\u0001\u0000\u0000"+
		"\u0000\u1952\u021f\u0001\u0000\u0000\u0000\u1953\u1954\u0007_\u0000\u0000"+
		"\u1954\u1957\u0003\u0236\u011b\u0000\u1955\u1958\u0003\u0258\u012c\u0000"+
		"\u1956\u1958\u0005\u0497\u0000\u0000\u1957\u1955\u0001\u0000\u0000\u0000"+
		"\u1957\u1956\u0001\u0000\u0000\u0000\u1957\u1958\u0001\u0000\u0000\u0000"+
		"\u1958\u0221\u0001\u0000\u0000\u0000\u1959\u195d\u0007_\u0000\u0000\u195a"+
		"\u195b\u0007`\u0000\u0000\u195b\u195c\u0005\u047f\u0000\u0000\u195c\u195e"+
		"\u0007a\u0000\u0000\u195d\u195a\u0001\u0000\u0000\u0000\u195d\u195e\u0001"+
		"\u0000\u0000\u0000\u195e\u195f\u0001\u0000\u0000\u0000\u195f\u1960\u0003"+
		"\u0232\u0119\u0000\u1960\u0223\u0001\u0000\u0000\u0000\u1961\u1962\u0005"+
		"\u01bf\u0000\u0000\u1962\u1963\u0005\u0497\u0000\u0000\u1963\u0225\u0001"+
		"\u0000\u0000\u0000\u1964\u1965\u0005\u00bd\u0000\u0000\u1965\u1966\u0003"+
		"\u0258\u012c\u0000\u1966\u0227\u0001\u0000\u0000\u0000\u1967\u196f\u0005"+
		"\u009e\u0000\u0000\u1968\u196a\u0005\u00a4\u0000\u0000\u1969\u196b\u0005"+
		"\u02a0\u0000\u0000\u196a\u1969\u0001\u0000\u0000\u0000\u196a\u196b\u0001"+
		"\u0000\u0000\u0000\u196b\u196c\u0001\u0000\u0000\u0000\u196c\u1970\u0003"+
		"\u0262\u0131\u0000\u196d\u1970\u0005\u049f\u0000\u0000\u196e\u1970\u0005"+
		"\u04a0\u0000\u0000\u196f\u1968\u0001\u0000\u0000\u0000\u196f\u196d\u0001"+
		"\u0000\u0000\u0000\u196f\u196e\u0001\u0000\u0000\u0000\u1970\u197a\u0001"+
		"\u0000\u0000\u0000\u1971\u1972\u0005\u009b\u0000\u0000\u1972\u1977\u0003"+
		"\u022c\u0116\u0000\u1973\u1974\u0005\u048a\u0000\u0000\u1974\u1976\u0003"+
		"\u022c\u0116\u0000\u1975\u1973\u0001\u0000\u0000\u0000\u1976\u1979\u0001"+
		"\u0000\u0000\u0000\u1977\u1975\u0001\u0000\u0000\u0000\u1977\u1978\u0001"+
		"\u0000\u0000\u0000\u1978\u197b\u0001\u0000\u0000\u0000\u1979\u1977\u0001"+
		"\u0000\u0000\u0000\u197a\u1971\u0001\u0000\u0000\u0000\u197a\u197b\u0001"+
		"\u0000\u0000\u0000\u197b\u0229\u0001\u0000\u0000\u0000\u197c\u1984\u0005"+
		"\u0091\u0000\u0000\u197d\u197f\u0005\u00a4\u0000\u0000\u197e\u1980\u0005"+
		"\u02a0\u0000\u0000\u197f\u197e\u0001\u0000\u0000\u0000\u197f\u1980\u0001"+
		"\u0000\u0000\u0000\u1980\u1981\u0001\u0000\u0000\u0000\u1981\u1985\u0003"+
		"\u0262\u0131\u0000\u1982\u1985\u0005\u049f\u0000\u0000\u1983\u1985\u0005"+
		"\u04a0\u0000\u0000\u1984\u197d\u0001\u0000\u0000\u0000\u1984\u1982\u0001"+
		"\u0000\u0000\u0000\u1984\u1983\u0001\u0000\u0000\u0000\u1984\u1985\u0001"+
		"\u0000\u0000\u0000\u1985\u198f\u0001\u0000\u0000\u0000\u1986\u1987\u0005"+
		"\u009b\u0000\u0000\u1987\u198c\u0003\u022c\u0116\u0000\u1988\u1989\u0005"+
		"\u048a\u0000\u0000\u1989\u198b\u0003\u022c\u0116\u0000\u198a\u1988\u0001"+
		"\u0000\u0000\u0000\u198b\u198e\u0001\u0000\u0000\u0000\u198c\u198a\u0001"+
		"\u0000\u0000\u0000\u198c\u198d\u0001\u0000\u0000\u0000\u198d\u1990\u0001"+
		"\u0000\u0000\u0000\u198e\u198c\u0001\u0000\u0000\u0000\u198f\u1986\u0001"+
		"\u0000\u0000\u0000\u198f\u1990\u0001\u0000\u0000\u0000\u1990\u022b\u0001"+
		"\u0000\u0000\u0000\u1991\u1992\u0007b\u0000\u0000\u1992\u1997\u0005\u047f"+
		"\u0000\u0000\u1993\u1998\u0003\u0262\u0131\u0000\u1994\u1998\u0005\u0498"+
		"\u0000\u0000\u1995\u1998\u0003\u0244\u0122\u0000\u1996\u1998\u0003\u025a"+
		"\u012d\u0000\u1997\u1993\u0001\u0000\u0000\u0000\u1997\u1994\u0001\u0000"+
		"\u0000\u0000\u1997\u1995\u0001\u0000\u0000\u0000\u1997\u1996\u0001\u0000"+
		"\u0000\u0000\u1998\u022d\u0001\u0000\u0000\u0000\u1999\u199b\u0005H\u0000"+
		"\u0000\u199a\u199c\u0007c\u0000\u0000\u199b\u199a\u0001\u0000\u0000\u0000"+
		"\u199b\u199c\u0001\u0000\u0000\u0000\u199c\u199d\u0001\u0000\u0000\u0000"+
		"\u199d\u19bd\u00051\u0000\u0000\u199e\u199f\u0003\u01fe\u00ff\u0000\u199f"+
		"\u19a0\u0005\u047f\u0000\u0000\u19a0\u19a8\u0007d\u0000\u0000\u19a1\u19a2"+
		"\u0005\u048a\u0000\u0000\u19a2\u19a3\u0003\u01fe\u00ff\u0000\u19a3\u19a4"+
		"\u0005\u047f\u0000\u0000\u19a4\u19a5\u0007d\u0000\u0000\u19a5\u19a7\u0001"+
		"\u0000\u0000\u0000\u19a6\u19a1\u0001\u0000\u0000\u0000\u19a7\u19aa\u0001"+
		"\u0000\u0000\u0000\u19a8\u19a6\u0001\u0000\u0000\u0000\u19a8\u19a9\u0001"+
		"\u0000\u0000\u0000\u19a9\u19be\u0001\u0000\u0000\u0000\u19aa\u19a8\u0001"+
		"\u0000\u0000\u0000\u19ab\u19ae\u0005\u001e\u0000\u0000\u19ac\u19af\u0003"+
		"\u025e\u012f\u0000\u19ad\u19af\u0003\u01fe\u00ff\u0000\u19ae\u19ac\u0001"+
		"\u0000\u0000\u0000\u19ae\u19ad\u0001\u0000\u0000\u0000\u19af\u19b0\u0001"+
		"\u0000\u0000\u0000\u19b0\u19b1\u0003\u01fe\u00ff\u0000\u19b1\u19b2\u0005"+
		"\u047f\u0000\u0000\u19b2\u19ba\u0003\u0230\u0118\u0000\u19b3\u19b4\u0005"+
		"\u048a\u0000\u0000\u19b4\u19b5\u0003\u01fe\u00ff\u0000\u19b5\u19b6\u0005"+
		"\u047f\u0000\u0000\u19b6\u19b7\u0003\u0230\u0118\u0000\u19b7\u19b9\u0001"+
		"\u0000\u0000\u0000\u19b8\u19b3\u0001\u0000\u0000\u0000\u19b9\u19bc\u0001"+
		"\u0000\u0000\u0000\u19ba\u19b8\u0001\u0000\u0000\u0000\u19ba\u19bb\u0001"+
		"\u0000\u0000\u0000\u19bb\u19be\u0001\u0000\u0000\u0000\u19bc\u19ba\u0001"+
		"\u0000\u0000\u0000\u19bd\u199e\u0001\u0000\u0000\u0000\u19bd\u19ab\u0001"+
		"\u0000\u0000\u0000\u19be\u022f\u0001\u0000\u0000\u0000\u19bf\u19c0\u0007"+
		"e\u0000\u0000\u19c0\u0231\u0001\u0000\u0000\u0000\u19c1\u19c7\u0003\u00d6"+
		"k\u0000\u19c2\u19c7\u0003\u00c8d\u0000\u19c3\u19c7\u0003\u00ceg\u0000"+
		"\u19c4\u19c7\u0003\u00d4j\u0000\u19c5\u19c7\u0003\u00deo\u0000\u19c6\u19c1"+
		"\u0001\u0000\u0000\u0000\u19c6\u19c2\u0001\u0000\u0000\u0000\u19c6\u19c3"+
		"\u0001\u0000\u0000\u0000\u19c6\u19c4\u0001\u0000\u0000\u0000\u19c6\u19c5"+
		"\u0001\u0000\u0000\u0000\u19c7\u19cc\u0001\u0000\u0000\u0000\u19c8\u19c9"+
		"\u0005B\u0000\u0000\u19c9\u19ca\u0005\u017b\u0000\u0000\u19ca\u19cc\u0003"+
		"\u0258\u012c\u0000\u19cb\u19c6\u0001\u0000\u0000\u0000\u19cb\u19c8\u0001"+
		"\u0000\u0000\u0000\u19cc\u0233\u0001\u0000\u0000\u0000\u19cd\u19d1\u0003"+
		"\u0258\u012c\u0000\u19ce\u19d2\u0005\u049e\u0000\u0000\u19cf\u19d0\u0005"+
		"\u0487\u0000\u0000\u19d0\u19d2\u0003\u0258\u012c\u0000\u19d1\u19ce\u0001"+
		"\u0000\u0000\u0000\u19d1\u19cf\u0001\u0000\u0000\u0000\u19d1\u19d2\u0001"+
		"\u0000\u0000\u0000\u19d2\u0235\u0001\u0000\u0000\u0000\u19d3\u19d4\u0003"+
		"\u0234\u011a\u0000\u19d4\u0237\u0001\u0000\u0000\u0000\u19d5\u19d8\u0003"+
		"\u0242\u0121\u0000\u19d6\u19d8\u0003\u0258\u012c\u0000\u19d7\u19d5\u0001"+
		"\u0000\u0000\u0000\u19d7\u19d6\u0001\u0000\u0000\u0000\u19d8\u0239\u0001"+
		"\u0000\u0000\u0000\u19d9\u19de\u0003\u0258\u012c\u0000\u19da\u19dc\u0003"+
		"\u025c\u012e\u0000\u19db\u19dd\u0003\u025c\u012e\u0000\u19dc\u19db\u0001"+
		"\u0000\u0000\u0000\u19dc\u19dd\u0001\u0000\u0000\u0000\u19dd\u19df\u0001"+
		"\u0000\u0000\u0000\u19de\u19da\u0001\u0000\u0000\u0000\u19de\u19df\u0001"+
		"\u0000\u0000\u0000\u19df\u19e8\u0001\u0000\u0000\u0000\u19e0\u19e2\t\u0000"+
		"\u0000\u0000\u19e1\u19e0\u0001\u0000\u0000\u0000\u19e1\u19e2\u0001\u0000"+
		"\u0000\u0000\u19e2\u19e3\u0001\u0000\u0000\u0000\u19e3\u19e5\u0003\u025c"+
		"\u012e\u0000\u19e4\u19e6\u0003\u025c\u012e\u0000\u19e5\u19e4\u0001\u0000"+
		"\u0000\u0000\u19e5\u19e6\u0001\u0000\u0000\u0000\u19e6\u19e8\u0001\u0000"+
		"\u0000\u0000\u19e7\u19d9\u0001\u0000\u0000\u0000\u19e7\u19e1\u0001\u0000"+
		"\u0000\u0000\u19e8\u023b\u0001\u0000\u0000\u0000\u19e9\u19ec\u0003\u0258"+
		"\u012c\u0000\u19ea\u19ec\u0005\u0497\u0000\u0000\u19eb\u19e9\u0001\u0000"+
		"\u0000\u0000\u19eb\u19ea\u0001\u0000\u0000\u0000\u19ec\u19f1\u0001\u0000"+
		"\u0000\u0000\u19ed\u19ee\u0005\u0488\u0000\u0000\u19ee\u19ef\u0003\u025e"+
		"\u012f\u0000\u19ef\u19f0\u0005\u0489\u0000\u0000\u19f0\u19f2\u0001\u0000"+
		"\u0000\u0000\u19f1\u19ed\u0001\u0000\u0000\u0000\u19f1\u19f2\u0001\u0000"+
		"\u0000\u0000\u19f2\u19f5\u0001\u0000\u0000\u0000\u19f3\u19f5\u0003\u02c4"+
		"\u0162\u0000\u19f4\u19eb\u0001\u0000\u0000\u0000\u19f4\u19f3\u0001\u0000"+
		"\u0000\u0000\u19f5\u19f7\u0001\u0000\u0000\u0000\u19f6\u19f8\u00074\u0000"+
		"\u0000\u19f7\u19f6\u0001\u0000\u0000\u0000\u19f7\u19f8\u0001\u0000\u0000"+
		"\u0000\u19f8\u023d\u0001\u0000\u0000\u0000\u19f9\u19fe\u0005\u0497\u0000"+
		"\u0000\u19fa\u19fe\u0005\u049f\u0000\u0000\u19fb\u19fe\u0005\u02c1\u0000"+
		"\u0000\u19fc\u19fe\u0003\u02e2\u0171\u0000\u19fd\u19f9\u0001\u0000\u0000"+
		"\u0000\u19fd\u19fa\u0001\u0000\u0000\u0000\u19fd\u19fb\u0001\u0000\u0000"+
		"\u0000\u19fd\u19fc\u0001\u0000\u0000\u0000\u19fe\u023f\u0001\u0000\u0000"+
		"\u0000\u19ff\u1a00\u0007f\u0000\u0000\u1a00\u0241\u0001\u0000\u0000\u0000"+
		"\u1a01\u1a07\u0003\u023e\u011f\u0000\u1a02\u1a03\u0003\u023e\u011f\u0000"+
		"\u1a03\u1a04\u0003\u0240\u0120\u0000\u1a04\u1a07\u0001\u0000\u0000\u0000"+
		"\u1a05\u1a07\u0003D\"\u0000\u1a06\u1a01\u0001\u0000\u0000\u0000\u1a06"+
		"\u1a02\u0001\u0000\u0000\u0000\u1a06\u1a05\u0001\u0000\u0000\u0000\u1a07"+
		"\u0243\u0001\u0000\u0000\u0000\u1a08\u1a09\u0007g\u0000\u0000\u1a09\u0245"+
		"\u0001\u0000\u0000\u0000\u1a0a\u1a0f\u0005\u00e5\u0000\u0000\u1a0b\u1a0f"+
		"\u0003\u02d8\u016c\u0000\u1a0c\u1a0f\u0005\u0497\u0000\u0000\u1a0d\u1a0f"+
		"\u0005\u0494\u0000\u0000\u1a0e\u1a0a\u0001\u0000\u0000\u0000\u1a0e\u1a0b"+
		"\u0001\u0000\u0000\u0000\u1a0e\u1a0c\u0001\u0000\u0000\u0000\u1a0e\u1a0d"+
		"\u0001\u0000\u0000\u0000\u1a0f\u0247\u0001\u0000\u0000\u0000\u1a10\u1a13"+
		"\u0003\u0258\u012c\u0000\u1a11\u1a13\u0005\u0497\u0000\u0000\u1a12\u1a10"+
		"\u0001\u0000\u0000\u0000\u1a12\u1a11\u0001\u0000\u0000\u0000\u1a13\u0249"+
		"\u0001\u0000\u0000\u0000\u1a14\u1a18\u0003\u024c\u0126\u0000\u1a15\u1a18"+
		"\u0005\u049f\u0000\u0000\u1a16\u1a18\u0005\u0497\u0000\u0000\u1a17\u1a14"+
		"\u0001\u0000\u0000\u0000\u1a17\u1a15\u0001\u0000\u0000\u0000";
	private static final String _serializedATNSegment3 =
		"\u1a17\u1a16\u0001\u0000\u0000\u0000\u1a18\u024b\u0001\u0000\u0000\u0000"+
		"\u1a19\u1a1a\u0007h\u0000\u0000\u1a1a\u024d\u0001\u0000\u0000\u0000\u1a1b"+
		"\u1a1c\u0007i\u0000\u0000\u1a1c\u024f\u0001\u0000\u0000\u0000\u1a1d\u1a1e"+
		"\u0003\u025e\u012f\u0000\u1a1e\u1a1f\u0005\u047c\u0000\u0000\u1a1f\u1a20"+
		"\u0003\u025e\u012f\u0000\u1a20\u1a21\u0005\u047c\u0000\u0000\u1a21\u1a22"+
		"\u0003\u025e\u012f\u0000\u1a22\u1a23\u0005\u047c\u0000\u0000\u1a23\u1a24"+
		"\u0003\u025e\u012f\u0000\u1a24\u1a25\u0005\u047c\u0000\u0000\u1a25\u1a2b"+
		"\u0003\u025e\u012f\u0000\u1a26\u1a27\u0005\u0493\u0000\u0000\u1a27\u1a28"+
		"\u0003\u025e\u012f\u0000\u1a28\u1a29\u0005\u047c\u0000\u0000\u1a29\u1a2a"+
		"\u0003\u025e\u012f\u0000\u1a2a\u1a2c\u0001\u0000\u0000\u0000\u1a2b\u1a26"+
		"\u0001\u0000\u0000\u0000\u1a2c\u1a2d\u0001\u0000\u0000\u0000\u1a2d\u1a2b"+
		"\u0001\u0000\u0000\u0000\u1a2d\u1a2e\u0001\u0000\u0000\u0000\u1a2e\u0251"+
		"\u0001\u0000\u0000\u0000\u1a2f\u1a36\u0003\u0254\u012a\u0000\u1a30\u1a31"+
		"\u0005\u048a\u0000\u0000\u1a31\u1a34\u0003\u0254\u012a\u0000\u1a32\u1a33"+
		"\u0005\u048a\u0000\u0000\u1a33\u1a35\u0003\u025e\u012f\u0000\u1a34\u1a32"+
		"\u0001\u0000\u0000\u0000\u1a34\u1a35\u0001\u0000\u0000\u0000\u1a35\u1a37"+
		"\u0001\u0000\u0000\u0000\u1a36\u1a30\u0001\u0000\u0000\u0000\u1a36\u1a37"+
		"\u0001\u0000\u0000\u0000\u1a37\u0253\u0001\u0000\u0000\u0000\u1a38\u1a40"+
		"\u0005\u0497\u0000\u0000\u1a39\u1a40\u0005\u049c\u0000\u0000\u1a3a\u1a3c"+
		"\u0005\u0499\u0000\u0000\u1a3b\u1a3a\u0001\u0000\u0000\u0000\u1a3c\u1a3d"+
		"\u0001\u0000\u0000\u0000\u1a3d\u1a3b\u0001\u0000\u0000\u0000\u1a3d\u1a3e"+
		"\u0001\u0000\u0000\u0000\u1a3e\u1a40\u0001\u0000\u0000\u0000\u1a3f\u1a38"+
		"\u0001\u0000\u0000\u0000\u1a3f\u1a39\u0001\u0000\u0000\u0000\u1a3f\u1a3b"+
		"\u0001\u0000\u0000\u0000\u1a40\u0255\u0001\u0000\u0000\u0000\u1a41\u1a44"+
		"\u0003\u0258\u012c\u0000\u1a42\u1a44\u0005\u0497\u0000\u0000\u1a43\u1a41"+
		"\u0001\u0000\u0000\u0000\u1a43\u1a42\u0001\u0000\u0000\u0000\u1a44\u0257"+
		"\u0001\u0000\u0000\u0000\u1a45\u1a49\u0003\u025a\u012d\u0000\u1a46\u1a49"+
		"\u0005\u0494\u0000\u0000\u1a47\u1a49\u0005\u0497\u0000\u0000\u1a48\u1a45"+
		"\u0001\u0000\u0000\u0000\u1a48\u1a46\u0001\u0000\u0000\u0000\u1a48\u1a47"+
		"\u0001\u0000\u0000\u0000\u1a49\u0259\u0001\u0000\u0000\u0000\u1a4a\u1a54"+
		"\u0005\u049f\u0000\u0000\u1a4b\u1a54\u0003\u02d8\u016c\u0000\u1a4c\u1a54"+
		"\u0003\u02da\u016d\u0000\u1a4d\u1a54\u0003\u024c\u0126\u0000\u1a4e\u1a54"+
		"\u0003\u02dc\u016e\u0000\u1a4f\u1a54\u0003\u02de\u016f\u0000\u1a50\u1a54"+
		"\u0003\u02e0\u0170\u0000\u1a51\u1a54\u0003\u02e2\u0171\u0000\u1a52\u1a54"+
		"\u0003\u02bc\u015e\u0000\u1a53\u1a4a\u0001\u0000\u0000\u0000\u1a53\u1a4b"+
		"\u0001\u0000\u0000\u0000\u1a53\u1a4c\u0001\u0000\u0000\u0000\u1a53\u1a4d"+
		"\u0001\u0000\u0000\u0000\u1a53\u1a4e\u0001\u0000\u0000\u0000\u1a53\u1a4f"+
		"\u0001\u0000\u0000\u0000\u1a53\u1a50\u0001\u0000\u0000\u0000\u1a53\u1a51"+
		"\u0001\u0000\u0000\u0000\u1a53\u1a52\u0001\u0000\u0000\u0000\u1a54\u025b"+
		"\u0001\u0000\u0000\u0000\u1a55\u1a59\u0005\u049e\u0000\u0000\u1a56\u1a57"+
		"\u0005\u0487\u0000\u0000\u1a57\u1a59\u0003\u0258\u012c\u0000\u1a58\u1a55"+
		"\u0001\u0000\u0000\u0000\u1a58\u1a56\u0001\u0000\u0000\u0000\u1a59\u025d"+
		"\u0001\u0000\u0000\u0000\u1a5a\u1a5b\u0007j\u0000\u0000\u1a5b\u025f\u0001"+
		"\u0000\u0000\u0000\u1a5c\u1a5f\u0005\u0495\u0000\u0000\u1a5d\u1a5f\u0003"+
		"\u025e\u012f\u0000\u1a5e\u1a5c\u0001\u0000\u0000\u0000\u1a5e\u1a5d\u0001"+
		"\u0000\u0000\u0000\u1a5f\u0261\u0001\u0000\u0000\u0000\u1a60\u1a62\u0005"+
		"\u049d\u0000\u0000\u1a61\u1a60\u0001\u0000\u0000\u0000\u1a61\u1a62\u0001"+
		"\u0000\u0000\u0000\u1a62\u1a63\u0001\u0000\u0000\u0000\u1a63\u1a66\u0005"+
		"\u0497\u0000\u0000\u1a64\u1a66\u0005\u0496\u0000\u0000\u1a65\u1a61\u0001"+
		"\u0000\u0000\u0000\u1a65\u1a64\u0001\u0000\u0000\u0000\u1a66\u1a68\u0001"+
		"\u0000\u0000\u0000\u1a67\u1a69\u0005\u0497\u0000\u0000\u1a68\u1a67\u0001"+
		"\u0000\u0000\u0000\u1a69\u1a6a\u0001\u0000\u0000\u0000\u1a6a\u1a68\u0001"+
		"\u0000\u0000\u0000\u1a6a\u1a6b\u0001\u0000\u0000\u0000\u1a6b\u1a78\u0001"+
		"\u0000\u0000\u0000\u1a6c\u1a6e\u0005\u049d\u0000\u0000\u1a6d\u1a6c\u0001"+
		"\u0000\u0000\u0000\u1a6d\u1a6e\u0001\u0000\u0000\u0000\u1a6e\u1a6f\u0001"+
		"\u0000\u0000\u0000\u1a6f\u1a72\u0005\u0497\u0000\u0000\u1a70\u1a72\u0005"+
		"\u0496\u0000\u0000\u1a71\u1a6d\u0001\u0000\u0000\u0000\u1a71\u1a70\u0001"+
		"\u0000\u0000\u0000\u1a72\u1a75\u0001\u0000\u0000\u0000\u1a73\u1a74\u0005"+
		"\u001c\u0000\u0000\u1a74\u1a76\u0003\u0248\u0124\u0000\u1a75\u1a73\u0001"+
		"\u0000\u0000\u0000\u1a75\u1a76\u0001\u0000\u0000\u0000\u1a76\u1a78\u0001"+
		"\u0000\u0000\u0000\u1a77\u1a65\u0001\u0000\u0000\u0000\u1a77\u1a71\u0001"+
		"\u0000\u0000\u0000\u1a78\u0263\u0001\u0000\u0000\u0000\u1a79\u1a7a\u0007"+
		"k\u0000\u0000\u1a7a\u0265\u0001\u0000\u0000\u0000\u1a7b\u1a7d\u0005\u049d"+
		"\u0000\u0000\u1a7c\u1a7b\u0001\u0000\u0000\u0000\u1a7c\u1a7d\u0001\u0000"+
		"\u0000\u0000\u1a7d\u1a7e\u0001\u0000\u0000\u0000\u1a7e\u1a7f\u0005\u0499"+
		"\u0000\u0000\u1a7f\u0267\u0001\u0000\u0000\u0000\u1a80\u1a82\u0005t\u0000"+
		"\u0000\u1a81\u1a80\u0001\u0000\u0000\u0000\u1a81\u1a82\u0001\u0000\u0000"+
		"\u0000\u1a82\u1a83\u0001\u0000\u0000\u0000\u1a83\u1a84\u0007l\u0000\u0000"+
		"\u1a84\u0269\u0001\u0000\u0000\u0000\u1a85\u1a92\u0003\u0262\u0131\u0000"+
		"\u1a86\u1a92\u0003\u025e\u012f\u0000\u1a87\u1a88\u0005\u047c\u0000\u0000"+
		"\u1a88\u1a92\u0003\u025e\u012f\u0000\u1a89\u1a92\u0003\u0266\u0133\u0000"+
		"\u1a8a\u1a92\u0003\u0264\u0132\u0000\u1a8b\u1a92\u0005\u049a\u0000\u0000"+
		"\u1a8c\u1a92\u0005\u049c\u0000\u0000\u1a8d\u1a8f\u0005t\u0000\u0000\u1a8e"+
		"\u1a8d\u0001\u0000\u0000\u0000\u1a8e\u1a8f\u0001\u0000\u0000\u0000\u1a8f"+
		"\u1a90\u0001\u0000\u0000\u0000\u1a90\u1a92\u0007l\u0000\u0000\u1a91\u1a85"+
		"\u0001\u0000\u0000\u0000\u1a91\u1a86\u0001\u0000\u0000\u0000\u1a91\u1a87"+
		"\u0001\u0000\u0000\u0000\u1a91\u1a89\u0001\u0000\u0000\u0000\u1a91\u1a8a"+
		"\u0001\u0000\u0000\u0000\u1a91\u1a8b\u0001\u0000\u0000\u0000\u1a91\u1a8c"+
		"\u0001\u0000\u0000\u0000\u1a91\u1a8e\u0001\u0000\u0000\u0000\u1a92\u026b"+
		"\u0001\u0000\u0000\u0000\u1a93\u1a95\u0007m\u0000\u0000\u1a94\u1a96\u0005"+
		"\u00f1\u0000\u0000\u1a95\u1a94\u0001\u0000\u0000\u0000\u1a95\u1a96\u0001"+
		"\u0000\u0000\u0000\u1a96\u1a98\u0001\u0000\u0000\u0000\u1a97\u1a99\u0003"+
		"\u0274\u013a\u0000\u1a98\u1a97\u0001\u0000\u0000\u0000\u1a98\u1a99\u0001"+
		"\u0000\u0000\u0000\u1a99\u1a9b\u0001\u0000\u0000\u0000\u1a9a\u1a9c\u0005"+
		"\u00e5\u0000\u0000\u1a9b\u1a9a\u0001\u0000\u0000\u0000\u1a9b\u1a9c\u0001"+
		"\u0000\u0000\u0000\u1a9c\u1aa0\u0001\u0000\u0000\u0000\u1a9d\u1a9e\u0003"+
		"B!\u0000\u1a9e\u1a9f\u0003\u0246\u0123\u0000\u1a9f\u1aa1\u0001\u0000\u0000"+
		"\u0000\u1aa0\u1a9d\u0001\u0000\u0000\u0000\u1aa0\u1aa1\u0001\u0000\u0000"+
		"\u0000\u1aa1\u1aa5\u0001\u0000\u0000\u0000\u1aa2\u1aa3\u0005\u001c\u0000"+
		"\u0000\u1aa3\u1aa6\u0003\u0248\u0124\u0000\u1aa4\u1aa6\u0005\u00e5\u0000"+
		"\u0000\u1aa5\u1aa2\u0001\u0000\u0000\u0000\u1aa5\u1aa4\u0001\u0000\u0000"+
		"\u0000\u1aa5\u1aa6\u0001\u0000\u0000\u0000\u1aa6\u1b13\u0001\u0000\u0000"+
		"\u0000\u1aa7\u1aa8\u0005\u00e4\u0000\u0000\u1aa8\u1aa9\u0007n\u0000\u0000"+
		"\u1aa9\u1aab\u0005\u00f1\u0000\u0000\u1aaa\u1aac\u0003\u0274\u013a\u0000"+
		"\u1aab\u1aaa\u0001\u0000\u0000\u0000\u1aab\u1aac\u0001\u0000\u0000\u0000"+
		"\u1aac\u1aae\u0001\u0000\u0000\u0000\u1aad\u1aaf\u0005\u00e5\u0000\u0000"+
		"\u1aae\u1aad\u0001\u0000\u0000\u0000\u1aae\u1aaf\u0001\u0000\u0000\u0000"+
		"\u1aaf\u1b13\u0001\u0000\u0000\u0000\u1ab0\u1ab1\u0005\u00e4\u0000\u0000"+
		"\u1ab1\u1ab3\u0007o\u0000\u0000\u1ab2\u1ab4\u0003\u0274\u013a\u0000\u1ab3"+
		"\u1ab2\u0001\u0000\u0000\u0000\u1ab3\u1ab4\u0001\u0000\u0000\u0000\u1ab4"+
		"\u1ab6\u0001\u0000\u0000\u0000\u1ab5\u1ab7\u0005\u00e5\u0000\u0000\u1ab6"+
		"\u1ab5\u0001\u0000\u0000\u0000\u1ab6\u1ab7\u0001\u0000\u0000\u0000\u1ab7"+
		"\u1b13\u0001\u0000\u0000\u0000\u1ab8\u1ab9\u0005\u0209\u0000\u0000\u1ab9"+
		"\u1abb\u0005\u00e2\u0000\u0000\u1aba\u1abc\u0003\u0274\u013a\u0000\u1abb"+
		"\u1aba\u0001\u0000\u0000\u0000\u1abb\u1abc\u0001\u0000\u0000\u0000\u1abc"+
		"\u1abe\u0001\u0000\u0000\u0000\u1abd\u1abf\u0005\u00e5\u0000\u0000\u1abe"+
		"\u1abd\u0001\u0000\u0000\u0000\u1abe\u1abf\u0001\u0000\u0000\u0000\u1abf"+
		"\u1b13\u0001\u0000\u0000\u0000\u1ac0\u1ac2\u0007p\u0000\u0000\u1ac1\u1ac3"+
		"\u0003\u0274\u013a\u0000\u1ac2\u1ac1\u0001\u0000\u0000\u0000\u1ac2\u1ac3"+
		"\u0001\u0000\u0000\u0000\u1ac3\u1ac7\u0001\u0000\u0000\u0000\u1ac4\u1ac6"+
		"\u0007q\u0000\u0000\u1ac5\u1ac4\u0001\u0000\u0000\u0000\u1ac6\u1ac9\u0001"+
		"\u0000\u0000\u0000\u1ac7\u1ac5\u0001\u0000\u0000\u0000\u1ac7\u1ac8\u0001"+
		"\u0000\u0000\u0000\u1ac8\u1b13\u0001\u0000\u0000\u0000\u1ac9\u1ac7\u0001"+
		"\u0000\u0000\u0000\u1aca\u1acc\u0005\u00d3\u0000\u0000\u1acb\u1acd\u0003"+
		"\u0276\u013b\u0000\u1acc\u1acb\u0001\u0000\u0000\u0000\u1acc\u1acd\u0001"+
		"\u0000\u0000\u0000\u1acd\u1ad1\u0001\u0000\u0000\u0000\u1ace\u1ad0\u0007"+
		"q\u0000\u0000\u1acf\u1ace\u0001\u0000\u0000\u0000\u1ad0\u1ad3\u0001\u0000"+
		"\u0000\u0000\u1ad1\u1acf\u0001\u0000\u0000\u0000\u1ad1\u1ad2\u0001\u0000"+
		"\u0000\u0000\u1ad2\u1b13\u0001\u0000\u0000\u0000\u1ad3\u1ad1\u0001\u0000"+
		"\u0000\u0000\u1ad4\u1ad6\u0005\u00d4\u0000\u0000\u1ad5\u1ad7\u0005\u00d5"+
		"\u0000\u0000\u1ad6\u1ad5\u0001\u0000\u0000\u0000\u1ad6\u1ad7\u0001\u0000"+
		"\u0000\u0000\u1ad7\u1ad9\u0001\u0000\u0000\u0000\u1ad8\u1ada\u0003\u0276"+
		"\u013b\u0000\u1ad9\u1ad8\u0001\u0000\u0000\u0000\u1ad9\u1ada\u0001\u0000"+
		"\u0000\u0000\u1ada\u1ade\u0001\u0000\u0000\u0000\u1adb\u1add\u0007q\u0000"+
		"\u0000\u1adc\u1adb\u0001\u0000\u0000\u0000\u1add\u1ae0\u0001\u0000\u0000"+
		"\u0000\u1ade\u1adc\u0001\u0000\u0000\u0000\u1ade\u1adf\u0001\u0000\u0000"+
		"\u0000\u1adf\u1b13\u0001\u0000\u0000\u0000\u1ae0\u1ade\u0001\u0000\u0000"+
		"\u0000\u1ae1\u1ae3\u0007r\u0000\u0000\u1ae2\u1ae4\u0003\u0278\u013c\u0000"+
		"\u1ae3\u1ae2\u0001\u0000\u0000\u0000\u1ae3\u1ae4\u0001\u0000\u0000\u0000"+
		"\u1ae4\u1ae8\u0001\u0000\u0000\u0000\u1ae5\u1ae7\u0007q\u0000\u0000\u1ae6"+
		"\u1ae5\u0001\u0000\u0000\u0000\u1ae7\u1aea\u0001\u0000\u0000\u0000\u1ae8"+
		"\u1ae6\u0001\u0000\u0000\u0000\u1ae8\u1ae9\u0001\u0000\u0000\u0000\u1ae9"+
		"\u1b13\u0001\u0000\u0000\u0000\u1aea\u1ae8\u0001\u0000\u0000\u0000\u1aeb"+
		"\u1b13\u0007s\u0000\u0000\u1aec\u1aee\u0007t\u0000\u0000\u1aed\u1aef\u0003"+
		"\u0274\u013a\u0000\u1aee\u1aed\u0001\u0000\u0000\u0000\u1aee\u1aef\u0001"+
		"\u0000\u0000\u0000\u1aef\u1b13\u0001\u0000\u0000\u0000\u1af0\u1af1\u0007"+
		"u\u0000\u0000\u1af1\u1af3\u0003\u026e\u0137\u0000\u1af2\u1af4\u0005\u00e5"+
		"\u0000\u0000\u1af3\u1af2\u0001\u0000\u0000\u0000\u1af3\u1af4\u0001\u0000"+
		"\u0000\u0000\u1af4\u1af8\u0001\u0000\u0000\u0000\u1af5\u1af6\u0003B!\u0000"+
		"\u1af6\u1af7\u0003\u0246\u0123\u0000\u1af7\u1af9\u0001\u0000\u0000\u0000"+
		"\u1af8\u1af5\u0001\u0000\u0000\u0000\u1af8\u1af9\u0001\u0000\u0000\u0000"+
		"\u1af9\u1b13\u0001\u0000\u0000\u0000\u1afa\u1afd\u0007v\u0000\u0000\u1afb"+
		"\u1afc\u0005\u03fd\u0000\u0000\u1afc\u1afe\u0003\u025e\u012f\u0000\u1afd"+
		"\u1afb\u0001\u0000\u0000\u0000\u1afd\u1afe\u0001\u0000\u0000\u0000\u1afe"+
		"\u1b13\u0001\u0000\u0000\u0000\u1aff\u1b01\u0005\u00ea\u0000\u0000\u1b00"+
		"\u1b02\u0005\u00e2\u0000\u0000\u1b01\u1b00\u0001\u0000\u0000\u0000\u1b01"+
		"\u1b02\u0001\u0000\u0000\u0000\u1b02\u1b04\u0001\u0000\u0000\u0000\u1b03"+
		"\u1b05\u0005\u00e5\u0000\u0000\u1b04\u1b03\u0001\u0000\u0000\u0000\u1b04"+
		"\u1b05\u0001\u0000\u0000\u0000\u1b05\u1b09\u0001\u0000\u0000\u0000\u1b06"+
		"\u1b07\u0003B!\u0000\u1b07\u1b08\u0003\u0246\u0123\u0000\u1b08\u1b0a\u0001"+
		"\u0000\u0000\u0000\u1b09\u1b06\u0001\u0000\u0000\u0000\u1b09\u1b0a\u0001"+
		"\u0000\u0000\u0000\u1b0a\u1b0d\u0001\u0000\u0000\u0000\u1b0b\u1b0c\u0005"+
		"\u001c\u0000\u0000\u1b0c\u1b0e\u0003\u0248\u0124\u0000\u1b0d\u1b0b\u0001"+
		"\u0000\u0000\u0000\u1b0d\u1b0e\u0001\u0000\u0000\u0000\u1b0e\u1b13\u0001"+
		"\u0000\u0000\u0000\u1b0f\u1b10\u0005\u00ea\u0000\u0000\u1b10\u1b13\u0005"+
		"\u00e6\u0000\u0000\u1b11\u1b13\u0005\u0453\u0000\u0000\u1b12\u1a93\u0001"+
		"\u0000\u0000\u0000\u1b12\u1aa7\u0001\u0000\u0000\u0000\u1b12\u1ab0\u0001"+
		"\u0000\u0000\u0000\u1b12\u1ab8\u0001\u0000\u0000\u0000\u1b12\u1ac0\u0001"+
		"\u0000\u0000\u0000\u1b12\u1aca\u0001\u0000\u0000\u0000\u1b12\u1ad4\u0001"+
		"\u0000\u0000\u0000\u1b12\u1ae1\u0001\u0000\u0000\u0000\u1b12\u1aeb\u0001"+
		"\u0000\u0000\u0000\u1b12\u1aec\u0001\u0000\u0000\u0000\u1b12\u1af0\u0001"+
		"\u0000\u0000\u0000\u1b12\u1afa\u0001\u0000\u0000\u0000\u1b12\u1aff\u0001"+
		"\u0000\u0000\u0000\u1b12\u1b0f\u0001\u0000\u0000\u0000\u1b12\u1b11\u0001"+
		"\u0000\u0000\u0000\u1b13\u026d\u0001\u0000\u0000\u0000\u1b14\u1b15\u0005"+
		"\u0488\u0000\u0000\u1b15\u1b1a\u0003\u0270\u0138\u0000\u1b16\u1b17\u0005"+
		"\u048a\u0000\u0000\u1b17\u1b19\u0003\u0270\u0138\u0000\u1b18\u1b16\u0001"+
		"\u0000\u0000\u0000\u1b19\u1b1c\u0001\u0000\u0000\u0000\u1b1a\u1b18\u0001"+
		"\u0000\u0000\u0000\u1b1a\u1b1b\u0001\u0000\u0000\u0000\u1b1b\u1b1d\u0001"+
		"\u0000\u0000\u0000\u1b1c\u1b1a\u0001\u0000\u0000\u0000\u1b1d\u1b1e\u0005"+
		"\u0489\u0000\u0000\u1b1e\u026f\u0001\u0000\u0000\u0000\u1b1f\u1b20\u0005"+
		"\u0497\u0000\u0000\u1b20\u0271\u0001\u0000\u0000\u0000\u1b21\u1b23\u0007"+
		"w\u0000\u0000\u1b22\u1b24\u0003\u0274\u013a\u0000\u1b23\u1b22\u0001\u0000"+
		"\u0000\u0000\u1b23\u1b24\u0001\u0000\u0000\u0000\u1b24\u1b38\u0001\u0000"+
		"\u0000\u0000\u1b25\u1b27\u0005\u00e1\u0000\u0000\u1b26\u1b28\u0003\u0274"+
		"\u013a\u0000\u1b27\u1b26\u0001\u0000\u0000\u0000\u1b27\u1b28\u0001\u0000"+
		"\u0000\u0000\u1b28\u1b2c\u0001\u0000\u0000\u0000\u1b29\u1b2a\u0003B!\u0000"+
		"\u1b2a\u1b2b\u0003\u0246\u0123\u0000\u1b2b\u1b2d\u0001\u0000\u0000\u0000"+
		"\u1b2c\u1b29\u0001\u0000\u0000\u0000\u1b2c\u1b2d\u0001\u0000\u0000\u0000"+
		"\u1b2d\u1b38\u0001\u0000\u0000\u0000\u1b2e\u1b38\u0007x\u0000\u0000\u1b2f"+
		"\u1b31\u0007y\u0000\u0000\u1b30\u1b32\u0003\u0278\u013c\u0000\u1b31\u1b30"+
		"\u0001\u0000\u0000\u0000\u1b31\u1b32\u0001\u0000\u0000\u0000\u1b32\u1b38"+
		"\u0001\u0000\u0000\u0000\u1b33\u1b35\u0007z\u0000\u0000\u1b34\u1b36\u0007"+
		"{\u0000\u0000\u1b35\u1b34\u0001\u0000\u0000\u0000\u1b35\u1b36\u0001\u0000"+
		"\u0000\u0000\u1b36\u1b38\u0001\u0000\u0000\u0000\u1b37\u1b21\u0001\u0000"+
		"\u0000\u0000\u1b37\u1b25\u0001\u0000\u0000\u0000\u1b37\u1b2e\u0001\u0000"+
		"\u0000\u0000\u1b37\u1b2f\u0001\u0000\u0000\u0000\u1b37\u1b33\u0001\u0000"+
		"\u0000\u0000\u1b38\u1b3a\u0001\u0000\u0000\u0000\u1b39\u1b3b\u0005\u000b"+
		"\u0000\u0000\u1b3a\u1b39\u0001\u0000\u0000\u0000\u1b3a\u1b3b\u0001\u0000"+
		"\u0000\u0000\u1b3b\u0273\u0001\u0000\u0000\u0000\u1b3c\u1b3d\u0005\u0488"+
		"\u0000\u0000\u1b3d\u1b3e\u0003\u025e\u012f\u0000\u1b3e\u1b3f\u0005\u0489"+
		"\u0000\u0000\u1b3f\u0275\u0001\u0000\u0000\u0000\u1b40\u1b41\u0005\u0488"+
		"\u0000\u0000\u1b41\u1b42\u0003\u025e\u012f\u0000\u1b42\u1b43\u0005\u048a"+
		"\u0000\u0000\u1b43\u1b44\u0003\u025e\u012f\u0000\u1b44\u1b45\u0005\u0489"+
		"\u0000\u0000\u1b45\u0277\u0001\u0000\u0000\u0000\u1b46\u1b47\u0005\u0488"+
		"\u0000\u0000\u1b47\u1b4a\u0003\u025e\u012f\u0000\u1b48\u1b49\u0005\u048a"+
		"\u0000\u0000\u1b49\u1b4b\u0003\u025e\u012f\u0000\u1b4a\u1b48\u0001\u0000"+
		"\u0000\u0000\u1b4a\u1b4b\u0001\u0000\u0000\u0000\u1b4b\u1b4c\u0001\u0000"+
		"\u0000\u0000\u1b4c\u1b4d\u0005\u0489\u0000\u0000\u1b4d\u0279\u0001\u0000"+
		"\u0000\u0000\u1b4e\u1b53\u0003\u0258\u012c\u0000\u1b4f\u1b50\u0005\u048a"+
		"\u0000\u0000\u1b50\u1b52\u0003\u0258\u012c\u0000\u1b51\u1b4f\u0001\u0000"+
		"\u0000\u0000\u1b52\u1b55\u0001\u0000\u0000\u0000\u1b53\u1b51\u0001\u0000"+
		"\u0000\u0000\u1b53\u1b54\u0001\u0000\u0000\u0000\u1b54\u027b\u0001\u0000"+
		"\u0000\u0000\u1b55\u1b53\u0001\u0000\u0000\u0000\u1b56\u1b5b\u0003\u023a"+
		"\u011d\u0000\u1b57\u1b58\u0005\u048a\u0000\u0000\u1b58\u1b5a\u0003\u023a"+
		"\u011d\u0000\u1b59\u1b57\u0001\u0000\u0000\u0000\u1b5a\u1b5d\u0001\u0000"+
		"\u0000\u0000\u1b5b\u1b59\u0001\u0000\u0000\u0000\u1b5b\u1b5c\u0001\u0000"+
		"\u0000\u0000\u1b5c\u027d\u0001\u0000\u0000\u0000\u1b5d\u1b5b\u0001\u0000"+
		"\u0000\u0000\u1b5e\u1b63\u0003\u0236\u011b\u0000\u1b5f\u1b60\u0005\u048a"+
		"\u0000\u0000\u1b60\u1b62\u0003\u0236\u011b\u0000\u1b61\u1b5f\u0001\u0000"+
		"\u0000\u0000\u1b62\u1b65\u0001\u0000\u0000\u0000\u1b63\u1b61\u0001\u0000"+
		"\u0000\u0000\u1b63\u1b64\u0001\u0000\u0000\u0000\u1b64\u027f\u0001\u0000"+
		"\u0000\u0000\u1b65\u1b63\u0001\u0000\u0000\u0000\u1b66\u1b67\u0005\u0488"+
		"\u0000\u0000\u1b67\u1b6c\u0003\u023c\u011e\u0000\u1b68\u1b69\u0005\u048a"+
		"\u0000\u0000\u1b69\u1b6b\u0003\u023c\u011e\u0000\u1b6a\u1b68\u0001\u0000"+
		"\u0000\u0000\u1b6b\u1b6e\u0001\u0000\u0000\u0000\u1b6c\u1b6a\u0001\u0000"+
		"\u0000\u0000\u1b6c\u1b6d\u0001\u0000\u0000\u0000\u1b6d\u1b6f\u0001\u0000"+
		"\u0000\u0000\u1b6e\u1b6c\u0001\u0000\u0000\u0000\u1b6f\u1b70\u0005\u0489"+
		"\u0000\u0000\u1b70\u0281\u0001\u0000\u0000\u0000\u1b71\u1b76\u0003\u02c4"+
		"\u0162\u0000\u1b72\u1b73\u0005\u048a\u0000\u0000\u1b73\u1b75\u0003\u02c4"+
		"\u0162\u0000\u1b74\u1b72\u0001\u0000\u0000\u0000\u1b75\u1b78\u0001\u0000"+
		"\u0000\u0000\u1b76\u1b74\u0001\u0000\u0000\u0000\u1b76\u1b77\u0001\u0000"+
		"\u0000\u0000\u1b77\u0283\u0001\u0000\u0000\u0000\u1b78\u1b76\u0001\u0000"+
		"\u0000\u0000\u1b79\u1b7e\u0003\u0290\u0148\u0000\u1b7a\u1b7b\u0005\u048a"+
		"\u0000\u0000\u1b7b\u1b7d\u0003\u0290\u0148\u0000\u1b7c\u1b7a\u0001\u0000"+
		"\u0000\u0000\u1b7d\u1b80\u0001\u0000\u0000\u0000\u1b7e\u1b7c\u0001\u0000"+
		"\u0000\u0000\u1b7e\u1b7f\u0001\u0000\u0000\u0000\u1b7f\u0285\u0001\u0000"+
		"\u0000\u0000\u1b80\u1b7e\u0001\u0000\u0000\u0000\u1b81\u1b86\u0003\u026a"+
		"\u0135\u0000\u1b82\u1b83\u0005\u048a\u0000\u0000\u1b83\u1b85\u0003\u026a"+
		"\u0135\u0000\u1b84\u1b82\u0001\u0000\u0000\u0000\u1b85\u1b88\u0001\u0000"+
		"\u0000\u0000\u1b86\u1b84\u0001\u0000\u0000\u0000\u1b86\u1b87\u0001\u0000"+
		"\u0000\u0000\u1b87\u0287\u0001\u0000\u0000\u0000\u1b88\u1b86\u0001\u0000"+
		"\u0000\u0000\u1b89\u1b8e\u0005\u0497\u0000\u0000\u1b8a\u1b8b\u0005\u048a"+
		"\u0000\u0000\u1b8b\u1b8d\u0005\u0497\u0000\u0000\u1b8c\u1b8a\u0001\u0000"+
		"\u0000\u0000\u1b8d\u1b90\u0001\u0000\u0000\u0000\u1b8e\u1b8c\u0001\u0000"+
		"\u0000\u0000\u1b8e\u1b8f\u0001\u0000\u0000\u0000\u1b8f\u0289\u0001\u0000"+
		"\u0000\u0000\u1b90\u1b8e\u0001\u0000\u0000\u0000\u1b91\u1b96\u0005\u04a2"+
		"\u0000\u0000\u1b92\u1b93\u0005\u048a\u0000\u0000\u1b93\u1b95\u0005\u04a2"+
		"\u0000\u0000\u1b94\u1b92\u0001\u0000\u0000\u0000\u1b95\u1b98\u0001\u0000"+
		"\u0000\u0000\u1b96\u1b94\u0001\u0000\u0000\u0000\u1b96\u1b97\u0001\u0000"+
		"\u0000\u0000\u1b97\u028b\u0001\u0000\u0000\u0000\u1b98\u1b96\u0001\u0000"+
		"\u0000\u0000\u1b99\u1bbd\u0005v\u0000\u0000\u1b9a\u1b9b\u0005\u0018\u0000"+
		"\u0000\u1b9b\u1b9c\u0005\u0488\u0000\u0000\u1b9c\u1b9d\u0003\u02c4\u0162"+
		"\u0000\u1b9d\u1b9e\u0005\f\u0000\u0000\u1b9e\u1b9f\u0003\u0272\u0139\u0000"+
		"\u1b9f\u1ba0\u0005\u0489\u0000\u0000\u1ba0\u1bbd\u0001\u0000\u0000\u0000"+
		"\u1ba1\u1ba3\u0003\u02ca\u0165\u0000\u1ba2\u1ba1\u0001\u0000\u0000\u0000"+
		"\u1ba2\u1ba3\u0001\u0000\u0000\u0000\u1ba3\u1ba4\u0001\u0000\u0000\u0000"+
		"\u1ba4\u1bbd\u0003\u026a\u0135\u0000\u1ba5\u1ba9\u0003\u028e\u0147\u0000"+
		"\u1ba6\u1ba7\u0005x\u0000\u0000\u1ba7\u1ba8\u0005\u00bb\u0000\u0000\u1ba8"+
		"\u1baa\u0003\u028e\u0147\u0000\u1ba9\u1ba6\u0001\u0000\u0000\u0000\u1ba9"+
		"\u1baa\u0001\u0000\u0000\u0000\u1baa\u1bbd\u0001\u0000\u0000\u0000\u1bab"+
		"\u1bac\u0005\u0488\u0000\u0000\u1bac\u1bad\u0003\u02c4\u0162\u0000\u1bad"+
		"\u1bae\u0005\u0489\u0000\u0000\u1bae\u1bbd\u0001\u0000\u0000\u0000\u1baf"+
		"\u1bb0\u0007|\u0000\u0000\u1bb0\u1bb1\u0005\u0488\u0000\u0000\u1bb1\u1bb2"+
		"\u0003\u0234\u011a\u0000\u1bb2\u1bb3\u0005\u0489\u0000\u0000\u1bb3\u1bbd"+
		"\u0001\u0000\u0000\u0000\u1bb4\u1bb5\u0005\u0488\u0000\u0000\u1bb5\u1bb6"+
		"\u0007}\u0000\u0000\u1bb6\u1bb7\u0005\u02a0\u0000\u0000\u1bb7\u1bb8\u0005"+
		"B\u0000\u0000\u1bb8\u1bb9\u0003\u0234\u011a\u0000\u1bb9\u1bba\u0005\u0489"+
		"\u0000\u0000\u1bba\u1bbd\u0001\u0000\u0000\u0000\u1bbb\u1bbd\u0003\u02c4"+
		"\u0162\u0000\u1bbc\u1b99\u0001\u0000\u0000\u0000\u1bbc\u1b9a\u0001\u0000"+
		"\u0000\u0000\u1bbc\u1ba2\u0001\u0000\u0000\u0000\u1bbc\u1ba5\u0001\u0000"+
		"\u0000\u0000\u1bbc\u1bab\u0001\u0000\u0000\u0000\u1bbc\u1baf\u0001\u0000"+
		"\u0000\u0000\u1bbc\u1bb4\u0001\u0000\u0000\u0000\u1bbc\u1bbb\u0001\u0000"+
		"\u0000\u0000\u1bbd\u028d\u0001\u0000\u0000\u0000\u1bbe\u1bc4\u0007~\u0000"+
		"\u0000\u1bbf\u1bc1\u0005\u0488\u0000\u0000\u1bc0\u1bc2\u0003\u025e\u012f"+
		"\u0000\u1bc1\u1bc0\u0001\u0000\u0000\u0000\u1bc1\u1bc2\u0001\u0000\u0000"+
		"\u0000\u1bc2\u1bc3\u0001\u0000\u0000\u0000\u1bc3\u1bc5\u0005\u0489\u0000"+
		"\u0000\u1bc4\u1bbf\u0001\u0000\u0000\u0000\u1bc4\u1bc5\u0001\u0000\u0000"+
		"\u0000\u1bc5\u1bcd\u0001\u0000\u0000\u0000\u1bc6\u1bc7\u0005\u0146\u0000"+
		"\u0000\u1bc7\u1bc9\u0005\u0488\u0000\u0000\u1bc8\u1bca\u0003\u025e\u012f"+
		"\u0000\u1bc9\u1bc8\u0001\u0000\u0000\u0000\u1bc9\u1bca\u0001\u0000\u0000"+
		"\u0000\u1bca\u1bcb\u0001\u0000\u0000\u0000\u1bcb\u1bcd\u0005\u0489\u0000"+
		"\u0000\u1bcc\u1bbe\u0001\u0000\u0000\u0000\u1bcc\u1bc6\u0001\u0000\u0000"+
		"\u0000\u1bcd\u028f\u0001\u0000\u0000\u0000\u1bce\u1bd1\u0003\u02c4\u0162"+
		"\u0000\u1bcf\u1bd1\u0005+\u0000\u0000\u1bd0\u1bce\u0001\u0000\u0000\u0000"+
		"\u1bd0\u1bcf\u0001\u0000\u0000\u0000\u1bd1\u0291\u0001\u0000\u0000\u0000"+
		"\u1bd2\u1bd3\u0005O\u0000\u0000\u1bd3\u1bd4\u0005=\u0000\u0000\u1bd4\u0293"+
		"\u0001\u0000\u0000\u0000\u1bd5\u1bd6\u0005O\u0000\u0000\u1bd6\u1bd7\u0005"+
		"t\u0000\u0000\u1bd7\u1bd8\u0005=\u0000\u0000\u1bd8\u0295\u0001\u0000\u0000"+
		"\u0000\u1bd9\u1bda\u0005}\u0000\u0000\u1bda\u1bdb\u0005\u008f\u0000\u0000"+
		"\u1bdb\u0297\u0001\u0000\u0000\u0000\u1bdc\u1bdd\u0005\u02a5\u0000\u0000"+
		"\u1bdd\u1be0\u0003\u025e\u012f\u0000\u1bde\u1be0\u0005\u0212\u0000\u0000"+
		"\u1bdf\u1bdc\u0001\u0000\u0000\u0000\u1bdf\u1bde\u0001\u0000\u0000\u0000"+
		"\u1be0\u0299\u0001\u0000\u0000\u0000\u1be1\u1be5\u0003\u0298\u014c\u0000"+
		"\u1be2\u1be3\u0005\u009f\u0000\u0000\u1be3\u1be5\u0005j\u0000\u0000\u1be4"+
		"\u1be1\u0001\u0000\u0000\u0000\u1be4\u1be2\u0001\u0000\u0000\u0000\u1be5"+
		"\u029b\u0001\u0000\u0000\u0000\u1be6\u1bf9\u0003\u029e\u014f\u0000\u1be7"+
		"\u1bf9\u0003\u02a6\u0153\u0000\u1be8\u1bf9\u0003\u02a8\u0154\u0000\u1be9"+
		"\u1bea\u0003\u02bc\u015e\u0000\u1bea\u1bec\u0005\u0488\u0000\u0000\u1beb"+
		"\u1bed\u0003\u02c0\u0160\u0000\u1bec\u1beb\u0001\u0000\u0000\u0000\u1bec"+
		"\u1bed\u0001\u0000\u0000\u0000\u1bed\u1bee\u0001\u0000\u0000\u0000\u1bee"+
		"\u1bef\u0005\u0489\u0000\u0000\u1bef\u1bf9\u0001\u0000\u0000\u0000\u1bf0"+
		"\u1bf1\u0003\u0234\u011a\u0000\u1bf1\u1bf3\u0005\u0488\u0000\u0000\u1bf2"+
		"\u1bf4\u0003\u02c0\u0160\u0000\u1bf3\u1bf2\u0001\u0000\u0000\u0000\u1bf3"+
		"\u1bf4\u0001\u0000\u0000\u0000\u1bf4\u1bf5\u0001\u0000\u0000\u0000\u1bf5"+
		"\u1bf6\u0005\u0489\u0000\u0000\u1bf6\u1bf9\u0001\u0000\u0000\u0000\u1bf7"+
		"\u1bf9\u0003\u02be\u015f\u0000\u1bf8\u1be6\u0001\u0000\u0000\u0000\u1bf8"+
		"\u1be7\u0001\u0000\u0000\u0000\u1bf8\u1be8\u0001\u0000\u0000\u0000\u1bf8"+
		"\u1be9\u0001\u0000\u0000\u0000\u1bf8\u1bf0\u0001\u0000\u0000\u0000\u1bf8"+
		"\u1bf7\u0001\u0000\u0000\u0000\u1bf9\u029d\u0001\u0000\u0000\u0000\u1bfa"+
		"\u1bfd\u0007\u007f\u0000\u0000\u1bfb\u1bfc\u0005\u0488\u0000\u0000\u1bfc"+
		"\u1bfe\u0005\u0489\u0000\u0000\u1bfd\u1bfb\u0001\u0000\u0000\u0000\u1bfd"+
		"\u1bfe\u0001\u0000\u0000\u0000\u1bfe\u1cae\u0001\u0000\u0000\u0000\u1bff"+
		"\u1cae\u0003D\"\u0000\u1c00\u1c01\u0005!\u0000\u0000\u1c01\u1c02\u0005"+
		"\u0488\u0000\u0000\u1c02\u1c03\u0003\u02c4\u0162\u0000\u1c03\u1c04\u0005"+
		"\u048a\u0000\u0000\u1c04\u1c05\u0003\u0272\u0139\u0000\u1c05\u1c06\u0005"+
		"\u0489\u0000\u0000\u1c06\u1cae\u0001\u0000\u0000\u0000\u1c07\u1c08\u0005"+
		"!\u0000\u0000\u1c08\u1c09\u0005\u0488\u0000\u0000\u1c09\u1c0a\u0003\u02c4"+
		"\u0162\u0000\u1c0a\u1c0b\u0005\u00be\u0000\u0000\u1c0b\u1c0c\u0003\u0246"+
		"\u0123\u0000\u1c0c\u1c0d\u0005\u0489\u0000\u0000\u1c0d\u1cae\u0001\u0000"+
		"\u0000\u0000\u1c0e\u1c0f\u0005\u0018\u0000\u0000\u1c0f\u1c10\u0005\u0488"+
		"\u0000\u0000\u1c10\u1c11\u0003\u02c4\u0162\u0000\u1c11\u1c12\u0005\f\u0000"+
		"\u0000\u1c12\u1c13\u0003\u0272\u0139\u0000\u1c13\u1c14\u0005\u0489\u0000"+
		"\u0000\u1c14\u1cae\u0001\u0000\u0000\u0000\u1c15\u1c16\u0005\u00bf\u0000"+
		"\u0000\u1c16\u1c17\u0005\u0488\u0000\u0000\u1c17\u1c18\u0003\u023a\u011d"+
		"\u0000\u1c18\u1c19\u0005\u0489\u0000\u0000\u1c19\u1cae\u0001\u0000\u0000"+
		"\u0000\u1c1a\u1c1b\u0005\u0017\u0000\u0000\u1c1b\u1c1d\u0003\u02c4\u0162"+
		"\u0000\u1c1c\u1c1e\u0003\u02a0\u0150\u0000\u1c1d\u1c1c\u0001\u0000\u0000"+
		"\u0000\u1c1e\u1c1f\u0001\u0000\u0000\u0000\u1c1f\u1c1d\u0001\u0000\u0000"+
		"\u0000\u1c1f\u1c20\u0001\u0000\u0000\u0000\u1c20\u1c23\u0001\u0000\u0000"+
		"\u0000\u1c21\u1c22\u00056\u0000\u0000\u1c22\u1c24\u0003\u02c2\u0161\u0000"+
		"\u1c23\u1c21\u0001\u0000\u0000\u0000\u1c23\u1c24\u0001\u0000\u0000\u0000"+
		"\u1c24\u1c25\u0001\u0000\u0000\u0000\u1c25\u1c26\u0005\u019a\u0000\u0000"+
		"\u1c26\u1cae\u0001\u0000\u0000\u0000\u1c27\u1c29\u0005\u0017\u0000\u0000"+
		"\u1c28\u1c2a\u0003\u02a0\u0150\u0000\u1c29\u1c28\u0001\u0000\u0000\u0000"+
		"\u1c2a\u1c2b\u0001\u0000\u0000\u0000\u1c2b\u1c29\u0001\u0000\u0000\u0000"+
		"\u1c2b\u1c2c\u0001\u0000\u0000\u0000\u1c2c\u1c2f\u0001\u0000\u0000\u0000"+
		"\u1c2d\u1c2e\u00056\u0000\u0000\u1c2e\u1c30\u0003\u02c2\u0161\u0000\u1c2f"+
		"\u1c2d\u0001\u0000\u0000\u0000\u1c2f\u1c30\u0001\u0000\u0000\u0000\u1c30"+
		"\u1c31\u0001\u0000\u0000\u0000\u1c31\u1c32\u0005\u019a\u0000\u0000\u1c32"+
		"\u1cae\u0001\u0000\u0000\u0000\u1c33\u1c34\u0005\u00e1\u0000\u0000\u1c34"+
		"\u1c35\u0005\u0488\u0000\u0000\u1c35\u1c38\u0003\u02c0\u0160\u0000\u1c36"+
		"\u1c37\u0005\u00be\u0000\u0000\u1c37\u1c39\u0003\u0246\u0123\u0000\u1c38"+
		"\u1c36\u0001\u0000\u0000\u0000\u1c38\u1c39\u0001\u0000\u0000\u0000\u1c39"+
		"\u1c3a\u0001\u0000\u0000\u0000\u1c3a\u1c3b\u0005\u0489\u0000\u0000\u1c3b"+
		"\u1cae\u0001\u0000\u0000\u0000\u1c3c\u1c3d\u0005\u0147\u0000\u0000\u1c3d"+
		"\u1c40\u0005\u0488\u0000\u0000\u1c3e\u1c41\u0003\u0262\u0131\u0000\u1c3f"+
		"\u1c41\u0003\u02c4\u0162\u0000\u1c40\u1c3e\u0001\u0000\u0000\u0000\u1c40"+
		"\u1c3f\u0001\u0000\u0000\u0000\u1c41\u1c42\u0001\u0000\u0000\u0000\u1c42"+
		"\u1c45\u0005R\u0000\u0000\u1c43\u1c46\u0003\u0262\u0131\u0000\u1c44\u1c46"+
		"\u0003\u02c4\u0162\u0000\u1c45\u1c43\u0001\u0000\u0000\u0000\u1c45\u1c44"+
		"\u0001\u0000\u0000\u0000\u1c46\u1c47\u0001\u0000\u0000\u0000\u1c47\u1c48"+
		"\u0005\u0489\u0000\u0000\u1c48\u1cae\u0001\u0000\u0000\u0000\u1c49\u1c4a"+
		"\u0007\u0080\u0000\u0000\u1c4a\u1c4d\u0005\u0488\u0000\u0000\u1c4b\u1c4e"+
		"\u0003\u0262\u0131\u0000\u1c4c\u1c4e\u0003\u02c4\u0162\u0000\u1c4d\u1c4b"+
		"\u0001\u0000\u0000\u0000\u1c4d\u1c4c\u0001\u0000\u0000\u0000\u1c4e\u1c4f"+
		"\u0001\u0000\u0000\u0000\u1c4f\u1c52\u0005E\u0000\u0000\u1c50\u1c53\u0003"+
		"\u025e\u012f\u0000\u1c51\u1c53\u0003\u02c4\u0162\u0000\u1c52\u1c50\u0001"+
		"\u0000\u0000\u0000\u1c52\u1c51\u0001\u0000\u0000\u0000\u1c53\u1c59\u0001"+
		"\u0000\u0000\u0000\u1c54\u1c57\u0005B\u0000\u0000\u1c55\u1c58\u0003\u025e"+
		"\u012f\u0000\u1c56\u1c58\u0003\u02c4\u0162\u0000\u1c57\u1c55\u0001\u0000"+
		"\u0000\u0000\u1c57\u1c56\u0001\u0000\u0000\u0000\u1c58\u1c5a\u0001\u0000"+
		"\u0000\u0000\u1c59\u1c54\u0001\u0000\u0000\u0000\u1c59\u1c5a\u0001\u0000"+
		"\u0000\u0000\u1c5a\u1c5b\u0001\u0000\u0000\u0000\u1c5b\u1c5c\u0005\u0489"+
		"\u0000\u0000\u1c5c\u1cae\u0001\u0000\u0000\u0000\u1c5d\u1c5e\u0005\u014b"+
		"\u0000\u0000\u1c5e\u1c5f\u0005\u0488\u0000\u0000\u1c5f\u1c62\u0007\u0081"+
		"\u0000\u0000\u1c60\u1c63\u0003\u0262\u0131\u0000\u1c61\u1c63\u0003\u02c4"+
		"\u0162\u0000\u1c62\u1c60\u0001\u0000\u0000\u0000\u1c62\u1c61\u0001\u0000"+
		"\u0000\u0000\u1c62\u1c63\u0001\u0000\u0000\u0000\u1c63\u1c64\u0001\u0000"+
		"\u0000\u0000\u1c64\u1c67\u0005E\u0000\u0000\u1c65\u1c68\u0003\u0262\u0131"+
		"\u0000\u1c66\u1c68\u0003\u02c4\u0162\u0000\u1c67\u1c65\u0001\u0000\u0000"+
		"\u0000\u1c67\u1c66\u0001\u0000\u0000\u0000\u1c68\u1c69\u0001\u0000\u0000"+
		"\u0000\u1c69\u1c6a\u0005\u0489\u0000\u0000\u1c6a\u1cae\u0001\u0000\u0000"+
		"\u0000\u1c6b\u1c6c\u0005\u014b\u0000\u0000\u1c6c\u1c6f\u0005\u0488\u0000"+
		"\u0000\u1c6d\u1c70\u0003\u0262\u0131\u0000\u1c6e\u1c70\u0003\u02c4\u0162"+
		"\u0000\u1c6f\u1c6d\u0001\u0000\u0000\u0000\u1c6f\u1c6e\u0001\u0000\u0000"+
		"\u0000\u1c70\u1c71\u0001\u0000\u0000\u0000\u1c71\u1c74\u0005E\u0000\u0000"+
		"\u1c72\u1c75\u0003\u0262\u0131\u0000\u1c73\u1c75\u0003\u02c4\u0162\u0000"+
		"\u1c74\u1c72\u0001\u0000\u0000\u0000\u1c74\u1c73\u0001\u0000\u0000\u0000"+
		"\u1c75\u1c76\u0001\u0000\u0000\u0000\u1c76\u1c77\u0005\u0489\u0000\u0000"+
		"\u1c77\u1cae\u0001\u0000\u0000\u0000\u1c78\u1c79\u0005\u045b\u0000\u0000"+
		"\u1c79\u1c7c\u0005\u0488\u0000\u0000\u1c7a\u1c7d\u0003\u0262\u0131\u0000"+
		"\u1c7b\u1c7d\u0003\u02c4\u0162\u0000\u1c7c\u1c7a\u0001\u0000\u0000\u0000"+
		"\u1c7c\u1c7b\u0001\u0000\u0000\u0000\u1c7d\u1c84\u0001\u0000\u0000\u0000"+
		"\u1c7e\u1c7f\u0005\f\u0000\u0000\u1c7f\u1c80\u0007\u0082\u0000\u0000\u1c80"+
		"\u1c81\u0005\u0488\u0000\u0000\u1c81\u1c82\u0003\u025e\u012f\u0000\u1c82"+
		"\u1c83\u0005\u0489\u0000\u0000\u1c83\u1c85\u0001\u0000\u0000\u0000\u1c84"+
		"\u1c7e\u0001\u0000\u0000\u0000\u1c84\u1c85\u0001\u0000\u0000\u0000\u1c85"+
		"\u1c87\u0001\u0000\u0000\u0000\u1c86\u1c88\u0003\u02a2\u0151\u0000\u1c87"+
		"\u1c86\u0001\u0000\u0000\u0000\u1c87\u1c88\u0001\u0000\u0000\u0000\u1c88"+
		"\u1c89\u0001\u0000\u0000\u0000\u1c89\u1c8a\u0005\u0489\u0000\u0000\u1c8a"+
		"\u1cae\u0001\u0000\u0000\u0000\u1c8b\u1c8c\u0005\u0144\u0000\u0000\u1c8c"+
		"\u1c8d\u0005\u0488\u0000\u0000\u1c8d\u1c8e\u0003N\'\u0000\u1c8e\u1c91"+
		"\u0005E\u0000\u0000\u1c8f\u1c92\u0003\u0262\u0131\u0000\u1c90\u1c92\u0003"+
		"\u02c4\u0162\u0000\u1c91\u1c8f\u0001\u0000\u0000\u0000\u1c91\u1c90\u0001"+
		"\u0000\u0000\u0000\u1c92\u1c93\u0001\u0000\u0000\u0000\u1c93\u1c94\u0005"+
		"\u0489\u0000\u0000\u1c94\u1cae\u0001\u0000\u0000\u0000\u1c95\u1c96\u0005"+
		"\u038c\u0000\u0000\u1c96\u1c97\u0005\u0488\u0000\u0000\u1c97\u1c98\u0007"+
		"\u0083\u0000\u0000\u1c98\u1c99\u0005\u048a\u0000\u0000\u1c99\u1c9a\u0003"+
		"\u0262\u0131\u0000\u1c9a\u1c9b\u0005\u0489\u0000\u0000\u1c9b\u1cae\u0001"+
		"\u0000\u0000\u0000\u1c9c\u1c9d\u0005\u011d\u0000\u0000\u1c9d\u1c9e\u0005"+
		"\u0488\u0000\u0000\u1c9e\u1c9f\u0003\u02c4\u0162\u0000\u1c9f\u1ca0\u0005"+
		"\u048a\u0000\u0000\u1ca0\u1ca3\u0003\u02c4\u0162\u0000\u1ca1\u1ca2\u0005"+
		"\u0254\u0000\u0000\u1ca2\u1ca4\u0003\u0272\u0139\u0000\u1ca3\u1ca1\u0001"+
		"\u0000\u0000\u0000\u1ca3\u1ca4\u0001\u0000\u0000\u0000\u1ca4\u1ca6\u0001"+
		"\u0000\u0000\u0000\u1ca5\u1ca7\u0003\u011e\u008f\u0000\u1ca6\u1ca5\u0001"+
		"\u0000\u0000\u0000\u1ca6\u1ca7\u0001\u0000\u0000\u0000\u1ca7\u1ca9\u0001"+
		"\u0000\u0000\u0000\u1ca8\u1caa\u0003\u0120\u0090\u0000\u1ca9\u1ca8\u0001"+
		"\u0000\u0000\u0000\u1ca9\u1caa\u0001\u0000\u0000\u0000\u1caa\u1cab\u0001"+
		"\u0000\u0000\u0000\u1cab\u1cac\u0005\u0489\u0000\u0000\u1cac\u1cae\u0001"+
		"\u0000\u0000\u0000\u1cad\u1bfa\u0001\u0000\u0000\u0000\u1cad\u1bff\u0001"+
		"\u0000\u0000\u0000\u1cad\u1c00\u0001\u0000\u0000\u0000\u1cad\u1c07\u0001"+
		"\u0000\u0000\u0000\u1cad\u1c0e\u0001\u0000\u0000\u0000\u1cad\u1c15\u0001"+
		"\u0000\u0000\u0000\u1cad\u1c1a\u0001\u0000\u0000\u0000\u1cad\u1c27\u0001"+
		"\u0000\u0000\u0000\u1cad\u1c33\u0001\u0000\u0000\u0000\u1cad\u1c3c\u0001"+
		"\u0000\u0000\u0000\u1cad\u1c49\u0001\u0000\u0000\u0000\u1cad\u1c5d\u0001"+
		"\u0000\u0000\u0000\u1cad\u1c6b\u0001\u0000\u0000\u0000\u1cad\u1c78\u0001"+
		"\u0000\u0000\u0000\u1cad\u1c8b\u0001\u0000\u0000\u0000\u1cad\u1c95\u0001"+
		"\u0000\u0000\u0000\u1cad\u1c9c\u0001\u0000\u0000\u0000\u1cae\u029f\u0001"+
		"\u0000\u0000\u0000\u1caf\u1cb0\u0005\u00c0\u0000\u0000\u1cb0\u1cb1\u0003"+
		"\u02c2\u0161\u0000\u1cb1\u1cb2\u0005\u00b1\u0000\u0000\u1cb2\u1cb3\u0003"+
		"\u02c2\u0161\u0000\u1cb3\u02a1\u0001\u0000\u0000\u0000\u1cb4\u1cb5\u0005"+
		"\u01db\u0000\u0000\u1cb5\u1cba\u0003\u02a4\u0152\u0000\u1cb6\u1cb7\u0005"+
		"\u048a\u0000\u0000\u1cb7\u1cb9\u0003\u02a4\u0152\u0000\u1cb8\u1cb6\u0001"+
		"\u0000\u0000\u0000\u1cb9\u1cbc\u0001\u0000\u0000\u0000\u1cba\u1cb8\u0001"+
		"\u0000\u0000\u0000\u1cba\u1cbb\u0001\u0000\u0000\u0000\u1cbb\u1cc3\u0001"+
		"\u0000\u0000\u0000\u1cbc\u1cba\u0001\u0000\u0000\u0000\u1cbd\u1cbe\u0005"+
		"\u01db\u0000\u0000\u1cbe\u1cbf\u0003\u025e\u012f\u0000\u1cbf\u1cc0\u0005"+
		"\u047c\u0000\u0000\u1cc0\u1cc1\u0003\u025e\u012f\u0000\u1cc1\u1cc3\u0001"+
		"\u0000\u0000\u0000\u1cc2\u1cb4\u0001\u0000\u0000\u0000\u1cc2\u1cbd\u0001"+
		"\u0000\u0000\u0000\u1cc3\u02a3\u0001\u0000\u0000\u0000\u1cc4\u1cc6\u0003"+
		"\u025e\u012f\u0000\u1cc5\u1cc7\u0007\u0084\u0000\u0000\u1cc6\u1cc5\u0001"+
		"\u0000\u0000\u0000\u1cc6\u1cc7\u0001\u0000\u0000\u0000\u1cc7\u02a5\u0001"+
		"\u0000\u0000\u0000\u1cc8\u1cc9\u0007\u0085\u0000\u0000\u1cc9\u1ccb\u0005"+
		"\u0488\u0000\u0000\u1cca\u1ccc\u00070\u0000\u0000\u1ccb\u1cca\u0001\u0000"+
		"\u0000\u0000\u1ccb\u1ccc\u0001\u0000\u0000\u0000\u1ccc\u1ccd\u0001\u0000"+
		"\u0000\u0000\u1ccd\u1cce\u0003\u02c2\u0161\u0000\u1cce\u1cd0\u0005\u0489"+
		"\u0000\u0000\u1ccf\u1cd1\u0003\u02aa\u0155\u0000\u1cd0\u1ccf\u0001\u0000"+
		"\u0000\u0000\u1cd0\u1cd1\u0001\u0000\u0000\u0000\u1cd1\u1d04\u0001\u0000"+
		"\u0000\u0000\u1cd2\u1cd3\u0005\u0125\u0000\u0000\u1cd3\u1cdb\u0005\u0488"+
		"\u0000\u0000\u1cd4\u1cdc\u0005\u0478\u0000\u0000\u1cd5\u1cd7\u0005\u0006"+
		"\u0000\u0000\u1cd6\u1cd5\u0001\u0000\u0000\u0000\u1cd6\u1cd7\u0001\u0000"+
		"\u0000\u0000\u1cd7\u1cd8\u0001\u0000\u0000\u0000\u1cd8\u1cdc\u0003\u02c2"+
		"\u0161\u0000\u1cd9\u1cda\u00052\u0000\u0000\u1cda\u1cdc\u0003\u02c0\u0160"+
		"\u0000\u1cdb\u1cd4\u0001\u0000\u0000\u0000\u1cdb\u1cd6\u0001\u0000\u0000"+
		"\u0000\u1cdb\u1cd9\u0001\u0000\u0000\u0000\u1cdc\u1cdd\u0001\u0000\u0000"+
		"\u0000\u1cdd\u1cdf\u0005\u0489\u0000\u0000\u1cde\u1ce0\u0003\u02aa\u0155"+
		"\u0000\u1cdf\u1cde\u0001\u0000\u0000\u0000\u1cdf\u1ce0\u0001\u0000\u0000"+
		"\u0000\u1ce0\u1d04\u0001\u0000\u0000\u0000\u1ce1\u1ce2\u0007\u0086\u0000"+
		"\u0000\u1ce2\u1ce4\u0005\u0488\u0000\u0000\u1ce3\u1ce5\u0005\u0006\u0000"+
		"\u0000\u1ce4\u1ce3\u0001\u0000\u0000\u0000\u1ce4\u1ce5\u0001\u0000\u0000"+
		"\u0000\u1ce5\u1ce6\u0001\u0000\u0000\u0000\u1ce6\u1ce7\u0003\u02c2\u0161"+
		"\u0000\u1ce7\u1ce9\u0005\u0489\u0000\u0000\u1ce8\u1cea\u0003\u02aa\u0155"+
		"\u0000\u1ce9\u1ce8\u0001\u0000\u0000\u0000\u1ce9\u1cea\u0001\u0000\u0000"+
		"\u0000\u1cea\u1d04\u0001\u0000\u0000\u0000\u1ceb\u1cec\u0005\u0129\u0000"+
		"\u0000\u1cec\u1cee\u0005\u0488\u0000\u0000\u1ced\u1cef\u00052\u0000\u0000"+
		"\u1cee\u1ced\u0001\u0000\u0000\u0000\u1cee\u1cef\u0001\u0000\u0000\u0000"+
		"\u1cef\u1cf0\u0001\u0000\u0000\u0000\u1cf0\u1cfb\u0003\u02c0\u0160\u0000"+
		"\u1cf1\u1cf2\u0005~\u0000\u0000\u1cf2\u1cf3\u0005\u0014\u0000\u0000\u1cf3"+
		"\u1cf8\u0003\u00fa}\u0000\u1cf4\u1cf5\u0005\u048a\u0000\u0000\u1cf5\u1cf7"+
		"\u0003\u00fa}\u0000\u1cf6\u1cf4\u0001\u0000\u0000\u0000\u1cf7\u1cfa\u0001"+
		"\u0000\u0000\u0000\u1cf8\u1cf6\u0001\u0000\u0000\u0000\u1cf8\u1cf9\u0001"+
		"\u0000\u0000\u0000\u1cf9\u1cfc\u0001\u0000\u0000\u0000\u1cfa\u1cf8\u0001"+
		"\u0000\u0000\u0000\u1cfb\u1cf1\u0001\u0000\u0000\u0000\u1cfb\u1cfc\u0001"+
		"\u0000\u0000\u0000\u1cfc\u1cff\u0001\u0000\u0000\u0000\u1cfd\u1cfe\u0005"+
		"\u009c\u0000\u0000\u1cfe\u1d00\u0005\u0497\u0000\u0000\u1cff\u1cfd\u0001"+
		"\u0000\u0000\u0000\u1cff\u1d00\u0001\u0000\u0000\u0000\u1d00\u1d01\u0001"+
		"\u0000\u0000\u0000\u1d01\u1d02\u0005\u0489\u0000\u0000\u1d02\u1d04\u0001"+
		"\u0000\u0000\u0000\u1d03\u1cc8\u0001\u0000\u0000\u0000\u1d03\u1cd2\u0001"+
		"\u0000\u0000\u0000\u1d03\u1ce1\u0001\u0000\u0000\u0000\u1d03\u1ceb\u0001"+
		"\u0000\u0000\u0000\u1d04\u02a7\u0001\u0000\u0000\u0000\u1d05\u1d06\u0007"+
		"\u0087\u0000\u0000\u1d06\u1d07\u0005\u0488\u0000\u0000\u1d07\u1d0a\u0003"+
		"\u02c4\u0162\u0000\u1d08\u1d09\u0005\u048a\u0000\u0000\u1d09\u1d0b\u0003"+
		"\u025e\u012f\u0000\u1d0a\u1d08\u0001\u0000\u0000\u0000\u1d0a\u1d0b\u0001"+
		"\u0000\u0000\u0000\u1d0b\u1d0e\u0001\u0000\u0000\u0000\u1d0c\u1d0d\u0005"+
		"\u048a\u0000\u0000\u1d0d\u1d0f\u0003\u025e\u012f\u0000\u1d0e\u1d0c\u0001"+
		"\u0000\u0000\u0000\u1d0e\u1d0f\u0001\u0000\u0000\u0000\u1d0f\u1d10\u0001"+
		"\u0000\u0000\u0000\u1d10\u1d11\u0005\u0489\u0000\u0000\u1d11\u1d12\u0003"+
		"\u02aa\u0155\u0000\u1d12\u1d2c\u0001\u0000\u0000\u0000\u1d13\u1d14\u0007"+
		"\u0088\u0000\u0000\u1d14\u1d15\u0005\u0488\u0000\u0000\u1d15\u1d16\u0003"+
		"\u02c4\u0162\u0000\u1d16\u1d17\u0005\u0489\u0000\u0000\u1d17\u1d18\u0003"+
		"\u02aa\u0155\u0000\u1d18\u1d2c\u0001\u0000\u0000\u0000\u1d19\u1d1a\u0007"+
		"\u0089\u0000\u0000\u1d1a\u1d1b\u0005\u0488\u0000\u0000\u1d1b\u1d1c\u0005"+
		"\u0489\u0000\u0000\u1d1c\u1d2c\u0003\u02aa\u0155\u0000\u1d1d\u1d1e\u0005"+
		"\u0130\u0000\u0000\u1d1e\u1d1f\u0005\u0488\u0000\u0000\u1d1f\u1d20\u0003"+
		"\u02c4\u0162\u0000\u1d20\u1d21\u0005\u048a\u0000\u0000\u1d21\u1d22\u0003"+
		"\u025e\u012f\u0000\u1d22\u1d23\u0005\u0489\u0000\u0000\u1d23\u1d24\u0003"+
		"\u02aa\u0155\u0000\u1d24\u1d2c\u0001\u0000\u0000\u0000\u1d25\u1d26\u0005"+
		"\u012f\u0000\u0000\u1d26\u1d27\u0005\u0488\u0000\u0000\u1d27\u1d28\u0003"+
		"\u025e\u012f\u0000\u1d28\u1d29\u0005\u0489\u0000\u0000\u1d29\u1d2a\u0003"+
		"\u02aa\u0155\u0000\u1d2a\u1d2c\u0001\u0000\u0000\u0000\u1d2b\u1d05\u0001"+
		"\u0000\u0000\u0000\u1d2b\u1d13\u0001\u0000\u0000\u0000\u1d2b\u1d19\u0001"+
		"\u0000\u0000\u0000\u1d2b\u1d1d\u0001\u0000\u0000\u0000\u1d2b\u1d25\u0001"+
		"\u0000\u0000\u0000\u1d2c\u02a9\u0001\u0000\u0000\u0000\u1d2d\u1d34\u0005"+
		"\u0082\u0000\u0000\u1d2e\u1d30\u0005\u0488\u0000\u0000\u1d2f\u1d31\u0003"+
		"\u02ac\u0156\u0000\u1d30\u1d2f\u0001\u0000\u0000\u0000\u1d30\u1d31\u0001"+
		"\u0000\u0000\u0000\u1d31\u1d32\u0001\u0000\u0000\u0000\u1d32\u1d35\u0005"+
		"\u0489\u0000\u0000\u1d33\u1d35\u0003\u02ae\u0157\u0000\u1d34\u1d2e\u0001"+
		"\u0000\u0000\u0000\u1d34\u1d33\u0001\u0000\u0000\u0000\u1d35\u02ab\u0001"+
		"\u0000\u0000\u0000\u1d36\u1d38\u0003\u02ae\u0157\u0000\u1d37\u1d36\u0001"+
		"\u0000\u0000\u0000\u1d37\u1d38\u0001\u0000\u0000\u0000\u1d38\u1d3a\u0001"+
		"\u0000\u0000\u0000\u1d39\u1d3b\u0003\u02ba\u015d\u0000\u1d3a\u1d39\u0001"+
		"\u0000\u0000\u0000\u1d3a\u1d3b\u0001\u0000\u0000\u0000\u1d3b\u1d3d\u0001"+
		"\u0000\u0000\u0000\u1d3c\u1d3e\u0003\u00f8|\u0000\u1d3d\u1d3c\u0001\u0000"+
		"\u0000\u0000\u1d3d\u1d3e\u0001\u0000\u0000\u0000\u1d3e\u1d40\u0001\u0000"+
		"\u0000\u0000\u1d3f\u1d41\u0003\u02b0\u0158\u0000\u1d40\u1d3f\u0001\u0000"+
		"\u0000\u0000\u1d40\u1d41\u0001\u0000\u0000\u0000\u1d41\u02ad\u0001\u0000"+
		"\u0000\u0000\u1d42\u1d43\u0003\u0258\u012c\u0000\u1d43\u02af\u0001\u0000"+
		"\u0000\u0000\u1d44\u1d45\u0003\u02b2\u0159\u0000\u1d45\u1d46\u0003\u02b4"+
		"\u015a\u0000\u1d46\u02b1\u0001\u0000\u0000\u0000\u1d47\u1d48\u0007\u008a"+
		"\u0000\u0000\u1d48\u02b3\u0001\u0000\u0000\u0000\u1d49\u1d4c\u0003\u02b8"+
		"\u015c\u0000\u1d4a\u1d4c\u0003\u02b6\u015b\u0000\u1d4b\u1d49\u0001\u0000"+
		"\u0000\u0000\u1d4b\u1d4a\u0001\u0000\u0000\u0000\u1d4c\u02b5\u0001\u0000"+
		"\u0000\u0000\u1d4d\u1d4e\u0005\u0011\u0000\u0000\u1d4e\u1d4f\u0003\u02b8"+
		"\u015c\u0000\u1d4f\u1d50\u0005\n\u0000\u0000\u1d50\u1d51\u0003\u02b8\u015c"+
		"\u0000\u1d51\u02b7\u0001\u0000\u0000\u0000\u1d52\u1d53\u0005$\u0000\u0000"+
		"\u1d53\u1d5a\u0005\u025b\u0000\u0000\u1d54\u1d55\u0005\u0294\u0000\u0000"+
		"\u1d55\u1d5a\u0007\u008b\u0000\u0000\u1d56\u1d57\u0003\u02c4\u0162\u0000"+
		"\u1d57\u1d58\u0007\u008b\u0000\u0000\u1d58\u1d5a\u0001\u0000\u0000\u0000"+
		"\u1d59\u1d52\u0001\u0000\u0000\u0000\u1d59\u1d54\u0001\u0000\u0000\u0000"+
		"\u1d59\u1d56\u0001\u0000\u0000\u0000\u1d5a\u02b9\u0001\u0000\u0000\u0000"+
		"\u1d5b\u1d5c\u0005\u0083\u0000\u0000\u1d5c\u1d5d\u0005\u0014\u0000\u0000"+
		"\u1d5d\u1d62\u0003\u02c4\u0162\u0000\u1d5e\u1d5f\u0005\u048a\u0000\u0000"+
		"\u1d5f\u1d61\u0003\u02c4\u0162\u0000\u1d60\u1d5e\u0001\u0000\u0000\u0000"+
		"\u1d61\u1d64\u0001\u0000\u0000\u0000\u1d62\u1d60\u0001\u0000\u0000\u0000"+
		"\u1d62\u1d63\u0001\u0000\u0000\u0000\u1d63\u02bb\u0001\u0000\u0000\u0000"+
		"\u1d64\u1d62\u0001\u0000\u0000\u0000\u1d65\u1d7e\u0003\u02e4\u0172\u0000"+
		"\u1d66\u1d7e\u0005\u02f3\u0000\u0000\u1d67\u1d7e\u0005\u0140\u0000\u0000"+
		"\u1d68\u1d7e\u0005\u013c\u0000\u0000\u1d69\u1d7e\u0005\u013d\u0000\u0000"+
		"\u1d6a\u1d7e\u0005\u013e\u0000\u0000\u1d6b\u1d7e\u0005\u0141\u0000\u0000"+
		"\u1d6c\u1d7e\u0005\u0142\u0000\u0000\u1d6d\u1d7e\u0005\u0143\u0000\u0000"+
		"\u1d6e\u1d7e\u0005O\u0000\u0000\u1d6f\u1d7e\u0005W\u0000\u0000\u1d70\u1d7e"+
		"\u0005\u013f\u0000\u0000\u1d71\u1d7e\u0005\u0145\u0000\u0000\u1d72\u1d7e"+
		"\u0005\u01ff\u0000\u0000\u1d73\u1d7e\u0005\u0146\u0000\u0000\u1d74\u1d7e"+
		"\u0005\u008e\u0000\u0000\u1d75\u1d7e\u0005\u008f\u0000\u0000\u1d76\u1d7e"+
		"\u0005\u0148\u0000\u0000\u1d77\u1d7e\u0005\u0149\u0000\u0000\u1d78\u1d7e"+
		"\u0005\u014a\u0000\u0000\u1d79\u1d7e\u0005\u014b\u0000\u0000\u1d7a\u1d7e"+
		"\u0005\u014c\u0000\u0000\u1d7b\u1d7e\u0005\u014d\u0000\u0000\u1d7c\u1d7e"+
		"\u0005\u014e\u0000\u0000\u1d7d\u1d65\u0001\u0000\u0000\u0000\u1d7d\u1d66"+
		"\u0001\u0000\u0000\u0000\u1d7d\u1d67\u0001\u0000\u0000\u0000\u1d7d\u1d68"+
		"\u0001\u0000\u0000\u0000\u1d7d\u1d69\u0001\u0000\u0000\u0000\u1d7d\u1d6a"+
		"\u0001\u0000\u0000\u0000\u1d7d\u1d6b\u0001\u0000\u0000\u0000\u1d7d\u1d6c"+
		"\u0001\u0000\u0000\u0000\u1d7d\u1d6d\u0001\u0000\u0000\u0000\u1d7d\u1d6e"+
		"\u0001\u0000\u0000\u0000\u1d7d\u1d6f\u0001\u0000\u0000\u0000\u1d7d\u1d70"+
		"\u0001\u0000\u0000\u0000\u1d7d\u1d71\u0001\u0000\u0000\u0000\u1d7d\u1d72"+
		"\u0001\u0000\u0000\u0000\u1d7d\u1d73\u0001\u0000\u0000\u0000\u1d7d\u1d74"+
		"\u0001\u0000\u0000\u0000\u1d7d\u1d75\u0001\u0000\u0000\u0000\u1d7d\u1d76"+
		"\u0001\u0000\u0000\u0000\u1d7d\u1d77\u0001\u0000\u0000\u0000\u1d7d\u1d78"+
		"\u0001\u0000\u0000\u0000\u1d7d\u1d79\u0001\u0000\u0000\u0000\u1d7d\u1d7a"+
		"\u0001\u0000\u0000\u0000\u1d7d\u1d7b\u0001\u0000\u0000\u0000\u1d7d\u1d7c"+
		"\u0001\u0000\u0000\u0000\u1d7e\u02bd\u0001\u0000\u0000\u0000\u1d7f\u1d80"+
		"\u0007\u008c\u0000\u0000\u1d80\u1d81\u0005\u0488\u0000\u0000\u1d81\u1d82"+
		"\u0003\u02c2\u0161\u0000\u1d82\u1d83\u0005\u0489\u0000\u0000\u1d83\u02bf"+
		"\u0001\u0000\u0000\u0000\u1d84\u1d89\u0003\u026a\u0135\u0000\u1d85\u1d89"+
		"\u0003\u023a\u011d\u0000\u1d86\u1d89\u0003\u029c\u014e\u0000\u1d87\u1d89"+
		"\u0003\u02c4\u0162\u0000\u1d88\u1d84\u0001\u0000\u0000\u0000\u1d88\u1d85"+
		"\u0001\u0000\u0000\u0000\u1d88\u1d86\u0001\u0000\u0000\u0000\u1d88\u1d87"+
		"\u0001\u0000\u0000\u0000\u1d89\u1d93\u0001\u0000\u0000\u0000\u1d8a\u1d8f"+
		"\u0005\u048a\u0000\u0000\u1d8b\u1d90\u0003\u026a\u0135\u0000\u1d8c\u1d90"+
		"\u0003\u023a\u011d\u0000\u1d8d\u1d90\u0003\u029c\u014e\u0000\u1d8e\u1d90"+
		"\u0003\u02c4\u0162\u0000\u1d8f\u1d8b\u0001\u0000\u0000\u0000\u1d8f\u1d8c"+
		"\u0001\u0000\u0000\u0000\u1d8f\u1d8d\u0001\u0000\u0000\u0000\u1d8f\u1d8e"+
		"\u0001\u0000\u0000\u0000\u1d90\u1d92\u0001\u0000\u0000\u0000\u1d91\u1d8a"+
		"\u0001\u0000\u0000\u0000\u1d92\u1d95\u0001\u0000\u0000\u0000\u1d93\u1d91"+
		"\u0001\u0000\u0000\u0000\u1d93\u1d94\u0001\u0000\u0000\u0000\u1d94\u02c1"+
		"\u0001\u0000\u0000\u0000\u1d95\u1d93\u0001\u0000\u0000\u0000\u1d96\u1d9b"+
		"\u0003\u026a\u0135\u0000\u1d97\u1d9b\u0003\u023a\u011d\u0000\u1d98\u1d9b"+
		"\u0003\u029c\u014e\u0000\u1d99\u1d9b\u0003\u02c4\u0162\u0000\u1d9a\u1d96"+
		"\u0001\u0000\u0000\u0000\u1d9a\u1d97\u0001\u0000\u0000\u0000\u1d9a\u1d98"+
		"\u0001\u0000\u0000\u0000\u1d9a\u1d99\u0001\u0000\u0000\u0000\u1d9b\u02c3"+
		"\u0001\u0000\u0000\u0000\u1d9c\u1d9d\u0006\u0162\uffff\uffff\u0000\u1d9d"+
		"\u1d9e\u0007\u008d\u0000\u0000\u1d9e\u1da8\u0003\u02c4\u0162\u0004\u1d9f"+
		"\u1da0\u0003\u02c6\u0163\u0000\u1da0\u1da2\u0005Z\u0000\u0000\u1da1\u1da3"+
		"\u0005t\u0000\u0000\u1da2\u1da1\u0001\u0000\u0000\u0000\u1da2\u1da3\u0001"+
		"\u0000\u0000\u0000\u1da3\u1da4\u0001\u0000\u0000\u0000\u1da4\u1da5\u0007"+
		"\u008e\u0000\u0000\u1da5\u1da8\u0001\u0000\u0000\u0000\u1da6\u1da8\u0003"+
		"\u02c6\u0163\u0000\u1da7\u1d9c\u0001\u0000\u0000\u0000\u1da7\u1d9f\u0001"+
		"\u0000\u0000\u0000\u1da7\u1da6\u0001\u0000\u0000\u0000\u1da8\u1daf\u0001"+
		"\u0000\u0000\u0000\u1da9\u1daa\n\u0003\u0000\u0000\u1daa\u1dab\u0003\u02ce"+
		"\u0167\u0000\u1dab\u1dac\u0003\u02c4\u0162\u0004\u1dac\u1dae\u0001\u0000"+
		"\u0000\u0000\u1dad\u1da9\u0001\u0000\u0000\u0000\u1dae\u1db1\u0001\u0000"+
		"\u0000\u0000\u1daf\u1dad\u0001\u0000\u0000\u0000\u1daf\u1db0\u0001\u0000"+
		"\u0000\u0000\u1db0\u02c5\u0001\u0000\u0000\u0000\u1db1\u1daf\u0001\u0000"+
		"\u0000\u0000\u1db2\u1db3\u0006\u0163\uffff\uffff\u0000\u1db3\u1db4\u0003"+
		"\u02c8\u0164\u0000\u1db4\u1df5\u0001\u0000\u0000\u0000\u1db5\u1db6\n\b"+
		"\u0000\u0000\u1db6\u1db7\u0003\u02cc\u0166\u0000\u1db7\u1db8\u0003\u02c6"+
		"\u0163\t\u1db8\u1df4\u0001\u0000\u0000\u0000\u1db9\u1dbb\n\u0006\u0000"+
		"\u0000\u1dba\u1dbc\u0005t\u0000\u0000\u1dbb\u1dba\u0001\u0000\u0000\u0000"+
		"\u1dbb\u1dbc\u0001\u0000\u0000\u0000\u1dbc\u1dbd\u0001\u0000\u0000\u0000"+
		"\u1dbd\u1dbe\u0005\u0011\u0000\u0000\u1dbe\u1dbf\u0003\u02c6\u0163\u0000"+
		"\u1dbf\u1dc0\u0005\n\u0000\u0000\u1dc0\u1dc1\u0003\u02c6\u0163\u0007\u1dc1"+
		"\u1df4\u0001\u0000\u0000\u0000\u1dc2\u1dc3\n\u0005\u0000\u0000\u1dc3\u1dc4"+
		"\u0005\u026f\u0000\u0000\u1dc4\u1dc5\u0005d\u0000\u0000\u1dc5\u1df4\u0003"+
		"\u02c6\u0163\u0006\u1dc6\u1dc8\n\u0003\u0000\u0000\u1dc7\u1dc9\u0005t"+
		"\u0000\u0000\u1dc8\u1dc7\u0001\u0000\u0000\u0000\u1dc8\u1dc9\u0001\u0000"+
		"\u0000\u0000\u1dc9\u1dca\u0001\u0000\u0000\u0000\u1dca\u1dcb\u0007\u008f"+
		"\u0000\u0000\u1dcb\u1df4\u0003\u02c6\u0163\u0004\u1dcc\u1dce\n\n\u0000"+
		"\u0000\u1dcd\u1dcf\u0005t\u0000\u0000\u1dce\u1dcd\u0001\u0000\u0000\u0000"+
		"\u1dce\u1dcf\u0001\u0000\u0000\u0000\u1dcf\u1dd0\u0001\u0000\u0000\u0000"+
		"\u1dd0\u1dd1\u0005R\u0000\u0000\u1dd1\u1dd4\u0005\u0488\u0000\u0000\u1dd2"+
		"\u1dd5\u0003\u00d6k\u0000\u1dd3\u1dd5\u0003\u0282\u0141\u0000\u1dd4\u1dd2"+
		"\u0001\u0000\u0000\u0000\u1dd4\u1dd3\u0001\u0000\u0000\u0000\u1dd5\u1dd6"+
		"\u0001\u0000\u0000\u0000\u1dd6\u1dd7\u0005\u0489\u0000\u0000\u1dd7\u1df4"+
		"\u0001\u0000\u0000\u0000\u1dd8\u1dd9\n\t\u0000\u0000\u1dd9\u1dda\u0005"+
		"Z\u0000\u0000\u1dda\u1df4\u0003\u0268\u0134\u0000\u1ddb\u1ddc\n\u0007"+
		"\u0000\u0000\u1ddc\u1ddd\u0003\u02cc\u0166\u0000\u1ddd\u1dde\u0007\u0090"+
		"\u0000\u0000\u1dde\u1ddf\u0005\u0488\u0000\u0000\u1ddf\u1de0\u0003\u00d6"+
		"k\u0000\u1de0\u1de1\u0005\u0489\u0000\u0000\u1de1\u1df4\u0001\u0000\u0000"+
		"\u0000\u1de2\u1de4\n\u0004\u0000\u0000\u1de3\u1de5\u0005t\u0000\u0000"+
		"\u1de4\u1de3\u0001\u0000\u0000\u0000\u1de4\u1de5\u0001\u0000\u0000\u0000"+
		"\u1de5\u1de6\u0001\u0000\u0000\u0000\u1de6\u1de7\u0005d\u0000\u0000\u1de7"+
		"\u1dea\u0003\u02c6\u0163\u0000\u1de8\u1de9\u0005\u01a0\u0000\u0000\u1de9"+
		"\u1deb\u0005\u0497\u0000\u0000\u1dea\u1de8\u0001\u0000\u0000\u0000\u1dea"+
		"\u1deb\u0001\u0000\u0000\u0000\u1deb\u1df4\u0001\u0000\u0000\u0000\u1dec"+
		"\u1ded\n\u0002\u0000\u0000\u1ded\u1dee\u0005\u01fc\u0000\u0000\u1dee\u1def"+
		"\u0005\u0218\u0000\u0000\u1def\u1df0\u0005\u0488\u0000\u0000\u1df0\u1df1"+
		"\u0003\u02c6\u0163\u0000\u1df1\u1df2\u0005\u0489\u0000\u0000\u1df2\u1df4"+
		"\u0001\u0000\u0000\u0000\u1df3\u1db5\u0001\u0000\u0000\u0000\u1df3\u1db9"+
		"\u0001\u0000\u0000\u0000\u1df3\u1dc2\u0001\u0000\u0000\u0000\u1df3\u1dc6"+
		"\u0001\u0000\u0000\u0000\u1df3\u1dcc\u0001\u0000\u0000\u0000\u1df3\u1dd8"+
		"\u0001\u0000\u0000\u0000\u1df3\u1ddb\u0001\u0000\u0000\u0000\u1df3\u1de2"+
		"\u0001\u0000\u0000\u0000\u1df3\u1dec\u0001\u0000\u0000\u0000\u1df4\u1df7"+
		"\u0001\u0000\u0000\u0000\u1df5\u1df3\u0001\u0000\u0000\u0000\u1df5\u1df6"+
		"\u0001\u0000\u0000\u0000\u1df6\u02c7\u0001\u0000\u0000\u0000\u1df7\u1df5"+
		"\u0001\u0000\u0000\u0000\u1df8\u1df9\u0006\u0164\uffff\uffff\u0000\u1df9"+
		"\u1e29\u0003\u026a\u0135\u0000\u1dfa\u1e29\u0003\u023a\u011d\u0000\u1dfb"+
		"\u1e29\u0003\u029c\u014e\u0000\u1dfc\u1e29\u0003\u0244\u0122\u0000\u1dfd"+
		"\u1dfe\u0003\u02ca\u0165\u0000\u1dfe\u1dff\u0003\u02c8\u0164\f\u1dff\u1e29"+
		"\u0001\u0000\u0000\u0000\u1e00\u1e01\u0005\u00e5\u0000\u0000\u1e01\u1e29"+
		"\u0003\u02c8\u0164\u000b\u1e02\u1e03\u0005\u04a2\u0000\u0000\u1e03\u1e04"+
		"\u0005\u046f\u0000\u0000\u1e04\u1e29\u0003\u02c8\u0164\n\u1e05\u1e06\u0005"+
		"\u0488\u0000\u0000\u1e06\u1e0b\u0003\u02c4\u0162\u0000\u1e07\u1e08\u0005"+
		"\u048a\u0000\u0000\u1e08\u1e0a\u0003\u02c4\u0162\u0000\u1e09\u1e07\u0001"+
		"\u0000\u0000\u0000\u1e0a\u1e0d\u0001\u0000\u0000\u0000\u1e0b\u1e09\u0001"+
		"\u0000\u0000\u0000\u1e0b\u1e0c\u0001\u0000\u0000\u0000\u1e0c\u1e0e\u0001"+
		"\u0000\u0000\u0000\u1e0d\u1e0b\u0001\u0000\u0000\u0000\u1e0e\u1e0f\u0005"+
		"\u0489\u0000\u0000\u1e0f\u1e29\u0001\u0000\u0000\u0000\u1e10\u1e11\u0005"+
		"\u025b\u0000\u0000\u1e11\u1e12\u0005\u0488\u0000\u0000\u1e12\u1e15\u0003"+
		"\u02c4\u0162\u0000\u1e13\u1e14\u0005\u048a\u0000\u0000\u1e14\u1e16\u0003"+
		"\u02c4\u0162\u0000\u1e15\u1e13\u0001\u0000\u0000\u0000\u1e16\u1e17\u0001"+
		"\u0000\u0000\u0000\u1e17\u1e15\u0001\u0000\u0000\u0000\u1e17\u1e18\u0001"+
		"\u0000\u0000\u0000\u1e18\u1e19\u0001\u0000\u0000\u0000\u1e19\u1e1a\u0005"+
		"\u0489\u0000\u0000\u1e1a\u1e29\u0001\u0000\u0000\u0000\u1e1b\u1e1c\u0005"+
		"=\u0000\u0000\u1e1c\u1e1d\u0005\u0488\u0000\u0000\u1e1d\u1e1e\u0003\u00d6"+
		"k\u0000\u1e1e\u1e1f\u0005\u0489\u0000\u0000\u1e1f\u1e29\u0001\u0000\u0000"+
		"\u0000\u1e20\u1e21\u0005\u0488\u0000\u0000\u1e21\u1e22\u0003\u00d6k\u0000"+
		"\u1e22\u1e23\u0005\u0489\u0000\u0000\u1e23\u1e29\u0001\u0000\u0000\u0000"+
		"\u1e24\u1e25\u0005X\u0000\u0000\u1e25\u1e26\u0003\u02c4\u0162\u0000\u1e26"+
		"\u1e27\u0003N\'\u0000\u1e27\u1e29\u0001\u0000\u0000\u0000\u1e28\u1df8"+
		"\u0001\u0000\u0000\u0000\u1e28\u1dfa\u0001\u0000\u0000\u0000\u1e28\u1dfb"+
		"\u0001\u0000\u0000\u0000\u1e28\u1dfc\u0001\u0000\u0000\u0000\u1e28\u1dfd"+
		"\u0001\u0000\u0000\u0000\u1e28\u1e00\u0001\u0000\u0000\u0000\u1e28\u1e02"+
		"\u0001\u0000\u0000\u0000\u1e28\u1e05\u0001\u0000\u0000\u0000\u1e28\u1e10"+
		"\u0001\u0000\u0000\u0000\u1e28\u1e1b\u0001\u0000\u0000\u0000\u1e28\u1e20"+
		"\u0001\u0000\u0000\u0000\u1e28\u1e24\u0001\u0000\u0000\u0000\u1e29\u1e3f"+
		"\u0001\u0000\u0000\u0000\u1e2a\u1e2b\n\u0004\u0000\u0000\u1e2b\u1e2c\u0003"+
		"\u02d0\u0168\u0000\u1e2c\u1e2d\u0003\u02c8\u0164\u0005\u1e2d\u1e3e\u0001"+
		"\u0000\u0000\u0000\u1e2e\u1e2f\n\u0003\u0000\u0000\u1e2f\u1e30\u0003\u02d2"+
		"\u0169\u0000\u1e30\u1e31\u0003\u02c8\u0164\u0004\u1e31\u1e3e\u0001\u0000"+
		"\u0000\u0000\u1e32\u1e33\n\u0002\u0000\u0000\u1e33\u1e34\u0003\u02d4\u016a"+
		"\u0000\u1e34\u1e35\u0003\u02c8\u0164\u0003\u1e35\u1e3e\u0001\u0000\u0000"+
		"\u0000\u1e36\u1e37\n\u0001\u0000\u0000\u1e37\u1e38\u0003\u02d6\u016b\u0000"+
		"\u1e38\u1e39\u0003\u02c8\u0164\u0002\u1e39\u1e3e\u0001\u0000\u0000\u0000"+
		"\u1e3a\u1e3b\n\u000e\u0000\u0000\u1e3b\u1e3c\u0005\u001c\u0000\u0000\u1e3c"+
		"\u1e3e\u0003\u0248\u0124\u0000\u1e3d\u1e2a\u0001\u0000\u0000\u0000\u1e3d"+
		"\u1e2e\u0001\u0000\u0000\u0000\u1e3d\u1e32\u0001\u0000\u0000\u0000\u1e3d"+
		"\u1e36\u0001\u0000\u0000\u0000\u1e3d\u1e3a\u0001\u0000\u0000\u0000\u1e3e"+
		"\u1e41\u0001\u0000\u0000\u0000\u1e3f\u1e3d\u0001\u0000\u0000\u0000\u1e3f"+
		"\u1e40\u0001\u0000\u0000\u0000\u1e40\u02c9\u0001\u0000\u0000\u0000\u1e41"+
		"\u1e3f\u0001\u0000\u0000\u0000\u1e42\u1e43\u0007\u0091\u0000\u0000\u1e43"+
		"\u02cb\u0001\u0000\u0000\u0000\u1e44\u1e53\u0005\u047f\u0000\u0000\u1e45"+
		"\u1e53\u0005\u0480\u0000\u0000\u1e46\u1e53\u0005\u0481\u0000\u0000\u1e47"+
		"\u1e48\u0005\u0481\u0000\u0000\u1e48\u1e53\u0005\u047f\u0000\u0000\u1e49"+
		"\u1e4a\u0005\u0480\u0000\u0000\u1e4a\u1e53\u0005\u047f\u0000\u0000\u1e4b"+
		"\u1e4c\u0005\u0481\u0000\u0000\u1e4c\u1e53\u0005\u0480\u0000\u0000\u1e4d"+
		"\u1e4e\u0005\u0482\u0000\u0000\u1e4e\u1e53\u0005\u047f\u0000\u0000\u1e4f"+
		"\u1e50\u0005\u0481\u0000\u0000\u1e50\u1e51\u0005\u047f\u0000\u0000\u1e51"+
		"\u1e53\u0005\u0480\u0000\u0000\u1e52\u1e44\u0001\u0000\u0000\u0000\u1e52"+
		"\u1e45\u0001\u0000\u0000\u0000\u1e52\u1e46\u0001\u0000\u0000\u0000\u1e52"+
		"\u1e47\u0001\u0000\u0000\u0000\u1e52\u1e49\u0001\u0000\u0000\u0000\u1e52"+
		"\u1e4b\u0001\u0000\u0000\u0000\u1e52\u1e4d\u0001\u0000\u0000\u0000\u1e52"+
		"\u1e4f\u0001\u0000\u0000\u0000\u1e53\u02cd\u0001\u0000\u0000\u0000\u1e54"+
		"\u1e5c\u0005\n\u0000\u0000\u1e55\u1e56\u0005\u0485\u0000\u0000\u1e56\u1e5c"+
		"\u0005\u0485\u0000\u0000\u1e57\u1e5c\u0005\u00c5\u0000\u0000\u1e58\u1e5c"+
		"\u0005}\u0000\u0000\u1e59\u1e5a\u0005\u0484\u0000\u0000\u1e5a\u1e5c\u0005"+
		"\u0484\u0000\u0000\u1e5b\u1e54\u0001\u0000\u0000\u0000\u1e5b\u1e55\u0001"+
		"\u0000\u0000\u0000\u1e5b\u1e57\u0001\u0000\u0000\u0000\u1e5b\u1e58\u0001"+
		"\u0000\u0000\u0000\u1e5b\u1e59\u0001\u0000\u0000\u0000\u1e5c\u02cf\u0001"+
		"\u0000\u0000\u0000\u1e5d\u1e5e\u0005\u0481\u0000\u0000\u1e5e\u1e65\u0005"+
		"\u0481\u0000\u0000\u1e5f\u1e60\u0005\u0480\u0000\u0000\u1e60\u1e65\u0005"+
		"\u0480\u0000\u0000\u1e61\u1e65\u0005\u0485\u0000\u0000\u1e62\u1e65\u0005"+
		"\u0486\u0000\u0000\u1e63\u1e65\u0005\u0484\u0000\u0000\u1e64\u1e5d\u0001"+
		"\u0000\u0000\u0000\u1e64\u1e5f\u0001\u0000\u0000\u0000\u1e64\u1e61\u0001"+
		"\u0000\u0000\u0000\u1e64\u1e62\u0001\u0000\u0000\u0000\u1e64\u1e63\u0001"+
		"\u0000\u0000\u0000\u1e65\u02d1\u0001\u0000\u0000\u0000\u1e66\u1e67\u0007"+
		"\u0092\u0000\u0000\u1e67\u02d3\u0001\u0000\u0000\u0000\u1e68\u1e69\u0007"+
		"\u0093\u0000\u0000\u1e69\u02d5\u0001\u0000\u0000\u0000\u1e6a\u1e6b\u0005"+
		"\u047c\u0000\u0000\u1e6b\u1e70\u0005\u0480\u0000\u0000\u1e6c\u1e6d\u0005"+
		"\u047c\u0000\u0000\u1e6d\u1e6e\u0005\u0480\u0000\u0000\u1e6e\u1e70\u0005"+
		"\u0480\u0000\u0000\u1e6f\u1e6a\u0001\u0000\u0000\u0000\u1e6f\u1e6c\u0001"+
		"\u0000\u0000\u0000\u1e70\u02d7\u0001\u0000\u0000\u0000\u1e71\u1e72\u0007"+
		"\u0094\u0000\u0000\u1e72\u02d9\u0001\u0000\u0000\u0000\u1e73\u1e74\u0007"+
		"\u0095\u0000\u0000\u1e74\u02db\u0001\u0000\u0000\u0000\u1e75\u1e76\u0007"+
		"\u0096\u0000\u0000\u1e76\u02dd\u0001\u0000\u0000\u0000\u1e77\u1e78\u0007"+
		"\u0097\u0000\u0000\u1e78\u02df\u0001\u0000\u0000\u0000\u1e79\u1e7a\u0007"+
		"\u0098\u0000\u0000\u1e7a\u02e1\u0001\u0000\u0000\u0000\u1e7b\u1e7c\u0007"+
		"\u0099\u0000\u0000\u1e7c\u02e3\u0001\u0000\u0000\u0000\u1e7d\u1e7e\u0007"+
		"\u009a\u0000\u0000\u1e7e\u02e5\u0001\u0000\u0000\u0000\u0486\u02e7\u02eb"+
		"\u02f2\u02f5\u02f8\u02fa\u0300\u0303\u0306\u0309\u0312\u031f\u034f\u035e"+
		"\u0369\u037a\u037f\u038e\u03a9\u03b2\u03b7\u03bd\u03c2\u03c6\u03cf\u03d2"+
		"\u03d5\u03d9\u03e0\u03e3\u03e6\u03ea\u03ee\u03f4\u03f9\u03fe\u0403\u0406"+
		"\u0408\u0414\u0417\u041b\u041e\u0422\u0425\u0429\u042c\u042f\u0433\u0436"+
		"\u043a\u0440\u0443\u0449\u044f\u0456\u045d\u0460\u0463\u0467\u046c\u0472"+
		"\u047b\u0480\u0485\u048c\u049d\u04a4\u04a7\u04ab\u04b5\u04b9\u04bc\u04c0"+
		"\u04c4\u04c8\u04cd\u04d0\u04d3\u04d6\u04d9\u04df\u04e2\u04e6\u04ec\u04f1"+
		"\u04f4\u04f7\u04f9\u0504\u0508\u050b\u0519\u051c\u0520\u0523\u0527\u052a"+
		"\u052e\u0531\u0535\u0538\u053b\u053f\u0542\u0546\u054c\u054f\u0553\u055f"+
		"\u0565\u0570\u0575\u057d\u0585\u058a\u058d\u0592\u059a\u059f\u05a5\u05aa"+
		"\u05ae\u05b0\u05b4\u05b7\u05bb\u05c0\u05c2\u05c7\u05cc\u05d4\u05dc\u05e1"+
		"\u05e9\u05ec\u05ef\u05f3\u05f7\u05fa\u05fe\u0602\u0606\u060c\u060f\u0616"+
		"\u061b\u0622\u0629\u062f\u0637\u063a\u0641\u0644\u0646\u064c\u0652\u0663"+
		"\u066a\u0671\u067d\u0682\u068b\u068d\u0690\u069d\u06aa\u06af\u06bf\u06c7"+
		"\u06d1\u06d4\u06d7\u06dd\u06e1\u06e4\u06ef\u06f2\u06f9\u0706\u070d\u0714"+
		"\u0716\u071d\u0721\u0723\u0728\u072b\u0731\u0736\u0738\u073c\u073f\u0742"+
		"\u0748\u074d\u074f\u0754\u075b\u075d\u0767\u076a\u076f\u0773\u0776\u077e"+
		"\u0786\u0788\u0792\u0796\u0799\u079f\u07a4\u07a7\u07ad\u07b0\u07b4\u07b7"+
		"\u07bb\u07c0\u07c5\u07ca\u07ce\u07d2\u07d6\u07da\u07de\u07e2\u07e7\u07ec"+
		"\u07f1\u07f7\u07fc\u0801\u0806\u080c\u0811\u0816\u081c\u0821\u0826\u082b"+
		"\u0830\u0835\u083a\u083f\u0846\u084b\u0850\u0855\u0859\u085e\u0866\u086b"+
		"\u0874\u0880\u0887\u0889\u0891\u0896\u0899\u08a1\u08a7\u08ab\u08b8\u08c4"+
		"\u08ca\u08d0\u08d2\u08d5\u08d8\u08da\u08e2\u08ec\u08f4\u08fa\u0900\u090d"+
		"\u0914\u091d\u0922\u092d\u0936\u093b\u0947\u094e\u0957\u095c\u0968\u096f"+
		"\u0978\u097d\u0984\u098d\u0992\u0994\u0999\u09a1\u09aa\u09ae\u09b1\u09b5"+
		"\u09ba\u09c0\u09c6\u09cb\u09d0\u09d5\u09da\u09dd\u09e2\u09e7\u09f1\u09f5"+
		"\u09fc\u0a01\u0a04\u0a09\u0a0c\u0a10\u0a14\u0a1c\u0a2f\u0a32\u0a35\u0a39"+
		"\u0a43\u0a50\u0a57\u0a5a\u0a5e\u0a62\u0a69\u0a6c\u0a6f\u0a7a\u0a7d\u0a81"+
		"\u0a89\u0a8c\u0a91\u0a99\u0a9f\u0aa3\u0aa8\u0aae\u0ab2\u0ab7\u0abc\u0abf"+
		"\u0ac6\u0aca\u0acd\u0ad8\u0ae0\u0ae3\u0ae6\u0aec\u0af2\u0af4\u0af9\u0afc"+
		"\u0b02\u0b08\u0b0a\u0b0e\u0b11\u0b14\u0b17\u0b1d\u0b23\u0b26\u0b2c\u0b32"+
		"\u0b34\u0b39\u0b3c\u0b44\u0b46\u0b4f\u0b52\u0b55\u0b5a\u0b5c\u0b65\u0b68"+
		"\u0b6b\u0b6f\u0b74\u0b7c\u0b80\u0b83\u0b8b\u0b95\u0b9a\u0b9d\u0ba4\u0ba8"+
		"\u0bab\u0baf\u0bb4\u0bbd\u0bc8\u0bd2\u0bd8\u0be3\u0be7\u0bef\u0bf3\u0bfd"+
		"\u0c02\u0c05\u0c0e\u0c19\u0c1c\u0c24\u0c2a\u0c2f\u0c37\u0c3f\u0c46\u0c4d"+
		"\u0c54\u0c63\u0c70\u0c76\u0c7c\u0c82\u0c88\u0c8e\u0c94\u0c99\u0ca0\u0ca7"+
		"\u0caa\u0cb1\u0cb6\u0cb9\u0cbb\u0cbf\u0ccc\u0cd3\u0cda\u0ce0\u0ce4\u0ce8"+
		"\u0ceb\u0cf2\u0cf5\u0cfa\u0d01\u0d08\u0d0c\u0d11\u0d18\u0d25\u0d28\u0d2d"+
		"\u0d32\u0d36\u0d3c\u0d40\u0d44\u0d47\u0d4e\u0d58\u0d5d\u0d64\u0d68\u0d6f"+
		"\u0d72\u0d76\u0d7f\u0d83\u0d86\u0d89\u0d8f\u0d92\u0d96\u0d99\u0d9d\u0da0"+
		"\u0da8\u0dab\u0db6\u0db9\u0dbe\u0dc1\u0dc6\u0dd0\u0dd5\u0ddb\u0ddd\u0de3"+
		"\u0de5\u0deb\u0df3\u0df8\u0e00\u0e03\u0e08\u0e0b\u0e10\u0e18\u0e20\u0e26"+
		"\u0e2e\u0e33\u0e3b\u0e3e\u0e42\u0e45\u0e4d\u0e53\u0e5c\u0e5f\u0e63\u0e67"+
		"\u0e6b\u0e70\u0e74\u0e78\u0e7a\u0e7d\u0e80\u0e83\u0e89\u0e8d\u0e90\u0e93"+
		"\u0e96\u0e99\u0ea0\u0ea2\u0ea7\u0ead\u0eb2\u0eb7\u0ebe\u0ec4\u0ec7\u0ecb"+
		"\u0ed1\u0ed7\u0edc\u0edf\u0ee5\u0ee9\u0ef1\u0ef4\u0ef8\u0efb\u0efe\u0f03"+
		"\u0f06\u0f0d\u0f11\u0f14\u0f18\u0f1c\u0f1f\u0f22\u0f27\u0f2d\u0f31\u0f3b"+
		"\u0f41\u0f45\u0f4b\u0f4f\u0f55\u0f58\u0f64\u0f68\u0f6c\u0f74\u0f78\u0f80"+
		"\u0f83\u0f87\u0f8a\u0f92\u0f97\u0f9a\u0f9d\u0fa1\u0fa4\u0fad\u0fb2\u0fbb"+
		"\u0fc0\u0fc7\u0fce\u0fd6\u0fdc\u0fe4\u0fe7\u0fea\u0ff1\u0ff4\u0ffb\u0ffe"+
		"\u1006\u100c\u1017\u101a\u101e\u1024\u102d\u1032\u1036\u103c\u1042\u1044"+
		"\u1048\u1051\u105b\u1065\u106b\u1070\u1073\u1076\u1079\u107c\u107f\u1082"+
		"\u1088\u108d\u1090\u1093\u1096\u1099\u109c\u109f\u10a1\u10a7\u10ac\u10af"+
		"\u10b2\u10b5\u10b8\u10bb\u10be\u10c2\u10c8\u10cc\u10d4\u10d8\u10db\u10dd"+
		"\u10ea\u10ed\u10f4\u10fe\u1101\u1106\u1108\u110c\u1114\u111a\u1123\u1130"+
		"\u1134\u113a\u1143\u1146\u114a\u114d\u1151\u1155\u1158\u115a\u1162\u116e"+
		"\u1174\u1176\u117c\u117e\u1180\u1186\u118e\u1196\u119a\u119e\u11a7\u11ac"+
		"\u11c0\u11c5\u11cb\u11d2\u11d7\u11e0\u11e3\u11e7\u11eb\u11ef\u11f2\u11f5"+
		"\u11f8\u11fc\u1200\u1203\u1206\u1209\u1210\u1214\u1223\u1227\u1233\u123b"+
		"\u1245\u1249\u124c\u1252\u1255\u1258\u1261\u126a\u1274\u1278\u1282\u128c"+
		"\u1294\u1297\u12a0\u12a3\u12a7\u12ac\u12b0\u12b9\u12bc\u12db\u12de\u12e1"+
		"\u1319\u131e\u133a\u1348\u134f\u1353\u1359\u1361\u1363\u136e\u1378\u137f"+
		"\u1385\u138d\u1392\u139a\u13a2\u13aa\u13b2\u13b8\u13bb\u13bf\u13c4\u13c9"+
		"\u13cf\u13d1\u13dc\u13e1\u13e8\u13ea\u13f8\u13fe\u1403\u1408\u140e\u1415"+
		"\u141d\u1425\u142a\u1430\u1433\u143b\u1442\u144b\u144e\u145f\u1467\u146f"+
		"\u1473\u147a\u1480\u1488\u1491\u1497\u149e\u14a5\u14aa\u14ad\u14af\u14b5"+
		"\u14b7\u14bb\u14bd\u14c4\u14c9\u14cd\u14d3\u14dc\u14e2\u14e9\u14ef\u14f5"+
		"\u14fa\u14fd\u14ff\u1505\u1507\u150b\u150d\u1514\u1516\u151b\u1522\u152b"+
		"\u1530\u1539\u1540\u1545\u1548\u154a\u1550\u1552\u1555\u155d\u1562\u1567"+
		"\u156b\u1571\u1576\u157a\u1580\u1582\u158d\u1590\u1597\u159a\u15a6\u15ac"+
		"\u15b5\u15be\u15c3\u15cc\u15d2\u15dd\u15e3\u15e8\u15ec\u15f2\u15f7\u15fb"+
		"\u15fe\u160a\u1611\u1616\u1636\u163a\u163e\u1643\u164a\u164d\u1653\u165d"+
		"\u1667\u1671\u1677\u1680\u1686\u168d\u168f\u1699\u169d\u16a1\u16ab\u16af"+
		"\u16b3\u16c5\u1705\u171e\u1730\u1738\u1744\u174b\u174d\u1757\u175a\u1762"+
		"\u1769\u176d\u1772\u1776\u177b\u177e\u1781\u178a\u178e\u1791\u1795\u17ac"+
		"\u17b3\u17b7\u17be\u17c5\u17c8\u17d8\u17db\u17e5\u17e9\u17ef\u17f2\u17f7"+
		"\u17fb\u1802\u1805\u180b\u1823\u1826\u1832\u1835\u183f\u1847\u184b\u1852"+
		"\u1855\u185e\u1864\u186a\u1874\u1878\u187e\u1881\u1884\u1890\u1893\u1899"+
		"\u189c\u18a4\u18ac\u18b2\u18b6\u18c4\u18d0\u18d7\u18da\u18e1\u18e8\u18ef"+
		"\u18f3\u1900\u190b\u1911\u1916\u1923\u1925\u192a\u192e\u1931\u1933\u193a"+
		"\u1941\u1944\u1947\u194d\u1951\u1957\u195d\u196a\u196f\u1977\u197a\u197f"+
		"\u1984\u198c\u198f\u1997\u199b\u19a8\u19ae\u19ba\u19bd\u19c6\u19cb\u19d1"+
		"\u19d7\u19dc\u19de\u19e1\u19e5\u19e7\u19eb\u19f1\u19f4\u19f7\u19fd\u1a06"+
		"\u1a0e\u1a12\u1a17\u1a2d\u1a34\u1a36\u1a3d\u1a3f\u1a43\u1a48\u1a53\u1a58"+
		"\u1a5e\u1a61\u1a65\u1a6a\u1a6d\u1a71\u1a75\u1a77\u1a7c\u1a81\u1a8e\u1a91"+
		"\u1a95\u1a98\u1a9b\u1aa0\u1aa5\u1aab\u1aae\u1ab3\u1ab6\u1abb\u1abe\u1ac2"+
		"\u1ac7\u1acc\u1ad1\u1ad6\u1ad9\u1ade\u1ae3\u1ae8\u1aee\u1af3\u1af8\u1afd"+
		"\u1b01\u1b04\u1b09\u1b0d\u1b12\u1b1a\u1b23\u1b27\u1b2c\u1b31\u1b35\u1b37"+
		"\u1b3a\u1b4a\u1b53\u1b5b\u1b63\u1b6c\u1b76\u1b7e\u1b86\u1b8e\u1b96\u1ba2"+
		"\u1ba9\u1bbc\u1bc1\u1bc4\u1bc9\u1bcc\u1bd0\u1bdf\u1be4\u1bec\u1bf3\u1bf8"+
		"\u1bfd\u1c1f\u1c23\u1c2b\u1c2f\u1c38\u1c40\u1c45\u1c4d\u1c52\u1c57\u1c59"+
		"\u1c62\u1c67\u1c6f\u1c74\u1c7c\u1c84\u1c87\u1c91\u1ca3\u1ca6\u1ca9\u1cad"+
		"\u1cba\u1cc2\u1cc6\u1ccb\u1cd0\u1cd6\u1cdb\u1cdf\u1ce4\u1ce9\u1cee\u1cf8"+
		"\u1cfb\u1cff\u1d03\u1d0a\u1d0e\u1d2b\u1d30\u1d34\u1d37\u1d3a\u1d3d\u1d40"+
		"\u1d4b\u1d59\u1d62\u1d7d\u1d88\u1d8f\u1d93\u1d9a\u1da2\u1da7\u1daf\u1dbb"+
		"\u1dc8\u1dce\u1dd4\u1de4\u1dea\u1df3\u1df5\u1e0b\u1e17\u1e28\u1e3d\u1e3f"+
		"\u1e52\u1e5b\u1e64\u1e6f";
	public static final String _serializedATN = Utils.join(
		new String[] {
			_serializedATNSegment0,
			_serializedATNSegment1,
			_serializedATNSegment2,
			_serializedATNSegment3
		},
		""
	);
	public static final ATN _ATN =
		new ATNDeserializer().deserialize(_serializedATN.toCharArray());
	static {
		_decisionToDFA = new DFA[_ATN.getNumberOfDecisions()];
		for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) {
			_decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i);
		}
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy