From c12394e25e7d46a3d8307bc5f9d488be3a267ba5 Mon Sep 17 00:00:00 2001 From: Daylon Wilkins Date: Mon, 12 Apr 2021 07:26:46 -0700 Subject: [PATCH] Support multiple statements per ALTER --- go/vt/sqlparser/ast.go | 131 +- go/vt/sqlparser/ast_test.go | 30 +- go/vt/sqlparser/parse_test.go | 18 +- go/vt/sqlparser/sql.go | 8588 +++++++++++++++++---------------- go/vt/sqlparser/sql.y | 135 +- go/vt/sqlparser/sql_test.go | 21 +- 6 files changed, 4524 insertions(+), 4399 deletions(-) diff --git a/go/vt/sqlparser/ast.go b/go/vt/sqlparser/ast.go index c6ee2e920e9..3609b0ea759 100644 --- a/go/vt/sqlparser/ast.go +++ b/go/vt/sqlparser/ast.go @@ -356,6 +356,7 @@ func (*Delete) iStatement() {} func (*Set) iStatement() {} func (*DBDDL) iStatement() {} func (*DDL) iStatement() {} +func (*MultiAlterDDL) iStatement() {} func (*Explain) iStatement() {} func (*Show) iStatement() {} func (*Use) iStatement() {} @@ -1432,6 +1433,36 @@ func (c Characteristic) String() string { return string(c.Type) } +// MultiAlterDDL represents multiple ALTER statements on a single table. +type MultiAlterDDL struct { + Table TableName + Statements []*DDL +} + +var _ SQLNode = (*MultiAlterDDL)(nil) + +// Format implements SQLNode. +func (m *MultiAlterDDL) Format(buf *TrackedBuffer) { + buf.Myprintf("alter table %v", m.Table) + for i, ddl := range m.Statements { + if i > 0 { + buf.Myprintf(",") + } + ddl.alterFormat(buf) + } +} + +// walkSubtree implements SQLNode. +func (m *MultiAlterDDL) walkSubtree(visit Visit) error { + for _, ddl := range m.Statements { + err := ddl.walkSubtree(visit) + if err != nil { + return err + } + } + return nil +} + // DDL represents a CREATE, ALTER, DROP, RENAME, TRUNCATE or ANALYZE statement. type DDL struct { Action string @@ -1608,53 +1639,8 @@ func (node *DDL) Format(buf *TrackedBuffer) { buf.Myprintf(", %v to %v", node.FromTables[i], node.ToTables[i]) } case AlterStr: - if node.PartitionSpec != nil { - buf.Myprintf("%s table %v %v", node.Action, node.Table, node.PartitionSpec) - } else if node.ColumnAction == AddStr { - after := "" - if node.ColumnOrder != nil { - if node.ColumnOrder.First { - after = " first" - } else { - after = " after " + node.ColumnOrder.AfterColumn.String() - } - } - buf.Myprintf("%s table %v %s column %v%s", node.Action, node.Table, node.ColumnAction, node.TableSpec, after) - } else if node.ColumnAction == ModifyStr || node.ColumnAction == ChangeStr { - after := "" - if node.ColumnOrder != nil { - if node.ColumnOrder.First { - after = " first" - } else { - after = " after " + node.ColumnOrder.AfterColumn.String() - } - } - buf.Myprintf("%s table %v %s column %v %v%s", node.Action, node.Table, node.ColumnAction, node.Column, node.TableSpec, after) - } else if node.ColumnAction == DropStr { - buf.Myprintf("%s table %v %s column %v", node.Action, node.Table, node.ColumnAction, node.Column) - } else if node.ColumnAction == RenameStr { - buf.Myprintf("%s table %v %s column %v to %v", node.Action, node.Table, node.ColumnAction, node.Column, node.ToColumn) - } else if node.IndexSpec != nil { - buf.Myprintf("%s table %v %v", node.Action, node.Table, node.IndexSpec) - } else if node.ConstraintAction == AddStr && node.TableSpec != nil && len(node.TableSpec.Constraints) == 1 { - switch node.TableSpec.Constraints[0].Details.(type) { - case *ForeignKeyDefinition, *CheckConstraintDefinition: - buf.Myprintf("%s table %v add %v", node.Action, node.Table, node.TableSpec.Constraints[0]) - default: - buf.Myprintf("%s table %v", node.Action, node.Table) - } - } else if node.ConstraintAction == DropStr && node.TableSpec != nil && len(node.TableSpec.Constraints) == 1 { - switch node.TableSpec.Constraints[0].Details.(type) { - case *ForeignKeyDefinition: - buf.Myprintf("%s table %v drop foreign key %s", node.Action, node.Table, node.TableSpec.Constraints[0].Name) - case *CheckConstraintDefinition: - buf.Myprintf("%s table %v drop check %s", node.Action, node.Table, node.TableSpec.Constraints[0].Name) - default: - buf.Myprintf("%s table %v drop constraint %s", node.Action, node.Table, node.TableSpec.Constraints[0].Name) - } - } else { - buf.Myprintf("%s table %v", node.Action, node.Table) - } + buf.Myprintf("%s table %v", node.Action, node.Table) + node.alterFormat(buf) case FlushStr: buf.Myprintf("%s", node.Action) case AddAutoIncStr: @@ -1676,6 +1662,57 @@ func (node *DDL) walkSubtree(visit Visit) error { return nil } +func (node *DDL) alterFormat(buf *TrackedBuffer) { + if node.Action == RenameStr { + buf.Myprintf(" %s to %v", node.Action, node.ToTables[0]) + for i := 1; i < len(node.FromTables); i++ { + buf.Myprintf(", %v to %v", node.FromTables[i], node.ToTables[i]) + } + } else if node.PartitionSpec != nil { + buf.Myprintf(" %v", node.PartitionSpec) + } else if node.ColumnAction == AddStr { + after := "" + if node.ColumnOrder != nil { + if node.ColumnOrder.First { + after = " first" + } else { + after = " after " + node.ColumnOrder.AfterColumn.String() + } + } + buf.Myprintf(" %s column %v%s", node.ColumnAction, node.TableSpec, after) + } else if node.ColumnAction == ModifyStr || node.ColumnAction == ChangeStr { + after := "" + if node.ColumnOrder != nil { + if node.ColumnOrder.First { + after = " first" + } else { + after = " after " + node.ColumnOrder.AfterColumn.String() + } + } + buf.Myprintf(" %s column %v %v%s",node.ColumnAction, node.Column, node.TableSpec, after) + } else if node.ColumnAction == DropStr { + buf.Myprintf(" %s column %v", node.ColumnAction, node.Column) + } else if node.ColumnAction == RenameStr { + buf.Myprintf(" %s column %v to %v", node.ColumnAction, node.Column, node.ToColumn) + } else if node.IndexSpec != nil { + buf.Myprintf(" %v", node.IndexSpec) + } else if node.ConstraintAction == AddStr && node.TableSpec != nil && len(node.TableSpec.Constraints) == 1 { + switch node.TableSpec.Constraints[0].Details.(type) { + case *ForeignKeyDefinition, *CheckConstraintDefinition: + buf.Myprintf(" add %v", node.TableSpec.Constraints[0]) + } + } else if node.ConstraintAction == DropStr && node.TableSpec != nil && len(node.TableSpec.Constraints) == 1 { + switch node.TableSpec.Constraints[0].Details.(type) { + case *ForeignKeyDefinition: + buf.Myprintf(" drop foreign key %s", node.TableSpec.Constraints[0].Name) + case *CheckConstraintDefinition: + buf.Myprintf(" drop check %s", node.TableSpec.Constraints[0].Name) + default: + buf.Myprintf(" drop constraint %s", node.TableSpec.Constraints[0].Name) + } + } +} + // AffectedTables returns the list table names affected by the DDL. func (node *DDL) AffectedTables() TableNames { if node.Action == RenameStr || node.Action == DropStr { diff --git a/go/vt/sqlparser/ast_test.go b/go/vt/sqlparser/ast_test.go index 0a4b7b891c9..4b226aee4d3 100644 --- a/go/vt/sqlparser/ast_test.go +++ b/go/vt/sqlparser/ast_test.go @@ -194,7 +194,7 @@ func TestSetLimit(t *testing.T) { func TestDDL(t *testing.T) { testcases := []struct { query string - output *DDL + output Statement affected []string }{{ query: "create table a", @@ -250,18 +250,24 @@ func TestDDL(t *testing.T) { affected: []string{"a", "b"}, }, { query: "alter table a auto_increment 19", - output: &DDL{ - Action: AlterStr, - Table: TableName{Name: NewTableIdent("a")}, - AutoIncSpec: &AutoIncSpec{Value: newIntVal("19")}, + output: &MultiAlterDDL{ + Table: TableName{Name: NewTableIdent("a")}, + Statements: []*DDL{{ + Action: AlterStr, + Table: TableName{Name: NewTableIdent("a")}, + AutoIncSpec: &AutoIncSpec{Value: newIntVal("19")}, + }}, }, affected: []string{"a"}, }, { query: "alter table a auto_increment 19.9", - output: &DDL{ - Action: AlterStr, - Table: TableName{Name: NewTableIdent("a")}, - AutoIncSpec: &AutoIncSpec{Value: newFloatVal("19.9")}, + output: &MultiAlterDDL{ + Table: TableName{Name: NewTableIdent("a")}, + Statements: []*DDL{{ + Action: AlterStr, + Table: TableName{Name: NewTableIdent("a")}, + AutoIncSpec: &AutoIncSpec{Value: newFloatVal("19.9")}, + }}, }, affected: []string{"a"}, }} @@ -277,8 +283,10 @@ func TestDDL(t *testing.T) { for _, t := range tcase.affected { want = append(want, TableName{Name: NewTableIdent(t)}) } - if affected := got.(*DDL).AffectedTables(); !reflect.DeepEqual(affected, want) { - t.Errorf("Affected(%s): %v, want %v", tcase.query, affected, want) + if ddl, ok := got.(*DDL); ok { + if affected := ddl.AffectedTables(); !reflect.DeepEqual(affected, want) { + t.Errorf("Affected(%s): %v, want %v", tcase.query, affected, want) + } } } } diff --git a/go/vt/sqlparser/parse_test.go b/go/vt/sqlparser/parse_test.go index d9e511171b2..fac9cb913c0 100644 --- a/go/vt/sqlparser/parse_test.go +++ b/go/vt/sqlparser/parse_test.go @@ -1066,16 +1066,15 @@ var ( output: "alter table a", }, { input: "alter table a rename b", - output: "rename table a to b", + output: "alter table a rename to b", }, { input: "alter table `By` rename `bY`", - output: "rename table `By` to `bY`", + output: "alter table `By` rename to `bY`", }, { input: "alter table a rename to b", - output: "rename table a to b", }, { input: "alter table a rename as b", - output: "rename table a to b", + output: "alter table a rename to b", }, { input: "alter table a rename index foo to bar", output: "alter table a rename index foo to bar", @@ -1905,6 +1904,16 @@ var ( }, { input: "alter table a modify foo int unique comment 'a comment here' auto_increment on update current_timestamp() default 0 not null after bar", output: "alter table a modify column foo (\n\tfoo int not null default 0 on update current_timestamp() auto_increment comment 'a comment here' unique\n) after bar", + }, { + input: "alter table t add column c int unique comment 'a comment here' auto_increment on update current_timestamp() default 0 not null," + + " change foo bar int not null auto_increment first," + + " reorganize partition b into (partition c values less than (:v1), partition d values less than (maxvalue))," + + " add spatial index idx (id)", + output: `alter table t add column ( + c int not null default 0 on update current_timestamp() auto_increment comment 'a comment here' unique +), change column foo ( + bar int not null auto_increment +) first, reorganize partition b into (partition c values less than (:v1), partition d values less than (maxvalue)), add spatial index idx (id)`, }, { input: "delete a.*, b.* from tbl_a a, tbl_b b where a.id = b.id and b.name = 'test'", output: "delete a, b from tbl_a as a, tbl_b as b where a.id = b.id and b.name = 'test'", @@ -2365,7 +2374,6 @@ func TestCaseSensitivity(t *testing.T) { output: "alter table a", }, { input: "alter table A rename to B", - output: "rename table A to B", }, { input: "rename table A to B", }, { diff --git a/go/vt/sqlparser/sql.go b/go/vt/sqlparser/sql.go index a2c48f77066..f057e58c597 100755 --- a/go/vt/sqlparser/sql.go +++ b/go/vt/sqlparser/sql.go @@ -53,6 +53,7 @@ type yySymType struct { statement Statement selStmt SelectStatement ddl *DDL + ddls []*DDL ins *Insert byt byte bytes []byte @@ -997,141 +998,141 @@ var yyExca = [...]int{ 5, 43, -2, 4, -1, 37, - 141, 893, + 141, 896, -2, 115, -1, 44, - 180, 483, - 181, 483, - -2, 473, + 180, 486, + 181, 486, + -2, 476, -1, 51, - 1, 1296, - 432, 1296, - -2, 503, + 1, 1299, + 432, 1299, + -2, 506, -1, 424, - 127, 903, - -2, 897, + 127, 906, + -2, 900, -1, 425, - 127, 904, - -2, 898, + 127, 907, + -2, 901, -1, 526, - 97, 1221, - 127, 1221, + 97, 1224, + 127, 1224, -2, 79, -1, 527, - 97, 1122, - 127, 1122, + 97, 1125, + 127, 1125, -2, 80, -1, 532, - 97, 1077, - 127, 1077, - -2, 860, + 97, 1080, + 127, 1080, + -2, 863, -1, 534, - 97, 1160, - 127, 1160, - -2, 862, + 97, 1163, + 127, 1163, + -2, 865, -1, 741, 5, 43, - -2, 497, + -2, 500, -1, 745, 5, 43, - -2, 496, + -2, 499, -1, 957, - 1, 557, - 5, 557, - 12, 557, - 13, 557, - 14, 557, - 15, 557, - 17, 557, - 19, 557, - 30, 557, - 31, 557, - 56, 557, - 57, 557, - 58, 557, - 59, 557, - 60, 557, - 62, 557, - 63, 557, - 66, 557, - 67, 557, - 69, 557, - 70, 557, - 432, 557, - -2, 587, + 1, 560, + 5, 560, + 12, 560, + 13, 560, + 14, 560, + 15, 560, + 17, 560, + 19, 560, + 30, 560, + 31, 560, + 56, 560, + 57, 560, + 58, 560, + 59, 560, + 60, 560, + 62, 560, + 63, 560, + 66, 560, + 67, 560, + 69, 560, + 70, 560, + 432, 560, + -2, 590, -1, 961, 67, 60, 69, 60, -2, 64, -1, 1148, - 127, 906, - -2, 902, + 127, 909, + -2, 905, -1, 1310, 68, 349, - -2, 1043, + -2, 1046, -1, 1313, 68, 345, 71, 345, - -2, 978, + -2, 981, -1, 1314, 68, 346, 71, 346, - -2, 988, - -1, 1392, - 68, 418, - 71, 418, + -2, 991, + -1, 1394, + 68, 421, + 71, 421, -2, 389, - -1, 1438, + -1, 1440, 5, 44, - -2, 653, - -1, 1499, + -2, 656, + -1, 1501, 5, 43, - -2, 837, - -1, 1599, + -2, 840, + -1, 1601, 5, 43, -2, 81, - -1, 1748, - 1, 608, - 5, 608, - 12, 608, - 13, 608, - 14, 608, - 15, 608, - 17, 608, - 19, 608, - 30, 608, - 31, 608, - 56, 608, - 57, 608, - 58, 608, - 59, 608, - 60, 608, - 62, 608, - 63, 608, - 66, 608, - 67, 608, - 69, 608, - 70, 608, - 432, 608, - -2, 587, - -1, 1870, + -1, 1751, + 1, 611, + 5, 611, + 12, 611, + 13, 611, + 14, 611, + 15, 611, + 17, 611, + 19, 611, + 30, 611, + 31, 611, + 56, 611, + 57, 611, + 58, 611, + 59, 611, + 60, 611, + 62, 611, + 63, 611, + 66, 611, + 67, 611, + 69, 611, + 70, 611, + 432, 611, + -2, 590, + -1, 1874, 5, 44, - -2, 838, - -1, 1901, + -2, 841, + -1, 1905, 5, 43, -2, 81, - -1, 1961, + -1, 1965, 5, 43, - -2, 840, - -1, 2001, - 41, 913, - -2, 911, - -1, 2044, + -2, 843, + -1, 2005, + 41, 916, + -2, 914, + -1, 2046, 5, 43, -2, 193, -1, 2107, 5, 44, - -2, 841, + -2, 844, -1, 2206, 5, 43, -2, 145, @@ -1139,1769 +1140,1138 @@ var yyExca = [...]int{ const yyPrivate = 57344 -const yyLast = 25052 +const yyLast = 25087 var yyAct = [...]int{ - 458, 62, 2254, 2208, 2229, 2124, 2219, 1357, 2110, 2015, - 373, 2220, 2210, 2047, 7, 2046, 6, 1878, 2150, 2045, - 5, 2096, 2048, 8, 2090, 989, 2123, 1975, 2001, 1742, - 74, 1761, 429, 522, 1528, 1939, 1355, 1652, 1724, 1661, - 416, 1553, 1923, 1762, 1315, 1266, 2111, 719, 882, 1268, - 1905, 403, 1725, 1660, 1123, 457, 1810, 729, 1607, 442, - 1297, 1721, 371, 62, 95, 1347, 1422, 1311, 1307, 1291, - 355, 358, 1262, 1260, 541, 957, 1296, 408, 1730, 1734, - 1115, 1382, 1186, 543, 1173, 349, 1672, 1207, 1212, 1629, - 1134, 538, 1069, 1303, 1628, 1089, 1590, 1343, 422, 974, - 1251, 1204, 1150, 953, 782, 1244, 788, 537, 427, 525, - 755, 954, 973, 412, 520, 370, 963, 528, 898, 684, - 2276, 1331, 754, 832, 2272, 2262, 899, 517, 2244, 2242, - 2224, 2203, 2158, 706, 73, 539, 431, 1108, 350, 351, - 1792, 1899, 354, 2235, 2143, 2218, 2104, 2191, 823, 2142, - 1689, 2103, 1468, 1855, 78, 2025, 847, 846, 856, 857, - 849, 850, 851, 852, 853, 854, 855, 848, 683, 1756, - 858, 30, 1757, 1758, 471, 711, 477, 479, 478, 475, - 476, 474, 473, 472, 1286, 1287, 80, 81, 82, 83, - 84, 480, 481, 30, 30, 1285, 30, 1537, 409, 975, - 1536, 976, 1706, 1538, 731, 353, 30, 352, 63, 33, - 34, 773, 686, 717, 689, 732, 733, 1497, 1318, 1573, - 1317, 2044, 3, 1332, 1323, 1325, 1319, 1324, 30, 31, - 63, 33, 34, 71, 1498, 1960, 1319, 1264, 1946, 63, - 33, 34, 59, 710, 714, 1344, 1846, 716, 69, 1337, - 1844, 1332, 35, 54, 55, 71, 71, 368, 71, 60, - 71, 35, 1906, 2233, 2155, 2153, 2154, 2205, 71, 356, - 1908, 359, 105, 101, 102, 1998, 103, 1997, 1403, 1996, - 712, 715, 1995, 713, 364, 1993, 45, 1994, 1992, 1364, - 71, 2112, 1402, 757, 758, 759, 760, 761, 762, 763, - 764, 765, 766, 767, 768, 2074, 2075, 1880, 97, 107, - 106, 1520, 360, 734, 1363, 735, 732, 733, 2147, 2148, - 2042, 726, 727, 728, 1608, 725, 718, 718, 724, 688, - 687, 2217, 2091, 2190, 1407, 1654, 1245, 346, 718, 1911, - 1924, 1925, 2040, 1401, 2268, 1634, 62, 62, 988, 1815, - 90, 987, 37, 65, 41, 40, 43, 988, 56, 742, - 1609, 744, 75, 988, 2277, 743, 2274, 1765, 1934, 2263, - 1547, 2245, 781, 347, 1976, 1909, 1910, 1912, 1913, 1914, - 685, 694, 2077, 367, 44, 68, 67, 1978, 1612, 52, - 53, 42, 1059, 1050, 1399, 1393, 1394, 1527, 1392, 2258, - 1395, 1396, 1526, 92, 94, 1625, 357, 89, 1525, 62, - 2026, 357, 709, 99, 98, 1580, 790, 681, 366, 1332, - 367, 1346, 777, 2214, 867, 1322, 2209, 869, 320, 836, - 988, 100, 1791, 57, 58, 1405, 1408, 819, 747, 748, - 2212, 104, 1449, 1837, 1610, 1611, 46, 66, 2102, 48, - 49, 988, 775, 96, 357, 2199, 1933, 880, 1977, 884, + 458, 62, 2254, 2208, 2229, 2124, 2219, 1357, 2110, 2210, + 2017, 2220, 2049, 7, 2048, 6, 2047, 5, 2050, 8, + 2150, 1979, 1882, 989, 2090, 2096, 2123, 2005, 1745, 373, + 1664, 1764, 1355, 74, 1530, 1655, 1727, 1943, 416, 1315, + 1927, 1909, 1555, 429, 522, 1123, 2111, 1262, 882, 1268, + 1765, 1266, 403, 457, 1728, 1663, 1609, 1307, 1291, 442, + 1260, 1814, 729, 62, 1724, 957, 95, 355, 358, 1297, + 541, 1424, 1296, 543, 1733, 1331, 371, 408, 1347, 1392, + 1737, 1115, 1186, 1675, 349, 1303, 1134, 1207, 719, 1173, + 1212, 1592, 1632, 1069, 1343, 974, 1251, 1244, 422, 1311, + 1204, 782, 954, 538, 1150, 788, 1631, 1089, 1382, 427, + 537, 953, 370, 755, 973, 412, 963, 706, 898, 520, + 717, 525, 2276, 832, 754, 2272, 899, 517, 528, 2262, + 684, 2244, 2242, 2224, 2203, 2158, 73, 350, 351, 1108, + 1795, 354, 1903, 2235, 2143, 2218, 2104, 2191, 2142, 2103, + 1692, 78, 823, 2027, 847, 846, 856, 857, 849, 850, + 851, 852, 853, 854, 855, 848, 30, 409, 858, 1470, + 1910, 1859, 30, 30, 30, 683, 539, 975, 1912, 976, + 2046, 3, 1759, 80, 81, 82, 83, 84, 1539, 711, + 353, 1538, 1286, 1287, 1540, 1285, 1499, 1760, 1761, 352, + 731, 732, 733, 773, 1575, 1317, 30, 431, 63, 33, + 34, 1709, 1319, 1500, 1964, 1264, 1950, 1319, 1323, 1325, + 1337, 1324, 1332, 686, 1332, 689, 1344, 1850, 71, 71, + 1848, 368, 2233, 2155, 71, 71, 71, 63, 33, 34, + 2153, 2154, 356, 364, 2205, 2002, 471, 1915, 477, 479, + 478, 475, 476, 474, 473, 472, 1676, 710, 714, 35, + 97, 716, 359, 480, 481, 2001, 2000, 1999, 71, 1998, + 105, 101, 102, 1996, 103, 1997, 2076, 2077, 1610, 2214, + 2147, 2148, 2209, 1913, 1914, 1916, 1917, 1918, 2112, 1884, + 1364, 1522, 2044, 728, 712, 715, 2212, 713, 1678, 726, + 727, 725, 90, 360, 724, 2217, 2190, 107, 106, 734, + 2091, 735, 732, 733, 1611, 1363, 1567, 688, 687, 1657, + 1245, 346, 1928, 1929, 1637, 988, 718, 718, 2268, 1768, + 2042, 1572, 1571, 988, 988, 1980, 987, 1819, 718, 1271, + 1273, 1549, 1045, 2277, 2274, 2263, 62, 62, 1982, 97, + 2245, 685, 694, 1568, 2079, 92, 94, 347, 742, 89, + 744, 366, 743, 367, 75, 99, 98, 1573, 367, 1565, + 1938, 1614, 781, 1680, 1059, 1566, 1050, 1529, 1684, 1528, + 1679, 1527, 1677, 357, 357, 681, 1627, 1682, 777, 320, + 100, 870, 871, 1281, 1841, 1292, 1834, 1332, 1612, 1613, + 1681, 1582, 1346, 1543, 1937, 96, 1322, 1535, 2028, 62, + 1443, 1429, 1413, 1683, 1685, 2258, 1121, 982, 988, 1981, + 1272, 357, 988, 988, 867, 969, 709, 869, 838, 702, + 2211, 2213, 1794, 848, 1570, 790, 858, 747, 748, 104, + 819, 858, 1451, 1118, 1553, 357, 2102, 720, 836, 1553, + 1015, 1911, 775, 2199, 99, 98, 831, 880, 739, 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, - 1830, 897, 900, 900, 900, 906, 900, 900, 906, 900, + 1556, 897, 900, 900, 900, 906, 900, 900, 906, 900, 906, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, - 944, 945, 946, 947, 948, 1400, 958, 64, 774, 1860, - 1045, 97, 1541, 2256, 1673, 1551, 2257, 70, 2255, 1551, - 1015, 872, 873, 874, 875, 876, 877, 878, 879, 64, - 720, 1398, 1446, 1907, 870, 871, 1533, 1551, 64, 70, - 70, 739, 70, 1441, 70, 1427, 528, 971, 1649, 870, - 871, 1188, 70, 868, 821, 357, 1675, 741, 745, 2157, - 1271, 1273, 91, 1554, 2211, 2213, 1292, 1932, 1411, 1121, - 1551, 1404, 982, 969, 70, 838, 702, 848, 952, 858, - 858, 901, 903, 905, 907, 909, 911, 912, 914, 902, - 904, 988, 908, 910, 1281, 913, 849, 850, 851, 852, - 853, 854, 855, 848, 1781, 1046, 858, 693, 1118, 1090, - 1373, 1550, 831, 1002, 708, 1550, 99, 98, 1406, 986, - 820, 1636, 1634, 1653, 1120, 967, 1642, 829, 1103, 1641, - 1644, 1677, 418, 1550, 962, 1445, 1681, 1157, 1676, 977, - 1674, 1272, 960, 746, 831, 1679, 1637, 830, 829, 870, - 871, 722, 1155, 1156, 1154, 1016, 1782, 87, 1678, 851, - 852, 853, 854, 855, 848, 831, 1550, 858, 690, 1648, - 881, 1680, 1682, 1645, 736, 1119, 847, 846, 856, 857, - 849, 850, 851, 852, 853, 854, 855, 848, 1691, 1444, - 858, 1443, 830, 829, 86, 718, 1205, 1769, 830, 829, - 2261, 2200, 718, 718, 718, 1091, 1374, 707, 830, 829, - 831, 696, 697, 698, 699, 700, 831, 718, 718, 1029, - 1032, 1033, 1034, 1035, 1036, 1037, 831, 1038, 1039, 1040, - 1041, 1042, 1043, 1044, 1383, 1017, 1018, 1019, 1020, 996, - 1000, 1030, 997, 1003, 999, 1001, 998, 723, 1004, 1005, + 944, 945, 946, 947, 948, 774, 958, 64, 1553, 1448, + 1656, 1864, 70, 70, 91, 1936, 741, 745, 70, 70, + 70, 872, 873, 874, 875, 876, 877, 878, 879, 2256, + 1552, 1103, 2257, 1002, 2255, 1552, 64, 757, 758, 759, + 760, 761, 762, 763, 764, 765, 766, 767, 768, 870, + 871, 821, 70, 952, 1784, 1569, 977, 528, 971, 847, + 846, 856, 857, 849, 850, 851, 852, 853, 854, 855, + 848, 1090, 746, 858, 829, 1016, 2248, 2230, 2247, 820, + 1694, 901, 903, 905, 907, 909, 911, 912, 914, 902, + 904, 831, 908, 910, 1652, 913, 1373, 1157, 1553, 87, + 722, 1046, 830, 829, 1552, 690, 1785, 1205, 2261, 2265, + 1639, 1637, 1155, 1156, 1154, 1645, 1553, 1383, 1644, 1647, + 831, 708, 693, 2200, 868, 967, 870, 871, 736, 881, + 1205, 986, 1459, 1052, 962, 1640, 86, 1124, 1125, 1029, + 1032, 1033, 1034, 1035, 1036, 1037, 1261, 1038, 1039, 1040, + 1041, 1042, 1043, 1044, 1772, 1017, 1018, 1019, 1020, 996, + 1000, 1030, 997, 1003, 999, 1001, 998, 1091, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1021, - 1022, 1023, 1024, 1025, 1026, 1027, 1028, 738, 1205, 718, - 1457, 1114, 2248, 2230, 2247, 1052, 1071, 1124, 1125, 1424, - 1425, 1426, 933, 934, 935, 936, 937, 921, 922, 923, + 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1271, 1273, 826, + 1598, 2126, 1374, 1188, 1552, 718, 723, 365, 830, 829, + 1639, 1637, 718, 718, 718, 988, 830, 829, 1641, 1638, + 776, 2108, 1552, 960, 707, 1651, 831, 718, 718, 1648, + 1902, 738, 1901, 2269, 831, 1640, 696, 697, 698, 699, + 700, 847, 846, 856, 857, 849, 850, 851, 852, 853, + 854, 855, 848, 28, 1446, 858, 1445, 1597, 847, 846, + 856, 857, 849, 850, 851, 852, 853, 854, 855, 848, + 830, 829, 858, 830, 829, 1595, 1071, 2202, 1272, 718, + 1031, 1114, 1576, 2151, 418, 2175, 2270, 2174, 831, 514, + 515, 831, 933, 934, 935, 936, 937, 921, 922, 923, 938, 939, 924, 925, 926, 932, 940, 927, 928, 929, 930, 931, 943, 942, 941, 944, 945, 947, 946, 948, - 1106, 1060, 365, 1705, 830, 829, 1093, 1094, 2126, 1076, - 1077, 2265, 826, 830, 829, 830, 829, 1096, 2269, 1073, - 2202, 2151, 831, 2108, 836, 1126, 1898, 1565, 830, 829, - 2151, 831, 2175, 831, 2174, 28, 1113, 71, 1085, 1086, - 1031, 1897, 1570, 1569, 1595, 1596, 831, 1153, 1593, 2187, - 62, 1127, 1098, 1099, 1574, 1174, 1101, 1175, 1539, 2186, - 1540, 830, 829, 2160, 1566, 884, 1147, 2132, 1109, 830, - 829, 2270, 1104, 752, 1551, 1112, 2152, 1151, 1571, 831, - 1563, 2173, 830, 829, 514, 515, 1564, 831, 1128, 1693, - 1140, 1142, 1143, 2039, 1991, 751, 1141, 960, 1072, 1953, - 831, 1895, 1148, 1194, 1197, 1078, 1079, 1080, 1774, 1591, - 1206, 1146, 407, 1389, 1100, 1129, 1074, 1131, 2172, 1149, - 1087, 1088, 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, - 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1144, 1809, 1265, - 1132, 1811, 2037, 1133, 958, 1568, 785, 789, 958, 1181, - 1183, 1967, 2192, 1889, 2189, 1191, 2137, 776, 1152, 1177, - 1178, 2010, 1554, 839, 447, 446, 449, 450, 451, 452, - 1550, 2006, 1111, 448, 453, 1811, 1636, 1634, 1930, 1208, - 1826, 988, 1822, 528, 1638, 1635, 1218, 1819, 1220, 1216, - 1217, 1889, 2134, 1889, 2041, 776, 1223, 1224, 1225, 1226, - 883, 1637, 1270, 1967, 2033, 1967, 1981, 1967, 776, 1180, - 1293, 896, 1298, 539, 1967, 1966, 1276, 1889, 1888, 2004, - 1278, 1873, 776, 1202, 1410, 776, 1985, 1832, 1529, 1818, - 1816, 1802, 718, 1071, 718, 1801, 1800, 1789, 1788, 1785, - 1786, 1984, 1046, 1785, 1784, 75, 1148, 1274, 1439, 776, - 1797, 1261, 1619, 1618, 1371, 1294, 1370, 1304, 1248, 776, - 1282, 1227, 1228, 1279, 1176, 1283, 1232, 1182, 1386, 1235, - 1097, 881, 1068, 1301, 1240, 960, 1567, 425, 1182, 776, - 960, 1067, 1066, 1065, 960, 1833, 1184, 1349, 1350, 1351, - 1352, 1057, 1271, 1273, 1055, 62, 1054, 1053, 1051, 1182, - 1353, 985, 984, 1722, 704, 361, 970, 1333, 1334, 1335, - 1336, 2003, 965, 790, 1529, 1775, 965, 1345, 1529, 1275, - 112, 964, 75, 112, 970, 2139, 1868, 1247, 1428, 112, - 1798, 1787, 1744, 1542, 1284, 1439, 847, 846, 856, 857, - 849, 850, 851, 852, 853, 854, 855, 848, 112, 1147, - 858, 1462, 1253, 1256, 1257, 1258, 1254, 1461, 1255, 1259, - 881, 112, 1735, 1736, 112, 546, 1248, 112, 966, 1833, - 968, 1248, 966, 1272, 964, 970, 1439, 1102, 112, 1369, - 546, 964, 1122, 1409, 1058, 1148, 112, 779, 71, 2145, - 1151, 2135, 1385, 1384, 1294, 1320, 1321, 780, 1326, 1327, - 1328, 1329, 1330, 1375, 1743, 2008, 1900, 1319, 1381, 1415, - 1876, 1348, 1416, 1768, 1735, 1736, 1340, 1341, 1342, 1344, - 1433, 1546, 1365, 1339, 1338, 1500, 1501, 1047, 771, 958, - 958, 958, 958, 958, 1430, 1431, 1432, 1429, 1390, 1356, - 1423, 2239, 71, 2237, 1435, 1359, 1265, 1361, 1521, 1436, - 1075, 2221, 1438, 1440, 1796, 1738, 958, 1722, 1442, 1597, - 528, 1502, 1062, 1741, 1448, 1512, 1740, 1451, 1452, 1453, - 1513, 1152, 1510, 1509, 1459, 1508, 1460, 1511, 1095, 1463, - 1464, 2169, 1465, 1466, 2141, 1456, 1470, 1471, 1472, 1473, - 1474, 1531, 1514, 1532, 1257, 1258, 1658, 1481, 1482, 1483, - 1524, 1485, 1486, 1516, 1488, 1489, 1490, 1491, 1412, 1493, - 1494, 1495, 1523, 883, 413, 414, 881, 824, 825, 1253, - 1256, 1257, 1258, 1254, 1298, 1255, 1259, 1135, 1530, 2167, - 1517, 1518, 1503, 1555, 1421, 1506, 1420, 1543, 62, 1958, - 1515, 1504, 1505, 1556, 1507, 1821, 822, 1773, 1772, 718, - 1548, 718, 718, 2079, 2082, 2131, 2130, 1549, 1552, 2002, - 2159, 1046, 2000, 2073, 1534, 960, 960, 960, 960, 960, - 2072, 1137, 1138, 1545, 362, 1622, 783, 1584, 983, 769, - 753, 1583, 960, 1585, 1586, 1587, 1588, 1617, 784, 750, - 749, 705, 960, 2182, 1866, 1124, 1125, 1360, 112, 1467, - 1469, 1937, 1388, 546, 546, 1061, 1475, 1476, 1477, 1478, - 1655, 1600, 824, 825, 404, 546, 1592, 1380, 1261, 1049, - 410, 411, 1575, 1576, 1594, 1419, 883, 2181, 2180, 1582, - 1192, 1193, 2179, 1418, 1988, 2162, 2161, 2128, 2083, 1589, - 1630, 1643, 1647, 2017, 112, 1957, 1499, 405, 75, 1697, - 2016, 1940, 1529, 1450, 1620, 1663, 1447, 1627, 1602, 1603, - 1604, 1626, 1623, 1640, 1633, 1690, 1632, 1184, 1639, 1147, - 1650, 1651, 1092, 1624, 2241, 2240, 1213, 827, 2240, 1727, - 2241, 62, 856, 857, 849, 850, 851, 852, 853, 854, - 855, 848, 1665, 1621, 858, 2030, 835, 1664, 1771, 1117, - 363, 1746, 1669, 77, 1668, 1148, 1750, 1751, 1752, 1683, - 528, 1723, 1684, 1667, 1671, 2058, 47, 1732, 79, 1290, - 50, 1577, 1578, 1579, 1581, 1685, 1686, 72, 1687, 1688, - 2060, 19, 2059, 18, 1726, 2061, 20, 2062, 21, 1753, - 1694, 1695, 2057, 15, 1, 1755, 2129, 1703, 1704, 2056, - 14, 2078, 1709, 1749, 2080, 1712, 1745, 2050, 10, 1599, - 1717, 1729, 1613, 1999, 1615, 1616, 1739, 2065, 25, 1663, - 1298, 1766, 1298, 1919, 1767, 2064, 24, 2066, 26, 1904, - 1747, 2055, 13, 2052, 12, 1760, 1903, 1794, 1795, 1354, - 2051, 11, 112, 112, 112, 1606, 1764, 2049, 9, 1759, - 1605, 1748, 1353, 770, 1107, 1631, 1397, 546, 2089, 1305, - 1295, 536, 85, 1372, 1799, 721, 1928, 328, 1302, 1561, - 2081, 772, 1560, 1557, 1572, 1776, 1777, 1316, 1559, 1558, - 2076, 1562, 1780, 993, 991, 992, 1114, 990, 995, 1783, - 994, 332, 523, 978, 1770, 2118, 828, 93, 51, 1931, - 1646, 1391, 1813, 1698, 1699, 1700, 1701, 1702, 88, 730, - 334, 1413, 1414, 866, 789, 1417, 1535, 529, 2146, 787, - 1853, 2092, 1455, 1808, 895, 1831, 1814, 1203, 430, 1778, - 1519, 2095, 1834, 1139, 445, 444, 443, 1825, 440, 441, - 1379, 1130, 1496, 1046, 840, 1812, 1790, 428, 420, 956, - 949, 1805, 1728, 1387, 1252, 1250, 1817, 1249, 1859, 1063, - 518, 1829, 846, 856, 857, 849, 850, 851, 852, 853, - 854, 855, 848, 1842, 1437, 858, 1806, 1737, 1733, 1263, - 955, 369, 1835, 61, 1804, 737, 345, 1854, 2024, 32, - 1838, 76, 415, 1874, 27, 1836, 17, 1458, 1884, 1885, - 1886, 1847, 1848, 740, 22, 456, 16, 691, 36, 546, - 39, 38, 1601, 1362, 2117, 1867, 1891, 112, 2207, 756, - 2228, 112, 960, 2149, 112, 2063, 62, 2067, 1882, 1779, - 112, 2054, 546, 2053, 2194, 1887, 23, 1298, 2193, 546, - 546, 546, 112, 112, 112, 1869, 1870, 1871, 1872, 112, - 1543, 4, 1883, 406, 546, 546, 1916, 1917, 1918, 29, - 2, 1892, 0, 958, 0, 1881, 0, 1926, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1893, 0, - 1927, 0, 0, 0, 0, 0, 0, 1915, 0, 0, - 530, 0, 1921, 542, 1920, 0, 1922, 0, 1935, 1727, - 0, 0, 1962, 1942, 1943, 112, 546, 112, 695, 546, - 0, 1746, 1929, 1936, 1764, 1663, 0, 0, 0, 0, - 1353, 959, 1839, 1840, 1965, 1841, 0, 0, 1843, 0, - 1845, 0, 0, 0, 0, 1941, 1894, 0, 1896, 1987, - 0, 1989, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1959, 0, 0, 1726, 112, 1964, 1969, 0, 0, - 0, 835, 1986, 1979, 109, 1974, 1968, 0, 2014, 0, - 0, 0, 1952, 348, 1270, 1980, 1970, 1956, 1947, 1948, - 1949, 1950, 1951, 0, 0, 1990, 1954, 1955, 0, 0, - 0, 1727, 1945, 62, 1982, 0, 1983, 0, 0, 960, - 2009, 2007, 1971, 1972, 1973, 519, 2018, 546, 535, 2013, - 0, 682, 1890, 2019, 0, 0, 0, 0, 0, 0, - 62, 0, 692, 0, 0, 2043, 0, 0, 0, 2031, - 701, 0, 2036, 0, 958, 0, 2029, 0, 0, 2005, - 0, 0, 0, 546, 546, 2038, 1726, 1901, 0, 1692, - 2035, 2012, 0, 0, 0, 0, 0, 2094, 2098, 0, - 0, 0, 0, 0, 0, 2020, 2021, 2022, 2023, 0, - 2086, 0, 2027, 2028, 0, 0, 2087, 0, 112, 0, - 0, 2113, 0, 0, 2099, 0, 112, 112, 0, 2100, - 2105, 112, 112, 528, 2106, 112, 112, 112, 0, 0, - 0, 0, 62, 0, 0, 0, 2084, 0, 0, 0, - 0, 0, 546, 546, 776, 0, 0, 0, 0, 0, - 2085, 1754, 0, 1961, 0, 0, 0, 0, 0, 2088, - 0, 542, 542, 0, 0, 0, 2125, 2127, 0, 2140, - 0, 0, 2101, 542, 0, 0, 0, 0, 2122, 2133, - 2107, 0, 847, 846, 856, 857, 849, 850, 851, 852, - 853, 854, 855, 848, 0, 0, 858, 0, 0, 2036, - 960, 0, 0, 2164, 2156, 0, 0, 0, 112, 546, - 2098, 546, 0, 62, 2171, 0, 112, 112, 0, 62, - 112, 2168, 2166, 2170, 2185, 0, 0, 2165, 2176, 2163, - 0, 0, 0, 2188, 0, 0, 62, 2136, 0, 2178, - 0, 62, 0, 0, 2032, 2198, 0, 2197, 112, 112, - 112, 2196, 2204, 2144, 2195, 0, 0, 0, 2216, 0, - 62, 2222, 2201, 62, 62, 2183, 0, 0, 62, 2185, - 0, 0, 703, 2231, 1827, 0, 0, 0, 2234, 0, - 0, 0, 0, 418, 0, 62, 2223, 2238, 62, 2225, - 2185, 2236, 1852, 2249, 0, 0, 2251, 0, 0, 0, - 0, 0, 0, 62, 2259, 62, 0, 0, 2185, 62, - 2185, 0, 0, 0, 2246, 1856, 0, 0, 778, 0, + 1106, 1060, 1174, 1073, 1175, 1072, 1708, 830, 829, 1669, + 407, 2187, 1078, 1079, 1080, 2186, 1126, 1096, 1093, 1094, + 1076, 1077, 1085, 1086, 2160, 831, 1113, 1087, 1088, 2132, + 847, 846, 856, 857, 849, 850, 851, 852, 853, 854, + 855, 848, 2041, 836, 858, 830, 829, 1426, 1427, 1428, + 62, 2151, 1127, 1405, 1098, 1099, 752, 1995, 1101, 830, + 829, 71, 1541, 831, 1542, 884, 2152, 1404, 1957, 1899, + 1109, 1153, 1112, 1436, 1104, 1151, 1777, 831, 751, 1111, + 849, 850, 851, 852, 853, 854, 855, 848, 1128, 1593, + 858, 1389, 1148, 1447, 847, 846, 856, 857, 849, 850, + 851, 852, 853, 854, 855, 848, 1100, 1147, 858, 1409, + 1074, 2173, 1146, 1813, 1194, 1197, 1815, 1129, 1403, 1149, + 1131, 1206, 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, + 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1144, 2172, 1265, + 830, 829, 2039, 1132, 958, 2013, 1133, 1696, 958, 1181, + 1183, 1971, 2192, 1893, 2189, 1191, 830, 829, 831, 1556, + 1177, 1178, 2137, 776, 1893, 2134, 1893, 2043, 960, 1401, + 1395, 1396, 2009, 1394, 831, 1397, 1398, 1971, 2035, 1208, + 1815, 1140, 1142, 1143, 1971, 1985, 1218, 1141, 1220, 1216, + 1217, 1276, 1971, 776, 528, 1278, 1223, 1224, 1225, 1226, + 856, 857, 849, 850, 851, 852, 853, 854, 855, 848, + 1407, 1410, 858, 1180, 1971, 1970, 1270, 851, 852, 853, + 854, 855, 848, 1071, 1120, 858, 1934, 1202, 1830, 1152, + 881, 1826, 718, 1823, 718, 1822, 1148, 1820, 1046, 1274, + 1893, 1892, 1877, 776, 776, 1184, 1412, 776, 1836, 1531, + 1805, 1293, 1804, 1298, 539, 1803, 1294, 1792, 1791, 1788, + 1789, 1333, 1334, 1335, 1336, 1227, 1228, 1283, 1279, 1304, + 1232, 1621, 1282, 1235, 1620, 1119, 1301, 2008, 1240, 1788, + 1787, 1441, 776, 1248, 776, 1182, 1386, 1989, 785, 789, + 1402, 1371, 830, 829, 1370, 62, 1353, 1182, 776, 1988, + 1349, 1350, 1351, 1352, 1176, 839, 1837, 1097, 970, 1068, + 831, 1067, 1066, 1065, 1345, 1057, 1400, 1055, 1862, 881, + 447, 446, 449, 450, 451, 452, 1054, 1053, 1430, 448, + 453, 1051, 790, 1253, 1256, 1257, 1258, 1254, 704, 1255, + 1259, 965, 883, 1738, 1739, 361, 960, 985, 984, 965, + 75, 960, 1359, 896, 1361, 960, 1406, 847, 846, 856, + 857, 849, 850, 851, 852, 853, 854, 855, 848, 1725, + 2007, 858, 970, 1247, 1861, 1148, 1800, 1778, 2139, 1872, + 1531, 1531, 1275, 1411, 964, 1801, 75, 1375, 1151, 1790, + 1147, 1747, 1381, 1385, 1629, 1294, 1384, 966, 1544, 968, + 1284, 1441, 1464, 1408, 1182, 966, 1463, 964, 1417, 1418, + 1102, 1369, 1248, 847, 846, 856, 857, 849, 850, 851, + 852, 853, 854, 855, 848, 1502, 1503, 858, 1837, 958, + 958, 958, 958, 958, 1432, 1433, 1434, 1248, 970, 1431, + 1441, 964, 1390, 1122, 1437, 1058, 1265, 1435, 1523, 780, + 779, 1438, 1440, 1442, 71, 2145, 958, 2135, 1444, 1253, + 1256, 1257, 1258, 1254, 1450, 1255, 1259, 1453, 1454, 1455, + 1746, 528, 1504, 2011, 1461, 881, 1462, 1904, 1319, 1465, + 1466, 1880, 1467, 1468, 1458, 1348, 1472, 1473, 1474, 1475, + 1476, 1533, 1771, 1534, 71, 1738, 1739, 1483, 1484, 1485, + 1526, 1487, 1488, 1532, 1490, 1491, 1492, 1493, 1344, 1495, + 1496, 1497, 1548, 1365, 1339, 1338, 1047, 1518, 771, 1356, + 2239, 2237, 2221, 1799, 1741, 1725, 1525, 1599, 1062, 1425, + 1519, 1520, 1506, 1507, 1557, 1509, 1517, 1744, 62, 1514, + 1505, 1743, 1152, 1508, 1515, 1512, 1545, 1511, 1510, 718, + 1513, 718, 718, 1516, 2169, 1257, 1258, 1046, 425, 2141, + 1536, 413, 414, 1661, 1414, 1298, 824, 825, 1135, 2167, + 1585, 1423, 1587, 1588, 1589, 1590, 1577, 1578, 1422, 1962, + 1558, 1318, 1825, 1584, 1776, 1547, 1775, 1619, 1550, 1551, + 1554, 2081, 1075, 1591, 2084, 822, 2131, 2130, 2006, 2159, + 2004, 112, 2075, 2074, 112, 1501, 362, 1624, 1469, 1471, + 112, 1594, 783, 1586, 983, 1477, 1478, 1479, 1480, 769, + 1095, 1596, 753, 2182, 784, 750, 1184, 749, 705, 112, + 1870, 1124, 1125, 1360, 1941, 1388, 960, 960, 960, 960, + 960, 1061, 112, 1658, 1602, 112, 546, 1380, 112, 824, + 825, 1700, 1261, 960, 1049, 883, 1421, 1628, 1630, 112, + 1635, 546, 1625, 960, 1420, 1626, 1622, 112, 1643, 1615, + 1693, 1617, 1618, 2181, 1633, 1646, 1650, 1623, 1636, 410, + 411, 1730, 1642, 62, 1653, 1654, 846, 856, 857, 849, + 850, 851, 852, 853, 854, 855, 848, 1148, 1666, 858, + 2180, 1667, 2179, 1749, 1672, 1992, 1671, 404, 1753, 1754, + 1755, 1687, 1147, 1137, 1138, 1670, 1686, 1674, 1601, 1735, + 2162, 1668, 2161, 528, 1726, 2128, 2085, 1688, 1689, 2019, + 1690, 1691, 1961, 405, 1729, 75, 2018, 1944, 1531, 1604, + 1605, 1606, 1697, 1698, 1756, 2241, 2240, 1758, 1452, 1706, + 1707, 1449, 1092, 827, 1712, 1752, 1748, 1715, 2240, 2241, + 2032, 1774, 1720, 1117, 1732, 363, 77, 79, 883, 1742, + 2060, 47, 1192, 1193, 1769, 2062, 19, 1770, 1750, 2061, + 18, 1213, 2063, 20, 2064, 21, 50, 1767, 72, 1797, + 1798, 2059, 15, 2058, 14, 1, 1763, 1762, 2052, 10, + 1353, 2067, 25, 1751, 2066, 24, 2068, 26, 2057, 13, + 2054, 12, 1666, 1298, 1802, 1298, 1779, 1780, 2053, 11, + 2051, 9, 2129, 1783, 2080, 2082, 2003, 1923, 1908, 1907, + 1786, 1608, 1607, 770, 1107, 1781, 1634, 1399, 2089, 1114, + 1305, 1295, 536, 85, 1372, 721, 1773, 1932, 328, 1302, + 1563, 2083, 772, 1562, 1559, 1574, 1817, 1316, 1561, 1560, + 2078, 1290, 1564, 1731, 1701, 1702, 1703, 1704, 1705, 993, + 991, 992, 990, 1857, 995, 994, 332, 523, 1835, 112, + 1811, 1818, 1809, 1838, 546, 546, 978, 2118, 828, 1812, + 93, 51, 1046, 1935, 1649, 1829, 546, 1816, 1393, 88, + 730, 334, 866, 1808, 1833, 1419, 1537, 529, 1821, 2146, + 787, 2092, 1457, 895, 1863, 1203, 430, 1521, 2095, 1139, + 1807, 445, 444, 443, 440, 112, 441, 1379, 1130, 1498, + 840, 1354, 1793, 428, 420, 1839, 956, 949, 1387, 1846, + 1252, 1250, 1249, 1842, 1063, 518, 1740, 1736, 1840, 1878, + 1263, 955, 369, 61, 1851, 1852, 1888, 1889, 1890, 737, + 345, 1858, 2026, 32, 76, 415, 456, 27, 17, 740, + 22, 1871, 16, 1391, 1895, 691, 36, 835, 39, 62, + 38, 1886, 1603, 1362, 2117, 2207, 756, 2228, 2149, 1891, + 2065, 2069, 1887, 2056, 2055, 2194, 23, 2193, 1873, 1874, + 1875, 1876, 4, 1415, 1416, 406, 789, 1920, 1921, 1922, + 29, 2, 1545, 0, 1896, 0, 0, 958, 1885, 1930, + 1897, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1931, 1298, 0, 0, 0, 0, 0, 0, 1919, 0, + 0, 0, 0, 1898, 0, 1900, 960, 1925, 1946, 1947, + 1939, 530, 1924, 1730, 542, 1926, 1966, 1767, 0, 0, + 0, 0, 0, 0, 1945, 1749, 1439, 0, 0, 695, + 1353, 0, 1940, 112, 112, 112, 0, 0, 0, 0, + 0, 0, 0, 1969, 0, 0, 0, 0, 546, 1460, + 0, 0, 0, 1991, 0, 1993, 0, 0, 1933, 0, + 1949, 0, 0, 0, 0, 0, 1729, 1963, 0, 0, + 1666, 1968, 0, 0, 0, 0, 1990, 1973, 1972, 1978, + 1984, 0, 2016, 0, 1983, 0, 1956, 0, 0, 0, + 1994, 1960, 1951, 1952, 1953, 1954, 1955, 1986, 0, 1987, + 1958, 1959, 1270, 0, 1974, 1730, 0, 62, 0, 0, + 2010, 0, 0, 0, 0, 2012, 1975, 1976, 1977, 1905, + 2020, 2015, 0, 0, 0, 2021, 0, 0, 0, 0, + 0, 0, 0, 0, 62, 0, 0, 0, 0, 2045, + 2038, 2033, 0, 0, 0, 0, 0, 0, 958, 0, + 2031, 0, 0, 0, 0, 0, 0, 2040, 1729, 0, + 0, 0, 0, 0, 2037, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2022, + 2023, 2024, 2025, 2087, 960, 2088, 2029, 2030, 2094, 2098, + 0, 0, 2100, 2113, 0, 2086, 1965, 0, 2099, 0, + 546, 0, 0, 0, 0, 2105, 0, 0, 112, 0, + 0, 0, 112, 0, 62, 112, 528, 2106, 0, 0, + 0, 112, 0, 546, 0, 0, 0, 0, 0, 0, + 546, 546, 546, 112, 112, 112, 0, 0, 0, 0, + 112, 0, 0, 0, 0, 546, 546, 2125, 2127, 0, + 2140, 0, 542, 542, 2101, 0, 0, 0, 0, 0, + 0, 2133, 2107, 0, 542, 0, 0, 0, 0, 0, + 0, 0, 0, 2038, 0, 0, 0, 0, 0, 0, + 0, 0, 2156, 2164, 0, 0, 0, 2034, 0, 0, + 0, 0, 0, 62, 2171, 0, 112, 546, 112, 62, + 546, 2122, 2166, 1695, 2185, 2168, 0, 2165, 2170, 2098, + 2176, 2163, 0, 0, 2188, 0, 62, 2136, 0, 2178, + 0, 62, 0, 0, 2198, 0, 2197, 0, 2196, 2204, + 2195, 0, 0, 2144, 0, 0, 0, 0, 2216, 0, + 62, 2222, 2201, 62, 62, 0, 112, 0, 62, 2185, + 0, 0, 835, 2231, 0, 960, 0, 0, 2234, 0, + 0, 0, 0, 0, 0, 62, 2223, 2238, 62, 2225, + 2185, 2236, 0, 2249, 0, 1757, 2251, 0, 0, 0, + 0, 0, 0, 62, 2259, 62, 2183, 0, 2185, 62, + 2185, 0, 0, 0, 2246, 0, 0, 0, 546, 0, 0, 0, 0, 62, 0, 0, 62, 0, 2185, 0, 0, 0, 0, 62, 0, 2264, 0, 62, 2185, 0, - 0, 2215, 2185, 0, 0, 0, 0, 0, 0, 883, - 0, 0, 2273, 0, 0, 0, 0, 1875, 0, 530, - 1877, 0, 0, 0, 0, 979, 1707, 1708, 883, 1710, - 1711, 0, 1713, 1714, 1715, 1716, 0, 1718, 1719, 1720, - 0, 847, 846, 856, 857, 849, 850, 851, 852, 853, - 854, 855, 848, 2252, 0, 858, 0, 0, 0, 0, - 2266, 2267, 0, 0, 0, 0, 112, 112, 112, 112, - 112, 0, 0, 0, 0, 0, 0, 0, 112, 0, - 0, 0, 0, 112, 0, 0, 0, 112, 0, 0, - 0, 0, 0, 112, 340, 0, 0, 0, 0, 0, - 0, 0, 1185, 1190, 0, 0, 0, 1196, 1199, 1200, - 1201, 0, 0, 0, 546, 0, 0, 0, 0, 0, - 0, 0, 2206, 0, 0, 0, 951, 0, 961, 0, - 0, 0, 337, 0, 1211, 0, 1214, 1215, 0, 0, - 0, 1219, 0, 1221, 1222, 0, 0, 0, 0, 0, - 0, 1229, 1230, 1231, 0, 1233, 1234, 0, 1236, 1237, - 1238, 1239, 0, 1241, 1242, 1243, 0, 0, 0, 0, - 0, 0, 0, 1851, 546, 0, 0, 1048, 0, 0, - 0, 0, 0, 0, 321, 0, 546, 112, 546, 546, - 0, 324, 0, 0, 0, 0, 0, 0, 0, 0, - 542, 333, 338, 339, 0, 0, 0, 542, 542, 542, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 542, 542, 418, 0, 0, 0, 546, 546, - 0, 0, 0, 0, 0, 112, 0, 330, 0, 883, - 331, 0, 0, 336, 0, 546, 0, 1861, 1862, 0, - 0, 0, 0, 1863, 0, 0, 1864, 0, 0, 0, - 0, 1865, 847, 846, 856, 857, 849, 850, 851, 852, - 853, 854, 855, 848, 542, 0, 858, 1116, 0, 0, - 0, 0, 0, 0, 0, 0, 546, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2093, 2097, - 0, 1056, 0, 0, 0, 519, 0, 0, 1064, 0, - 0, 0, 0, 322, 0, 0, 0, 0, 546, 546, - 0, 0, 0, 0, 0, 0, 1081, 1082, 1083, 0, - 0, 0, 0, 1084, 542, 0, 0, 1858, 0, 546, - 0, 0, 0, 0, 0, 335, 325, 326, 0, 343, - 2114, 2115, 0, 327, 329, 0, 323, 342, 341, 546, - 546, 0, 546, 0, 546, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1179, 847, 846, 856, 857, - 849, 850, 851, 852, 853, 854, 855, 848, 0, 1110, - 858, 0, 0, 530, 30, 0, 63, 33, 34, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 59, 0, - 0, 1209, 1210, 0, 69, 112, 0, 0, 35, 1454, - 0, 2097, 0, 0, 0, 0, 0, 0, 0, 0, - 112, 0, 0, 2177, 0, 0, 0, 0, 0, 1136, - 0, 0, 0, 112, 1479, 1480, 1857, 0, 0, 1484, - 0, 0, 1487, 0, 0, 786, 71, 1492, 0, 0, - 0, 546, 0, 0, 112, 546, 530, 0, 0, 0, - 0, 0, 546, 0, 0, 0, 0, 0, 542, 2068, - 542, 542, 2227, 2230, 2226, 847, 846, 856, 857, 849, - 850, 851, 852, 853, 854, 855, 848, 0, 110, 858, - 0, 344, 0, 0, 0, 0, 0, 110, 0, 0, - 0, 0, 2250, 0, 0, 0, 0, 0, 37, 65, - 41, 40, 43, 0, 0, 0, 372, 0, 0, 0, - 0, 0, 0, 0, 2069, 0, 419, 0, 0, 521, - 531, 0, 110, 0, 0, 110, 0, 542, 0, 542, - 44, 68, 67, 0, 0, 0, 110, 42, 0, 0, - 0, 546, 1246, 0, 110, 0, 1666, 0, 546, 546, - 546, 0, 0, 0, 0, 0, 1277, 546, 0, 0, - 0, 0, 0, 0, 0, 0, 546, 847, 846, 856, - 857, 849, 850, 851, 852, 853, 854, 855, 848, 57, - 58, 858, 2070, 0, 0, 0, 0, 0, 0, 842, - 0, 845, 2071, 66, 112, 48, 49, 542, 859, 860, - 861, 862, 863, 864, 865, 0, 843, 844, 841, 847, - 846, 856, 857, 849, 850, 851, 852, 853, 854, 855, - 848, 0, 0, 858, 0, 0, 0, 0, 546, 0, - 112, 0, 0, 0, 0, 546, 0, 0, 0, 0, - 0, 0, 1358, 0, 0, 0, 0, 0, 0, 0, - 1366, 1367, 0, 0, 1368, 0, 30, 0, 63, 33, - 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 59, 546, 0, 0, 546, 0, 69, 0, 1434, 112, - 35, 112, 0, 0, 1378, 64, 0, 546, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 546, 847, - 846, 856, 857, 849, 850, 851, 852, 853, 854, 855, - 848, 0, 0, 858, 0, 0, 0, 0, 71, 0, - 0, 0, 0, 530, 0, 0, 0, 0, 0, 0, - 70, 0, 546, 0, 0, 0, 0, 0, 0, 0, - 0, 2068, 0, 0, 0, 0, 2275, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 110, 0, 0, 0, - 1850, 0, 0, 0, 0, 546, 0, 0, 0, 0, - 0, 0, 542, 0, 0, 0, 0, 0, 0, 0, - 37, 65, 41, 40, 43, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 2069, 0, 0, 0, - 0, 112, 110, 0, 0, 0, 546, 0, 0, 0, - 0, 0, 44, 68, 67, 0, 1849, 0, 0, 42, - 0, 0, 0, 0, 0, 1015, 0, 0, 0, 0, - 0, 0, 1598, 0, 0, 0, 0, 0, 112, 0, - 0, 0, 0, 0, 542, 0, 542, 542, 0, 847, - 846, 856, 857, 849, 850, 851, 852, 853, 854, 855, - 848, 57, 58, 858, 2070, 0, 0, 0, 546, 0, - 0, 0, 0, 0, 2071, 66, 0, 48, 49, 0, - 0, 0, 0, 0, 0, 0, 1656, 1657, 0, 546, + 0, 2215, 2185, 0, 0, 0, 0, 1856, 0, 0, + 0, 0, 2273, 0, 546, 546, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 530, 1710, 1711, 0, 1713, 1714, 979, 1716, 1717, 1718, + 1719, 0, 1721, 1722, 1723, 0, 0, 0, 0, 112, + 0, 0, 0, 2252, 0, 0, 0, 112, 112, 0, + 2266, 2267, 112, 112, 0, 0, 112, 112, 112, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1831, + 0, 2206, 0, 546, 546, 0, 0, 0, 418, 0, + 1015, 0, 0, 0, 0, 959, 847, 846, 856, 857, + 849, 850, 851, 852, 853, 854, 855, 848, 0, 0, + 858, 0, 0, 0, 0, 0, 0, 0, 1320, 1321, + 1860, 1326, 1327, 1328, 1329, 1330, 0, 0, 0, 2157, + 0, 0, 0, 0, 0, 0, 0, 0, 109, 1340, + 1341, 1342, 0, 0, 0, 0, 0, 348, 0, 112, + 546, 0, 546, 0, 883, 0, 0, 112, 112, 0, + 0, 112, 1879, 0, 0, 1881, 0, 0, 0, 0, + 0, 0, 0, 883, 0, 0, 0, 0, 0, 519, + 0, 0, 535, 1002, 1855, 682, 0, 0, 1048, 112, + 112, 112, 0, 0, 0, 0, 692, 0, 0, 0, + 0, 0, 0, 0, 701, 0, 0, 1185, 1190, 0, + 0, 542, 1196, 1199, 1200, 1201, 0, 0, 542, 542, + 542, 0, 0, 0, 0, 1016, 0, 0, 0, 0, + 0, 0, 0, 542, 542, 0, 0, 0, 0, 1211, + 0, 1214, 1215, 0, 0, 0, 1219, 0, 1221, 1222, + 0, 0, 0, 1865, 1866, 0, 1229, 1230, 1231, 1867, + 1233, 1234, 1868, 1236, 1237, 1238, 1239, 1869, 1241, 1242, + 1243, 0, 0, 847, 846, 856, 857, 849, 850, 851, + 852, 853, 854, 855, 848, 542, 0, 858, 1116, 1029, + 1032, 1033, 1034, 1035, 1036, 1037, 0, 1038, 1039, 1040, + 1041, 1042, 1043, 1044, 0, 1017, 1018, 1019, 1020, 996, + 1000, 1030, 997, 1003, 999, 1001, 998, 0, 1004, 1005, + 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1021, + 1022, 1023, 1024, 1025, 1026, 1027, 1028, 0, 0, 0, + 0, 0, 0, 0, 0, 542, 0, 112, 112, 112, + 112, 112, 0, 0, 0, 0, 0, 0, 0, 112, + 0, 0, 0, 0, 112, 0, 0, 0, 112, 0, + 418, 0, 0, 0, 112, 0, 30, 31, 63, 33, + 34, 0, 0, 0, 0, 883, 1179, 0, 0, 0, + 59, 0, 0, 0, 0, 546, 69, 0, 0, 0, + 35, 54, 55, 0, 530, 0, 0, 60, 0, 0, + 0, 0, 0, 0, 0, 0, 703, 0, 340, 0, + 1031, 0, 1209, 1210, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 45, 0, 0, 0, 71, 0, + 0, 0, 2093, 2097, 1579, 1580, 1581, 1583, 0, 0, + 0, 0, 0, 0, 0, 546, 337, 0, 0, 0, + 0, 0, 778, 0, 0, 0, 0, 546, 112, 546, + 546, 0, 0, 0, 0, 0, 0, 530, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 542, + 0, 542, 542, 0, 2114, 2115, 0, 0, 0, 786, + 37, 65, 41, 40, 43, 0, 56, 0, 321, 0, + 0, 546, 546, 0, 0, 324, 0, 0, 112, 0, + 0, 0, 0, 0, 1456, 333, 338, 339, 546, 0, + 0, 0, 44, 68, 67, 0, 0, 52, 53, 42, + 0, 0, 110, 0, 0, 344, 0, 0, 0, 1481, + 1482, 110, 0, 0, 1486, 0, 0, 1489, 542, 0, + 542, 330, 1494, 2097, 331, 0, 0, 336, 0, 546, + 372, 0, 0, 0, 0, 2177, 0, 0, 0, 0, + 419, 57, 58, 521, 531, 0, 110, 0, 0, 110, + 0, 0, 0, 0, 46, 66, 0, 48, 49, 0, + 110, 546, 546, 0, 0, 0, 0, 0, 110, 0, + 951, 0, 961, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 546, 0, 0, 1854, 0, 0, 542, 0, + 0, 0, 0, 0, 0, 0, 0, 322, 0, 0, + 0, 0, 546, 546, 1853, 546, 0, 546, 0, 0, + 0, 0, 0, 0, 2250, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 335, + 325, 326, 0, 343, 0, 0, 0, 327, 329, 0, + 323, 342, 341, 0, 0, 0, 0, 64, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 112, 0, + 0, 0, 0, 0, 1782, 0, 0, 0, 0, 0, + 0, 0, 0, 112, 847, 846, 856, 857, 849, 850, + 851, 852, 853, 854, 855, 848, 112, 0, 858, 0, + 0, 0, 70, 847, 846, 856, 857, 849, 850, 851, + 852, 853, 854, 855, 848, 546, 0, 858, 112, 546, + 842, 0, 845, 0, 530, 0, 546, 0, 0, 859, + 860, 861, 862, 863, 864, 865, 0, 843, 844, 841, 847, 846, 856, 857, 849, 850, 851, 852, 853, 854, - 855, 848, 0, 542, 858, 847, 846, 856, 857, 849, - 850, 851, 852, 853, 854, 855, 848, 542, 1002, 858, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 546, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 546, 1696, 0, 0, 0, 0, 0, - 110, 110, 110, 0, 0, 546, 0, 0, 0, 531, - 1016, 1614, 0, 0, 0, 0, 0, 64, 0, 0, - 0, 0, 0, 530, 0, 0, 1116, 1731, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1731, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1659, - 0, 0, 70, 0, 0, 0, 0, 542, 542, 0, - 542, 0, 1763, 0, 1029, 1032, 1033, 1034, 1035, 1036, - 1037, 0, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 0, - 1017, 1018, 1019, 1020, 996, 1000, 1030, 997, 1003, 999, - 1001, 998, 0, 1004, 1005, 1006, 1007, 1008, 1009, 1010, - 1011, 1012, 1013, 1014, 1021, 1022, 1023, 1024, 1025, 1026, - 1027, 1028, 0, 0, 30, 0, 63, 33, 34, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 59, 0, - 0, 0, 0, 0, 69, 0, 0, 0, 35, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1820, - 0, 0, 0, 1824, 0, 110, 0, 0, 0, 110, - 1828, 0, 110, 0, 0, 0, 71, 0, 1070, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 110, 110, 110, 0, 0, 1031, 0, 110, 0, 2068, - 0, 0, 0, 0, 2271, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1793, - 0, 0, 0, 0, 0, 0, 0, 0, 37, 65, - 41, 40, 43, 0, 1803, 0, 0, 0, 0, 0, - 0, 0, 0, 110, 2069, 372, 0, 1807, 0, 1879, - 0, 0, 0, 0, 0, 0, 1879, 1879, 1879, 0, - 44, 68, 67, 0, 0, 542, 0, 42, 1823, 0, - 0, 0, 0, 0, 1879, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1070, 0, 0, 0, 0, 57, - 58, 0, 2070, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 2071, 66, 0, 48, 49, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1938, 0, 0, 0, - 0, 0, 0, 542, 0, 0, 0, 0, 0, 0, - 0, 1189, 1189, 0, 0, 0, 1189, 1189, 1189, 1189, + 855, 848, 0, 0, 858, 1056, 0, 0, 0, 519, + 0, 0, 1064, 0, 0, 0, 0, 0, 1843, 1844, + 0, 1845, 0, 542, 1847, 0, 1849, 0, 0, 0, + 1081, 1082, 1083, 0, 0, 0, 0, 1084, 0, 0, + 110, 847, 846, 856, 857, 849, 850, 851, 852, 853, + 854, 855, 848, 0, 0, 858, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 546, 0, 0, 0, 0, + 0, 0, 546, 546, 546, 0, 0, 0, 0, 0, + 0, 546, 0, 1600, 0, 0, 110, 0, 0, 0, + 546, 0, 0, 1110, 0, 542, 0, 542, 542, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1894, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 112, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, + 63, 33, 34, 0, 0, 0, 0, 0, 0, 1659, + 1660, 0, 59, 1136, 0, 0, 0, 0, 69, 0, + 0, 0, 35, 546, 0, 112, 542, 0, 0, 0, + 546, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 542, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 71, 0, 0, 0, 0, 0, 546, 1699, 0, 546, + 0, 0, 0, 0, 112, 0, 112, 0, 0, 0, + 0, 0, 546, 2070, 0, 0, 2227, 2230, 2226, 0, + 0, 0, 0, 546, 0, 0, 530, 0, 0, 1116, + 1734, 0, 0, 0, 110, 110, 110, 0, 0, 0, 0, 0, 0, 531, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1963, - 0, 0, 1879, 1189, 1189, 1189, 1189, 0, 0, 1189, - 1189, 1189, 1189, 1189, 0, 1763, 0, 0, 0, 0, - 1189, 1189, 1189, 0, 1189, 1189, 1763, 1189, 1189, 1189, - 1189, 0, 1189, 1189, 1189, 64, 110, 0, 1902, 0, - 0, 0, 0, 0, 110, 372, 0, 0, 0, 110, - 110, 0, 0, 110, 1280, 1070, 531, 0, 0, 0, - 2011, 0, 0, 0, 0, 0, 0, 0, 1070, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 70, 0, 0, 0, 30, 0, 63, 33, 34, 0, - 0, 0, 0, 2034, 0, 0, 0, 0, 59, 0, - 0, 0, 0, 0, 69, 0, 0, 0, 35, 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, 1763, 0, 110, 0, 0, 0, - 0, 0, 0, 0, 110, 110, 71, 0, 110, 0, - 0, 0, 0, 0, 0, 0, 530, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 2068, - 0, 0, 0, 0, 2260, 0, 1376, 1377, 110, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 542, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1070, 37, 65, - 41, 40, 43, 0, 0, 0, 0, 2138, 0, 0, - 0, 0, 0, 0, 2069, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 44, 68, 67, 0, 0, 0, 0, 42, 0, 0, - 0, 0, 0, 0, 30, 0, 63, 33, 34, 0, - 0, 1763, 0, 0, 0, 0, 1189, 0, 59, 0, - 0, 1879, 0, 0, 69, 0, 0, 0, 35, 0, - 0, 0, 2109, 542, 0, 0, 0, 0, 1189, 57, - 58, 0, 2070, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 2071, 66, 0, 48, 49, 0, 0, 0, - 0, 0, 0, 1189, 1189, 0, 71, 0, 1189, 0, - 0, 1189, 0, 0, 0, 0, 1189, 0, 0, 0, - 0, 0, 0, 531, 110, 110, 110, 110, 110, 2068, - 0, 0, 0, 0, 2243, 0, 372, 0, 0, 0, - 0, 110, 0, 0, 0, 372, 0, 0, 0, 0, + 1734, 0, 37, 65, 41, 40, 43, 546, 0, 0, + 0, 0, 0, 0, 0, 0, 1246, 0, 2071, 0, + 542, 542, 0, 542, 0, 1766, 0, 0, 0, 0, + 1277, 0, 0, 0, 44, 68, 67, 0, 0, 0, + 546, 42, 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, 112, 0, 0, 0, + 546, 0, 0, 57, 58, 0, 2072, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2073, 66, 0, 48, + 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 112, 0, 0, 0, 0, 1358, 0, 0, 0, + 0, 0, 0, 1824, 1366, 1367, 0, 1828, 1368, 0, + 0, 0, 0, 0, 1832, 0, 0, 0, 0, 0, + 0, 546, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1378, 110, + 546, 0, 0, 110, 0, 0, 110, 0, 0, 0, + 0, 0, 1070, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 110, 110, 110, 0, 0, 64, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 30, 0, 63, 33, 34, 37, 65, - 41, 40, 43, 0, 0, 0, 0, 59, 0, 0, - 0, 0, 0, 69, 2069, 64, 0, 35, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 44, 68, 67, 0, 0, 0, 0, 42, 0, 30, - 0, 63, 33, 34, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 59, 0, 71, 2232, 0, 0, 69, - 70, 0, 0, 35, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 110, 0, 0, 2068, 57, - 58, 0, 2070, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 2071, 66, 0, 48, 49, 0, 0, 0, - 0, 71, 0, 0, 0, 0, 0, 0, 30, 0, - 63, 33, 34, 0, 0, 0, 0, 37, 65, 41, - 40, 43, 59, 110, 2068, 0, 0, 0, 69, 2184, - 0, 0, 35, 2069, 1189, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1189, 0, 1070, 0, 44, - 68, 67, 0, 0, 0, 0, 42, 0, 0, 0, - 0, 0, 0, 37, 65, 41, 40, 43, 0, 0, - 71, 0, 0, 0, 0, 0, 0, 0, 0, 2069, - 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, - 0, 0, 0, 2068, 0, 44, 68, 67, 57, 58, - 0, 2070, 42, 531, 0, 0, 0, 0, 0, 0, - 0, 2071, 66, 0, 48, 49, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 70, 0, 37, 65, 41, 40, 43, 0, 0, 0, - 0, 0, 0, 0, 57, 58, 0, 2070, 2069, 0, - 0, 0, 0, 0, 0, 0, 0, 2071, 66, 0, - 48, 49, 0, 0, 44, 68, 67, 0, 0, 0, - 0, 42, 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, 110, 64, 0, 0, 0, 0, 0, - 0, 0, 0, 57, 58, 0, 2070, 0, 110, 0, - 0, 0, 0, 0, 0, 0, 2071, 66, 0, 48, - 49, 110, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, - 64, 0, 110, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 419, 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, 70, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, - 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, 70, 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, 110, 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, 110, 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, 372, 0, 372, - 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, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 546, 0, 0, 0, 0, 0, + 0, 0, 0, 1883, 0, 0, 546, 0, 0, 0, + 1883, 1883, 1883, 0, 70, 0, 0, 0, 0, 542, + 0, 0, 0, 0, 0, 0, 0, 110, 1883, 372, + 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, 110, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1070, 0, + 0, 1942, 0, 0, 0, 0, 0, 30, 542, 63, + 33, 34, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 59, 0, 0, 0, 0, 0, 69, 0, 0, + 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1967, 1189, 1189, 1883, 0, 0, + 1189, 1189, 1189, 1189, 0, 0, 0, 531, 0, 0, + 1766, 0, 0, 0, 0, 0, 0, 0, 0, 71, + 0, 1766, 0, 0, 0, 0, 0, 1189, 1189, 1189, + 1189, 0, 0, 1189, 1189, 1189, 1189, 1189, 0, 0, + 0, 0, 2070, 0, 1189, 1189, 1189, 2275, 1189, 1189, + 0, 1189, 1189, 1189, 1189, 2014, 1189, 1189, 1189, 0, + 110, 0, 0, 0, 0, 0, 0, 0, 110, 372, + 0, 0, 0, 110, 110, 1616, 0, 110, 1280, 1070, + 531, 37, 65, 41, 40, 43, 0, 0, 2036, 0, + 0, 0, 1070, 0, 0, 0, 0, 2071, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 44, 68, 67, 0, 0, 0, 0, + 42, 0, 0, 0, 0, 1662, 0, 0, 1766, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 530, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 110, 0, 57, 58, 0, 2072, 0, 0, 110, 110, + 0, 0, 110, 0, 0, 2073, 66, 0, 48, 49, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 542, + 0, 30, 0, 63, 33, 34, 0, 0, 0, 0, + 1376, 1377, 110, 0, 0, 59, 0, 0, 2138, 0, + 0, 69, 0, 0, 0, 35, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1070, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1766, 71, 0, 0, 0, 0, 0, 0, + 0, 0, 1883, 0, 0, 0, 0, 0, 64, 0, + 0, 0, 0, 0, 542, 0, 2070, 0, 0, 0, + 0, 2271, 0, 0, 0, 0, 0, 0, 0, 0, + 1189, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1796, 0, 0, 0, 0, + 0, 0, 1189, 70, 0, 37, 65, 41, 40, 43, + 1806, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2071, 0, 1810, 0, 0, 0, 1189, 1189, 0, + 0, 0, 1189, 0, 0, 1189, 0, 44, 68, 67, + 1189, 0, 0, 0, 42, 1827, 0, 531, 110, 110, + 110, 110, 110, 30, 0, 63, 33, 34, 0, 0, + 372, 0, 0, 0, 0, 110, 0, 59, 0, 372, + 0, 0, 0, 69, 0, 110, 0, 35, 0, 0, + 0, 0, 0, 0, 0, 0, 57, 58, 0, 2072, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2073, + 66, 0, 48, 49, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, + 0, 0, 30, 0, 63, 33, 34, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 59, 0, 2070, 0, + 0, 0, 69, 2260, 0, 0, 35, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, + 0, 0, 0, 0, 0, 0, 0, 37, 65, 41, + 40, 43, 0, 0, 71, 0, 0, 0, 0, 0, + 0, 0, 64, 2071, 0, 1906, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2070, 0, 44, + 68, 67, 2243, 0, 0, 0, 42, 0, 0, 110, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1189, 0, 0, 0, 0, 0, 0, 70, 0, 0, + 0, 1189, 0, 1070, 0, 0, 37, 65, 41, 40, + 43, 0, 0, 0, 0, 0, 0, 0, 57, 58, + 0, 2072, 2071, 30, 0, 63, 33, 34, 0, 0, + 0, 2073, 66, 0, 48, 49, 0, 59, 44, 68, + 67, 0, 0, 69, 0, 42, 0, 35, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 531, + 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, 71, 2232, 57, 58, 0, + 2072, 0, 30, 0, 63, 33, 34, 0, 0, 0, + 2073, 66, 0, 48, 49, 0, 59, 0, 2070, 0, + 0, 0, 69, 0, 0, 0, 35, 0, 0, 0, + 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 37, 65, 41, + 40, 43, 0, 0, 71, 0, 0, 0, 0, 110, + 0, 0, 0, 2071, 0, 0, 0, 0, 0, 70, + 0, 0, 0, 0, 110, 0, 0, 2070, 0, 44, + 68, 67, 2184, 0, 0, 0, 42, 110, 0, 0, + 0, 0, 0, 64, 0, 0, 0, 0, 2109, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, + 0, 0, 0, 0, 0, 0, 37, 65, 41, 40, + 43, 0, 0, 0, 419, 0, 0, 0, 57, 58, + 0, 2072, 2071, 0, 0, 0, 0, 0, 70, 0, + 0, 2073, 66, 0, 48, 49, 0, 0, 44, 68, + 67, 0, 0, 0, 0, 42, 0, 30, 0, 63, + 33, 34, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 59, 0, 0, 0, 0, 0, 69, 0, 0, + 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 57, 58, 0, + 2072, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2073, 66, 0, 48, 49, 0, 0, 0, 0, 71, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, + 0, 0, 2070, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, + 0, 37, 65, 41, 40, 43, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 110, 2071, 0, 0, + 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 44, 68, 67, 0, 0, 0, 0, + 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 372, 0, 372, 70, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 57, 58, 0, 2072, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2073, 66, 0, 48, 49, + 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, 419, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 664, 644, + 287, 602, 667, 574, 591, 678, 592, 595, 633, 560, + 614, 223, 589, 561, 0, 578, 551, 585, 552, 575, + 604, 157, 573, 646, 617, 666, 187, 629, 0, 148, + 195, 193, 0, 0, 0, 229, 285, 665, 610, 0, + 673, 190, 0, 626, 308, 276, 208, 110, 64, 606, + 653, 612, 642, 601, 635, 567, 625, 668, 590, 631, + 669, 0, 0, 0, 2116, 0, 0, 0, 0, 0, + 0, 0, 531, 138, 0, 628, 663, 587, 630, 632, + 549, 627, 110, 555, 562, 677, 659, 581, 582, 583, + 0, 0, 0, 70, 0, 0, 0, 605, 613, 639, + 598, 0, 0, 0, 0, 0, 0, 0, 0, 579, + 0, 623, 0, 0, 0, 563, 556, 0, 0, 603, + 0, 0, 0, 566, 117, 580, 640, 0, 547, 167, + 209, 128, 643, 658, 600, 180, 314, 662, 597, 596, + 243, 0, 281, 170, 188, 132, 114, 126, 142, 169, + 219, 252, 261, 588, 548, 647, 576, 586, 149, 584, + 254, 227, 303, 0, 620, 233, 253, 191, 292, 245, + 301, 302, 171, 286, 311, 316, 273, 158, 0, 118, + 0, 240, 153, 184, 599, 634, 577, 146, 637, 624, + 652, 272, 133, 288, 207, 213, 143, 145, 144, 127, + 267, 290, 137, 147, 277, 257, 282, 152, 0, 0, + 2119, 2120, 2121, 0, 0, 0, 0, 119, 284, 300, + 139, 265, 121, 298, 280, 205, 181, 182, 120, 0, + 250, 156, 166, 151, 222, 0, 165, 242, 295, 296, + 150, 318, 129, 310, 123, 130, 309, 216, 0, 215, + 312, 291, 299, 206, 199, 0, 122, 297, 204, 198, + 186, 161, 173, 238, 194, 239, 174, 211, 210, 212, + 0, 553, 0, 278, 306, 319, 196, 135, 572, 266, + 289, 0, 0, 136, 164, 160, 237, 214, 131, 176, + 275, 185, 192, 249, 317, 226, 255, 140, 305, 274, + 570, 571, 568, 0, 569, 615, 616, 670, 671, 672, + 641, 564, 0, 654, 655, 0, 645, 660, 661, 636, + 679, 593, 594, 554, 557, 558, 559, 565, 607, 608, + 619, 622, 650, 649, 648, 651, 656, 675, 674, 676, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 618, 113, 124, 189, 680, 247, 163, 307, 550, + 155, 0, 0, 609, 611, 621, 638, 115, 116, 125, + 134, 141, 154, 159, 162, 168, 172, 175, 177, 178, + 179, 183, 197, 200, 201, 202, 203, 217, 218, 220, + 221, 224, 225, 228, 230, 231, 232, 234, 235, 236, + 241, 244, 246, 248, 251, 256, 258, 259, 260, 262, + 263, 264, 268, 269, 270, 271, 279, 283, 293, 294, + 304, 313, 315, 657, 664, 644, 287, 602, 667, 574, + 591, 678, 592, 595, 633, 560, 614, 223, 589, 561, + 0, 578, 551, 585, 552, 575, 604, 157, 573, 646, + 617, 666, 187, 629, 0, 148, 195, 193, 0, 0, + 0, 229, 285, 665, 610, 0, 673, 190, 0, 626, + 308, 276, 208, 0, 0, 606, 653, 612, 642, 601, + 635, 567, 625, 668, 590, 631, 669, 0, 0, 0, + 545, 0, 1299, 1300, 0, 0, 0, 0, 0, 138, + 0, 628, 663, 587, 630, 632, 549, 627, 0, 555, + 562, 677, 659, 581, 582, 583, 1546, 0, 0, 0, + 0, 0, 0, 605, 613, 639, 598, 0, 0, 0, + 0, 0, 0, 0, 0, 579, 0, 623, 0, 0, + 0, 563, 556, 0, 0, 603, 0, 0, 0, 566, + 117, 580, 640, 0, 547, 167, 209, 128, 643, 658, + 600, 180, 314, 662, 597, 596, 243, 0, 281, 170, + 188, 132, 114, 126, 142, 169, 219, 252, 261, 588, + 548, 647, 576, 586, 149, 584, 254, 227, 303, 0, + 620, 233, 253, 191, 292, 245, 301, 302, 171, 286, + 311, 316, 273, 158, 0, 118, 0, 240, 153, 184, + 599, 634, 577, 146, 637, 624, 652, 272, 133, 288, + 207, 213, 143, 145, 144, 127, 267, 290, 137, 147, + 277, 257, 282, 152, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 119, 284, 300, 139, 265, 121, 298, + 280, 205, 181, 182, 120, 0, 250, 156, 166, 151, + 222, 0, 165, 242, 295, 296, 150, 318, 129, 310, + 123, 130, 309, 216, 0, 215, 312, 291, 299, 206, + 199, 0, 122, 297, 204, 198, 186, 161, 173, 238, + 194, 239, 174, 211, 210, 212, 0, 553, 0, 278, + 306, 319, 196, 135, 572, 266, 289, 0, 0, 136, + 164, 160, 237, 214, 131, 176, 275, 185, 192, 249, + 317, 226, 255, 140, 305, 274, 570, 571, 568, 0, + 569, 615, 616, 670, 671, 672, 641, 564, 0, 654, + 655, 0, 645, 660, 661, 636, 679, 593, 594, 554, + 557, 558, 559, 565, 607, 608, 619, 622, 650, 649, + 648, 651, 656, 675, 674, 676, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 618, 113, 124, + 189, 680, 247, 163, 307, 550, 155, 0, 0, 609, + 611, 621, 638, 115, 116, 125, 134, 141, 154, 159, + 162, 168, 172, 175, 177, 178, 179, 183, 197, 200, + 201, 202, 203, 217, 218, 220, 221, 224, 225, 228, + 230, 231, 232, 234, 235, 236, 241, 244, 246, 248, + 251, 256, 258, 259, 260, 262, 263, 264, 268, 269, + 270, 271, 279, 283, 293, 294, 304, 313, 315, 657, + 664, 644, 287, 602, 667, 574, 591, 678, 592, 595, + 633, 560, 614, 223, 589, 561, 0, 578, 551, 585, + 552, 575, 604, 157, 573, 646, 617, 666, 187, 629, + 0, 148, 195, 193, 0, 0, 0, 229, 285, 665, + 610, 0, 673, 190, 0, 626, 308, 276, 208, 0, + 0, 606, 653, 612, 642, 601, 635, 567, 625, 668, + 590, 631, 669, 0, 0, 0, 545, 0, 1299, 1300, + 0, 0, 0, 0, 0, 138, 0, 628, 663, 587, + 630, 632, 549, 627, 0, 555, 562, 677, 659, 581, + 582, 583, 0, 0, 0, 0, 0, 0, 0, 605, + 613, 639, 598, 0, 0, 0, 0, 0, 0, 0, + 0, 579, 0, 623, 0, 0, 0, 563, 556, 0, + 0, 603, 0, 0, 0, 566, 117, 580, 640, 0, + 547, 167, 209, 128, 643, 658, 600, 180, 314, 662, + 597, 596, 243, 0, 281, 170, 188, 132, 114, 126, + 142, 169, 219, 252, 261, 588, 548, 647, 576, 586, + 149, 584, 254, 227, 303, 0, 620, 233, 253, 191, + 292, 245, 301, 302, 171, 286, 311, 316, 273, 158, + 0, 118, 0, 240, 153, 184, 599, 634, 577, 146, + 637, 624, 652, 272, 133, 288, 207, 213, 143, 145, + 144, 127, 267, 290, 137, 147, 277, 257, 282, 152, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, + 284, 300, 139, 265, 121, 298, 280, 205, 181, 182, + 120, 0, 250, 156, 166, 151, 222, 0, 165, 242, + 295, 296, 150, 318, 129, 310, 123, 130, 309, 216, + 0, 215, 312, 291, 299, 206, 199, 0, 122, 297, + 204, 198, 186, 161, 173, 238, 194, 239, 174, 211, + 210, 212, 0, 553, 0, 278, 306, 319, 196, 135, + 572, 266, 289, 0, 0, 136, 164, 160, 237, 214, + 131, 176, 275, 185, 192, 249, 317, 226, 255, 140, + 305, 274, 570, 571, 568, 0, 569, 615, 616, 670, + 671, 672, 641, 564, 0, 654, 655, 0, 645, 660, + 661, 636, 679, 593, 594, 554, 557, 558, 559, 565, + 607, 608, 619, 622, 650, 649, 648, 651, 656, 675, + 674, 676, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 618, 113, 124, 189, 680, 247, 163, + 307, 550, 155, 0, 0, 609, 611, 621, 638, 115, + 116, 125, 134, 141, 154, 159, 162, 168, 172, 175, + 177, 178, 179, 183, 197, 200, 201, 202, 203, 217, + 218, 220, 221, 224, 225, 228, 230, 231, 232, 234, + 235, 236, 241, 244, 246, 248, 251, 256, 258, 259, + 260, 262, 263, 264, 268, 269, 270, 271, 279, 283, + 293, 294, 304, 313, 315, 657, 664, 644, 287, 602, + 667, 574, 591, 678, 592, 595, 633, 560, 614, 223, + 589, 561, 0, 578, 551, 585, 552, 575, 604, 157, + 573, 646, 617, 666, 187, 629, 0, 148, 195, 193, + 0, 0, 0, 229, 285, 665, 610, 0, 673, 190, + 0, 626, 308, 276, 208, 0, 0, 606, 653, 612, + 642, 601, 635, 567, 625, 668, 590, 631, 669, 0, + 0, 0, 545, 0, 0, 0, 0, 0, 0, 0, + 0, 138, 0, 628, 663, 587, 630, 632, 549, 627, + 0, 555, 562, 677, 659, 581, 582, 583, 0, 0, + 0, 0, 0, 0, 0, 605, 613, 639, 598, 0, + 0, 0, 0, 0, 0, 1948, 0, 579, 0, 623, + 0, 0, 0, 563, 556, 0, 0, 603, 0, 0, + 0, 566, 117, 580, 640, 0, 547, 167, 209, 128, + 643, 658, 600, 180, 314, 662, 597, 596, 243, 0, + 281, 170, 188, 132, 114, 126, 142, 169, 219, 252, + 261, 588, 548, 647, 576, 586, 149, 584, 254, 227, + 303, 0, 620, 233, 253, 191, 292, 245, 301, 302, + 171, 286, 311, 316, 273, 158, 0, 118, 0, 240, + 153, 184, 599, 634, 577, 146, 637, 624, 652, 272, + 133, 288, 207, 213, 143, 145, 144, 127, 267, 290, + 137, 147, 277, 257, 282, 152, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 119, 284, 300, 139, 265, + 121, 298, 280, 205, 181, 182, 120, 0, 250, 156, + 166, 151, 222, 0, 165, 242, 295, 296, 150, 318, + 129, 310, 123, 130, 309, 216, 0, 215, 312, 291, + 299, 206, 199, 0, 122, 297, 204, 198, 186, 161, + 173, 238, 194, 239, 174, 211, 210, 212, 0, 553, + 0, 278, 306, 319, 196, 135, 572, 266, 289, 0, + 0, 136, 164, 160, 237, 214, 131, 176, 275, 185, + 192, 249, 317, 226, 255, 140, 305, 274, 570, 571, + 568, 0, 569, 615, 616, 670, 671, 672, 641, 564, + 0, 654, 655, 0, 645, 660, 661, 636, 679, 593, + 594, 554, 557, 558, 559, 565, 607, 608, 619, 622, + 650, 649, 648, 651, 656, 675, 674, 676, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 618, + 113, 124, 189, 680, 247, 163, 307, 550, 155, 0, + 0, 609, 611, 621, 638, 115, 116, 125, 134, 141, + 154, 159, 162, 168, 172, 175, 177, 178, 179, 183, + 197, 200, 201, 202, 203, 217, 218, 220, 221, 224, + 225, 228, 230, 231, 232, 234, 235, 236, 241, 244, + 246, 248, 251, 256, 258, 259, 260, 262, 263, 264, + 268, 269, 270, 271, 279, 283, 293, 294, 304, 313, + 315, 657, 664, 644, 287, 602, 667, 574, 591, 678, + 592, 595, 633, 560, 614, 223, 589, 561, 0, 578, + 551, 585, 552, 575, 604, 157, 573, 646, 617, 666, + 187, 629, 0, 148, 195, 193, 0, 0, 0, 229, + 285, 665, 610, 0, 673, 190, 0, 626, 308, 276, + 208, 0, 0, 606, 653, 612, 642, 601, 635, 567, + 625, 668, 590, 631, 669, 0, 0, 0, 424, 0, + 0, 0, 0, 0, 0, 0, 0, 138, 0, 628, + 663, 587, 630, 632, 549, 627, 0, 555, 562, 677, + 659, 581, 582, 583, 0, 0, 0, 0, 0, 0, + 0, 605, 613, 639, 598, 0, 0, 0, 0, 0, + 0, 1673, 0, 579, 0, 623, 0, 0, 0, 563, + 556, 0, 0, 603, 0, 0, 0, 566, 117, 580, + 640, 0, 547, 167, 209, 128, 643, 658, 600, 180, + 314, 662, 597, 596, 243, 0, 281, 170, 188, 132, + 114, 126, 142, 169, 219, 252, 261, 588, 548, 647, + 576, 586, 149, 584, 254, 227, 303, 0, 620, 233, + 253, 191, 292, 245, 301, 302, 171, 286, 311, 316, + 273, 158, 0, 118, 0, 240, 153, 184, 599, 634, + 577, 146, 637, 624, 652, 272, 133, 288, 207, 213, + 143, 145, 144, 127, 267, 290, 137, 147, 277, 257, + 282, 152, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 119, 284, 300, 139, 265, 121, 298, 280, 205, + 181, 182, 120, 0, 250, 156, 166, 151, 222, 0, + 165, 242, 295, 296, 150, 318, 129, 310, 123, 130, + 309, 216, 0, 215, 312, 291, 299, 206, 199, 0, + 122, 297, 204, 198, 186, 161, 173, 238, 194, 239, + 174, 211, 210, 212, 0, 553, 0, 278, 306, 319, + 196, 135, 572, 266, 289, 0, 0, 136, 164, 160, + 237, 214, 131, 176, 275, 185, 192, 249, 317, 226, + 255, 140, 305, 274, 570, 571, 568, 0, 569, 615, + 616, 670, 671, 672, 641, 564, 0, 654, 655, 0, + 645, 660, 661, 636, 679, 593, 594, 554, 557, 558, + 559, 565, 607, 608, 619, 622, 650, 649, 648, 651, + 656, 675, 674, 676, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 618, 113, 124, 189, 680, + 247, 163, 307, 550, 155, 0, 0, 609, 611, 621, + 638, 115, 116, 125, 134, 141, 154, 159, 162, 168, + 172, 175, 177, 178, 179, 183, 197, 200, 201, 202, + 203, 217, 218, 220, 221, 224, 225, 228, 230, 231, + 232, 234, 235, 236, 241, 244, 246, 248, 251, 256, + 258, 259, 260, 262, 263, 264, 268, 269, 270, 271, + 279, 283, 293, 294, 304, 313, 315, 657, 664, 644, + 287, 602, 667, 574, 591, 678, 592, 595, 633, 560, + 614, 223, 589, 561, 0, 578, 551, 585, 552, 575, + 604, 157, 573, 646, 617, 666, 187, 629, 0, 148, + 195, 193, 0, 0, 0, 229, 285, 665, 610, 0, + 673, 190, 0, 626, 308, 276, 208, 0, 0, 606, + 653, 612, 642, 601, 635, 567, 625, 668, 590, 631, + 669, 0, 0, 0, 545, 0, 0, 0, 0, 0, + 0, 0, 0, 138, 0, 628, 663, 587, 630, 632, + 549, 627, 0, 555, 562, 677, 659, 581, 582, 583, + 0, 0, 0, 0, 0, 0, 0, 605, 613, 639, + 598, 0, 0, 0, 0, 0, 0, 1665, 0, 579, + 0, 623, 0, 0, 0, 563, 556, 0, 0, 603, + 0, 0, 0, 566, 117, 580, 640, 0, 547, 167, + 209, 128, 643, 658, 600, 180, 314, 662, 597, 596, + 243, 0, 281, 170, 188, 132, 114, 126, 142, 169, + 219, 252, 261, 588, 548, 647, 576, 586, 149, 584, + 254, 227, 303, 0, 620, 233, 253, 191, 292, 245, + 301, 302, 171, 286, 311, 316, 273, 158, 0, 118, + 0, 240, 153, 184, 599, 634, 577, 146, 637, 624, + 652, 272, 133, 288, 207, 213, 143, 145, 144, 127, + 267, 290, 137, 147, 277, 257, 282, 152, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 119, 284, 300, + 139, 265, 121, 298, 280, 205, 181, 182, 120, 0, + 250, 156, 166, 151, 222, 0, 165, 242, 295, 296, + 150, 318, 129, 310, 123, 130, 309, 216, 0, 215, + 312, 291, 299, 206, 199, 0, 122, 297, 204, 198, + 186, 161, 173, 238, 194, 239, 174, 211, 210, 212, + 0, 553, 0, 278, 306, 319, 196, 135, 572, 266, + 289, 0, 0, 136, 164, 160, 237, 214, 131, 176, + 275, 185, 192, 249, 317, 226, 255, 140, 305, 274, + 570, 571, 568, 0, 569, 615, 616, 670, 671, 672, + 641, 564, 0, 654, 655, 0, 645, 660, 661, 636, + 679, 593, 594, 554, 557, 558, 559, 565, 607, 608, + 619, 622, 650, 649, 648, 651, 656, 675, 674, 676, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 419, 0, + 0, 618, 113, 124, 189, 680, 247, 163, 307, 550, + 155, 0, 0, 609, 611, 621, 638, 115, 116, 125, + 134, 141, 154, 159, 162, 168, 172, 175, 177, 178, + 179, 183, 197, 200, 201, 202, 203, 217, 218, 220, + 221, 224, 225, 228, 230, 231, 232, 234, 235, 236, + 241, 244, 246, 248, 251, 256, 258, 259, 260, 262, + 263, 264, 268, 269, 270, 271, 279, 283, 293, 294, + 304, 313, 315, 657, 664, 644, 287, 602, 667, 574, + 591, 678, 592, 595, 633, 560, 614, 223, 589, 561, + 0, 578, 551, 585, 552, 575, 604, 157, 573, 646, + 617, 666, 187, 629, 0, 148, 195, 193, 0, 0, + 0, 229, 285, 665, 610, 0, 673, 190, 0, 626, + 308, 276, 208, 0, 0, 606, 653, 612, 642, 601, + 635, 567, 625, 668, 590, 631, 669, 71, 0, 0, + 545, 0, 0, 0, 0, 0, 0, 0, 0, 138, + 0, 628, 663, 587, 630, 632, 549, 627, 0, 555, + 562, 677, 659, 581, 582, 583, 0, 0, 0, 0, + 0, 0, 0, 605, 613, 639, 598, 0, 0, 0, + 0, 0, 0, 0, 0, 579, 0, 623, 0, 0, + 0, 563, 556, 0, 0, 603, 0, 0, 0, 566, + 117, 580, 640, 0, 547, 167, 209, 128, 643, 658, + 600, 180, 314, 662, 597, 596, 243, 0, 281, 170, + 188, 132, 114, 126, 142, 169, 219, 252, 261, 588, + 548, 647, 576, 586, 149, 584, 254, 227, 303, 0, + 620, 233, 253, 191, 292, 245, 301, 302, 171, 286, + 311, 316, 273, 158, 0, 118, 0, 240, 153, 184, + 599, 634, 577, 146, 637, 624, 652, 272, 133, 288, + 207, 213, 143, 145, 144, 127, 267, 290, 137, 147, + 277, 257, 282, 152, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 119, 284, 300, 139, 265, 121, 298, + 280, 205, 181, 182, 120, 0, 250, 156, 166, 151, + 222, 0, 165, 242, 295, 296, 150, 318, 129, 310, + 123, 130, 309, 216, 0, 215, 312, 291, 299, 206, + 199, 0, 122, 297, 204, 198, 186, 161, 173, 238, + 194, 239, 174, 211, 210, 212, 0, 553, 0, 278, + 306, 319, 196, 135, 572, 266, 289, 0, 0, 136, + 164, 160, 237, 214, 131, 176, 275, 185, 192, 249, + 317, 226, 255, 140, 305, 274, 570, 571, 568, 0, + 569, 615, 616, 670, 671, 672, 641, 564, 0, 654, + 655, 0, 645, 660, 661, 636, 679, 593, 594, 554, + 557, 558, 559, 565, 607, 608, 619, 622, 650, 649, + 648, 651, 656, 675, 674, 676, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 618, 113, 124, + 189, 680, 247, 163, 307, 550, 155, 0, 0, 609, + 611, 621, 638, 115, 116, 125, 134, 141, 154, 159, + 162, 168, 172, 175, 177, 178, 179, 183, 197, 200, + 201, 202, 203, 217, 218, 220, 221, 224, 225, 228, + 230, 231, 232, 234, 235, 236, 241, 244, 246, 248, + 251, 256, 258, 259, 260, 262, 263, 264, 268, 269, + 270, 271, 279, 283, 293, 294, 304, 313, 315, 657, + 664, 644, 287, 602, 667, 574, 591, 678, 592, 595, + 633, 560, 614, 223, 589, 561, 0, 578, 551, 585, + 552, 575, 604, 157, 573, 646, 617, 666, 187, 629, + 0, 148, 195, 193, 0, 0, 0, 229, 285, 665, + 610, 0, 673, 190, 0, 626, 308, 276, 208, 0, + 0, 606, 653, 612, 642, 601, 635, 567, 625, 668, + 590, 631, 669, 0, 0, 0, 111, 0, 0, 0, + 0, 0, 0, 0, 0, 138, 0, 628, 663, 587, + 630, 632, 549, 627, 0, 555, 562, 677, 659, 581, + 582, 583, 0, 0, 0, 0, 0, 0, 0, 605, + 613, 639, 598, 0, 0, 0, 0, 0, 0, 1281, + 0, 579, 0, 623, 0, 0, 0, 563, 556, 0, + 0, 603, 0, 0, 0, 566, 117, 580, 640, 0, + 547, 167, 209, 128, 643, 658, 600, 180, 314, 662, + 597, 596, 243, 0, 281, 170, 188, 132, 114, 126, + 142, 169, 219, 252, 261, 588, 548, 647, 576, 586, + 149, 584, 254, 227, 303, 0, 620, 233, 253, 191, + 292, 245, 301, 302, 171, 286, 311, 316, 273, 158, + 0, 118, 0, 240, 153, 184, 599, 634, 577, 146, + 637, 624, 652, 272, 133, 288, 207, 213, 143, 145, + 144, 127, 267, 290, 137, 147, 277, 257, 282, 152, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, + 284, 300, 139, 265, 121, 298, 280, 205, 181, 182, + 120, 0, 250, 156, 166, 151, 222, 0, 165, 242, + 295, 296, 150, 318, 129, 310, 123, 130, 309, 216, + 0, 215, 312, 291, 299, 206, 199, 0, 122, 297, + 204, 198, 186, 161, 173, 238, 194, 239, 174, 211, + 210, 212, 0, 553, 0, 278, 306, 319, 196, 135, + 572, 266, 289, 0, 0, 136, 164, 160, 237, 214, + 131, 176, 275, 185, 192, 249, 317, 226, 255, 140, + 305, 274, 570, 571, 568, 0, 569, 615, 616, 670, + 671, 672, 641, 564, 0, 654, 655, 0, 645, 660, + 661, 636, 679, 593, 594, 554, 557, 558, 559, 565, + 607, 608, 619, 622, 650, 649, 648, 651, 656, 675, + 674, 676, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 618, 113, 124, 189, 680, 247, 163, + 307, 550, 155, 0, 0, 609, 611, 621, 638, 115, + 116, 125, 134, 141, 154, 159, 162, 168, 172, 175, + 177, 178, 179, 183, 197, 200, 201, 202, 203, 217, + 218, 220, 221, 224, 225, 228, 230, 231, 232, 234, + 235, 236, 241, 244, 246, 248, 251, 256, 258, 259, + 260, 262, 263, 264, 268, 269, 270, 271, 279, 283, + 293, 294, 304, 313, 315, 657, 664, 644, 287, 602, + 667, 574, 591, 678, 592, 595, 633, 560, 614, 223, + 589, 561, 0, 578, 551, 585, 552, 575, 604, 157, + 573, 646, 617, 666, 187, 629, 0, 148, 195, 193, + 0, 0, 0, 229, 285, 665, 610, 0, 673, 190, + 0, 626, 308, 276, 208, 0, 0, 606, 653, 612, + 642, 601, 635, 567, 625, 668, 590, 631, 669, 0, + 0, 0, 424, 0, 0, 0, 0, 0, 0, 0, + 0, 138, 0, 628, 663, 587, 630, 632, 549, 627, + 0, 555, 562, 677, 659, 581, 582, 583, 0, 0, + 0, 0, 0, 0, 0, 605, 613, 639, 598, 0, + 0, 0, 0, 0, 0, 1145, 0, 579, 0, 623, + 0, 0, 0, 563, 556, 0, 0, 603, 0, 0, + 0, 566, 117, 580, 640, 0, 547, 167, 209, 128, + 643, 658, 600, 180, 314, 662, 597, 596, 243, 0, + 281, 170, 188, 132, 114, 126, 142, 169, 219, 252, + 261, 588, 548, 647, 576, 586, 149, 584, 254, 227, + 303, 0, 620, 233, 253, 191, 292, 245, 301, 302, + 171, 286, 311, 316, 273, 158, 0, 118, 0, 240, + 153, 184, 599, 634, 577, 146, 637, 624, 652, 272, + 133, 288, 207, 213, 143, 145, 144, 127, 267, 290, + 137, 147, 277, 257, 282, 152, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 119, 284, 300, 139, 265, + 121, 298, 280, 205, 181, 182, 120, 0, 250, 156, + 166, 151, 222, 0, 165, 242, 295, 296, 150, 318, + 129, 310, 123, 130, 309, 216, 0, 215, 312, 291, + 299, 206, 199, 0, 122, 297, 204, 198, 186, 161, + 173, 238, 194, 239, 174, 211, 210, 212, 0, 553, + 0, 278, 306, 319, 196, 135, 572, 266, 289, 0, + 0, 136, 164, 160, 237, 214, 131, 176, 275, 185, + 192, 249, 317, 226, 255, 140, 305, 274, 570, 571, + 568, 0, 569, 615, 616, 670, 671, 672, 641, 564, + 0, 654, 655, 0, 645, 660, 661, 636, 679, 593, + 594, 554, 557, 558, 559, 565, 607, 608, 619, 622, + 650, 649, 648, 651, 656, 675, 674, 676, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 618, + 113, 124, 189, 680, 247, 163, 307, 550, 155, 0, + 0, 609, 611, 621, 638, 115, 116, 125, 134, 141, + 154, 159, 162, 168, 172, 175, 177, 178, 179, 183, + 197, 200, 201, 202, 203, 217, 218, 220, 221, 224, + 225, 228, 230, 231, 232, 234, 235, 236, 241, 244, + 246, 248, 251, 256, 258, 259, 260, 262, 263, 264, + 268, 269, 270, 271, 279, 283, 293, 294, 304, 313, + 315, 657, 664, 644, 287, 602, 667, 574, 591, 678, + 592, 595, 633, 560, 614, 223, 589, 561, 0, 578, + 551, 585, 552, 575, 604, 157, 573, 646, 617, 666, + 187, 629, 0, 148, 195, 193, 0, 0, 0, 229, + 285, 665, 610, 0, 673, 190, 0, 626, 308, 276, + 208, 0, 0, 606, 653, 612, 642, 601, 635, 567, + 625, 668, 590, 631, 669, 0, 0, 0, 545, 0, + 0, 0, 0, 0, 0, 0, 0, 138, 0, 628, + 663, 587, 630, 632, 549, 627, 0, 555, 562, 677, + 659, 581, 582, 583, 0, 0, 0, 0, 0, 0, + 0, 605, 613, 639, 598, 0, 0, 0, 0, 0, + 0, 0, 0, 579, 0, 623, 0, 0, 0, 563, + 556, 0, 0, 603, 0, 0, 0, 566, 117, 580, + 640, 0, 547, 167, 209, 128, 643, 658, 600, 180, + 314, 662, 597, 596, 243, 0, 281, 170, 188, 132, + 114, 126, 142, 169, 219, 252, 261, 588, 548, 647, + 576, 586, 149, 584, 254, 227, 303, 0, 620, 233, + 253, 191, 292, 245, 301, 302, 171, 286, 311, 316, + 273, 158, 0, 118, 0, 240, 153, 184, 599, 634, + 577, 146, 637, 624, 652, 272, 133, 288, 207, 213, + 143, 145, 144, 127, 267, 290, 137, 147, 277, 257, + 282, 152, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 119, 284, 300, 139, 265, 121, 298, 280, 205, + 181, 182, 120, 0, 250, 156, 166, 151, 222, 0, + 165, 242, 295, 296, 150, 318, 129, 310, 123, 130, + 309, 216, 0, 215, 312, 291, 299, 206, 199, 0, + 122, 297, 204, 198, 186, 161, 173, 238, 194, 239, + 174, 211, 210, 212, 0, 553, 0, 278, 306, 319, + 196, 135, 572, 266, 289, 0, 0, 136, 164, 160, + 237, 214, 131, 176, 275, 185, 192, 249, 317, 226, + 255, 140, 305, 274, 570, 571, 568, 0, 569, 615, + 616, 670, 671, 672, 641, 564, 0, 654, 655, 0, + 645, 660, 661, 636, 679, 593, 594, 554, 557, 558, + 559, 565, 607, 608, 619, 622, 650, 649, 648, 651, + 656, 675, 674, 676, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 618, 113, 124, 189, 680, + 247, 163, 307, 550, 155, 0, 0, 609, 611, 621, + 638, 115, 116, 125, 134, 141, 154, 159, 162, 168, + 172, 175, 177, 178, 179, 183, 197, 200, 201, 202, + 203, 217, 218, 220, 221, 224, 225, 228, 230, 231, + 232, 234, 235, 236, 241, 244, 246, 248, 251, 256, + 258, 259, 260, 262, 263, 264, 268, 269, 270, 271, + 279, 283, 293, 294, 304, 313, 315, 657, 664, 644, + 287, 602, 667, 574, 591, 678, 592, 595, 633, 560, + 614, 223, 589, 561, 0, 578, 551, 585, 552, 575, + 604, 157, 573, 646, 617, 666, 187, 629, 0, 148, + 195, 193, 0, 0, 0, 229, 285, 665, 610, 0, + 673, 190, 0, 626, 308, 276, 208, 0, 0, 606, + 653, 612, 642, 601, 635, 567, 625, 668, 590, 631, + 669, 0, 0, 0, 424, 0, 0, 0, 0, 0, + 0, 0, 0, 138, 0, 628, 663, 587, 630, 632, + 549, 627, 0, 555, 562, 677, 659, 581, 582, 583, + 0, 0, 0, 0, 0, 0, 0, 605, 613, 639, + 598, 0, 0, 0, 0, 0, 0, 0, 0, 579, + 0, 623, 0, 0, 0, 563, 556, 0, 0, 603, + 0, 0, 0, 566, 117, 580, 640, 0, 547, 167, + 209, 128, 643, 658, 600, 180, 314, 662, 597, 596, + 243, 0, 281, 170, 188, 132, 114, 126, 142, 169, + 219, 252, 261, 588, 548, 647, 576, 586, 149, 584, + 254, 227, 303, 0, 620, 233, 253, 191, 292, 245, + 301, 302, 171, 286, 311, 316, 273, 158, 0, 118, + 0, 240, 153, 184, 599, 634, 577, 146, 637, 624, + 652, 272, 133, 288, 207, 213, 143, 145, 144, 127, + 267, 290, 137, 147, 277, 257, 282, 152, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 119, 284, 300, + 139, 265, 121, 298, 280, 205, 181, 182, 120, 0, + 250, 156, 166, 151, 222, 0, 165, 242, 295, 296, + 150, 318, 129, 310, 123, 130, 309, 216, 0, 215, + 312, 291, 299, 206, 199, 0, 122, 297, 204, 198, + 186, 161, 173, 238, 194, 239, 174, 211, 210, 212, + 0, 553, 0, 278, 306, 319, 196, 135, 572, 266, + 289, 0, 0, 136, 164, 160, 237, 214, 131, 176, + 275, 185, 192, 249, 317, 226, 255, 140, 305, 274, + 570, 571, 568, 0, 569, 615, 616, 670, 671, 672, + 641, 564, 0, 654, 655, 0, 645, 660, 661, 636, + 679, 593, 594, 554, 557, 558, 559, 565, 607, 608, + 619, 622, 650, 649, 648, 651, 656, 675, 674, 676, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 618, 113, 124, 189, 680, 247, 163, 307, 550, + 155, 0, 0, 609, 611, 621, 638, 115, 116, 125, + 134, 141, 154, 159, 162, 168, 172, 175, 177, 178, + 179, 183, 197, 200, 201, 202, 203, 217, 218, 220, + 221, 224, 225, 228, 230, 231, 232, 234, 235, 236, + 241, 244, 246, 248, 251, 256, 258, 259, 260, 262, + 263, 264, 268, 269, 270, 271, 279, 283, 293, 294, + 304, 313, 315, 657, 664, 644, 287, 602, 667, 574, + 591, 678, 592, 595, 633, 560, 614, 223, 589, 561, + 0, 578, 551, 585, 552, 575, 604, 157, 573, 646, + 617, 666, 187, 629, 0, 148, 195, 193, 0, 0, + 0, 229, 285, 1310, 1314, 0, 673, 190, 0, 626, + 308, 276, 208, 0, 0, 606, 653, 612, 642, 601, + 635, 567, 625, 668, 590, 631, 669, 0, 0, 0, + 545, 0, 0, 0, 0, 0, 0, 0, 0, 138, + 0, 628, 663, 587, 630, 632, 549, 627, 0, 555, + 562, 677, 659, 581, 582, 583, 0, 0, 0, 0, + 0, 0, 0, 605, 613, 639, 598, 0, 0, 0, + 0, 0, 0, 0, 0, 579, 0, 623, 0, 0, + 0, 563, 556, 0, 0, 603, 0, 0, 0, 566, + 117, 580, 640, 0, 547, 167, 209, 128, 643, 658, + 1313, 180, 314, 662, 597, 596, 1308, 0, 1309, 170, + 188, 544, 114, 126, 1306, 1312, 219, 252, 261, 588, + 548, 647, 576, 586, 149, 584, 254, 227, 303, 0, + 620, 233, 253, 191, 292, 245, 301, 302, 171, 286, + 311, 316, 273, 158, 0, 118, 0, 240, 153, 184, + 599, 634, 577, 146, 637, 624, 652, 272, 133, 288, + 207, 213, 143, 145, 144, 127, 267, 290, 137, 147, + 277, 257, 282, 152, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 119, 284, 300, 139, 265, 121, 298, + 280, 205, 181, 182, 120, 0, 250, 156, 166, 151, + 222, 0, 165, 242, 295, 296, 150, 318, 129, 310, + 123, 130, 309, 216, 0, 215, 312, 291, 299, 206, + 199, 0, 122, 297, 204, 198, 186, 161, 173, 238, + 194, 239, 174, 211, 210, 212, 0, 553, 0, 278, + 306, 319, 196, 135, 572, 266, 289, 0, 0, 136, + 164, 160, 237, 214, 131, 176, 275, 185, 192, 249, + 317, 226, 255, 140, 305, 274, 570, 571, 568, 0, + 569, 615, 616, 670, 671, 672, 641, 564, 0, 654, + 655, 0, 645, 660, 661, 636, 679, 593, 594, 554, + 557, 558, 559, 565, 607, 608, 619, 622, 650, 649, + 648, 651, 656, 675, 674, 676, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 618, 113, 124, + 189, 680, 247, 163, 307, 550, 155, 0, 0, 609, + 611, 621, 638, 115, 116, 125, 134, 141, 154, 159, + 162, 168, 172, 175, 177, 178, 179, 183, 197, 200, + 201, 202, 203, 217, 218, 220, 221, 224, 225, 228, + 230, 231, 232, 234, 235, 236, 241, 244, 246, 248, + 251, 256, 258, 259, 260, 262, 263, 264, 268, 269, + 270, 271, 279, 283, 293, 294, 304, 313, 315, 657, + 664, 644, 287, 602, 667, 574, 591, 678, 592, 595, + 633, 560, 614, 223, 589, 561, 0, 578, 551, 585, + 552, 575, 604, 157, 573, 646, 617, 666, 187, 629, + 0, 148, 195, 193, 0, 0, 0, 229, 285, 665, + 610, 0, 673, 190, 0, 626, 308, 276, 208, 0, + 0, 606, 653, 612, 642, 601, 635, 567, 625, 668, + 590, 631, 669, 0, 0, 0, 111, 0, 0, 0, + 0, 0, 0, 0, 0, 138, 0, 628, 663, 587, + 630, 632, 549, 627, 0, 555, 562, 677, 659, 581, + 582, 583, 0, 0, 0, 0, 0, 0, 0, 605, + 613, 639, 598, 0, 0, 0, 0, 0, 0, 0, + 0, 579, 0, 623, 0, 0, 0, 563, 556, 0, + 0, 603, 0, 0, 0, 566, 117, 580, 640, 0, + 547, 167, 209, 128, 643, 658, 600, 180, 314, 662, + 597, 596, 243, 0, 281, 170, 188, 132, 114, 126, + 142, 169, 219, 252, 261, 588, 548, 647, 576, 586, + 149, 584, 254, 227, 303, 0, 620, 233, 253, 191, + 292, 245, 301, 302, 171, 286, 311, 316, 273, 158, + 0, 118, 0, 240, 153, 184, 599, 634, 577, 146, + 637, 624, 652, 272, 133, 288, 207, 213, 143, 145, + 144, 127, 267, 290, 137, 147, 277, 257, 282, 152, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, + 284, 300, 139, 265, 121, 298, 280, 205, 181, 182, + 120, 0, 250, 156, 166, 151, 222, 0, 165, 242, + 295, 296, 150, 318, 129, 310, 123, 130, 309, 216, + 0, 215, 312, 291, 299, 206, 199, 0, 122, 297, + 204, 198, 186, 161, 173, 238, 194, 239, 174, 211, + 210, 212, 0, 553, 0, 278, 306, 319, 196, 135, + 572, 266, 289, 0, 0, 136, 164, 160, 237, 214, + 131, 176, 275, 185, 192, 249, 317, 226, 255, 140, + 305, 274, 570, 571, 568, 0, 569, 615, 616, 670, + 671, 672, 641, 564, 0, 654, 655, 0, 645, 660, + 661, 636, 679, 593, 594, 554, 557, 558, 559, 565, + 607, 608, 619, 622, 650, 649, 648, 651, 656, 675, + 674, 676, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 618, 113, 124, 189, 680, 247, 163, + 307, 550, 155, 0, 0, 609, 611, 621, 638, 115, + 116, 125, 134, 141, 154, 159, 162, 168, 172, 175, + 177, 178, 179, 183, 197, 200, 201, 202, 203, 217, + 218, 220, 221, 224, 225, 228, 230, 231, 232, 234, + 235, 236, 241, 244, 246, 248, 251, 256, 258, 259, + 260, 262, 263, 264, 268, 269, 270, 271, 279, 283, + 293, 294, 304, 313, 315, 657, 664, 644, 287, 602, + 667, 574, 591, 678, 592, 595, 633, 560, 614, 223, + 589, 561, 0, 578, 551, 585, 552, 575, 604, 157, + 573, 646, 617, 666, 187, 629, 0, 148, 195, 193, + 0, 0, 0, 229, 285, 665, 610, 0, 673, 190, + 0, 626, 308, 276, 208, 0, 0, 606, 653, 612, + 642, 601, 635, 567, 625, 668, 590, 631, 669, 0, + 0, 0, 545, 0, 0, 0, 0, 0, 0, 0, + 0, 138, 0, 628, 663, 587, 630, 632, 549, 627, + 0, 555, 562, 677, 659, 581, 582, 583, 0, 0, + 0, 0, 0, 0, 0, 605, 613, 639, 598, 0, + 0, 0, 0, 0, 0, 0, 0, 579, 0, 623, + 0, 0, 0, 563, 556, 0, 0, 603, 0, 0, + 0, 566, 117, 580, 640, 0, 547, 167, 209, 128, + 643, 658, 600, 180, 314, 662, 597, 596, 243, 0, + 281, 170, 188, 544, 114, 126, 540, 169, 219, 252, + 261, 588, 548, 647, 576, 586, 149, 584, 254, 227, + 303, 0, 620, 233, 253, 191, 292, 245, 301, 302, + 171, 286, 311, 316, 273, 158, 0, 118, 0, 240, + 153, 184, 599, 634, 577, 146, 637, 624, 652, 272, + 133, 288, 207, 213, 143, 145, 144, 127, 267, 290, + 137, 147, 277, 257, 282, 152, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 119, 284, 300, 139, 265, + 121, 298, 280, 205, 181, 182, 120, 0, 250, 156, + 166, 151, 222, 0, 165, 242, 295, 296, 150, 318, + 129, 310, 123, 130, 309, 216, 0, 215, 312, 291, + 299, 206, 199, 0, 122, 297, 204, 198, 186, 161, + 173, 238, 194, 239, 174, 211, 210, 212, 0, 553, + 0, 278, 306, 319, 196, 135, 572, 266, 289, 0, + 0, 136, 164, 160, 237, 214, 131, 176, 275, 185, + 192, 249, 317, 226, 255, 140, 305, 274, 570, 571, + 568, 0, 569, 615, 616, 670, 671, 672, 641, 564, + 0, 654, 655, 0, 645, 660, 661, 636, 679, 593, + 594, 554, 557, 558, 559, 565, 607, 608, 619, 622, + 650, 649, 648, 651, 656, 675, 674, 676, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 618, + 113, 124, 189, 680, 247, 163, 307, 550, 155, 0, + 0, 609, 611, 621, 638, 115, 116, 125, 134, 141, + 154, 159, 162, 168, 172, 175, 177, 178, 179, 183, + 197, 200, 201, 202, 203, 217, 218, 220, 221, 224, + 225, 228, 230, 231, 232, 234, 235, 236, 241, 244, + 246, 248, 251, 256, 258, 259, 260, 262, 263, 264, + 268, 269, 270, 271, 279, 283, 293, 294, 304, 313, + 315, 657, 287, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 223, 0, 0, 0, 0, 0, 426, + 0, 0, 0, 157, 423, 0, 0, 0, 187, 0, + 0, 148, 195, 193, 0, 0, 0, 229, 285, 0, + 0, 0, 470, 190, 0, 0, 308, 276, 208, 0, + 0, 0, 0, 459, 460, 0, 0, 0, 0, 0, + 0, 1288, 0, 71, 0, 0, 424, 447, 446, 449, + 450, 451, 452, 0, 0, 138, 448, 453, 454, 455, + 1289, 0, 0, 421, 438, 0, 469, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 664, 644, 287, 602, 667, 574, 591, - 678, 592, 595, 633, 560, 614, 223, 589, 561, 0, - 578, 551, 585, 552, 575, 604, 157, 573, 646, 617, - 666, 187, 629, 0, 148, 195, 193, 0, 0, 110, - 229, 285, 665, 610, 0, 673, 190, 0, 626, 308, - 276, 208, 0, 0, 606, 653, 612, 642, 601, 635, - 567, 625, 668, 590, 631, 669, 531, 0, 0, 2116, - 0, 0, 0, 0, 0, 0, 110, 0, 138, 0, - 628, 663, 587, 630, 632, 549, 627, 0, 555, 562, - 677, 659, 581, 582, 583, 0, 0, 0, 0, 0, - 0, 0, 605, 613, 639, 598, 0, 0, 0, 0, - 0, 0, 0, 0, 579, 0, 623, 0, 0, 0, - 563, 556, 0, 0, 603, 0, 0, 0, 566, 117, - 580, 640, 0, 547, 167, 209, 128, 643, 658, 600, - 180, 314, 662, 597, 596, 243, 0, 281, 170, 188, - 132, 114, 126, 142, 169, 219, 252, 261, 588, 548, - 647, 576, 586, 149, 584, 254, 227, 303, 0, 620, - 233, 253, 191, 292, 245, 301, 302, 171, 286, 311, - 316, 273, 158, 0, 118, 0, 240, 153, 184, 599, - 634, 577, 146, 637, 624, 652, 272, 133, 288, 207, - 213, 143, 145, 144, 127, 267, 290, 137, 147, 277, - 257, 282, 152, 0, 0, 2119, 2120, 2121, 0, 0, - 0, 0, 119, 284, 300, 139, 265, 121, 298, 280, - 205, 181, 182, 120, 0, 250, 156, 166, 151, 222, - 0, 165, 242, 295, 296, 150, 318, 129, 310, 123, - 130, 309, 216, 0, 215, 312, 291, 299, 206, 199, - 0, 122, 297, 204, 198, 186, 161, 173, 238, 194, - 239, 174, 211, 210, 212, 0, 553, 0, 278, 306, - 319, 196, 135, 572, 266, 289, 0, 0, 136, 164, - 160, 237, 214, 131, 176, 275, 185, 192, 249, 317, - 226, 255, 140, 305, 274, 570, 571, 568, 0, 569, - 615, 616, 670, 671, 672, 641, 564, 0, 654, 655, - 0, 645, 660, 661, 636, 679, 593, 594, 554, 557, - 558, 559, 565, 607, 608, 619, 622, 650, 649, 648, - 651, 656, 675, 674, 676, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 618, 113, 124, 189, - 680, 247, 163, 307, 550, 155, 0, 0, 609, 611, - 621, 638, 115, 116, 125, 134, 141, 154, 159, 162, - 168, 172, 175, 177, 178, 179, 183, 197, 200, 201, - 202, 203, 217, 218, 220, 221, 224, 225, 228, 230, - 231, 232, 234, 235, 236, 241, 244, 246, 248, 251, - 256, 258, 259, 260, 262, 263, 264, 268, 269, 270, - 271, 279, 283, 293, 294, 304, 313, 315, 657, 664, - 644, 287, 602, 667, 574, 591, 678, 592, 595, 633, - 560, 614, 223, 589, 561, 0, 578, 551, 585, 552, - 575, 604, 157, 573, 646, 617, 666, 187, 629, 0, - 148, 195, 193, 0, 0, 0, 229, 285, 665, 610, - 0, 673, 190, 0, 626, 308, 276, 208, 0, 0, - 606, 653, 612, 642, 601, 635, 567, 625, 668, 590, - 631, 669, 0, 0, 0, 545, 0, 1299, 1300, 0, - 0, 0, 0, 0, 138, 0, 628, 663, 587, 630, - 632, 549, 627, 0, 555, 562, 677, 659, 581, 582, - 583, 1544, 0, 0, 0, 0, 0, 0, 605, 613, - 639, 598, 0, 0, 0, 0, 0, 0, 0, 0, - 579, 0, 623, 0, 0, 0, 563, 556, 0, 0, - 603, 0, 0, 0, 566, 117, 580, 640, 0, 547, - 167, 209, 128, 643, 658, 600, 180, 314, 662, 597, - 596, 243, 0, 281, 170, 188, 132, 114, 126, 142, - 169, 219, 252, 261, 588, 548, 647, 576, 586, 149, - 584, 254, 227, 303, 0, 620, 233, 253, 191, 292, - 245, 301, 302, 171, 286, 311, 316, 273, 158, 0, - 118, 0, 240, 153, 184, 599, 634, 577, 146, 637, - 624, 652, 272, 133, 288, 207, 213, 143, 145, 144, - 127, 267, 290, 137, 147, 277, 257, 282, 152, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 119, 284, - 300, 139, 265, 121, 298, 280, 205, 181, 182, 120, - 0, 250, 156, 166, 151, 222, 0, 165, 242, 295, - 296, 150, 318, 129, 310, 123, 130, 309, 216, 0, - 215, 312, 291, 299, 206, 199, 0, 122, 297, 204, - 198, 186, 161, 173, 238, 194, 239, 174, 211, 210, - 212, 0, 553, 0, 278, 306, 319, 196, 135, 572, - 266, 289, 0, 0, 136, 164, 160, 237, 214, 131, - 176, 275, 185, 192, 249, 317, 226, 255, 140, 305, - 274, 570, 571, 568, 0, 569, 615, 616, 670, 671, - 672, 641, 564, 0, 654, 655, 0, 645, 660, 661, - 636, 679, 593, 594, 554, 557, 558, 559, 565, 607, - 608, 619, 622, 650, 649, 648, 651, 656, 675, 674, - 676, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 618, 113, 124, 189, 680, 247, 163, 307, - 550, 155, 0, 0, 609, 611, 621, 638, 115, 116, - 125, 134, 141, 154, 159, 162, 168, 172, 175, 177, - 178, 179, 183, 197, 200, 201, 202, 203, 217, 218, - 220, 221, 224, 225, 228, 230, 231, 232, 234, 235, - 236, 241, 244, 246, 248, 251, 256, 258, 259, 260, - 262, 263, 264, 268, 269, 270, 271, 279, 283, 293, - 294, 304, 313, 315, 657, 664, 644, 287, 602, 667, - 574, 591, 678, 592, 595, 633, 560, 614, 223, 589, - 561, 0, 578, 551, 585, 552, 575, 604, 157, 573, - 646, 617, 666, 187, 629, 0, 148, 195, 193, 0, - 0, 0, 229, 285, 665, 610, 0, 673, 190, 0, - 626, 308, 276, 208, 0, 0, 606, 653, 612, 642, - 601, 635, 567, 625, 668, 590, 631, 669, 0, 0, - 0, 545, 0, 1299, 1300, 0, 0, 0, 0, 0, - 138, 0, 628, 663, 587, 630, 632, 549, 627, 0, - 555, 562, 677, 659, 581, 582, 583, 0, 0, 0, - 0, 0, 0, 0, 605, 613, 639, 598, 0, 0, - 0, 0, 0, 0, 0, 0, 579, 0, 623, 0, - 0, 0, 563, 556, 0, 0, 603, 0, 0, 0, - 566, 117, 580, 640, 0, 547, 167, 209, 128, 643, - 658, 600, 180, 314, 662, 597, 596, 243, 0, 281, - 170, 188, 132, 114, 126, 142, 169, 219, 252, 261, - 588, 548, 647, 576, 586, 149, 584, 254, 227, 303, - 0, 620, 233, 253, 191, 292, 245, 301, 302, 171, - 286, 311, 316, 273, 158, 0, 118, 0, 240, 153, - 184, 599, 634, 577, 146, 637, 624, 652, 272, 133, - 288, 207, 213, 143, 145, 144, 127, 267, 290, 137, - 147, 277, 257, 282, 152, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 119, 284, 300, 139, 265, 121, - 298, 280, 205, 181, 182, 120, 0, 250, 156, 166, - 151, 222, 0, 165, 242, 295, 296, 150, 318, 129, - 310, 123, 130, 309, 216, 0, 215, 312, 291, 299, - 206, 199, 0, 122, 297, 204, 198, 186, 161, 173, - 238, 194, 239, 174, 211, 210, 212, 0, 553, 0, - 278, 306, 319, 196, 135, 572, 266, 289, 0, 0, - 136, 164, 160, 237, 214, 131, 176, 275, 185, 192, - 249, 317, 226, 255, 140, 305, 274, 570, 571, 568, - 0, 569, 615, 616, 670, 671, 672, 641, 564, 0, - 654, 655, 0, 645, 660, 661, 636, 679, 593, 594, - 554, 557, 558, 559, 565, 607, 608, 619, 622, 650, - 649, 648, 651, 656, 675, 674, 676, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 618, 113, - 124, 189, 680, 247, 163, 307, 550, 155, 0, 0, - 609, 611, 621, 638, 115, 116, 125, 134, 141, 154, - 159, 162, 168, 172, 175, 177, 178, 179, 183, 197, - 200, 201, 202, 203, 217, 218, 220, 221, 224, 225, - 228, 230, 231, 232, 234, 235, 236, 241, 244, 246, - 248, 251, 256, 258, 259, 260, 262, 263, 264, 268, - 269, 270, 271, 279, 283, 293, 294, 304, 313, 315, - 657, 664, 644, 287, 602, 667, 574, 591, 678, 592, - 595, 633, 560, 614, 223, 589, 561, 0, 578, 551, - 585, 552, 575, 604, 157, 573, 646, 617, 666, 187, - 629, 0, 148, 195, 193, 0, 0, 0, 229, 285, - 665, 610, 0, 673, 190, 0, 626, 308, 276, 208, - 0, 0, 606, 653, 612, 642, 601, 635, 567, 625, - 668, 590, 631, 669, 0, 0, 0, 545, 0, 0, - 0, 0, 0, 0, 0, 0, 138, 0, 628, 663, - 587, 630, 632, 549, 627, 0, 555, 562, 677, 659, - 581, 582, 583, 0, 0, 0, 0, 0, 0, 0, - 605, 613, 639, 598, 0, 0, 0, 0, 0, 0, - 1944, 0, 579, 0, 623, 0, 0, 0, 563, 556, - 0, 0, 603, 0, 0, 0, 566, 117, 580, 640, - 0, 547, 167, 209, 128, 643, 658, 600, 180, 314, - 662, 597, 596, 243, 0, 281, 170, 188, 132, 114, - 126, 142, 169, 219, 252, 261, 588, 548, 647, 576, - 586, 149, 584, 254, 227, 303, 0, 620, 233, 253, - 191, 292, 245, 301, 302, 171, 286, 311, 316, 273, - 158, 0, 118, 0, 240, 153, 184, 599, 634, 577, - 146, 637, 624, 652, 272, 133, 288, 207, 213, 143, - 145, 144, 127, 267, 290, 137, 147, 277, 257, 282, - 152, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 119, 284, 300, 139, 265, 121, 298, 280, 205, 181, - 182, 120, 0, 250, 156, 166, 151, 222, 0, 165, - 242, 295, 296, 150, 318, 129, 310, 123, 130, 309, - 216, 0, 215, 312, 291, 299, 206, 199, 0, 122, - 297, 204, 198, 186, 161, 173, 238, 194, 239, 174, - 211, 210, 212, 0, 553, 0, 278, 306, 319, 196, - 135, 572, 266, 289, 0, 0, 136, 164, 160, 237, - 214, 131, 176, 275, 185, 192, 249, 317, 226, 255, - 140, 305, 274, 570, 571, 568, 0, 569, 615, 616, - 670, 671, 672, 641, 564, 0, 654, 655, 0, 645, - 660, 661, 636, 679, 593, 594, 554, 557, 558, 559, - 565, 607, 608, 619, 622, 650, 649, 648, 651, 656, - 675, 674, 676, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 618, 113, 124, 189, 680, 247, - 163, 307, 550, 155, 0, 0, 609, 611, 621, 638, - 115, 116, 125, 134, 141, 154, 159, 162, 168, 172, - 175, 177, 178, 179, 183, 197, 200, 201, 202, 203, - 217, 218, 220, 221, 224, 225, 228, 230, 231, 232, - 234, 235, 236, 241, 244, 246, 248, 251, 256, 258, - 259, 260, 262, 263, 264, 268, 269, 270, 271, 279, - 283, 293, 294, 304, 313, 315, 657, 664, 644, 287, - 602, 667, 574, 591, 678, 592, 595, 633, 560, 614, - 223, 589, 561, 0, 578, 551, 585, 552, 575, 604, - 157, 573, 646, 617, 666, 187, 629, 0, 148, 195, - 193, 0, 0, 0, 229, 285, 665, 610, 0, 673, - 190, 0, 626, 308, 276, 208, 0, 0, 606, 653, - 612, 642, 601, 635, 567, 625, 668, 590, 631, 669, - 0, 0, 0, 424, 0, 0, 0, 0, 0, 0, - 0, 0, 138, 0, 628, 663, 587, 630, 632, 549, - 627, 0, 555, 562, 677, 659, 581, 582, 583, 0, - 0, 0, 0, 0, 0, 0, 605, 613, 639, 598, - 0, 0, 0, 0, 0, 0, 1670, 0, 579, 0, - 623, 0, 0, 0, 563, 556, 0, 0, 603, 0, - 0, 0, 566, 117, 580, 640, 0, 547, 167, 209, - 128, 643, 658, 600, 180, 314, 662, 597, 596, 243, - 0, 281, 170, 188, 132, 114, 126, 142, 169, 219, - 252, 261, 588, 548, 647, 576, 586, 149, 584, 254, - 227, 303, 0, 620, 233, 253, 191, 292, 245, 301, - 302, 171, 286, 311, 316, 273, 158, 0, 118, 0, - 240, 153, 184, 599, 634, 577, 146, 637, 624, 652, - 272, 133, 288, 207, 213, 143, 145, 144, 127, 267, - 290, 137, 147, 277, 257, 282, 152, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 119, 284, 300, 139, - 265, 121, 298, 280, 205, 181, 182, 120, 0, 250, - 156, 166, 151, 222, 0, 165, 242, 295, 296, 150, - 318, 129, 310, 123, 130, 309, 216, 0, 215, 312, - 291, 299, 206, 199, 0, 122, 297, 204, 198, 186, - 161, 173, 238, 194, 239, 174, 211, 210, 212, 0, - 553, 0, 278, 306, 319, 196, 135, 572, 266, 289, - 0, 0, 136, 164, 160, 237, 214, 131, 176, 275, - 185, 192, 249, 317, 226, 255, 140, 305, 274, 570, - 571, 568, 0, 569, 615, 616, 670, 671, 672, 641, - 564, 0, 654, 655, 0, 645, 660, 661, 636, 679, - 593, 594, 554, 557, 558, 559, 565, 607, 608, 619, - 622, 650, 649, 648, 651, 656, 675, 674, 676, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 618, 113, 124, 189, 680, 247, 163, 307, 550, 155, - 0, 0, 609, 611, 621, 638, 115, 116, 125, 134, - 141, 154, 159, 162, 168, 172, 175, 177, 178, 179, - 183, 197, 200, 201, 202, 203, 217, 218, 220, 221, - 224, 225, 228, 230, 231, 232, 234, 235, 236, 241, - 244, 246, 248, 251, 256, 258, 259, 260, 262, 263, - 264, 268, 269, 270, 271, 279, 283, 293, 294, 304, - 313, 315, 657, 664, 644, 287, 602, 667, 574, 591, - 678, 592, 595, 633, 560, 614, 223, 589, 561, 0, - 578, 551, 585, 552, 575, 604, 157, 573, 646, 617, - 666, 187, 629, 0, 148, 195, 193, 0, 0, 0, - 229, 285, 665, 610, 0, 673, 190, 0, 626, 308, - 276, 208, 0, 0, 606, 653, 612, 642, 601, 635, - 567, 625, 668, 590, 631, 669, 0, 0, 0, 545, - 0, 0, 0, 0, 0, 0, 0, 0, 138, 0, - 628, 663, 587, 630, 632, 549, 627, 0, 555, 562, - 677, 659, 581, 582, 583, 0, 0, 0, 0, 0, - 0, 0, 605, 613, 639, 598, 0, 0, 0, 0, - 0, 0, 1662, 0, 579, 0, 623, 0, 0, 0, - 563, 556, 0, 0, 603, 0, 0, 0, 566, 117, - 580, 640, 0, 547, 167, 209, 128, 643, 658, 600, - 180, 314, 662, 597, 596, 243, 0, 281, 170, 188, - 132, 114, 126, 142, 169, 219, 252, 261, 588, 548, - 647, 576, 586, 149, 584, 254, 227, 303, 0, 620, - 233, 253, 191, 292, 245, 301, 302, 171, 286, 311, - 316, 273, 158, 0, 118, 0, 240, 153, 184, 599, - 634, 577, 146, 637, 624, 652, 272, 133, 288, 207, - 213, 143, 145, 144, 127, 267, 290, 137, 147, 277, - 257, 282, 152, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 119, 284, 300, 139, 265, 121, 298, 280, - 205, 181, 182, 120, 0, 250, 156, 166, 151, 222, - 0, 165, 242, 295, 296, 150, 318, 129, 310, 123, - 130, 309, 216, 0, 215, 312, 291, 299, 206, 199, - 0, 122, 297, 204, 198, 186, 161, 173, 238, 194, - 239, 174, 211, 210, 212, 0, 553, 0, 278, 306, - 319, 196, 135, 572, 266, 289, 0, 0, 136, 164, - 160, 237, 214, 131, 176, 275, 185, 192, 249, 317, - 226, 255, 140, 305, 274, 570, 571, 568, 0, 569, - 615, 616, 670, 671, 672, 641, 564, 0, 654, 655, - 0, 645, 660, 661, 636, 679, 593, 594, 554, 557, - 558, 559, 565, 607, 608, 619, 622, 650, 649, 648, - 651, 656, 675, 674, 676, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 618, 113, 124, 189, - 680, 247, 163, 307, 550, 155, 0, 0, 609, 611, - 621, 638, 115, 116, 125, 134, 141, 154, 159, 162, - 168, 172, 175, 177, 178, 179, 183, 197, 200, 201, - 202, 203, 217, 218, 220, 221, 224, 225, 228, 230, - 231, 232, 234, 235, 236, 241, 244, 246, 248, 251, - 256, 258, 259, 260, 262, 263, 264, 268, 269, 270, - 271, 279, 283, 293, 294, 304, 313, 315, 657, 664, - 644, 287, 602, 667, 574, 591, 678, 592, 595, 633, - 560, 614, 223, 589, 561, 0, 578, 551, 585, 552, - 575, 604, 157, 573, 646, 617, 666, 187, 629, 0, - 148, 195, 193, 0, 0, 0, 229, 285, 665, 610, - 0, 673, 190, 0, 626, 308, 276, 208, 0, 0, - 606, 653, 612, 642, 601, 635, 567, 625, 668, 590, - 631, 669, 71, 0, 0, 545, 0, 0, 0, 0, - 0, 0, 0, 0, 138, 0, 628, 663, 587, 630, - 632, 549, 627, 0, 555, 562, 677, 659, 581, 582, - 583, 0, 0, 0, 0, 0, 0, 0, 605, 613, - 639, 598, 0, 0, 0, 0, 0, 0, 0, 0, - 579, 0, 623, 0, 0, 0, 563, 556, 0, 0, - 603, 0, 0, 0, 566, 117, 580, 640, 0, 547, - 167, 209, 128, 643, 658, 600, 180, 314, 662, 597, - 596, 243, 0, 281, 170, 188, 132, 114, 126, 142, - 169, 219, 252, 261, 588, 548, 647, 576, 586, 149, - 584, 254, 227, 303, 0, 620, 233, 253, 191, 292, - 245, 301, 302, 171, 286, 311, 316, 273, 158, 0, - 118, 0, 240, 153, 184, 599, 634, 577, 146, 637, - 624, 652, 272, 133, 288, 207, 213, 143, 145, 144, - 127, 267, 290, 137, 147, 277, 257, 282, 152, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 119, 284, - 300, 139, 265, 121, 298, 280, 205, 181, 182, 120, - 0, 250, 156, 166, 151, 222, 0, 165, 242, 295, - 296, 150, 318, 129, 310, 123, 130, 309, 216, 0, - 215, 312, 291, 299, 206, 199, 0, 122, 297, 204, - 198, 186, 161, 173, 238, 194, 239, 174, 211, 210, - 212, 0, 553, 0, 278, 306, 319, 196, 135, 572, - 266, 289, 0, 0, 136, 164, 160, 237, 214, 131, - 176, 275, 185, 192, 249, 317, 226, 255, 140, 305, - 274, 570, 571, 568, 0, 569, 615, 616, 670, 671, - 672, 641, 564, 0, 654, 655, 0, 645, 660, 661, - 636, 679, 593, 594, 554, 557, 558, 559, 565, 607, - 608, 619, 622, 650, 649, 648, 651, 656, 675, 674, - 676, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 618, 113, 124, 189, 680, 247, 163, 307, - 550, 155, 0, 0, 609, 611, 621, 638, 115, 116, - 125, 134, 141, 154, 159, 162, 168, 172, 175, 177, - 178, 179, 183, 197, 200, 201, 202, 203, 217, 218, - 220, 221, 224, 225, 228, 230, 231, 232, 234, 235, - 236, 241, 244, 246, 248, 251, 256, 258, 259, 260, - 262, 263, 264, 268, 269, 270, 271, 279, 283, 293, - 294, 304, 313, 315, 657, 664, 644, 287, 602, 667, - 574, 591, 678, 592, 595, 633, 560, 614, 223, 589, - 561, 0, 578, 551, 585, 552, 575, 604, 157, 573, - 646, 617, 666, 187, 629, 0, 148, 195, 193, 0, - 0, 0, 229, 285, 665, 610, 0, 673, 190, 0, - 626, 308, 276, 208, 0, 0, 606, 653, 612, 642, - 601, 635, 567, 625, 668, 590, 631, 669, 0, 0, - 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, - 138, 0, 628, 663, 587, 630, 632, 549, 627, 0, - 555, 562, 677, 659, 581, 582, 583, 0, 0, 0, - 0, 0, 0, 0, 605, 613, 639, 598, 0, 0, - 0, 0, 0, 0, 1281, 0, 579, 0, 623, 0, - 0, 0, 563, 556, 0, 0, 603, 0, 0, 0, - 566, 117, 580, 640, 0, 547, 167, 209, 128, 643, - 658, 600, 180, 314, 662, 597, 596, 243, 0, 281, - 170, 188, 132, 114, 126, 142, 169, 219, 252, 261, - 588, 548, 647, 576, 586, 149, 584, 254, 227, 303, - 0, 620, 233, 253, 191, 292, 245, 301, 302, 171, - 286, 311, 316, 273, 158, 0, 118, 0, 240, 153, - 184, 599, 634, 577, 146, 637, 624, 652, 272, 133, - 288, 207, 213, 143, 145, 144, 127, 267, 290, 137, - 147, 277, 257, 282, 152, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 119, 284, 300, 139, 265, 121, - 298, 280, 205, 181, 182, 120, 0, 250, 156, 166, - 151, 222, 0, 165, 242, 295, 296, 150, 318, 129, - 310, 123, 130, 309, 216, 0, 215, 312, 291, 299, - 206, 199, 0, 122, 297, 204, 198, 186, 161, 173, - 238, 194, 239, 174, 211, 210, 212, 0, 553, 0, - 278, 306, 319, 196, 135, 572, 266, 289, 0, 0, - 136, 164, 160, 237, 214, 131, 176, 275, 185, 192, - 249, 317, 226, 255, 140, 305, 274, 570, 571, 568, - 0, 569, 615, 616, 670, 671, 672, 641, 564, 0, - 654, 655, 0, 645, 660, 661, 636, 679, 593, 594, - 554, 557, 558, 559, 565, 607, 608, 619, 622, 650, - 649, 648, 651, 656, 675, 674, 676, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 618, 113, - 124, 189, 680, 247, 163, 307, 550, 155, 0, 0, - 609, 611, 621, 638, 115, 116, 125, 134, 141, 154, - 159, 162, 168, 172, 175, 177, 178, 179, 183, 197, - 200, 201, 202, 203, 217, 218, 220, 221, 224, 225, - 228, 230, 231, 232, 234, 235, 236, 241, 244, 246, - 248, 251, 256, 258, 259, 260, 262, 263, 264, 268, - 269, 270, 271, 279, 283, 293, 294, 304, 313, 315, - 657, 664, 644, 287, 602, 667, 574, 591, 678, 592, - 595, 633, 560, 614, 223, 589, 561, 0, 578, 551, - 585, 552, 575, 604, 157, 573, 646, 617, 666, 187, - 629, 0, 148, 195, 193, 0, 0, 0, 229, 285, - 665, 610, 0, 673, 190, 0, 626, 308, 276, 208, - 0, 0, 606, 653, 612, 642, 601, 635, 567, 625, - 668, 590, 631, 669, 0, 0, 0, 424, 0, 0, - 0, 0, 0, 0, 0, 0, 138, 0, 628, 663, - 587, 630, 632, 549, 627, 0, 555, 562, 677, 659, - 581, 582, 583, 0, 0, 0, 0, 0, 0, 0, - 605, 613, 639, 598, 0, 0, 0, 0, 0, 0, - 1145, 0, 579, 0, 623, 0, 0, 0, 563, 556, - 0, 0, 603, 0, 0, 0, 566, 117, 580, 640, - 0, 547, 167, 209, 128, 643, 658, 600, 180, 314, - 662, 597, 596, 243, 0, 281, 170, 188, 132, 114, - 126, 142, 169, 219, 252, 261, 588, 548, 647, 576, - 586, 149, 584, 254, 227, 303, 0, 620, 233, 253, - 191, 292, 245, 301, 302, 171, 286, 311, 316, 273, - 158, 0, 118, 0, 240, 153, 184, 599, 634, 577, - 146, 637, 624, 652, 272, 133, 288, 207, 213, 143, - 145, 144, 127, 267, 290, 137, 147, 277, 257, 282, - 152, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 119, 284, 300, 139, 265, 121, 298, 280, 205, 181, - 182, 120, 0, 250, 156, 166, 151, 222, 0, 165, - 242, 295, 296, 150, 318, 129, 310, 123, 130, 309, - 216, 0, 215, 312, 291, 299, 206, 199, 0, 122, - 297, 204, 198, 186, 161, 173, 238, 194, 239, 174, - 211, 210, 212, 0, 553, 0, 278, 306, 319, 196, - 135, 572, 266, 289, 0, 0, 136, 164, 160, 237, - 214, 131, 176, 275, 185, 192, 249, 317, 226, 255, - 140, 305, 274, 570, 571, 568, 0, 569, 615, 616, - 670, 671, 672, 641, 564, 0, 654, 655, 0, 645, - 660, 661, 636, 679, 593, 594, 554, 557, 558, 559, - 565, 607, 608, 619, 622, 650, 649, 648, 651, 656, - 675, 674, 676, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 618, 113, 124, 189, 680, 247, - 163, 307, 550, 155, 0, 0, 609, 611, 621, 638, - 115, 116, 125, 134, 141, 154, 159, 162, 168, 172, - 175, 177, 178, 179, 183, 197, 200, 201, 202, 203, - 217, 218, 220, 221, 224, 225, 228, 230, 231, 232, - 234, 235, 236, 241, 244, 246, 248, 251, 256, 258, - 259, 260, 262, 263, 264, 268, 269, 270, 271, 279, - 283, 293, 294, 304, 313, 315, 657, 664, 644, 287, - 602, 667, 574, 591, 678, 592, 595, 633, 560, 614, - 223, 589, 561, 0, 578, 551, 585, 552, 575, 604, - 157, 573, 646, 617, 666, 187, 629, 0, 148, 195, - 193, 0, 0, 0, 229, 285, 665, 610, 0, 673, - 190, 0, 626, 308, 276, 208, 0, 0, 606, 653, - 612, 642, 601, 635, 567, 625, 668, 590, 631, 669, - 0, 0, 0, 545, 0, 0, 0, 0, 0, 0, - 0, 0, 138, 0, 628, 663, 587, 630, 632, 549, - 627, 0, 555, 562, 677, 659, 581, 582, 583, 0, - 0, 0, 0, 0, 0, 0, 605, 613, 639, 598, - 0, 0, 0, 0, 0, 0, 0, 0, 579, 0, - 623, 0, 0, 0, 563, 556, 0, 0, 603, 0, - 0, 0, 566, 117, 580, 640, 0, 547, 167, 209, - 128, 643, 658, 600, 180, 314, 662, 597, 596, 243, - 0, 281, 170, 188, 132, 114, 126, 142, 169, 219, - 252, 261, 588, 548, 647, 576, 586, 149, 584, 254, - 227, 303, 0, 620, 233, 253, 191, 292, 245, 301, - 302, 171, 286, 311, 316, 273, 158, 0, 118, 0, - 240, 153, 184, 599, 634, 577, 146, 637, 624, 652, - 272, 133, 288, 207, 213, 143, 145, 144, 127, 267, - 290, 137, 147, 277, 257, 282, 152, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 119, 284, 300, 139, - 265, 121, 298, 280, 205, 181, 182, 120, 0, 250, - 156, 166, 151, 222, 0, 165, 242, 295, 296, 150, - 318, 129, 310, 123, 130, 309, 216, 0, 215, 312, - 291, 299, 206, 199, 0, 122, 297, 204, 198, 186, - 161, 173, 238, 194, 239, 174, 211, 210, 212, 0, - 553, 0, 278, 306, 319, 196, 135, 572, 266, 289, - 0, 0, 136, 164, 160, 237, 214, 131, 176, 275, - 185, 192, 249, 317, 226, 255, 140, 305, 274, 570, - 571, 568, 0, 569, 615, 616, 670, 671, 672, 641, - 564, 0, 654, 655, 0, 645, 660, 661, 636, 679, - 593, 594, 554, 557, 558, 559, 565, 607, 608, 619, - 622, 650, 649, 648, 651, 656, 675, 674, 676, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 618, 113, 124, 189, 680, 247, 163, 307, 550, 155, - 0, 0, 609, 611, 621, 638, 115, 116, 125, 134, - 141, 154, 159, 162, 168, 172, 175, 177, 178, 179, - 183, 197, 200, 201, 202, 203, 217, 218, 220, 221, - 224, 225, 228, 230, 231, 232, 234, 235, 236, 241, - 244, 246, 248, 251, 256, 258, 259, 260, 262, 263, - 264, 268, 269, 270, 271, 279, 283, 293, 294, 304, - 313, 315, 657, 664, 644, 287, 602, 667, 574, 591, - 678, 592, 595, 633, 560, 614, 223, 589, 561, 0, - 578, 551, 585, 552, 575, 604, 157, 573, 646, 617, - 666, 187, 629, 0, 148, 195, 193, 0, 0, 0, - 229, 285, 665, 610, 0, 673, 190, 0, 626, 308, - 276, 208, 0, 0, 606, 653, 612, 642, 601, 635, - 567, 625, 668, 590, 631, 669, 0, 0, 0, 424, - 0, 0, 0, 0, 0, 0, 0, 0, 138, 0, - 628, 663, 587, 630, 632, 549, 627, 0, 555, 562, - 677, 659, 581, 582, 583, 0, 0, 0, 0, 0, - 0, 0, 605, 613, 639, 598, 0, 0, 0, 0, - 0, 0, 0, 0, 579, 0, 623, 0, 0, 0, - 563, 556, 0, 0, 603, 0, 0, 0, 566, 117, - 580, 640, 0, 547, 167, 209, 128, 643, 658, 600, - 180, 314, 662, 597, 596, 243, 0, 281, 170, 188, - 132, 114, 126, 142, 169, 219, 252, 261, 588, 548, - 647, 576, 586, 149, 584, 254, 227, 303, 0, 620, - 233, 253, 191, 292, 245, 301, 302, 171, 286, 311, - 316, 273, 158, 0, 118, 0, 240, 153, 184, 599, - 634, 577, 146, 637, 624, 652, 272, 133, 288, 207, - 213, 143, 145, 144, 127, 267, 290, 137, 147, 277, - 257, 282, 152, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 119, 284, 300, 139, 265, 121, 298, 280, - 205, 181, 182, 120, 0, 250, 156, 166, 151, 222, - 0, 165, 242, 295, 296, 150, 318, 129, 310, 123, - 130, 309, 216, 0, 215, 312, 291, 299, 206, 199, - 0, 122, 297, 204, 198, 186, 161, 173, 238, 194, - 239, 174, 211, 210, 212, 0, 553, 0, 278, 306, - 319, 196, 135, 572, 266, 289, 0, 0, 136, 164, - 160, 237, 214, 131, 176, 275, 185, 192, 249, 317, - 226, 255, 140, 305, 274, 570, 571, 568, 0, 569, - 615, 616, 670, 671, 672, 641, 564, 0, 654, 655, - 0, 645, 660, 661, 636, 679, 593, 594, 554, 557, - 558, 559, 565, 607, 608, 619, 622, 650, 649, 648, - 651, 656, 675, 674, 676, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 618, 113, 124, 189, - 680, 247, 163, 307, 550, 155, 0, 0, 609, 611, - 621, 638, 115, 116, 125, 134, 141, 154, 159, 162, - 168, 172, 175, 177, 178, 179, 183, 197, 200, 201, - 202, 203, 217, 218, 220, 221, 224, 225, 228, 230, - 231, 232, 234, 235, 236, 241, 244, 246, 248, 251, - 256, 258, 259, 260, 262, 263, 264, 268, 269, 270, - 271, 279, 283, 293, 294, 304, 313, 315, 657, 664, - 644, 287, 602, 667, 574, 591, 678, 592, 595, 633, - 560, 614, 223, 589, 561, 0, 578, 551, 585, 552, - 575, 604, 157, 573, 646, 617, 666, 187, 629, 0, - 148, 195, 193, 0, 0, 0, 229, 285, 1310, 1314, - 0, 673, 190, 0, 626, 308, 276, 208, 0, 0, - 606, 653, 612, 642, 601, 635, 567, 625, 668, 590, - 631, 669, 0, 0, 0, 545, 0, 0, 0, 0, - 0, 0, 0, 0, 138, 0, 628, 663, 587, 630, - 632, 549, 627, 0, 555, 562, 677, 659, 581, 582, - 583, 0, 0, 0, 0, 0, 0, 0, 605, 613, - 639, 598, 0, 0, 0, 0, 0, 0, 0, 0, - 579, 0, 623, 0, 0, 0, 563, 556, 0, 0, - 603, 0, 0, 0, 566, 117, 580, 640, 0, 547, - 167, 209, 128, 643, 658, 1313, 180, 314, 662, 597, - 596, 1308, 0, 1309, 170, 188, 544, 114, 126, 1306, - 1312, 219, 252, 261, 588, 548, 647, 576, 586, 149, - 584, 254, 227, 303, 0, 620, 233, 253, 191, 292, - 245, 301, 302, 171, 286, 311, 316, 273, 158, 0, - 118, 0, 240, 153, 184, 599, 634, 577, 146, 637, - 624, 652, 272, 133, 288, 207, 213, 143, 145, 144, - 127, 267, 290, 137, 147, 277, 257, 282, 152, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 119, 284, - 300, 139, 265, 121, 298, 280, 205, 181, 182, 120, - 0, 250, 156, 166, 151, 222, 0, 165, 242, 295, - 296, 150, 318, 129, 310, 123, 130, 309, 216, 0, - 215, 312, 291, 299, 206, 199, 0, 122, 297, 204, - 198, 186, 161, 173, 238, 194, 239, 174, 211, 210, - 212, 0, 553, 0, 278, 306, 319, 196, 135, 572, - 266, 289, 0, 0, 136, 164, 160, 237, 214, 131, - 176, 275, 185, 192, 249, 317, 226, 255, 140, 305, - 274, 570, 571, 568, 0, 569, 615, 616, 670, 671, - 672, 641, 564, 0, 654, 655, 0, 645, 660, 661, - 636, 679, 593, 594, 554, 557, 558, 559, 565, 607, - 608, 619, 622, 650, 649, 648, 651, 656, 675, 674, - 676, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 618, 113, 124, 189, 680, 247, 163, 307, - 550, 155, 0, 0, 609, 611, 621, 638, 115, 116, - 125, 134, 141, 154, 159, 162, 168, 172, 175, 177, - 178, 179, 183, 197, 200, 201, 202, 203, 217, 218, - 220, 221, 224, 225, 228, 230, 231, 232, 234, 235, - 236, 241, 244, 246, 248, 251, 256, 258, 259, 260, - 262, 263, 264, 268, 269, 270, 271, 279, 283, 293, - 294, 304, 313, 315, 657, 664, 644, 287, 602, 667, - 574, 591, 678, 592, 595, 633, 560, 614, 223, 589, - 561, 0, 578, 551, 585, 552, 575, 604, 157, 573, - 646, 617, 666, 187, 629, 0, 148, 195, 193, 0, - 0, 0, 229, 285, 665, 610, 0, 673, 190, 0, - 626, 308, 276, 208, 0, 0, 606, 653, 612, 642, - 601, 635, 567, 625, 668, 590, 631, 669, 0, 0, - 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, - 138, 0, 628, 663, 587, 630, 632, 549, 627, 0, - 555, 562, 677, 659, 581, 582, 583, 0, 0, 0, - 0, 0, 0, 0, 605, 613, 639, 598, 0, 0, - 0, 0, 0, 0, 0, 0, 579, 0, 623, 0, - 0, 0, 563, 556, 0, 0, 603, 0, 0, 0, - 566, 117, 580, 640, 0, 547, 167, 209, 128, 643, - 658, 600, 180, 314, 662, 597, 596, 243, 0, 281, - 170, 188, 132, 114, 126, 142, 169, 219, 252, 261, - 588, 548, 647, 576, 586, 149, 584, 254, 227, 303, - 0, 620, 233, 253, 191, 292, 245, 301, 302, 171, - 286, 311, 316, 273, 158, 0, 118, 0, 240, 153, - 184, 599, 634, 577, 146, 637, 624, 652, 272, 133, - 288, 207, 213, 143, 145, 144, 127, 267, 290, 137, - 147, 277, 257, 282, 152, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 119, 284, 300, 139, 265, 121, - 298, 280, 205, 181, 182, 120, 0, 250, 156, 166, - 151, 222, 0, 165, 242, 295, 296, 150, 318, 129, - 310, 123, 130, 309, 216, 0, 215, 312, 291, 299, - 206, 199, 0, 122, 297, 204, 198, 186, 161, 173, - 238, 194, 239, 174, 211, 210, 212, 0, 553, 0, - 278, 306, 319, 196, 135, 572, 266, 289, 0, 0, - 136, 164, 160, 237, 214, 131, 176, 275, 185, 192, - 249, 317, 226, 255, 140, 305, 274, 570, 571, 568, - 0, 569, 615, 616, 670, 671, 672, 641, 564, 0, - 654, 655, 0, 645, 660, 661, 636, 679, 593, 594, - 554, 557, 558, 559, 565, 607, 608, 619, 622, 650, - 649, 648, 651, 656, 675, 674, 676, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 618, 113, - 124, 189, 680, 247, 163, 307, 550, 155, 0, 0, - 609, 611, 621, 638, 115, 116, 125, 134, 141, 154, - 159, 162, 168, 172, 175, 177, 178, 179, 183, 197, - 200, 201, 202, 203, 217, 218, 220, 221, 224, 225, - 228, 230, 231, 232, 234, 235, 236, 241, 244, 246, - 248, 251, 256, 258, 259, 260, 262, 263, 264, 268, - 269, 270, 271, 279, 283, 293, 294, 304, 313, 315, - 657, 664, 644, 287, 602, 667, 574, 591, 678, 592, - 595, 633, 560, 614, 223, 589, 561, 0, 578, 551, - 585, 552, 575, 604, 157, 573, 646, 617, 666, 187, - 629, 0, 148, 195, 193, 0, 0, 0, 229, 285, - 665, 610, 0, 673, 190, 0, 626, 308, 276, 208, - 0, 0, 606, 653, 612, 642, 601, 635, 567, 625, - 668, 590, 631, 669, 0, 0, 0, 545, 0, 0, - 0, 0, 0, 0, 0, 0, 138, 0, 628, 663, - 587, 630, 632, 549, 627, 0, 555, 562, 677, 659, - 581, 582, 583, 0, 0, 0, 0, 0, 0, 0, - 605, 613, 639, 598, 0, 0, 0, 0, 0, 0, - 0, 0, 579, 0, 623, 0, 0, 0, 563, 556, - 0, 0, 603, 0, 0, 0, 566, 117, 580, 640, - 0, 547, 167, 209, 128, 643, 658, 600, 180, 314, - 662, 597, 596, 243, 0, 281, 170, 188, 544, 114, - 126, 540, 169, 219, 252, 261, 588, 548, 647, 576, - 586, 149, 584, 254, 227, 303, 0, 620, 233, 253, - 191, 292, 245, 301, 302, 171, 286, 311, 316, 273, - 158, 0, 118, 0, 240, 153, 184, 599, 634, 577, - 146, 637, 624, 652, 272, 133, 288, 207, 213, 143, - 145, 144, 127, 267, 290, 137, 147, 277, 257, 282, - 152, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 119, 284, 300, 139, 265, 121, 298, 280, 205, 181, - 182, 120, 0, 250, 156, 166, 151, 222, 0, 165, - 242, 295, 296, 150, 318, 129, 310, 123, 130, 309, - 216, 0, 215, 312, 291, 299, 206, 199, 0, 122, - 297, 204, 198, 186, 161, 173, 238, 194, 239, 174, - 211, 210, 212, 0, 553, 0, 278, 306, 319, 196, - 135, 572, 266, 289, 0, 0, 136, 164, 160, 237, - 214, 131, 176, 275, 185, 192, 249, 317, 226, 255, - 140, 305, 274, 570, 571, 568, 0, 569, 615, 616, - 670, 671, 672, 641, 564, 0, 654, 655, 0, 645, - 660, 661, 636, 679, 593, 594, 554, 557, 558, 559, - 565, 607, 608, 619, 622, 650, 649, 648, 651, 656, - 675, 674, 676, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 618, 113, 124, 189, 680, 247, - 163, 307, 550, 155, 0, 0, 609, 611, 621, 638, - 115, 116, 125, 134, 141, 154, 159, 162, 168, 172, - 175, 177, 178, 179, 183, 197, 200, 201, 202, 203, - 217, 218, 220, 221, 224, 225, 228, 230, 231, 232, - 234, 235, 236, 241, 244, 246, 248, 251, 256, 258, - 259, 260, 262, 263, 264, 268, 269, 270, 271, 279, - 283, 293, 294, 304, 313, 315, 657, 287, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 223, 0, - 0, 0, 0, 0, 426, 0, 0, 0, 157, 423, - 0, 0, 0, 187, 0, 0, 148, 195, 193, 0, - 0, 0, 229, 285, 0, 0, 0, 470, 190, 0, - 0, 308, 276, 208, 0, 0, 0, 0, 459, 460, - 0, 0, 0, 0, 0, 0, 1288, 0, 71, 0, - 0, 424, 447, 446, 449, 450, 451, 452, 0, 0, - 138, 448, 453, 454, 455, 1289, 0, 0, 421, 438, - 0, 469, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 435, 436, 0, 0, 0, 0, 484, 0, - 437, 0, 0, 432, 433, 434, 439, 0, 0, 0, - 0, 117, 0, 0, 0, 0, 167, 209, 128, 461, - 0, 0, 180, 314, 0, 0, 482, 243, 0, 281, - 170, 188, 132, 114, 126, 142, 169, 219, 252, 261, - 467, 0, 0, 0, 0, 149, 0, 254, 227, 303, - 0, 0, 233, 253, 191, 292, 245, 301, 302, 171, - 286, 311, 316, 273, 158, 0, 118, 0, 240, 153, - 184, 0, 0, 0, 146, 0, 0, 0, 272, 133, - 288, 207, 213, 143, 145, 144, 127, 267, 290, 137, - 147, 277, 257, 282, 152, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 119, 284, 300, 139, 265, 121, - 298, 280, 205, 181, 182, 120, 0, 250, 156, 166, - 151, 222, 0, 165, 242, 295, 296, 150, 318, 129, - 310, 123, 130, 309, 216, 0, 215, 312, 291, 299, - 206, 199, 0, 122, 297, 204, 198, 186, 161, 173, - 238, 194, 239, 174, 211, 210, 212, 0, 0, 0, - 278, 306, 319, 196, 135, 0, 266, 289, 0, 0, - 136, 164, 160, 237, 214, 131, 176, 275, 185, 192, - 249, 317, 226, 255, 140, 305, 274, 471, 483, 477, - 479, 478, 475, 476, 474, 473, 472, 485, 462, 463, - 464, 465, 468, 0, 480, 481, 0, 0, 0, 0, - 498, 499, 500, 501, 502, 503, 504, 497, 505, 506, - 507, 508, 509, 510, 511, 512, 513, 486, 487, 488, - 489, 490, 491, 492, 493, 496, 494, 495, 466, 113, - 124, 189, 0, 247, 163, 307, 0, 155, 0, 0, - 0, 0, 0, 0, 115, 116, 125, 134, 141, 154, - 159, 162, 168, 172, 175, 177, 178, 179, 183, 197, - 200, 201, 202, 203, 217, 218, 220, 221, 224, 225, - 228, 230, 231, 232, 234, 235, 236, 241, 244, 246, - 248, 251, 256, 258, 259, 260, 262, 263, 264, 268, - 269, 270, 271, 279, 283, 293, 294, 304, 313, 315, - 30, 287, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 223, 0, 0, 0, 0, 0, 426, 0, - 0, 0, 157, 423, 0, 0, 0, 187, 0, 0, - 148, 195, 193, 0, 0, 0, 229, 285, 0, 0, - 0, 470, 190, 0, 0, 308, 276, 208, 0, 0, - 0, 0, 459, 460, 0, 0, 0, 0, 0, 0, - 0, 0, 71, 0, 0, 424, 447, 446, 449, 450, - 451, 452, 0, 0, 138, 448, 453, 454, 455, 0, - 0, 0, 421, 438, 0, 469, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 435, 436, 0, 0, - 0, 0, 484, 0, 437, 0, 0, 432, 433, 434, - 439, 0, 0, 0, 0, 117, 0, 0, 0, 0, - 167, 209, 128, 461, 0, 0, 180, 314, 0, 0, - 482, 243, 0, 281, 170, 188, 132, 114, 126, 142, - 169, 219, 252, 261, 467, 0, 0, 0, 0, 149, - 0, 254, 227, 303, 0, 0, 233, 253, 191, 292, - 245, 301, 302, 171, 286, 311, 316, 273, 158, 0, - 118, 0, 240, 153, 184, 0, 0, 0, 146, 0, - 0, 0, 272, 133, 288, 207, 213, 143, 145, 144, - 127, 267, 290, 137, 147, 277, 257, 282, 152, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 119, 284, - 300, 139, 265, 121, 298, 280, 205, 181, 182, 120, - 0, 250, 156, 166, 151, 222, 0, 165, 242, 295, - 296, 150, 318, 129, 310, 123, 130, 309, 216, 0, - 215, 312, 291, 299, 206, 199, 0, 122, 297, 204, - 198, 186, 161, 173, 238, 194, 239, 174, 211, 210, - 212, 0, 0, 0, 278, 306, 319, 196, 135, 0, - 266, 289, 0, 0, 136, 164, 160, 237, 214, 131, - 176, 275, 185, 192, 249, 317, 226, 255, 140, 305, - 274, 471, 483, 477, 479, 478, 475, 476, 474, 473, - 472, 485, 462, 463, 464, 465, 468, 0, 480, 481, - 0, 0, 0, 0, 498, 499, 500, 501, 502, 503, - 504, 497, 505, 506, 507, 508, 509, 510, 511, 512, - 513, 486, 487, 488, 489, 490, 491, 492, 493, 496, - 494, 495, 466, 113, 124, 189, 70, 247, 163, 307, - 0, 155, 0, 0, 0, 0, 0, 0, 115, 116, - 125, 134, 141, 154, 159, 162, 168, 172, 175, 177, - 178, 179, 183, 197, 200, 201, 202, 203, 217, 218, - 220, 221, 224, 225, 228, 230, 231, 232, 234, 235, - 236, 241, 244, 246, 248, 251, 256, 258, 259, 260, - 262, 263, 264, 268, 269, 270, 271, 279, 283, 293, - 294, 304, 313, 315, 287, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 223, 0, 0, 0, 0, - 0, 426, 0, 0, 0, 157, 423, 0, 0, 0, - 187, 0, 0, 148, 195, 193, 0, 0, 0, 229, - 285, 0, 0, 0, 470, 190, 0, 0, 308, 276, - 208, 0, 0, 0, 0, 459, 460, 0, 0, 0, - 0, 0, 0, 0, 0, 71, 0, 0, 424, 447, - 446, 449, 450, 451, 452, 0, 0, 138, 448, 453, - 454, 455, 0, 0, 0, 421, 438, 0, 469, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 435, - 436, 417, 0, 0, 0, 484, 0, 437, 0, 0, - 432, 433, 434, 439, 0, 0, 0, 0, 117, 0, - 0, 0, 0, 167, 209, 128, 461, 0, 0, 180, - 314, 0, 0, 482, 243, 0, 281, 170, 188, 132, - 114, 126, 142, 169, 219, 252, 261, 467, 0, 0, - 0, 0, 149, 0, 254, 227, 303, 0, 0, 233, - 253, 191, 292, 245, 301, 302, 171, 286, 311, 316, - 273, 158, 0, 118, 0, 240, 153, 184, 0, 0, - 0, 146, 0, 0, 0, 272, 133, 288, 207, 213, - 143, 145, 144, 127, 267, 290, 137, 147, 277, 257, - 282, 152, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 119, 284, 300, 139, 265, 121, 298, 280, 205, - 181, 182, 120, 0, 250, 156, 166, 151, 222, 0, - 165, 242, 295, 296, 150, 318, 129, 310, 123, 130, - 309, 216, 0, 215, 312, 291, 299, 206, 199, 0, - 122, 297, 204, 198, 186, 161, 173, 238, 194, 239, - 174, 211, 210, 212, 0, 0, 0, 278, 306, 319, - 196, 135, 0, 266, 289, 0, 0, 136, 164, 160, - 237, 214, 131, 176, 275, 185, 192, 249, 317, 226, - 255, 140, 305, 274, 471, 483, 477, 479, 478, 475, - 476, 474, 473, 472, 485, 462, 463, 464, 465, 468, - 0, 480, 481, 0, 0, 0, 0, 498, 499, 500, - 501, 502, 503, 504, 497, 505, 506, 507, 508, 509, - 510, 511, 512, 513, 486, 487, 488, 489, 490, 491, - 492, 493, 496, 494, 495, 466, 113, 124, 189, 0, - 247, 163, 307, 0, 155, 0, 0, 0, 0, 0, - 0, 115, 116, 125, 134, 141, 154, 159, 162, 168, - 172, 175, 177, 178, 179, 183, 197, 200, 201, 202, - 203, 217, 218, 220, 221, 224, 225, 228, 230, 231, - 232, 234, 235, 236, 241, 244, 246, 248, 251, 256, - 258, 259, 260, 262, 263, 264, 268, 269, 270, 271, - 279, 283, 293, 294, 304, 313, 315, 287, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 223, 0, - 0, 0, 0, 0, 426, 0, 0, 0, 157, 423, - 0, 0, 0, 187, 0, 0, 148, 195, 193, 0, - 0, 0, 229, 285, 0, 0, 0, 470, 190, 0, - 0, 308, 276, 208, 0, 0, 0, 0, 459, 460, - 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, - 776, 424, 447, 446, 449, 450, 451, 452, 0, 0, - 138, 448, 453, 454, 455, 0, 0, 0, 421, 438, - 0, 469, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 435, 436, 0, 0, 0, 0, 484, 0, - 437, 0, 0, 432, 433, 434, 439, 0, 0, 0, - 0, 117, 0, 0, 0, 0, 167, 209, 128, 461, - 0, 0, 180, 314, 0, 0, 482, 243, 0, 281, - 170, 188, 132, 114, 126, 142, 169, 219, 252, 261, - 467, 0, 0, 0, 0, 149, 0, 254, 227, 303, - 0, 0, 233, 253, 191, 292, 245, 301, 302, 171, - 286, 311, 316, 273, 158, 0, 118, 0, 240, 153, - 184, 0, 0, 0, 146, 0, 0, 0, 272, 133, - 288, 207, 213, 143, 145, 144, 127, 267, 290, 137, - 147, 277, 257, 282, 152, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 119, 284, 300, 139, 265, 121, - 298, 280, 205, 181, 182, 120, 0, 250, 156, 166, - 151, 222, 0, 165, 242, 295, 296, 150, 318, 129, - 310, 123, 130, 309, 216, 0, 215, 312, 291, 299, - 206, 199, 0, 122, 297, 204, 198, 186, 161, 173, - 238, 194, 239, 174, 211, 210, 212, 0, 0, 0, - 278, 306, 319, 196, 135, 0, 266, 289, 0, 0, - 136, 164, 160, 237, 214, 131, 176, 275, 185, 192, - 249, 317, 226, 255, 140, 305, 274, 471, 483, 477, - 479, 478, 475, 476, 474, 473, 472, 485, 462, 463, - 464, 465, 468, 0, 480, 481, 0, 0, 0, 0, - 498, 499, 500, 501, 502, 503, 504, 497, 505, 506, - 507, 508, 509, 510, 511, 512, 513, 486, 487, 488, - 489, 490, 491, 492, 493, 496, 494, 495, 466, 113, - 124, 189, 0, 247, 163, 307, 0, 155, 0, 0, - 0, 0, 0, 0, 115, 116, 125, 134, 141, 154, - 159, 162, 168, 172, 175, 177, 178, 179, 183, 197, - 200, 201, 202, 203, 217, 218, 220, 221, 224, 225, - 228, 230, 231, 232, 234, 235, 236, 241, 244, 246, - 248, 251, 256, 258, 259, 260, 262, 263, 264, 268, - 269, 270, 271, 279, 283, 293, 294, 304, 313, 315, - 287, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 223, 0, 0, 0, 0, 0, 426, 0, 0, - 0, 157, 423, 0, 0, 0, 187, 0, 0, 148, - 195, 193, 0, 0, 0, 229, 285, 0, 0, 0, - 470, 190, 0, 0, 308, 276, 208, 0, 0, 0, - 0, 459, 460, 0, 0, 0, 0, 0, 0, 0, - 0, 71, 0, 0, 424, 447, 446, 449, 450, 451, - 452, 0, 0, 138, 448, 453, 454, 455, 0, 0, - 0, 421, 438, 0, 469, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 435, 436, 1187, 0, 0, - 0, 484, 0, 437, 0, 0, 432, 433, 434, 439, - 0, 0, 0, 0, 117, 0, 0, 0, 0, 167, - 209, 128, 461, 0, 0, 180, 314, 0, 0, 482, - 243, 0, 281, 170, 188, 132, 114, 126, 142, 169, - 219, 252, 261, 467, 0, 0, 0, 0, 149, 0, - 254, 227, 303, 0, 0, 233, 253, 191, 292, 245, - 301, 302, 171, 286, 311, 316, 273, 158, 0, 118, - 0, 240, 153, 184, 0, 0, 0, 146, 0, 0, - 0, 272, 133, 288, 207, 213, 143, 145, 144, 127, - 267, 290, 137, 147, 277, 257, 282, 152, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 119, 284, 300, - 139, 265, 121, 298, 280, 205, 181, 182, 120, 0, - 250, 156, 166, 151, 222, 0, 165, 242, 295, 296, - 150, 318, 129, 310, 123, 130, 309, 216, 0, 215, - 312, 291, 299, 206, 199, 0, 122, 297, 204, 198, - 186, 161, 173, 238, 194, 239, 174, 211, 210, 212, - 0, 0, 0, 278, 306, 319, 196, 135, 0, 266, - 289, 0, 0, 136, 164, 160, 237, 214, 131, 176, - 275, 185, 192, 249, 317, 226, 255, 140, 305, 274, - 471, 483, 477, 479, 478, 475, 476, 474, 473, 472, - 485, 462, 463, 464, 465, 468, 0, 480, 481, 0, - 0, 0, 0, 498, 499, 500, 501, 502, 503, 504, - 497, 505, 506, 507, 508, 509, 510, 511, 512, 513, - 486, 487, 488, 489, 490, 491, 492, 493, 496, 494, - 495, 466, 113, 124, 189, 0, 247, 163, 307, 0, - 155, 0, 0, 0, 0, 0, 0, 115, 116, 125, - 134, 141, 154, 159, 162, 168, 172, 175, 177, 178, - 179, 183, 197, 200, 201, 202, 203, 217, 218, 220, - 221, 224, 225, 228, 230, 231, 232, 234, 235, 236, - 241, 244, 246, 248, 251, 256, 258, 259, 260, 262, - 263, 264, 268, 269, 270, 271, 279, 283, 293, 294, - 304, 313, 315, 287, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 223, 0, 0, 0, 0, 0, - 426, 0, 0, 0, 157, 423, 0, 0, 0, 187, - 0, 0, 148, 195, 193, 0, 0, 0, 229, 285, - 0, 0, 0, 470, 190, 0, 0, 308, 276, 208, - 0, 0, 0, 0, 459, 460, 0, 0, 0, 0, - 0, 0, 0, 0, 71, 0, 0, 424, 447, 1198, - 449, 450, 451, 452, 0, 0, 138, 448, 453, 454, - 455, 0, 0, 0, 421, 438, 0, 469, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 435, 436, - 1187, 0, 0, 0, 484, 0, 437, 0, 0, 432, - 433, 434, 439, 0, 0, 0, 0, 117, 0, 0, - 0, 0, 167, 209, 128, 461, 0, 0, 180, 314, - 0, 0, 482, 243, 0, 281, 170, 188, 132, 114, - 126, 142, 169, 219, 252, 261, 467, 0, 0, 0, - 0, 149, 0, 254, 227, 303, 0, 0, 233, 253, - 191, 292, 245, 301, 302, 171, 286, 311, 316, 273, - 158, 0, 118, 0, 240, 153, 184, 0, 0, 0, - 146, 0, 0, 0, 272, 133, 288, 207, 213, 143, - 145, 144, 127, 267, 290, 137, 147, 277, 257, 282, - 152, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 119, 284, 300, 139, 265, 121, 298, 280, 205, 181, - 182, 120, 0, 250, 156, 166, 151, 222, 0, 165, - 242, 295, 296, 150, 318, 129, 310, 123, 130, 309, - 216, 0, 215, 312, 291, 299, 206, 199, 0, 122, - 297, 204, 198, 186, 161, 173, 238, 194, 239, 174, - 211, 210, 212, 0, 0, 0, 278, 306, 319, 196, - 135, 0, 266, 289, 0, 0, 136, 164, 160, 237, - 214, 131, 176, 275, 185, 192, 249, 317, 226, 255, - 140, 305, 274, 471, 483, 477, 479, 478, 475, 476, - 474, 473, 472, 485, 462, 463, 464, 465, 468, 0, - 480, 481, 0, 0, 0, 0, 498, 499, 500, 501, - 502, 503, 504, 497, 505, 506, 507, 508, 509, 510, - 511, 512, 513, 486, 487, 488, 489, 490, 491, 492, - 493, 496, 494, 495, 466, 113, 124, 189, 0, 247, - 163, 307, 0, 155, 0, 0, 0, 0, 0, 0, - 115, 116, 125, 134, 141, 154, 159, 162, 168, 172, - 175, 177, 178, 179, 183, 197, 200, 201, 202, 203, - 217, 218, 220, 221, 224, 225, 228, 230, 231, 232, - 234, 235, 236, 241, 244, 246, 248, 251, 256, 258, - 259, 260, 262, 263, 264, 268, 269, 270, 271, 279, - 283, 293, 294, 304, 313, 315, 287, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 223, 0, 0, - 0, 0, 0, 426, 0, 0, 0, 157, 423, 0, - 0, 0, 187, 0, 0, 148, 195, 193, 0, 0, - 0, 229, 285, 0, 0, 0, 470, 190, 0, 0, - 308, 276, 208, 0, 0, 0, 0, 459, 460, 0, - 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, - 424, 447, 1195, 449, 450, 451, 452, 0, 0, 138, - 448, 453, 454, 455, 0, 0, 0, 421, 438, 0, - 469, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 435, 436, 1187, 0, 0, 0, 484, 0, 437, - 0, 0, 432, 433, 434, 439, 0, 0, 0, 0, - 117, 0, 0, 0, 0, 167, 209, 128, 461, 0, - 0, 180, 314, 0, 0, 482, 243, 0, 281, 170, - 188, 132, 114, 126, 142, 169, 219, 252, 261, 467, - 0, 0, 0, 0, 149, 0, 254, 227, 303, 0, - 0, 233, 253, 191, 292, 245, 301, 302, 171, 286, - 311, 316, 273, 158, 0, 118, 0, 240, 153, 184, - 0, 0, 0, 146, 0, 0, 0, 272, 133, 288, - 207, 213, 143, 145, 144, 127, 267, 290, 137, 147, - 277, 257, 282, 152, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 119, 284, 300, 139, 265, 121, 298, - 280, 205, 181, 182, 120, 0, 250, 156, 166, 151, - 222, 0, 165, 242, 295, 296, 150, 318, 129, 310, - 123, 130, 309, 216, 0, 215, 312, 291, 299, 206, - 199, 0, 122, 297, 204, 198, 186, 161, 173, 238, - 194, 239, 174, 211, 210, 212, 0, 0, 0, 278, - 306, 319, 196, 135, 0, 266, 289, 0, 0, 136, - 164, 160, 237, 214, 131, 176, 275, 185, 192, 249, - 317, 226, 255, 140, 305, 274, 471, 483, 477, 479, - 478, 475, 476, 474, 473, 472, 485, 462, 463, 464, - 465, 468, 0, 480, 481, 0, 0, 0, 0, 498, - 499, 500, 501, 502, 503, 504, 497, 505, 506, 507, - 508, 509, 510, 511, 512, 513, 486, 487, 488, 489, - 490, 491, 492, 493, 496, 494, 495, 466, 113, 124, - 189, 0, 247, 163, 307, 0, 155, 0, 0, 0, - 0, 0, 0, 115, 116, 125, 134, 141, 154, 159, - 162, 168, 172, 175, 177, 178, 179, 183, 197, 200, - 201, 202, 203, 217, 218, 220, 221, 224, 225, 228, - 230, 231, 232, 234, 235, 236, 241, 244, 246, 248, - 251, 256, 258, 259, 260, 262, 263, 264, 268, 269, - 270, 271, 279, 283, 293, 294, 304, 313, 315, 287, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 223, 0, 0, 0, 0, 0, 426, 0, 0, 0, - 157, 423, 0, 0, 0, 187, 0, 0, 148, 195, - 193, 0, 0, 0, 229, 285, 0, 0, 0, 470, - 190, 0, 0, 308, 276, 208, 0, 0, 0, 0, - 459, 460, 0, 0, 0, 0, 0, 0, 0, 0, - 71, 0, 1105, 424, 447, 446, 449, 450, 451, 452, - 0, 0, 138, 448, 453, 454, 455, 0, 0, 0, - 421, 438, 0, 469, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 435, 436, 0, 0, 0, 0, - 484, 0, 437, 0, 0, 432, 433, 434, 439, 0, - 0, 0, 0, 117, 0, 0, 0, 0, 167, 209, - 128, 461, 0, 0, 180, 314, 0, 0, 482, 243, - 0, 281, 170, 188, 132, 114, 126, 142, 169, 219, - 252, 261, 467, 0, 0, 0, 0, 149, 0, 254, - 227, 303, 0, 0, 233, 253, 191, 292, 245, 301, - 302, 171, 286, 311, 316, 273, 158, 0, 118, 0, - 240, 153, 184, 0, 0, 0, 146, 0, 0, 0, - 272, 133, 288, 207, 213, 143, 145, 144, 127, 267, - 290, 137, 147, 277, 257, 282, 152, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 119, 284, 300, 139, - 265, 121, 298, 280, 205, 181, 182, 120, 0, 250, - 156, 166, 151, 222, 0, 165, 242, 295, 296, 150, - 318, 129, 310, 123, 130, 309, 216, 0, 215, 312, - 291, 299, 206, 199, 0, 122, 297, 204, 198, 186, - 161, 173, 238, 194, 239, 174, 211, 210, 212, 0, - 0, 0, 278, 306, 319, 196, 135, 0, 266, 289, - 0, 0, 136, 164, 160, 237, 214, 131, 176, 275, - 185, 192, 249, 317, 226, 255, 140, 305, 274, 471, - 483, 477, 479, 478, 475, 476, 474, 473, 472, 485, - 462, 463, 464, 465, 468, 0, 480, 481, 0, 0, - 0, 0, 498, 499, 500, 501, 502, 503, 504, 497, - 505, 506, 507, 508, 509, 510, 511, 512, 513, 486, - 487, 488, 489, 490, 491, 492, 493, 496, 494, 495, - 466, 113, 124, 189, 0, 247, 163, 307, 0, 155, - 0, 0, 0, 0, 0, 0, 115, 116, 125, 134, - 141, 154, 159, 162, 168, 172, 175, 177, 178, 179, - 183, 197, 200, 201, 202, 203, 217, 218, 220, 221, - 224, 225, 228, 230, 231, 232, 234, 235, 236, 241, - 244, 246, 248, 251, 256, 258, 259, 260, 262, 263, - 264, 268, 269, 270, 271, 279, 283, 293, 294, 304, - 313, 315, 287, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 223, 0, 0, 0, 0, 0, 426, - 0, 0, 0, 157, 423, 0, 0, 0, 187, 0, - 0, 148, 195, 193, 0, 0, 0, 229, 285, 0, - 0, 0, 470, 190, 0, 0, 308, 276, 208, 0, - 0, 0, 0, 459, 460, 0, 0, 0, 0, 0, - 0, 0, 0, 71, 0, 0, 424, 447, 446, 449, - 450, 451, 452, 0, 0, 138, 448, 453, 454, 455, - 0, 0, 0, 421, 438, 0, 469, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 435, 436, 0, - 0, 0, 0, 484, 0, 437, 0, 0, 432, 433, - 434, 439, 0, 0, 0, 0, 117, 0, 0, 0, - 0, 167, 209, 128, 461, 0, 0, 180, 314, 0, - 0, 482, 243, 0, 281, 170, 188, 132, 114, 126, - 142, 169, 219, 252, 261, 467, 0, 0, 0, 0, - 149, 0, 254, 227, 303, 0, 0, 233, 253, 191, - 292, 245, 301, 302, 171, 286, 311, 316, 273, 158, - 0, 118, 0, 240, 153, 184, 0, 0, 0, 146, - 0, 0, 0, 272, 133, 288, 207, 213, 143, 145, - 144, 127, 267, 290, 137, 147, 277, 257, 282, 152, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, - 284, 300, 139, 265, 121, 298, 280, 205, 181, 182, - 120, 0, 250, 156, 166, 151, 222, 0, 165, 242, - 295, 296, 150, 318, 129, 310, 123, 130, 309, 216, - 0, 215, 312, 291, 299, 206, 199, 0, 122, 297, - 204, 198, 186, 161, 173, 238, 194, 239, 174, 211, - 210, 212, 0, 0, 0, 278, 306, 319, 196, 135, - 0, 266, 289, 0, 0, 136, 164, 160, 237, 214, - 131, 176, 275, 185, 192, 249, 317, 226, 255, 140, - 305, 274, 471, 483, 477, 479, 478, 475, 476, 474, - 473, 472, 485, 462, 463, 464, 465, 468, 0, 480, - 481, 0, 0, 0, 0, 498, 499, 500, 501, 502, - 503, 504, 497, 505, 506, 507, 508, 509, 510, 511, - 512, 513, 486, 487, 488, 489, 490, 491, 492, 493, - 496, 494, 495, 466, 113, 124, 189, 0, 247, 163, - 307, 0, 155, 0, 0, 0, 0, 0, 0, 115, - 116, 125, 134, 141, 154, 159, 162, 168, 172, 175, - 177, 178, 179, 183, 197, 200, 201, 202, 203, 217, - 218, 220, 221, 224, 225, 228, 230, 231, 232, 234, - 235, 236, 241, 244, 246, 248, 251, 256, 258, 259, - 260, 262, 263, 264, 268, 269, 270, 271, 279, 283, - 293, 294, 304, 313, 315, 287, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 223, 0, 0, 0, - 0, 0, 426, 0, 0, 0, 157, 423, 0, 0, - 0, 187, 0, 0, 148, 195, 193, 0, 0, 0, - 229, 285, 0, 0, 0, 470, 190, 0, 0, 308, - 276, 208, 0, 0, 0, 0, 459, 460, 0, 0, - 0, 0, 0, 0, 0, 0, 71, 0, 0, 424, - 447, 446, 449, 450, 451, 452, 0, 0, 138, 448, - 453, 454, 455, 0, 0, 0, 421, 438, 0, 469, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 435, 436, 0, 0, 0, 0, 484, 0, 437, 0, - 0, 432, 433, 434, 439, 0, 0, 0, 0, 117, - 0, 0, 0, 0, 167, 209, 128, 461, 0, 0, - 180, 314, 0, 0, 482, 243, 0, 281, 170, 188, - 132, 114, 126, 142, 169, 219, 252, 261, 467, 0, - 0, 0, 0, 149, 0, 254, 227, 303, 0, 0, - 233, 253, 191, 292, 245, 301, 302, 171, 286, 311, - 316, 273, 158, 0, 118, 0, 240, 153, 184, 0, - 0, 0, 146, 0, 0, 0, 272, 133, 288, 207, - 213, 143, 145, 144, 127, 267, 290, 137, 147, 277, - 257, 282, 152, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 119, 284, 300, 139, 265, 121, 298, 280, - 205, 181, 182, 120, 0, 250, 156, 166, 151, 222, - 0, 165, 242, 295, 296, 150, 318, 129, 310, 123, - 130, 309, 216, 0, 215, 312, 291, 299, 206, 199, - 0, 122, 297, 204, 198, 186, 161, 173, 238, 194, - 239, 174, 211, 210, 212, 0, 0, 0, 278, 306, - 319, 196, 135, 0, 266, 289, 0, 0, 136, 164, - 160, 237, 214, 131, 176, 275, 185, 192, 249, 317, - 226, 255, 140, 305, 274, 471, 483, 477, 479, 478, - 475, 476, 474, 473, 472, 485, 462, 463, 464, 465, - 468, 0, 480, 481, 0, 0, 0, 0, 791, 792, - 793, 794, 795, 799, 800, 804, 805, 813, 812, 811, - 814, 815, 817, 816, 818, 796, 797, 798, 801, 802, - 803, 806, 807, 810, 808, 809, 466, 113, 124, 189, - 0, 247, 163, 307, 0, 155, 0, 0, 0, 0, - 0, 0, 115, 116, 125, 134, 141, 154, 159, 162, - 168, 172, 175, 177, 178, 179, 183, 197, 200, 201, - 202, 203, 217, 218, 220, 221, 224, 225, 228, 230, - 231, 232, 234, 235, 236, 241, 244, 246, 248, 251, - 256, 258, 259, 260, 262, 263, 264, 268, 269, 270, - 271, 279, 283, 293, 294, 304, 313, 315, 287, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 223, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 157, - 0, 0, 0, 0, 187, 0, 0, 148, 195, 193, - 0, 0, 0, 229, 285, 0, 0, 0, 470, 190, - 0, 0, 308, 276, 208, 0, 0, 0, 0, 459, - 460, 0, 0, 0, 0, 0, 0, 0, 0, 71, - 0, 0, 424, 447, 446, 449, 450, 451, 452, 0, - 0, 138, 448, 453, 454, 455, 0, 0, 0, 0, - 438, 0, 469, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 435, 436, 0, 0, 0, 0, 484, - 0, 437, 0, 0, 432, 433, 434, 439, 0, 0, - 0, 0, 117, 0, 0, 0, 0, 167, 209, 128, - 461, 0, 0, 180, 314, 0, 0, 482, 243, 0, - 281, 170, 188, 132, 114, 126, 142, 169, 219, 252, - 261, 467, 0, 0, 0, 0, 149, 0, 254, 227, - 303, 0, 2253, 233, 253, 191, 292, 245, 301, 302, - 171, 286, 311, 316, 273, 158, 0, 118, 0, 240, - 153, 184, 0, 0, 0, 146, 0, 0, 0, 272, - 133, 288, 207, 213, 143, 145, 144, 127, 267, 290, - 137, 147, 277, 257, 282, 152, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 119, 284, 300, 139, 265, - 121, 298, 280, 205, 181, 182, 120, 0, 250, 156, - 166, 151, 222, 0, 165, 242, 295, 296, 150, 318, - 129, 310, 123, 130, 309, 216, 0, 215, 312, 291, - 299, 206, 199, 0, 122, 297, 204, 198, 186, 161, - 173, 238, 194, 239, 174, 211, 210, 212, 0, 0, - 0, 278, 306, 319, 196, 135, 0, 266, 289, 0, - 0, 136, 164, 160, 237, 214, 131, 176, 275, 185, - 192, 249, 317, 226, 255, 140, 305, 274, 471, 483, - 477, 479, 478, 475, 476, 474, 473, 472, 485, 462, - 463, 464, 465, 468, 0, 480, 481, 0, 0, 0, - 0, 498, 499, 500, 501, 502, 503, 504, 497, 505, - 506, 507, 508, 509, 510, 511, 512, 513, 486, 487, - 488, 489, 490, 491, 492, 493, 496, 494, 495, 466, - 113, 124, 189, 0, 247, 163, 307, 0, 155, 0, - 0, 0, 0, 0, 0, 115, 116, 125, 134, 141, - 154, 159, 162, 168, 172, 175, 177, 178, 179, 183, - 197, 200, 201, 202, 203, 217, 218, 220, 221, 224, - 225, 228, 230, 231, 232, 234, 235, 236, 241, 244, - 246, 248, 251, 256, 258, 259, 260, 262, 263, 264, - 268, 269, 270, 271, 279, 283, 293, 294, 304, 313, - 315, 287, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 223, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 157, 0, 0, 0, 0, 187, 0, 0, - 148, 195, 193, 0, 0, 0, 229, 285, 0, 0, - 0, 470, 190, 0, 0, 308, 276, 208, 0, 0, - 0, 0, 459, 460, 0, 0, 0, 0, 0, 0, - 0, 0, 71, 0, 776, 424, 447, 446, 449, 450, - 451, 452, 0, 0, 138, 448, 453, 454, 455, 0, - 0, 0, 0, 438, 0, 469, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 435, 436, 0, 0, - 0, 0, 484, 0, 437, 0, 0, 432, 433, 434, - 439, 0, 0, 0, 0, 117, 0, 0, 0, 0, - 167, 209, 128, 461, 0, 0, 180, 314, 0, 0, - 482, 243, 0, 281, 170, 188, 132, 114, 126, 142, - 169, 219, 252, 261, 467, 0, 0, 0, 0, 149, - 0, 254, 227, 303, 0, 0, 233, 253, 191, 292, - 245, 301, 302, 171, 286, 311, 316, 273, 158, 0, - 118, 0, 240, 153, 184, 0, 0, 0, 146, 0, - 0, 0, 272, 133, 288, 207, 213, 143, 145, 144, - 127, 267, 290, 137, 147, 277, 257, 282, 152, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 119, 284, - 300, 139, 265, 121, 298, 280, 205, 181, 182, 120, - 0, 250, 156, 166, 151, 222, 0, 165, 242, 295, - 296, 150, 318, 129, 310, 123, 130, 309, 216, 0, - 215, 312, 291, 299, 206, 199, 0, 122, 297, 204, - 198, 186, 161, 173, 238, 194, 239, 174, 211, 210, - 212, 0, 0, 0, 278, 306, 319, 196, 135, 0, - 266, 289, 0, 0, 136, 164, 160, 237, 214, 131, - 176, 275, 185, 192, 249, 317, 226, 255, 140, 305, - 274, 471, 483, 477, 479, 478, 475, 476, 474, 473, - 472, 485, 462, 463, 464, 465, 468, 0, 480, 481, - 0, 0, 0, 0, 498, 499, 500, 501, 502, 503, - 504, 497, 505, 506, 507, 508, 509, 510, 511, 512, - 513, 486, 487, 488, 489, 490, 491, 492, 493, 496, - 494, 495, 466, 113, 124, 189, 0, 247, 163, 307, - 0, 155, 0, 0, 0, 0, 0, 0, 115, 116, - 125, 134, 141, 154, 159, 162, 168, 172, 175, 177, - 178, 179, 183, 197, 200, 201, 202, 203, 217, 218, - 220, 221, 224, 225, 228, 230, 231, 232, 234, 235, - 236, 241, 244, 246, 248, 251, 256, 258, 259, 260, - 262, 263, 264, 268, 269, 270, 271, 279, 283, 293, - 294, 304, 313, 315, 287, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 223, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 157, 0, 0, 0, 0, - 187, 0, 0, 148, 195, 193, 0, 0, 0, 229, - 285, 0, 0, 0, 470, 190, 0, 0, 308, 276, - 208, 0, 0, 0, 0, 459, 460, 0, 0, 0, - 0, 0, 0, 0, 0, 71, 0, 0, 424, 447, - 446, 449, 450, 451, 452, 0, 0, 138, 448, 453, - 454, 455, 0, 0, 0, 0, 438, 0, 469, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 435, - 436, 0, 0, 0, 0, 484, 0, 437, 0, 0, - 432, 433, 434, 439, 0, 0, 0, 0, 117, 0, - 0, 0, 0, 167, 209, 128, 461, 0, 0, 180, - 314, 0, 0, 482, 243, 0, 281, 170, 188, 132, - 114, 126, 142, 169, 219, 252, 261, 467, 0, 0, - 0, 0, 149, 0, 254, 227, 303, 0, 0, 233, - 253, 191, 292, 245, 301, 302, 171, 286, 311, 316, - 273, 158, 0, 118, 0, 240, 153, 184, 0, 0, - 0, 146, 0, 0, 0, 272, 133, 288, 207, 213, - 143, 145, 144, 127, 267, 290, 137, 147, 277, 257, - 282, 152, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 119, 284, 300, 139, 265, 121, 298, 280, 205, - 181, 182, 120, 0, 250, 156, 166, 151, 222, 0, - 165, 242, 295, 296, 150, 318, 129, 310, 123, 130, - 309, 216, 0, 215, 312, 291, 299, 206, 199, 0, - 122, 297, 204, 198, 186, 161, 173, 238, 194, 239, - 174, 211, 210, 212, 0, 0, 0, 278, 306, 319, - 196, 135, 0, 266, 289, 0, 0, 136, 164, 160, - 237, 214, 131, 176, 275, 185, 192, 249, 317, 226, - 255, 140, 305, 274, 471, 483, 477, 479, 478, 475, - 476, 474, 473, 472, 485, 462, 463, 464, 465, 468, - 0, 480, 481, 0, 0, 0, 0, 498, 499, 500, - 501, 502, 503, 504, 497, 505, 506, 507, 508, 509, - 510, 511, 512, 513, 486, 487, 488, 489, 490, 491, - 492, 493, 496, 494, 495, 466, 113, 124, 189, 0, - 247, 163, 307, 0, 155, 0, 0, 0, 0, 0, - 0, 115, 116, 125, 134, 141, 154, 159, 162, 168, - 172, 175, 177, 178, 179, 183, 197, 200, 201, 202, - 203, 217, 218, 220, 221, 224, 225, 228, 230, 231, - 232, 234, 235, 236, 241, 244, 246, 248, 251, 256, - 258, 259, 260, 262, 263, 264, 268, 269, 270, 271, - 279, 283, 293, 294, 304, 313, 315, 287, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 223, 0, - 0, 0, 0, 1269, 0, 0, 0, 0, 157, 0, - 0, 0, 0, 187, 0, 0, 148, 195, 193, 0, - 0, 0, 229, 285, 0, 0, 0, 0, 190, 0, - 0, 308, 276, 208, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1271, 1273, 0, 0, 0, 0, - 0, 111, 0, 374, 0, 0, 0, 0, 0, 0, - 138, 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, 117, 0, 0, 0, 0, 167, 209, 128, 0, - 0, 0, 180, 314, 0, 1272, 0, 243, 0, 281, - 170, 188, 132, 114, 126, 142, 169, 219, 252, 261, - 0, 0, 0, 0, 0, 149, 0, 254, 227, 303, - 0, 0, 233, 253, 191, 292, 245, 301, 302, 171, - 286, 311, 316, 273, 158, 0, 118, 0, 240, 153, - 184, 0, 0, 0, 146, 0, 0, 0, 272, 133, - 288, 207, 213, 143, 145, 144, 127, 267, 290, 137, - 147, 277, 257, 282, 152, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 119, 284, 300, 139, 265, 121, - 298, 280, 205, 181, 182, 120, 0, 250, 156, 166, - 151, 222, 0, 165, 242, 295, 296, 150, 318, 129, - 310, 123, 130, 309, 216, 0, 215, 312, 291, 299, - 206, 199, 0, 122, 297, 204, 198, 186, 161, 173, - 238, 194, 239, 174, 211, 210, 212, 0, 0, 0, - 278, 306, 319, 196, 135, 0, 266, 289, 0, 0, - 136, 164, 160, 237, 214, 131, 176, 275, 185, 192, - 249, 317, 226, 255, 140, 305, 274, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 375, 376, 377, 378, 379, 383, 384, 388, 389, 397, - 396, 395, 398, 399, 401, 400, 402, 380, 381, 382, - 385, 386, 387, 390, 391, 394, 392, 393, 0, 113, - 124, 189, 0, 247, 163, 307, 0, 155, 0, 0, - 0, 0, 0, 0, 115, 116, 125, 134, 141, 154, - 159, 162, 168, 172, 175, 177, 178, 179, 183, 197, - 200, 201, 202, 203, 217, 218, 220, 221, 224, 225, - 228, 230, 231, 232, 234, 235, 236, 241, 244, 246, - 248, 251, 256, 258, 259, 260, 262, 263, 264, 268, - 269, 270, 271, 279, 283, 293, 294, 304, 313, 315, - 287, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 223, 0, 0, 0, 0, 1269, 0, 0, 0, - 0, 157, 0, 0, 0, 0, 187, 0, 0, 148, - 195, 193, 0, 0, 0, 229, 285, 0, 0, 0, - 0, 190, 0, 0, 308, 276, 208, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1271, 1273, 0, - 0, 0, 0, 0, 111, 0, 374, 0, 0, 0, - 0, 0, 0, 138, 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, 117, 0, 0, 0, 0, 167, - 209, 128, 0, 0, 0, 180, 314, 0, 1272, 0, - 243, 0, 281, 170, 188, 132, 114, 126, 142, 169, - 219, 252, 261, 0, 0, 0, 0, 0, 149, 0, - 254, 227, 303, 0, 0, 1267, 253, 191, 292, 245, - 301, 302, 171, 286, 311, 316, 273, 158, 0, 118, - 0, 240, 153, 184, 0, 0, 0, 146, 0, 0, - 0, 272, 133, 288, 207, 213, 143, 145, 144, 127, - 267, 290, 137, 147, 277, 257, 282, 152, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 119, 284, 300, - 139, 265, 121, 298, 280, 205, 181, 182, 120, 0, - 250, 156, 166, 151, 222, 0, 165, 242, 295, 296, - 150, 318, 129, 310, 123, 130, 309, 216, 0, 215, - 312, 291, 299, 206, 199, 0, 122, 297, 204, 198, - 186, 161, 173, 238, 194, 239, 174, 211, 210, 212, - 0, 0, 0, 278, 306, 319, 196, 135, 0, 266, - 289, 0, 0, 136, 164, 160, 237, 214, 131, 176, - 275, 185, 192, 249, 317, 226, 255, 140, 305, 274, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 375, 376, 377, 378, 379, 383, 384, - 388, 389, 397, 396, 395, 398, 399, 401, 400, 402, - 380, 381, 382, 385, 386, 387, 390, 391, 394, 392, - 393, 0, 113, 124, 189, 0, 247, 163, 307, 0, - 155, 0, 0, 0, 0, 0, 0, 115, 116, 125, - 134, 141, 154, 159, 162, 168, 172, 175, 177, 178, - 179, 183, 197, 200, 201, 202, 203, 217, 218, 220, - 221, 224, 225, 228, 230, 231, 232, 234, 235, 236, - 241, 244, 246, 248, 251, 256, 258, 259, 260, 262, - 263, 264, 268, 269, 270, 271, 279, 283, 293, 294, - 304, 313, 315, 287, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 223, 0, 0, 0, 0, 833, - 0, 0, 0, 0, 157, 0, 0, 0, 0, 187, - 0, 0, 148, 195, 193, 0, 0, 0, 229, 285, - 0, 0, 0, 0, 190, 0, 0, 308, 276, 208, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 834, 0, 837, - 0, 0, 0, 0, 0, 0, 138, 0, 0, 0, - 0, 0, 830, 829, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 831, 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, 117, 0, 0, - 0, 0, 167, 209, 128, 0, 0, 0, 180, 314, - 0, 0, 0, 243, 0, 281, 170, 188, 132, 114, - 126, 142, 169, 219, 252, 261, 0, 0, 0, 0, - 0, 149, 0, 254, 227, 303, 0, 0, 233, 253, - 191, 292, 245, 301, 302, 171, 286, 311, 316, 273, - 158, 0, 118, 0, 240, 153, 184, 0, 0, 0, - 146, 0, 0, 0, 272, 133, 288, 207, 213, 143, - 145, 144, 127, 267, 290, 137, 147, 277, 257, 282, - 152, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 119, 284, 300, 139, 265, 121, 298, 280, 205, 181, - 182, 120, 0, 250, 156, 166, 151, 222, 0, 165, - 242, 295, 296, 150, 318, 129, 310, 123, 130, 309, - 216, 0, 215, 312, 291, 299, 206, 199, 0, 122, - 297, 204, 198, 186, 161, 173, 238, 194, 239, 174, - 211, 210, 212, 0, 0, 0, 278, 306, 319, 196, - 135, 0, 266, 289, 0, 0, 136, 164, 160, 237, - 214, 131, 176, 275, 185, 192, 249, 317, 226, 255, - 140, 305, 274, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 375, 376, 377, 378, - 379, 383, 384, 388, 389, 397, 396, 395, 398, 399, - 401, 400, 402, 380, 381, 382, 385, 386, 387, 390, - 391, 394, 392, 393, 0, 113, 124, 189, 0, 247, - 163, 307, 0, 155, 0, 0, 0, 0, 0, 0, - 115, 116, 125, 134, 141, 154, 159, 162, 168, 172, - 175, 177, 178, 179, 183, 197, 200, 201, 202, 203, - 217, 218, 220, 221, 224, 225, 228, 230, 231, 232, - 234, 235, 236, 241, 244, 246, 248, 251, 256, 258, - 259, 260, 262, 263, 264, 268, 269, 270, 271, 279, - 283, 293, 294, 304, 313, 315, 287, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 435, 436, 0, + 0, 0, 0, 484, 0, 437, 0, 0, 432, 433, + 434, 439, 0, 0, 0, 0, 117, 0, 0, 0, + 0, 167, 209, 128, 461, 0, 0, 180, 314, 0, + 0, 482, 243, 0, 281, 170, 188, 132, 114, 126, + 142, 169, 219, 252, 261, 467, 0, 0, 0, 0, + 149, 0, 254, 227, 303, 0, 0, 233, 253, 191, + 292, 245, 301, 302, 171, 286, 311, 316, 273, 158, + 0, 118, 0, 240, 153, 184, 0, 0, 0, 146, + 0, 0, 0, 272, 133, 288, 207, 213, 143, 145, + 144, 127, 267, 290, 137, 147, 277, 257, 282, 152, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, + 284, 300, 139, 265, 121, 298, 280, 205, 181, 182, + 120, 0, 250, 156, 166, 151, 222, 0, 165, 242, + 295, 296, 150, 318, 129, 310, 123, 130, 309, 216, + 0, 215, 312, 291, 299, 206, 199, 0, 122, 297, + 204, 198, 186, 161, 173, 238, 194, 239, 174, 211, + 210, 212, 0, 0, 0, 278, 306, 319, 196, 135, + 0, 266, 289, 0, 0, 136, 164, 160, 237, 214, + 131, 176, 275, 185, 192, 249, 317, 226, 255, 140, + 305, 274, 471, 483, 477, 479, 478, 475, 476, 474, + 473, 472, 485, 462, 463, 464, 465, 468, 0, 480, + 481, 0, 0, 0, 0, 498, 499, 500, 501, 502, + 503, 504, 497, 505, 506, 507, 508, 509, 510, 511, + 512, 513, 486, 487, 488, 489, 490, 491, 492, 493, + 496, 494, 495, 466, 113, 124, 189, 0, 247, 163, + 307, 0, 155, 0, 0, 0, 0, 0, 0, 115, + 116, 125, 134, 141, 154, 159, 162, 168, 172, 175, + 177, 178, 179, 183, 197, 200, 201, 202, 203, 217, + 218, 220, 221, 224, 225, 228, 230, 231, 232, 234, + 235, 236, 241, 244, 246, 248, 251, 256, 258, 259, + 260, 262, 263, 264, 268, 269, 270, 271, 279, 283, + 293, 294, 304, 313, 315, 30, 287, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 223, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 157, 0, 0, - 0, 0, 187, 1522, 0, 148, 195, 193, 0, 0, - 0, 229, 285, 0, 0, 0, 0, 190, 0, 0, - 308, 276, 208, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 111, 0, 374, 0, 0, 0, 0, 0, 0, 138, - 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, 426, 0, 0, 0, 157, 423, 0, + 0, 0, 187, 0, 0, 148, 195, 193, 0, 0, + 0, 229, 285, 0, 0, 0, 470, 190, 0, 0, + 308, 276, 208, 0, 0, 0, 0, 459, 460, 0, + 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, + 424, 447, 446, 449, 450, 451, 452, 0, 0, 138, + 448, 453, 454, 455, 0, 0, 0, 421, 438, 0, + 469, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 117, 0, 0, 0, 0, 167, 209, 128, 0, 0, - 0, 180, 314, 0, 0, 0, 243, 0, 281, 170, - 188, 132, 114, 126, 142, 169, 219, 252, 261, 0, + 0, 435, 436, 0, 0, 0, 0, 484, 0, 437, + 0, 0, 432, 433, 434, 439, 0, 0, 0, 0, + 117, 0, 0, 0, 0, 167, 209, 128, 461, 0, + 0, 180, 314, 0, 0, 482, 243, 0, 281, 170, + 188, 132, 114, 126, 142, 169, 219, 252, 261, 467, 0, 0, 0, 0, 149, 0, 254, 227, 303, 0, 0, 233, 253, 191, 292, 245, 301, 302, 171, 286, 311, 316, 273, 158, 0, 118, 0, 240, 153, 184, @@ -2916,13 +2286,13 @@ var yyAct = [...]int{ 194, 239, 174, 211, 210, 212, 0, 0, 0, 278, 306, 319, 196, 135, 0, 266, 289, 0, 0, 136, 164, 160, 237, 214, 131, 176, 275, 185, 192, 249, - 317, 226, 255, 140, 305, 274, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 375, - 376, 377, 378, 379, 383, 384, 388, 389, 397, 396, - 395, 398, 399, 401, 400, 402, 380, 381, 382, 385, - 386, 387, 390, 391, 394, 392, 393, 0, 113, 124, - 189, 0, 247, 163, 307, 0, 155, 0, 0, 0, + 317, 226, 255, 140, 305, 274, 471, 483, 477, 479, + 478, 475, 476, 474, 473, 472, 485, 462, 463, 464, + 465, 468, 0, 480, 481, 0, 0, 0, 0, 498, + 499, 500, 501, 502, 503, 504, 497, 505, 506, 507, + 508, 509, 510, 511, 512, 513, 486, 487, 488, 489, + 490, 491, 492, 493, 496, 494, 495, 466, 113, 124, + 189, 70, 247, 163, 307, 0, 155, 0, 0, 0, 0, 0, 0, 115, 116, 125, 134, 141, 154, 159, 162, 168, 172, 175, 177, 178, 179, 183, 197, 200, 201, 202, 203, 217, 218, 220, 221, 224, 225, 228, @@ -2930,21 +2300,21 @@ var yyAct = [...]int{ 251, 256, 258, 259, 260, 262, 263, 264, 268, 269, 270, 271, 279, 283, 293, 294, 304, 313, 315, 287, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 157, 0, 0, 0, 0, 187, 0, 0, 148, 195, - 193, 0, 0, 0, 229, 285, 0, 0, 0, 0, + 223, 0, 0, 0, 0, 0, 426, 0, 0, 0, + 157, 423, 0, 0, 0, 187, 0, 0, 148, 195, + 193, 0, 0, 0, 229, 285, 0, 0, 0, 470, 190, 0, 0, 308, 276, 208, 0, 0, 0, 0, + 459, 460, 0, 0, 0, 0, 0, 0, 0, 0, + 71, 0, 0, 424, 447, 446, 449, 450, 451, 452, + 0, 0, 138, 448, 453, 454, 455, 0, 0, 0, + 421, 438, 0, 469, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 111, 0, 374, 0, 0, 0, 0, - 0, 0, 138, 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, 435, 436, 417, 0, 0, 0, + 484, 0, 437, 0, 0, 432, 433, 434, 439, 0, 0, 0, 0, 117, 0, 0, 0, 0, 167, 209, - 128, 0, 0, 0, 180, 314, 0, 0, 0, 243, + 128, 461, 0, 0, 180, 314, 0, 0, 482, 243, 0, 281, 170, 188, 132, 114, 126, 142, 169, 219, - 252, 261, 0, 0, 0, 0, 0, 149, 0, 254, + 252, 261, 467, 0, 0, 0, 0, 149, 0, 254, 227, 303, 0, 0, 233, 253, 191, 292, 245, 301, 302, 171, 286, 311, 316, 273, 158, 0, 118, 0, 240, 153, 184, 0, 0, 0, 146, 0, 0, 0, @@ -2958,13 +2328,13 @@ var yyAct = [...]int{ 161, 173, 238, 194, 239, 174, 211, 210, 212, 0, 0, 0, 278, 306, 319, 196, 135, 0, 266, 289, 0, 0, 136, 164, 160, 237, 214, 131, 176, 275, - 185, 192, 249, 317, 226, 255, 140, 305, 274, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 375, 376, 377, 378, 379, 383, 384, 388, - 389, 397, 396, 395, 398, 399, 401, 400, 402, 380, - 381, 382, 385, 386, 387, 390, 391, 394, 392, 393, - 0, 113, 124, 189, 0, 247, 163, 307, 0, 155, + 185, 192, 249, 317, 226, 255, 140, 305, 274, 471, + 483, 477, 479, 478, 475, 476, 474, 473, 472, 485, + 462, 463, 464, 465, 468, 0, 480, 481, 0, 0, + 0, 0, 498, 499, 500, 501, 502, 503, 504, 497, + 505, 506, 507, 508, 509, 510, 511, 512, 513, 486, + 487, 488, 489, 490, 491, 492, 493, 496, 494, 495, + 466, 113, 124, 189, 0, 247, 163, 307, 0, 155, 0, 0, 0, 0, 0, 0, 115, 116, 125, 134, 141, 154, 159, 162, 168, 172, 175, 177, 178, 179, 183, 197, 200, 201, 202, 203, 217, 218, 220, 221, @@ -2972,21 +2342,21 @@ var yyAct = [...]int{ 244, 246, 248, 251, 256, 258, 259, 260, 262, 263, 264, 268, 269, 270, 271, 279, 283, 293, 294, 304, 313, 315, 287, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 223, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 157, 0, 0, 0, 0, 187, 0, + 0, 0, 0, 223, 0, 0, 0, 0, 0, 426, + 0, 0, 0, 157, 423, 0, 0, 0, 187, 0, 0, 148, 195, 193, 0, 0, 0, 229, 285, 0, - 0, 0, 0, 190, 0, 0, 308, 276, 208, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 834, 0, 837, 0, - 0, 0, 0, 0, 0, 138, 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, 470, 190, 0, 0, 308, 276, 208, 0, + 0, 0, 0, 459, 460, 0, 0, 0, 0, 0, + 0, 0, 0, 71, 0, 776, 424, 447, 446, 449, + 450, 451, 452, 0, 0, 138, 448, 453, 454, 455, + 0, 0, 0, 421, 438, 0, 469, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 117, 0, 0, 0, - 0, 167, 209, 128, 0, 0, 0, 180, 314, 0, - 0, 0, 243, 0, 281, 170, 188, 132, 114, 126, - 142, 169, 219, 252, 261, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 435, 436, 0, + 0, 0, 0, 484, 0, 437, 0, 0, 432, 433, + 434, 439, 0, 0, 0, 0, 117, 0, 0, 0, + 0, 167, 209, 128, 461, 0, 0, 180, 314, 0, + 0, 482, 243, 0, 281, 170, 188, 132, 114, 126, + 142, 169, 219, 252, 261, 467, 0, 0, 0, 0, 149, 0, 254, 227, 303, 0, 0, 233, 253, 191, 292, 245, 301, 302, 171, 286, 311, 316, 273, 158, 0, 118, 0, 240, 153, 184, 0, 0, 0, 146, @@ -3001,12 +2371,12 @@ var yyAct = [...]int{ 210, 212, 0, 0, 0, 278, 306, 319, 196, 135, 0, 266, 289, 0, 0, 136, 164, 160, 237, 214, 131, 176, 275, 185, 192, 249, 317, 226, 255, 140, - 305, 274, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 375, 376, 377, 378, 379, - 383, 384, 388, 389, 397, 396, 395, 398, 399, 401, - 400, 402, 380, 381, 382, 385, 386, 387, 390, 391, - 394, 392, 393, 0, 113, 124, 189, 0, 247, 163, + 305, 274, 471, 483, 477, 479, 478, 475, 476, 474, + 473, 472, 485, 462, 463, 464, 465, 468, 0, 480, + 481, 0, 0, 0, 0, 498, 499, 500, 501, 502, + 503, 504, 497, 505, 506, 507, 508, 509, 510, 511, + 512, 513, 486, 487, 488, 489, 490, 491, 492, 493, + 496, 494, 495, 466, 113, 124, 189, 0, 247, 163, 307, 0, 155, 0, 0, 0, 0, 0, 0, 115, 116, 125, 134, 141, 154, 159, 162, 168, 172, 175, 177, 178, 179, 183, 197, 200, 201, 202, 203, 217, @@ -3015,20 +2385,20 @@ var yyAct = [...]int{ 260, 262, 263, 264, 268, 269, 270, 271, 279, 283, 293, 294, 304, 313, 315, 287, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 223, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 157, 0, 0, 0, + 0, 0, 426, 0, 0, 0, 157, 423, 0, 0, 0, 187, 0, 0, 148, 195, 193, 0, 0, 0, - 229, 285, 0, 0, 0, 0, 190, 0, 0, 308, - 276, 208, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 545, - 0, 0, 0, 0, 0, 0, 0, 0, 138, 0, + 229, 285, 0, 0, 0, 470, 190, 0, 0, 308, + 276, 208, 0, 0, 0, 0, 459, 460, 0, 0, + 0, 0, 0, 0, 0, 0, 71, 0, 0, 424, + 447, 446, 449, 450, 451, 452, 0, 0, 138, 448, + 453, 454, 455, 0, 0, 0, 421, 438, 0, 469, 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, 847, 846, 856, 857, - 849, 850, 851, 852, 853, 854, 855, 848, 0, 0, - 858, 0, 0, 0, 0, 0, 0, 0, 0, 117, - 0, 0, 0, 0, 167, 209, 128, 0, 0, 0, - 180, 314, 0, 0, 0, 243, 0, 281, 170, 188, - 132, 114, 126, 142, 169, 219, 252, 261, 0, 0, + 435, 436, 1187, 0, 0, 0, 484, 0, 437, 0, + 0, 432, 433, 434, 439, 0, 0, 0, 0, 117, + 0, 0, 0, 0, 167, 209, 128, 461, 0, 0, + 180, 314, 0, 0, 482, 243, 0, 281, 170, 188, + 132, 114, 126, 142, 169, 219, 252, 261, 467, 0, 0, 0, 0, 149, 0, 254, 227, 303, 0, 0, 233, 253, 191, 292, 245, 301, 302, 171, 286, 311, 316, 273, 158, 0, 118, 0, 240, 153, 184, 0, @@ -3043,78 +2413,247 @@ var yyAct = [...]int{ 239, 174, 211, 210, 212, 0, 0, 0, 278, 306, 319, 196, 135, 0, 266, 289, 0, 0, 136, 164, 160, 237, 214, 131, 176, 275, 185, 192, 249, 317, - 226, 255, 140, 305, 274, 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, 113, 124, 189, + 226, 255, 140, 305, 274, 471, 483, 477, 479, 478, + 475, 476, 474, 473, 472, 485, 462, 463, 464, 465, + 468, 0, 480, 481, 0, 0, 0, 0, 498, 499, + 500, 501, 502, 503, 504, 497, 505, 506, 507, 508, + 509, 510, 511, 512, 513, 486, 487, 488, 489, 490, + 491, 492, 493, 496, 494, 495, 466, 113, 124, 189, 0, 247, 163, 307, 0, 155, 0, 0, 0, 0, 0, 0, 115, 116, 125, 134, 141, 154, 159, 162, 168, 172, 175, 177, 178, 179, 183, 197, 200, 201, 202, 203, 217, 218, 220, 221, 224, 225, 228, 230, 231, 232, 234, 235, 236, 241, 244, 246, 248, 251, 256, 258, 259, 260, 262, 263, 264, 268, 269, 270, - 271, 279, 283, 293, 294, 304, 313, 315, 30, 287, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 157, 0, 0, 0, 0, 187, 0, 0, 148, 195, - 193, 0, 0, 0, 229, 285, 0, 0, 0, 1264, - 190, 0, 0, 308, 276, 208, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 71, 0, 0, 111, 0, 0, 0, 0, 0, 0, - 0, 0, 138, 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, 117, 0, 0, 0, 0, 167, 209, - 128, 0, 0, 0, 180, 314, 0, 0, 0, 243, - 0, 281, 170, 188, 132, 114, 126, 142, 169, 219, - 252, 261, 0, 0, 0, 0, 0, 149, 0, 254, - 227, 303, 0, 0, 233, 253, 191, 292, 245, 301, - 302, 171, 286, 311, 316, 273, 158, 0, 118, 0, - 240, 153, 184, 0, 0, 0, 146, 0, 0, 0, - 272, 133, 288, 207, 213, 143, 145, 144, 127, 267, - 290, 137, 147, 277, 257, 282, 152, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 119, 284, 300, 139, - 265, 121, 298, 280, 205, 181, 182, 120, 0, 250, - 156, 166, 151, 222, 0, 165, 242, 295, 296, 150, - 318, 129, 310, 123, 130, 309, 216, 0, 215, 312, - 291, 299, 206, 199, 0, 122, 297, 204, 198, 186, - 161, 173, 238, 194, 239, 174, 211, 210, 212, 0, - 0, 0, 278, 306, 319, 196, 135, 0, 266, 289, - 0, 0, 136, 164, 160, 237, 214, 131, 176, 275, - 185, 192, 249, 317, 226, 255, 140, 305, 274, 0, + 271, 279, 283, 293, 294, 304, 313, 315, 287, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 223, + 0, 0, 0, 0, 0, 426, 0, 0, 0, 157, + 423, 0, 0, 0, 187, 0, 0, 148, 195, 193, + 0, 0, 0, 229, 285, 0, 0, 0, 470, 190, + 0, 0, 308, 276, 208, 0, 0, 0, 0, 459, + 460, 0, 0, 0, 0, 0, 0, 0, 0, 71, + 0, 0, 424, 447, 1198, 449, 450, 451, 452, 0, + 0, 138, 448, 453, 454, 455, 0, 0, 0, 421, + 438, 0, 469, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 435, 436, 1187, 0, 0, 0, 484, + 0, 437, 0, 0, 432, 433, 434, 439, 0, 0, + 0, 0, 117, 0, 0, 0, 0, 167, 209, 128, + 461, 0, 0, 180, 314, 0, 0, 482, 243, 0, + 281, 170, 188, 132, 114, 126, 142, 169, 219, 252, + 261, 467, 0, 0, 0, 0, 149, 0, 254, 227, + 303, 0, 0, 233, 253, 191, 292, 245, 301, 302, + 171, 286, 311, 316, 273, 158, 0, 118, 0, 240, + 153, 184, 0, 0, 0, 146, 0, 0, 0, 272, + 133, 288, 207, 213, 143, 145, 144, 127, 267, 290, + 137, 147, 277, 257, 282, 152, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 119, 284, 300, 139, 265, + 121, 298, 280, 205, 181, 182, 120, 0, 250, 156, + 166, 151, 222, 0, 165, 242, 295, 296, 150, 318, + 129, 310, 123, 130, 309, 216, 0, 215, 312, 291, + 299, 206, 199, 0, 122, 297, 204, 198, 186, 161, + 173, 238, 194, 239, 174, 211, 210, 212, 0, 0, + 0, 278, 306, 319, 196, 135, 0, 266, 289, 0, + 0, 136, 164, 160, 237, 214, 131, 176, 275, 185, + 192, 249, 317, 226, 255, 140, 305, 274, 471, 483, + 477, 479, 478, 475, 476, 474, 473, 472, 485, 462, + 463, 464, 465, 468, 0, 480, 481, 0, 0, 0, + 0, 498, 499, 500, 501, 502, 503, 504, 497, 505, + 506, 507, 508, 509, 510, 511, 512, 513, 486, 487, + 488, 489, 490, 491, 492, 493, 496, 494, 495, 466, + 113, 124, 189, 0, 247, 163, 307, 0, 155, 0, + 0, 0, 0, 0, 0, 115, 116, 125, 134, 141, + 154, 159, 162, 168, 172, 175, 177, 178, 179, 183, + 197, 200, 201, 202, 203, 217, 218, 220, 221, 224, + 225, 228, 230, 231, 232, 234, 235, 236, 241, 244, + 246, 248, 251, 256, 258, 259, 260, 262, 263, 264, + 268, 269, 270, 271, 279, 283, 293, 294, 304, 313, + 315, 287, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 223, 0, 0, 0, 0, 0, 426, 0, + 0, 0, 157, 423, 0, 0, 0, 187, 0, 0, + 148, 195, 193, 0, 0, 0, 229, 285, 0, 0, + 0, 470, 190, 0, 0, 308, 276, 208, 0, 0, + 0, 0, 459, 460, 0, 0, 0, 0, 0, 0, + 0, 0, 71, 0, 0, 424, 447, 1195, 449, 450, + 451, 452, 0, 0, 138, 448, 453, 454, 455, 0, + 0, 0, 421, 438, 0, 469, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 435, 436, 1187, 0, + 0, 0, 484, 0, 437, 0, 0, 432, 433, 434, + 439, 0, 0, 0, 0, 117, 0, 0, 0, 0, + 167, 209, 128, 461, 0, 0, 180, 314, 0, 0, + 482, 243, 0, 281, 170, 188, 132, 114, 126, 142, + 169, 219, 252, 261, 467, 0, 0, 0, 0, 149, + 0, 254, 227, 303, 0, 0, 233, 253, 191, 292, + 245, 301, 302, 171, 286, 311, 316, 273, 158, 0, + 118, 0, 240, 153, 184, 0, 0, 0, 146, 0, + 0, 0, 272, 133, 288, 207, 213, 143, 145, 144, + 127, 267, 290, 137, 147, 277, 257, 282, 152, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 119, 284, + 300, 139, 265, 121, 298, 280, 205, 181, 182, 120, + 0, 250, 156, 166, 151, 222, 0, 165, 242, 295, + 296, 150, 318, 129, 310, 123, 130, 309, 216, 0, + 215, 312, 291, 299, 206, 199, 0, 122, 297, 204, + 198, 186, 161, 173, 238, 194, 239, 174, 211, 210, + 212, 0, 0, 0, 278, 306, 319, 196, 135, 0, + 266, 289, 0, 0, 136, 164, 160, 237, 214, 131, + 176, 275, 185, 192, 249, 317, 226, 255, 140, 305, + 274, 471, 483, 477, 479, 478, 475, 476, 474, 473, + 472, 485, 462, 463, 464, 465, 468, 0, 480, 481, + 0, 0, 0, 0, 498, 499, 500, 501, 502, 503, + 504, 497, 505, 506, 507, 508, 509, 510, 511, 512, + 513, 486, 487, 488, 489, 490, 491, 492, 493, 496, + 494, 495, 466, 113, 124, 189, 0, 247, 163, 307, + 0, 155, 0, 0, 0, 0, 0, 0, 115, 116, + 125, 134, 141, 154, 159, 162, 168, 172, 175, 177, + 178, 179, 183, 197, 200, 201, 202, 203, 217, 218, + 220, 221, 224, 225, 228, 230, 231, 232, 234, 235, + 236, 241, 244, 246, 248, 251, 256, 258, 259, 260, + 262, 263, 264, 268, 269, 270, 271, 279, 283, 293, + 294, 304, 313, 315, 287, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 223, 0, 0, 0, 0, + 0, 426, 0, 0, 0, 157, 423, 0, 0, 0, + 187, 0, 0, 148, 195, 193, 0, 0, 0, 229, + 285, 0, 0, 0, 470, 190, 0, 0, 308, 276, + 208, 0, 0, 0, 0, 459, 460, 0, 0, 0, + 0, 0, 0, 0, 0, 71, 0, 1105, 424, 447, + 446, 449, 450, 451, 452, 0, 0, 138, 448, 453, + 454, 455, 0, 0, 0, 421, 438, 0, 469, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 435, + 436, 0, 0, 0, 0, 484, 0, 437, 0, 0, + 432, 433, 434, 439, 0, 0, 0, 0, 117, 0, + 0, 0, 0, 167, 209, 128, 461, 0, 0, 180, + 314, 0, 0, 482, 243, 0, 281, 170, 188, 132, + 114, 126, 142, 169, 219, 252, 261, 467, 0, 0, + 0, 0, 149, 0, 254, 227, 303, 0, 0, 233, + 253, 191, 292, 245, 301, 302, 171, 286, 311, 316, + 273, 158, 0, 118, 0, 240, 153, 184, 0, 0, + 0, 146, 0, 0, 0, 272, 133, 288, 207, 213, + 143, 145, 144, 127, 267, 290, 137, 147, 277, 257, + 282, 152, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 119, 284, 300, 139, 265, 121, 298, 280, 205, + 181, 182, 120, 0, 250, 156, 166, 151, 222, 0, + 165, 242, 295, 296, 150, 318, 129, 310, 123, 130, + 309, 216, 0, 215, 312, 291, 299, 206, 199, 0, + 122, 297, 204, 198, 186, 161, 173, 238, 194, 239, + 174, 211, 210, 212, 0, 0, 0, 278, 306, 319, + 196, 135, 0, 266, 289, 0, 0, 136, 164, 160, + 237, 214, 131, 176, 275, 185, 192, 249, 317, 226, + 255, 140, 305, 274, 471, 483, 477, 479, 478, 475, + 476, 474, 473, 472, 485, 462, 463, 464, 465, 468, + 0, 480, 481, 0, 0, 0, 0, 498, 499, 500, + 501, 502, 503, 504, 497, 505, 506, 507, 508, 509, + 510, 511, 512, 513, 486, 487, 488, 489, 490, 491, + 492, 493, 496, 494, 495, 466, 113, 124, 189, 0, + 247, 163, 307, 0, 155, 0, 0, 0, 0, 0, + 0, 115, 116, 125, 134, 141, 154, 159, 162, 168, + 172, 175, 177, 178, 179, 183, 197, 200, 201, 202, + 203, 217, 218, 220, 221, 224, 225, 228, 230, 231, + 232, 234, 235, 236, 241, 244, 246, 248, 251, 256, + 258, 259, 260, 262, 263, 264, 268, 269, 270, 271, + 279, 283, 293, 294, 304, 313, 315, 287, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 223, 0, + 0, 0, 0, 0, 426, 0, 0, 0, 157, 423, + 0, 0, 0, 187, 0, 0, 148, 195, 193, 0, + 0, 0, 229, 285, 0, 0, 0, 470, 190, 0, + 0, 308, 276, 208, 0, 0, 0, 0, 459, 460, + 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, + 0, 424, 447, 446, 449, 450, 451, 452, 0, 0, + 138, 448, 453, 454, 455, 0, 0, 0, 421, 438, + 0, 469, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 435, 436, 0, 0, 0, 0, 484, 0, + 437, 0, 0, 432, 433, 434, 439, 0, 0, 0, + 0, 117, 0, 0, 0, 0, 167, 209, 128, 461, + 0, 0, 180, 314, 0, 0, 482, 243, 0, 281, + 170, 188, 132, 114, 126, 142, 169, 219, 252, 261, + 467, 0, 0, 0, 0, 149, 0, 254, 227, 303, + 0, 0, 233, 253, 191, 292, 245, 301, 302, 171, + 286, 311, 316, 273, 158, 0, 118, 0, 240, 153, + 184, 0, 0, 0, 146, 0, 0, 0, 272, 133, + 288, 207, 213, 143, 145, 144, 127, 267, 290, 137, + 147, 277, 257, 282, 152, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 119, 284, 300, 139, 265, 121, + 298, 280, 205, 181, 182, 120, 0, 250, 156, 166, + 151, 222, 0, 165, 242, 295, 296, 150, 318, 129, + 310, 123, 130, 309, 216, 0, 215, 312, 291, 299, + 206, 199, 0, 122, 297, 204, 198, 186, 161, 173, + 238, 194, 239, 174, 211, 210, 212, 0, 0, 0, + 278, 306, 319, 196, 135, 0, 266, 289, 0, 0, + 136, 164, 160, 237, 214, 131, 176, 275, 185, 192, + 249, 317, 226, 255, 140, 305, 274, 471, 483, 477, + 479, 478, 475, 476, 474, 473, 472, 485, 462, 463, + 464, 465, 468, 0, 480, 481, 0, 0, 0, 0, + 498, 499, 500, 501, 502, 503, 504, 497, 505, 506, + 507, 508, 509, 510, 511, 512, 513, 486, 487, 488, + 489, 490, 491, 492, 493, 496, 494, 495, 466, 113, + 124, 189, 0, 247, 163, 307, 0, 155, 0, 0, + 0, 0, 0, 0, 115, 116, 125, 134, 141, 154, + 159, 162, 168, 172, 175, 177, 178, 179, 183, 197, + 200, 201, 202, 203, 217, 218, 220, 221, 224, 225, + 228, 230, 231, 232, 234, 235, 236, 241, 244, 246, + 248, 251, 256, 258, 259, 260, 262, 263, 264, 268, + 269, 270, 271, 279, 283, 293, 294, 304, 313, 315, + 287, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 223, 0, 0, 0, 0, 0, 426, 0, 0, + 0, 157, 423, 0, 0, 0, 187, 0, 0, 148, + 195, 193, 0, 0, 0, 229, 285, 0, 0, 0, + 470, 190, 0, 0, 308, 276, 208, 0, 0, 0, + 0, 459, 460, 0, 0, 0, 0, 0, 0, 0, + 0, 71, 0, 0, 424, 447, 446, 449, 450, 451, + 452, 0, 0, 138, 448, 453, 454, 455, 0, 0, + 0, 421, 438, 0, 469, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 113, 124, 189, 70, 247, 163, 307, 0, 155, - 0, 0, 0, 0, 0, 0, 115, 116, 125, 134, - 141, 154, 159, 162, 168, 172, 175, 177, 178, 179, - 183, 197, 200, 201, 202, 203, 217, 218, 220, 221, - 224, 225, 228, 230, 231, 232, 234, 235, 236, 241, - 244, 246, 248, 251, 256, 258, 259, 260, 262, 263, - 264, 268, 269, 270, 271, 279, 283, 293, 294, 304, - 313, 315, 30, 287, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 435, 436, 0, 0, 0, + 0, 484, 0, 437, 0, 0, 432, 433, 434, 439, + 0, 0, 0, 0, 117, 0, 0, 0, 0, 167, + 209, 128, 461, 0, 0, 180, 314, 0, 0, 482, + 243, 0, 281, 170, 188, 132, 114, 126, 142, 169, + 219, 252, 261, 467, 0, 0, 0, 0, 149, 0, + 254, 227, 303, 0, 0, 233, 253, 191, 292, 245, + 301, 302, 171, 286, 311, 316, 273, 158, 0, 118, + 0, 240, 153, 184, 0, 0, 0, 146, 0, 0, + 0, 272, 133, 288, 207, 213, 143, 145, 144, 127, + 267, 290, 137, 147, 277, 257, 282, 152, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 119, 284, 300, + 139, 265, 121, 298, 280, 205, 181, 182, 120, 0, + 250, 156, 166, 151, 222, 0, 165, 242, 295, 296, + 150, 318, 129, 310, 123, 130, 309, 216, 0, 215, + 312, 291, 299, 206, 199, 0, 122, 297, 204, 198, + 186, 161, 173, 238, 194, 239, 174, 211, 210, 212, + 0, 0, 0, 278, 306, 319, 196, 135, 0, 266, + 289, 0, 0, 136, 164, 160, 237, 214, 131, 176, + 275, 185, 192, 249, 317, 226, 255, 140, 305, 274, + 471, 483, 477, 479, 478, 475, 476, 474, 473, 472, + 485, 462, 463, 464, 465, 468, 0, 480, 481, 0, + 0, 0, 0, 791, 792, 793, 794, 795, 799, 800, + 804, 805, 813, 812, 811, 814, 815, 817, 816, 818, + 796, 797, 798, 801, 802, 803, 806, 807, 810, 808, + 809, 466, 113, 124, 189, 0, 247, 163, 307, 0, + 155, 0, 0, 0, 0, 0, 0, 115, 116, 125, + 134, 141, 154, 159, 162, 168, 172, 175, 177, 178, + 179, 183, 197, 200, 201, 202, 203, 217, 218, 220, + 221, 224, 225, 228, 230, 231, 232, 234, 235, 236, + 241, 244, 246, 248, 251, 256, 258, 259, 260, 262, + 263, 264, 268, 269, 270, 271, 279, 283, 293, 294, + 304, 313, 315, 287, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, 157, 0, 0, 0, 0, 187, 0, 0, 148, 195, 193, 0, 0, 0, 229, 285, - 0, 0, 0, 0, 190, 0, 0, 308, 276, 208, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 71, 0, 0, 545, 0, 0, - 0, 0, 0, 0, 0, 0, 138, 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, 470, 190, 0, 0, 308, 276, 208, + 0, 0, 0, 0, 459, 460, 0, 0, 0, 0, + 0, 0, 0, 0, 71, 0, 0, 424, 447, 446, + 449, 450, 451, 452, 0, 0, 138, 448, 453, 454, + 455, 0, 0, 0, 0, 438, 0, 469, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 117, 0, 0, - 0, 0, 167, 209, 128, 0, 0, 0, 180, 314, - 0, 0, 0, 243, 0, 281, 170, 188, 132, 114, - 126, 142, 169, 219, 252, 261, 0, 0, 0, 0, - 0, 149, 0, 254, 227, 303, 0, 0, 233, 253, + 0, 0, 0, 0, 0, 0, 0, 0, 435, 436, + 0, 0, 0, 0, 484, 0, 437, 0, 0, 432, + 433, 434, 439, 0, 0, 0, 0, 117, 0, 0, + 0, 0, 167, 209, 128, 461, 0, 0, 180, 314, + 0, 0, 482, 243, 0, 281, 170, 188, 132, 114, + 126, 142, 169, 219, 252, 261, 467, 0, 0, 0, + 0, 149, 0, 254, 227, 303, 0, 2253, 233, 253, 191, 292, 245, 301, 302, 171, 286, 311, 316, 273, 158, 0, 118, 0, 240, 153, 184, 0, 0, 0, 146, 0, 0, 0, 272, 133, 288, 207, 213, 143, @@ -3128,12 +2667,12 @@ var yyAct = [...]int{ 211, 210, 212, 0, 0, 0, 278, 306, 319, 196, 135, 0, 266, 289, 0, 0, 136, 164, 160, 237, 214, 131, 176, 275, 185, 192, 249, 317, 226, 255, - 140, 305, 274, 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, 113, 124, 189, 70, 247, + 140, 305, 274, 471, 483, 477, 479, 478, 475, 476, + 474, 473, 472, 485, 462, 463, 464, 465, 468, 0, + 480, 481, 0, 0, 0, 0, 498, 499, 500, 501, + 502, 503, 504, 497, 505, 506, 507, 508, 509, 510, + 511, 512, 513, 486, 487, 488, 489, 490, 491, 492, + 493, 496, 494, 495, 466, 113, 124, 189, 0, 247, 163, 307, 0, 155, 0, 0, 0, 0, 0, 0, 115, 116, 125, 134, 141, 154, 159, 162, 168, 172, 175, 177, 178, 179, 183, 197, 200, 201, 202, 203, @@ -3142,20 +2681,20 @@ var yyAct = [...]int{ 259, 260, 262, 263, 264, 268, 269, 270, 271, 279, 283, 293, 294, 304, 313, 315, 287, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 223, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 157, 981, 0, + 0, 0, 0, 0, 0, 0, 0, 157, 0, 0, 0, 0, 187, 0, 0, 148, 195, 193, 0, 0, - 0, 229, 285, 0, 0, 0, 0, 190, 0, 0, - 308, 276, 208, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 545, 0, 980, 0, 0, 0, 0, 0, 0, 138, - 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, 229, 285, 0, 0, 0, 470, 190, 0, 0, + 308, 276, 208, 0, 0, 0, 0, 459, 460, 0, + 0, 0, 0, 0, 0, 0, 0, 71, 0, 776, + 424, 447, 446, 449, 450, 451, 452, 0, 0, 138, + 448, 453, 454, 455, 0, 0, 0, 0, 438, 0, + 469, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 117, 0, 0, 0, 0, 167, 209, 128, 0, 0, - 0, 180, 314, 0, 0, 0, 243, 0, 281, 170, - 188, 132, 114, 126, 142, 169, 219, 252, 261, 0, + 0, 435, 436, 0, 0, 0, 0, 484, 0, 437, + 0, 0, 432, 433, 434, 439, 0, 0, 0, 0, + 117, 0, 0, 0, 0, 167, 209, 128, 461, 0, + 0, 180, 314, 0, 0, 482, 243, 0, 281, 170, + 188, 132, 114, 126, 142, 169, 219, 252, 261, 467, 0, 0, 0, 0, 149, 0, 254, 227, 303, 0, 0, 233, 253, 191, 292, 245, 301, 302, 171, 286, 311, 316, 273, 158, 0, 118, 0, 240, 153, 184, @@ -3170,12 +2709,12 @@ var yyAct = [...]int{ 194, 239, 174, 211, 210, 212, 0, 0, 0, 278, 306, 319, 196, 135, 0, 266, 289, 0, 0, 136, 164, 160, 237, 214, 131, 176, 275, 185, 192, 249, - 317, 226, 255, 140, 305, 274, 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, 113, 124, + 317, 226, 255, 140, 305, 274, 471, 483, 477, 479, + 478, 475, 476, 474, 473, 472, 485, 462, 463, 464, + 465, 468, 0, 480, 481, 0, 0, 0, 0, 498, + 499, 500, 501, 502, 503, 504, 497, 505, 506, 507, + 508, 509, 510, 511, 512, 513, 486, 487, 488, 489, + 490, 491, 492, 493, 496, 494, 495, 466, 113, 124, 189, 0, 247, 163, 307, 0, 155, 0, 0, 0, 0, 0, 0, 115, 116, 125, 134, 141, 154, 159, 162, 168, 172, 175, 177, 178, 179, 183, 197, 200, @@ -3186,19 +2725,19 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, 157, 0, 0, 0, 0, 187, 0, 0, 148, 195, - 193, 0, 0, 0, 229, 285, 0, 0, 0, 0, + 193, 0, 0, 0, 229, 285, 0, 0, 0, 470, 190, 0, 0, 308, 276, 208, 0, 0, 0, 0, + 459, 460, 0, 0, 0, 0, 0, 0, 0, 0, + 71, 0, 0, 424, 447, 446, 449, 450, 451, 452, + 0, 0, 138, 448, 453, 454, 455, 0, 0, 0, + 0, 438, 0, 469, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 71, 0, 0, 111, 0, 0, 0, 0, 0, 0, - 0, 0, 138, 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, 435, 436, 0, 0, 0, 0, + 484, 0, 437, 0, 0, 432, 433, 434, 439, 0, 0, 0, 0, 117, 0, 0, 0, 0, 167, 209, - 128, 0, 0, 0, 180, 314, 0, 0, 0, 243, + 128, 461, 0, 0, 180, 314, 0, 0, 482, 243, 0, 281, 170, 188, 132, 114, 126, 142, 169, 219, - 252, 261, 0, 0, 0, 0, 0, 149, 0, 254, + 252, 261, 467, 0, 0, 0, 0, 149, 0, 254, 227, 303, 0, 0, 233, 253, 191, 292, 245, 301, 302, 171, 286, 311, 316, 273, 158, 0, 118, 0, 240, 153, 184, 0, 0, 0, 146, 0, 0, 0, @@ -3212,13 +2751,13 @@ var yyAct = [...]int{ 161, 173, 238, 194, 239, 174, 211, 210, 212, 0, 0, 0, 278, 306, 319, 196, 135, 0, 266, 289, 0, 0, 136, 164, 160, 237, 214, 131, 176, 275, - 185, 192, 249, 317, 226, 255, 140, 305, 274, 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, 113, 124, 189, 0, 247, 163, 307, 0, 155, + 185, 192, 249, 317, 226, 255, 140, 305, 274, 471, + 483, 477, 479, 478, 475, 476, 474, 473, 472, 485, + 462, 463, 464, 465, 468, 0, 480, 481, 0, 0, + 0, 0, 498, 499, 500, 501, 502, 503, 504, 497, + 505, 506, 507, 508, 509, 510, 511, 512, 513, 486, + 487, 488, 489, 490, 491, 492, 493, 496, 494, 495, + 466, 113, 124, 189, 0, 247, 163, 307, 0, 155, 0, 0, 0, 0, 0, 0, 115, 116, 125, 134, 141, 154, 159, 162, 168, 172, 175, 177, 178, 179, 183, 197, 200, 201, 202, 203, 217, 218, 220, 221, @@ -3226,12 +2765,12 @@ var yyAct = [...]int{ 244, 246, 248, 251, 256, 258, 259, 260, 262, 263, 264, 268, 269, 270, 271, 279, 283, 293, 294, 304, 313, 315, 287, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 223, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 223, 0, 0, 0, 0, 1269, 0, 0, 0, 0, 157, 0, 0, 0, 0, 187, 0, 0, 148, 195, 193, 0, 0, 0, 229, 285, 0, 0, 0, 0, 190, 0, 0, 308, 276, 208, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 71, 0, 0, 545, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1271, + 1273, 0, 0, 0, 0, 0, 111, 0, 374, 0, 0, 0, 0, 0, 0, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3239,7 +2778,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, 0, 0, 0, 0, 167, 209, 128, 0, 0, 0, 180, 314, 0, - 0, 0, 243, 0, 281, 170, 188, 132, 114, 126, + 1272, 0, 243, 0, 281, 170, 188, 132, 114, 126, 142, 169, 219, 252, 261, 0, 0, 0, 0, 0, 149, 0, 254, 227, 303, 0, 0, 233, 253, 191, 292, 245, 301, 302, 171, 286, 311, 316, 273, 158, @@ -3257,10 +2796,10 @@ var yyAct = [...]int{ 131, 176, 275, 185, 192, 249, 317, 226, 255, 140, 305, 274, 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, 113, 124, 189, 0, 247, 163, + 0, 0, 0, 0, 0, 375, 376, 377, 378, 379, + 383, 384, 388, 389, 397, 396, 395, 398, 399, 401, + 400, 402, 380, 381, 382, 385, 386, 387, 390, 391, + 394, 392, 393, 0, 113, 124, 189, 0, 247, 163, 307, 0, 155, 0, 0, 0, 0, 0, 0, 115, 116, 125, 134, 141, 154, 159, 162, 168, 172, 175, 177, 178, 179, 183, 197, 200, 201, 202, 203, 217, @@ -3269,54 +2808,308 @@ var yyAct = [...]int{ 260, 262, 263, 264, 268, 269, 270, 271, 279, 283, 293, 294, 304, 313, 315, 287, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 223, 0, 0, 0, - 0, 0, 0, 0, 0, 950, 157, 0, 0, 0, + 0, 1269, 0, 0, 0, 0, 157, 0, 0, 0, 0, 187, 0, 0, 148, 195, 193, 0, 0, 0, 229, 285, 0, 0, 0, 0, 190, 0, 0, 308, 276, 208, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, - 0, 0, 0, 0, 0, 0, 0, 0, 138, 0, + 0, 0, 1271, 1273, 0, 0, 0, 0, 0, 111, + 0, 374, 0, 0, 0, 0, 0, 0, 138, 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, 117, + 0, 0, 0, 0, 167, 209, 128, 0, 0, 0, + 180, 314, 0, 1272, 0, 243, 0, 281, 170, 188, + 132, 114, 126, 142, 169, 219, 252, 261, 0, 0, + 0, 0, 0, 149, 0, 254, 227, 303, 0, 0, + 1267, 253, 191, 292, 245, 301, 302, 171, 286, 311, + 316, 273, 158, 0, 118, 0, 240, 153, 184, 0, + 0, 0, 146, 0, 0, 0, 272, 133, 288, 207, + 213, 143, 145, 144, 127, 267, 290, 137, 147, 277, + 257, 282, 152, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 119, 284, 300, 139, 265, 121, 298, 280, + 205, 181, 182, 120, 0, 250, 156, 166, 151, 222, + 0, 165, 242, 295, 296, 150, 318, 129, 310, 123, + 130, 309, 216, 0, 215, 312, 291, 299, 206, 199, + 0, 122, 297, 204, 198, 186, 161, 173, 238, 194, + 239, 174, 211, 210, 212, 0, 0, 0, 278, 306, + 319, 196, 135, 0, 266, 289, 0, 0, 136, 164, + 160, 237, 214, 131, 176, 275, 185, 192, 249, 317, + 226, 255, 140, 305, 274, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 375, 376, + 377, 378, 379, 383, 384, 388, 389, 397, 396, 395, + 398, 399, 401, 400, 402, 380, 381, 382, 385, 386, + 387, 390, 391, 394, 392, 393, 0, 113, 124, 189, + 0, 247, 163, 307, 0, 155, 0, 0, 0, 0, + 0, 0, 115, 116, 125, 134, 141, 154, 159, 162, + 168, 172, 175, 177, 178, 179, 183, 197, 200, 201, + 202, 203, 217, 218, 220, 221, 224, 225, 228, 230, + 231, 232, 234, 235, 236, 241, 244, 246, 248, 251, + 256, 258, 259, 260, 262, 263, 264, 268, 269, 270, + 271, 279, 283, 293, 294, 304, 313, 315, 287, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 223, + 0, 0, 0, 0, 833, 0, 0, 0, 0, 157, + 0, 0, 0, 0, 187, 0, 0, 148, 195, 193, + 0, 0, 0, 229, 285, 0, 0, 0, 0, 190, + 0, 0, 308, 276, 208, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 834, 0, 837, 0, 0, 0, 0, 0, + 0, 138, 0, 0, 0, 0, 0, 830, 829, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 831, 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, 117, 0, 0, 0, 0, 167, 209, 128, + 0, 0, 0, 180, 314, 0, 0, 0, 243, 0, + 281, 170, 188, 132, 114, 126, 142, 169, 219, 252, + 261, 0, 0, 0, 0, 0, 149, 0, 254, 227, + 303, 0, 0, 233, 253, 191, 292, 245, 301, 302, + 171, 286, 311, 316, 273, 158, 0, 118, 0, 240, + 153, 184, 0, 0, 0, 146, 0, 0, 0, 272, + 133, 288, 207, 213, 143, 145, 144, 127, 267, 290, + 137, 147, 277, 257, 282, 152, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 119, 284, 300, 139, 265, + 121, 298, 280, 205, 181, 182, 120, 0, 250, 156, + 166, 151, 222, 0, 165, 242, 295, 296, 150, 318, + 129, 310, 123, 130, 309, 216, 0, 215, 312, 291, + 299, 206, 199, 0, 122, 297, 204, 198, 186, 161, + 173, 238, 194, 239, 174, 211, 210, 212, 0, 0, + 0, 278, 306, 319, 196, 135, 0, 266, 289, 0, + 0, 136, 164, 160, 237, 214, 131, 176, 275, 185, + 192, 249, 317, 226, 255, 140, 305, 274, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 375, 376, 377, 378, 379, 383, 384, 388, 389, + 397, 396, 395, 398, 399, 401, 400, 402, 380, 381, + 382, 385, 386, 387, 390, 391, 394, 392, 393, 0, + 113, 124, 189, 0, 247, 163, 307, 0, 155, 0, + 0, 0, 0, 0, 0, 115, 116, 125, 134, 141, + 154, 159, 162, 168, 172, 175, 177, 178, 179, 183, + 197, 200, 201, 202, 203, 217, 218, 220, 221, 224, + 225, 228, 230, 231, 232, 234, 235, 236, 241, 244, + 246, 248, 251, 256, 258, 259, 260, 262, 263, 264, + 268, 269, 270, 271, 279, 283, 293, 294, 304, 313, + 315, 287, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 223, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 157, 0, 0, 0, 0, 187, 1524, 0, + 148, 195, 193, 0, 0, 0, 229, 285, 0, 0, + 0, 0, 190, 0, 0, 308, 276, 208, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 111, 0, 374, 0, 0, + 0, 0, 0, 0, 138, 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, 117, 0, 0, 0, 0, + 167, 209, 128, 0, 0, 0, 180, 314, 0, 0, + 0, 243, 0, 281, 170, 188, 132, 114, 126, 142, + 169, 219, 252, 261, 0, 0, 0, 0, 0, 149, + 0, 254, 227, 303, 0, 0, 233, 253, 191, 292, + 245, 301, 302, 171, 286, 311, 316, 273, 158, 0, + 118, 0, 240, 153, 184, 0, 0, 0, 146, 0, + 0, 0, 272, 133, 288, 207, 213, 143, 145, 144, + 127, 267, 290, 137, 147, 277, 257, 282, 152, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 119, 284, + 300, 139, 265, 121, 298, 280, 205, 181, 182, 120, + 0, 250, 156, 166, 151, 222, 0, 165, 242, 295, + 296, 150, 318, 129, 310, 123, 130, 309, 216, 0, + 215, 312, 291, 299, 206, 199, 0, 122, 297, 204, + 198, 186, 161, 173, 238, 194, 239, 174, 211, 210, + 212, 0, 0, 0, 278, 306, 319, 196, 135, 0, + 266, 289, 0, 0, 136, 164, 160, 237, 214, 131, + 176, 275, 185, 192, 249, 317, 226, 255, 140, 305, + 274, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 375, 376, 377, 378, 379, 383, + 384, 388, 389, 397, 396, 395, 398, 399, 401, 400, + 402, 380, 381, 382, 385, 386, 387, 390, 391, 394, + 392, 393, 0, 113, 124, 189, 0, 247, 163, 307, + 0, 155, 0, 0, 0, 0, 0, 0, 115, 116, + 125, 134, 141, 154, 159, 162, 168, 172, 175, 177, + 178, 179, 183, 197, 200, 201, 202, 203, 217, 218, + 220, 221, 224, 225, 228, 230, 231, 232, 234, 235, + 236, 241, 244, 246, 248, 251, 256, 258, 259, 260, + 262, 263, 264, 268, 269, 270, 271, 279, 283, 293, + 294, 304, 313, 315, 287, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 223, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 157, 0, 0, 0, 0, + 187, 0, 0, 148, 195, 193, 0, 0, 0, 229, + 285, 0, 0, 0, 0, 190, 0, 0, 308, 276, + 208, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 111, 0, + 374, 0, 0, 0, 0, 0, 0, 138, 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, 117, 0, + 0, 0, 0, 167, 209, 128, 0, 0, 0, 180, + 314, 0, 0, 0, 243, 0, 281, 170, 188, 132, + 114, 126, 142, 169, 219, 252, 261, 0, 0, 0, + 0, 0, 149, 0, 254, 227, 303, 0, 0, 233, + 253, 191, 292, 245, 301, 302, 171, 286, 311, 316, + 273, 158, 0, 118, 0, 240, 153, 184, 0, 0, + 0, 146, 0, 0, 0, 272, 133, 288, 207, 213, + 143, 145, 144, 127, 267, 290, 137, 147, 277, 257, + 282, 152, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 119, 284, 300, 139, 265, 121, 298, 280, 205, + 181, 182, 120, 0, 250, 156, 166, 151, 222, 0, + 165, 242, 295, 296, 150, 318, 129, 310, 123, 130, + 309, 216, 0, 215, 312, 291, 299, 206, 199, 0, + 122, 297, 204, 198, 186, 161, 173, 238, 194, 239, + 174, 211, 210, 212, 0, 0, 0, 278, 306, 319, + 196, 135, 0, 266, 289, 0, 0, 136, 164, 160, + 237, 214, 131, 176, 275, 185, 192, 249, 317, 226, + 255, 140, 305, 274, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 375, 376, 377, + 378, 379, 383, 384, 388, 389, 397, 396, 395, 398, + 399, 401, 400, 402, 380, 381, 382, 385, 386, 387, + 390, 391, 394, 392, 393, 0, 113, 124, 189, 0, + 247, 163, 307, 0, 155, 0, 0, 0, 0, 0, + 0, 115, 116, 125, 134, 141, 154, 159, 162, 168, + 172, 175, 177, 178, 179, 183, 197, 200, 201, 202, + 203, 217, 218, 220, 221, 224, 225, 228, 230, 231, + 232, 234, 235, 236, 241, 244, 246, 248, 251, 256, + 258, 259, 260, 262, 263, 264, 268, 269, 270, 271, + 279, 283, 293, 294, 304, 313, 315, 287, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 223, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 157, 0, + 0, 0, 0, 187, 0, 0, 148, 195, 193, 0, + 0, 0, 229, 285, 0, 0, 0, 0, 190, 0, + 0, 308, 276, 208, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 834, 0, 837, 0, 0, 0, 0, 0, 0, + 138, 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, 117, 0, 0, 0, 0, 167, 209, 128, 0, + 0, 0, 180, 314, 0, 0, 0, 243, 0, 281, + 170, 188, 132, 114, 126, 142, 169, 219, 252, 261, + 0, 0, 0, 0, 0, 149, 0, 254, 227, 303, + 0, 0, 233, 253, 191, 292, 245, 301, 302, 171, + 286, 311, 316, 273, 158, 0, 118, 0, 240, 153, + 184, 0, 0, 0, 146, 0, 0, 0, 272, 133, + 288, 207, 213, 143, 145, 144, 127, 267, 290, 137, + 147, 277, 257, 282, 152, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 119, 284, 300, 139, 265, 121, + 298, 280, 205, 181, 182, 120, 0, 250, 156, 166, + 151, 222, 0, 165, 242, 295, 296, 150, 318, 129, + 310, 123, 130, 309, 216, 0, 215, 312, 291, 299, + 206, 199, 0, 122, 297, 204, 198, 186, 161, 173, + 238, 194, 239, 174, 211, 210, 212, 0, 0, 0, + 278, 306, 319, 196, 135, 0, 266, 289, 0, 0, + 136, 164, 160, 237, 214, 131, 176, 275, 185, 192, + 249, 317, 226, 255, 140, 305, 274, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 375, 376, 377, 378, 379, 383, 384, 388, 389, 397, + 396, 395, 398, 399, 401, 400, 402, 380, 381, 382, + 385, 386, 387, 390, 391, 394, 392, 393, 0, 113, + 124, 189, 0, 247, 163, 307, 0, 155, 0, 0, + 0, 0, 0, 0, 115, 116, 125, 134, 141, 154, + 159, 162, 168, 172, 175, 177, 178, 179, 183, 197, + 200, 201, 202, 203, 217, 218, 220, 221, 224, 225, + 228, 230, 231, 232, 234, 235, 236, 241, 244, 246, + 248, 251, 256, 258, 259, 260, 262, 263, 264, 268, + 269, 270, 271, 279, 283, 293, 294, 304, 313, 315, + 287, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 223, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 157, 0, 0, 0, 0, 187, 0, 0, 148, + 195, 193, 0, 0, 0, 229, 285, 0, 0, 0, + 0, 190, 0, 0, 308, 276, 208, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 545, 0, 0, 0, 0, 0, + 0, 0, 0, 138, 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, 847, 846, 856, 857, 849, 850, 851, 852, 853, + 854, 855, 848, 0, 0, 858, 0, 0, 0, 0, + 0, 0, 0, 0, 117, 0, 0, 0, 0, 167, + 209, 128, 0, 0, 0, 180, 314, 0, 0, 0, + 243, 0, 281, 170, 188, 132, 114, 126, 142, 169, + 219, 252, 261, 0, 0, 0, 0, 0, 149, 0, + 254, 227, 303, 0, 0, 233, 253, 191, 292, 245, + 301, 302, 171, 286, 311, 316, 273, 158, 0, 118, + 0, 240, 153, 184, 0, 0, 0, 146, 0, 0, + 0, 272, 133, 288, 207, 213, 143, 145, 144, 127, + 267, 290, 137, 147, 277, 257, 282, 152, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 119, 284, 300, + 139, 265, 121, 298, 280, 205, 181, 182, 120, 0, + 250, 156, 166, 151, 222, 0, 165, 242, 295, 296, + 150, 318, 129, 310, 123, 130, 309, 216, 0, 215, + 312, 291, 299, 206, 199, 0, 122, 297, 204, 198, + 186, 161, 173, 238, 194, 239, 174, 211, 210, 212, + 0, 0, 0, 278, 306, 319, 196, 135, 0, 266, + 289, 0, 0, 136, 164, 160, 237, 214, 131, 176, + 275, 185, 192, 249, 317, 226, 255, 140, 305, 274, + 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, 113, 124, 189, 0, 247, 163, 307, 0, + 155, 0, 0, 0, 0, 0, 0, 115, 116, 125, + 134, 141, 154, 159, 162, 168, 172, 175, 177, 178, + 179, 183, 197, 200, 201, 202, 203, 217, 218, 220, + 221, 224, 225, 228, 230, 231, 232, 234, 235, 236, + 241, 244, 246, 248, 251, 256, 258, 259, 260, 262, + 263, 264, 268, 269, 270, 271, 279, 283, 293, 294, + 304, 313, 315, 30, 287, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 223, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 157, 0, 0, 0, 0, + 187, 0, 0, 148, 195, 193, 0, 0, 0, 229, + 285, 0, 0, 0, 1264, 190, 0, 0, 308, 276, + 208, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 71, 0, 0, 111, 0, + 0, 0, 0, 0, 0, 0, 0, 138, 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, 117, - 0, 0, 0, 0, 167, 209, 128, 0, 0, 0, - 180, 314, 0, 0, 0, 243, 0, 281, 170, 188, - 132, 114, 126, 142, 169, 219, 252, 261, 0, 0, - 0, 0, 0, 149, 0, 254, 227, 303, 0, 0, - 233, 253, 191, 292, 245, 301, 302, 171, 286, 311, - 316, 273, 158, 0, 118, 0, 240, 153, 184, 0, - 0, 0, 146, 0, 0, 0, 272, 133, 288, 207, - 213, 143, 145, 144, 127, 267, 290, 137, 147, 277, - 257, 282, 152, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 119, 284, 300, 139, 265, 121, 298, 280, - 205, 181, 182, 120, 0, 250, 156, 166, 151, 222, - 0, 165, 242, 295, 296, 150, 318, 129, 310, 123, - 130, 309, 216, 0, 215, 312, 291, 299, 206, 199, - 0, 122, 297, 204, 198, 186, 161, 173, 238, 194, - 239, 174, 211, 210, 212, 0, 0, 0, 278, 306, - 319, 196, 135, 0, 266, 289, 0, 0, 136, 164, - 160, 237, 214, 131, 176, 275, 185, 192, 249, 317, - 226, 255, 140, 305, 274, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 117, 0, + 0, 0, 0, 167, 209, 128, 0, 0, 0, 180, + 314, 0, 0, 0, 243, 0, 281, 170, 188, 132, + 114, 126, 142, 169, 219, 252, 261, 0, 0, 0, + 0, 0, 149, 0, 254, 227, 303, 0, 0, 233, + 253, 191, 292, 245, 301, 302, 171, 286, 311, 316, + 273, 158, 0, 118, 0, 240, 153, 184, 0, 0, + 0, 146, 0, 0, 0, 272, 133, 288, 207, 213, + 143, 145, 144, 127, 267, 290, 137, 147, 277, 257, + 282, 152, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 119, 284, 300, 139, 265, 121, 298, 280, 205, + 181, 182, 120, 0, 250, 156, 166, 151, 222, 0, + 165, 242, 295, 296, 150, 318, 129, 310, 123, 130, + 309, 216, 0, 215, 312, 291, 299, 206, 199, 0, + 122, 297, 204, 198, 186, 161, 173, 238, 194, 239, + 174, 211, 210, 212, 0, 0, 0, 278, 306, 319, + 196, 135, 0, 266, 289, 0, 0, 136, 164, 160, + 237, 214, 131, 176, 275, 185, 192, 249, 317, 226, + 255, 140, 305, 274, 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, 113, 124, 189, - 0, 247, 163, 307, 0, 155, 0, 0, 0, 0, - 0, 0, 115, 116, 125, 134, 141, 154, 159, 162, - 168, 172, 175, 177, 178, 179, 183, 197, 200, 201, - 202, 203, 217, 218, 220, 221, 224, 225, 228, 230, - 231, 232, 234, 235, 236, 241, 244, 246, 248, 251, - 256, 258, 259, 260, 262, 263, 264, 268, 269, 270, - 271, 279, 283, 293, 294, 304, 313, 315, 287, 0, - 0, 0, 516, 0, 0, 0, 0, 0, 0, 223, + 0, 0, 0, 0, 0, 0, 113, 124, 189, 70, + 247, 163, 307, 0, 155, 0, 0, 0, 0, 0, + 0, 115, 116, 125, 134, 141, 154, 159, 162, 168, + 172, 175, 177, 178, 179, 183, 197, 200, 201, 202, + 203, 217, 218, 220, 221, 224, 225, 228, 230, 231, + 232, 234, 235, 236, 241, 244, 246, 248, 251, 256, + 258, 259, 260, 262, 263, 264, 268, 269, 270, 271, + 279, 283, 293, 294, 304, 313, 315, 30, 287, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, 157, 0, 0, 0, 0, 187, 0, 0, 148, 195, 193, 0, 0, 0, 229, 285, 0, 0, 0, 0, 190, 0, 0, 308, 276, 208, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 111, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, + 0, 0, 545, 0, 0, 0, 0, 0, 0, 0, 0, 138, 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, @@ -3345,7 +3138,7 @@ var yyAct = [...]int{ 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, - 113, 124, 189, 0, 247, 163, 307, 0, 155, 0, + 113, 124, 189, 70, 247, 163, 307, 0, 155, 0, 0, 0, 0, 0, 0, 115, 116, 125, 134, 141, 154, 159, 162, 168, 172, 175, 177, 178, 179, 183, 197, 200, 201, 202, 203, 217, 218, 220, 221, 224, @@ -3354,18 +3147,18 @@ var yyAct = [...]int{ 268, 269, 270, 271, 279, 283, 293, 294, 304, 313, 315, 287, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 223, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 157, 0, 0, 0, 0, 187, 0, 0, + 0, 0, 157, 981, 0, 0, 0, 187, 0, 0, 148, 195, 193, 0, 0, 0, 229, 285, 0, 0, 0, 0, 190, 0, 0, 308, 276, 208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 111, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 545, 0, 980, 0, 0, 0, 0, 0, 0, 138, 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, 117, 0, 0, 0, 0, - 167, 209, 128, 0, 108, 0, 180, 314, 0, 0, + 167, 209, 128, 0, 0, 0, 180, 314, 0, 0, 0, 243, 0, 281, 170, 188, 132, 114, 126, 142, 169, 219, 252, 261, 0, 0, 0, 0, 0, 149, 0, 254, 227, 303, 0, 0, 233, 253, 191, 292, @@ -3400,7 +3193,7 @@ var yyAct = [...]int{ 187, 0, 0, 148, 195, 193, 0, 0, 0, 229, 285, 0, 0, 0, 0, 190, 0, 0, 308, 276, 208, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 545, 0, + 0, 0, 0, 0, 0, 71, 0, 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3442,8 +3235,8 @@ var yyAct = [...]int{ 0, 0, 0, 187, 0, 0, 148, 195, 193, 0, 0, 0, 229, 285, 0, 0, 0, 0, 190, 0, 0, 308, 276, 208, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, + 0, 545, 0, 0, 0, 0, 0, 0, 0, 0, 138, 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, @@ -3481,11 +3274,11 @@ var yyAct = [...]int{ 269, 270, 271, 279, 283, 293, 294, 304, 313, 315, 287, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 223, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 157, 0, 0, 0, 0, 187, 0, 0, 148, + 950, 157, 0, 0, 0, 0, 187, 0, 0, 148, 195, 193, 0, 0, 0, 229, 285, 0, 0, 0, 0, 190, 0, 0, 308, 276, 208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 424, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, 138, 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, @@ -3503,11 +3296,11 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 119, 284, 300, 139, 265, 121, 298, 280, 205, 181, 182, 120, 0, 250, 156, 166, 151, 222, 0, 165, 242, 295, 296, - 150, 318, 129, 310, 123, 533, 309, 216, 0, 215, + 150, 318, 129, 310, 123, 130, 309, 216, 0, 215, 312, 291, 299, 206, 199, 0, 122, 297, 204, 198, 186, 161, 173, 238, 194, 239, 174, 211, 210, 212, 0, 0, 0, 278, 306, 319, 196, 135, 0, 266, - 289, 0, 0, 136, 164, 160, 237, 534, 532, 176, + 289, 0, 0, 136, 164, 160, 237, 214, 131, 176, 275, 185, 192, 249, 317, 226, 255, 140, 305, 274, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3521,13 +3314,13 @@ var yyAct = [...]int{ 221, 224, 225, 228, 230, 231, 232, 234, 235, 236, 241, 244, 246, 248, 251, 256, 258, 259, 260, 262, 263, 264, 268, 269, 270, 271, 279, 283, 293, 294, - 304, 313, 315, 287, 0, 0, 0, 0, 0, 0, + 304, 313, 315, 287, 0, 0, 0, 516, 0, 0, 0, 0, 0, 0, 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, 157, 0, 0, 0, 0, 187, 0, 0, 148, 195, 193, 0, 0, 0, 229, 285, 0, 0, 0, 0, 190, 0, 0, 308, 276, 208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 424, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3556,114 +3349,325 @@ var yyAct = [...]int{ 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, 113, 124, 189, 0, 247, - 163, 307, 0, 155, 0, 0, 0, 0, 0, 0, - 115, 116, 125, 134, 141, 154, 159, 162, 168, 172, - 175, 177, 178, 179, 183, 197, 200, 201, 202, 203, - 217, 218, 220, 221, 224, 225, 228, 230, 231, 232, - 234, 235, 236, 241, 244, 246, 248, 251, 256, 258, - 259, 260, 262, 263, 264, 268, 269, 270, 271, 279, - 283, 293, 294, 304, 313, 315, 287, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 223, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 157, 0, 0, - 0, 0, 187, 0, 0, 148, 195, 193, 0, 0, - 0, 229, 285, 0, 0, 0, 0, 190, 0, 0, - 308, 276, 208, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 113, 124, 189, 0, 247, + 163, 307, 0, 155, 0, 0, 0, 0, 0, 0, + 115, 116, 125, 134, 141, 154, 159, 162, 168, 172, + 175, 177, 178, 179, 183, 197, 200, 201, 202, 203, + 217, 218, 220, 221, 224, 225, 228, 230, 231, 232, + 234, 235, 236, 241, 244, 246, 248, 251, 256, 258, + 259, 260, 262, 263, 264, 268, 269, 270, 271, 279, + 283, 293, 294, 304, 313, 315, 287, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 223, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 157, 0, 0, + 0, 0, 187, 0, 0, 148, 195, 193, 0, 0, + 0, 229, 285, 0, 0, 0, 0, 190, 0, 0, + 308, 276, 208, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 111, 0, 0, 0, 0, 0, 0, 0, 0, 138, + 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, + 117, 0, 0, 0, 0, 167, 209, 128, 0, 108, + 0, 180, 314, 0, 0, 0, 243, 0, 281, 170, + 188, 132, 114, 126, 142, 169, 219, 252, 261, 0, + 0, 0, 0, 0, 149, 0, 254, 227, 303, 0, + 0, 233, 253, 191, 292, 245, 301, 302, 171, 286, + 311, 316, 273, 158, 0, 118, 0, 240, 153, 184, + 0, 0, 0, 146, 0, 0, 0, 272, 133, 288, + 207, 213, 143, 145, 144, 127, 267, 290, 137, 147, + 277, 257, 282, 152, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 119, 284, 300, 139, 265, 121, 298, + 280, 205, 181, 182, 120, 0, 250, 156, 166, 151, + 222, 0, 165, 242, 295, 296, 150, 318, 129, 310, + 123, 130, 309, 216, 0, 215, 312, 291, 299, 206, + 199, 0, 122, 297, 204, 198, 186, 161, 173, 238, + 194, 239, 174, 211, 210, 212, 0, 0, 0, 278, + 306, 319, 196, 135, 0, 266, 289, 0, 0, 136, + 164, 160, 237, 214, 131, 176, 275, 185, 192, 249, + 317, 226, 255, 140, 305, 274, 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, 113, 124, + 189, 0, 247, 163, 307, 0, 155, 0, 0, 0, + 0, 0, 0, 115, 116, 125, 134, 141, 154, 159, + 162, 168, 172, 175, 177, 178, 179, 183, 197, 200, + 201, 202, 203, 217, 218, 220, 221, 224, 225, 228, + 230, 231, 232, 234, 235, 236, 241, 244, 246, 248, + 251, 256, 258, 259, 260, 262, 263, 264, 268, 269, + 270, 271, 279, 283, 293, 294, 304, 313, 315, 287, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 157, 0, 0, 0, 0, 187, 0, 0, 148, 195, + 193, 0, 0, 0, 229, 285, 0, 0, 0, 0, + 190, 0, 0, 308, 276, 208, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 545, 0, 0, 0, 0, 0, 0, + 0, 0, 138, 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, 117, 0, 0, 0, 0, 167, 209, + 128, 0, 0, 0, 180, 314, 0, 0, 0, 243, + 0, 281, 170, 188, 132, 114, 126, 142, 169, 219, + 252, 261, 0, 0, 0, 0, 0, 149, 0, 254, + 227, 303, 0, 0, 233, 253, 191, 292, 245, 301, + 302, 171, 286, 311, 316, 273, 158, 0, 118, 0, + 240, 153, 184, 0, 0, 0, 146, 0, 0, 0, + 272, 133, 288, 207, 213, 143, 145, 144, 127, 267, + 290, 137, 147, 277, 257, 282, 152, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 119, 284, 300, 139, + 265, 121, 298, 280, 205, 181, 182, 120, 0, 250, + 156, 166, 151, 222, 0, 165, 242, 295, 296, 150, + 318, 129, 310, 123, 130, 309, 216, 0, 215, 312, + 291, 299, 206, 199, 0, 122, 297, 204, 198, 186, + 161, 173, 238, 194, 239, 174, 211, 210, 212, 0, + 0, 0, 278, 306, 319, 196, 135, 0, 266, 289, + 0, 0, 136, 164, 160, 237, 214, 131, 176, 275, + 185, 192, 249, 317, 226, 255, 140, 305, 274, 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, 113, 124, 189, 0, 247, 163, 307, 0, 155, + 0, 0, 0, 0, 0, 0, 115, 116, 125, 134, + 141, 154, 159, 162, 168, 172, 175, 177, 178, 179, + 183, 197, 200, 201, 202, 203, 217, 218, 220, 221, + 224, 225, 228, 230, 231, 232, 234, 235, 236, 241, + 244, 246, 248, 251, 256, 258, 259, 260, 262, 263, + 264, 268, 269, 270, 271, 279, 283, 293, 294, 304, + 313, 315, 287, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 223, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 157, 0, 0, 0, 0, 187, 0, + 0, 148, 195, 193, 0, 0, 0, 229, 285, 0, + 0, 0, 0, 190, 0, 0, 308, 276, 208, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 111, 0, 0, 0, + 0, 0, 0, 0, 0, 138, 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, 117, 0, 0, 0, + 0, 167, 209, 128, 0, 0, 0, 180, 314, 0, + 0, 0, 243, 0, 281, 170, 188, 132, 114, 126, + 142, 169, 219, 252, 261, 0, 0, 0, 0, 0, + 149, 0, 254, 227, 303, 0, 0, 233, 253, 191, + 292, 245, 301, 302, 171, 286, 311, 316, 273, 158, + 0, 118, 0, 240, 153, 184, 0, 0, 0, 146, + 0, 0, 0, 272, 133, 288, 207, 213, 143, 145, + 144, 127, 267, 290, 137, 147, 277, 257, 282, 152, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, + 284, 300, 139, 265, 121, 298, 280, 205, 181, 182, + 120, 0, 250, 156, 166, 151, 222, 0, 165, 242, + 295, 296, 150, 318, 129, 310, 123, 130, 309, 216, + 0, 215, 312, 291, 299, 206, 199, 0, 122, 297, + 204, 198, 186, 161, 173, 238, 194, 239, 174, 211, + 210, 212, 0, 0, 0, 278, 306, 319, 196, 135, + 0, 266, 289, 0, 0, 136, 164, 160, 237, 214, + 131, 176, 275, 185, 192, 249, 317, 226, 255, 140, + 305, 274, 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, 113, 124, 189, 0, 247, 163, + 307, 0, 155, 0, 0, 0, 0, 0, 0, 115, + 116, 125, 134, 141, 154, 159, 162, 168, 172, 175, + 177, 178, 179, 183, 197, 200, 201, 202, 203, 217, + 218, 220, 221, 224, 225, 228, 230, 231, 232, 234, + 235, 236, 241, 244, 246, 248, 251, 256, 258, 259, + 260, 262, 263, 264, 268, 269, 270, 271, 279, 283, + 293, 294, 304, 313, 315, 287, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 223, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 157, 0, 0, 0, + 0, 187, 0, 0, 148, 195, 193, 0, 0, 0, + 229, 285, 0, 0, 0, 0, 190, 0, 0, 308, + 276, 208, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 424, + 0, 0, 0, 0, 0, 0, 0, 0, 138, 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, 117, + 0, 0, 0, 0, 167, 209, 128, 0, 0, 0, + 180, 314, 0, 0, 0, 243, 0, 281, 170, 188, + 132, 114, 126, 142, 169, 219, 252, 261, 0, 0, + 0, 0, 0, 149, 0, 254, 227, 303, 0, 0, + 233, 253, 191, 292, 245, 301, 302, 171, 286, 311, + 316, 273, 158, 0, 118, 0, 240, 153, 184, 0, + 0, 0, 146, 0, 0, 0, 272, 133, 288, 207, + 213, 143, 145, 144, 127, 267, 290, 137, 147, 277, + 257, 282, 152, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 119, 284, 300, 139, 265, 121, 298, 280, + 205, 181, 182, 120, 0, 250, 156, 166, 151, 222, + 0, 165, 242, 295, 296, 150, 318, 129, 310, 123, + 533, 309, 216, 0, 215, 312, 291, 299, 206, 199, + 0, 122, 297, 204, 198, 186, 161, 173, 238, 194, + 239, 174, 211, 210, 212, 0, 0, 0, 278, 306, + 319, 196, 135, 0, 266, 289, 0, 0, 136, 164, + 160, 237, 534, 532, 176, 275, 185, 192, 249, 317, + 226, 255, 140, 305, 274, 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, 113, 124, 189, + 0, 247, 163, 307, 0, 155, 0, 0, 0, 0, + 0, 0, 115, 116, 125, 134, 141, 154, 159, 162, + 168, 172, 175, 177, 178, 179, 183, 197, 200, 201, + 202, 203, 217, 218, 220, 221, 224, 225, 228, 230, + 231, 232, 234, 235, 236, 241, 244, 246, 248, 251, + 256, 258, 259, 260, 262, 263, 264, 268, 269, 270, + 271, 279, 283, 293, 294, 304, 313, 315, 287, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 223, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 157, + 0, 0, 0, 0, 187, 0, 0, 148, 195, 193, + 0, 0, 0, 229, 285, 0, 0, 0, 0, 190, + 0, 0, 308, 276, 208, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 424, 0, 0, 0, 0, 0, 0, 0, + 0, 138, 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, 117, 0, 0, 0, 0, 167, 209, 128, + 0, 0, 0, 180, 314, 0, 0, 0, 243, 0, + 281, 170, 188, 132, 114, 126, 142, 169, 219, 252, + 261, 0, 0, 0, 0, 0, 149, 0, 254, 227, + 303, 0, 0, 233, 253, 191, 292, 245, 301, 302, + 171, 286, 311, 316, 273, 158, 0, 118, 0, 240, + 153, 184, 0, 0, 0, 146, 0, 0, 0, 272, + 133, 288, 207, 213, 143, 145, 144, 127, 267, 290, + 137, 147, 277, 257, 282, 152, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 119, 284, 300, 139, 265, + 121, 298, 280, 205, 181, 182, 120, 0, 250, 156, + 166, 151, 222, 0, 165, 242, 295, 296, 150, 318, + 129, 310, 123, 130, 309, 216, 0, 215, 312, 291, + 299, 206, 199, 0, 122, 297, 204, 198, 186, 161, + 173, 238, 194, 239, 174, 211, 210, 212, 0, 0, + 0, 278, 306, 319, 196, 135, 0, 266, 289, 0, + 0, 136, 164, 160, 237, 214, 131, 176, 275, 185, + 192, 249, 317, 226, 255, 140, 305, 274, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 424, 0, 0, 0, 0, 0, 0, 0, 0, 138, 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, + 113, 124, 189, 0, 247, 163, 307, 0, 155, 0, + 0, 0, 0, 0, 0, 115, 116, 125, 134, 141, + 154, 159, 162, 168, 172, 175, 177, 178, 179, 183, + 197, 200, 201, 202, 203, 217, 218, 220, 221, 224, + 225, 228, 230, 231, 232, 234, 235, 236, 241, 244, + 246, 248, 251, 256, 258, 259, 260, 262, 263, 264, + 268, 269, 270, 271, 279, 283, 293, 294, 304, 313, + 315, 287, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 223, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 157, 0, 0, 0, 0, 187, 0, 0, + 148, 195, 193, 0, 0, 0, 229, 285, 0, 0, + 0, 0, 190, 0, 0, 308, 276, 208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 424, 0, 0, 0, 0, + 0, 0, 0, 0, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 117, 0, 0, 0, 0, 167, 209, 128, 0, 0, - 0, 180, 314, 0, 0, 0, 243, 0, 281, 170, - 188, 132, 114, 126, 142, 169, 219, 252, 261, 0, - 0, 0, 0, 0, 149, 0, 254, 227, 303, 0, - 0, 233, 253, 191, 292, 245, 301, 302, 171, 286, - 311, 316, 273, 158, 0, 118, 0, 240, 153, 184, - 0, 0, 0, 146, 0, 0, 0, 272, 133, 288, - 207, 213, 143, 145, 144, 127, 267, 290, 137, 147, - 277, 257, 282, 152, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 119, 284, 972, 139, 265, 121, 298, - 280, 205, 181, 182, 120, 0, 250, 156, 166, 151, - 222, 0, 165, 242, 295, 296, 150, 318, 129, 310, - 123, 533, 309, 216, 0, 215, 312, 291, 299, 206, - 199, 0, 122, 297, 204, 198, 186, 161, 173, 238, - 194, 239, 174, 211, 210, 212, 0, 0, 0, 278, - 306, 319, 196, 135, 0, 266, 289, 0, 0, 136, - 164, 160, 237, 534, 532, 176, 275, 185, 192, 249, - 317, 226, 255, 140, 305, 274, 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, 117, 0, 0, 0, 0, + 167, 209, 128, 0, 0, 0, 180, 314, 0, 0, + 0, 243, 0, 281, 170, 188, 132, 114, 126, 142, + 169, 219, 252, 261, 0, 0, 0, 0, 0, 149, + 0, 254, 227, 303, 0, 0, 233, 253, 191, 292, + 245, 301, 302, 171, 286, 311, 316, 273, 158, 0, + 118, 0, 240, 153, 184, 0, 0, 0, 146, 0, + 0, 0, 272, 133, 288, 207, 213, 143, 145, 144, + 127, 267, 290, 137, 147, 277, 257, 282, 152, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 119, 284, + 972, 139, 265, 121, 298, 280, 205, 181, 182, 120, + 0, 250, 156, 166, 151, 222, 0, 165, 242, 295, + 296, 150, 318, 129, 310, 123, 533, 309, 216, 0, + 215, 312, 291, 299, 206, 199, 0, 122, 297, 204, + 198, 186, 161, 173, 238, 194, 239, 174, 211, 210, + 212, 0, 0, 0, 278, 306, 319, 196, 135, 0, + 266, 289, 0, 0, 136, 164, 160, 237, 534, 532, + 176, 275, 185, 192, 249, 317, 226, 255, 140, 305, + 274, 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, 113, 124, - 189, 0, 247, 163, 307, 0, 155, 0, 0, 0, - 0, 0, 0, 115, 116, 125, 134, 141, 154, 159, - 162, 168, 172, 175, 177, 178, 179, 183, 197, 200, - 201, 202, 203, 217, 218, 220, 221, 224, 225, 228, - 230, 231, 232, 234, 235, 236, 241, 244, 246, 248, - 251, 256, 258, 259, 260, 262, 263, 264, 268, 269, - 270, 271, 279, 283, 293, 294, 304, 313, 315, 287, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 157, 0, 0, 0, 0, 187, 0, 0, 148, 195, - 193, 0, 0, 0, 229, 285, 0, 0, 0, 0, - 190, 0, 0, 308, 276, 208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 424, 0, 0, 0, 0, 0, 0, - 0, 0, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 113, 124, 189, 0, 247, 163, 307, + 0, 155, 0, 0, 0, 0, 0, 0, 115, 116, + 125, 134, 141, 154, 159, 162, 168, 172, 175, 177, + 178, 179, 183, 197, 200, 201, 202, 203, 217, 218, + 220, 221, 224, 225, 228, 230, 231, 232, 234, 235, + 236, 241, 244, 246, 248, 251, 256, 258, 259, 260, + 262, 263, 264, 268, 269, 270, 271, 279, 283, 293, + 294, 304, 313, 315, 287, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 223, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 157, 0, 0, 0, 0, + 187, 0, 0, 148, 195, 193, 0, 0, 0, 229, + 285, 0, 0, 0, 0, 190, 0, 0, 308, 276, + 208, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 424, 0, + 0, 0, 0, 0, 0, 0, 0, 138, 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, 117, 0, 0, 0, 0, 167, 209, - 128, 0, 0, 0, 180, 314, 0, 0, 0, 243, - 0, 281, 170, 188, 132, 114, 126, 142, 169, 219, - 252, 261, 0, 0, 0, 0, 0, 149, 0, 254, - 227, 303, 0, 0, 233, 253, 191, 292, 245, 301, - 302, 171, 286, 311, 316, 273, 158, 0, 118, 0, - 240, 153, 184, 0, 0, 0, 146, 0, 0, 0, - 272, 133, 288, 207, 213, 143, 145, 144, 127, 267, - 290, 137, 147, 277, 257, 282, 152, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 119, 284, 524, 139, - 265, 121, 298, 280, 205, 181, 182, 120, 0, 250, - 156, 166, 151, 222, 0, 165, 242, 295, 296, 150, - 318, 129, 310, 123, 533, 309, 216, 0, 215, 312, - 291, 299, 206, 199, 0, 122, 297, 204, 198, 186, - 161, 173, 238, 194, 239, 174, 211, 210, 212, 0, - 0, 0, 278, 306, 319, 196, 135, 0, 266, 289, - 0, 0, 136, 164, 160, 237, 534, 532, 527, 526, - 185, 192, 249, 317, 226, 255, 140, 305, 274, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 117, 0, + 0, 0, 0, 167, 209, 128, 0, 0, 0, 180, + 314, 0, 0, 0, 243, 0, 281, 170, 188, 132, + 114, 126, 142, 169, 219, 252, 261, 0, 0, 0, + 0, 0, 149, 0, 254, 227, 303, 0, 0, 233, + 253, 191, 292, 245, 301, 302, 171, 286, 311, 316, + 273, 158, 0, 118, 0, 240, 153, 184, 0, 0, + 0, 146, 0, 0, 0, 272, 133, 288, 207, 213, + 143, 145, 144, 127, 267, 290, 137, 147, 277, 257, + 282, 152, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 119, 284, 524, 139, 265, 121, 298, 280, 205, + 181, 182, 120, 0, 250, 156, 166, 151, 222, 0, + 165, 242, 295, 296, 150, 318, 129, 310, 123, 533, + 309, 216, 0, 215, 312, 291, 299, 206, 199, 0, + 122, 297, 204, 198, 186, 161, 173, 238, 194, 239, + 174, 211, 210, 212, 0, 0, 0, 278, 306, 319, + 196, 135, 0, 266, 289, 0, 0, 136, 164, 160, + 237, 534, 532, 527, 526, 185, 192, 249, 317, 226, + 255, 140, 305, 274, 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, 113, 124, 189, 0, 247, 163, 307, 0, 155, - 0, 0, 0, 0, 0, 0, 115, 116, 125, 134, - 141, 154, 159, 162, 168, 172, 175, 177, 178, 179, - 183, 197, 200, 201, 202, 203, 217, 218, 220, 221, - 224, 225, 228, 230, 231, 232, 234, 235, 236, 241, - 244, 246, 248, 251, 256, 258, 259, 260, 262, 263, - 264, 268, 269, 270, 271, 279, 283, 293, 294, 304, - 313, 315, + 0, 0, 0, 0, 0, 0, 113, 124, 189, 0, + 247, 163, 307, 0, 155, 0, 0, 0, 0, 0, + 0, 115, 116, 125, 134, 141, 154, 159, 162, 168, + 172, 175, 177, 178, 179, 183, 197, 200, 201, 202, + 203, 217, 218, 220, 221, 224, 225, 228, 230, 231, + 232, 234, 235, 236, 241, 244, 246, 248, 251, 256, + 258, 259, 260, 262, 263, 264, 268, 269, 270, 271, + 279, 283, 293, 294, 304, 313, 315, } var yyPact = [...]int{ - 222, -1000, -298, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 2650, -1000, -296, -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, 1453, 1518, - -1000, -1000, -1000, -1000, -1000, -1000, 599, 264, -1000, -1000, - 291, 133, 22084, 288, 2341, 22930, -1000, -1000, -1000, -1000, - 203, 22930, -1000, -1000, -80, -82, -1000, 198, 241, 1054, - 1358, 1514, 165, -1000, -1000, 275, 31, -1000, -1000, -1000, - 17852, -1000, -1000, -1000, 1417, 1451, 192, 1419, 1280, -1000, - 11507, 238, 238, 21661, 24622, -1000, 22930, 10236, 276, 22930, - -149, 234, 234, 153, 234, -1000, 581, -1000, -1000, -1000, - 22930, 235, 22507, 235, 235, 235, 235, 235, 22930, -1000, - 459, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1540, 1581, + -1000, -1000, -1000, -1000, -1000, -1000, 541, 216, -1000, -1000, + 250, 131, 22119, 249, 2665, 22965, -1000, -1000, -1000, -1000, + 187, 22965, -1000, -1000, -88, -97, -1000, 171, 232, 1094, + 1390, 1579, 160, -1000, -1000, 218, 5, -1000, -1000, -1000, + 17887, -1000, -1000, -1000, 1510, 1537, 161, 1478, 1327, -1000, + 11542, 223, 223, 21696, 24657, -1000, 22965, 10271, 244, 22965, + -142, 205, 205, 141, 205, -1000, 518, -1000, -1000, -1000, + 22965, 206, 22542, 206, 206, 206, 206, 206, 22965, -1000, + 302, -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, @@ -3684,29 +3688,29 @@ 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, - 22930, 1053, 1381, 612, 104, 7254, 7254, -1000, 650, -1000, - 148, 145, 141, 143, 26, 672, -1000, 7254, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 200, 165, 556, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 1380, 1379, 842, 1370, 94, - 1369, 1180, -72, -1000, 945, 282, 22930, -1000, -1000, 1138, - -1000, 1194, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 22965, 1087, 1418, 619, 118, 7289, 7289, -1000, 599, -1000, + 124, 121, 119, 113, 22, 626, -1000, 7289, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 200, 160, 485, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 1417, 1415, 825, 1412, 348, + 1409, 1270, -80, -1000, 994, 248, 22965, -1000, -1000, 1201, + -1000, 1246, -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, 1377, 14045, 14468, 1453, -1000, 165, -1000, - -1000, -1000, 1316, -1000, -1000, 753, 1486, -1000, 17006, 458, - -1000, 14045, 2801, 1140, -1000, -1000, 1140, -1000, -1000, 416, - -1000, -1000, 15737, 15737, 15737, 15737, 15737, 15737, 15737, 15737, + -1000, -1000, -1000, 1413, 14080, 14503, 1540, -1000, 160, -1000, + -1000, -1000, 1365, -1000, -1000, 620, 1562, -1000, 17041, 301, + -1000, 14080, 2942, 1206, -1000, -1000, 1206, -1000, -1000, 263, + -1000, -1000, 15772, 15772, 15772, 15772, 15772, 15772, 15772, 15772, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 1140, -1000, 11084, 1140, - 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 14045, - 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, - 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, - 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, - 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, - 1140, 1140, 1140, 1140, 21238, 20392, 22930, 1125, 1121, -1000, - -1000, 456, 1075, 24199, -99, -1000, -1000, -1000, 552, 19969, - -1000, 455, -1000, 1368, -1000, -1000, 1052, 196, -1000, 3095, - 449, -1000, -1000, -1000, 1179, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 1206, -1000, 11119, 1206, + 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 14080, + 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, + 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, + 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, + 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, + 1206, 1206, 1206, 1206, 21273, 20427, 22965, 1158, 1150, -1000, + -1000, 298, 1059, 24234, -121, -1000, -1000, -1000, 469, 20004, + -1000, 290, -1000, 1404, -1000, -1000, 1098, 181, -1000, 420, + 271, -1000, -1000, -1000, 1268, -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, @@ -3720,330 +3724,332 @@ 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, 22507, 1416, 250, 1047, 697, 1046, 1045, 1043, 22930, - 1040, 1135, 248, 22930, 1401, 1216, 22930, 1032, 1031, 1030, - 1021, -1000, 9810, -1000, 7254, 612, -1000, 863, 14045, 234, - 234, 7254, 7254, 7254, 22930, 22930, 22930, -1000, -1000, -1000, - -1000, 22930, -1000, -1000, 612, 612, 7254, 7254, 608, 1481, - 608, 608, -1000, -1000, -1000, -1000, 14045, -1000, 15737, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 1019, -1000, -1000, 94, - 94, -1000, 861, 94, 1128, -1000, 541, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 94, - -1000, 13622, -294, -1000, 1280, -1000, -1000, 22930, 7254, 17852, - 1140, 22507, -1000, 1510, 511, 616, 452, 1133, -1000, 762, - 1390, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, - 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, - 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1417, - 945, 1280, 886, 1298, -1000, -1000, -1000, 22930, -1000, 14045, - 14045, 828, -1000, 18275, -1000, -1000, -1000, -1000, 8106, 518, - 15737, 789, 557, 15737, 15737, 15737, 15737, 15737, 15737, 15737, - 15737, 15737, 15737, 15737, 15737, 15737, 15737, 15737, 804, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1013, -1000, 165, - 912, 912, 467, 467, 467, 467, 467, 467, 467, 18698, - 1411, 945, 1029, 571, 11084, 12353, 12353, 945, 14045, 14045, - 13199, 12776, 12353, 12353, 1411, 614, 571, 23776, -1000, -1000, - 15314, -1000, -1000, -1000, -1000, -1000, 945, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 22507, 22507, 12353, 12353, 12353, - 12353, 945, 945, 12353, 12353, 12353, 12353, 12353, 945, 945, - 945, 945, 1411, 1411, 12353, 12353, 12353, 1411, 12353, 12353, - 1411, 12353, 12353, 12353, 12353, 1411, 12353, 12353, 12353, 164, - 22930, -1000, 1117, 1283, -1000, -1000, -1000, 1415, 19122, 16583, - -1000, 164, 1072, 20392, 22930, -1000, -1000, 20392, 22930, 7680, - 23353, 1075, -99, 1085, -1000, -104, -117, 10660, 454, -1000, - -1000, -1000, 8958, -1000, 5550, 9384, -1000, 449, 1179, -1000, - -61, -1000, -1000, -1000, 1159, -1000, 1159, 168, -25, 1159, - 1159, 1159, 1159, 1159, -29, -29, -29, -29, -1, -1000, - -1000, -1000, -1000, -1000, 1176, 1175, -1000, 1159, 1159, 1159, + -1000, 22542, 1451, 233, 1080, 555, 1076, 1075, 1066, 22965, + 1064, 1196, 230, 22965, 1437, 1282, 22965, 1062, 1061, 1060, + 1058, -1000, 9845, -1000, 7289, 619, -1000, 857, 14080, 205, + 205, 7289, 7289, 7289, 22965, 22965, 22965, -1000, -1000, -1000, + -1000, 22965, -1000, -1000, 619, 619, 7289, 7289, 570, 1561, + 570, 570, -1000, -1000, -1000, -1000, 14080, -1000, 15772, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 1056, -1000, -1000, 348, + 348, -1000, 853, 348, 1161, -1000, 444, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 348, + -1000, 13657, -292, -1000, 1327, -1000, -1000, 22965, 7289, 17887, + 1206, 22542, -1000, 1574, 336, 1026, 289, 1194, -1000, 622, + 1426, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, + 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, + 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1510, + 994, 1327, 889, 1339, -1000, -1000, -1000, 22965, -1000, 14080, + 14080, 919, -1000, 18310, -1000, -1000, -1000, -1000, 8141, 352, + 15772, 813, 517, 15772, 15772, 15772, 15772, 15772, 15772, 15772, + 15772, 15772, 15772, 15772, 15772, 15772, 15772, 15772, 751, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1053, -1000, 160, + 1068, 1068, 319, 319, 319, 319, 319, 319, 319, 18733, + 1448, 994, 1048, 741, 11119, 12388, 12388, 994, 14080, 14080, + 13234, 12811, 12388, 12388, 1448, 525, 741, 23811, -1000, -1000, + 15349, -1000, -1000, -1000, -1000, -1000, 994, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 22542, 22542, 12388, 12388, 12388, + 12388, 994, 994, 12388, 12388, 12388, 12388, 12388, 994, 994, + 994, 994, 1448, 1448, 12388, 12388, 12388, 1448, 12388, 12388, + 1448, 12388, 12388, 12388, 12388, 1448, 12388, 12388, 12388, 148, + 22965, -1000, 1163, 1223, -1000, -1000, -1000, 1449, 19157, 16618, + -1000, 148, 1135, 20427, 22965, -1000, -1000, 20427, 22965, 7715, + 23388, 1059, -121, 1151, -1000, -104, -109, 10695, 273, -1000, + -1000, -1000, 8993, -1000, 5585, 9419, -1000, 271, 1268, -1000, + -76, -1000, -1000, -1000, 1230, -1000, 1230, 149, -31, 1230, + 1230, 1230, 1230, 1230, -28, -28, -28, -28, -30, -1000, + -1000, -1000, -1000, -1000, 1267, 1266, -1000, 1230, 1230, 1230, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1171, 177, - 1163, 1163, 1163, 1163, 1163, 205, -1000, 14045, 1192, -1000, - 22930, 7254, 1393, 7254, 128, 1174, -1000, -1000, 22930, 22930, - 1132, -1000, 22930, 1130, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 571, 1005, 1003, -1000, -1000, - -1000, -1000, -1000, -1000, 609, -1000, -1000, -1000, -1000, 612, - 22930, 22930, 22930, 1414, 612, 571, 578, -1000, 1128, 1128, - -1000, 1128, 94, 912, 1128, -1000, 1018, 1395, 860, 1411, - 263, -1000, -1000, -1000, 190, 975, 451, -1000, 1276, 14045, - 14045, 8958, 14468, -1000, -1000, -1000, -1000, 1377, -1000, 1411, - 1434, -1000, 1309, 1307, 1203, -1000, -1000, 518, 550, -1000, - -1000, 707, -1000, -1000, -1000, -1000, 428, 1140, -1000, 3082, - -1000, -1000, -1000, -1000, 789, 15737, 15737, 15737, 578, 3082, - 2891, 1392, 1623, 467, 555, 555, 468, 468, 468, 468, - 468, 494, 494, -1000, -1000, -1000, 945, -1000, -1000, -1000, - 12353, -1000, 14045, -1000, 945, 999, -1000, -1000, 571, 426, - 999, -1000, 632, 622, 531, 1465, 999, 431, 1462, 999, - 999, 999, 12353, 686, -1000, 14045, 945, -1000, 2014, 1108, - 1102, 999, 945, 1086, 999, 999, -174, -174, 945, 999, - 945, 999, 999, -174, -174, -174, -174, 12353, 12353, 999, - 999, 999, 12353, 999, 999, 12353, 999, 999, 999, 999, - 12353, 999, 999, 999, 187, 1140, -1000, 23353, 20392, 20392, - 20392, 20392, 20392, -1000, 1239, 1237, -1000, 1236, 1229, 1256, - 17852, -1000, 1009, 945, 126, 19122, -1000, 1140, -1000, 17429, - 506, 267, 261, 256, 1460, 20392, 1122, -1000, 1122, -1000, - 419, -1000, -1000, 1085, -99, -103, -1000, -1000, -1000, -1000, - 571, -1000, 807, -1000, 395, 1084, 5124, -1000, -1000, -1000, - -1000, 196, -1000, -1000, -1000, 1173, 299, -1000, 1325, 480, - 502, 911, 1318, -1000, -1000, 818, -63, -1000, -1000, 800, - -29, -29, 1159, 1159, 158, 1159, -1000, -29, -1000, -1000, - -1000, 454, 1367, 454, 454, 454, 454, -29, 856, 856, - -1000, -1000, -1000, -1000, 794, -1000, 1171, -1000, 790, -1000, - -1000, -1000, -1000, -1000, 795, 1213, 22507, 165, 1408, -1000, - -1000, -1000, 1470, -1000, -1000, 253, 244, -1000, 7254, 22930, - 7254, 7254, 1460, 1002, 1001, -1000, -1000, -1000, 608, 612, - 1361, -1000, -1000, 15737, -1000, -1000, -1000, 164, 265, -1000, - 1298, -1000, 849, 484, 535, 197, 197, -1000, 536, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 163, 1407, - 22507, 22507, 1263, 571, 571, -1000, -1000, 22930, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 6828, 12353, -1000, - 578, 3082, 2759, -1000, 15737, -1000, 945, 571, -1000, 12353, - -1000, 6402, -1000, 401, 804, 401, 15737, 15737, -1000, 15737, - 15737, -1000, -209, -1000, 1127, 602, -1000, 14045, 816, -1000, - -1000, 15737, 15737, -1000, -1000, -1000, -1000, -1000, 20815, -1000, - -174, -174, -174, -174, -174, -1000, -1000, -1000, -1000, 999, - 999, -174, -174, -174, 999, -174, -174, 999, -174, -174, - -174, -174, 999, -174, -174, -174, 1211, 23353, 1140, -1000, - 19546, 22507, 1126, 1283, 1168, 1209, 1116, -1000, -1000, -1000, - -1000, 1230, -1000, 1227, -1000, -1000, 1156, -1000, -1000, 1083, - 1140, 22507, 15737, 506, -1000, 1140, 1140, 1140, 1453, 14045, - 1122, -1000, -1000, 490, -1000, -1000, -131, -132, -1000, -1000, - -1000, 8532, 5550, -1000, 5550, -1000, 22507, 211, -1000, 911, - -1000, -1000, 911, -1000, -1000, -1000, 1165, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 625, 15737, 1509, -1000, 1323, -1000, - 1322, 855, -1000, -1000, 1065, 454, 454, -29, -1000, -1000, - 1159, -1000, 454, -1000, 543, -1000, -1000, -1000, -1000, 454, - 994, -1000, 990, 1082, -1000, 988, 52, 22930, -1000, -1000, - -1000, 1208, -1000, -1000, -1000, 1000, 1081, -1000, 3095, 985, - 984, 980, 22930, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 612, -1000, 15737, 3082, -29, 22930, 1203, -1000, 890, -1000, - 911, 477, -1000, -1000, -1000, 1318, -1000, -1000, 278, 979, - -1000, 978, 936, 22507, 1320, 931, 22930, 22507, -1000, -1000, - 924, 929, 14045, -1000, 22507, 1140, 343, -1000, -1000, -1000, - 1036, 11507, -1000, -1000, 945, -1000, 15737, 3082, -1000, -1000, - -1000, 316, 945, 1159, 1159, -1000, 1159, 1163, -1000, 1159, - 16, 1159, 12, 945, 945, 3097, 3041, 2434, 2213, 1140, - -170, -1000, 571, 14045, 2657, 2548, -1000, 347, -1000, -1000, - -1000, -1000, -1000, -174, -174, -1000, -1000, -1000, -1000, -174, - -1000, -1000, -174, -1000, -1000, -1000, -1000, -174, -1000, -1000, - -1000, -1000, 1386, 1057, 1077, -1000, -1000, 11930, 945, 975, - 972, -1000, 1453, -1000, -1000, 14045, 1162, -1000, 14045, -1000, - -1000, -1000, -1000, 22507, 122, -1000, 14045, 972, 1048, -1000, - 22507, 22507, 22507, 1417, 571, -1000, -1000, -1000, -1000, 5124, - -1000, 968, -1000, 1159, -1000, 1318, -1000, -1000, 22507, -1000, - 3082, -133, -1000, -1000, -1000, -1000, -1000, -1000, 454, -1000, - -1000, -1000, -1000, -1000, -29, 848, -29, 787, -1000, 772, - -1000, -1000, -239, 1158, -1000, 165, 22930, 182, 253, -1000, - 3095, 3095, 3095, -1000, -1000, 3082, -75, -1000, -1000, 924, - 180, 3095, -1000, 1192, 480, 211, -1000, -1000, -1000, -1000, - -1000, 927, 433, -1000, 224, 180, 924, 571, 1394, -1000, - 22507, 1458, 20392, -1000, -1000, -1000, 3082, 5976, -1000, -1000, - 167, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 15737, - 15737, 15737, 15737, 15737, 945, 846, 571, 15737, 15737, 945, - 1449, -1000, -1000, -1000, -1000, -1000, 1314, -1000, 1140, -1000, - -1000, 188, -1000, 22507, 1417, 571, 22507, 571, 965, -1000, - 1140, 16160, -1000, 17852, 958, 958, 958, -1000, 307, 22507, - 1390, 956, -1000, -1000, 454, -1000, 454, 991, 976, -1000, - 22507, -1000, 1435, -1000, 182, -1000, 841, 91, 92, -1000, - 90, 85, 82, 80, 77, -1000, -1000, -1000, -1000, 1344, - 1340, 1120, 969, -1000, -1000, 920, -1000, 1157, 911, -1000, - -1000, 910, -1000, -1000, 22507, -1000, 180, 1140, -1000, 1456, - 1447, 1122, 11507, -1000, -1000, -1000, -1000, 2014, 2014, 2014, - 2014, 48, -1000, -1000, 2014, 2014, -1000, 14045, 1506, -1000, - 1140, -1000, 165, -1000, -1000, 954, -1000, 22507, -1000, -1000, - 506, -1000, -1000, -1000, 307, -1000, 891, 536, 840, -1000, - -1000, 184, -1000, -1000, -1000, -1000, 944, -1000, 136, 4132, - -1000, -1000, -1000, -1000, -1000, -1000, 1354, 1347, 116, 237, - 1330, 1332, 1442, 20392, -1000, -1000, -1000, 818, 22507, 1192, - -1000, -1000, -1000, -1000, 160, -1000, 14468, 14468, 1458, -1000, - -1000, -1000, -1000, -1000, 945, 88, -217, -1000, -1000, 1050, - 23353, 1077, 945, -1000, -1000, -1000, -1000, -1000, 769, -1000, - 22930, 307, 106, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1260, 158, + 1237, 1237, 1237, 1237, 1237, 182, -1000, 14080, 1272, -1000, + 22965, 7289, 1429, 7289, 129, 1265, -1000, -1000, 22965, 22965, + 1192, -1000, 22965, 1162, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 741, 1043, 1040, -1000, -1000, + -1000, -1000, -1000, -1000, 595, -1000, -1000, -1000, -1000, 619, + 22965, 22965, 22965, 1444, 619, 741, 461, -1000, 1161, 1161, + -1000, 1161, 348, 1068, 1161, -1000, 1036, 1428, 838, 1448, + 858, -1000, -1000, -1000, 168, 997, 285, -1000, 1332, 14080, + 14080, 8993, 14503, -1000, -1000, -1000, -1000, 1413, -1000, 1448, + 1465, -1000, 1351, 1344, 1292, -1000, -1000, 352, 497, -1000, + -1000, 785, -1000, -1000, -1000, -1000, 284, 1206, -1000, 2993, + -1000, -1000, -1000, -1000, 813, 15772, 15772, 15772, 461, 2993, + 806, 910, 1397, 319, 923, 923, 314, 314, 314, 314, + 314, 788, 788, -1000, -1000, -1000, 994, -1000, -1000, -1000, + 12388, -1000, 14080, -1000, 994, 1032, -1000, -1000, 741, 283, + 1032, -1000, 687, 890, 508, 1560, 1032, 431, 1557, 1032, + 1032, 1032, 12388, 548, -1000, 14080, 994, -1000, 650, 1157, + 1153, 1032, 994, 1152, 1032, 1032, -157, -157, 994, 1032, + 994, 1032, 1032, -157, -157, -157, -157, 12388, 12388, 1032, + 1032, 1032, 12388, 1032, 1032, 12388, 1032, 1032, 1032, 1032, + 12388, 1032, 1032, 1032, 166, 1206, -1000, 23388, 20427, 20427, + 20427, 20427, 20427, -1000, 1312, 1311, -1000, 1309, 1303, 1317, + 17887, -1000, 1034, 994, 106, 19157, -1000, 1206, -1000, 17464, + 275, 240, 238, 236, 1546, 20427, 1188, -1000, 1188, -1000, + 280, -1000, -1000, 1151, -121, -112, -1000, -1000, -1000, -1000, + 741, -1000, 811, -1000, 276, 1149, 5159, -1000, -1000, -1000, + -1000, 181, -1000, -1000, -1000, 1264, 270, -1000, 1363, 404, + 399, 908, 1355, -1000, -1000, 287, -78, -1000, -1000, 708, + -28, -28, 1230, 1230, 144, 1230, -1000, -28, -1000, -1000, + -1000, 273, 1403, 273, 273, 273, 273, -28, 836, 836, + -1000, -1000, -1000, -1000, 701, -1000, 1260, -1000, 683, -1000, + -1000, -1000, -1000, -1000, 630, 1281, 22542, 160, 1441, -1000, + -1000, -1000, 1551, -1000, -1000, 207, 227, -1000, 7289, 22965, + 7289, 7289, 1546, 1023, 1020, -1000, -1000, -1000, 570, 619, + 1393, -1000, -1000, 15772, -1000, -1000, -1000, 148, 246, -1000, + 1339, 1145, -1000, -1000, 563, 473, 581, 176, 176, -1000, + 423, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 147, 1440, 22542, 22542, 1330, 741, 741, -1000, -1000, 22965, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 6863, + 12388, -1000, 461, 2993, 742, -1000, 15772, -1000, 994, 741, + -1000, 12388, -1000, 6437, -1000, 133, 751, 133, 15772, 15772, + -1000, 15772, 15772, -1000, -209, -1000, 1191, 494, -1000, 14080, + 874, -1000, -1000, 15772, 15772, -1000, -1000, -1000, -1000, -1000, + 20850, -1000, -157, -157, -157, -157, -157, -1000, -1000, -1000, + -1000, 1032, 1032, -157, -157, -157, 1032, -157, -157, 1032, + -157, -157, -157, -157, 1032, -157, -157, -157, 1279, 23388, + 1206, -1000, 19581, 22542, 1189, 1223, 1249, 1278, 1097, -1000, + -1000, -1000, -1000, 1305, -1000, 1301, -1000, -1000, 1222, -1000, + -1000, 1142, 1206, 22542, 15772, 275, -1000, 1206, 1206, 1206, + 1540, 14080, 1188, -1000, -1000, 279, -1000, -1000, -118, -107, + -1000, -1000, -1000, 8567, 5585, -1000, 5585, -1000, 22542, 173, + -1000, 908, -1000, -1000, 908, -1000, -1000, -1000, 1244, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 582, 15772, 1572, -1000, + 1361, -1000, 1359, 823, -1000, -1000, 1127, 273, 273, -28, + -1000, -1000, 1230, -1000, 273, -1000, 493, -1000, -1000, -1000, + -1000, 273, 1030, -1000, 1010, 1140, -1000, 1008, 52, 22965, + -1000, -1000, -1000, 1277, -1000, -1000, -1000, 1126, 1136, -1000, + 420, 1004, 1001, 999, 22965, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 619, -1000, 15772, 2993, -28, 22965, 1292, 858, + -1000, 865, -1000, 908, 305, -1000, -1000, -1000, 1355, -1000, + -1000, 266, 986, -1000, 984, 982, 22542, 1357, 980, 22965, + 22542, -1000, -1000, 929, 977, 14080, -1000, 22542, 1206, 269, + -1000, -1000, -1000, 1057, 11542, -1000, -1000, 994, -1000, 15772, + 2993, -1000, -1000, -1000, 267, 994, 1230, 1230, -1000, 1230, + 1237, -1000, 1230, -4, 1230, -7, 994, 994, 2905, 2886, + 2445, 2268, 1206, -152, -1000, 741, 14080, 1125, 1069, -1000, + 349, -1000, -1000, -1000, -1000, -1000, -157, -157, -1000, -1000, + -1000, -1000, -157, -1000, -1000, -157, -1000, -1000, -1000, -1000, + -157, -1000, -1000, -1000, -1000, 1422, 1123, 1130, -1000, -1000, + 11965, 994, 997, 993, -1000, 1540, -1000, -1000, 14080, 1233, + -1000, 14080, -1000, -1000, -1000, -1000, 22542, 104, -1000, 14080, + 993, 633, -1000, 22542, 22542, 22542, 1510, 741, -1000, -1000, + -1000, -1000, 5159, -1000, 991, -1000, 1230, -1000, 1355, -1000, + -1000, 22542, -1000, 2993, -61, -1000, -1000, -1000, -1000, -1000, + -1000, 273, -1000, -1000, -1000, -1000, -1000, -28, 816, -28, + 658, -1000, 656, -1000, -1000, -238, 1229, -1000, 160, 22965, + 90, 207, -1000, 420, 420, 420, -1000, -1000, 2993, -89, + -1000, -1000, -1000, 929, 162, 420, -1000, 1272, 404, 173, + -1000, -1000, -1000, -1000, -1000, 975, 381, -1000, 226, 162, + 929, 741, 1427, -1000, 22542, 1544, 20427, -1000, -1000, -1000, + 2993, 6011, -1000, -1000, 145, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 15772, 15772, 15772, 15772, 15772, 994, 815, + 741, 15772, 15772, 994, 1536, -1000, -1000, -1000, -1000, -1000, + 1354, -1000, 1206, -1000, -1000, 167, -1000, 22542, 1510, 741, + 22542, 741, 965, -1000, 1206, 16195, -1000, 17887, 943, 943, + 943, -1000, 268, 22542, 1426, 935, -1000, -1000, 273, -1000, + 273, 1049, 1037, -1000, 22542, -1000, 1506, -1000, 90, -1000, + 804, 76, 82, -1000, 72, 70, 69, 68, 47, -1000, + -1000, -1000, -1000, 1382, 1379, 1179, 1027, -1000, -1000, 921, + -1000, 1225, 908, -1000, -1000, 894, -1000, -1000, 22542, -1000, + 162, 1206, -1000, 1542, 1533, 1188, 11542, -1000, -1000, -1000, + -1000, 650, 650, 650, 650, 46, -1000, -1000, 650, 650, + -1000, 14080, 1571, -1000, 1206, -1000, 160, -1000, -1000, 928, + -1000, 22542, -1000, -1000, 275, -1000, -1000, -1000, 268, -1000, + 891, 423, 789, -1000, -1000, 172, -1000, -1000, -1000, -1000, + 917, -1000, 108, 4471, -1000, -1000, -1000, -1000, -1000, -1000, + 1387, 1386, 87, 209, 1368, 1372, 1530, 20427, -1000, -1000, + 287, 22542, 1272, -1000, -1000, -1000, 138, -1000, 14503, 14503, + 1544, -1000, -1000, -1000, -1000, -1000, 994, 86, -217, -1000, + -1000, 1155, 23388, 1130, 994, -1000, -1000, -1000, -1000, -1000, + 647, -1000, 22965, 268, 103, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 14045, 14045, - 4698, 4132, -1000, -1000, -1000, -1000, 1156, 754, 1340, 1441, - 1336, 1334, -1000, 814, 1122, -1000, 942, 1143, -1000, 907, - -1000, 22507, -1000, 571, -1000, 1076, -1000, 571, -1000, 1456, - -1000, -1000, 1251, -212, -220, 945, 1075, -1000, -1000, 1141, - -1000, 307, 131, -1000, 749, 803, 50, 44, 500, -1000, - -1000, -1000, -1000, -300, -1000, -1000, 1342, -1000, 810, -1000, - 1440, 1439, -1000, 1458, 307, 22507, -1000, 160, 1302, 14468, - -1000, -1000, 1248, -1000, -1000, 22507, -1000, 867, 830, 758, - -1000, 14045, 4132, 1433, 1429, 1428, 1384, 8532, 4063, -1000, - -1000, 806, 796, 1456, -1000, 904, -1000, 159, -1000, -215, - 902, 231, -1000, -1000, 620, 4132, -1000, 747, -301, 193, - 165, 352, 15737, -1000, -1000, -1000, -1000, -1000, -1000, 307, - 156, -218, 1205, -1000, -1000, -1000, -1000, -1000, -1000, 4132, - -1000, -302, 4132, 2668, -1000, -1000, -1000, 4017, -1000, -1000, - -1000, -1000, 42, -1000, -1000, 3082, -1000, 1140, -221, 1197, - 1195, 1485, -1000, -303, 3898, -304, 225, 4132, 688, -1000, - 14045, -1000, 352, -1000, 14891, -1000, -1000, 1491, -1000, 1488, - 369, 369, 3728, 619, 4132, -1000, -307, 223, 4132, -1000, - 738, -1000, 2014, 945, -1000, -1000, -1000, 191, 809, -1000, - -1000, -1000, 3368, -1000, -308, 4132, -1000, -1000, -1000, -1000, - -1000, 220, 2950, -312, -1000, 218, 4132, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 14080, 14080, 4733, 4471, -1000, -1000, -1000, -1000, 1222, 627, + 1379, 1529, 1377, 1375, -1000, 776, 1188, 915, 1209, 913, + -1000, 22542, -1000, 741, -1000, 1129, -1000, 741, -1000, 1542, + -1000, -1000, 1326, -213, -220, 994, 1059, -1000, -1000, 1207, + -1000, 268, 93, -1000, 779, 793, 25, 13, 2340, -1000, + -1000, -1000, -1000, -297, -1000, -1000, 1381, -1000, 771, -1000, + 1526, 1524, -1000, 1544, 268, 22542, -1000, 138, 1342, 14503, + -1000, -1000, 1321, -1000, -1000, 22542, -1000, 887, 860, 691, + -1000, 14080, 4471, 1503, 1501, 1474, 1414, 8567, 4306, -1000, + -1000, 762, 758, 1542, -1000, 904, -1000, 132, -1000, -215, + 902, 229, -1000, -1000, 542, 4471, -1000, 684, -298, 170, + 160, 208, 15772, -1000, -1000, -1000, -1000, -1000, -1000, 268, + 130, -218, 1276, -1000, -1000, -1000, -1000, -1000, -1000, 4471, + -1000, -299, 4471, 3182, -1000, -1000, -1000, 4237, -1000, -1000, + -1000, -1000, 11, -1000, -1000, 2993, -1000, 1206, -221, 1275, + 1274, 1556, -1000, -300, 4096, -301, 204, 4471, 492, -1000, + 14080, -1000, 208, -1000, 14926, -1000, -1000, 1570, -1000, 1568, + 385, 385, 4027, 527, 4471, -1000, -303, 199, 4471, -1000, + 526, -1000, 650, 994, -1000, -1000, -1000, 175, 704, -1000, + -1000, -1000, 3855, -1000, -307, 4471, -1000, -1000, -1000, -1000, + -1000, 198, 3621, -310, -1000, 197, 4471, -1000, } var yyPgo = [...]int{ - 0, 1830, 221, 855, 1829, 1823, 1821, 19, 15, 13, - 22, 1808, 1617, 1610, 1603, 1601, 1806, 1597, 1804, 5, - 1803, 1801, 1595, 1797, 1795, 1587, 26, 1793, 18, 1790, - 4, 110, 122, 1789, 3, 1788, 1784, 12, 1783, 1782, - 1577, 1781, 1780, 1778, 1777, 1569, 1562, 1776, 1774, 1557, - 1555, 1773, 1766, 1552, 1550, 1535, 1764, 154, 1762, 1761, - 1759, 148, 66, 113, 1758, 1757, 1756, 81, 53, 1496, - 88, 40, 82, 561, 1755, 21, 72, 1753, 1751, 103, - 111, 1750, 115, 1749, 75, 136, 79, 1748, 1747, 127, - 1730, 1729, 1727, 100, 1725, 1724, 1891, 1723, 1720, 114, - 1719, 45, 49, 34, 1718, 1717, 1716, 1714, 1712, 108, - 98, 1711, 1710, 1709, 59, 1708, 1706, 126, 1705, 1704, - 1703, 102, 48, 1701, 38, 1700, 55, 52, 1698, 32, - 1697, 101, 1694, 1692, 35, 9, 1691, 30, 1689, 42, - 1688, 106, 202, 823, 7, 39, 54, 51, 104, 80, - 17, 29, 105, 78, 61, 33, 112, 1687, 109, 99, - 1686, 1685, 822, 1683, 1680, 95, 1679, 57, 133, 617, - 119, 90, 64, 1678, 1671, 1670, 1669, 73, 94, 1668, - 1667, 85, 213, 83, 1097, 10, 1775, 47, 123, 1666, - 36, 1665, 1663, 2735, 92, 62, 84, 1662, 1661, 86, - 25, 44, 1660, 1658, 1657, 1655, 1654, 1653, 218, 1651, - 1650, 1649, 1648, 121, 69, 1647, 1644, 97, 65, 1643, - 1642, 1641, 1640, 1639, 96, 56, 107, 1638, 93, 91, - 67, 1637, 1636, 1635, 1633, 41, 37, 1632, 1631, 1630, - 76, 60, 1629, 43, 31, 27, 46, 8, 68, 74, - 1628, 24, 1626, 89, 2, 6, 11, 1625, 1624, 1623, - 1620, 1615, 58, 1606, 1599, 50, 1593, 1583, 1574, 28, - 1571, 1566, 1564, 1547, 0, 87, 116, 1540, 1538, 118, + 0, 1831, 180, 753, 1830, 1825, 1822, 16, 14, 12, + 18, 1817, 1640, 1638, 1630, 1628, 1816, 1626, 1815, 5, + 1814, 1813, 1624, 1811, 1810, 1621, 26, 1808, 20, 1807, + 4, 113, 124, 1806, 3, 1805, 1804, 9, 1803, 1802, + 1618, 1800, 1798, 1796, 1795, 79, 1793, 1613, 1611, 1792, + 1790, 1604, 1602, 1789, 1788, 1599, 1595, 1590, 1787, 151, + 1785, 1784, 1783, 152, 71, 115, 1782, 1781, 1780, 108, + 55, 1601, 90, 38, 82, 703, 1779, 25, 47, 1773, + 1772, 111, 102, 1771, 112, 1770, 65, 207, 80, 1767, + 1766, 127, 1765, 1764, 1762, 96, 1761, 1760, 2375, 1758, + 1757, 119, 1756, 51, 49, 34, 1754, 1753, 1752, 1750, + 1749, 109, 98, 1748, 1747, 1746, 59, 1744, 1743, 126, + 1742, 1741, 1739, 104, 48, 1738, 36, 1737, 53, 54, + 1736, 43, 1735, 100, 1733, 1732, 37, 10, 1731, 33, + 1730, 40, 1729, 105, 211, 826, 7, 30, 45, 52, + 101, 81, 22, 28, 97, 74, 64, 44, 114, 1727, + 121, 95, 1726, 1725, 707, 1722, 1721, 107, 1720, 62, + 117, 632, 130, 86, 66, 1719, 1718, 1714, 1713, 60, + 106, 1711, 1710, 84, 120, 73, 1378, 29, 1786, 88, + 123, 1708, 32, 1707, 1706, 2779, 93, 76, 89, 1697, + 1696, 83, 23, 39, 1695, 1694, 1692, 1691, 1690, 1689, + 1401, 1682, 1680, 1679, 1678, 75, 58, 1677, 1675, 94, + 78, 1674, 1673, 1672, 1671, 1670, 91, 61, 110, 1669, + 85, 103, 99, 1668, 1667, 1665, 1664, 42, 35, 1663, + 1662, 1661, 72, 69, 1660, 50, 31, 21, 46, 8, + 57, 70, 1658, 24, 1657, 92, 2, 6, 11, 1656, + 1654, 1653, 1652, 1651, 56, 1649, 1648, 41, 1647, 1646, + 1645, 27, 1644, 1642, 1615, 1608, 0, 87, 116, 1606, + 1587, 118, } var yyR1 = [...]int{ - 0, 272, 273, 273, 1, 1, 1, 1, 1, 1, + 0, 274, 275, 275, 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, - 56, 2, 2, 2, 6, 3, 3, 3, 77, 78, - 78, 82, 82, 4, 4, 5, 5, 7, 7, 60, - 60, 8, 9, 9, 9, 9, 276, 276, 91, 91, - 89, 89, 90, 90, 152, 152, 10, 10, 10, 10, - 156, 156, 159, 159, 159, 160, 160, 160, 160, 197, - 197, 144, 145, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 260, 260, 261, 261, 262, 262, 262, 262, - 263, 263, 264, 264, 265, 265, 265, 265, 265, 265, - 265, 265, 265, 265, 23, 180, 180, 38, 38, 39, - 39, 39, 140, 140, 140, 11, 11, 11, 11, 11, + 58, 2, 2, 2, 6, 3, 3, 3, 79, 80, + 80, 84, 84, 4, 4, 5, 5, 7, 7, 62, + 62, 8, 9, 9, 9, 9, 278, 278, 93, 93, + 91, 91, 92, 92, 154, 154, 10, 10, 10, 10, + 158, 158, 161, 161, 161, 162, 162, 162, 162, 199, + 199, 146, 147, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 262, 262, 263, 263, 264, 264, 264, 264, + 265, 265, 266, 266, 267, 267, 267, 267, 267, 267, + 267, 267, 267, 267, 23, 182, 182, 38, 38, 39, + 39, 39, 142, 142, 142, 11, 11, 11, 11, 11, 18, 20, 20, 27, 27, 28, 21, 21, 21, 21, 29, 29, 30, 24, 24, 24, 24, 24, 24, 36, 36, 36, 35, 35, 34, 34, 34, 34, 34, 34, 22, 22, 22, 22, 37, 37, 32, 32, 31, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 25, 25, 25, 25, 25, 25, 17, 259, 259, - 259, 26, 26, 19, 19, 19, 19, 19, 19, 19, + 33, 25, 25, 25, 25, 25, 25, 17, 261, 261, + 261, 26, 26, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 43, 237, 238, - 238, 238, 238, 238, 238, 238, 238, 225, 226, 201, - 201, 201, 201, 201, 201, 201, 200, 200, 200, 200, - 204, 204, 202, 202, 202, 202, 202, 202, 202, 202, - 202, 203, 203, 203, 203, 203, 203, 203, 203, 205, - 205, 205, 205, 205, 206, 206, 206, 206, 206, 206, - 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, - 206, 206, 206, 206, 206, 206, 206, 206, 206, 207, - 207, 207, 207, 207, 207, 207, 207, 224, 224, 208, - 208, 217, 217, 218, 218, 218, 215, 215, 216, 216, - 219, 219, 211, 212, 220, 213, 213, 213, 214, 214, - 214, 223, 223, 223, 223, 209, 227, 227, 247, 247, - 246, 246, 245, 245, 245, 236, 236, 242, 242, 242, - 242, 242, 231, 231, 231, 230, 230, 232, 232, 235, - 235, 244, 244, 243, 228, 228, 248, 248, 248, 248, - 248, 229, 229, 229, 249, 233, 233, 234, 234, 234, - 255, 256, 254, 254, 254, 254, 254, 106, 106, 106, - 239, 239, 239, 240, 240, 240, 241, 241, 241, 257, - 257, 40, 40, 41, 41, 41, 41, 41, 41, 41, - 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, - 41, 41, 41, 41, 139, 139, 139, 42, 178, 178, - 253, 253, 253, 252, 250, 250, 251, 251, 13, 44, - 44, 14, 14, 14, 14, 14, 14, 14, 15, 15, - 45, 46, 46, 46, 46, 46, 46, 46, 46, 46, - 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, - 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, - 74, 166, 166, 164, 164, 167, 167, 165, 165, 165, - 168, 168, 168, 198, 198, 198, 47, 47, 52, 52, - 55, 53, 54, 179, 179, 50, 50, 51, 51, 51, - 51, 66, 66, 277, 277, 49, 49, 48, 48, 48, - 48, 16, 278, 57, 58, 58, 59, 59, 59, 171, - 171, 63, 63, 63, 61, 61, 61, 62, 62, 68, - 68, 72, 72, 72, 72, 71, 71, 71, 71, 142, - 142, 142, 143, 143, 189, 189, 189, 188, 188, 188, - 188, 76, 76, 79, 79, 80, 80, 80, 80, 83, - 125, 125, 100, 100, 101, 101, 101, 101, 101, 112, - 112, 151, 151, 150, 150, 153, 153, 81, 81, 81, - 81, 86, 86, 87, 87, 88, 88, 177, 177, 195, - 195, 195, 92, 92, 92, 94, 93, 93, 93, 93, - 95, 95, 97, 98, 98, 96, 96, 99, 102, 102, - 102, 102, 103, 103, 73, 73, 73, 73, 73, 73, - 73, 163, 163, 105, 105, 104, 104, 104, 104, 104, - 104, 104, 104, 104, 104, 120, 120, 120, 120, 120, - 120, 107, 107, 107, 107, 107, 107, 107, 67, 67, - 121, 121, 121, 85, 84, 84, 70, 70, 69, 69, - 122, 122, 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, 115, 115, 119, 119, - 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, - 119, 119, 119, 119, 119, 118, 118, 118, 118, 118, - 118, 118, 118, 118, 118, 118, 113, 113, 113, 113, - 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, - 113, 114, 114, 114, 114, 114, 114, 114, 114, 114, - 114, 114, 114, 114, 114, 114, 114, 114, 279, 279, - 117, 116, 116, 116, 116, 116, 116, 64, 64, 64, - 64, 64, 196, 196, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 132, 132, 65, - 65, 130, 130, 131, 133, 133, 129, 129, 129, 109, - 109, 109, 109, 109, 109, 109, 109, 111, 111, 111, - 134, 134, 123, 123, 75, 75, 135, 135, 136, 136, - 137, 137, 138, 138, 141, 141, 146, 146, 146, 147, - 147, 147, 147, 148, 148, 148, 108, 108, 108, 108, - 108, 108, 149, 149, 149, 149, 154, 154, 124, 124, - 127, 127, 126, 128, 155, 155, 158, 158, 158, 158, - 157, 157, 157, 192, 192, 192, 161, 161, 169, 169, - 170, 170, 162, 162, 210, 210, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 176, 176, 175, 175, 175, - 172, 172, 172, 173, 173, 190, 190, 186, 186, 191, - 191, 187, 187, 193, 193, 194, 194, 258, 258, 221, - 221, 268, 268, 222, 222, 269, 269, 271, 271, 266, - 266, 267, 267, 270, 270, 183, 183, 183, 183, 183, - 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, - 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, - 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, - 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, - 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, - 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, - 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, - 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, - 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, - 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, - 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, - 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, - 183, 183, 183, 183, 183, 183, 183, 183, 183, 184, - 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, - 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, - 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, - 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, - 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, - 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, - 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, - 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, - 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, - 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, - 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, - 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, - 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, - 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, - 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, - 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, - 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, - 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, - 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, - 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, - 184, 184, 184, 184, 184, 184, 185, 185, 185, 185, + 19, 19, 19, 19, 19, 19, 19, 43, 239, 240, + 240, 240, 240, 240, 240, 240, 240, 227, 228, 203, + 203, 203, 203, 203, 203, 203, 202, 202, 202, 202, + 206, 206, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 205, 205, 205, 205, 205, 205, 205, 205, 207, + 207, 207, 207, 207, 208, 208, 208, 208, 208, 208, + 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, + 208, 208, 208, 208, 208, 208, 208, 208, 208, 209, + 209, 209, 209, 209, 209, 209, 209, 226, 226, 210, + 210, 219, 219, 220, 220, 220, 217, 217, 218, 218, + 221, 221, 213, 214, 222, 215, 215, 215, 216, 216, + 216, 225, 225, 225, 225, 211, 229, 229, 249, 249, + 248, 248, 247, 247, 247, 238, 238, 244, 244, 244, + 244, 244, 233, 233, 233, 232, 232, 234, 234, 237, + 237, 246, 246, 245, 230, 230, 250, 250, 250, 250, + 250, 231, 231, 231, 251, 235, 235, 236, 236, 236, + 257, 258, 256, 256, 256, 256, 256, 108, 108, 108, + 241, 241, 241, 242, 242, 242, 243, 243, 243, 259, + 259, 40, 40, 41, 46, 46, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 141, 141, 141, + 42, 180, 180, 255, 255, 255, 254, 252, 252, 253, + 253, 13, 44, 44, 14, 14, 14, 14, 14, 14, + 14, 15, 15, 47, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 76, 168, 168, 166, 166, 169, 169, + 167, 167, 167, 170, 170, 170, 200, 200, 200, 49, + 49, 54, 54, 57, 55, 56, 181, 181, 52, 52, + 53, 53, 53, 53, 68, 68, 279, 279, 51, 51, + 50, 50, 50, 50, 16, 280, 59, 60, 60, 61, + 61, 61, 173, 173, 65, 65, 65, 63, 63, 63, + 64, 64, 70, 70, 74, 74, 74, 74, 73, 73, + 73, 73, 144, 144, 144, 145, 145, 191, 191, 191, + 190, 190, 190, 190, 78, 78, 81, 81, 82, 82, + 82, 82, 85, 127, 127, 102, 102, 103, 103, 103, + 103, 103, 114, 114, 153, 153, 152, 152, 155, 155, + 83, 83, 83, 83, 88, 88, 89, 89, 90, 90, + 179, 179, 197, 197, 197, 94, 94, 94, 96, 95, + 95, 95, 95, 97, 97, 99, 100, 100, 98, 98, + 101, 104, 104, 104, 104, 105, 105, 75, 75, 75, + 75, 75, 75, 75, 165, 165, 107, 107, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 122, 122, + 122, 122, 122, 122, 109, 109, 109, 109, 109, 109, + 109, 69, 69, 123, 123, 123, 87, 86, 86, 72, + 72, 71, 71, 124, 124, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 117, + 117, 121, 121, 121, 121, 121, 121, 121, 121, 121, + 121, 121, 121, 121, 121, 121, 121, 121, 120, 120, + 120, 120, 120, 120, 120, 120, 120, 120, 120, 115, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 116, 116, 116, 116, 116, 116, + 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, + 116, 281, 281, 119, 118, 118, 118, 118, 118, 118, + 66, 66, 66, 66, 66, 198, 198, 201, 201, 201, + 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, + 134, 134, 67, 67, 132, 132, 133, 135, 135, 131, + 131, 131, 111, 111, 111, 111, 111, 111, 111, 111, + 113, 113, 113, 136, 136, 125, 125, 77, 77, 137, + 137, 138, 138, 139, 139, 140, 140, 143, 143, 148, + 148, 148, 149, 149, 149, 149, 150, 150, 150, 110, + 110, 110, 110, 110, 110, 151, 151, 151, 151, 156, + 156, 126, 126, 129, 129, 128, 130, 157, 157, 160, + 160, 160, 160, 159, 159, 159, 194, 194, 194, 163, + 163, 171, 171, 172, 172, 164, 164, 212, 212, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 178, 178, + 177, 177, 177, 174, 174, 174, 175, 175, 192, 192, + 188, 188, 193, 193, 189, 189, 195, 195, 196, 196, + 260, 260, 223, 223, 270, 270, 224, 224, 271, 271, + 273, 273, 268, 268, 269, 269, 272, 272, 185, 185, + 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, - 185, 185, 185, 185, 274, 275, 181, 182, 182, 182, + 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, + 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, + 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, + 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, + 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, + 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, + 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, + 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, + 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, + 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, + 185, 185, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 187, + 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, + 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, + 187, 187, 187, 187, 187, 187, 187, 276, 277, 183, + 184, 184, 184, } var yyR2 = [...]int{ @@ -4086,61 +4092,60 @@ var yyR2 = [...]int{ 12, 3, 2, 1, 5, 1, 1, 0, 2, 2, 3, 3, 1, 1, 2, 2, 2, 0, 1, 2, 0, 1, 3, 1, 2, 3, 1, 1, 1, 0, - 2, 1, 1, 6, 10, 9, 7, 7, 7, 9, - 7, 12, 14, 7, 7, 7, 9, 9, 10, 5, - 6, 6, 8, 7, 0, 1, 2, 4, 0, 1, - 1, 1, 1, 7, 1, 3, 8, 8, 3, 3, - 5, 4, 6, 4, 4, 4, 4, 4, 3, 2, - 3, 4, 4, 3, 6, 6, 4, 4, 4, 4, - 4, 4, 3, 3, 2, 6, 2, 4, 4, 4, - 5, 7, 6, 5, 4, 2, 4, 3, 2, 3, - 3, 1, 1, 0, 1, 1, 1, 0, 2, 2, - 0, 2, 2, 0, 1, 1, 2, 1, 1, 1, - 2, 1, 1, 1, 1, 3, 3, 1, 1, 1, - 1, 0, 3, 1, 1, 2, 2, 2, 2, 3, - 3, 2, 0, 2, 0, 2, 1, 2, 2, 0, - 1, 0, 1, 1, 0, 1, 1, 0, 1, 3, - 5, 1, 1, 3, 5, 1, 2, 3, 5, 2, - 4, 7, 0, 1, 0, 1, 2, 1, 1, 1, - 1, 1, 3, 1, 1, 1, 4, 1, 3, 2, - 2, 4, 2, 6, 1, 4, 6, 3, 2, 0, - 3, 0, 3, 1, 3, 1, 3, 4, 4, 4, - 3, 2, 4, 0, 1, 0, 2, 0, 1, 1, - 1, 1, 1, 2, 2, 1, 2, 3, 2, 3, - 2, 2, 3, 2, 1, 1, 3, 3, 0, 5, - 5, 5, 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, 0, 1, 1, 3, - 1, 3, 1, 1, 1, 1, 1, 3, 3, 3, + 2, 1, 1, 5, 1, 3, 2, 5, 4, 3, + 3, 3, 5, 3, 8, 10, 3, 3, 3, 5, + 4, 5, 1, 2, 2, 4, 3, 0, 1, 2, + 4, 0, 1, 1, 1, 1, 7, 1, 3, 8, + 8, 3, 3, 5, 4, 6, 4, 4, 4, 4, + 4, 3, 2, 3, 4, 4, 3, 6, 6, 4, + 4, 4, 4, 4, 4, 3, 3, 2, 6, 2, + 4, 4, 4, 5, 7, 6, 5, 4, 2, 4, + 3, 2, 3, 3, 1, 1, 0, 1, 1, 1, + 0, 2, 2, 0, 2, 2, 0, 1, 1, 2, + 1, 1, 1, 2, 1, 1, 1, 1, 3, 3, + 1, 1, 1, 1, 0, 3, 1, 1, 2, 2, + 2, 2, 3, 3, 2, 0, 2, 0, 2, 1, + 2, 2, 0, 1, 0, 1, 1, 0, 1, 1, + 0, 1, 3, 5, 1, 1, 3, 5, 1, 2, + 3, 5, 2, 4, 7, 0, 1, 0, 1, 2, + 1, 1, 1, 1, 1, 3, 1, 1, 1, 4, + 1, 3, 2, 2, 4, 2, 6, 1, 4, 6, + 3, 2, 0, 3, 0, 3, 1, 3, 1, 3, + 4, 4, 4, 3, 2, 4, 0, 1, 0, 2, + 0, 1, 1, 1, 1, 1, 2, 2, 1, 2, + 3, 2, 3, 2, 2, 3, 2, 1, 1, 3, + 3, 0, 5, 5, 5, 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, 0, + 1, 1, 3, 1, 3, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 2, 2, 2, 2, 2, 2, 2, 3, - 1, 1, 1, 1, 1, 1, 5, 6, 6, 6, - 5, 5, 5, 6, 5, 5, 6, 5, 5, 5, - 5, 6, 5, 5, 5, 4, 4, 5, 5, 5, - 5, 5, 4, 4, 4, 4, 4, 4, 3, 6, - 6, 6, 8, 8, 8, 8, 9, 4, 7, 5, - 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 8, 8, 0, 2, - 3, 4, 4, 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, 1, 2, 2, - 0, 3, 1, 3, 1, 1, 0, 2, 1, 1, - 0, 3, 1, 3, 2, 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, 3, 3, 3, - 1, 2, 1, 1, 1, 1, 1, 1, 0, 2, - 0, 3, 0, 1, 0, 3, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, - 1, 1, 1, 0, 1, 0, 2, 1, 1, 1, - 3, 1, 1, 1, 1, 1, 1, 0, 2, 0, - 1, 0, 4, 0, 1, 0, 3, 0, 3, 0, - 4, 0, 3, 0, 3, 1, 1, 1, 1, 1, + 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, + 2, 2, 3, 1, 1, 1, 1, 1, 1, 5, + 6, 6, 6, 5, 5, 5, 6, 5, 5, 6, + 5, 5, 5, 5, 6, 5, 5, 5, 4, 4, + 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, + 4, 3, 6, 6, 6, 8, 8, 8, 8, 9, + 4, 7, 5, 4, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 8, + 8, 0, 2, 3, 4, 4, 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, + 1, 2, 2, 0, 3, 1, 3, 1, 1, 0, + 2, 1, 1, 0, 3, 1, 3, 2, 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, + 3, 3, 3, 1, 2, 1, 1, 1, 1, 1, + 1, 0, 2, 0, 3, 0, 1, 0, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 0, 1, 1, 1, 1, 1, 0, 1, 0, 2, + 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, + 0, 2, 0, 1, 0, 4, 0, 1, 0, 3, + 0, 3, 0, 4, 0, 3, 0, 3, 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, @@ -4176,22 +4181,24 @@ 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, 1, 1, 1, 0, 0, 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, } var yyChk = [...]int{ - -1000, -272, -1, -2, -6, -7, -8, -9, -10, -12, - -40, -13, -14, -15, -45, -46, -47, -52, -53, -54, - -50, -49, -48, -16, -22, -25, -17, -56, -3, -4, - 6, 7, -60, 9, 10, 30, -43, 130, -41, -42, - 133, 132, 169, 134, 162, 64, 224, -55, 227, 228, - -277, -179, 167, 168, 31, 32, 136, 211, 212, 20, - 37, -77, -274, 8, 317, 131, 225, 164, 163, 26, - 362, 68, -273, 432, -137, 15, -59, 5, -57, -278, - -57, -57, -57, -57, -57, -237, 105, 68, -173, 143, - 86, 308, 139, -180, 140, -172, 189, 44, 150, 149, - 140, 140, 141, 143, 308, 139, 177, 176, 140, -96, - -193, 71, -184, 359, 153, 374, 375, 131, 186, 224, + -1000, -274, -1, -2, -6, -7, -8, -9, -10, -12, + -40, -13, -14, -15, -47, -48, -49, -54, -55, -56, + -52, -51, -50, -16, -22, -25, -17, -58, -3, -4, + 6, 7, -62, 9, 10, 30, -43, 130, -41, -42, + 133, 132, 169, 134, 162, 64, 224, -57, 227, 228, + -279, -181, 167, 168, 31, 32, 136, 211, 212, 20, + 37, -79, -276, 8, 317, 131, 225, 164, 163, 26, + 362, 68, -275, 432, -139, 15, -61, 5, -59, -280, + -59, -59, -59, -59, -59, -239, 105, 68, -175, 143, + 86, 308, 139, -182, 140, -174, 189, 44, 150, 149, + 140, 140, 141, 143, 308, 139, 177, 176, 140, -98, + -195, 71, -186, 359, 153, 374, 375, 131, 186, 224, 235, 229, 263, 251, 360, 376, 154, 206, 138, 249, 252, 295, 152, 199, 377, 284, 290, 209, 80, 227, 304, 378, 155, 203, 205, 204, 194, 210, 36, 165, @@ -4212,29 +4219,29 @@ var yyChk = [...]int{ 208, 258, 175, 425, 426, 245, 246, 264, 230, 259, 226, 177, 178, 169, 427, 305, 281, 365, 51, 253, 250, 181, 257, 428, 143, 429, 182, 301, 248, 282, - 140, 123, 252, 295, 130, 285, 286, 292, -231, 293, - 176, 179, -198, 140, -164, 284, 182, 71, 141, 142, - 33, 297, 296, 288, -193, -66, 134, 170, -96, -181, - -181, -181, 287, 287, -181, -37, 71, 213, -37, 30, - 71, 71, 36, 6, -2, -162, 143, 145, 226, -78, - -82, -195, -193, -185, 73, 330, 331, 332, 333, 334, + 140, 123, 252, 295, 130, 285, 286, 292, -233, 293, + 176, 179, -200, 140, -166, 284, 182, 71, 141, 142, + 33, 297, 296, 288, -195, -68, 134, 170, -98, -183, + -183, -183, 287, 287, -183, -37, 71, 213, -37, 30, + 71, 71, 36, 6, -2, -164, 143, 145, 226, -80, + -84, -197, -195, -187, 73, 330, 331, 332, 333, 334, 347, 348, 349, 335, 336, 350, 351, 352, 337, 338, 353, 354, 356, 357, 355, 341, 340, 339, 342, 343, - 345, 344, 346, -147, 17, 16, -5, -3, -274, 6, - 21, 22, -63, 54, 55, -58, -71, 114, -73, -193, - -104, 88, -110, 29, 71, -184, 24, -109, -105, -129, - -128, -85, 123, 124, 125, 112, 113, 120, 89, 126, - -115, -113, -114, -116, -118, -119, 73, 72, 81, 74, - 75, 76, 77, 82, 83, 84, -186, -126, -274, 58, + 345, 344, 346, -149, 17, 16, -5, -3, -276, 6, + 21, 22, -65, 54, 55, -60, -73, 114, -75, -195, + -106, 88, -112, 29, 71, -186, 24, -111, -107, -131, + -130, -87, 123, 124, 125, 112, 113, 120, 89, 126, + -117, -115, -116, -118, -120, -121, 73, 72, 81, 74, + 75, 76, 77, 82, 83, 84, -188, -128, -276, 58, 59, 139, 318, 319, 320, 321, 358, 160, 322, 91, 47, 307, 316, 315, 314, 312, 313, 309, 311, 310, 324, 325, 146, 308, 118, 317, 347, 348, 349, 350, 351, 352, 353, 354, 356, 357, 355, 337, 330, 331, 332, 333, 334, 335, 336, 338, 339, 340, 341, 342, - 343, 344, 345, 346, -162, -162, 11, -89, -90, -96, - -99, -193, -155, -197, 226, -158, 297, 296, -129, -157, - -186, -193, 295, 252, 294, -96, -238, -226, -229, -187, - 155, -249, -186, -183, 152, 71, -184, 135, 161, 87, + 343, 344, 345, 346, -164, -164, 11, -91, -92, -98, + -101, -195, -157, -199, 226, -160, 297, 296, -131, -159, + -188, -195, 295, 252, 294, -98, -240, -228, -231, -189, + 155, -251, -188, -185, 152, 71, -186, 135, 161, 87, 366, 23, 25, 278, 330, 90, 123, 331, 332, 333, 16, 20, 91, 122, 318, 334, 130, 62, 309, 311, 307, 308, 285, 29, 10, 26, 163, 193, 22, 116, @@ -4248,396 +4255,396 @@ var yyChk = [...]int{ 339, 342, 197, 57, 320, 321, 343, 430, 140, 93, 324, 325, 144, 83, 5, 44, 32, 9, 64, 67, 314, 315, 316, 47, 345, 344, 346, 92, 12, 327, - 362, 141, -96, 317, -170, 146, -170, 177, 176, -170, - 97, -44, -96, -169, 146, -186, -169, -169, -169, -169, - -169, -96, 127, -96, 71, 30, -168, 105, 12, 308, - 139, 71, 176, 179, 140, 177, 143, -182, -274, -187, - -182, -233, 11, 107, 180, 180, 180, 181, 180, -167, - -166, 178, 290, 291, 287, 289, 12, -74, 105, -182, - -51, -2, -9, -7, -8, -2, 97, -181, -181, 30, + 362, 141, -98, 317, -172, 146, -172, 177, 176, -172, + 97, -44, -98, -171, 146, -188, -171, -171, -171, -171, + -171, -98, 127, -98, 71, 30, -170, 105, 12, 308, + 139, 71, 176, 179, 140, 177, 143, -184, -276, -189, + -184, -235, 11, 107, 180, 180, 180, 181, 180, -169, + -168, 178, 290, 291, 287, 289, 12, -76, 105, -184, + -53, -2, -9, -7, -8, -2, 97, -183, -183, 30, 30, 73, 51, 30, -32, -31, -33, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 30, - -259, 68, -221, 283, -57, -275, 70, 140, -96, 69, - 23, -274, -148, 19, 31, -73, -193, -138, -141, -73, - -185, 330, 331, 332, 333, 334, 347, 348, 349, 335, + -261, 68, -223, 283, -59, -277, 70, 140, -98, 69, + 23, -276, -150, 19, 31, -75, -195, -140, -143, -75, + -187, 330, 331, 332, 333, 334, 347, 348, 349, 335, 336, 350, 351, 352, 337, 338, 353, 354, 356, 357, - 355, 341, 340, 339, 342, 343, 345, 344, 346, -137, - -2, -57, 50, -61, 21, 22, 79, 11, -189, 87, - 86, 104, -188, 23, 71, -184, -185, 73, 127, -73, - -107, 107, 88, 105, 106, 90, 109, 108, 119, 112, + 355, 341, 340, 339, 342, 343, 345, 344, 346, -139, + -2, -59, 50, -63, 21, 22, 79, 11, -191, 87, + 86, 104, -190, 23, 71, -186, -187, 73, 127, -75, + -109, 107, 88, 105, 106, 90, 109, 108, 119, 112, 113, 114, 115, 116, 117, 118, 110, 111, 122, 97, - 98, 99, 100, 101, 102, 103, -163, -274, -85, -274, - 128, 129, -110, -110, -110, -110, -110, -110, -110, -110, - -274, -2, -122, -73, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -132, -73, -274, -279, -117, - -274, -279, -117, -279, -117, -279, -274, -279, -117, -279, - -117, -279, -279, -117, -279, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -98, - 27, -96, -76, -79, -80, -81, -100, -84, -274, -96, - -85, -96, -89, -276, 69, 11, 67, -276, 69, 127, - 69, -155, 226, -156, -159, 298, 300, 97, -192, -186, - 73, 29, 127, 30, 70, 69, -229, 155, 152, -200, - -204, -206, -205, -207, -202, -203, 249, 252, 256, 254, + 98, 99, 100, 101, 102, 103, -165, -276, -87, -276, + 128, 129, -112, -112, -112, -112, -112, -112, -112, -112, + -276, -2, -124, -75, -276, -276, -276, -276, -276, -276, + -276, -276, -276, -276, -276, -134, -75, -276, -281, -119, + -276, -281, -119, -281, -119, -281, -276, -281, -119, -281, + -119, -281, -281, -119, -281, -276, -276, -276, -276, -276, + -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, + -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, + -276, -276, -276, -276, -276, -276, -276, -276, -276, -100, + 27, -98, -78, -81, -82, -83, -102, -86, -276, -98, + -87, -98, -91, -278, 69, 11, 67, -278, 69, 127, + 69, -157, 226, -158, -161, 298, 300, 97, -194, -188, + 73, 29, 127, 30, 70, 69, -231, 155, 152, -202, + -206, -208, -207, -209, -204, -205, 249, 252, 256, 254, 250, 255, 123, 253, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 30, 165, 245, 246, 247, 248, 269, 270, 271, 272, 273, 274, 275, 276, 229, 251, 360, 230, 231, 232, 233, 234, 235, 237, 238, - 239, 240, 241, 242, 243, 71, -249, 68, -186, 23, - 143, 71, 88, 71, 71, 71, -96, 71, 69, 144, - -89, 24, 66, -91, -96, 71, 71, 71, 71, -194, - -193, -183, -182, -168, 73, -73, -170, -170, -182, -182, - -182, -96, -96, -96, -96, -168, -168, -182, -182, -165, - 11, 107, 11, -165, -165, -73, -110, 71, -32, -32, - 73, -32, 69, 97, -32, 70, -122, -258, 431, -63, - -96, -182, -82, -84, -274, -149, -186, 9, 107, 69, - 18, 127, 69, -146, 25, 26, -146, -147, -275, -63, - -111, 51, 74, 77, -171, 49, -96, -73, -73, -120, - 82, 88, 83, 84, -188, 114, -194, -187, -183, -110, - -121, -126, -85, 78, 107, 105, 106, 90, -110, -110, - -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, - -110, -110, -110, -196, 71, 73, 71, -109, -109, -186, - -61, -275, 69, -275, -2, -69, -72, 114, -73, -193, - -69, -275, -73, -73, -129, 73, -69, -129, 73, -69, - -69, -69, -61, -130, -131, 92, -129, -275, -110, -186, - -186, -69, -70, -69, -69, -69, -275, -275, -72, -69, - -72, -69, -69, -275, -275, -275, -275, -61, -61, -69, - -69, -69, -61, -69, -69, -61, -69, -69, -69, -69, - -61, -69, -69, -69, -152, 172, -96, 30, 69, -92, - -94, -93, -95, 56, 60, 62, 57, 58, 59, 63, - -177, 23, -76, -83, 47, -274, -101, 172, -102, 23, - -195, 64, 145, 65, -152, 67, -76, -96, -76, -99, - -193, 114, -158, -156, 69, 299, 301, 302, 66, 85, - -73, -214, 122, -187, -194, -239, -240, -241, -187, 73, - 74, -226, -227, -228, -229, -242, 155, -248, 147, 149, - 44, -230, 156, 141, 45, -201, -215, 281, -208, 68, - -208, -208, 257, 249, 252, 250, -208, -208, -208, -208, - -208, -213, 252, -213, -213, -213, -213, 250, 68, 68, - -208, -208, -208, -217, 68, -217, 244, -218, 68, -218, - -218, -218, -218, -249, -73, -190, 67, -144, -96, -182, - 24, -182, -38, 186, 161, 68, -96, -96, -96, 69, - 71, 71, -234, 11, 107, -168, -193, -193, -96, -112, - 23, -168, -67, 166, -31, -109, 70, -97, 27, 73, - -61, -174, 135, 132, 133, 137, 138, -252, 278, 131, - 252, 80, 29, 15, 318, 172, 365, 71, 173, -275, - 69, 127, 52, -73, -73, -141, -148, -161, 19, 11, - 47, 47, -62, 57, 82, 83, 84, 127, -274, -121, - -110, -110, -110, -67, 87, -275, -70, -73, -275, 69, - -275, 127, -275, 69, 67, 23, 11, 11, -275, 11, - 11, -275, -275, -275, -69, -133, -131, 94, -73, -275, - -275, 69, 69, -275, -275, -275, -275, -142, 326, -142, - -275, -275, -275, -275, -275, -142, -142, -142, -142, -69, - -69, -275, -275, -275, -69, -275, -275, -69, -275, -275, - -275, -275, -69, -275, -275, -275, -108, 30, 47, -2, - -274, -274, -155, -79, -80, -80, -79, -80, 56, 56, - 56, 61, 56, 61, 56, -93, -195, -275, -275, -125, - 185, -274, 34, -195, -102, 141, 141, 141, -103, 12, - -76, -103, -103, 127, -159, -160, 303, 300, 306, 71, - 73, 127, 69, -241, 97, -229, 68, 71, 45, -230, - 141, 45, -230, -235, 71, -235, 45, -219, -211, -212, - -220, -223, -209, 82, 88, 29, 66, 278, 147, 45, - 44, 80, -216, 282, 74, -213, -213, -208, -208, -208, - 257, -208, -213, -214, 30, -214, -214, -214, -214, -213, - -224, 73, -224, 74, -217, 74, 70, 66, -186, -2, - 23, -39, 8, 9, 10, -260, -261, -262, 71, 107, - 191, 192, 144, -182, -96, -182, -182, -103, 71, 71, - -165, -168, 34, -110, -152, 140, -171, -181, -178, -253, - -230, -257, -228, -229, 148, 156, 147, 172, 155, -178, - -253, 155, 152, -230, 156, 148, -175, -230, 144, 23, - -178, -178, -236, 97, 172, 23, -186, -186, 53, -96, - -68, -145, 114, -187, -70, -67, 87, -110, -275, -72, - 114, -194, -199, 123, 249, 165, 247, 240, 267, 254, - 280, 245, 281, -196, -199, -110, -110, -110, -110, 359, - -137, 96, -73, 93, -110, -110, -186, -274, -142, -142, - -142, -142, -142, -275, -275, -143, -142, -143, -143, -275, - -143, -143, -275, -143, -143, -143, -143, -275, -143, -143, - -143, -154, 66, -155, -124, -127, -126, -274, -2, -149, - -153, -186, -103, -87, -86, 66, 67, -88, 66, -86, - 56, 56, -151, 68, 69, -126, -274, -153, -110, -102, - -274, -274, -274, -137, -73, -103, 300, 304, 305, -240, - -241, -244, -243, -186, -248, 156, -235, -235, 68, 82, - -110, 9, 45, 45, 73, 70, -214, -214, -213, -208, - -214, 71, 123, -214, 70, 69, 70, 69, 70, 69, - -106, 380, 88, -96, -144, -144, 66, 70, 69, -200, - 71, 71, 71, -96, -168, -110, -213, -96, -62, 68, - -225, 71, -181, -235, -172, 71, 71, -181, 71, 71, - -186, 45, 71, -96, -186, -225, 71, -73, -186, -84, - 127, -103, 11, 69, -71, -275, -110, 127, -275, -208, - -208, -208, -218, -208, 234, -208, 234, -275, -275, 19, - 19, 19, 19, -274, -65, 323, -73, 69, 69, -137, - 172, -143, -143, -143, -143, -143, 28, -154, 69, -275, - -275, -275, -275, 69, -137, -73, 68, -73, -150, -186, - 185, -275, -102, -177, -150, -150, -150, -147, 70, 69, - -208, -150, -114, -214, -213, 73, -213, 74, 74, 380, - 68, -2, -96, -263, -264, -265, 80, 361, 88, 193, - 194, 157, 195, 196, 197, -262, -200, -200, -200, -266, - -167, -68, -225, -139, 160, 161, -200, -190, -232, -230, - 71, -176, 144, 23, 144, -139, -225, 27, -186, -134, - 13, -76, -145, -145, 114, -213, 71, -110, -110, -110, - -110, -110, -275, 73, -110, -110, -275, 16, 45, -127, - 47, -2, -274, -186, -147, -150, 70, 69, -126, -101, - -195, -275, -275, -275, -246, -245, 67, 151, 80, -243, - -146, 70, -214, -214, 70, 70, -244, -144, 19, -144, - -265, 73, 197, 193, 197, 197, 197, 197, 198, -267, - 38, -269, 39, 11, 70, -181, 71, -201, 68, -235, - 71, -186, -181, -139, -274, -135, 14, 16, -103, -71, - -275, -275, -275, -275, -64, 107, 362, -275, -275, -122, - 9, -124, -2, 70, -186, -102, -245, 71, -236, 73, - 158, 70, 184, -19, -2, -7, -8, -9, -10, -12, - -40, -13, -14, -20, -21, -15, -45, -46, -55, -53, - -54, -50, -49, -24, -22, -25, -17, -23, 91, 146, - 214, 224, 36, 36, 189, 190, -210, 145, -270, 43, - -268, -222, 42, 16, -76, -181, -244, -190, -181, -250, - -251, 172, -136, -73, -185, -123, -75, -73, -185, -134, - -145, -275, 360, 63, 363, -137, -155, -275, 74, -96, - -247, -246, 185, -144, -73, -73, 71, -36, -191, 217, - 218, 219, -187, -26, -19, -151, 74, -269, 16, -271, - 40, 41, 73, -103, 70, 68, -275, 69, -186, 69, - -135, 53, 361, 364, -275, 68, -140, 187, 188, -27, - -28, 92, 93, 215, 216, 220, -200, 69, 432, 38, - 73, 16, 16, -134, -247, -244, -251, 47, -75, 53, - -150, -144, 71, 71, 96, 94, -28, -73, -26, 19, - 19, 19, 29, -187, 96, -19, 73, 73, -135, 70, + 239, 240, 241, 242, 243, 71, -251, 68, -188, 23, + 143, 71, 88, 71, 71, 71, -98, 71, 69, 144, + -91, 24, 66, -93, -98, 71, 71, 71, 71, -196, + -195, -185, -184, -170, 73, -75, -172, -172, -184, -184, + -184, -98, -98, -98, -98, -170, -170, -184, -184, -167, + 11, 107, 11, -167, -167, -75, -112, 71, -32, -32, + 73, -32, 69, 97, -32, 70, -124, -260, 431, -65, + -98, -184, -84, -86, -276, -151, -188, 9, 107, 69, + 18, 127, 69, -148, 25, 26, -148, -149, -277, -65, + -113, 51, 74, 77, -173, 49, -98, -75, -75, -122, + 82, 88, 83, 84, -190, 114, -196, -189, -185, -112, + -123, -128, -87, 78, 107, 105, 106, 90, -112, -112, + -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, + -112, -112, -112, -198, 71, 73, 71, -111, -111, -188, + -63, -277, 69, -277, -2, -71, -74, 114, -75, -195, + -71, -277, -75, -75, -131, 73, -71, -131, 73, -71, + -71, -71, -63, -132, -133, 92, -131, -277, -112, -188, + -188, -71, -72, -71, -71, -71, -277, -277, -74, -71, + -74, -71, -71, -277, -277, -277, -277, -63, -63, -71, + -71, -71, -63, -71, -71, -63, -71, -71, -71, -71, + -63, -71, -71, -71, -154, 172, -98, 30, 69, -94, + -96, -95, -97, 56, 60, 62, 57, 58, 59, 63, + -179, 23, -78, -85, 47, -276, -103, 172, -104, 23, + -197, 64, 145, 65, -154, 67, -78, -98, -78, -101, + -195, 114, -160, -158, 69, 299, 301, 302, 66, 85, + -75, -216, 122, -189, -196, -241, -242, -243, -189, 73, + 74, -228, -229, -230, -231, -244, 155, -250, 147, 149, + 44, -232, 156, 141, 45, -203, -217, 281, -210, 68, + -210, -210, 257, 249, 252, 250, -210, -210, -210, -210, + -210, -215, 252, -215, -215, -215, -215, 250, 68, 68, + -210, -210, -210, -219, 68, -219, 244, -220, 68, -220, + -220, -220, -220, -251, -75, -192, 67, -146, -98, -184, + 24, -184, -38, 186, 161, 68, -98, -98, -98, 69, + 71, 71, -236, 11, 107, -170, -195, -195, -98, -114, + 23, -170, -69, 166, -31, -111, 70, -99, 27, 73, + -63, -46, -45, -176, 135, 132, 133, 137, 138, -254, + 278, 131, 252, 80, 29, 15, 318, 172, 365, 71, + 173, -277, 69, 127, 52, -75, -75, -143, -150, -163, + 19, 11, 47, 47, -64, 57, 82, 83, 84, 127, + -276, -123, -112, -112, -112, -69, 87, -277, -72, -75, + -277, 69, -277, 127, -277, 69, 67, 23, 11, 11, + -277, 11, 11, -277, -277, -277, -71, -135, -133, 94, + -75, -277, -277, 69, 69, -277, -277, -277, -277, -144, + 326, -144, -277, -277, -277, -277, -277, -144, -144, -144, + -144, -71, -71, -277, -277, -277, -71, -277, -277, -71, + -277, -277, -277, -277, -71, -277, -277, -277, -110, 30, + 47, -2, -276, -276, -157, -81, -82, -82, -81, -82, + 56, 56, 56, 61, 56, 61, 56, -95, -197, -277, + -277, -127, 185, -276, 34, -197, -104, 141, 141, 141, + -105, 12, -78, -105, -105, 127, -161, -162, 303, 300, + 306, 71, 73, 127, 69, -243, 97, -231, 68, 71, + 45, -232, 141, 45, -232, -237, 71, -237, 45, -221, + -213, -214, -222, -225, -211, 82, 88, 29, 66, 278, + 147, 45, 44, 80, -218, 282, 74, -215, -215, -210, + -210, -210, 257, -210, -215, -216, 30, -216, -216, -216, + -216, -215, -226, 73, -226, 74, -219, 74, 70, 66, + -188, -2, 23, -39, 8, 9, 10, -262, -263, -264, + 71, 107, 191, 192, 144, -184, -98, -184, -184, -105, + 71, 71, -167, -170, 34, -112, -154, 140, -173, 69, + -183, -180, -255, -232, -259, -230, -231, 148, 156, 147, + 172, 155, -180, -255, 155, 152, -232, 156, 148, -177, + -232, 144, 23, -180, -180, -238, 97, 172, 23, -188, + -188, 53, -98, -70, -147, 114, -189, -72, -69, 87, + -112, -277, -74, 114, -196, -201, 123, 249, 165, 247, + 240, 267, 254, 280, 245, 281, -198, -201, -112, -112, + -112, -112, 359, -139, 96, -75, 93, -112, -112, -188, + -276, -144, -144, -144, -144, -144, -277, -277, -145, -144, + -145, -145, -277, -145, -145, -277, -145, -145, -145, -145, + -277, -145, -145, -145, -156, 66, -157, -126, -129, -128, + -276, -2, -151, -155, -188, -105, -89, -88, 66, 67, + -90, 66, -88, 56, 56, -153, 68, 69, -128, -276, + -155, -112, -104, -276, -276, -276, -139, -75, -105, 300, + 304, 305, -242, -243, -246, -245, -188, -250, 156, -237, + -237, 68, 82, -112, 9, 45, 45, 73, 70, -216, + -216, -215, -210, -216, 71, 123, -216, 70, 69, 70, + 69, 70, 69, -108, 380, 88, -98, -146, -146, 66, + 70, 69, -202, 71, 71, 71, -98, -170, -112, -215, + -98, -64, -45, 68, -227, 71, -183, -237, -174, 71, + 71, -183, 71, 71, -188, 45, 71, -98, -188, -227, + 71, -75, -188, -86, 127, -105, 11, 69, -73, -277, + -112, 127, -277, -210, -210, -210, -220, -210, 234, -210, + 234, -277, -277, 19, 19, 19, 19, -276, -67, 323, + -75, 69, 69, -139, 172, -145, -145, -145, -145, -145, + 28, -156, 69, -277, -277, -277, -277, 69, -139, -75, + 68, -75, -152, -188, 185, -277, -104, -179, -152, -152, + -152, -149, 70, 69, -210, -152, -116, -216, -215, 73, + -215, 74, 74, 380, 68, -2, -98, -265, -266, -267, + 80, 361, 88, 193, 194, 157, 195, 196, 197, -264, + -202, -202, -202, -268, -169, -70, -227, -141, 160, 161, + -202, -192, -234, -232, 71, -178, 144, 23, 144, -141, + -227, 27, -188, -136, 13, -78, -147, -147, 114, -215, + 71, -112, -112, -112, -112, -112, -277, 73, -112, -112, + -277, 16, 45, -129, 47, -2, -276, -188, -149, -152, + 70, 69, -128, -103, -197, -277, -277, -277, -248, -247, + 67, 151, 80, -245, -148, 70, -216, -216, 70, 70, + -246, -146, 19, -146, -267, 73, 197, 193, 197, 197, + 197, 197, 198, -269, 38, -271, 39, 11, 70, 71, + -203, 68, -237, 71, -188, -141, -276, -137, 14, 16, + -105, -73, -277, -277, -277, -277, -66, 107, 362, -277, + -277, -124, 9, -126, -2, 70, -188, -104, -247, 71, + -238, 73, 158, 70, 184, -19, -2, -7, -8, -9, + -10, -12, -40, -13, -14, -20, -21, -15, -47, -48, + -57, -55, -56, -52, -51, -24, -22, -25, -17, -23, + 91, 146, 214, 224, 36, 36, 189, 190, -212, 145, + -272, 43, -270, -224, 42, 16, -78, -246, -192, -252, + -253, 172, -138, -75, -187, -125, -77, -75, -187, -136, + -147, -277, 360, 63, 363, -139, -157, -277, 74, -98, + -249, -248, 185, -146, -75, -75, 71, -36, -193, 217, + 218, 219, -189, -26, -19, -153, 74, -271, 16, -273, + 40, 41, 73, -105, 70, 68, -277, 69, -188, 69, + -137, 53, 361, 364, -277, 68, -142, 187, 188, -27, + -28, 92, 93, 215, 216, 220, -202, 69, 432, 38, + 73, 16, 16, -136, -249, -246, -253, 47, -77, 53, + -152, -146, 71, 71, 96, 94, -28, -75, -26, 19, + 19, 19, 29, -189, 96, -19, 73, 73, -137, 70, 174, 362, 70, -11, -18, -10, -7, -8, -9, 224, 91, -26, 93, 432, -37, 74, -2, -35, -34, 74, - -37, 222, 88, 223, 71, -110, -247, 175, 363, -255, - -256, 66, -144, -26, 432, -26, 96, 94, -29, -30, - 95, -19, 69, 221, -274, 364, -256, 66, -255, 66, + -37, 222, 88, 223, 71, -112, -249, 175, 363, -257, + -258, 66, -146, -26, 432, -26, 96, 94, -29, -30, + 95, -19, 69, 221, -276, 364, -258, 66, -257, 66, 10, 9, 432, 96, 432, 146, -26, 96, 94, -30, - -73, -34, -110, 171, -254, 159, 154, 157, 30, -254, - 96, 91, 432, 146, -26, 93, -275, -275, 153, 29, + -75, -34, -112, 171, -256, 159, 154, 157, 30, -256, + 96, 91, 432, 146, -26, 93, -277, -277, 153, 29, 82, 96, 432, -26, 146, 96, 432, 146, } var yyDef = [...]int{ 29, -2, 2, -2, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 820, 0, - 512, 512, 512, 512, 512, 512, 0, -2, 391, 392, - 0, 0, 0, 0, -2, 487, 488, 489, 491, 492, - 501, -2, 1296, 1296, 0, 0, 1296, 0, 181, 0, - 0, 0, 0, 49, 50, 872, 0, 504, 493, 494, - 0, 1294, 1, 3, 829, 0, 0, 516, 521, 514, - 0, 872, 872, 0, 0, 83, 0, 0, 0, 0, - 0, 870, 870, 0, 870, 894, 0, 890, 891, 892, - 0, 868, 0, 868, 868, 868, 868, 868, 0, 439, - 605, 903, 904, 1059, 1060, 1061, 1062, 1063, 1064, 1065, - 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, - 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, - 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, - 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, - 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, - 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125, - 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, - 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, - 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155, - 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, - 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, - 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185, - 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, - 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204, 1205, - 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, - 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, - 1226, 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, - 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, - 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, - 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, - 0, 0, 0, 480, 0, 1297, 1297, 454, 0, 456, - 0, 0, 0, 0, 0, 465, 468, 1297, 342, 343, - 344, 484, 485, 474, 486, 0, 0, 0, 505, 506, - 507, 508, 1296, 1296, 511, 160, 162, 0, 182, 0, - 185, 188, 909, 512, 43, 0, 0, 873, 490, 38, - 39, 0, 589, 590, 591, 1266, 1267, 1268, 1269, 1270, - 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1280, - 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290, - 1291, 1292, 1293, 833, 0, 0, 820, 45, 0, 512, - 517, 518, 524, 522, 523, 513, 0, 535, 544, 0, - 614, 0, 619, 621, -2, -2, 0, 662, 663, 664, - 665, 666, 0, 0, 0, 0, 0, 0, 0, 0, - 690, 691, 692, 693, 694, 695, 799, 800, 801, 802, - 803, 804, 805, 806, 623, 624, 796, 853, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 787, - 0, 758, 758, 758, 758, 758, 758, 758, 758, 758, + 21, 22, 23, 24, 25, 26, 27, 28, 823, 0, + 515, 515, 515, 515, 515, 515, 0, -2, 391, 392, + 0, 0, 0, 0, -2, 490, 491, 492, 494, 495, + 504, -2, 1299, 1299, 0, 0, 1299, 0, 181, 0, + 0, 0, 0, 49, 50, 875, 0, 507, 496, 497, + 0, 1297, 1, 3, 832, 0, 0, 519, 524, 517, + 0, 875, 875, 0, 0, 83, 0, 0, 0, 0, + 0, 873, 873, 0, 873, 897, 0, 893, 894, 895, + 0, 871, 0, 871, 871, 871, 871, 871, 0, 442, + 608, 906, 907, 1062, 1063, 1064, 1065, 1066, 1067, 1068, + 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, + 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, + 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, + 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, + 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, + 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128, + 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138, + 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, + 1149, 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157, 1158, + 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, + 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, + 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, + 1189, 1190, 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1198, + 1199, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, + 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218, + 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, + 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, + 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248, + 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, + 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268, + 0, 0, 0, 483, 0, 1300, 1300, 457, 0, 459, + 0, 0, 0, 0, 0, 468, 471, 1300, 342, 343, + 344, 487, 488, 477, 489, 0, 0, 0, 508, 509, + 510, 511, 1299, 1299, 514, 160, 162, 0, 182, 0, + 185, 188, 912, 515, 43, 0, 0, 876, 493, 38, + 39, 0, 592, 593, 594, 1269, 1270, 1271, 1272, 1273, + 1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283, + 1284, 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, + 1294, 1295, 1296, 836, 0, 0, 823, 45, 0, 515, + 520, 521, 527, 525, 526, 516, 0, 538, 547, 0, + 617, 0, 622, 624, -2, -2, 0, 665, 666, 667, + 668, 669, 0, 0, 0, 0, 0, 0, 0, 0, + 693, 694, 695, 696, 697, 698, 802, 803, 804, 805, + 806, 807, 808, 809, 626, 627, 799, 856, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 790, + 0, 761, 761, 761, 761, 761, 761, 761, 761, 761, 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, 60, - 62, 605, 66, 0, 1246, 854, -2, -2, 0, 0, - 796, 0, -2, 1076, -2, 84, 0, 219, 220, 0, - 1088, 363, 901, 902, 1078, 897, 898, 925, 926, 927, - 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, - 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, - 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, - 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, - 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, - 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, - 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, - 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, - 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, - 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, - 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, - 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, - 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, - 1058, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 428, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 438, 0, 440, 1297, 480, 443, 0, 0, 870, - 870, 1297, 1297, 1297, 0, 0, 0, 452, 1298, 1299, - 453, 0, 365, 366, 480, 480, 1297, 1297, 477, 0, - 477, 477, 475, 476, 471, 472, 0, 467, 0, 469, - 495, -2, 498, 499, 500, -2, 0, 509, 510, 0, + 62, 608, 66, 0, 1249, 857, -2, -2, 0, 0, + 799, 0, -2, 1079, -2, 84, 0, 219, 220, 0, + 1091, 363, 904, 905, 1081, 900, 901, 928, 929, 930, + 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, + 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, + 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, + 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, + 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, + 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, + 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, + 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, + 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, + 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, + 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, + 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, + 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, + 1061, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 431, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 441, 0, 443, 1300, 483, 446, 0, 0, 873, + 873, 1300, 1300, 1300, 0, 0, 0, 455, 1301, 1302, + 456, 0, 365, 366, 483, 483, 1300, 1300, 480, 0, + 480, 480, 478, 479, 474, 475, 0, 470, 0, 472, + 498, -2, 501, 502, 503, -2, 0, 512, 513, 0, 0, 164, 0, 0, 184, 166, 0, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 0, - 187, 0, 907, 910, 521, 44, 1295, 0, 1297, 0, - 0, 0, 31, 0, 0, 830, 0, 821, 822, 826, - 826, 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, - 1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284, - 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 829, - 43, 521, 0, 519, 525, 526, 515, 0, 536, 0, - 0, 0, 545, 0, 547, 548, 549, 550, 0, 617, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 641, - 642, 643, 644, 645, 646, 647, 620, 0, 634, 0, - 0, 0, 682, 683, 684, 685, 686, 687, 688, 0, - 524, 43, 0, 660, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 524, 0, 788, 0, 741, 750, - 0, 742, 751, 743, 752, 744, 0, 745, 753, 746, - 754, 747, 748, 755, 749, 0, 0, 0, 656, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 524, 524, 0, 0, 0, 524, 0, 0, - 524, 0, 0, 0, 0, 524, 0, 0, 0, 64, - 0, 604, 0, 551, 553, 554, 555, -2, 0, 608, - 654, -2, 0, 0, 0, 56, 57, 0, 0, 0, - 0, 67, 1246, 69, 70, 0, 0, 0, 318, 863, - 864, 865, 0, 861, 380, 0, 221, 0, 0, 229, + 187, 0, 910, 913, 524, 44, 1298, 0, 1300, 0, + 0, 0, 31, 0, 0, 833, 0, 824, 825, 829, + 829, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, + 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, + 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 832, + 43, 524, 0, 522, 528, 529, 518, 0, 539, 0, + 0, 0, 548, 0, 550, 551, 552, 553, 0, 620, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 644, + 645, 646, 647, 648, 649, 650, 623, 0, 637, 0, + 0, 0, 685, 686, 687, 688, 689, 690, 691, 0, + 527, 43, 0, 663, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 527, 0, 791, 0, 744, 753, + 0, 745, 754, 746, 755, 747, 0, 748, 756, 749, + 757, 750, 751, 758, 752, 0, 0, 0, 659, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 527, 527, 0, 0, 0, 527, 0, 0, + 527, 0, 0, 0, 0, 527, 0, 0, 0, 64, + 0, 607, 0, 554, 556, 557, 558, -2, 0, 611, + 657, -2, 0, 0, 0, 56, 57, 0, 0, 0, + 0, 67, 1249, 69, 70, 0, 0, 0, 318, 866, + 867, 868, 0, 864, 380, 0, 221, 0, 0, 229, 306, 237, 238, 239, 299, 241, 299, 299, 0, 299, 299, 299, 299, 299, 315, 315, 315, 315, 315, 282, 283, 284, 285, 286, 0, 0, 259, 299, 299, 299, 263, 289, 290, 291, 292, 293, 294, 295, 296, 242, 243, 244, 245, 246, 247, 248, 249, 250, 301, 301, - 303, 303, 303, 303, 303, 0, 362, 0, 895, 81, - 0, 1297, 0, 1297, 0, 0, 217, 116, 0, 0, - 431, 869, 0, 433, 58, 434, 435, 436, 437, 606, - 905, 906, 441, 442, 481, 482, 0, 0, 446, 447, - 448, 449, 450, 451, 367, 457, 458, 459, 464, 480, - 0, 0, 0, 569, 480, 466, 648, 502, 161, 163, - 165, 183, 0, 0, 186, 189, 0, 0, 0, 524, - 0, 417, 40, 41, 0, 0, 842, 834, 0, 0, - 0, 0, 0, 824, 827, 828, 825, 833, 46, 524, - 0, 807, 0, 0, 527, 520, 34, 615, 616, 618, - 635, 0, 637, 639, 546, 537, 0, 797, -2, 625, - 626, 650, 651, 652, 0, 0, 0, 0, 648, 630, - 0, 667, 668, 669, 670, 671, 672, 673, 674, 675, - 676, 677, 678, 681, 772, 773, 0, 679, 680, 689, - 656, 653, 0, 852, 43, 0, 658, 531, 532, 0, - 0, 728, 0, 0, 664, 799, 0, 664, 799, 0, - 0, 0, 0, 794, 791, 0, 0, 759, 0, 0, - 0, 0, 0, 657, 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, 603, 0, 0, 0, - 0, 0, 0, 592, 0, 0, 595, 0, 0, 0, - 0, 588, 0, 0, 0, 0, 562, 1179, 564, 0, - 608, 0, 0, 0, 612, 0, 612, 61, 612, 63, - 0, 607, 855, 68, 0, 0, 73, 74, 856, 857, - 858, 859, 0, 797, 0, 218, 381, 383, 386, 387, - 388, 222, 224, 225, 226, 0, 1088, 355, 1189, 1227, - -2, 349, 1115, -2, -2, 228, 308, 307, 240, 0, + 303, 303, 303, 303, 303, 0, 362, 0, 898, 81, + 0, 1300, 0, 1300, 0, 0, 217, 116, 0, 0, + 434, 872, 0, 436, 58, 437, 438, 439, 440, 609, + 908, 909, 444, 445, 484, 485, 0, 0, 449, 450, + 451, 452, 453, 454, 367, 460, 461, 462, 467, 483, + 0, 0, 0, 572, 483, 469, 651, 505, 161, 163, + 165, 183, 0, 0, 186, 189, 0, 0, 0, 527, + 0, 420, 40, 41, 0, 0, 845, 837, 0, 0, + 0, 0, 0, 827, 830, 831, 828, 836, 46, 527, + 0, 810, 0, 0, 530, 523, 34, 618, 619, 621, + 638, 0, 640, 642, 549, 540, 0, 800, -2, 628, + 629, 653, 654, 655, 0, 0, 0, 0, 651, 633, + 0, 670, 671, 672, 673, 674, 675, 676, 677, 678, + 679, 680, 681, 684, 775, 776, 0, 682, 683, 692, + 659, 656, 0, 855, 43, 0, 661, 534, 535, 0, + 0, 731, 0, 0, 667, 802, 0, 667, 802, 0, + 0, 0, 0, 797, 794, 0, 0, 762, 0, 0, + 0, 0, 0, 660, 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, 606, 0, 0, 0, + 0, 0, 0, 595, 0, 0, 598, 0, 0, 0, + 0, 591, 0, 0, 0, 0, 565, 1182, 567, 0, + 611, 0, 0, 0, 615, 0, 615, 61, 615, 63, + 0, 610, 858, 68, 0, 0, 73, 74, 859, 860, + 861, 862, 0, 800, 0, 218, 381, 383, 386, 387, + 388, 222, 224, 225, 226, 0, 1091, 355, 1192, 1230, + -2, 349, 1118, -2, -2, 228, 308, 307, 240, 0, 315, 315, 299, 299, 299, 299, 268, 315, 271, 274, 275, 318, 0, 318, 318, 318, 318, 315, 0, 0, 260, 261, 262, 251, 0, 252, 301, 254, 0, 255, 256, 257, 258, 361, 0, 0, 0, 0, 0, 88, - 871, 89, 0, 117, 118, 92, 0, 429, 1297, 0, - 1297, 1297, 612, 0, 0, 460, 478, 479, 477, 480, - 0, 463, 470, 0, 167, 168, 190, 64, 0, 908, - 519, 1296, -2, 418, 887, 418, 418, 409, 335, 876, - 877, 878, 879, 880, 881, 882, 883, 884, 0, 0, - 0, 0, 0, 831, 832, 823, 32, 0, 866, 867, - 808, 809, 82, 528, 636, 638, 640, 0, 656, 627, - 648, 631, 0, 628, 0, 622, 0, 661, -2, 0, - 726, 0, 727, 0, 0, 0, 0, 0, 765, 0, - 0, 766, 0, 737, 820, 0, 792, 0, 0, 740, - 760, 0, 0, 761, 762, 763, 764, 715, 0, 716, - 0, 0, 0, 0, 0, 722, 723, 724, 725, 0, - 0, 542, 542, 542, 0, 542, 542, 0, 542, 542, - 542, 542, 0, 542, 542, 542, 846, 0, 0, -2, - 0, 0, 612, 552, 583, 585, 0, 580, 593, 594, - 596, 0, 598, 0, 600, 601, 571, 558, 655, 559, - 0, 0, 0, 608, 568, 0, 0, 0, 820, 0, - 612, 54, 55, 0, 71, 72, 0, 0, 78, 319, - 320, 0, 0, 384, 0, 223, 0, 0, 337, 349, - 345, 346, 349, 340, 350, 341, 0, 230, 231, 232, - 233, 234, 235, 310, 0, 0, 0, 314, 0, 322, - 324, 0, 236, 309, 0, 318, 318, 315, 266, 267, - 299, 272, 318, 276, 0, 277, 278, 279, 280, 318, - 0, 297, 0, 0, 253, 0, 377, 0, 896, -2, - 81, 0, 119, 120, 121, 0, 93, 94, 0, 0, - 0, 0, 0, 432, 59, 444, 445, 455, 368, 369, - 480, 462, 0, 649, 315, 0, 527, 393, 0, 1296, - 349, 0, 410, 411, 419, 420, 421, 422, 0, 0, - 1296, 0, 0, 0, 420, 0, 0, 0, 888, 889, - 0, 0, 0, 336, 0, 0, 844, 843, 835, 33, - 612, 0, 538, 798, 0, 629, 0, 632, 696, 659, - 533, 0, 0, 299, 299, 777, 299, 303, 780, 299, - 782, 299, 785, 0, 0, 0, 0, 0, 0, 0, - 789, 739, 795, 0, 0, 0, 539, 820, 717, 718, - 719, 720, 721, 542, 542, 700, 543, 701, 702, 542, - 704, 705, 542, 707, 708, 709, 710, 542, 712, 713, - 714, 47, 0, 846, 836, 848, 850, 0, 43, 0, - 0, 575, 820, 577, 584, 0, 0, 578, 0, 579, - 597, 599, 556, 0, 0, 560, 0, 0, -2, 567, - 0, 0, 0, 829, 613, 53, 75, 76, 77, 382, - 385, 0, 351, 299, 354, 0, 338, 339, 0, 311, - 312, 0, 321, 323, 325, 300, 264, 265, 318, 273, - 269, 316, 317, 281, 315, 0, 315, 0, 304, 0, - 364, 378, 0, 0, 86, 0, 0, 100, 0, 96, - 0, 0, 0, 430, 461, 570, 919, 602, 82, 0, - 414, 0, 396, 895, 347, 390, 397, 398, 403, 404, - 405, 0, 0, 400, 0, 414, 0, 413, 0, 42, - 0, 810, 0, 82, 82, 697, 633, 0, 729, 774, - 315, 778, 779, 781, 783, 784, 786, 731, 730, 0, - 0, 0, 0, 0, 0, 0, 793, 0, 0, 0, - 0, 698, 699, 703, 706, 711, 0, 48, 0, 851, - -2, 0, 65, 0, 829, 581, 0, 586, 0, 573, - 0, 608, 565, 0, 0, 0, 0, 52, 327, 0, - 826, 0, 313, 270, 318, 298, 318, 0, 0, 379, - 0, -2, 0, 81, 101, 102, 0, 0, 0, 107, - 0, 0, 0, 0, 0, 95, 97, 98, 99, 921, - 915, 0, 0, 1296, 415, 0, 229, 0, 349, 348, - 412, 0, 885, 886, 0, 1296, 414, 0, 845, 816, - 0, 612, 0, 529, 534, 775, 776, 0, 0, 0, - 0, 767, 738, 790, 0, 0, 540, 0, 0, 849, - 0, -2, 0, 576, 51, 0, 572, 0, 561, 563, - 608, 609, 610, 611, 326, 330, 0, 335, 0, 352, - 353, 0, 287, 288, 302, 305, 0, 87, 0, 0, - 103, 104, 105, 106, 108, 109, 0, 0, 0, 874, - 923, -2, 0, 0, 1296, 395, 416, 227, 0, 895, - 399, 406, 407, 1296, 0, 35, 0, 0, 810, 82, - 732, 734, 733, 735, 0, 0, 0, 756, 757, 820, - 0, 839, 43, 582, 574, 566, 331, 332, 0, 334, - 0, 328, 0, 81, -2, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 0, 0, - 0, 0, 110, 111, 112, 113, 571, 0, 915, 0, - 917, 0, 914, 0, 612, 394, 0, 0, 408, 0, - 424, 0, 817, 818, 819, 811, 812, 814, 815, 816, - 530, 736, 0, 0, 0, 0, 847, -2, 333, 0, - 85, 329, 122, 91, 0, 0, 897, 0, 0, 149, - 150, 151, 899, 0, 191, 30, 0, 922, 0, 920, - 0, 0, 916, 810, 328, 0, 423, 0, 0, 0, - 36, 768, 0, 771, 541, 0, 81, 0, 0, 0, - 133, 0, 0, 0, 0, 0, 147, 0, 0, 875, - 924, 0, 0, 816, 401, 0, 425, 0, 813, 769, + 874, 89, 0, 117, 118, 92, 0, 432, 1300, 0, + 1300, 1300, 615, 0, 0, 463, 481, 482, 480, 483, + 0, 466, 473, 0, 167, 168, 190, 64, 0, 911, + 522, 393, 394, 1299, -2, 421, 890, 421, 421, 412, + 335, 879, 880, 881, 882, 883, 884, 885, 886, 887, + 0, 0, 0, 0, 0, 834, 835, 826, 32, 0, + 869, 870, 811, 812, 82, 531, 639, 641, 643, 0, + 659, 630, 651, 634, 0, 631, 0, 625, 0, 664, + -2, 0, 729, 0, 730, 0, 0, 0, 0, 0, + 768, 0, 0, 769, 0, 740, 823, 0, 795, 0, + 0, 743, 763, 0, 0, 764, 765, 766, 767, 718, + 0, 719, 0, 0, 0, 0, 0, 725, 726, 727, + 728, 0, 0, 545, 545, 545, 0, 545, 545, 0, + 545, 545, 545, 545, 0, 545, 545, 545, 849, 0, + 0, -2, 0, 0, 615, 555, 586, 588, 0, 583, + 596, 597, 599, 0, 601, 0, 603, 604, 574, 561, + 658, 562, 0, 0, 0, 611, 571, 0, 0, 0, + 823, 0, 615, 54, 55, 0, 71, 72, 0, 0, + 78, 319, 320, 0, 0, 384, 0, 223, 0, 0, + 337, 349, 345, 346, 349, 340, 350, 341, 0, 230, + 231, 232, 233, 234, 235, 310, 0, 0, 0, 314, + 0, 322, 324, 0, 236, 309, 0, 318, 318, 315, + 266, 267, 299, 272, 318, 276, 0, 277, 278, 279, + 280, 318, 0, 297, 0, 0, 253, 0, 377, 0, + 899, -2, 81, 0, 119, 120, 121, 0, 93, 94, + 0, 0, 0, 0, 0, 435, 59, 447, 448, 458, + 368, 369, 483, 465, 0, 652, 315, 0, 530, 0, + 396, 0, 1299, 349, 0, 413, 414, 422, 423, 424, + 425, 0, 0, 1299, 0, 0, 0, 423, 0, 0, + 0, 891, 892, 0, 0, 0, 336, 0, 0, 847, + 846, 838, 33, 615, 0, 541, 801, 0, 632, 0, + 635, 699, 662, 536, 0, 0, 299, 299, 780, 299, + 303, 783, 299, 785, 299, 788, 0, 0, 0, 0, + 0, 0, 0, 792, 742, 798, 0, 0, 0, 542, + 823, 720, 721, 722, 723, 724, 545, 545, 703, 546, + 704, 705, 545, 707, 708, 545, 710, 711, 712, 713, + 545, 715, 716, 717, 47, 0, 849, 839, 851, 853, + 0, 43, 0, 0, 578, 823, 580, 587, 0, 0, + 581, 0, 582, 600, 602, 559, 0, 0, 563, 0, + 0, -2, 570, 0, 0, 0, 832, 616, 53, 75, + 76, 77, 382, 385, 0, 351, 299, 354, 0, 338, + 339, 0, 311, 312, 0, 321, 323, 325, 300, 264, + 265, 318, 273, 269, 316, 317, 281, 315, 0, 315, + 0, 304, 0, 364, 378, 0, 0, 86, 0, 0, + 100, 0, 96, 0, 0, 0, 433, 464, 573, 922, + 605, 82, 395, 0, 417, 0, 399, 898, 347, 390, + 400, 401, 406, 407, 408, 0, 0, 403, 0, 417, + 0, 416, 0, 42, 0, 813, 0, 82, 82, 700, + 636, 0, 732, 777, 315, 781, 782, 784, 786, 787, + 789, 734, 733, 0, 0, 0, 0, 0, 0, 0, + 796, 0, 0, 0, 0, 701, 702, 706, 709, 714, + 0, 48, 0, 854, -2, 0, 65, 0, 832, 584, + 0, 589, 0, 576, 0, 611, 568, 0, 0, 0, + 0, 52, 327, 0, 829, 0, 313, 270, 318, 298, + 318, 0, 0, 379, 0, -2, 0, 81, 101, 102, + 0, 0, 0, 107, 0, 0, 0, 0, 0, 95, + 97, 98, 99, 924, 918, 0, 0, 398, 418, 0, + 229, 0, 349, 348, 415, 0, 888, 889, 0, 410, + 417, 0, 848, 819, 0, 615, 0, 532, 537, 778, + 779, 0, 0, 0, 0, 770, 741, 793, 0, 0, + 543, 0, 0, 852, 0, -2, 0, 579, 51, 0, + 575, 0, 564, 566, 611, 612, 613, 614, 326, 330, + 0, 335, 0, 352, 353, 0, 287, 288, 302, 305, + 0, 87, 0, 0, 103, 104, 105, 106, 108, 109, + 0, 0, 0, 877, 926, -2, 0, 0, 397, 419, + 227, 0, 898, 402, 409, 411, 0, 35, 0, 0, + 813, 82, 735, 737, 736, 738, 0, 0, 0, 759, + 760, 823, 0, 842, 43, 585, 577, 569, 331, 332, + 0, 334, 0, 328, 0, 81, -2, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 0, 0, 0, 0, 110, 111, 112, 113, 574, 0, + 918, 0, 920, 0, 917, 0, 615, 0, 0, 0, + 427, 0, 820, 821, 822, 814, 815, 817, 818, 819, + 533, 739, 0, 0, 0, 0, 850, -2, 333, 0, + 85, 329, 122, 91, 0, 0, 900, 0, 0, 149, + 150, 151, 902, 0, 191, 30, 0, 925, 0, 923, + 0, 0, 919, 813, 328, 0, 426, 0, 0, 0, + 36, 771, 0, 774, 544, 0, 81, 0, 0, 0, + 133, 0, 0, 0, 0, 0, 147, 0, 0, 878, + 927, 0, 0, 819, 404, 0, 428, 0, 816, 772, 0, 0, 123, 124, 0, 0, 134, 0, 0, 0, - 0, 0, 0, 900, 114, 192, 918, 912, 37, 328, + 0, 0, 0, 903, 114, 192, 921, 915, 37, 328, 0, 0, 356, 81, 125, 126, 127, 128, 129, 0, 131, 0, 0, 0, 143, 144, -2, 0, 152, 154, - 155, 156, 0, 158, 159, 148, 402, 0, 0, 357, + 155, 156, 0, 158, 159, 148, 405, 0, 0, 357, 358, 0, 90, 0, 0, 0, 0, 0, 0, 140, - 0, 146, 0, 157, 0, 770, 359, 0, 360, 0, + 0, 146, 0, 157, 0, 773, 359, 0, 360, 0, 0, 0, 0, 0, 135, 136, 0, 0, 0, 141, 0, 153, 0, 0, 370, 372, 373, 0, 0, 371, - 130, 132, 0, 138, 0, 0, 426, 427, 374, 375, + 130, 132, 0, 138, 0, 0, 429, 430, 374, 375, 376, 0, 0, 0, 137, 0, 142, 139, } var yyTok1 = [...]int{ @@ -5059,41 +5066,41 @@ yydefault: case 1: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:401 +//line sql.y:403 { setParseTree(yylex, yyDollar[1].statement) } case 2: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:406 +//line sql.y:408 { } case 3: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:407 +//line sql.y:409 { } case 4: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:411 +//line sql.y:413 { yyVAL.statement = yyDollar[1].selStmt } case 29: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:439 +//line sql.y:441 { setParseTree(yylex, nil) } case 30: yyDollar = yyS[yypt-11 : yypt+1] -//line sql.y:445 +//line sql.y:447 { yyVAL.statement = &Load{Local: yyDollar[3].boolVal, Infile: yyDollar[4].str, Table: yyDollar[5].tableName, Partition: yyDollar[6].partitions, Charset: yyDollar[7].str, Fields: yyDollar[8].Fields, Lines: yyDollar[9].Lines, IgnoreNum: yyDollar[10].sqlVal, Columns: yyDollar[11].columns} } case 31: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:451 +//line sql.y:453 { sel := yyDollar[1].selStmt.(*Select) sel.OrderBy = yyDollar[2].orderBy @@ -5103,25 +5110,25 @@ yydefault: } case 32: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:459 +//line sql.y:461 { 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 33: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:463 +//line sql.y:465 { 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 34: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:469 +//line sql.y:471 { yyVAL.statement = &Stream{Comments: Comments(yyDollar[2].bytes2), SelectExpr: yyDollar[3].selectExpr, Table: yyDollar[5].tableName} } case 35: yyDollar = yyS[yypt-10 : yypt+1] -//line sql.y:476 +//line sql.y:478 { yyVAL.selStmt = &Select{Comments: Comments(yyDollar[2].bytes2), Cache: yyDollar[3].str, Distinct: yyDollar[4].str, Hints: yyDollar[6].str, SelectExprs: yyDollar[7].selectExprs, From: TableExprs{&AliasedTableExpr{Expr: TableName{Name: NewTableIdent("dual")}}}, Where: NewWhere(WhereStr, yyDollar[8].expr), GroupBy: GroupBy(yyDollar[9].exprs), Having: NewWhere(HavingStr, yyDollar[10].expr)} if yyDollar[5].byt == 1 { @@ -5130,7 +5137,7 @@ yydefault: } case 36: yyDollar = yyS[yypt-12 : yypt+1] -//line sql.y:483 +//line sql.y:485 { yyVAL.selStmt = &Select{Comments: Comments(yyDollar[2].bytes2), Cache: yyDollar[3].str, Distinct: yyDollar[4].str, Hints: yyDollar[6].str, SelectExprs: yyDollar[7].selectExprs, From: yyDollar[9].tableExprs, Where: NewWhere(WhereStr, yyDollar[10].expr), GroupBy: GroupBy(yyDollar[11].exprs), Having: NewWhere(HavingStr, yyDollar[12].expr)} if yyDollar[5].byt == 1 { @@ -5139,7 +5146,7 @@ yydefault: } case 37: yyDollar = yyS[yypt-13 : yypt+1] -//line sql.y:490 +//line sql.y:492 { yyVAL.selStmt = &Select{CommonTableExprs: yyDollar[1].tableExprs, Comments: Comments(yyDollar[3].bytes2), Cache: yyDollar[4].str, Distinct: yyDollar[5].str, Hints: yyDollar[7].str, SelectExprs: yyDollar[8].selectExprs, From: yyDollar[10].tableExprs, Where: NewWhere(WhereStr, yyDollar[11].expr), GroupBy: GroupBy(yyDollar[12].exprs), Having: NewWhere(HavingStr, yyDollar[13].expr)} if yyDollar[6].byt == 1 { @@ -5148,61 +5155,61 @@ yydefault: } case 38: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:499 +//line sql.y:501 { yyVAL.tableExprs = yyDollar[2].tableExprs } case 39: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:505 +//line sql.y:507 { yyVAL.tableExprs = TableExprs{yyDollar[1].tableExpr} } case 40: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:509 +//line sql.y:511 { yyVAL.tableExprs = append(yyDollar[1].tableExprs, yyDollar[3].tableExpr) } case 41: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:515 +//line sql.y:517 { yyVAL.tableExpr = &CommonTableExpr{&AliasedTableExpr{Expr: yyDollar[3].simpleTableExpr, As: yyDollar[1].tableIdent}, nil} } case 42: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:519 +//line sql.y:521 { yyVAL.tableExpr = &CommonTableExpr{&AliasedTableExpr{Expr: yyDollar[6].simpleTableExpr, As: yyDollar[1].tableIdent}, yyDollar[3].columns} } case 43: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:525 +//line sql.y:527 { yyVAL.selStmt = yyDollar[1].selStmt } case 44: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:529 +//line sql.y:531 { yyVAL.selStmt = &ParenSelect{Select: yyDollar[2].selStmt} } case 45: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:535 +//line sql.y:537 { yyVAL.selStmt = yyDollar[1].selStmt } case 46: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:539 +//line sql.y:541 { yyVAL.selStmt = &ParenSelect{Select: yyDollar[2].selStmt} } case 47: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:546 +//line sql.y:548 { // insert_data returns a *Insert pre-filled with Columns & Values ins := yyDollar[6].ins @@ -5216,7 +5223,7 @@ yydefault: } case 48: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:558 +//line sql.y:560 { cols := make(Columns, 0, len(yyDollar[7].setExprs)) vals := make(ValTuple, 0, len(yyDollar[8].setExprs)) @@ -5228,209 +5235,209 @@ yydefault: } case 49: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:570 +//line sql.y:572 { yyVAL.str = InsertStr } case 50: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:574 +//line sql.y:576 { yyVAL.str = ReplaceStr } case 51: yyDollar = yyS[yypt-9 : yypt+1] -//line sql.y:580 +//line sql.y:582 { yyVAL.statement = &Update{Comments: Comments(yyDollar[2].bytes2), Ignore: yyDollar[3].str, TableExprs: yyDollar[4].tableExprs, Exprs: yyDollar[6].setExprs, Where: NewWhere(WhereStr, yyDollar[7].expr), OrderBy: yyDollar[8].orderBy, Limit: yyDollar[9].limit} } case 52: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:586 +//line sql.y:588 { yyVAL.statement = &Delete{Comments: Comments(yyDollar[2].bytes2), TableExprs: TableExprs{&AliasedTableExpr{Expr: yyDollar[4].tableName}}, Partitions: yyDollar[5].partitions, Where: NewWhere(WhereStr, yyDollar[6].expr), OrderBy: yyDollar[7].orderBy, Limit: yyDollar[8].limit} } case 53: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:590 +//line sql.y:592 { yyVAL.statement = &Delete{Comments: Comments(yyDollar[2].bytes2), Targets: yyDollar[4].tableNames, TableExprs: yyDollar[6].tableExprs, Where: NewWhere(WhereStr, yyDollar[7].expr)} } case 54: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:594 +//line sql.y:596 { yyVAL.statement = &Delete{Comments: Comments(yyDollar[2].bytes2), Targets: yyDollar[3].tableNames, TableExprs: yyDollar[5].tableExprs, Where: NewWhere(WhereStr, yyDollar[6].expr)} } case 55: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:598 +//line sql.y:600 { yyVAL.statement = &Delete{Comments: Comments(yyDollar[2].bytes2), Targets: yyDollar[3].tableNames, TableExprs: yyDollar[5].tableExprs, Where: NewWhere(WhereStr, yyDollar[6].expr)} } case 56: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:603 +//line sql.y:605 { } case 57: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:604 +//line sql.y:606 { } case 58: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:608 +//line sql.y:610 { yyVAL.tableNames = TableNames{yyDollar[1].tableName.ToViewName()} } case 59: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:612 +//line sql.y:614 { yyVAL.tableNames = append(yyVAL.tableNames, yyDollar[3].tableName.ToViewName()) } case 60: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:618 +//line sql.y:620 { yyVAL.tableNames = TableNames{yyDollar[1].tableName} } case 61: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:622 +//line sql.y:624 { yyVAL.tableNames = append(yyVAL.tableNames, yyDollar[3].tableName) } case 62: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:628 +//line sql.y:630 { yyVAL.tableNames = TableNames{yyDollar[1].tableName} } case 63: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:632 +//line sql.y:634 { yyVAL.tableNames = append(yyVAL.tableNames, yyDollar[3].tableName) } case 64: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:637 +//line sql.y:639 { yyVAL.partitions = nil } case 65: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:641 +//line sql.y:643 { yyVAL.partitions = yyDollar[3].partitions } case 66: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:647 +//line sql.y:649 { yyVAL.statement = &Set{Comments: Comments(yyDollar[2].bytes2), Exprs: yyDollar[3].setExprs} } case 67: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:651 +//line sql.y:653 { yyVAL.statement = &Set{Comments: Comments(yyDollar[2].bytes2), Scope: yyDollar[3].str, Exprs: yyDollar[4].setExprs} } case 68: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:655 +//line sql.y:657 { yyVAL.statement = &Set{Comments: Comments(yyDollar[2].bytes2), Scope: yyDollar[3].str, Exprs: yyDollar[5].setExprs} } case 69: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:659 +//line sql.y:661 { yyVAL.statement = &Set{Comments: Comments(yyDollar[2].bytes2), Exprs: yyDollar[4].setExprs} } case 70: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:665 +//line sql.y:667 { yyVAL.setExprs = SetExprs{yyDollar[1].setExpr} } case 71: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:669 +//line sql.y:671 { yyVAL.setExprs = append(yyVAL.setExprs, yyDollar[3].setExpr) } case 72: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:675 +//line sql.y:677 { yyVAL.setExpr = &SetExpr{Name: NewColName(TransactionStr), Expr: NewStrVal([]byte(yyDollar[3].str))} } case 73: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:679 +//line sql.y:681 { yyVAL.setExpr = &SetExpr{Name: NewColName(TransactionStr), Expr: NewStrVal([]byte(TxReadWrite))} } case 74: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:683 +//line sql.y:685 { yyVAL.setExpr = &SetExpr{Name: NewColName(TransactionStr), Expr: NewStrVal([]byte(TxReadOnly))} } case 75: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:689 +//line sql.y:691 { yyVAL.str = IsolationLevelRepeatableRead } case 76: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:693 +//line sql.y:695 { yyVAL.str = IsolationLevelReadCommitted } case 77: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:697 +//line sql.y:699 { yyVAL.str = IsolationLevelReadUncommitted } case 78: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:701 +//line sql.y:703 { yyVAL.str = IsolationLevelSerializable } case 79: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:707 +//line sql.y:709 { yyVAL.str = SessionStr } case 80: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:711 +//line sql.y:713 { yyVAL.str = GlobalStr } case 81: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:716 +//line sql.y:718 { yyVAL.int = yyPosition(yylex) } case 82: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:721 +//line sql.y:723 { yyVAL.int = yyOldPosition(yylex) } case 83: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:727 +//line sql.y:729 { yyDollar[1].ddl.TableSpec = yyDollar[2].TableSpec if len(yyDollar[1].ddl.TableSpec.Constraints) > 0 { @@ -5440,32 +5447,32 @@ yydefault: } case 84: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:735 +//line sql.y:737 { yyDollar[1].ddl.OptLike = &OptLike{LikeTable: yyDollar[3].tableName} yyVAL.statement = yyDollar[1].ddl } case 85: yyDollar = yyS[yypt-11 : yypt+1] -//line sql.y:740 +//line sql.y:742 { yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[7].tableName, IndexSpec: &IndexSpec{Action: CreateStr, ToName: yyDollar[4].colIdent, Using: yyDollar[5].colIdent, Type: yyDollar[2].str, Columns: yyDollar[9].indexColumns, Options: yyDollar[11].indexOptions}} } case 86: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:744 +//line sql.y:746 { yyVAL.statement = &DDL{Action: CreateStr, View: yyDollar[3].tableName.ToViewName(), ViewExpr: yyDollar[6].selStmt, SubStatementPositionStart: yyDollar[5].int, SubStatementPositionEnd: yyDollar[7].int - 1} } case 87: yyDollar = yyS[yypt-9 : yypt+1] -//line sql.y:748 +//line sql.y:750 { yyVAL.statement = &DDL{Action: CreateStr, View: yyDollar[5].tableName.ToViewName(), ViewExpr: yyDollar[8].selStmt, SubStatementPositionStart: yyDollar[7].int, SubStatementPositionEnd: yyDollar[9].int - 1, OrReplace: true} } case 88: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:752 +//line sql.y:754 { var ne bool if yyDollar[3].byt != 0 { @@ -5475,7 +5482,7 @@ yydefault: } case 89: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:760 +//line sql.y:762 { var ne bool if yyDollar[3].byt != 0 { @@ -5485,273 +5492,273 @@ yydefault: } case 90: yyDollar = yyS[yypt-15 : yypt+1] -//line sql.y:768 +//line sql.y:770 { yyVAL.statement = &DDL{Action: CreateStr, Table: yyDollar[8].tableName, TriggerSpec: &TriggerSpec{Name: string(yyDollar[4].bytes), Time: yyDollar[5].str, Event: yyDollar[6].str, Order: yyDollar[12].triggerOrder, Body: yyDollar[14].statement}, SubStatementPositionStart: yyDollar[13].int, SubStatementPositionEnd: yyDollar[15].int - 1} } case 91: yyDollar = yyS[yypt-11 : yypt+1] -//line sql.y:772 +//line sql.y:774 { yyVAL.statement = &DDL{Action: CreateStr, ProcedureSpec: &ProcedureSpec{Name: string(yyDollar[4].bytes), Definer: yyDollar[2].str, Params: yyDollar[6].procedureParams, Characteristics: yyDollar[8].characteristics, Body: yyDollar[10].statement}, SubStatementPositionStart: yyDollar[9].int, SubStatementPositionEnd: yyDollar[11].int - 1} } case 92: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:777 +//line sql.y:779 { yyVAL.procedureParams = nil } case 93: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:781 +//line sql.y:783 { yyVAL.procedureParams = yyDollar[1].procedureParams } case 94: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:787 +//line sql.y:789 { yyVAL.procedureParams = []ProcedureParam{yyDollar[1].procedureParam} } case 95: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:791 +//line sql.y:793 { yyVAL.procedureParams = append(yyVAL.procedureParams, yyDollar[3].procedureParam) } case 96: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:797 +//line sql.y:799 { yyVAL.procedureParam = ProcedureParam{Direction: ProcedureParamDirection_In, Name: string(yyDollar[1].bytes), Type: yyDollar[2].columnType} } case 97: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:801 +//line sql.y:803 { yyVAL.procedureParam = ProcedureParam{Direction: ProcedureParamDirection_In, Name: string(yyDollar[2].bytes), Type: yyDollar[3].columnType} } case 98: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:805 +//line sql.y:807 { yyVAL.procedureParam = ProcedureParam{Direction: ProcedureParamDirection_Inout, Name: string(yyDollar[2].bytes), Type: yyDollar[3].columnType} } case 99: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:809 +//line sql.y:811 { yyVAL.procedureParam = ProcedureParam{Direction: ProcedureParamDirection_Out, Name: string(yyDollar[2].bytes), Type: yyDollar[3].columnType} } case 100: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:814 +//line sql.y:816 { yyVAL.characteristics = nil } case 101: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:818 +//line sql.y:820 { yyVAL.characteristics = yyDollar[1].characteristics } case 102: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:824 +//line sql.y:826 { yyVAL.characteristics = []Characteristic{yyDollar[1].characteristic} } case 103: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:828 +//line sql.y:830 { yyVAL.characteristics = append(yyVAL.characteristics, yyDollar[2].characteristic) } case 104: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:834 +//line sql.y:836 { yyVAL.characteristic = Characteristic{Type: CharacteristicValue_Comment, Comment: string(yyDollar[2].bytes)} } case 105: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:838 +//line sql.y:840 { yyVAL.characteristic = Characteristic{Type: CharacteristicValue_LanguageSql} } case 106: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:842 +//line sql.y:844 { yyVAL.characteristic = Characteristic{Type: CharacteristicValue_NotDeterministic} } case 107: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:846 +//line sql.y:848 { yyVAL.characteristic = Characteristic{Type: CharacteristicValue_Deterministic} } case 108: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:850 +//line sql.y:852 { yyVAL.characteristic = Characteristic{Type: CharacteristicValue_ContainsSql} } case 109: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:854 +//line sql.y:856 { yyVAL.characteristic = Characteristic{Type: CharacteristicValue_NoSql} } case 110: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:858 +//line sql.y:860 { yyVAL.characteristic = Characteristic{Type: CharacteristicValue_ReadsSqlData} } case 111: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:862 +//line sql.y:864 { yyVAL.characteristic = Characteristic{Type: CharacteristicValue_ModifiesSqlData} } case 112: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:866 +//line sql.y:868 { yyVAL.characteristic = Characteristic{Type: CharacteristicValue_SqlSecurityDefiner} } case 113: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:870 +//line sql.y:872 { yyVAL.characteristic = Characteristic{Type: CharacteristicValue_SqlSecurityInvoker} } case 114: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:876 +//line sql.y:878 { yyVAL.statement = &BeginEndBlock{Statements: yyDollar[2].statements} } case 115: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:881 +//line sql.y:883 { yyVAL.str = "" } case 116: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:885 +//line sql.y:887 { yyVAL.str = string(yyDollar[3].bytes) } case 117: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:891 +//line sql.y:893 { yyVAL.str = BeforeStr } case 118: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:895 +//line sql.y:897 { yyVAL.str = AfterStr } case 119: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:901 +//line sql.y:903 { yyVAL.str = InsertStr } case 120: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:905 +//line sql.y:907 { yyVAL.str = UpdateStr } case 121: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:909 +//line sql.y:911 { yyVAL.str = DeleteStr } case 122: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:914 +//line sql.y:916 { yyVAL.triggerOrder = nil } case 123: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:918 +//line sql.y:920 { yyVAL.triggerOrder = &TriggerOrder{PrecedesOrFollows: FollowsStr, OtherTriggerName: string(yyDollar[2].bytes)} } case 124: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:922 +//line sql.y:924 { yyVAL.triggerOrder = &TriggerOrder{PrecedesOrFollows: PrecedesStr, OtherTriggerName: string(yyDollar[2].bytes)} } case 125: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:928 +//line sql.y:930 { yyVAL.statement = yyDollar[1].statement } case 130: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:938 +//line sql.y:940 { yyVAL.statement = &BeginEndBlock{Statements: yyDollar[2].statements} } case 131: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:944 +//line sql.y:946 { yyVAL.statement = &CaseStatement{Expr: yyDollar[2].expr, Cases: yyDollar[3].caseStatementCases} } case 132: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:948 +//line sql.y:950 { yyVAL.statement = &CaseStatement{Expr: yyDollar[2].expr, Cases: yyDollar[3].caseStatementCases, Else: yyDollar[5].statements} } case 133: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:954 +//line sql.y:956 { yyVAL.caseStatementCases = []CaseStatementCase{yyDollar[1].caseStatementCase} } case 134: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:958 +//line sql.y:960 { yyVAL.caseStatementCases = append(yyVAL.caseStatementCases, yyDollar[2].caseStatementCase) } case 135: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:964 +//line sql.y:966 { yyVAL.caseStatementCase = CaseStatementCase{Case: yyDollar[2].expr, Statements: yyDollar[4].statements} } case 136: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:970 +//line sql.y:972 { conds := []IfStatementCondition{IfStatementCondition{Expr: yyDollar[2].expr, Statements: yyDollar[4].statements}} yyVAL.statement = &IfStatement{Conditions: conds} } case 137: yyDollar = yyS[yypt-10 : yypt+1] -//line sql.y:975 +//line sql.y:977 { conds := []IfStatementCondition{IfStatementCondition{Expr: yyDollar[2].expr, Statements: yyDollar[4].statements}} yyVAL.statement = &IfStatement{Conditions: conds, Else: yyDollar[7].statements} } case 138: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:980 +//line sql.y:982 { conds := yyDollar[6].ifStatementConditions conds = append([]IfStatementCondition{IfStatementCondition{Expr: yyDollar[2].expr, Statements: yyDollar[4].statements}}, conds...) @@ -5759,7 +5766,7 @@ yydefault: } case 139: yyDollar = yyS[yypt-11 : yypt+1] -//line sql.y:986 +//line sql.y:988 { conds := yyDollar[6].ifStatementConditions conds = append([]IfStatementCondition{IfStatementCondition{Expr: yyDollar[2].expr, Statements: yyDollar[4].statements}}, conds...) @@ -5767,332 +5774,332 @@ yydefault: } case 140: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:994 +//line sql.y:996 { yyVAL.ifStatementConditions = []IfStatementCondition{yyDollar[1].ifStatementCondition} } case 141: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:998 +//line sql.y:1000 { yyVAL.ifStatementConditions = append(yyVAL.ifStatementConditions, yyDollar[2].ifStatementCondition) } case 142: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1004 +//line sql.y:1006 { yyVAL.ifStatementCondition = IfStatementCondition{Expr: yyDollar[2].expr, Statements: yyDollar[4].statements} } case 143: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1010 +//line sql.y:1012 { yyVAL.statement = &Declare{Condition: &DeclareCondition{Name: string(yyDollar[2].bytes), SqlStateValue: string(yyDollar[5].bytes)}} } case 144: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1014 +//line sql.y:1016 { yyVAL.statement = &Declare{Condition: &DeclareCondition{Name: string(yyDollar[2].bytes), MysqlErrorCode: NewIntVal(yyDollar[5].bytes)}} } case 145: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1018 +//line sql.y:1020 { yyVAL.statement = &Declare{Cursor: &DeclareCursor{Name: string(yyDollar[2].bytes), SelectStmt: yyDollar[5].selStmt}} } case 146: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:1022 +//line sql.y:1024 { yyVAL.statement = &Declare{Handler: &DeclareHandler{Action: yyDollar[2].declareHandlerAction, ConditionValues: yyDollar[5].declareHandlerConditions, Statement: yyDollar[6].statement}} } case 147: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1026 +//line sql.y:1028 { yyVAL.statement = &Declare{Variables: &DeclareVariables{Names: yyDollar[2].colIdents, VarType: yyDollar[3].columnType}} } case 148: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1030 +//line sql.y:1032 { yyDollar[3].columnType.Default = yyDollar[5].expr yyVAL.statement = &Declare{Variables: &DeclareVariables{Names: yyDollar[2].colIdents, VarType: yyDollar[3].columnType}} } case 149: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1037 +//line sql.y:1039 { yyVAL.declareHandlerAction = DeclareHandlerAction_Continue } case 150: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1041 +//line sql.y:1043 { yyVAL.declareHandlerAction = DeclareHandlerAction_Exit } case 151: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1045 +//line sql.y:1047 { yyVAL.declareHandlerAction = DeclareHandlerAction_Undo } case 152: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1051 +//line sql.y:1053 { yyVAL.declareHandlerConditions = []DeclareHandlerCondition{yyDollar[1].declareHandlerCondition} } case 153: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1055 +//line sql.y:1057 { yyVAL.declareHandlerConditions = append(yyVAL.declareHandlerConditions, yyDollar[3].declareHandlerCondition) } case 154: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1061 +//line sql.y:1063 { yyVAL.declareHandlerCondition = DeclareHandlerCondition{ValueType: DeclareHandlerCondition_MysqlErrorCode, MysqlErrorCode: NewIntVal(yyDollar[1].bytes)} } case 155: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1065 +//line sql.y:1067 { yyVAL.declareHandlerCondition = DeclareHandlerCondition{ValueType: DeclareHandlerCondition_SqlState, String: string(yyDollar[1].bytes)} } case 156: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1069 +//line sql.y:1071 { yyVAL.declareHandlerCondition = DeclareHandlerCondition{ValueType: DeclareHandlerCondition_SqlWarning} } case 157: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1073 +//line sql.y:1075 { yyVAL.declareHandlerCondition = DeclareHandlerCondition{ValueType: DeclareHandlerCondition_NotFound} } case 158: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1077 +//line sql.y:1079 { yyVAL.declareHandlerCondition = DeclareHandlerCondition{ValueType: DeclareHandlerCondition_SqlException} } case 159: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1081 +//line sql.y:1083 { yyVAL.declareHandlerCondition = DeclareHandlerCondition{ValueType: DeclareHandlerCondition_ConditionName, String: string(yyDollar[1].bytes)} } case 160: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1087 +//line sql.y:1089 { yyVAL.statement = &Signal{SqlStateValue: string(yyDollar[2].bytes)} } case 161: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1091 +//line sql.y:1093 { yyVAL.statement = &Signal{SqlStateValue: string(yyDollar[2].bytes), Info: yyDollar[4].signalInfos} } case 162: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1095 +//line sql.y:1097 { yyVAL.statement = &Signal{ConditionName: string(yyDollar[2].bytes)} } case 163: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1099 +//line sql.y:1101 { yyVAL.statement = &Signal{ConditionName: string(yyDollar[2].bytes), Info: yyDollar[4].signalInfos} } case 164: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1105 +//line sql.y:1107 { yyVAL.bytes = yyDollar[2].bytes } case 165: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1109 +//line sql.y:1111 { yyVAL.bytes = yyDollar[3].bytes } case 166: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1115 +//line sql.y:1117 { yyVAL.signalInfos = []SignalInfo{yyDollar[1].signalInfo} } case 167: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1119 +//line sql.y:1121 { yyVAL.signalInfos = append(yyVAL.signalInfos, yyDollar[3].signalInfo) } case 168: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1125 +//line sql.y:1127 { yyVAL.signalInfo = SignalInfo{ConditionItemName: yyDollar[1].signalConditionItemName, Value: yyDollar[3].expr.(*SQLVal)} } case 169: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1131 +//line sql.y:1133 { yyVAL.signalConditionItemName = SignalConditionItemName_ClassOrigin } case 170: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1135 +//line sql.y:1137 { yyVAL.signalConditionItemName = SignalConditionItemName_SubclassOrigin } case 171: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1139 +//line sql.y:1141 { yyVAL.signalConditionItemName = SignalConditionItemName_MessageText } case 172: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1143 +//line sql.y:1145 { yyVAL.signalConditionItemName = SignalConditionItemName_MysqlErrno } case 173: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1147 +//line sql.y:1149 { yyVAL.signalConditionItemName = SignalConditionItemName_ConstraintCatalog } case 174: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1151 +//line sql.y:1153 { yyVAL.signalConditionItemName = SignalConditionItemName_ConstraintSchema } case 175: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1155 +//line sql.y:1157 { yyVAL.signalConditionItemName = SignalConditionItemName_ConstraintName } case 176: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1159 +//line sql.y:1161 { yyVAL.signalConditionItemName = SignalConditionItemName_CatalogName } case 177: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1163 +//line sql.y:1165 { yyVAL.signalConditionItemName = SignalConditionItemName_SchemaName } case 178: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1167 +//line sql.y:1169 { yyVAL.signalConditionItemName = SignalConditionItemName_TableName } case 179: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1171 +//line sql.y:1173 { yyVAL.signalConditionItemName = SignalConditionItemName_ColumnName } case 180: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1175 +//line sql.y:1177 { yyVAL.signalConditionItemName = SignalConditionItemName_CursorName } case 181: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1181 +//line sql.y:1183 { yyVAL.statement = &Resignal{} } case 182: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1185 +//line sql.y:1187 { yyVAL.statement = &Resignal{Signal{SqlStateValue: string(yyDollar[2].bytes)}} } case 183: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1189 +//line sql.y:1191 { yyVAL.statement = &Resignal{Signal{SqlStateValue: string(yyDollar[2].bytes), Info: yyDollar[4].signalInfos}} } case 184: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1193 +//line sql.y:1195 { yyVAL.statement = &Resignal{Signal{Info: yyDollar[3].signalInfos}} } case 185: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1197 +//line sql.y:1199 { yyVAL.statement = &Resignal{Signal{ConditionName: string(yyDollar[2].bytes)}} } case 186: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1201 +//line sql.y:1203 { yyVAL.statement = &Resignal{Signal{ConditionName: string(yyDollar[2].bytes), Info: yyDollar[4].signalInfos}} } case 187: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1207 +//line sql.y:1209 { yyVAL.statement = &Call{FuncName: string(yyDollar[2].bytes), Params: yyDollar[3].exprs} } case 188: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1212 +//line sql.y:1214 { yyVAL.exprs = nil } case 189: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1216 +//line sql.y:1218 { yyVAL.exprs = nil } case 190: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1220 +//line sql.y:1222 { yyVAL.exprs = yyDollar[2].exprs } case 191: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1226 +//line sql.y:1228 { yyVAL.statements = Statements{yyDollar[1].statement} } case 192: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1230 +//line sql.y:1232 { yyVAL.statements = append(yyVAL.statements, yyDollar[3].statement) } case 193: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1236 +//line sql.y:1238 { yyVAL.statement = yyDollar[1].selStmt } case 217: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1265 +//line sql.y:1267 { var ne bool if yyDollar[3].byt != 0 { @@ -6103,28 +6110,28 @@ yydefault: } case 218: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1276 +//line sql.y:1278 { yyVAL.TableSpec = yyDollar[2].TableSpec yyVAL.TableSpec.Options = yyDollar[4].str } case 219: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1283 +//line sql.y:1285 { yyVAL.TableSpec = &TableSpec{} yyVAL.TableSpec.AddColumn(yyDollar[1].columnDefinition) } case 220: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1288 +//line sql.y:1290 { yyVAL.TableSpec = &TableSpec{} yyVAL.TableSpec.AddConstraint(yyDollar[1].constraintDefinition) } case 221: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1293 +//line sql.y:1295 { yyVAL.TableSpec = &TableSpec{} yyVAL.TableSpec.AddColumn(yyDollar[1].columnDefinition) @@ -6132,38 +6139,38 @@ yydefault: } case 222: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1299 +//line sql.y:1301 { yyVAL.TableSpec.AddColumn(yyDollar[3].columnDefinition) } case 223: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1303 +//line sql.y:1305 { yyVAL.TableSpec.AddColumn(yyDollar[3].columnDefinition) yyVAL.TableSpec.AddConstraint(yyDollar[4].constraintDefinition) } case 224: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1308 +//line sql.y:1310 { yyVAL.TableSpec.AddIndex(yyDollar[3].indexDefinition) } case 225: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1312 +//line sql.y:1314 { yyVAL.TableSpec.AddConstraint(yyDollar[3].constraintDefinition) } case 226: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1316 +//line sql.y:1318 { yyVAL.TableSpec.AddConstraint(yyDollar[3].constraintDefinition) } case 227: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1322 +//line sql.y:1324 { if err := yyDollar[2].columnType.merge(yyDollar[3].columnType); err != nil { yylex.Error(err.Error()) @@ -6173,7 +6180,7 @@ yydefault: } case 228: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1332 +//line sql.y:1334 { if err := yyDollar[2].columnType.merge(yyDollar[3].columnType); err != nil { yylex.Error(err.Error()) @@ -6183,13 +6190,13 @@ yydefault: } case 229: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1341 +//line sql.y:1343 { yyVAL.columnType = ColumnType{} } case 230: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1345 +//line sql.y:1347 { opt := ColumnType{NotNull: yyDollar[2].boolVal, sawnull: true} if err := yyDollar[1].columnType.merge(opt); err != nil { @@ -6200,7 +6207,7 @@ yydefault: } case 231: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1354 +//line sql.y:1356 { opt := ColumnType{Default: yyDollar[2].optVal} if err := yyDollar[1].columnType.merge(opt); err != nil { @@ -6211,7 +6218,7 @@ yydefault: } case 232: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1363 +//line sql.y:1365 { opt := ColumnType{OnUpdate: yyDollar[2].optVal} if err := yyDollar[1].columnType.merge(opt); err != nil { @@ -6222,7 +6229,7 @@ yydefault: } case 233: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1372 +//line sql.y:1374 { opt := ColumnType{Autoincrement: yyDollar[2].boolVal, sawai: true} if err := yyDollar[1].columnType.merge(opt); err != nil { @@ -6233,7 +6240,7 @@ yydefault: } case 234: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1381 +//line sql.y:1383 { opt := ColumnType{KeyOpt: yyDollar[2].colKeyOpt} if err := yyDollar[1].columnType.merge(opt); err != nil { @@ -6244,7 +6251,7 @@ yydefault: } case 235: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1390 +//line sql.y:1392 { opt := ColumnType{Comment: yyDollar[2].sqlVal} if err := yyDollar[1].columnType.merge(opt); err != nil { @@ -6255,7 +6262,7 @@ yydefault: } case 236: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1401 +//line sql.y:1403 { yyVAL.columnType = yyDollar[1].columnType yyVAL.columnType.Unsigned = yyDollar[2].boolVal @@ -6263,74 +6270,74 @@ yydefault: } case 240: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1412 +//line sql.y:1414 { yyVAL.columnType = yyDollar[1].columnType yyVAL.columnType.Length = yyDollar[2].sqlVal } case 241: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1417 +//line sql.y:1419 { yyVAL.columnType = yyDollar[1].columnType } case 242: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1423 +//line sql.y:1425 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 243: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1427 +//line sql.y:1429 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 244: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1431 +//line sql.y:1433 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 245: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1435 +//line sql.y:1437 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 246: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1439 +//line sql.y:1441 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 247: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1443 +//line sql.y:1445 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 248: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1447 +//line sql.y:1449 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 249: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1451 +//line sql.y:1453 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 250: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1455 +//line sql.y:1457 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 251: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1461 +//line sql.y:1463 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length @@ -6338,7 +6345,7 @@ yydefault: } case 252: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1467 +//line sql.y:1469 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length @@ -6346,7 +6353,7 @@ yydefault: } case 253: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1473 +//line sql.y:1475 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes)} yyVAL.columnType.Length = yyDollar[3].LengthScaleOption.Length @@ -6354,7 +6361,7 @@ yydefault: } case 254: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1479 +//line sql.y:1481 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length @@ -6362,7 +6369,7 @@ yydefault: } case 255: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1485 +//line sql.y:1487 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length @@ -6370,7 +6377,7 @@ yydefault: } case 256: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1491 +//line sql.y:1493 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length @@ -6378,7 +6385,7 @@ yydefault: } case 257: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1497 +//line sql.y:1499 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length @@ -6386,7 +6393,7 @@ yydefault: } case 258: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1503 +//line sql.y:1505 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length @@ -6394,266 +6401,266 @@ yydefault: } case 259: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1511 +//line sql.y:1513 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 260: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1515 +//line sql.y:1517 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal} } case 261: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1519 +//line sql.y:1521 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal} } case 262: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1523 +//line sql.y:1525 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal} } case 263: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1527 +//line sql.y:1529 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 264: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1533 +//line sql.y:1535 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal, Charset: yyDollar[3].str, Collate: yyDollar[4].str} } case 265: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1537 +//line sql.y:1539 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal, Charset: yyDollar[3].str, Collate: yyDollar[4].str} } case 266: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1541 +//line sql.y:1543 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes), Length: yyDollar[3].sqlVal} } case 267: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1545 +//line sql.y:1547 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes), Length: yyDollar[3].sqlVal} } case 268: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1549 +//line sql.y:1551 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal} } case 269: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1553 +//line sql.y:1555 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal, Charset: yyDollar[3].str, Collate: yyDollar[4].str} } case 270: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1557 +//line sql.y:1559 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes), Length: yyDollar[3].sqlVal, Charset: yyDollar[4].str, Collate: yyDollar[5].str} } case 271: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1561 +//line sql.y:1563 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal} } case 272: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1565 +//line sql.y:1567 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes), Length: yyDollar[3].sqlVal} } case 273: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1569 +//line sql.y:1571 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Length: yyDollar[4].sqlVal} } case 274: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1573 +//line sql.y:1575 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal} } case 275: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1577 +//line sql.y:1579 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal} } case 276: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1581 +//line sql.y:1583 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Charset: yyDollar[2].str, Collate: yyDollar[3].str} } case 277: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1585 +//line sql.y:1587 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Charset: yyDollar[2].str, Collate: yyDollar[3].str} } case 278: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1589 +//line sql.y:1591 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Charset: yyDollar[2].str, Collate: yyDollar[3].str} } case 279: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1593 +//line sql.y:1595 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Charset: yyDollar[2].str, Collate: yyDollar[3].str} } case 280: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1597 +//line sql.y:1599 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Charset: yyDollar[2].str, Collate: yyDollar[3].str} } case 281: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1601 +//line sql.y:1603 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes), Charset: yyDollar[3].str, Collate: yyDollar[4].str} } case 282: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1605 +//line sql.y:1607 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 283: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1609 +//line sql.y:1611 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 284: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1613 +//line sql.y:1615 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 285: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1617 +//line sql.y:1619 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 286: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1621 +//line sql.y:1623 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 287: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:1625 +//line sql.y:1627 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), EnumValues: yyDollar[3].strs, Charset: yyDollar[5].str, Collate: yyDollar[6].str} } case 288: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:1630 +//line sql.y:1632 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), EnumValues: yyDollar[3].strs, Charset: yyDollar[5].str, Collate: yyDollar[6].str} } case 289: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1636 +//line sql.y:1638 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 290: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1640 +//line sql.y:1642 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 291: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1644 +//line sql.y:1646 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 292: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1648 +//line sql.y:1650 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 293: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1652 +//line sql.y:1654 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 294: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1656 +//line sql.y:1658 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 295: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1660 +//line sql.y:1662 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 296: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1664 +//line sql.y:1666 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } case 297: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1670 +//line sql.y:1672 { yyVAL.strs = make([]string, 0, 4) yyVAL.strs = append(yyVAL.strs, string(yyDollar[1].bytes)) } case 298: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1675 +//line sql.y:1677 { yyVAL.strs = append(yyDollar[1].strs, string(yyDollar[3].bytes)) } case 299: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1680 +//line sql.y:1682 { yyVAL.sqlVal = nil } case 300: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1684 +//line sql.y:1686 { yyVAL.sqlVal = NewIntVal(yyDollar[2].bytes) } case 301: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1689 +//line sql.y:1691 { yyVAL.LengthScaleOption = LengthScaleOption{} } case 302: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1693 +//line sql.y:1695 { yyVAL.LengthScaleOption = LengthScaleOption{ Length: NewIntVal(yyDollar[2].bytes), @@ -6662,13 +6669,13 @@ yydefault: } case 303: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1701 +//line sql.y:1703 { yyVAL.LengthScaleOption = LengthScaleOption{} } case 304: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1705 +//line sql.y:1707 { yyVAL.LengthScaleOption = LengthScaleOption{ Length: NewIntVal(yyDollar[2].bytes), @@ -6676,7 +6683,7 @@ yydefault: } case 305: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1711 +//line sql.y:1713 { yyVAL.LengthScaleOption = LengthScaleOption{ Length: NewIntVal(yyDollar[2].bytes), @@ -6685,744 +6692,769 @@ yydefault: } case 306: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1719 +//line sql.y:1721 { yyVAL.boolVal = BoolVal(false) } case 307: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1723 +//line sql.y:1725 { yyVAL.boolVal = BoolVal(true) } case 308: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1728 +//line sql.y:1730 { yyVAL.boolVal = BoolVal(false) } case 309: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1732 +//line sql.y:1734 { yyVAL.boolVal = BoolVal(true) } case 310: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1739 +//line sql.y:1741 { yyVAL.boolVal = BoolVal(false) } case 311: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1743 +//line sql.y:1745 { yyVAL.boolVal = BoolVal(true) } case 312: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1749 +//line sql.y:1751 { yyVAL.optVal = yyDollar[2].expr } case 313: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1755 +//line sql.y:1757 { yyVAL.optVal = yyDollar[3].expr } case 314: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1761 +//line sql.y:1763 { yyVAL.boolVal = BoolVal(true) } case 315: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1766 +//line sql.y:1768 { yyVAL.str = "" } case 316: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1770 +//line sql.y:1772 { yyVAL.str = string(yyDollar[3].bytes) } case 317: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1774 +//line sql.y:1776 { yyVAL.str = string(yyDollar[3].bytes) } case 318: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1779 +//line sql.y:1781 { yyVAL.str = "" } case 319: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1783 +//line sql.y:1785 { yyVAL.str = string(yyDollar[2].bytes) } case 320: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1787 +//line sql.y:1789 { yyVAL.str = string(yyDollar[2].bytes) } case 321: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1793 +//line sql.y:1795 { yyVAL.colKeyOpt = colKeyPrimary } case 322: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1797 +//line sql.y:1799 { yyVAL.colKeyOpt = colKey } case 323: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1801 +//line sql.y:1803 { yyVAL.colKeyOpt = colKeyUniqueKey } case 324: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1805 +//line sql.y:1807 { yyVAL.colKeyOpt = colKeyUnique } case 325: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1811 +//line sql.y:1813 { yyVAL.sqlVal = NewStrVal(yyDollar[2].bytes) } case 326: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1817 +//line sql.y:1819 { yyVAL.indexDefinition = &IndexDefinition{Info: yyDollar[1].indexInfo, Columns: yyDollar[3].indexColumns, Options: yyDollar[5].indexOptions} } case 327: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1821 +//line sql.y:1823 { yyVAL.indexDefinition = &IndexDefinition{Info: yyDollar[1].indexInfo, Columns: yyDollar[3].indexColumns} } case 328: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1826 +//line sql.y:1828 { yyVAL.indexOptions = nil } case 329: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1830 +//line sql.y:1832 { yyVAL.indexOptions = yyDollar[1].indexOptions } case 330: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1836 +//line sql.y:1838 { yyVAL.indexOptions = []*IndexOption{yyDollar[1].indexOption} } case 331: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1840 +//line sql.y:1842 { yyVAL.indexOptions = append(yyVAL.indexOptions, yyDollar[2].indexOption) } case 332: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1846 +//line sql.y:1848 { yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), Using: string(yyDollar[2].bytes)} } case 333: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1850 +//line sql.y:1852 { // should not be string yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), Value: NewIntVal(yyDollar[3].bytes)} } case 334: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1855 +//line sql.y:1857 { yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), Value: NewStrVal(yyDollar[2].bytes)} } case 335: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1861 +//line sql.y:1863 { yyVAL.str = "" } case 336: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1865 +//line sql.y:1867 { yyVAL.str = string(yyDollar[1].bytes) } case 337: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1871 +//line sql.y:1873 { yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes), Name: NewColIdent("PRIMARY"), Primary: true, Unique: true} } case 338: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1875 +//line sql.y:1877 { yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].bytes) + " " + string(yyDollar[2].str), Name: NewColIdent(yyDollar[3].str), Spatial: true, Unique: false} } case 339: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1879 +//line sql.y:1881 { yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].bytes) + " " + string(yyDollar[2].str), Name: NewColIdent(yyDollar[3].str), Unique: true} } case 340: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1883 +//line sql.y:1885 { yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].bytes), Name: NewColIdent(yyDollar[2].str), Unique: true} } case 341: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1887 +//line sql.y:1889 { yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].str), Name: NewColIdent(yyDollar[2].str), Unique: false} } case 342: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1893 +//line sql.y:1895 { yyVAL.str = string(yyDollar[1].bytes) } case 343: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1897 +//line sql.y:1899 { yyVAL.str = string(yyDollar[1].bytes) } case 344: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1901 +//line sql.y:1903 { yyVAL.str = string(yyDollar[1].bytes) } case 345: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1907 +//line sql.y:1909 { yyVAL.str = string(yyDollar[1].bytes) } case 346: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1911 +//line sql.y:1913 { yyVAL.str = string(yyDollar[1].bytes) } case 347: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1916 +//line sql.y:1918 { yyVAL.str = "" } case 348: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1920 +//line sql.y:1922 { yyVAL.str = yyDollar[1].str } case 349: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1925 +//line sql.y:1927 { yyVAL.str = "" } case 350: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1929 +//line sql.y:1931 { yyVAL.str = string(yyDollar[1].bytes) } case 351: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1935 +//line sql.y:1937 { yyVAL.indexColumns = []*IndexColumn{yyDollar[1].indexColumn} } case 352: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1939 +//line sql.y:1941 { yyVAL.indexColumns = append(yyVAL.indexColumns, yyDollar[3].indexColumn) } case 353: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1945 +//line sql.y:1947 { yyVAL.indexColumn = &IndexColumn{Column: yyDollar[1].colIdent, Length: yyDollar[2].sqlVal, Order: yyDollar[3].str} } case 354: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1951 +//line sql.y:1953 { yyVAL.constraintDefinition = &ConstraintDefinition{Name: string(yyDollar[2].bytes), Details: yyDollar[3].constraintInfo} } case 355: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1955 +//line sql.y:1957 { yyVAL.constraintDefinition = &ConstraintDefinition{Details: yyDollar[1].constraintInfo} } case 356: yyDollar = yyS[yypt-10 : yypt+1] -//line sql.y:1961 +//line sql.y:1963 { yyVAL.constraintInfo = &ForeignKeyDefinition{Source: yyDollar[4].columns, ReferencedTable: yyDollar[7].tableName, ReferencedColumns: yyDollar[9].columns} } case 357: yyDollar = yyS[yypt-11 : yypt+1] -//line sql.y:1965 +//line sql.y:1967 { yyVAL.constraintInfo = &ForeignKeyDefinition{Source: yyDollar[4].columns, ReferencedTable: yyDollar[7].tableName, ReferencedColumns: yyDollar[9].columns, OnDelete: yyDollar[11].ReferenceAction} } case 358: yyDollar = yyS[yypt-11 : yypt+1] -//line sql.y:1969 +//line sql.y:1971 { yyVAL.constraintInfo = &ForeignKeyDefinition{Source: yyDollar[4].columns, ReferencedTable: yyDollar[7].tableName, ReferencedColumns: yyDollar[9].columns, OnUpdate: yyDollar[11].ReferenceAction} } case 359: yyDollar = yyS[yypt-12 : yypt+1] -//line sql.y:1973 +//line sql.y:1975 { yyVAL.constraintInfo = &ForeignKeyDefinition{Source: yyDollar[4].columns, ReferencedTable: yyDollar[7].tableName, ReferencedColumns: yyDollar[9].columns, OnDelete: yyDollar[11].ReferenceAction, OnUpdate: yyDollar[12].ReferenceAction} } case 360: yyDollar = yyS[yypt-12 : yypt+1] -//line sql.y:1977 +//line sql.y:1979 { yyVAL.constraintInfo = &ForeignKeyDefinition{Source: yyDollar[4].columns, ReferencedTable: yyDollar[7].tableName, ReferencedColumns: yyDollar[9].columns, OnDelete: yyDollar[12].ReferenceAction, OnUpdate: yyDollar[11].ReferenceAction} } case 361: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1983 +//line sql.y:1985 { yyVAL.constraintDefinition = &ConstraintDefinition{Name: string(yyDollar[2].bytes), Details: yyDollar[3].constraintInfo} } case 362: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1987 +//line sql.y:1989 { yyVAL.constraintDefinition = &ConstraintDefinition{Details: yyDollar[2].constraintInfo} } case 363: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1991 +//line sql.y:1993 { yyVAL.constraintDefinition = &ConstraintDefinition{Details: yyDollar[1].constraintInfo} } case 364: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1997 +//line sql.y:1999 { yyVAL.constraintInfo = &CheckConstraintDefinition{Expr: yyDollar[3].expr, Enforced: yyDollar[5].boolean} } case 365: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2003 +//line sql.y:2005 { yyVAL.str = string(yyDollar[1].bytes) } case 366: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2007 +//line sql.y:2009 { yyVAL.str = string(yyDollar[1].bytes) } case 367: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2012 +//line sql.y:2014 { yyVAL.str = "" } case 368: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2016 +//line sql.y:2018 { yyVAL.str = string(yyDollar[2].bytes) } case 369: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2020 +//line sql.y:2022 { yyVAL.str = string(yyDollar[2].bytes) } case 370: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2026 +//line sql.y:2028 { yyVAL.ReferenceAction = yyDollar[3].ReferenceAction } case 371: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2032 +//line sql.y:2034 { yyVAL.ReferenceAction = yyDollar[3].ReferenceAction } case 372: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2038 +//line sql.y:2040 { yyVAL.ReferenceAction = Restrict } case 373: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2042 +//line sql.y:2044 { yyVAL.ReferenceAction = Cascade } case 374: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2046 +//line sql.y:2048 { yyVAL.ReferenceAction = NoAction } case 375: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2050 +//line sql.y:2052 { yyVAL.ReferenceAction = SetDefault } case 376: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2054 +//line sql.y:2056 { yyVAL.ReferenceAction = SetNull } case 377: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2059 +//line sql.y:2061 { yyVAL.boolean = true } case 378: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2063 +//line sql.y:2065 { yyVAL.boolean = true } case 379: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2067 +//line sql.y:2069 { yyVAL.boolean = false } case 380: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2072 +//line sql.y:2074 { yyVAL.str = "" } case 381: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2076 +//line sql.y:2078 { yyVAL.str = " " + string(yyDollar[1].str) } case 382: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2080 +//line sql.y:2082 { yyVAL.str = string(yyDollar[1].str) + ", " + string(yyDollar[3].str) } case 383: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2088 +//line sql.y:2090 { yyVAL.str = yyDollar[1].str } case 384: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2092 +//line sql.y:2094 { yyVAL.str = yyDollar[1].str + " " + yyDollar[2].str } case 385: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2096 +//line sql.y:2098 { yyVAL.str = yyDollar[1].str + "=" + yyDollar[3].str } case 386: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2102 +//line sql.y:2104 { yyVAL.str = yyDollar[1].colIdent.String() } case 387: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2106 +//line sql.y:2108 { yyVAL.str = "'" + string(yyDollar[1].bytes) + "'" } case 388: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2110 +//line sql.y:2112 { yyVAL.str = string(yyDollar[1].bytes) } case 389: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2115 +//line sql.y:2117 { yyVAL.str = "" } case 390: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2119 +//line sql.y:2121 { yyVAL.str = string(yyDollar[2].bytes) } case 393: - yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2129 + yyDollar = yyS[yypt-5 : yypt+1] +//line sql.y:2131 { - yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[4].tableName} + for i := 0; i < len(yyDollar[5].ddls); i++ { + if yyDollar[5].ddls[i].Action == RenameStr { + yyDollar[5].ddls[i].FromTables = append(TableNames{yyDollar[4].tableName}, yyDollar[5].ddls[i].FromTables...) + } else { + yyDollar[5].ddls[i].Table = yyDollar[4].tableName + } + } + yyVAL.statement = &MultiAlterDDL{Table: yyDollar[4].tableName, Statements: yyDollar[5].ddls} } case 394: - yyDollar = yyS[yypt-10 : yypt+1] -//line sql.y:2133 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:2144 { - ddl := &DDL{Action: AlterStr, ColumnAction: AddStr, Table: yyDollar[4].tableName, TableSpec: &TableSpec{}} - ddl.TableSpec.AddColumn(yyDollar[8].columnDefinition) - ddl.Column = yyDollar[8].columnDefinition.Name - yyVAL.statement = ddl + yyVAL.ddls = []*DDL{yyDollar[1].ddl} } case 395: - yyDollar = yyS[yypt-9 : yypt+1] -//line sql.y:2140 + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:2148 { - ddl := &DDL{Action: AlterStr, ColumnAction: AddStr, Table: yyDollar[4].tableName, TableSpec: &TableSpec{}, ColumnOrder: yyDollar[8].columnOrder} - ddl.TableSpec.AddColumn(yyDollar[7].columnDefinition) - ddl.Column = yyDollar[7].columnDefinition.Name - yyVAL.statement = ddl + yyVAL.ddls = append(yyVAL.ddls, yyDollar[3].ddl) } case 396: - yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:2147 + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:2154 { - yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[4].tableName} + yyVAL.ddl = &DDL{Action: AlterStr} } case 397: - yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:2151 + yyDollar = yyS[yypt-5 : yypt+1] +//line sql.y:2158 { - yyVAL.statement = &DDL{Action: AlterStr, ColumnAction: DropStr, Column: NewColIdent(string(yyDollar[7].bytes)), Table: yyDollar[4].tableName} + ddl := &DDL{Action: AlterStr, ColumnAction: AddStr, TableSpec: &TableSpec{}} + ddl.TableSpec.AddColumn(yyDollar[4].columnDefinition) + ddl.Column = yyDollar[4].columnDefinition.Name + yyVAL.ddl = ddl } case 398: - yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:2155 + yyDollar = yyS[yypt-4 : yypt+1] +//line sql.y:2165 { - yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[4].tableName} + ddl := &DDL{Action: AlterStr, ColumnAction: AddStr, TableSpec: &TableSpec{}, ColumnOrder: yyDollar[4].columnOrder} + ddl.TableSpec.AddColumn(yyDollar[3].columnDefinition) + ddl.Column = yyDollar[3].columnDefinition.Name + yyVAL.ddl = ddl } case 399: - yyDollar = yyS[yypt-9 : yypt+1] -//line sql.y:2159 + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:2172 { - yyVAL.statement = &DDL{Action: AlterStr, ColumnAction: RenameStr, Table: yyDollar[4].tableName, Column: NewColIdent(string(yyDollar[7].bytes)), ToColumn: NewColIdent(string(yyDollar[9].bytes))} + yyVAL.ddl = &DDL{Action: AlterStr} } case 400: - yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:2163 + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:2176 { - // Change this to a rename statement - yyVAL.statement = &DDL{Action: RenameStr, FromTables: TableNames{yyDollar[4].tableName}, ToTables: TableNames{yyDollar[7].tableName}} + yyVAL.ddl = &DDL{Action: AlterStr, ColumnAction: DropStr, Column: NewColIdent(string(yyDollar[3].bytes))} } case 401: - yyDollar = yyS[yypt-12 : yypt+1] -//line sql.y:2168 + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:2180 { - yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[4].tableName, IndexSpec: &IndexSpec{Action: CreateStr, ToName: NewColIdent(yyDollar[7].str), Using: yyDollar[8].colIdent, Columns: yyDollar[10].indexColumns, Options: yyDollar[12].indexOptions}} + yyVAL.ddl = &DDL{Action: AlterStr} } case 402: - yyDollar = yyS[yypt-14 : yypt+1] -//line sql.y:2172 + yyDollar = yyS[yypt-5 : yypt+1] +//line sql.y:2184 { - yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[4].tableName, IndexSpec: &IndexSpec{Action: CreateStr, ToName: NewColIdent(yyDollar[9].str), Type: yyDollar[7].str, Using: yyDollar[10].colIdent, Columns: yyDollar[12].indexColumns, Options: yyDollar[14].indexOptions}} + yyVAL.ddl = &DDL{Action: AlterStr, ColumnAction: RenameStr, Column: NewColIdent(string(yyDollar[3].bytes)), ToColumn: NewColIdent(string(yyDollar[5].bytes))} } case 403: - yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:2176 + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:2188 { - yyVAL.statement = &DDL{Action: AlterStr, ConstraintAction: DropStr, Table: yyDollar[4].tableName, TableSpec: &TableSpec{Constraints: []*ConstraintDefinition{&ConstraintDefinition{Name: string(yyDollar[7].bytes)}}}} + // Change this to a rename statement + yyVAL.ddl = &DDL{Action: RenameStr, ToTables: TableNames{yyDollar[3].tableName}} } case 404: - yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:2181 + yyDollar = yyS[yypt-8 : yypt+1] +//line sql.y:2193 { - yyVAL.statement = &DDL{Action: AlterStr, ConstraintAction: DropStr, Table: yyDollar[4].tableName, TableSpec: &TableSpec{Constraints: []*ConstraintDefinition{&ConstraintDefinition{Name: string(yyDollar[7].bytes), Details: &CheckConstraintDefinition{}}}}} + yyVAL.ddl = &DDL{Action: AlterStr, IndexSpec: &IndexSpec{Action: CreateStr, ToName: NewColIdent(yyDollar[3].str), Using: yyDollar[4].colIdent, Columns: yyDollar[6].indexColumns, Options: yyDollar[8].indexOptions}} } case 405: - yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:2186 + yyDollar = yyS[yypt-10 : yypt+1] +//line sql.y:2197 { - yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[4].tableName, IndexSpec: &IndexSpec{Action: DropStr, ToName: yyDollar[7].colIdent}} + yyVAL.ddl = &DDL{Action: AlterStr, IndexSpec: &IndexSpec{Action: CreateStr, ToName: NewColIdent(yyDollar[5].str), Type: yyDollar[3].str, Using: yyDollar[6].colIdent, Columns: yyDollar[8].indexColumns, Options: yyDollar[10].indexOptions}} } case 406: - yyDollar = yyS[yypt-9 : yypt+1] -//line sql.y:2190 + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:2201 { - yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[4].tableName, IndexSpec: &IndexSpec{Action: RenameStr, FromName: yyDollar[7].colIdent, ToName: yyDollar[9].colIdent}} + yyVAL.ddl = &DDL{Action: AlterStr, ConstraintAction: DropStr, TableSpec: &TableSpec{Constraints: []*ConstraintDefinition{&ConstraintDefinition{Name: string(yyDollar[3].bytes)}}}} } case 407: - yyDollar = yyS[yypt-9 : yypt+1] -//line sql.y:2194 + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:2206 { - ddl := &DDL{Action: AlterStr, ColumnAction: ModifyStr, Table: yyDollar[4].tableName, TableSpec: &TableSpec{}, ColumnOrder: yyDollar[8].columnOrder} - ddl.TableSpec.AddColumn(yyDollar[7].columnDefinition) - ddl.Column = yyDollar[7].columnDefinition.Name - yyVAL.statement = ddl + yyVAL.ddl = &DDL{Action: AlterStr, ConstraintAction: DropStr, TableSpec: &TableSpec{Constraints: []*ConstraintDefinition{&ConstraintDefinition{Name: string(yyDollar[3].bytes), Details: &CheckConstraintDefinition{}}}}} } case 408: - yyDollar = yyS[yypt-10 : yypt+1] -//line sql.y:2201 + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:2211 { - ddl := &DDL{Action: AlterStr, ColumnAction: ChangeStr, Table: yyDollar[4].tableName, TableSpec: &TableSpec{}, Column: NewColIdent(string(yyDollar[7].bytes)), ColumnOrder: yyDollar[9].columnOrder} - ddl.TableSpec.AddColumn(yyDollar[8].columnDefinition) - yyVAL.statement = ddl + yyVAL.ddl = &DDL{Action: AlterStr, IndexSpec: &IndexSpec{Action: DropStr, ToName: yyDollar[3].colIdent}} } case 409: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2207 +//line sql.y:2215 { - yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[4].tableName, PartitionSpec: yyDollar[5].partSpec} + yyVAL.ddl = &DDL{Action: AlterStr, IndexSpec: &IndexSpec{Action: RenameStr, FromName: yyDollar[3].colIdent, ToName: yyDollar[5].colIdent}} } case 410: - yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2211 + yyDollar = yyS[yypt-4 : yypt+1] +//line sql.y:2219 { - ddl := &DDL{Action: AlterStr, ConstraintAction: AddStr, Table: yyDollar[4].tableName, TableSpec: &TableSpec{}} - ddl.TableSpec.AddConstraint(yyDollar[6].constraintDefinition) - yyVAL.statement = ddl + ddl := &DDL{Action: AlterStr, ColumnAction: ModifyStr, TableSpec: &TableSpec{}, ColumnOrder: yyDollar[4].columnOrder} + ddl.TableSpec.AddColumn(yyDollar[3].columnDefinition) + ddl.Column = yyDollar[3].columnDefinition.Name + yyVAL.ddl = ddl } case 411: - yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2217 + yyDollar = yyS[yypt-5 : yypt+1] +//line sql.y:2226 { - ddl := &DDL{Action: AlterStr, ConstraintAction: AddStr, Table: yyDollar[4].tableName, TableSpec: &TableSpec{}} - ddl.TableSpec.AddConstraint(yyDollar[6].constraintDefinition) - yyVAL.statement = ddl + ddl := &DDL{Action: AlterStr, ColumnAction: ChangeStr, TableSpec: &TableSpec{}, Column: NewColIdent(string(yyDollar[3].bytes)), ColumnOrder: yyDollar[5].columnOrder} + ddl.TableSpec.AddColumn(yyDollar[4].columnDefinition) + yyVAL.ddl = ddl } case 412: - yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2223 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:2232 { - yyVAL.statement = &DDL{Action: AlterStr, ConstraintAction: DropStr, Table: yyDollar[4].tableName, TableSpec: &TableSpec{Constraints: []*ConstraintDefinition{&ConstraintDefinition{Name: string(yyDollar[8].bytes), Details: &ForeignKeyDefinition{}}}}} + yyVAL.ddl = &DDL{Action: AlterStr, PartitionSpec: yyDollar[1].partSpec} } case 413: - yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:2228 + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:2236 { - yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[4].tableName, AutoIncSpec: &AutoIncSpec{Value: yyDollar[7].expr}} + ddl := &DDL{Action: AlterStr, ConstraintAction: AddStr, TableSpec: &TableSpec{}} + ddl.TableSpec.AddConstraint(yyDollar[2].constraintDefinition) + yyVAL.ddl = ddl } case 414: + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:2242 + { + ddl := &DDL{Action: AlterStr, ConstraintAction: AddStr, TableSpec: &TableSpec{}} + ddl.TableSpec.AddConstraint(yyDollar[2].constraintDefinition) + yyVAL.ddl = ddl + } + case 415: + yyDollar = yyS[yypt-4 : yypt+1] +//line sql.y:2248 + { + yyVAL.ddl = &DDL{Action: AlterStr, ConstraintAction: DropStr, TableSpec: &TableSpec{Constraints: []*ConstraintDefinition{&ConstraintDefinition{Name: string(yyDollar[4].bytes), Details: &ForeignKeyDefinition{}}}}} + } + case 416: + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:2253 + { + yyVAL.ddl = &DDL{Action: AlterStr, AutoIncSpec: &AutoIncSpec{Value: yyDollar[3].expr}} + } + case 417: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2233 +//line sql.y:2258 { yyVAL.columnOrder = nil } - case 415: + case 418: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2237 +//line sql.y:2262 { yyVAL.columnOrder = &ColumnOrder{First: true} } - case 416: + case 419: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2241 +//line sql.y:2266 { yyVAL.columnOrder = &ColumnOrder{AfterColumn: NewColIdent(string(yyDollar[2].bytes))} } - case 417: + case 420: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2247 +//line sql.y:2272 { yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[3].tableName.ToViewName()} } - case 418: + case 421: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2253 +//line sql.y:2278 { } - case 419: + case 422: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2255 +//line sql.y:2280 { } - case 423: + case 426: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:2264 +//line sql.y:2289 { yyVAL.partSpec = &PartitionSpec{Action: ReorganizeStr, Name: yyDollar[3].colIdent, Definitions: yyDollar[6].partDefs} } - case 424: + case 427: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2270 +//line sql.y:2295 { yyVAL.partDefs = []*PartitionDefinition{yyDollar[1].partDef} } - case 425: + case 428: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2274 +//line sql.y:2299 { yyVAL.partDefs = append(yyDollar[1].partDefs, yyDollar[3].partDef) } - case 426: + case 429: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2280 +//line sql.y:2305 { yyVAL.partDef = &PartitionDefinition{Name: yyDollar[2].colIdent, Limit: yyDollar[7].expr} } - case 427: + case 430: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2284 +//line sql.y:2309 { yyVAL.partDef = &PartitionDefinition{Name: yyDollar[2].colIdent, Maxvalue: true} } - case 428: + case 431: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2290 +//line sql.y:2315 { yyVAL.statement = yyDollar[3].ddl } - case 429: + case 432: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2296 +//line sql.y:2321 { yyVAL.ddl = &DDL{Action: RenameStr, FromTables: TableNames{yyDollar[1].tableName}, ToTables: TableNames{yyDollar[3].tableName}} } - case 430: + case 433: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2300 +//line sql.y:2325 { yyVAL.ddl = yyDollar[1].ddl yyVAL.ddl.FromTables = append(yyVAL.ddl.FromTables, yyDollar[3].tableName) yyVAL.ddl.ToTables = append(yyVAL.ddl.ToTables, yyDollar[5].tableName) } - case 431: + case 434: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2308 +//line sql.y:2333 { var exists bool if yyDollar[3].byt != 0 { @@ -7430,15 +7462,15 @@ yydefault: } yyVAL.statement = &DDL{Action: DropStr, FromTables: yyDollar[4].tableNames, IfExists: exists} } - case 432: + case 435: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2316 +//line sql.y:2341 { yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[5].tableName, IndexSpec: &IndexSpec{Action: DropStr, ToName: yyDollar[3].colIdent}} } - case 433: + case 436: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2320 +//line sql.y:2345 { var exists bool if yyDollar[3].byt != 0 { @@ -7446,9 +7478,9 @@ yydefault: } yyVAL.statement = &DDL{Action: DropStr, FromViews: yyDollar[4].tableNames, IfExists: exists} } - case 434: + case 437: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2328 +//line sql.y:2353 { var exists bool if yyDollar[3].byt != 0 { @@ -7456,9 +7488,9 @@ yydefault: } yyVAL.statement = &DBDDL{Action: DropStr, DBName: string(yyDollar[4].bytes), IfExists: exists} } - case 435: + case 438: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2336 +//line sql.y:2361 { var exists bool if yyDollar[3].byt != 0 { @@ -7466,9 +7498,9 @@ yydefault: } yyVAL.statement = &DBDDL{Action: DropStr, DBName: string(yyDollar[4].bytes), IfExists: exists} } - case 436: + case 439: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2344 +//line sql.y:2369 { var exists bool if yyDollar[3].byt != 0 { @@ -7476,9 +7508,9 @@ yydefault: } yyVAL.statement = &DDL{Action: DropStr, TriggerSpec: &TriggerSpec{Name: string(yyDollar[4].bytes)}, IfExists: exists} } - case 437: + case 440: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2352 +//line sql.y:2377 { var exists bool if yyDollar[3].byt != 0 { @@ -7486,154 +7518,154 @@ yydefault: } yyVAL.statement = &DDL{Action: DropStr, ProcedureSpec: &ProcedureSpec{Name: string(yyDollar[4].bytes)}, IfExists: exists} } - case 438: + case 441: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2362 +//line sql.y:2387 { yyVAL.statement = &DDL{Action: TruncateStr, Table: yyDollar[3].tableName} } - case 439: + case 442: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2366 +//line sql.y:2391 { yyVAL.statement = &DDL{Action: TruncateStr, Table: yyDollar[2].tableName} } - case 440: + case 443: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2371 +//line sql.y:2396 { yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[3].tableName} } - case 441: + case 444: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2377 +//line sql.y:2402 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} } - case 442: + case 445: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2382 +//line sql.y:2407 { yyVAL.statement = &Show{Type: CharsetStr, Filter: yyDollar[4].showFilter} } - case 443: + case 446: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2386 +//line sql.y:2411 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes), Filter: yyDollar[3].showFilter} } - case 444: + case 447: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2390 +//line sql.y:2415 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), IfNotExists: yyDollar[4].byt == 1, Database: string(yyDollar[5].bytes)} } - case 445: + case 448: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2394 +//line sql.y:2419 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), IfNotExists: yyDollar[4].byt == 1, Database: string(yyDollar[5].bytes)} } - case 446: + case 449: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2399 +//line sql.y:2424 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} } - case 447: + case 450: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2403 +//line sql.y:2428 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} } - case 448: + case 451: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2407 +//line sql.y:2432 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} } - case 449: + case 452: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2411 +//line sql.y:2436 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Table: yyDollar[4].tableName} } - case 450: + case 453: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2415 +//line sql.y:2440 { yyVAL.statement = &Show{Type: CreateTriggerStr, Table: yyDollar[4].tableName} } - case 451: + case 454: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2419 +//line sql.y:2444 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Table: yyDollar[4].tableName} } - case 452: + case 455: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2423 +//line sql.y:2448 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } - case 453: + case 456: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2427 +//line sql.y:2452 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } - case 454: + case 457: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2431 +//line sql.y:2456 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } - case 455: + case 458: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2435 +//line sql.y:2460 { yyVAL.statement = &Show{Type: IndexStr, Table: yyDollar[4].tableName, Database: yyDollar[5].str, ShowIndexFilterOpt: yyDollar[6].expr} } - case 456: + case 459: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2439 +//line sql.y:2464 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } - case 457: + case 460: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2443 +//line sql.y:2468 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Filter: yyDollar[4].showFilter} } - case 458: + case 461: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2447 +//line sql.y:2472 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Filter: yyDollar[4].showFilter} } - case 459: + case 462: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2451 +//line sql.y:2476 { yyVAL.statement = &Show{Scope: yyDollar[2].str, Type: string(yyDollar[3].bytes)} } - case 460: + case 463: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2455 +//line sql.y:2480 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Database: yyDollar[4].str, Filter: yyDollar[5].showFilter} } - case 461: + case 464: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:2459 +//line sql.y:2484 { showTablesOpt := &ShowTablesOpt{Full: yyDollar[2].str, DbName: yyDollar[6].str, Filter: yyDollar[7].showFilter} yyVAL.statement = &Show{Type: string(yyDollar[3].str), ShowTablesOpt: showTablesOpt, OnTable: yyDollar[5].tableName} } - case 462: + case 465: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2464 +//line sql.y:2489 { // this is ugly, but I couldn't find a better way for now if yyDollar[3].str == "processlist" { @@ -7643,35 +7675,35 @@ yydefault: yyVAL.statement = &Show{Type: yyDollar[3].str, ShowTablesOpt: showTablesOpt} } } - case 463: + case 466: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2474 +//line sql.y:2499 { yyVAL.statement = &Show{Type: string(yyDollar[3].bytes), ShowTablesOpt: &ShowTablesOpt{DbName: yyDollar[4].str, Filter: yyDollar[5].showFilter}} } - case 464: + case 467: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2478 +//line sql.y:2503 { yyVAL.statement = &Show{Scope: yyDollar[2].str, Type: string(yyDollar[3].bytes)} } - case 465: + case 468: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2482 +//line sql.y:2507 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } - case 466: + case 469: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2486 +//line sql.y:2511 { // Cannot dereference $4 directly, or else the parser stackcannot be pooled. See yyParsePooled showCollationFilterOpt := yyDollar[4].expr yyVAL.statement = &Show{Type: string(yyDollar[2].bytes), ShowCollationFilterOpt: &showCollationFilterOpt} } - case 467: + case 470: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2492 +//line sql.y:2517 { // Cannot dereference $3 directly, or else the parser stackcannot be pooled. See yyParsePooled cmp := yyDollar[3].expr.(*ComparisonExpr) @@ -7679,344 +7711,344 @@ yydefault: var ex Expr = cmp yyVAL.statement = &Show{Type: string(yyDollar[2].bytes), ShowCollationFilterOpt: &ex} } - case 468: + case 471: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2500 +//line sql.y:2525 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } - case 469: + case 472: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2510 +//line sql.y:2535 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } - case 470: + case 473: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2516 +//line sql.y:2541 { yyVAL.expr = &ComparisonExpr{Operator: LikeStr, Right: yyDollar[2].expr, Escape: yyDollar[3].expr} } - case 471: + case 474: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2522 +//line sql.y:2547 { yyVAL.str = string(yyDollar[1].bytes) } - case 472: + case 475: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2526 +//line sql.y:2551 { yyVAL.str = string(yyDollar[1].bytes) } - case 473: + case 476: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2532 +//line sql.y:2557 { yyVAL.str = "" } - case 474: + case 477: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2536 +//line sql.y:2561 { yyVAL.str = "full " } - case 475: + case 478: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2542 +//line sql.y:2567 { yyVAL.str = string(yyDollar[1].bytes) } - case 476: + case 479: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2546 +//line sql.y:2571 { yyVAL.str = string(yyDollar[1].bytes) } - case 477: + case 480: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2552 +//line sql.y:2577 { yyVAL.str = "" } - case 478: + case 481: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2556 +//line sql.y:2581 { yyVAL.str = yyDollar[2].tableIdent.v } - case 479: + case 482: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2560 +//line sql.y:2585 { yyVAL.str = yyDollar[2].tableIdent.v } - case 480: + case 483: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2566 +//line sql.y:2591 { yyVAL.showFilter = nil } - case 481: + case 484: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2570 +//line sql.y:2595 { yyVAL.showFilter = &ShowFilter{Like: string(yyDollar[2].bytes)} } - case 482: + case 485: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2574 +//line sql.y:2599 { yyVAL.showFilter = &ShowFilter{Filter: yyDollar[2].expr} } - case 483: + case 486: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2580 +//line sql.y:2605 { yyVAL.str = "" } - case 484: + case 487: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2584 +//line sql.y:2609 { yyVAL.str = SessionStr } - case 485: + case 488: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2588 +//line sql.y:2613 { yyVAL.str = GlobalStr } - case 486: + case 489: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2594 +//line sql.y:2619 { yyVAL.statement = &Use{DBName: yyDollar[2].tableIdent} } - case 487: + case 490: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2598 +//line sql.y:2623 { yyVAL.statement = &Use{DBName: TableIdent{v: ""}} } - case 488: + case 491: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2604 +//line sql.y:2629 { yyVAL.statement = &Begin{} } - case 489: + case 492: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2608 +//line sql.y:2633 { yyVAL.statement = yyDollar[1].statement } - case 490: + case 493: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2614 +//line sql.y:2639 { yyVAL.statement = &Begin{} } - case 491: + case 494: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2620 +//line sql.y:2645 { yyVAL.statement = &Commit{} } - case 492: + case 495: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2626 +//line sql.y:2651 { yyVAL.statement = &Rollback{} } - case 493: + case 496: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2631 +//line sql.y:2656 { } - case 494: + case 497: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2632 +//line sql.y:2657 { } - case 495: + case 498: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2636 +//line sql.y:2661 { yyVAL.statement = &Explain{ExplainFormat: yyDollar[2].str, Statement: yyDollar[3].statement} } - case 496: + case 499: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2640 +//line sql.y:2665 { yyVAL.statement = &Explain{Analyze: true, ExplainFormat: TreeStr, Statement: yyDollar[3].selStmt} } - case 497: + case 500: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2646 +//line sql.y:2671 { yyVAL.statement = yyDollar[1].selStmt } - case 501: + case 504: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2654 +//line sql.y:2679 { yyVAL.str = "" } - case 502: + case 505: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2658 +//line sql.y:2683 { yyVAL.str = string(yyDollar[3].bytes) } - case 505: + case 508: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2669 +//line sql.y:2694 { yyVAL.statement = &Show{Type: "columns", OnTable: yyDollar[2].tableName} } - case 506: + case 509: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2673 +//line sql.y:2698 { yyVAL.statement = &OtherRead{} } - case 507: + case 510: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2679 +//line sql.y:2704 { yyVAL.statement = &OtherAdmin{} } - case 508: + case 511: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2683 +//line sql.y:2708 { yyVAL.statement = &OtherAdmin{} } - case 509: + case 512: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2687 +//line sql.y:2712 { yyVAL.statement = &OtherAdmin{} } - case 510: + case 513: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2691 +//line sql.y:2716 { yyVAL.statement = &OtherAdmin{} } - case 511: + case 514: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2697 +//line sql.y:2722 { yyVAL.statement = &DDL{Action: FlushStr} } - case 512: + case 515: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2701 +//line sql.y:2726 { setAllowComments(yylex, true) } - case 513: + case 516: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2705 +//line sql.y:2730 { yyVAL.bytes2 = yyDollar[2].bytes2 setAllowComments(yylex, false) } - case 514: + case 517: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2711 +//line sql.y:2736 { yyVAL.bytes2 = nil } - case 515: + case 518: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2715 +//line sql.y:2740 { yyVAL.bytes2 = append(yyDollar[1].bytes2, yyDollar[2].bytes) } - case 516: + case 519: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2721 +//line sql.y:2746 { yyVAL.str = UnionStr } - case 517: + case 520: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2725 +//line sql.y:2750 { yyVAL.str = UnionAllStr } - case 518: + case 521: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2729 +//line sql.y:2754 { yyVAL.str = UnionDistinctStr } - case 519: + case 522: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2734 +//line sql.y:2759 { yyVAL.byt = 0 } - case 520: + case 523: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2738 +//line sql.y:2763 { yyVAL.byt = 1 } - case 521: + case 524: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2743 +//line sql.y:2768 { yyVAL.str = "" } - case 522: + case 525: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2747 +//line sql.y:2772 { yyVAL.str = SQLNoCacheStr } - case 523: + case 526: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2751 +//line sql.y:2776 { yyVAL.str = SQLCacheStr } - case 524: + case 527: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2756 +//line sql.y:2781 { yyVAL.str = "" } - case 525: + case 528: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2760 +//line sql.y:2785 { yyVAL.str = "" } - case 526: + case 529: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2764 +//line sql.y:2789 { yyVAL.str = DistinctStr } - case 527: + case 530: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2769 +//line sql.y:2794 { yyVAL.str = "" } - case 528: + case 531: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2773 +//line sql.y:2798 { yyVAL.str = StraightJoinHint } - case 529: + case 532: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2779 +//line sql.y:2804 { if ae, ok := yyDollar[2].selectExpr.(*AliasedExpr); ok { ae.StartParsePos = yyDollar[1].int @@ -8024,9 +8056,9 @@ yydefault: } yyVAL.selectExprs = SelectExprs{yyDollar[2].selectExpr} } - case 530: + case 533: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2787 +//line sql.y:2812 { if ae, ok := yyDollar[4].selectExpr.(*AliasedExpr); ok { ae.StartParsePos = yyDollar[3].int @@ -8034,147 +8066,147 @@ yydefault: } yyVAL.selectExprs = append(yyVAL.selectExprs, yyDollar[4].selectExpr) } - case 531: + case 534: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2798 +//line sql.y:2823 { yyVAL.selectExpr = &StarExpr{} } - case 532: + case 535: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2802 +//line sql.y:2827 { yyVAL.selectExpr = &AliasedExpr{Expr: yyDollar[1].expr} } - case 533: + case 536: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2806 +//line sql.y:2831 { yyVAL.selectExpr = &StarExpr{TableName: TableName{Name: yyDollar[1].tableIdent}} } - case 534: + case 537: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2810 +//line sql.y:2835 { yyVAL.selectExpr = &StarExpr{TableName: TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent}} } - case 535: + case 538: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2816 +//line sql.y:2841 { yyVAL.selectExpr = &StarExpr{} } - case 536: + case 539: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2820 +//line sql.y:2845 { yyVAL.selectExpr = &AliasedExpr{Expr: yyDollar[1].expr, As: yyDollar[2].colIdent} } - case 537: + case 540: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2824 +//line sql.y:2849 { yyVAL.selectExpr = &StarExpr{TableName: TableName{Name: yyDollar[1].tableIdent}} } - case 538: + case 541: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2828 +//line sql.y:2853 { yyVAL.selectExpr = &StarExpr{TableName: TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent}} } - case 539: + case 542: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2835 +//line sql.y:2860 { yyVAL.over = &Over{WindowName: yyDollar[2].colIdent} } - case 540: + case 543: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2839 +//line sql.y:2864 { yyVAL.over = &Over{OrderBy: yyDollar[3].orderBy} } - case 541: + case 544: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:2843 +//line sql.y:2868 { yyVAL.over = &Over{PartitionBy: yyDollar[5].exprs, OrderBy: yyDollar[6].orderBy} } - case 542: + case 545: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2848 +//line sql.y:2873 { yyVAL.over = nil } - case 543: + case 546: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2852 +//line sql.y:2877 { yyVAL.over = yyDollar[1].over } - case 544: + case 547: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2857 +//line sql.y:2882 { yyVAL.colIdent = ColIdent{} } - case 545: + case 548: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2861 +//line sql.y:2886 { yyVAL.colIdent = yyDollar[1].colIdent } - case 546: + case 549: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2865 +//line sql.y:2890 { yyVAL.colIdent = yyDollar[2].colIdent } - case 547: + case 550: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2871 +//line sql.y:2896 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 548: + case 551: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2875 +//line sql.y:2900 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 549: + case 552: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2879 +//line sql.y:2904 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 550: + case 553: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2883 +//line sql.y:2908 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 551: + case 554: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2889 +//line sql.y:2914 { yyVAL.tableExprs = TableExprs{yyDollar[1].tableExpr} } - case 552: + case 555: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2893 +//line sql.y:2918 { yyVAL.tableExprs = append(yyVAL.tableExprs, yyDollar[3].tableExpr) } - case 555: + case 558: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2903 +//line sql.y:2928 { yyVAL.tableExpr = yyDollar[1].aliasedTableName } - case 556: + case 559: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2907 +//line sql.y:2932 { switch n := yyDollar[1].simpleTableExpr.(type) { case *Subquery: @@ -8184,272 +8216,272 @@ yydefault: } yyVAL.tableExpr = &AliasedTableExpr{Expr: yyDollar[1].simpleTableExpr, As: yyDollar[3].tableIdent} } - case 557: + case 560: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2917 +//line sql.y:2942 { // missed alias for subquery yylex.Error("Every derived table must have its own alias") return 1 } - case 558: + case 561: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2923 +//line sql.y:2948 { yyVAL.tableExpr = &ParenTableExpr{Exprs: yyDollar[2].tableExprs} } - case 559: + case 562: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2929 +//line sql.y:2954 { yyVAL.simpleTableExpr = &ValuesStatement{Rows: yyDollar[2].values} } - case 560: + case 563: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2935 +//line sql.y:2960 { yyVAL.values = Values{yyDollar[2].valTuple} } - case 561: + case 564: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2939 +//line sql.y:2964 { yyVAL.values = append(yyVAL.values, yyDollar[4].valTuple) } - case 562: + case 565: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2945 +//line sql.y:2970 { yyVAL.aliasedTableName = yyDollar[2].aliasedTableName yyVAL.aliasedTableName.Expr = yyDollar[1].tableName } - case 563: + case 566: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2950 +//line sql.y:2975 { yyVAL.aliasedTableName = yyDollar[6].aliasedTableName yyVAL.aliasedTableName.Expr = yyDollar[1].tableName yyVAL.aliasedTableName.Partitions = yyDollar[4].partitions } - case 564: + case 567: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2961 +//line sql.y:2986 { yyVAL.aliasedTableName = &AliasedTableExpr{Hints: yyDollar[1].indexHints} } - case 565: + case 568: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2965 +//line sql.y:2990 { yyVAL.aliasedTableName = &AliasedTableExpr{AsOf: &AsOf{Time: yyDollar[3].expr}, Hints: yyDollar[4].indexHints} } - case 566: + case 569: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2969 +//line sql.y:2994 { yyVAL.aliasedTableName = &AliasedTableExpr{AsOf: &AsOf{Time: yyDollar[3].expr}, As: yyDollar[5].tableIdent, Hints: yyDollar[6].indexHints} } - case 567: + case 570: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2973 +//line sql.y:2998 { yyVAL.aliasedTableName = &AliasedTableExpr{As: yyDollar[2].tableIdent, Hints: yyDollar[3].indexHints} } - case 568: + case 571: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2977 +//line sql.y:3002 { yyVAL.aliasedTableName = &AliasedTableExpr{As: yyDollar[1].tableIdent, Hints: yyDollar[2].indexHints} } - case 569: + case 572: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2988 +//line sql.y:3013 { yyVAL.expr = nil } - case 570: + case 573: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2992 +//line sql.y:3017 { yyVAL.expr = yyDollar[3].expr } - case 571: + case 574: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2997 +//line sql.y:3022 { yyVAL.columns = nil } - case 572: + case 575: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3001 +//line sql.y:3026 { yyVAL.columns = yyDollar[2].columns } - case 573: + case 576: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3007 +//line sql.y:3032 { yyVAL.columns = Columns{yyDollar[1].colIdent} } - case 574: + case 577: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3011 +//line sql.y:3036 { yyVAL.columns = append(yyVAL.columns, yyDollar[3].colIdent) } - case 575: + case 578: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3017 +//line sql.y:3042 { yyVAL.partitions = Partitions{yyDollar[1].colIdent} } - case 576: + case 579: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3021 +//line sql.y:3046 { yyVAL.partitions = append(yyVAL.partitions, yyDollar[3].colIdent) } - case 577: + case 580: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3034 +//line sql.y:3059 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} } - case 578: + case 581: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3038 +//line sql.y:3063 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} } - case 579: + case 582: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3042 +//line sql.y:3067 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} } - case 580: + case 583: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3046 +//line sql.y:3071 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr} } - case 581: + case 584: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3052 +//line sql.y:3077 { yyVAL.joinCondition = JoinCondition{On: yyDollar[2].expr} } - case 582: + case 585: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3054 +//line sql.y:3079 { yyVAL.joinCondition = JoinCondition{Using: yyDollar[3].columns} } - case 583: + case 586: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3058 +//line sql.y:3083 { yyVAL.joinCondition = JoinCondition{} } - case 584: + case 587: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3060 +//line sql.y:3085 { yyVAL.joinCondition = yyDollar[1].joinCondition } - case 585: + case 588: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3064 +//line sql.y:3089 { yyVAL.joinCondition = JoinCondition{} } - case 586: + case 589: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3066 +//line sql.y:3091 { yyVAL.joinCondition = JoinCondition{On: yyDollar[2].expr} } - case 587: + case 590: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3069 +//line sql.y:3094 { yyVAL.empty = struct{}{} } - case 588: + case 591: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3071 +//line sql.y:3096 { yyVAL.empty = struct{}{} } - case 590: + case 593: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3076 +//line sql.y:3101 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } - case 591: + case 594: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3080 +//line sql.y:3105 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } - case 592: + case 595: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3086 +//line sql.y:3111 { yyVAL.str = JoinStr } - case 593: + case 596: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3090 +//line sql.y:3115 { yyVAL.str = JoinStr } - case 594: + case 597: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3094 +//line sql.y:3119 { yyVAL.str = JoinStr } - case 595: + case 598: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3100 +//line sql.y:3125 { yyVAL.str = StraightJoinStr } - case 596: + case 599: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3106 +//line sql.y:3131 { yyVAL.str = LeftJoinStr } - case 597: + case 600: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3110 +//line sql.y:3135 { yyVAL.str = LeftJoinStr } - case 598: + case 601: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3114 +//line sql.y:3139 { yyVAL.str = RightJoinStr } - case 599: + case 602: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3118 +//line sql.y:3143 { yyVAL.str = RightJoinStr } - case 600: + case 603: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3124 +//line sql.y:3149 { yyVAL.str = NaturalJoinStr } - case 601: + case 604: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3128 +//line sql.y:3153 { if yyDollar[2].str == LeftJoinStr { yyVAL.str = NaturalLeftJoinStr @@ -8457,501 +8489,501 @@ yydefault: yyVAL.str = NaturalRightJoinStr } } - case 602: + case 605: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3138 +//line sql.y:3163 { yyVAL.tableName = yyDollar[3].tableName } - case 603: + case 606: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3144 +//line sql.y:3169 { yyVAL.tableName = yyDollar[2].tableName } - case 604: + case 607: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3148 +//line sql.y:3173 { yyVAL.tableName = yyDollar[1].tableName } - case 605: + case 608: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3154 +//line sql.y:3179 { yyVAL.tableName = TableName{Name: yyDollar[1].tableIdent} } - case 606: + case 609: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3158 +//line sql.y:3183 { yyVAL.tableName = TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent} } - case 607: + case 610: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3164 +//line sql.y:3189 { yyVAL.tableName = TableName{Name: yyDollar[1].tableIdent} } - case 608: + case 611: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3169 +//line sql.y:3194 { yyVAL.indexHints = nil } - case 609: + case 612: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3173 +//line sql.y:3198 { yyVAL.indexHints = &IndexHints{Type: UseStr, Indexes: yyDollar[4].columns} } - case 610: + case 613: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3177 +//line sql.y:3202 { yyVAL.indexHints = &IndexHints{Type: IgnoreStr, Indexes: yyDollar[4].columns} } - case 611: + case 614: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3181 +//line sql.y:3206 { yyVAL.indexHints = &IndexHints{Type: ForceStr, Indexes: yyDollar[4].columns} } - case 612: + case 615: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3186 +//line sql.y:3211 { yyVAL.expr = nil } - case 613: + case 616: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3190 +//line sql.y:3215 { yyVAL.expr = yyDollar[2].expr } - case 614: + case 617: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3196 +//line sql.y:3221 { yyVAL.expr = yyDollar[1].expr } - case 615: + case 618: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3200 +//line sql.y:3225 { yyVAL.expr = &AndExpr{Left: yyDollar[1].expr, Right: yyDollar[3].expr} } - case 616: + case 619: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3204 +//line sql.y:3229 { yyVAL.expr = &OrExpr{Left: yyDollar[1].expr, Right: yyDollar[3].expr} } - case 617: + case 620: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3208 +//line sql.y:3233 { yyVAL.expr = &NotExpr{Expr: yyDollar[2].expr} } - case 618: + case 621: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3212 +//line sql.y:3237 { yyVAL.expr = &IsExpr{Operator: yyDollar[3].str, Expr: yyDollar[1].expr} } - case 619: + case 622: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3216 +//line sql.y:3241 { yyVAL.expr = yyDollar[1].expr } - case 620: + case 623: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3220 +//line sql.y:3245 { yyVAL.expr = &Default{ColName: yyDollar[2].str} } - case 621: + case 624: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3226 +//line sql.y:3251 { yyVAL.str = "" } - case 622: + case 625: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3230 +//line sql.y:3255 { yyVAL.str = string(yyDollar[2].bytes) } - case 623: + case 626: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3236 +//line sql.y:3261 { yyVAL.boolVal = BoolVal(true) } - case 624: + case 627: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3240 +//line sql.y:3265 { yyVAL.boolVal = BoolVal(false) } - case 625: + case 628: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3246 +//line sql.y:3271 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: yyDollar[2].str, Right: yyDollar[3].expr} } - case 626: + case 629: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3250 +//line sql.y:3275 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: InStr, Right: yyDollar[3].colTuple} } - case 627: + case 630: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3254 +//line sql.y:3279 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotInStr, Right: yyDollar[4].colTuple} } - case 628: + case 631: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3258 +//line sql.y:3283 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: LikeStr, Right: yyDollar[3].expr, Escape: yyDollar[4].expr} } - case 629: + case 632: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3262 +//line sql.y:3287 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotLikeStr, Right: yyDollar[4].expr, Escape: yyDollar[5].expr} } - case 630: + case 633: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3266 +//line sql.y:3291 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: RegexpStr, Right: yyDollar[3].expr} } - case 631: + case 634: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3270 +//line sql.y:3295 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotRegexpStr, Right: yyDollar[4].expr} } - case 632: + case 635: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3274 +//line sql.y:3299 { yyVAL.expr = &RangeCond{Left: yyDollar[1].expr, Operator: BetweenStr, From: yyDollar[3].expr, To: yyDollar[5].expr} } - case 633: + case 636: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:3278 +//line sql.y:3303 { yyVAL.expr = &RangeCond{Left: yyDollar[1].expr, Operator: NotBetweenStr, From: yyDollar[4].expr, To: yyDollar[6].expr} } - case 634: + case 637: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3282 +//line sql.y:3307 { yyVAL.expr = &ExistsExpr{Subquery: yyDollar[2].subquery} } - case 635: + case 638: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3288 +//line sql.y:3313 { yyVAL.str = IsNullStr } - case 636: + case 639: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3292 +//line sql.y:3317 { yyVAL.str = IsNotNullStr } - case 637: + case 640: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3296 +//line sql.y:3321 { yyVAL.str = IsTrueStr } - case 638: + case 641: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3300 +//line sql.y:3325 { yyVAL.str = IsNotTrueStr } - case 639: + case 642: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3304 +//line sql.y:3329 { yyVAL.str = IsFalseStr } - case 640: + case 643: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3308 +//line sql.y:3333 { yyVAL.str = IsNotFalseStr } - case 641: + case 644: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3314 +//line sql.y:3339 { yyVAL.str = EqualStr } - case 642: + case 645: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3318 +//line sql.y:3343 { yyVAL.str = LessThanStr } - case 643: + case 646: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3322 +//line sql.y:3347 { yyVAL.str = GreaterThanStr } - case 644: + case 647: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3326 +//line sql.y:3351 { yyVAL.str = LessEqualStr } - case 645: + case 648: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3330 +//line sql.y:3355 { yyVAL.str = GreaterEqualStr } - case 646: + case 649: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3334 +//line sql.y:3359 { yyVAL.str = NotEqualStr } - case 647: + case 650: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3338 +//line sql.y:3363 { yyVAL.str = NullSafeEqualStr } - case 648: + case 651: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3343 +//line sql.y:3368 { yyVAL.expr = nil } - case 649: + case 652: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3347 +//line sql.y:3372 { yyVAL.expr = yyDollar[2].expr } - case 650: + case 653: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3353 +//line sql.y:3378 { yyVAL.colTuple = yyDollar[1].valTuple } - case 651: + case 654: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3357 +//line sql.y:3382 { yyVAL.colTuple = yyDollar[1].subquery } - case 652: + case 655: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3361 +//line sql.y:3386 { yyVAL.colTuple = ListArg(yyDollar[1].bytes) } - case 653: + case 656: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3367 +//line sql.y:3392 { yyVAL.subquery = &Subquery{Select: yyDollar[2].selStmt} } - case 654: + case 657: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3373 +//line sql.y:3398 { yyVAL.simpleTableExpr = yyDollar[1].subquery } - case 655: + case 658: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3377 +//line sql.y:3402 { yyVAL.simpleTableExpr = yyDollar[2].simpleTableExpr } - case 656: + case 659: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3383 +//line sql.y:3408 { yyVAL.selectExprs = nil } - case 658: + case 661: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3390 +//line sql.y:3415 { yyVAL.selectExprs = SelectExprs{yyDollar[1].selectExpr} } - case 659: + case 662: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3394 +//line sql.y:3419 { yyVAL.selectExprs = append(yyDollar[1].selectExprs, yyDollar[3].selectExpr) } - case 660: + case 663: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3400 +//line sql.y:3425 { yyVAL.exprs = Exprs{yyDollar[1].expr} } - case 661: + case 664: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3404 +//line sql.y:3429 { yyVAL.exprs = append(yyDollar[1].exprs, yyDollar[3].expr) } - case 662: + case 665: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3410 +//line sql.y:3435 { yyVAL.expr = yyDollar[1].expr } - case 663: + case 666: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3414 +//line sql.y:3439 { yyVAL.expr = yyDollar[1].boolVal } - case 664: + case 667: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3418 +//line sql.y:3443 { yyVAL.expr = yyDollar[1].colName } - case 665: + case 668: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3422 +//line sql.y:3447 { yyVAL.expr = yyDollar[1].expr } - case 666: + case 669: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3426 +//line sql.y:3451 { yyVAL.expr = yyDollar[1].subquery } - case 667: + case 670: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3430 +//line sql.y:3455 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitAndStr, Right: yyDollar[3].expr} } - case 668: + case 671: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3434 +//line sql.y:3459 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitOrStr, Right: yyDollar[3].expr} } - case 669: + case 672: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3438 +//line sql.y:3463 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitXorStr, Right: yyDollar[3].expr} } - case 670: + case 673: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3442 +//line sql.y:3467 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: PlusStr, Right: yyDollar[3].expr} } - case 671: + case 674: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3446 +//line sql.y:3471 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: MinusStr, Right: yyDollar[3].expr} } - case 672: + case 675: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3450 +//line sql.y:3475 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: MultStr, Right: yyDollar[3].expr} } - case 673: + case 676: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3454 +//line sql.y:3479 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: DivStr, Right: yyDollar[3].expr} } - case 674: + case 677: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3458 +//line sql.y:3483 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: IntDivStr, Right: yyDollar[3].expr} } - case 675: + case 678: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3462 +//line sql.y:3487 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ModStr, Right: yyDollar[3].expr} } - case 676: + case 679: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3466 +//line sql.y:3491 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ModStr, Right: yyDollar[3].expr} } - case 677: + case 680: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3470 +//line sql.y:3495 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ShiftLeftStr, Right: yyDollar[3].expr} } - case 678: + case 681: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3474 +//line sql.y:3499 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ShiftRightStr, Right: yyDollar[3].expr} } - case 679: + case 682: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3478 +//line sql.y:3503 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].colName, Operator: JSONExtractOp, Right: yyDollar[3].expr} } - case 680: + case 683: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3482 +//line sql.y:3507 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].colName, Operator: JSONUnquoteExtractOp, Right: yyDollar[3].expr} } - case 681: + case 684: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3486 +//line sql.y:3511 { yyVAL.expr = &CollateExpr{Expr: yyDollar[1].expr, Charset: yyDollar[3].str} } - case 682: + case 685: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3490 +//line sql.y:3515 { yyVAL.expr = &UnaryExpr{Operator: BinaryStr, Expr: yyDollar[2].expr} } - case 683: + case 686: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3494 +//line sql.y:3519 { yyVAL.expr = &UnaryExpr{Operator: UBinaryStr, Expr: yyDollar[2].expr} } - case 684: + case 687: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3498 +//line sql.y:3523 { yyVAL.expr = &UnaryExpr{Operator: Utf8mb4Str, Expr: yyDollar[2].expr} } - case 685: + case 688: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3502 +//line sql.y:3527 { if num, ok := yyDollar[2].expr.(*SQLVal); ok && num.Type == IntVal { yyVAL.expr = num @@ -8959,9 +8991,9 @@ yydefault: yyVAL.expr = &UnaryExpr{Operator: UPlusStr, Expr: yyDollar[2].expr} } } - case 686: + case 689: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3510 +//line sql.y:3535 { if num, ok := yyDollar[2].expr.(*SQLVal); ok && num.Type == IntVal { // Handle double negative @@ -8975,21 +9007,21 @@ yydefault: yyVAL.expr = &UnaryExpr{Operator: UMinusStr, Expr: yyDollar[2].expr} } } - case 687: + case 690: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3524 +//line sql.y:3549 { yyVAL.expr = &UnaryExpr{Operator: TildaStr, Expr: yyDollar[2].expr} } - case 688: + case 691: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3528 +//line sql.y:3553 { yyVAL.expr = &UnaryExpr{Operator: BangStr, Expr: yyDollar[2].expr} } - case 689: + case 692: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3532 +//line sql.y:3557 { // This rule prevents the usage of INTERVAL // as a function. If support is needed for that, @@ -8997,943 +9029,943 @@ yydefault: // will be non-trivial because of grammar conflicts. yyVAL.expr = &IntervalExpr{Expr: yyDollar[2].expr, Unit: yyDollar[3].colIdent.String()} } - case 696: + case 699: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3552 +//line sql.y:3577 { yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Distinct: yyDollar[3].str == DistinctStr, Exprs: yyDollar[4].selectExprs} } - case 697: + case 700: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:3556 +//line sql.y:3581 { yyVAL.expr = &FuncExpr{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].colIdent, Exprs: yyDollar[5].selectExprs} } - case 698: + case 701: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:3566 +//line sql.y:3591 { yyVAL.expr = &FuncExpr{Name: NewColIdent(string(yyDollar[1].bytes)), Exprs: yyDollar[4].selectExprs, Distinct: yyDollar[3].str == DistinctStr, Over: yyDollar[6].over} } - case 699: + case 702: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:3570 +//line sql.y:3595 { yyVAL.expr = &FuncExpr{Name: NewColIdent(string(yyDollar[1].bytes)), Exprs: yyDollar[4].selectExprs, Distinct: yyDollar[3].str == DistinctStr, Over: yyDollar[6].over} } - case 700: + case 703: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3574 +//line sql.y:3599 { yyVAL.expr = &FuncExpr{Name: NewColIdent(string(yyDollar[1].bytes)), Exprs: yyDollar[3].selectExprs, Over: yyDollar[5].over} } - case 701: + case 704: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3578 +//line sql.y:3603 { yyVAL.expr = &FuncExpr{Name: NewColIdent(string(yyDollar[1].bytes)), Exprs: yyDollar[3].selectExprs, Over: yyDollar[5].over} } - case 702: + case 705: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3582 +//line sql.y:3607 { yyVAL.expr = &FuncExpr{Name: NewColIdent(string(yyDollar[1].bytes)), Exprs: yyDollar[3].selectExprs, Over: yyDollar[5].over} } - case 703: + case 706: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:3586 +//line sql.y:3611 { yyVAL.expr = &FuncExpr{Name: NewColIdent(string(yyDollar[1].bytes)), Exprs: yyDollar[4].selectExprs, Distinct: yyDollar[3].str == DistinctStr, Over: yyDollar[6].over} } - case 704: + case 707: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3590 +//line sql.y:3615 { yyVAL.expr = &FuncExpr{Name: NewColIdent(string(yyDollar[1].bytes)), Exprs: yyDollar[3].selectExprs, Over: yyDollar[5].over} } - case 705: + case 708: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3594 +//line sql.y:3619 { yyVAL.expr = &FuncExpr{Name: NewColIdent(string(yyDollar[1].bytes)), Exprs: yyDollar[3].selectExprs, Over: yyDollar[5].over} } - case 706: + case 709: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:3598 +//line sql.y:3623 { yyVAL.expr = &FuncExpr{Name: NewColIdent(string(yyDollar[1].bytes)), Exprs: yyDollar[4].selectExprs, Distinct: yyDollar[3].str == DistinctStr, Over: yyDollar[6].over} } - case 707: + case 710: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3602 +//line sql.y:3627 { yyVAL.expr = &FuncExpr{Name: NewColIdent(string(yyDollar[1].bytes)), Exprs: yyDollar[3].selectExprs, Over: yyDollar[5].over} } - case 708: + case 711: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3606 +//line sql.y:3631 { yyVAL.expr = &FuncExpr{Name: NewColIdent(string(yyDollar[1].bytes)), Exprs: yyDollar[3].selectExprs, Over: yyDollar[5].over} } - case 709: + case 712: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3610 +//line sql.y:3635 { yyVAL.expr = &FuncExpr{Name: NewColIdent(string(yyDollar[1].bytes)), Exprs: yyDollar[3].selectExprs, Over: yyDollar[5].over} } - case 710: + case 713: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3614 +//line sql.y:3639 { yyVAL.expr = &FuncExpr{Name: NewColIdent(string(yyDollar[1].bytes)), Exprs: yyDollar[3].selectExprs, Over: yyDollar[5].over} } - case 711: + case 714: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:3618 +//line sql.y:3643 { yyVAL.expr = &FuncExpr{Name: NewColIdent(string(yyDollar[1].bytes)), Exprs: yyDollar[4].selectExprs, Distinct: yyDollar[3].str == DistinctStr, Over: yyDollar[6].over} } - case 712: + case 715: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3622 +//line sql.y:3647 { yyVAL.expr = &FuncExpr{Name: NewColIdent(string(yyDollar[1].bytes)), Exprs: yyDollar[3].selectExprs, Over: yyDollar[5].over} } - case 713: + case 716: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3626 +//line sql.y:3651 { yyVAL.expr = &FuncExpr{Name: NewColIdent(string(yyDollar[1].bytes)), Exprs: yyDollar[3].selectExprs, Over: yyDollar[5].over} } - case 714: + case 717: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3630 +//line sql.y:3655 { yyVAL.expr = &FuncExpr{Name: NewColIdent(string(yyDollar[1].bytes)), Exprs: yyDollar[3].selectExprs, Over: yyDollar[5].over} } - case 715: + case 718: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3639 +//line sql.y:3664 { yyVAL.expr = &FuncExpr{Name: NewColIdent(string(yyDollar[1].bytes)), Over: yyDollar[4].over} } - case 716: + case 719: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3643 +//line sql.y:3668 { yyVAL.expr = &FuncExpr{Name: NewColIdent(string(yyDollar[1].bytes)), Over: yyDollar[4].over} } - case 717: + case 720: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3647 +//line sql.y:3672 { yyVAL.expr = &FuncExpr{Name: NewColIdent(string(yyDollar[1].bytes)), Exprs: SelectExprs{yyDollar[3].selectExpr}, Over: yyDollar[5].over} } - case 718: + case 721: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3651 +//line sql.y:3676 { yyVAL.expr = &FuncExpr{Name: NewColIdent(string(yyDollar[1].bytes)), Exprs: yyDollar[3].selectExprs, Over: yyDollar[5].over} } - case 719: + case 722: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3655 +//line sql.y:3680 { yyVAL.expr = &FuncExpr{Name: NewColIdent(string(yyDollar[1].bytes)), Exprs: SelectExprs{yyDollar[3].selectExpr}, Over: yyDollar[5].over} } - case 720: + case 723: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3659 +//line sql.y:3684 { yyVAL.expr = &FuncExpr{Name: NewColIdent(string(yyDollar[1].bytes)), Exprs: yyDollar[3].selectExprs, Over: yyDollar[5].over} } - case 721: + case 724: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3663 +//line sql.y:3688 { yyVAL.expr = &FuncExpr{Name: NewColIdent(string(yyDollar[1].bytes)), Exprs: yyDollar[3].selectExprs, Over: yyDollar[5].over} } - case 722: + case 725: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3667 +//line sql.y:3692 { yyVAL.expr = &FuncExpr{Name: NewColIdent(string(yyDollar[1].bytes)), Over: yyDollar[4].over} } - case 723: + case 726: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3671 +//line sql.y:3696 { yyVAL.expr = &FuncExpr{Name: NewColIdent(string(yyDollar[1].bytes)), Over: yyDollar[4].over} } - case 724: + case 727: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3675 +//line sql.y:3700 { yyVAL.expr = &FuncExpr{Name: NewColIdent(string(yyDollar[1].bytes)), Over: yyDollar[4].over} } - case 725: + case 728: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3679 +//line sql.y:3704 { yyVAL.expr = &FuncExpr{Name: NewColIdent(string(yyDollar[1].bytes)), Over: yyDollar[4].over} } - case 726: + case 729: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3690 +//line sql.y:3715 { yyVAL.expr = &FuncExpr{Name: NewColIdent(string(yyDollar[1].bytes)), Exprs: yyDollar[3].selectExprs} } - case 727: + case 730: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3694 +//line sql.y:3719 { yyVAL.expr = &FuncExpr{Name: NewColIdent(string(yyDollar[1].bytes)), Exprs: yyDollar[3].selectExprs} } - case 728: + case 731: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3698 +//line sql.y:3723 { yyVAL.expr = &FuncExpr{Name: NewColIdent(string(yyDollar[1].bytes))} } - case 729: + case 732: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:3702 +//line sql.y:3727 { yyVAL.expr = &ConvertExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].convertType} } - case 730: + case 733: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:3706 +//line sql.y:3731 { yyVAL.expr = &ConvertExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].convertType} } - case 731: + case 734: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:3710 +//line sql.y:3735 { yyVAL.expr = &ConvertUsingExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].str} } - case 732: + case 735: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:3714 +//line sql.y:3739 { yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: yyDollar[7].expr} } - case 733: + case 736: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:3718 +//line sql.y:3743 { yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: yyDollar[7].expr} } - case 734: + case 737: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:3722 +//line sql.y:3747 { yyVAL.expr = &SubstrExpr{StrVal: NewStrVal(yyDollar[3].bytes), From: yyDollar[5].expr, To: yyDollar[7].expr} } - case 735: + case 738: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:3726 +//line sql.y:3751 { yyVAL.expr = &SubstrExpr{StrVal: NewStrVal(yyDollar[3].bytes), From: yyDollar[5].expr, To: yyDollar[7].expr} } - case 736: + case 739: yyDollar = yyS[yypt-9 : yypt+1] -//line sql.y:3730 +//line sql.y:3755 { yyVAL.expr = &MatchExpr{Columns: yyDollar[3].selectExprs, Expr: yyDollar[7].expr, Option: yyDollar[8].str} } - case 737: + case 740: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3734 +//line sql.y:3759 { yyVAL.expr = &FuncExpr{Name: NewColIdent(string(yyDollar[1].bytes)), Exprs: yyDollar[3].selectExprs} } - case 738: + case 741: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:3738 +//line sql.y:3763 { yyVAL.expr = &GroupConcatExpr{Distinct: yyDollar[3].str, Exprs: yyDollar[4].selectExprs, OrderBy: yyDollar[5].orderBy, Separator: yyDollar[6].str} } - case 739: + case 742: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3742 +//line sql.y:3767 { yyVAL.expr = &CaseExpr{Expr: yyDollar[2].expr, Whens: yyDollar[3].whens, Else: yyDollar[4].expr} } - case 740: + case 743: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3746 +//line sql.y:3771 { yyVAL.expr = &ValuesFuncExpr{Name: yyDollar[3].colName} } - case 741: + case 744: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3756 +//line sql.y:3781 { yyVAL.expr = &FuncExpr{Name: NewColIdent(string(yyDollar[1].bytes))} } - case 742: + case 745: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3760 +//line sql.y:3785 { yyVAL.expr = &FuncExpr{Name: NewColIdent(string(yyDollar[1].bytes))} } - case 743: + case 746: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3764 +//line sql.y:3789 { yyVAL.expr = &FuncExpr{Name: NewColIdent(string(yyDollar[1].bytes))} } - case 744: + case 747: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3769 +//line sql.y:3794 { yyVAL.expr = &FuncExpr{Name: NewColIdent(string(yyDollar[1].bytes))} } - case 745: + case 748: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3774 +//line sql.y:3799 { yyVAL.expr = &FuncExpr{Name: NewColIdent(string(yyDollar[1].bytes))} } - case 746: + case 749: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3779 +//line sql.y:3804 { yyVAL.expr = &FuncExpr{Name: NewColIdent(string(yyDollar[1].bytes))} } - case 747: + case 750: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3785 +//line sql.y:3810 { yyVAL.expr = &FuncExpr{Name: NewColIdent(string(yyDollar[1].bytes))} } - case 748: + case 751: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3790 +//line sql.y:3815 { yyVAL.expr = &FuncExpr{Name: NewColIdent(string(yyDollar[1].bytes))} } - case 749: + case 752: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3794 +//line sql.y:3819 { yyVAL.expr = &FuncExpr{Name: NewColIdent(string(yyDollar[1].bytes))} } - case 750: + case 753: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3799 +//line sql.y:3824 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent(string(yyDollar[1].bytes)), Fsp: yyDollar[2].expr} } - case 751: + case 754: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3803 +//line sql.y:3828 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent(string(yyDollar[1].bytes)), Fsp: yyDollar[2].expr} } - case 752: + case 755: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3807 +//line sql.y:3832 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent(string(yyDollar[1].bytes)), Fsp: yyDollar[2].expr} } - case 753: + case 756: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3812 +//line sql.y:3837 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent(string(yyDollar[1].bytes)), Fsp: yyDollar[2].expr} } - case 754: + case 757: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3817 +//line sql.y:3842 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent(string(yyDollar[1].bytes)), Fsp: yyDollar[2].expr} } - case 755: + case 758: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3822 +//line sql.y:3847 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent(string(yyDollar[1].bytes)), Fsp: yyDollar[2].expr} } - case 756: + case 759: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:3826 +//line sql.y:3851 { yyVAL.expr = &TimestampFuncExpr{Name: string("timestampadd"), Unit: yyDollar[3].colIdent.String(), Expr1: yyDollar[5].expr, Expr2: yyDollar[7].expr} } - case 757: + case 760: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:3830 +//line sql.y:3855 { yyVAL.expr = &TimestampFuncExpr{Name: string("timestampdiff"), Unit: yyDollar[3].colIdent.String(), Expr1: yyDollar[5].expr, Expr2: yyDollar[7].expr} } - case 760: + case 763: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3841 +//line sql.y:3866 { yyVAL.expr = yyDollar[2].expr } - case 761: + case 764: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3851 +//line sql.y:3876 { yyVAL.expr = &FuncExpr{Name: NewColIdent(string(yyDollar[1].bytes)), Exprs: yyDollar[3].selectExprs} } - case 762: + case 765: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3855 +//line sql.y:3880 { yyVAL.expr = &FuncExpr{Name: NewColIdent(string(yyDollar[1].bytes)), Exprs: yyDollar[3].selectExprs} } - case 763: + case 766: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3859 +//line sql.y:3884 { yyVAL.expr = &FuncExpr{Name: NewColIdent(string(yyDollar[1].bytes)), Exprs: yyDollar[3].selectExprs} } - case 764: + case 767: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3863 +//line sql.y:3888 { yyVAL.expr = &FuncExpr{Name: NewColIdent(string(yyDollar[1].bytes)), Exprs: yyDollar[3].selectExprs} } - case 765: + case 768: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3867 +//line sql.y:3892 { yyVAL.expr = &FuncExpr{Name: NewColIdent(string(yyDollar[1].bytes)), Exprs: yyDollar[3].selectExprs} } - case 766: + case 769: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3871 +//line sql.y:3896 { yyVAL.expr = &FuncExpr{Name: NewColIdent(string(yyDollar[1].bytes)), Exprs: yyDollar[3].selectExprs} } - case 767: + case 770: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3877 +//line sql.y:3902 { yyVAL.str = "" } - case 768: + case 771: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3881 +//line sql.y:3906 { yyVAL.str = BooleanModeStr } - case 769: + case 772: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3885 +//line sql.y:3910 { yyVAL.str = NaturalLanguageModeStr } - case 770: + case 773: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:3889 +//line sql.y:3914 { yyVAL.str = NaturalLanguageModeWithQueryExpansionStr } - case 771: + case 774: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3893 +//line sql.y:3918 { yyVAL.str = QueryExpansionStr } - case 772: + case 775: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3899 +//line sql.y:3924 { yyVAL.str = string(yyDollar[1].bytes) } - case 773: + case 776: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3903 +//line sql.y:3928 { yyVAL.str = string(yyDollar[1].bytes) } - case 774: + case 777: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3909 +//line sql.y:3934 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal} } - case 775: + case 778: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3913 +//line sql.y:3938 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal, Charset: yyDollar[3].str, Operator: CharacterSetStr} } - case 776: + case 779: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3917 +//line sql.y:3942 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal, Charset: string(yyDollar[3].bytes)} } - case 777: + case 780: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3921 +//line sql.y:3946 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 778: + case 781: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3925 +//line sql.y:3950 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal} } - case 779: + case 782: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3929 +//line sql.y:3954 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} yyVAL.convertType.Length = yyDollar[2].LengthScaleOption.Length yyVAL.convertType.Scale = yyDollar[2].LengthScaleOption.Scale } - case 780: + case 783: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3935 +//line sql.y:3960 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 781: + case 784: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3939 +//line sql.y:3964 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal} } - case 782: + case 785: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3943 +//line sql.y:3968 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 783: + case 786: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3947 +//line sql.y:3972 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 784: + case 787: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3951 +//line sql.y:3976 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal} } - case 785: + case 788: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3955 +//line sql.y:3980 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 786: + case 789: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3959 +//line sql.y:3984 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 787: + case 790: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3964 +//line sql.y:3989 { yyVAL.expr = nil } - case 788: + case 791: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3968 +//line sql.y:3993 { yyVAL.expr = yyDollar[1].expr } - case 789: + case 792: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3973 +//line sql.y:3998 { yyVAL.str = string("") } - case 790: + case 793: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3977 +//line sql.y:4002 { yyVAL.str = string(yyDollar[2].bytes) } - case 791: + case 794: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3983 +//line sql.y:4008 { yyVAL.whens = []*When{yyDollar[1].when} } - case 792: + case 795: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3987 +//line sql.y:4012 { yyVAL.whens = append(yyDollar[1].whens, yyDollar[2].when) } - case 793: + case 796: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3993 +//line sql.y:4018 { yyVAL.when = &When{Cond: yyDollar[2].expr, Val: yyDollar[4].expr} } - case 794: + case 797: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3998 +//line sql.y:4023 { yyVAL.expr = nil } - case 795: + case 798: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4002 +//line sql.y:4027 { yyVAL.expr = yyDollar[2].expr } - case 796: + case 799: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4008 +//line sql.y:4033 { yyVAL.colName = &ColName{Name: yyDollar[1].colIdent} } - case 797: + case 800: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4012 +//line sql.y:4037 { yyVAL.colName = &ColName{Qualifier: TableName{Name: yyDollar[1].tableIdent}, Name: yyDollar[3].colIdent} } - case 798: + case 801: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:4016 +//line sql.y:4041 { yyVAL.colName = &ColName{Qualifier: TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent}, Name: yyDollar[5].colIdent} } - case 799: + case 802: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4022 +//line sql.y:4047 { yyVAL.expr = NewStrVal(yyDollar[1].bytes) } - case 800: + case 803: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4026 +//line sql.y:4051 { yyVAL.expr = NewHexVal(yyDollar[1].bytes) } - case 801: + case 804: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4030 +//line sql.y:4055 { yyVAL.expr = NewBitVal(yyDollar[1].bytes) } - case 802: + case 805: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4034 +//line sql.y:4059 { yyVAL.expr = NewIntVal(yyDollar[1].bytes) } - case 803: + case 806: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4038 +//line sql.y:4063 { yyVAL.expr = NewFloatVal(yyDollar[1].bytes) } - case 804: + case 807: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4042 +//line sql.y:4067 { yyVAL.expr = NewHexNum(yyDollar[1].bytes) } - case 805: + case 808: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4046 +//line sql.y:4071 { yyVAL.expr = NewValArg(yyDollar[1].bytes) } - case 806: + case 809: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4050 +//line sql.y:4075 { yyVAL.expr = &NullVal{} } - case 807: + case 810: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4056 +//line sql.y:4081 { yyVAL.expr = NewIntVal([]byte("1")) } - case 808: + case 811: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4060 +//line sql.y:4085 { yyVAL.expr = NewIntVal(yyDollar[1].bytes) } - case 809: + case 812: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4064 +//line sql.y:4089 { yyVAL.expr = NewValArg(yyDollar[1].bytes) } - case 810: + case 813: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4069 +//line sql.y:4094 { yyVAL.exprs = nil } - case 811: + case 814: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4073 +//line sql.y:4098 { yyVAL.exprs = yyDollar[3].exprs } - case 812: + case 815: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4079 +//line sql.y:4104 { yyVAL.exprs = Exprs{yyDollar[1].expr} } - case 813: + case 816: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4083 +//line sql.y:4108 { yyVAL.exprs = append(yyDollar[1].exprs, yyDollar[3].expr) } - case 814: + case 817: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4089 +//line sql.y:4114 { yyVAL.expr = yyDollar[1].expr } - case 815: + case 818: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4093 +//line sql.y:4118 { yyVAL.expr = &ColName{Name: NewColIdent(string(yyDollar[1].bytes))} } - case 816: + case 819: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4098 +//line sql.y:4123 { yyVAL.expr = nil } - case 817: + case 820: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4102 +//line sql.y:4127 { yyVAL.expr = yyDollar[2].expr } - case 818: + case 821: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4108 +//line sql.y:4133 { yyVAL.expr = yyDollar[1].expr } - case 819: + case 822: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4112 +//line sql.y:4137 { yyVAL.expr = &ColName{Name: NewColIdent(string(yyDollar[1].bytes))} } - case 820: + case 823: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4117 +//line sql.y:4142 { yyVAL.orderBy = nil } - case 821: + case 824: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4121 +//line sql.y:4146 { yyVAL.orderBy = yyDollar[3].orderBy } - case 822: + case 825: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4127 +//line sql.y:4152 { yyVAL.orderBy = OrderBy{yyDollar[1].order} } - case 823: + case 826: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4131 +//line sql.y:4156 { yyVAL.orderBy = append(yyDollar[1].orderBy, yyDollar[3].order) } - case 824: + case 827: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4137 +//line sql.y:4162 { yyVAL.order = &Order{Expr: yyDollar[1].expr, Direction: yyDollar[2].str} } - case 825: + case 828: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4141 +//line sql.y:4166 { yyVAL.order = &Order{Expr: &ColName{Name: NewColIdent(string(yyDollar[1].bytes))}, Direction: yyDollar[2].str} } - case 826: + case 829: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4146 +//line sql.y:4171 { yyVAL.str = AscScr } - case 827: + case 830: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4150 +//line sql.y:4175 { yyVAL.str = AscScr } - case 828: + case 831: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4154 +//line sql.y:4179 { yyVAL.str = DescScr } - case 829: + case 832: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4159 +//line sql.y:4184 { yyVAL.limit = nil } - case 830: + case 833: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4163 +//line sql.y:4188 { yyVAL.limit = &Limit{Rowcount: yyDollar[2].expr} } - case 831: + case 834: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:4167 +//line sql.y:4192 { yyVAL.limit = &Limit{Offset: yyDollar[2].expr, Rowcount: yyDollar[4].expr} } - case 832: + case 835: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:4171 +//line sql.y:4196 { yyVAL.limit = &Limit{Offset: yyDollar[4].expr, Rowcount: yyDollar[2].expr} } - case 833: + case 836: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4176 +//line sql.y:4201 { yyVAL.str = "" } - case 834: + case 837: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4180 +//line sql.y:4205 { yyVAL.str = ForUpdateStr } - case 835: + case 838: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:4184 +//line sql.y:4209 { yyVAL.str = ShareModeStr } - case 836: + case 839: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4197 +//line sql.y:4222 { yyVAL.ins = &Insert{Rows: yyDollar[2].values} } - case 837: + case 840: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4201 +//line sql.y:4226 { yyVAL.ins = &Insert{Rows: yyDollar[1].selStmt} } - case 838: + case 841: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4205 +//line sql.y:4230 { // Drop the redundant parenthesis. yyVAL.ins = &Insert{Rows: yyDollar[2].selStmt} } - case 839: + case 842: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:4210 +//line sql.y:4235 { yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[5].values} } - case 840: + case 843: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:4214 +//line sql.y:4239 { yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[4].selStmt} } - case 841: + case 844: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:4218 +//line sql.y:4243 { // Drop the redundant parenthesis. yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[5].selStmt} } - case 842: + case 845: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4225 +//line sql.y:4250 { yyVAL.columns = Columns{yyDollar[1].colIdent} } - case 843: + case 846: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4229 +//line sql.y:4254 { yyVAL.columns = Columns{yyDollar[3].colIdent} } - case 844: + case 847: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4233 +//line sql.y:4258 { yyVAL.columns = append(yyVAL.columns, yyDollar[3].colIdent) } - case 845: + case 848: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:4237 +//line sql.y:4262 { yyVAL.columns = append(yyVAL.columns, yyDollar[5].colIdent) } - case 846: + case 849: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4242 +//line sql.y:4267 { yyVAL.setExprs = nil } - case 847: + case 850: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:4246 +//line sql.y:4271 { yyVAL.setExprs = yyDollar[5].setExprs } - case 848: + case 851: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4252 +//line sql.y:4277 { yyVAL.values = Values{yyDollar[1].valTuple} } - case 849: + case 852: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4256 +//line sql.y:4281 { yyVAL.values = append(yyDollar[1].values, yyDollar[3].valTuple) } - case 850: + case 853: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4262 +//line sql.y:4287 { yyVAL.valTuple = yyDollar[1].valTuple } - case 851: + case 854: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4266 +//line sql.y:4291 { yyVAL.valTuple = ValTuple{} } - case 852: + case 855: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4272 +//line sql.y:4297 { yyVAL.valTuple = ValTuple(yyDollar[2].exprs) } - case 853: + case 856: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4278 +//line sql.y:4303 { if len(yyDollar[1].valTuple) == 1 { yyVAL.expr = &ParenExpr{yyDollar[1].valTuple[0]} @@ -9941,432 +9973,432 @@ yydefault: yyVAL.expr = yyDollar[1].valTuple } } - case 854: + case 857: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4288 +//line sql.y:4313 { yyVAL.setExprs = SetExprs{yyDollar[1].setExpr} } - case 855: + case 858: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4292 +//line sql.y:4317 { yyVAL.setExprs = append(yyDollar[1].setExprs, yyDollar[3].setExpr) } - case 856: + case 859: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4298 +//line sql.y:4323 { yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colName, Expr: NewStrVal([]byte("on"))} } - case 857: + case 860: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4302 +//line sql.y:4327 { yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colName, Expr: NewStrVal([]byte("off"))} } - case 858: + case 861: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4306 +//line sql.y:4331 { yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colName, Expr: yyDollar[3].expr} } - case 859: + case 862: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4310 +//line sql.y:4335 { yyVAL.setExpr = &SetExpr{Name: NewColName(string(yyDollar[1].bytes)), Expr: yyDollar[2].expr} } - case 861: + case 864: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4317 +//line sql.y:4342 { yyVAL.bytes = []byte("charset") } - case 863: + case 866: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4324 +//line sql.y:4349 { yyVAL.expr = NewStrVal([]byte(yyDollar[1].colIdent.String())) } - case 864: + case 867: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4328 +//line sql.y:4353 { yyVAL.expr = NewStrVal(yyDollar[1].bytes) } - case 865: + case 868: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4332 +//line sql.y:4357 { yyVAL.expr = &Default{} } - case 868: + case 871: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4341 +//line sql.y:4366 { yyVAL.byt = 0 } - case 869: + case 872: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4343 +//line sql.y:4368 { yyVAL.byt = 1 } - case 870: + case 873: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4346 +//line sql.y:4371 { yyVAL.byt = 0 } - case 871: + case 874: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4348 +//line sql.y:4373 { yyVAL.byt = 1 } - case 872: + case 875: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4351 +//line sql.y:4376 { yyVAL.str = "" } - case 873: + case 876: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4353 +//line sql.y:4378 { yyVAL.str = IgnoreStr } - case 874: + case 877: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4356 +//line sql.y:4381 { yyVAL.sqlVal = nil } - case 875: + case 878: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4358 +//line sql.y:4383 { yyVAL.sqlVal = NewIntVal(yyDollar[2].bytes) } - case 876: + case 879: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4362 +//line sql.y:4387 { yyVAL.empty = struct{}{} } - case 877: + case 880: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4364 +//line sql.y:4389 { yyVAL.empty = struct{}{} } - case 878: + case 881: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4366 +//line sql.y:4391 { yyVAL.empty = struct{}{} } - case 879: + case 882: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4368 +//line sql.y:4393 { yyVAL.empty = struct{}{} } - case 880: + case 883: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4370 +//line sql.y:4395 { yyVAL.empty = struct{}{} } - case 881: + case 884: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4372 +//line sql.y:4397 { yyVAL.empty = struct{}{} } - case 882: + case 885: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4374 +//line sql.y:4399 { yyVAL.empty = struct{}{} } - case 883: + case 886: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4376 +//line sql.y:4401 { yyVAL.empty = struct{}{} } - case 884: + case 887: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4378 +//line sql.y:4403 { yyVAL.empty = struct{}{} } - case 885: + case 888: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4382 +//line sql.y:4407 { yyVAL.empty = struct{}{} } - case 886: + case 889: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4384 +//line sql.y:4409 { yyVAL.empty = struct{}{} } - case 887: + case 890: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4387 +//line sql.y:4412 { yyVAL.empty = struct{}{} } - case 888: + case 891: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4389 +//line sql.y:4414 { yyVAL.empty = struct{}{} } - case 889: + case 892: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4391 +//line sql.y:4416 { yyVAL.empty = struct{}{} } - case 890: + case 893: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4395 +//line sql.y:4420 { yyVAL.str = UniqueStr } - case 891: + case 894: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4397 +//line sql.y:4422 { yyVAL.str = FulltextStr } - case 892: + case 895: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4399 +//line sql.y:4424 { yyVAL.str = SpatialStr } - case 893: + case 896: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4402 +//line sql.y:4427 { yyVAL.str = "" } - case 894: + case 897: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4404 +//line sql.y:4429 { yyVAL.str = yyDollar[1].str } - case 895: + case 898: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4407 +//line sql.y:4432 { yyVAL.colIdent = ColIdent{} } - case 896: + case 899: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4409 +//line sql.y:4434 { yyVAL.colIdent = yyDollar[2].colIdent } - case 897: + case 900: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4413 +//line sql.y:4438 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 898: + case 901: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4417 +//line sql.y:4442 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 899: + case 902: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4423 +//line sql.y:4448 { yyVAL.colIdents = []ColIdent{yyDollar[1].colIdent} } - case 900: + case 903: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4427 +//line sql.y:4452 { yyVAL.colIdents = append(yyVAL.colIdents, yyDollar[3].colIdent) } - case 902: + case 905: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4434 +//line sql.y:4459 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 903: + case 906: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4440 +//line sql.y:4465 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } - case 904: + case 907: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4444 +//line sql.y:4469 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } - case 906: + case 909: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4451 +//line sql.y:4476 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } - case 907: + case 910: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4456 +//line sql.y:4481 { yyVAL.str = string("") } - case 908: + case 911: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4458 +//line sql.y:4483 { yyVAL.str = string(yyDollar[2].bytes) } - case 909: + case 912: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4461 +//line sql.y:4486 { yyVAL.boolVal = BoolVal(false) } - case 910: + case 913: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4463 +//line sql.y:4488 { yyVAL.boolVal = BoolVal(true) } - case 911: + case 914: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4466 +//line sql.y:4491 { yyVAL.EnclosedBy = nil } - case 912: + case 915: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:4470 +//line sql.y:4495 { yyVAL.EnclosedBy = &EnclosedBy{Optionally: yyDollar[1].boolVal, Delim: NewStrVal(yyDollar[4].bytes)} } - case 913: + case 916: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4475 +//line sql.y:4500 { yyVAL.boolVal = BoolVal(false) } - case 914: + case 917: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4479 +//line sql.y:4504 { yyVAL.boolVal = BoolVal(true) } - case 915: + case 918: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4484 +//line sql.y:4509 { yyVAL.sqlVal = nil } - case 916: + case 919: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4488 +//line sql.y:4513 { yyVAL.sqlVal = NewStrVal(yyDollar[3].bytes) } - case 917: + case 920: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4493 +//line sql.y:4518 { yyVAL.sqlVal = nil } - case 918: + case 921: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4497 +//line sql.y:4522 { yyVAL.sqlVal = NewStrVal(yyDollar[3].bytes) } - case 919: + case 922: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4502 +//line sql.y:4527 { yyVAL.Fields = nil } - case 920: + case 923: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:4506 +//line sql.y:4531 { yyVAL.Fields = &Fields{TerminatedBy: yyDollar[2].sqlVal, EnclosedBy: yyDollar[3].EnclosedBy, EscapedBy: yyDollar[4].sqlVal} } - case 921: + case 924: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4511 +//line sql.y:4536 { yyVAL.Lines = nil } - case 922: + case 925: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4515 +//line sql.y:4540 { yyVAL.Lines = &Lines{StartingBy: yyDollar[2].sqlVal, TerminatedBy: yyDollar[3].sqlVal} } - case 923: + case 926: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4520 +//line sql.y:4545 { yyVAL.sqlVal = nil } - case 924: + case 927: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4524 +//line sql.y:4549 { yyVAL.sqlVal = NewStrVal(yyDollar[3].bytes) } - case 1294: + case 1297: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4923 +//line sql.y:4948 { if incNesting(yylex) { yylex.Error("max nesting level reached") return 1 } } - case 1295: + case 1298: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4932 +//line sql.y:4957 { decNesting(yylex) } - case 1296: + case 1299: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4937 +//line sql.y:4962 { skipToEnd(yylex) } - case 1297: + case 1300: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4942 +//line sql.y:4967 { skipToEnd(yylex) } - case 1298: + case 1301: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4946 +//line sql.y:4971 { skipToEnd(yylex) } - case 1299: + case 1302: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4950 +//line sql.y:4975 { skipToEnd(yylex) } diff --git a/go/vt/sqlparser/sql.y b/go/vt/sqlparser/sql.y index 42177fa2ec5..b014a238311 100755 --- a/go/vt/sqlparser/sql.y +++ b/go/vt/sqlparser/sql.y @@ -63,6 +63,7 @@ func skipToEnd(yylex interface{}) { statement Statement selStmt SelectStatement ddl *DDL + ddls []*DDL ins *Insert byt byte bytes []byte @@ -275,7 +276,8 @@ func skipToEnd(yylex interface{}) { %type signal_condition_value %type trigger_time trigger_event %type alter_statement alter_table_statement alter_view_statement -%type create_table_prefix rename_list +%type create_table_prefix rename_list alter_table_statement_part +%type alter_table_statement_list %type analyze_statement show_statement use_statement other_statement %type describe_statement explain_statement explainable_statement %type begin_statement commit_statement rollback_statement start_transaction_statement load_statement @@ -2125,108 +2127,131 @@ alter_statement: | alter_view_statement alter_table_statement: - ALTER ignore_opt TABLE table_name non_add_drop_or_rename_operation skip_to_end + ALTER ignore_opt TABLE table_name alter_table_statement_list { - $$ = &DDL{Action: AlterStr, Table: $4} + for i := 0; i < len($5); i++ { + if $5[i].Action == RenameStr { + $5[i].FromTables = append(TableNames{$4}, $5[i].FromTables...) + } else { + $5[i].Table = $4 + } + } + $$ = &MultiAlterDDL{Table: $4, Statements: $5} + } + +alter_table_statement_list: + alter_table_statement_part + { + $$ = []*DDL{$1} + } +| alter_table_statement_list ',' alter_table_statement_part + { + $$ = append($$, $3) + } + +alter_table_statement_part: + non_add_drop_or_rename_operation skip_to_end + { + $$ = &DDL{Action: AlterStr} } -| ALTER ignore_opt TABLE table_name ADD column_opt '(' column_definition ')' skip_to_end +| ADD column_opt '(' column_definition ')' { - ddl := &DDL{Action: AlterStr, ColumnAction: AddStr, Table: $4, TableSpec: &TableSpec{}} - ddl.TableSpec.AddColumn($8) - ddl.Column = $8.Name + ddl := &DDL{Action: AlterStr, ColumnAction: AddStr, TableSpec: &TableSpec{}} + ddl.TableSpec.AddColumn($4) + ddl.Column = $4.Name $$ = ddl } -| ALTER ignore_opt TABLE table_name ADD column_opt column_definition column_order_opt skip_to_end +| ADD column_opt column_definition column_order_opt { - ddl := &DDL{Action: AlterStr, ColumnAction: AddStr, Table: $4, TableSpec: &TableSpec{}, ColumnOrder: $8} - ddl.TableSpec.AddColumn($7) - ddl.Column = $7.Name + ddl := &DDL{Action: AlterStr, ColumnAction: AddStr, TableSpec: &TableSpec{}, ColumnOrder: $4} + ddl.TableSpec.AddColumn($3) + ddl.Column = $3.Name $$ = ddl } -| ALTER ignore_opt TABLE table_name ADD ignored_alter_object_type skip_to_end +| ADD ignored_alter_object_type skip_to_end { - $$ = &DDL{Action: AlterStr, Table: $4} + $$ = &DDL{Action: AlterStr} } -| ALTER ignore_opt TABLE table_name DROP column_opt ID +| DROP column_opt ID { - $$ = &DDL{Action: AlterStr, ColumnAction: DropStr, Column: NewColIdent(string($7)), Table: $4} + $$ = &DDL{Action: AlterStr, ColumnAction: DropStr, Column: NewColIdent(string($3))} } -| ALTER ignore_opt TABLE table_name DROP ignored_alter_object_type skip_to_end +| DROP ignored_alter_object_type skip_to_end { - $$ = &DDL{Action: AlterStr, Table: $4} + $$ = &DDL{Action: AlterStr} } -| ALTER ignore_opt TABLE table_name RENAME COLUMN ID to_or_as ID +| RENAME COLUMN ID to_or_as ID { - $$ = &DDL{Action: AlterStr, ColumnAction: RenameStr, Table: $4, Column: NewColIdent(string($7)), ToColumn: NewColIdent(string($9))} + $$ = &DDL{Action: AlterStr, ColumnAction: RenameStr, Column: NewColIdent(string($3)), ToColumn: NewColIdent(string($5))} } -| ALTER ignore_opt TABLE table_name RENAME to_opt table_name +| RENAME to_opt table_name { // Change this to a rename statement - $$ = &DDL{Action: RenameStr, FromTables: TableNames{$4}, ToTables: TableNames{$7}} + $$ = &DDL{Action: RenameStr, ToTables: TableNames{$3}} } -| ALTER ignore_opt TABLE table_name ADD index_or_key name_opt using_opt '(' index_column_list ')' index_option_list_opt +| ADD index_or_key name_opt using_opt '(' index_column_list ')' index_option_list_opt { - $$ = &DDL{Action: AlterStr, Table: $4, IndexSpec: &IndexSpec{Action: CreateStr, ToName: NewColIdent($7), Using: $8, Columns: $10, Options: $12}} + $$ = &DDL{Action: AlterStr, IndexSpec: &IndexSpec{Action: CreateStr, ToName: NewColIdent($3), Using: $4, Columns: $6, Options: $8}} } -| ALTER ignore_opt TABLE table_name ADD constraint_symbol_opt key_type index_or_key_opt name_opt using_opt '(' index_column_list ')' index_option_list_opt +| ADD constraint_symbol_opt key_type index_or_key_opt name_opt using_opt '(' index_column_list ')' index_option_list_opt { - $$ = &DDL{Action: AlterStr, Table: $4, IndexSpec: &IndexSpec{Action: CreateStr, ToName: NewColIdent($9), Type: $7, Using: $10, Columns: $12, Options: $14}} + $$ = &DDL{Action: AlterStr, IndexSpec: &IndexSpec{Action: CreateStr, ToName: NewColIdent($5), Type: $3, Using: $6, Columns: $8, Options: $10}} } -| ALTER ignore_opt TABLE table_name DROP CONSTRAINT ID +| DROP CONSTRAINT ID { - $$ = &DDL{Action: AlterStr, ConstraintAction: DropStr, Table: $4, TableSpec: &TableSpec{Constraints: - []*ConstraintDefinition{&ConstraintDefinition{Name: string($7)}}}} + $$ = &DDL{Action: AlterStr, ConstraintAction: DropStr, TableSpec: &TableSpec{Constraints: + []*ConstraintDefinition{&ConstraintDefinition{Name: string($3)}}}} } -| ALTER ignore_opt TABLE table_name DROP CHECK ID +| DROP CHECK ID { - $$ = &DDL{Action: AlterStr, ConstraintAction: DropStr, Table: $4, TableSpec: &TableSpec{Constraints: - []*ConstraintDefinition{&ConstraintDefinition{Name: string($7), Details: &CheckConstraintDefinition{}}}}} + $$ = &DDL{Action: AlterStr, ConstraintAction: DropStr, TableSpec: &TableSpec{Constraints: + []*ConstraintDefinition{&ConstraintDefinition{Name: string($3), Details: &CheckConstraintDefinition{}}}}} } -| ALTER ignore_opt TABLE table_name DROP index_or_key sql_id +| DROP index_or_key sql_id { - $$ = &DDL{Action: AlterStr, Table: $4, IndexSpec: &IndexSpec{Action: DropStr, ToName: $7}} + $$ = &DDL{Action: AlterStr, IndexSpec: &IndexSpec{Action: DropStr, ToName: $3}} } -| ALTER ignore_opt TABLE table_name RENAME index_or_key sql_id TO sql_id +| RENAME index_or_key sql_id TO sql_id { - $$ = &DDL{Action: AlterStr, Table: $4, IndexSpec: &IndexSpec{Action: RenameStr, FromName: $7, ToName: $9}} + $$ = &DDL{Action: AlterStr, IndexSpec: &IndexSpec{Action: RenameStr, FromName: $3, ToName: $5}} } -| ALTER ignore_opt TABLE table_name MODIFY column_opt column_definition column_order_opt skip_to_end +| MODIFY column_opt column_definition column_order_opt { - ddl := &DDL{Action: AlterStr, ColumnAction: ModifyStr, Table: $4, TableSpec: &TableSpec{}, ColumnOrder: $8} - ddl.TableSpec.AddColumn($7) - ddl.Column = $7.Name + ddl := &DDL{Action: AlterStr, ColumnAction: ModifyStr, TableSpec: &TableSpec{}, ColumnOrder: $4} + ddl.TableSpec.AddColumn($3) + ddl.Column = $3.Name $$ = ddl } -| ALTER ignore_opt TABLE table_name CHANGE column_opt ID column_definition column_order_opt skip_to_end +| CHANGE column_opt ID column_definition column_order_opt { - ddl := &DDL{Action: AlterStr, ColumnAction: ChangeStr, Table: $4, TableSpec: &TableSpec{}, Column: NewColIdent(string($7)), ColumnOrder: $9} - ddl.TableSpec.AddColumn($8) + ddl := &DDL{Action: AlterStr, ColumnAction: ChangeStr, TableSpec: &TableSpec{}, Column: NewColIdent(string($3)), ColumnOrder: $5} + ddl.TableSpec.AddColumn($4) $$ = ddl } -| ALTER ignore_opt TABLE table_name partition_operation +| partition_operation { - $$ = &DDL{Action: AlterStr, Table: $4, PartitionSpec: $5} + $$ = &DDL{Action: AlterStr, PartitionSpec: $1} } -| ALTER ignore_opt TABLE table_name ADD constraint_definition +| ADD constraint_definition { - ddl := &DDL{Action: AlterStr, ConstraintAction: AddStr, Table: $4, TableSpec: &TableSpec{}} - ddl.TableSpec.AddConstraint($6) + ddl := &DDL{Action: AlterStr, ConstraintAction: AddStr, TableSpec: &TableSpec{}} + ddl.TableSpec.AddConstraint($2) $$ = ddl } -| ALTER ignore_opt TABLE table_name ADD check_constraint_definition +| ADD check_constraint_definition { - ddl := &DDL{Action: AlterStr, ConstraintAction: AddStr, Table: $4, TableSpec: &TableSpec{}} - ddl.TableSpec.AddConstraint($6) + ddl := &DDL{Action: AlterStr, ConstraintAction: AddStr, TableSpec: &TableSpec{}} + ddl.TableSpec.AddConstraint($2) $$ = ddl } -| ALTER ignore_opt TABLE table_name DROP FOREIGN KEY ID +| DROP FOREIGN KEY ID { - $$ = &DDL{Action: AlterStr, ConstraintAction: DropStr, Table: $4, TableSpec: &TableSpec{Constraints: - []*ConstraintDefinition{&ConstraintDefinition{Name: string($8), Details: &ForeignKeyDefinition{}}}}} + $$ = &DDL{Action: AlterStr, ConstraintAction: DropStr, TableSpec: &TableSpec{Constraints: + []*ConstraintDefinition{&ConstraintDefinition{Name: string($4), Details: &ForeignKeyDefinition{}}}}} } -| ALTER ignore_opt TABLE table_name AUTO_INCREMENT equal_opt expression +| AUTO_INCREMENT equal_opt expression { - $$ = &DDL{Action: AlterStr, Table: $4, AutoIncSpec: &AutoIncSpec{Value: $7}} + $$ = &DDL{Action: AlterStr, AutoIncSpec: &AutoIncSpec{Value: $3}} } column_order_opt: diff --git a/go/vt/sqlparser/sql_test.go b/go/vt/sqlparser/sql_test.go index eaa298b203b..fceb7f7e859 100644 --- a/go/vt/sqlparser/sql_test.go +++ b/go/vt/sqlparser/sql_test.go @@ -626,7 +626,12 @@ func TestAlterDropConstraint(t *testing.T) { res, err := Parse(test.statement) require.NoError(t, err) ddlRes, ok := res.(*DDL) - require.True(t, ok) + if !ok { + mAlterDDL, ok := res.(*MultiAlterDDL) + require.True(t, ok) + require.Len(t, mAlterDDL.Statements, 1) + ddlRes = mAlterDDL.Statements[0] + } require.NotNil(t, ddlRes.TableSpec) require.Equal(t, len(test.res), len(ddlRes.TableSpec.Constraints)) require.Equal(t, DropStr, ddlRes.ConstraintAction) @@ -651,7 +656,12 @@ func testIndex(t *testing.T, tests []testIndexStruct) { res, err := Parse(test.statement) require.NoError(t, err) ddlRes, ok := res.(*DDL) - require.True(t, ok) + if !ok { + mAlterDDL, ok := res.(*MultiAlterDDL) + require.True(t, ok) + require.Len(t, mAlterDDL.Statements, 1) + ddlRes = mAlterDDL.Statements[0] + } assert.Equal(t, AlterStr, ddlRes.Action) assert.Equal(t, test.resTable, ddlRes.Table) assert.Equal(t, test.res, ddlRes.IndexSpec) @@ -670,7 +680,12 @@ func testForeignKey(t *testing.T, tests []testForeignKeyStruct, expectedConstrai res, err := Parse(test.statement) require.NoError(t, err) ddlRes, ok := res.(*DDL) - require.True(t, ok) + if !ok { + mAlterDDL, ok := res.(*MultiAlterDDL) + require.True(t, ok) + require.Len(t, mAlterDDL.Statements, 1) + ddlRes = mAlterDDL.Statements[0] + } require.NotNil(t, ddlRes.TableSpec) require.Equal(t, len(test.res), len(ddlRes.TableSpec.Constraints)) require.Equal(t, expectedConstraintAction, ddlRes.ConstraintAction)