From ce166fb146ef58e29396d8b14631a03c39697276 Mon Sep 17 00:00:00 2001 From: Xiaoyu Wang Date: Tue, 31 May 2022 15:07:15 +0800 Subject: [PATCH] fix: error in data precision of super table query --- include/common/ttokendef.h | 156 +-- source/libs/nodes/src/nodesCloneFuncs.c | 1 + source/libs/parser/inc/sql.y | 2 +- source/libs/parser/src/parTokenizer.c | 2 +- source/libs/parser/src/parTranslater.c | 42 +- source/libs/parser/src/sql.c | 1354 ++++++++++--------- source/libs/parser/test/parInitialDTest.cpp | 6 +- source/libs/parser/test/parSelectTest.cpp | 2 + source/libs/planner/src/planLogicCreater.c | 2 + 9 files changed, 795 insertions(+), 772 deletions(-) diff --git a/include/common/ttokendef.h b/include/common/ttokendef.h index 2fc524eeac..0e54f07991 100644 --- a/include/common/ttokendef.h +++ b/include/common/ttokendef.h @@ -162,84 +162,84 @@ #define TK_INTERVAL 144 #define TK_TOPIC 145 #define TK_AS 146 -#define TK_CGROUP 147 -#define TK_WITH 148 -#define TK_SCHEMA 149 -#define TK_DESC 150 -#define TK_DESCRIBE 151 -#define TK_RESET 152 -#define TK_QUERY 153 -#define TK_CACHE 154 -#define TK_EXPLAIN 155 -#define TK_ANALYZE 156 -#define TK_VERBOSE 157 -#define TK_NK_BOOL 158 -#define TK_RATIO 159 -#define TK_COMPACT 160 -#define TK_VNODES 161 -#define TK_IN 162 -#define TK_OUTPUTTYPE 163 -#define TK_AGGREGATE 164 -#define TK_BUFSIZE 165 -#define TK_STREAM 166 -#define TK_INTO 167 -#define TK_TRIGGER 168 -#define TK_AT_ONCE 169 -#define TK_WINDOW_CLOSE 170 -#define TK_WATERMARK 171 -#define TK_KILL 172 -#define TK_CONNECTION 173 -#define TK_TRANSACTION 174 -#define TK_MERGE 175 -#define TK_VGROUP 176 -#define TK_REDISTRIBUTE 177 -#define TK_SPLIT 178 -#define TK_SYNCDB 179 -#define TK_NULL 180 -#define TK_NK_QUESTION 181 -#define TK_NK_ARROW 182 -#define TK_ROWTS 183 -#define TK_TBNAME 184 -#define TK_QSTARTTS 185 -#define TK_QENDTS 186 -#define TK_WSTARTTS 187 -#define TK_WENDTS 188 -#define TK_WDURATION 189 -#define TK_CAST 190 -#define TK_NOW 191 -#define TK_TODAY 192 -#define TK_TIMEZONE 193 -#define TK_COUNT 194 -#define TK_FIRST 195 -#define TK_LAST 196 -#define TK_LAST_ROW 197 -#define TK_BETWEEN 198 -#define TK_IS 199 -#define TK_NK_LT 200 -#define TK_NK_GT 201 -#define TK_NK_LE 202 -#define TK_NK_GE 203 -#define TK_NK_NE 204 -#define TK_MATCH 205 -#define TK_NMATCH 206 -#define TK_CONTAINS 207 -#define TK_JOIN 208 -#define TK_INNER 209 -#define TK_SELECT 210 -#define TK_DISTINCT 211 -#define TK_WHERE 212 -#define TK_PARTITION 213 -#define TK_BY 214 -#define TK_SESSION 215 -#define TK_STATE_WINDOW 216 -#define TK_SLIDING 217 -#define TK_FILL 218 -#define TK_VALUE 219 -#define TK_NONE 220 -#define TK_PREV 221 -#define TK_LINEAR 222 -#define TK_NEXT 223 -#define TK_GROUP 224 +#define TK_CONSUMER 147 +#define TK_GROUP 148 +#define TK_WITH 149 +#define TK_SCHEMA 150 +#define TK_DESC 151 +#define TK_DESCRIBE 152 +#define TK_RESET 153 +#define TK_QUERY 154 +#define TK_CACHE 155 +#define TK_EXPLAIN 156 +#define TK_ANALYZE 157 +#define TK_VERBOSE 158 +#define TK_NK_BOOL 159 +#define TK_RATIO 160 +#define TK_COMPACT 161 +#define TK_VNODES 162 +#define TK_IN 163 +#define TK_OUTPUTTYPE 164 +#define TK_AGGREGATE 165 +#define TK_BUFSIZE 166 +#define TK_STREAM 167 +#define TK_INTO 168 +#define TK_TRIGGER 169 +#define TK_AT_ONCE 170 +#define TK_WINDOW_CLOSE 171 +#define TK_WATERMARK 172 +#define TK_KILL 173 +#define TK_CONNECTION 174 +#define TK_TRANSACTION 175 +#define TK_MERGE 176 +#define TK_VGROUP 177 +#define TK_REDISTRIBUTE 178 +#define TK_SPLIT 179 +#define TK_SYNCDB 180 +#define TK_NULL 181 +#define TK_NK_QUESTION 182 +#define TK_NK_ARROW 183 +#define TK_ROWTS 184 +#define TK_TBNAME 185 +#define TK_QSTARTTS 186 +#define TK_QENDTS 187 +#define TK_WSTARTTS 188 +#define TK_WENDTS 189 +#define TK_WDURATION 190 +#define TK_CAST 191 +#define TK_NOW 192 +#define TK_TODAY 193 +#define TK_TIMEZONE 194 +#define TK_COUNT 195 +#define TK_FIRST 196 +#define TK_LAST 197 +#define TK_LAST_ROW 198 +#define TK_BETWEEN 199 +#define TK_IS 200 +#define TK_NK_LT 201 +#define TK_NK_GT 202 +#define TK_NK_LE 203 +#define TK_NK_GE 204 +#define TK_NK_NE 205 +#define TK_MATCH 206 +#define TK_NMATCH 207 +#define TK_CONTAINS 208 +#define TK_JOIN 209 +#define TK_INNER 210 +#define TK_SELECT 211 +#define TK_DISTINCT 212 +#define TK_WHERE 213 +#define TK_PARTITION 214 +#define TK_BY 215 +#define TK_SESSION 216 +#define TK_STATE_WINDOW 217 +#define TK_SLIDING 218 +#define TK_FILL 219 +#define TK_VALUE 220 +#define TK_NONE 221 +#define TK_PREV 222 +#define TK_LINEAR 223 +#define TK_NEXT 224 #define TK_HAVING 225 #define TK_ORDER 226 #define TK_SLIMIT 227 diff --git a/source/libs/nodes/src/nodesCloneFuncs.c b/source/libs/nodes/src/nodesCloneFuncs.c index 68d3741b48..84b5e0a043 100644 --- a/source/libs/nodes/src/nodesCloneFuncs.c +++ b/source/libs/nodes/src/nodesCloneFuncs.c @@ -305,6 +305,7 @@ static SNode* logicNodeCopy(const SLogicNode* pSrc, SLogicNode* pDst) { CLONE_NODE_FIELD(pConditions); CLONE_NODE_LIST_FIELD(pChildren); COPY_SCALAR_FIELD(optimizedFlag); + COPY_SCALAR_FIELD(precision); return (SNode*)pDst; } diff --git a/source/libs/parser/inc/sql.y b/source/libs/parser/inc/sql.y index 1fb60f83a5..f45f10f3b9 100644 --- a/source/libs/parser/inc/sql.y +++ b/source/libs/parser/inc/sql.y @@ -408,7 +408,7 @@ cmd ::= CREATE TOPIC not_exists_opt(A) cmd ::= CREATE TOPIC not_exists_opt(A) topic_name(B) topic_options(D) AS db_name(C). { pCxt->pRootNode = createCreateTopicStmt(pCxt, A, &B, NULL, &C, D); } cmd ::= DROP TOPIC exists_opt(A) topic_name(B). { pCxt->pRootNode = createDropTopicStmt(pCxt, A, &B); } -cmd ::= DROP CGROUP exists_opt(A) cgroup_name(B) ON topic_name(C). { pCxt->pRootNode = createDropCGroupStmt(pCxt, A, &B, &C); } +cmd ::= DROP CONSUMER GROUP exists_opt(A) cgroup_name(B) ON topic_name(C). { pCxt->pRootNode = createDropCGroupStmt(pCxt, A, &B, &C); } topic_options(A) ::= . { A = createTopicOptions(pCxt); } topic_options(A) ::= topic_options(B) WITH TABLE. { ((STopicOptions*)B)->withTable = true; A = B; } diff --git a/source/libs/parser/src/parTokenizer.c b/source/libs/parser/src/parTokenizer.c index 540de2d639..47edd3e5a8 100644 --- a/source/libs/parser/src/parTokenizer.c +++ b/source/libs/parser/src/parTokenizer.c @@ -53,7 +53,6 @@ static SKeyword keywordTable[] = { {"CACHE", TK_CACHE}, {"CACHELAST", TK_CACHELAST}, {"CAST", TK_CAST}, - {"CGROUP", TK_CGROUP}, {"CLUSTER", TK_CLUSTER}, {"COLUMN", TK_COLUMN}, {"COMMENT", TK_COMMENT}, @@ -62,6 +61,7 @@ static SKeyword keywordTable[] = { {"CONNS", TK_CONNS}, {"CONNECTION", TK_CONNECTION}, {"CONNECTIONS", TK_CONNECTIONS}, + {"CONSUMER", TK_CONSUMER}, {"COUNT", TK_COUNT}, {"CREATE", TK_CREATE}, {"DATABASE", TK_DATABASE}, diff --git a/source/libs/parser/src/parTranslater.c b/source/libs/parser/src/parTranslater.c index c6a7f95d5e..1fded1e4d5 100644 --- a/source/libs/parser/src/parTranslater.c +++ b/source/libs/parser/src/parTranslater.c @@ -465,20 +465,22 @@ static bool isPrimaryKey(STempTableNode* pTable, SNode* pExpr) { return isPrimaryKeyImpl(pTable, pExpr); } -static bool findAndSetColumn(SColumnNode** pColRef, const STableNode* pTable) { +static int32_t findAndSetColumn(STranslateContext* pCxt, SColumnNode** pColRef, const STableNode* pTable, + bool* pFound) { SColumnNode* pCol = *pColRef; - bool found = false; + *pFound = false; if (QUERY_NODE_REAL_TABLE == nodeType(pTable)) { const STableMeta* pMeta = ((SRealTableNode*)pTable)->pMeta; if (isInternalPrimaryKey(pCol)) { setColumnInfoBySchema((SRealTableNode*)pTable, pMeta->schema, false, pCol); - return true; + *pFound = true; + return TSDB_CODE_SUCCESS; } int32_t nums = pMeta->tableInfo.numOfTags + pMeta->tableInfo.numOfColumns; for (int32_t i = 0; i < nums; ++i) { if (0 == strcmp(pCol->colName, pMeta->schema[i].name)) { setColumnInfoBySchema((SRealTableNode*)pTable, pMeta->schema + i, (i >= pMeta->tableInfo.numOfColumns), pCol); - found = true; + *pFound = true; break; } } @@ -489,13 +491,15 @@ static bool findAndSetColumn(SColumnNode** pColRef, const STableNode* pTable) { SExprNode* pExpr = (SExprNode*)pNode; if (0 == strcmp(pCol->colName, pExpr->aliasName) || (isPrimaryKey((STempTableNode*)pTable, pNode) && isInternalPrimaryKey(pCol))) { + if (*pFound) { + return generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_AMBIGUOUS_COLUMN, pCol->colName); + } setColumnInfoByExpr(pTable, pExpr, pColRef); - found = true; - break; + *pFound = true; } } } - return found; + return TSDB_CODE_SUCCESS; } static EDealRes translateColumnWithPrefix(STranslateContext* pCxt, SColumnNode** pCol) { @@ -506,7 +510,12 @@ static EDealRes translateColumnWithPrefix(STranslateContext* pCxt, SColumnNode** STableNode* pTable = taosArrayGetP(pTables, i); if (belongTable(pCxt->pParseCxt->db, (*pCol), pTable)) { foundTable = true; - if (findAndSetColumn(pCol, pTable)) { + bool foundCol = false; + pCxt->errCode = findAndSetColumn(pCxt, pCol, pTable, &foundCol); + if (TSDB_CODE_SUCCESS != pCxt->errCode) { + return DEAL_RES_ERROR; + } + if (foundCol) { break; } return generateDealNodeErrMsg(pCxt, TSDB_CODE_PAR_INVALID_COLUMN, (*pCol)->colName); @@ -525,14 +534,19 @@ static EDealRes translateColumnWithoutPrefix(STranslateContext* pCxt, SColumnNod bool isInternalPk = isInternalPrimaryKey(*pCol); for (size_t i = 0; i < nums; ++i) { STableNode* pTable = taosArrayGetP(pTables, i); - if (findAndSetColumn(pCol, pTable)) { + bool foundCol = false; + pCxt->errCode = findAndSetColumn(pCxt, pCol, pTable, &foundCol); + if (TSDB_CODE_SUCCESS != pCxt->errCode) { + return DEAL_RES_ERROR; + } + if (foundCol) { if (found) { return generateDealNodeErrMsg(pCxt, TSDB_CODE_PAR_AMBIGUOUS_COLUMN, (*pCol)->colName); } found = true; - if (isInternalPk) { - break; - } + } + if (isInternalPk) { + break; } } if (!found) { @@ -1939,7 +1953,9 @@ static int32_t createPrimaryKeyColByTable(STranslateContext* pCxt, STableNode* p } pCol->colId = PRIMARYKEY_TIMESTAMP_COL_ID; strcpy(pCol->colName, PK_TS_COL_INTERNAL_NAME); - if (!findAndSetColumn(&pCol, pTable)) { + bool found = false; + int32_t code = findAndSetColumn(pCxt, &pCol, pTable, &found); + if (TSDB_CODE_SUCCESS != code || !found) { return generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_INVALID_TIMELINE_FUNC); } *pPrimaryKey = (SNode*)pCol; diff --git a/source/libs/parser/src/sql.c b/source/libs/parser/src/sql.c index 262abac54b..6fb8faf391 100644 --- a/source/libs/parser/src/sql.c +++ b/source/libs/parser/src/sql.c @@ -134,17 +134,17 @@ typedef union { #define ParseCTX_FETCH #define ParseCTX_STORE #define YYFALLBACK 1 -#define YYNSTATE 611 +#define YYNSTATE 612 #define YYNRULE 455 #define YYNTOKEN 240 -#define YY_MAX_SHIFT 610 -#define YY_MIN_SHIFTREDUCE 901 -#define YY_MAX_SHIFTREDUCE 1355 -#define YY_ERROR_ACTION 1356 -#define YY_ACCEPT_ACTION 1357 -#define YY_NO_ACTION 1358 -#define YY_MIN_REDUCE 1359 -#define YY_MAX_REDUCE 1813 +#define YY_MAX_SHIFT 611 +#define YY_MIN_SHIFTREDUCE 902 +#define YY_MAX_SHIFTREDUCE 1356 +#define YY_ERROR_ACTION 1357 +#define YY_ACCEPT_ACTION 1358 +#define YY_NO_ACTION 1359 +#define YY_MIN_REDUCE 1360 +#define YY_MAX_REDUCE 1814 /************* End control #defines *******************************************/ #define YY_NLOOKAHEAD ((int)(sizeof(yy_lookahead)/sizeof(yy_lookahead[0]))) @@ -211,604 +211,606 @@ typedef union { ** yy_default[] Default action for each state. ** *********** Begin parsing tables **********************************************/ -#define YY_ACTTAB_COUNT (2153) +#define YY_ACTTAB_COUNT (2136) static const YYACTIONTYPE yy_action[] = { - /* 0 */ 386, 1647, 387, 1391, 295, 394, 524, 387, 1391, 28, - /* 10 */ 226, 931, 35, 33, 130, 1676, 1371, 1660, 104, 1791, - /* 20 */ 304, 1644, 1169, 477, 523, 424, 36, 34, 32, 31, - /* 30 */ 30, 385, 1790, 62, 389, 1490, 1788, 1640, 1646, 36, - /* 40 */ 34, 32, 31, 30, 1535, 1676, 108, 1167, 527, 935, - /* 50 */ 936, 294, 1000, 508, 524, 1485, 1533, 154, 14, 476, - /* 60 */ 35, 33, 1296, 507, 1175, 24, 350, 1630, 304, 1002, - /* 70 */ 1169, 1418, 277, 488, 523, 36, 34, 32, 31, 30, - /* 80 */ 56, 1, 60, 1490, 1689, 59, 524, 80, 1661, 510, - /* 90 */ 1663, 1664, 506, 1359, 527, 1167, 1207, 1729, 104, 603, - /* 100 */ 602, 276, 1725, 607, 1258, 429, 14, 36, 34, 32, - /* 110 */ 31, 30, 1175, 1791, 1168, 1490, 140, 103, 102, 101, - /* 120 */ 100, 99, 98, 97, 96, 95, 147, 376, 1529, 2, - /* 130 */ 1788, 583, 582, 581, 319, 39, 580, 579, 578, 114, - /* 140 */ 573, 572, 571, 570, 569, 568, 567, 566, 121, 562, - /* 150 */ 511, 607, 1568, 307, 1259, 55, 1580, 55, 1170, 156, - /* 160 */ 94, 1791, 1168, 93, 92, 91, 90, 89, 88, 87, - /* 170 */ 86, 85, 158, 157, 146, 352, 1264, 1352, 1788, 393, - /* 180 */ 1173, 1174, 389, 1220, 1221, 1223, 1224, 1225, 1226, 1227, - /* 190 */ 503, 525, 1235, 1236, 1237, 1238, 1239, 1240, 1468, 36, - /* 200 */ 34, 32, 31, 30, 64, 292, 1170, 131, 191, 274, - /* 210 */ 148, 1447, 27, 302, 1253, 1254, 1255, 1256, 1257, 1261, - /* 220 */ 1262, 1263, 1421, 36, 34, 32, 31, 30, 1173, 1174, - /* 230 */ 484, 1220, 1221, 1223, 1224, 1225, 1226, 1227, 503, 525, - /* 240 */ 1235, 1236, 1237, 1238, 1239, 1240, 35, 33, 1467, 948, - /* 250 */ 70, 947, 438, 437, 304, 403, 1169, 436, 1351, 112, - /* 260 */ 109, 433, 308, 1791, 432, 431, 430, 35, 33, 1310, - /* 270 */ 128, 1483, 1660, 403, 523, 304, 1789, 1169, 949, 1492, - /* 280 */ 1788, 1167, 438, 437, 148, 1193, 148, 436, 62, 972, - /* 290 */ 109, 433, 14, 1207, 432, 431, 430, 110, 1175, 1360, - /* 300 */ 1676, 1303, 1167, 1382, 1660, 524, 973, 1193, 508, 524, - /* 310 */ 1486, 486, 142, 1736, 1737, 2, 1741, 351, 507, 1175, - /* 320 */ 94, 361, 1630, 93, 92, 91, 90, 89, 88, 87, - /* 330 */ 86, 85, 1676, 1381, 1490, 38, 8, 607, 1490, 1689, - /* 340 */ 487, 559, 82, 1661, 510, 1663, 1664, 506, 1168, 527, - /* 350 */ 507, 1191, 1729, 1630, 1630, 1535, 1728, 1725, 607, 128, - /* 360 */ 558, 557, 309, 556, 555, 554, 1380, 1533, 1493, 1168, - /* 370 */ 565, 1689, 1462, 1535, 81, 1661, 510, 1663, 1664, 506, - /* 380 */ 315, 527, 524, 1630, 1729, 1533, 1743, 26, 297, 1725, - /* 390 */ 141, 478, 1170, 54, 362, 435, 434, 36, 34, 32, - /* 400 */ 31, 30, 218, 36, 34, 32, 31, 30, 466, 1756, - /* 410 */ 1740, 1490, 55, 1170, 1173, 1174, 1630, 1220, 1221, 1223, - /* 420 */ 1224, 1225, 1226, 1227, 503, 525, 1235, 1236, 1237, 1238, - /* 430 */ 1239, 1240, 460, 577, 575, 1173, 1174, 1379, 1220, 1221, - /* 440 */ 1223, 1224, 1225, 1226, 1227, 503, 525, 1235, 1236, 1237, - /* 450 */ 1238, 1239, 1240, 35, 33, 1241, 1378, 443, 1195, 610, - /* 460 */ 316, 304, 1377, 1169, 148, 148, 249, 1571, 1573, 1520, - /* 470 */ 1246, 1222, 451, 243, 35, 33, 1193, 1481, 1376, 1660, - /* 480 */ 1647, 461, 304, 312, 1169, 105, 190, 1630, 1167, 524, - /* 490 */ 473, 599, 595, 591, 587, 242, 391, 1644, 446, 1357, - /* 500 */ 1644, 402, 1191, 440, 561, 1175, 1630, 1676, 189, 1167, - /* 510 */ 337, 484, 1630, 1640, 1646, 508, 1640, 1646, 1490, 484, - /* 520 */ 78, 1791, 9, 237, 527, 507, 1175, 527, 1630, 1630, - /* 530 */ 339, 335, 564, 51, 145, 488, 50, 127, 1788, 511, - /* 540 */ 112, 148, 576, 9, 607, 1581, 1689, 1194, 112, 80, - /* 550 */ 1661, 510, 1663, 1664, 506, 1168, 527, 520, 320, 1729, - /* 560 */ 1375, 479, 474, 276, 1725, 607, 36, 34, 32, 31, - /* 570 */ 30, 1648, 1130, 314, 1479, 1791, 1168, 428, 110, 553, - /* 580 */ 1132, 128, 465, 340, 217, 198, 110, 1465, 145, 55, - /* 590 */ 1492, 1644, 1788, 143, 1736, 1737, 77, 1741, 1791, 1170, - /* 600 */ 427, 144, 1736, 1737, 1146, 1741, 193, 1640, 1646, 113, - /* 610 */ 1630, 145, 277, 1572, 1573, 1788, 490, 1482, 527, 1295, - /* 620 */ 1170, 1173, 1174, 1374, 1220, 1221, 1223, 1224, 1225, 1226, - /* 630 */ 1227, 503, 525, 1235, 1236, 1237, 1238, 1239, 1240, 286, - /* 640 */ 1222, 1131, 1173, 1174, 1258, 1220, 1221, 1223, 1224, 1225, - /* 650 */ 1226, 1227, 503, 525, 1235, 1236, 1237, 1238, 1239, 1240, - /* 660 */ 35, 33, 273, 559, 1191, 345, 1320, 344, 304, 524, - /* 670 */ 1169, 369, 524, 1630, 381, 32, 31, 30, 1748, 1291, - /* 680 */ 559, 1487, 558, 557, 1610, 556, 555, 554, 287, 7, - /* 690 */ 285, 284, 382, 426, 1259, 1167, 947, 428, 1490, 558, - /* 700 */ 557, 1490, 556, 555, 554, 470, 1318, 1319, 1321, 1322, - /* 710 */ 1535, 317, 1175, 11, 10, 1373, 1264, 1743, 148, 128, - /* 720 */ 427, 422, 1534, 935, 936, 1743, 1154, 1155, 1492, 2, - /* 730 */ 1038, 550, 549, 548, 1042, 547, 1044, 1045, 546, 1047, - /* 740 */ 543, 1739, 1053, 540, 1055, 1056, 537, 534, 346, 1738, - /* 750 */ 1370, 607, 27, 302, 1253, 1254, 1255, 1256, 1257, 1261, - /* 760 */ 1262, 1263, 1168, 380, 1466, 1630, 375, 374, 373, 372, - /* 770 */ 371, 368, 367, 366, 365, 364, 360, 359, 358, 357, - /* 780 */ 356, 355, 354, 353, 524, 524, 129, 524, 1791, 1196, - /* 790 */ 492, 255, 1192, 1193, 1272, 1260, 521, 522, 1475, 239, - /* 800 */ 1630, 145, 1369, 253, 53, 1788, 1170, 52, 1368, 1367, - /* 810 */ 1366, 452, 1365, 1490, 1490, 1364, 1490, 1265, 524, 1363, - /* 820 */ 1660, 561, 1362, 47, 159, 275, 1294, 1477, 1173, 1174, - /* 830 */ 318, 1220, 1221, 1223, 1224, 1225, 1226, 1227, 503, 525, - /* 840 */ 1235, 1236, 1237, 1238, 1239, 1240, 495, 1490, 1676, 55, - /* 850 */ 1473, 1791, 1630, 25, 1619, 194, 487, 1408, 1630, 1630, - /* 860 */ 1630, 1291, 1630, 1403, 145, 1630, 507, 1401, 1788, 1630, - /* 870 */ 1630, 182, 1630, 184, 180, 186, 183, 188, 185, 439, - /* 880 */ 187, 1660, 500, 450, 502, 441, 79, 1689, 76, 444, - /* 890 */ 81, 1661, 510, 1663, 1664, 506, 448, 527, 72, 327, - /* 900 */ 1729, 11, 10, 552, 297, 1725, 141, 1372, 459, 1676, - /* 910 */ 1354, 1355, 1650, 1448, 1660, 202, 1178, 508, 58, 57, - /* 920 */ 349, 118, 46, 153, 471, 1757, 1177, 507, 343, 205, - /* 930 */ 221, 1630, 37, 37, 37, 453, 212, 1677, 1392, 228, - /* 940 */ 272, 421, 1676, 333, 1530, 329, 325, 150, 1689, 1652, - /* 950 */ 508, 81, 1661, 510, 1663, 1664, 506, 1222, 527, 1759, - /* 960 */ 507, 1729, 462, 1317, 1630, 297, 1725, 1804, 1191, 116, - /* 970 */ 207, 117, 485, 1266, 1228, 1124, 1763, 493, 148, 1660, - /* 980 */ 230, 1689, 220, 1181, 81, 1661, 510, 1663, 1664, 506, - /* 990 */ 223, 527, 118, 1180, 1729, 1660, 46, 532, 297, 1725, - /* 1000 */ 1804, 322, 117, 225, 1250, 3, 118, 1676, 326, 1786, - /* 1010 */ 516, 282, 236, 1000, 283, 508, 119, 117, 244, 155, - /* 1020 */ 1138, 363, 370, 1676, 1570, 507, 378, 1660, 377, 1630, - /* 1030 */ 379, 508, 383, 1031, 1197, 496, 384, 248, 1059, 392, - /* 1040 */ 1200, 507, 395, 1063, 162, 1630, 1689, 1070, 396, 82, - /* 1050 */ 1661, 510, 1663, 1664, 506, 1676, 527, 1068, 120, 1729, - /* 1060 */ 1199, 164, 1689, 508, 1726, 81, 1661, 510, 1663, 1664, - /* 1070 */ 506, 1201, 527, 507, 397, 1729, 398, 1630, 1660, 297, - /* 1080 */ 1725, 1804, 167, 488, 399, 169, 1198, 400, 401, 172, - /* 1090 */ 1747, 61, 404, 1660, 1689, 175, 423, 262, 1661, 510, - /* 1100 */ 1663, 1664, 506, 425, 527, 84, 1676, 1175, 1480, 179, - /* 1110 */ 1476, 291, 181, 1614, 508, 122, 123, 1478, 1474, 124, - /* 1120 */ 125, 1676, 245, 1791, 507, 192, 455, 195, 1630, 508, - /* 1130 */ 246, 197, 454, 464, 488, 463, 147, 200, 1196, 507, - /* 1140 */ 1788, 458, 472, 1630, 1660, 1689, 1770, 203, 262, 1661, - /* 1150 */ 510, 1663, 1664, 506, 514, 527, 6, 1750, 469, 1769, - /* 1160 */ 1689, 211, 481, 82, 1661, 510, 1663, 1664, 506, 206, - /* 1170 */ 527, 1760, 1676, 1729, 1791, 296, 475, 499, 1725, 1195, - /* 1180 */ 505, 468, 5, 1291, 111, 40, 497, 145, 1744, 1807, - /* 1190 */ 507, 1788, 298, 18, 1630, 512, 1660, 513, 494, 306, - /* 1200 */ 311, 310, 1579, 135, 1578, 1660, 214, 517, 518, 519, - /* 1210 */ 1183, 1689, 213, 1787, 270, 1661, 510, 1663, 1664, 506, - /* 1220 */ 504, 527, 501, 1701, 1676, 219, 232, 71, 491, 1710, - /* 1230 */ 234, 247, 508, 1676, 69, 1176, 250, 1491, 241, 222, - /* 1240 */ 606, 508, 507, 1463, 498, 48, 1630, 530, 224, 256, - /* 1250 */ 134, 507, 1175, 1660, 263, 1630, 257, 293, 467, 252, - /* 1260 */ 254, 1624, 1623, 1689, 321, 1620, 132, 1661, 510, 1663, - /* 1270 */ 1664, 506, 1689, 527, 323, 271, 1661, 510, 1663, 1664, - /* 1280 */ 506, 1676, 527, 324, 1163, 1660, 1164, 151, 1618, 508, - /* 1290 */ 328, 528, 330, 331, 1617, 332, 334, 1616, 336, 507, - /* 1300 */ 1615, 338, 1179, 1630, 1600, 152, 341, 1141, 342, 1140, - /* 1310 */ 489, 1805, 1594, 1676, 1593, 347, 348, 1660, 1592, 1591, - /* 1320 */ 1689, 508, 1107, 266, 1661, 510, 1663, 1664, 506, 1563, - /* 1330 */ 527, 507, 1562, 1561, 1560, 1630, 1559, 1558, 1557, 1556, - /* 1340 */ 1555, 1554, 1553, 1552, 1551, 1676, 1184, 1550, 1549, 1548, - /* 1350 */ 1547, 1546, 1689, 508, 1545, 132, 1661, 510, 1663, 1664, - /* 1360 */ 506, 480, 527, 507, 115, 1660, 1544, 1630, 1187, 1543, - /* 1370 */ 301, 1542, 1541, 1540, 1109, 1539, 1538, 1537, 1660, 525, - /* 1380 */ 1235, 1236, 1536, 1420, 1689, 1388, 160, 271, 1661, 510, - /* 1390 */ 1663, 1664, 506, 1676, 527, 938, 106, 138, 937, 388, - /* 1400 */ 1806, 505, 1387, 161, 390, 107, 1676, 1608, 1602, 1586, - /* 1410 */ 1585, 507, 1576, 1469, 508, 1630, 166, 171, 1660, 1419, - /* 1420 */ 966, 1417, 1415, 407, 507, 405, 1413, 411, 1630, 415, - /* 1430 */ 1411, 303, 1689, 419, 406, 270, 1661, 510, 1663, 1664, - /* 1440 */ 506, 409, 527, 410, 1702, 1689, 1676, 413, 271, 1661, - /* 1450 */ 510, 1663, 1664, 506, 508, 527, 414, 1400, 177, 1399, - /* 1460 */ 418, 417, 1386, 1471, 507, 1074, 1660, 1470, 1630, 1073, - /* 1470 */ 139, 305, 574, 576, 999, 1169, 420, 416, 412, 408, - /* 1480 */ 176, 45, 998, 178, 997, 1689, 996, 993, 271, 1661, - /* 1490 */ 510, 1663, 1664, 506, 1676, 527, 992, 991, 1409, 288, - /* 1500 */ 1167, 1404, 508, 289, 442, 63, 1402, 290, 174, 1385, - /* 1510 */ 447, 445, 507, 1384, 449, 83, 1630, 1175, 1607, 1148, - /* 1520 */ 49, 1601, 456, 1660, 1584, 126, 1583, 1575, 199, 65, - /* 1530 */ 196, 4, 133, 1689, 201, 37, 258, 1661, 510, 1663, - /* 1540 */ 1664, 506, 204, 527, 15, 457, 43, 1316, 1309, 208, - /* 1550 */ 22, 1676, 209, 23, 210, 66, 607, 1288, 1650, 508, - /* 1560 */ 1287, 216, 1345, 42, 136, 41, 173, 1168, 165, 507, - /* 1570 */ 170, 1660, 168, 1630, 17, 1340, 1339, 16, 13, 1334, - /* 1580 */ 10, 299, 1344, 1343, 300, 1251, 19, 137, 149, 1230, - /* 1590 */ 1689, 163, 1215, 265, 1661, 510, 1663, 1664, 506, 1676, - /* 1600 */ 527, 1660, 509, 1574, 29, 515, 12, 508, 1649, 233, - /* 1610 */ 72, 1170, 1229, 20, 235, 1185, 531, 507, 238, 21, - /* 1620 */ 229, 1630, 227, 529, 1314, 964, 313, 231, 67, 1676, - /* 1630 */ 68, 1660, 1692, 1173, 1174, 1232, 526, 508, 1689, 44, - /* 1640 */ 533, 267, 1661, 510, 1663, 1664, 506, 507, 527, 1060, - /* 1650 */ 1057, 1630, 535, 538, 536, 541, 544, 1054, 539, 1676, - /* 1660 */ 1037, 1052, 1048, 542, 1069, 1046, 545, 508, 1689, 551, - /* 1670 */ 1051, 259, 1661, 510, 1663, 1664, 506, 507, 527, 1660, - /* 1680 */ 73, 1630, 74, 75, 1066, 1065, 1050, 560, 1660, 1049, - /* 1690 */ 988, 1006, 563, 240, 986, 985, 984, 983, 1689, 981, - /* 1700 */ 1067, 268, 1661, 510, 1663, 1664, 506, 1676, 527, 982, - /* 1710 */ 1003, 980, 979, 1001, 976, 508, 1676, 975, 974, 971, - /* 1720 */ 970, 969, 1416, 584, 508, 507, 585, 586, 1414, 1630, - /* 1730 */ 588, 589, 590, 1412, 507, 592, 1660, 593, 1630, 594, - /* 1740 */ 1410, 596, 597, 598, 1398, 600, 1689, 601, 1397, 260, - /* 1750 */ 1661, 510, 1663, 1664, 506, 1689, 527, 1383, 269, 1661, - /* 1760 */ 510, 1663, 1664, 506, 1676, 527, 609, 604, 605, 1358, - /* 1770 */ 1358, 1171, 508, 251, 608, 1358, 1358, 1358, 1358, 1358, - /* 1780 */ 1358, 1358, 507, 1358, 1660, 1358, 1630, 1358, 1358, 1358, - /* 1790 */ 1358, 1358, 1358, 1358, 1358, 1660, 1358, 1358, 1358, 1358, - /* 1800 */ 1358, 1358, 1358, 1689, 1358, 1358, 261, 1661, 510, 1663, - /* 1810 */ 1664, 506, 1676, 527, 1660, 1358, 1358, 1358, 1358, 1358, - /* 1820 */ 508, 1358, 1358, 1676, 1358, 1358, 1358, 1358, 1358, 1358, - /* 1830 */ 507, 508, 1358, 1358, 1630, 1358, 1358, 1358, 1358, 1358, - /* 1840 */ 1358, 507, 1676, 1358, 1358, 1630, 1358, 1358, 1358, 1358, - /* 1850 */ 508, 1689, 1358, 1358, 1672, 1661, 510, 1663, 1664, 506, - /* 1860 */ 507, 527, 1689, 1358, 1630, 1671, 1661, 510, 1663, 1664, - /* 1870 */ 506, 1358, 527, 1660, 1358, 1358, 1358, 1358, 1358, 1358, - /* 1880 */ 1358, 1689, 1660, 1358, 1670, 1661, 510, 1663, 1664, 506, - /* 1890 */ 1358, 527, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, - /* 1900 */ 1358, 1676, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 508, - /* 1910 */ 1676, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 508, 507, - /* 1920 */ 1358, 1358, 1358, 1630, 1358, 1358, 1358, 1358, 507, 1358, - /* 1930 */ 1358, 1358, 1630, 1358, 1358, 1358, 1358, 1358, 1358, 1358, - /* 1940 */ 1689, 1358, 1660, 280, 1661, 510, 1663, 1664, 506, 1689, - /* 1950 */ 527, 1660, 279, 1661, 510, 1663, 1664, 506, 1358, 527, - /* 1960 */ 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, - /* 1970 */ 1676, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 508, 1676, - /* 1980 */ 1358, 1358, 1358, 1358, 1358, 1358, 1358, 508, 507, 1358, - /* 1990 */ 1358, 1358, 1630, 1358, 1358, 1358, 1358, 507, 1358, 1660, - /* 2000 */ 1358, 1630, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1689, - /* 2010 */ 484, 1358, 281, 1661, 510, 1663, 1664, 506, 1689, 527, - /* 2020 */ 1358, 278, 1661, 510, 1663, 1664, 506, 1676, 527, 1358, - /* 2030 */ 1358, 1358, 1358, 1358, 1358, 508, 1358, 1358, 1358, 112, - /* 2040 */ 1358, 1358, 1358, 1358, 1358, 507, 484, 1358, 1358, 1630, - /* 2050 */ 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 488, - /* 2060 */ 1358, 1358, 1358, 1358, 1358, 1358, 1689, 1358, 1358, 264, - /* 2070 */ 1661, 510, 1663, 1664, 506, 112, 527, 110, 1358, 1358, - /* 2080 */ 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, - /* 2090 */ 1358, 1358, 215, 1736, 483, 488, 482, 1358, 1358, 1791, - /* 2100 */ 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, - /* 2110 */ 1358, 1358, 147, 110, 1358, 1358, 1788, 1358, 1358, 1358, - /* 2120 */ 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 215, 1736, - /* 2130 */ 483, 1358, 482, 1358, 1358, 1791, 1358, 1358, 1358, 1358, - /* 2140 */ 1358, 1358, 1358, 1358, 1358, 1358, 1358, 1358, 145, 1358, - /* 2150 */ 1358, 1358, 1788, + /* 0 */ 460, 1648, 1536, 1648, 295, 386, 312, 387, 1392, 294, + /* 10 */ 28, 226, 35, 33, 1534, 24, 1383, 1661, 932, 1480, + /* 20 */ 304, 1645, 1170, 1645, 140, 36, 34, 32, 31, 30, + /* 30 */ 36, 34, 32, 31, 30, 1482, 1530, 1641, 1647, 1641, + /* 40 */ 1647, 394, 1469, 387, 1392, 1677, 524, 1168, 528, 130, + /* 50 */ 528, 1372, 1792, 509, 485, 1645, 936, 937, 14, 524, + /* 60 */ 35, 33, 1297, 508, 1176, 1791, 1631, 1631, 304, 1789, + /* 70 */ 1170, 1641, 1647, 489, 36, 34, 32, 31, 30, 604, + /* 80 */ 603, 1, 528, 112, 1690, 1131, 525, 80, 1662, 511, + /* 90 */ 1664, 1665, 507, 1133, 528, 1168, 1661, 1730, 104, 404, + /* 100 */ 1311, 276, 1726, 608, 1744, 425, 14, 39, 35, 33, + /* 110 */ 1792, 1649, 1176, 1792, 1169, 1491, 304, 1744, 1170, 512, + /* 120 */ 277, 110, 307, 146, 1677, 1581, 147, 1789, 1741, 2, + /* 130 */ 1789, 1645, 506, 1304, 376, 487, 142, 1737, 1738, 1194, + /* 140 */ 1742, 1740, 508, 1168, 1208, 55, 1631, 1641, 1647, 525, + /* 150 */ 56, 608, 1259, 131, 14, 1132, 1677, 1448, 528, 1171, + /* 160 */ 1176, 350, 1169, 1690, 478, 404, 270, 1662, 511, 1664, + /* 170 */ 1665, 507, 505, 528, 502, 1702, 1382, 2, 1491, 158, + /* 180 */ 157, 1174, 1175, 1194, 1221, 1222, 1224, 1225, 1226, 1227, + /* 190 */ 1228, 504, 526, 1236, 1237, 1238, 1239, 1240, 1241, 608, + /* 200 */ 477, 62, 1260, 154, 64, 292, 1296, 1171, 191, 94, + /* 210 */ 1169, 148, 93, 92, 91, 90, 89, 88, 87, 86, + /* 220 */ 85, 1381, 345, 1487, 344, 1265, 1631, 55, 60, 1174, + /* 230 */ 1175, 59, 1221, 1222, 1224, 1225, 1226, 1227, 1228, 504, + /* 240 */ 526, 1236, 1237, 1238, 1239, 1240, 1241, 1419, 286, 479, + /* 250 */ 36, 34, 32, 31, 30, 1171, 36, 34, 32, 31, + /* 260 */ 30, 27, 302, 1254, 1255, 1256, 1257, 1258, 1262, 1263, + /* 270 */ 1264, 1631, 55, 1358, 1744, 148, 385, 1174, 1175, 389, + /* 280 */ 1221, 1222, 1224, 1225, 1226, 1227, 1228, 504, 526, 1236, + /* 290 */ 1237, 1238, 1239, 1240, 1241, 35, 33, 287, 1739, 285, + /* 300 */ 284, 524, 427, 304, 1223, 1170, 429, 584, 583, 582, + /* 310 */ 319, 1467, 581, 580, 579, 114, 574, 573, 572, 571, + /* 320 */ 570, 569, 568, 567, 121, 563, 439, 438, 62, 428, + /* 330 */ 1168, 437, 320, 1661, 109, 434, 560, 346, 433, 432, + /* 340 */ 431, 108, 525, 35, 33, 1242, 391, 1176, 1192, 948, + /* 350 */ 1486, 304, 1192, 1170, 351, 559, 558, 148, 557, 556, + /* 360 */ 555, 1677, 38, 1792, 8, 308, 1380, 474, 562, 488, + /* 370 */ 1261, 1491, 1792, 128, 423, 453, 1790, 1792, 1168, 508, + /* 380 */ 1789, 1321, 1493, 1631, 127, 145, 608, 436, 435, 1789, + /* 390 */ 145, 35, 33, 1266, 1789, 1176, 949, 1169, 948, 304, + /* 400 */ 1690, 1170, 148, 81, 1662, 511, 1664, 1665, 507, 55, + /* 410 */ 528, 1379, 9, 1730, 1295, 1792, 1631, 297, 1726, 141, + /* 420 */ 471, 1319, 1320, 1322, 1323, 950, 1168, 1361, 145, 25, + /* 430 */ 512, 218, 1789, 314, 608, 1422, 1582, 467, 1757, 480, + /* 440 */ 475, 128, 1171, 1176, 1409, 1169, 393, 1378, 94, 389, + /* 450 */ 1493, 93, 92, 91, 90, 89, 88, 87, 86, 85, + /* 460 */ 9, 1631, 578, 576, 1174, 1175, 440, 1221, 1222, 1224, + /* 470 */ 1225, 1226, 1227, 1228, 504, 526, 1236, 1237, 1238, 1239, + /* 480 */ 1240, 1241, 608, 36, 34, 32, 31, 30, 1468, 70, + /* 490 */ 1171, 1569, 148, 1169, 148, 439, 438, 1631, 156, 1536, + /* 500 */ 437, 7, 525, 109, 434, 1195, 309, 433, 432, 431, + /* 510 */ 1484, 1534, 1174, 1175, 361, 1221, 1222, 1224, 1225, 1226, + /* 520 */ 1227, 1228, 504, 526, 1236, 1237, 1238, 1239, 1240, 1241, + /* 530 */ 493, 1491, 36, 34, 32, 31, 30, 1196, 1171, 148, + /* 540 */ 1039, 551, 550, 549, 1043, 548, 1045, 1046, 547, 1048, + /* 550 */ 544, 316, 1054, 541, 1056, 1057, 538, 535, 1572, 1574, + /* 560 */ 1174, 1175, 1377, 1221, 1222, 1224, 1225, 1226, 1227, 1228, + /* 570 */ 504, 526, 1236, 1237, 1238, 1239, 1240, 1241, 35, 33, + /* 580 */ 273, 560, 1192, 26, 11, 10, 304, 1661, 1170, 369, + /* 590 */ 54, 1001, 381, 36, 34, 32, 31, 30, 1573, 1574, + /* 600 */ 559, 558, 1208, 557, 556, 555, 177, 525, 1003, 1536, + /* 610 */ 382, 1247, 1631, 1168, 1360, 1677, 315, 1194, 139, 362, + /* 620 */ 525, 1534, 1353, 509, 421, 417, 413, 409, 176, 1376, + /* 630 */ 1176, 337, 403, 508, 936, 937, 1491, 1631, 103, 102, + /* 640 */ 101, 100, 99, 98, 97, 96, 95, 2, 485, 1491, + /* 650 */ 1193, 339, 335, 63, 1690, 77, 174, 81, 1662, 511, + /* 660 */ 1664, 1665, 507, 217, 528, 1273, 128, 1730, 113, 608, + /* 670 */ 352, 297, 1726, 1805, 1292, 1494, 1483, 112, 461, 1631, + /* 680 */ 1169, 380, 1764, 1375, 375, 374, 373, 372, 371, 368, + /* 690 */ 367, 366, 365, 364, 360, 359, 358, 357, 356, 355, + /* 700 */ 354, 353, 1352, 249, 274, 129, 1521, 525, 554, 525, + /* 710 */ 255, 32, 31, 30, 173, 110, 165, 494, 170, 1488, + /* 720 */ 399, 104, 253, 53, 562, 1171, 52, 462, 430, 565, + /* 730 */ 143, 1737, 1738, 1631, 1742, 1197, 1491, 1661, 1491, 182, + /* 740 */ 163, 1466, 180, 159, 1374, 496, 1371, 1174, 1175, 1194, + /* 750 */ 1221, 1222, 1224, 1225, 1226, 1227, 1228, 504, 526, 1236, + /* 760 */ 1237, 1238, 1239, 1240, 1241, 1677, 1370, 1792, 55, 525, + /* 770 */ 566, 317, 1463, 509, 36, 34, 32, 31, 30, 128, + /* 780 */ 145, 1611, 1223, 508, 1789, 1749, 1292, 1631, 1493, 525, + /* 790 */ 525, 1369, 1620, 489, 1631, 485, 1631, 1368, 1491, 1476, + /* 800 */ 429, 522, 523, 525, 1690, 79, 485, 80, 1662, 511, + /* 810 */ 1664, 1665, 507, 491, 528, 239, 1631, 1730, 1491, 1491, + /* 820 */ 277, 276, 1726, 428, 112, 1367, 1155, 1156, 184, 1404, + /* 830 */ 525, 183, 1491, 1792, 560, 112, 1661, 327, 58, 57, + /* 840 */ 349, 1631, 318, 153, 489, 1170, 145, 1631, 343, 1366, + /* 850 */ 1789, 442, 1259, 559, 558, 1365, 557, 556, 555, 1491, + /* 860 */ 272, 202, 110, 333, 1677, 329, 325, 150, 1364, 1363, + /* 870 */ 1168, 501, 488, 110, 577, 1631, 1478, 215, 1737, 484, + /* 880 */ 186, 483, 508, 185, 1792, 76, 1631, 1176, 144, 1737, + /* 890 */ 1738, 47, 1742, 188, 275, 72, 187, 147, 148, 1631, + /* 900 */ 1536, 1789, 1260, 1690, 1661, 1631, 81, 1662, 511, 1664, + /* 910 */ 1665, 507, 1535, 528, 1223, 340, 1730, 1402, 1631, 1631, + /* 920 */ 297, 1726, 141, 451, 485, 1265, 608, 11, 10, 1355, + /* 930 */ 1356, 118, 1677, 1373, 497, 1179, 449, 1169, 1474, 445, + /* 940 */ 509, 1758, 46, 1651, 205, 1178, 1449, 194, 503, 553, + /* 950 */ 508, 37, 37, 112, 1631, 37, 228, 116, 221, 117, + /* 960 */ 118, 27, 302, 1254, 1255, 1256, 1257, 1258, 1262, 1263, + /* 970 */ 1264, 1690, 463, 489, 81, 1662, 511, 1664, 1665, 507, + /* 980 */ 1653, 528, 1171, 1318, 1730, 207, 46, 1661, 297, 1726, + /* 990 */ 1805, 110, 1267, 1229, 1251, 533, 1125, 230, 517, 1787, + /* 1000 */ 236, 1032, 1182, 117, 1174, 1175, 215, 1737, 484, 118, + /* 1010 */ 483, 119, 1181, 1792, 973, 1677, 454, 212, 472, 1661, + /* 1020 */ 1678, 1393, 117, 509, 422, 1760, 145, 248, 1531, 486, + /* 1030 */ 1789, 974, 220, 508, 223, 225, 1060, 1631, 3, 1192, + /* 1040 */ 322, 326, 282, 283, 1064, 1001, 1139, 1677, 244, 1661, + /* 1050 */ 1071, 363, 1069, 1571, 1690, 509, 155, 81, 1662, 511, + /* 1060 */ 1664, 1665, 507, 120, 528, 508, 370, 1730, 378, 1631, + /* 1070 */ 377, 297, 1726, 1805, 379, 489, 383, 1677, 1198, 384, + /* 1080 */ 392, 1201, 1748, 395, 1200, 509, 1690, 162, 396, 262, + /* 1090 */ 1662, 511, 1664, 1665, 507, 508, 528, 164, 1202, 1631, + /* 1100 */ 398, 167, 397, 169, 400, 489, 401, 1661, 1199, 402, + /* 1110 */ 444, 172, 61, 405, 175, 1792, 1690, 424, 426, 262, + /* 1120 */ 1662, 511, 1664, 1665, 507, 452, 528, 84, 147, 1481, + /* 1130 */ 291, 179, 1789, 1477, 1176, 1677, 181, 122, 123, 190, + /* 1140 */ 1479, 1475, 124, 509, 125, 1792, 1615, 1661, 245, 192, + /* 1150 */ 455, 447, 246, 508, 456, 464, 441, 1631, 145, 195, + /* 1160 */ 197, 189, 1789, 459, 1197, 465, 1661, 473, 515, 1771, + /* 1170 */ 1770, 6, 470, 200, 1690, 1677, 203, 82, 1662, 511, + /* 1180 */ 1664, 1665, 507, 509, 528, 206, 51, 1730, 296, 50, + /* 1190 */ 1761, 1729, 1726, 508, 1677, 1751, 482, 1631, 1661, 211, + /* 1200 */ 469, 476, 509, 5, 135, 1292, 111, 1196, 1745, 40, + /* 1210 */ 213, 214, 508, 18, 1690, 495, 1631, 82, 1662, 511, + /* 1220 */ 1664, 1665, 507, 498, 528, 298, 1677, 1730, 1580, 513, + /* 1230 */ 514, 500, 1726, 1690, 509, 1788, 132, 1662, 511, 1664, + /* 1240 */ 1665, 507, 306, 528, 508, 1579, 219, 1808, 1631, 492, + /* 1250 */ 1711, 518, 519, 611, 222, 232, 520, 234, 247, 69, + /* 1260 */ 499, 1492, 71, 1661, 531, 1690, 224, 243, 82, 1662, + /* 1270 */ 511, 1664, 1665, 507, 1464, 528, 250, 241, 1730, 105, + /* 1280 */ 490, 1806, 607, 1727, 134, 600, 596, 592, 588, 242, + /* 1290 */ 256, 1677, 263, 257, 48, 293, 252, 254, 1625, 509, + /* 1300 */ 1624, 321, 1621, 323, 324, 1164, 1165, 151, 328, 508, + /* 1310 */ 1619, 1661, 330, 1631, 78, 331, 468, 237, 332, 1618, + /* 1320 */ 334, 1617, 336, 1616, 338, 1601, 152, 341, 342, 1142, + /* 1330 */ 1690, 1141, 1595, 271, 1662, 511, 1664, 1665, 507, 1677, + /* 1340 */ 528, 1594, 1593, 347, 348, 1592, 1564, 509, 1108, 1563, + /* 1350 */ 1562, 521, 1561, 1560, 1559, 1558, 1557, 508, 1556, 1661, + /* 1360 */ 1555, 1631, 1554, 1553, 1552, 1551, 1550, 1549, 1661, 1548, + /* 1370 */ 1547, 115, 1546, 1545, 1544, 1543, 466, 1542, 1690, 198, + /* 1380 */ 1541, 266, 1662, 511, 1664, 1665, 507, 1677, 528, 1540, + /* 1390 */ 1110, 1539, 1538, 1537, 1421, 509, 1677, 160, 106, 1147, + /* 1400 */ 1389, 193, 939, 388, 509, 508, 1388, 1609, 1603, 1631, + /* 1410 */ 938, 1587, 138, 1586, 508, 168, 161, 1577, 1631, 481, + /* 1420 */ 390, 301, 1661, 107, 166, 1470, 1690, 171, 1420, 132, + /* 1430 */ 1662, 511, 1664, 1665, 507, 1690, 528, 1661, 271, 1662, + /* 1440 */ 511, 1664, 1665, 507, 967, 528, 1418, 407, 406, 408, + /* 1450 */ 1677, 1416, 410, 412, 411, 1414, 416, 414, 506, 415, + /* 1460 */ 1412, 420, 418, 419, 1401, 1677, 1400, 1387, 508, 1472, + /* 1470 */ 1661, 45, 1631, 509, 1807, 1074, 1075, 1471, 1000, 999, + /* 1480 */ 998, 997, 575, 508, 577, 1661, 178, 1631, 1410, 1690, + /* 1490 */ 303, 994, 270, 1662, 511, 1664, 1665, 507, 1677, 528, + /* 1500 */ 288, 1703, 1405, 993, 1690, 992, 509, 271, 1662, 511, + /* 1510 */ 1664, 1665, 507, 1677, 528, 1403, 508, 289, 443, 290, + /* 1520 */ 1631, 509, 446, 305, 1386, 1661, 448, 1385, 450, 83, + /* 1530 */ 1608, 508, 1149, 1602, 457, 1631, 1585, 1690, 196, 1584, + /* 1540 */ 271, 1662, 511, 1664, 1665, 507, 1576, 528, 126, 49, + /* 1550 */ 458, 199, 1690, 1677, 65, 258, 1662, 511, 1664, 1665, + /* 1560 */ 507, 509, 528, 201, 4, 204, 37, 43, 1317, 1310, + /* 1570 */ 133, 508, 208, 22, 10, 1631, 209, 1661, 210, 66, + /* 1580 */ 29, 1651, 1289, 23, 216, 1288, 42, 136, 17, 1346, + /* 1590 */ 1335, 1341, 1690, 19, 15, 265, 1662, 511, 1664, 1665, + /* 1600 */ 507, 1340, 528, 299, 1345, 1677, 1344, 300, 1252, 137, + /* 1610 */ 1231, 1230, 12, 509, 16, 149, 1216, 1575, 510, 20, + /* 1620 */ 516, 233, 235, 508, 1650, 1661, 238, 1631, 965, 41, + /* 1630 */ 21, 1186, 227, 1315, 532, 313, 13, 536, 539, 229, + /* 1640 */ 1661, 1038, 231, 67, 1690, 68, 72, 267, 1662, 511, + /* 1650 */ 1664, 1665, 507, 1677, 528, 1693, 552, 1233, 527, 44, + /* 1660 */ 530, 509, 542, 1061, 534, 545, 1066, 1058, 1677, 1070, + /* 1670 */ 537, 508, 1053, 1661, 1055, 1631, 509, 540, 1052, 1049, + /* 1680 */ 543, 1051, 1047, 546, 1050, 73, 508, 1067, 74, 75, + /* 1690 */ 1631, 561, 1690, 989, 1007, 259, 1662, 511, 1664, 1665, + /* 1700 */ 507, 1677, 528, 564, 240, 987, 986, 1690, 985, 509, + /* 1710 */ 268, 1662, 511, 1664, 1665, 507, 982, 528, 984, 508, + /* 1720 */ 983, 981, 980, 1631, 1068, 1002, 1004, 1661, 977, 976, + /* 1730 */ 975, 972, 971, 970, 1417, 585, 1661, 586, 587, 1415, + /* 1740 */ 1690, 590, 589, 260, 1662, 511, 1664, 1665, 507, 591, + /* 1750 */ 528, 1413, 593, 594, 595, 1677, 597, 599, 598, 1399, + /* 1760 */ 1398, 601, 602, 509, 1677, 1411, 1384, 605, 606, 1359, + /* 1770 */ 1172, 251, 509, 508, 609, 610, 1359, 1631, 1359, 1359, + /* 1780 */ 1359, 1359, 508, 1359, 1661, 1359, 1631, 1359, 1359, 1359, + /* 1790 */ 1359, 1359, 1359, 1359, 1690, 1359, 1661, 269, 1662, 511, + /* 1800 */ 1664, 1665, 507, 1690, 528, 1359, 261, 1662, 511, 1664, + /* 1810 */ 1665, 507, 1677, 528, 1359, 1359, 1359, 1359, 1359, 1359, + /* 1820 */ 509, 1359, 1359, 1359, 1677, 1359, 1359, 1359, 1359, 1359, + /* 1830 */ 508, 1359, 509, 1359, 1631, 1359, 1661, 1359, 1359, 1359, + /* 1840 */ 1359, 1359, 508, 1359, 1359, 1359, 1631, 1359, 1359, 1661, + /* 1850 */ 1359, 1690, 1359, 1359, 1673, 1662, 511, 1664, 1665, 507, + /* 1860 */ 1359, 528, 1359, 1690, 1677, 1359, 1672, 1662, 511, 1664, + /* 1870 */ 1665, 507, 509, 528, 1359, 1359, 1359, 1677, 1359, 1359, + /* 1880 */ 1359, 1359, 508, 1359, 1359, 509, 1631, 1359, 1359, 1359, + /* 1890 */ 1359, 1359, 1359, 1359, 1359, 508, 1359, 1661, 1359, 1631, + /* 1900 */ 1359, 1359, 1359, 1690, 1359, 1359, 1671, 1662, 511, 1664, + /* 1910 */ 1665, 507, 1661, 528, 1359, 1359, 1690, 1359, 1359, 280, + /* 1920 */ 1662, 511, 1664, 1665, 507, 1677, 528, 1359, 1359, 1359, + /* 1930 */ 1359, 1359, 1359, 509, 1359, 1359, 1359, 1359, 1359, 1359, + /* 1940 */ 1677, 1359, 1359, 508, 1359, 1661, 1359, 1631, 509, 1359, + /* 1950 */ 1359, 1359, 1359, 311, 310, 1359, 1359, 1359, 508, 1359, + /* 1960 */ 1359, 1359, 1631, 1184, 1690, 1359, 1359, 279, 1662, 511, + /* 1970 */ 1664, 1665, 507, 1677, 528, 1359, 1359, 1359, 1359, 1690, + /* 1980 */ 1359, 509, 281, 1662, 511, 1664, 1665, 507, 1177, 528, + /* 1990 */ 1359, 508, 1359, 1359, 1359, 1631, 1359, 1359, 1359, 1661, + /* 2000 */ 1359, 1359, 1359, 1359, 1359, 1176, 1359, 1359, 1359, 1359, + /* 2010 */ 1359, 1359, 1690, 1359, 1359, 278, 1662, 511, 1664, 1665, + /* 2020 */ 507, 1359, 528, 1359, 1359, 1359, 1359, 1677, 1359, 1359, + /* 2030 */ 1359, 1359, 1359, 1359, 1359, 509, 1359, 1359, 1359, 1359, + /* 2040 */ 1359, 1359, 1359, 1359, 529, 508, 1359, 1359, 1359, 1631, + /* 2050 */ 1359, 1359, 1359, 1359, 1359, 1180, 1359, 1359, 1359, 1359, + /* 2060 */ 1359, 1359, 1359, 1359, 1359, 1359, 1690, 1359, 1359, 264, + /* 2070 */ 1662, 511, 1664, 1665, 507, 1359, 528, 1359, 1359, 1359, + /* 2080 */ 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, + /* 2090 */ 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, + /* 2100 */ 1185, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, + /* 2110 */ 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, + /* 2120 */ 1359, 1359, 1188, 1359, 1359, 1359, 1359, 1359, 1359, 1359, + /* 2130 */ 1359, 1359, 1359, 526, 1236, 1237, }; static const YYCODETYPE yy_lookahead[] = { - /* 0 */ 246, 273, 248, 249, 276, 246, 250, 248, 249, 324, - /* 10 */ 325, 4, 12, 13, 242, 271, 244, 243, 262, 339, - /* 20 */ 20, 293, 22, 279, 20, 269, 12, 13, 14, 15, - /* 30 */ 16, 247, 352, 255, 250, 279, 356, 309, 310, 12, - /* 40 */ 13, 14, 15, 16, 271, 271, 268, 47, 320, 42, - /* 50 */ 43, 278, 47, 279, 250, 277, 283, 55, 58, 315, - /* 60 */ 12, 13, 14, 289, 64, 2, 262, 293, 20, 64, - /* 70 */ 22, 0, 58, 299, 20, 12, 13, 14, 15, 16, - /* 80 */ 4, 81, 80, 279, 310, 83, 250, 313, 314, 315, - /* 90 */ 316, 317, 318, 0, 320, 47, 82, 323, 262, 251, - /* 100 */ 252, 327, 328, 103, 90, 269, 58, 12, 13, 14, - /* 110 */ 15, 16, 64, 339, 114, 279, 270, 24, 25, 26, - /* 120 */ 27, 28, 29, 30, 31, 32, 352, 75, 282, 81, - /* 130 */ 356, 60, 61, 62, 63, 81, 65, 66, 67, 68, - /* 140 */ 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - /* 150 */ 289, 103, 279, 292, 140, 81, 295, 81, 158, 286, - /* 160 */ 21, 339, 114, 24, 25, 26, 27, 28, 29, 30, - /* 170 */ 31, 32, 120, 121, 352, 250, 162, 150, 356, 247, - /* 180 */ 180, 181, 250, 183, 184, 185, 186, 187, 188, 189, - /* 190 */ 190, 191, 192, 193, 194, 195, 196, 197, 0, 12, - /* 200 */ 13, 14, 15, 16, 167, 168, 158, 256, 171, 284, - /* 210 */ 210, 260, 198, 199, 200, 201, 202, 203, 204, 205, - /* 220 */ 206, 207, 0, 12, 13, 14, 15, 16, 180, 181, - /* 230 */ 250, 183, 184, 185, 186, 187, 188, 189, 190, 191, - /* 240 */ 192, 193, 194, 195, 196, 197, 12, 13, 0, 20, - /* 250 */ 253, 22, 60, 61, 20, 57, 22, 65, 231, 279, - /* 260 */ 68, 69, 263, 339, 72, 73, 74, 12, 13, 82, - /* 270 */ 271, 274, 243, 57, 20, 20, 352, 22, 49, 280, - /* 280 */ 356, 47, 60, 61, 210, 20, 210, 65, 255, 47, - /* 290 */ 68, 69, 58, 82, 72, 73, 74, 317, 64, 0, - /* 300 */ 271, 14, 47, 243, 243, 250, 64, 20, 279, 250, - /* 310 */ 277, 331, 332, 333, 334, 81, 336, 262, 289, 64, - /* 320 */ 21, 262, 293, 24, 25, 26, 27, 28, 29, 30, - /* 330 */ 31, 32, 271, 243, 279, 81, 81, 103, 279, 310, - /* 340 */ 279, 93, 313, 314, 315, 316, 317, 318, 114, 320, - /* 350 */ 289, 20, 323, 293, 293, 271, 327, 328, 103, 271, - /* 360 */ 112, 113, 278, 115, 116, 117, 243, 283, 280, 114, - /* 370 */ 259, 310, 261, 271, 313, 314, 315, 316, 317, 318, - /* 380 */ 278, 320, 250, 293, 323, 283, 311, 2, 327, 328, - /* 390 */ 329, 20, 158, 3, 262, 257, 258, 12, 13, 14, - /* 400 */ 15, 16, 341, 12, 13, 14, 15, 16, 347, 348, - /* 410 */ 335, 279, 81, 158, 180, 181, 293, 183, 184, 185, - /* 420 */ 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - /* 430 */ 196, 197, 250, 257, 258, 180, 181, 243, 183, 184, - /* 440 */ 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - /* 450 */ 195, 196, 197, 12, 13, 14, 243, 4, 20, 19, - /* 460 */ 281, 20, 243, 22, 210, 210, 264, 288, 289, 267, - /* 470 */ 14, 184, 19, 33, 12, 13, 20, 273, 243, 243, - /* 480 */ 273, 299, 20, 276, 22, 45, 33, 293, 47, 250, - /* 490 */ 144, 51, 52, 53, 54, 55, 14, 293, 45, 240, - /* 500 */ 293, 262, 20, 50, 57, 64, 293, 271, 55, 47, - /* 510 */ 153, 250, 293, 309, 310, 279, 309, 310, 279, 250, - /* 520 */ 80, 339, 81, 83, 320, 289, 64, 320, 293, 293, - /* 530 */ 173, 174, 64, 80, 352, 299, 83, 146, 356, 289, - /* 540 */ 279, 210, 41, 81, 103, 295, 310, 20, 279, 313, - /* 550 */ 314, 315, 316, 317, 318, 114, 320, 117, 299, 323, - /* 560 */ 243, 215, 216, 327, 328, 103, 12, 13, 14, 15, - /* 570 */ 16, 273, 80, 263, 272, 339, 114, 93, 317, 92, - /* 580 */ 88, 271, 142, 82, 146, 145, 317, 0, 352, 81, - /* 590 */ 280, 293, 356, 332, 333, 334, 253, 336, 339, 158, - /* 600 */ 116, 332, 333, 334, 164, 336, 166, 309, 310, 266, - /* 610 */ 293, 352, 58, 288, 289, 356, 226, 274, 320, 4, - /* 620 */ 158, 180, 181, 243, 183, 184, 185, 186, 187, 188, - /* 630 */ 189, 190, 191, 192, 193, 194, 195, 196, 197, 35, - /* 640 */ 184, 149, 180, 181, 90, 183, 184, 185, 186, 187, - /* 650 */ 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - /* 660 */ 12, 13, 18, 93, 20, 157, 180, 159, 20, 250, - /* 670 */ 22, 27, 250, 293, 30, 14, 15, 16, 208, 209, - /* 680 */ 93, 262, 112, 113, 262, 115, 116, 117, 84, 37, - /* 690 */ 86, 87, 48, 89, 140, 47, 22, 93, 279, 112, - /* 700 */ 113, 279, 115, 116, 117, 219, 220, 221, 222, 223, - /* 710 */ 271, 263, 64, 1, 2, 243, 162, 311, 210, 271, - /* 720 */ 116, 47, 283, 42, 43, 311, 169, 170, 280, 81, - /* 730 */ 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - /* 740 */ 104, 335, 106, 107, 108, 109, 110, 111, 299, 335, - /* 750 */ 243, 103, 198, 199, 200, 201, 202, 203, 204, 205, - /* 760 */ 206, 207, 114, 119, 0, 293, 122, 123, 124, 125, - /* 770 */ 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - /* 780 */ 136, 137, 138, 139, 250, 250, 18, 250, 339, 20, - /* 790 */ 41, 23, 20, 20, 82, 140, 262, 262, 272, 262, - /* 800 */ 293, 352, 243, 35, 36, 356, 158, 39, 243, 243, - /* 810 */ 243, 299, 243, 279, 279, 243, 279, 162, 250, 243, - /* 820 */ 243, 57, 243, 146, 56, 148, 211, 272, 180, 181, - /* 830 */ 262, 183, 184, 185, 186, 187, 188, 189, 190, 191, - /* 840 */ 192, 193, 194, 195, 196, 197, 41, 279, 271, 81, - /* 850 */ 272, 339, 293, 198, 0, 272, 279, 0, 293, 293, - /* 860 */ 293, 209, 293, 0, 352, 293, 289, 0, 356, 293, - /* 870 */ 293, 85, 293, 85, 88, 85, 88, 85, 88, 22, - /* 880 */ 88, 243, 58, 21, 272, 22, 118, 310, 81, 22, - /* 890 */ 313, 314, 315, 316, 317, 318, 34, 320, 91, 45, - /* 900 */ 323, 1, 2, 272, 327, 328, 329, 244, 303, 271, - /* 910 */ 195, 196, 44, 260, 243, 146, 47, 279, 150, 151, - /* 920 */ 152, 41, 41, 155, 350, 348, 47, 289, 160, 41, - /* 930 */ 359, 293, 41, 41, 41, 307, 344, 271, 249, 41, - /* 940 */ 172, 251, 271, 175, 282, 177, 178, 179, 310, 81, - /* 950 */ 279, 313, 314, 315, 316, 317, 318, 184, 320, 312, - /* 960 */ 289, 323, 82, 82, 293, 327, 328, 329, 20, 41, - /* 970 */ 82, 41, 337, 82, 82, 82, 338, 228, 210, 243, - /* 980 */ 82, 310, 353, 114, 313, 314, 315, 316, 317, 318, - /* 990 */ 353, 320, 41, 114, 323, 243, 41, 41, 327, 328, - /* 1000 */ 329, 250, 41, 353, 180, 340, 41, 271, 45, 338, - /* 1010 */ 82, 308, 82, 47, 257, 279, 41, 41, 301, 40, - /* 1020 */ 156, 250, 287, 271, 250, 289, 140, 243, 285, 293, - /* 1030 */ 285, 279, 250, 82, 20, 230, 245, 82, 82, 245, - /* 1040 */ 20, 289, 305, 82, 255, 293, 310, 82, 289, 313, - /* 1050 */ 314, 315, 316, 317, 318, 271, 320, 82, 82, 323, - /* 1060 */ 20, 255, 310, 279, 328, 313, 314, 315, 316, 317, - /* 1070 */ 318, 20, 320, 289, 297, 323, 300, 293, 243, 327, - /* 1080 */ 328, 329, 255, 299, 297, 255, 20, 279, 290, 255, - /* 1090 */ 338, 255, 250, 243, 310, 255, 245, 313, 314, 315, - /* 1100 */ 316, 317, 318, 271, 320, 250, 271, 64, 271, 271, - /* 1110 */ 271, 245, 271, 293, 279, 271, 271, 271, 271, 271, - /* 1120 */ 271, 271, 305, 339, 289, 253, 304, 253, 293, 279, - /* 1130 */ 297, 253, 165, 290, 299, 279, 352, 253, 20, 289, - /* 1140 */ 356, 289, 218, 293, 243, 310, 349, 294, 313, 314, - /* 1150 */ 315, 316, 317, 318, 217, 320, 225, 346, 293, 349, - /* 1160 */ 310, 345, 224, 313, 314, 315, 316, 317, 318, 294, - /* 1170 */ 320, 312, 271, 323, 339, 293, 293, 327, 328, 20, - /* 1180 */ 279, 213, 212, 209, 279, 40, 229, 352, 311, 360, - /* 1190 */ 289, 356, 232, 81, 293, 293, 243, 293, 227, 293, - /* 1200 */ 12, 13, 294, 343, 294, 243, 330, 143, 291, 290, - /* 1210 */ 22, 310, 342, 355, 313, 314, 315, 316, 317, 318, - /* 1220 */ 319, 320, 321, 322, 271, 354, 279, 81, 355, 326, - /* 1230 */ 253, 267, 279, 271, 253, 47, 250, 279, 253, 354, - /* 1240 */ 245, 279, 289, 261, 355, 302, 293, 275, 354, 265, - /* 1250 */ 306, 289, 64, 243, 265, 293, 265, 298, 296, 254, - /* 1260 */ 241, 0, 0, 310, 72, 0, 313, 314, 315, 316, - /* 1270 */ 317, 318, 310, 320, 47, 313, 314, 315, 316, 317, - /* 1280 */ 318, 271, 320, 176, 47, 243, 47, 47, 0, 279, - /* 1290 */ 176, 103, 47, 47, 0, 176, 47, 0, 47, 289, - /* 1300 */ 0, 47, 114, 293, 0, 81, 162, 114, 161, 158, - /* 1310 */ 357, 358, 0, 271, 0, 154, 153, 243, 0, 0, - /* 1320 */ 310, 279, 44, 313, 314, 315, 316, 317, 318, 0, - /* 1330 */ 320, 289, 0, 0, 0, 293, 0, 0, 0, 0, - /* 1340 */ 0, 0, 0, 0, 0, 271, 158, 0, 0, 0, - /* 1350 */ 0, 0, 310, 279, 0, 313, 314, 315, 316, 317, - /* 1360 */ 318, 351, 320, 289, 40, 243, 0, 293, 180, 0, - /* 1370 */ 296, 0, 0, 0, 22, 0, 0, 0, 243, 191, - /* 1380 */ 192, 193, 0, 0, 310, 0, 40, 313, 314, 315, - /* 1390 */ 316, 317, 318, 271, 320, 14, 37, 41, 14, 44, - /* 1400 */ 358, 279, 0, 38, 44, 37, 271, 0, 0, 0, - /* 1410 */ 0, 289, 0, 0, 279, 293, 37, 37, 243, 0, - /* 1420 */ 59, 0, 0, 37, 289, 47, 0, 37, 293, 37, - /* 1430 */ 0, 296, 310, 37, 45, 313, 314, 315, 316, 317, - /* 1440 */ 318, 47, 320, 45, 322, 310, 271, 47, 313, 314, - /* 1450 */ 315, 316, 317, 318, 279, 320, 45, 0, 33, 0, - /* 1460 */ 45, 47, 0, 0, 289, 47, 243, 0, 293, 22, - /* 1470 */ 45, 296, 41, 41, 47, 22, 51, 52, 53, 54, - /* 1480 */ 55, 90, 47, 88, 47, 310, 47, 47, 313, 314, - /* 1490 */ 315, 316, 317, 318, 271, 320, 47, 47, 0, 22, - /* 1500 */ 47, 0, 279, 22, 48, 80, 0, 22, 83, 0, - /* 1510 */ 22, 47, 289, 0, 22, 20, 293, 64, 0, 47, - /* 1520 */ 146, 0, 22, 243, 0, 163, 0, 0, 37, 81, - /* 1530 */ 143, 41, 81, 310, 141, 41, 313, 314, 315, 316, - /* 1540 */ 317, 318, 82, 320, 214, 146, 41, 82, 82, 81, - /* 1550 */ 81, 271, 41, 41, 44, 81, 103, 82, 44, 279, - /* 1560 */ 82, 44, 82, 41, 44, 208, 141, 114, 143, 289, - /* 1570 */ 145, 243, 147, 293, 41, 47, 47, 214, 214, 82, - /* 1580 */ 2, 47, 47, 47, 47, 180, 41, 44, 44, 82, - /* 1590 */ 310, 166, 22, 313, 314, 315, 316, 317, 318, 271, - /* 1600 */ 320, 243, 182, 0, 81, 144, 81, 279, 44, 37, - /* 1610 */ 91, 158, 82, 81, 141, 22, 47, 289, 44, 81, - /* 1620 */ 81, 293, 82, 92, 82, 59, 47, 81, 81, 271, - /* 1630 */ 81, 243, 81, 180, 181, 82, 81, 279, 310, 81, - /* 1640 */ 81, 313, 314, 315, 316, 317, 318, 289, 320, 82, - /* 1650 */ 82, 293, 47, 47, 81, 47, 47, 82, 81, 271, - /* 1660 */ 22, 105, 82, 81, 47, 82, 81, 279, 310, 93, - /* 1670 */ 105, 313, 314, 315, 316, 317, 318, 289, 320, 243, - /* 1680 */ 81, 293, 81, 81, 47, 22, 105, 58, 243, 105, - /* 1690 */ 47, 64, 79, 41, 47, 47, 47, 47, 310, 22, - /* 1700 */ 114, 313, 314, 315, 316, 317, 318, 271, 320, 47, - /* 1710 */ 64, 47, 47, 47, 47, 279, 271, 47, 47, 47, - /* 1720 */ 47, 47, 0, 47, 279, 289, 45, 37, 0, 293, - /* 1730 */ 47, 45, 37, 0, 289, 47, 243, 45, 293, 37, - /* 1740 */ 0, 47, 45, 37, 0, 47, 310, 46, 0, 313, - /* 1750 */ 314, 315, 316, 317, 318, 310, 320, 0, 313, 314, - /* 1760 */ 315, 316, 317, 318, 271, 320, 20, 22, 21, 361, - /* 1770 */ 361, 22, 279, 22, 21, 361, 361, 361, 361, 361, + /* 0 */ 303, 273, 271, 273, 276, 246, 276, 248, 249, 278, + /* 10 */ 324, 325, 12, 13, 283, 2, 243, 243, 4, 272, + /* 20 */ 20, 293, 22, 293, 270, 12, 13, 14, 15, 16, + /* 30 */ 12, 13, 14, 15, 16, 273, 282, 309, 310, 309, + /* 40 */ 310, 246, 0, 248, 249, 271, 20, 47, 320, 242, + /* 50 */ 320, 244, 339, 279, 250, 293, 42, 43, 58, 20, + /* 60 */ 12, 13, 14, 289, 64, 352, 293, 293, 20, 356, + /* 70 */ 22, 309, 310, 299, 12, 13, 14, 15, 16, 251, + /* 80 */ 252, 81, 320, 279, 310, 80, 250, 313, 314, 315, + /* 90 */ 316, 317, 318, 88, 320, 47, 243, 323, 262, 57, + /* 100 */ 82, 327, 328, 103, 311, 269, 58, 81, 12, 13, + /* 110 */ 339, 273, 64, 339, 114, 279, 20, 311, 22, 289, + /* 120 */ 58, 317, 292, 352, 271, 295, 352, 356, 335, 81, + /* 130 */ 356, 293, 279, 14, 75, 331, 332, 333, 334, 20, + /* 140 */ 336, 335, 289, 47, 82, 81, 293, 309, 310, 250, + /* 150 */ 4, 103, 90, 256, 58, 150, 271, 260, 320, 159, + /* 160 */ 64, 262, 114, 310, 279, 57, 313, 314, 315, 316, + /* 170 */ 317, 318, 319, 320, 321, 322, 243, 81, 279, 120, + /* 180 */ 121, 181, 182, 20, 184, 185, 186, 187, 188, 189, + /* 190 */ 190, 191, 192, 193, 194, 195, 196, 197, 198, 103, + /* 200 */ 315, 255, 140, 55, 168, 169, 4, 159, 172, 21, + /* 210 */ 114, 211, 24, 25, 26, 27, 28, 29, 30, 31, + /* 220 */ 32, 243, 158, 277, 160, 163, 293, 81, 80, 181, + /* 230 */ 182, 83, 184, 185, 186, 187, 188, 189, 190, 191, + /* 240 */ 192, 193, 194, 195, 196, 197, 198, 0, 35, 20, + /* 250 */ 12, 13, 14, 15, 16, 159, 12, 13, 14, 15, + /* 260 */ 16, 199, 200, 201, 202, 203, 204, 205, 206, 207, + /* 270 */ 208, 293, 81, 240, 311, 211, 247, 181, 182, 250, + /* 280 */ 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + /* 290 */ 194, 195, 196, 197, 198, 12, 13, 84, 335, 86, + /* 300 */ 87, 20, 89, 20, 185, 22, 93, 60, 61, 62, + /* 310 */ 63, 0, 65, 66, 67, 68, 69, 70, 71, 72, + /* 320 */ 73, 74, 75, 76, 77, 78, 60, 61, 255, 116, + /* 330 */ 47, 65, 299, 243, 68, 69, 93, 299, 72, 73, + /* 340 */ 74, 268, 250, 12, 13, 14, 14, 64, 20, 22, + /* 350 */ 277, 20, 20, 22, 262, 112, 113, 211, 115, 116, + /* 360 */ 117, 271, 81, 339, 81, 263, 243, 144, 57, 279, + /* 370 */ 140, 279, 339, 271, 47, 299, 352, 339, 47, 289, + /* 380 */ 356, 181, 280, 293, 146, 352, 103, 257, 258, 356, + /* 390 */ 352, 12, 13, 163, 356, 64, 20, 114, 22, 20, + /* 400 */ 310, 22, 211, 313, 314, 315, 316, 317, 318, 81, + /* 410 */ 320, 243, 81, 323, 212, 339, 293, 327, 328, 329, + /* 420 */ 220, 221, 222, 223, 224, 49, 47, 0, 352, 199, + /* 430 */ 289, 341, 356, 263, 103, 0, 295, 347, 348, 216, + /* 440 */ 217, 271, 159, 64, 0, 114, 247, 243, 21, 250, + /* 450 */ 280, 24, 25, 26, 27, 28, 29, 30, 31, 32, + /* 460 */ 81, 293, 257, 258, 181, 182, 22, 184, 185, 186, + /* 470 */ 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + /* 480 */ 197, 198, 103, 12, 13, 14, 15, 16, 0, 253, + /* 490 */ 159, 279, 211, 114, 211, 60, 61, 293, 286, 271, + /* 500 */ 65, 37, 250, 68, 69, 20, 278, 72, 73, 74, + /* 510 */ 274, 283, 181, 182, 262, 184, 185, 186, 187, 188, + /* 520 */ 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + /* 530 */ 41, 279, 12, 13, 14, 15, 16, 20, 159, 211, + /* 540 */ 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + /* 550 */ 104, 281, 106, 107, 108, 109, 110, 111, 288, 289, + /* 560 */ 181, 182, 243, 184, 185, 186, 187, 188, 189, 190, + /* 570 */ 191, 192, 193, 194, 195, 196, 197, 198, 12, 13, + /* 580 */ 18, 93, 20, 2, 1, 2, 20, 243, 22, 27, + /* 590 */ 3, 47, 30, 12, 13, 14, 15, 16, 288, 289, + /* 600 */ 112, 113, 82, 115, 116, 117, 33, 250, 64, 271, + /* 610 */ 48, 14, 293, 47, 0, 271, 278, 20, 45, 262, + /* 620 */ 250, 283, 151, 279, 51, 52, 53, 54, 55, 243, + /* 630 */ 64, 154, 262, 289, 42, 43, 279, 293, 24, 25, + /* 640 */ 26, 27, 28, 29, 30, 31, 32, 81, 250, 279, + /* 650 */ 20, 174, 175, 80, 310, 253, 83, 313, 314, 315, + /* 660 */ 316, 317, 318, 146, 320, 82, 271, 323, 266, 103, + /* 670 */ 250, 327, 328, 329, 210, 280, 274, 279, 250, 293, + /* 680 */ 114, 119, 338, 243, 122, 123, 124, 125, 126, 127, + /* 690 */ 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + /* 700 */ 138, 139, 231, 264, 284, 18, 267, 250, 92, 250, + /* 710 */ 23, 14, 15, 16, 141, 317, 143, 228, 145, 262, + /* 720 */ 147, 262, 35, 36, 57, 159, 39, 299, 269, 64, + /* 730 */ 332, 333, 334, 293, 336, 20, 279, 243, 279, 85, + /* 740 */ 167, 0, 88, 56, 243, 41, 243, 181, 182, 20, + /* 750 */ 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + /* 760 */ 194, 195, 196, 197, 198, 271, 243, 339, 81, 250, + /* 770 */ 259, 263, 261, 279, 12, 13, 14, 15, 16, 271, + /* 780 */ 352, 262, 185, 289, 356, 209, 210, 293, 280, 250, + /* 790 */ 250, 243, 0, 299, 293, 250, 293, 243, 279, 272, + /* 800 */ 93, 262, 262, 250, 310, 118, 250, 313, 314, 315, + /* 810 */ 316, 317, 318, 226, 320, 262, 293, 323, 279, 279, + /* 820 */ 58, 327, 328, 116, 279, 243, 170, 171, 85, 0, + /* 830 */ 250, 88, 279, 339, 93, 279, 243, 45, 151, 152, + /* 840 */ 153, 293, 262, 156, 299, 22, 352, 293, 161, 243, + /* 850 */ 356, 22, 90, 112, 113, 243, 115, 116, 117, 279, + /* 860 */ 173, 146, 317, 176, 271, 178, 179, 180, 243, 243, + /* 870 */ 47, 58, 279, 317, 41, 293, 272, 332, 333, 334, + /* 880 */ 85, 336, 289, 88, 339, 81, 293, 64, 332, 333, + /* 890 */ 334, 146, 336, 85, 149, 91, 88, 352, 211, 293, + /* 900 */ 271, 356, 140, 310, 243, 293, 313, 314, 315, 316, + /* 910 */ 317, 318, 283, 320, 185, 82, 323, 0, 293, 293, + /* 920 */ 327, 328, 329, 21, 250, 163, 103, 1, 2, 196, + /* 930 */ 197, 41, 271, 244, 230, 47, 34, 114, 272, 22, + /* 940 */ 279, 348, 41, 44, 41, 47, 260, 272, 272, 272, + /* 950 */ 289, 41, 41, 279, 293, 41, 41, 41, 359, 41, + /* 960 */ 41, 199, 200, 201, 202, 203, 204, 205, 206, 207, + /* 970 */ 208, 310, 82, 299, 313, 314, 315, 316, 317, 318, + /* 980 */ 81, 320, 159, 82, 323, 82, 41, 243, 327, 328, + /* 990 */ 329, 317, 82, 82, 181, 41, 82, 82, 82, 338, + /* 1000 */ 82, 82, 114, 41, 181, 182, 332, 333, 334, 41, + /* 1010 */ 336, 41, 114, 339, 47, 271, 307, 344, 350, 243, + /* 1020 */ 271, 249, 41, 279, 251, 312, 352, 82, 282, 337, + /* 1030 */ 356, 64, 353, 289, 353, 353, 82, 293, 340, 20, + /* 1040 */ 250, 45, 308, 257, 82, 47, 157, 271, 301, 243, + /* 1050 */ 82, 250, 82, 250, 310, 279, 40, 313, 314, 315, + /* 1060 */ 316, 317, 318, 82, 320, 289, 287, 323, 140, 293, + /* 1070 */ 285, 327, 328, 329, 285, 299, 250, 271, 20, 245, + /* 1080 */ 245, 20, 338, 305, 20, 279, 310, 255, 289, 313, + /* 1090 */ 314, 315, 316, 317, 318, 289, 320, 255, 20, 293, + /* 1100 */ 300, 255, 297, 255, 297, 299, 279, 243, 20, 290, + /* 1110 */ 4, 255, 255, 250, 255, 339, 310, 245, 271, 313, + /* 1120 */ 314, 315, 316, 317, 318, 19, 320, 250, 352, 271, + /* 1130 */ 245, 271, 356, 271, 64, 271, 271, 271, 271, 33, + /* 1140 */ 271, 271, 271, 279, 271, 339, 293, 243, 305, 253, + /* 1150 */ 166, 45, 297, 289, 304, 279, 50, 293, 352, 253, + /* 1160 */ 253, 55, 356, 289, 20, 290, 243, 219, 218, 349, + /* 1170 */ 349, 225, 293, 253, 310, 271, 294, 313, 314, 315, + /* 1180 */ 316, 317, 318, 279, 320, 294, 80, 323, 293, 83, + /* 1190 */ 312, 327, 328, 289, 271, 346, 148, 293, 243, 345, + /* 1200 */ 214, 293, 279, 213, 343, 210, 279, 20, 311, 40, + /* 1210 */ 342, 330, 289, 81, 310, 227, 293, 313, 314, 315, + /* 1220 */ 316, 317, 318, 229, 320, 232, 271, 323, 294, 293, + /* 1230 */ 293, 327, 328, 310, 279, 355, 313, 314, 315, 316, + /* 1240 */ 317, 318, 293, 320, 289, 294, 354, 360, 293, 355, + /* 1250 */ 326, 143, 291, 19, 354, 279, 290, 253, 267, 253, + /* 1260 */ 355, 279, 81, 243, 275, 310, 354, 33, 313, 314, + /* 1270 */ 315, 316, 317, 318, 261, 320, 250, 253, 323, 45, + /* 1280 */ 357, 358, 245, 328, 306, 51, 52, 53, 54, 55, + /* 1290 */ 265, 271, 265, 265, 302, 298, 254, 241, 0, 279, + /* 1300 */ 0, 72, 0, 47, 177, 47, 47, 47, 177, 289, + /* 1310 */ 0, 243, 47, 293, 80, 47, 296, 83, 177, 0, + /* 1320 */ 47, 0, 47, 0, 47, 0, 81, 163, 162, 114, + /* 1330 */ 310, 159, 0, 313, 314, 315, 316, 317, 318, 271, + /* 1340 */ 320, 0, 0, 155, 154, 0, 0, 279, 44, 0, + /* 1350 */ 0, 117, 0, 0, 0, 0, 0, 289, 0, 243, + /* 1360 */ 0, 293, 0, 0, 0, 0, 0, 0, 243, 0, + /* 1370 */ 0, 40, 0, 0, 0, 0, 142, 0, 310, 145, + /* 1380 */ 0, 313, 314, 315, 316, 317, 318, 271, 320, 0, + /* 1390 */ 22, 0, 0, 0, 0, 279, 271, 40, 37, 165, + /* 1400 */ 0, 167, 14, 44, 279, 289, 0, 0, 0, 293, + /* 1410 */ 14, 0, 41, 0, 289, 148, 38, 0, 293, 351, + /* 1420 */ 44, 296, 243, 37, 37, 0, 310, 37, 0, 313, + /* 1430 */ 314, 315, 316, 317, 318, 310, 320, 243, 313, 314, + /* 1440 */ 315, 316, 317, 318, 59, 320, 0, 45, 47, 37, + /* 1450 */ 271, 0, 47, 37, 45, 0, 37, 47, 279, 45, + /* 1460 */ 0, 37, 47, 45, 0, 271, 0, 0, 289, 0, + /* 1470 */ 243, 90, 293, 279, 358, 22, 47, 0, 47, 47, + /* 1480 */ 47, 47, 41, 289, 41, 243, 88, 293, 0, 310, + /* 1490 */ 296, 47, 313, 314, 315, 316, 317, 318, 271, 320, + /* 1500 */ 22, 322, 0, 47, 310, 47, 279, 313, 314, 315, + /* 1510 */ 316, 317, 318, 271, 320, 0, 289, 22, 48, 22, + /* 1520 */ 293, 279, 47, 296, 0, 243, 22, 0, 22, 20, + /* 1530 */ 0, 289, 47, 0, 22, 293, 0, 310, 143, 0, + /* 1540 */ 313, 314, 315, 316, 317, 318, 0, 320, 164, 146, + /* 1550 */ 146, 37, 310, 271, 81, 313, 314, 315, 316, 317, + /* 1560 */ 318, 279, 320, 141, 41, 82, 41, 41, 82, 82, + /* 1570 */ 81, 289, 81, 81, 2, 293, 41, 243, 44, 81, + /* 1580 */ 81, 44, 82, 41, 44, 82, 41, 44, 41, 82, + /* 1590 */ 82, 47, 310, 41, 215, 313, 314, 315, 316, 317, + /* 1600 */ 318, 47, 320, 47, 47, 271, 47, 47, 181, 44, + /* 1610 */ 82, 82, 81, 279, 215, 44, 22, 0, 183, 81, + /* 1620 */ 144, 37, 141, 289, 44, 243, 44, 293, 59, 209, + /* 1630 */ 81, 22, 82, 82, 47, 47, 215, 47, 47, 81, + /* 1640 */ 243, 22, 81, 81, 310, 81, 91, 313, 314, 315, + /* 1650 */ 316, 317, 318, 271, 320, 81, 93, 82, 81, 81, + /* 1660 */ 92, 279, 47, 82, 81, 47, 22, 82, 271, 47, + /* 1670 */ 81, 289, 105, 243, 82, 293, 279, 81, 105, 82, + /* 1680 */ 81, 105, 82, 81, 105, 81, 289, 47, 81, 81, + /* 1690 */ 293, 58, 310, 47, 64, 313, 314, 315, 316, 317, + /* 1700 */ 318, 271, 320, 79, 41, 47, 47, 310, 47, 279, + /* 1710 */ 313, 314, 315, 316, 317, 318, 22, 320, 47, 289, + /* 1720 */ 47, 47, 47, 293, 114, 47, 64, 243, 47, 47, + /* 1730 */ 47, 47, 47, 47, 0, 47, 243, 45, 37, 0, + /* 1740 */ 310, 45, 47, 313, 314, 315, 316, 317, 318, 37, + /* 1750 */ 320, 0, 47, 45, 37, 271, 47, 37, 45, 0, + /* 1760 */ 0, 47, 46, 279, 271, 0, 0, 22, 21, 361, + /* 1770 */ 22, 22, 279, 289, 21, 20, 361, 293, 361, 361, /* 1780 */ 361, 361, 289, 361, 243, 361, 293, 361, 361, 361, - /* 1790 */ 361, 361, 361, 361, 361, 243, 361, 361, 361, 361, - /* 1800 */ 361, 361, 361, 310, 361, 361, 313, 314, 315, 316, - /* 1810 */ 317, 318, 271, 320, 243, 361, 361, 361, 361, 361, - /* 1820 */ 279, 361, 361, 271, 361, 361, 361, 361, 361, 361, - /* 1830 */ 289, 279, 361, 361, 293, 361, 361, 361, 361, 361, - /* 1840 */ 361, 289, 271, 361, 361, 293, 361, 361, 361, 361, - /* 1850 */ 279, 310, 361, 361, 313, 314, 315, 316, 317, 318, - /* 1860 */ 289, 320, 310, 361, 293, 313, 314, 315, 316, 317, - /* 1870 */ 318, 361, 320, 243, 361, 361, 361, 361, 361, 361, - /* 1880 */ 361, 310, 243, 361, 313, 314, 315, 316, 317, 318, - /* 1890 */ 361, 320, 361, 361, 361, 361, 361, 361, 361, 361, - /* 1900 */ 361, 271, 361, 361, 361, 361, 361, 361, 361, 279, - /* 1910 */ 271, 361, 361, 361, 361, 361, 361, 361, 279, 289, - /* 1920 */ 361, 361, 361, 293, 361, 361, 361, 361, 289, 361, - /* 1930 */ 361, 361, 293, 361, 361, 361, 361, 361, 361, 361, - /* 1940 */ 310, 361, 243, 313, 314, 315, 316, 317, 318, 310, - /* 1950 */ 320, 243, 313, 314, 315, 316, 317, 318, 361, 320, - /* 1960 */ 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - /* 1970 */ 271, 361, 361, 361, 361, 361, 361, 361, 279, 271, - /* 1980 */ 361, 361, 361, 361, 361, 361, 361, 279, 289, 361, - /* 1990 */ 361, 361, 293, 361, 361, 361, 361, 289, 361, 243, - /* 2000 */ 361, 293, 361, 361, 361, 361, 361, 361, 361, 310, - /* 2010 */ 250, 361, 313, 314, 315, 316, 317, 318, 310, 320, - /* 2020 */ 361, 313, 314, 315, 316, 317, 318, 271, 320, 361, - /* 2030 */ 361, 361, 361, 361, 361, 279, 361, 361, 361, 279, - /* 2040 */ 361, 361, 361, 361, 361, 289, 250, 361, 361, 293, - /* 2050 */ 361, 361, 361, 361, 361, 361, 361, 361, 361, 299, + /* 1790 */ 361, 361, 361, 361, 310, 361, 243, 313, 314, 315, + /* 1800 */ 316, 317, 318, 310, 320, 361, 313, 314, 315, 316, + /* 1810 */ 317, 318, 271, 320, 361, 361, 361, 361, 361, 361, + /* 1820 */ 279, 361, 361, 361, 271, 361, 361, 361, 361, 361, + /* 1830 */ 289, 361, 279, 361, 293, 361, 243, 361, 361, 361, + /* 1840 */ 361, 361, 289, 361, 361, 361, 293, 361, 361, 243, + /* 1850 */ 361, 310, 361, 361, 313, 314, 315, 316, 317, 318, + /* 1860 */ 361, 320, 361, 310, 271, 361, 313, 314, 315, 316, + /* 1870 */ 317, 318, 279, 320, 361, 361, 361, 271, 361, 361, + /* 1880 */ 361, 361, 289, 361, 361, 279, 293, 361, 361, 361, + /* 1890 */ 361, 361, 361, 361, 361, 289, 361, 243, 361, 293, + /* 1900 */ 361, 361, 361, 310, 361, 361, 313, 314, 315, 316, + /* 1910 */ 317, 318, 243, 320, 361, 361, 310, 361, 361, 313, + /* 1920 */ 314, 315, 316, 317, 318, 271, 320, 361, 361, 361, + /* 1930 */ 361, 361, 361, 279, 361, 361, 361, 361, 361, 361, + /* 1940 */ 271, 361, 361, 289, 361, 243, 361, 293, 279, 361, + /* 1950 */ 361, 361, 361, 12, 13, 361, 361, 361, 289, 361, + /* 1960 */ 361, 361, 293, 22, 310, 361, 361, 313, 314, 315, + /* 1970 */ 316, 317, 318, 271, 320, 361, 361, 361, 361, 310, + /* 1980 */ 361, 279, 313, 314, 315, 316, 317, 318, 47, 320, + /* 1990 */ 361, 289, 361, 361, 361, 293, 361, 361, 361, 243, + /* 2000 */ 361, 361, 361, 361, 361, 64, 361, 361, 361, 361, + /* 2010 */ 361, 361, 310, 361, 361, 313, 314, 315, 316, 317, + /* 2020 */ 318, 361, 320, 361, 361, 361, 361, 271, 361, 361, + /* 2030 */ 361, 361, 361, 361, 361, 279, 361, 361, 361, 361, + /* 2040 */ 361, 361, 361, 361, 103, 289, 361, 361, 361, 293, + /* 2050 */ 361, 361, 361, 361, 361, 114, 361, 361, 361, 361, /* 2060 */ 361, 361, 361, 361, 361, 361, 310, 361, 361, 313, - /* 2070 */ 314, 315, 316, 317, 318, 279, 320, 317, 361, 361, + /* 2070 */ 314, 315, 316, 317, 318, 361, 320, 361, 361, 361, /* 2080 */ 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - /* 2090 */ 361, 361, 332, 333, 334, 299, 336, 361, 361, 339, - /* 2100 */ 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, - /* 2110 */ 361, 361, 352, 317, 361, 361, 356, 361, 361, 361, - /* 2120 */ 361, 361, 361, 361, 361, 361, 361, 361, 332, 333, - /* 2130 */ 334, 361, 336, 361, 361, 339, 361, 361, 361, 361, - /* 2140 */ 361, 361, 361, 361, 361, 361, 361, 361, 352, 361, - /* 2150 */ 361, 361, 356, + /* 2090 */ 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, + /* 2100 */ 159, 361, 361, 361, 361, 361, 361, 361, 361, 361, + /* 2110 */ 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, + /* 2120 */ 361, 361, 181, 361, 361, 361, 361, 361, 361, 361, + /* 2130 */ 361, 361, 361, 192, 193, 194, 361, 361, 361, 361, + /* 2140 */ 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, + /* 2150 */ 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, + /* 2160 */ 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, + /* 2170 */ 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, + /* 2180 */ 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, + /* 2190 */ 361, 361, 361, 361, }; -#define YY_SHIFT_COUNT (610) +#define YY_SHIFT_COUNT (611) #define YY_SHIFT_MIN (0) -#define YY_SHIFT_MAX (1757) +#define YY_SHIFT_MAX (1941) static const unsigned short int yy_shift_ofst[] = { - /* 0 */ 768, 0, 0, 48, 234, 234, 234, 234, 255, 255, - /* 10 */ 234, 234, 441, 462, 648, 462, 462, 462, 462, 462, - /* 20 */ 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, - /* 30 */ 462, 462, 462, 462, 462, 462, 462, 462, 254, 254, - /* 40 */ 54, 54, 54, 1188, 1188, 1188, 1188, 331, 508, 74, - /* 50 */ 4, 4, 7, 7, 76, 74, 74, 4, 4, 4, - /* 60 */ 4, 4, 4, 216, 4, 265, 371, 527, 265, 4, - /* 70 */ 4, 265, 4, 265, 265, 527, 265, 4, 447, 644, - /* 80 */ 14, 554, 554, 139, 192, 1453, 1453, 1453, 1453, 1453, - /* 90 */ 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, - /* 100 */ 1453, 1453, 1453, 1453, 604, 229, 482, 482, 198, 5, - /* 110 */ 438, 438, 438, 764, 5, 772, 527, 265, 265, 527, - /* 120 */ 487, 468, 636, 636, 636, 636, 636, 636, 636, 440, - /* 130 */ 299, 222, 27, 486, 37, 346, 287, 456, 681, 674, - /* 140 */ 484, 769, 470, 652, 470, 390, 390, 390, 615, 773, - /* 150 */ 948, 963, 966, 864, 948, 948, 979, 886, 886, 948, - /* 160 */ 1014, 1014, 1020, 216, 527, 216, 1040, 1051, 216, 1040, - /* 170 */ 216, 772, 1066, 216, 216, 948, 216, 1014, 265, 265, - /* 180 */ 265, 265, 265, 265, 265, 265, 265, 265, 265, 948, - /* 190 */ 1014, 1043, 1020, 447, 967, 527, 447, 1040, 447, 772, - /* 200 */ 1066, 447, 1118, 924, 937, 1043, 924, 937, 1043, 1043, - /* 210 */ 265, 931, 938, 968, 970, 974, 772, 1159, 1145, 957, - /* 220 */ 971, 960, 957, 971, 957, 971, 1112, 937, 1043, 1043, - /* 230 */ 937, 1043, 1064, 772, 1066, 447, 487, 447, 772, 1146, - /* 240 */ 468, 948, 447, 1014, 2153, 2153, 2153, 2153, 2153, 2153, - /* 250 */ 2153, 2153, 71, 1425, 93, 453, 248, 587, 187, 63, - /* 260 */ 385, 391, 211, 570, 95, 95, 95, 95, 95, 95, - /* 270 */ 95, 95, 357, 2, 52, 492, 712, 655, 661, 661, - /* 280 */ 661, 661, 854, 501, 786, 788, 790, 792, 857, 863, - /* 290 */ 867, 862, 557, 677, 880, 881, 888, 900, 715, 749, - /* 300 */ 805, 891, 824, 892, 868, 893, 898, 928, 930, 951, - /* 310 */ 869, 879, 955, 956, 961, 965, 975, 976, 807, 242, - /* 320 */ 1261, 1262, 1192, 1265, 1227, 1107, 1237, 1239, 1240, 1114, - /* 330 */ 1288, 1245, 1246, 1119, 1294, 1249, 1297, 1251, 1300, 1254, - /* 340 */ 1304, 1224, 1144, 1147, 1193, 1151, 1312, 1314, 1161, 1163, - /* 350 */ 1318, 1319, 1278, 1329, 1332, 1333, 1334, 1336, 1337, 1338, - /* 360 */ 1339, 1340, 1341, 1342, 1343, 1344, 1347, 1348, 1349, 1350, - /* 370 */ 1351, 1324, 1354, 1366, 1369, 1371, 1372, 1373, 1352, 1375, - /* 380 */ 1376, 1377, 1382, 1383, 1385, 1346, 1359, 1356, 1381, 1355, - /* 390 */ 1384, 1360, 1402, 1365, 1368, 1407, 1408, 1409, 1379, 1410, - /* 400 */ 1412, 1380, 1413, 1361, 1419, 1421, 1378, 1389, 1386, 1422, - /* 410 */ 1394, 1398, 1390, 1426, 1400, 1411, 1392, 1430, 1414, 1415, - /* 420 */ 1396, 1457, 1459, 1462, 1463, 1391, 1395, 1418, 1447, 1467, - /* 430 */ 1427, 1435, 1437, 1439, 1431, 1432, 1440, 1449, 1450, 1498, - /* 440 */ 1477, 1501, 1481, 1456, 1506, 1485, 1464, 1509, 1488, 1513, - /* 450 */ 1492, 1495, 1518, 1374, 1472, 1521, 1362, 1500, 1399, 1387, - /* 460 */ 1524, 1526, 1527, 1448, 1491, 1393, 1490, 1494, 1330, 1460, - /* 470 */ 1505, 1465, 1451, 1468, 1469, 1466, 1511, 1510, 1514, 1474, - /* 480 */ 1512, 1363, 1475, 1478, 1517, 1357, 1522, 1520, 1480, 1533, - /* 490 */ 1364, 1497, 1528, 1529, 1534, 1535, 1536, 1537, 1497, 1578, - /* 500 */ 1405, 1545, 1507, 1523, 1530, 1543, 1525, 1532, 1544, 1570, - /* 510 */ 1420, 1538, 1540, 1542, 1539, 1546, 1461, 1547, 1603, 1572, - /* 520 */ 1473, 1549, 1519, 1564, 1574, 1551, 1553, 1555, 1593, 1558, - /* 530 */ 1531, 1567, 1569, 1579, 1559, 1568, 1605, 1573, 1575, 1606, - /* 540 */ 1577, 1580, 1608, 1582, 1583, 1609, 1585, 1556, 1565, 1581, - /* 550 */ 1584, 1638, 1576, 1599, 1601, 1617, 1602, 1586, 1637, 1663, - /* 560 */ 1566, 1629, 1643, 1627, 1613, 1652, 1647, 1648, 1649, 1650, - /* 570 */ 1662, 1677, 1664, 1665, 1646, 1431, 1666, 1432, 1667, 1670, - /* 580 */ 1671, 1672, 1673, 1674, 1722, 1676, 1681, 1690, 1728, 1683, - /* 590 */ 1686, 1695, 1733, 1688, 1692, 1702, 1740, 1694, 1697, 1706, - /* 600 */ 1744, 1698, 1701, 1748, 1757, 1745, 1747, 1749, 1751, 1753, - /* 610 */ 1746, + /* 0 */ 687, 0, 0, 48, 96, 96, 96, 96, 283, 283, + /* 10 */ 96, 96, 331, 379, 566, 379, 379, 379, 379, 379, + /* 20 */ 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, + /* 30 */ 379, 379, 379, 379, 379, 379, 379, 379, 281, 281, + /* 40 */ 26, 26, 26, 1941, 1941, 1941, 1941, 328, 64, 191, + /* 50 */ 39, 39, 14, 14, 146, 191, 191, 39, 39, 39, + /* 60 */ 39, 39, 39, 108, 39, 163, 229, 485, 163, 39, + /* 70 */ 39, 163, 39, 163, 163, 485, 163, 39, 667, 562, + /* 80 */ 62, 762, 762, 188, 266, 823, 823, 823, 823, 823, + /* 90 */ 823, 823, 823, 823, 823, 823, 823, 823, 823, 823, + /* 100 */ 823, 823, 823, 823, 213, 376, 332, 332, 42, 544, + /* 110 */ 517, 517, 517, 311, 544, 630, 485, 163, 163, 485, + /* 120 */ 616, 665, 446, 446, 446, 446, 446, 446, 446, 1234, + /* 130 */ 427, 435, 471, 200, 36, 223, 119, 597, 592, 327, + /* 140 */ 707, 715, 576, 464, 576, 587, 587, 587, 202, 729, + /* 150 */ 1019, 996, 998, 889, 1019, 1019, 1016, 928, 928, 1019, + /* 160 */ 1058, 1058, 1061, 108, 485, 108, 1064, 1078, 108, 1064, + /* 170 */ 108, 630, 1088, 108, 108, 1019, 108, 1058, 163, 163, + /* 180 */ 163, 163, 163, 163, 163, 163, 163, 163, 163, 1019, + /* 190 */ 1058, 1070, 1061, 667, 984, 485, 667, 1064, 667, 630, + /* 200 */ 1088, 667, 1144, 948, 950, 1070, 948, 950, 1070, 1070, + /* 210 */ 163, 946, 1048, 986, 990, 995, 630, 1187, 1169, 994, + /* 220 */ 988, 993, 994, 988, 994, 988, 1132, 950, 1070, 1070, + /* 230 */ 950, 1070, 1108, 630, 1088, 667, 616, 667, 630, 1181, + /* 240 */ 665, 1019, 667, 1058, 2136, 2136, 2136, 2136, 2136, 2136, + /* 250 */ 2136, 2136, 247, 573, 614, 1106, 488, 741, 18, 13, + /* 260 */ 581, 238, 520, 243, 244, 244, 244, 244, 244, 244, + /* 270 */ 244, 244, 477, 148, 59, 5, 583, 230, 697, 697, + /* 280 */ 697, 697, 792, 833, 654, 743, 795, 808, 444, 829, + /* 290 */ 917, 902, 656, 745, 890, 901, 903, 926, 733, 489, + /* 300 */ 704, 910, 813, 911, 899, 914, 915, 916, 918, 919, + /* 310 */ 888, 898, 945, 954, 962, 968, 970, 981, 804, 967, + /* 320 */ 1298, 1300, 1229, 1302, 1256, 1127, 1258, 1259, 1260, 1131, + /* 330 */ 1310, 1265, 1268, 1141, 1319, 1273, 1321, 1275, 1323, 1277, + /* 340 */ 1325, 1245, 1164, 1166, 1215, 1172, 1332, 1341, 1188, 1190, + /* 350 */ 1342, 1345, 1304, 1346, 1349, 1350, 1352, 1353, 1354, 1355, + /* 360 */ 1356, 1358, 1360, 1362, 1363, 1364, 1365, 1366, 1367, 1369, + /* 370 */ 1370, 1331, 1372, 1373, 1374, 1375, 1377, 1380, 1368, 1389, + /* 380 */ 1391, 1392, 1393, 1394, 1400, 1357, 1361, 1371, 1388, 1359, + /* 390 */ 1396, 1376, 1406, 1378, 1386, 1407, 1408, 1411, 1387, 1267, + /* 400 */ 1413, 1417, 1390, 1425, 1385, 1428, 1446, 1401, 1402, 1412, + /* 410 */ 1451, 1405, 1409, 1416, 1455, 1410, 1414, 1419, 1460, 1415, + /* 420 */ 1418, 1424, 1464, 1466, 1467, 1469, 1381, 1398, 1429, 1453, + /* 430 */ 1477, 1431, 1432, 1433, 1434, 1441, 1443, 1444, 1456, 1458, + /* 440 */ 1488, 1478, 1502, 1495, 1470, 1515, 1497, 1475, 1524, 1504, + /* 450 */ 1527, 1506, 1509, 1530, 1403, 1485, 1533, 1384, 1512, 1404, + /* 460 */ 1395, 1536, 1539, 1546, 1473, 1514, 1422, 1523, 1525, 1379, + /* 470 */ 1483, 1526, 1486, 1489, 1491, 1492, 1487, 1535, 1534, 1537, + /* 480 */ 1498, 1542, 1399, 1500, 1503, 1540, 1420, 1545, 1543, 1507, + /* 490 */ 1547, 1421, 1508, 1544, 1554, 1556, 1557, 1559, 1560, 1508, + /* 500 */ 1572, 1427, 1552, 1528, 1499, 1529, 1565, 1531, 1538, 1571, + /* 510 */ 1594, 1435, 1549, 1550, 1551, 1558, 1561, 1476, 1562, 1617, + /* 520 */ 1584, 1481, 1564, 1555, 1580, 1582, 1574, 1575, 1577, 1609, + /* 530 */ 1578, 1568, 1581, 1587, 1588, 1583, 1585, 1590, 1589, 1592, + /* 540 */ 1591, 1596, 1597, 1615, 1599, 1600, 1618, 1602, 1567, 1573, + /* 550 */ 1576, 1579, 1619, 1563, 1604, 1607, 1622, 1608, 1610, 1640, + /* 560 */ 1644, 1569, 1633, 1646, 1630, 1624, 1663, 1658, 1659, 1661, + /* 570 */ 1671, 1673, 1694, 1674, 1675, 1662, 1441, 1678, 1443, 1681, + /* 580 */ 1682, 1683, 1684, 1685, 1686, 1734, 1688, 1692, 1701, 1739, + /* 590 */ 1695, 1696, 1712, 1751, 1705, 1708, 1717, 1765, 1709, 1713, + /* 600 */ 1720, 1759, 1714, 1716, 1760, 1766, 1745, 1747, 1748, 1749, + /* 610 */ 1753, 1755, }; #define YY_REDUCE_COUNT (251) -#define YY_REDUCE_MIN (-320) -#define YY_REDUCE_MAX (1796) +#define YY_REDUCE_MIN (-314) +#define YY_REDUCE_MAX (1756) static const short yy_reduce_ofst[] = { - /* 0 */ 259, -226, 236, 61, 577, 638, 671, 752, 784, 835, - /* 10 */ 29, 850, 901, 953, 736, 962, 1010, 1042, 1074, 1122, - /* 20 */ 1135, 1175, 1223, 1280, 1328, 1358, 1388, 1436, 1445, 1493, - /* 30 */ 1541, 1552, 1571, 1630, 1639, 1699, 1708, 1756, 1760, 1796, - /* 40 */ -20, 261, 269, -272, 207, 204, 298, 182, 449, 512, - /* 50 */ -244, -164, -246, -241, -320, -178, -76, -196, 55, 59, - /* 60 */ 132, 239, 419, -222, 422, -227, -256, -139, -1, 534, - /* 70 */ 535, 84, 537, 310, 102, 179, 448, 568, 343, -75, - /* 80 */ -315, -315, -315, -228, -49, 60, 90, 123, 194, 213, - /* 90 */ 219, 235, 317, 380, 472, 507, 559, 565, 566, 567, - /* 100 */ 569, 572, 576, 579, -154, -152, -216, -68, 33, 138, - /* 110 */ 75, 406, 414, -3, 176, -127, 250, 88, 439, 325, - /* 120 */ 202, 111, 302, 526, 555, 578, 583, 612, 631, 605, - /* 130 */ 663, 653, 571, 574, 628, 592, 666, 666, 689, 690, - /* 140 */ 662, 647, 635, 635, 635, 629, 637, 650, 665, 666, - /* 150 */ 751, 703, 757, 717, 771, 774, 735, 743, 745, 782, - /* 160 */ 791, 794, 737, 789, 759, 806, 777, 776, 827, 787, - /* 170 */ 830, 808, 798, 834, 836, 842, 840, 851, 832, 837, - /* 180 */ 838, 839, 841, 844, 845, 846, 847, 848, 849, 855, - /* 190 */ 866, 820, 817, 872, 822, 852, 874, 833, 878, 856, - /* 200 */ 843, 884, 859, 797, 853, 865, 810, 875, 882, 883, - /* 210 */ 666, 811, 816, 860, 870, 635, 905, 877, 876, 858, - /* 220 */ 871, 829, 873, 885, 889, 894, 903, 908, 902, 904, - /* 230 */ 910, 906, 917, 947, 919, 977, 964, 981, 958, 972, - /* 240 */ 982, 986, 985, 995, 943, 944, 959, 984, 989, 991, - /* 250 */ 1005, 1019, + /* 0 */ 33, -226, 494, 90, 593, 344, 661, 744, 776, 806, + /* 10 */ 864, 904, -147, 923, 955, 1020, 1068, 1116, 1125, 1179, + /* 20 */ 1194, 1227, 1242, 1282, 1334, 1382, 1397, 1430, 1484, 1493, + /* 30 */ 1541, 1553, 1593, 1606, 1654, 1669, 1702, 1756, 545, 674, + /* 40 */ -196, 398, 556, -272, -270, -238, -162, 428, 38, 76, + /* 50 */ -164, 459, -241, -205, -287, -229, 24, -101, 92, 252, + /* 60 */ 357, 370, 457, 73, 519, -269, -115, -170, 102, 539, + /* 70 */ 540, 228, 553, 170, 338, 270, 508, 580, 402, 420, + /* 80 */ -314, -314, -314, -193, -103, -227, -67, -22, 123, 168, + /* 90 */ 204, 319, 386, 440, 501, 503, 523, 548, 554, 582, + /* 100 */ 606, 612, 625, 626, -246, -172, 29, 199, -54, 130, + /* 110 */ -207, -194, -37, 236, 205, 212, 141, 395, 629, 310, + /* 120 */ 439, 511, -253, 527, 604, 666, 675, 676, 677, -303, + /* 130 */ 689, 686, 599, 668, 709, 673, 749, 749, 772, 773, + /* 140 */ 746, 713, 692, 692, 692, 679, 681, 682, 698, 749, + /* 150 */ 790, 734, 786, 747, 801, 803, 779, 785, 789, 826, + /* 160 */ 834, 835, 778, 832, 799, 842, 805, 800, 846, 807, + /* 170 */ 848, 827, 819, 856, 857, 863, 859, 872, 847, 858, + /* 180 */ 860, 862, 865, 866, 867, 869, 870, 871, 873, 877, + /* 190 */ 885, 853, 843, 896, 850, 874, 906, 855, 907, 876, + /* 200 */ 875, 920, 878, 820, 882, 879, 821, 891, 895, 908, + /* 210 */ 749, 849, 854, 861, 868, 692, 927, 897, 881, 880, + /* 220 */ 892, 887, 894, 900, 905, 912, 924, 934, 936, 937, + /* 230 */ 951, 949, 961, 976, 966, 1004, 991, 1006, 982, 989, + /* 240 */ 1013, 1026, 1024, 1037, 992, 978, 997, 1025, 1027, 1028, + /* 250 */ 1042, 1056, }; static const YYACTIONTYPE yy_default[] = { - /* 0 */ 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, - /* 10 */ 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, - /* 20 */ 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, - /* 30 */ 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, - /* 40 */ 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, - /* 50 */ 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, - /* 60 */ 1356, 1356, 1356, 1425, 1356, 1356, 1356, 1356, 1356, 1356, - /* 70 */ 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1423, 1564, - /* 80 */ 1356, 1731, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, - /* 90 */ 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, - /* 100 */ 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1425, 1356, - /* 110 */ 1742, 1742, 1742, 1423, 1356, 1356, 1356, 1356, 1356, 1356, - /* 120 */ 1519, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1603, - /* 130 */ 1356, 1356, 1808, 1356, 1609, 1766, 1356, 1356, 1356, 1356, - /* 140 */ 1472, 1758, 1734, 1748, 1735, 1793, 1793, 1793, 1751, 1356, - /* 150 */ 1356, 1356, 1356, 1595, 1356, 1356, 1569, 1566, 1566, 1356, - /* 160 */ 1356, 1356, 1356, 1425, 1356, 1425, 1356, 1356, 1425, 1356, - /* 170 */ 1425, 1356, 1356, 1425, 1425, 1356, 1425, 1356, 1356, 1356, - /* 180 */ 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, - /* 190 */ 1356, 1356, 1356, 1423, 1605, 1356, 1423, 1356, 1423, 1356, - /* 200 */ 1356, 1423, 1356, 1773, 1771, 1356, 1773, 1771, 1356, 1356, - /* 210 */ 1356, 1785, 1781, 1764, 1762, 1748, 1356, 1356, 1356, 1799, - /* 220 */ 1795, 1811, 1799, 1795, 1799, 1795, 1356, 1771, 1356, 1356, - /* 230 */ 1771, 1356, 1577, 1356, 1356, 1423, 1356, 1423, 1356, 1488, - /* 240 */ 1356, 1356, 1423, 1356, 1597, 1611, 1587, 1522, 1522, 1522, - /* 250 */ 1426, 1361, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, - /* 260 */ 1356, 1356, 1356, 1484, 1675, 1784, 1783, 1707, 1706, 1705, - /* 270 */ 1703, 1674, 1356, 1356, 1356, 1356, 1356, 1356, 1668, 1669, - /* 280 */ 1667, 1666, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, - /* 290 */ 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1732, 1356, 1796, - /* 300 */ 1800, 1356, 1356, 1356, 1651, 1356, 1356, 1356, 1356, 1356, - /* 310 */ 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, - /* 320 */ 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, - /* 330 */ 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, - /* 340 */ 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, - /* 350 */ 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, - /* 360 */ 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, - /* 370 */ 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, - /* 380 */ 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1390, 1356, 1356, - /* 390 */ 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, - /* 400 */ 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, - /* 410 */ 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, - /* 420 */ 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, - /* 430 */ 1356, 1356, 1356, 1356, 1453, 1452, 1356, 1356, 1356, 1356, - /* 440 */ 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, - /* 450 */ 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, - /* 460 */ 1356, 1356, 1356, 1356, 1356, 1356, 1755, 1765, 1356, 1356, - /* 470 */ 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1651, 1356, - /* 480 */ 1782, 1356, 1741, 1737, 1356, 1356, 1733, 1356, 1356, 1794, - /* 490 */ 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1727, - /* 500 */ 1356, 1700, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, - /* 510 */ 1662, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, - /* 520 */ 1356, 1356, 1356, 1650, 1356, 1691, 1356, 1356, 1356, 1356, - /* 530 */ 1356, 1356, 1356, 1356, 1516, 1356, 1356, 1356, 1356, 1356, - /* 540 */ 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1501, 1499, 1498, - /* 550 */ 1497, 1356, 1494, 1356, 1356, 1356, 1356, 1356, 1356, 1356, - /* 560 */ 1356, 1356, 1356, 1356, 1356, 1445, 1356, 1356, 1356, 1356, - /* 570 */ 1356, 1356, 1356, 1356, 1356, 1436, 1356, 1435, 1356, 1356, - /* 580 */ 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, - /* 590 */ 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, - /* 600 */ 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, 1356, - /* 610 */ 1356, + /* 0 */ 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + /* 10 */ 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + /* 20 */ 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + /* 30 */ 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + /* 40 */ 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + /* 50 */ 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + /* 60 */ 1357, 1357, 1357, 1426, 1357, 1357, 1357, 1357, 1357, 1357, + /* 70 */ 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1424, 1565, + /* 80 */ 1357, 1732, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + /* 90 */ 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + /* 100 */ 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1426, 1357, + /* 110 */ 1743, 1743, 1743, 1424, 1357, 1357, 1357, 1357, 1357, 1357, + /* 120 */ 1520, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1604, + /* 130 */ 1357, 1357, 1809, 1357, 1610, 1767, 1357, 1357, 1357, 1357, + /* 140 */ 1473, 1759, 1735, 1749, 1736, 1794, 1794, 1794, 1752, 1357, + /* 150 */ 1357, 1357, 1357, 1596, 1357, 1357, 1570, 1567, 1567, 1357, + /* 160 */ 1357, 1357, 1357, 1426, 1357, 1426, 1357, 1357, 1426, 1357, + /* 170 */ 1426, 1357, 1357, 1426, 1426, 1357, 1426, 1357, 1357, 1357, + /* 180 */ 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + /* 190 */ 1357, 1357, 1357, 1424, 1606, 1357, 1424, 1357, 1424, 1357, + /* 200 */ 1357, 1424, 1357, 1774, 1772, 1357, 1774, 1772, 1357, 1357, + /* 210 */ 1357, 1786, 1782, 1765, 1763, 1749, 1357, 1357, 1357, 1800, + /* 220 */ 1796, 1812, 1800, 1796, 1800, 1796, 1357, 1772, 1357, 1357, + /* 230 */ 1772, 1357, 1578, 1357, 1357, 1424, 1357, 1424, 1357, 1489, + /* 240 */ 1357, 1357, 1424, 1357, 1598, 1612, 1588, 1523, 1523, 1523, + /* 250 */ 1427, 1362, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + /* 260 */ 1357, 1357, 1357, 1485, 1676, 1785, 1784, 1708, 1707, 1706, + /* 270 */ 1704, 1675, 1357, 1357, 1357, 1357, 1357, 1357, 1669, 1670, + /* 280 */ 1668, 1667, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + /* 290 */ 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1733, 1357, 1797, + /* 300 */ 1801, 1357, 1357, 1357, 1652, 1357, 1357, 1357, 1357, 1357, + /* 310 */ 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + /* 320 */ 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + /* 330 */ 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + /* 340 */ 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + /* 350 */ 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + /* 360 */ 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + /* 370 */ 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + /* 380 */ 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1391, 1357, 1357, + /* 390 */ 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + /* 400 */ 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + /* 410 */ 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + /* 420 */ 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + /* 430 */ 1357, 1357, 1357, 1357, 1357, 1454, 1453, 1357, 1357, 1357, + /* 440 */ 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + /* 450 */ 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + /* 460 */ 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1756, 1766, 1357, + /* 470 */ 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1652, + /* 480 */ 1357, 1783, 1357, 1742, 1738, 1357, 1357, 1734, 1357, 1357, + /* 490 */ 1795, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + /* 500 */ 1728, 1357, 1701, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + /* 510 */ 1357, 1663, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + /* 520 */ 1357, 1357, 1357, 1357, 1651, 1357, 1692, 1357, 1357, 1357, + /* 530 */ 1357, 1357, 1357, 1357, 1357, 1517, 1357, 1357, 1357, 1357, + /* 540 */ 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1502, 1500, + /* 550 */ 1499, 1498, 1357, 1495, 1357, 1357, 1357, 1357, 1357, 1357, + /* 560 */ 1357, 1357, 1357, 1357, 1357, 1357, 1446, 1357, 1357, 1357, + /* 570 */ 1357, 1357, 1357, 1357, 1357, 1357, 1437, 1357, 1436, 1357, + /* 580 */ 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + /* 590 */ 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + /* 600 */ 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + /* 610 */ 1357, 1357, }; /********** End of lemon-generated parsing tables *****************************/ @@ -975,7 +977,8 @@ static const YYCODETYPE yyFallback[] = { 0, /* INTERVAL => nothing */ 0, /* TOPIC => nothing */ 0, /* AS => nothing */ - 0, /* CGROUP => nothing */ + 0, /* CONSUMER => nothing */ + 0, /* GROUP => nothing */ 0, /* WITH => nothing */ 0, /* SCHEMA => nothing */ 0, /* DESC => nothing */ @@ -1052,7 +1055,6 @@ static const YYCODETYPE yyFallback[] = { 0, /* PREV => nothing */ 0, /* LINEAR => nothing */ 0, /* NEXT => nothing */ - 0, /* GROUP => nothing */ 0, /* HAVING => nothing */ 0, /* ORDER => nothing */ 0, /* SLIMIT => nothing */ @@ -1302,84 +1304,84 @@ static const char *const yyTokenName[] = { /* 144 */ "INTERVAL", /* 145 */ "TOPIC", /* 146 */ "AS", - /* 147 */ "CGROUP", - /* 148 */ "WITH", - /* 149 */ "SCHEMA", - /* 150 */ "DESC", - /* 151 */ "DESCRIBE", - /* 152 */ "RESET", - /* 153 */ "QUERY", - /* 154 */ "CACHE", - /* 155 */ "EXPLAIN", - /* 156 */ "ANALYZE", - /* 157 */ "VERBOSE", - /* 158 */ "NK_BOOL", - /* 159 */ "RATIO", - /* 160 */ "COMPACT", - /* 161 */ "VNODES", - /* 162 */ "IN", - /* 163 */ "OUTPUTTYPE", - /* 164 */ "AGGREGATE", - /* 165 */ "BUFSIZE", - /* 166 */ "STREAM", - /* 167 */ "INTO", - /* 168 */ "TRIGGER", - /* 169 */ "AT_ONCE", - /* 170 */ "WINDOW_CLOSE", - /* 171 */ "WATERMARK", - /* 172 */ "KILL", - /* 173 */ "CONNECTION", - /* 174 */ "TRANSACTION", - /* 175 */ "MERGE", - /* 176 */ "VGROUP", - /* 177 */ "REDISTRIBUTE", - /* 178 */ "SPLIT", - /* 179 */ "SYNCDB", - /* 180 */ "NULL", - /* 181 */ "NK_QUESTION", - /* 182 */ "NK_ARROW", - /* 183 */ "ROWTS", - /* 184 */ "TBNAME", - /* 185 */ "QSTARTTS", - /* 186 */ "QENDTS", - /* 187 */ "WSTARTTS", - /* 188 */ "WENDTS", - /* 189 */ "WDURATION", - /* 190 */ "CAST", - /* 191 */ "NOW", - /* 192 */ "TODAY", - /* 193 */ "TIMEZONE", - /* 194 */ "COUNT", - /* 195 */ "FIRST", - /* 196 */ "LAST", - /* 197 */ "LAST_ROW", - /* 198 */ "BETWEEN", - /* 199 */ "IS", - /* 200 */ "NK_LT", - /* 201 */ "NK_GT", - /* 202 */ "NK_LE", - /* 203 */ "NK_GE", - /* 204 */ "NK_NE", - /* 205 */ "MATCH", - /* 206 */ "NMATCH", - /* 207 */ "CONTAINS", - /* 208 */ "JOIN", - /* 209 */ "INNER", - /* 210 */ "SELECT", - /* 211 */ "DISTINCT", - /* 212 */ "WHERE", - /* 213 */ "PARTITION", - /* 214 */ "BY", - /* 215 */ "SESSION", - /* 216 */ "STATE_WINDOW", - /* 217 */ "SLIDING", - /* 218 */ "FILL", - /* 219 */ "VALUE", - /* 220 */ "NONE", - /* 221 */ "PREV", - /* 222 */ "LINEAR", - /* 223 */ "NEXT", - /* 224 */ "GROUP", + /* 147 */ "CONSUMER", + /* 148 */ "GROUP", + /* 149 */ "WITH", + /* 150 */ "SCHEMA", + /* 151 */ "DESC", + /* 152 */ "DESCRIBE", + /* 153 */ "RESET", + /* 154 */ "QUERY", + /* 155 */ "CACHE", + /* 156 */ "EXPLAIN", + /* 157 */ "ANALYZE", + /* 158 */ "VERBOSE", + /* 159 */ "NK_BOOL", + /* 160 */ "RATIO", + /* 161 */ "COMPACT", + /* 162 */ "VNODES", + /* 163 */ "IN", + /* 164 */ "OUTPUTTYPE", + /* 165 */ "AGGREGATE", + /* 166 */ "BUFSIZE", + /* 167 */ "STREAM", + /* 168 */ "INTO", + /* 169 */ "TRIGGER", + /* 170 */ "AT_ONCE", + /* 171 */ "WINDOW_CLOSE", + /* 172 */ "WATERMARK", + /* 173 */ "KILL", + /* 174 */ "CONNECTION", + /* 175 */ "TRANSACTION", + /* 176 */ "MERGE", + /* 177 */ "VGROUP", + /* 178 */ "REDISTRIBUTE", + /* 179 */ "SPLIT", + /* 180 */ "SYNCDB", + /* 181 */ "NULL", + /* 182 */ "NK_QUESTION", + /* 183 */ "NK_ARROW", + /* 184 */ "ROWTS", + /* 185 */ "TBNAME", + /* 186 */ "QSTARTTS", + /* 187 */ "QENDTS", + /* 188 */ "WSTARTTS", + /* 189 */ "WENDTS", + /* 190 */ "WDURATION", + /* 191 */ "CAST", + /* 192 */ "NOW", + /* 193 */ "TODAY", + /* 194 */ "TIMEZONE", + /* 195 */ "COUNT", + /* 196 */ "FIRST", + /* 197 */ "LAST", + /* 198 */ "LAST_ROW", + /* 199 */ "BETWEEN", + /* 200 */ "IS", + /* 201 */ "NK_LT", + /* 202 */ "NK_GT", + /* 203 */ "NK_LE", + /* 204 */ "NK_GE", + /* 205 */ "NK_NE", + /* 206 */ "MATCH", + /* 207 */ "NMATCH", + /* 208 */ "CONTAINS", + /* 209 */ "JOIN", + /* 210 */ "INNER", + /* 211 */ "SELECT", + /* 212 */ "DISTINCT", + /* 213 */ "WHERE", + /* 214 */ "PARTITION", + /* 215 */ "BY", + /* 216 */ "SESSION", + /* 217 */ "STATE_WINDOW", + /* 218 */ "SLIDING", + /* 219 */ "FILL", + /* 220 */ "VALUE", + /* 221 */ "NONE", + /* 222 */ "PREV", + /* 223 */ "LINEAR", + /* 224 */ "NEXT", /* 225 */ "HAVING", /* 226 */ "ORDER", /* 227 */ "SLIMIT", @@ -1750,7 +1752,7 @@ static const char *const yyRuleName[] = { /* 224 */ "cmd ::= CREATE TOPIC not_exists_opt topic_name topic_options AS query_expression", /* 225 */ "cmd ::= CREATE TOPIC not_exists_opt topic_name topic_options AS db_name", /* 226 */ "cmd ::= DROP TOPIC exists_opt topic_name", - /* 227 */ "cmd ::= DROP CGROUP exists_opt cgroup_name ON topic_name", + /* 227 */ "cmd ::= DROP CONSUMER GROUP exists_opt cgroup_name ON topic_name", /* 228 */ "topic_options ::=", /* 229 */ "topic_options ::= topic_options WITH TABLE", /* 230 */ "topic_options ::= topic_options WITH SCHEMA", @@ -2798,7 +2800,7 @@ static const struct { { 240, -7 }, /* (224) cmd ::= CREATE TOPIC not_exists_opt topic_name topic_options AS query_expression */ { 240, -7 }, /* (225) cmd ::= CREATE TOPIC not_exists_opt topic_name topic_options AS db_name */ { 240, -4 }, /* (226) cmd ::= DROP TOPIC exists_opt topic_name */ - { 240, -6 }, /* (227) cmd ::= DROP CGROUP exists_opt cgroup_name ON topic_name */ + { 240, -7 }, /* (227) cmd ::= DROP CONSUMER GROUP exists_opt cgroup_name ON topic_name */ { 298, 0 }, /* (228) topic_options ::= */ { 298, -3 }, /* (229) topic_options ::= topic_options WITH TABLE */ { 298, -3 }, /* (230) topic_options ::= topic_options WITH SCHEMA */ @@ -3827,7 +3829,7 @@ static YYACTIONTYPE yy_reduce( case 226: /* cmd ::= DROP TOPIC exists_opt topic_name */ { pCxt->pRootNode = createDropTopicStmt(pCxt, yymsp[-1].minor.yy603, &yymsp[0].minor.yy53); } break; - case 227: /* cmd ::= DROP CGROUP exists_opt cgroup_name ON topic_name */ + case 227: /* cmd ::= DROP CONSUMER GROUP exists_opt cgroup_name ON topic_name */ { pCxt->pRootNode = createDropCGroupStmt(pCxt, yymsp[-3].minor.yy603, &yymsp[-2].minor.yy53, &yymsp[0].minor.yy53); } break; case 228: /* topic_options ::= */ diff --git a/source/libs/parser/test/parInitialDTest.cpp b/source/libs/parser/test/parInitialDTest.cpp index 57d349e7ee..5ad427d964 100644 --- a/source/libs/parser/test/parInitialDTest.cpp +++ b/source/libs/parser/test/parInitialDTest.cpp @@ -32,7 +32,7 @@ TEST_F(ParserInitialDTest, dropBnode) { run("DROP BNODE ON DNODE 1"); } -// DROP CGROUP [ IF EXISTS ] cgroup_name ON topic_name +// DROP CONSUMER GROUP [ IF EXISTS ] cgroup_name ON topic_name TEST_F(ParserInitialDTest, dropCGroup) { useDb("root", "test"); @@ -56,10 +56,10 @@ TEST_F(ParserInitialDTest, dropCGroup) { }); setDropCgroupReqFunc("tp1", "cg1"); - run("DROP CGROUP cg1 ON tp1"); + run("DROP CONSUMER GROUP cg1 ON tp1"); setDropCgroupReqFunc("tp1", "cg1", 1); - run("DROP CGROUP IF EXISTS cg1 ON tp1"); + run("DROP CONSUMER GROUP IF EXISTS cg1 ON tp1"); } // todo drop database diff --git a/source/libs/parser/test/parSelectTest.cpp b/source/libs/parser/test/parSelectTest.cpp index a675bb936f..a5192595f0 100644 --- a/source/libs/parser/test/parSelectTest.cpp +++ b/source/libs/parser/test/parSelectTest.cpp @@ -252,6 +252,8 @@ TEST_F(ParserSelectTest, semanticError) { // TSDB_CODE_PAR_AMBIGUOUS_COLUMN run("SELECT c2 FROM t1 tt1, t1 tt2 WHERE tt1.c1 = tt2.c1", TSDB_CODE_PAR_AMBIGUOUS_COLUMN, PARSER_STAGE_TRANSLATE); + run("SELECT c2 FROM (SELECT c1 c2, c2 FROM t1)", TSDB_CODE_PAR_AMBIGUOUS_COLUMN, PARSER_STAGE_TRANSLATE); + // TSDB_CODE_PAR_WRONG_VALUE_TYPE run("SELECT timestamp '2010a' FROM t1", TSDB_CODE_PAR_WRONG_VALUE_TYPE, PARSER_STAGE_TRANSLATE); diff --git a/source/libs/planner/src/planLogicCreater.c b/source/libs/planner/src/planLogicCreater.c index 467b26b7c4..2df248e53f 100644 --- a/source/libs/planner/src/planLogicCreater.c +++ b/source/libs/planner/src/planLogicCreater.c @@ -124,6 +124,7 @@ static int32_t createChildLogicNode(SLogicPlanContext* pCxt, SSelectStmt* pSelec SLogicNode* pNode = NULL; int32_t code = func(pCxt, pSelect, &pNode); if (TSDB_CODE_SUCCESS == code && NULL != pNode) { + pNode->precision = pSelect->precision; code = pushLogicNode(pCxt, pRoot, pNode); } if (TSDB_CODE_SUCCESS != code) { @@ -400,6 +401,7 @@ static int32_t createLogicNodeByTable(SLogicPlanContext* pCxt, SSelectStmt* pSel nodesDestroyNode(pNode); return TSDB_CODE_OUT_OF_MEMORY; } + pNode->precision = pSelect->precision; *pLogicNode = pNode; } return code; -- GitLab