Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
df06d22c
T
TDengine
项目概览
taosdata
/
TDengine
大约 2 年 前同步成功
通知
1193
Star
22018
Fork
4786
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
df06d22c
编写于
7月 08, 2022
作者:
X
Xiaoyu Wang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix: some problem of parser and planner
上级
9aa35c2e
变更
9
显示空白变更内容
内联
并排
Showing
9 changed file
with
551 addition
and
604 deletion
+551
-604
include/libs/scalar/scalar.h
include/libs/scalar/scalar.h
+1
-1
source/common/src/systable.c
source/common/src/systable.c
+1
-1
source/dnode/mnode/impl/src/mndSma.c
source/dnode/mnode/impl/src/mndSma.c
+7
-4
source/libs/parser/inc/sql.y
source/libs/parser/inc/sql.y
+1
-1
source/libs/parser/src/parCalcConst.c
source/libs/parser/src/parCalcConst.c
+3
-3
source/libs/parser/src/parTranslater.c
source/libs/parser/src/parTranslater.c
+11
-136
source/libs/parser/src/sql.c
source/libs/parser/src/sql.c
+425
-409
source/libs/planner/src/planOptimizer.c
source/libs/planner/src/planOptimizer.c
+2
-2
source/libs/scalar/src/scalar.c
source/libs/scalar/src/scalar.c
+100
-47
未找到文件。
include/libs/scalar/scalar.h
浏览文件 @
df06d22c
...
...
@@ -25,7 +25,7 @@ extern "C" {
typedef
struct
SFilterInfo
SFilterInfo
;
int32_t
scalarGetOperatorResultType
(
S
DataType
left
,
SDataType
right
,
EOperatorType
op
,
SDataType
*
pRes
);
int32_t
scalarGetOperatorResultType
(
S
OperatorNode
*
pOp
);
/*
pNode will be freed in API;
...
...
source/common/src/systable.c
浏览文件 @
df06d22c
...
...
@@ -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
)},
...
...
source/dnode/mnode/impl/src/mndSma.c
浏览文件 @
df06d22c
...
...
@@ -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
);
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
(
p
Db
->
name
));
STR_TO_VARSTR
(
n2
,
(
char
*
)
mndGetDbStr
(
p
Sma
->
db
));
SName
stbName
=
{
0
};
tNameFromString
(
&
stbName
,
pSma
->
stb
,
T_NAME_ACCT
|
T_NAME_DB
|
T_NAME_TABLE
);
...
...
source/libs/parser/inc/sql.y
浏览文件 @
df06d22c
...
...
@@ -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; }
...
...
source/libs/parser/src/parCalcConst.c
浏览文件 @
df06d22c
...
...
@@ -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
)
&&
fmIsSelect
Func
(((
SFunctionNode
*
)
pProj
)
->
funcId
))
{
static
bool
isUselessCol
(
SExprNode
*
pProj
)
{
if
(
QUERY_NODE_FUNCTION
==
nodeType
(
pProj
)
&&
!
fmIsScalar
Func
(((
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
;
}
...
...
source/libs/parser/src/parTranslater.c
浏览文件 @
df06d22c
...
...
@@ -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
);
...
...
source/libs/parser/src/sql.c
浏览文件 @
df06d22c
...
...
@@ -216,244 +216,252 @@ typedef union {
** yy_default[] Default action for each state.
**
*********** Begin parsing tables **********************************************/
#define YY_ACTTAB_COUNT (2
360
)
#define YY_ACTTAB_COUNT (2
436
)
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
,
3
4
,
33
,
1643
,
1589
,
41
,
39
,
/* 30 */
3
7
,
36
,
35
,
1329
,
119
,
1252
,
1777
,
41
,
39
,
37
,
/* 40 */
3
6
,
35
,
1585
,
122
,
103
,
1734
,
550
,
102
,
101
,
100
,
/* 50 */
99
,
98
,
97
,
96
,
95
,
94
,
1324
,
526
,
5
50
,
23
,
/* 10 */
1645
,
1693
,
39
,
37
,
1919
,
549
,
323
,
325
,
1917
,
1690
,
/* 20 */
337
,
86
,
1254
,
1457
,
3
3
,
32
,
1643
,
1589
,
40
,
38
,
/* 30 */
3
6
,
35
,
34
,
1329
,
119
,
1252
,
1777
,
40
,
38
,
36
,
/* 40 */
3
5
,
34
,
1585
,
122
,
103
,
1734
,
549
,
102
,
101
,
100
,
/* 50 */
99
,
98
,
97
,
96
,
95
,
94
,
1324
,
526
,
5
49
,
22
,
/* 60 */
14
,
1016
,
342
,
1015
,
1795
,
1638
,
1640
,
1260
,
113
,
142
,
/* 70 */
1795
,
1468
,
578
,
79
,
122
,
468
,
466
,
1747
,
54
3
,
577
,
/* 80 */
40
,
38
,
1392
,
120
,
1
,
1593
,
122
,
61
,
337
,
61
,
/* 90 */
1254
,
1017
,
358
,
55
5
,
1586
,
555
,
379
,
552
,
155
,
1862
,
/* 70 */
1795
,
1468
,
578
,
79
,
122
,
468
,
466
,
1747
,
54
2
,
577
,
/* 80 */
39
,
37
,
1392
,
120
,
1
,
1593
,
122
,
61
,
337
,
61
,
/* 90 */
1254
,
1017
,
358
,
55
4
,
1586
,
554
,
379
,
551
,
155
,
1862
,
/* 100 */
1863
,
1329
,
1867
,
1252
,
1808
,
1479
,
659
,
1521
,
89
,
1778
,
/* 110 */
580
,
1780
,
1781
,
576
,
120
,
571
,
54
2
,
553
,
1854
,
553
,
/* 110 */
580
,
1780
,
1781
,
576
,
120
,
571
,
54
1
,
552
,
1854
,
552
,
/* 120 */
1331
,
1332
,
304
,
1850
,
1324
,
1478
,
120
,
526
,
14
,
249
,
/* 130 */
1862
,
54
9
,
1456
,
548
,
1920
,
1260
,
1920
,
1920
,
164
,
31
,
/* 130 */
1862
,
54
8
,
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
,
4
4
,
476
,
475
,
474
,
1747
,
160
,
577
,
1331
,
1332
,
/* 180 */
578
,
4
3
,
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
,
53
9
,
90
,
1778
,
580
,
1780
,
/* 220 */
1781
,
576
,
1279
,
571
,
162
,
1454
,
1854
,
162
,
55
3
,
162
,
/* 230 */
3
30
,
1850
,
1933
,
1255
,
314
,
1253
,
61
,
303
,
140
,
143
,
/* 240 */
516
,
1888
,
999
,
1549
,
3
4
,
33
,
1645
,
1596
,
41
,
39
,
/* 250 */
3
7
,
36
,
35
,
341
,
536
,
1411
,
1412
,
1414
,
1415
,
1477
,
/* 210 */
1330
,
1333
,
1808
,
1413
,
1278
,
53
8
,
90
,
1778
,
580
,
1780
,
/* 220 */
1781
,
576
,
1279
,
571
,
162
,
1454
,
1854
,
162
,
55
2
,
162
,
/* 230 */
3
28
,
1850
,
1933
,
1255
,
314
,
1253
,
61
,
303
,
140
,
143
,
/* 240 */
516
,
1888
,
999
,
1549
,
3
3
,
32
,
1645
,
1596
,
40
,
38
,
/* 250 */
3
6
,
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
,
4
3
,
472
,
545
,
540
,
305
,
1353
,
11
,
10
,
/* 280 */
39
,
37
,
1003
,
1004
,
315
,
349
,
313
,
312
,
337
,
470
,
/* 290 */
1254
,
1777
,
4
2
,
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
,
55
4
,
14
,
1351
,
/* 330 */
1639
,
1640
,
1747
,
437
,
577
,
1260
,
433
,
40
,
38
,
159
,
/* 320 */
1358
,
1292
,
1151
,
1152
,
1324
,
1278
,
1920
,
55
3
,
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
,
2
8
,
90
,
1778
,
580
,
1780
,
1781
,
576
,
435
,
/* 370 */
571
,
71
,
370
,
1854
,
659
,
1276
,
162
,
3
30
,
1850
,
154
,
/* 360 */
1252
,
1917
,
2
7
,
90
,
1778
,
580
,
1780
,
1781
,
576
,
435
,
/* 370 */
571
,
71
,
370
,
1854
,
659
,
1276
,
162
,
3
28
,
1850
,
154
,
/* 380 */
1396
,
1324
,
1365
,
1352
,
117
,
1016
,
1278
,
1015
,
1331
,
1332
,
/* 390 */
1309
,
158
,
1260
,
1588
,
372
,
368
,
54
4
,
34
,
33
,
1880
,
/* 400 */
1571
,
4
1
,
39
,
37
,
36
,
35
,
1357
,
479
,
478
,
8
,
/* 390 */
1309
,
158
,
1260
,
1588
,
372
,
368
,
54
3
,
33
,
32
,
1880
,
/* 400 */
1571
,
4
0
,
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
,
56
2
,
1253
,
34
,
33
,
140
,
613
,
/* 440 */
4
1
,
39
,
37
,
36
,
35
,
1331
,
1332
,
1595
,
30
,
335
,
/* 430 */
324
,
659
,
162
,
1255
,
56
1
,
1253
,
33
,
32
,
140
,
613
,
/* 440 */
4
0
,
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 */
3
4
,
33
,
214
,
526
,
41
,
39
,
37
,
36
,
35
,
170
,
/* 490 */
1255
,
207
,
1253
,
219
,
165
,
1281
,
340
,
3
7
,
36
,
35
,
/* 500 */
59
,
3
4
,
33
,
1747
,
140
,
41
,
39
,
37
,
36
,
35
,
/* 480 */
3
3
,
32
,
214
,
526
,
40
,
38
,
36
,
35
,
34
,
170
,
/* 490 */
1255
,
207
,
1253
,
219
,
165
,
1281
,
340
,
3
6
,
35
,
34
,
/* 500 */
59
,
3
3
,
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 */
4
5
,
4
,
337
,
555
,
1254
,
174
,
173
,
172
,
1260
,
9
,
/* 590 */
251
,
472
,
1260
,
1474
,
39
,
37
,
1683
,
1254
,
498
,
383
,
/* 600 */
4
4
,
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
,
56
3
,
495
,
1324
,
493
,
/* 640 */
1352
,
2
7
,
1260
,
1073
,
1920
,
1331
,
1332
,
34
,
33
,
1260
,
/* 650 */
162
,
4
1
,
39
,
37
,
36
,
35
,
1569
,
159
,
1869
,
1472
,
/* 660 */
1471
,
1917
,
56
,
1357
,
611
,
55
,
9
,
1869
,
55
9
,
526
,
/* 670 */
1747
,
3
4
,
33
,
1645
,
1448
,
41
,
39
,
37
,
36
,
35
,
/* 630 */
485
,
659
,
304
,
1850
,
1747
,
205
,
56
2
,
495
,
1324
,
493
,
/* 640 */
1352
,
2
6
,
1260
,
1073
,
1920
,
1331
,
1332
,
33
,
32
,
1260
,
/* 650 */
162
,
4
0
,
38
,
36
,
35
,
34
,
1569
,
159
,
1869
,
1472
,
/* 660 */
1471
,
1917
,
56
,
1357
,
611
,
55
,
9
,
1869
,
55
8
,
526
,
/* 670 */
1747
,
3
3
,
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
,
55
7
,
1747
,
/* 740 */
1255
,
1688
,
1253
,
298
,
617
,
2
9
,
1565
,
1255
,
1403
,
1253
,
/* 750 */
159
,
3
4
,
33
,
514
,
1917
,
41
,
39
,
37
,
36
,
35
,
/* 760 */
347
,
1874
,
1385
,
1263
,
1691
,
34
,
33
,
1258
,
1259
,
41
,
/* 770 */
3
9
,
37
,
36
,
35
,
1258
,
1259
,
213
,
1307
,
1308
,
1310
,
/* 730 */
1323
,
1325
,
1326
,
1327
,
1328
,
1330
,
1333
,
1920
,
55
6
,
1747
,
/* 740 */
1255
,
1688
,
1253
,
298
,
617
,
2
8
,
1565
,
1255
,
1403
,
1253
,
/* 750 */
159
,
3
3
,
32
,
514
,
1917
,
40
,
38
,
36
,
35
,
34
,
/* 760 */
347
,
1874
,
1385
,
616
,
1691
,
33
,
32
,
1258
,
1259
,
40
,
/* 770 */
3
8
,
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
,
3
4
,
33
,
1260
,
/* 850 */
1747
,
4
1
,
39
,
37
,
36
,
35
,
113
,
1920
,
550
,
52
,
/* 860 */
510
,
389
,
198
,
473
,
126
2
,
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
,
3
30
,
/* 890 */
1850
,
1933
,
1460
,
1459
,
200
,
1266
,
1497
,
199
,
567
,
1580
,
/* 840 */
1747
,
1593
,
1292
,
1568
,
1747
,
526
,
577
,
3
3
,
32
,
1260
,
/* 850 */
1747
,
4
0
,
38
,
36
,
35
,
34
,
113
,
1920
,
549
,
52
,
/* 860 */
510
,
389
,
198
,
473
,
126
3
,
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
,
3
28
,
/* 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
,
1
576
,
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
,
4
2
,
1258
,
1259
,
550
,
1307
,
1308
,
1310
,
/* 930 */
628
,
141
,
1
042
,
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
,
4
1
,
1258
,
1259
,
549
,
1307
,
1308
,
1310
,
/* 980 */
1311
,
1312
,
1313
,
1314
,
573
,
569
,
1322
,
1323
,
1325
,
1326
,
/* 990 */
1327
,
1328
,
1330
,
1333
,
1795
,
526
,
126
5
,
61
,
202
,
526
,
/* 1000 */
526
,
201
,
55
4
,
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 */
1
343
,
1593
,
525
,
1388
,
1808
,
88
,
526
,
1777
,
90
,
1778
,
/* 990 */
1327
,
1328
,
1330
,
1333
,
1795
,
526
,
126
6
,
61
,
202
,
526
,
/* 1000 */
526
,
201
,
55
3
,
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 */
1
265
,
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
,
2
86
,
/* 1020 */
274
,
265
,
375
,
293
,
298
,
314
,
266
,
293
,
293
,
298
,
/* 1030 */
1
92
,
293
,
276
,
225
,
325
,
122
,
265
,
257
,
329
,
330
,
/* 1010 */
276
,
276
,
196
,
287
,
276
,
85
,
43
,
258
,
287
,
2
74
,
/* 1020 */
375
,
265
,
321
,
293
,
298
,
314
,
266
,
293
,
293
,
298
,
/* 1030 */
1
67
,
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
,
2
76
,
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
,
2
64
,
186
,
/* 1100 */
187
,
188
,
189
,
190
,
191
,
325
,
33
,
287
,
35
,
329
,
/* 1110 */
330
,
331
,
332
,
333
,
334
,
2
93
,
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
,
28
9
,
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 */
2
69
,
325
,
300
,
269
,
313
,
329
,
330
,
331
,
332
,
333
,
/* 1210 */
334
,
20
,
336
,
315
,
269
,
269
,
313
,
20
,
269
,
269
,
/* 1220 */
3
06
,
265
,
285
,
269
,
259
,
285
,
285
,
285
,
285
,
285
,
/* 1230 */
293
,
355
,
285
,
285
,
265
,
298
,
259
,
300
,
165
,
320
,
/* 1240 */
167
,
26
7
,
285
,
285
,
368
,
285
,
285
,
257
,
372
,
267
,
/* 1250 */
2
98
,
314
,
319
,
173
,
265
,
300
,
265
,
231
,
20
,
267
,
/* 1260 */
2
98
,
298
,
325
,
149
,
298
,
192
,
329
,
330
,
331
,
332
,
/* 1270 */
333
,
334
,
3
13
,
336
,
298
,
285
,
203
,
204
,
205
,
206
,
/* 1280 */
207
,
208
,
209
,
293
,
309
,
298
,
307
,
309
,
298
,
293
,
/* 1290 */
300
,
30
6
,
355
,
281
,
267
,
267
,
293
,
298
,
328
,
257
,
/* 1300 */
2
32
,
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
,
36
0
,
339
,
/* 1330 */
3
58
,
364
,
361
,
343
,
344
,
293
,
20
,
244
,
327
,
242
,
/* 1340 */
298
,
24
7
,
300
,
363
,
84
,
359
,
342
,
289
,
265
,
298
,
/* 1350 */
2
75
,
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
,
3
5
,
/* 1400 */
185
,
0
,
293
,
35
,
35
,
185
,
0
,
298
,
185
,
300
,
/* 1410 */
0
,
0
,
22
,
35
,
0
,
35
,
0
,
84
,
17
0
,
257
,
/* 1420 */
325
,
169
,
167
,
16
5
,
329
,
330
,
331
,
332
,
333
,
334
,
/* 1430 */
335
,
336
,
337
,
338
,
325
,
0
,
0
,
257
,
329
,
330
,
/* 1440 */
331
,
332
,
333
,
334
,
16
1
,
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
,
2
87
,
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
,
36
9
,
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 */
2
59
,
325
,
20
,
259
,
20
,
329
,
330
,
331
,
332
,
333
,
/* 1210 */
334
,
320
,
336
,
20
,
269
,
300
,
269
,
313
,
20
,
269
,
/* 1220 */
3
15
,
313
,
285
,
269
,
20
,
269
,
306
,
269
,
265
,
269
,
/* 1230 */
293
,
355
,
320
,
259
,
285
,
298
,
285
,
300
,
165
,
259
,
/* 1240 */
167
,
26
5
,
285
,
173
,
368
,
267
,
285
,
257
,
372
,
285
,
/* 1250 */
2
85
,
314
,
285
,
285
,
285
,
285
,
285
,
298
,
267
,
319
,
/* 1260 */
2
65
,
265
,
325
,
231
,
267
,
192
,
329
,
330
,
331
,
332
,
/* 1270 */
333
,
334
,
3
00
,
336
,
267
,
285
,
203
,
204
,
205
,
206
,
/* 1280 */
207
,
208
,
209
,
293
,
309
,
298
,
298
,
298
,
298
,
149
,
/* 1290 */
300
,
30
9
,
355
,
307
,
313
,
293
,
298
,
298
,
306
,
257
,
/* 1300 */
2
81
,
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
,
24
0
,
339
,
/* 1330 */
3
64
,
239
,
227
,
343
,
344
,
293
,
223
,
323
,
361
,
20
,
/* 1340 */
298
,
24
4
,
300
,
358
,
360
,
293
,
363
,
84
,
327
,
247
,
/* 1350 */
2
89
,
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
,
7
5
,
/* 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
,
3
5
,
329
,
330
,
331
,
332
,
333
,
334
,
/* 1430 */
335
,
336
,
337
,
338
,
325
,
0
,
84
,
257
,
329
,
330
,
/* 1440 */
331
,
332
,
333
,
334
,
16
9
,
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 (19
29
)
#define YY_SHIFT_MAX (19
10
)
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
,
1
592
,
23
,
107
,
428
,
21
,
41
,
375
,
65
,
366
,
/* 130 */
541
,
541
,
261
,
696
,
466
,
466
,
466
,
466
,
466
,
466
,
/* 140 */
466
,
1
694
,
23
,
107
,
428
,
21
,
41
,
375
,
65
,
366
,
/* 150 */
816
,
365
,
649
,
495
,
475
,
539
,
660
,
539
,
558
,
497
,
/* 160 */
497
,
497
,
808
,
194
,
107
6
,
936
,
1145
,
1120
,
1136
,
1009
,
/* 170 */
114
5
,
1145
,
1140
,
1040
,
1040
,
1145
,
1145
,
1173
,
1173
,
1175
,
/* 180 */
89
,
148
,
89
,
11
76
,
1191
,
89
,
1176
,
89
,
1197
,
89
,
/* 190 */
89
,
114
5
,
89
,
1173
,
305
,
305
,
305
,
305
,
305
,
305
,
/* 200 */
305
,
305
,
305
,
305
,
305
,
114
5
,
1173
,
541
,
1175
,
380
,
/* 210 */
10
80
,
148
,
380
,
1145
,
1145
,
1176
,
380
,
1026
,
541
,
541
,
/* 220 */
541
,
541
,
10
26
,
541
,
1114
,
528
,
1197
,
380
,
261
,
380
,
/* 230 */
528
,
12
38
,
541
,
1068
,
1026
,
541
,
541
,
1068
,
1026
,
541
,
/* 240 */
541
,
305
,
10
63
,
1151
,
1068
,
1070
,
1077
,
1086
,
936
,
1089
,
/* 250 */
528
,
131
6
,
1093
,
1097
,
1094
,
1093
,
1097
,
1093
,
1097
,
1260
,
/* 260 */
107
6
,
541
,
805
,
1145
,
380
,
1317
,
1173
,
2360
,
2360
,
2360
,
/* 270 */
2
360
,
2360
,
2360
,
2360
,
348
,
170
2
,
132
,
579
,
472
,
16
,
/* 160 */
497
,
497
,
808
,
194
,
107
8
,
939
,
1148
,
1125
,
1142
,
1017
,
/* 170 */
114
8
,
1148
,
1145
,
1048
,
1048
,
1148
,
1148
,
1182
,
1182
,
1184
,
/* 180 */
89
,
148
,
89
,
11
93
,
1198
,
89
,
1193
,
89
,
1204
,
89
,
/* 190 */
89
,
114
8
,
89
,
1182
,
305
,
305
,
305
,
305
,
305
,
305
,
/* 200 */
305
,
305
,
305
,
305
,
305
,
114
8
,
1182
,
541
,
1184
,
380
,
/* 210 */
10
70
,
148
,
380
,
1148
,
1148
,
1193
,
380
,
1032
,
541
,
541
,
/* 220 */
541
,
541
,
10
32
,
541
,
1140
,
528
,
1204
,
380
,
261
,
380
,
/* 230 */
528
,
12
83
,
541
,
1076
,
1032
,
541
,
541
,
1076
,
1032
,
541
,
/* 240 */
541
,
305
,
10
79
,
1169
,
1076
,
1088
,
1092
,
1105
,
939
,
1113
,
/* 250 */
528
,
131
9
,
1097
,
1112
,
1102
,
1097
,
1112
,
1097
,
1112
,
1263
,
/* 260 */
107
8
,
541
,
696
,
1148
,
380
,
1322
,
1182
,
2436
,
2436
,
2436
,
/* 270 */
2
436
,
2436
,
2436
,
2436
,
348
,
171
2
,
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
,
104
1
,
1045
,
1047
,
1050
,
728
,
829
,
1053
,
/* 330 */
951
,
847
,
625
,
391
,
1074
,
838
,
1079
,
1036
,
1085
,
1088
,
/* 340 */
1
096
,
1098
,
1099
,
1100
,
1052
,
1054
,
896
,
1358
,
1189
,
1377
,
/* 350 */
13
82
,
1345
,
1389
,
1315
,
1391
,
1357
,
1211
,
1362
,
1363
,
1364
,
/* 360 */
12
15
,
1401
,
1368
,
1369
,
1220
,
1406
,
1223
,
1410
,
1378
,
1411
,
/* 370 */
139
0
,
1414
,
1380
,
1416
,
1333
,
1248
,
1252
,
1255
,
1258
,
1435
,
/* 380 */
14
36
,
1283
,
1286
,
1448
,
1449
,
1404
,
1451
,
1452
,
1453
,
131
0
,
/* 390 */
14
56
,
1457
,
1458
,
1459
,
1461
,
1324
,
1429
,
1466
,
1328
,
1468
,
/* 400 */
14
69
,
1471
,
1472
,
1474
,
1475
,
1476
,
1477
,
1479
,
1481
,
1484
,
/* 410 */
1
485
,
1486
,
1488
,
1455
,
1490
,
1499
,
1500
,
1502
,
1503
,
1504
,
/* 420 */
149
3
,
1507
,
1508
,
1518
,
1519
,
1520
,
1465
,
1523
,
1524
,
1487
,
/* 430 */
14
89
,
1483
,
1513
,
1491
,
1521
,
1492
,
1533
,
1494
,
1497
,
1539
,
/* 440 */
154
0
,
1542
,
1505
,
1387
,
1545
,
1546
,
1547
,
1495
,
1548
,
1549
,
/* 450 */
15
15
,
1511
,
1512
,
1552
,
1525
,
1526
,
1514
,
1554
,
1535
,
1528
,
/* 460 */
15
16
,
1571
,
1541
,
1531
,
1544
,
1579
,
1580
,
1581
,
1585
,
1501
,
/* 470 */
1
498
,
1551
,
1565
,
1588
,
1555
,
1557
,
1558
,
1560
,
1553
,
1559
,
/* 480 */
156
3
,
1566
,
1577
,
1586
,
1597
,
1578
,
1622
,
1601
,
1582
,
1628
,
/* 490 */
16
07
,
1591
,
1630
,
1600
,
1636
,
1602
,
1638
,
1618
,
1623
,
1642
,
/* 500 */
15
10
,
1615
,
1649
,
1482
,
1632
,
1529
,
1522
,
1652
,
1655
,
1530
,
/* 510 */
15
32
,
1656
,
1657
,
1660
,
1589
,
1587
,
1509
,
1677
,
1596
,
1538
,
/* 520 */
159
9
,
1690
,
1646
,
1543
,
1609
,
1603
,
1650
,
1659
,
1467
,
1616
,
/* 530 */
16
13
,
1620
,
1631
,
1633
,
1629
,
1693
,
1674
,
1635
,
1637
,
1645
,
/* 540 */
16
48
,
1653
,
1679
,
1687
,
1688
,
1658
,
1694
,
1517
,
1662
,
1663
,
/* 550 */
1
695
,
1537
,
1697
,
1704
,
1705
,
1667
,
1717
,
1534
,
1676
,
1664
,
/* 560 */
17
30
,
1732
,
1733
,
1734
,
1735
,
1676
,
1770
,
1594
,
1731
,
1689
,
/* 570 */
16
98
,
1700
,
1707
,
1703
,
1708
,
1744
,
1711
,
1713
,
1752
,
1778
,
/* 580 */
1
608
,
1719
,
1706
,
1720
,
1772
,
1773
,
1725
,
1726
,
1775
,
1728
,
/* 590 */
17
29
,
1780
,
1736
,
1738
,
1781
,
1740
,
1748
,
1782
,
1750
,
1710
,
/* 600 */
17
14
,
1741
,
1746
,
1791
,
1745
,
1759
,
1760
,
1810
,
1762
,
1805
,
/* 610 */
1
805
,
1830
,
1795
,
1798
,
1824
,
1796
,
1783
,
1821
,
1832
,
1833
,
/* 620 */
183
4
,
1835
,
1837
,
1844
,
1838
,
1839
,
1808
,
1553
,
1842
,
1559
,
/* 630 */
1843
,
184
5
,
1846
,
1847
,
1849
,
1850
,
1851
,
1879
,
1853
,
1854
,
/* 640 */
18
61
,
1890
,
1868
,
1858
,
1867
,
1908
,
1874
,
1863
,
1876
,
1913
,
/* 650 */
18
81
,
1870
,
1882
,
1918
,
1885
,
1887
,
1923
,
1905
,
1907
,
1909
,
/* 660 */
1
910
,
1920
,
1929
,
/* 320 */
707
,
930
,
973
,
104
5
,
1047
,
1050
,
1053
,
1074
,
894
,
832
,
/* 330 */
625
,
391
,
1096
,
829
,
863
,
884
,
1098
,
1038
,
1085
,
1100
,
/* 340 */
1
104
,
1106
,
1107
,
1108
,
993
,
897
,
1127
,
1364
,
1202
,
1384
,
/* 350 */
13
90
,
1355
,
1398
,
1324
,
1400
,
1366
,
1218
,
1369
,
1370
,
1371
,
/* 360 */
12
23
,
1410
,
1376
,
1377
,
1228
,
1414
,
1230
,
1416
,
1382
,
1418
,
/* 370 */
139
9
,
1422
,
1388
,
1435
,
1352
,
1276
,
1275
,
1281
,
1285
,
1449
,
/* 380 */
14
51
,
1291
,
1293
,
1454
,
1456
,
1411
,
1458
,
1459
,
1461
,
132
0
,
/* 390 */
14
63
,
1466
,
1467
,
1468
,
1469
,
1332
,
1437
,
1474
,
1336
,
1476
,
/* 400 */
14
77
,
1479
,
1481
,
1484
,
1485
,
1486
,
1488
,
1490
,
1497
,
1499
,
/* 410 */
1
500
,
1502
,
1503
,
1462
,
1507
,
1508
,
1515
,
1523
,
1524
,
1526
,
/* 420 */
149
6
,
1519
,
1520
,
1521
,
1527
,
1528
,
1473
,
1533
,
1534
,
1493
,
/* 430 */
14
98
,
1495
,
1522
,
1501
,
1525
,
1504
,
1540
,
1505
,
1509
,
1542
,
/* 440 */
154
3
,
1544
,
1510
,
1395
,
1546
,
1552
,
1553
,
1512
,
1554
,
1555
,
/* 450 */
15
35
,
1511
,
1517
,
1560
,
1536
,
1529
,
1539
,
1575
,
1545
,
1532
,
/* 460 */
15
47
,
1581
,
1548
,
1538
,
1549
,
1587
,
1589
,
1590
,
1592
,
1530
,
/* 470 */
1
531
,
1558
,
1572
,
1595
,
1561
,
1562
,
1563
,
1565
,
1559
,
1568
,
/* 480 */
156
6
,
1577
,
1586
,
1591
,
1624
,
1603
,
1628
,
1607
,
1582
,
1630
,
/* 490 */
16
11
,
1601
,
1635
,
1602
,
1638
,
1604
,
1640
,
1620
,
1625
,
1644
,
/* 500 */
15
37
,
1612
,
1646
,
1478
,
1626
,
1550
,
1513
,
1650
,
1651
,
1556
,
/* 510 */
15
41
,
1652
,
1653
,
1654
,
1571
,
1576
,
1489
,
1656
,
1573
,
1557
,
/* 520 */
159
3
,
1673
,
1636
,
1551
,
1594
,
1580
,
1634
,
1639
,
1453
,
1599
,
/* 530 */
16
05
,
1608
,
1606
,
1609
,
1613
,
1642
,
1615
,
1621
,
1622
,
1637
,
/* 540 */
16
19
,
1655
,
1641
,
1663
,
1645
,
1667
,
1514
,
1627
,
1629
,
1677
,
/* 550 */
1
516
,
1681
,
1679
,
1684
,
1658
,
1683
,
1569
,
1659
,
1696
,
1705
,
/* 560 */
17
17
,
1718
,
1719
,
1720
,
1659
,
1754
,
1735
,
1570
,
1715
,
1676
,
/* 570 */
16
85
,
1687
,
1688
,
1690
,
1691
,
1723
,
1697
,
1698
,
1726
,
1739
,
/* 580 */
1
584
,
1699
,
1689
,
1700
,
1751
,
1753
,
1706
,
1704
,
1758
,
1716
,
/* 590 */
17
11
,
1766
,
1721
,
1722
,
1767
,
1724
,
1725
,
1774
,
1728
,
1707
,
/* 600 */
17
09
,
1713
,
1714
,
1792
,
1736
,
1745
,
1749
,
1785
,
1750
,
1798
,
/* 610 */
1
798
,
1822
,
1794
,
1786
,
1818
,
1789
,
1776
,
1816
,
1827
,
1829
,
/* 620 */
183
0
,
1834
,
1835
,
1850
,
1838
,
1839
,
1808
,
1559
,
1842
,
1568
,
/* 630 */
1843
,
184
4
,
1845
,
1846
,
1847
,
1848
,
1849
,
1876
,
1852
,
1854
,
/* 640 */
18
51
,
1888
,
1856
,
1855
,
1853
,
1889
,
1859
,
1857
,
1858
,
1895
,
/* 650 */
18
61
,
1862
,
1864
,
1905
,
1871
,
1873
,
1910
,
1891
,
1890
,
1893
,
/* 660 */
1
894
,
1896
,
1898
,
};
#define YY_REDUCE_COUNT (273)
#define YY_REDUCE_MIN (-354)
#define YY_REDUCE_MAX (20
23
)
#define YY_REDUCE_MAX (20
99
)
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 */
13
76
,
1394
,
1446
,
1496
,
1506
,
1562
,
1604
,
1614
,
1626
,
1668
,
/* 30 */
1
685
,
1727
,
1737
,
1779
,
1789
,
1831
,
1841
,
1893
,
1912
,
1935
,
/* 40 */
1954
,
2013
,
2023
,
-
219
,
711
,
-
250
,
-
207
,
593
,
731
,
726
,
/* 50 */
82
0
,
-
218
,
382
,
446
,
502
,
-
208
,
580
,
-
261
,
-
257
,
-
354
,
/* 20 */
13
86
,
1403
,
1494
,
1506
,
1518
,
1600
,
1614
,
1664
,
1680
,
1733
,
/* 30 */
1
747
,
1799
,
1817
,
1841
,
1899
,
1922
,
1979
,
1991
,
2005
,
2057
,
/* 40 */
2075
,
2099
,
-
219
,
711
,
-
250
,
-
207
,
593
,
731
,
820
,
726
,
/* 50 */
82
8
,
-
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
,
8
22
,
-
246
,
49
,
-
201
,
/* 80 */
-
275
,
-
215
,
771
,
219
,
-
39
,
267
,
8
55
,
-
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
,
8
61
,
884
,
852
,
823
,
797
,
797
,
797
,
809
,
783
,
/* 160 */
78
4
,
785
,
801
,
807
,
869
,
840
,
901
,
846
,
904
,
862
,
/* 170 */
91
2
,
915
,
881
,
885
,
886
,
926
,
927
,
938
,
939
,
879
,
/* 180 */
9
31
,
902
,
934
,
891
,
898
,
945
,
903
,
946
,
914
,
949
,
/* 190 */
95
0
,
956
,
954
,
965
,
940
,
941
,
942
,
943
,
944
,
947
,
/* 200 */
9
48
,
957
,
958
,
960
,
961
,
969
,
977
,
952
,
919
,
974
,
/* 210 */
9
33
,
955
,
982
,
989
,
991
,
959
,
992
,
975
,
962
,
963
,
/* 220 */
9
66
,
976
,
978
,
987
,
979
,
996
,
985
,
1027
,
1012
,
1028
,
/* 230 */
100
3
,
970
,
999
,
953
,
993
,
1005
,
1006
,
964
,
997
,
1010
,
/* 240 */
10
13
,
807
,
967
,
980
,
971
,
968
,
986
,
972
,
994
,
797
,
/* 250 */
10
25
,
1011
,
983
,
981
,
984
,
988
,
995
,
998
,
1000
,
1004
,
/* 260 */
10
58
,
1051
,
1075
,
1083
,
1090
,
1101
,
1103
,
1038
,
1044
,
1084
,
/* 270 */
1
104
,
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
,
8
70
,
834
,
824
,
814
,
801
,
801
,
801
,
809
,
788
,
/* 160 */
78
9
,
791
,
810
,
807
,
874
,
844
,
906
,
851
,
907
,
866
,
/* 170 */
91
9
,
921
,
883
,
893
,
895
,
932
,
934
,
941
,
944
,
891
,
/* 180 */
9
45
,
915
,
947
,
904
,
905
,
950
,
908
,
954
,
920
,
956
,
/* 190 */
95
8
,
963
,
960
,
974
,
949
,
951
,
957
,
961
,
964
,
965
,
/* 200 */
9
67
,
968
,
969
,
970
,
971
,
976
,
980
,
959
,
912
,
978
,
/* 210 */
9
40
,
972
,
991
,
995
,
996
,
981
,
997
,
975
,
987
,
988
,
/* 220 */
9
89
,
998
,
982
,
999
,
986
,
1002
,
992
,
1007
,
1019
,
1034
,
/* 230 */
100
9
,
979
,
1006
,
952
,
1001
,
1008
,
1013
,
953
,
1003
,
1018
,
/* 240 */
10
20
,
807
,
966
,
983
,
977
,
984
,
994
,
985
,
1014
,
801
,
/* 250 */
10
52
,
1021
,
1011
,
1000
,
1015
,
1012
,
1022
,
1016
,
1026
,
1023
,
/* 260 */
10
61
,
1057
,
1081
,
1086
,
1090
,
1099
,
1101
,
1044
,
1051
,
1083
,
/* 270 */
1
089
,
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
,
1
453
,
1453
,
/* 330 */
1
857
,
1453
,
1925
,
1929
,
1453
,
1453
,
1453
,
1768
,
1453
,
1453
,
/* 320 */
1453
,
1453
,
1453
,
1453
,
1453
,
1453
,
1453
,
1453
,
1
857
,
1453
,
/* 330 */
1
925
,
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
,
1
453
,
1768
,
1453
,
1907
,
1453
,
1867
,
186
3
,
/* 550 */
1453
,
1
453
,
1859
,
1767
,
1453
,
1453
,
192
3
,
1453
,
1453
,
1453
,
/* 560 */
1453
,
1453
,
1453
,
1453
,
1453
,
1
453
,
1852
,
1453
,
1825
,
1810
,
/* 540 */
1453
,
1453
,
1453
,
1
768
,
1453
,
1907
,
1453
,
1867
,
1863
,
145
3
,
/* 550 */
1453
,
1
859
,
1767
,
1453
,
1453
,
1923
,
145
3
,
1453
,
1453
,
1453
,
/* 560 */
1453
,
1453
,
1453
,
1453
,
1453
,
1
852
,
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
;
...
...
source/libs/planner/src/planOptimizer.c
浏览文件 @
df06d22c
...
...
@@ -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
;
}
...
...
source/libs/scalar/src/scalar.c
浏览文件 @
df06d22c
...
...
@@ -1036,71 +1036,124 @@ _return:
return
code
;
}
int32_t
scalarGetOperatorResultType
(
SDataType
left
,
SDataType
right
,
EOperatorType
op
,
SDataType
*
pRes
)
{
switch
(
op
)
{
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
);
static
int32_t
getMinusOperatorResultType
(
SOperatorNode
*
pOp
)
{
if
(
!
IS_MATHABLE_TYPE
(((
SExprNode
*
)(
pOp
->
pLeft
))
->
resType
.
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
;
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
;
}
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
;
}
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
;
}
}
}
pRes
->
type
=
TSDB_DATA_TYPE_DOUBLE
;
pOp
->
node
.
resType
.
type
=
TSDB_DATA_TYPE_BOOL
;
pOp
->
node
.
resType
.
bytes
=
tDataTypes
[
TSDB_DATA_TYPE_BOOL
].
bytes
;
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
);
}
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
;
}
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
);
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
:
case
OP_TYPE_SUB
:
case
OP_TYPE_MULTI
:
case
OP_TYPE_DIV
:
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
;
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录