diff --git a/src/proxy/ddl_test.go b/src/proxy/ddl_test.go index da8fdb1d..79c7fba8 100644 --- a/src/proxy/ddl_test.go +++ b/src/proxy/ddl_test.go @@ -776,6 +776,10 @@ func TestProxyDDLCreateTable(t *testing.T) { "create table t4(a int, b int)engine=tokudb PARTITION BY hash(a) ", "create table t5(a int, b int) default charset=utf8 PARTITION BY hash(a) ", "create table t6(a int, b int)engine=tokudb auto_increment=10 default charset=utf8 PARTITION BY hash(a) ", + "create table t7(a int collate utf8_bin Collate 'utf8_bin' collate \"utf8_bin\") partition by hash(a)", + "create table t8(a int, b int) partition by hash(a)", + "create table t9(a int, b timestamp(5) on update current_timestamp(5) column_format fixed column_format default column_format dynamic) partition by hash(a)", + "create table t10(a int column_format fixed column_format default column_format dynamic) partition by hash(a) comment='comment option' engine=tokudb default charset='utf8' avg_row_length=123 checksum=1 collate='utf8_bin' compression='lz4' connection='id' data directory='/data' index directory='/index' delay_key_write=1 encryption='n' insert_method=First key_block_size=1 max_rows=3 min_rows=2 pack_keys=default password='pwd' row_format=dynamic stats_auto_recalc=1 stats_persistent=default stats_sample_pages=65535 tablespace=storage", } for _, query := range querys { diff --git a/src/vendor/github.com/xelabs/go-mysqlstack/sqlparser/ast.go b/src/vendor/github.com/xelabs/go-mysqlstack/sqlparser/ast.go index 2a1c87e6..71fcd6c2 100644 --- a/src/vendor/github.com/xelabs/go-mysqlstack/sqlparser/ast.go +++ b/src/vendor/github.com/xelabs/go-mysqlstack/sqlparser/ast.go @@ -717,8 +717,33 @@ const ( TableOptionCharset TableOptionTableType TableOptionAutoInc + TableOptionAvgRowLength + TableOptionChecksum + TableOptionCollate + TableOptionCompression + TableOptionConnection + TableOptionDataDirectory + TableOptionIndexDirectory + TableOptionDelayKeyWrite + TableOptionEncryption + TableOptionInsertMethod + TableOptionKeyBlockSize + TableOptionMaxRows + TableOptionMinRows + TableOptionPackKeys + TableOptionPassword + TableOptionRowFormat + TableOptionStatsAutoRecalc + TableOptionStatsPersistent + TableOptionStatsSamplePages + TableOptionTableSpace ) +// StrToLower use to convert str to lower string +func StrToLower(str string) string { + return strings.ToLower(str) +} + // TableOption represents the table options. // See https://dev.mysql.com/doc/refman/5.7/en/create-table.html type TableOption struct { @@ -736,11 +761,30 @@ type TableOptionListOpt struct { // that each option should only be appeared just one time in RadonDB. func (tblOptList *TableOptionListOpt) CheckIfTableOptDuplicate() string { var optOnce = map[TableOptionType]bool{ - TableOptionComment: false, - TableOptionEngine: false, - TableOptionCharset: false, - TableOptionTableType: false, - TableOptionAutoInc: false, + TableOptionComment: false, + TableOptionEngine: false, + TableOptionCharset: false, + TableOptionTableType: false, + TableOptionAutoInc: false, + TableOptionAvgRowLength: false, + TableOptionChecksum: false, + TableOptionCollate: false, + TableOptionCompression: false, + TableOptionConnection: false, + TableOptionDataDirectory: false, + TableOptionIndexDirectory: false, + TableOptionDelayKeyWrite: false, + TableOptionEncryption: false, + TableOptionInsertMethod: false, + TableOptionKeyBlockSize: false, + TableOptionMaxRows: false, + TableOptionMinRows: false, + TableOptionPackKeys: false, + TableOptionPassword: false, + TableOptionRowFormat: false, + TableOptionStatsAutoRecalc: false, + TableOptionStatsPersistent: false, + TableOptionStatsSamplePages: false, } for _, opt := range tblOptList.TblOptList { switch opt.Type { @@ -769,7 +813,106 @@ func (tblOptList *TableOptionListOpt) CheckIfTableOptDuplicate() string { return "Duplicate table option for keyword 'auto_increment', the option should only be appeared just one time in RadonDB." } optOnce[TableOptionAutoInc] = true - + case TableOptionAvgRowLength: + if optOnce[TableOptionAvgRowLength] { + return "Duplicate table option for keyword 'avg_row_length', the option should only be appeared just one time in RadonDB." + } + optOnce[TableOptionAvgRowLength] = true + case TableOptionChecksum: + if optOnce[TableOptionChecksum] { + return "Duplicate table option for keyword 'checksum', the option should only be appeared just one time in RadonDB." + } + optOnce[TableOptionChecksum] = true + case TableOptionCollate: + if optOnce[TableOptionCollate] { + return "Duplicate table option for table option keyword 'collate', the option should only be appeared just one time in RadonDB." + } + optOnce[TableOptionCollate] = true + case TableOptionCompression: + if optOnce[TableOptionCompression] { + return "Duplicate table option for keyword 'compression', the option should only be appeared just one time in RadonDB." + } + optOnce[TableOptionCompression] = true + case TableOptionConnection: + if optOnce[TableOptionConnection] { + return "Duplicate table option for keyword 'connection', the option should only be appeared just one time in RadonDB." + } + optOnce[TableOptionConnection] = true + case TableOptionDataDirectory: + if optOnce[TableOptionDataDirectory] { + return "Duplicate table option for keyword 'data directory', the option should only be appeared just one time in RadonDB." + } + optOnce[TableOptionDataDirectory] = true + case TableOptionIndexDirectory: + if optOnce[TableOptionIndexDirectory] { + return "Duplicate table option for keyword 'index directory', the option should only be appeared just one time in RadonDB." + } + optOnce[TableOptionIndexDirectory] = true + case TableOptionDelayKeyWrite: + if optOnce[TableOptionDelayKeyWrite] { + return "Duplicate table option for keyword 'delay_key_write', the option should only be appeared just one time in RadonDB." + } + optOnce[TableOptionDelayKeyWrite] = true + case TableOptionEncryption: + if optOnce[TableOptionEncryption] { + return "Duplicate table option for keyword 'encryption', the option should only be appeared just one time in RadonDB." + } + optOnce[TableOptionEncryption] = true + case TableOptionInsertMethod: + if optOnce[TableOptionInsertMethod] { + return "Duplicate table option for keyword 'insert_method', the option should only be appeared just one time in RadonDB." + } + optOnce[TableOptionInsertMethod] = true + case TableOptionKeyBlockSize: + if optOnce[TableOptionKeyBlockSize] { + return "Duplicate table option for keyword 'key_block_size', the option should only be appeared just one time in RadonDB." + } + optOnce[TableOptionKeyBlockSize] = true + case TableOptionMaxRows: + if optOnce[TableOptionMaxRows] { + return "Duplicate table option for keyword 'max_rows', the option should only be appeared just one time in RadonDB." + } + optOnce[TableOptionMaxRows] = true + case TableOptionMinRows: + if optOnce[TableOptionMinRows] { + return "Duplicate table option for keyword 'min_rows', the option should only be appeared just one time in RadonDB." + } + optOnce[TableOptionMinRows] = true + case TableOptionPackKeys: + if optOnce[TableOptionPackKeys] { + return "Duplicate table option for keyword 'pack_keys', the option should only be appeared just one time in RadonDB." + } + optOnce[TableOptionPackKeys] = true + case TableOptionPassword: + if optOnce[TableOptionPassword] { + return "Duplicate table option for keyword 'password', the option should only be appeared just one time in RadonDB." + } + optOnce[TableOptionPassword] = true + case TableOptionRowFormat: + if optOnce[TableOptionRowFormat] { + return "Duplicate table option for keyword 'row_format', the option should only be appeared just one time in RadonDB." + } + optOnce[TableOptionRowFormat] = true + case TableOptionStatsAutoRecalc: + if optOnce[TableOptionStatsAutoRecalc] { + return "Duplicate table option for keyword 'stats_auto_recalc', the option should only be appeared just one time in RadonDB." + } + optOnce[TableOptionStatsAutoRecalc] = true + case TableOptionStatsPersistent: + if optOnce[TableOptionStatsPersistent] { + return "Duplicate table option for keyword 'stats_persistent', the option should only be appeared just one time in RadonDB." + } + optOnce[TableOptionStatsPersistent] = true + case TableOptionStatsSamplePages: + if optOnce[TableOptionStatsSamplePages] { + return "Duplicate table option for keyword 'stats_sample_pages', the option should only be appeared just one time in RadonDB." + } + optOnce[TableOptionStatsSamplePages] = true + case TableOptionTableSpace: + if optOnce[TableOptionTableSpace] { + return "Duplicate table option for keyword 'tablespace', the option should only be appeared just one time in RadonDB." + } + optOnce[TableOptionTableSpace] = true } } return "" @@ -787,10 +930,30 @@ func (tblOptList *TableOptionListOpt) GetTableOptValByType(optType TableOptionTy // TableOptions is used by TableSpec type TableOptions struct { - Comment string - Engine string - Charset string - Type string + Comment string + Engine string + Charset string + Type string + AvgRowLength string + Checksum string + Collate string + Compression string + Connection string + DataDirectory string + IndexDirectory string + DelayKeyWrite string + Encryption string + InsertMethod string + KeyBlockSize string + MaxRows string + MinRows string + PackKeys string + Password string + RowFormat string + StatsAutoRecalc string + StatsPersistent string + StatsSamplePages string + TableSpace string } // Format formats the node. @@ -804,6 +967,66 @@ func (opts TableOptions) Format(buf *TrackedBuffer) { if opts.Charset != "" { buf.Myprintf(" default charset=%s", opts.Charset) } + if opts.AvgRowLength != "" { + buf.Myprintf(" avg_row_length=%s", opts.AvgRowLength) + } + if opts.Checksum != "" { + buf.Myprintf(" checksum=%s", opts.Checksum) + } + if opts.Collate != "" { + buf.Myprintf(" collate=%s", opts.Collate) + } + if opts.Compression != "" { + buf.Myprintf(" compression=%s", opts.Compression) + } + if opts.Connection != "" { + buf.Myprintf(" connection=%s", opts.Connection) + } + if opts.DataDirectory != "" { + buf.Myprintf(" data directory=%s", opts.DataDirectory) + } + if opts.IndexDirectory != "" { + buf.Myprintf(" index directory=%s", opts.IndexDirectory) + } + if opts.DelayKeyWrite != "" { + buf.Myprintf(" delay_key_write=%s", opts.DelayKeyWrite) + } + if opts.Encryption != "" { + buf.Myprintf(" encryption=%s", opts.Encryption) + } + if opts.InsertMethod != "" { + buf.Myprintf(" insert_method=%s", opts.InsertMethod) + } + if opts.InsertMethod != "" { + buf.Myprintf(" key_block_size=%s", opts.KeyBlockSize) + } + if opts.MaxRows != "" { + buf.Myprintf(" max_rows=%s", opts.MaxRows) + } + if opts.MinRows != "" { + buf.Myprintf(" min_rows=%s", opts.MinRows) + } + if opts.PackKeys != "" { + buf.Myprintf(" pack_keys=%s", opts.PackKeys) + } + if opts.Password != "" { + buf.Myprintf(" password=%s", opts.Password) + } + if opts.RowFormat != "" { + buf.Myprintf(" row_format=%s", opts.RowFormat) + } + if opts.StatsAutoRecalc != "" { + buf.Myprintf(" stats_auto_recalc=%s", opts.StatsAutoRecalc) + } + if opts.StatsPersistent != "" { + buf.Myprintf(" stats_persistent=%s", opts.StatsPersistent) + } + if opts.StatsSamplePages != "" { + buf.Myprintf(" stats_sample_pages=%s", opts.StatsSamplePages) + } + if opts.TableSpace != "" { + buf.Myprintf(" tablespace=%s", opts.TableSpace) + } } // WalkSubtree walks the nodes of the subtree. @@ -1046,6 +1269,15 @@ const ( // UniquekeyOption enum. ColumnOptionKeyUniqueOpt + + // CollateOption enum + ColumnOptionCollate + + // ColumnFormatOption enum + ColumnOptionFormat + + // ColumnStorageOption enum + ColumnOptionStorage ) type ColumnOption struct { @@ -1055,7 +1287,10 @@ type ColumnOption struct { Autoincrement BoolVal Default *SQLVal Comment *SQLVal - OnUpdate *SQLVal + OnUpdate string + Collate *SQLVal + ColumnFormat string + Storage string // Key specification PrimaryKeyOpt ColumnPrimaryKeyOption UniqueKeyOpt ColumnUniqueKeyOption @@ -1084,7 +1319,10 @@ func (co *ColumnOptionListOpt) GetColumnOption(opt ColumnOpt) *ColumnOption { Autoincrement: false, Default: nil, Comment: nil, - OnUpdate: nil, + OnUpdate: "", + Collate: nil, + ColumnFormat: "", + Storage: "", PrimaryKeyOpt: ColKeyPrimaryNone, UniqueKeyOpt: ColKeyUniqueNone, } @@ -1100,8 +1338,11 @@ type ColumnType struct { NotNull BoolVal Autoincrement BoolVal Default *SQLVal - OnUpdate *SQLVal + OnUpdate string Comment *SQLVal + Collate *SQLVal + ColumnFormat string + Storage string // Numeric field options Length *SQLVal @@ -1111,7 +1352,6 @@ type ColumnType struct { // Text field options Charset string - Collate string // Enum values EnumValues []string @@ -1146,8 +1386,14 @@ func (ct *ColumnType) Format(buf *TrackedBuffer) { if ct.Charset != "" { opts = append(opts, keywordStrings[CHARACTER], keywordStrings[SET], ct.Charset) } - if ct.Collate != "" { - opts = append(opts, keywordStrings[COLLATE], ct.Collate) + if ct.Collate != nil { + opts = append(opts, keywordStrings[COLLATE], String(ct.Collate)) + } + if ct.ColumnFormat != "" { + opts = append(opts, keywordStrings[COLUMN_FORMAT], ct.ColumnFormat) + } + if ct.Storage != "" { + opts = append(opts, keywordStrings[STORAGE], ct.Storage) } if ct.NotNull { opts = append(opts, keywordStrings[NOT], keywordStrings[NULL]) @@ -1155,8 +1401,8 @@ func (ct *ColumnType) Format(buf *TrackedBuffer) { if ct.Default != nil { opts = append(opts, keywordStrings[DEFAULT], String(ct.Default)) } - if ct.OnUpdate != nil { - opts = append(opts, keywordStrings[ON], keywordStrings[UPDATE], String(ct.OnUpdate)) + if ct.OnUpdate != "" { + opts = append(opts, keywordStrings[ON], keywordStrings[UPDATE], ct.OnUpdate) } if ct.Autoincrement { opts = append(opts, keywordStrings[AUTO_INCREMENT]) diff --git a/src/vendor/github.com/xelabs/go-mysqlstack/sqlparser/ddl_test.go b/src/vendor/github.com/xelabs/go-mysqlstack/sqlparser/ddl_test.go index 04d30676..35446938 100644 --- a/src/vendor/github.com/xelabs/go-mysqlstack/sqlparser/ddl_test.go +++ b/src/vendor/github.com/xelabs/go-mysqlstack/sqlparser/ddl_test.go @@ -227,11 +227,28 @@ func TestDDL1(t *testing.T) { input: "create table test.t (\n" + " `id` int primary key,\n" + " `name` varchar(10)\n" + - ") engine=tokudb comment='comment option' character set 'utf8' partition by hash(id)", + ") tableSpace=storage stats_sample_pageS=65535 stats_persistenT=default Stats_auto_recalC=1 Row_forMat=dynamic PassWord='pwd' pack_keys=default max_rows=3 min_rows=2 key_block_size=1 insert_method=First encryption='n' delay_key_write=1 data directory='/data' index directory='/index' connection='id' comPression='lz4' default collate='utf8_bin' checksum=1 avg_row_length=123 engine=tokudb comment='comment option' character set 'utf8' partition by hash(id)", output: "create table test.t (\n" + " `id` int primary key,\n" + " `name` varchar(10)\n" + - ") comment='comment option' engine=tokudb default charset='utf8'", + ") comment='comment option' engine=tokudb default charset='utf8' avg_row_length=123 checksum=1 collate='utf8_bin' compression='lz4' connection='id' data directory='/data' index directory='/index' delay_key_write=1 encryption='n' insert_method=First key_block_size=1 max_rows=3 min_rows=2 pack_keys=default password='pwd' row_format=dynamic stats_auto_recalc=1 stats_persistent=default stats_sample_pages=65535 tablespace=storage", + }, + + { + input: "create table test.t (\n" + + " `name` varchar(10)\n" + + ") row_format=tokudb_Quicklz engine=tokudb comment 'comment option' charset \"utf8\" partition by hash(id)", + output: "create table test.t (\n" + + " `name` varchar(10)\n" + + ") comment='comment option' engine=tokudb default charset='utf8' row_format=tokudb_quicklz", + }, + { + input: "create table test.t (\n" + + " `name` varchar(10)\n" + + ") Stats_auto_recalC=default engine=tokudb comment 'comment option' charset \"utf8\" partition by hash(id)", + output: "create table test.t (\n" + + " `name` varchar(10)\n" + + ") comment='comment option' engine=tokudb default charset='utf8' stats_auto_recalc=default", }, // GLOBAL. { @@ -460,12 +477,16 @@ func TestDDL1(t *testing.T) { input: "create table t (\n" + " `id` int primary key,\n" + " `t1` timestamp default current_timestamp,\n" + - " `t2` timestamp ON UPDATE CURRENT_TIMESTAMP NOT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT 'currenttimestamp' DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'currenttimestamp' ON UPDATE CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP\n" + + " `t2` timestamp ON UPDATE CURRENT_TIMESTAMP NOT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT 'currenttimestamp' DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'currenttimestamp' ON UPDATE CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,\n" + + " `t3` timestamp on Update current_timestamp(),\n" + + " `t4` timestamp(5) on Update current_timestamp(5)\n" + ") partition by hash(id)", output: "create table t (\n" + " `id` int primary key,\n" + " `t1` timestamp default current_timestamp,\n" + - " `t2` timestamp not null default current_timestamp on update current_timestamp comment 'currenttimestamp'\n" + + " `t2` timestamp not null default current_timestamp on update current_timestamp comment 'currenttimestamp',\n" + + " `t3` timestamp on update current_timestamp(),\n" + + " `t4` timestamp(5) on update current_timestamp(5)\n" + ")", }, @@ -946,6 +967,223 @@ func TestDDL1ParseError(t *testing.T) { ") engine=tokudb comment 'comment option' comment 'radondb' charset \"utf8\" partition by hash(id)", output: "Duplicate table option for keyword 'comment', the option should only be appeared just one time in RadonDB. at position 149 near 'partition'", }, + { // Duplicate keyword avg_row_length + input: "create table test.t (\n" + + " `id` int primary key,\n" + + " `name` varchar(10)\n" + + ") engine=tokudb avg_row_length=123 avg_row_length=123 charset \"utf8\" partition by hash(id)", + output: "Duplicate table option for keyword 'avg_row_length', the option should only be appeared just one time in RadonDB. at position 144 near 'partition'", + }, + { // Duplicate keyword checksum + input: "create table test.t (\n" + + " `id` int primary key,\n" + + " `name` varchar(10)\n" + + ") engine=tokudb checksum=1 checksum=1 charset \"utf8\" partition by hash(id)", + output: "Duplicate table option for keyword 'checksum', the option should only be appeared just one time in RadonDB. at position 128 near 'partition'", + }, + { // Duplicate keyword collate + input: "create table test.t (\n" + + " `id` int primary key,\n" + + " `name` varchar(10)\n" + + ") engine=tokudb default collate='utf8_bin' collate='utf8_bin' charset \"utf8\" partition by hash(id)", + output: "Duplicate table option for table option keyword 'collate', the option should only be appeared just one time in RadonDB. at position 152 near 'partition'", + }, + { // Duplicate keyword compression + input: "create table test.t (\n" + + " `id` int primary key,\n" + + " `name` varchar(10)\n" + + ") engine=tokudb compression 'zlib' COMPRESSION='Zlib' charset \"utf8\" partition by hash(id)", + output: "Duplicate table option for keyword 'compression', the option should only be appeared just one time in RadonDB. at position 144 near 'partition'", + }, + { // Wrong keyword compression + input: "create table test.t (\n" + + " `id` int primary key,\n" + + " `name` varchar(10)\n" + + ") engine=tokudb compression 'xlib' charset \"utf8\" partition by hash(id)", + output: "Invalid compression option, argument (should be 'ZLIB', 'LZ4' or 'NONE') at position 100 near 'xlib'", + }, + { // Duplicate keyword connection + input: "create table test.t (\n" + + " `id` int primary key,\n" + + " `name` varchar(10)\n" + + ") engine=tokudb connection='str' connection 'str2' charset \"utf8\" partition by hash(id)", + output: "Duplicate table option for keyword 'connection', the option should only be appeared just one time in RadonDB. at position 141 near 'partition'", + }, + { // Duplicate keyword data directory + input: "create table test.t (\n" + + " `id` int primary key,\n" + + " `name` varchar(10)\n" + + ") engine=tokudb data directory='/data' data directory '/data2' charset \"utf8\" partition by hash(id)", + output: "Duplicate table option for keyword 'data directory', the option should only be appeared just one time in RadonDB. at position 153 near 'partition'", + }, + { // Duplicate keyword index directory + input: "create table test.t (\n" + + " `id` int primary key,\n" + + " `name` varchar(10)\n" + + ") engine=tokudb index directory='/data' index directory '/data2' charset \"utf8\" partition by hash(id)", + output: "Duplicate table option for keyword 'index directory', the option should only be appeared just one time in RadonDB. at position 155 near 'partition'", + }, + { // Duplicate keyword DELAY_KEY_WRITE + input: "create table test.t (\n" + + " `id` int primary key,\n" + + " `name` varchar(10)\n" + + ") engine=tokudb delay_key_write=0 delay_key_write=1 charset \"utf8\" partition by hash(id)", + output: "Duplicate table option for keyword 'delay_key_write', the option should only be appeared just one time in RadonDB. at position 142 near 'partition'", + }, + { // Duplicate keyword ENCRYPTION + input: "create table test.t (\n" + + " `id` int primary key,\n" + + " `name` varchar(10)\n" + + ") engine=tokudb encryption='n' encryption='n' charset \"utf8\" partition by hash(id)", + output: "Duplicate table option for keyword 'encryption', the option should only be appeared just one time in RadonDB. at position 136 near 'partition'", + }, + { // Invalid keyword ENCRYPTION option + input: "create table test.t (\n" + + " `id` int primary key,\n" + + " `name` varchar(10)\n" + + ") engine=tokudb encryption='y' charset \"utf8\" partition by hash(id)", + output: "The encryption option is parsed but ignored by all storage engines. at position 96 near 'y'", + }, + { // Invalid keyword ENCRYPTION option + input: "create table test.t (\n" + + " `id` int primary key,\n" + + " `name` varchar(10)\n" + + ") engine=tokudb encryption='x' charset \"utf8\" partition by hash(id)", + output: "Invalid encryption option, argument (should be Y or N) at position 96 near 'x'", + }, + { // Duplicate keyword INSERT_METHOD + input: "create table test.t (\n" + + " `id` int primary key,\n" + + " `name` varchar(10)\n" + + ") engine=tokudb insert_method=no insert_method=first charset \"utf8\" partition by hash(id)", + output: "Duplicate table option for keyword 'insert_method', the option should only be appeared just one time in RadonDB. at position 143 near 'partition'", + }, + { // Invalid keyword INSERT_METHOD + input: "create table test.t (\n" + + " `id` int primary key,\n" + + " `name` varchar(10)\n" + + ") engine=tokudb insert_method=noo charset \"utf8\" partition by hash(id)", + output: "Invalid insert_method option, argument (should be NO, FIRST or LAST) at position 99 near 'noo'", + }, + { // Invalid keyword KEY_BLOCK_SIZE value + input: "create table test.t (\n" + + " `id` int primary key,\n" + + " `name` varchar(10)\n" + + ") engine=tokudb key_block_size=-1 charset \"utf8\" partition by hash(id)", + output: "syntax error at position 98", + }, + { // Duplicate keyword KEY_BLOCK_SIZE + input: "create table test.t (\n" + + " `id` int primary key,\n" + + " `name` varchar(10)\n" + + ") engine=tokudb key_block_size=1 key_block_size=1 charset \"utf8\" partition by hash(id)", + output: "Duplicate table option for keyword 'key_block_size', the option should only be appeared just one time in RadonDB. at position 140 near 'partition'", + }, + { // Duplicate keyword MAX_ROWS + input: "create table test.t (\n" + + " `id` int primary key,\n" + + " `name` varchar(10)\n" + + ") engine=tokudb max_rows=1 max_rows=1 charset \"utf8\" partition by hash(id)", + output: "Duplicate table option for keyword 'max_rows', the option should only be appeared just one time in RadonDB. at position 128 near 'partition'", + }, + { // Duplicate keyword MIN_ROWS + input: "create table test.t (\n" + + " `id` int primary key,\n" + + " `name` varchar(10)\n" + + ") engine=tokudb min_rows=1 min_rows=1 charset \"utf8\" partition by hash(id)", + output: "Duplicate table option for keyword 'min_rows', the option should only be appeared just one time in RadonDB. at position 128 near 'partition'", + }, + { // Invalid keyword MAX_ROWS value + input: "create table test.t (\n" + + " `id` int primary key,\n" + + " `name` varchar(10)\n" + + ") engine=tokudb max_rows=-1 charset \"utf8\" partition by hash(id)", + output: "syntax error at position 92", + }, + { // Invalid keyword MIN_ROWS value + input: "create table test.t (\n" + + " `id` int primary key,\n" + + " `name` varchar(10)\n" + + ") engine=tokudb min_rows=-1 charset \"utf8\" partition by hash(id)", + output: "syntax error at position 92", + }, + { // Invalid keyword pack_keys value + input: "create table test.t (\n" + + " `id` int primary key,\n" + + " `name` varchar(10)\n" + + ") engine=tokudb pack_keys=-8 charset \"utf8\" partition by hash(id)", + output: "syntax error at position 93", + }, + { // Duplicate keyword PACK_KEYS + input: "create table test.t (\n" + + " `id` int primary key,\n" + + " `name` varchar(10)\n" + + ") engine=tokudb pack_keys=1 pack_keys=1 charset \"utf8\" partition by hash(id)", + output: "Duplicate table option for keyword 'pack_keys', the option should only be appeared just one time in RadonDB. at position 130 near 'partition'", + }, + { // Duplicate keyword PASSWORD + input: "create table test.t (\n" + + " `id` int primary key,\n" + + " `name` varchar(10)\n" + + ") engine=tokudb password='pwd' password='pwd' charset \"utf8\" partition by hash(id)", + output: "Duplicate table option for keyword 'password', the option should only be appeared just one time in RadonDB. at position 136 near 'partition'", + }, + { // Duplicate keyword ROW_FORMAT + input: "create table test.t (\n" + + " `id` int primary key,\n" + + " `name` varchar(10)\n" + + ") engine=tokudb row_format=default row_format=dynamic charset \"utf8\" partition by hash(id)", + output: "Duplicate table option for keyword 'row_format', the option should only be appeared just one time in RadonDB. at position 144 near 'partition'", + }, + { // Duplicate keyword STATS_AUTO_RECALC + input: "create table test.t (\n" + + " `id` int primary key,\n" + + " `name` varchar(10)\n" + + ") engine=tokudb sTats_auto_recalc=0 stats_auto_recalc=0 charset \"utf8\" partition by hash(id)", + output: "Duplicate table option for keyword 'stats_auto_recalc', the option should only be appeared just one time in RadonDB. at position 146 near 'partition'", + }, + { // Invalid keyword STATS_AUTO_RECALC option + input: "create table test.t (\n" + + " `id` int primary key,\n" + + " `name` varchar(10)\n" + + ") engine=tokudb stats_auto_recalc=-1 charset \"utf8\" partition by hash(id)", + output: "syntax error at position 101", + }, + { // Duplicate keyword STATS_PERSISTENT + input: "create table test.t (\n" + + " `id` int primary key,\n" + + " `name` varchar(10)\n" + + ") engine=tokudb sTats_persistenT=0 sTats_persistenT=0 charset \"utf8\" partition by hash(id)", + output: "Duplicate table option for keyword 'stats_persistent', the option should only be appeared just one time in RadonDB. at position 144 near 'partition'", + }, + { // Invalid keyword STATS_PERSISTENT option + input: "create table test.t (\n" + + " `id` int primary key,\n" + + " `name` varchar(10)\n" + + ") engine=tokudb stats_persisTent=-1 charset \"utf8\" partition by hash(id)", + output: "syntax error at position 100", + }, + { // Duplicate keyword STATS_SAMPLE_PAGES + input: "create table test.t (\n" + + " `id` int primary key,\n" + + " `name` varchar(10)\n" + + ") engine=tokudb stats_sample_pageS=1 stats_sample_Pages=2 charset \"utf8\" partition by hash(id)", + output: "Duplicate table option for keyword 'stats_sample_pages', the option should only be appeared just one time in RadonDB. at position 148 near 'partition'", + }, + { // Invalid keyword STATS_SAMPLE_PAGES option + input: "create table test.t (\n" + + " `id` int primary key,\n" + + " `name` varchar(10)\n" + + ") engine=tokudb stats_sample_pages=-1 charset \"utf8\" partition by hash(id)", + output: "syntax error at position 102", + }, + { // Duplicate keyword STATS_SAMPLE_PAGES + input: "create table test.t (\n" + + " `id` int primary key,\n" + + " `name` varchar(10)\n" + + ") engine=tokudb tablespace=aa tablespace=bb charset \"utf8\" partition by hash(id)", + output: "Duplicate table option for keyword 'tablespace', the option should only be appeared just one time in RadonDB. at position 134 near 'partition'", + }, { // The content of comment should be quoted with \' or \" input: "create table test.t (\n" + " `id` int primary key,\n" + diff --git a/src/vendor/github.com/xelabs/go-mysqlstack/sqlparser/parse_test.go b/src/vendor/github.com/xelabs/go-mysqlstack/sqlparser/parse_test.go index 621b61d0..970dc6ca 100644 --- a/src/vendor/github.com/xelabs/go-mysqlstack/sqlparser/parse_test.go +++ b/src/vendor/github.com/xelabs/go-mysqlstack/sqlparser/parse_test.go @@ -1074,6 +1074,14 @@ func TestCreateTable(t *testing.T) { " `col_mediumint` mediumint,\n" + " `col_mediumint5` mediumint(5) unsigned not null,\n" + " `col_int` int,\n" + + " `col_int` int storage default,\n" + + " `col_int` int storage disk,\n" + + " `col_int` int storage memory,\n" + + " `col_int` int column_format default,\n" + + " `col_int` int column_format dynamic,\n" + + " `col_int` int column_format fixed,\n" + + " `col_int` int collate utf8_bin,\n" + + " `col_int` int collate 'utf8_general_ci',\n" + " `col_int10` int(10) not null,\n" + " `col_integer` integer comment 'this is an integer',\n" + " `col_bigint` bigint,\n" + @@ -1098,11 +1106,11 @@ func TestCreateTable(t *testing.T) { " `col_char` char,\n" + " `col_char2` char(2),\n" + " `col_char3` char(3) character set ascii,\n" + - " `col_char4` char(4) character set ascii collate ascii_bin,\n" + + " `col_char4` char(4) character set ascii collate 'ascii_bin',\n" + " `col_varchar` varchar,\n" + " `col_varchar2` varchar(2),\n" + " `col_varchar3` varchar(3) character set ascii,\n" + - " `col_varchar4` varchar(4) character set ascii collate ascii_bin,\n" + + " `col_varchar4` varchar(4) character set ascii collate 'ascii_bin',\n" + " `col_binary` binary,\n" + " `col_varbinary` varbinary(10),\n" + " `col_tinyblob` tinyblob,\n" + @@ -1113,7 +1121,7 @@ func TestCreateTable(t *testing.T) { " `col_text` text,\n" + " `col_mediumtext` mediumtext,\n" + " `col_longtext` longtext,\n" + - " `col_text` text character set ascii collate ascii_bin,\n" + + " `col_text` text character set ascii collate 'ascii_bin',\n" + " `col_json` json,\n" + " `col_enum` enum('a', 'b', 'c', 'd')\n" + ")", diff --git a/src/vendor/github.com/xelabs/go-mysqlstack/sqlparser/sql.go b/src/vendor/github.com/xelabs/go-mysqlstack/sqlparser/sql.go index 558a8f1e..7f892c81 100644 --- a/src/vendor/github.com/xelabs/go-mysqlstack/sqlparser/sql.go +++ b/src/vendor/github.com/xelabs/go-mysqlstack/sqlparser/sql.go @@ -1,12 +1,9 @@ -// Code generated by goyacc -o sql.go sql.y. DO NOT EDIT. - //line sql.y:18 package sqlparser import __yyfmt__ "fmt" //line sql.y:18 - func setParseTree(yylex interface{}, stmt Statement) { yylex.(*Tokenizer).ParseTree = stmt } @@ -265,66 +262,100 @@ const APPROXNUM = 57503 const SIGNED = 57504 const UNSIGNED = 57505 const ZEROFILL = 57506 -const DATABASES = 57507 -const TABLES = 57508 -const WARNINGS = 57509 -const VARIABLES = 57510 -const EVENTS = 57511 -const BINLOG = 57512 -const GTID = 57513 -const STATUS = 57514 -const COLUMNS = 57515 -const FIELDS = 57516 -const CURRENT_TIMESTAMP = 57517 -const DATABASE = 57518 -const CURRENT_DATE = 57519 -const CURRENT_TIME = 57520 -const LOCALTIME = 57521 -const LOCALTIMESTAMP = 57522 -const UTC_DATE = 57523 -const UTC_TIME = 57524 -const UTC_TIMESTAMP = 57525 -const REPLACE = 57526 -const CONVERT = 57527 -const CAST = 57528 -const GROUP_CONCAT = 57529 -const SEPARATOR = 57530 -const MATCH = 57531 -const AGAINST = 57532 -const BOOLEAN = 57533 -const LANGUAGE = 57534 -const WITH = 57535 -const QUERY = 57536 -const EXPANSION = 57537 -const UNUSED = 57538 -const PARTITION = 57539 -const PARTITIONS = 57540 -const HASH = 57541 -const LIST = 57542 -const XA = 57543 -const DISTRIBUTED = 57544 -const ENGINES = 57545 -const VERSIONS = 57546 -const PROCESSLIST = 57547 -const QUERYZ = 57548 -const TXNZ = 57549 -const KILL = 57550 -const ENGINE = 57551 -const SINGLE = 57552 -const BEGIN = 57553 -const START = 57554 -const TRANSACTION = 57555 -const COMMIT = 57556 -const ROLLBACK = 57557 -const GLOBAL = 57558 -const SESSION = 57559 -const NAMES = 57560 -const RADON = 57561 -const ATTACH = 57562 -const ATTACHLIST = 57563 -const DETACH = 57564 -const RESHARD = 57565 -const CLEANUP = 57566 +const FIXED = 57507 +const DYNAMIC = 57508 +const STORAGE = 57509 +const DISK = 57510 +const MEMORY = 57511 +const COLUMN_FORMAT = 57512 +const AVG_ROW_LENGTH = 57513 +const COMPRESSION = 57514 +const CONNECTION = 57515 +const DATA = 57516 +const DIRECTORY = 57517 +const DELAY_KEY_WRITE = 57518 +const ENCRYPTION = 57519 +const INSERT_METHOD = 57520 +const MAX_ROWS = 57521 +const MIN_ROWS = 57522 +const PACK_KEYS = 57523 +const PASSWORD = 57524 +const ROW_FORMAT = 57525 +const STATS_AUTO_RECALC = 57526 +const STATS_PERSISTENT = 57527 +const STATS_SAMPLE_PAGES = 57528 +const TABLESPACE = 57529 +const COMPRESSED = 57530 +const REDUNDANT = 57531 +const COMPACT = 57532 +const TOKUDB_DEFAULT = 57533 +const TOKUDB_FAST = 57534 +const TOKUDB_SMALL = 57535 +const TOKUDB_ZLIB = 57536 +const TOKUDB_QUICKLZ = 57537 +const TOKUDB_LZMA = 57538 +const TOKUDB_SNAPPY = 57539 +const TOKUDB_UNCOMPRESSED = 57540 +const DATABASES = 57541 +const TABLES = 57542 +const WARNINGS = 57543 +const VARIABLES = 57544 +const EVENTS = 57545 +const BINLOG = 57546 +const GTID = 57547 +const STATUS = 57548 +const COLUMNS = 57549 +const FIELDS = 57550 +const CURRENT_TIMESTAMP = 57551 +const DATABASE = 57552 +const CURRENT_DATE = 57553 +const CURRENT_TIME = 57554 +const LOCALTIME = 57555 +const LOCALTIMESTAMP = 57556 +const UTC_DATE = 57557 +const UTC_TIME = 57558 +const UTC_TIMESTAMP = 57559 +const REPLACE = 57560 +const CONVERT = 57561 +const CAST = 57562 +const GROUP_CONCAT = 57563 +const SEPARATOR = 57564 +const MATCH = 57565 +const AGAINST = 57566 +const BOOLEAN = 57567 +const LANGUAGE = 57568 +const WITH = 57569 +const QUERY = 57570 +const EXPANSION = 57571 +const UNUSED = 57572 +const PARTITION = 57573 +const PARTITIONS = 57574 +const HASH = 57575 +const LIST = 57576 +const XA = 57577 +const DISTRIBUTED = 57578 +const ENGINES = 57579 +const VERSIONS = 57580 +const PROCESSLIST = 57581 +const QUERYZ = 57582 +const TXNZ = 57583 +const KILL = 57584 +const ENGINE = 57585 +const SINGLE = 57586 +const BEGIN = 57587 +const START = 57588 +const TRANSACTION = 57589 +const COMMIT = 57590 +const ROLLBACK = 57591 +const GLOBAL = 57592 +const SESSION = 57593 +const NAMES = 57594 +const RADON = 57595 +const ATTACH = 57596 +const ATTACHLIST = 57597 +const DETACH = 57598 +const RESHARD = 57599 +const CLEANUP = 57600 var yyToknames = [...]string{ "$end", @@ -508,6 +539,40 @@ var yyToknames = [...]string{ "SIGNED", "UNSIGNED", "ZEROFILL", + "FIXED", + "DYNAMIC", + "STORAGE", + "DISK", + "MEMORY", + "COLUMN_FORMAT", + "AVG_ROW_LENGTH", + "COMPRESSION", + "CONNECTION", + "DATA", + "DIRECTORY", + "DELAY_KEY_WRITE", + "ENCRYPTION", + "INSERT_METHOD", + "MAX_ROWS", + "MIN_ROWS", + "PACK_KEYS", + "PASSWORD", + "ROW_FORMAT", + "STATS_AUTO_RECALC", + "STATS_PERSISTENT", + "STATS_SAMPLE_PAGES", + "TABLESPACE", + "COMPRESSED", + "REDUNDANT", + "COMPACT", + "TOKUDB_DEFAULT", + "TOKUDB_FAST", + "TOKUDB_SMALL", + "TOKUDB_ZLIB", + "TOKUDB_QUICKLZ", + "TOKUDB_LZMA", + "TOKUDB_SNAPPY", + "TOKUDB_UNCOMPRESSED", "DATABASES", "TABLES", "WARNINGS", @@ -576,7 +641,7 @@ const yyEofCode = 1 const yyErrCode = 2 const yyInitialStackSize = 16 -//line sql.y:3841 +//line sql.y:4431 //line yacctab:1 var yyExca = [...]int{ @@ -586,787 +651,942 @@ var yyExca = [...]int{ -1, 3, 5, 27, -2, 4, - -1, 180, - 87, 696, + -1, 198, + 87, 780, -2, 40, - -1, 185, - 87, 571, - -2, 520, - -1, 416, - 115, 555, - -2, 551, - -1, 417, - 115, 556, - -2, 552, - -1, 444, + -1, 203, + 87, 645, + -2, 594, + -1, 435, + 115, 629, + -2, 625, + -1, 436, + 115, 630, + -2, 626, + -1, 463, + 112, 81, 162, 81, 165, 81, -2, 92, - -1, 483, + -1, 502, 1, 75, - 242, 75, + 276, 75, -2, 81, - -1, 600, + -1, 619, 5, 27, - -2, 496, - -1, 623, + -2, 570, + -1, 642, + 112, 81, 162, 81, 165, 81, -2, 93, - -1, 690, + -1, 754, 1, 76, - 242, 76, + 276, 76, -2, 81, - -1, 777, - 115, 558, - -2, 554, - -1, 909, + -1, 841, + 115, 632, + -2, 628, + -1, 998, 5, 28, - -2, 375, - -1, 933, - 5, 28, - -2, 497, + -2, 449, -1, 1022, + 5, 28, + -2, 571, + -1, 1149, 5, 27, - -2, 499, - -1, 1145, + -2, 573, + -1, 1278, 5, 28, - -2, 500, + -2, 574, } const yyPrivate = 57344 -const yyLast = 7049 +const yyLast = 8557 var yyAct = [...]int{ - 417, 1044, 1216, 1029, 1160, 1178, 1150, 824, 1185, 1034, - 394, 506, 392, 1159, 603, 1077, 686, 1013, 370, 560, - 3, 673, 1091, 806, 992, 946, 761, 1154, 807, 1012, - 768, 613, 1088, 1033, 181, 894, 66, 184, 99, 159, - 776, 604, 902, 787, 141, 56, 312, 617, 738, 771, - 718, 509, 313, 827, 803, 648, 632, 691, 624, 419, - 359, 425, 178, 168, 99, 499, 189, 770, 315, 682, - 158, 55, 368, 636, 146, 641, 1151, 309, 183, 1208, - 99, 99, 310, 1100, 142, 1236, 145, 1215, 147, 148, - 1180, 154, 155, 156, 157, 619, 620, 99, 149, 151, - 150, 152, 153, 1235, 1195, 143, 372, 1233, 1214, 630, - 1005, 1071, 330, 70, 958, 395, 50, 71, 73, 1194, - 341, 76, 77, 715, 329, 849, 666, 176, 332, 333, - 60, 338, 339, 340, 1118, 342, 343, 344, 345, 346, - 1181, 829, 773, 334, 828, 571, 977, 839, 840, 841, - 336, 337, 863, 99, 674, 842, 62, 63, 64, 65, - 351, 353, 1066, 95, 1064, 877, 50, 876, 875, 511, - 1180, 1140, 1142, 99, 164, 324, 99, 709, 189, 317, - 331, 75, 874, 189, 422, 1098, 1172, 94, 348, 78, - 183, 350, 645, 645, 993, 438, 354, 322, 356, 708, - 1171, 872, 829, 1170, 511, 828, 912, 618, 421, 320, - 319, 318, 96, 80, 635, 79, 1056, 72, 995, 936, - 1181, 908, 515, 514, 550, 551, 711, 906, 833, 538, - 1050, 816, 667, 674, 997, 707, 1001, 559, 996, 516, - 994, 432, 82, 1141, 122, 999, 101, 962, 642, 89, - 144, 1220, 643, 640, 645, 998, 528, 1048, 513, 538, - 1000, 1002, 109, 631, 634, 352, 352, 510, 720, 119, - 633, 1193, 125, 120, 843, 1207, 913, 514, 1189, 1182, - 50, 516, 704, 702, 698, 68, 701, 703, 586, 587, - 314, 644, 644, 516, 914, 518, 423, 963, 825, 105, - 871, 873, 510, 362, 420, 435, 83, 1049, 93, 91, - 815, 81, 436, 88, 745, 1007, 484, 99, 788, 515, - 514, 323, 99, 99, 99, 706, 1009, 99, 743, 744, - 742, 99, 99, 515, 514, 838, 516, 357, 427, 517, - 705, 515, 514, 1221, 84, 92, 86, 87, 90, 788, - 516, 919, 719, 644, 134, 515, 514, 53, 516, 639, - 515, 514, 1148, 1205, 106, 700, 124, 741, 132, 102, - 316, 1121, 516, 887, 888, 889, 710, 516, 108, 114, - 1043, 1180, 130, 131, 107, 135, 1042, 951, 103, 699, - 861, 121, 503, 129, 504, 947, 505, 948, 508, 860, - 326, 117, 110, 762, 850, 763, 126, 502, 349, 531, - 532, 533, 534, 535, 528, 1041, 128, 538, 113, 945, - 731, 733, 734, 881, 1046, 189, 732, 880, 859, 846, - 99, 1181, 1175, 99, 100, 189, 118, 592, 123, 112, - 133, 1227, 358, 321, 606, 1115, 315, 183, 600, 979, - 605, 1045, 976, 111, 127, 1173, 358, 1103, 1157, 358, - 116, 588, 957, 136, 137, 139, 138, 140, 104, 956, - 610, 1103, 1156, 608, 548, 1103, 1153, 1075, 358, 675, - 676, 677, 547, 549, 1103, 358, 1111, 590, 1103, 1107, - 1103, 1106, 637, 953, 99, 507, 834, 615, 819, 688, - 764, 99, 99, 1103, 1102, 900, 358, 519, 558, 487, - 99, 561, 562, 563, 564, 565, 566, 567, 486, 570, - 572, 572, 572, 572, 572, 572, 572, 572, 580, 581, - 582, 583, 739, 968, 967, 714, 965, 964, 507, 485, - 692, 325, 716, 717, 601, 569, 74, 723, 1110, 684, - 685, 573, 574, 575, 576, 577, 578, 579, 189, 621, - 384, 383, 385, 386, 387, 388, 935, 358, 57, 389, - 767, 189, 183, 724, 358, 445, 444, 959, 804, 616, - 814, 779, 724, 789, 536, 537, 529, 530, 531, 532, - 533, 534, 535, 528, 775, 928, 538, 777, 24, 814, - 931, 24, 189, 1075, 614, 966, 900, 712, 24, 172, - 808, 606, 792, 805, 812, 900, 434, 605, 584, 165, - 53, 810, 315, 765, 766, 668, 687, 1040, 740, 785, - 780, 781, 598, 1021, 784, 813, 599, 662, 661, 826, - 1039, 1036, 67, 830, 795, 1166, 900, 658, 791, 796, - 793, 794, 53, 804, 814, 53, 955, 728, 729, 817, - 735, 736, 53, 802, 954, 50, 952, 683, 678, 696, - 664, 695, 22, 53, 822, 694, 493, 561, 1135, 1169, - 1083, 1084, 823, 663, 656, 669, 670, 671, 672, 1133, - 657, 851, 852, 1131, 1134, 99, 99, 99, 1132, 596, - 679, 680, 681, 837, 507, 1168, 1130, 782, 783, 1225, - 1129, 169, 170, 99, 1213, 809, 832, 50, 835, 836, - 886, 853, 727, 855, 856, 857, 426, 420, 1203, 801, - 800, 163, 1211, 1054, 360, 820, 821, 950, 854, 441, - 424, 431, 868, 660, 636, 929, 864, 692, 862, 693, - 869, 1210, 492, 739, 361, 1087, 426, 818, 1019, 879, - 589, 845, 529, 530, 531, 532, 533, 534, 535, 528, - 844, 885, 538, 883, 189, 1079, 1082, 1083, 1084, 1080, - 831, 1081, 1085, 166, 167, 1167, 904, 1212, 659, 1224, - 160, 890, 1124, 443, 442, 161, 57, 1123, 99, 1074, - 1162, 527, 526, 536, 537, 529, 530, 531, 532, 533, - 534, 535, 528, 614, 500, 538, 799, 501, 496, 175, - 1095, 315, 315, 847, 798, 512, 59, 606, 61, 183, - 918, 54, 1, 605, 1149, 949, 690, 899, 689, 1079, - 1082, 1083, 1084, 1080, 725, 1081, 1085, 647, 646, 740, - 1206, 940, 69, 916, 777, 1177, 938, 941, 1209, 937, - 930, 1179, 1187, 882, 623, 622, 311, 884, 638, 858, - 99, 969, 970, 942, 943, 653, 652, 651, 315, 649, - 848, 665, 1047, 1099, 629, 365, 628, 627, 626, 625, - 654, 907, 655, 650, 448, 449, 447, 451, 778, 960, - 961, 450, 446, 177, 189, 1086, 1090, 901, 870, 189, - 790, 697, 978, 1163, 546, 975, 904, 797, 182, 183, - 437, 183, 811, 585, 980, 418, 1122, 981, 1073, 99, - 917, 920, 568, 786, 371, 730, 189, 189, 990, 1004, - 1003, 775, 808, 991, 777, 189, 987, 989, 1024, 1025, - 986, 382, 507, 189, 1022, 189, 189, 183, 939, 1010, - 1020, 1011, 1006, 379, 381, 1035, 380, 1035, 1035, 591, - 597, 520, 189, 189, 189, 1032, 369, 1026, 363, 1031, - 1139, 971, 972, 973, 1035, 1035, 1035, 1015, 1037, 1038, - 490, 335, 85, 428, 1078, 1076, 1014, 927, 495, 1070, - 393, 1161, 595, 25, 58, 1051, 1052, 1053, 171, 14, - 21, 15, 13, 12, 1062, 29, 10, 9, 99, 99, - 527, 526, 536, 537, 529, 530, 531, 532, 533, 534, - 535, 528, 808, 8, 538, 1016, 7, 189, 97, 6, - 189, 189, 5, 1097, 1017, 1096, 4, 809, 162, 1035, - 1023, 23, 1035, 1035, 2, 20, 19, 189, 18, 17, - 1030, 16, 1008, 11, 174, 0, 0, 0, 0, 183, - 1105, 0, 0, 1108, 1109, 0, 99, 99, 99, 99, - 174, 174, 1117, 0, 0, 0, 0, 99, 0, 0, - 99, 991, 0, 99, 1126, 0, 1128, 174, 0, 189, - 189, 1136, 897, 1147, 189, 1125, 898, 1127, 606, 779, - 1144, 1146, 183, 1152, 605, 1143, 1035, 909, 910, 911, - 0, 1069, 915, 0, 1016, 0, 0, 921, 0, 922, - 923, 924, 925, 1089, 1031, 1155, 1165, 809, 0, 50, - 1158, 0, 1018, 0, 1101, 0, 0, 932, 933, 934, - 0, 0, 1072, 174, 0, 0, 0, 0, 0, 0, - 944, 0, 1184, 0, 0, 1188, 1191, 0, 1186, 1190, - 1183, 0, 0, 174, 0, 189, 174, 0, 1202, 0, - 1201, 1176, 1016, 1016, 1016, 1016, 0, 183, 1204, 1188, - 1191, 1017, 1017, 1017, 1017, 0, 1016, 0, 0, 189, - 189, 189, 1218, 1219, 0, 1089, 173, 0, 0, 1031, - 0, 1217, 1217, 1217, 0, 1030, 0, 0, 1222, 1223, - 0, 0, 327, 328, 1231, 1232, 1059, 1060, 189, 1061, - 0, 1230, 1063, 0, 1065, 0, 0, 985, 0, 347, - 1234, 0, 527, 526, 536, 537, 529, 530, 531, 532, - 533, 534, 535, 528, 0, 0, 538, 0, 0, 552, - 553, 554, 555, 556, 557, 0, 1164, 507, 1104, 0, - 0, 0, 0, 0, 0, 0, 0, 982, 0, 0, - 1027, 1028, 895, 0, 0, 0, 1198, 1199, 1200, 0, - 1030, 0, 0, 0, 0, 355, 0, 527, 526, 536, - 537, 529, 530, 531, 532, 533, 534, 535, 528, 1196, - 1197, 538, 0, 0, 454, 430, 0, 483, 433, 0, - 0, 0, 174, 174, 174, 0, 0, 494, 1057, 0, - 1058, 174, 174, 0, 0, 0, 352, 0, 466, 0, - 0, 1067, 1068, 471, 472, 473, 474, 475, 476, 477, - 0, 478, 479, 480, 481, 482, 467, 468, 469, 470, - 452, 453, 0, 0, 455, 0, 0, 456, 457, 458, - 459, 460, 461, 462, 463, 464, 465, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1112, - 1113, 1114, 526, 536, 537, 529, 530, 531, 532, 533, - 534, 535, 528, 0, 0, 538, 737, 0, 1120, 746, - 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, - 757, 758, 759, 760, 0, 0, 1138, 0, 0, 522, - 174, 525, 607, 609, 0, 1145, 0, 539, 540, 541, - 542, 543, 544, 545, 0, 523, 524, 521, 527, 526, - 536, 537, 529, 530, 531, 532, 533, 534, 535, 528, - 0, 0, 538, 0, 488, 489, 491, 0, 0, 0, - 0, 0, 0, 497, 498, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1174, 0, 0, - 0, 0, 0, 0, 174, 0, 0, 0, 0, 1192, - 896, 174, 174, 0, 24, 0, 0, 0, 0, 0, - 174, 0, 0, 0, 0, 122, 0, 101, 0, 115, - 527, 526, 536, 537, 529, 530, 531, 532, 533, 534, - 535, 528, 0, 109, 538, 0, 0, 0, 0, 0, - 119, 0, 0, 125, 120, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1226, 0, 1228, 1229, 53, 774, - 609, 98, 0, 774, 774, 0, 0, 774, 0, 0, - 105, 0, 602, 0, 0, 0, 0, 0, 0, 0, - 0, 774, 774, 774, 774, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 774, 0, 0, 607, + 436, 1175, 1350, 1156, 1319, 1283, 413, 888, 1312, 1294, + 1164, 1293, 411, 525, 622, 731, 1208, 389, 1287, 1139, + 737, 932, 1222, 837, 871, 870, 632, 825, 1140, 177, + 1219, 1119, 202, 840, 835, 199, 983, 66, 99, 832, + 623, 750, 331, 528, 56, 802, 991, 867, 782, 671, + 851, 706, 892, 579, 3, 755, 378, 438, 444, 518, + 196, 55, 643, 332, 99, 699, 207, 387, 334, 746, + 164, 1231, 186, 167, 169, 168, 170, 171, 201, 328, + 99, 99, 638, 639, 329, 1284, 1370, 391, 1349, 1314, + 161, 1369, 1329, 1367, 1348, 1328, 1132, 99, 1202, 360, + 1342, 1085, 76, 77, 176, 1086, 1087, 414, 50, 349, + 779, 70, 348, 194, 353, 71, 73, 923, 924, 925, + 834, 355, 356, 773, 901, 926, 1296, 546, 545, 555, + 556, 548, 549, 550, 551, 552, 553, 554, 547, 1315, + 900, 557, 938, 942, 730, 772, 1251, 684, 937, 1104, + 738, 60, 1197, 1195, 966, 1314, 952, 530, 50, 965, + 964, 694, 1273, 1275, 343, 676, 182, 590, 336, 75, + 963, 99, 775, 891, 370, 372, 1120, 62, 63, 64, + 65, 771, 1306, 703, 961, 703, 95, 530, 1305, 557, + 1304, 99, 339, 341, 99, 338, 207, 669, 337, 96, + 1122, 207, 381, 439, 78, 1315, 894, 80, 201, 893, + 94, 350, 159, 457, 79, 72, 1124, 1229, 1128, 917, + 1123, 1181, 1121, 894, 535, 440, 893, 1126, 768, 766, + 762, 1187, 765, 767, 1274, 1025, 441, 1125, 569, 570, + 637, 997, 1127, 1129, 995, 738, 880, 578, 1179, 451, + 1163, 680, 160, 1055, 163, 529, 165, 166, 1089, 172, + 173, 174, 175, 547, 1316, 82, 557, 1354, 532, 162, + 889, 770, 89, 1297, 384, 371, 371, 533, 927, 962, + 784, 1327, 702, 960, 702, 529, 769, 879, 455, 1134, + 50, 939, 940, 535, 935, 936, 351, 352, 1180, 357, + 358, 359, 674, 361, 362, 363, 364, 365, 1090, 454, + 852, 1323, 1003, 675, 677, 678, 679, 68, 681, 682, + 683, 685, 686, 687, 688, 689, 690, 691, 692, 693, + 1341, 446, 852, 809, 1008, 442, 99, 503, 1001, 922, + 376, 99, 99, 99, 1314, 764, 99, 807, 808, 806, + 99, 99, 1355, 1241, 534, 533, 774, 1242, 1281, 534, + 533, 534, 533, 83, 783, 93, 91, 342, 81, 763, + 88, 535, 1174, 53, 367, 335, 535, 369, 535, 1339, + 534, 533, 373, 805, 375, 670, 673, 1136, 605, 606, + 1173, 933, 672, 934, 1315, 526, 826, 535, 827, 1057, + 1056, 84, 92, 86, 87, 90, 1051, 538, 1002, 555, + 556, 548, 549, 550, 551, 552, 553, 554, 547, 1050, + 521, 557, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, + 1066, 1067, 1068, 534, 533, 795, 797, 798, 526, 1049, + 1046, 796, 1041, 1040, 207, 588, 345, 1074, 340, 99, + 535, 1072, 99, 1070, 207, 1039, 611, 950, 949, 723, + 722, 1053, 943, 625, 1254, 334, 201, 368, 624, 719, + 607, 976, 977, 978, 567, 1172, 377, 1073, 1162, 635, + 1291, 1071, 1309, 1069, 629, 627, 1161, 733, 734, 735, + 736, 1052, 725, 566, 568, 1054, 1047, 739, 740, 741, + 1043, 619, 743, 744, 745, 724, 717, 695, 1042, 1034, + 970, 969, 718, 99, 634, 609, 948, 930, 1248, 577, + 99, 99, 580, 581, 582, 583, 584, 585, 586, 99, + 589, 591, 591, 591, 591, 591, 591, 591, 591, 599, + 600, 601, 602, 752, 778, 726, 1106, 803, 1361, 377, + 1244, 1177, 756, 1307, 377, 620, 1103, 792, 793, 1082, + 799, 800, 537, 1234, 1290, 721, 1234, 1289, 748, 749, + 640, 403, 402, 404, 405, 406, 407, 207, 1176, 522, + 408, 523, 1081, 524, 1078, 527, 1234, 1286, 1243, 831, + 207, 201, 592, 593, 594, 595, 596, 597, 598, 1206, + 377, 57, 853, 1048, 526, 918, 536, 846, 847, 1088, + 720, 841, 1234, 377, 839, 1234, 1238, 728, 1234, 1237, + 727, 207, 534, 533, 883, 872, 828, 439, 804, 506, + 625, 505, 869, 876, 843, 624, 504, 829, 830, 535, + 856, 334, 1234, 1233, 788, 849, 989, 377, 989, 877, + 550, 551, 552, 553, 554, 547, 344, 882, 557, 1095, + 1094, 859, 1092, 1091, 860, 1024, 377, 571, 572, 573, + 574, 575, 576, 74, 874, 878, 50, 881, 890, 788, + 377, 1017, 895, 896, 897, 898, 899, 1109, 580, 902, + 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, + 913, 914, 844, 845, 886, 887, 848, 546, 545, 555, + 556, 548, 549, 550, 551, 552, 553, 554, 547, 1020, + 855, 557, 857, 858, 464, 463, 873, 24, 50, 780, + 781, 868, 989, 878, 787, 866, 190, 1206, 548, 549, + 550, 551, 552, 553, 554, 547, 884, 885, 557, 633, + 1093, 24, 989, 776, 944, 945, 453, 921, 617, 99, + 99, 99, 618, 985, 916, 603, 919, 920, 1210, 1213, + 1214, 1215, 1211, 53, 1212, 1216, 732, 99, 1301, 183, + 24, 53, 608, 546, 545, 555, 556, 548, 549, 550, + 551, 552, 553, 554, 547, 751, 1171, 557, 1300, 878, + 1170, 1169, 1166, 67, 756, 53, 958, 1080, 971, 953, + 951, 1079, 973, 803, 801, 1148, 1077, 810, 811, 812, + 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, + 823, 824, 747, 53, 53, 972, 742, 868, 207, 1210, + 1213, 1214, 1215, 1211, 760, 1212, 1216, 759, 758, 1266, + 993, 512, 979, 1264, 1267, 22, 615, 1268, 1265, 1214, + 1215, 1303, 99, 1302, 1263, 1262, 789, 187, 188, 1359, + 1347, 975, 791, 445, 1337, 379, 1009, 865, 864, 1345, + 1185, 757, 1038, 946, 460, 334, 334, 443, 450, 694, + 1018, 625, 511, 201, 804, 380, 624, 526, 1344, 1036, + 1037, 1007, 1218, 1028, 184, 185, 1146, 445, 1044, 1045, + 929, 1030, 1035, 841, 181, 1076, 1029, 1019, 928, 1027, + 842, 915, 1026, 1346, 1358, 178, 412, 1257, 462, 461, + 179, 57, 854, 545, 555, 556, 548, 549, 550, 551, + 552, 553, 554, 547, 863, 1256, 557, 996, 1031, 1032, + 1205, 633, 862, 519, 988, 520, 515, 193, 1226, 99, + 1096, 1097, 931, 531, 97, 59, 61, 334, 54, 1, + 1005, 1282, 754, 753, 957, 546, 545, 555, 556, 548, + 549, 550, 551, 552, 553, 554, 547, 705, 704, 557, + 192, 968, 1340, 207, 69, 1311, 1343, 1313, 207, 1321, + 642, 641, 1105, 974, 330, 993, 192, 192, 201, 1107, + 201, 696, 947, 711, 710, 984, 709, 1108, 99, 707, + 941, 729, 1178, 192, 1113, 207, 207, 872, 841, 1116, + 1130, 839, 1135, 1118, 207, 1131, 1117, 1151, 1152, 1114, + 716, 715, 636, 1137, 668, 1147, 201, 667, 1138, 666, + 1133, 665, 664, 663, 662, 661, 1153, 660, 1159, 1160, + 659, 658, 1098, 1099, 1100, 657, 656, 655, 654, 1158, + 653, 652, 651, 650, 649, 644, 648, 1149, 207, 647, + 207, 207, 980, 981, 982, 646, 1230, 645, 714, 712, + 1165, 708, 1165, 1165, 467, 468, 466, 192, 470, 207, + 207, 207, 469, 465, 195, 1143, 1217, 1221, 990, 959, + 761, 1165, 1165, 1165, 565, 861, 1084, 192, 200, 456, + 192, 875, 604, 437, 1255, 1144, 1204, 1006, 873, 587, + 850, 1150, 390, 794, 401, 398, 1190, 1191, 400, 1192, + 399, 1157, 1194, 610, 1196, 99, 99, 616, 539, 388, + 382, 1272, 1142, 509, 354, 872, 85, 447, 1209, 1207, + 1203, 1141, 1016, 514, 1201, 1295, 1193, 207, 614, 986, + 207, 207, 1102, 987, 1227, 713, 1083, 25, 58, 1165, + 189, 1235, 1165, 1165, 998, 999, 1000, 14, 207, 1004, + 21, 15, 13, 12, 1010, 29, 1011, 1012, 1013, 1014, + 201, 10, 9, 8, 1228, 7, 6, 99, 99, 99, + 99, 5, 1250, 4, 1021, 1022, 1023, 180, 99, 23, + 2, 99, 20, 1118, 99, 19, 1258, 1033, 1260, 18, + 207, 207, 1143, 1269, 1280, 207, 1259, 17, 1261, 625, + 1200, 1277, 1279, 201, 624, 1285, 1276, 1165, 16, 11, + 0, 0, 1220, 0, 0, 0, 873, 1288, 50, 1110, + 1111, 0, 502, 1232, 1292, 0, 1158, 192, 192, 192, + 0, 1299, 513, 0, 843, 0, 192, 192, 0, 0, + 1298, 526, 0, 0, 0, 0, 0, 0, 0, 0, + 1145, 0, 0, 0, 1143, 1143, 1143, 1143, 1320, 1324, + 1318, 1317, 1322, 1325, 0, 1310, 0, 0, 1143, 207, + 0, 0, 1336, 1335, 1144, 1144, 1144, 1144, 0, 0, + 0, 201, 1338, 0, 1330, 1331, 1322, 1325, 1220, 1112, + 1167, 1168, 0, 207, 207, 207, 1352, 1353, 1157, 0, + 0, 0, 0, 0, 1158, 1351, 1351, 1351, 0, 1182, + 1183, 1184, 1356, 1357, 191, 0, 0, 0, 1365, 1366, + 0, 1364, 207, 0, 0, 0, 0, 0, 0, 0, + 346, 347, 1154, 1155, 1368, 192, 0, 626, 628, 0, + 0, 0, 0, 0, 1186, 0, 0, 366, 546, 545, + 555, 556, 548, 549, 550, 551, 552, 553, 554, 547, + 0, 0, 557, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1332, 1333, 1334, 0, 1157, 1236, 0, 0, + 1239, 1240, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, + 0, 0, 0, 0, 0, 0, 192, 192, 0, 0, + 0, 0, 0, 0, 0, 192, 0, 0, 1188, 0, + 1189, 374, 371, 0, 0, 0, 0, 0, 0, 0, + 0, 1198, 1199, 0, 0, 1252, 0, 0, 0, 0, + 0, 449, 0, 0, 452, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 838, 628, 0, 0, 838, 838, + 0, 0, 838, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1245, 1246, 1247, 838, 838, 838, 838, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 838, 1253, 0, 626, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 541, 0, 544, 0, 0, 0, + 1271, 0, 558, 559, 560, 561, 562, 563, 564, 1278, + 542, 543, 540, 546, 545, 555, 556, 548, 549, 550, + 551, 552, 553, 554, 547, 0, 0, 557, 136, 0, + 101, 0, 124, 128, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 116, 0, 0, 0, + 0, 0, 0, 130, 0, 0, 142, 132, 0, 0, + 0, 0, 0, 1308, 0, 0, 0, 0, 0, 0, + 0, 507, 508, 510, 206, 0, 1326, 0, 0, 0, + 516, 517, 0, 106, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 546, + 545, 555, 556, 548, 549, 550, 551, 552, 553, 554, + 547, 0, 0, 557, 0, 192, 192, 192, 0, 0, + 0, 1360, 0, 1362, 1363, 0, 0, 0, 152, 0, + 0, 0, 0, 192, 0, 0, 0, 0, 110, 0, + 140, 0, 150, 103, 0, 0, 0, 0, 0, 0, + 0, 0, 115, 123, 0, 0, 148, 149, 111, 153, + 0, 0, 104, 0, 0, 135, 0, 147, 0, 621, + 0, 0, 0, 0, 0, 127, 118, 0, 0, 0, + 143, 0, 0, 122, 117, 146, 114, 133, 107, 102, + 838, 108, 109, 113, 112, 0, 126, 131, 134, 137, + 138, 141, 0, 0, 0, 0, 838, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 192, 0, + 0, 0, 0, 0, 145, 0, 121, 0, 0, 0, + 0, 0, 0, 777, 0, 626, 0, 628, 0, 0, + 785, 786, 100, 0, 129, 0, 139, 120, 151, 790, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 119, 144, 0, 0, 136, 0, 101, 125, 124, + 128, 154, 155, 157, 156, 158, 105, 0, 992, 0, + 0, 0, 0, 116, 0, 0, 0, 0, 0, 0, + 130, 0, 0, 142, 132, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 206, 0, 994, 0, 192, 0, 0, 0, 0, + 106, 0, 0, 0, 0, 534, 533, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 535, 0, 0, 0, 838, 0, 0, 0, + 0, 0, 628, 838, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 192, 152, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 110, 0, 140, 0, 150, + 103, 0, 0, 0, 0, 0, 0, 0, 0, 115, + 123, 0, 0, 148, 149, 111, 153, 0, 0, 104, + 0, 0, 135, 0, 147, 0, 0, 0, 0, 0, + 0, 0, 127, 118, 0, 0, 0, 143, 0, 0, + 122, 117, 146, 114, 133, 107, 102, 0, 108, 109, + 113, 112, 0, 126, 131, 134, 137, 138, 141, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 145, 0, 121, 0, 0, 0, 0, 0, 954, + 955, 956, 0, 0, 0, 0, 0, 0, 0, 100, + 0, 129, 0, 139, 120, 151, 0, 967, 0, 0, + 473, 192, 1224, 0, 0, 0, 0, 0, 119, 144, + 0, 0, 0, 0, 0, 125, 0, 0, 154, 155, + 157, 156, 158, 105, 485, 0, 0, 0, 0, 490, + 491, 492, 493, 494, 495, 496, 0, 497, 498, 499, + 500, 501, 486, 487, 488, 489, 471, 472, 0, 0, + 474, 0, 0, 475, 476, 477, 478, 479, 480, 481, + 482, 483, 484, 192, 192, 192, 192, 0, 0, 0, + 0, 0, 0, 0, 1270, 0, 0, 192, 0, 0, + 1224, 0, 1015, 626, 311, 296, 256, 314, 232, 247, + 326, 249, 250, 286, 216, 266, 136, 245, 101, 0, + 124, 128, 0, 0, 0, 312, 263, 0, 235, 209, + 242, 210, 233, 260, 116, 231, 298, 269, 248, 0, + 320, 130, 278, 0, 142, 132, 0, 0, 262, 301, + 264, 295, 255, 287, 224, 277, 315, 246, 283, 0, + 0, 0, 206, 0, 0, 0, 0, 0, 0, 0, + 0, 106, 280, 309, 244, 282, 285, 208, 279, 0, + 212, 217, 325, 307, 238, 239, 0, 0, 0, 0, + 0, 0, 0, 261, 265, 292, 253, 0, 0, 1101, + 0, 0, 0, 0, 0, 236, 0, 276, 0, 0, + 0, 219, 214, 259, 0, 0, 0, 223, 0, 237, + 293, 0, 0, 0, 302, 254, 152, 308, 252, 251, + 316, 289, 0, 299, 234, 243, 110, 241, 140, 284, + 150, 103, 305, 300, 274, 257, 258, 213, 0, 291, + 115, 123, 230, 281, 148, 149, 111, 153, 218, 322, + 104, 204, 321, 135, 203, 147, 306, 275, 271, 215, + 304, 273, 270, 127, 118, 0, 211, 0, 143, 313, + 327, 122, 117, 146, 114, 133, 107, 102, 221, 108, + 109, 113, 112, 0, 126, 131, 134, 137, 138, 141, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 229, 303, 0, 0, 0, + 0, 0, 145, 220, 121, 227, 228, 225, 226, 267, + 268, 317, 318, 319, 294, 222, 0, 0, 297, 272, + 100, 0, 129, 324, 139, 120, 151, 0, 0, 0, + 0, 0, 0, 240, 323, 290, 288, 310, 0, 119, + 144, 0, 0, 0, 0, 0, 198, 197, 205, 154, + 155, 157, 156, 158, 105, 311, 296, 256, 314, 232, + 247, 326, 249, 250, 286, 216, 266, 136, 245, 101, + 0, 124, 128, 0, 0, 0, 312, 263, 0, 235, + 209, 242, 210, 233, 260, 116, 231, 298, 269, 248, + 0, 320, 130, 278, 0, 142, 132, 0, 0, 262, + 301, 264, 295, 255, 287, 224, 277, 315, 246, 283, + 53, 0, 0, 206, 0, 0, 0, 0, 0, 0, + 0, 0, 106, 280, 309, 244, 282, 285, 208, 279, + 0, 212, 217, 325, 307, 238, 239, 0, 0, 0, + 0, 0, 0, 0, 261, 265, 292, 253, 0, 0, + 0, 0, 0, 0, 0, 0, 236, 0, 276, 0, + 0, 0, 219, 214, 259, 0, 0, 0, 223, 0, + 237, 293, 0, 0, 0, 302, 254, 152, 308, 252, + 251, 316, 289, 0, 299, 234, 243, 110, 241, 140, + 284, 150, 103, 305, 300, 274, 257, 258, 213, 0, + 291, 115, 123, 230, 281, 148, 149, 111, 153, 218, + 322, 104, 630, 321, 135, 631, 147, 306, 275, 271, + 215, 304, 273, 270, 127, 118, 0, 211, 0, 143, + 313, 327, 122, 117, 146, 114, 133, 107, 102, 221, + 108, 109, 113, 112, 0, 126, 131, 134, 137, 138, + 141, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 229, 303, 0, 0, + 0, 0, 0, 145, 220, 121, 227, 228, 225, 226, + 267, 268, 317, 318, 319, 294, 222, 0, 0, 297, + 272, 100, 0, 129, 324, 139, 120, 151, 0, 0, + 0, 0, 0, 0, 240, 323, 290, 288, 310, 0, + 119, 144, 0, 0, 0, 0, 0, 125, 0, 0, + 154, 155, 157, 156, 158, 105, 311, 296, 256, 314, + 232, 247, 326, 249, 250, 286, 216, 266, 136, 245, + 101, 0, 124, 128, 0, 0, 0, 312, 263, 0, + 235, 209, 242, 210, 233, 260, 116, 231, 298, 269, + 248, 0, 320, 130, 278, 0, 142, 132, 0, 0, + 262, 301, 264, 295, 255, 287, 224, 277, 315, 246, + 283, 0, 0, 0, 206, 0, 0, 0, 0, 0, + 0, 0, 0, 106, 280, 309, 244, 282, 285, 208, + 279, 0, 212, 217, 325, 307, 238, 239, 0, 0, + 0, 0, 0, 0, 0, 261, 265, 292, 253, 0, + 0, 0, 0, 0, 0, 1249, 0, 236, 0, 276, + 0, 0, 0, 219, 214, 259, 0, 0, 0, 223, + 0, 237, 293, 0, 0, 0, 302, 254, 152, 308, + 252, 251, 316, 289, 0, 299, 234, 243, 110, 241, + 140, 284, 150, 103, 305, 300, 274, 257, 258, 213, + 0, 291, 115, 123, 230, 281, 148, 149, 111, 153, + 218, 322, 104, 630, 321, 135, 631, 147, 306, 275, + 271, 215, 304, 273, 270, 127, 118, 0, 211, 0, + 143, 313, 327, 122, 117, 146, 114, 133, 107, 102, + 221, 108, 109, 113, 112, 0, 126, 131, 134, 137, + 138, 141, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 229, 303, 0, + 0, 0, 0, 0, 145, 220, 121, 227, 228, 225, + 226, 267, 268, 317, 318, 319, 294, 222, 0, 0, + 297, 272, 100, 0, 129, 324, 139, 120, 151, 0, + 0, 0, 0, 0, 0, 240, 323, 290, 288, 310, + 0, 119, 144, 0, 0, 0, 0, 0, 125, 0, + 0, 154, 155, 157, 156, 158, 105, 311, 296, 256, + 314, 232, 247, 326, 249, 250, 286, 216, 266, 136, + 245, 101, 0, 124, 128, 0, 0, 0, 312, 263, + 0, 235, 209, 242, 210, 233, 260, 116, 231, 298, + 269, 248, 0, 320, 130, 278, 0, 142, 132, 0, + 0, 262, 301, 264, 295, 255, 287, 224, 277, 315, + 246, 283, 0, 0, 0, 435, 0, 0, 0, 0, + 0, 0, 0, 0, 106, 280, 309, 244, 282, 285, + 208, 279, 0, 212, 217, 325, 307, 238, 239, 0, + 0, 0, 0, 0, 0, 0, 261, 265, 292, 253, + 0, 0, 0, 0, 0, 0, 1115, 0, 236, 0, + 276, 0, 0, 0, 219, 214, 259, 0, 0, 0, + 223, 0, 237, 293, 0, 0, 0, 302, 254, 152, + 308, 252, 251, 316, 289, 0, 299, 234, 243, 110, + 241, 140, 284, 150, 103, 305, 300, 274, 257, 258, + 213, 0, 291, 115, 123, 230, 281, 148, 149, 111, + 153, 218, 322, 104, 630, 321, 135, 631, 147, 306, + 275, 271, 215, 304, 273, 270, 127, 118, 0, 211, + 0, 143, 313, 327, 122, 117, 146, 114, 133, 107, + 102, 221, 108, 109, 113, 112, 0, 126, 131, 134, + 137, 138, 141, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 229, 303, + 0, 0, 0, 0, 0, 145, 220, 121, 227, 228, + 225, 226, 267, 268, 317, 318, 319, 294, 222, 0, + 0, 297, 272, 100, 0, 129, 324, 139, 120, 151, + 0, 0, 0, 0, 0, 0, 240, 323, 290, 288, + 310, 0, 119, 144, 0, 0, 0, 0, 0, 125, + 0, 0, 154, 155, 157, 156, 158, 105, 311, 296, + 256, 314, 232, 247, 326, 249, 250, 286, 216, 266, + 136, 245, 101, 0, 124, 128, 0, 0, 0, 312, + 263, 0, 235, 209, 242, 210, 233, 260, 116, 231, + 298, 269, 248, 0, 320, 130, 278, 0, 142, 132, + 0, 0, 262, 301, 264, 295, 255, 287, 224, 277, + 315, 246, 283, 0, 0, 0, 206, 0, 0, 0, + 0, 0, 0, 0, 0, 106, 280, 309, 244, 282, + 285, 208, 279, 0, 212, 217, 325, 307, 238, 239, + 0, 0, 0, 0, 0, 0, 0, 261, 265, 292, + 253, 0, 0, 0, 0, 0, 0, 0, 0, 236, + 0, 276, 0, 0, 0, 219, 214, 259, 0, 0, + 0, 223, 0, 237, 293, 0, 0, 0, 302, 254, + 152, 308, 252, 251, 316, 289, 0, 299, 234, 243, + 110, 241, 140, 284, 150, 103, 305, 300, 274, 257, + 258, 213, 0, 291, 115, 123, 230, 281, 148, 149, + 111, 153, 218, 322, 104, 204, 321, 135, 203, 147, + 306, 275, 271, 215, 304, 273, 270, 127, 118, 0, + 211, 0, 143, 313, 327, 122, 117, 146, 114, 133, + 107, 102, 221, 108, 109, 113, 112, 0, 126, 131, + 134, 137, 138, 141, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, + 303, 0, 0, 0, 0, 0, 145, 220, 121, 227, + 228, 225, 226, 267, 268, 317, 318, 319, 294, 222, + 0, 0, 297, 272, 100, 0, 129, 324, 139, 120, + 151, 0, 0, 0, 0, 0, 0, 240, 323, 290, + 288, 310, 0, 119, 144, 0, 0, 0, 0, 0, + 125, 0, 205, 154, 155, 157, 156, 158, 105, 311, + 296, 256, 314, 232, 247, 326, 249, 250, 286, 216, + 266, 136, 245, 101, 0, 124, 128, 0, 0, 0, + 312, 263, 0, 235, 209, 242, 210, 233, 260, 116, + 231, 298, 269, 248, 0, 320, 130, 278, 0, 142, + 132, 0, 0, 262, 301, 264, 295, 255, 287, 224, + 277, 315, 246, 283, 0, 0, 0, 206, 0, 0, + 0, 0, 0, 0, 0, 0, 106, 280, 309, 244, + 282, 285, 208, 279, 0, 212, 217, 325, 307, 238, + 239, 0, 0, 0, 0, 0, 0, 0, 261, 265, + 292, 253, 0, 0, 0, 0, 0, 0, 0, 0, + 236, 0, 276, 0, 0, 0, 219, 214, 259, 0, + 0, 0, 223, 0, 237, 293, 0, 0, 0, 302, + 254, 152, 308, 252, 251, 316, 289, 0, 299, 234, + 243, 110, 241, 140, 284, 150, 103, 305, 300, 274, + 257, 258, 213, 0, 291, 115, 123, 230, 281, 148, + 149, 111, 153, 218, 322, 104, 630, 321, 135, 631, + 147, 306, 275, 271, 215, 304, 273, 270, 127, 118, + 0, 211, 0, 143, 313, 327, 122, 117, 146, 114, + 133, 107, 102, 221, 108, 109, 113, 112, 0, 126, + 131, 134, 137, 138, 141, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 229, 303, 0, 0, 0, 0, 0, 145, 220, 121, + 227, 228, 225, 226, 267, 268, 317, 318, 319, 294, + 222, 0, 0, 297, 272, 100, 0, 129, 324, 139, + 120, 151, 0, 0, 0, 0, 0, 0, 240, 323, + 290, 288, 310, 0, 119, 144, 0, 0, 0, 0, + 0, 125, 0, 0, 154, 155, 157, 156, 158, 105, + 311, 296, 256, 314, 232, 247, 326, 249, 250, 286, + 216, 266, 136, 245, 101, 0, 124, 128, 0, 0, + 0, 312, 263, 0, 235, 209, 242, 210, 233, 260, + 116, 231, 298, 269, 248, 0, 320, 130, 278, 0, + 142, 132, 0, 0, 262, 301, 264, 295, 255, 287, + 224, 277, 315, 246, 283, 0, 0, 0, 435, 0, + 0, 0, 0, 0, 0, 0, 0, 106, 280, 309, + 244, 282, 285, 208, 279, 0, 212, 217, 325, 307, + 238, 239, 0, 0, 0, 0, 0, 0, 0, 261, + 265, 292, 253, 0, 0, 0, 0, 0, 0, 0, + 0, 236, 0, 276, 0, 0, 0, 219, 214, 259, + 0, 0, 0, 223, 0, 237, 293, 0, 0, 0, + 302, 254, 152, 308, 252, 251, 316, 289, 0, 299, + 234, 243, 110, 241, 140, 284, 150, 103, 305, 300, + 274, 257, 258, 213, 0, 291, 115, 123, 230, 281, + 148, 149, 111, 153, 218, 322, 104, 630, 321, 135, + 631, 147, 306, 275, 271, 215, 304, 273, 270, 127, + 118, 0, 211, 0, 143, 313, 327, 122, 117, 146, + 114, 133, 107, 102, 221, 108, 109, 113, 112, 0, + 126, 131, 134, 137, 138, 141, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 229, 303, 0, 0, 0, 0, 0, 145, 220, + 121, 227, 228, 225, 226, 267, 268, 317, 318, 319, + 294, 222, 0, 0, 297, 272, 100, 0, 129, 324, + 139, 120, 151, 0, 0, 0, 0, 0, 0, 240, + 323, 290, 288, 310, 0, 119, 144, 0, 0, 0, + 0, 0, 125, 0, 0, 154, 155, 157, 156, 158, + 105, 311, 296, 256, 314, 232, 247, 326, 249, 250, + 286, 216, 266, 136, 245, 101, 0, 124, 128, 0, + 0, 0, 312, 263, 0, 235, 209, 242, 210, 233, + 260, 116, 231, 298, 269, 248, 0, 320, 130, 278, + 0, 142, 132, 0, 0, 262, 301, 264, 295, 255, + 287, 224, 277, 315, 246, 283, 0, 0, 0, 98, + 0, 0, 0, 0, 0, 0, 0, 0, 106, 280, + 309, 244, 282, 285, 208, 279, 0, 212, 217, 325, + 307, 238, 239, 0, 0, 0, 0, 0, 0, 0, + 261, 265, 292, 253, 0, 0, 0, 0, 0, 0, + 0, 0, 236, 0, 276, 0, 0, 0, 219, 214, + 259, 0, 0, 0, 223, 0, 237, 293, 0, 0, + 0, 302, 254, 152, 308, 252, 251, 316, 289, 0, + 299, 234, 243, 110, 241, 140, 284, 150, 103, 305, + 300, 274, 257, 258, 213, 0, 291, 115, 123, 230, + 281, 148, 149, 111, 153, 218, 322, 104, 630, 321, + 135, 631, 147, 306, 275, 271, 215, 304, 273, 270, + 127, 118, 0, 211, 0, 143, 313, 327, 122, 117, + 146, 114, 133, 107, 102, 221, 108, 109, 113, 112, + 0, 126, 131, 134, 137, 138, 141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 229, 303, 0, 0, 0, 0, 0, 145, + 220, 121, 227, 228, 225, 226, 267, 268, 317, 318, + 319, 294, 222, 0, 0, 297, 272, 100, 0, 129, + 324, 139, 120, 151, 0, 0, 0, 0, 0, 0, + 240, 323, 290, 288, 310, 0, 119, 144, 0, 0, + 136, 0, 101, 125, 124, 128, 154, 155, 157, 156, + 158, 105, 833, 0, 386, 0, 0, 0, 116, 385, + 0, 0, 0, 0, 422, 130, 0, 0, 142, 132, + 0, 0, 0, 0, 415, 416, 0, 0, 0, 0, + 0, 0, 0, 53, 0, 0, 435, 403, 402, 404, + 405, 406, 407, 0, 0, 106, 408, 409, 410, 0, + 0, 0, 383, 396, 0, 421, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 134, 0, 0, 0, 891, - 892, 893, 0, 0, 0, 106, 713, 124, 0, 132, - 102, 0, 0, 721, 722, 0, 0, 0, 0, 108, - 114, 0, 726, 130, 131, 107, 135, 0, 0, 103, - 0, 0, 121, 0, 129, 0, 0, 0, 0, 0, - 0, 0, 117, 110, 0, 0, 0, 126, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 128, 0, 113, - 0, 0, 0, 0, 0, 174, 174, 174, 0, 0, - 0, 0, 0, 0, 0, 100, 0, 118, 0, 123, - 112, 133, 0, 174, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 111, 127, 0, 0, 0, 0, - 0, 116, 0, 0, 136, 137, 139, 138, 140, 104, + 0, 0, 0, 0, 0, 393, 394, 836, 0, 0, + 0, 433, 0, 395, 0, 0, 392, 397, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 152, 0, 0, 431, 0, 0, 0, 0, 0, 0, + 110, 0, 140, 0, 150, 103, 0, 0, 0, 0, + 0, 0, 0, 0, 115, 123, 0, 0, 148, 149, + 111, 153, 0, 0, 104, 0, 0, 135, 0, 147, + 0, 0, 0, 0, 0, 0, 0, 127, 118, 0, + 0, 0, 143, 0, 0, 122, 117, 146, 114, 133, + 107, 102, 0, 108, 109, 113, 112, 0, 126, 131, + 134, 137, 138, 141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 145, 0, 121, 423, + 432, 429, 430, 427, 428, 426, 425, 424, 434, 417, + 418, 420, 0, 419, 100, 0, 129, 0, 139, 120, + 151, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 119, 144, 0, 0, 136, 0, 101, + 125, 124, 128, 154, 155, 157, 156, 158, 105, 0, + 0, 386, 0, 0, 0, 116, 385, 0, 0, 0, + 0, 422, 130, 0, 0, 142, 132, 0, 0, 0, + 0, 415, 416, 0, 0, 0, 0, 0, 0, 0, + 53, 0, 0, 435, 403, 402, 404, 405, 406, 407, + 0, 0, 106, 408, 409, 410, 0, 0, 0, 383, + 396, 0, 421, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 774, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 983, 984, 0, 0, 0, 774, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 174, 0, + 0, 0, 393, 394, 836, 0, 0, 0, 433, 0, + 395, 0, 0, 392, 397, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 152, 0, 0, + 431, 0, 0, 0, 0, 0, 0, 110, 0, 140, + 0, 150, 103, 0, 0, 0, 0, 0, 0, 0, + 0, 115, 123, 0, 0, 148, 149, 111, 153, 0, + 0, 104, 0, 0, 135, 0, 147, 0, 0, 0, + 0, 0, 0, 0, 127, 118, 0, 0, 0, 143, + 0, 0, 122, 117, 146, 114, 133, 107, 102, 0, + 108, 109, 113, 112, 0, 126, 131, 134, 137, 138, + 141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 607, 0, 609, 0, 0, + 0, 0, 0, 145, 0, 121, 423, 432, 429, 430, + 427, 428, 426, 425, 424, 434, 417, 418, 420, 0, + 419, 100, 0, 129, 0, 139, 120, 151, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 865, 866, 867, - 0, 0, 0, 0, 0, 0, 0, 0, 122, 0, - 101, 0, 115, 0, 0, 878, 0, 0, 0, 0, - 769, 0, 367, 0, 0, 0, 109, 366, 1055, 0, - 174, 0, 403, 119, 0, 0, 125, 120, 0, 0, - 0, 0, 396, 397, 0, 0, 0, 0, 0, 0, - 0, 53, 0, 0, 416, 384, 383, 385, 386, 387, - 388, 774, 0, 105, 389, 390, 391, 609, 774, 0, - 364, 377, 0, 402, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 174, - 0, 0, 0, 374, 375, 772, 0, 0, 0, 414, - 926, 376, 0, 0, 373, 378, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1119, 0, 0, 134, 0, - 0, 412, 0, 0, 0, 0, 0, 0, 106, 0, - 124, 0, 132, 102, 0, 0, 0, 0, 0, 0, - 0, 0, 108, 114, 0, 0, 130, 131, 107, 135, - 0, 0, 103, 0, 0, 121, 0, 129, 0, 0, - 0, 0, 0, 0, 0, 117, 110, 0, 0, 0, - 126, 0, 974, 0, 0, 0, 0, 0, 174, 1093, - 128, 0, 113, 404, 413, 410, 411, 408, 409, 407, - 406, 405, 415, 398, 399, 401, 0, 400, 100, 0, - 118, 0, 123, 112, 133, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 111, 127, 0, - 0, 0, 0, 0, 116, 0, 0, 136, 137, 139, - 138, 140, 104, 0, 0, 0, 174, 174, 174, 174, - 0, 0, 0, 0, 0, 0, 0, 1137, 0, 0, - 174, 0, 0, 1093, 0, 0, 607, 292, 277, 237, - 295, 213, 228, 307, 230, 231, 267, 198, 247, 122, - 226, 101, 0, 115, 0, 0, 0, 0, 293, 244, - 0, 216, 191, 223, 192, 214, 241, 109, 212, 279, - 250, 229, 0, 301, 119, 259, 0, 125, 120, 0, - 0, 243, 282, 245, 276, 236, 268, 205, 258, 296, - 227, 264, 0, 0, 0, 188, 0, 0, 0, 0, - 0, 0, 0, 0, 105, 261, 290, 225, 263, 266, - 190, 260, 0, 194, 199, 306, 288, 219, 220, 0, - 0, 0, 0, 0, 0, 0, 242, 246, 273, 234, - 0, 0, 0, 0, 0, 0, 0, 0, 217, 0, - 257, 0, 0, 0, 201, 196, 240, 0, 0, 0, - 204, 0, 218, 274, 0, 0, 0, 283, 235, 134, - 289, 233, 232, 297, 270, 0, 280, 215, 224, 106, - 222, 124, 265, 132, 102, 286, 281, 255, 238, 239, - 195, 0, 272, 108, 114, 211, 262, 130, 131, 107, - 135, 200, 303, 103, 186, 302, 121, 185, 129, 287, - 256, 252, 197, 285, 254, 251, 117, 110, 0, 193, - 0, 126, 294, 308, 210, 284, 0, 0, 0, 0, - 0, 128, 202, 113, 208, 209, 206, 207, 248, 249, - 298, 299, 300, 275, 203, 0, 0, 278, 253, 100, - 0, 118, 305, 123, 112, 133, 0, 0, 0, 0, - 0, 0, 221, 304, 271, 269, 291, 0, 111, 127, - 0, 0, 0, 0, 0, 180, 179, 187, 136, 137, - 139, 138, 140, 104, 292, 277, 237, 295, 213, 228, - 307, 230, 231, 267, 198, 247, 122, 226, 101, 0, - 115, 0, 0, 0, 0, 293, 244, 0, 216, 191, - 223, 192, 214, 241, 109, 212, 279, 250, 229, 0, - 301, 119, 259, 0, 125, 120, 0, 0, 243, 282, - 245, 276, 236, 268, 205, 258, 296, 227, 264, 53, - 0, 0, 188, 0, 0, 0, 0, 0, 0, 0, - 0, 105, 261, 290, 225, 263, 266, 190, 260, 0, - 194, 199, 306, 288, 219, 220, 0, 0, 0, 0, - 0, 0, 0, 242, 246, 273, 234, 0, 0, 0, - 0, 0, 0, 0, 0, 217, 0, 257, 0, 0, - 0, 201, 196, 240, 0, 0, 0, 204, 0, 218, - 274, 0, 0, 0, 283, 235, 134, 289, 233, 232, - 297, 270, 0, 280, 215, 224, 106, 222, 124, 265, - 132, 102, 286, 281, 255, 238, 239, 195, 0, 272, - 108, 114, 211, 262, 130, 131, 107, 135, 200, 303, - 103, 611, 302, 121, 612, 129, 287, 256, 252, 197, - 285, 254, 251, 117, 110, 0, 193, 0, 126, 294, - 308, 210, 284, 0, 0, 0, 0, 0, 128, 202, - 113, 208, 209, 206, 207, 248, 249, 298, 299, 300, - 275, 203, 0, 0, 278, 253, 100, 0, 118, 305, - 123, 112, 133, 0, 0, 0, 0, 0, 0, 221, - 304, 271, 269, 291, 0, 111, 127, 0, 0, 0, - 0, 0, 116, 0, 0, 136, 137, 139, 138, 140, - 104, 292, 277, 237, 295, 213, 228, 307, 230, 231, - 267, 198, 247, 122, 226, 101, 0, 115, 0, 0, - 0, 0, 293, 244, 0, 216, 191, 223, 192, 214, - 241, 109, 212, 279, 250, 229, 0, 301, 119, 259, - 0, 125, 120, 0, 0, 243, 282, 245, 276, 236, - 268, 205, 258, 296, 227, 264, 0, 0, 0, 188, - 0, 0, 0, 0, 0, 0, 0, 0, 105, 261, - 290, 225, 263, 266, 190, 260, 0, 194, 199, 306, - 288, 219, 220, 0, 0, 0, 0, 0, 0, 0, - 242, 246, 273, 234, 0, 0, 0, 0, 0, 0, - 1116, 0, 217, 0, 257, 0, 0, 0, 201, 196, - 240, 0, 0, 0, 204, 0, 218, 274, 0, 0, - 0, 283, 235, 134, 289, 233, 232, 297, 270, 0, - 280, 215, 224, 106, 222, 124, 265, 132, 102, 286, - 281, 255, 238, 239, 195, 0, 272, 108, 114, 211, - 262, 130, 131, 107, 135, 200, 303, 103, 611, 302, - 121, 612, 129, 287, 256, 252, 197, 285, 254, 251, - 117, 110, 0, 193, 0, 126, 294, 308, 210, 284, - 0, 0, 0, 0, 0, 128, 202, 113, 208, 209, - 206, 207, 248, 249, 298, 299, 300, 275, 203, 0, - 0, 278, 253, 100, 0, 118, 305, 123, 112, 133, - 0, 0, 0, 0, 0, 0, 221, 304, 271, 269, - 291, 0, 111, 127, 0, 0, 0, 0, 0, 116, - 0, 0, 136, 137, 139, 138, 140, 104, 292, 277, - 237, 295, 213, 228, 307, 230, 231, 267, 198, 247, - 122, 226, 101, 0, 115, 0, 0, 0, 0, 293, - 244, 0, 216, 191, 223, 192, 214, 241, 109, 212, - 279, 250, 229, 0, 301, 119, 259, 0, 125, 120, - 0, 0, 243, 282, 245, 276, 236, 268, 205, 258, - 296, 227, 264, 0, 0, 0, 416, 0, 0, 0, - 0, 0, 0, 0, 0, 105, 261, 290, 225, 263, - 266, 190, 260, 0, 194, 199, 306, 288, 219, 220, - 0, 0, 0, 0, 0, 0, 0, 242, 246, 273, - 234, 0, 0, 0, 0, 0, 0, 988, 0, 217, - 0, 257, 0, 0, 0, 201, 196, 240, 0, 0, - 0, 204, 0, 218, 274, 0, 0, 0, 283, 235, - 134, 289, 233, 232, 297, 270, 0, 280, 215, 224, - 106, 222, 124, 265, 132, 102, 286, 281, 255, 238, - 239, 195, 0, 272, 108, 114, 211, 262, 130, 131, - 107, 135, 200, 303, 103, 611, 302, 121, 612, 129, - 287, 256, 252, 197, 285, 254, 251, 117, 110, 0, - 193, 0, 126, 294, 308, 210, 284, 0, 0, 0, - 0, 0, 128, 202, 113, 208, 209, 206, 207, 248, - 249, 298, 299, 300, 275, 203, 0, 0, 278, 253, - 100, 0, 118, 305, 123, 112, 133, 0, 0, 0, - 0, 0, 0, 221, 304, 271, 269, 291, 0, 111, - 127, 0, 0, 0, 0, 0, 116, 0, 0, 136, - 137, 139, 138, 140, 104, 292, 277, 237, 295, 213, - 228, 307, 230, 231, 267, 198, 247, 122, 226, 101, - 0, 115, 0, 0, 0, 0, 293, 244, 0, 216, - 191, 223, 192, 214, 241, 109, 212, 279, 250, 229, - 0, 301, 119, 259, 0, 125, 120, 0, 0, 243, - 282, 245, 276, 236, 268, 205, 258, 296, 227, 264, - 0, 0, 0, 188, 0, 0, 0, 0, 0, 0, - 0, 0, 105, 261, 290, 225, 263, 266, 190, 260, - 0, 194, 199, 306, 288, 219, 220, 0, 0, 0, - 0, 0, 0, 0, 242, 246, 273, 234, 0, 0, - 0, 0, 0, 0, 0, 0, 217, 0, 257, 0, - 0, 0, 201, 196, 240, 0, 0, 0, 204, 0, - 218, 274, 0, 0, 0, 283, 235, 134, 289, 233, - 232, 297, 270, 0, 280, 215, 224, 106, 222, 124, - 265, 132, 102, 286, 281, 255, 238, 239, 195, 0, - 272, 108, 114, 211, 262, 130, 131, 107, 135, 200, - 303, 103, 186, 302, 121, 185, 129, 287, 256, 252, - 197, 285, 254, 251, 117, 110, 0, 193, 0, 126, - 294, 308, 210, 284, 0, 0, 0, 0, 0, 128, - 202, 113, 208, 209, 206, 207, 248, 249, 298, 299, - 300, 275, 203, 0, 0, 278, 253, 100, 0, 118, - 305, 123, 112, 133, 0, 0, 0, 0, 0, 0, - 221, 304, 271, 269, 291, 0, 111, 127, 0, 0, - 0, 0, 0, 116, 0, 187, 136, 137, 139, 138, - 140, 104, 292, 277, 237, 295, 213, 228, 307, 230, - 231, 267, 198, 247, 122, 226, 101, 0, 115, 0, - 0, 0, 0, 293, 244, 0, 216, 191, 223, 192, - 214, 241, 109, 212, 279, 250, 229, 0, 301, 119, - 259, 0, 125, 120, 0, 0, 243, 282, 245, 276, - 236, 268, 205, 258, 296, 227, 264, 0, 0, 0, - 188, 0, 0, 0, 0, 0, 0, 0, 0, 105, - 261, 290, 225, 263, 266, 190, 260, 0, 194, 199, - 306, 288, 219, 220, 0, 0, 0, 0, 0, 0, - 0, 242, 246, 273, 234, 0, 0, 0, 0, 0, - 0, 0, 0, 217, 0, 257, 0, 0, 0, 201, - 196, 240, 0, 0, 0, 204, 0, 218, 274, 0, - 0, 0, 283, 235, 134, 289, 233, 232, 297, 270, - 0, 280, 215, 224, 106, 222, 124, 265, 132, 102, - 286, 281, 255, 238, 239, 195, 0, 272, 108, 114, - 211, 262, 130, 131, 107, 135, 200, 303, 103, 611, - 302, 121, 612, 129, 287, 256, 252, 197, 285, 254, - 251, 117, 110, 0, 193, 0, 126, 294, 308, 210, - 284, 0, 0, 0, 0, 0, 128, 202, 113, 208, - 209, 206, 207, 248, 249, 298, 299, 300, 275, 203, - 0, 0, 278, 253, 100, 0, 118, 305, 123, 112, - 133, 0, 0, 0, 0, 0, 0, 221, 304, 271, - 269, 291, 0, 111, 127, 0, 0, 0, 0, 0, - 116, 0, 0, 136, 137, 139, 138, 140, 104, 292, - 277, 237, 295, 213, 228, 307, 230, 231, 267, 198, - 247, 122, 226, 101, 0, 115, 0, 0, 0, 0, - 293, 244, 0, 216, 191, 223, 192, 214, 241, 109, - 212, 279, 250, 229, 0, 301, 119, 259, 0, 125, - 120, 0, 0, 243, 282, 245, 276, 236, 268, 205, - 258, 296, 227, 264, 0, 0, 0, 416, 0, 0, - 0, 0, 0, 0, 0, 0, 105, 261, 290, 225, - 263, 266, 190, 260, 0, 194, 199, 306, 288, 219, - 220, 0, 0, 0, 0, 0, 0, 0, 242, 246, - 273, 234, 0, 0, 0, 0, 0, 0, 0, 0, - 217, 0, 257, 0, 0, 0, 201, 196, 240, 0, - 0, 0, 204, 0, 218, 274, 0, 0, 0, 283, - 235, 134, 289, 233, 232, 297, 270, 0, 280, 215, - 224, 106, 222, 124, 265, 132, 102, 286, 281, 255, - 238, 239, 195, 0, 272, 108, 114, 211, 262, 130, - 131, 107, 135, 200, 303, 103, 611, 302, 121, 612, - 129, 287, 256, 252, 197, 285, 254, 251, 117, 110, - 0, 193, 0, 126, 294, 308, 210, 284, 0, 0, - 0, 0, 0, 128, 202, 113, 208, 209, 206, 207, - 248, 249, 298, 299, 300, 275, 203, 0, 0, 278, - 253, 100, 0, 118, 305, 123, 112, 133, 0, 0, - 0, 0, 0, 0, 221, 304, 271, 269, 291, 0, - 111, 127, 0, 0, 0, 0, 0, 116, 0, 0, - 136, 137, 139, 138, 140, 104, 292, 277, 237, 295, - 213, 228, 307, 230, 231, 267, 198, 247, 122, 226, - 101, 0, 115, 0, 0, 0, 0, 293, 244, 0, - 216, 191, 223, 192, 214, 241, 109, 212, 279, 250, - 229, 0, 301, 119, 259, 0, 125, 120, 0, 0, - 243, 282, 245, 276, 236, 268, 205, 258, 296, 227, - 264, 0, 0, 0, 98, 0, 0, 0, 0, 0, - 0, 0, 0, 105, 261, 290, 225, 263, 266, 190, - 260, 0, 194, 199, 306, 288, 219, 220, 0, 0, - 0, 0, 0, 0, 0, 242, 246, 273, 234, 0, - 0, 0, 0, 0, 0, 0, 0, 217, 0, 257, - 0, 0, 0, 201, 196, 240, 0, 0, 0, 204, - 0, 218, 274, 0, 0, 0, 283, 235, 134, 289, - 233, 232, 297, 270, 0, 280, 215, 224, 106, 222, - 124, 265, 132, 102, 286, 281, 255, 238, 239, 195, - 0, 272, 108, 114, 211, 262, 130, 131, 107, 135, - 200, 303, 103, 611, 302, 121, 612, 129, 287, 256, - 252, 197, 285, 254, 251, 117, 110, 0, 193, 0, - 126, 294, 308, 210, 284, 0, 0, 0, 0, 0, - 128, 202, 113, 208, 209, 206, 207, 248, 249, 298, - 299, 300, 275, 203, 0, 0, 278, 253, 100, 0, - 118, 305, 123, 112, 133, 0, 0, 0, 0, 0, - 0, 221, 304, 271, 269, 291, 0, 111, 127, 122, - 0, 101, 0, 115, 116, 0, 0, 136, 137, 139, - 138, 140, 104, 367, 0, 0, 0, 109, 366, 0, - 0, 0, 0, 403, 119, 0, 0, 125, 120, 0, - 0, 0, 0, 396, 397, 0, 0, 0, 0, 0, - 0, 0, 53, 0, 0, 416, 384, 383, 385, 386, - 387, 388, 0, 0, 105, 389, 390, 391, 0, 0, - 0, 364, 377, 0, 402, 0, 0, 0, 0, 0, + 119, 144, 0, 0, 136, 0, 101, 125, 124, 128, + 154, 155, 157, 156, 158, 105, 0, 0, 386, 0, + 0, 0, 116, 385, 0, 0, 0, 0, 422, 130, + 0, 0, 142, 132, 0, 0, 0, 0, 415, 416, + 0, 0, 0, 0, 0, 0, 0, 53, 0, 377, + 435, 403, 402, 404, 405, 406, 407, 0, 0, 106, + 408, 409, 410, 0, 0, 0, 383, 396, 0, 421, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 374, 375, 772, 0, 0, 0, - 414, 0, 376, 0, 0, 373, 378, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 134, - 0, 0, 412, 0, 0, 0, 0, 0, 0, 106, - 0, 124, 0, 132, 102, 0, 0, 0, 0, 0, - 0, 0, 0, 108, 114, 0, 0, 130, 131, 107, - 135, 0, 0, 103, 0, 0, 121, 0, 129, 0, - 0, 0, 0, 0, 0, 0, 117, 110, 0, 0, - 0, 126, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 128, 0, 113, 404, 413, 410, 411, 408, 409, - 407, 406, 405, 415, 398, 399, 401, 0, 400, 100, - 0, 118, 0, 123, 112, 133, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 111, 127, - 122, 0, 101, 0, 115, 116, 0, 0, 136, 137, - 139, 138, 140, 104, 367, 0, 0, 0, 109, 366, - 0, 0, 0, 0, 403, 119, 0, 0, 125, 120, - 0, 0, 0, 0, 396, 397, 0, 0, 0, 0, - 0, 0, 0, 53, 0, 358, 416, 384, 383, 385, - 386, 387, 388, 0, 0, 105, 389, 390, 391, 0, - 0, 0, 364, 377, 0, 402, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 393, + 394, 0, 0, 0, 0, 433, 0, 395, 0, 0, + 392, 397, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 152, 0, 0, 431, 0, 0, + 0, 0, 0, 0, 110, 0, 140, 0, 150, 103, + 0, 0, 0, 0, 0, 0, 0, 0, 115, 123, + 0, 0, 148, 149, 111, 153, 0, 0, 104, 0, + 0, 135, 0, 147, 0, 0, 0, 0, 0, 0, + 0, 127, 118, 0, 0, 0, 143, 0, 0, 122, + 117, 146, 114, 133, 107, 102, 0, 108, 109, 113, + 112, 0, 126, 131, 134, 137, 138, 141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 374, 375, 0, 0, 0, - 0, 414, 0, 376, 0, 0, 373, 378, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 134, 0, 0, 412, 0, 0, 0, 0, 0, 0, - 106, 0, 124, 0, 132, 102, 0, 0, 0, 0, - 0, 0, 0, 0, 108, 114, 0, 0, 130, 131, - 107, 135, 0, 0, 103, 0, 0, 121, 0, 129, - 0, 0, 0, 0, 0, 0, 0, 117, 110, 0, - 0, 0, 126, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 128, 0, 113, 404, 413, 410, 411, 408, - 409, 407, 406, 405, 415, 398, 399, 401, 0, 400, - 100, 0, 118, 0, 123, 112, 133, 0, 0, 0, - 24, 0, 0, 0, 0, 0, 0, 0, 0, 111, - 127, 122, 0, 101, 0, 115, 116, 0, 0, 136, - 137, 139, 138, 140, 104, 367, 0, 0, 0, 109, - 366, 0, 0, 0, 0, 403, 119, 0, 0, 125, - 120, 0, 0, 0, 0, 396, 397, 0, 0, 0, - 0, 0, 0, 0, 53, 0, 0, 416, 384, 383, - 385, 386, 387, 388, 0, 0, 105, 389, 390, 391, - 0, 0, 0, 364, 377, 0, 402, 0, 0, 0, + 145, 0, 121, 423, 432, 429, 430, 427, 428, 426, + 425, 424, 434, 417, 418, 420, 0, 419, 100, 0, + 129, 0, 139, 120, 151, 0, 0, 0, 0, 0, + 24, 0, 0, 0, 0, 0, 0, 119, 144, 0, + 0, 136, 0, 101, 125, 124, 128, 154, 155, 157, + 156, 158, 105, 0, 0, 386, 0, 0, 0, 116, + 385, 0, 0, 0, 0, 422, 130, 0, 0, 142, + 132, 0, 0, 0, 0, 415, 416, 0, 0, 0, + 0, 0, 0, 0, 53, 0, 0, 435, 403, 402, + 404, 405, 406, 407, 0, 0, 106, 408, 409, 410, + 0, 0, 0, 383, 396, 0, 421, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 374, 375, 0, 0, - 0, 0, 414, 0, 376, 0, 0, 373, 378, 0, + 0, 0, 0, 0, 0, 0, 393, 394, 0, 0, + 0, 0, 433, 0, 395, 0, 0, 392, 397, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 134, 0, 0, 412, 0, 0, 0, 0, 0, - 0, 106, 0, 124, 0, 132, 102, 0, 0, 0, - 0, 0, 0, 0, 0, 108, 114, 0, 0, 130, - 131, 107, 135, 0, 0, 103, 0, 0, 121, 0, - 129, 0, 0, 0, 0, 0, 0, 0, 117, 110, - 0, 0, 0, 126, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 128, 0, 113, 404, 413, 410, 411, - 408, 409, 407, 406, 405, 415, 398, 399, 401, 0, - 400, 100, 0, 118, 0, 123, 112, 133, 0, 0, + 0, 152, 0, 0, 431, 0, 0, 0, 0, 0, + 0, 110, 0, 140, 0, 150, 103, 0, 0, 0, + 0, 0, 0, 0, 0, 115, 123, 0, 0, 148, + 149, 111, 153, 0, 0, 104, 0, 0, 135, 0, + 147, 0, 0, 0, 0, 0, 0, 0, 127, 118, + 0, 0, 0, 143, 0, 0, 122, 117, 146, 114, + 133, 107, 102, 0, 108, 109, 113, 112, 0, 126, + 131, 134, 137, 138, 141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 111, 127, 122, 0, 101, 0, 115, 116, 0, 0, - 136, 137, 139, 138, 140, 104, 367, 0, 0, 0, - 109, 366, 0, 0, 0, 0, 403, 119, 0, 0, - 125, 120, 0, 0, 0, 0, 396, 397, 0, 0, - 0, 0, 0, 0, 0, 53, 0, 0, 416, 384, - 383, 385, 386, 387, 388, 0, 0, 105, 389, 390, - 391, 0, 0, 0, 364, 377, 0, 402, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 145, 0, 121, + 423, 432, 429, 430, 427, 428, 426, 425, 424, 434, + 417, 418, 420, 0, 419, 100, 0, 129, 0, 139, + 120, 151, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 119, 144, 0, 0, 136, 0, + 101, 125, 124, 128, 154, 155, 157, 156, 158, 105, + 0, 0, 386, 0, 0, 0, 116, 385, 0, 0, + 0, 0, 422, 130, 0, 0, 142, 132, 0, 0, + 0, 0, 415, 416, 0, 0, 0, 0, 0, 0, + 0, 53, 0, 0, 435, 403, 402, 404, 405, 406, + 407, 0, 0, 106, 408, 409, 410, 0, 0, 0, + 383, 396, 0, 421, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 374, 375, 0, - 0, 0, 0, 414, 0, 376, 0, 0, 373, 378, + 0, 0, 0, 393, 394, 0, 0, 0, 0, 433, + 0, 395, 0, 0, 392, 397, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 152, 0, + 0, 431, 0, 0, 0, 0, 0, 0, 110, 0, + 140, 0, 150, 103, 0, 0, 0, 0, 0, 0, + 0, 0, 115, 123, 0, 0, 148, 149, 111, 153, + 0, 0, 104, 0, 0, 135, 0, 147, 0, 0, + 0, 0, 0, 0, 0, 127, 118, 0, 0, 0, + 143, 0, 0, 122, 117, 146, 114, 133, 107, 102, + 0, 108, 109, 113, 112, 0, 126, 131, 134, 137, + 138, 141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 134, 0, 0, 412, 0, 0, 0, 0, - 0, 0, 106, 0, 124, 0, 132, 102, 0, 0, - 0, 0, 0, 0, 0, 0, 108, 114, 0, 0, - 130, 131, 107, 135, 0, 0, 103, 0, 0, 121, - 0, 129, 0, 0, 0, 0, 0, 0, 0, 117, - 110, 0, 0, 0, 126, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 128, 0, 113, 404, 413, 410, - 411, 408, 409, 407, 406, 405, 415, 398, 399, 401, - 0, 400, 100, 0, 118, 0, 123, 112, 133, 0, + 0, 0, 0, 0, 145, 0, 121, 423, 432, 429, + 430, 427, 428, 426, 425, 424, 434, 417, 418, 420, + 0, 419, 100, 0, 129, 0, 139, 120, 151, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 111, 127, 122, 0, 101, 0, 115, 116, 0, - 0, 136, 137, 139, 138, 140, 104, 0, 0, 0, - 0, 109, 0, 0, 0, 0, 0, 403, 119, 0, - 0, 125, 120, 0, 0, 0, 0, 396, 397, 0, - 0, 0, 0, 0, 0, 0, 53, 0, 0, 416, - 384, 383, 385, 386, 387, 388, 0, 0, 105, 389, - 390, 391, 0, 0, 0, 0, 377, 0, 402, 0, + 0, 119, 144, 0, 0, 136, 0, 101, 125, 124, + 128, 154, 155, 157, 156, 158, 105, 0, 0, 0, + 0, 0, 0, 116, 0, 0, 0, 0, 0, 422, + 130, 0, 0, 142, 132, 0, 0, 0, 0, 415, + 416, 0, 0, 0, 0, 0, 0, 0, 53, 0, + 0, 435, 403, 402, 404, 405, 406, 407, 0, 0, + 106, 408, 409, 410, 0, 0, 0, 0, 396, 0, + 421, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 374, 375, - 0, 0, 0, 0, 414, 0, 376, 0, 0, 373, - 378, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 134, 0, 0, 412, 0, 0, 0, - 0, 0, 0, 106, 0, 124, 0, 132, 102, 0, - 0, 0, 0, 0, 0, 0, 0, 108, 114, 0, - 0, 130, 131, 107, 135, 0, 0, 103, 0, 0, - 121, 0, 129, 0, 0, 0, 0, 0, 0, 0, - 117, 110, 0, 0, 0, 126, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 128, 0, 113, 404, 413, - 410, 411, 408, 409, 407, 406, 405, 415, 398, 399, - 401, 0, 400, 100, 0, 118, 0, 123, 112, 133, - 0, 0, 0, 122, 0, 101, 0, 115, 0, 0, - 0, 0, 111, 127, 0, 0, 0, 0, 0, 116, - 0, 109, 136, 137, 139, 138, 140, 104, 119, 0, - 0, 125, 120, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, - 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, + 393, 394, 0, 0, 0, 0, 433, 0, 395, 0, + 0, 392, 397, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 152, 0, 0, 431, 0, + 0, 0, 0, 0, 0, 110, 0, 140, 0, 150, + 103, 0, 0, 0, 0, 0, 0, 0, 0, 115, + 123, 0, 0, 148, 149, 111, 153, 0, 0, 104, + 0, 0, 135, 0, 147, 0, 0, 0, 0, 0, + 0, 0, 127, 118, 0, 0, 0, 143, 0, 0, + 122, 117, 146, 114, 133, 107, 102, 0, 108, 109, + 113, 112, 0, 126, 131, 134, 137, 138, 141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 527, 526, 536, 537, 529, 530, - 531, 532, 533, 534, 535, 528, 0, 0, 538, 0, + 0, 145, 0, 121, 423, 432, 429, 430, 427, 428, + 426, 425, 424, 434, 417, 418, 420, 0, 419, 100, + 0, 129, 0, 139, 120, 151, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 119, 144, + 0, 0, 0, 0, 0, 125, 0, 0, 154, 155, + 157, 156, 158, 105, 136, 0, 101, 0, 700, 128, + 0, 0, 701, 698, 703, 0, 0, 0, 0, 0, + 0, 0, 116, 0, 0, 0, 0, 0, 0, 130, + 0, 0, 142, 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 134, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 106, 0, 124, 0, 132, 102, 0, - 0, 0, 0, 0, 0, 0, 0, 108, 114, 0, - 0, 130, 131, 107, 135, 0, 0, 103, 0, 0, - 121, 0, 129, 0, 122, 0, 101, 0, 115, 0, - 117, 110, 0, 0, 0, 126, 0, 903, 0, 0, - 0, 0, 109, 0, 0, 128, 0, 113, 0, 119, - 0, 0, 125, 120, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 100, 0, 118, 0, 123, 112, 133, - 188, 0, 905, 0, 0, 0, 0, 0, 0, 105, - 0, 0, 111, 127, 515, 514, 0, 0, 0, 116, - 0, 0, 136, 137, 139, 138, 140, 104, 0, 0, - 0, 516, 0, 0, 0, 0, 0, 0, 0, 0, + 333, 0, 0, 0, 0, 0, 0, 0, 0, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 134, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 106, 0, 124, 0, 132, 102, - 0, 0, 0, 0, 0, 0, 0, 0, 108, 114, - 0, 0, 130, 131, 107, 135, 0, 0, 103, 0, - 0, 121, 0, 129, 0, 122, 0, 101, 0, 115, - 0, 117, 110, 0, 0, 0, 126, 0, 1092, 0, - 0, 0, 0, 109, 0, 0, 128, 0, 113, 0, - 119, 0, 0, 125, 120, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 100, 0, 118, 0, 123, 112, - 133, 98, 0, 1094, 0, 0, 0, 0, 0, 0, - 105, 0, 0, 111, 127, 0, 0, 0, 0, 0, - 116, 0, 0, 136, 137, 139, 138, 140, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 134, 0, 0, 0, 0, - 0, 24, 0, 0, 0, 106, 0, 124, 0, 132, - 102, 0, 122, 0, 101, 0, 115, 0, 0, 108, - 114, 0, 0, 130, 131, 107, 135, 0, 0, 103, - 109, 0, 121, 0, 129, 0, 0, 119, 0, 0, - 125, 120, 117, 110, 0, 0, 0, 126, 0, 0, - 0, 0, 0, 0, 0, 53, 0, 128, 188, 113, - 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, - 0, 0, 0, 0, 0, 100, 0, 118, 0, 123, - 112, 133, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 111, 127, 0, 0, 0, 0, - 0, 116, 0, 0, 136, 137, 139, 138, 140, 104, + 0, 0, 0, 702, 152, 0, 0, 0, 0, 697, + 0, 0, 0, 0, 110, 0, 140, 0, 150, 103, + 0, 0, 0, 0, 0, 0, 0, 0, 115, 123, + 0, 0, 148, 149, 111, 153, 0, 0, 104, 0, + 0, 135, 24, 147, 0, 0, 0, 0, 0, 0, + 0, 127, 118, 136, 0, 101, 143, 124, 128, 122, + 117, 146, 114, 133, 107, 102, 0, 108, 109, 113, + 112, 116, 126, 131, 134, 137, 138, 141, 130, 0, + 0, 142, 132, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 53, 0, 0, 98, + 145, 0, 121, 0, 0, 0, 0, 0, 106, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, + 129, 0, 139, 120, 151, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 119, 144, 0, + 0, 0, 0, 0, 125, 0, 0, 154, 155, 157, + 156, 158, 105, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 152, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 110, 0, 140, 0, 150, 103, 0, + 0, 0, 0, 0, 0, 0, 0, 115, 123, 0, + 0, 148, 149, 111, 153, 0, 0, 104, 0, 0, + 135, 0, 147, 0, 0, 0, 0, 0, 0, 0, + 127, 118, 136, 0, 101, 143, 124, 128, 122, 117, + 146, 114, 133, 107, 102, 1223, 108, 109, 113, 112, + 116, 126, 131, 134, 137, 138, 141, 130, 0, 0, + 142, 132, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 98, 145, + 1225, 121, 0, 0, 0, 0, 0, 106, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 100, 0, 129, + 0, 139, 120, 151, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 119, 144, 0, 0, + 0, 0, 0, 125, 0, 0, 154, 155, 157, 156, + 158, 105, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 152, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 110, 0, 140, 0, 150, 103, 0, 0, + 0, 0, 0, 0, 0, 0, 115, 123, 0, 0, + 148, 149, 111, 153, 0, 0, 104, 0, 0, 135, + 24, 147, 0, 0, 0, 0, 0, 0, 0, 127, + 118, 136, 0, 101, 143, 124, 128, 122, 117, 146, + 114, 133, 107, 102, 0, 108, 109, 113, 112, 116, + 126, 131, 134, 137, 138, 141, 130, 0, 0, 142, + 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 53, 0, 0, 206, 145, 0, + 121, 0, 0, 0, 0, 0, 106, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 100, 0, 129, 0, + 139, 120, 151, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 119, 144, 0, 0, 0, + 0, 0, 125, 0, 0, 154, 155, 157, 156, 158, + 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 152, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 110, 0, 140, 0, 150, 103, 0, 0, 0, + 0, 0, 0, 0, 0, 115, 123, 0, 0, 148, + 149, 111, 153, 0, 0, 104, 0, 0, 135, 0, + 147, 0, 0, 0, 0, 0, 0, 0, 127, 118, + 0, 0, 0, 143, 0, 0, 122, 117, 146, 114, + 133, 107, 102, 0, 108, 109, 113, 112, 0, 126, + 131, 134, 137, 138, 141, 0, 136, 0, 101, 0, + 124, 128, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 116, 0, 0, 145, 0, 121, + 0, 130, 0, 0, 142, 132, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 100, 0, 129, 0, 139, + 120, 151, 206, 0, 0, 612, 0, 0, 613, 0, + 0, 106, 0, 0, 119, 144, 0, 0, 0, 0, + 0, 125, 0, 0, 154, 155, 157, 156, 158, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 134, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 106, 0, 124, 0, 132, 102, 0, 122, - 0, 101, 0, 115, 0, 0, 108, 114, 0, 0, - 130, 131, 107, 135, 0, 0, 103, 109, 0, 121, - 0, 129, 0, 0, 119, 0, 0, 125, 120, 117, - 110, 0, 0, 0, 126, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 128, 188, 113, 0, 593, 0, - 0, 594, 0, 0, 105, 0, 0, 0, 0, 0, - 0, 0, 100, 0, 118, 0, 123, 112, 133, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 111, 127, 0, 0, 0, 0, 0, 116, 0, - 0, 136, 137, 139, 138, 140, 104, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 134, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, - 0, 124, 0, 132, 102, 0, 122, 0, 101, 0, - 115, 0, 0, 108, 114, 0, 0, 130, 131, 107, - 135, 0, 0, 103, 109, 440, 121, 0, 129, 0, - 0, 119, 0, 0, 125, 120, 117, 110, 0, 0, - 0, 126, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 128, 188, 113, 439, 0, 0, 0, 0, 0, - 0, 105, 0, 0, 0, 0, 0, 0, 0, 100, - 0, 118, 0, 123, 112, 133, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 111, 127, - 0, 0, 0, 0, 0, 116, 0, 0, 136, 137, - 139, 138, 140, 104, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 134, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 106, 0, 124, 0, - 132, 102, 0, 122, 0, 101, 0, 115, 0, 0, - 108, 114, 0, 0, 130, 131, 107, 135, 0, 0, - 103, 109, 0, 121, 0, 129, 0, 0, 119, 0, - 0, 125, 120, 117, 110, 0, 0, 0, 126, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 128, 98, - 113, 1094, 0, 0, 0, 0, 0, 0, 105, 0, - 0, 0, 0, 0, 0, 0, 100, 0, 118, 0, - 123, 112, 133, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 111, 127, 0, 0, 0, - 0, 0, 116, 0, 0, 136, 137, 139, 138, 140, - 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 134, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 106, 0, 124, 0, 132, 102, 0, - 122, 0, 101, 0, 115, 0, 0, 108, 114, 0, - 0, 130, 131, 107, 135, 0, 0, 103, 109, 0, - 121, 0, 129, 0, 0, 119, 0, 0, 125, 120, - 117, 110, 0, 0, 0, 126, 0, 0, 0, 0, - 0, 0, 0, 53, 0, 128, 98, 113, 0, 0, - 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, - 0, 0, 0, 100, 0, 118, 0, 123, 112, 133, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 111, 127, 0, 0, 0, 0, 0, 116, - 0, 0, 136, 137, 139, 138, 140, 104, 0, 0, + 0, 0, 0, 0, 0, 0, 152, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 110, 0, 140, 0, + 150, 103, 0, 0, 0, 0, 0, 0, 0, 0, + 115, 123, 0, 0, 148, 149, 111, 153, 0, 0, + 104, 0, 0, 135, 0, 147, 0, 0, 0, 0, + 0, 0, 0, 127, 118, 0, 0, 0, 143, 0, + 0, 122, 117, 146, 114, 133, 107, 102, 0, 108, + 109, 113, 112, 0, 126, 131, 134, 137, 138, 141, + 0, 136, 0, 101, 0, 124, 128, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 116, + 459, 0, 145, 0, 121, 0, 130, 0, 0, 142, + 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 100, 0, 129, 0, 139, 120, 151, 206, 0, 458, + 0, 0, 0, 0, 0, 0, 106, 0, 0, 119, + 144, 0, 0, 0, 0, 0, 125, 0, 0, 154, + 155, 157, 156, 158, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 134, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 106, 0, 124, 0, 132, 102, 0, 122, 0, 101, - 0, 115, 0, 0, 108, 114, 0, 0, 130, 131, - 107, 135, 0, 0, 103, 109, 0, 121, 0, 129, - 0, 0, 119, 0, 0, 125, 120, 117, 110, 0, - 0, 0, 126, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 128, 188, 113, 905, 0, 0, 0, 0, - 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, - 100, 0, 118, 0, 123, 112, 133, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, - 127, 0, 0, 0, 0, 0, 116, 0, 0, 136, - 137, 139, 138, 140, 104, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 134, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 106, 0, 124, - 0, 132, 102, 0, 0, 0, 0, 0, 0, 0, - 0, 108, 114, 0, 0, 130, 131, 107, 135, 0, - 0, 103, 0, 0, 121, 0, 129, 0, 122, 0, - 101, 0, 115, 0, 117, 110, 0, 0, 0, 126, - 0, 0, 0, 0, 0, 429, 109, 0, 0, 128, - 0, 113, 0, 119, 0, 0, 125, 120, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 100, 0, 118, - 0, 123, 112, 133, 98, 0, 0, 0, 0, 0, - 0, 0, 0, 105, 0, 0, 111, 127, 0, 0, - 0, 0, 0, 116, 0, 0, 136, 137, 139, 138, - 140, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 134, 0, + 0, 152, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 110, 0, 140, 0, 150, 103, 0, 0, 0, + 0, 0, 0, 0, 0, 115, 123, 0, 0, 148, + 149, 111, 153, 0, 0, 104, 0, 0, 135, 0, + 147, 0, 0, 0, 0, 0, 0, 0, 127, 118, + 136, 0, 101, 143, 124, 128, 122, 117, 146, 114, + 133, 107, 102, 0, 108, 109, 113, 112, 116, 126, + 131, 134, 137, 138, 141, 130, 0, 0, 142, 132, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 98, 145, 1225, 121, + 0, 0, 0, 0, 0, 106, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 100, 0, 129, 0, 139, + 120, 151, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 119, 144, 0, 0, 0, 0, + 0, 125, 0, 0, 154, 155, 157, 156, 158, 105, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 152, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 110, 0, 140, 0, 150, 103, 0, 0, 0, 0, + 0, 0, 0, 0, 115, 123, 0, 0, 148, 149, + 111, 153, 0, 0, 104, 0, 0, 135, 0, 147, + 0, 0, 0, 0, 0, 0, 0, 127, 118, 136, + 0, 101, 143, 124, 128, 122, 117, 146, 114, 133, + 107, 102, 0, 108, 109, 113, 112, 116, 126, 131, + 134, 137, 138, 141, 130, 0, 0, 142, 132, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 53, 0, 0, 98, 145, 0, 121, 0, + 0, 0, 0, 0, 106, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 100, 0, 129, 0, 139, 120, + 151, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 119, 144, 0, 0, 0, 0, 0, + 125, 0, 0, 154, 155, 157, 156, 158, 105, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 152, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, + 0, 140, 0, 150, 103, 0, 0, 0, 0, 0, + 0, 0, 0, 115, 123, 0, 0, 148, 149, 111, + 153, 0, 0, 104, 0, 0, 135, 0, 147, 0, + 0, 0, 0, 0, 0, 0, 127, 118, 136, 0, + 101, 143, 124, 128, 122, 117, 146, 114, 133, 107, + 102, 0, 108, 109, 113, 112, 116, 126, 131, 134, + 137, 138, 141, 130, 0, 0, 142, 132, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 206, 145, 994, 121, 0, 0, + 0, 0, 0, 106, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 100, 0, 129, 0, 139, 120, 151, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 119, 144, 0, 0, 0, 0, 0, 125, + 0, 0, 154, 155, 157, 156, 158, 105, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 152, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 110, 0, + 140, 0, 150, 103, 0, 0, 0, 0, 0, 0, + 0, 0, 115, 123, 0, 0, 148, 149, 111, 153, + 0, 0, 104, 0, 0, 135, 0, 147, 0, 0, + 0, 0, 0, 0, 0, 127, 118, 0, 0, 0, + 143, 0, 0, 122, 117, 146, 114, 133, 107, 102, + 0, 108, 109, 113, 112, 0, 126, 131, 134, 137, + 138, 141, 0, 136, 0, 101, 0, 124, 128, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 448, 116, 0, 0, 145, 0, 121, 0, 130, 0, + 0, 142, 132, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 100, 0, 129, 0, 139, 120, 151, 98, 0, 0, 0, 0, 0, 0, 0, 0, 106, 0, - 124, 0, 132, 102, 0, 122, 0, 101, 0, 115, - 0, 0, 108, 114, 0, 0, 130, 131, 107, 135, - 0, 0, 103, 109, 0, 121, 0, 129, 0, 0, - 119, 0, 0, 125, 120, 117, 110, 0, 0, 0, - 126, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 128, 188, 113, 0, 0, 0, 0, 0, 0, 0, - 105, 0, 0, 0, 0, 0, 0, 0, 100, 0, - 118, 0, 123, 112, 133, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 111, 127, 0, - 0, 0, 0, 0, 116, 0, 0, 136, 137, 139, - 138, 140, 104, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 134, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 106, 0, 124, 0, 132, - 102, 0, 122, 0, 101, 0, 115, 0, 0, 108, - 114, 0, 0, 130, 131, 107, 135, 0, 0, 103, - 109, 0, 121, 0, 129, 0, 0, 119, 0, 0, - 125, 120, 117, 110, 0, 0, 0, 126, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 128, 416, 113, - 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, - 0, 0, 0, 0, 0, 100, 0, 118, 0, 123, - 112, 133, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 111, 127, 0, 0, 0, 0, - 0, 116, 0, 0, 136, 137, 139, 138, 140, 104, + 0, 119, 144, 0, 0, 0, 0, 0, 125, 0, + 0, 154, 155, 157, 156, 158, 105, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 152, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 110, 0, 140, 0, 150, 103, 0, + 0, 0, 0, 0, 0, 0, 0, 115, 123, 0, + 0, 148, 149, 111, 153, 0, 0, 104, 0, 0, + 135, 0, 147, 0, 0, 0, 0, 0, 0, 0, + 127, 118, 136, 0, 101, 143, 124, 128, 122, 117, + 146, 114, 133, 107, 102, 0, 108, 109, 113, 112, + 116, 126, 131, 134, 137, 138, 141, 130, 0, 0, + 142, 132, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 206, 145, + 0, 121, 0, 0, 0, 0, 0, 106, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 100, 0, 129, + 0, 139, 120, 151, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 119, 144, 0, 0, + 0, 0, 0, 125, 0, 0, 154, 155, 157, 156, + 158, 105, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 152, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 110, 0, 140, 0, 150, 103, 0, 0, + 0, 0, 0, 0, 0, 0, 115, 123, 0, 0, + 148, 149, 111, 153, 0, 0, 104, 0, 0, 135, + 0, 147, 0, 0, 0, 0, 0, 0, 0, 127, + 118, 136, 0, 101, 143, 124, 128, 122, 117, 146, + 114, 133, 107, 102, 0, 108, 109, 113, 112, 116, + 126, 131, 134, 137, 138, 141, 130, 0, 0, 142, + 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 435, 145, 0, + 121, 0, 0, 0, 0, 0, 106, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 100, 0, 129, 0, + 139, 120, 151, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 119, 144, 0, 0, 0, + 0, 0, 125, 0, 0, 154, 155, 157, 156, 158, + 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 152, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 110, 0, 140, 0, 150, 103, 0, 0, 0, + 0, 0, 0, 0, 0, 115, 123, 0, 0, 148, + 149, 111, 153, 0, 0, 104, 0, 0, 135, 0, + 147, 0, 0, 0, 0, 0, 0, 0, 127, 118, + 136, 0, 101, 143, 124, 128, 122, 117, 146, 114, + 133, 107, 102, 0, 108, 109, 113, 112, 116, 126, + 131, 134, 137, 138, 141, 130, 0, 0, 142, 132, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 98, 145, 0, 121, + 0, 0, 0, 0, 0, 106, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 100, 0, 129, 0, 139, + 120, 151, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 119, 144, 0, 0, 0, 0, + 0, 125, 0, 0, 154, 155, 157, 156, 158, 105, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 152, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 110, 0, 140, 0, 150, 103, 0, 0, 0, 0, + 0, 0, 0, 0, 115, 123, 0, 0, 148, 149, + 111, 153, 0, 0, 104, 0, 0, 135, 0, 147, + 0, 0, 0, 0, 0, 0, 0, 127, 118, 136, + 0, 101, 143, 124, 128, 122, 117, 146, 114, 133, + 107, 102, 0, 108, 109, 113, 112, 116, 126, 131, + 134, 137, 138, 141, 130, 0, 0, 142, 132, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 333, 145, 0, 121, 0, + 0, 0, 0, 0, 106, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 100, 0, 129, 0, 139, 120, + 151, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 119, 144, 0, 0, 0, 0, 0, + 125, 0, 0, 154, 155, 157, 156, 158, 105, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 152, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, + 0, 140, 0, 150, 103, 0, 0, 0, 0, 0, + 0, 0, 0, 115, 123, 0, 0, 148, 149, 111, + 153, 0, 0, 104, 0, 0, 135, 0, 147, 0, + 0, 0, 0, 0, 0, 0, 127, 118, 136, 0, + 101, 143, 124, 128, 122, 117, 146, 114, 133, 107, + 102, 0, 108, 109, 113, 112, 116, 126, 131, 134, + 137, 138, 141, 130, 0, 0, 142, 132, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1075, 145, 0, 121, 0, 0, + 0, 0, 0, 106, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 100, 0, 129, 0, 139, 120, 151, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 119, 144, 0, 0, 0, 0, 0, 125, + 0, 0, 154, 155, 157, 156, 158, 105, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 152, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 110, 0, + 140, 0, 150, 103, 0, 0, 0, 0, 0, 0, + 0, 0, 115, 123, 0, 0, 148, 149, 111, 153, + 0, 0, 104, 0, 0, 135, 0, 147, 0, 0, + 0, 0, 0, 0, 0, 127, 118, 0, 0, 0, + 143, 0, 0, 122, 117, 146, 114, 133, 107, 102, + 0, 108, 109, 113, 112, 0, 126, 131, 134, 137, + 138, 141, 24, 51, 26, 27, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 145, 0, 121, 0, 0, 46, + 0, 0, 0, 28, 0, 0, 36, 0, 0, 0, + 0, 0, 100, 0, 129, 0, 139, 120, 151, 0, + 0, 0, 0, 37, 0, 0, 53, 0, 0, 0, + 0, 119, 144, 0, 0, 0, 0, 0, 125, 0, + 0, 154, 155, 157, 156, 158, 105, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 134, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 106, 0, 124, 0, 132, 102, 0, 122, - 0, 101, 0, 115, 0, 0, 108, 114, 0, 0, - 130, 131, 107, 135, 0, 0, 103, 109, 0, 121, - 0, 129, 0, 0, 119, 0, 0, 125, 120, 117, - 110, 0, 0, 0, 126, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 128, 98, 113, 0, 0, 0, - 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, - 0, 0, 100, 0, 118, 0, 123, 112, 133, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 111, 127, 0, 0, 0, 0, 0, 116, 0, - 0, 136, 137, 139, 138, 140, 104, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 134, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, - 0, 124, 0, 132, 102, 0, 122, 0, 101, 0, - 115, 0, 0, 108, 114, 0, 0, 130, 131, 107, - 135, 0, 0, 103, 109, 0, 121, 0, 129, 0, - 0, 119, 0, 0, 125, 120, 117, 110, 0, 0, - 0, 126, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 128, 314, 113, 0, 0, 0, 0, 0, 0, - 0, 105, 0, 0, 0, 0, 0, 0, 0, 100, - 0, 118, 0, 123, 112, 133, 0, 0, 24, 51, - 26, 27, 0, 0, 0, 0, 0, 0, 111, 127, - 0, 0, 0, 0, 0, 116, 0, 0, 136, 137, - 139, 138, 140, 104, 0, 46, 0, 0, 0, 28, - 0, 0, 36, 0, 0, 0, 134, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 106, 0, 124, 37, - 132, 102, 53, 0, 0, 0, 0, 0, 0, 0, - 108, 114, 0, 0, 130, 131, 107, 135, 0, 0, - 103, 0, 0, 121, 0, 129, 0, 0, 0, 0, - 0, 0, 0, 117, 110, 0, 0, 0, 126, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, - 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 30, 31, 32, 0, 34, 0, 100, 0, 118, 0, - 123, 112, 133, 0, 0, 0, 35, 47, 39, 0, - 0, 48, 49, 33, 0, 111, 127, 0, 0, 0, - 0, 0, 116, 0, 0, 136, 137, 139, 138, 140, - 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 30, 31, 32, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 35, 47, 39, 0, 0, 48, 49, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 38, 0, 0, 0, 0, 0, 0, 40, 0, 0, - 41, 42, 0, 44, 43, 0, 0, 0, 45, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, + 0, 0, 0, 0, 0, 40, 0, 0, 41, 42, + 0, 44, 43, 0, 0, 0, 45, } var yyPact = [...]int{ - 6812, -1000, -171, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 8286, -1000, -215, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 917, 960, -1000, -1000, -1000, -1000, -1000, 743, + 90, 40, -23, 89, 82, 147, 74, 7773, -1000, -1000, + 24, -1000, -194, -1000, -1000, -198, -1000, -1000, -1000, -1000, + 745, -1000, -1000, -1000, -1000, -1000, 909, 915, 773, 876, + 820, -1000, 40, 7773, 947, 2149, -169, 7932, 38, 72, + 69, 66, 38, -1000, 68, -1000, 34, 593, 34, 7773, + 7773, -108, -16, -1000, -1000, -103, -1000, -1000, -1000, -124, + -1000, -1000, -1000, -1000, -1000, -1000, 7773, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 782, 821, -1000, -1000, -1000, -1000, -1000, 582, - 92, 52, -4, 90, 88, 124, 87, 6602, -1000, -1000, - 39, -1000, -156, -1000, -1000, -139, -1000, -1000, -1000, -1000, - 602, -1000, -1000, -1000, -1000, -1000, 774, 780, 613, 755, - 664, -1000, 52, 6602, 809, 2092, -137, 6729, 49, 85, - 84, 83, 49, -1000, 72, -1000, 45, 478, 45, 6602, - 6602, -62, -13, -1000, -1000, -40, -1000, -1000, -1000, -69, - -1000, -1000, -1000, -1000, -1000, -1000, 6602, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 342, -1000, -1000, -1000, -1000, 560, - 560, -1000, 6602, -1000, -1000, -1000, -1000, -1000, 397, 716, - 4595, 4595, 782, -1000, 602, -1000, -1000, -1000, 697, -1000, - -1000, 267, 6221, 704, 126, 6602, 555, 3040, -1000, -1000, - -1000, 225, 5689, -1000, -1000, -1000, 702, -1000, -1000, -1000, + -1000, -1000, 401, -1000, -1000, -1000, -1000, 713, 713, -1000, + 7773, -1000, -1000, -1000, -1000, -1000, 414, 857, 5281, 5281, + 917, -1000, 745, -1000, -1000, -1000, 844, -1000, -1000, 260, + 7296, 851, 134, 7773, 695, 3233, -1000, -1000, -1000, 201, + 6634, -1000, -1000, -1000, 847, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, @@ -1378,199 +1598,222 @@ var yyPact = [...]int{ -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 779, - 778, 514, -1000, 1201, -1000, -1000, 6602, 237, 476, 455, - 446, 6602, 6602, 6602, 721, 617, 6602, -1000, -1000, 808, - 6602, 6602, -1000, -1000, 804, 807, -1000, -1000, -1000, -1000, - -1000, 804, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 4595, -1000, -1000, 139, -1000, -1000, -1000, -1000, - 817, 161, 278, -1000, 4595, 1350, 560, 560, -1000, -1000, - 108, -1000, -1000, 4806, 4806, 4806, 4806, 4806, 4806, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 914, 913, + 663, -1000, 1957, -1000, -1000, 7773, 258, 573, 568, 566, + 7773, 7773, 7773, 861, 792, 7773, -1000, -1000, 946, 7773, + 7773, -1000, -1000, 943, 945, -1000, -1000, -1000, -1000, -1000, + 943, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 5281, -1000, -1000, 127, -1000, -1000, -1000, -1000, 955, + 171, 545, -1000, 5281, 1475, 713, 713, -1000, -1000, 122, + -1000, -1000, 5528, 5528, 5528, 5528, 5528, 5528, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 560, 122, -1000, 4384, 560, 560, 560, 560, - 560, 560, 4595, 560, 560, 560, 560, 560, 560, 560, - 560, 560, 560, 560, 560, 560, -1000, -1000, 557, -1000, - 256, 774, 397, 664, 5562, 649, -1000, -1000, 595, 6602, - -1000, 6475, 3751, 802, 3040, 555, 4595, 95, -1000, -1000, - -1000, -1000, -121, 560, 37, 227, 611, -54, -1000, -1000, - 565, -1000, 565, 565, 565, 565, -8, -8, -8, -8, - -1000, -1000, -1000, -1000, -1000, 608, -1000, 565, 565, 565, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 607, 607, - 607, 566, 566, 708, 718, 616, 612, 610, -1000, 163, - 546, -1000, -1000, 6602, -1000, 774, -65, -1000, -1000, 257, - 6602, 6602, -1000, -1000, -1000, -1000, 512, 283, -1000, 6602, - -1000, -1000, -1000, 677, 4595, 4595, 347, 4595, 4595, 187, - 4806, 297, 233, 4806, 4806, 4806, 4806, 4806, 4806, 4806, - 4806, 4806, 4806, 4806, 4806, 4806, 4806, 4806, 340, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 437, -1000, 602, - 496, 496, 117, 117, 117, 117, 117, 5006, 1831, 3514, - 397, 4384, 3962, 3962, 4595, 4595, 3962, 727, 235, 283, - 6348, -1000, 397, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 3962, 3962, 3962, 3962, 4595, -1000, -1000, -1000, 716, -1000, - 727, 806, -1000, 689, 688, 3962, -1000, 594, 6475, 560, - -1000, 5435, -1000, 593, -1000, 223, -1000, 116, -1000, -1000, - -1000, -1000, -1000, 782, 4595, -1000, 283, -1000, 435, 560, - 560, 6729, -1000, 37, -1000, -1000, -1000, -1000, -1000, -1000, - 211, 211, -21, -1000, -1000, 211, -1000, -1000, -1000, 753, - 165, 433, 166, 166, -1000, -1000, -1000, 611, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 262, 82, -1000, - 743, -1000, 734, 364, 815, -56, -1000, -1000, 338, -8, - -8, -1000, -1000, 95, 701, 95, 95, 95, 363, -1000, - -1000, -1000, -1000, 333, -1000, -1000, -1000, 324, -1000, -1000, - 708, -1000, 40, -1000, 6602, 6602, 6602, -1000, 174, 214, - 54, 35, 34, 32, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 6602, -1000, -1000, 362, -1000, -1000, -1000, 358, - 4595, -1000, 257, -1000, 4595, -1000, -1000, 674, 187, 199, - -1000, -1000, 300, -1000, -1000, 283, 283, 922, -1000, -1000, - -1000, -1000, 297, 4806, 4806, 4806, 1144, 922, 1422, 484, - 1293, 117, 305, 305, 147, 147, 147, 147, 147, 660, - 660, -1000, -1000, -1000, 397, -1000, -1000, -1000, 397, 3962, - 545, -1000, -1000, 5157, 112, 560, 106, -1000, -1000, 397, - 444, 444, 145, 264, 444, 3962, 266, -1000, 4595, 397, - -1000, 444, 397, 444, 444, -1000, -1000, 6602, -1000, -1000, - -1000, -1000, 585, -1000, 710, 519, 539, -1000, -1000, 4173, - 397, 505, 104, 782, 6475, 4595, 3514, 774, 283, -1000, - 6729, 6729, 397, -1000, 354, -1000, 332, 211, -1000, 700, - 321, 606, 430, 604, 596, 406, 399, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -78, -1000, -1000, - 515, 95, 95, -1000, 184, -1000, -1000, -1000, 475, -1000, - 544, 472, -1000, 211, 211, 560, 560, 560, -1000, 6602, - -1000, -1000, -1000, 389, -16, 582, 386, 6729, -1000, -1000, - -1000, -1000, 283, -1000, 283, -1000, -1000, -1000, -1000, -1000, - -1000, 1144, 922, 1199, -1000, 4806, 4806, -1000, -1000, 444, - 3962, -1000, -1000, 6070, -1000, -1000, 2803, 3962, 3277, -1000, - -1000, -1000, 81, 340, 81, -97, 554, 229, -1000, 4595, - 242, -1000, -1000, -1000, -1000, -1000, -1000, 802, 5943, 731, - -1000, 560, -1000, -1000, 592, 6348, 6348, 774, -1000, 283, - -1000, -1000, 397, 397, 2329, -1000, -1000, -1000, -1000, 332, - -1000, -1000, 6348, 581, 6348, 6348, 580, 567, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 350, 320, -1000, 314, 388, - 194, 6348, 6348, 6348, -1000, -1000, -1000, 696, -1000, -1000, - -1000, -1000, 4806, 922, 922, -1000, -1000, -1000, -1000, 101, - 397, -1000, 397, 565, 565, -1000, 565, 566, -1000, 565, - 17, 565, 15, 397, 397, 560, -94, -1000, 283, 4595, - 787, 542, 790, -1000, -1000, -1000, 725, 1498, 5308, 812, - -1000, 560, -1000, 602, 70, -1000, -1000, -132, 560, -1000, - -1000, -1000, -1000, 442, -1000, 565, 6348, 429, 427, 6348, - 6348, -1000, 486, 424, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 423, 423, 423, 382, 922, 2566, -1000, -1000, -1000, - 71, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 4806, - 397, 306, 283, 784, 777, 5943, 5943, 5943, 5943, -1000, - 661, 657, -1000, 644, 640, 629, 6602, -1000, 416, 1498, - 114, -1000, 5816, -1000, -1000, 6475, 539, 397, 6348, 2329, - 296, -138, -1000, 6348, -1000, 414, -1000, -1000, 410, 396, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 703, - -1000, -1000, -1000, 4595, 4595, 790, 586, 726, -1000, -1000, - -1000, -1000, 656, -1000, 630, -1000, -1000, -1000, -1000, -1000, - 77, 74, 60, -1000, 538, -1000, -1000, -1000, -1000, 394, - -1000, 369, -1000, -1000, 148, 148, -1000, -1000, 148, 68, - 359, 397, 63, -107, 283, 521, 4595, 4595, -1000, -1000, - 560, 560, 560, -138, 2329, 687, 148, -1000, -1000, -1000, - 211, 298, 59, 68, 359, 713, 713, -1000, -1000, 763, - 713, -1000, -1000, 668, -101, -125, 283, 283, 6348, 6348, - 6348, -1000, -1000, 154, 277, -1000, -1000, -1000, -1000, -1000, - 211, 211, 766, -1000, 663, -1000, 380, -1000, 380, 380, - 560, -1000, 388, 388, -1000, -103, -1000, 6348, -1000, -1000, - -1000, -1000, -1000, -108, -1000, -127, -1000, + -1000, 713, 132, -1000, 5034, 713, 713, 713, 713, 713, + 713, 5281, 713, 713, 713, 713, 713, 713, 713, 713, + 713, 713, 713, 713, 713, -1000, -1000, 704, -1000, 356, + 909, 414, 820, 6449, 806, -1000, -1000, 721, 7773, -1000, + 7614, 4046, 940, 3233, 695, 5281, 128, -1000, -1000, -1000, + -1000, -168, 713, 125, 5787, 433, -36, -1000, -1000, 716, + -1000, 716, 716, 716, 716, -12, -12, -12, -12, -1000, + -1000, -1000, -1000, -1000, 776, -1000, 716, 716, 716, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 772, 772, 772, + 735, 735, 853, 850, 789, 788, 785, -1000, 109, 692, + -1000, -1000, 7773, -1000, 909, -112, -1000, -1000, 269, 7773, + 7773, -1000, -1000, -1000, -1000, 618, 284, -1000, 7773, -1000, + -1000, -1000, 827, 5281, 5281, 362, 5281, 5281, 130, 5528, + 313, 252, 5528, 5528, 5528, 5528, 5528, 5528, 5528, 5528, + 5528, 5528, 5528, 5528, 5528, 5528, 5528, 333, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 563, -1000, 745, 507, + 507, 77, 77, 77, 77, 77, 1571, 4293, 3775, 414, + 5034, 4540, 4540, 5281, 5281, 4540, 878, 227, 284, 7455, + -1000, 414, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 4540, + 4540, 4540, 4540, 5281, -1000, -1000, -1000, 857, -1000, 878, + 934, -1000, 837, 836, 4540, -1000, 778, 7614, 713, -1000, + 6264, -1000, 738, -1000, 200, -1000, 131, -1000, -1000, -1000, + -1000, -1000, 917, 5281, -1000, 284, -1000, 561, 713, 713, + 7932, -1000, 125, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 183, + 183, 61, -1000, -1000, 183, 183, 183, 183, 183, -52, + -68, 183, 183, 183, 183, 183, 183, 183, 183, 183, + 183, 183, 183, 183, -1000, -1000, -1000, 894, 156, 542, + 158, 158, -1000, -1000, -1000, 433, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 266, 52, + -1000, 891, -1000, 883, 452, 954, 328, 112, 106, -38, + -1000, -1000, 396, -12, -12, -1000, -1000, -1000, 846, -1000, + -1000, -1000, 451, -1000, -1000, -1000, -1000, 392, -1000, -1000, + -1000, 391, -1000, -1000, 853, -1000, 44, -1000, 7773, 7773, + 7773, -1000, 157, 192, 42, 27, 26, 21, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 7773, -1000, -1000, 446, + -1000, -1000, -1000, 445, 5281, -1000, 269, -1000, 5281, -1000, + -1000, 825, 130, 199, -1000, -1000, 398, -1000, -1000, 284, + 284, 1290, -1000, -1000, -1000, -1000, 313, 5528, 5528, 5528, + 877, 1290, 685, 309, 834, 77, 546, 546, 154, 154, + 154, 154, 154, 636, 636, -1000, -1000, -1000, 414, -1000, + -1000, -1000, 414, 4540, 691, -1000, -1000, 1818, 129, 713, + 126, -1000, -1000, 414, 585, 585, 277, 282, 585, 4540, + 249, -1000, 5281, 414, -1000, 585, 414, 585, 585, -1000, + -1000, 7773, -1000, -1000, -1000, -1000, 671, -1000, 855, 672, + 658, -1000, -1000, 4787, 414, 604, 120, 917, 7614, 5281, + 3775, 909, 284, -1000, 7932, 7932, 414, -1000, 444, -1000, + 328, 183, 183, -1000, 845, 389, 377, 376, 443, 435, + 183, 183, 374, 431, 540, 373, 353, 340, 425, 430, + 217, 417, 415, 411, 8091, 756, 521, 751, 747, 519, + 496, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -125, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 547, -1000, -1000, 195, 601, -1000, 689, + 598, -1000, 183, 183, 713, 713, 713, -1000, 7773, -1000, + -1000, -1000, 493, -13, 743, 483, 7932, -1000, -1000, -1000, + -1000, 284, -1000, 284, -1000, -1000, -1000, -1000, -1000, -1000, + 877, 1290, 609, -1000, 5528, 5528, -1000, -1000, 585, 4540, + -1000, -1000, 7111, -1000, -1000, 2962, 4540, 3504, -1000, -1000, + -1000, 63, 333, 63, -145, 587, 203, -1000, 5281, 303, + -1000, -1000, -1000, -1000, -1000, -1000, 940, 6952, 879, -1000, + 713, -1000, -1000, 774, 7455, 7455, 909, -1000, 284, -1000, + -1000, 414, 414, 2420, -1000, -1000, 328, 328, -1000, -1000, + -1000, -1000, -1000, -1000, 421, 413, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 7455, 742, 7455, + 7455, 741, 740, -1000, 736, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 410, 324, -1000, 306, 515, 185, 7455, 7455, + 7455, -1000, -1000, -1000, 843, -1000, -1000, -1000, -1000, 5528, + 1290, 1290, -1000, -1000, -1000, -1000, 116, 414, -1000, 414, + 716, 716, -1000, 716, 735, -1000, 716, 6, 716, 5, + 414, 414, 713, -141, -1000, 284, 5281, 938, 676, 790, + -1000, -1000, -1000, 872, 5946, 6105, 950, -1000, 713, -1000, + 745, 102, -1000, -1000, -178, 713, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 581, -1000, 716, 7455, 557, 554, 7455, + 7455, 291, -1000, 526, 488, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 551, 551, 551, 455, 1290, 2691, -1000, -1000, + -1000, 83, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 5528, 414, 399, 284, 932, 912, 6952, 6952, 6952, 6952, + -1000, 816, 815, -1000, 804, 800, 808, 7773, -1000, 538, + 5946, 105, -1000, 6793, -1000, -1000, 7614, 658, 414, 7455, + 2420, 292, -163, -1000, 7455, -1000, 525, -1000, -1000, 505, + 502, -1000, 418, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 29, -1000, -1000, -1000, 5281, 5281, 790, 739, + 719, -1000, -1000, -1000, -1000, 814, -1000, 812, -1000, -1000, + -1000, -1000, -1000, 64, 62, 56, -1000, 614, -1000, -1000, + -1000, -1000, 492, -1000, 419, -1000, -1000, 133, 133, -1000, + -1000, -1000, 133, 67, 322, 414, 39, -153, 284, 583, + 5281, 5281, -1000, -1000, 713, 713, 713, -163, 2420, 833, + 133, -1000, -1000, -1000, 183, 314, 80, 67, 322, 860, + 860, -1000, -1000, 899, 860, -1000, -1000, 824, -149, -158, + 284, 284, 7455, 7455, 7455, -1000, -1000, 170, 286, -1000, + -1000, -1000, -1000, -1000, 183, 183, 901, -1000, 823, -1000, + 487, -1000, 487, 487, 713, -1000, 515, 515, -1000, -151, + -1000, 7455, -1000, -1000, -1000, -1000, -1000, -154, -1000, -160, + -1000, } var yyPgo = [...]int{ - 0, 1063, 1061, 1059, 1058, 1056, 1055, 1054, 19, 672, - 1051, 1048, 1046, 1042, 1039, 1036, 1033, 1017, 1016, 1015, - 1013, 1012, 1011, 1010, 1009, 130, 1008, 1004, 1003, 61, - 1002, 63, 1001, 999, 998, 35, 67, 30, 49, 142, - 997, 32, 29, 17, 996, 995, 15, 994, 1142, 993, - 65, 992, 991, 50, 990, 987, 980, 2, 31, 978, - 976, 971, 970, 72, 885, 969, 966, 964, 963, 951, - 935, 48, 11, 23, 10, 28, 934, 106, 18, 933, - 43, 932, 930, 928, 926, 45, 925, 59, 923, 39, - 60, 922, 54, 14, 41, 127, 62, 920, 918, 917, - 546, 914, 321, 370, 911, 51, 908, 37, 0, 12, - 34, 42, 907, 52, 1000, 40, 22, 906, 905, 44, - 3, 26, 903, 24, 902, 901, 897, 896, 895, 894, - 232, 893, 892, 890, 889, 888, 887, 886, 884, 883, - 21, 47, 25, 53, 7, 56, 882, 881, 880, 69, - 16, 879, 877, 876, 875, 869, 46, 868, 75, 36, - 866, 865, 864, 58, 9, 33, 13, 8, 27, 4, - 5, 862, 861, 858, 855, 852, 850, 1, 848, 847, - 55, 838, 836, 57, 6, 834, 832, 831, 115, 337, - 828, 145, + 0, 1249, 1248, 1237, 1229, 1225, 1222, 1220, 53, 855, + 1219, 1217, 1213, 1211, 1206, 1205, 1203, 1202, 1201, 1195, + 1193, 1192, 1191, 1190, 1187, 151, 1180, 1178, 1177, 1176, + 1175, 58, 1168, 72, 1165, 1164, 1163, 36, 120, 39, + 34, 23, 1162, 30, 19, 28, 1161, 1159, 16, 1158, + 1290, 1157, 59, 1156, 1154, 48, 1153, 1152, 1151, 2, + 26, 1150, 1149, 1148, 1147, 67, 274, 1143, 1140, 1138, + 1135, 1134, 1133, 45, 13, 25, 6, 24, 1132, 87, + 17, 1130, 50, 1129, 1127, 1126, 1124, 44, 1123, 57, + 1122, 29, 56, 1121, 47, 14, 40, 113, 60, 1119, + 1118, 1116, 1115, 673, 1114, 367, 375, 1110, 43, 1109, + 32, 0, 12, 35, 46, 1108, 63, 926, 33, 22, + 1107, 1106, 212, 3, 27, 1104, 31, 1103, 1102, 1098, + 1096, 1095, 1094, 15, 1091, 1089, 1088, 1087, 1086, 1085, + 1079, 1076, 1075, 1074, 1073, 1072, 1071, 1070, 1068, 1067, + 1066, 1065, 1061, 1060, 1057, 1055, 1054, 1053, 1052, 1051, + 1049, 1047, 1044, 20, 1042, 1041, 1040, 21, 52, 7, + 49, 1022, 1021, 1020, 69, 41, 1019, 1016, 1014, 1013, + 1012, 42, 1011, 65, 37, 1004, 1001, 1000, 62, 10, + 250, 11, 4, 18, 9, 8, 999, 997, 996, 995, + 994, 992, 1, 988, 987, 51, 973, 972, 55, 5, + 971, 969, 968, 107, 340, 966, 167, } var yyR1 = [...]int{ - 0, 186, 187, 187, 7, 7, 7, 7, 7, 7, + 0, 211, 212, 212, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 9, 10, 10, 11, - 11, 12, 12, 28, 28, 13, 14, 15, 15, 122, - 122, 185, 185, 184, 139, 139, 16, 16, 16, 16, - 16, 16, 16, 16, 176, 176, 177, 177, 172, 170, - 170, 168, 168, 174, 174, 166, 166, 171, 171, 169, - 169, 167, 167, 173, 173, 181, 181, 182, 182, 183, - 183, 145, 145, 144, 144, 143, 143, 146, 146, 146, - 19, 159, 161, 161, 162, 162, 163, 163, 163, 163, - 163, 138, 142, 142, 134, 135, 136, 137, 137, 160, - 160, 160, 156, 113, 113, 124, 124, 124, 178, 178, - 179, 179, 180, 180, 180, 180, 180, 180, 180, 127, - 127, 125, 125, 125, 125, 125, 125, 125, 126, 126, - 126, 126, 126, 128, 128, 128, 128, 128, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 155, 155, 130, 130, 149, 149, 150, 150, - 150, 147, 147, 148, 148, 151, 151, 131, 131, 131, - 131, 131, 132, 152, 140, 140, 140, 141, 141, 153, - 153, 154, 154, 133, 157, 157, 157, 157, 157, 157, - 158, 158, 165, 165, 164, 17, 17, 17, 17, 17, - 17, 17, 17, 18, 18, 18, 54, 54, 1, 20, - 2, 3, 4, 4, 5, 5, 5, 5, 6, 6, - 6, 6, 6, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 34, - 34, 50, 50, 51, 51, 52, 52, 53, 53, 53, - 24, 22, 23, 23, 23, 23, 190, 25, 26, 26, - 27, 27, 27, 31, 31, 31, 29, 29, 30, 30, - 37, 37, 36, 36, 38, 38, 38, 38, 112, 112, - 112, 111, 111, 40, 40, 41, 41, 42, 42, 43, - 43, 43, 55, 44, 44, 44, 44, 118, 118, 117, - 117, 117, 116, 116, 45, 45, 45, 45, 46, 46, - 46, 46, 47, 47, 49, 49, 48, 48, 56, 56, - 56, 56, 57, 57, 58, 58, 39, 39, 39, 39, - 39, 39, 39, 101, 101, 60, 60, 59, 59, 59, - 59, 59, 59, 59, 59, 59, 59, 70, 70, 70, - 70, 70, 70, 61, 61, 61, 61, 61, 61, 61, - 35, 35, 71, 71, 71, 77, 72, 72, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 68, 68, - 68, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 67, 67, 67, 67, 67, 67, 67, 67, 191, 191, - 69, 69, 69, 69, 32, 32, 32, 32, 32, 121, - 121, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 81, 81, 33, 33, 79, 79, - 80, 82, 82, 78, 78, 78, 63, 63, 63, 63, - 63, 63, 63, 65, 65, 65, 83, 83, 84, 84, - 85, 85, 86, 86, 87, 88, 88, 88, 89, 89, - 89, 89, 90, 90, 90, 62, 62, 62, 62, 62, - 62, 91, 91, 91, 91, 92, 92, 73, 73, 75, - 75, 74, 76, 93, 93, 94, 95, 95, 96, 96, - 98, 98, 98, 97, 97, 97, 99, 99, 102, 102, - 103, 103, 100, 100, 104, 104, 104, 104, 104, 104, - 104, 104, 104, 104, 105, 105, 105, 106, 106, 175, - 175, 109, 109, 110, 110, 114, 114, 115, 115, 107, - 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, - 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, - 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, - 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, - 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, - 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, - 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, - 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, - 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, - 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, - 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, - 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, - 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, - 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, - 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, - 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, - 108, 188, 189, 119, 120, 120, 120, + 11, 12, 12, 28, 28, 13, 14, 15, 15, 125, + 125, 210, 210, 209, 138, 138, 16, 16, 16, 16, + 16, 16, 16, 16, 201, 201, 202, 202, 197, 195, + 195, 193, 193, 199, 199, 191, 191, 196, 196, 194, + 194, 192, 192, 198, 198, 206, 206, 207, 207, 208, + 208, 170, 170, 169, 169, 168, 168, 171, 171, 171, + 19, 184, 186, 186, 187, 187, 188, 188, 188, 188, + 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, + 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, + 188, 141, 143, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 156, 157, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 159, 159, 160, 160, 161, 161, 162, 162, 144, + 167, 167, 142, 137, 139, 140, 140, 185, 185, 185, + 181, 116, 116, 127, 127, 127, 203, 203, 204, 204, + 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, + 130, 130, 128, 128, 128, 128, 128, 128, 128, 129, + 129, 129, 129, 129, 131, 131, 131, 131, 131, 132, + 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, + 132, 132, 132, 180, 180, 133, 133, 174, 174, 175, + 175, 175, 172, 172, 173, 173, 176, 176, 134, 134, + 134, 134, 134, 30, 29, 29, 29, 101, 101, 101, + 177, 163, 163, 163, 136, 164, 164, 165, 165, 165, + 166, 166, 166, 178, 178, 179, 179, 135, 182, 182, + 182, 182, 182, 182, 183, 183, 190, 190, 189, 17, + 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, + 56, 56, 1, 20, 2, 3, 4, 4, 5, 5, + 5, 5, 6, 6, 6, 6, 6, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 36, 36, 52, 52, 53, 53, 54, + 54, 55, 55, 55, 24, 22, 23, 23, 23, 23, + 215, 25, 26, 26, 27, 27, 27, 33, 33, 33, + 31, 31, 32, 32, 39, 39, 38, 38, 40, 40, + 40, 40, 115, 115, 115, 114, 114, 42, 42, 43, + 43, 44, 44, 45, 45, 45, 57, 46, 46, 46, + 46, 121, 121, 120, 120, 120, 119, 119, 47, 47, + 47, 47, 48, 48, 48, 48, 49, 49, 51, 51, + 50, 50, 58, 58, 58, 58, 59, 59, 60, 60, + 41, 41, 41, 41, 41, 41, 41, 104, 104, 62, + 62, 61, 61, 61, 61, 61, 61, 61, 61, 61, + 61, 72, 72, 72, 72, 72, 72, 63, 63, 63, + 63, 63, 63, 63, 37, 37, 73, 73, 73, 79, + 74, 74, 66, 66, 66, 66, 66, 66, 66, 66, + 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, + 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, + 66, 66, 70, 70, 70, 68, 68, 68, 68, 68, + 68, 68, 68, 68, 69, 69, 69, 69, 69, 69, + 69, 69, 216, 216, 71, 71, 71, 71, 34, 34, + 34, 34, 34, 124, 124, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 83, 83, + 35, 35, 81, 81, 82, 84, 84, 80, 80, 80, + 65, 65, 65, 65, 65, 65, 65, 67, 67, 67, + 85, 85, 86, 86, 87, 87, 88, 88, 89, 90, + 90, 90, 91, 91, 91, 91, 92, 92, 92, 64, + 64, 64, 64, 64, 64, 93, 93, 93, 93, 94, + 94, 75, 75, 77, 77, 76, 78, 95, 95, 96, + 97, 97, 98, 98, 100, 100, 100, 99, 99, 99, + 102, 102, 105, 105, 106, 106, 103, 103, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 108, 108, + 108, 109, 109, 200, 200, 112, 112, 113, 113, 117, + 117, 118, 118, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 111, 111, 111, 111, 111, + 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, + 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, + 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, + 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, + 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, + 111, 111, 111, 111, 213, 214, 122, 123, 123, 123, } var yyR2 = [...]int{ @@ -1584,51 +1827,59 @@ var yyR2 = [...]int{ 2, 0, 2, 3, 3, 0, 1, 1, 2, 4, 4, 0, 1, 0, 1, 1, 2, 1, 1, 1, 4, 4, 0, 1, 1, 2, 1, 1, 1, 1, - 1, 3, 1, 1, 3, 3, 4, 1, 1, 1, - 3, 3, 3, 1, 1, 3, 1, 1, 0, 1, - 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 3, 3, 4, 3, 3, 4, 4, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 1, 1, 3, 3, 4, 1, 1, 1, 3, 3, + 3, 1, 1, 3, 1, 1, 0, 1, 1, 2, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, + 2, 2, 2, 2, 1, 2, 2, 2, 1, 3, + 3, 2, 2, 2, 2, 2, 2, 1, 1, 1, + 1, 1, 4, 1, 3, 0, 3, 0, 5, 0, + 3, 5, 0, 1, 0, 1, 1, 2, 2, 2, + 2, 2, 2, 3, 1, 3, 4, 1, 1, 1, + 1, 0, 3, 3, 2, 0, 2, 2, 2, 2, + 2, 2, 2, 2, 1, 2, 1, 2, 5, 7, + 6, 6, 7, 7, 1, 1, 1, 3, 2, 6, + 7, 7, 7, 9, 7, 7, 7, 4, 5, 4, + 1, 3, 3, 3, 2, 2, 3, 4, 2, 3, + 2, 2, 4, 4, 3, 6, 3, 6, 5, 5, + 3, 3, 5, 6, 3, 3, 3, 5, 3, 3, + 3, 3, 3, 0, 3, 0, 2, 0, 1, 1, + 1, 0, 2, 2, 4, 2, 2, 2, 2, 2, + 0, 2, 0, 2, 1, 2, 2, 0, 1, 1, + 0, 1, 0, 1, 0, 1, 1, 3, 1, 2, + 3, 5, 0, 1, 2, 1, 1, 0, 2, 1, + 3, 1, 1, 1, 3, 3, 3, 3, 5, 5, + 3, 0, 1, 0, 1, 2, 1, 1, 1, 2, + 2, 1, 2, 3, 2, 3, 2, 2, 2, 1, + 1, 3, 0, 5, 5, 5, 1, 3, 0, 2, + 1, 3, 3, 2, 3, 1, 2, 0, 3, 1, + 1, 3, 3, 4, 4, 5, 3, 4, 5, 6, + 2, 1, 2, 1, 2, 1, 2, 1, 1, 1, + 1, 1, 1, 1, 0, 2, 1, 1, 1, 3, + 1, 3, 1, 1, 1, 1, 1, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 2, 2, 2, 2, 2, 3, 1, 1, + 1, 1, 4, 5, 6, 4, 4, 6, 6, 6, + 9, 7, 5, 4, 2, 2, 2, 2, 2, 2, + 2, 2, 0, 2, 4, 4, 4, 4, 0, 3, + 4, 7, 3, 1, 1, 2, 3, 3, 1, 2, + 2, 1, 2, 1, 2, 2, 1, 2, 0, 1, + 0, 2, 1, 2, 4, 0, 2, 1, 3, 5, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, - 2, 2, 2, 1, 2, 2, 2, 1, 4, 4, - 2, 2, 3, 3, 3, 3, 1, 1, 1, 1, - 1, 4, 1, 3, 0, 3, 0, 5, 0, 3, - 5, 0, 1, 0, 1, 1, 2, 2, 2, 2, - 2, 2, 3, 1, 0, 3, 3, 0, 2, 2, - 1, 2, 1, 2, 5, 7, 6, 6, 7, 7, - 1, 1, 1, 3, 2, 6, 7, 7, 7, 9, - 7, 7, 7, 4, 5, 4, 1, 3, 3, 3, - 2, 2, 3, 4, 2, 3, 2, 2, 4, 4, - 3, 6, 3, 6, 5, 5, 3, 3, 5, 6, - 3, 3, 3, 5, 3, 3, 3, 3, 3, 0, - 3, 0, 2, 0, 1, 1, 1, 0, 2, 2, - 4, 2, 2, 2, 2, 2, 0, 2, 0, 2, - 1, 2, 2, 0, 1, 1, 0, 1, 0, 1, - 0, 1, 1, 3, 1, 2, 3, 5, 0, 1, - 2, 1, 1, 0, 2, 1, 3, 1, 1, 1, - 3, 3, 3, 3, 5, 5, 3, 0, 1, 0, - 1, 2, 1, 1, 1, 2, 2, 1, 2, 3, - 2, 3, 2, 2, 2, 1, 1, 3, 0, 5, - 5, 5, 1, 3, 0, 2, 1, 3, 3, 2, - 3, 1, 2, 0, 3, 1, 1, 3, 3, 4, - 4, 5, 3, 4, 5, 6, 2, 1, 2, 1, - 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, - 0, 2, 1, 1, 1, 3, 1, 3, 1, 1, - 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, - 2, 2, 2, 3, 1, 1, 1, 1, 4, 5, - 6, 4, 4, 6, 6, 6, 9, 7, 5, 4, - 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, - 4, 4, 4, 4, 0, 3, 4, 7, 3, 1, - 1, 2, 3, 3, 1, 2, 2, 1, 2, 1, - 2, 2, 1, 2, 0, 1, 0, 2, 1, 2, - 4, 0, 2, 1, 3, 5, 1, 1, 1, 1, - 1, 1, 1, 1, 2, 2, 0, 3, 0, 2, - 0, 3, 1, 3, 2, 0, 1, 1, 0, 2, - 4, 4, 0, 2, 4, 2, 1, 3, 5, 4, - 6, 1, 3, 3, 5, 0, 5, 1, 3, 1, - 2, 3, 1, 1, 3, 3, 1, 3, 3, 3, - 1, 2, 1, 1, 1, 1, 1, 1, 0, 2, - 0, 3, 0, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, + 0, 3, 0, 2, 0, 3, 1, 3, 2, 0, + 1, 1, 0, 2, 4, 4, 0, 2, 4, 2, + 1, 3, 5, 4, 6, 1, 3, 3, 5, 0, + 5, 1, 3, 1, 2, 3, 1, 1, 3, 3, + 1, 3, 3, 3, 1, 2, 1, 1, 1, 1, + 1, 1, 0, 2, 0, 3, 0, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, + 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -1646,261 +1897,290 @@ var yyR2 = [...]int{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 0, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, } var yyChk = [...]int{ - -1000, -186, -7, -8, -12, -13, -14, -15, -16, -17, + -1000, -211, -7, -8, -12, -13, -14, -15, -16, -17, -18, -1, -20, -21, -24, -22, -2, -3, -4, -5, -6, -23, -9, -10, 6, -28, 8, 9, 37, -19, - 118, 119, 120, 141, 122, 134, 40, 57, 218, 136, - 225, 228, 229, 232, 231, 236, 33, 135, 139, 140, - -188, 7, 201, 60, -187, 242, -85, 14, -27, 5, - -25, -190, -25, -25, -25, -25, -159, 60, 193, -175, - 21, 25, 125, 26, -100, 129, 125, 126, 193, 125, - 125, 187, 118, 182, 220, -51, 222, 223, 189, 125, - 224, 185, 221, 184, 63, 39, 125, -114, 63, -108, - 207, 19, 142, 161, 241, 72, 137, 157, 151, 35, - 175, 226, 212, 191, 152, 21, 233, 174, 209, 42, - 46, 164, 17, 211, 139, 45, 179, 227, 189, 166, - 155, 156, 141, 213, 127, 158, 236, 237, 239, 238, - 240, -119, -119, 66, 211, -119, 230, -119, -119, 237, - 239, 238, 240, 241, -119, -119, -119, -119, -8, -89, - 16, 15, -11, -9, -188, 6, 28, 29, -31, 47, - 48, -26, -100, -48, -114, 10, -95, -122, -96, 234, - 233, -110, -98, -109, -107, 165, 162, 235, 63, -108, - 78, 30, 32, 177, 81, 148, 113, 170, 15, 82, - 159, 112, 190, 202, 118, 55, 194, 195, 192, 193, - 182, 153, 36, 9, 33, 135, 29, 106, 120, 85, - 86, 220, 138, 31, 136, 75, 18, 58, 10, 39, - 12, 13, 130, 129, 97, 126, 53, 7, 146, 147, - 114, 34, 94, 49, 27, 51, 95, 16, 196, 197, - 38, 173, 169, 206, 172, 145, 168, 108, 56, 43, - 79, 73, 154, 76, 59, 140, 77, 14, 54, 223, - 132, 222, 150, 96, 121, 201, 52, 6, 205, 37, - 134, 144, 50, 125, 183, 171, 143, 167, 84, 128, - 74, 224, 5, 26, 180, 8, 57, 131, 198, 199, - 200, 41, 163, 160, 221, 210, 83, 11, 181, 214, - 219, -160, -156, -113, 63, -108, -103, 130, 126, 126, - 126, -103, 125, -102, 130, 63, -102, -48, -48, 186, - 125, 193, -119, -119, 183, -52, 190, 191, -119, -119, - -119, 189, -119, -119, -119, -119, -119, -48, -119, 66, - -119, -74, -188, -74, -119, -48, -119, -189, 62, -90, - 18, 38, -39, -59, 79, -64, 36, 31, -63, -60, - -78, -76, -77, 113, 102, 103, 110, 80, 114, -68, - -66, -67, -69, 65, 64, 66, 67, 68, 69, 73, - 74, 75, -109, -114, -74, -188, 51, 52, 202, 203, - 206, 204, 82, 41, 192, 200, 199, 198, 196, 197, - 194, 195, 130, 193, 108, 201, 63, -108, -86, -87, - -39, -85, -8, -25, 43, -29, 29, 71, -49, 34, - -48, 37, 115, -48, 61, -95, 87, -97, -109, 65, - 36, 37, 15, 15, 62, 61, -124, -127, -129, -128, - -125, -126, 159, 160, 113, 163, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 137, 155, 156, 157, - 158, 142, 143, 144, 145, 146, 147, 148, 150, 151, - 152, 153, 154, -114, 79, 63, 63, 63, -48, -48, - -54, -48, 31, 59, -114, -34, 10, -48, -48, -50, - 10, 10, -50, -119, -119, -119, -72, -39, -119, -105, - 128, 30, 8, 97, 78, 77, 94, 61, 17, -39, - -61, 97, 79, 95, 96, 81, 99, 98, 109, 102, - 103, 104, 105, 106, 107, 108, 100, 101, 112, 87, - 88, 89, 90, 91, 92, 93, -101, -188, -77, -188, - 116, 117, -64, -64, -64, -64, -64, -64, -188, 115, - -8, -188, -188, -188, -188, -188, -188, -188, -81, -39, - -188, -191, -188, -191, -191, -191, -191, -191, -191, -191, - -188, -188, -188, -188, 61, -88, 32, 33, -89, -189, - -31, -65, -109, 66, 69, -30, 50, -62, 37, 41, - -8, -188, -48, -93, -94, -78, -109, -114, -115, -114, - -107, 162, 165, -58, 11, -96, -39, -141, 112, 216, - 217, -188, -161, -162, -163, -134, -135, -136, -137, -138, - 72, 226, -145, 233, 227, 177, 36, -156, -157, 132, - 26, -158, 21, 25, 126, 27, -178, -179, -180, -151, - -131, -152, -153, -154, -133, -132, 73, 79, 36, 177, - 132, 27, 26, 72, 59, -147, 180, -130, 60, -130, - -130, -130, -130, -140, 162, -140, -140, -140, 60, -130, - -130, -130, -149, 60, -149, -149, -150, 60, -150, -181, - -182, -183, -145, 31, 59, 59, 59, -104, 121, 226, - 202, 123, 120, 124, 119, 177, 162, 72, 36, 14, - 213, 63, 61, -48, -89, 188, -119, -119, -53, 95, - 11, -48, -48, -119, 61, -189, -48, 45, -39, -39, - -70, 73, 79, 74, 75, -39, -39, -64, -71, -74, - -77, 70, 97, 95, 96, 81, -64, -64, -64, -64, - -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, - -64, -121, 63, 65, 63, -63, -63, -109, -37, 29, - -36, -38, 104, -39, -114, -110, -115, -107, -189, -8, - -36, -36, -39, -39, -36, -29, -79, -80, 83, -109, - -189, -36, -37, -36, -36, -87, -90, -99, 18, 10, - 41, 41, -36, -92, 59, -93, -73, -75, -74, -188, - -8, -91, -109, -58, 61, 87, 115, -85, -39, 63, - -188, -188, -113, -163, -144, 87, -144, -143, 165, 162, - -144, 27, -158, 63, 63, -158, -158, -180, 73, 65, - 66, 67, 73, 192, 27, 27, 65, 8, -148, 181, - 66, -140, -140, -141, 37, -141, -141, -141, -155, 65, - 66, 66, -183, 112, -143, -48, -48, -48, -119, -105, - -106, 126, 27, 87, 128, 133, 133, 133, -48, -119, - 65, 65, -39, -53, -39, -119, 46, 73, 74, 75, - -71, -64, -64, -64, -35, 138, 78, -189, -189, -36, - 61, -112, -111, 30, -109, 65, 115, -188, 115, -189, - -189, -189, 61, 131, 30, -189, -36, -82, -80, 85, - -39, -189, -189, -189, -189, -189, -48, -40, 10, 35, - -92, 61, -189, -189, -189, 61, 115, -85, -94, -39, - -110, -89, -113, -113, -189, 65, -142, 63, 65, -144, - 37, 66, 60, 63, 60, 60, 63, 63, 192, 62, - -141, -141, 63, 113, 62, 61, 61, 62, 61, -144, - -144, -188, -188, -188, -48, -119, 63, 162, -159, 63, - -156, -35, 78, -64, -64, -189, -38, -111, 104, -115, - -37, -110, -123, 113, 159, 137, 157, 153, 174, 164, - 179, 155, 180, -121, -123, 207, -85, 86, -39, 84, - -58, -41, -42, -43, -44, -55, -77, -188, -48, 27, - -75, 41, -8, -188, -109, -109, -89, -189, -189, -120, - -188, -110, -142, -165, -164, -109, 60, -165, -165, 60, - 60, 65, 66, 66, -177, 63, 36, -146, 63, 113, - 36, -165, -165, -165, 37, -64, 115, -189, -189, -130, - -130, -130, -150, -130, 147, -130, 147, -189, -189, -188, - -33, 205, -39, -83, 12, 61, -45, -46, -47, 49, - 53, 55, 50, 51, 52, 56, -118, 30, -41, -188, - -117, -116, 30, -114, 65, 8, -73, -8, 115, -139, - 215, -188, 62, 61, -130, -165, 62, 62, -165, -165, - 62, 62, -189, -189, -189, 63, 104, -140, 63, -64, - -189, 65, -84, 13, 15, -42, -43, -42, -43, 49, - 49, 49, 54, 49, 54, 49, -46, -114, -189, -56, - 57, 129, 58, -116, -93, -189, -109, -120, 66, -185, - -184, 214, -164, 62, -168, -168, 62, 62, -168, -166, - -169, -32, 97, 210, -39, -72, 59, 59, 49, 49, - 126, 126, 126, 61, -189, 63, -168, -174, -170, -172, - 22, 72, 131, -166, -169, -167, -167, -171, -170, 210, - -167, -170, -189, 208, 56, 211, -39, -39, -188, -188, - -188, -184, -120, 41, -144, 65, -176, 216, 20, -173, - 38, 19, 24, 46, 209, 212, -57, -109, -57, -57, - 97, 66, -144, -144, 23, 46, -189, 61, -189, -189, - -74, -177, -177, 210, -109, 211, 212, + 118, 119, 120, 141, 122, 134, 40, 57, 252, 136, + 259, 262, 263, 266, 265, 270, 33, 135, 139, 140, + -213, 7, 235, 60, -212, 276, -87, 14, -27, 5, + -25, -215, -25, -25, -25, -25, -184, 60, 227, -200, + 21, 25, 125, 26, -103, 129, 125, 126, 227, 125, + 125, 221, 118, 216, 254, -53, 256, 257, 223, 125, + 258, 219, 255, 218, 63, 39, 125, -117, 63, -111, + 241, 19, 188, 142, 161, 275, 72, 187, 190, 191, + 137, 157, 193, 192, 185, 151, 35, 183, 175, 260, + 246, 225, 182, 152, 21, 267, 195, 174, 22, 243, + 42, 196, 46, 186, 197, 164, 17, 198, 199, 245, + 139, 200, 45, 179, 261, 223, 184, 166, 155, 156, + 141, 247, 127, 158, 270, 271, 273, 272, 274, -122, + -122, 66, 245, -122, 264, -122, -122, 271, 273, 272, + 274, 275, -122, -122, -122, -122, -8, -91, 16, 15, + -11, -9, -213, 6, 28, 29, -33, 47, 48, -26, + -103, -50, -117, 10, -97, -125, -98, 268, 267, -113, + -100, -112, -110, 165, 162, 269, 63, -111, 78, 30, + 32, 177, 81, 148, 113, 170, 15, 82, 159, 112, + 224, 189, 236, 118, 55, 228, 229, 226, 227, 216, + 153, 36, 9, 33, 135, 29, 106, 120, 85, 86, + 254, 138, 31, 136, 75, 18, 58, 10, 39, 12, + 13, 130, 129, 97, 126, 53, 7, 146, 147, 114, + 34, 94, 49, 27, 51, 95, 16, 230, 231, 38, + 173, 169, 240, 172, 145, 168, 108, 56, 43, 79, + 73, 154, 76, 59, 140, 77, 14, 54, 257, 132, + 256, 150, 96, 121, 235, 52, 6, 239, 37, 134, + 144, 50, 125, 217, 171, 143, 167, 84, 128, 74, + 258, 5, 26, 180, 8, 57, 131, 232, 233, 234, + 41, 163, 160, 255, 244, 83, 11, 181, 248, 253, + -185, -181, -116, 63, -111, -106, 130, 126, 126, 126, + -106, 125, -105, 130, 63, -105, -50, -50, 220, 125, + 227, -122, -122, 217, -54, 224, 225, -122, -122, -122, + 223, -122, -122, -122, -122, -122, -50, -122, 66, -122, + -76, -213, -76, -122, -50, -122, -214, 62, -92, 18, + 38, -41, -61, 79, -66, 36, 31, -65, -62, -80, + -78, -79, 113, 102, 103, 110, 80, 114, -70, -68, + -69, -71, 65, 64, 66, 67, 68, 69, 73, 74, + 75, -112, -117, -76, -213, 51, 52, 236, 237, 240, + 238, 82, 41, 226, 234, 233, 232, 230, 231, 228, + 229, 130, 227, 108, 235, 63, -111, -88, -89, -41, + -87, -8, -25, 43, -31, 29, 71, -51, 34, -50, + 37, 115, -50, 61, -97, 87, -99, -112, 65, 36, + 37, 15, 15, 62, 61, -127, -130, -132, -131, -128, + -129, 159, 160, 113, 163, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 137, 155, 156, 157, 158, + 142, 143, 144, 145, 146, 147, 148, 150, 151, 152, + 153, 154, -117, 79, 63, 63, 63, -50, -50, -56, + -50, 31, 59, -117, -36, 10, -50, -50, -52, 10, + 10, -52, -122, -122, -122, -74, -41, -122, -108, 128, + 30, 8, 97, 78, 77, 94, 61, 17, -41, -63, + 97, 79, 95, 96, 81, 99, 98, 109, 102, 103, + 104, 105, 106, 107, 108, 100, 101, 112, 87, 88, + 89, 90, 91, 92, 93, -104, -213, -79, -213, 116, + 117, -66, -66, -66, -66, -66, -66, -213, 115, -8, + -213, -213, -213, -213, -213, -213, -213, -83, -41, -213, + -216, -213, -216, -216, -216, -216, -216, -216, -216, -213, + -213, -213, -213, 61, -90, 32, 33, -91, -214, -33, + -67, -112, 66, 69, -32, 50, -64, 37, 41, -8, + -213, -50, -95, -96, -80, -112, -117, -118, -117, -110, + 162, 165, -60, 11, -98, -41, -164, 112, 250, 251, + -213, -186, -187, -188, -142, -137, -139, -140, -141, -143, + -144, -145, -146, -147, -148, -149, -150, -151, -152, -153, + -154, -155, -156, -157, -158, -159, -160, -161, -162, 72, + 260, -170, 267, 261, 177, 188, 40, 189, 190, 191, + 126, 193, 194, 195, 22, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 36, -181, -182, 132, 26, -183, + 21, 25, 126, 27, -203, -204, -205, -176, -134, -177, + -178, -179, -135, -30, -136, -165, -166, 73, 79, 36, + 177, 132, 27, 26, 72, 59, 112, 187, 184, -172, + 180, -133, 60, -133, -133, -133, -133, -163, 162, -163, + -163, -163, 60, -133, -133, -133, -174, 60, -174, -174, + -175, 60, -175, -206, -207, -208, -170, 31, 59, 59, + 59, -107, 121, 260, 236, 123, 120, 124, 119, 177, + 162, 72, 36, 14, 247, 63, 61, -50, -91, 222, + -122, -122, -55, 95, 11, -50, -50, -122, 61, -214, + -50, 45, -41, -41, -72, 73, 79, 74, 75, -41, + -41, -66, -73, -76, -79, 70, 97, 95, 96, 81, + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -124, 63, 65, 63, -65, + -65, -112, -39, 29, -38, -40, 104, -41, -117, -113, + -118, -110, -214, -8, -38, -38, -41, -41, -38, -31, + -81, -82, 83, -112, -214, -38, -39, -38, -38, -89, + -92, -102, 18, 10, 41, 41, -38, -94, 59, -95, + -75, -77, -76, -213, -8, -93, -112, -60, 61, 87, + 115, -87, -41, 63, -213, -213, -116, -188, -169, 87, + -169, 112, -168, 165, 162, -169, -169, -169, -169, -169, + 192, 192, -169, -169, -169, -169, -169, -169, -169, -169, + -169, -169, -169, -169, -169, 27, -183, 63, 63, -183, + -183, -205, 73, 65, 66, 67, 73, 226, 27, 27, + 65, 8, -167, 63, 65, 182, 183, 36, 36, 185, + 186, -173, 181, 66, -163, -163, 37, -180, 65, 66, + 66, -208, 112, -168, -50, -50, -50, -122, -108, -109, + 126, 27, 87, 128, 133, 133, 133, -50, -122, 65, + 65, -41, -55, -41, -122, 46, 73, 74, 75, -73, + -66, -66, -66, -37, 138, 78, -214, -214, -38, 61, + -115, -114, 30, -112, 65, 115, -213, 115, -214, -214, + -214, 61, 131, 30, -214, -38, -84, -82, 85, -41, + -214, -214, -214, -214, -214, -50, -42, 10, 35, -94, + 61, -214, -214, -214, 61, 115, -87, -96, -41, -113, + -91, -116, -116, -214, 65, -167, -169, -169, 37, 66, + 66, 66, 65, 65, -169, -169, 66, 65, 63, 66, + 66, 66, 66, 36, 65, 36, 183, 182, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 66, + 36, 66, 36, 66, 36, 63, -111, 60, 63, 60, + 60, 63, 63, -29, -101, 226, 230, 231, 62, 63, + 113, 62, 61, 61, 62, 61, -169, -169, -213, -213, + -213, -50, -122, 63, 162, -184, 63, -181, -37, 78, + -66, -66, -214, -40, -114, 104, -118, -39, -113, -126, + 113, 159, 137, 157, 153, 174, 164, 179, 155, 180, + -124, -126, 241, -87, 86, -41, 84, -60, -43, -44, + -45, -46, -57, -79, -213, -50, 27, -77, 41, -8, + -213, -112, -112, -91, -214, -214, -123, -213, -113, -167, + -167, 65, 65, -190, -189, -112, 60, -190, -190, 60, + 60, 60, 65, 66, 66, -202, 63, 36, -171, 63, + 113, 36, -190, -190, -190, 37, -66, 115, -214, -214, + -133, -133, -133, -175, -133, 147, -133, 147, -214, -214, + -213, -35, 239, -41, -85, 12, 61, -47, -48, -49, + 49, 53, 55, 50, 51, 52, 56, -121, 30, -43, + -213, -120, -119, 30, -117, 65, 8, -75, -8, 115, + -138, 249, -213, 62, 61, -133, -190, 62, 62, -190, + -190, 62, 66, 62, 62, -214, -214, -214, 63, 104, + -163, 63, -66, -214, 65, -86, 13, 15, -44, -45, + -44, -45, 49, 49, 49, 54, 49, 54, 49, -48, + -117, -214, -58, 57, 129, 58, -119, -95, -214, -112, + -123, 66, -210, -209, 248, -189, 62, -193, -193, 62, + 62, 62, -193, -191, -194, -34, 97, 244, -41, -74, + 59, 59, 49, 49, 126, 126, 126, 61, -214, 63, + -193, -199, -195, -197, 22, 72, 131, -191, -194, -192, + -192, -196, -195, 244, -192, -195, -214, 242, 56, 245, + -41, -41, -213, -213, -213, -209, -123, 41, -169, 65, + -201, 250, 20, -198, 38, 19, 24, 46, 243, 246, + -59, -112, -59, -59, 97, 66, -169, -169, 23, 46, + -214, 61, -214, -214, -76, -202, -202, 244, -112, 245, + 246, } var yyDef = [...]int{ 0, -2, 2, -2, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 480, 0, 266, 266, 266, 266, 266, 0, - 549, 532, 0, 0, 0, 253, 0, 0, 723, 723, - 0, 723, 0, 723, 723, 0, 723, 723, 723, 723, - 0, 33, 34, 721, 1, 3, 488, 0, 0, 270, - 273, 268, 532, 0, 0, 0, 46, 0, 530, 0, - 0, 0, 530, 550, 0, 533, 528, 0, 528, 0, - 0, 0, 0, 723, 723, 0, 723, 723, 723, 0, - 723, 723, 723, 723, 723, 254, 0, 261, 555, 556, - 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, - 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, - 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, - 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, - 720, 220, 221, 723, 0, 224, 723, 226, 227, 0, - 0, 723, 0, 723, 262, 263, 264, 265, 27, 492, - 0, 0, 480, 29, 0, 266, 271, 272, 276, 274, - 275, 267, 0, 0, 326, 0, 37, 0, 516, 39, - -2, 0, 0, 553, 554, -2, 570, 522, 551, 552, - 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, - 569, 572, 573, 574, 575, 576, 577, 578, 579, 580, - 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, - 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, - 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, - 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, - 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, - 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, - 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, - 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, - 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, - 671, 672, 673, 674, 675, 676, 677, 678, 679, 0, - 0, 0, 109, 0, 113, 114, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 218, 219, 249, - 0, 0, 236, 237, 251, 0, 255, 256, 240, 241, - 242, 251, 244, 245, 246, 247, 248, 723, 222, 723, - 225, 723, 0, 723, 230, 544, 232, 28, 722, 23, - 0, 0, 489, 336, 0, 341, 343, 0, 378, 379, - 380, 381, 382, 0, 0, 0, 0, 0, 0, 404, - 405, 406, 407, 466, 467, 468, 469, 470, 471, 472, - 345, 346, 463, 0, 512, 0, 0, 0, 0, 0, - 0, 0, 454, 0, 428, 428, 428, 428, 428, 428, - 428, 428, 0, 0, 0, 0, -2, -2, 481, 482, - 485, 488, 27, 273, 0, 278, 277, 269, 0, 0, - 325, 0, 0, 334, 0, 38, 0, 187, 523, 524, - 525, 521, 0, 0, -2, 0, 118, 171, 116, 117, - 164, 130, 164, 164, 164, 164, 184, 184, 184, 184, - 156, 157, 158, 159, 160, 0, 143, 164, 164, 164, - 147, 131, 132, 133, 134, 135, 136, 137, 166, 166, - 166, 168, 168, -2, 0, 0, 0, 0, 90, 0, - 213, 216, 529, 0, 215, 488, 0, 723, 723, 257, - 0, 0, 723, 260, 223, 228, 0, 376, 229, 0, - 545, 546, 493, 0, 0, 0, 0, 0, 0, 339, + 21, 22, 554, 0, 340, 340, 340, 340, 340, 0, + 623, 606, 0, 0, 0, 327, 0, 0, 816, 816, + 0, 816, 0, 816, 816, 0, 816, 816, 816, 816, + 0, 33, 34, 814, 1, 3, 562, 0, 0, 344, + 347, 342, 606, 0, 0, 0, 46, 0, 604, 0, + 0, 0, 604, 624, 0, 607, 602, 0, 602, 0, + 0, 0, 0, 816, 816, 0, 816, 816, 816, 0, + 816, 816, 816, 816, 816, 328, 0, 335, 629, 630, + 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, + 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, + 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, + 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, + 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, + 805, 806, 807, 808, 809, 810, 811, 812, 813, 294, + 295, 816, 0, 298, 816, 300, 301, 0, 0, 816, + 0, 816, 336, 337, 338, 339, 27, 566, 0, 0, + 554, 29, 0, 340, 345, 346, 350, 348, 349, 341, + 0, 0, 400, 0, 37, 0, 590, 39, -2, 0, + 0, 627, 628, -2, 644, 596, 625, 626, 633, 634, + 635, 636, 637, 638, 639, 640, 641, 642, 643, 646, + 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, + 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, + 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, + 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, + 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, + 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, + 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, + 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, + 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, + 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, + 747, 748, 749, 750, 751, 752, 753, 754, 0, 0, + 0, 167, 0, 171, 172, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 292, 293, 323, 0, + 0, 310, 311, 325, 0, 329, 330, 314, 315, 316, + 325, 318, 319, 320, 321, 322, 816, 296, 816, 299, + 816, 0, 816, 304, 618, 306, 28, 815, 23, 0, + 0, 563, 410, 0, 415, 417, 0, 452, 453, 454, + 455, 456, 0, 0, 0, 0, 0, 0, 478, 479, + 480, 481, 540, 541, 542, 543, 544, 545, 546, 419, + 420, 537, 0, 586, 0, 0, 0, 0, 0, 0, + 0, 528, 0, 502, 502, 502, 502, 502, 502, 502, + 502, 0, 0, 0, 0, -2, -2, 555, 556, 559, + 562, 27, 347, 0, 352, 351, 343, 0, 0, 399, + 0, 0, 408, 0, 38, 0, 255, 597, 598, 599, + 595, 0, 0, -2, 0, 176, 232, 174, 175, 225, + 191, 225, 225, 225, 225, 251, 251, 251, 251, 217, + 218, 219, 220, 221, 0, 204, 225, 225, 225, 208, + 192, 193, 194, 195, 196, 197, 198, 227, 227, 227, + 229, 229, -2, 0, 0, 0, 0, 90, 0, 287, + 290, 603, 0, 289, 562, 0, 816, 816, 331, 0, + 0, 816, 334, 297, 302, 0, 450, 303, 0, 619, + 620, 567, 0, 0, 0, 0, 0, 0, 413, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 437, 438, + 439, 440, 441, 442, 443, 416, 0, 430, 0, 0, + 0, 472, 473, 474, 475, 476, 0, 354, 0, 27, + 0, 0, 0, 0, 0, 0, 350, 0, 529, 0, + 494, 0, 495, 496, 497, 498, 499, 500, 501, 0, + 354, 0, 0, 0, 558, 560, 561, 566, 30, 350, + 0, 547, 0, 0, 0, 353, 579, 0, 0, -2, + 0, 398, 408, 587, 0, 537, 0, 401, 631, 632, + 644, 645, 554, 0, 591, 592, 593, 0, 0, 0, + 0, 91, -2, 94, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 83, + 83, 0, 165, 166, 83, 83, 83, 83, 83, 0, + 0, 83, 83, 83, 83, 83, 83, 83, 83, 83, + 83, 83, 83, 83, 82, 168, 169, 0, 0, 0, + 779, 0, 274, 275, 170, 177, 178, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 236, 0, 0, + 250, 0, 264, 266, 0, 0, 0, 0, 0, 234, + 233, 190, 0, 251, 251, 211, 212, 213, 0, 214, + 215, 216, 0, 205, 206, 207, 199, 0, 200, 201, + 202, 0, 203, 50, -2, 77, 0, 605, 0, 0, + 0, 816, 618, 0, 615, 0, 613, 0, 608, 609, + 610, 611, 612, 614, 616, 617, 0, 288, 816, 0, + 308, 309, 312, 0, 0, 326, 331, 317, 0, 585, + 816, 0, 411, 412, 414, 431, 0, 433, 435, 564, + 565, 421, 422, 446, 447, 448, 0, 0, 0, 0, + 444, 426, 0, 457, 458, 459, 460, 461, 462, 463, + 464, 465, 466, 467, 468, 471, 513, 514, 0, 469, + 470, 477, 0, 0, 355, 356, 358, 362, 0, 538, + 0, -2, 449, 27, 0, 0, 0, 0, 0, 0, + 535, 532, 0, 0, 503, 0, 0, 0, 0, 557, + 24, 0, 600, 601, 548, 549, 367, 31, 0, 579, + 569, 581, 583, 0, 27, 0, 575, 554, 0, 0, + 0, 562, 409, 256, 0, 0, 0, 95, 0, 84, + 0, 83, 83, 85, 0, 0, 0, 0, 0, 0, + 83, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 363, - 364, 365, 366, 367, 368, 369, 342, 0, 356, 0, - 0, 0, 398, 399, 400, 401, 402, 0, 280, 0, - 27, 0, 0, 0, 0, 0, 0, 276, 0, 455, - 0, 420, 0, 421, 422, 423, 424, 425, 426, 427, - 0, 280, 0, 0, 0, 484, 486, 487, 492, 30, - 276, 0, 473, 0, 0, 0, 279, 505, 0, 0, - -2, 0, 324, 334, 513, 0, 463, 0, 327, 557, - 558, 570, 571, 480, 0, 517, 518, 519, 0, 0, - 0, 0, 91, -2, 94, 96, 97, 98, 99, 100, - 83, 83, 0, 107, 108, 83, 82, 110, 111, 0, - 0, 0, 695, 0, 200, 201, 112, 119, 120, 122, - 123, 124, 125, 126, 127, 128, 175, 0, 0, 183, - 0, 190, 192, 0, 0, 173, 172, 129, 0, 184, - 184, 150, 151, 187, 0, 187, 187, 187, 0, 144, - 145, 146, 138, 0, 139, 140, 141, 0, 142, 50, - -2, 77, 0, 531, 0, 0, 0, 723, 544, 0, - 541, 0, 539, 0, 534, 535, 536, 537, 538, 540, - 542, 543, 0, 214, 723, 0, 234, 235, 238, 0, - 0, 252, 257, 243, 0, 511, 723, 0, 337, 338, - 340, 357, 0, 359, 361, 490, 491, 347, 348, 372, - 373, 374, 0, 0, 0, 0, 370, 352, 0, 383, - 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, - 394, 397, 439, 440, 0, 395, 396, 403, 0, 0, - 281, 282, 284, 288, 0, 464, 0, -2, 375, 27, - 0, 0, 0, 0, 0, 0, 461, 458, 0, 0, - 429, 0, 0, 0, 0, 483, 24, 0, 526, 527, - 474, 475, 293, 31, 0, 505, 495, 507, 509, 0, - 27, 0, 501, 480, 0, 0, 0, 488, 335, 188, - 0, 0, 0, 95, 0, 84, 0, 83, 85, 0, - 0, 0, 0, 0, 0, 0, 0, 121, 176, 177, - 178, 179, 180, 181, 189, 191, 193, 0, 115, 174, - 0, 187, 187, 152, 0, 153, 154, 155, 0, 162, - 0, 0, 78, 83, 83, 0, 0, 0, 205, 0, - 723, 547, 548, 0, 0, 0, 0, 0, 217, 233, - 250, 258, 259, 239, 377, 231, 494, 358, 360, 362, - 349, 370, 353, 0, 350, 0, 0, 344, 408, 0, - 0, 285, 289, 0, 291, 292, 0, 280, 0, -2, - 411, 412, 0, 0, 0, 0, 480, 0, 459, 0, - 0, 419, 430, 431, 432, 433, 25, 334, 0, 0, - 32, 0, 510, -2, 0, 0, 0, 488, 514, 515, - 464, 36, 0, 0, 724, 104, 105, 102, 103, 0, - 86, 101, 0, 0, 0, 0, 0, 0, 182, 165, - 148, 149, 185, 186, 161, 0, 0, 169, 0, 0, - 0, 0, 0, 0, 206, 207, 208, 0, 210, 211, - 212, 351, 0, 371, 354, 409, 283, 290, 286, 0, - 0, 465, 0, 164, 164, 444, 164, 168, 447, 164, - 449, 164, 452, 0, 0, 0, 456, 418, 462, 0, - 476, 294, 295, 297, 298, 299, 307, 0, 309, 0, - 508, 0, -2, 0, 503, 502, 35, 44, 0, 49, - 725, 726, 106, 0, 202, 164, 0, 0, 0, 0, - 0, 163, 0, 0, 79, 56, 57, 80, 87, 88, - 89, 0, 0, 0, 0, 355, 0, 410, 413, 441, - 184, 445, 446, 448, 450, 451, 453, 415, 414, 0, - 0, 0, 460, 478, 0, 0, 0, 0, 0, 314, - 0, 0, 317, 0, 0, 0, 0, 308, 0, 0, - 328, 310, 0, 312, 313, 0, 498, 27, 0, 724, - 0, 0, 194, 0, 204, 0, 61, 61, 0, 0, - 167, 170, 61, 65, 69, 209, 287, 442, 443, 434, - 417, 457, 26, 0, 0, 296, 303, 0, 306, 315, - 316, 318, 0, 320, 0, 322, 323, 300, 301, 302, - 0, 0, 0, 311, 506, -2, 504, 47, 45, 0, - 41, 0, 203, 61, 196, 197, 65, 69, 71, 71, - 71, 0, 0, 0, 479, 477, 0, 0, 319, 321, - 0, 0, 0, 0, 724, 0, 195, 62, 63, 64, - 83, 0, 0, 198, 199, 51, 52, 66, 67, 0, - 53, 70, 416, 0, 0, 0, 304, 305, 0, 0, - 0, 42, 48, 0, 0, 60, 58, 54, 55, 72, - 83, 83, 0, 435, 0, 438, 0, 332, 0, 0, - 0, 59, 0, 0, 68, 436, 329, 0, 330, 331, - 43, 73, 74, 0, 333, 0, 437, + 0, 179, 237, 238, 239, 240, 241, 242, 263, 265, + 267, 0, 254, 160, 161, 257, 258, 259, 260, 261, + 262, 173, 235, 0, 209, 210, 0, 0, 223, 0, + 0, 78, 83, 83, 0, 0, 0, 279, 0, 816, + 621, 622, 0, 0, 0, 0, 0, 291, 307, 324, + 332, 333, 313, 451, 305, 568, 432, 434, 436, 423, + 444, 427, 0, 424, 0, 0, 418, 482, 0, 0, + 359, 363, 0, 365, 366, 0, 354, 0, -2, 485, + 486, 0, 0, 0, 0, 554, 0, 533, 0, 0, + 493, 504, 505, 506, 507, 25, 408, 0, 0, 32, + 0, 584, -2, 0, 0, 0, 562, 588, 589, 538, + 36, 0, 0, 817, 162, 163, 0, 0, 86, 121, + 122, 159, 124, 125, 0, 0, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 0, 0, 0, + 0, 0, 0, 243, 244, 247, 248, 249, 226, 252, + 253, 222, 0, 0, 230, 0, 0, 0, 0, 0, + 0, 280, 281, 282, 0, 284, 285, 286, 425, 0, + 445, 428, 483, 357, 364, 360, 0, 0, 539, 0, + 225, 225, 518, 225, 229, 521, 225, 523, 225, 526, + 0, 0, 0, 530, 492, 536, 0, 550, 368, 369, + 371, 372, 373, 381, 0, 383, 0, 582, 0, -2, + 0, 577, 576, 35, 44, 0, 49, 818, 819, 123, + 164, 126, 127, 0, 276, 225, 0, 0, 0, 0, + 0, 0, 224, 0, 0, 79, 56, 57, 80, 87, + 88, 89, 0, 0, 0, 0, 429, 0, 484, 487, + 515, 251, 519, 520, 522, 524, 525, 527, 489, 488, + 0, 0, 0, 534, 552, 0, 0, 0, 0, 0, + 388, 0, 0, 391, 0, 0, 0, 0, 382, 0, + 0, 402, 384, 0, 386, 387, 0, 572, 27, 0, + 817, 0, 0, 268, 0, 278, 0, 61, 61, 0, + 0, 245, 0, 228, 231, 61, 65, 69, 283, 361, + 516, 517, 508, 491, 531, 26, 0, 0, 370, 377, + 0, 380, 389, 390, 392, 0, 394, 0, 396, 397, + 374, 375, 376, 0, 0, 0, 385, 580, -2, 578, + 47, 45, 0, 41, 0, 277, 61, 270, 271, 65, + 69, 246, 71, 71, 71, 0, 0, 0, 553, 551, + 0, 0, 393, 395, 0, 0, 0, 0, 817, 0, + 269, 62, 63, 64, 83, 0, 0, 272, 273, 51, + 52, 66, 67, 0, 53, 70, 490, 0, 0, 0, + 378, 379, 0, 0, 0, 42, 48, 0, 0, 60, + 58, 54, 55, 72, 83, 83, 0, 509, 0, 512, + 0, 406, 0, 0, 0, 59, 0, 0, 68, 510, + 403, 0, 404, 405, 43, 73, 74, 0, 407, 0, + 511, } var yyTok1 = [...]int{ @@ -1909,7 +2189,7 @@ var yyTok1 = [...]int{ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 80, 3, 3, 3, 107, 99, 3, 60, 62, 104, 102, 61, 103, 115, 105, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 242, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 276, 88, 87, 89, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, @@ -1942,10 +2222,13 @@ var yyTok2 = [...]int{ 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 272, 273, 274, } var yyTok3 = [...]int{ - 0, + 57600, 275, 0, } var yyErrorMessages = [...]struct { @@ -2287,29 +2570,29 @@ yydefault: case 1: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:896 + //line sql.y:958 { setParseTree(yylex, yyDollar[1].statement) } case 2: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:902 + //line sql.y:964 { } case 3: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:904 + //line sql.y:966 { } case 4: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:908 + //line sql.y:970 { yyVAL.statement = yyDollar[1].selStmt } case 23: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:932 + //line sql.y:994 { sel := yyDollar[1].selStmt.(*Select) sel.OrderBy = yyDollar[2].orderBy @@ -2319,49 +2602,49 @@ yydefault: } case 24: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:940 + //line sql.y:1002 { yyVAL.selStmt = &Union{Type: yyDollar[2].str, Left: yyDollar[1].selStmt, Right: yyDollar[3].selStmt, OrderBy: yyDollar[4].orderBy, Limit: yyDollar[5].limit, Lock: yyDollar[6].str} } case 25: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:944 + //line sql.y:1006 { yyVAL.selStmt = &Select{Comments: Comments(yyDollar[2].bytes2), Cache: yyDollar[3].str, SelectExprs: SelectExprs{Nextval{Expr: yyDollar[5].expr}}, From: TableExprs{&AliasedTableExpr{Expr: yyDollar[7].tableName}}} } case 26: yyDollar = yyS[yypt-10 : yypt+1] -//line sql.y:951 + //line sql.y:1013 { yyVAL.selStmt = &Select{Comments: Comments(yyDollar[2].bytes2), Cache: yyDollar[3].str, Distinct: yyDollar[4].str, Hints: yyDollar[5].str, SelectExprs: yyDollar[6].selectExprs, From: yyDollar[7].tableExprs, Where: NewWhere(WhereStr, yyDollar[8].expr), GroupBy: GroupBy(yyDollar[9].exprs), Having: NewWhere(HavingStr, yyDollar[10].expr)} } case 27: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:957 + //line sql.y:1019 { yyVAL.selStmt = yyDollar[1].selStmt } case 28: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:961 + //line sql.y:1023 { yyVAL.selStmt = &ParenSelect{Select: yyDollar[2].selStmt} } case 29: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:967 + //line sql.y:1029 { yyVAL.selStmt = yyDollar[1].selStmt } case 30: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:971 + //line sql.y:1033 { yyVAL.selStmt = &ParenSelect{Select: yyDollar[2].selStmt} } case 31: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:977 + //line sql.y:1039 { // insert_data returns a *Insert pre-filled with Columns & Values ins := yyDollar[5].ins @@ -2374,7 +2657,7 @@ yydefault: } case 32: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:988 + //line sql.y:1050 { cols := make(Columns, 0, len(yyDollar[6].updateExprs)) vals := make(ValTuple, 0, len(yyDollar[7].updateExprs)) @@ -2386,79 +2669,79 @@ yydefault: } case 33: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1000 + //line sql.y:1062 { yyVAL.str = InsertStr } case 34: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1004 + //line sql.y:1066 { yyVAL.str = ReplaceStr } case 35: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:1010 + //line sql.y:1072 { yyVAL.statement = &Update{Comments: Comments(yyDollar[2].bytes2), Table: yyDollar[3].tableName, Exprs: yyDollar[5].updateExprs, Where: NewWhere(WhereStr, yyDollar[6].expr), OrderBy: yyDollar[7].orderBy, Limit: yyDollar[8].limit} } case 36: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1016 + //line sql.y:1078 { yyVAL.statement = &Delete{Comments: Comments(yyDollar[2].bytes2), Table: yyDollar[4].tableName, Where: NewWhere(WhereStr, yyDollar[5].expr), OrderBy: yyDollar[6].orderBy, Limit: yyDollar[7].limit} } case 37: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1022 + //line sql.y:1084 { yyVAL.statement = &Set{Comments: Comments(yyDollar[2].bytes2), Exprs: yyDollar[3].setExprs} } case 38: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1026 + //line sql.y:1088 { yyVAL.statement = &Set{Comments: Comments(yyDollar[2].bytes2), Exprs: yyDollar[4].setExprs} } case 39: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1032 + //line sql.y:1094 { yyVAL.str = SessionStr } case 40: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1036 + //line sql.y:1098 { yyVAL.str = GlobalStr } case 41: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1042 + //line sql.y:1104 { yyVAL.partitionDefinitions = []*PartitionDefinition{yyDollar[1].partitionDefinition} } case 42: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1046 + //line sql.y:1108 { yyVAL.partitionDefinitions = append(yyDollar[1].partitionDefinitions, yyDollar[3].partitionDefinition) } case 43: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1052 + //line sql.y:1114 { yyVAL.partitionDefinition = &PartitionDefinition{Backend: string(yyDollar[2].bytes), Row: yyDollar[5].valTuple} } case 44: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1058 + //line sql.y:1120 { yyVAL.optVal = nil } case 45: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1062 + //line sql.y:1124 { if string(yyDollar[2].bytes) == "0" { yylex.Error("Number of partitions must be a positive integer") @@ -2468,7 +2751,7 @@ yydefault: } case 46: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1072 + //line sql.y:1134 { yyDollar[1].ddl.Action = CreateTableStr yyDollar[1].ddl.TableSpec = yyDollar[2].TableSpec @@ -2476,7 +2759,7 @@ yydefault: } case 47: yyDollar = yyS[yypt-10 : yypt+1] -//line sql.y:1078 + //line sql.y:1140 { yyDollar[1].ddl.Action = CreateTableStr yyDollar[1].ddl.TableSpec = yyDollar[2].TableSpec @@ -2492,7 +2775,7 @@ yydefault: } case 48: yyDollar = yyS[yypt-12 : yypt+1] -//line sql.y:1092 + //line sql.y:1154 { yyDollar[1].ddl.Action = CreateTableStr yyDollar[1].ddl.TableSpec = yyDollar[2].TableSpec @@ -2503,7 +2786,7 @@ yydefault: } case 49: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:1101 + //line sql.y:1163 { yyDollar[1].ddl.Action = CreateTableStr yyDollar[1].ddl.TableSpec = yyDollar[2].TableSpec @@ -2518,7 +2801,7 @@ yydefault: } case 50: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1114 + //line sql.y:1176 { var ifnotexists bool if yyDollar[3].byt != 0 { @@ -2528,49 +2811,49 @@ yydefault: } case 51: yyDollar = yyS[yypt-11 : yypt+1] -//line sql.y:1122 + //line sql.y:1184 { yyVAL.statement = &DDL{Action: CreateIndexStr, IndexType: yyDollar[2].str, IndexName: string(yyDollar[4].bytes), Table: yyDollar[6].tableName, NewName: yyDollar[6].tableName, IndexOpts: NewIndexOptions(yyDollar[8].indexColumns, append(yyDollar[10].indexOptionList, yyDollar[11].indexOptionList...))} } case 52: yyDollar = yyS[yypt-11 : yypt+1] -//line sql.y:1126 + //line sql.y:1188 { yyVAL.statement = &DDL{Action: CreateIndexStr, IndexType: FullTextStr, IndexName: string(yyDollar[4].bytes), Table: yyDollar[6].tableName, NewName: yyDollar[6].tableName, IndexOpts: NewIndexOptions(yyDollar[8].indexColumns, append(yyDollar[10].indexOptionList, yyDollar[11].indexOptionList...))} } case 53: yyDollar = yyS[yypt-11 : yypt+1] -//line sql.y:1130 + //line sql.y:1192 { yyVAL.statement = &DDL{Action: CreateIndexStr, IndexType: SpatialStr, IndexName: string(yyDollar[4].bytes), Table: yyDollar[6].tableName, NewName: yyDollar[6].tableName, IndexOpts: NewIndexOptions(yyDollar[8].indexColumns, append(yyDollar[10].indexOptionList, yyDollar[11].indexOptionList...))} } case 54: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1136 + //line sql.y:1198 { yyVAL.str = "hash" } case 55: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1140 + //line sql.y:1202 { yyVAL.str = "btree" } case 56: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1146 + //line sql.y:1208 { yyVAL.str = string(yyDollar[1].bytes) } case 57: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1150 + //line sql.y:1212 { yyVAL.str = "default" } case 58: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1156 + //line sql.y:1218 { yyVAL.indexOption = &IndexOption{ Type: IndexOptionUsing, @@ -2579,7 +2862,7 @@ yydefault: } case 59: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1165 + //line sql.y:1227 { yyVAL.indexOption = &IndexOption{ Type: IndexOptionBlockSize, @@ -2588,7 +2871,7 @@ yydefault: } case 60: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1172 + //line sql.y:1234 { yyVAL.indexOption = &IndexOption{ Type: IndexOptionComment, @@ -2597,49 +2880,49 @@ yydefault: } case 61: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1180 + //line sql.y:1242 { yyVAL.indexOptionList = []*IndexOption{} } case 62: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1184 + //line sql.y:1246 { yyVAL.indexOptionList = append(yyDollar[1].indexOptionList, yyDollar[2].indexOption) } case 63: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1190 + //line sql.y:1252 { yyVAL.indexOption = yyDollar[1].indexOption } case 64: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1194 + //line sql.y:1256 { yyVAL.indexOption = yyDollar[1].indexOption } case 65: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1199 + //line sql.y:1261 { yyVAL.indexOptionList = []*IndexOption{} } case 66: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1203 + //line sql.y:1265 { yyVAL.indexOptionList = append(yyDollar[1].indexOptionList, yyDollar[2].indexOption) } case 67: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1209 + //line sql.y:1271 { yyVAL.indexOption = yyDollar[1].indexOption } case 68: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1213 + //line sql.y:1275 { yyVAL.indexOption = &IndexOption{ Type: IndexOptionParser, @@ -2648,31 +2931,31 @@ yydefault: } case 69: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1221 + //line sql.y:1283 { yyVAL.indexOptionList = []*IndexOption{} } case 70: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1225 + //line sql.y:1287 { yyVAL.indexOptionList = append(yyDollar[1].indexOptionList, yyDollar[2].indexOption) } case 71: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1230 + //line sql.y:1292 { yyVAL.indexOptionList = []*IndexOption{} } case 72: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1234 + //line sql.y:1296 { yyVAL.indexOptionList = append(yyDollar[1].indexOptionList, yyDollar[2].indexOption) } case 73: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1240 + //line sql.y:1302 { if !CheckIndexLock(yyDollar[3].str) { yylex.Error("unknown lock type") @@ -2685,7 +2968,7 @@ yydefault: } case 74: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1251 + //line sql.y:1313 { if !CheckIndexAlgorithm(yyDollar[3].str) { yylex.Error("unknown algorithm type") @@ -2698,31 +2981,31 @@ yydefault: } case 75: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1263 + //line sql.y:1325 { yyVAL.databaseOptionListOpt.DBOptList = []*DatabaseOption{} } case 76: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1267 + //line sql.y:1329 { yyVAL.databaseOptionListOpt.DBOptList = yyDollar[1].databaseOptionList } case 77: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1273 + //line sql.y:1335 { yyVAL.databaseOptionList = append(yyVAL.databaseOptionList, yyDollar[1].databaseOption) } case 78: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1277 + //line sql.y:1339 { yyVAL.databaseOptionList = append(yyDollar[1].databaseOptionList, yyDollar[2].databaseOption) } case 79: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1283 + //line sql.y:1345 { yyVAL.databaseOption = &DatabaseOption{ CharsetOrCollate: string(yyDollar[2].bytes), @@ -2731,7 +3014,7 @@ yydefault: } case 80: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1290 + //line sql.y:1352 { yyVAL.databaseOption = &DatabaseOption{ CharsetOrCollate: string(yyDollar[2].str), @@ -2740,57 +3023,57 @@ yydefault: } case 81: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1298 + //line sql.y:1360 { } case 82: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1300 + //line sql.y:1362 { } case 83: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1303 + //line sql.y:1365 { } case 84: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1305 + //line sql.y:1367 { } case 85: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1309 + //line sql.y:1371 { yyVAL.str = string(yyDollar[1].bytes) } case 86: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1313 + //line sql.y:1375 { yyVAL.str = "character set" } case 87: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1319 + //line sql.y:1381 { yyVAL.str = string(yyDollar[1].bytes) } case 88: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1323 + //line sql.y:1385 { yyVAL.str = string(yyDollar[1].bytes) } case 89: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1327 + //line sql.y:1389 { yyVAL.str = "default" } case 90: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1333 + //line sql.y:1395 { var ifnotexists bool if yyDollar[3].byt != 0 { @@ -2801,7 +3084,7 @@ yydefault: } case 91: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1344 + //line sql.y:1406 { yyVAL.TableSpec = yyDollar[2].TableSpec @@ -2822,6 +3105,66 @@ yydefault: if val := yyDollar[4].TableOptionListOpt.GetTableOptValByType(TableOptionTableType); val != nil { yyVAL.TableSpec.Options.Type = String(val) } + if val := yyDollar[4].TableOptionListOpt.GetTableOptValByType(TableOptionAvgRowLength); val != nil { + yyVAL.TableSpec.Options.AvgRowLength = String(val) + } + if val := yyDollar[4].TableOptionListOpt.GetTableOptValByType(TableOptionChecksum); val != nil { + yyVAL.TableSpec.Options.Checksum = String(val) + } + if val := yyDollar[4].TableOptionListOpt.GetTableOptValByType(TableOptionCollate); val != nil { + yyVAL.TableSpec.Options.Collate = String(val) + } + if val := yyDollar[4].TableOptionListOpt.GetTableOptValByType(TableOptionCompression); val != nil { + yyVAL.TableSpec.Options.Compression = String(val) + } + if val := yyDollar[4].TableOptionListOpt.GetTableOptValByType(TableOptionConnection); val != nil { + yyVAL.TableSpec.Options.Connection = String(val) + } + if val := yyDollar[4].TableOptionListOpt.GetTableOptValByType(TableOptionDataDirectory); val != nil { + yyVAL.TableSpec.Options.DataDirectory = String(val) + } + if val := yyDollar[4].TableOptionListOpt.GetTableOptValByType(TableOptionIndexDirectory); val != nil { + yyVAL.TableSpec.Options.IndexDirectory = String(val) + } + if val := yyDollar[4].TableOptionListOpt.GetTableOptValByType(TableOptionDelayKeyWrite); val != nil { + yyVAL.TableSpec.Options.DelayKeyWrite = String(val) + } + if val := yyDollar[4].TableOptionListOpt.GetTableOptValByType(TableOptionEncryption); val != nil { + yyVAL.TableSpec.Options.Encryption = String(val) + } + if val := yyDollar[4].TableOptionListOpt.GetTableOptValByType(TableOptionInsertMethod); val != nil { + yyVAL.TableSpec.Options.InsertMethod = String(val) + } + if val := yyDollar[4].TableOptionListOpt.GetTableOptValByType(TableOptionKeyBlockSize); val != nil { + yyVAL.TableSpec.Options.KeyBlockSize = String(val) + } + if val := yyDollar[4].TableOptionListOpt.GetTableOptValByType(TableOptionMaxRows); val != nil { + yyVAL.TableSpec.Options.MaxRows = String(val) + } + if val := yyDollar[4].TableOptionListOpt.GetTableOptValByType(TableOptionMinRows); val != nil { + yyVAL.TableSpec.Options.MinRows = String(val) + } + if val := yyDollar[4].TableOptionListOpt.GetTableOptValByType(TableOptionPackKeys); val != nil { + yyVAL.TableSpec.Options.PackKeys = String(val) + } + if val := yyDollar[4].TableOptionListOpt.GetTableOptValByType(TableOptionPassword); val != nil { + yyVAL.TableSpec.Options.Password = String(val) + } + if val := yyDollar[4].TableOptionListOpt.GetTableOptValByType(TableOptionRowFormat); val != nil { + yyVAL.TableSpec.Options.RowFormat = String(val) + } + if val := yyDollar[4].TableOptionListOpt.GetTableOptValByType(TableOptionStatsAutoRecalc); val != nil { + yyVAL.TableSpec.Options.StatsAutoRecalc = String(val) + } + if val := yyDollar[4].TableOptionListOpt.GetTableOptValByType(TableOptionStatsPersistent); val != nil { + yyVAL.TableSpec.Options.StatsPersistent = String(val) + } + if val := yyDollar[4].TableOptionListOpt.GetTableOptValByType(TableOptionStatsSamplePages); val != nil { + yyVAL.TableSpec.Options.StatsSamplePages = String(val) + } + if val := yyDollar[4].TableOptionListOpt.GetTableOptValByType(TableOptionTableSpace); val != nil { + yyVAL.TableSpec.Options.TableSpace = String(val) + } } if yyVAL.TableSpec.Options.Type == "" { yyVAL.TableSpec.Options.Type = NormalTableType @@ -2829,31 +3172,31 @@ yydefault: } case 92: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1371 + //line sql.y:1493 { yyVAL.TableOptionListOpt.TblOptList = []*TableOption{} } case 93: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1375 + //line sql.y:1497 { yyVAL.TableOptionListOpt.TblOptList = yyDollar[1].TableOptionList } case 94: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1381 + //line sql.y:1503 { yyVAL.TableOptionList = append(yyVAL.TableOptionList, yyDollar[1].tableOption) } case 95: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1385 + //line sql.y:1507 { yyVAL.TableOptionList = append(yyDollar[1].TableOptionList, yyDollar[2].tableOption) } case 96: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1391 + //line sql.y:1513 { yyVAL.tableOption = &TableOption{ Type: TableOptionComment, @@ -2862,7 +3205,7 @@ yydefault: } case 97: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1398 + //line sql.y:1520 { yyVAL.tableOption = &TableOption{ Type: TableOptionEngine, @@ -2871,7 +3214,7 @@ yydefault: } case 98: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1405 + //line sql.y:1527 { yyVAL.tableOption = &TableOption{ Type: TableOptionCharset, @@ -2880,7 +3223,7 @@ yydefault: } case 99: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1412 + //line sql.y:1534 { yyVAL.tableOption = &TableOption{ Type: TableOptionTableType, @@ -2889,7 +3232,7 @@ yydefault: } case 100: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1419 + //line sql.y:1541 { yyVAL.tableOption = &TableOption{ Type: TableOptionAutoInc, @@ -2897,609 +3240,1151 @@ yydefault: } } case 101: - yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1428 + yyDollar = yyS[yypt-1 : yypt+1] + //line sql.y:1548 { + yyVAL.tableOption = &TableOption{ + Type: TableOptionAvgRowLength, + Val: yyDollar[1].optVal, + } } case 102: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1432 + //line sql.y:1555 { - // Normal str as a identify, without quote - yyVAL.optVal = NewStrValWithoutQuote(yyDollar[1].bytes) + yyVAL.tableOption = &TableOption{ + Type: TableOptionChecksum, + Val: yyDollar[1].optVal, + } } case 103: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1437 + //line sql.y:1562 { - // Str with Quote, it will be parsed by Lex begin with quote \' or \" - yyVAL.optVal = NewStrVal(yyDollar[1].bytes) + yyVAL.tableOption = &TableOption{ + Type: TableOptionCollate, + Val: yyDollar[1].optVal, + } } case 104: - yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1444 + yyDollar = yyS[yypt-1 : yypt+1] + //line sql.y:1569 { - yyVAL.optVal = NewStrVal(yyDollar[3].bytes) + yyVAL.tableOption = &TableOption{ + Type: TableOptionCompression, + Val: yyDollar[1].optVal, + } } case 105: - yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1450 + yyDollar = yyS[yypt-1 : yypt+1] + //line sql.y:1576 { - yyVAL.optVal = yyDollar[3].optVal + yyVAL.tableOption = &TableOption{ + Type: TableOptionConnection, + Val: yyDollar[1].optVal, + } } case 106: - yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1456 + yyDollar = yyS[yypt-1 : yypt+1] + //line sql.y:1583 { - yyVAL.optVal = yyDollar[4].optVal + yyVAL.tableOption = &TableOption{ + Type: TableOptionDataDirectory, + Val: yyDollar[1].optVal, + } } case 107: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1462 + //line sql.y:1590 { - yyVAL.optVal = NewStrValWithoutQuote([]byte(GlobalTableType)) + yyVAL.tableOption = &TableOption{ + Type: TableOptionIndexDirectory, + Val: yyDollar[1].optVal, + } } case 108: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1466 + //line sql.y:1597 { - yyVAL.optVal = NewStrValWithoutQuote([]byte(SingleTableType)) + yyVAL.tableOption = &TableOption{ + Type: TableOptionDelayKeyWrite, + Val: yyDollar[1].optVal, + } } case 109: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1472 + //line sql.y:1604 { - yyVAL.TableSpec = &TableSpec{} - yyVAL.TableSpec.AddColumn(yyDollar[1].columnDefinition) + yyVAL.tableOption = &TableOption{ + Type: TableOptionEncryption, + Val: yyDollar[1].optVal, + } } case 110: - yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1477 + yyDollar = yyS[yypt-1 : yypt+1] + //line sql.y:1611 { - yyVAL.TableSpec.AddColumn(yyDollar[3].columnDefinition) + yyVAL.tableOption = &TableOption{ + Type: TableOptionInsertMethod, + Val: yyDollar[1].optVal, + } } case 111: - yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1481 + yyDollar = yyS[yypt-1 : yypt+1] + //line sql.y:1618 { - yyVAL.TableSpec.AddIndex(yyDollar[3].indexDefinition) + yyVAL.tableOption = &TableOption{ + Type: TableOptionKeyBlockSize, + Val: yyDollar[1].optVal, + } } case 112: - yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1487 + yyDollar = yyS[yypt-1 : yypt+1] + //line sql.y:1625 { - yyDollar[2].columnType.NotNull = yyDollar[3].columnOptionListOpt.GetColumnOption(ColumnOptionNotNull).NotNull - yyDollar[2].columnType.Autoincrement = yyDollar[3].columnOptionListOpt.GetColumnOption(ColumnOptionAutoincrement).Autoincrement - yyDollar[2].columnType.Default = yyDollar[3].columnOptionListOpt.GetColumnOption(ColumnOptionDefault).Default - yyDollar[2].columnType.Comment = yyDollar[3].columnOptionListOpt.GetColumnOption(ColumnOptionComment).Comment - yyDollar[2].columnType.OnUpdate = yyDollar[3].columnOptionListOpt.GetColumnOption(ColumnOptionOnUpdate).OnUpdate - yyDollar[2].columnType.PrimaryKeyOpt = yyDollar[3].columnOptionListOpt.GetColumnOption(ColumnOptionKeyPrimaryOpt).PrimaryKeyOpt - yyDollar[2].columnType.UniqueKeyOpt = yyDollar[3].columnOptionListOpt.GetColumnOption(ColumnOptionKeyUniqueOpt).UniqueKeyOpt - yyVAL.columnDefinition = &ColumnDefinition{Name: yyDollar[1].colIdent, Type: yyDollar[2].columnType} + yyVAL.tableOption = &TableOption{ + Type: TableOptionMaxRows, + Val: yyDollar[1].optVal, + } } case 113: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1500 + //line sql.y:1632 { - yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) + yyVAL.tableOption = &TableOption{ + Type: TableOptionMinRows, + Val: yyDollar[1].optVal, + } } case 114: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1504 + //line sql.y:1639 { - yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) + yyVAL.tableOption = &TableOption{ + Type: TableOptionPackKeys, + Val: yyDollar[1].optVal, + } } case 115: - yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1510 + yyDollar = yyS[yypt-1 : yypt+1] + //line sql.y:1646 { - yyVAL.columnType = yyDollar[1].columnType - yyVAL.columnType.Unsigned = yyDollar[2].boolVal - yyVAL.columnType.Zerofill = yyDollar[3].boolVal + yyVAL.tableOption = &TableOption{ + Type: TableOptionPassword, + Val: yyDollar[1].optVal, + } + } + case 116: + yyDollar = yyS[yypt-1 : yypt+1] + //line sql.y:1653 + { + yyVAL.tableOption = &TableOption{ + Type: TableOptionRowFormat, + Val: yyDollar[1].optVal, + } + } + case 117: + yyDollar = yyS[yypt-1 : yypt+1] + //line sql.y:1660 + { + yyVAL.tableOption = &TableOption{ + Type: TableOptionStatsAutoRecalc, + Val: yyDollar[1].optVal, + } } case 118: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1519 + yyDollar = yyS[yypt-1 : yypt+1] + //line sql.y:1667 { - yyVAL.columnOptionListOpt.ColOptList = []*ColumnOption{} + yyVAL.tableOption = &TableOption{ + Type: TableOptionStatsPersistent, + Val: yyDollar[1].optVal, + } } case 119: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1523 + //line sql.y:1674 { - yyVAL.columnOptionListOpt.ColOptList = yyDollar[1].columnOptionList + yyVAL.tableOption = &TableOption{ + Type: TableOptionStatsSamplePages, + Val: yyDollar[1].optVal, + } } case 120: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1529 + //line sql.y:1681 { - yyVAL.columnOptionList = append(yyVAL.columnOptionList, yyDollar[1].columnOption) + yyVAL.tableOption = &TableOption{ + Type: TableOptionTableSpace, + Val: yyDollar[1].optVal, + } } case 121: - yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1533 + yyDollar = yyS[yypt-3 : yypt+1] + //line sql.y:1690 { - yyVAL.columnOptionList = append(yyDollar[1].columnOptionList, yyDollar[2].columnOption) } case 122: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1539 + yyDollar = yyS[yypt-3 : yypt+1] + //line sql.y:1694 { - yyVAL.columnOption = &ColumnOption{ - typ: ColumnOptionNotNull, - NotNull: yyDollar[1].boolVal, - } + yyVAL.optVal = NewIntVal(yyDollar[3].bytes) } case 123: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1546 + yyDollar = yyS[yypt-4 : yypt+1] + //line sql.y:1700 { - yyVAL.columnOption = &ColumnOption{ - typ: ColumnOptionDefault, - Default: yyDollar[1].optVal, - } + yyVAL.optVal = yyDollar[4].optVal } case 124: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1553 + yyDollar = yyS[yypt-3 : yypt+1] + //line sql.y:1706 { - yyVAL.columnOption = &ColumnOption{ - typ: ColumnOptionAutoincrement, - Autoincrement: yyDollar[1].boolVal, + switch StrToLower(string(yyDollar[3].bytes)) { + case "zlib", "lz4", "none": + break + default: + yylex.Error("Invalid compression option, argument (should be 'ZLIB', 'LZ4' or 'NONE')") + return 1 } + yyVAL.optVal = NewStrVal(yyDollar[3].bytes) } case 125: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1560 + yyDollar = yyS[yypt-3 : yypt+1] + //line sql.y:1719 { - yyVAL.columnOption = &ColumnOption{ - typ: ColumnOptionKeyPrimaryOpt, - PrimaryKeyOpt: yyDollar[1].colPrimaryKeyOpt, - } + yyVAL.optVal = NewStrVal(yyDollar[3].bytes) } case 126: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1567 + yyDollar = yyS[yypt-4 : yypt+1] + //line sql.y:1725 { - yyVAL.columnOption = &ColumnOption{ - typ: ColumnOptionKeyUniqueOpt, - UniqueKeyOpt: yyDollar[1].colUniqueKeyOpt, - } + yyVAL.optVal = NewStrVal(yyDollar[4].bytes) } case 127: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1574 + yyDollar = yyS[yypt-4 : yypt+1] + //line sql.y:1731 { - yyVAL.columnOption = &ColumnOption{ - typ: ColumnOptionComment, - Comment: yyDollar[1].optVal, - } + yyVAL.optVal = NewStrVal(yyDollar[4].bytes) } case 128: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1581 + yyDollar = yyS[yypt-3 : yypt+1] + //line sql.y:1737 { - yyVAL.columnOption = &ColumnOption{ - typ: ColumnOptionOnUpdate, - OnUpdate: yyDollar[1].optVal, - } + yyVAL.optVal = NewIntVal(yyDollar[3].bytes) } case 129: - yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1590 + yyDollar = yyS[yypt-3 : yypt+1] + //line sql.y:1743 { - yyVAL.columnType = yyDollar[1].columnType - yyVAL.columnType.Length = yyDollar[2].optVal + switch string(yyDollar[3].bytes) { + case "Y", "y": + yylex.Error("The encryption option is parsed but ignored by all storage engines.") + return 1 + case "N", "n": + break + default: + yylex.Error("Invalid encryption option, argument (should be Y or N)") + return 1 + } + yyVAL.optVal = NewStrVal(yyDollar[3].bytes) } case 130: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1595 + yyDollar = yyS[yypt-3 : yypt+1] + //line sql.y:1759 { - yyVAL.columnType = yyDollar[1].columnType + switch StrToLower(string(yyDollar[3].bytes)) { + case "no", "first", "last": + break + default: + yylex.Error("Invalid insert_method option, argument (should be NO, FIRST or LAST)") + return 1 + } + yyVAL.optVal = NewStrValWithoutQuote(yyDollar[3].bytes) } case 131: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1601 + yyDollar = yyS[yypt-3 : yypt+1] + //line sql.y:1772 { - yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} + yyVAL.optVal = NewIntVal(yyDollar[3].bytes) } case 132: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1605 + yyDollar = yyS[yypt-3 : yypt+1] + //line sql.y:1778 { - yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} + yyVAL.optVal = NewIntVal(yyDollar[3].bytes) } case 133: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1609 + yyDollar = yyS[yypt-3 : yypt+1] + //line sql.y:1784 { - yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} + yyVAL.optVal = NewIntVal(yyDollar[3].bytes) } case 134: + yyDollar = yyS[yypt-3 : yypt+1] + //line sql.y:1790 + { + yyVAL.optVal = NewStrValWithoutQuote(yyDollar[3].bytes) + } + case 135: + yyDollar = yyS[yypt-3 : yypt+1] + //line sql.y:1794 + { + yyVAL.optVal = NewStrValWithoutQuote(yyDollar[3].bytes) + } + case 136: + yyDollar = yyS[yypt-3 : yypt+1] + //line sql.y:1800 + { + yyVAL.optVal = NewStrVal(yyDollar[3].bytes) + } + case 137: + yyDollar = yyS[yypt-3 : yypt+1] + //line sql.y:1806 + { + yyVAL.optVal = NewStrValWithoutQuote(yyDollar[3].bytes) + } + case 138: + yyDollar = yyS[yypt-3 : yypt+1] + //line sql.y:1810 + { + yyVAL.optVal = NewStrValWithoutQuote(yyDollar[3].bytes) + } + case 139: + yyDollar = yyS[yypt-3 : yypt+1] + //line sql.y:1814 + { + yyVAL.optVal = NewStrValWithoutQuote(yyDollar[3].bytes) + } + case 140: + yyDollar = yyS[yypt-3 : yypt+1] + //line sql.y:1818 + { + yyVAL.optVal = NewStrValWithoutQuote(yyDollar[3].bytes) + } + case 141: + yyDollar = yyS[yypt-3 : yypt+1] + //line sql.y:1822 + { + yyVAL.optVal = NewStrValWithoutQuote(yyDollar[3].bytes) + } + case 142: + yyDollar = yyS[yypt-3 : yypt+1] + //line sql.y:1826 + { + yyVAL.optVal = NewStrValWithoutQuote(yyDollar[3].bytes) + } + case 143: + yyDollar = yyS[yypt-3 : yypt+1] + //line sql.y:1830 + { + yyVAL.optVal = NewStrValWithoutQuote(yyDollar[3].bytes) + } + case 144: + yyDollar = yyS[yypt-3 : yypt+1] + //line sql.y:1834 + { + yyVAL.optVal = NewStrValWithoutQuote(yyDollar[3].bytes) + } + case 145: + yyDollar = yyS[yypt-3 : yypt+1] + //line sql.y:1838 + { + yyVAL.optVal = NewStrValWithoutQuote(yyDollar[3].bytes) + } + case 146: + yyDollar = yyS[yypt-3 : yypt+1] + //line sql.y:1842 + { + yyVAL.optVal = NewStrValWithoutQuote(yyDollar[3].bytes) + } + case 147: + yyDollar = yyS[yypt-3 : yypt+1] + //line sql.y:1846 + { + yyVAL.optVal = NewStrValWithoutQuote(yyDollar[3].bytes) + } + case 148: + yyDollar = yyS[yypt-3 : yypt+1] + //line sql.y:1850 + { + yyVAL.optVal = NewStrValWithoutQuote(yyDollar[3].bytes) + } + case 149: + yyDollar = yyS[yypt-3 : yypt+1] + //line sql.y:1854 + { + yyVAL.optVal = NewStrValWithoutQuote(yyDollar[3].bytes) + } + case 150: + yyDollar = yyS[yypt-3 : yypt+1] + //line sql.y:1858 + { + yyVAL.optVal = NewStrValWithoutQuote(yyDollar[3].bytes) + } + case 151: + yyDollar = yyS[yypt-3 : yypt+1] + //line sql.y:1864 + { + yyVAL.optVal = NewStrValWithoutQuote(yyDollar[3].bytes) + } + case 152: + yyDollar = yyS[yypt-3 : yypt+1] + //line sql.y:1868 + { + yyVAL.optVal = NewStrValWithoutQuote(yyDollar[3].bytes) + } + case 153: + yyDollar = yyS[yypt-3 : yypt+1] + //line sql.y:1874 + { + yyVAL.optVal = NewStrValWithoutQuote(yyDollar[3].bytes) + } + case 154: + yyDollar = yyS[yypt-3 : yypt+1] + //line sql.y:1878 + { + yyVAL.optVal = NewStrValWithoutQuote(yyDollar[3].bytes) + } + case 155: + yyDollar = yyS[yypt-3 : yypt+1] + //line sql.y:1885 + { + yyVAL.optVal = NewStrValWithoutQuote(yyDollar[3].bytes) + } + case 156: + yyDollar = yyS[yypt-3 : yypt+1] + //line sql.y:1889 + { + yyVAL.optVal = NewStrValWithoutQuote(yyDollar[3].bytes) + } + case 157: + yyDollar = yyS[yypt-3 : yypt+1] + //line sql.y:1895 + { + yyVAL.optVal = NewStrValWithoutQuote(yyDollar[3].bytes) + } + case 158: + yyDollar = yyS[yypt-3 : yypt+1] + //line sql.y:1899 + { + yyVAL.optVal = NewStrValWithoutQuote(yyDollar[3].bytes) + } + case 159: + yyDollar = yyS[yypt-3 : yypt+1] + //line sql.y:1905 + { + yyVAL.optVal = NewIntVal(yyDollar[3].bytes) + } + case 160: + yyDollar = yyS[yypt-1 : yypt+1] + //line sql.y:1911 + { + // Normal str as an identify, without quote + yyVAL.optVal = NewStrValWithoutQuote(yyDollar[1].bytes) + } + case 161: + yyDollar = yyS[yypt-1 : yypt+1] + //line sql.y:1916 + { + // Str with Quote, it will be parsed by Lex begin with quote \' or \" + yyVAL.optVal = NewStrVal(yyDollar[1].bytes) + } + case 162: + yyDollar = yyS[yypt-3 : yypt+1] + //line sql.y:1923 + { + yyVAL.optVal = NewStrVal(yyDollar[3].bytes) + } + case 163: + yyDollar = yyS[yypt-3 : yypt+1] + //line sql.y:1929 + { + yyVAL.optVal = yyDollar[3].optVal + } + case 164: + yyDollar = yyS[yypt-4 : yypt+1] + //line sql.y:1935 + { + yyVAL.optVal = yyDollar[4].optVal + } + case 165: + yyDollar = yyS[yypt-1 : yypt+1] + //line sql.y:1941 + { + yyVAL.optVal = NewStrValWithoutQuote([]byte(GlobalTableType)) + } + case 166: + yyDollar = yyS[yypt-1 : yypt+1] + //line sql.y:1945 + { + yyVAL.optVal = NewStrValWithoutQuote([]byte(SingleTableType)) + } + case 167: + yyDollar = yyS[yypt-1 : yypt+1] + //line sql.y:1951 + { + yyVAL.TableSpec = &TableSpec{} + yyVAL.TableSpec.AddColumn(yyDollar[1].columnDefinition) + } + case 168: + yyDollar = yyS[yypt-3 : yypt+1] + //line sql.y:1956 + { + yyVAL.TableSpec.AddColumn(yyDollar[3].columnDefinition) + } + case 169: + yyDollar = yyS[yypt-3 : yypt+1] + //line sql.y:1960 + { + yyVAL.TableSpec.AddIndex(yyDollar[3].indexDefinition) + } + case 170: + yyDollar = yyS[yypt-3 : yypt+1] + //line sql.y:1966 + { + yyDollar[2].columnType.NotNull = yyDollar[3].columnOptionListOpt.GetColumnOption(ColumnOptionNotNull).NotNull + yyDollar[2].columnType.Autoincrement = yyDollar[3].columnOptionListOpt.GetColumnOption(ColumnOptionAutoincrement).Autoincrement + yyDollar[2].columnType.Default = yyDollar[3].columnOptionListOpt.GetColumnOption(ColumnOptionDefault).Default + yyDollar[2].columnType.Comment = yyDollar[3].columnOptionListOpt.GetColumnOption(ColumnOptionComment).Comment + yyDollar[2].columnType.OnUpdate = yyDollar[3].columnOptionListOpt.GetColumnOption(ColumnOptionOnUpdate).OnUpdate + yyDollar[2].columnType.PrimaryKeyOpt = yyDollar[3].columnOptionListOpt.GetColumnOption(ColumnOptionKeyPrimaryOpt).PrimaryKeyOpt + yyDollar[2].columnType.UniqueKeyOpt = yyDollar[3].columnOptionListOpt.GetColumnOption(ColumnOptionKeyUniqueOpt).UniqueKeyOpt + yyDollar[2].columnType.Collate = yyDollar[3].columnOptionListOpt.GetColumnOption(ColumnOptionCollate).Collate + yyDollar[2].columnType.ColumnFormat = yyDollar[3].columnOptionListOpt.GetColumnOption(ColumnOptionFormat).ColumnFormat + yyDollar[2].columnType.Storage = yyDollar[3].columnOptionListOpt.GetColumnOption(ColumnOptionStorage).Storage + yyVAL.columnDefinition = &ColumnDefinition{Name: yyDollar[1].colIdent, Type: yyDollar[2].columnType} + } + case 171: + yyDollar = yyS[yypt-1 : yypt+1] + //line sql.y:1982 + { + yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) + } + case 172: + yyDollar = yyS[yypt-1 : yypt+1] + //line sql.y:1986 + { + yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) + } + case 173: + yyDollar = yyS[yypt-3 : yypt+1] + //line sql.y:1992 + { + yyVAL.columnType = yyDollar[1].columnType + yyVAL.columnType.Unsigned = yyDollar[2].boolVal + yyVAL.columnType.Zerofill = yyDollar[3].boolVal + } + case 176: + yyDollar = yyS[yypt-0 : yypt+1] + //line sql.y:2001 + { + yyVAL.columnOptionListOpt.ColOptList = []*ColumnOption{} + } + case 177: + yyDollar = yyS[yypt-1 : yypt+1] + //line sql.y:2005 + { + yyVAL.columnOptionListOpt.ColOptList = yyDollar[1].columnOptionList + } + case 178: + yyDollar = yyS[yypt-1 : yypt+1] + //line sql.y:2011 + { + yyVAL.columnOptionList = append(yyVAL.columnOptionList, yyDollar[1].columnOption) + } + case 179: + yyDollar = yyS[yypt-2 : yypt+1] + //line sql.y:2015 + { + yyVAL.columnOptionList = append(yyDollar[1].columnOptionList, yyDollar[2].columnOption) + } + case 180: + yyDollar = yyS[yypt-1 : yypt+1] + //line sql.y:2021 + { + yyVAL.columnOption = &ColumnOption{ + typ: ColumnOptionNotNull, + NotNull: yyDollar[1].boolVal, + } + } + case 181: + yyDollar = yyS[yypt-1 : yypt+1] + //line sql.y:2028 + { + yyVAL.columnOption = &ColumnOption{ + typ: ColumnOptionDefault, + Default: yyDollar[1].optVal, + } + } + case 182: + yyDollar = yyS[yypt-1 : yypt+1] + //line sql.y:2035 + { + yyVAL.columnOption = &ColumnOption{ + typ: ColumnOptionAutoincrement, + Autoincrement: yyDollar[1].boolVal, + } + } + case 183: + yyDollar = yyS[yypt-1 : yypt+1] + //line sql.y:2042 + { + yyVAL.columnOption = &ColumnOption{ + typ: ColumnOptionKeyPrimaryOpt, + PrimaryKeyOpt: yyDollar[1].colPrimaryKeyOpt, + } + } + case 184: + yyDollar = yyS[yypt-1 : yypt+1] + //line sql.y:2049 + { + yyVAL.columnOption = &ColumnOption{ + typ: ColumnOptionKeyUniqueOpt, + UniqueKeyOpt: yyDollar[1].colUniqueKeyOpt, + } + } + case 185: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1613 + //line sql.y:2056 + { + yyVAL.columnOption = &ColumnOption{ + typ: ColumnOptionComment, + Comment: yyDollar[1].optVal, + } + } + case 186: + yyDollar = yyS[yypt-1 : yypt+1] + //line sql.y:2063 + { + yyVAL.columnOption = &ColumnOption{ + typ: ColumnOptionOnUpdate, + OnUpdate: yyDollar[1].str, + } + } + case 187: + yyDollar = yyS[yypt-1 : yypt+1] + //line sql.y:2070 + { + yyVAL.columnOption = &ColumnOption{ + typ: ColumnOptionCollate, + Collate: yyDollar[1].optVal, + } + } + case 188: + yyDollar = yyS[yypt-1 : yypt+1] + //line sql.y:2077 + { + yyVAL.columnOption = &ColumnOption{ + typ: ColumnOptionFormat, + ColumnFormat: yyDollar[1].str, + } + } + case 189: + yyDollar = yyS[yypt-1 : yypt+1] + //line sql.y:2084 + { + yyVAL.columnOption = &ColumnOption{ + typ: ColumnOptionStorage, + Storage: yyDollar[1].str, + } + } + case 190: + yyDollar = yyS[yypt-2 : yypt+1] + //line sql.y:2093 + { + yyVAL.columnType = yyDollar[1].columnType + yyVAL.columnType.Length = yyDollar[2].optVal + } + case 191: + yyDollar = yyS[yypt-1 : yypt+1] + //line sql.y:2098 + { + yyVAL.columnType = yyDollar[1].columnType + } + case 192: + yyDollar = yyS[yypt-1 : yypt+1] + //line sql.y:2104 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 135: + case 193: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1617 + //line sql.y:2108 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 136: + case 194: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1621 + //line sql.y:2112 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 137: + case 195: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1625 + //line sql.y:2116 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 138: + case 196: + yyDollar = yyS[yypt-1 : yypt+1] + //line sql.y:2120 + { + yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} + } + case 197: + yyDollar = yyS[yypt-1 : yypt+1] + //line sql.y:2124 + { + yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} + } + case 198: + yyDollar = yyS[yypt-1 : yypt+1] + //line sql.y:2128 + { + yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} + } + case 199: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1631 + //line sql.y:2134 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length yyVAL.columnType.Scale = yyDollar[2].LengthScaleOption.Scale } - case 139: + case 200: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1637 + //line sql.y:2140 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length yyVAL.columnType.Scale = yyDollar[2].LengthScaleOption.Scale } - case 140: + case 201: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1643 + //line sql.y:2146 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length yyVAL.columnType.Scale = yyDollar[2].LengthScaleOption.Scale } - case 141: + case 202: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1649 + //line sql.y:2152 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length yyVAL.columnType.Scale = yyDollar[2].LengthScaleOption.Scale } - case 142: + case 203: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1655 + //line sql.y:2158 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length yyVAL.columnType.Scale = yyDollar[2].LengthScaleOption.Scale } - case 143: + case 204: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1663 + //line sql.y:2166 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 144: + case 205: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1667 + //line sql.y:2170 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal} } - case 145: + case 206: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1671 + //line sql.y:2174 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal} } - case 146: + case 207: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1675 + //line sql.y:2178 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal} } - case 147: + case 208: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1679 + //line sql.y:2182 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 148: - yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1685 + case 209: + yyDollar = yyS[yypt-3 : yypt+1] + //line sql.y:2188 { - yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal, Charset: yyDollar[3].str, Collate: yyDollar[4].str} + yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal, Charset: yyDollar[3].str} } - case 149: - yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1689 + case 210: + yyDollar = yyS[yypt-3 : yypt+1] + //line sql.y:2192 { - yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal, Charset: yyDollar[3].str, Collate: yyDollar[4].str} + yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal, Charset: yyDollar[3].str} } - case 150: + case 211: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1693 + //line sql.y:2196 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal} } - case 151: + case 212: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1697 + //line sql.y:2200 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal} } - case 152: - yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1701 + case 213: + yyDollar = yyS[yypt-2 : yypt+1] + //line sql.y:2204 { - yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Charset: yyDollar[2].str, Collate: yyDollar[3].str} + yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Charset: yyDollar[2].str} } - case 153: - yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1705 + case 214: + yyDollar = yyS[yypt-2 : yypt+1] + //line sql.y:2208 { - yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Charset: yyDollar[2].str, Collate: yyDollar[3].str} + yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Charset: yyDollar[2].str} } - case 154: - yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1709 + case 215: + yyDollar = yyS[yypt-2 : yypt+1] + //line sql.y:2212 { - yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Charset: yyDollar[2].str, Collate: yyDollar[3].str} + yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Charset: yyDollar[2].str} } - case 155: - yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1713 + case 216: + yyDollar = yyS[yypt-2 : yypt+1] + //line sql.y:2216 { - yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Charset: yyDollar[2].str, Collate: yyDollar[3].str} + yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Charset: yyDollar[2].str} } - case 156: + case 217: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1717 + //line sql.y:2220 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 157: + case 218: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1721 + //line sql.y:2224 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 158: + case 219: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1725 + //line sql.y:2228 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 159: + case 220: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1729 + //line sql.y:2232 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 160: + case 221: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1733 + //line sql.y:2236 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 161: + case 222: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1737 + //line sql.y:2240 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), EnumValues: yyDollar[3].strs} } - case 162: + case 223: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1743 + //line sql.y:2246 { yyVAL.strs = make([]string, 0, 4) yyVAL.strs = append(yyVAL.strs, "'"+string(yyDollar[1].bytes)+"'") } - case 163: + case 224: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1748 + //line sql.y:2251 { yyVAL.strs = append(yyDollar[1].strs, "'"+string(yyDollar[3].bytes)+"'") } - case 164: + case 225: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1753 + //line sql.y:2256 { yyVAL.optVal = nil } - case 165: + case 226: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1757 + //line sql.y:2260 { yyVAL.optVal = NewIntVal(yyDollar[2].bytes) } - case 166: + case 227: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1762 + //line sql.y:2265 { yyVAL.LengthScaleOption = LengthScaleOption{} } - case 167: + case 228: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1766 + //line sql.y:2269 { yyVAL.LengthScaleOption = LengthScaleOption{ Length: NewIntVal(yyDollar[2].bytes), Scale: NewIntVal(yyDollar[4].bytes), } } - case 168: + case 229: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1774 + //line sql.y:2277 { yyVAL.LengthScaleOption = LengthScaleOption{} } - case 169: + case 230: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1778 + //line sql.y:2281 { yyVAL.LengthScaleOption = LengthScaleOption{ Length: NewIntVal(yyDollar[2].bytes), } } - case 170: + case 231: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1784 + //line sql.y:2287 { yyVAL.LengthScaleOption = LengthScaleOption{ Length: NewIntVal(yyDollar[2].bytes), Scale: NewIntVal(yyDollar[4].bytes), } } - case 171: + case 232: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1792 + //line sql.y:2295 { yyVAL.boolVal = BoolVal(false) } - case 172: + case 233: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1796 + //line sql.y:2299 { yyVAL.boolVal = BoolVal(true) } - case 173: + case 234: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1801 + //line sql.y:2304 { yyVAL.boolVal = BoolVal(false) } - case 174: + case 235: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1805 + //line sql.y:2308 { yyVAL.boolVal = BoolVal(true) } - case 175: + case 236: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1812 + //line sql.y:2315 { yyVAL.boolVal = BoolVal(false) } - case 176: + case 237: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1816 + //line sql.y:2319 { yyVAL.boolVal = BoolVal(true) } - case 177: + case 238: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1822 + //line sql.y:2325 { yyVAL.optVal = NewStrVal(yyDollar[2].bytes) } - case 178: + case 239: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1826 + //line sql.y:2329 { yyVAL.optVal = NewIntVal(yyDollar[2].bytes) } - case 179: + case 240: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1830 + //line sql.y:2333 { yyVAL.optVal = NewFloatVal(yyDollar[2].bytes) } - case 180: + case 241: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1834 + //line sql.y:2337 { yyVAL.optVal = NewValArg(yyDollar[2].bytes) } - case 181: + case 242: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1838 + //line sql.y:2341 { yyVAL.optVal = NewValArg(yyDollar[2].bytes) } - case 182: + case 243: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1844 + //line sql.y:2347 { - yyVAL.optVal = NewValArg(yyDollar[3].bytes) + yyVAL.str = yyDollar[3].str } - case 183: + case 244: + yyDollar = yyS[yypt-1 : yypt+1] + //line sql.y:2353 + { + yyVAL.str = string(yyDollar[1].bytes) + } + case 245: + yyDollar = yyS[yypt-3 : yypt+1] + //line sql.y:2357 + { + yyVAL.str = string(yyDollar[1].bytes) + "(" + ")" + } + case 246: + yyDollar = yyS[yypt-4 : yypt+1] + //line sql.y:2361 + { + yyVAL.str = string(yyDollar[1].bytes) + "(" + string(yyDollar[3].bytes) + ")" + } + case 247: + yyDollar = yyS[yypt-1 : yypt+1] + //line sql.y:2369 + { + yyVAL.bytes = yyDollar[1].bytes + } + case 248: + yyDollar = yyS[yypt-1 : yypt+1] + //line sql.y:2373 + { + yyVAL.bytes = yyDollar[1].bytes + } + case 249: + yyDollar = yyS[yypt-1 : yypt+1] + //line sql.y:2377 + { + yyVAL.bytes = yyDollar[1].bytes + } + case 250: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1850 + //line sql.y:2384 { yyVAL.boolVal = BoolVal(true) } - case 184: + case 251: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1855 + //line sql.y:2389 { yyVAL.str = "" } - case 185: + case 252: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1859 + //line sql.y:2393 { yyVAL.str = string(yyDollar[3].bytes) } - case 186: + case 253: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1863 + //line sql.y:2397 { yyVAL.str = string(yyDollar[3].bytes) } - case 187: + case 254: + yyDollar = yyS[yypt-2 : yypt+1] + //line sql.y:2404 + { + yyVAL.optVal = yyDollar[2].optVal + } + case 255: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1868 + //line sql.y:2409 { yyVAL.str = "" } - case 188: + case 256: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1872 + //line sql.y:2413 { yyVAL.str = string(yyDollar[2].bytes) } - case 189: + case 257: + yyDollar = yyS[yypt-2 : yypt+1] + //line sql.y:2419 + { + yyVAL.str = string(yyDollar[2].bytes) + } + case 258: + yyDollar = yyS[yypt-2 : yypt+1] + //line sql.y:2423 + { + yyVAL.str = string(yyDollar[2].bytes) + } + case 259: + yyDollar = yyS[yypt-2 : yypt+1] + //line sql.y:2427 + { + yyVAL.str = string(yyDollar[2].bytes) + } + case 260: + yyDollar = yyS[yypt-2 : yypt+1] + //line sql.y:2433 + { + // "default" is not in official doc: https://dev.mysql.com/doc/refman/5.7/en/create-table.html + // but actually mysql support it, see: https://github.com/mysql/mysql-server/blob/5.7/sql/sql_yacc.yy#L6953 + yyVAL.str = string(yyDollar[2].bytes) + } + case 261: + yyDollar = yyS[yypt-2 : yypt+1] + //line sql.y:2439 + { + yyVAL.str = string(yyDollar[2].bytes) + } + case 262: + yyDollar = yyS[yypt-2 : yypt+1] + //line sql.y:2443 + { + yyVAL.str = string(yyDollar[2].bytes) + } + case 263: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1878 + //line sql.y:2449 { yyVAL.colPrimaryKeyOpt = ColKeyPrimary } - case 190: + case 264: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1882 + //line sql.y:2453 { // KEY is normally a synonym for INDEX. The key attribute PRIMARY KEY // can also be specified as just KEY when given in a column definition. // See http://dev.mysql.com/doc/refman/5.7/en/create-table.html yyVAL.colPrimaryKeyOpt = ColKeyPrimary } - case 191: + case 265: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1891 + //line sql.y:2462 { yyVAL.colUniqueKeyOpt = ColKeyUniqueKey } - case 192: + case 266: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1895 + //line sql.y:2466 { yyVAL.colUniqueKeyOpt = ColKeyUniqueKey } - case 193: + case 267: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1901 + //line sql.y:2472 { yyVAL.optVal = NewStrVal(yyDollar[2].bytes) } - case 194: + case 268: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1907 + //line sql.y:2478 { yyVAL.indexDefinition = &IndexDefinition{ Type: string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes), @@ -3509,9 +4394,9 @@ yydefault: Unique: true, } } - case 195: + case 269: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1917 + //line sql.y:2488 { yyVAL.indexDefinition = &IndexDefinition{ Type: string(yyDollar[1].bytes) + " " + string(yyDollar[2].str), @@ -3521,9 +4406,9 @@ yydefault: Unique: true, } } - case 196: + case 270: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:1927 + //line sql.y:2498 { yyVAL.indexDefinition = &IndexDefinition{ Type: string(yyDollar[1].bytes), @@ -3533,9 +4418,9 @@ yydefault: Unique: true, } } - case 197: + case 271: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:1937 + //line sql.y:2508 { yyVAL.indexDefinition = &IndexDefinition{ Type: string(yyDollar[1].str), @@ -3545,9 +4430,9 @@ yydefault: Unique: false, } } - case 198: + case 272: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1947 + //line sql.y:2518 { yyVAL.indexDefinition = &IndexDefinition{ Type: string(yyDollar[1].bytes) + " " + string(yyDollar[2].str), @@ -3557,9 +4442,9 @@ yydefault: Unique: false, } } - case 199: + case 273: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1957 + //line sql.y:2528 { yyVAL.indexDefinition = &IndexDefinition{ Type: string(yyDollar[1].bytes) + " " + string(yyDollar[2].str), @@ -3569,89 +4454,89 @@ yydefault: Unique: false, } } - case 200: + case 274: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1969 + //line sql.y:2540 { yyVAL.str = string(yyDollar[1].bytes) } - case 201: + case 275: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1973 + //line sql.y:2544 { yyVAL.str = string(yyDollar[1].bytes) } - case 202: + case 276: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1979 + //line sql.y:2550 { yyVAL.indexColumns = []*IndexColumn{yyDollar[1].indexColumn} } - case 203: + case 277: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1983 + //line sql.y:2554 { yyVAL.indexColumns = append(yyVAL.indexColumns, yyDollar[3].indexColumn) } - case 204: + case 278: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1989 + //line sql.y:2560 { yyVAL.indexColumn = &IndexColumn{Column: yyDollar[1].colIdent, Length: yyDollar[2].optVal} } - case 205: + case 279: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:1995 + //line sql.y:2566 { yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[4].tableName, NewName: yyDollar[4].tableName} } - case 206: + case 280: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1999 + //line sql.y:2570 { // Change this to a rename statement yyVAL.statement = &DDL{Action: RenameStr, Table: yyDollar[4].tableName, NewName: yyDollar[7].tableName} } - case 207: + case 281: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:2004 + //line sql.y:2575 { // Rename an index can just be an alter yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[4].tableName, NewName: yyDollar[4].tableName} } - case 208: + case 282: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:2009 + //line sql.y:2580 { yyVAL.statement = &DDL{Action: AlterEngineStr, Table: yyDollar[4].tableName, NewName: yyDollar[4].tableName, Engine: string(yyDollar[7].bytes)} } - case 209: + case 283: yyDollar = yyS[yypt-9 : yypt+1] -//line sql.y:2013 + //line sql.y:2584 { yyVAL.statement = &DDL{Action: AlterCharsetStr, Table: yyDollar[4].tableName, NewName: yyDollar[4].tableName, Charset: string(yyDollar[9].bytes)} } - case 210: + case 284: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:2017 + //line sql.y:2588 { yyVAL.statement = &DDL{Action: AlterAddColumnStr, Table: yyDollar[4].tableName, NewName: yyDollar[4].tableName, TableSpec: yyDollar[7].TableSpec} } - case 211: + case 285: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:2021 + //line sql.y:2592 { yyVAL.statement = &DDL{Action: AlterDropColumnStr, Table: yyDollar[4].tableName, NewName: yyDollar[4].tableName, DropColumnName: string(yyDollar[7].bytes)} } - case 212: + case 286: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:2025 + //line sql.y:2596 { yyVAL.statement = &DDL{Action: AlterModifyColumnStr, Table: yyDollar[4].tableName, NewName: yyDollar[4].tableName, ModifyColumnDef: yyDollar[7].columnDefinition} } - case 213: + case 287: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2031 + //line sql.y:2602 { var exists bool if yyDollar[3].byt != 0 { @@ -3659,16 +4544,16 @@ yydefault: } yyVAL.statement = &DDL{Action: DropTableStr, Tables: yyDollar[4].tableNames, IfExists: exists} } - case 214: + case 288: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2039 + //line sql.y:2610 { // Change this to an alter statement yyVAL.statement = &DDL{Action: DropIndexStr, IndexName: string(yyDollar[3].bytes), Table: yyDollar[5].tableName, NewName: yyDollar[5].tableName} } - case 215: + case 289: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2044 + //line sql.y:2615 { var exists bool if yyDollar[3].byt != 0 { @@ -3676,628 +4561,628 @@ yydefault: } yyVAL.statement = &DDL{Action: DropDBStr, Database: yyDollar[4].tableIdent, IfExists: exists} } - case 216: + case 290: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2054 + //line sql.y:2625 { yyVAL.tableNames = TableNames{yyDollar[1].tableName} } - case 217: + case 291: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2058 + //line sql.y:2629 { yyVAL.tableNames = append(yyVAL.tableNames, yyDollar[3].tableName) } - case 218: + case 292: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2064 + //line sql.y:2635 { yyVAL.statement = &DDL{Action: TruncateTableStr, Table: yyDollar[3].tableName, NewName: yyDollar[3].tableName} } - case 219: + case 293: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2070 + //line sql.y:2641 { yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[3].tableName, NewName: yyDollar[3].tableName} } - case 220: + case 294: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2076 + //line sql.y:2647 { yyVAL.statement = &Xa{} } - case 221: + case 295: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2082 + //line sql.y:2653 { yyVAL.statement = &Explain{} } - case 222: + case 296: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2088 + //line sql.y:2659 { yyVAL.statement = &Kill{QueryID: &NumVal{raw: string(yyDollar[2].bytes)}} } - case 223: + case 297: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2092 + //line sql.y:2663 { yyVAL.statement = &Kill{QueryID: &NumVal{raw: string(yyDollar[3].bytes)}} } - case 224: + case 298: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2098 + //line sql.y:2669 { yyVAL.statement = &Transaction{Action: BeginTxnStr} } - case 225: + case 299: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2102 + //line sql.y:2673 { yyVAL.statement = &Transaction{Action: StartTxnStr} } - case 226: + case 300: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2106 + //line sql.y:2677 { yyVAL.statement = &Transaction{Action: RollbackTxnStr} } - case 227: + case 301: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2110 + //line sql.y:2681 { yyVAL.statement = &Transaction{Action: CommitTxnStr} } - case 228: + case 302: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2116 + //line sql.y:2687 { yyVAL.statement = &Radon{Action: AttachStr, Row: yyDollar[3].valTuple} } - case 229: + case 303: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2120 + //line sql.y:2691 { yyVAL.statement = &Radon{Action: DetachStr, Row: yyDollar[3].valTuple} } - case 230: + case 304: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2124 + //line sql.y:2695 { yyVAL.statement = &Radon{Action: AttachListStr} } - case 231: + case 305: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2128 + //line sql.y:2699 { yyVAL.statement = &Radon{Action: ReshardStr, Table: yyDollar[3].tableName, NewName: yyDollar[5].tableName} } - case 232: + case 306: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2132 + //line sql.y:2703 { yyVAL.statement = &Radon{Action: CleanupStr} } - case 233: + case 307: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2138 + //line sql.y:2709 { yyVAL.statement = &Show{Type: ShowBinlogEventsStr, From: yyDollar[4].str, Limit: yyDollar[5].limit} } - case 234: + case 308: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2142 + //line sql.y:2713 { yyVAL.statement = &Show{Type: ShowCreateTableStr, Table: yyDollar[4].tableName} } - case 235: + case 309: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2146 + //line sql.y:2717 { yyVAL.statement = &Show{Type: ShowCreateDatabaseStr, Database: yyDollar[4].tableName} } - case 236: + case 310: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2150 + //line sql.y:2721 { yyVAL.statement = &Show{Type: ShowDatabasesStr} } - case 237: + case 311: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2154 + //line sql.y:2725 { yyVAL.statement = &Show{Type: ShowEnginesStr} } - case 238: + case 312: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2158 + //line sql.y:2729 { yyVAL.statement = &Show{Full: yyDollar[2].str, Type: ShowTablesStr, Database: yyDollar[4].tableName, Filter: yyDollar[5].showFilter} } - case 239: + case 313: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2162 + //line sql.y:2733 { yyVAL.statement = &Show{Full: yyDollar[2].str, Type: ShowColumnsStr, Table: yyDollar[5].tableName, Filter: yyDollar[6].showFilter} } - case 240: + case 314: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2166 + //line sql.y:2737 { yyVAL.statement = &Show{Type: ShowProcesslistStr} } - case 241: + case 315: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2170 + //line sql.y:2741 { yyVAL.statement = &Show{Type: ShowQueryzStr} } - case 242: + case 316: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2174 + //line sql.y:2745 { yyVAL.statement = &Show{Type: ShowStatusStr} } - case 243: + case 317: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2178 + //line sql.y:2749 { yyVAL.statement = &Show{Type: ShowTableStatusStr, Database: yyDollar[4].tableName} } - case 244: + case 318: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2182 + //line sql.y:2753 { yyVAL.statement = &Show{Type: ShowTxnzStr} } - case 245: + case 319: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2186 + //line sql.y:2757 { yyVAL.statement = &Show{Type: ShowVariablesStr} } - case 246: + case 320: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2190 + //line sql.y:2761 { yyVAL.statement = &Show{Type: ShowVersionsStr} } - case 247: + case 321: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2194 + //line sql.y:2765 { yyVAL.statement = &Show{Type: ShowWarningsStr} } - case 248: + case 322: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2198 + //line sql.y:2769 { yyVAL.statement = &Show{Type: ShowUnsupportedStr} } - case 249: + case 323: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2203 + //line sql.y:2774 { yyVAL.str = "" } - case 250: + case 324: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2207 + //line sql.y:2778 { yyVAL.str = string(yyDollar[3].bytes) } - case 251: + case 325: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2212 + //line sql.y:2783 { yyVAL.tableName = TableName{} } - case 252: + case 326: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2216 + //line sql.y:2787 { yyVAL.tableName = yyDollar[2].tableName } - case 253: + case 327: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2222 + //line sql.y:2793 { yyVAL.str = "" } - case 254: + case 328: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2226 + //line sql.y:2797 { yyVAL.str = "full " } - case 255: + case 329: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2232 + //line sql.y:2803 { yyVAL.str = string(yyDollar[1].bytes) } - case 256: + case 330: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2236 + //line sql.y:2807 { yyVAL.str = string(yyDollar[1].bytes) } - case 257: + case 331: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2242 + //line sql.y:2813 { yyVAL.showFilter = nil } - case 258: + case 332: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2246 + //line sql.y:2817 { yyVAL.showFilter = &ShowFilter{Like: string(yyDollar[2].bytes)} } - case 259: + case 333: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2250 + //line sql.y:2821 { yyVAL.showFilter = &ShowFilter{Filter: yyDollar[2].expr} } - case 260: + case 334: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2256 + //line sql.y:2827 { yyVAL.statement = &Checksum{Table: yyDollar[3].tableName} } - case 261: + case 335: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2262 + //line sql.y:2833 { yyVAL.statement = &Use{DBName: yyDollar[2].tableIdent} } - case 262: + case 336: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2268 + //line sql.y:2839 { yyVAL.statement = &OtherRead{} } - case 263: + case 337: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2272 + //line sql.y:2843 { yyVAL.statement = &OtherRead{} } - case 264: + case 338: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2276 + //line sql.y:2847 { yyVAL.statement = &OtherAdmin{} } - case 265: + case 339: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2280 + //line sql.y:2851 { yyVAL.statement = &OtherAdmin{} } - case 266: + case 340: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2285 + //line sql.y:2856 { setAllowComments(yylex, true) } - case 267: + case 341: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2288 + //line sql.y:2859 { yyVAL.bytes2 = yyDollar[2].bytes2 setAllowComments(yylex, false) } - case 268: + case 342: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2294 + //line sql.y:2865 { yyVAL.bytes2 = nil } - case 269: + case 343: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2298 + //line sql.y:2869 { yyVAL.bytes2 = append(yyDollar[1].bytes2, yyDollar[2].bytes) } - case 270: + case 344: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2304 + //line sql.y:2875 { yyVAL.str = UnionStr } - case 271: + case 345: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2308 + //line sql.y:2879 { yyVAL.str = UnionAllStr } - case 272: + case 346: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2312 + //line sql.y:2883 { yyVAL.str = UnionDistinctStr } - case 273: + case 347: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2317 + //line sql.y:2888 { yyVAL.str = "" } - case 274: + case 348: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2321 + //line sql.y:2892 { yyVAL.str = SQLNoCacheStr } - case 275: + case 349: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2325 + //line sql.y:2896 { yyVAL.str = SQLCacheStr } - case 276: + case 350: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2330 + //line sql.y:2901 { yyVAL.str = "" } - case 277: + case 351: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2334 + //line sql.y:2905 { yyVAL.str = DistinctStr } - case 278: + case 352: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2339 + //line sql.y:2910 { yyVAL.str = "" } - case 279: + case 353: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2343 + //line sql.y:2914 { yyVAL.str = StraightJoinHint } - case 280: + case 354: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2348 + //line sql.y:2919 { yyVAL.selectExprs = nil } - case 281: + case 355: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2352 + //line sql.y:2923 { yyVAL.selectExprs = yyDollar[1].selectExprs } - case 282: + case 356: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2358 + //line sql.y:2929 { yyVAL.selectExprs = SelectExprs{yyDollar[1].selectExpr} } - case 283: + case 357: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2362 + //line sql.y:2933 { yyVAL.selectExprs = append(yyVAL.selectExprs, yyDollar[3].selectExpr) } - case 284: + case 358: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2368 + //line sql.y:2939 { yyVAL.selectExpr = &StarExpr{} } - case 285: + case 359: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2372 + //line sql.y:2943 { yyVAL.selectExpr = &AliasedExpr{Expr: yyDollar[1].expr, As: yyDollar[2].colIdent} } - case 286: + case 360: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2376 + //line sql.y:2947 { yyVAL.selectExpr = &StarExpr{TableName: TableName{Name: yyDollar[1].tableIdent}} } - case 287: + case 361: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2380 + //line sql.y:2951 { yyVAL.selectExpr = &StarExpr{TableName: TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent}} } - case 288: + case 362: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2385 + //line sql.y:2956 { yyVAL.colIdent = ColIdent{} } - case 289: + case 363: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2389 + //line sql.y:2960 { yyVAL.colIdent = yyDollar[1].colIdent } - case 290: + case 364: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2393 + //line sql.y:2964 { yyVAL.colIdent = yyDollar[2].colIdent } - case 292: + case 366: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2400 + //line sql.y:2971 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 293: + case 367: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2405 + //line sql.y:2976 { yyVAL.tableExprs = TableExprs{&AliasedTableExpr{Expr: TableName{Name: NewTableIdent("dual")}}} } - case 294: + case 368: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2409 + //line sql.y:2980 { yyVAL.tableExprs = yyDollar[2].tableExprs } - case 295: + case 369: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2415 + //line sql.y:2986 { yyVAL.tableExprs = TableExprs{yyDollar[1].tableExpr} } - case 296: + case 370: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2419 + //line sql.y:2990 { yyVAL.tableExprs = append(yyVAL.tableExprs, yyDollar[3].tableExpr) } - case 299: + case 373: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2429 + //line sql.y:3000 { yyVAL.tableExpr = yyDollar[1].aliasedTableName } - case 300: + case 374: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2433 + //line sql.y:3004 { yyVAL.tableExpr = &AliasedTableExpr{Expr: yyDollar[1].subquery, As: yyDollar[3].tableIdent} } - case 301: + case 375: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2437 + //line sql.y:3008 { yyVAL.tableExpr = &ParenTableExpr{Exprs: yyDollar[2].tableExprs} } - case 302: + case 376: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2443 + //line sql.y:3014 { yyVAL.aliasedTableName = &AliasedTableExpr{Expr: yyDollar[1].tableName, As: yyDollar[2].tableIdent, Hints: yyDollar[3].indexHints} } - case 303: + case 377: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2456 + //line sql.y:3027 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr} } - case 304: + case 378: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2460 + //line sql.y:3031 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr, On: yyDollar[5].expr} } - case 305: + case 379: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2464 + //line sql.y:3035 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr, On: yyDollar[5].expr} } - case 306: + case 380: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2468 + //line sql.y:3039 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr} } - case 307: + case 381: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2473 + //line sql.y:3044 { yyVAL.empty = struct{}{} } - case 308: + case 382: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2477 + //line sql.y:3048 { yyVAL.empty = struct{}{} } - case 309: + case 383: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2482 + //line sql.y:3053 { yyVAL.tableIdent = NewTableIdent("") } - case 310: + case 384: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2486 + //line sql.y:3057 { yyVAL.tableIdent = yyDollar[1].tableIdent } - case 311: + case 385: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2490 + //line sql.y:3061 { yyVAL.tableIdent = yyDollar[2].tableIdent } - case 313: + case 387: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2497 + //line sql.y:3068 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } - case 314: + case 388: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2503 + //line sql.y:3074 { yyVAL.str = JoinStr } - case 315: + case 389: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2507 + //line sql.y:3078 { yyVAL.str = JoinStr } - case 316: + case 390: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2511 + //line sql.y:3082 { yyVAL.str = JoinStr } - case 317: + case 391: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2515 + //line sql.y:3086 { yyVAL.str = StraightJoinStr } - case 318: + case 392: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2521 + //line sql.y:3092 { yyVAL.str = LeftJoinStr } - case 319: + case 393: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2525 + //line sql.y:3096 { yyVAL.str = LeftJoinStr } - case 320: + case 394: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2529 + //line sql.y:3100 { yyVAL.str = RightJoinStr } - case 321: + case 395: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2533 + //line sql.y:3104 { yyVAL.str = RightJoinStr } - case 322: + case 396: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2539 + //line sql.y:3110 { yyVAL.str = NaturalJoinStr } - case 323: + case 397: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2543 + //line sql.y:3114 { if yyDollar[2].str == LeftJoinStr { yyVAL.str = NaturalLeftJoinStr @@ -4305,459 +5190,459 @@ yydefault: yyVAL.str = NaturalRightJoinStr } } - case 324: + case 398: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2553 + //line sql.y:3124 { yyVAL.tableName = yyDollar[2].tableName } - case 325: + case 399: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2557 + //line sql.y:3128 { yyVAL.tableName = yyDollar[1].tableName } - case 326: + case 400: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2563 + //line sql.y:3134 { yyVAL.tableName = TableName{Name: yyDollar[1].tableIdent} } - case 327: + case 401: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2567 + //line sql.y:3138 { yyVAL.tableName = TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent} } - case 328: + case 402: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2572 + //line sql.y:3143 { yyVAL.indexHints = nil } - case 329: + case 403: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2576 + //line sql.y:3147 { yyVAL.indexHints = &IndexHints{Type: UseStr, Indexes: yyDollar[4].colIdents} } - case 330: + case 404: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2580 + //line sql.y:3151 { yyVAL.indexHints = &IndexHints{Type: IgnoreStr, Indexes: yyDollar[4].colIdents} } - case 331: + case 405: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2584 + //line sql.y:3155 { yyVAL.indexHints = &IndexHints{Type: ForceStr, Indexes: yyDollar[4].colIdents} } - case 332: + case 406: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2590 + //line sql.y:3161 { yyVAL.colIdents = []ColIdent{yyDollar[1].colIdent} } - case 333: + case 407: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2594 + //line sql.y:3165 { yyVAL.colIdents = append(yyDollar[1].colIdents, yyDollar[3].colIdent) } - case 334: + case 408: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2599 + //line sql.y:3170 { yyVAL.expr = nil } - case 335: + case 409: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2603 + //line sql.y:3174 { yyVAL.expr = yyDollar[2].expr } - case 336: + case 410: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2609 + //line sql.y:3180 { yyVAL.expr = yyDollar[1].expr } - case 337: + case 411: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2613 + //line sql.y:3184 { yyVAL.expr = &AndExpr{Left: yyDollar[1].expr, Right: yyDollar[3].expr} } - case 338: + case 412: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2617 + //line sql.y:3188 { yyVAL.expr = &OrExpr{Left: yyDollar[1].expr, Right: yyDollar[3].expr} } - case 339: + case 413: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2621 + //line sql.y:3192 { yyVAL.expr = &NotExpr{Expr: yyDollar[2].expr} } - case 340: + case 414: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2625 + //line sql.y:3196 { yyVAL.expr = &IsExpr{Operator: yyDollar[3].str, Expr: yyDollar[1].expr} } - case 341: + case 415: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2629 + //line sql.y:3200 { yyVAL.expr = yyDollar[1].expr } - case 342: + case 416: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2633 + //line sql.y:3204 { yyVAL.expr = &Default{ColName: yyDollar[2].str} } - case 343: + case 417: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2639 + //line sql.y:3210 { yyVAL.str = "" } - case 344: + case 418: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2643 + //line sql.y:3214 { yyVAL.str = string(yyDollar[2].bytes) } - case 345: + case 419: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2649 + //line sql.y:3220 { yyVAL.boolVal = BoolVal(true) } - case 346: + case 420: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2653 + //line sql.y:3224 { yyVAL.boolVal = BoolVal(false) } - case 347: + case 421: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2659 + //line sql.y:3230 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: yyDollar[2].str, Right: yyDollar[3].expr} } - case 348: + case 422: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2663 + //line sql.y:3234 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: InStr, Right: yyDollar[3].colTuple} } - case 349: + case 423: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2667 + //line sql.y:3238 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotInStr, Right: yyDollar[4].colTuple} } - case 350: + case 424: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2671 + //line sql.y:3242 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: LikeStr, Right: yyDollar[3].expr, Escape: yyDollar[4].expr} } - case 351: + case 425: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2675 + //line sql.y:3246 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotLikeStr, Right: yyDollar[4].expr, Escape: yyDollar[5].expr} } - case 352: + case 426: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2679 + //line sql.y:3250 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: RegexpStr, Right: yyDollar[3].expr} } - case 353: + case 427: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2683 + //line sql.y:3254 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotRegexpStr, Right: yyDollar[4].expr} } - case 354: + case 428: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2687 + //line sql.y:3258 { yyVAL.expr = &RangeCond{Left: yyDollar[1].expr, Operator: BetweenStr, From: yyDollar[3].expr, To: yyDollar[5].expr} } - case 355: + case 429: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2691 + //line sql.y:3262 { yyVAL.expr = &RangeCond{Left: yyDollar[1].expr, Operator: NotBetweenStr, From: yyDollar[4].expr, To: yyDollar[6].expr} } - case 356: + case 430: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2695 + //line sql.y:3266 { yyVAL.expr = &ExistsExpr{Subquery: yyDollar[2].subquery} } - case 357: + case 431: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2701 + //line sql.y:3272 { yyVAL.str = IsNullStr } - case 358: + case 432: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2705 + //line sql.y:3276 { yyVAL.str = IsNotNullStr } - case 359: + case 433: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2709 + //line sql.y:3280 { yyVAL.str = IsTrueStr } - case 360: + case 434: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2713 + //line sql.y:3284 { yyVAL.str = IsNotTrueStr } - case 361: + case 435: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2717 + //line sql.y:3288 { yyVAL.str = IsFalseStr } - case 362: + case 436: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2721 + //line sql.y:3292 { yyVAL.str = IsNotFalseStr } - case 363: + case 437: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2727 + //line sql.y:3298 { yyVAL.str = EqualStr } - case 364: + case 438: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2731 + //line sql.y:3302 { yyVAL.str = LessThanStr } - case 365: + case 439: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2735 + //line sql.y:3306 { yyVAL.str = GreaterThanStr } - case 366: + case 440: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2739 + //line sql.y:3310 { yyVAL.str = LessEqualStr } - case 367: + case 441: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2743 + //line sql.y:3314 { yyVAL.str = GreaterEqualStr } - case 368: + case 442: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2747 + //line sql.y:3318 { yyVAL.str = NotEqualStr } - case 369: + case 443: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2751 + //line sql.y:3322 { yyVAL.str = NullSafeEqualStr } - case 370: + case 444: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2756 + //line sql.y:3327 { yyVAL.expr = nil } - case 371: + case 445: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2760 + //line sql.y:3331 { yyVAL.expr = yyDollar[2].expr } - case 372: + case 446: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2766 + //line sql.y:3337 { yyVAL.colTuple = yyDollar[1].valTuple } - case 373: + case 447: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2770 + //line sql.y:3341 { yyVAL.colTuple = yyDollar[1].subquery } - case 374: + case 448: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2774 + //line sql.y:3345 { yyVAL.colTuple = ListArg(yyDollar[1].bytes) } - case 375: + case 449: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2780 + //line sql.y:3351 { yyVAL.subquery = &Subquery{yyDollar[2].selStmt} } - case 376: + case 450: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2786 + //line sql.y:3357 { yyVAL.exprs = Exprs{yyDollar[1].expr} } - case 377: + case 451: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2790 + //line sql.y:3361 { yyVAL.exprs = append(yyDollar[1].exprs, yyDollar[3].expr) } - case 378: + case 452: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2796 + //line sql.y:3367 { yyVAL.expr = yyDollar[1].expr } - case 379: + case 453: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2800 + //line sql.y:3371 { yyVAL.expr = yyDollar[1].boolVal } - case 380: + case 454: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2804 + //line sql.y:3375 { yyVAL.expr = yyDollar[1].colName } - case 381: + case 455: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2808 + //line sql.y:3379 { yyVAL.expr = yyDollar[1].expr } - case 382: + case 456: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2812 + //line sql.y:3383 { yyVAL.expr = yyDollar[1].subquery } - case 383: + case 457: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2816 + //line sql.y:3387 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitAndStr, Right: yyDollar[3].expr} } - case 384: + case 458: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2820 + //line sql.y:3391 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitOrStr, Right: yyDollar[3].expr} } - case 385: + case 459: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2824 + //line sql.y:3395 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitXorStr, Right: yyDollar[3].expr} } - case 386: + case 460: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2828 + //line sql.y:3399 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: PlusStr, Right: yyDollar[3].expr} } - case 387: + case 461: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2832 + //line sql.y:3403 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: MinusStr, Right: yyDollar[3].expr} } - case 388: + case 462: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2836 + //line sql.y:3407 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: MultStr, Right: yyDollar[3].expr} } - case 389: + case 463: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2840 + //line sql.y:3411 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: DivStr, Right: yyDollar[3].expr} } - case 390: + case 464: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2844 + //line sql.y:3415 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: IntDivStr, Right: yyDollar[3].expr} } - case 391: + case 465: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2848 + //line sql.y:3419 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ModStr, Right: yyDollar[3].expr} } - case 392: + case 466: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2852 + //line sql.y:3423 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ModStr, Right: yyDollar[3].expr} } - case 393: + case 467: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2856 + //line sql.y:3427 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ShiftLeftStr, Right: yyDollar[3].expr} } - case 394: + case 468: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2860 + //line sql.y:3431 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ShiftRightStr, Right: yyDollar[3].expr} } - case 395: + case 469: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2864 + //line sql.y:3435 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].colName, Operator: JSONExtractOp, Right: yyDollar[3].expr} } - case 396: + case 470: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2868 + //line sql.y:3439 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].colName, Operator: JSONUnquoteExtractOp, Right: yyDollar[3].expr} } - case 397: + case 471: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2872 + //line sql.y:3443 { yyVAL.expr = &CollateExpr{Expr: yyDollar[1].expr, Charset: yyDollar[3].str} } - case 398: + case 472: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2876 + //line sql.y:3447 { yyVAL.expr = &UnaryExpr{Operator: BinaryStr, Expr: yyDollar[2].expr} } - case 399: + case 473: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2880 + //line sql.y:3451 { if num, ok := yyDollar[2].expr.(*SQLVal); ok && num.Type == IntVal { yyVAL.expr = num @@ -4765,9 +5650,9 @@ yydefault: yyVAL.expr = &UnaryExpr{Operator: UPlusStr, Expr: yyDollar[2].expr} } } - case 400: + case 474: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2888 + //line sql.y:3459 { if num, ok := yyDollar[2].expr.(*SQLVal); ok && num.Type == IntVal { // Handle double negative @@ -4781,21 +5666,21 @@ yydefault: yyVAL.expr = &UnaryExpr{Operator: UMinusStr, Expr: yyDollar[2].expr} } } - case 401: + case 475: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2902 + //line sql.y:3473 { yyVAL.expr = &UnaryExpr{Operator: TildaStr, Expr: yyDollar[2].expr} } - case 402: + case 476: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2906 + //line sql.y:3477 { yyVAL.expr = &UnaryExpr{Operator: BangStr, Expr: yyDollar[2].expr} } - case 403: + case 477: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2910 + //line sql.y:3481 { // This rule prevents the usage of INTERVAL // as a function. If support is needed for that, @@ -4803,389 +5688,389 @@ yydefault: // will be non-trivial because of grammar conflicts. yyVAL.expr = &IntervalExpr{Expr: yyDollar[2].expr, Unit: yyDollar[3].colIdent.String()} } - case 408: + case 482: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2928 + //line sql.y:3499 { yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Exprs: yyDollar[3].selectExprs} } - case 409: + case 483: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2932 + //line sql.y:3503 { yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Distinct: true, Exprs: yyDollar[4].selectExprs} } - case 410: + case 484: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2936 + //line sql.y:3507 { yyVAL.expr = &FuncExpr{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].colIdent, Exprs: yyDollar[5].selectExprs} } - case 411: + case 485: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2946 + //line sql.y:3517 { yyVAL.expr = &FuncExpr{Name: NewColIdent("left"), Exprs: yyDollar[3].selectExprs} } - case 412: + case 486: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2950 + //line sql.y:3521 { yyVAL.expr = &FuncExpr{Name: NewColIdent("right"), Exprs: yyDollar[3].selectExprs} } - case 413: + case 487: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2954 + //line sql.y:3525 { yyVAL.expr = &ConvertExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].convertType} } - case 414: + case 488: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2958 + //line sql.y:3529 { yyVAL.expr = &ConvertExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].convertType} } - case 415: + case 489: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2962 + //line sql.y:3533 { yyVAL.expr = &ConvertUsingExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].str} } - case 416: + case 490: yyDollar = yyS[yypt-9 : yypt+1] -//line sql.y:2966 + //line sql.y:3537 { yyVAL.expr = &MatchExpr{Columns: yyDollar[3].selectExprs, Expr: yyDollar[7].expr, Option: yyDollar[8].str} } - case 417: + case 491: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:2970 + //line sql.y:3541 { yyVAL.expr = &GroupConcatExpr{Distinct: yyDollar[3].str, Exprs: yyDollar[4].selectExprs, OrderBy: yyDollar[5].orderBy, Separator: yyDollar[6].str} } - case 418: + case 492: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2974 + //line sql.y:3545 { yyVAL.expr = &CaseExpr{Expr: yyDollar[2].expr, Whens: yyDollar[3].whens, Else: yyDollar[4].expr} } - case 419: + case 493: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2978 + //line sql.y:3549 { yyVAL.expr = &ValuesFuncExpr{Name: yyDollar[3].colIdent} } - case 420: + case 494: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2988 + //line sql.y:3559 { yyVAL.expr = &FuncExpr{Name: NewColIdent("current_timestamp")} } - case 421: + case 495: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2992 + //line sql.y:3563 { yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_timestamp")} } - case 422: + case 496: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2996 + //line sql.y:3567 { yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_time")} } - case 423: + case 497: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3000 + //line sql.y:3571 { yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_date")} } - case 424: + case 498: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3005 + //line sql.y:3576 { yyVAL.expr = &FuncExpr{Name: NewColIdent("localtime")} } - case 425: + case 499: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3010 + //line sql.y:3581 { yyVAL.expr = &FuncExpr{Name: NewColIdent("localtimestamp")} } - case 426: + case 500: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3015 + //line sql.y:3586 { yyVAL.expr = &FuncExpr{Name: NewColIdent("current_date")} } - case 427: + case 501: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3020 + //line sql.y:3591 { yyVAL.expr = &FuncExpr{Name: NewColIdent("current_time")} } - case 430: + case 504: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3035 + //line sql.y:3606 { yyVAL.expr = &FuncExpr{Name: NewColIdent("if"), Exprs: yyDollar[3].selectExprs} } - case 431: + case 505: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3039 + //line sql.y:3610 { yyVAL.expr = &FuncExpr{Name: NewColIdent("database"), Exprs: yyDollar[3].selectExprs} } - case 432: + case 506: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3043 + //line sql.y:3614 { yyVAL.expr = &FuncExpr{Name: NewColIdent("mod"), Exprs: yyDollar[3].selectExprs} } - case 433: + case 507: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3047 + //line sql.y:3618 { yyVAL.expr = &FuncExpr{Name: NewColIdent("replace"), Exprs: yyDollar[3].selectExprs} } - case 434: + case 508: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3053 + //line sql.y:3624 { yyVAL.str = "" } - case 435: + case 509: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3057 + //line sql.y:3628 { yyVAL.str = BooleanModeStr } - case 436: + case 510: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3061 + //line sql.y:3632 { yyVAL.str = NaturalLanguageModeStr } - case 437: + case 511: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:3065 + //line sql.y:3636 { yyVAL.str = NaturalLanguageModeWithQueryExpansionStr } - case 438: + case 512: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3069 + //line sql.y:3640 { yyVAL.str = QueryExpansionStr } - case 439: + case 513: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3075 + //line sql.y:3646 { yyVAL.str = string(yyDollar[1].bytes) } - case 440: + case 514: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3079 + //line sql.y:3650 { yyVAL.str = string(yyDollar[1].bytes) } - case 441: + case 515: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3085 + //line sql.y:3656 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal} } - case 442: + case 516: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3089 + //line sql.y:3660 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal, Charset: yyDollar[3].str, Operator: CharacterSetStr} } - case 443: + case 517: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3093 + //line sql.y:3664 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal, Charset: string(yyDollar[3].bytes)} } - case 444: + case 518: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3097 + //line sql.y:3668 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 445: + case 519: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3101 + //line sql.y:3672 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal} } - case 446: + case 520: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3105 + //line sql.y:3676 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} yyVAL.convertType.Length = yyDollar[2].LengthScaleOption.Length yyVAL.convertType.Scale = yyDollar[2].LengthScaleOption.Scale } - case 447: + case 521: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3111 + //line sql.y:3682 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 448: + case 522: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3115 + //line sql.y:3686 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal} } - case 449: + case 523: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3119 + //line sql.y:3690 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 450: + case 524: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3123 + //line sql.y:3694 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 451: + case 525: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3127 + //line sql.y:3698 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal} } - case 452: + case 526: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3131 + //line sql.y:3702 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 453: + case 527: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3135 + //line sql.y:3706 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 454: + case 528: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3140 + //line sql.y:3711 { yyVAL.expr = nil } - case 455: + case 529: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3144 + //line sql.y:3715 { yyVAL.expr = yyDollar[1].expr } - case 456: + case 530: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3149 + //line sql.y:3720 { yyVAL.str = string("") } - case 457: + case 531: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3153 + //line sql.y:3724 { yyVAL.str = " separator '" + string(yyDollar[2].bytes) + "'" } - case 458: + case 532: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3159 + //line sql.y:3730 { yyVAL.whens = []*When{yyDollar[1].when} } - case 459: + case 533: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3163 + //line sql.y:3734 { yyVAL.whens = append(yyDollar[1].whens, yyDollar[2].when) } - case 460: + case 534: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3169 + //line sql.y:3740 { yyVAL.when = &When{Cond: yyDollar[2].expr, Val: yyDollar[4].expr} } - case 461: + case 535: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3174 + //line sql.y:3745 { yyVAL.expr = nil } - case 462: + case 536: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3178 + //line sql.y:3749 { yyVAL.expr = yyDollar[2].expr } - case 463: + case 537: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3184 + //line sql.y:3755 { yyVAL.colName = &ColName{Name: yyDollar[1].colIdent} } - case 464: + case 538: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3188 + //line sql.y:3759 { yyVAL.colName = &ColName{Qualifier: TableName{Name: yyDollar[1].tableIdent}, Name: yyDollar[3].colIdent} } - case 465: + case 539: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3192 + //line sql.y:3763 { yyVAL.colName = &ColName{Qualifier: TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent}, Name: yyDollar[5].colIdent} } - case 466: + case 540: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3198 + //line sql.y:3769 { yyVAL.expr = NewStrVal(yyDollar[1].bytes) } - case 467: + case 541: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3202 + //line sql.y:3773 { yyVAL.expr = NewHexVal(yyDollar[1].bytes) } - case 468: + case 542: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3206 + //line sql.y:3777 { yyVAL.expr = NewIntVal(yyDollar[1].bytes) } - case 469: + case 543: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3210 + //line sql.y:3781 { yyVAL.expr = NewFloatVal(yyDollar[1].bytes) } - case 470: + case 544: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3214 + //line sql.y:3785 { yyVAL.expr = NewHexNum(yyDollar[1].bytes) } - case 471: + case 545: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3218 + //line sql.y:3789 { yyVAL.expr = NewValArg(yyDollar[1].bytes) } - case 472: + case 546: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3222 + //line sql.y:3793 { yyVAL.expr = &NullVal{} } - case 473: + case 547: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3228 + //line sql.y:3799 { // TODO(sougou): Deprecate this construct. if yyDollar[1].colIdent.Lowered() != "value" { @@ -5194,239 +6079,239 @@ yydefault: } yyVAL.expr = NewIntVal([]byte("1")) } - case 474: + case 548: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3237 + //line sql.y:3808 { yyVAL.expr = NewIntVal(yyDollar[1].bytes) } - case 475: + case 549: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3241 + //line sql.y:3812 { yyVAL.expr = NewValArg(yyDollar[1].bytes) } - case 476: + case 550: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3246 + //line sql.y:3817 { yyVAL.exprs = nil } - case 477: + case 551: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3250 + //line sql.y:3821 { yyVAL.exprs = yyDollar[3].exprs } - case 478: + case 552: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3255 + //line sql.y:3826 { yyVAL.expr = nil } - case 479: + case 553: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3259 + //line sql.y:3830 { yyVAL.expr = yyDollar[2].expr } - case 480: + case 554: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3264 + //line sql.y:3835 { yyVAL.orderBy = nil } - case 481: + case 555: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3268 + //line sql.y:3839 { yyVAL.orderBy = yyDollar[3].orderBy } - case 482: + case 556: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3274 + //line sql.y:3845 { yyVAL.orderBy = OrderBy{yyDollar[1].order} } - case 483: + case 557: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3278 + //line sql.y:3849 { yyVAL.orderBy = append(yyDollar[1].orderBy, yyDollar[3].order) } - case 484: + case 558: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3284 + //line sql.y:3855 { yyVAL.order = &Order{Expr: yyDollar[1].expr, Direction: yyDollar[2].str} } - case 485: + case 559: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3289 + //line sql.y:3860 { yyVAL.str = AscScr } - case 486: + case 560: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3293 + //line sql.y:3864 { yyVAL.str = AscScr } - case 487: + case 561: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3297 + //line sql.y:3868 { yyVAL.str = DescScr } - case 488: + case 562: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3302 + //line sql.y:3873 { yyVAL.limit = nil } - case 489: + case 563: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3306 + //line sql.y:3877 { yyVAL.limit = &Limit{Rowcount: yyDollar[2].expr} } - case 490: + case 564: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3310 + //line sql.y:3881 { yyVAL.limit = &Limit{Offset: yyDollar[2].expr, Rowcount: yyDollar[4].expr} } - case 491: + case 565: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3314 + //line sql.y:3885 { yyVAL.limit = &Limit{Offset: yyDollar[4].expr, Rowcount: yyDollar[2].expr} } - case 492: + case 566: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3319 + //line sql.y:3890 { yyVAL.str = "" } - case 493: + case 567: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3323 + //line sql.y:3894 { yyVAL.str = ForUpdateStr } - case 494: + case 568: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3327 + //line sql.y:3898 { yyVAL.str = ShareModeStr } - case 495: + case 569: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3340 + //line sql.y:3911 { yyVAL.ins = &Insert{Rows: yyDollar[2].values} } - case 496: + case 570: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3344 + //line sql.y:3915 { yyVAL.ins = &Insert{Rows: yyDollar[1].selStmt} } - case 497: + case 571: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3348 + //line sql.y:3919 { // Drop the redundant parenthesis. yyVAL.ins = &Insert{Rows: yyDollar[2].selStmt} } - case 498: + case 572: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3353 + //line sql.y:3924 { yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[5].values} } - case 499: + case 573: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3357 + //line sql.y:3928 { yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[4].selStmt} } - case 500: + case 574: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:3361 + //line sql.y:3932 { // Drop the redundant parenthesis. yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[5].selStmt} } - case 501: + case 575: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3368 + //line sql.y:3939 { yyVAL.columns = Columns{yyDollar[1].colIdent} } - case 502: + case 576: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3372 + //line sql.y:3943 { yyVAL.columns = Columns{yyDollar[3].colIdent} } - case 503: + case 577: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3376 + //line sql.y:3947 { yyVAL.columns = append(yyVAL.columns, yyDollar[3].colIdent) } - case 504: + case 578: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3380 + //line sql.y:3951 { yyVAL.columns = append(yyVAL.columns, yyDollar[5].colIdent) } - case 505: + case 579: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3385 + //line sql.y:3956 { yyVAL.updateExprs = nil } - case 506: + case 580: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3389 + //line sql.y:3960 { yyVAL.updateExprs = yyDollar[5].updateExprs } - case 507: + case 581: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3395 + //line sql.y:3966 { yyVAL.values = Values{yyDollar[1].valTuple} } - case 508: + case 582: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3399 + //line sql.y:3970 { yyVAL.values = append(yyDollar[1].values, yyDollar[3].valTuple) } - case 509: + case 583: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3405 + //line sql.y:3976 { yyVAL.valTuple = yyDollar[1].valTuple } - case 510: + case 584: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3409 + //line sql.y:3980 { yyVAL.valTuple = ValTuple{} } - case 511: + case 585: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3415 + //line sql.y:3986 { yyVAL.valTuple = ValTuple(yyDollar[2].exprs) } - case 512: + case 586: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3421 + //line sql.y:3992 { if len(yyDollar[1].valTuple) == 1 { yyVAL.expr = &ParenExpr{yyDollar[1].valTuple[0]} @@ -5434,282 +6319,282 @@ yydefault: yyVAL.expr = yyDollar[1].valTuple } } - case 513: + case 587: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3431 + //line sql.y:4002 { yyVAL.updateExprs = UpdateExprs{yyDollar[1].updateExpr} } - case 514: + case 588: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3435 + //line sql.y:4006 { yyVAL.updateExprs = append(yyDollar[1].updateExprs, yyDollar[3].updateExpr) } - case 515: + case 589: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3441 + //line sql.y:4012 { yyVAL.updateExpr = &UpdateExpr{Name: yyDollar[1].colName, Expr: yyDollar[3].expr} } - case 516: + case 590: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3447 + //line sql.y:4018 { yyVAL.setExprs = SetExprs{yyDollar[1].setExpr} } - case 517: + case 591: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3451 + //line sql.y:4022 { yyVAL.setExprs = append(yyDollar[1].setExprs, yyDollar[3].setExpr) } - case 518: + case 592: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3457 + //line sql.y:4028 { yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Expr: yyDollar[3].expr} } - case 519: + case 593: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3461 + //line sql.y:4032 { yyVAL.setExpr = &SetExpr{Name: NewColIdent(string(yyDollar[1].bytes)), Expr: yyDollar[2].expr} } - case 521: + case 595: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3468 + //line sql.y:4039 { yyVAL.bytes = []byte("charset") } - case 523: + case 597: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3475 + //line sql.y:4046 { yyVAL.expr = NewStrVal([]byte(yyDollar[1].colIdent.String())) } - case 524: + case 598: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3479 + //line sql.y:4050 { yyVAL.expr = NewStrVal(yyDollar[1].bytes) } - case 525: + case 599: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3483 + //line sql.y:4054 { yyVAL.expr = &Default{} } - case 528: + case 602: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3492 + //line sql.y:4063 { yyVAL.byt = 0 } - case 529: + case 603: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3496 + //line sql.y:4067 { yyVAL.byt = 1 } - case 530: + case 604: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3501 + //line sql.y:4072 { yyVAL.byt = 0 } - case 531: + case 605: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3505 + //line sql.y:4076 { yyVAL.byt = 1 } - case 532: + case 606: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3510 + //line sql.y:4081 { yyVAL.str = "" } - case 533: + case 607: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3514 + //line sql.y:4085 { yyVAL.str = IgnoreStr } - case 534: + case 608: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3520 + //line sql.y:4091 { yyVAL.empty = struct{}{} } - case 535: + case 609: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3524 + //line sql.y:4095 { yyVAL.empty = struct{}{} } - case 536: + case 610: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3528 + //line sql.y:4099 { yyVAL.empty = struct{}{} } - case 537: + case 611: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3532 + //line sql.y:4103 { yyVAL.empty = struct{}{} } - case 538: + case 612: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3536 + //line sql.y:4107 { yyVAL.empty = struct{}{} } - case 539: + case 613: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3540 + //line sql.y:4111 { yyVAL.empty = struct{}{} } - case 540: + case 614: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3544 + //line sql.y:4115 { yyVAL.empty = struct{}{} } - case 541: + case 615: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3548 + //line sql.y:4119 { yyVAL.empty = struct{}{} } - case 542: + case 616: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3552 + //line sql.y:4123 { yyVAL.empty = struct{}{} } - case 543: + case 617: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3556 + //line sql.y:4127 { yyVAL.empty = struct{}{} } - case 544: + case 618: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3561 + //line sql.y:4132 { yyVAL.empty = struct{}{} } - case 545: + case 619: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3565 + //line sql.y:4136 { yyVAL.empty = struct{}{} } - case 546: + case 620: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3569 + //line sql.y:4140 { yyVAL.empty = struct{}{} } - case 547: + case 621: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3575 + //line sql.y:4146 { yyVAL.empty = struct{}{} } - case 548: + case 622: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3579 + //line sql.y:4150 { yyVAL.empty = struct{}{} } - case 549: + case 623: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3584 + //line sql.y:4155 { yyVAL.str = IndexStr } - case 550: + case 624: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3588 + //line sql.y:4159 { yyVAL.str = UniqueStr } - case 551: + case 625: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3594 + //line sql.y:4165 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 552: + case 626: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3598 + //line sql.y:4169 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 554: + case 628: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3605 + //line sql.y:4176 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 555: + case 629: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3611 + //line sql.y:4182 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } - case 556: + case 630: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3615 + //line sql.y:4186 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } - case 558: + case 632: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3622 + //line sql.y:4193 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } - case 721: + case 814: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3811 + //line sql.y:4401 { if incNesting(yylex) { yylex.Error("max nesting level reached") return 1 } } - case 722: + case 815: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3820 + //line sql.y:4410 { decNesting(yylex) } - case 723: + case 816: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3825 + //line sql.y:4415 { forceEOF(yylex) } - case 724: + case 817: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3830 + //line sql.y:4420 { forceEOF(yylex) } - case 725: + case 818: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3834 + //line sql.y:4424 { forceEOF(yylex) } - case 726: + case 819: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3838 + //line sql.y:4428 { forceEOF(yylex) } diff --git a/src/vendor/github.com/xelabs/go-mysqlstack/sqlparser/sql.y b/src/vendor/github.com/xelabs/go-mysqlstack/sqlparser/sql.y index e93fad5b..45e64674 100644 --- a/src/vendor/github.com/xelabs/go-mysqlstack/sqlparser/sql.y +++ b/src/vendor/github.com/xelabs/go-mysqlstack/sqlparser/sql.y @@ -394,7 +394,43 @@ func forceEOF(yylex interface{}) { SIGNED UNSIGNED ZEROFILL - + FIXED + DYNAMIC + STORAGE + DISK + MEMORY + COLUMN_FORMAT + AVG_ROW_LENGTH + COMPRESSION + CONNECTION + DATA + DIRECTORY + DELAY_KEY_WRITE + ENCRYPTION + INSERT_METHOD + MAX_ROWS + MIN_ROWS + PACK_KEYS + PASSWORD + ROW_FORMAT + STATS_AUTO_RECALC + STATS_PERSISTENT + STATS_SAMPLE_PAGES + TABLESPACE + +// ROW_FORMAT options +%token + COMPRESSED + REDUNDANT + COMPACT + TOKUDB_DEFAULT + TOKUDB_FAST + TOKUDB_SMALL + TOKUDB_ZLIB + TOKUDB_QUICKLZ + TOKUDB_LZMA + TOKUDB_SNAPPY + TOKUDB_UNCOMPRESSED // Supported SHOW tokens %token @@ -544,6 +580,8 @@ func forceEOF(yylex interface{}) { %type union_op insert_or_replace + now_sym_with_frac_opt + on_update_opt %type distinct_opt @@ -710,6 +748,7 @@ func forceEOF(yylex interface{}) { %type charset_or_character_set + now_sym %type for_from @@ -770,21 +809,44 @@ func forceEOF(yylex interface{}) { time_type char_type +// table options %type length_opt column_default_opt - on_update_opt column_comment_opt - table_comment_opt - engine_option - charset_option - tabletype_option - auto_opt + col_collate_opt + table_engine_option parts_num_opt + table_charset_option + table_type_option + table_auto_opt + table_comment_opt + table_avg_row_length_opt + table_checksum_opt + table_collate_opt + table_compression_opt + table_connection_opt + table_data_directory_opt + table_index_directory_opt + table_delay_key_write_opt + table_encryption_opt + table_insert_method_opt + table_key_block_size_opt + table_max_rows_opt + table_min_rows_opt + table_pack_keys_opt + table_password_opt + table_row_format_opt + table_stats_auto_recalc_opt + table_stats_persistent_opt + table_stats_sample_pages_opt + table_tablespace_opt %type charset_opt collate_opt + column_format_opt + storage_opt %type id_or_string @@ -1361,6 +1423,66 @@ table_spec: if val := $4.GetTableOptValByType(TableOptionTableType); val != nil { $$.Options.Type = String(val) } + if val := $4.GetTableOptValByType(TableOptionAvgRowLength); val != nil { + $$.Options.AvgRowLength = String(val) + } + if val := $4.GetTableOptValByType(TableOptionChecksum); val != nil { + $$.Options.Checksum = String(val) + } + if val := $4.GetTableOptValByType(TableOptionCollate); val != nil { + $$.Options.Collate = String(val) + } + if val := $4.GetTableOptValByType(TableOptionCompression); val != nil { + $$.Options.Compression = String(val) + } + if val := $4.GetTableOptValByType(TableOptionConnection); val != nil { + $$.Options.Connection = String(val) + } + if val := $4.GetTableOptValByType(TableOptionDataDirectory); val != nil { + $$.Options.DataDirectory = String(val) + } + if val := $4.GetTableOptValByType(TableOptionIndexDirectory); val != nil { + $$.Options.IndexDirectory = String(val) + } + if val := $4.GetTableOptValByType(TableOptionDelayKeyWrite); val != nil { + $$.Options.DelayKeyWrite = String(val) + } + if val := $4.GetTableOptValByType(TableOptionEncryption); val != nil { + $$.Options.Encryption = String(val) + } + if val := $4.GetTableOptValByType(TableOptionInsertMethod); val != nil { + $$.Options.InsertMethod = String(val) + } + if val := $4.GetTableOptValByType(TableOptionKeyBlockSize); val != nil { + $$.Options.KeyBlockSize= String(val) + } + if val := $4.GetTableOptValByType(TableOptionMaxRows); val != nil { + $$.Options.MaxRows= String(val) + } + if val := $4.GetTableOptValByType(TableOptionMinRows); val != nil { + $$.Options.MinRows = String(val) + } + if val := $4.GetTableOptValByType(TableOptionPackKeys); val != nil { + $$.Options.PackKeys = String(val) + } + if val := $4.GetTableOptValByType(TableOptionPassword); val != nil { + $$.Options.Password = String(val) + } + if val := $4.GetTableOptValByType(TableOptionRowFormat); val != nil { + $$.Options.RowFormat = String(val) + } + if val := $4.GetTableOptValByType(TableOptionStatsAutoRecalc); val != nil { + $$.Options.StatsAutoRecalc = String(val) + } + if val := $4.GetTableOptValByType(TableOptionStatsPersistent); val != nil { + $$.Options.StatsPersistent = String(val) + } + if val := $4.GetTableOptValByType(TableOptionStatsSamplePages); val != nil { + $$.Options.StatsSamplePages = String(val) + } + if val := $4.GetTableOptValByType(TableOptionTableSpace); val != nil { + $$.Options.TableSpace = String(val) + } } if $$.Options.Type == "" { $$.Options.Type = NormalTableType @@ -1394,43 +1516,400 @@ table_option: Val: $1, } } -| engine_option +| table_engine_option { $$ = &TableOption{ Type: TableOptionEngine, Val: $1, } } -| charset_option +| table_charset_option { $$ = &TableOption{ Type: TableOptionCharset, Val: $1, } } -| tabletype_option +| table_type_option { $$ = &TableOption{ Type: TableOptionTableType, Val: $1, } } -| auto_opt +| table_auto_opt { $$ = &TableOption{ Type: TableOptionAutoInc, Val: $1, } } +| table_avg_row_length_opt + { + $$ = &TableOption{ + Type: TableOptionAvgRowLength, + Val: $1, + } + } +| table_checksum_opt + { + $$ = &TableOption{ + Type: TableOptionChecksum, + Val: $1, + } + } +| table_collate_opt + { + $$ = &TableOption{ + Type: TableOptionCollate, + Val: $1, + } + } +| table_compression_opt + { + $$ = &TableOption{ + Type: TableOptionCompression, + Val: $1, + } + } +| table_connection_opt + { + $$ = &TableOption{ + Type: TableOptionConnection, + Val: $1, + } + } +| table_data_directory_opt + { + $$ = &TableOption{ + Type: TableOptionDataDirectory, + Val: $1, + } + } +| table_index_directory_opt + { + $$ = &TableOption{ + Type: TableOptionIndexDirectory, + Val: $1, + } + } +| table_delay_key_write_opt + { + $$ = &TableOption{ + Type: TableOptionDelayKeyWrite, + Val: $1, + } + } +| table_encryption_opt + { + $$ = &TableOption{ + Type: TableOptionEncryption, + Val: $1, + } + } +| table_insert_method_opt + { + $$ = &TableOption{ + Type: TableOptionInsertMethod, + Val: $1, + } + } +| table_key_block_size_opt + { + $$ = &TableOption{ + Type: TableOptionKeyBlockSize, + Val: $1, + } + } +| table_max_rows_opt + { + $$ = &TableOption{ + Type: TableOptionMaxRows, + Val: $1, + } + } +| table_min_rows_opt + { + $$ = &TableOption{ + Type: TableOptionMinRows, + Val: $1, + } + } +| table_pack_keys_opt + { + $$ = &TableOption{ + Type: TableOptionPackKeys, + Val: $1, + } + } +| table_password_opt + { + $$ = &TableOption{ + Type: TableOptionPassword, + Val: $1, + } + } +| table_row_format_opt + { + $$ = &TableOption{ + Type: TableOptionRowFormat, + Val: $1, + } + } +| table_stats_auto_recalc_opt + { + $$ = &TableOption{ + Type: TableOptionStatsAutoRecalc, + Val: $1, + } + } +| table_stats_persistent_opt + { + $$ = &TableOption{ + Type: TableOptionStatsPersistent, + Val: $1, + } + } +| table_stats_sample_pages_opt + { + $$ = &TableOption{ + Type: TableOptionStatsSamplePages, + Val: $1, + } + } +| table_tablespace_opt + { + $$ = &TableOption{ + Type: TableOptionTableSpace, + Val: $1, + } + } -auto_opt: +table_auto_opt: AUTO_INCREMENT opt_equal INTEGRAL {} +table_avg_row_length_opt: + AVG_ROW_LENGTH opt_equal INTEGRAL + { + $$ = NewIntVal($3) + } + +table_collate_opt: + opt_default COLLATE opt_equal id_or_string + { + $$ = $4 + } + +table_compression_opt: + COMPRESSION opt_equal STRING + { + switch StrToLower(string($3)) { + case "zlib", "lz4", "none": + break + default: + yylex.Error("Invalid compression option, argument (should be 'ZLIB', 'LZ4' or 'NONE')") + return 1 + } + $$ = NewStrVal($3) + } + +table_connection_opt: + CONNECTION opt_equal STRING + { + $$ = NewStrVal($3) + } + +table_data_directory_opt: + DATA DIRECTORY opt_equal STRING + { + $$ = NewStrVal($4) + } + +table_index_directory_opt: + INDEX DIRECTORY opt_equal STRING + { + $$ = NewStrVal($4) + } + +table_delay_key_write_opt: + DELAY_KEY_WRITE opt_equal INTEGRAL + { + $$ = NewIntVal($3) + } + +table_encryption_opt: + ENCRYPTION opt_equal STRING + { + switch string($3) { + case "Y", "y": + yylex.Error("The encryption option is parsed but ignored by all storage engines.") + return 1 + case "N", "n": + break + default: + yylex.Error("Invalid encryption option, argument (should be Y or N)") + return 1 + } + $$ = NewStrVal($3) + } + +table_insert_method_opt: + INSERT_METHOD opt_equal ID + { + switch StrToLower(string($3)) { + case "no", "first", "last": + break + default: + yylex.Error("Invalid insert_method option, argument (should be NO, FIRST or LAST)") + return 1 + } + $$ = NewStrValWithoutQuote($3) + } + +table_key_block_size_opt: + KEY_BLOCK_SIZE opt_equal INTEGRAL + { + $$ = NewIntVal($3) + } + +table_max_rows_opt: + MAX_ROWS opt_equal INTEGRAL + { + $$ = NewIntVal($3) + } + +table_min_rows_opt: + MIN_ROWS opt_equal INTEGRAL + { + $$ = NewIntVal($3) + } + +table_pack_keys_opt: + PACK_KEYS opt_equal INTEGRAL + { + $$ = NewStrValWithoutQuote($3) + } +| PACK_KEYS opt_equal DEFAULT + { + $$ = NewStrValWithoutQuote($3) + } + +table_password_opt: + PASSWORD opt_equal STRING + { + $$ = NewStrVal($3) + } + +table_row_format_opt: + ROW_FORMAT opt_equal DEFAULT + { + $$ = NewStrValWithoutQuote($3) + } +| ROW_FORMAT opt_equal DYNAMIC + { + $$ = NewStrValWithoutQuote($3) + } +| ROW_FORMAT opt_equal FIXED + { + $$ = NewStrValWithoutQuote($3) + } +| ROW_FORMAT opt_equal COMPRESSED + { + $$ = NewStrValWithoutQuote($3) + } +| ROW_FORMAT opt_equal REDUNDANT + { + $$ = NewStrValWithoutQuote($3) + } +| ROW_FORMAT opt_equal COMPACT + { + $$ = NewStrValWithoutQuote($3) + } +| ROW_FORMAT opt_equal TOKUDB_DEFAULT + { + $$ = NewStrValWithoutQuote($3) + } +| ROW_FORMAT opt_equal TOKUDB_FAST + { + $$ = NewStrValWithoutQuote($3) + } +| ROW_FORMAT opt_equal TOKUDB_SMALL + { + $$ = NewStrValWithoutQuote($3) + } +| ROW_FORMAT opt_equal TOKUDB_ZLIB + { + $$ = NewStrValWithoutQuote($3) + } +| ROW_FORMAT opt_equal TOKUDB_QUICKLZ + { + $$ = NewStrValWithoutQuote($3) + } +| ROW_FORMAT opt_equal TOKUDB_LZMA + { + $$ = NewStrValWithoutQuote($3) + } +| ROW_FORMAT opt_equal TOKUDB_SNAPPY + { + $$ = NewStrValWithoutQuote($3) + } +| ROW_FORMAT opt_equal TOKUDB_UNCOMPRESSED + { + $$ = NewStrValWithoutQuote($3) + } + +table_stats_auto_recalc_opt: + STATS_AUTO_RECALC opt_equal INTEGRAL + { + $$ = NewStrValWithoutQuote($3) + } +| STATS_AUTO_RECALC opt_equal DEFAULT + { + $$ = NewStrValWithoutQuote($3) + } + +table_stats_persistent_opt: + STATS_PERSISTENT opt_equal INTEGRAL + { + $$ = NewStrValWithoutQuote($3) + } +| STATS_PERSISTENT opt_equal DEFAULT + { + $$ = NewStrValWithoutQuote($3) + } + +// In MySQL, STATS_SAMPLE_PAGES=N(Where 0