From df06d22cb3eaf9021526994b83f4636780daea2e Mon Sep 17 00:00:00 2001 From: Xiaoyu Wang Date: Fri, 8 Jul 2022 17:35:11 +0800 Subject: [PATCH] fix: some problem of parser and planner --- include/libs/scalar/scalar.h | 2 +- source/common/src/systable.c | 2 +- source/dnode/mnode/impl/src/mndSma.c | 11 +- source/libs/parser/inc/sql.y | 2 +- source/libs/parser/src/parCalcConst.c | 6 +- source/libs/parser/src/parTranslater.c | 147 +---- source/libs/parser/src/sql.c | 834 ++++++++++++------------ source/libs/planner/src/planOptimizer.c | 4 +- source/libs/scalar/src/scalar.c | 149 +++-- 9 files changed, 552 insertions(+), 605 deletions(-) diff --git a/include/libs/scalar/scalar.h b/include/libs/scalar/scalar.h index aaebffa118..2a1a75c431 100644 --- a/include/libs/scalar/scalar.h +++ b/include/libs/scalar/scalar.h @@ -25,7 +25,7 @@ extern "C" { typedef struct SFilterInfo SFilterInfo; -int32_t scalarGetOperatorResultType(SDataType left, SDataType right, EOperatorType op, SDataType* pRes); +int32_t scalarGetOperatorResultType(SOperatorNode* pOp); /* pNode will be freed in API; diff --git a/source/common/src/systable.c b/source/common/src/systable.c index b8844390d2..ba8a8e1220 100644 --- a/source/common/src/systable.c +++ b/source/common/src/systable.c @@ -252,7 +252,7 @@ static const SSysTableMeta infosMeta[] = { {TSDB_INS_TABLE_USER_STABLES, userStbsSchema, tListLen(userStbsSchema)}, {TSDB_PERFS_TABLE_STREAMS, streamSchema, tListLen(streamSchema)}, {TSDB_INS_TABLE_USER_TABLES, userTblsSchema, tListLen(userTblsSchema)}, - {TSDB_INS_TABLE_USER_TABLE_DISTRIBUTED, userTblDistSchema, tListLen(userTblDistSchema)}, + // {TSDB_INS_TABLE_USER_TABLE_DISTRIBUTED, userTblDistSchema, tListLen(userTblDistSchema)}, {TSDB_INS_TABLE_USER_USERS, userUsersSchema, tListLen(userUsersSchema)}, {TSDB_INS_TABLE_LICENCES, grantsSchema, tListLen(grantsSchema)}, {TSDB_INS_TABLE_VGROUPS, vgroupsSchema, tListLen(vgroupsSchema)}, diff --git a/source/dnode/mnode/impl/src/mndSma.c b/source/dnode/mnode/impl/src/mndSma.c index da5b8cb48e..388441b1dc 100644 --- a/source/dnode/mnode/impl/src/mndSma.c +++ b/source/dnode/mnode/impl/src/mndSma.c @@ -1131,14 +1131,17 @@ static int32_t mndRetrieveSma(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pBloc SSmaObj *pSma = NULL; int32_t cols = 0; - SDbObj *pDb = mndAcquireDb(pMnode, pShow->db); - if (pDb == NULL) return 0; + SDbObj *pDb = NULL; + if (strlen(pShow->db) > 0) { + pDb = mndAcquireDb(pMnode, pShow->db); + if (pDb == NULL) return 0; + } while (numOfRows < rows) { pShow->pIter = sdbFetch(pSdb, SDB_SMA, pShow->pIter, (void **)&pSma); if (pShow->pIter == NULL) break; - if (pSma->dbUid != pDb->uid) { + if (NULL != pDb && pSma->dbUid != pDb->uid) { sdbRelease(pSdb, pSma); continue; } @@ -1151,7 +1154,7 @@ static int32_t mndRetrieveSma(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pBloc STR_TO_VARSTR(n1, (char *)tNameGetTableName(&smaName)); char n2[TSDB_DB_FNAME_LEN + VARSTR_HEADER_SIZE] = {0}; - STR_TO_VARSTR(n2, (char *)mndGetDbStr(pDb->name)); + STR_TO_VARSTR(n2, (char *)mndGetDbStr(pSma->db)); SName stbName = {0}; tNameFromString(&stbName, pSma->stb, T_NAME_ACCT | T_NAME_DB | T_NAME_TABLE); diff --git a/source/libs/parser/inc/sql.y b/source/libs/parser/inc/sql.y index fd79eaa9b7..4bcfcbf5c0 100644 --- a/source/libs/parser/inc/sql.y +++ b/source/libs/parser/inc/sql.y @@ -769,7 +769,7 @@ compare_op(A) ::= CONTAINS. in_op(A) ::= IN. { A = OP_TYPE_IN; } in_op(A) ::= NOT IN. { A = OP_TYPE_NOT_IN; } -in_predicate_value(A) ::= NK_LP(C) expression_list(B) NK_RP(D). { A = createRawExprNodeExt(pCxt, &C, &D, createNodeListNode(pCxt, B)); } +in_predicate_value(A) ::= NK_LP(C) literal_list(B) NK_RP(D). { A = createRawExprNodeExt(pCxt, &C, &D, createNodeListNode(pCxt, B)); } /************************************************ boolean_value_expression ********************************************/ boolean_value_expression(A) ::= boolean_primary(B). { A = B; } diff --git a/source/libs/parser/src/parCalcConst.c b/source/libs/parser/src/parCalcConst.c index 6c670b3f01..4dff42592a 100644 --- a/source/libs/parser/src/parCalcConst.c +++ b/source/libs/parser/src/parCalcConst.c @@ -195,8 +195,8 @@ static int32_t calcConstProject(SNode* pProject, SNode** pNew) { return code; } -static bool isUselessCol(bool hasSelectValFunc, SExprNode* pProj) { - if (hasSelectValFunc && QUERY_NODE_FUNCTION == nodeType(pProj) && fmIsSelectFunc(((SFunctionNode*)pProj)->funcId)) { +static bool isUselessCol(SExprNode* pProj) { + if (QUERY_NODE_FUNCTION == nodeType(pProj) && !fmIsScalarFunc(((SFunctionNode*)pProj)->funcId)) { return false; } return NULL == ((SExprNode*)pProj)->pAssociation; @@ -218,7 +218,7 @@ static SNode* createConstantValue() { static int32_t calcConstProjections(SCalcConstContext* pCxt, SSelectStmt* pSelect, bool subquery) { SNode* pProj = NULL; WHERE_EACH(pProj, pSelect->pProjectionList) { - if (subquery && isUselessCol(pSelect->hasSelectValFunc, (SExprNode*)pProj)) { + if (subquery && isUselessCol((SExprNode*)pProj)) { ERASE_NODE(pSelect->pProjectionList); continue; } diff --git a/source/libs/parser/src/parTranslater.c b/source/libs/parser/src/parTranslater.c index 97a263f86f..4ffcd34d70 100644 --- a/source/libs/parser/src/parTranslater.c +++ b/source/libs/parser/src/parTranslater.c @@ -977,131 +977,11 @@ static bool isMultiResFunc(SNode* pNode) { return (QUERY_NODE_COLUMN == nodeType(pParam) ? 0 == strcmp(((SColumnNode*)pParam)->colName, "*") : false); } -static int32_t rewriteNegativeOperator(SNode** pOp) { - SNode* pRes = NULL; - int32_t code = scalarCalculateConstants(*pOp, &pRes); - if (TSDB_CODE_SUCCESS == code) { - *pOp = pRes; - } - return code; -} - -static EDealRes translateUnaryOperator(STranslateContext* pCxt, SOperatorNode** pOpRef) { - SOperatorNode* pOp = *pOpRef; - if (OP_TYPE_MINUS == pOp->opType) { - if (!IS_MATHABLE_TYPE(((SExprNode*)(pOp->pLeft))->resType.type)) { - return generateDealNodeErrMsg(pCxt, TSDB_CODE_PAR_WRONG_VALUE_TYPE, ((SExprNode*)(pOp->pLeft))->aliasName); - } - pOp->node.resType.type = TSDB_DATA_TYPE_DOUBLE; - pOp->node.resType.bytes = tDataTypes[TSDB_DATA_TYPE_DOUBLE].bytes; - - pCxt->errCode = rewriteNegativeOperator((SNode**)pOpRef); - } else { - pOp->node.resType.type = TSDB_DATA_TYPE_BOOL; - pOp->node.resType.bytes = tDataTypes[TSDB_DATA_TYPE_BOOL].bytes; - } - return TSDB_CODE_SUCCESS == pCxt->errCode ? DEAL_RES_CONTINUE : DEAL_RES_ERROR; -} - -static EDealRes translateArithmeticOperator(STranslateContext* pCxt, SOperatorNode* pOp) { - SDataType ldt = ((SExprNode*)(pOp->pLeft))->resType; - SDataType rdt = ((SExprNode*)(pOp->pRight))->resType; - if (TSDB_DATA_TYPE_BLOB == ldt.type || TSDB_DATA_TYPE_BLOB == rdt.type) { - return generateDealNodeErrMsg(pCxt, TSDB_CODE_PAR_WRONG_VALUE_TYPE, ((SExprNode*)(pOp->pRight))->aliasName); - } - if ((TSDB_DATA_TYPE_TIMESTAMP == ldt.type && TSDB_DATA_TYPE_TIMESTAMP == rdt.type) || - (TSDB_DATA_TYPE_TIMESTAMP == ldt.type && (IS_VAR_DATA_TYPE(rdt.type) || IS_FLOAT_TYPE(rdt.type))) || - (TSDB_DATA_TYPE_TIMESTAMP == rdt.type && (IS_VAR_DATA_TYPE(ldt.type) || IS_FLOAT_TYPE(ldt.type)))) { - return generateDealNodeErrMsg(pCxt, TSDB_CODE_PAR_WRONG_VALUE_TYPE, ((SExprNode*)(pOp->pRight))->aliasName); - } - - if ((TSDB_DATA_TYPE_TIMESTAMP == ldt.type && IS_INTEGER_TYPE(rdt.type)) || - (TSDB_DATA_TYPE_TIMESTAMP == rdt.type && IS_INTEGER_TYPE(ldt.type)) || - (TSDB_DATA_TYPE_TIMESTAMP == ldt.type && TSDB_DATA_TYPE_BOOL == rdt.type) || - (TSDB_DATA_TYPE_TIMESTAMP == rdt.type && TSDB_DATA_TYPE_BOOL == ldt.type)) { - pOp->node.resType.type = TSDB_DATA_TYPE_TIMESTAMP; - pOp->node.resType.bytes = tDataTypes[TSDB_DATA_TYPE_TIMESTAMP].bytes; - } else { - pOp->node.resType.type = TSDB_DATA_TYPE_DOUBLE; - pOp->node.resType.bytes = tDataTypes[TSDB_DATA_TYPE_DOUBLE].bytes; - } - return DEAL_RES_CONTINUE; -} - static bool dataTypeEqual(const SDataType* l, const SDataType* r) { return (l->type == r->type && l->bytes == r->bytes && l->precision == r->precision && l->scale == r->scale); } -static EDealRes translateComparisonOperator(STranslateContext* pCxt, SOperatorNode* pOp) { - SDataType ldt = ((SExprNode*)(pOp->pLeft))->resType; - SDataType rdt = ((SExprNode*)(pOp->pRight))->resType; - if (TSDB_DATA_TYPE_BLOB == ldt.type || TSDB_DATA_TYPE_BLOB == rdt.type) { - return generateDealNodeErrMsg(pCxt, TSDB_CODE_PAR_WRONG_VALUE_TYPE, ((SExprNode*)(pOp->pRight))->aliasName); - } - if (OP_TYPE_IN == pOp->opType || OP_TYPE_NOT_IN == pOp->opType) { - SNodeListNode* pRight = (SNodeListNode*)pOp->pRight; - bool first = true; - SDataType targetDt = {0}; - SNode* pNode = NULL; - FOREACH(pNode, pRight->pNodeList) { - SDataType dt = ((SExprNode*)pNode)->resType; - if (first) { - targetDt = dt; - if (targetDt.type != TSDB_DATA_TYPE_NULL) { - first = false; - } - } else if (dt.type != targetDt.type && dt.type != TSDB_DATA_TYPE_NULL) { - return generateDealNodeErrMsg(pCxt, TSDB_CODE_PAR_WRONG_VALUE_TYPE, ((SExprNode*)pNode)->aliasName); - } else if (dt.bytes > targetDt.bytes) { - targetDt.bytes = dt.bytes; - } - } - pRight->dataType = targetDt; - } - if (nodesIsRegularOp(pOp)) { - if (!IS_VAR_DATA_TYPE(((SExprNode*)(pOp->pLeft))->resType.type)) { - return generateDealNodeErrMsg(pCxt, TSDB_CODE_PAR_WRONG_VALUE_TYPE, ((SExprNode*)(pOp->pLeft))->aliasName); - } - if (QUERY_NODE_VALUE != nodeType(pOp->pRight) || - ((!IS_STR_DATA_TYPE(((SExprNode*)(pOp->pRight))->resType.type)) && - (((SExprNode*)(pOp->pRight))->resType.type != TSDB_DATA_TYPE_NULL))) { - return generateDealNodeErrMsg(pCxt, TSDB_CODE_PAR_WRONG_VALUE_TYPE, ((SExprNode*)(pOp->pRight))->aliasName); - } - } - pOp->node.resType.type = TSDB_DATA_TYPE_BOOL; - pOp->node.resType.bytes = tDataTypes[TSDB_DATA_TYPE_BOOL].bytes; - return DEAL_RES_CONTINUE; -} - -static EDealRes translateJsonOperator(STranslateContext* pCxt, SOperatorNode* pOp) { - SDataType ldt = ((SExprNode*)(pOp->pLeft))->resType; - SDataType rdt = ((SExprNode*)(pOp->pRight))->resType; - if (TSDB_DATA_TYPE_JSON != ldt.type || TSDB_DATA_TYPE_BINARY != rdt.type) { - return generateDealNodeErrMsg(pCxt, TSDB_CODE_PAR_WRONG_VALUE_TYPE, ((SExprNode*)(pOp->pRight))->aliasName); - } - if (pOp->opType == OP_TYPE_JSON_GET_VALUE) { - pOp->node.resType.type = TSDB_DATA_TYPE_JSON; - } else if (pOp->opType == OP_TYPE_JSON_CONTAINS) { - pOp->node.resType.type = TSDB_DATA_TYPE_BOOL; - } - pOp->node.resType.bytes = tDataTypes[pOp->node.resType.type].bytes; - return DEAL_RES_CONTINUE; -} - -static EDealRes translateBitwiseOperator(STranslateContext* pCxt, SOperatorNode* pOp) { - SDataType ldt = ((SExprNode*)(pOp->pLeft))->resType; - SDataType rdt = ((SExprNode*)(pOp->pRight))->resType; - if (TSDB_DATA_TYPE_BLOB == ldt.type || TSDB_DATA_TYPE_BLOB == rdt.type) { - return generateDealNodeErrMsg(pCxt, TSDB_CODE_PAR_WRONG_VALUE_TYPE, ((SExprNode*)(pOp->pRight))->aliasName); - } - pOp->node.resType.type = TSDB_DATA_TYPE_BIGINT; - pOp->node.resType.bytes = tDataTypes[TSDB_DATA_TYPE_BIGINT].bytes; - return DEAL_RES_CONTINUE; -} - -static EDealRes translateOperator(STranslateContext* pCxt, SOperatorNode** pOpRef) { - SOperatorNode* pOp = *pOpRef; - +static EDealRes translateOperator(STranslateContext* pCxt, SOperatorNode* pOp) { if (isMultiResFunc(pOp->pLeft)) { return generateDealNodeErrMsg(pCxt, TSDB_CODE_PAR_WRONG_VALUE_TYPE, ((SExprNode*)(pOp->pLeft))->aliasName); } @@ -1109,17 +989,10 @@ static EDealRes translateOperator(STranslateContext* pCxt, SOperatorNode** pOpRe return generateDealNodeErrMsg(pCxt, TSDB_CODE_PAR_WRONG_VALUE_TYPE, ((SExprNode*)(pOp->pRight))->aliasName); } - if (nodesIsUnaryOp(pOp)) { - return translateUnaryOperator(pCxt, pOpRef); - } else if (nodesIsArithmeticOp(pOp)) { - return translateArithmeticOperator(pCxt, pOp); - } else if (nodesIsComparisonOp(pOp)) { - return translateComparisonOperator(pCxt, pOp); - } else if (nodesIsJsonOp(pOp)) { - return translateJsonOperator(pCxt, pOp); - } else if (nodesIsBitwiseOp(pOp)) { - return translateBitwiseOperator(pCxt, pOp); + if (TSDB_CODE_SUCCESS != scalarGetOperatorResultType(pOp)) { + return generateDealNodeErrMsg(pCxt, TSDB_CODE_PAR_WRONG_VALUE_TYPE, pOp->node.aliasName); } + return DEAL_RES_CONTINUE; } @@ -1485,7 +1358,7 @@ static EDealRes doTranslateExpr(SNode** pNode, void* pContext) { case QUERY_NODE_VALUE: return translateValue(pCxt, (SValueNode*)*pNode); case QUERY_NODE_OPERATOR: - return translateOperator(pCxt, (SOperatorNode**)pNode); + return translateOperator(pCxt, (SOperatorNode*)*pNode); case QUERY_NODE_FUNCTION: return translateFunction(pCxt, (SFunctionNode**)pNode); case QUERY_NODE_LOGIC_CONDITION: @@ -3352,7 +3225,7 @@ static int32_t checkTableRollupOption(STranslateContext* pCxt, SNodeList* pFuncs if (NULL == pFuncs) { if (NULL != pDbCfg->pRetensions) { return generateSyntaxErrMsgExt(&pCxt->msgBuf, TSDB_CODE_PAR_INVALID_TABLE_OPTION, - "To create a super table in a database with the retensions parameter configured, " + "To create a super table in databases configured with the 'RETENTIONS' option, " "the 'ROLLUP' option must be present"); } return TSDB_CODE_SUCCESS; @@ -3563,10 +3436,12 @@ static int32_t checkTableWatermarkOption(STranslateContext* pCxt, STableOptions* } static int32_t checkCreateTable(STranslateContext* pCxt, SCreateTableStmt* pStmt, bool createStable) { - int32_t code = TSDB_CODE_SUCCESS; SDbCfgInfo dbCfg = {0}; - if (createStable) { - code = getDBCfg(pCxt, pStmt->dbName, &dbCfg); + int32_t code = getDBCfg(pCxt, pStmt->dbName, &dbCfg); + if (TSDB_CODE_SUCCESS == code && !createStable && NULL != dbCfg.pRetensions) { + code = generateSyntaxErrMsgExt( + &pCxt->msgBuf, TSDB_CODE_PAR_INVALID_TABLE_OPTION, + "Only super table creation is supported in databases configured with the 'RETENTIONS' option"); } if (TSDB_CODE_SUCCESS == code) { code = checkTableMaxDelayOption(pCxt, pStmt->pOptions, createStable, &dbCfg); diff --git a/source/libs/parser/src/sql.c b/source/libs/parser/src/sql.c index 124d1b2270..029dae0311 100644 --- a/source/libs/parser/src/sql.c +++ b/source/libs/parser/src/sql.c @@ -216,244 +216,252 @@ typedef union { ** yy_default[] Default action for each state. ** *********** Begin parsing tables **********************************************/ -#define YY_ACTTAB_COUNT (2360) +#define YY_ACTTAB_COUNT (2436) static const YYACTIONTYPE yy_action[] = { /* 0 */ 430, 1920, 431, 1491, 438, 71, 431, 1491, 514, 62, - /* 10 */ 1645, 1693, 40, 38, 1919, 550, 323, 325, 1917, 1690, - /* 20 */ 337, 86, 1254, 1457, 34, 33, 1643, 1589, 41, 39, - /* 30 */ 37, 36, 35, 1329, 119, 1252, 1777, 41, 39, 37, - /* 40 */ 36, 35, 1585, 122, 103, 1734, 550, 102, 101, 100, - /* 50 */ 99, 98, 97, 96, 95, 94, 1324, 526, 550, 23, + /* 10 */ 1645, 1693, 39, 37, 1919, 549, 323, 325, 1917, 1690, + /* 20 */ 337, 86, 1254, 1457, 33, 32, 1643, 1589, 40, 38, + /* 30 */ 36, 35, 34, 1329, 119, 1252, 1777, 40, 38, 36, + /* 40 */ 35, 34, 1585, 122, 103, 1734, 549, 102, 101, 100, + /* 50 */ 99, 98, 97, 96, 95, 94, 1324, 526, 549, 22, /* 60 */ 14, 1016, 342, 1015, 1795, 1638, 1640, 1260, 113, 142, - /* 70 */ 1795, 1468, 578, 79, 122, 468, 466, 1747, 543, 577, - /* 80 */ 40, 38, 1392, 120, 1, 1593, 122, 61, 337, 61, - /* 90 */ 1254, 1017, 358, 555, 1586, 555, 379, 552, 155, 1862, + /* 70 */ 1795, 1468, 578, 79, 122, 468, 466, 1747, 542, 577, + /* 80 */ 39, 37, 1392, 120, 1, 1593, 122, 61, 337, 61, + /* 90 */ 1254, 1017, 358, 554, 1586, 554, 379, 551, 155, 1862, /* 100 */ 1863, 1329, 1867, 1252, 1808, 1479, 659, 1521, 89, 1778, - /* 110 */ 580, 1780, 1781, 576, 120, 571, 542, 553, 1854, 553, + /* 110 */ 580, 1780, 1781, 576, 120, 571, 541, 552, 1854, 552, /* 120 */ 1331, 1332, 304, 1850, 1324, 1478, 120, 526, 14, 249, - /* 130 */ 1862, 549, 1456, 548, 1920, 1260, 1920, 1920, 164, 31, + /* 130 */ 1862, 548, 1456, 547, 1920, 1260, 1920, 1920, 164, 30, /* 140 */ 259, 156, 1862, 1863, 1777, 1867, 1747, 161, 447, 161, /* 150 */ 159, 1917, 2, 1917, 1917, 1593, 112, 111, 110, 109, /* 160 */ 108, 107, 106, 105, 104, 1255, 1747, 1253, 1279, 483, /* 170 */ 482, 481, 1795, 1920, 659, 480, 220, 221, 118, 477, - /* 180 */ 578, 44, 476, 475, 474, 1747, 160, 577, 1331, 1332, + /* 180 */ 578, 43, 476, 475, 474, 1747, 160, 577, 1331, 1332, /* 190 */ 1917, 429, 1258, 1259, 433, 1307, 1308, 1310, 1311, 1312, /* 200 */ 1313, 1314, 573, 569, 1322, 1323, 1325, 1326, 1327, 1328, - /* 210 */ 1330, 1333, 1808, 1413, 1278, 539, 90, 1778, 580, 1780, - /* 220 */ 1781, 576, 1279, 571, 162, 1454, 1854, 162, 553, 162, - /* 230 */ 330, 1850, 1933, 1255, 314, 1253, 61, 303, 140, 143, - /* 240 */ 516, 1888, 999, 1549, 34, 33, 1645, 1596, 41, 39, - /* 250 */ 37, 36, 35, 341, 536, 1411, 1412, 1414, 1415, 1477, + /* 210 */ 1330, 1333, 1808, 1413, 1278, 538, 90, 1778, 580, 1780, + /* 220 */ 1781, 576, 1279, 571, 162, 1454, 1854, 162, 552, 162, + /* 230 */ 328, 1850, 1933, 1255, 314, 1253, 61, 303, 140, 143, + /* 240 */ 516, 1888, 999, 1549, 33, 32, 1645, 1596, 40, 38, + /* 250 */ 36, 35, 34, 341, 535, 1411, 1412, 1414, 1415, 1477, /* 260 */ 1258, 1259, 1643, 1307, 1308, 1310, 1311, 1312, 1313, 1314, /* 270 */ 573, 569, 1322, 1323, 1325, 1326, 1327, 1328, 1330, 1333, - /* 280 */ 40, 38, 1003, 1004, 315, 349, 313, 312, 337, 470, - /* 290 */ 1254, 1777, 43, 472, 545, 540, 305, 1353, 11, 10, + /* 280 */ 39, 37, 1003, 1004, 315, 349, 313, 312, 337, 470, + /* 290 */ 1254, 1777, 42, 472, 544, 539, 305, 1353, 11, 10, /* 300 */ 1747, 1329, 103, 1252, 153, 102, 101, 100, 99, 98, /* 310 */ 97, 96, 95, 94, 385, 471, 378, 1632, 377, 1795, - /* 320 */ 1358, 1292, 1151, 1152, 1324, 1278, 1920, 554, 14, 1351, - /* 330 */ 1639, 1640, 1747, 437, 577, 1260, 433, 40, 38, 159, + /* 320 */ 1358, 1292, 1151, 1152, 1324, 1278, 1920, 553, 14, 1351, + /* 330 */ 1639, 1640, 1747, 437, 577, 1260, 433, 39, 37, 159, /* 340 */ 483, 482, 481, 1917, 1920, 337, 480, 1254, 1518, 118, /* 350 */ 477, 301, 2, 476, 475, 474, 605, 1918, 1329, 1808, - /* 360 */ 1252, 1917, 28, 90, 1778, 580, 1780, 1781, 576, 435, - /* 370 */ 571, 71, 370, 1854, 659, 1276, 162, 330, 1850, 154, + /* 360 */ 1252, 1917, 27, 90, 1778, 580, 1780, 1781, 576, 435, + /* 370 */ 571, 71, 370, 1854, 659, 1276, 162, 328, 1850, 154, /* 380 */ 1396, 1324, 1365, 1352, 117, 1016, 1278, 1015, 1331, 1332, - /* 390 */ 1309, 158, 1260, 1588, 372, 368, 544, 34, 33, 1880, - /* 400 */ 1571, 41, 39, 37, 36, 35, 1357, 479, 478, 8, + /* 390 */ 1309, 158, 1260, 1588, 372, 368, 543, 33, 32, 1880, + /* 400 */ 1571, 40, 38, 36, 35, 34, 1357, 479, 478, 8, /* 410 */ 636, 635, 634, 633, 345, 1017, 632, 631, 630, 123, /* 420 */ 625, 624, 623, 622, 621, 620, 619, 618, 133, 614, - /* 430 */ 324, 659, 162, 1255, 562, 1253, 34, 33, 140, 613, - /* 440 */ 41, 39, 37, 36, 35, 1331, 1332, 1595, 30, 335, + /* 430 */ 324, 659, 162, 1255, 561, 1253, 33, 32, 140, 613, + /* 440 */ 40, 38, 36, 35, 34, 1331, 1332, 1595, 29, 335, /* 450 */ 1346, 1347, 1348, 1349, 1350, 1354, 1355, 1356, 1280, 447, /* 460 */ 1258, 1259, 1476, 1307, 1308, 1310, 1311, 1312, 1313, 1314, /* 470 */ 573, 569, 1322, 1323, 1325, 1326, 1327, 1328, 1330, 1333, - /* 480 */ 34, 33, 214, 526, 41, 39, 37, 36, 35, 170, - /* 490 */ 1255, 207, 1253, 219, 165, 1281, 340, 37, 36, 35, - /* 500 */ 59, 34, 33, 1747, 140, 41, 39, 37, 36, 35, + /* 480 */ 33, 32, 214, 526, 40, 38, 36, 35, 34, 170, + /* 490 */ 1255, 207, 1253, 219, 165, 1281, 340, 36, 35, 34, + /* 500 */ 59, 33, 32, 1747, 140, 40, 38, 36, 35, 34, /* 510 */ 61, 1593, 75, 1595, 629, 627, 69, 1258, 1259, 68, /* 520 */ 1307, 1308, 1310, 1311, 1312, 1313, 1314, 573, 569, 1322, - /* 530 */ 1323, 1325, 1326, 1327, 1328, 1330, 1333, 40, 38, 1334, + /* 530 */ 1323, 1325, 1326, 1327, 1328, 1330, 1333, 39, 37, 1334, /* 540 */ 1689, 139, 298, 1475, 343, 337, 1777, 1254, 1277, 162, /* 550 */ 73, 303, 140, 305, 516, 1234, 1235, 1423, 1329, 418, /* 560 */ 1252, 1595, 1309, 1109, 602, 601, 600, 1113, 599, 1115, /* 570 */ 1116, 598, 1118, 595, 1795, 1124, 592, 1126, 1127, 589, /* 580 */ 586, 1324, 578, 488, 1747, 1449, 1351, 1747, 526, 577, - /* 590 */ 251, 472, 1260, 1474, 40, 38, 1683, 1254, 498, 383, - /* 600 */ 45, 4, 337, 555, 1254, 174, 173, 172, 1260, 9, + /* 590 */ 251, 472, 1260, 1474, 39, 37, 1683, 1254, 498, 383, + /* 600 */ 44, 4, 337, 554, 1254, 174, 173, 172, 1260, 9, /* 610 */ 1252, 1071, 206, 471, 1808, 1329, 1593, 1252, 89, 1778, /* 620 */ 580, 1780, 1781, 576, 497, 571, 491, 231, 1854, 1473, - /* 630 */ 485, 659, 304, 1850, 1747, 205, 563, 495, 1324, 493, - /* 640 */ 1352, 27, 1260, 1073, 1920, 1331, 1332, 34, 33, 1260, - /* 650 */ 162, 41, 39, 37, 36, 35, 1569, 159, 1869, 1472, - /* 660 */ 1471, 1917, 56, 1357, 611, 55, 9, 1869, 559, 526, - /* 670 */ 1747, 34, 33, 1645, 1448, 41, 39, 37, 36, 35, + /* 630 */ 485, 659, 304, 1850, 1747, 205, 562, 495, 1324, 493, + /* 640 */ 1352, 26, 1260, 1073, 1920, 1331, 1332, 33, 32, 1260, + /* 650 */ 162, 40, 38, 36, 35, 34, 1569, 159, 1869, 1472, + /* 660 */ 1471, 1917, 56, 1357, 611, 55, 9, 1869, 558, 526, + /* 670 */ 1747, 33, 32, 1645, 1448, 40, 38, 36, 35, 34, /* 680 */ 384, 659, 1866, 131, 130, 608, 607, 606, 659, 1644, /* 690 */ 1255, 1865, 1253, 1003, 1004, 1869, 513, 1593, 1470, 7, - /* 700 */ 1747, 1747, 1331, 1332, 1570, 30, 335, 1346, 1347, 1348, + /* 700 */ 1747, 1747, 1331, 1332, 1570, 29, 335, 1346, 1347, 1348, /* 710 */ 1349, 1350, 1354, 1355, 1356, 613, 1582, 1258, 1259, 1864, /* 720 */ 1307, 1308, 1310, 1311, 1312, 1313, 1314, 573, 569, 1322, - /* 730 */ 1323, 1325, 1326, 1327, 1328, 1330, 1333, 1920, 557, 1747, - /* 740 */ 1255, 1688, 1253, 298, 617, 29, 1565, 1255, 1403, 1253, - /* 750 */ 159, 34, 33, 514, 1917, 41, 39, 37, 36, 35, - /* 760 */ 347, 1874, 1385, 1263, 1691, 34, 33, 1258, 1259, 41, - /* 770 */ 39, 37, 36, 35, 1258, 1259, 213, 1307, 1308, 1310, + /* 730 */ 1323, 1325, 1326, 1327, 1328, 1330, 1333, 1920, 556, 1747, + /* 740 */ 1255, 1688, 1253, 298, 617, 28, 1565, 1255, 1403, 1253, + /* 750 */ 159, 33, 32, 514, 1917, 40, 38, 36, 35, 34, + /* 760 */ 347, 1874, 1385, 616, 1691, 33, 32, 1258, 1259, 40, + /* 770 */ 38, 36, 35, 34, 1258, 1259, 213, 1307, 1308, 1310, /* 780 */ 1311, 1312, 1313, 1314, 573, 569, 1322, 1323, 1325, 1326, - /* 790 */ 1327, 1328, 1330, 1333, 40, 38, 300, 1578, 1276, 1467, + /* 790 */ 1327, 1328, 1330, 1333, 39, 37, 300, 1578, 1276, 1467, /* 800 */ 611, 1920, 337, 1777, 1254, 411, 74, 609, 423, 1466, /* 810 */ 1636, 1508, 1389, 526, 159, 1329, 499, 1252, 1917, 131, /* 820 */ 130, 608, 607, 606, 388, 396, 1465, 424, 1464, 398, /* 830 */ 1339, 1795, 610, 484, 271, 1636, 1278, 1623, 1324, 578, - /* 840 */ 1747, 1593, 1292, 1568, 1747, 526, 577, 34, 33, 1260, - /* 850 */ 1747, 41, 39, 37, 36, 35, 113, 1920, 550, 52, - /* 860 */ 510, 389, 198, 473, 1262, 196, 2, 1747, 560, 1747, - /* 870 */ 159, 1808, 616, 1593, 1917, 90, 1778, 580, 1780, 1781, - /* 880 */ 576, 1463, 571, 1385, 1462, 1854, 122, 1461, 659, 330, - /* 890 */ 1850, 1933, 1460, 1459, 200, 1266, 1497, 199, 567, 1580, + /* 840 */ 1747, 1593, 1292, 1568, 1747, 526, 577, 33, 32, 1260, + /* 850 */ 1747, 40, 38, 36, 35, 34, 113, 1920, 549, 52, + /* 860 */ 510, 389, 198, 473, 1263, 196, 2, 1747, 559, 1747, + /* 870 */ 159, 1808, 1580, 1593, 1917, 90, 1778, 580, 1780, 1781, + /* 880 */ 576, 1463, 571, 1385, 1462, 1854, 122, 1461, 659, 328, + /* 890 */ 1850, 1933, 1460, 1459, 200, 11, 10, 199, 1262, 1576, /* 900 */ 1911, 422, 1331, 1332, 417, 416, 415, 414, 413, 410, /* 910 */ 409, 408, 407, 406, 402, 401, 400, 399, 393, 392, /* 920 */ 391, 390, 1747, 387, 386, 1747, 120, 526, 1747, 526, - /* 930 */ 628, 141, 1576, 1747, 1747, 526, 277, 526, 403, 611, - /* 940 */ 404, 157, 1862, 1863, 654, 1867, 446, 1255, 1590, 1253, - /* 950 */ 275, 58, 11, 10, 57, 1593, 506, 1593, 131, 130, - /* 960 */ 608, 607, 606, 1593, 210, 1593, 1777, 1451, 1452, 572, - /* 970 */ 176, 426, 373, 42, 1258, 1259, 550, 1307, 1308, 1310, + /* 930 */ 628, 141, 1042, 1747, 1747, 526, 277, 526, 403, 611, + /* 940 */ 404, 157, 1862, 1863, 567, 1867, 446, 1255, 1590, 1253, + /* 950 */ 275, 58, 1451, 1452, 57, 1593, 506, 1593, 131, 130, + /* 960 */ 608, 607, 606, 1593, 1043, 1593, 1777, 210, 572, 604, + /* 970 */ 176, 426, 373, 41, 1258, 1259, 549, 1307, 1308, 1310, /* 980 */ 1311, 1312, 1313, 1314, 573, 569, 1322, 1323, 1325, 1326, - /* 990 */ 1327, 1328, 1330, 1333, 1795, 526, 1265, 61, 202, 526, - /* 1000 */ 526, 201, 554, 526, 122, 204, 1722, 1747, 203, 577, - /* 1010 */ 507, 511, 1309, 1584, 524, 1202, 218, 1469, 1764, 604, - /* 1020 */ 1550, 526, 254, 1593, 1761, 555, 465, 1593, 1593, 1761, - /* 1030 */ 1343, 1593, 525, 1388, 1808, 88, 526, 1777, 90, 1778, + /* 990 */ 1327, 1328, 1330, 1333, 1795, 526, 1266, 61, 202, 526, + /* 1000 */ 526, 201, 553, 526, 122, 204, 1722, 1747, 203, 577, + /* 1010 */ 507, 511, 1309, 1584, 524, 1202, 218, 1469, 1764, 1550, + /* 1020 */ 254, 526, 500, 1593, 1761, 554, 465, 1593, 1593, 1761, + /* 1030 */ 1265, 1593, 525, 1388, 1808, 88, 526, 1777, 90, 1778, /* 1040 */ 580, 1780, 1781, 576, 120, 571, 1503, 260, 1854, 1593, - /* 1050 */ 1757, 1763, 330, 1850, 154, 1757, 1763, 326, 222, 249, - /* 1060 */ 1862, 549, 571, 548, 1593, 1795, 1920, 571, 486, 1501, - /* 1070 */ 66, 65, 382, 578, 1881, 169, 537, 243, 1747, 159, - /* 1080 */ 577, 376, 1767, 1917, 125, 328, 327, 526, 128, 1042, - /* 1090 */ 129, 489, 1796, 50, 299, 1268, 235, 366, 344, 364, - /* 1100 */ 360, 356, 166, 351, 348, 1808, 1329, 1765, 1261, 90, - /* 1110 */ 1778, 580, 1780, 1781, 576, 1593, 571, 42, 1761, 1854, - /* 1120 */ 1769, 1043, 42, 330, 1850, 1933, 519, 346, 42, 1324, - /* 1130 */ 228, 584, 1102, 1777, 1873, 1410, 85, 162, 238, 128, - /* 1140 */ 1260, 129, 114, 128, 1757, 1763, 82, 500, 1492, 1633, - /* 1150 */ 551, 1884, 253, 256, 258, 248, 571, 3, 53, 1359, - /* 1160 */ 80, 1795, 5, 350, 1315, 1276, 353, 357, 310, 578, - /* 1170 */ 270, 1071, 1218, 1130, 1747, 311, 577, 405, 267, 535, - /* 1180 */ 1685, 1134, 171, 1141, 1139, 132, 412, 420, 419, 421, - /* 1190 */ 555, 425, 427, 1282, 1777, 1285, 1284, 428, 436, 439, - /* 1200 */ 179, 1808, 440, 181, 441, 284, 1778, 580, 1780, 1781, - /* 1210 */ 576, 1286, 571, 442, 184, 186, 444, 1283, 188, 70, - /* 1220 */ 445, 448, 1795, 191, 467, 469, 1583, 195, 1579, 197, - /* 1230 */ 578, 1920, 134, 135, 93, 1747, 302, 577, 1269, 268, - /* 1240 */ 1264, 208, 1581, 1577, 161, 136, 137, 1777, 1917, 211, - /* 1250 */ 1727, 555, 502, 501, 508, 505, 512, 534, 1281, 215, - /* 1260 */ 515, 1726, 1808, 520, 1695, 1272, 284, 1778, 580, 1780, - /* 1270 */ 1781, 576, 320, 571, 517, 1795, 569, 1322, 1323, 1325, - /* 1280 */ 1326, 1327, 1328, 578, 126, 322, 521, 127, 1747, 224, - /* 1290 */ 577, 522, 1920, 269, 226, 78, 1594, 530, 1885, 1777, - /* 1300 */ 538, 6, 233, 532, 533, 159, 237, 547, 329, 1917, - /* 1310 */ 531, 541, 1385, 528, 1895, 1808, 529, 247, 121, 91, - /* 1320 */ 1778, 580, 1780, 1781, 576, 1894, 571, 1795, 244, 1854, - /* 1330 */ 246, 1876, 148, 1853, 1850, 578, 1280, 564, 1870, 561, - /* 1340 */ 1747, 331, 577, 242, 19, 245, 1835, 582, 272, 1637, - /* 1350 */ 1566, 252, 1777, 655, 1916, 51, 147, 263, 1741, 558, - /* 1360 */ 1936, 656, 658, 285, 63, 255, 1777, 1808, 276, 565, - /* 1370 */ 257, 91, 1778, 580, 1780, 1781, 576, 1740, 571, 274, - /* 1380 */ 1795, 1854, 1739, 295, 294, 566, 1850, 64, 575, 1738, - /* 1390 */ 352, 1735, 354, 1747, 1795, 577, 355, 1246, 1247, 167, - /* 1400 */ 359, 1733, 578, 361, 362, 363, 1732, 1747, 365, 577, - /* 1410 */ 1731, 1730, 369, 367, 1729, 371, 1712, 168, 374, 1777, - /* 1420 */ 1808, 375, 1221, 1220, 292, 1778, 580, 1780, 1781, 576, - /* 1430 */ 574, 571, 568, 1826, 1808, 1706, 1705, 1777, 144, 1778, - /* 1440 */ 580, 1780, 1781, 576, 380, 571, 381, 1795, 1704, 1703, - /* 1450 */ 1190, 1678, 1677, 1676, 67, 578, 1675, 1674, 1673, 1672, - /* 1460 */ 1747, 1671, 577, 394, 395, 1795, 1670, 397, 1669, 1668, - /* 1470 */ 321, 1667, 1666, 578, 1665, 1664, 1663, 1662, 1747, 1661, - /* 1480 */ 577, 1660, 556, 1934, 1659, 1658, 1657, 1808, 1656, 1777, - /* 1490 */ 1655, 91, 1778, 580, 1780, 1781, 576, 124, 571, 1654, - /* 1500 */ 1653, 1854, 1652, 1651, 1650, 1808, 1851, 1649, 1648, 293, - /* 1510 */ 1778, 580, 1780, 1781, 576, 1192, 571, 1795, 1647, 1646, - /* 1520 */ 1522, 175, 527, 1520, 1488, 578, 152, 1006, 115, 177, - /* 1530 */ 1747, 1777, 577, 1487, 178, 1005, 116, 432, 434, 1720, - /* 1540 */ 1714, 1777, 1702, 185, 183, 1701, 1687, 1572, 1519, 1517, - /* 1550 */ 449, 451, 1515, 455, 1513, 459, 1035, 1808, 450, 1795, - /* 1560 */ 453, 293, 1778, 580, 1780, 1781, 576, 578, 571, 1795, - /* 1570 */ 457, 1511, 1747, 454, 577, 458, 461, 578, 462, 1500, - /* 1580 */ 1499, 1484, 1747, 463, 577, 1574, 1145, 1144, 1573, 194, - /* 1590 */ 1070, 1777, 1069, 1068, 49, 1067, 626, 1509, 1064, 1808, - /* 1600 */ 316, 1063, 628, 288, 1778, 580, 1780, 1781, 576, 1808, - /* 1610 */ 571, 662, 1062, 144, 1778, 580, 1780, 1781, 576, 1795, - /* 1620 */ 571, 1061, 1504, 317, 334, 266, 490, 578, 1502, 318, - /* 1630 */ 1483, 487, 1747, 1777, 577, 492, 1482, 494, 1481, 151, - /* 1640 */ 496, 546, 1719, 92, 652, 648, 644, 640, 264, 1713, - /* 1650 */ 1228, 1777, 1700, 138, 503, 1698, 1699, 1697, 1935, 1808, - /* 1660 */ 1696, 1795, 54, 293, 1778, 580, 1780, 1781, 576, 575, - /* 1670 */ 571, 212, 217, 15, 1747, 87, 577, 1694, 229, 1795, - /* 1680 */ 223, 504, 319, 76, 336, 225, 509, 578, 518, 1238, - /* 1690 */ 1686, 227, 1747, 77, 577, 16, 230, 82, 1425, 1437, - /* 1700 */ 24, 1808, 42, 1777, 232, 292, 1778, 580, 1780, 1781, - /* 1710 */ 576, 523, 571, 236, 1827, 1270, 234, 48, 1407, 1808, - /* 1720 */ 1409, 145, 240, 293, 1778, 580, 1780, 1781, 576, 239, - /* 1730 */ 571, 1795, 25, 241, 1767, 193, 338, 26, 1402, 578, - /* 1740 */ 47, 250, 81, 216, 1747, 17, 577, 1382, 1381, 146, - /* 1750 */ 1766, 149, 1442, 1777, 464, 460, 456, 452, 192, 46, - /* 1760 */ 18, 1431, 13, 1777, 1226, 1436, 209, 332, 1441, 1440, - /* 1770 */ 333, 1808, 10, 1811, 20, 293, 1778, 580, 1780, 1781, - /* 1780 */ 576, 1795, 571, 1319, 570, 72, 1344, 32, 190, 578, - /* 1790 */ 150, 1795, 1317, 1316, 1747, 12, 577, 21, 163, 578, - /* 1800 */ 1300, 581, 579, 22, 1747, 1131, 577, 583, 339, 585, - /* 1810 */ 587, 1128, 588, 1108, 1125, 590, 593, 596, 1123, 1777, - /* 1820 */ 591, 1808, 1122, 1119, 594, 278, 1778, 580, 1780, 1781, - /* 1830 */ 576, 1808, 571, 1117, 597, 279, 1778, 580, 1780, 1781, - /* 1840 */ 576, 603, 571, 83, 84, 1140, 60, 1795, 261, 1121, - /* 1850 */ 189, 182, 1136, 187, 1120, 578, 1033, 443, 612, 1058, - /* 1860 */ 1747, 1777, 577, 1077, 262, 615, 1051, 1056, 1055, 1054, - /* 1870 */ 1053, 1777, 1052, 1050, 1049, 1074, 180, 1072, 1046, 1516, - /* 1880 */ 1045, 1044, 1041, 1777, 1040, 1039, 1038, 1808, 637, 1795, - /* 1890 */ 1514, 280, 1778, 580, 1780, 1781, 576, 578, 571, 1795, - /* 1900 */ 639, 638, 1747, 641, 577, 642, 643, 578, 1512, 645, - /* 1910 */ 646, 1795, 1747, 1510, 577, 647, 649, 650, 1498, 578, - /* 1920 */ 653, 651, 996, 1480, 1747, 1777, 577, 265, 657, 1808, - /* 1930 */ 1455, 1256, 273, 287, 1778, 580, 1780, 1781, 576, 1808, - /* 1940 */ 571, 660, 1777, 289, 1778, 580, 1780, 1781, 576, 661, - /* 1950 */ 571, 1808, 1455, 1795, 1455, 281, 1778, 580, 1780, 1781, - /* 1960 */ 576, 578, 571, 1455, 1455, 1455, 1747, 1455, 577, 1455, - /* 1970 */ 1795, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 578, 1455, - /* 1980 */ 1455, 1455, 1455, 1747, 1777, 577, 1455, 1455, 1455, 1455, - /* 1990 */ 1455, 1455, 1455, 1808, 1777, 1455, 1455, 290, 1778, 580, - /* 2000 */ 1780, 1781, 576, 1455, 571, 1455, 1455, 1455, 1455, 1455, - /* 2010 */ 1808, 1455, 1795, 1455, 282, 1778, 580, 1780, 1781, 576, - /* 2020 */ 578, 571, 1795, 1455, 1455, 1747, 1455, 577, 1455, 1455, - /* 2030 */ 578, 1455, 1455, 1455, 1455, 1747, 1777, 577, 1455, 1455, - /* 2040 */ 1455, 1455, 1455, 1455, 1455, 1455, 1777, 1455, 1455, 1455, - /* 2050 */ 1455, 1455, 1808, 1455, 1455, 1455, 291, 1778, 580, 1780, - /* 2060 */ 1781, 576, 1808, 571, 1795, 1455, 283, 1778, 580, 1780, - /* 2070 */ 1781, 576, 578, 571, 1795, 1455, 1455, 1747, 1455, 577, - /* 2080 */ 1455, 1455, 578, 1455, 1455, 1455, 1455, 1747, 1777, 577, - /* 2090 */ 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1777, 1455, - /* 2100 */ 1455, 1455, 1455, 1455, 1808, 1455, 1455, 1455, 296, 1778, - /* 2110 */ 580, 1780, 1781, 576, 1808, 571, 1795, 1455, 297, 1778, - /* 2120 */ 580, 1780, 1781, 576, 578, 571, 1795, 1455, 1455, 1747, - /* 2130 */ 1455, 577, 1455, 1455, 578, 1455, 1455, 1455, 1455, 1747, - /* 2140 */ 1455, 577, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, - /* 2150 */ 1777, 1455, 1455, 1455, 1455, 1455, 1808, 1455, 1455, 1455, - /* 2160 */ 1789, 1778, 580, 1780, 1781, 576, 1808, 571, 1455, 1777, - /* 2170 */ 1788, 1778, 580, 1780, 1781, 576, 1455, 571, 1795, 1455, - /* 2180 */ 1455, 1455, 1455, 1455, 1455, 1455, 578, 1455, 1455, 1455, - /* 2190 */ 1455, 1747, 1777, 577, 1455, 1455, 1455, 1795, 1455, 1455, - /* 2200 */ 1455, 1455, 1455, 1455, 1455, 578, 1455, 1455, 1455, 1455, - /* 2210 */ 1747, 1777, 577, 1455, 1455, 1455, 1455, 1455, 1808, 1455, - /* 2220 */ 1795, 1455, 1787, 1778, 580, 1780, 1781, 576, 578, 571, - /* 2230 */ 1455, 1455, 1455, 1747, 1455, 577, 1455, 1808, 1455, 1795, - /* 2240 */ 1455, 308, 1778, 580, 1780, 1781, 576, 578, 571, 1455, - /* 2250 */ 1455, 1455, 1747, 1455, 577, 1455, 1455, 1455, 1455, 1455, - /* 2260 */ 1808, 1455, 1455, 1455, 307, 1778, 580, 1780, 1781, 576, - /* 2270 */ 1777, 571, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1808, - /* 2280 */ 1777, 1455, 1455, 309, 1778, 580, 1780, 1781, 576, 1455, - /* 2290 */ 571, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1795, 1455, - /* 2300 */ 1455, 1455, 1455, 1455, 1455, 1455, 578, 1455, 1795, 1455, - /* 2310 */ 1455, 1747, 1455, 577, 1455, 1455, 578, 1455, 1455, 1455, - /* 2320 */ 1455, 1747, 1455, 577, 1455, 1455, 1455, 1455, 1455, 1455, - /* 2330 */ 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1808, 1455, - /* 2340 */ 1455, 1455, 306, 1778, 580, 1780, 1781, 576, 1808, 571, - /* 2350 */ 1455, 1455, 286, 1778, 580, 1780, 1781, 576, 1455, 571, + /* 1050 */ 1757, 1763, 328, 1850, 154, 1757, 1763, 326, 222, 249, + /* 1060 */ 1862, 548, 571, 547, 1593, 1795, 1920, 571, 486, 1501, + /* 1070 */ 66, 65, 382, 578, 1881, 169, 1343, 85, 1747, 159, + /* 1080 */ 577, 376, 536, 1917, 1767, 334, 333, 82, 125, 243, + /* 1090 */ 128, 489, 1796, 129, 299, 1268, 50, 366, 1492, 364, + /* 1100 */ 360, 356, 166, 351, 348, 1808, 1329, 1764, 1261, 90, + /* 1110 */ 1778, 580, 1780, 1781, 576, 1765, 571, 235, 1761, 1854, + /* 1120 */ 526, 1633, 1769, 328, 1850, 1933, 1761, 1497, 41, 1324, + /* 1130 */ 519, 344, 228, 1777, 1873, 1102, 346, 162, 1410, 50, + /* 1140 */ 1260, 41, 1884, 584, 1757, 1763, 332, 128, 1593, 129, + /* 1150 */ 114, 128, 1757, 1763, 550, 248, 571, 253, 256, 238, + /* 1160 */ 258, 1795, 80, 53, 571, 5, 3, 350, 1276, 578, + /* 1170 */ 270, 353, 357, 310, 1747, 654, 577, 1071, 311, 566, + /* 1180 */ 1218, 1359, 267, 1315, 405, 1130, 1685, 171, 412, 1134, + /* 1190 */ 554, 1141, 1139, 132, 1777, 420, 419, 425, 421, 427, + /* 1200 */ 428, 1808, 1282, 436, 1285, 284, 1778, 580, 1780, 1781, + /* 1210 */ 576, 439, 571, 1284, 179, 440, 181, 441, 1286, 184, + /* 1220 */ 442, 444, 1795, 186, 1283, 188, 445, 70, 448, 191, + /* 1230 */ 578, 1920, 268, 467, 469, 1747, 1583, 577, 1269, 302, + /* 1240 */ 1264, 93, 195, 501, 161, 208, 1579, 1777, 1917, 197, + /* 1250 */ 134, 554, 135, 1581, 1577, 136, 137, 1727, 211, 502, + /* 1260 */ 508, 512, 1808, 534, 215, 1272, 284, 1778, 580, 1780, + /* 1270 */ 1781, 576, 505, 571, 226, 1795, 569, 1322, 1323, 1325, + /* 1280 */ 1326, 1327, 1328, 578, 126, 515, 1726, 1695, 1747, 520, + /* 1290 */ 577, 127, 1920, 521, 320, 224, 517, 322, 522, 1777, + /* 1300 */ 269, 78, 1594, 1281, 530, 159, 532, 1885, 537, 1917, + /* 1310 */ 233, 533, 237, 1895, 1894, 1808, 327, 6, 540, 91, + /* 1320 */ 1778, 580, 1780, 1781, 576, 546, 571, 1795, 531, 1854, + /* 1330 */ 1876, 529, 528, 1853, 1850, 578, 1385, 247, 148, 1280, + /* 1340 */ 1747, 563, 577, 246, 244, 121, 242, 48, 1870, 329, + /* 1350 */ 582, 272, 1777, 245, 560, 1637, 1566, 263, 655, 656, + /* 1360 */ 658, 51, 285, 147, 1741, 1835, 1777, 1808, 295, 276, + /* 1370 */ 252, 91, 1778, 580, 1780, 1781, 576, 63, 571, 274, + /* 1380 */ 1795, 1854, 1916, 557, 1740, 565, 1850, 564, 575, 294, + /* 1390 */ 1739, 1936, 255, 1747, 1795, 577, 257, 64, 1738, 352, + /* 1400 */ 1735, 354, 578, 355, 1246, 1247, 167, 1747, 359, 577, + /* 1410 */ 1733, 361, 362, 363, 1732, 365, 1731, 367, 1730, 1777, + /* 1420 */ 1808, 369, 1729, 371, 292, 1778, 580, 1780, 1781, 576, + /* 1430 */ 574, 571, 568, 1826, 1808, 1712, 168, 1777, 144, 1778, + /* 1440 */ 580, 1780, 1781, 576, 375, 571, 374, 1795, 1221, 1706, + /* 1450 */ 1220, 1705, 380, 381, 1704, 578, 1703, 1190, 1678, 1677, + /* 1460 */ 1747, 1676, 577, 1675, 67, 1795, 1674, 1673, 1672, 1671, + /* 1470 */ 321, 394, 395, 578, 1670, 397, 1669, 1668, 1747, 1667, + /* 1480 */ 577, 1666, 555, 1934, 1665, 1664, 1663, 1808, 1662, 1777, + /* 1490 */ 1661, 91, 1778, 580, 1780, 1781, 576, 1660, 571, 1659, + /* 1500 */ 1658, 1854, 1657, 1656, 124, 1808, 1851, 1655, 1654, 293, + /* 1510 */ 1778, 580, 1780, 1781, 576, 1653, 571, 1795, 1192, 1649, + /* 1520 */ 1648, 1647, 527, 1652, 1651, 578, 1650, 1646, 1522, 175, + /* 1530 */ 1747, 1777, 577, 1520, 1488, 177, 1006, 115, 152, 1005, + /* 1540 */ 1487, 1777, 1720, 1714, 1702, 178, 1701, 432, 116, 183, + /* 1550 */ 434, 185, 1687, 1572, 1519, 1517, 451, 1808, 450, 1795, + /* 1560 */ 1515, 293, 1778, 580, 1780, 1781, 576, 578, 571, 1795, + /* 1570 */ 449, 453, 1747, 1035, 577, 1513, 454, 578, 455, 458, + /* 1580 */ 457, 1511, 1747, 461, 577, 462, 459, 1500, 463, 1499, + /* 1590 */ 1484, 1777, 1574, 1145, 1144, 1573, 1070, 1069, 1068, 1808, + /* 1600 */ 1067, 1064, 626, 288, 1778, 580, 1780, 1781, 576, 1808, + /* 1610 */ 571, 628, 1063, 144, 1778, 580, 1780, 1781, 576, 1795, + /* 1620 */ 571, 1062, 194, 49, 1509, 316, 1061, 575, 1504, 317, + /* 1630 */ 1502, 487, 1747, 318, 577, 1483, 490, 492, 1482, 494, + /* 1640 */ 1481, 545, 496, 1777, 1719, 92, 1713, 1228, 503, 138, + /* 1650 */ 1700, 1698, 1699, 1697, 1696, 15, 1694, 223, 1935, 1808, + /* 1660 */ 1777, 217, 212, 292, 1778, 580, 1780, 1781, 576, 1238, + /* 1670 */ 571, 1795, 1827, 1686, 82, 225, 336, 76, 77, 578, + /* 1680 */ 230, 16, 41, 23, 1747, 47, 577, 241, 1795, 54, + /* 1690 */ 1425, 234, 232, 338, 1407, 509, 578, 236, 240, 227, + /* 1700 */ 1409, 1747, 504, 577, 1402, 145, 239, 518, 319, 1767, + /* 1710 */ 25, 1808, 1382, 662, 1381, 293, 1778, 580, 1780, 1781, + /* 1720 */ 576, 24, 571, 250, 46, 1766, 18, 266, 1808, 81, + /* 1730 */ 149, 1437, 293, 1778, 580, 1780, 1781, 576, 45, 571, + /* 1740 */ 1436, 151, 17, 1442, 1431, 193, 652, 648, 644, 640, + /* 1750 */ 264, 1777, 330, 1441, 1440, 331, 10, 1270, 19, 146, + /* 1760 */ 1811, 1300, 1344, 1777, 464, 460, 456, 452, 192, 150, + /* 1770 */ 1319, 570, 163, 1317, 31, 1777, 1316, 87, 579, 1795, + /* 1780 */ 229, 12, 20, 21, 581, 1131, 583, 578, 339, 1128, + /* 1790 */ 585, 1795, 1747, 587, 577, 72, 1125, 13, 190, 578, + /* 1800 */ 588, 590, 593, 1795, 1747, 591, 577, 1119, 594, 596, + /* 1810 */ 1117, 578, 597, 523, 1108, 1123, 1747, 1122, 577, 1808, + /* 1820 */ 1140, 1121, 1120, 278, 1778, 580, 1780, 1781, 576, 83, + /* 1830 */ 571, 1808, 603, 84, 60, 279, 1778, 580, 1780, 1781, + /* 1840 */ 576, 261, 571, 1808, 1136, 216, 612, 280, 1778, 580, + /* 1850 */ 1780, 1781, 576, 1058, 571, 1033, 1077, 1777, 615, 262, + /* 1860 */ 189, 182, 1056, 187, 1055, 1054, 1226, 443, 209, 1053, + /* 1870 */ 1052, 1777, 1051, 1050, 1049, 1074, 1516, 1072, 1046, 1045, + /* 1880 */ 1044, 1041, 1040, 1039, 1038, 1795, 180, 637, 1514, 1512, + /* 1890 */ 639, 641, 643, 578, 645, 1510, 649, 647, 1747, 1795, + /* 1900 */ 577, 638, 642, 651, 646, 1498, 653, 578, 996, 650, + /* 1910 */ 1480, 657, 1747, 265, 577, 1256, 273, 660, 661, 1455, + /* 1920 */ 1455, 1777, 1455, 1455, 1455, 1808, 1455, 1455, 1455, 287, + /* 1930 */ 1778, 580, 1780, 1781, 576, 1455, 571, 1777, 1455, 1808, + /* 1940 */ 1455, 1455, 1455, 289, 1778, 580, 1780, 1781, 576, 1795, + /* 1950 */ 571, 1455, 1455, 1455, 1455, 1455, 1455, 578, 1455, 1455, + /* 1960 */ 1455, 1455, 1747, 1455, 577, 1795, 1455, 1455, 1455, 1455, + /* 1970 */ 1455, 1455, 1455, 578, 1455, 1455, 1455, 1455, 1747, 1455, + /* 1980 */ 577, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1808, + /* 1990 */ 1777, 1455, 1455, 281, 1778, 580, 1780, 1781, 576, 1455, + /* 2000 */ 571, 1455, 1455, 1455, 1777, 1808, 1455, 1455, 1455, 290, + /* 2010 */ 1778, 580, 1780, 1781, 576, 1455, 571, 1455, 1795, 1455, + /* 2020 */ 1455, 1455, 1455, 1455, 1455, 1455, 578, 1455, 1455, 1455, + /* 2030 */ 1455, 1747, 1795, 577, 1455, 1455, 1455, 1455, 1455, 1455, + /* 2040 */ 578, 1455, 1455, 1455, 1455, 1747, 1455, 577, 1455, 1455, + /* 2050 */ 1455, 1455, 1455, 1455, 1455, 1455, 1777, 1455, 1808, 1455, + /* 2060 */ 1455, 1455, 282, 1778, 580, 1780, 1781, 576, 1455, 571, + /* 2070 */ 1455, 1455, 1808, 1455, 1777, 1455, 291, 1778, 580, 1780, + /* 2080 */ 1781, 576, 1455, 571, 1795, 1455, 1455, 1455, 1455, 1455, + /* 2090 */ 1455, 1455, 578, 1455, 1455, 1455, 1455, 1747, 1777, 577, + /* 2100 */ 1455, 1455, 1795, 1455, 1455, 1455, 1455, 1455, 1455, 1455, + /* 2110 */ 578, 1455, 1455, 1455, 1455, 1747, 1455, 577, 1455, 1455, + /* 2120 */ 1455, 1455, 1455, 1455, 1808, 1455, 1795, 1455, 283, 1778, + /* 2130 */ 580, 1780, 1781, 576, 578, 571, 1455, 1455, 1455, 1747, + /* 2140 */ 1455, 577, 1808, 1455, 1455, 1455, 296, 1778, 580, 1780, + /* 2150 */ 1781, 576, 1455, 571, 1455, 1455, 1777, 1455, 1455, 1455, + /* 2160 */ 1455, 1455, 1455, 1455, 1455, 1455, 1808, 1455, 1455, 1455, + /* 2170 */ 297, 1778, 580, 1780, 1781, 576, 1455, 571, 1455, 1777, + /* 2180 */ 1455, 1455, 1455, 1455, 1795, 1455, 1455, 1455, 1455, 1455, + /* 2190 */ 1455, 1455, 578, 1455, 1455, 1455, 1455, 1747, 1455, 577, + /* 2200 */ 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1795, 1455, 1455, + /* 2210 */ 1455, 1455, 1455, 1455, 1455, 578, 1455, 1455, 1455, 1455, + /* 2220 */ 1747, 1455, 577, 1455, 1808, 1455, 1455, 1455, 1789, 1778, + /* 2230 */ 580, 1780, 1781, 576, 1455, 571, 1777, 1455, 1455, 1455, + /* 2240 */ 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1808, 1777, 1455, + /* 2250 */ 1455, 1788, 1778, 580, 1780, 1781, 576, 1455, 571, 1455, + /* 2260 */ 1455, 1455, 1777, 1455, 1795, 1455, 1455, 1455, 1455, 1455, + /* 2270 */ 1455, 1455, 578, 1455, 1455, 1455, 1795, 1747, 1455, 577, + /* 2280 */ 1455, 1455, 1455, 1455, 578, 1455, 1455, 1455, 1455, 1747, + /* 2290 */ 1795, 577, 1455, 1455, 1455, 1455, 1455, 1455, 578, 1455, + /* 2300 */ 1455, 1455, 1455, 1747, 1808, 577, 1455, 1455, 1787, 1778, + /* 2310 */ 580, 1780, 1781, 576, 1777, 571, 1808, 1455, 1455, 1455, + /* 2320 */ 308, 1778, 580, 1780, 1781, 576, 1455, 571, 1455, 1455, + /* 2330 */ 1808, 1455, 1777, 1455, 307, 1778, 580, 1780, 1781, 576, + /* 2340 */ 1455, 571, 1795, 1455, 1455, 1455, 1455, 1455, 1455, 1455, + /* 2350 */ 578, 1455, 1455, 1455, 1455, 1747, 1777, 577, 1455, 1455, + /* 2360 */ 1795, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 578, 1455, + /* 2370 */ 1455, 1455, 1455, 1747, 1455, 577, 1455, 1455, 1455, 1455, + /* 2380 */ 1455, 1455, 1808, 1455, 1795, 1455, 309, 1778, 580, 1780, + /* 2390 */ 1781, 576, 578, 571, 1455, 1455, 1455, 1747, 1455, 577, + /* 2400 */ 1808, 1455, 1455, 1455, 306, 1778, 580, 1780, 1781, 576, + /* 2410 */ 1455, 571, 1455, 1455, 1455, 1455, 1455, 1455, 1455, 1455, + /* 2420 */ 1455, 1455, 1455, 1455, 1808, 1455, 1455, 1455, 286, 1778, + /* 2430 */ 580, 1780, 1781, 576, 1455, 571, }; static const YYCODETYPE yy_lookahead[] = { /* 0 */ 261, 355, 263, 264, 261, 269, 263, 264, 300, 4, @@ -532,7 +540,7 @@ static const YYCODETYPE yy_lookahead[] = { /* 730 */ 205, 206, 207, 208, 209, 210, 211, 355, 241, 298, /* 740 */ 165, 310, 167, 312, 273, 2, 275, 165, 85, 167, /* 750 */ 368, 8, 9, 300, 372, 12, 13, 14, 15, 16, - /* 760 */ 314, 222, 223, 35, 311, 8, 9, 192, 193, 12, + /* 760 */ 314, 222, 223, 67, 311, 8, 9, 192, 193, 12, /* 770 */ 13, 14, 15, 16, 192, 193, 56, 195, 196, 197, /* 780 */ 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, /* 790 */ 208, 209, 210, 211, 12, 13, 18, 286, 20, 257, @@ -543,165 +551,173 @@ static const YYCODETYPE yy_lookahead[] = { /* 840 */ 298, 293, 85, 0, 298, 265, 300, 8, 9, 67, /* 850 */ 298, 12, 13, 14, 15, 16, 276, 355, 265, 152, /* 860 */ 153, 83, 88, 283, 35, 91, 84, 298, 243, 298, - /* 870 */ 368, 325, 67, 293, 372, 329, 330, 331, 332, 333, + /* 870 */ 368, 325, 286, 293, 372, 329, 330, 331, 332, 333, /* 880 */ 334, 257, 336, 223, 257, 339, 293, 257, 106, 343, - /* 890 */ 344, 345, 257, 257, 88, 167, 0, 91, 60, 286, + /* 890 */ 344, 345, 257, 257, 88, 1, 2, 91, 35, 286, /* 900 */ 354, 123, 120, 121, 126, 127, 128, 129, 130, 131, /* 910 */ 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, /* 920 */ 142, 143, 298, 145, 146, 298, 333, 265, 298, 265, - /* 930 */ 43, 18, 286, 298, 298, 265, 23, 265, 276, 96, - /* 940 */ 276, 348, 349, 350, 48, 352, 276, 165, 276, 167, - /* 950 */ 37, 38, 1, 2, 41, 293, 318, 293, 115, 116, - /* 960 */ 117, 118, 119, 293, 286, 293, 257, 120, 121, 286, + /* 930 */ 43, 18, 35, 298, 298, 265, 23, 265, 276, 96, + /* 940 */ 276, 348, 349, 350, 60, 352, 276, 165, 276, 167, + /* 950 */ 37, 38, 120, 121, 41, 293, 318, 293, 115, 116, + /* 960 */ 117, 118, 119, 293, 67, 293, 257, 286, 286, 286, /* 970 */ 57, 58, 85, 43, 192, 193, 265, 195, 196, 197, /* 980 */ 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, /* 990 */ 208, 209, 210, 211, 285, 265, 167, 84, 88, 265, /* 1000 */ 265, 91, 293, 265, 293, 88, 276, 298, 91, 300, - /* 1010 */ 276, 276, 196, 287, 276, 85, 43, 258, 287, 286, - /* 1020 */ 274, 265, 375, 293, 298, 314, 266, 293, 293, 298, - /* 1030 */ 192, 293, 276, 225, 325, 122, 265, 257, 329, 330, + /* 1010 */ 276, 276, 196, 287, 276, 85, 43, 258, 287, 274, + /* 1020 */ 375, 265, 321, 293, 298, 314, 266, 293, 293, 298, + /* 1030 */ 167, 293, 276, 225, 325, 122, 265, 257, 329, 330, /* 1040 */ 331, 332, 333, 334, 333, 336, 0, 276, 339, 293, /* 1050 */ 324, 325, 343, 344, 345, 324, 325, 326, 85, 348, /* 1060 */ 349, 350, 336, 352, 293, 285, 355, 336, 22, 0, - /* 1070 */ 157, 158, 159, 293, 365, 162, 366, 362, 298, 368, - /* 1080 */ 300, 168, 46, 372, 43, 12, 13, 265, 43, 35, - /* 1090 */ 43, 22, 285, 43, 181, 22, 43, 184, 276, 186, + /* 1070 */ 157, 158, 159, 293, 365, 162, 192, 84, 298, 368, + /* 1080 */ 300, 168, 366, 372, 46, 12, 13, 94, 43, 362, + /* 1090 */ 43, 22, 285, 43, 181, 22, 43, 184, 264, 186, /* 1100 */ 187, 188, 189, 190, 191, 325, 33, 287, 35, 329, - /* 1110 */ 330, 331, 332, 333, 334, 293, 336, 43, 298, 339, - /* 1120 */ 84, 67, 43, 343, 344, 345, 85, 266, 43, 56, - /* 1130 */ 85, 43, 85, 257, 354, 85, 84, 224, 85, 43, - /* 1140 */ 67, 43, 43, 43, 324, 325, 94, 321, 264, 297, - /* 1150 */ 353, 328, 369, 369, 369, 346, 336, 356, 289, 85, - /* 1160 */ 84, 285, 226, 323, 85, 20, 265, 47, 322, 293, - /* 1170 */ 85, 35, 163, 85, 298, 271, 300, 265, 316, 106, - /* 1180 */ 265, 85, 42, 85, 85, 85, 305, 147, 303, 303, - /* 1190 */ 314, 265, 265, 20, 257, 20, 20, 259, 259, 320, - /* 1200 */ 269, 325, 300, 269, 313, 329, 330, 331, 332, 333, - /* 1210 */ 334, 20, 336, 315, 269, 269, 313, 20, 269, 269, - /* 1220 */ 306, 265, 285, 269, 259, 285, 285, 285, 285, 285, - /* 1230 */ 293, 355, 285, 285, 265, 298, 259, 300, 165, 320, - /* 1240 */ 167, 267, 285, 285, 368, 285, 285, 257, 372, 267, - /* 1250 */ 298, 314, 319, 173, 265, 300, 265, 231, 20, 267, - /* 1260 */ 298, 298, 325, 149, 298, 192, 329, 330, 331, 332, - /* 1270 */ 333, 334, 313, 336, 298, 285, 203, 204, 205, 206, - /* 1280 */ 207, 208, 209, 293, 309, 298, 307, 309, 298, 293, - /* 1290 */ 300, 306, 355, 281, 267, 267, 293, 298, 328, 257, - /* 1300 */ 232, 238, 309, 298, 298, 368, 309, 156, 298, 372, - /* 1310 */ 240, 298, 223, 227, 361, 325, 239, 323, 293, 329, - /* 1320 */ 330, 331, 332, 333, 334, 361, 336, 285, 360, 339, - /* 1330 */ 358, 364, 361, 343, 344, 293, 20, 244, 327, 242, - /* 1340 */ 298, 247, 300, 363, 84, 359, 342, 289, 265, 298, - /* 1350 */ 275, 370, 257, 36, 371, 317, 312, 267, 0, 371, - /* 1360 */ 376, 260, 259, 279, 175, 370, 257, 325, 255, 371, - /* 1370 */ 370, 329, 330, 331, 332, 333, 334, 0, 336, 268, - /* 1380 */ 285, 339, 0, 279, 279, 343, 344, 42, 293, 0, - /* 1390 */ 75, 0, 35, 298, 285, 300, 185, 35, 35, 35, - /* 1400 */ 185, 0, 293, 35, 35, 185, 0, 298, 185, 300, - /* 1410 */ 0, 0, 22, 35, 0, 35, 0, 84, 170, 257, - /* 1420 */ 325, 169, 167, 165, 329, 330, 331, 332, 333, 334, - /* 1430 */ 335, 336, 337, 338, 325, 0, 0, 257, 329, 330, - /* 1440 */ 331, 332, 333, 334, 161, 336, 160, 285, 0, 0, - /* 1450 */ 46, 0, 0, 0, 144, 293, 0, 0, 0, 0, - /* 1460 */ 298, 0, 300, 139, 35, 285, 0, 139, 0, 0, - /* 1470 */ 290, 0, 0, 293, 0, 0, 0, 0, 298, 0, + /* 1110 */ 330, 331, 332, 333, 334, 287, 336, 43, 298, 339, + /* 1120 */ 265, 297, 84, 343, 344, 345, 298, 0, 43, 56, + /* 1130 */ 85, 276, 85, 257, 354, 85, 266, 224, 85, 43, + /* 1140 */ 67, 43, 328, 43, 324, 325, 326, 43, 293, 43, + /* 1150 */ 43, 43, 324, 325, 353, 346, 336, 369, 369, 85, + /* 1160 */ 369, 285, 84, 289, 336, 226, 356, 323, 20, 293, + /* 1170 */ 85, 265, 47, 322, 298, 48, 300, 35, 271, 106, + /* 1180 */ 163, 85, 316, 85, 265, 85, 265, 42, 305, 85, + /* 1190 */ 314, 85, 85, 85, 257, 147, 303, 265, 303, 265, + /* 1200 */ 259, 325, 20, 259, 20, 329, 330, 331, 332, 333, + /* 1210 */ 334, 320, 336, 20, 269, 300, 269, 313, 20, 269, + /* 1220 */ 315, 313, 285, 269, 20, 269, 306, 269, 265, 269, + /* 1230 */ 293, 355, 320, 259, 285, 298, 285, 300, 165, 259, + /* 1240 */ 167, 265, 285, 173, 368, 267, 285, 257, 372, 285, + /* 1250 */ 285, 314, 285, 285, 285, 285, 285, 298, 267, 319, + /* 1260 */ 265, 265, 325, 231, 267, 192, 329, 330, 331, 332, + /* 1270 */ 333, 334, 300, 336, 267, 285, 203, 204, 205, 206, + /* 1280 */ 207, 208, 209, 293, 309, 298, 298, 298, 298, 149, + /* 1290 */ 300, 309, 355, 307, 313, 293, 298, 298, 306, 257, + /* 1300 */ 281, 267, 293, 20, 298, 368, 298, 328, 232, 372, + /* 1310 */ 309, 298, 309, 361, 361, 325, 298, 238, 298, 329, + /* 1320 */ 330, 331, 332, 333, 334, 156, 336, 285, 240, 339, + /* 1330 */ 364, 239, 227, 343, 344, 293, 223, 323, 361, 20, + /* 1340 */ 298, 244, 300, 358, 360, 293, 363, 84, 327, 247, + /* 1350 */ 289, 265, 257, 359, 242, 298, 275, 267, 36, 260, + /* 1360 */ 259, 317, 279, 312, 0, 342, 257, 325, 279, 255, + /* 1370 */ 370, 329, 330, 331, 332, 333, 334, 175, 336, 268, + /* 1380 */ 285, 339, 371, 371, 0, 343, 344, 371, 293, 279, + /* 1390 */ 0, 376, 370, 298, 285, 300, 370, 42, 0, 75, + /* 1400 */ 0, 35, 293, 185, 35, 35, 35, 298, 185, 300, + /* 1410 */ 0, 35, 35, 185, 0, 185, 0, 35, 0, 257, + /* 1420 */ 325, 22, 0, 35, 329, 330, 331, 332, 333, 334, + /* 1430 */ 335, 336, 337, 338, 325, 0, 84, 257, 329, 330, + /* 1440 */ 331, 332, 333, 334, 169, 336, 170, 285, 167, 0, + /* 1450 */ 165, 0, 161, 160, 0, 293, 0, 46, 0, 0, + /* 1460 */ 298, 0, 300, 0, 144, 285, 0, 0, 0, 0, + /* 1470 */ 290, 139, 35, 293, 0, 139, 0, 0, 298, 0, /* 1480 */ 300, 0, 373, 374, 0, 0, 0, 325, 0, 257, - /* 1490 */ 0, 329, 330, 331, 332, 333, 334, 42, 336, 0, - /* 1500 */ 0, 339, 0, 0, 0, 325, 344, 0, 0, 329, - /* 1510 */ 330, 331, 332, 333, 334, 22, 336, 285, 0, 0, - /* 1520 */ 0, 56, 290, 0, 0, 293, 43, 14, 39, 42, - /* 1530 */ 298, 257, 300, 0, 40, 14, 39, 46, 46, 0, - /* 1540 */ 0, 257, 0, 156, 39, 0, 0, 0, 0, 0, - /* 1550 */ 35, 39, 0, 39, 0, 39, 61, 325, 47, 285, - /* 1560 */ 35, 329, 330, 331, 332, 333, 334, 293, 336, 285, - /* 1570 */ 35, 0, 298, 47, 300, 47, 35, 293, 47, 0, - /* 1580 */ 0, 0, 298, 39, 300, 0, 35, 22, 0, 91, - /* 1590 */ 35, 257, 35, 35, 93, 35, 43, 0, 35, 325, - /* 1600 */ 22, 35, 43, 329, 330, 331, 332, 333, 334, 325, - /* 1610 */ 336, 19, 35, 329, 330, 331, 332, 333, 334, 285, - /* 1620 */ 336, 35, 0, 22, 290, 33, 35, 293, 0, 22, - /* 1630 */ 0, 49, 298, 257, 300, 35, 0, 35, 0, 47, - /* 1640 */ 22, 367, 0, 20, 52, 53, 54, 55, 56, 0, - /* 1650 */ 35, 257, 0, 171, 22, 0, 0, 0, 374, 325, - /* 1660 */ 0, 285, 152, 329, 330, 331, 332, 333, 334, 293, - /* 1670 */ 336, 149, 85, 84, 298, 83, 300, 0, 86, 285, - /* 1680 */ 84, 152, 152, 84, 290, 39, 154, 293, 150, 180, - /* 1690 */ 0, 148, 298, 84, 300, 228, 46, 94, 85, 35, - /* 1700 */ 84, 325, 43, 257, 84, 329, 330, 331, 332, 333, - /* 1710 */ 334, 119, 336, 84, 338, 22, 85, 43, 85, 325, - /* 1720 */ 85, 84, 43, 329, 330, 331, 332, 333, 334, 84, - /* 1730 */ 336, 285, 84, 46, 46, 33, 290, 43, 85, 293, - /* 1740 */ 43, 46, 84, 151, 298, 228, 300, 85, 85, 47, - /* 1750 */ 46, 46, 85, 257, 52, 53, 54, 55, 56, 222, - /* 1760 */ 43, 85, 228, 257, 172, 35, 174, 35, 35, 35, - /* 1770 */ 35, 325, 2, 84, 43, 329, 330, 331, 332, 333, - /* 1780 */ 334, 285, 336, 85, 84, 83, 192, 84, 86, 293, - /* 1790 */ 46, 285, 85, 85, 298, 84, 300, 84, 46, 293, - /* 1800 */ 22, 95, 194, 84, 298, 85, 300, 35, 35, 84, - /* 1810 */ 35, 85, 84, 22, 85, 35, 35, 35, 108, 257, - /* 1820 */ 84, 325, 108, 85, 84, 329, 330, 331, 332, 333, - /* 1830 */ 334, 325, 336, 85, 84, 329, 330, 331, 332, 333, - /* 1840 */ 334, 96, 336, 84, 84, 35, 84, 285, 43, 108, - /* 1850 */ 148, 149, 22, 151, 108, 293, 61, 155, 60, 35, - /* 1860 */ 298, 257, 300, 67, 43, 82, 22, 35, 35, 35, - /* 1870 */ 35, 257, 35, 35, 35, 67, 174, 35, 35, 0, - /* 1880 */ 35, 35, 35, 257, 35, 35, 35, 325, 35, 285, - /* 1890 */ 0, 329, 330, 331, 332, 333, 334, 293, 336, 285, - /* 1900 */ 39, 47, 298, 35, 300, 47, 39, 293, 0, 35, - /* 1910 */ 47, 285, 298, 0, 300, 39, 35, 47, 0, 293, - /* 1920 */ 35, 39, 35, 0, 298, 257, 300, 22, 21, 325, - /* 1930 */ 377, 22, 22, 329, 330, 331, 332, 333, 334, 325, - /* 1940 */ 336, 21, 257, 329, 330, 331, 332, 333, 334, 20, - /* 1950 */ 336, 325, 377, 285, 377, 329, 330, 331, 332, 333, - /* 1960 */ 334, 293, 336, 377, 377, 377, 298, 377, 300, 377, - /* 1970 */ 285, 377, 377, 377, 377, 377, 377, 377, 293, 377, - /* 1980 */ 377, 377, 377, 298, 257, 300, 377, 377, 377, 377, - /* 1990 */ 377, 377, 377, 325, 257, 377, 377, 329, 330, 331, - /* 2000 */ 332, 333, 334, 377, 336, 377, 377, 377, 377, 377, - /* 2010 */ 325, 377, 285, 377, 329, 330, 331, 332, 333, 334, - /* 2020 */ 293, 336, 285, 377, 377, 298, 377, 300, 377, 377, - /* 2030 */ 293, 377, 377, 377, 377, 298, 257, 300, 377, 377, - /* 2040 */ 377, 377, 377, 377, 377, 377, 257, 377, 377, 377, - /* 2050 */ 377, 377, 325, 377, 377, 377, 329, 330, 331, 332, - /* 2060 */ 333, 334, 325, 336, 285, 377, 329, 330, 331, 332, - /* 2070 */ 333, 334, 293, 336, 285, 377, 377, 298, 377, 300, - /* 2080 */ 377, 377, 293, 377, 377, 377, 377, 298, 257, 300, - /* 2090 */ 377, 377, 377, 377, 377, 377, 377, 377, 257, 377, - /* 2100 */ 377, 377, 377, 377, 325, 377, 377, 377, 329, 330, - /* 2110 */ 331, 332, 333, 334, 325, 336, 285, 377, 329, 330, - /* 2120 */ 331, 332, 333, 334, 293, 336, 285, 377, 377, 298, - /* 2130 */ 377, 300, 377, 377, 293, 377, 377, 377, 377, 298, - /* 2140 */ 377, 300, 377, 377, 377, 377, 377, 377, 377, 377, - /* 2150 */ 257, 377, 377, 377, 377, 377, 325, 377, 377, 377, - /* 2160 */ 329, 330, 331, 332, 333, 334, 325, 336, 377, 257, - /* 2170 */ 329, 330, 331, 332, 333, 334, 377, 336, 285, 377, - /* 2180 */ 377, 377, 377, 377, 377, 377, 293, 377, 377, 377, - /* 2190 */ 377, 298, 257, 300, 377, 377, 377, 285, 377, 377, - /* 2200 */ 377, 377, 377, 377, 377, 293, 377, 377, 377, 377, - /* 2210 */ 298, 257, 300, 377, 377, 377, 377, 377, 325, 377, - /* 2220 */ 285, 377, 329, 330, 331, 332, 333, 334, 293, 336, - /* 2230 */ 377, 377, 377, 298, 377, 300, 377, 325, 377, 285, - /* 2240 */ 377, 329, 330, 331, 332, 333, 334, 293, 336, 377, - /* 2250 */ 377, 377, 298, 377, 300, 377, 377, 377, 377, 377, - /* 2260 */ 325, 377, 377, 377, 329, 330, 331, 332, 333, 334, - /* 2270 */ 257, 336, 377, 377, 377, 377, 377, 377, 377, 325, - /* 2280 */ 257, 377, 377, 329, 330, 331, 332, 333, 334, 377, - /* 2290 */ 336, 377, 377, 377, 377, 377, 377, 377, 285, 377, - /* 2300 */ 377, 377, 377, 377, 377, 377, 293, 377, 285, 377, - /* 2310 */ 377, 298, 377, 300, 377, 377, 293, 377, 377, 377, - /* 2320 */ 377, 298, 377, 300, 377, 377, 377, 377, 377, 377, - /* 2330 */ 377, 377, 377, 377, 377, 377, 377, 377, 325, 377, - /* 2340 */ 377, 377, 329, 330, 331, 332, 333, 334, 325, 336, - /* 2350 */ 377, 377, 329, 330, 331, 332, 333, 334, 377, 336, + /* 1490 */ 0, 329, 330, 331, 332, 333, 334, 0, 336, 0, + /* 1500 */ 0, 339, 0, 0, 42, 325, 344, 0, 0, 329, + /* 1510 */ 330, 331, 332, 333, 334, 0, 336, 285, 22, 0, + /* 1520 */ 0, 0, 290, 0, 0, 293, 0, 0, 0, 56, + /* 1530 */ 298, 257, 300, 0, 0, 42, 14, 39, 43, 14, + /* 1540 */ 0, 257, 0, 0, 0, 40, 0, 46, 39, 39, + /* 1550 */ 46, 156, 0, 0, 0, 0, 39, 325, 47, 285, + /* 1560 */ 0, 329, 330, 331, 332, 333, 334, 293, 336, 285, + /* 1570 */ 35, 35, 298, 61, 300, 0, 47, 293, 39, 47, + /* 1580 */ 35, 0, 298, 35, 300, 47, 39, 0, 39, 0, + /* 1590 */ 0, 257, 0, 35, 22, 0, 35, 35, 35, 325, + /* 1600 */ 35, 35, 43, 329, 330, 331, 332, 333, 334, 325, + /* 1610 */ 336, 43, 35, 329, 330, 331, 332, 333, 334, 285, + /* 1620 */ 336, 35, 91, 93, 0, 22, 35, 293, 0, 22, + /* 1630 */ 0, 49, 298, 22, 300, 0, 35, 35, 0, 35, + /* 1640 */ 0, 367, 22, 257, 0, 20, 0, 35, 22, 171, + /* 1650 */ 0, 0, 0, 0, 0, 84, 0, 84, 374, 325, + /* 1660 */ 257, 85, 149, 329, 330, 331, 332, 333, 334, 180, + /* 1670 */ 336, 285, 338, 0, 94, 39, 290, 84, 84, 293, + /* 1680 */ 46, 228, 43, 84, 298, 43, 300, 46, 285, 152, + /* 1690 */ 85, 85, 84, 290, 85, 154, 293, 84, 43, 148, + /* 1700 */ 85, 298, 152, 300, 85, 84, 84, 150, 152, 46, + /* 1710 */ 43, 325, 85, 19, 85, 329, 330, 331, 332, 333, + /* 1720 */ 334, 84, 336, 46, 43, 46, 43, 33, 325, 84, + /* 1730 */ 46, 35, 329, 330, 331, 332, 333, 334, 222, 336, + /* 1740 */ 35, 47, 228, 85, 85, 33, 52, 53, 54, 55, + /* 1750 */ 56, 257, 35, 35, 35, 35, 2, 22, 43, 47, + /* 1760 */ 84, 22, 192, 257, 52, 53, 54, 55, 56, 46, + /* 1770 */ 85, 84, 46, 85, 84, 257, 85, 83, 194, 285, + /* 1780 */ 86, 84, 84, 84, 95, 85, 35, 293, 35, 85, + /* 1790 */ 84, 285, 298, 35, 300, 83, 85, 228, 86, 293, + /* 1800 */ 84, 35, 35, 285, 298, 84, 300, 85, 84, 35, + /* 1810 */ 85, 293, 84, 119, 22, 108, 298, 108, 300, 325, + /* 1820 */ 35, 108, 108, 329, 330, 331, 332, 333, 334, 84, + /* 1830 */ 336, 325, 96, 84, 84, 329, 330, 331, 332, 333, + /* 1840 */ 334, 43, 336, 325, 22, 151, 60, 329, 330, 331, + /* 1850 */ 332, 333, 334, 35, 336, 61, 67, 257, 82, 43, + /* 1860 */ 148, 149, 35, 151, 35, 35, 172, 155, 174, 35, + /* 1870 */ 35, 257, 22, 35, 35, 67, 0, 35, 35, 35, + /* 1880 */ 35, 35, 35, 35, 35, 285, 174, 35, 0, 0, + /* 1890 */ 39, 35, 39, 293, 35, 0, 35, 39, 298, 285, + /* 1900 */ 300, 47, 47, 39, 47, 0, 35, 293, 35, 47, + /* 1910 */ 0, 21, 298, 22, 300, 22, 22, 21, 20, 377, + /* 1920 */ 377, 257, 377, 377, 377, 325, 377, 377, 377, 329, + /* 1930 */ 330, 331, 332, 333, 334, 377, 336, 257, 377, 325, + /* 1940 */ 377, 377, 377, 329, 330, 331, 332, 333, 334, 285, + /* 1950 */ 336, 377, 377, 377, 377, 377, 377, 293, 377, 377, + /* 1960 */ 377, 377, 298, 377, 300, 285, 377, 377, 377, 377, + /* 1970 */ 377, 377, 377, 293, 377, 377, 377, 377, 298, 377, + /* 1980 */ 300, 377, 377, 377, 377, 377, 377, 377, 377, 325, + /* 1990 */ 257, 377, 377, 329, 330, 331, 332, 333, 334, 377, + /* 2000 */ 336, 377, 377, 377, 257, 325, 377, 377, 377, 329, + /* 2010 */ 330, 331, 332, 333, 334, 377, 336, 377, 285, 377, + /* 2020 */ 377, 377, 377, 377, 377, 377, 293, 377, 377, 377, + /* 2030 */ 377, 298, 285, 300, 377, 377, 377, 377, 377, 377, + /* 2040 */ 293, 377, 377, 377, 377, 298, 377, 300, 377, 377, + /* 2050 */ 377, 377, 377, 377, 377, 377, 257, 377, 325, 377, + /* 2060 */ 377, 377, 329, 330, 331, 332, 333, 334, 377, 336, + /* 2070 */ 377, 377, 325, 377, 257, 377, 329, 330, 331, 332, + /* 2080 */ 333, 334, 377, 336, 285, 377, 377, 377, 377, 377, + /* 2090 */ 377, 377, 293, 377, 377, 377, 377, 298, 257, 300, + /* 2100 */ 377, 377, 285, 377, 377, 377, 377, 377, 377, 377, + /* 2110 */ 293, 377, 377, 377, 377, 298, 377, 300, 377, 377, + /* 2120 */ 377, 377, 377, 377, 325, 377, 285, 377, 329, 330, + /* 2130 */ 331, 332, 333, 334, 293, 336, 377, 377, 377, 298, + /* 2140 */ 377, 300, 325, 377, 377, 377, 329, 330, 331, 332, + /* 2150 */ 333, 334, 377, 336, 377, 377, 257, 377, 377, 377, + /* 2160 */ 377, 377, 377, 377, 377, 377, 325, 377, 377, 377, + /* 2170 */ 329, 330, 331, 332, 333, 334, 377, 336, 377, 257, + /* 2180 */ 377, 377, 377, 377, 285, 377, 377, 377, 377, 377, + /* 2190 */ 377, 377, 293, 377, 377, 377, 377, 298, 377, 300, + /* 2200 */ 377, 377, 377, 377, 377, 377, 377, 285, 377, 377, + /* 2210 */ 377, 377, 377, 377, 377, 293, 377, 377, 377, 377, + /* 2220 */ 298, 377, 300, 377, 325, 377, 377, 377, 329, 330, + /* 2230 */ 331, 332, 333, 334, 377, 336, 257, 377, 377, 377, + /* 2240 */ 377, 377, 377, 377, 377, 377, 377, 325, 257, 377, + /* 2250 */ 377, 329, 330, 331, 332, 333, 334, 377, 336, 377, + /* 2260 */ 377, 377, 257, 377, 285, 377, 377, 377, 377, 377, + /* 2270 */ 377, 377, 293, 377, 377, 377, 285, 298, 377, 300, + /* 2280 */ 377, 377, 377, 377, 293, 377, 377, 377, 377, 298, + /* 2290 */ 285, 300, 377, 377, 377, 377, 377, 377, 293, 377, + /* 2300 */ 377, 377, 377, 298, 325, 300, 377, 377, 329, 330, + /* 2310 */ 331, 332, 333, 334, 257, 336, 325, 377, 377, 377, + /* 2320 */ 329, 330, 331, 332, 333, 334, 377, 336, 377, 377, + /* 2330 */ 325, 377, 257, 377, 329, 330, 331, 332, 333, 334, + /* 2340 */ 377, 336, 285, 377, 377, 377, 377, 377, 377, 377, + /* 2350 */ 293, 377, 377, 377, 377, 298, 257, 300, 377, 377, + /* 2360 */ 285, 377, 377, 377, 377, 377, 377, 377, 293, 377, + /* 2370 */ 377, 377, 377, 298, 377, 300, 377, 377, 377, 377, + /* 2380 */ 377, 377, 325, 377, 285, 377, 329, 330, 331, 332, + /* 2390 */ 333, 334, 293, 336, 377, 377, 377, 298, 377, 300, + /* 2400 */ 325, 377, 377, 377, 329, 330, 331, 332, 333, 334, + /* 2410 */ 377, 336, 377, 377, 377, 377, 377, 377, 377, 377, + /* 2420 */ 377, 377, 377, 377, 325, 377, 377, 377, 329, 330, + /* 2430 */ 331, 332, 333, 334, 377, 336, }; #define YY_SHIFT_COUNT (662) #define YY_SHIFT_MIN (0) -#define YY_SHIFT_MAX (1929) +#define YY_SHIFT_MAX (1910) static const unsigned short int yy_shift_ofst[] = { /* 0 */ 913, 0, 0, 68, 68, 268, 268, 268, 325, 325, /* 10 */ 268, 268, 525, 582, 782, 582, 582, 582, 582, 582, /* 20 */ 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, /* 30 */ 582, 582, 582, 582, 582, 582, 582, 582, 582, 582, - /* 40 */ 582, 582, 582, 208, 208, 97, 97, 97, 1073, 1073, + /* 40 */ 582, 582, 208, 208, 97, 97, 97, 1073, 1073, 1073, /* 50 */ 1073, 152, 426, 3, 3, 99, 99, 238, 238, 5, /* 60 */ 202, 3, 3, 99, 99, 99, 99, 99, 99, 99, /* 70 */ 99, 99, 89, 99, 99, 99, 148, 305, 99, 99, @@ -710,93 +726,93 @@ static const unsigned short int yy_shift_ofst[] = { /* 100 */ 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, /* 110 */ 575, 575, 575, 197, 202, 355, 355, 400, 576, 656, /* 120 */ 438, 438, 438, 576, 528, 148, 11, 11, 305, 305, - /* 130 */ 541, 541, 261, 805, 466, 466, 466, 466, 466, 466, - /* 140 */ 466, 1592, 23, 107, 428, 21, 41, 375, 65, 366, + /* 130 */ 541, 541, 261, 696, 466, 466, 466, 466, 466, 466, + /* 140 */ 466, 1694, 23, 107, 428, 21, 41, 375, 65, 366, /* 150 */ 816, 365, 649, 495, 475, 539, 660, 539, 558, 497, - /* 160 */ 497, 497, 808, 194, 1076, 936, 1145, 1120, 1136, 1009, - /* 170 */ 1145, 1145, 1140, 1040, 1040, 1145, 1145, 1173, 1173, 1175, - /* 180 */ 89, 148, 89, 1176, 1191, 89, 1176, 89, 1197, 89, - /* 190 */ 89, 1145, 89, 1173, 305, 305, 305, 305, 305, 305, - /* 200 */ 305, 305, 305, 305, 305, 1145, 1173, 541, 1175, 380, - /* 210 */ 1080, 148, 380, 1145, 1145, 1176, 380, 1026, 541, 541, - /* 220 */ 541, 541, 1026, 541, 1114, 528, 1197, 380, 261, 380, - /* 230 */ 528, 1238, 541, 1068, 1026, 541, 541, 1068, 1026, 541, - /* 240 */ 541, 305, 1063, 1151, 1068, 1070, 1077, 1086, 936, 1089, - /* 250 */ 528, 1316, 1093, 1097, 1094, 1093, 1097, 1093, 1097, 1260, - /* 260 */ 1076, 541, 805, 1145, 380, 1317, 1173, 2360, 2360, 2360, - /* 270 */ 2360, 2360, 2360, 2360, 348, 1702, 132, 579, 472, 16, + /* 160 */ 497, 497, 808, 194, 1078, 939, 1148, 1125, 1142, 1017, + /* 170 */ 1148, 1148, 1145, 1048, 1048, 1148, 1148, 1182, 1182, 1184, + /* 180 */ 89, 148, 89, 1193, 1198, 89, 1193, 89, 1204, 89, + /* 190 */ 89, 1148, 89, 1182, 305, 305, 305, 305, 305, 305, + /* 200 */ 305, 305, 305, 305, 305, 1148, 1182, 541, 1184, 380, + /* 210 */ 1070, 148, 380, 1148, 1148, 1193, 380, 1032, 541, 541, + /* 220 */ 541, 541, 1032, 541, 1140, 528, 1204, 380, 261, 380, + /* 230 */ 528, 1283, 541, 1076, 1032, 541, 541, 1076, 1032, 541, + /* 240 */ 541, 305, 1079, 1169, 1076, 1088, 1092, 1105, 939, 1113, + /* 250 */ 528, 1319, 1097, 1112, 1102, 1097, 1112, 1097, 1112, 1263, + /* 260 */ 1078, 541, 696, 1148, 380, 1322, 1182, 2436, 2436, 2436, + /* 270 */ 2436, 2436, 2436, 2436, 348, 1712, 132, 579, 472, 16, /* 280 */ 663, 639, 743, 389, 757, 704, 839, 839, 839, 839, /* 290 */ 839, 839, 839, 839, 843, 568, 25, 25, 61, 212, /* 300 */ 433, 481, 603, 378, 297, 150, 483, 483, 483, 483, /* 310 */ 45, 887, 774, 806, 910, 917, 811, 1046, 1069, 720, - /* 320 */ 707, 930, 973, 1041, 1045, 1047, 1050, 728, 829, 1053, - /* 330 */ 951, 847, 625, 391, 1074, 838, 1079, 1036, 1085, 1088, - /* 340 */ 1096, 1098, 1099, 1100, 1052, 1054, 896, 1358, 1189, 1377, - /* 350 */ 1382, 1345, 1389, 1315, 1391, 1357, 1211, 1362, 1363, 1364, - /* 360 */ 1215, 1401, 1368, 1369, 1220, 1406, 1223, 1410, 1378, 1411, - /* 370 */ 1390, 1414, 1380, 1416, 1333, 1248, 1252, 1255, 1258, 1435, - /* 380 */ 1436, 1283, 1286, 1448, 1449, 1404, 1451, 1452, 1453, 1310, - /* 390 */ 1456, 1457, 1458, 1459, 1461, 1324, 1429, 1466, 1328, 1468, - /* 400 */ 1469, 1471, 1472, 1474, 1475, 1476, 1477, 1479, 1481, 1484, - /* 410 */ 1485, 1486, 1488, 1455, 1490, 1499, 1500, 1502, 1503, 1504, - /* 420 */ 1493, 1507, 1508, 1518, 1519, 1520, 1465, 1523, 1524, 1487, - /* 430 */ 1489, 1483, 1513, 1491, 1521, 1492, 1533, 1494, 1497, 1539, - /* 440 */ 1540, 1542, 1505, 1387, 1545, 1546, 1547, 1495, 1548, 1549, - /* 450 */ 1515, 1511, 1512, 1552, 1525, 1526, 1514, 1554, 1535, 1528, - /* 460 */ 1516, 1571, 1541, 1531, 1544, 1579, 1580, 1581, 1585, 1501, - /* 470 */ 1498, 1551, 1565, 1588, 1555, 1557, 1558, 1560, 1553, 1559, - /* 480 */ 1563, 1566, 1577, 1586, 1597, 1578, 1622, 1601, 1582, 1628, - /* 490 */ 1607, 1591, 1630, 1600, 1636, 1602, 1638, 1618, 1623, 1642, - /* 500 */ 1510, 1615, 1649, 1482, 1632, 1529, 1522, 1652, 1655, 1530, - /* 510 */ 1532, 1656, 1657, 1660, 1589, 1587, 1509, 1677, 1596, 1538, - /* 520 */ 1599, 1690, 1646, 1543, 1609, 1603, 1650, 1659, 1467, 1616, - /* 530 */ 1613, 1620, 1631, 1633, 1629, 1693, 1674, 1635, 1637, 1645, - /* 540 */ 1648, 1653, 1679, 1687, 1688, 1658, 1694, 1517, 1662, 1663, - /* 550 */ 1695, 1537, 1697, 1704, 1705, 1667, 1717, 1534, 1676, 1664, - /* 560 */ 1730, 1732, 1733, 1734, 1735, 1676, 1770, 1594, 1731, 1689, - /* 570 */ 1698, 1700, 1707, 1703, 1708, 1744, 1711, 1713, 1752, 1778, - /* 580 */ 1608, 1719, 1706, 1720, 1772, 1773, 1725, 1726, 1775, 1728, - /* 590 */ 1729, 1780, 1736, 1738, 1781, 1740, 1748, 1782, 1750, 1710, - /* 600 */ 1714, 1741, 1746, 1791, 1745, 1759, 1760, 1810, 1762, 1805, - /* 610 */ 1805, 1830, 1795, 1798, 1824, 1796, 1783, 1821, 1832, 1833, - /* 620 */ 1834, 1835, 1837, 1844, 1838, 1839, 1808, 1553, 1842, 1559, - /* 630 */ 1843, 1845, 1846, 1847, 1849, 1850, 1851, 1879, 1853, 1854, - /* 640 */ 1861, 1890, 1868, 1858, 1867, 1908, 1874, 1863, 1876, 1913, - /* 650 */ 1881, 1870, 1882, 1918, 1885, 1887, 1923, 1905, 1907, 1909, - /* 660 */ 1910, 1920, 1929, + /* 320 */ 707, 930, 973, 1045, 1047, 1050, 1053, 1074, 894, 832, + /* 330 */ 625, 391, 1096, 829, 863, 884, 1098, 1038, 1085, 1100, + /* 340 */ 1104, 1106, 1107, 1108, 993, 897, 1127, 1364, 1202, 1384, + /* 350 */ 1390, 1355, 1398, 1324, 1400, 1366, 1218, 1369, 1370, 1371, + /* 360 */ 1223, 1410, 1376, 1377, 1228, 1414, 1230, 1416, 1382, 1418, + /* 370 */ 1399, 1422, 1388, 1435, 1352, 1276, 1275, 1281, 1285, 1449, + /* 380 */ 1451, 1291, 1293, 1454, 1456, 1411, 1458, 1459, 1461, 1320, + /* 390 */ 1463, 1466, 1467, 1468, 1469, 1332, 1437, 1474, 1336, 1476, + /* 400 */ 1477, 1479, 1481, 1484, 1485, 1486, 1488, 1490, 1497, 1499, + /* 410 */ 1500, 1502, 1503, 1462, 1507, 1508, 1515, 1523, 1524, 1526, + /* 420 */ 1496, 1519, 1520, 1521, 1527, 1528, 1473, 1533, 1534, 1493, + /* 430 */ 1498, 1495, 1522, 1501, 1525, 1504, 1540, 1505, 1509, 1542, + /* 440 */ 1543, 1544, 1510, 1395, 1546, 1552, 1553, 1512, 1554, 1555, + /* 450 */ 1535, 1511, 1517, 1560, 1536, 1529, 1539, 1575, 1545, 1532, + /* 460 */ 1547, 1581, 1548, 1538, 1549, 1587, 1589, 1590, 1592, 1530, + /* 470 */ 1531, 1558, 1572, 1595, 1561, 1562, 1563, 1565, 1559, 1568, + /* 480 */ 1566, 1577, 1586, 1591, 1624, 1603, 1628, 1607, 1582, 1630, + /* 490 */ 1611, 1601, 1635, 1602, 1638, 1604, 1640, 1620, 1625, 1644, + /* 500 */ 1537, 1612, 1646, 1478, 1626, 1550, 1513, 1650, 1651, 1556, + /* 510 */ 1541, 1652, 1653, 1654, 1571, 1576, 1489, 1656, 1573, 1557, + /* 520 */ 1593, 1673, 1636, 1551, 1594, 1580, 1634, 1639, 1453, 1599, + /* 530 */ 1605, 1608, 1606, 1609, 1613, 1642, 1615, 1621, 1622, 1637, + /* 540 */ 1619, 1655, 1641, 1663, 1645, 1667, 1514, 1627, 1629, 1677, + /* 550 */ 1516, 1681, 1679, 1684, 1658, 1683, 1569, 1659, 1696, 1705, + /* 560 */ 1717, 1718, 1719, 1720, 1659, 1754, 1735, 1570, 1715, 1676, + /* 570 */ 1685, 1687, 1688, 1690, 1691, 1723, 1697, 1698, 1726, 1739, + /* 580 */ 1584, 1699, 1689, 1700, 1751, 1753, 1706, 1704, 1758, 1716, + /* 590 */ 1711, 1766, 1721, 1722, 1767, 1724, 1725, 1774, 1728, 1707, + /* 600 */ 1709, 1713, 1714, 1792, 1736, 1745, 1749, 1785, 1750, 1798, + /* 610 */ 1798, 1822, 1794, 1786, 1818, 1789, 1776, 1816, 1827, 1829, + /* 620 */ 1830, 1834, 1835, 1850, 1838, 1839, 1808, 1559, 1842, 1568, + /* 630 */ 1843, 1844, 1845, 1846, 1847, 1848, 1849, 1876, 1852, 1854, + /* 640 */ 1851, 1888, 1856, 1855, 1853, 1889, 1859, 1857, 1858, 1895, + /* 650 */ 1861, 1862, 1864, 1905, 1871, 1873, 1910, 1891, 1890, 1893, + /* 660 */ 1894, 1896, 1898, }; #define YY_REDUCE_COUNT (273) #define YY_REDUCE_MIN (-354) -#define YY_REDUCE_MAX (2023) +#define YY_REDUCE_MAX (2099) static const short yy_reduce_ofst[] = { /* 0 */ -29, -221, 289, 34, 709, -113, 546, 780, 876, 937, /* 10 */ 990, 1042, 1095, 1109, 1162, 1180, 1232, 1274, 1284, 1334, - /* 20 */ 1376, 1394, 1446, 1496, 1506, 1562, 1604, 1614, 1626, 1668, - /* 30 */ 1685, 1727, 1737, 1779, 1789, 1831, 1841, 1893, 1912, 1935, - /* 40 */ 1954, 2013, 2023, -219, 711, -250, -207, 593, 731, 726, - /* 50 */ 820, -218, 382, 446, 502, -208, 580, -261, -257, -354, + /* 20 */ 1386, 1403, 1494, 1506, 1518, 1600, 1614, 1664, 1680, 1733, + /* 30 */ 1747, 1799, 1817, 1841, 1899, 1922, 1979, 1991, 2005, 2057, + /* 40 */ 2075, 2099, -219, 711, -250, -207, 593, 731, 820, 726, + /* 50 */ 828, -218, 382, 446, 502, -208, 580, -261, -257, -354, /* 60 */ -234, -182, -11, -138, 218, 323, 404, 548, 662, 664, /* 70 */ 670, 672, 102, 730, 734, 735, -292, 153, 738, 756, - /* 80 */ -275, -215, 771, 219, -39, 267, 822, -246, 49, -201, + /* 80 */ -275, -215, 771, 219, -39, 267, 855, -246, 49, -201, /* 90 */ -201, -201, -187, -31, -152, -132, 2, 205, 286, 336, /* 100 */ 372, 402, 403, 441, 542, 552, 569, 571, 624, 627, /* 110 */ 630, 635, 636, 20, 31, -71, 71, -264, 136, -194, /* 120 */ 331, 340, 368, 243, 303, 453, 230, 431, -47, 388, - /* 130 */ 512, 537, 556, 471, 430, 511, 613, 646, 678, 683, - /* 140 */ 733, 638, 759, 746, 647, 710, 760, 826, 715, 807, - /* 150 */ 807, 861, 884, 852, 823, 797, 797, 797, 809, 783, - /* 160 */ 784, 785, 801, 807, 869, 840, 901, 846, 904, 862, - /* 170 */ 912, 915, 881, 885, 886, 926, 927, 938, 939, 879, - /* 180 */ 931, 902, 934, 891, 898, 945, 903, 946, 914, 949, - /* 190 */ 950, 956, 954, 965, 940, 941, 942, 943, 944, 947, - /* 200 */ 948, 957, 958, 960, 961, 969, 977, 952, 919, 974, - /* 210 */ 933, 955, 982, 989, 991, 959, 992, 975, 962, 963, - /* 220 */ 966, 976, 978, 987, 979, 996, 985, 1027, 1012, 1028, - /* 230 */ 1003, 970, 999, 953, 993, 1005, 1006, 964, 997, 1010, - /* 240 */ 1013, 807, 967, 980, 971, 968, 986, 972, 994, 797, - /* 250 */ 1025, 1011, 983, 981, 984, 988, 995, 998, 1000, 1004, - /* 260 */ 1058, 1051, 1075, 1083, 1090, 1101, 1103, 1038, 1044, 1084, - /* 270 */ 1104, 1105, 1111, 1113, + /* 130 */ 512, 537, 556, 471, 430, 511, 586, 613, 681, 682, + /* 140 */ 683, 638, 759, 745, 645, 716, 760, 701, 727, 807, + /* 150 */ 807, 870, 834, 824, 814, 801, 801, 801, 809, 788, + /* 160 */ 789, 791, 810, 807, 874, 844, 906, 851, 907, 866, + /* 170 */ 919, 921, 883, 893, 895, 932, 934, 941, 944, 891, + /* 180 */ 945, 915, 947, 904, 905, 950, 908, 954, 920, 956, + /* 190 */ 958, 963, 960, 974, 949, 951, 957, 961, 964, 965, + /* 200 */ 967, 968, 969, 970, 971, 976, 980, 959, 912, 978, + /* 210 */ 940, 972, 991, 995, 996, 981, 997, 975, 987, 988, + /* 220 */ 989, 998, 982, 999, 986, 1002, 992, 1007, 1019, 1034, + /* 230 */ 1009, 979, 1006, 952, 1001, 1008, 1013, 953, 1003, 1018, + /* 240 */ 1020, 807, 966, 983, 977, 984, 994, 985, 1014, 801, + /* 250 */ 1052, 1021, 1011, 1000, 1015, 1012, 1022, 1016, 1026, 1023, + /* 260 */ 1061, 1057, 1081, 1086, 1090, 1099, 1101, 1044, 1051, 1083, + /* 270 */ 1089, 1110, 1111, 1114, }; static const YYACTIONTYPE yy_default[] = { /* 0 */ 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, @@ -831,8 +847,8 @@ static const YYACTIONTYPE yy_default[] = { /* 290 */ 1831, 1830, 1828, 1793, 1453, 1587, 1792, 1791, 1453, 1453, /* 300 */ 1453, 1453, 1453, 1453, 1453, 1453, 1785, 1786, 1784, 1783, /* 310 */ 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, - /* 320 */ 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, - /* 330 */ 1857, 1453, 1925, 1929, 1453, 1453, 1453, 1768, 1453, 1453, + /* 320 */ 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1857, 1453, + /* 330 */ 1925, 1929, 1453, 1453, 1453, 1453, 1453, 1768, 1453, 1453, /* 340 */ 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, /* 350 */ 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, /* 360 */ 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, @@ -853,9 +869,9 @@ static const YYACTIONTYPE yy_default[] = { /* 510 */ 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1727, 1453, 1453, /* 520 */ 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1890, 1453, 1453, /* 530 */ 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, - /* 540 */ 1453, 1453, 1453, 1453, 1768, 1453, 1907, 1453, 1867, 1863, - /* 550 */ 1453, 1453, 1859, 1767, 1453, 1453, 1923, 1453, 1453, 1453, - /* 560 */ 1453, 1453, 1453, 1453, 1453, 1453, 1852, 1453, 1825, 1810, + /* 540 */ 1453, 1453, 1453, 1768, 1453, 1907, 1453, 1867, 1863, 1453, + /* 550 */ 1453, 1859, 1767, 1453, 1453, 1923, 1453, 1453, 1453, 1453, + /* 560 */ 1453, 1453, 1453, 1453, 1453, 1852, 1453, 1453, 1825, 1810, /* 570 */ 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, /* 580 */ 1779, 1453, 1453, 1453, 1453, 1453, 1619, 1453, 1453, 1453, /* 590 */ 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1604, @@ -2003,7 +2019,7 @@ static const char *const yyRuleName[] = { /* 390 */ "compare_op ::= CONTAINS", /* 391 */ "in_op ::= IN", /* 392 */ "in_op ::= NOT IN", - /* 393 */ "in_predicate_value ::= NK_LP expression_list NK_RP", + /* 393 */ "in_predicate_value ::= NK_LP literal_list NK_RP", /* 394 */ "boolean_value_expression ::= boolean_primary", /* 395 */ "boolean_value_expression ::= NOT boolean_primary", /* 396 */ "boolean_value_expression ::= boolean_value_expression OR boolean_value_expression", @@ -3089,7 +3105,7 @@ static const struct { { 340, -1 }, /* (390) compare_op ::= CONTAINS */ { 341, -1 }, /* (391) in_op ::= IN */ { 341, -2 }, /* (392) in_op ::= NOT IN */ - { 342, -3 }, /* (393) in_predicate_value ::= NK_LP expression_list NK_RP */ + { 342, -3 }, /* (393) in_predicate_value ::= NK_LP literal_list NK_RP */ { 343, -1 }, /* (394) boolean_value_expression ::= boolean_primary */ { 343, -2 }, /* (395) boolean_value_expression ::= NOT boolean_primary */ { 343, -3 }, /* (396) boolean_value_expression ::= boolean_value_expression OR boolean_value_expression */ @@ -4477,7 +4493,7 @@ static YYACTIONTYPE yy_reduce( case 392: /* in_op ::= NOT IN */ { yymsp[-1].minor.yy428 = OP_TYPE_NOT_IN; } break; - case 393: /* in_predicate_value ::= NK_LP expression_list NK_RP */ + case 393: /* in_predicate_value ::= NK_LP literal_list NK_RP */ { yylhsminor.yy652 = createRawExprNodeExt(pCxt, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0, createNodeListNode(pCxt, yymsp[-1].minor.yy210)); } yymsp[-2].minor.yy652 = yylhsminor.yy652; break; diff --git a/source/libs/planner/src/planOptimizer.c b/source/libs/planner/src/planOptimizer.c index 67b79d5b1c..fb3c420a19 100644 --- a/source/libs/planner/src/planOptimizer.c +++ b/source/libs/planner/src/planOptimizer.c @@ -896,7 +896,7 @@ static int32_t pushDownCondOptTrivialPushDown(SOptimizeContext* pCxt, SLogicNode return TSDB_CODE_SUCCESS; } SLogicNode* pChild = (SLogicNode*)nodesListGetNode(pLogicNode->pChildren, 0); - int32_t code = pushDownCondOptPushCondToChild(pCxt, pChild, &pLogicNode->pConditions); + int32_t code = pushDownCondOptPushCondToChild(pCxt, pChild, &pLogicNode->pConditions); if (TSDB_CODE_SUCCESS == code) { OPTIMIZE_FLAG_SET_MASK(pLogicNode->optimizedFlag, OPTIMIZE_FLAG_PUSH_DOWN_CONDE); pCxt->optimized = true; @@ -1183,7 +1183,7 @@ static int32_t smaIndexOptCreateSmaCols(SNodeList* pFuncs, uint64_t tableId, SNo if (smaFuncIndex < 0) { break; } else { - code = nodesListMakeStrictAppend(&pCols, smaIndexOptCreateSmaCol(pFunc, tableId, smaFuncIndex + 2)); + code = nodesListMakeStrictAppend(&pCols, smaIndexOptCreateSmaCol(pFunc, tableId, smaFuncIndex + 1)); if (TSDB_CODE_SUCCESS != code) { break; } diff --git a/source/libs/scalar/src/scalar.c b/source/libs/scalar/src/scalar.c index cbb1089d61..e1aeaf219b 100644 --- a/source/libs/scalar/src/scalar.c +++ b/source/libs/scalar/src/scalar.c @@ -1036,71 +1036,124 @@ _return: return code; } -int32_t scalarGetOperatorResultType(SDataType left, SDataType right, EOperatorType op, SDataType* pRes) { - switch (op) { +static int32_t getMinusOperatorResultType(SOperatorNode* pOp) { + if (!IS_MATHABLE_TYPE(((SExprNode*)(pOp->pLeft))->resType.type)) { + return TSDB_CODE_TSC_INVALID_OPERATION; + } + pOp->node.resType.type = TSDB_DATA_TYPE_DOUBLE; + pOp->node.resType.bytes = tDataTypes[TSDB_DATA_TYPE_DOUBLE].bytes; + return TSDB_CODE_SUCCESS; +} + +static int32_t getArithmeticOperatorResultType(SOperatorNode* pOp) { + SDataType ldt = ((SExprNode*)(pOp->pLeft))->resType; + SDataType rdt = ((SExprNode*)(pOp->pRight))->resType; + if ((TSDB_DATA_TYPE_TIMESTAMP == ldt.type && TSDB_DATA_TYPE_TIMESTAMP == rdt.type) || + (TSDB_DATA_TYPE_TIMESTAMP == ldt.type && (IS_VAR_DATA_TYPE(rdt.type) || IS_FLOAT_TYPE(rdt.type))) || + (TSDB_DATA_TYPE_TIMESTAMP == rdt.type && (IS_VAR_DATA_TYPE(ldt.type) || IS_FLOAT_TYPE(ldt.type)))) { + return TSDB_CODE_TSC_INVALID_OPERATION; + } + + if ((TSDB_DATA_TYPE_TIMESTAMP == ldt.type && IS_INTEGER_TYPE(rdt.type)) || + (TSDB_DATA_TYPE_TIMESTAMP == rdt.type && IS_INTEGER_TYPE(ldt.type)) || + (TSDB_DATA_TYPE_TIMESTAMP == ldt.type && TSDB_DATA_TYPE_BOOL == rdt.type) || + (TSDB_DATA_TYPE_TIMESTAMP == rdt.type && TSDB_DATA_TYPE_BOOL == ldt.type)) { + pOp->node.resType.type = TSDB_DATA_TYPE_TIMESTAMP; + pOp->node.resType.bytes = tDataTypes[TSDB_DATA_TYPE_TIMESTAMP].bytes; + } else { + pOp->node.resType.type = TSDB_DATA_TYPE_DOUBLE; + pOp->node.resType.bytes = tDataTypes[TSDB_DATA_TYPE_DOUBLE].bytes; + } + return TSDB_CODE_SUCCESS; +} + +static int32_t getComparisonOperatorResultType(SOperatorNode* pOp) { + SDataType ldt = ((SExprNode*)(pOp->pLeft))->resType; + if (NULL != pOp->pRight) { + SDataType rdt = ((SExprNode*)(pOp->pRight))->resType; + if (OP_TYPE_IN == pOp->opType || OP_TYPE_NOT_IN == pOp->opType) { + rdt = ldt; + } else if (nodesIsRegularOp(pOp)) { + if (!IS_VAR_DATA_TYPE(ldt.type) || QUERY_NODE_VALUE != nodeType(pOp->pRight) || + (!IS_STR_DATA_TYPE(rdt.type) && (rdt.type != TSDB_DATA_TYPE_NULL))) { + return TSDB_CODE_TSC_INVALID_OPERATION; + } + } + } + pOp->node.resType.type = TSDB_DATA_TYPE_BOOL; + pOp->node.resType.bytes = tDataTypes[TSDB_DATA_TYPE_BOOL].bytes; + return TSDB_CODE_SUCCESS; +} + +static int32_t getJsonOperatorResultType(SOperatorNode* pOp) { + SDataType ldt = ((SExprNode*)(pOp->pLeft))->resType; + SDataType rdt = ((SExprNode*)(pOp->pRight))->resType; + if (TSDB_DATA_TYPE_JSON != ldt.type || !IS_STR_DATA_TYPE(rdt.type)) { + return TSDB_CODE_TSC_INVALID_OPERATION; + } + if (pOp->opType == OP_TYPE_JSON_GET_VALUE) { + pOp->node.resType.type = TSDB_DATA_TYPE_JSON; + } else if (pOp->opType == OP_TYPE_JSON_CONTAINS) { + pOp->node.resType.type = TSDB_DATA_TYPE_BOOL; + } + pOp->node.resType.bytes = tDataTypes[pOp->node.resType.type].bytes; + return TSDB_CODE_SUCCESS; +} + +static int32_t getBitwiseOperatorResultType(SOperatorNode* pOp) { + pOp->node.resType.type = TSDB_DATA_TYPE_BIGINT; + pOp->node.resType.bytes = tDataTypes[TSDB_DATA_TYPE_BIGINT].bytes; + return TSDB_CODE_SUCCESS; +} + +int32_t scalarGetOperatorResultType(SOperatorNode* pOp) { + if (TSDB_DATA_TYPE_BLOB == ((SExprNode*)(pOp->pLeft))->resType.type || + (NULL != pOp->pRight && TSDB_DATA_TYPE_BLOB == ((SExprNode*)(pOp->pRight))->resType.type)) { + return TSDB_CODE_TSC_INVALID_OPERATION; + } + + switch (pOp->opType) { case OP_TYPE_ADD: - if (left.type == TSDB_DATA_TYPE_TIMESTAMP && right.type == TSDB_DATA_TYPE_TIMESTAMP) { - qError("invalid op %d, left type:%d, right type:%d", op, left.type, right.type); - return TSDB_CODE_TSC_INVALID_OPERATION; - } - if ((left.type == TSDB_DATA_TYPE_TIMESTAMP && (IS_INTEGER_TYPE(right.type) || right.type == TSDB_DATA_TYPE_BOOL)) || - (right.type == TSDB_DATA_TYPE_TIMESTAMP && (IS_INTEGER_TYPE(left.type) || left.type == TSDB_DATA_TYPE_BOOL))) { - pRes->type = TSDB_DATA_TYPE_TIMESTAMP; - return TSDB_CODE_SUCCESS; - } - pRes->type = TSDB_DATA_TYPE_DOUBLE; - return TSDB_CODE_SUCCESS; case OP_TYPE_SUB: - if ((left.type == TSDB_DATA_TYPE_TIMESTAMP && right.type == TSDB_DATA_TYPE_BIGINT) || - (right.type == TSDB_DATA_TYPE_TIMESTAMP && left.type == TSDB_DATA_TYPE_BIGINT)) { - pRes->type = TSDB_DATA_TYPE_TIMESTAMP; - return TSDB_CODE_SUCCESS; - } - pRes->type = TSDB_DATA_TYPE_DOUBLE; - return TSDB_CODE_SUCCESS; case OP_TYPE_MULTI: - if (left.type == TSDB_DATA_TYPE_TIMESTAMP && right.type == TSDB_DATA_TYPE_TIMESTAMP) { - qError("invalid op %d, left type:%d, right type:%d", op, left.type, right.type); - return TSDB_CODE_TSC_INVALID_OPERATION; - } case OP_TYPE_DIV: - if (left.type == TSDB_DATA_TYPE_TIMESTAMP && right.type == TSDB_DATA_TYPE_TIMESTAMP) { - qError("invalid op %d, left type:%d, right type:%d", op, left.type, right.type); - return TSDB_CODE_TSC_INVALID_OPERATION; - } case OP_TYPE_REM: + return getArithmeticOperatorResultType(pOp); case OP_TYPE_MINUS: - pRes->type = TSDB_DATA_TYPE_DOUBLE; - return TSDB_CODE_SUCCESS; + return getMinusOperatorResultType(pOp); + case OP_TYPE_ASSIGN: + pOp->node.resType = ((SExprNode*)(pOp->pLeft))->resType; + break; + case OP_TYPE_BIT_AND: + case OP_TYPE_BIT_OR: + return getBitwiseOperatorResultType(pOp); case OP_TYPE_GREATER_THAN: case OP_TYPE_GREATER_EQUAL: case OP_TYPE_LOWER_THAN: case OP_TYPE_LOWER_EQUAL: case OP_TYPE_EQUAL: case OP_TYPE_NOT_EQUAL: - case OP_TYPE_IN: - case OP_TYPE_NOT_IN: + case OP_TYPE_IS_NULL: + case OP_TYPE_IS_NOT_NULL: + case OP_TYPE_IS_TRUE: + case OP_TYPE_IS_FALSE: + case OP_TYPE_IS_UNKNOWN: + case OP_TYPE_IS_NOT_TRUE: + case OP_TYPE_IS_NOT_FALSE: + case OP_TYPE_IS_NOT_UNKNOWN: case OP_TYPE_LIKE: case OP_TYPE_NOT_LIKE: case OP_TYPE_MATCH: case OP_TYPE_NMATCH: - case OP_TYPE_IS_NULL: - case OP_TYPE_IS_NOT_NULL: - case OP_TYPE_IS_TRUE: - case OP_TYPE_JSON_CONTAINS: - pRes->type = TSDB_DATA_TYPE_BOOL; - return TSDB_CODE_SUCCESS; - case OP_TYPE_BIT_AND: - case OP_TYPE_BIT_OR: - pRes->type = TSDB_DATA_TYPE_BIGINT; - return TSDB_CODE_SUCCESS; + case OP_TYPE_IN: + case OP_TYPE_NOT_IN: + return getComparisonOperatorResultType(pOp); case OP_TYPE_JSON_GET_VALUE: - pRes->type = TSDB_DATA_TYPE_JSON; - return TSDB_CODE_SUCCESS; + case OP_TYPE_JSON_CONTAINS: + return getJsonOperatorResultType(pOp); default: - ASSERT(0); - return TSDB_CODE_APP_ERROR; + break; } + + return TSDB_CODE_SUCCESS; } - -