You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@quickstep.apache.org by zu...@apache.org on 2016/05/16 20:55:45 UTC

[08/46] incubator-quickstep git commit: Merge pull request #170 from pivotalsoftware/quickstep_date_support

http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/145990ef/parser/preprocessed/SqlParser_gen.cpp
----------------------------------------------------------------------
diff --git a/parser/preprocessed/SqlParser_gen.cpp b/parser/preprocessed/SqlParser_gen.cpp
index 32149a1..f2cb8ca 100644
--- a/parser/preprocessed/SqlParser_gen.cpp
+++ b/parser/preprocessed/SqlParser_gen.cpp
@@ -227,78 +227,84 @@ extern int quickstep_yydebug;
     TOKEN_CREATE = 297,
     TOKEN_DATE = 298,
     TOKEN_DATETIME = 299,
-    TOKEN_DECIMAL = 300,
-    TOKEN_DEFAULT = 301,
-    TOKEN_DELETE = 302,
-    TOKEN_DELIMITER = 303,
-    TOKEN_DESC = 304,
-    TOKEN_DISTINCT = 305,
-    TOKEN_DOUBLE = 306,
-    TOKEN_DROP = 307,
-    TOKEN_ELSE = 308,
-    TOKEN_END = 309,
-    TOKEN_ESCAPE_STRINGS = 310,
-    TOKEN_EXISTS = 311,
-    TOKEN_EXTRACT = 312,
-    TOKEN_FALSE = 313,
-    TOKEN_FIRST = 314,
-    TOKEN_FLOAT = 315,
-    TOKEN_FOREIGN = 316,
-    TOKEN_FROM = 317,
-    TOKEN_FULL = 318,
-    TOKEN_GROUP = 319,
-    TOKEN_HASH = 320,
-    TOKEN_HAVING = 321,
-    TOKEN_IN = 322,
-    TOKEN_INDEX = 323,
-    TOKEN_INNER = 324,
-    TOKEN_INSERT = 325,
-    TOKEN_INTEGER = 326,
-    TOKEN_INTERVAL = 327,
-    TOKEN_INTO = 328,
-    TOKEN_JOIN = 329,
-    TOKEN_KEY = 330,
-    TOKEN_LAST = 331,
-    TOKEN_LEFT = 332,
-    TOKEN_LIMIT = 333,
-    TOKEN_LONG = 334,
-    TOKEN_NULL = 335,
-    TOKEN_NULLS = 336,
-    TOKEN_OFF = 337,
-    TOKEN_ON = 338,
-    TOKEN_ORDER = 339,
-    TOKEN_OUTER = 340,
-    TOKEN_PARTITION = 341,
-    TOKEN_PARTITIONS = 342,
-    TOKEN_PERCENT = 343,
-    TOKEN_PRIMARY = 344,
-    TOKEN_QUIT = 345,
-    TOKEN_RANGE = 346,
-    TOKEN_REAL = 347,
-    TOKEN_REFERENCES = 348,
-    TOKEN_RIGHT = 349,
-    TOKEN_ROW_DELIMITER = 350,
-    TOKEN_SELECT = 351,
-    TOKEN_SET = 352,
-    TOKEN_SMA = 353,
-    TOKEN_SMALLINT = 354,
-    TOKEN_TABLE = 355,
-    TOKEN_THEN = 356,
-    TOKEN_TIME = 357,
-    TOKEN_TIMESTAMP = 358,
-    TOKEN_TRUE = 359,
-    TOKEN_TUPLESAMPLE = 360,
-    TOKEN_UNIQUE = 361,
-    TOKEN_UPDATE = 362,
-    TOKEN_USING = 363,
-    TOKEN_VALUES = 364,
-    TOKEN_VARCHAR = 365,
-    TOKEN_WHEN = 366,
-    TOKEN_WHERE = 367,
-    TOKEN_WITH = 368,
-    TOKEN_YEARMONTH = 369,
-    TOKEN_EOF = 370,
-    TOKEN_LEX_ERROR = 371
+    TOKEN_DAY = 300,
+    TOKEN_DECIMAL = 301,
+    TOKEN_DEFAULT = 302,
+    TOKEN_DELETE = 303,
+    TOKEN_DELIMITER = 304,
+    TOKEN_DESC = 305,
+    TOKEN_DISTINCT = 306,
+    TOKEN_DOUBLE = 307,
+    TOKEN_DROP = 308,
+    TOKEN_ELSE = 309,
+    TOKEN_END = 310,
+    TOKEN_ESCAPE_STRINGS = 311,
+    TOKEN_EXISTS = 312,
+    TOKEN_EXTRACT = 313,
+    TOKEN_FALSE = 314,
+    TOKEN_FIRST = 315,
+    TOKEN_FLOAT = 316,
+    TOKEN_FOREIGN = 317,
+    TOKEN_FROM = 318,
+    TOKEN_FULL = 319,
+    TOKEN_GROUP = 320,
+    TOKEN_HASH = 321,
+    TOKEN_HAVING = 322,
+    TOKEN_HOUR = 323,
+    TOKEN_IN = 324,
+    TOKEN_INDEX = 325,
+    TOKEN_INNER = 326,
+    TOKEN_INSERT = 327,
+    TOKEN_INTEGER = 328,
+    TOKEN_INTERVAL = 329,
+    TOKEN_INTO = 330,
+    TOKEN_JOIN = 331,
+    TOKEN_KEY = 332,
+    TOKEN_LAST = 333,
+    TOKEN_LEFT = 334,
+    TOKEN_LIMIT = 335,
+    TOKEN_LONG = 336,
+    TOKEN_MINUTE = 337,
+    TOKEN_MONTH = 338,
+    TOKEN_NULL = 339,
+    TOKEN_NULLS = 340,
+    TOKEN_OFF = 341,
+    TOKEN_ON = 342,
+    TOKEN_ORDER = 343,
+    TOKEN_OUTER = 344,
+    TOKEN_PARTITION = 345,
+    TOKEN_PARTITIONS = 346,
+    TOKEN_PERCENT = 347,
+    TOKEN_PRIMARY = 348,
+    TOKEN_QUIT = 349,
+    TOKEN_RANGE = 350,
+    TOKEN_REAL = 351,
+    TOKEN_REFERENCES = 352,
+    TOKEN_RIGHT = 353,
+    TOKEN_ROW_DELIMITER = 354,
+    TOKEN_SECOND = 355,
+    TOKEN_SELECT = 356,
+    TOKEN_SET = 357,
+    TOKEN_SMA = 358,
+    TOKEN_SMALLINT = 359,
+    TOKEN_TABLE = 360,
+    TOKEN_THEN = 361,
+    TOKEN_TIME = 362,
+    TOKEN_TIMESTAMP = 363,
+    TOKEN_TRUE = 364,
+    TOKEN_TUPLESAMPLE = 365,
+    TOKEN_UNIQUE = 366,
+    TOKEN_UPDATE = 367,
+    TOKEN_USING = 368,
+    TOKEN_VALUES = 369,
+    TOKEN_VARCHAR = 370,
+    TOKEN_WHEN = 371,
+    TOKEN_WHERE = 372,
+    TOKEN_WITH = 373,
+    TOKEN_YEAR = 374,
+    TOKEN_YEARMONTH = 375,
+    TOKEN_EOF = 376,
+    TOKEN_LEX_ERROR = 377
   };
 #endif
 
@@ -390,7 +396,7 @@ union YYSTYPE
   quickstep::ParseOrderBy *opt_order_by_clause_;
   bool *order_direction_;
   quickstep::ParseLimit *opt_limit_clause_;
-  
+
   quickstep::ParseSample *opt_sample_clause_;
 
   quickstep::PtrList<quickstep::ParseOrderByItem> *order_commalist_;
@@ -399,7 +405,7 @@ union YYSTYPE
   quickstep::PtrVector<quickstep::ParseSubqueryTableReference> *with_list_;
   quickstep::ParseSubqueryTableReference *with_list_element_;
 
-#line 403 "SqlParser_gen.cpp" /* yacc.c:355  */
+#line 409 "SqlParser_gen.cpp" /* yacc.c:355  */
 };
 
 typedef union YYSTYPE YYSTYPE;
@@ -434,7 +440,7 @@ int quickstep_yyparse (yyscan_t yyscanner, quickstep::ParseStatement **parsedSta
 #include "SqlLexer_gen.hpp"
 void NotSupported(const YYLTYPE *location, yyscan_t yyscanner, const std::string &feature);
 
-#line 438 "SqlParser_gen.cpp" /* yacc.c:358  */
+#line 444 "SqlParser_gen.cpp" /* yacc.c:358  */
 
 #ifdef short
 # undef short
@@ -678,21 +684,21 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  47
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   1072
+#define YYLAST   1191
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  128
+#define YYNTOKENS  134
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  94
+#define YYNNTS  95
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  255
+#define YYNRULES  262
 /* YYNSTATES -- Number of states.  */
-#define YYNSTATES  471
+#define YYNSTATES  478
 
 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
    by yylex, with out-of-bounds checking.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   371
+#define YYMAXUTOK   377
 
 #define YYTRANSLATE(YYX)                                                \
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -702,11 +708,11 @@ union yyalloc
 static const yytype_uint8 yytranslate[] =
 {
        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     123,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     129,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,   127,     2,     2,
-     124,   125,    23,    21,   126,    22,    27,    24,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,   122,
+       2,     2,     2,     2,     2,     2,     2,   133,     2,     2,
+     130,   131,    23,    21,   132,    22,    27,    24,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,   128,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -738,39 +744,40 @@ static const yytype_uint8 yytranslate[] =
       90,    91,    92,    93,    94,    95,    96,    97,    98,    99,
      100,   101,   102,   103,   104,   105,   106,   107,   108,   109,
      110,   111,   112,   113,   114,   115,   116,   117,   118,   119,
-     120,   121
+     120,   121,   122,   123,   124,   125,   126,   127
 };
 
 #if YYDEBUG
   /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,   575,   575,   579,   583,   587,   591,   594,   601,   604,
-     607,   610,   613,   616,   619,   622,   625,   628,   634,   640,
-     647,   653,   660,   669,   674,   683,   688,   693,   697,   703,
-     708,   711,   714,   719,   722,   725,   728,   731,   734,   737,
-     740,   743,   746,   758,   761,   764,   782,   802,   805,   808,
-     813,   818,   824,   830,   839,   843,   849,   852,   857,   862,
-     867,   874,   881,   885,   891,   894,   899,   902,   907,   910,
-     915,   918,   937,   941,   947,   951,   957,   960,   963,   968,
-     971,   978,   983,   994,   999,  1003,  1007,  1013,  1016,  1022,
-    1030,  1033,  1036,  1042,  1047,  1050,  1055,  1059,  1063,  1067,
-    1073,  1078,  1083,  1087,  1093,  1099,  1102,  1107,  1112,  1116,
-    1122,  1128,  1134,  1137,  1141,  1147,  1150,  1155,  1159,  1165,
-    1168,  1171,  1176,  1181,  1186,  1189,  1192,  1197,  1200,  1203,
-    1206,  1209,  1212,  1215,  1218,  1223,  1226,  1231,  1235,  1239,
-    1242,  1246,  1249,  1254,  1257,  1262,  1265,  1270,  1274,  1280,
-    1283,  1288,  1291,  1296,  1299,  1304,  1307,  1326,  1330,  1336,
-    1343,  1346,  1349,  1354,  1357,  1360,  1366,  1369,  1374,  1379,
-    1388,  1393,  1402,  1407,  1410,  1415,  1418,  1423,  1429,  1435,
-    1438,  1441,  1444,  1447,  1450,  1456,  1465,  1468,  1473,  1476,
-    1481,  1484,  1489,  1492,  1495,  1498,  1501,  1504,  1507,  1512,
-    1516,  1520,  1523,  1528,  1533,  1536,  1541,  1545,  1551,  1556,
-    1560,  1566,  1571,  1574,  1579,  1583,  1589,  1592,  1595,  1598,
-    1610,  1614,  1633,  1648,  1652,  1658,  1661,  1666,  1670,  1677,
-    1680,  1683,  1686,  1689,  1692,  1695,  1698,  1701,  1704,  1709,
-    1720,  1723,  1728,  1731,  1734,  1740,  1744,  1750,  1753,  1761,
-    1764,  1767,  1770,  1776,  1781,  1786
+       0,   582,   582,   586,   590,   594,   598,   601,   608,   611,
+     614,   617,   620,   623,   626,   629,   632,   635,   641,   647,
+     654,   660,   667,   676,   681,   690,   695,   700,   704,   710,
+     715,   718,   721,   726,   729,   732,   735,   738,   741,   744,
+     747,   750,   753,   765,   768,   771,   789,   809,   812,   815,
+     820,   825,   831,   837,   846,   850,   856,   859,   864,   869,
+     874,   881,   888,   892,   898,   901,   906,   909,   914,   917,
+     922,   925,   944,   948,   954,   958,   964,   967,   970,   975,
+     978,   985,   990,  1001,  1006,  1010,  1014,  1020,  1023,  1029,
+    1037,  1040,  1043,  1049,  1054,  1057,  1062,  1066,  1070,  1074,
+    1080,  1085,  1090,  1094,  1100,  1106,  1109,  1114,  1119,  1123,
+    1129,  1135,  1141,  1144,  1148,  1154,  1157,  1162,  1166,  1172,
+    1175,  1178,  1183,  1188,  1193,  1196,  1199,  1204,  1207,  1210,
+    1213,  1216,  1219,  1222,  1225,  1230,  1233,  1238,  1242,  1246,
+    1249,  1253,  1256,  1261,  1264,  1269,  1272,  1277,  1281,  1287,
+    1290,  1295,  1298,  1303,  1306,  1311,  1314,  1333,  1337,  1343,
+    1350,  1353,  1356,  1361,  1364,  1367,  1373,  1376,  1381,  1386,
+    1395,  1400,  1409,  1414,  1417,  1422,  1425,  1430,  1436,  1442,
+    1445,  1448,  1451,  1454,  1457,  1463,  1472,  1475,  1480,  1483,
+    1488,  1491,  1496,  1499,  1502,  1505,  1508,  1511,  1514,  1519,
+    1523,  1527,  1530,  1535,  1540,  1543,  1548,  1552,  1558,  1563,
+    1567,  1573,  1578,  1581,  1586,  1590,  1596,  1599,  1602,  1605,
+    1617,  1621,  1640,  1653,  1668,  1671,  1674,  1677,  1680,  1683,
+    1688,  1692,  1698,  1701,  1706,  1710,  1717,  1720,  1723,  1726,
+    1729,  1732,  1735,  1738,  1741,  1744,  1749,  1760,  1763,  1768,
+    1771,  1774,  1780,  1784,  1790,  1793,  1801,  1804,  1807,  1810,
+    1816,  1821,  1826
 };
 #endif
 
@@ -790,26 +797,27 @@ static const char *const yytname[] =
   "TOKEN_BLOCKSAMPLE", "TOKEN_BLOOM_FILTER", "TOKEN_CSB_TREE", "TOKEN_BY",
   "TOKEN_CASE", "TOKEN_CHARACTER", "TOKEN_CHECK", "TOKEN_COLUMN",
   "TOKEN_CONSTRAINT", "TOKEN_COPY", "TOKEN_CREATE", "TOKEN_DATE",
-  "TOKEN_DATETIME", "TOKEN_DECIMAL", "TOKEN_DEFAULT", "TOKEN_DELETE",
-  "TOKEN_DELIMITER", "TOKEN_DESC", "TOKEN_DISTINCT", "TOKEN_DOUBLE",
-  "TOKEN_DROP", "TOKEN_ELSE", "TOKEN_END", "TOKEN_ESCAPE_STRINGS",
-  "TOKEN_EXISTS", "TOKEN_EXTRACT", "TOKEN_FALSE", "TOKEN_FIRST",
-  "TOKEN_FLOAT", "TOKEN_FOREIGN", "TOKEN_FROM", "TOKEN_FULL",
-  "TOKEN_GROUP", "TOKEN_HASH", "TOKEN_HAVING", "TOKEN_IN", "TOKEN_INDEX",
-  "TOKEN_INNER", "TOKEN_INSERT", "TOKEN_INTEGER", "TOKEN_INTERVAL",
-  "TOKEN_INTO", "TOKEN_JOIN", "TOKEN_KEY", "TOKEN_LAST", "TOKEN_LEFT",
-  "TOKEN_LIMIT", "TOKEN_LONG", "TOKEN_NULL", "TOKEN_NULLS", "TOKEN_OFF",
+  "TOKEN_DATETIME", "TOKEN_DAY", "TOKEN_DECIMAL", "TOKEN_DEFAULT",
+  "TOKEN_DELETE", "TOKEN_DELIMITER", "TOKEN_DESC", "TOKEN_DISTINCT",
+  "TOKEN_DOUBLE", "TOKEN_DROP", "TOKEN_ELSE", "TOKEN_END",
+  "TOKEN_ESCAPE_STRINGS", "TOKEN_EXISTS", "TOKEN_EXTRACT", "TOKEN_FALSE",
+  "TOKEN_FIRST", "TOKEN_FLOAT", "TOKEN_FOREIGN", "TOKEN_FROM",
+  "TOKEN_FULL", "TOKEN_GROUP", "TOKEN_HASH", "TOKEN_HAVING", "TOKEN_HOUR",
+  "TOKEN_IN", "TOKEN_INDEX", "TOKEN_INNER", "TOKEN_INSERT",
+  "TOKEN_INTEGER", "TOKEN_INTERVAL", "TOKEN_INTO", "TOKEN_JOIN",
+  "TOKEN_KEY", "TOKEN_LAST", "TOKEN_LEFT", "TOKEN_LIMIT", "TOKEN_LONG",
+  "TOKEN_MINUTE", "TOKEN_MONTH", "TOKEN_NULL", "TOKEN_NULLS", "TOKEN_OFF",
   "TOKEN_ON", "TOKEN_ORDER", "TOKEN_OUTER", "TOKEN_PARTITION",
   "TOKEN_PARTITIONS", "TOKEN_PERCENT", "TOKEN_PRIMARY", "TOKEN_QUIT",
   "TOKEN_RANGE", "TOKEN_REAL", "TOKEN_REFERENCES", "TOKEN_RIGHT",
-  "TOKEN_ROW_DELIMITER", "TOKEN_SELECT", "TOKEN_SET", "TOKEN_SMA",
-  "TOKEN_SMALLINT", "TOKEN_TABLE", "TOKEN_THEN", "TOKEN_TIME",
+  "TOKEN_ROW_DELIMITER", "TOKEN_SECOND", "TOKEN_SELECT", "TOKEN_SET",
+  "TOKEN_SMA", "TOKEN_SMALLINT", "TOKEN_TABLE", "TOKEN_THEN", "TOKEN_TIME",
   "TOKEN_TIMESTAMP", "TOKEN_TRUE", "TOKEN_TUPLESAMPLE", "TOKEN_UNIQUE",
   "TOKEN_UPDATE", "TOKEN_USING", "TOKEN_VALUES", "TOKEN_VARCHAR",
-  "TOKEN_WHEN", "TOKEN_WHERE", "TOKEN_WITH", "TOKEN_YEARMONTH",
-  "TOKEN_EOF", "TOKEN_LEX_ERROR", "';'", "'\\n'", "'('", "')'", "','",
-  "'%'", "$accept", "start", "sql_statement", "quit_statement",
-  "alter_table_statement", "create_table_statement",
+  "TOKEN_WHEN", "TOKEN_WHERE", "TOKEN_WITH", "TOKEN_YEAR",
+  "TOKEN_YEARMONTH", "TOKEN_EOF", "TOKEN_LEX_ERROR", "';'", "'\\n'", "'('",
+  "')'", "','", "'%'", "$accept", "start", "sql_statement",
+  "quit_statement", "alter_table_statement", "create_table_statement",
   "create_index_statement", "drop_table_statement", "column_def",
   "column_def_commalist", "data_type", "column_constraint_def",
   "column_constraint_def_list", "opt_column_constraint_def_list",
@@ -835,10 +843,11 @@ static const char *const yytname[] =
   "extract_function", "case_expression", "simple_when_clause_list",
   "simple_when_clause", "searched_when_clause_list",
   "searched_when_clause", "opt_else_clause", "expression_list",
-  "literal_value", "literal_value_commalist", "attribute_ref",
-  "attribute_ref_list", "comparison_operation", "unary_operation",
-  "add_operation", "multiply_operation", "name_commalist", "any_name",
-  "boolean_value", "command", "command_argument_list", YY_NULLPTR
+  "literal_value", "datetime_unit", "literal_value_commalist",
+  "attribute_ref", "attribute_ref_list", "comparison_operation",
+  "unary_operation", "add_operation", "multiply_operation",
+  "name_commalist", "any_name", "boolean_value", "command",
+  "command_argument_list", YY_NULLPTR
 };
 #endif
 
@@ -859,14 +868,15 @@ static const yytype_uint16 yytoknum[] =
      340,   341,   342,   343,   344,   345,   346,   347,   348,   349,
      350,   351,   352,   353,   354,   355,   356,   357,   358,   359,
      360,   361,   362,   363,   364,   365,   366,   367,   368,   369,
-     370,   371,    59,    10,    40,    41,    44,    37
+     370,   371,   372,   373,   374,   375,   376,   377,    59,    10,
+      40,    41,    44,    37
 };
 # endif
 
-#define YYPACT_NINF -216
+#define YYPACT_NINF -223
 
 #define yypact_value_is_default(Yystate) \
-  (!!((Yystate) == (-216)))
+  (!!((Yystate) == (-223)))
 
 #define YYTABLE_NINF -128
 
@@ -877,139 +887,139 @@ static const yytype_uint16 yytoknum[] =
      STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
-     198,  -216,  -216,   -46,   175,   -19,    46,   -27,    20,  -216,
-      32,   175,   175,  -216,    88,   127,  -216,  -216,  -216,  -216,
-    -216,  -216,  -216,  -216,  -216,  -216,    -8,  -216,   115,   114,
-     175,  -216,  -216,    54,   175,   175,   175,   175,   175,  -216,
-    -216,   527,    52,    34,  -216,   135,    67,  -216,  -216,  -216,
-     191,  -216,  -216,  -216,  -216,    37,   197,   117,   152,   180,
-    -216,    86,  -216,  -216,   293,   294,  -216,  -216,  -216,   560,
-     188,  -216,   236,  -216,  -216,   202,  -216,  -216,   312,  -216,
-    -216,  -216,  -216,  -216,  -216,   212,   260,   648,   334,   274,
-     214,  -216,  -216,   164,    -1,  -216,  -216,  -216,  -216,  -216,
-    -216,  -216,   769,    23,   175,   175,   224,   175,   175,    28,
-     171,   233,   175,   175,   439,  -216,  -216,   228,   175,  -216,
-    -216,  -216,   439,    27,   -17,  -216,   346,  -216,   175,  -216,
-     347,  -216,   231,     7,  -216,    15,   180,   802,  -216,  -216,
-     175,   802,  -216,  -216,  -216,  -216,   802,   294,  -216,   175,
-     273,    56,  -216,   348,  -216,   272,  -216,   101,  -216,   272,
-     175,   118,   175,   175,   250,  -216,   251,  -216,   111,   885,
-     681,   224,   406,   370,   374,  -216,  -216,  1000,   359,   890,
-     131,    17,   802,   -11,  -216,   802,  -216,   325,   261,   318,
-     262,  -216,  -216,    40,    75,   124,  -216,   263,    75,   -13,
-     321,  -216,  -216,    -1,  -216,  -216,   266,   802,  -216,   219,
-     133,   175,  -216,   802,  -216,   175,  -216,  -216,   269,   315,
-     316,   275,  -216,  -216,  -216,   144,   175,   287,   118,   175,
-    -216,    82,  -216,  -216,    -3,   350,   439,   439,    58,  -216,
-    -216,  -216,  -216,  -216,  -216,  -216,  -216,   802,   278,   802,
-      25,  -216,   137,   289,   802,    47,  -216,   345,   219,  -216,
-    -216,   802,  -216,    89,   175,  -216,  -216,   317,  -216,   319,
-     324,   326,    15,  -216,   399,   401,    75,   375,   352,  -216,
-     139,  -216,   802,  -216,   219,  -216,   439,   300,   301,   175,
-     412,     3,   141,  -216,   145,   391,    45,  -216,   303,   308,
-    -216,   349,   306,   890,  -216,   351,   175,  -216,  -216,    82,
-    -216,  -216,   374,  -216,  -216,  -216,   802,   313,   187,   648,
-    -216,   219,   356,  -216,  -216,   890,   327,   219,   802,  -216,
-      21,  -216,  -216,  -216,  -216,  -216,    15,   124,   339,   343,
-    -216,   802,   439,   353,  -216,   219,    12,   175,   175,   149,
-    -216,  -216,  -216,  -216,  -216,  -216,  -216,   193,  -216,   175,
-    -216,  -216,  -216,  -216,   328,   118,   414,   367,  -216,   439,
-    -216,  -216,   335,  -216,   221,   648,  -216,   802,   156,  -216,
-    -216,   890,   219,  -216,   376,  -216,  -216,   337,   370,   425,
-     383,  -216,   158,   162,  -216,   464,     3,  -216,   175,  -216,
-    -216,   354,   430,  -216,    19,   175,   802,   166,   219,  -216,
-     179,   439,   802,   467,  -216,   378,  -216,  -216,  -216,   183,
-    -216,  -216,  -216,  -216,    11,   175,   -14,  -216,   360,   219,
-    -216,  -216,   370,   358,  -216,    31,  -216,   175,  -216,   175,
-    -216,  -216,   175,  -216,   194,  -216,  -216,   355,  -216,   802,
-    -216,  -216,   400,   368,  -216,   199,  -216,   175,  -216,    38,
-    -216,   175,  -216,   205,  -216,  -216,   208,   385,  -216,   486,
-    -216
+     921,  -223,  -223,   -82,   231,   -14,    56,    22,    74,  -223,
+      70,   231,   231,  -223,   135,   120,  -223,  -223,  -223,  -223,
+    -223,  -223,  -223,  -223,  -223,  -223,   -35,  -223,   -73,   177,
+     231,  -223,  -223,   121,   231,   231,   231,   231,   231,  -223,
+    -223,   576,    85,    63,  -223,   173,    77,  -223,  -223,  -223,
+     140,  -223,  -223,  -223,  -223,    18,   218,   144,    97,   119,
+    -223,     4,  -223,  -223,   240,   245,  -223,  -223,  -223,   642,
+     134,  -223,   187,  -223,  -223,   146,  -223,  -223,   265,  -223,
+    -223,  -223,  -223,  -223,  -223,   164,   203,   708,   290,   230,
+     176,  -223,  -223,   256,    20,  -223,  -223,  -223,  -223,  -223,
+    -223,  -223,   840,   -11,   231,   231,   182,   231,   231,   167,
+     206,   204,   231,   231,   483,  -223,  -223,   205,   231,  -223,
+    -223,  -223,   483,    47,   -10,  -223,   329,  -223,   129,   129,
+     330,  -223,   207,    26,  -223,    32,   119,   906,  -223,  -223,
+     231,   906,  -223,  -223,  -223,  -223,   906,   245,  -223,   231,
+     324,   -70,  -223,   331,  -223,   234,  -223,   125,  -223,   234,
+     231,    49,   231,   231,   211,  -223,   213,  -223,   137,   991,
+     774,   182,   390,   336,   339,  -223,  -223,  1117,   335,  1001,
+     142,    10,   906,    -9,  -223,   906,  -223,   296,   228,  -223,
+    -223,  -223,  -223,  -223,  -223,   292,  -223,   232,  -223,  -223,
+      21,   163,   122,  -223,   229,   163,   -13,   294,  -223,  -223,
+      20,  -223,  -223,   236,   906,  -223,   259,   152,   231,  -223,
+     906,  -223,   231,  -223,  -223,   238,   287,   288,   241,  -223,
+    -223,  -223,    61,   231,   258,    49,   231,  -223,   156,  -223,
+    -223,    -6,    69,   483,   483,    55,  -223,  -223,  -223,  -223,
+    -223,  -223,  -223,  -223,   906,   244,   906,     5,  -223,   154,
+     260,   906,    37,  -223,   317,   259,  -223,  -223,   906,  -223,
+     102,   231,  -223,  -223,   284,  -223,   291,   297,   301,    32,
+    -223,   377,   379,   163,   348,   320,  -223,   157,  -223,   906,
+    -223,   259,  -223,   483,   263,   268,   231,   394,   151,   159,
+    -223,   168,   378,    25,  -223,   272,   283,  -223,   318,   279,
+    1001,  -223,   332,   231,  -223,  -223,   156,  -223,  -223,   339,
+    -223,  -223,  -223,   906,   285,   161,   708,  -223,   259,   327,
+    -223,  -223,  1001,   289,   259,   906,  -223,    33,  -223,  -223,
+    -223,  -223,  -223,    32,   122,   321,   323,  -223,   906,   483,
+     328,  -223,   259,    13,   231,   231,   170,  -223,  -223,  -223,
+    -223,  -223,  -223,  -223,    76,  -223,   231,  -223,  -223,  -223,
+    -223,   299,    49,   381,   340,  -223,   483,  -223,  -223,   300,
+    -223,   200,   708,  -223,   906,   172,  -223,  -223,  1001,   259,
+    -223,   342,  -223,  -223,   311,   336,   382,   361,  -223,   175,
+     179,  -223,   443,   151,  -223,   231,  -223,  -223,   333,   410,
+    -223,    29,   231,   906,   183,   259,  -223,   185,   483,   906,
+     444,  -223,   355,  -223,  -223,  -223,   188,  -223,  -223,  -223,
+    -223,    16,   231,    -5,  -223,   334,   259,  -223,  -223,   336,
+     326,  -223,   155,  -223,   231,  -223,   231,  -223,  -223,   231,
+    -223,   190,  -223,  -223,   337,  -223,   906,  -223,  -223,   369,
+     341,  -223,   192,  -223,   231,  -223,   110,  -223,   231,  -223,
+     194,  -223,  -223,   201,   365,  -223,   455,  -223
 };
 
   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
      Performed when YYTABLE does not specify something else to do.  Zero
      means the default is an error.  */
-static const yytype_uint8 yydefact[] =
+static const yytype_uint16 yydefact[] =
 {
-       0,     6,   255,     0,     0,     0,     0,     0,     0,    18,
+       0,     6,   262,     0,     0,     0,     0,     0,     0,    18,
      112,     0,     0,     7,     0,     0,    15,     8,    10,    11,
-      13,    14,     9,    17,    12,    16,     0,   105,     0,   253,
-       0,   247,   248,     0,     0,     0,     0,     0,     0,   113,
+      13,    14,     9,    17,    12,    16,     0,   105,     0,   260,
+       0,   254,   255,     0,     0,     0,     0,     0,     0,   113,
      114,     0,     0,   107,   108,     0,   145,     1,     3,     2,
-       0,   106,     5,     4,   254,     0,     0,     0,     0,   166,
-      25,     0,   220,   217,     0,   239,   115,    40,    29,     0,
+       0,   106,     5,     4,   261,     0,     0,     0,     0,   166,
+      25,     0,   220,   217,     0,   246,   115,    40,    29,     0,
        0,    30,    31,    34,    36,     0,    37,    39,     0,    41,
      216,    35,    38,    32,    33,     0,     0,     0,     0,     0,
      116,   117,   198,   121,   187,   189,   191,   194,   195,   196,
-     193,   192,     0,   225,     0,     0,     0,     0,     0,     0,
+     193,   192,     0,   232,     0,     0,     0,     0,     0,     0,
        0,    94,     0,     0,     0,   101,   167,     0,     0,    91,
      218,   219,     0,     0,   212,   209,     0,    43,     0,   221,
-       0,    44,     0,     0,   222,     0,   166,     0,   240,   241,
-       0,     0,   120,   243,   244,   242,     0,     0,   190,     0,
-       0,   166,   103,     0,   109,     0,   110,     0,   245,     0,
+       0,    44,     0,     0,   223,     0,   166,     0,   247,   248,
+       0,     0,   120,   250,   251,   249,     0,     0,   190,     0,
+       0,   166,   103,     0,   109,     0,   110,     0,   252,     0,
        0,     0,     0,     0,     0,    93,    66,    27,     0,     0,
        0,     0,     0,   168,   170,   172,   174,     0,   192,     0,
-       0,     0,     0,   212,   206,     0,   210,     0,     0,     0,
-       0,   123,   197,     0,     0,   147,   136,   122,   141,   124,
-     149,   118,   119,   186,   188,   226,     0,     0,   199,   214,
-       0,     0,   100,     0,   146,     0,    92,    19,     0,     0,
-       0,     0,    20,    21,    22,     0,     0,     0,    64,     0,
-      42,    56,   173,   181,     0,     0,     0,     0,     0,   229,
-     231,   232,   233,   234,   230,   235,   237,     0,     0,     0,
-       0,   223,     0,     0,     0,     0,   207,     0,   213,   205,
-      45,     0,    46,   127,     0,   137,   143,   133,   128,   129,
-     131,     0,     0,   140,     0,     0,   139,     0,   151,   200,
-       0,   201,     0,   102,   104,   246,     0,     0,     0,     0,
-       0,     0,     0,   227,     0,   225,     0,    63,    65,    68,
-      28,     0,     0,     0,    47,     0,     0,    49,    55,    57,
-      26,   180,   169,   171,   236,   238,     0,     0,     0,     0,
-     182,   179,     0,   178,    90,     0,     0,   211,     0,   204,
-       0,   142,   144,   134,   130,   132,     0,   148,     0,     0,
-     138,     0,     0,   153,   202,   215,     0,     0,     0,     0,
-      96,   251,   252,   250,   249,    97,    95,     0,    67,     0,
-      83,    84,    85,    86,    87,     0,     0,    70,    48,     0,
-      51,    50,     0,    54,     0,     0,   184,     0,     0,   177,
-     224,     0,   208,   203,     0,   125,   126,   150,   152,     0,
-     155,    61,     0,     0,    58,     0,     0,   228,     0,    24,
-      62,     0,     0,    23,     0,     0,     0,     0,   175,   183,
-       0,     0,     0,     0,   111,     0,    59,    98,    99,     0,
-      74,    76,    77,    78,     0,     0,     0,    52,     0,   176,
-     185,    89,   135,   154,   157,   160,   156,     0,    88,     0,
-      82,    80,     0,    79,     0,    72,    73,     0,    53,     0,
-     161,   162,   163,     0,    75,     0,    69,     0,   158,     0,
-     159,     0,    81,     0,   164,   165,     0,     0,    60,     0,
-      71
+       0,     0,     0,   212,   206,     0,   210,     0,     0,   226,
+     227,   228,   225,   229,   224,     0,   222,     0,   123,   197,
+       0,     0,   147,   136,   122,   141,   124,   149,   118,   119,
+     186,   188,   233,     0,     0,   199,   214,     0,     0,   100,
+       0,   146,     0,    92,    19,     0,     0,     0,     0,    20,
+      21,    22,     0,     0,     0,    64,     0,    42,    56,   173,
+     181,     0,     0,     0,     0,     0,   236,   238,   239,   240,
+     241,   237,   242,   244,     0,     0,     0,     0,   230,     0,
+       0,     0,     0,   207,     0,   213,   205,    45,     0,    46,
+     127,     0,   137,   143,   133,   128,   129,   131,     0,     0,
+     140,     0,     0,   139,     0,   151,   200,     0,   201,     0,
+     102,   104,   253,     0,     0,     0,     0,     0,     0,     0,
+     234,     0,   232,     0,    63,    65,    68,    28,     0,     0,
+       0,    47,     0,     0,    49,    55,    57,    26,   180,   169,
+     171,   243,   245,     0,     0,     0,     0,   182,   179,     0,
+     178,    90,     0,     0,   211,     0,   204,     0,   142,   144,
+     134,   130,   132,     0,   148,     0,     0,   138,     0,     0,
+     153,   202,   215,     0,     0,     0,     0,    96,   258,   259,
+     257,   256,    97,    95,     0,    67,     0,    83,    84,    85,
+      86,    87,     0,     0,    70,    48,     0,    51,    50,     0,
+      54,     0,     0,   184,     0,     0,   177,   231,     0,   208,
+     203,     0,   125,   126,   150,   152,     0,   155,    61,     0,
+       0,    58,     0,     0,   235,     0,    24,    62,     0,     0,
+      23,     0,     0,     0,     0,   175,   183,     0,     0,     0,
+       0,   111,     0,    59,    98,    99,     0,    74,    76,    77,
+      78,     0,     0,     0,    52,     0,   176,   185,    89,   135,
+     154,   157,   160,   156,     0,    88,     0,    82,    80,     0,
+      79,     0,    72,    73,     0,    53,     0,   161,   162,   163,
+       0,    75,     0,    69,     0,   158,     0,   159,     0,    81,
+       0,   164,   165,     0,     0,    60,     0,    71
 };
 
   /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -216,  -216,  -216,  -216,  -216,  -216,  -216,  -216,  -102,  -216,
-     329,   185,  -216,  -216,  -215,  -216,  -216,  -216,  -216,  -216,
-    -216,    71,    60,  -216,  -216,  -216,  -216,  -216,  -216,  -216,
-    -216,  -216,  -216,  -216,  -216,   286,  -216,  -216,  -216,   397,
-      10,  -216,  -216,  -216,   369,  -216,   -97,  -216,  -216,  -138,
-     169,  -161,   -10,  -216,  -216,  -216,  -216,  -216,  -216,    59,
-    -216,  -216,   -91,  -216,  -121,   276,   280,   341,   -30,   377,
-     363,   417,  -123,  -216,  -216,  -216,   344,  -216,   396,   357,
-    -203,  -163,   147,  -108,  -216,  -216,  -216,  -216,  -216,  -115,
-      -4,   126,  -216,  -216
+    -223,  -223,  -223,  -223,  -223,  -223,  -223,  -223,  -131,  -223,
+     303,   150,  -223,  -223,  -222,  -223,  -223,  -223,  -223,  -223,
+    -223,    38,    27,  -223,  -223,  -223,  -223,  -223,  -223,  -223,
+    -223,  -223,  -223,  -223,  -223,   257,  -223,  -223,  -223,   372,
+      14,  -223,  -223,  -223,   343,  -223,   -94,  -223,  -223,  -181,
+     131,  -170,    -8,  -223,  -223,  -223,  -223,  -223,  -223,    28,
+    -223,  -223,   -58,  -223,  -121,   235,   237,   312,   -30,   344,
+     346,   384,  -130,  -223,  -223,  -223,   314,  -223,   359,   315,
+    -208,  -169,   366,   106,  -105,  -223,  -223,  -223,  -223,  -223,
+    -115,    -4,    98,  -223,  -223
 };
 
   /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
       -1,    14,    15,    16,    17,    18,    19,    20,   167,   168,
-      88,   308,   309,   310,   222,   298,   299,   227,   367,   403,
-     447,   419,   420,   421,   422,   423,   364,   399,    21,    22,
-     165,   292,    23,    24,   151,   152,    25,    26,    43,    44,
-     132,    41,    89,    90,    91,   136,    92,   276,   271,   195,
-     196,   265,   266,   197,   278,   343,   390,   414,   433,   434,
-     452,   460,   115,   116,   173,   174,   175,   176,   177,    94,
+      88,   315,   316,   317,   229,   305,   306,   234,   374,   410,
+     454,   426,   427,   428,   429,   430,   371,   406,    21,    22,
+     165,   299,    23,    24,   151,   152,    25,    26,    43,    44,
+     132,    41,    89,    90,    91,   136,    92,   283,   278,   202,
+     203,   272,   273,   204,   285,   350,   397,   421,   440,   441,
+     459,   467,   115,   116,   173,   174,   175,   176,   177,    94,
       95,    96,    97,    98,    99,   183,   184,   124,   125,   187,
-     210,   100,   252,   101,   294,   249,   102,   141,   146,   157,
-     103,   355,    28,    29
+     217,   100,   195,   259,   101,   301,   256,   102,   141,   146,
+     157,   103,   362,    28,    29
 };
 
   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
@@ -1017,311 +1027,336 @@ static const yytype_int16 yydefgoto[] =
      number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
-      33,   181,    45,   180,   280,   236,   178,    42,    46,   156,
-      27,    93,   198,   297,   178,    31,   251,    32,   440,    31,
-     236,    32,   143,   144,   274,   236,    55,   236,   138,   139,
-      57,    58,    59,    60,    61,   322,    51,   273,   194,   123,
-     441,   185,   138,   139,    31,   200,    32,   185,   138,   139,
-     149,   234,   138,   139,    34,   263,   445,   133,   217,    30,
-     212,    39,   178,   450,   178,   109,   351,    50,   138,   139,
-     198,   119,   160,   161,   233,   314,   315,   316,    37,    31,
-     360,    32,   446,   361,   362,   451,    35,    40,    47,   142,
-     352,   353,   301,    10,   110,    45,   194,   275,    38,   122,
-     153,    46,   464,   158,   159,   182,   264,    93,   166,   169,
-     323,   150,   354,    36,   158,   340,   378,    54,   293,   465,
-     209,    56,   311,   254,   189,   302,   145,   300,   178,   178,
-     317,   199,   192,   303,   337,   442,   202,   391,   387,   193,
-     370,    10,   235,   182,   427,   205,   383,   150,   363,   198,
-     400,   320,   255,   328,   104,   258,   169,   267,   223,   224,
-     105,   218,   380,   268,   193,   346,   106,   304,    31,   216,
-      32,   269,   407,   114,   349,   194,   305,   209,   178,    31,
-     306,    32,   211,   284,   219,   138,   139,    10,   270,   199,
-      46,   107,   267,   307,    46,   140,   377,   290,   268,     1,
-     117,     2,   111,  -127,   291,   112,   269,   153,   138,   139,
-     118,   285,   220,   198,   331,   162,   163,   318,   251,   321,
-     376,   388,   295,   270,   327,   169,   214,   215,     3,   221,
-     406,   330,   392,   393,   178,    52,   228,   229,    53,   194,
-     138,   139,   138,   139,     4,     5,   395,    48,   404,    49,
-       6,   397,   345,   396,   332,     7,   253,   215,   281,   282,
-      46,   178,   324,   325,   344,   282,   356,   357,   199,   108,
-     358,   359,    46,     8,   394,   215,   113,    31,    62,    32,
-      63,   409,   282,   415,   215,   158,   374,   416,   215,   209,
-     432,   430,   282,     9,    64,    65,   206,   114,   382,    10,
-     120,   121,   372,   178,   431,   325,    67,    68,   438,   439,
-      11,   209,   126,   127,    69,    70,    12,   129,    13,   456,
-     439,    71,    72,    73,   462,   215,   128,   455,   207,    74,
-     467,   215,   199,   468,   215,    75,   130,   131,    76,   134,
-     137,   135,   463,   158,   158,   209,   466,   408,   155,    77,
-      78,   164,   179,   188,   190,   295,   191,    79,    80,   213,
-     238,   239,   240,   241,   242,   243,   244,   245,   246,   247,
-      81,   138,   139,    10,   225,   226,   429,    82,   236,   250,
-      83,    84,   435,   237,   259,   261,   260,   262,    85,   272,
-     277,   279,    86,   286,   424,   287,   288,    87,   208,   289,
-     296,   428,   319,   326,   329,   336,   338,   333,   339,   334,
-      31,    62,    32,    63,   335,   341,   170,   350,   149,   435,
-     443,   424,   248,   342,   347,   348,   366,    64,    65,   365,
-     369,   371,   385,   453,   368,   424,   386,   375,   158,    67,
-      68,   379,   389,    31,    62,    32,    63,    69,    70,   170,
-     401,   381,   398,   158,    71,    72,    73,   158,   402,   405,
-      64,    65,    74,   282,   411,   412,   413,   171,    75,   417,
-     426,    76,    67,    68,   436,   192,   437,   469,   425,   457,
-      69,    70,    77,    78,   449,   448,   459,    71,    72,    73,
-      79,    80,   461,   470,   373,    74,   444,   283,   231,   454,
-     171,    75,   154,    81,    76,   384,   201,    10,   458,   204,
-      82,   232,   312,    83,    84,    77,    78,   313,   203,   148,
-     186,    85,   418,    79,    80,    86,     0,   256,   410,     0,
-     172,    31,    62,    32,    63,     0,    81,     0,     0,     0,
-     257,     0,     0,    82,     0,     0,    83,    84,    64,    65,
-      66,     0,     0,     0,    85,     0,     0,     0,    86,     0,
-      67,    68,     0,   172,    31,    62,    32,    63,    69,    70,
-       0,     0,     0,     0,     0,    71,    72,    73,     0,     0,
-       0,    64,    65,    74,     0,     0,     0,     0,     0,    75,
-       0,     0,    76,    67,    68,     0,     0,     0,     0,     0,
-       0,    69,    70,    77,    78,     0,     0,     0,    71,    72,
-      73,    79,    80,     0,     0,     0,    74,     0,     0,     0,
-       0,     0,    75,     0,    81,    76,     0,     0,     0,     0,
-       0,    82,     0,     0,    83,    84,    77,    78,     0,     0,
-       0,     0,    85,     0,    79,    80,    86,     0,     0,     0,
-       0,    87,    31,    62,    32,    63,     0,    81,     0,     0,
-       0,     0,     0,     0,    82,     0,     0,    83,    84,    64,
-      65,     0,     0,     0,     0,    85,   122,     0,     0,    86,
-       0,    67,    68,     0,    87,    31,    62,    32,    63,    69,
-      70,     0,     0,     0,     0,     0,    71,    72,    73,     0,
-       0,     0,    64,    65,    74,     0,     0,     0,     0,     0,
-      75,     0,     0,    76,    67,    68,     0,     0,     0,     0,
-       0,     0,    69,    70,    77,    78,     0,     0,     0,    71,
-      72,    73,    79,    80,     0,     0,     0,    74,     0,     0,
-       0,     0,   171,    75,     0,    81,    76,     0,     0,    10,
-       0,     0,    82,     0,     0,    83,    84,    77,    78,     0,
-       0,     0,     0,    85,     0,    79,    80,    86,     0,     0,
-       0,     0,    87,    31,    62,    32,    63,     0,    81,     0,
+      33,   181,   243,   180,    45,   205,   287,    42,    46,   178,
+     258,    93,   156,   304,    27,   329,   149,   178,   243,   270,
+      31,   243,    32,   447,   281,    31,    55,    32,    30,   224,
+      57,    58,    59,    60,    61,   280,    31,   243,    32,   123,
+      51,   201,    50,   143,   144,   448,   109,   138,   139,   185,
+     185,   241,   114,    52,   138,   139,    53,   133,   138,   139,
+     367,    34,   218,   368,   369,   178,   452,   178,   138,   139,
+     205,    10,   321,   322,   323,   119,   110,   240,   207,   245,
+     246,   247,   248,   249,   250,   251,   252,   253,   254,   142,
+     138,   139,   225,   219,   330,   453,    35,    45,   344,    39,
+     153,    46,   282,   158,   159,   307,   201,    93,   166,   169,
+      10,   122,   182,   347,   158,   297,   226,   150,   385,   150,
+     216,   261,   298,   117,    36,   318,    40,    10,   300,   324,
+     402,   206,    37,   370,   118,    47,   209,   403,   178,   178,
+     394,   377,   242,   255,   398,   212,   449,   227,   335,   205,
+     407,   200,   262,   145,    38,   265,   169,   199,   230,   231,
+     434,   327,   200,   387,   390,   228,   308,    31,   182,    32,
+     384,   274,   353,   223,   414,   471,   138,   139,   275,   189,
+      54,   356,   138,   139,   216,   201,   276,   457,   178,    56,
+     291,   274,   104,   472,   271,   105,   206,    46,   275,   309,
+     199,    46,   190,  -127,   106,   277,   276,   107,   310,   413,
+     458,   160,   161,   205,   153,   358,   191,   192,   292,   258,
+     108,   138,   139,   111,   325,   277,   328,   113,   395,   302,
+     383,   334,   169,   338,   193,    31,   112,    32,   337,   399,
+     400,   114,   359,   360,   178,   311,    48,   120,    49,   201,
+     162,   163,   121,   194,   312,   411,   221,   222,   313,   352,
+      31,   404,    32,   339,   126,   361,   127,    46,   235,   236,
+     129,   178,   314,   260,   222,   206,   128,   138,   139,    46,
+     138,   139,   131,   288,   289,   331,   332,   140,   351,   289,
+     363,   364,   158,   381,   130,   134,   216,   439,   135,   365,
+     366,   401,   222,   416,   289,   389,   422,   222,   137,   379,
+     423,   222,   155,   178,   437,   289,   438,   332,   216,   445,
+     446,   463,   446,   469,   222,   474,   222,   164,    31,    62,
+      32,    63,   475,   222,   462,   179,   188,   197,   198,   206,
+      10,   232,   220,   233,   243,    64,    65,   213,   244,   470,
+     158,   158,   216,   473,   415,   257,   266,    67,    68,   267,
+     268,   279,   302,   269,   284,    69,    70,   286,   293,   294,
+     295,   296,    71,    72,   326,    73,   303,   336,   340,   333,
+     214,    74,   343,   436,   345,   341,   346,    75,   348,   442,
+      76,   342,   349,   354,    31,    62,    32,    63,   355,   357,
+     170,   431,    77,    78,   372,   149,   373,   375,   435,   376,
+      79,    64,    65,    80,   378,   382,   386,   408,   392,   388,
+     393,   396,   419,    67,    68,    81,   442,   450,   431,   405,
+     412,    69,    70,    82,   418,   409,    83,    84,    71,    72,
+     460,    73,   431,   289,    85,   158,   420,    74,   424,    86,
+     433,   443,   171,    75,    87,   215,    76,   444,   456,   466,
+     158,   476,   477,   432,   158,   455,   380,   464,    77,    78,
+     451,   468,   238,   461,   391,   290,    79,   154,   319,    80,
+     208,   320,   239,   186,   465,   210,   148,    31,    62,    32,
+      63,    81,   211,   170,   417,   196,    10,   263,   264,    82,
+       0,   425,    83,    84,    64,    65,     0,     0,     0,     0,
+      85,     0,     0,     0,     0,    86,    67,    68,     0,     0,
+     172,     0,     0,     0,    69,    70,     0,     0,     0,     0,
+       0,    71,    72,     0,    73,     0,     0,     0,     0,     0,
+      74,     0,     0,     0,     0,   171,    75,     0,     0,    76,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    77,    78,     0,     0,     0,     0,     0,     0,    79,
+       0,     0,    80,     0,     0,     0,     0,     0,     0,     0,
+      31,    62,    32,    63,    81,     0,     0,     0,     0,     0,
+       0,     0,    82,     0,     0,    83,    84,    64,    65,    66,
+       0,     0,     0,    85,     0,     0,     0,     0,    86,    67,
+      68,     0,     0,   172,     0,     0,     0,    69,    70,     0,
+       0,     0,     0,     0,    71,    72,     0,    73,     0,     0,
+       0,     0,     0,    74,     0,     0,     0,     0,     0,    75,
+       0,     0,    76,     0,     0,     0,    31,    62,    32,    63,
+       0,     0,     0,     0,    77,    78,     0,     0,     0,     0,
+       0,     0,    79,    64,    65,    80,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    67,    68,    81,     0,     0,
+       0,     0,     0,    69,    70,    82,     0,     0,    83,    84,
+      71,    72,     0,    73,     0,     0,    85,     0,     0,    74,
+       0,    86,     0,     0,     0,    75,    87,     0,    76,     0,
+       0,     0,    31,    62,    32,    63,     0,     0,     0,     0,
+      77,    78,     0,     0,     0,     0,     0,     0,    79,    64,
+      65,    80,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    67,    68,    81,     0,     0,     0,     0,     0,    69,
+      70,    82,     0,     0,    83,    84,    71,    72,     0,    73,
+       0,     0,    85,   122,     0,    74,     0,    86,     0,     0,
+       0,    75,    87,     0,    76,     0,     0,     0,    31,    62,
+      32,    63,     0,     0,     0,     0,    77,    78,     0,     0,
+       0,     0,     0,     0,    79,    64,    65,    80,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    67,    68,    81,
+       0,     0,     0,     0,    10,    69,    70,    82,     0,     0,
+      83,    84,    71,    72,     0,    73,     0,     0,    85,     0,
+       0,    74,     0,    86,     0,     0,   171,    75,    87,     0,
+      76,     0,     0,     0,    31,    62,    32,    63,     0,     0,
+       0,     0,    77,    78,     0,     0,     0,     0,     0,     0,
+      79,    64,   147,    80,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    67,    68,    81,     0,     0,     0,     0,
+       0,    69,    70,    82,     0,     0,    83,    84,    71,    72,
+       0,    73,     0,     0,    85,     0,     0,    74,     0,    86,
+       0,     0,     0,    75,   172,     0,    76,     0,     0,     0,
+      31,    62,    32,    63,     0,     0,     0,     0,    77,    78,
+       0,     0,     1,     0,     2,     0,    79,    64,    65,    80,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    67,
+      68,    81,     0,     0,     0,     0,     0,    69,    70,    82,
+       0,     3,    83,    84,    71,    72,     0,    73,     0,     0,
+      85,     0,     0,    74,     0,    86,     0,     4,     5,    75,
+      87,     0,    76,     0,     6,     0,     0,     0,     0,     7,
+       0,     0,     0,     0,    77,    78,     0,     0,     0,     0,
+       0,     0,    79,     0,     0,    80,     0,     0,     8,     0,
+       0,     0,     0,     0,     0,     0,    62,    81,    63,     0,
        0,     0,     0,     0,     0,    82,     0,     0,    83,    84,
-      64,   147,     0,     0,     0,     0,    85,     0,     0,     0,
-      86,     0,    67,    68,     0,   172,    31,    62,    32,    63,
-      69,    70,     0,     0,     0,     0,     0,    71,    72,    73,
-       0,     0,     0,    64,    65,    74,     0,     0,     0,     0,
-       0,    75,     0,     0,    76,    67,    68,     0,     0,     0,
-       0,     0,     0,    69,    70,    77,    78,     0,     0,     0,
-      71,    72,    73,    79,    80,     0,     0,     0,    74,     0,
-       0,     0,     0,     0,    75,     0,    81,    76,     0,     0,
-       0,     0,     0,    82,     0,     0,    83,    84,    77,    78,
-       0,     0,     0,     0,    85,     0,    79,    80,    86,     0,
-       0,     0,     0,    87,     0,    62,     0,    63,     0,    81,
-       0,     0,     0,     0,     0,     0,    82,     0,     0,    83,
-      84,    64,   147,     0,     0,     0,     0,    85,    67,    68,
-       0,    86,     0,    67,    68,     0,    87,    70,     0,     0,
-       0,     0,    70,    71,    72,    73,     0,     0,    71,    72,
-      73,    74,     0,     0,     0,     0,    74,     0,     0,     0,
-      76,     0,     0,     0,     0,    76,     0,     0,     0,     0,
-       0,    77,   230,     0,     0,     0,    77,    78,     0,    79,
-       0,     0,     0,     0,    79,    80,     0,     0,     0,     0,
-       0,     0,    81,     0,     0,     0,     0,    81,     0,    82,
-       0,     0,    83,    84,    82,     0,     0,    83,    84,     0,
-      85,     0,     0,     0,    86,    85,     0,     0,     0,    86,
-     238,   239,   240,   241,   242,   243,   244,   245,   246,   247,
-       0,   138,   139,     0,     0,     0,     0,     0,     0,     0,
+       9,     0,    64,   147,    67,    68,    85,    10,     0,     0,
+       0,    86,     0,    70,    67,    68,    87,     0,    11,    71,
+      72,     0,    73,    70,    12,     0,     0,    13,    74,    71,
+      72,     0,    73,     0,     0,     0,     0,    76,    74,     0,
+       0,     0,     0,     0,     0,     0,     0,    76,     0,    77,
+     237,     0,     0,     0,     0,     0,     0,    79,     0,    77,
+      78,     0,     0,     0,     0,     0,     0,    79,     0,     0,
+      80,     0,    81,     0,     0,     0,     0,     0,     0,     0,
+      82,     0,    81,    83,    84,     0,     0,     0,     0,     0,
+      82,    85,     0,    83,    84,     0,    86,     0,     0,     0,
+       0,    85,     0,     0,     0,     0,    86,   245,   246,   247,
+     248,   249,   250,   251,   252,   253,   254,     0,   138,   139,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   248
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   255
 };
 
 static const yytype_int16 yycheck[] =
 {
-       4,   122,    12,   118,   207,     8,   114,    11,    12,   106,
-       0,    41,   135,   228,   122,     4,   179,     6,     7,     4,
-       8,     6,    23,    24,    37,     8,    30,     8,    21,    22,
-      34,    35,    36,    37,    38,    10,    26,   198,   135,    69,
-      29,    58,    21,    22,     4,   136,     6,    58,    21,    22,
-      27,   172,    21,    22,    73,   193,    70,    87,   160,   105,
-     151,    29,   170,    32,   172,    28,    63,    75,    21,    22,
-     193,    61,    44,    45,   171,    17,    18,    19,   105,     4,
-      35,     6,    96,    38,    39,    54,   105,    55,     0,    93,
-      87,    88,    10,   101,    57,   105,   193,   110,    78,   116,
-     104,   105,    64,   107,   108,   116,    31,   137,   112,   113,
-      85,   124,   109,    67,   118,   276,   319,     3,   226,    81,
-     150,    67,   125,   106,   128,    43,   127,   229,   236,   237,
-      72,   135,   125,    51,   272,   124,   140,   125,   341,   124,
-     303,   101,   172,   116,   125,   149,   125,   124,   103,   272,
-     365,   248,   182,   106,   102,   185,   160,    68,   162,   163,
-     126,    43,   325,    74,   124,   286,    31,    85,     4,   159,
-       6,    82,   375,   117,   289,   272,    94,   207,   286,     4,
-      98,     6,   126,   213,    66,    21,    22,   101,    99,   193,
-     194,   124,    68,   111,   198,    31,     9,    53,    74,     1,
-     114,     3,     5,    79,    60,    88,    82,   211,    21,    22,
-     124,   215,    94,   336,   125,    44,    45,   247,   381,   249,
-     317,   342,   226,    99,   254,   229,   125,   126,    30,   111,
-       9,   261,   347,   348,   342,   120,   125,   126,   123,   336,
-      21,    22,    21,    22,    46,    47,    53,   120,   369,   122,
-      52,   359,   282,    60,   264,    57,   125,   126,   125,   126,
-     264,   369,   125,   126,   125,   126,   125,   126,   272,    78,
-     125,   126,   276,    75,   125,   126,   124,     4,     5,     6,
-       7,   125,   126,   125,   126,   289,   316,   125,   126,   319,
-     411,   125,   126,    95,    21,    22,    23,   117,   328,   101,
-       7,     7,   306,   411,   125,   126,    33,    34,   125,   126,
-     112,   341,   124,    77,    41,    42,   118,     5,   120,   125,
-     126,    48,    49,    50,   125,   126,   124,   442,    55,    56,
-     125,   126,   336,   125,   126,    62,   124,    77,    65,     5,
-     126,    67,   457,   347,   348,   375,   461,   377,   124,    76,
-      77,   118,   124,     7,     7,   359,   125,    84,    85,    11,
-      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
-      97,    21,    22,   101,   124,   124,   406,   104,     8,    20,
-     107,   108,   412,     9,    59,    67,   125,   125,   115,   126,
-      69,   125,   119,   124,   398,    80,    80,   124,   125,   124,
-     113,   405,   124,   114,    59,    79,     7,    90,     7,    90,
-       4,     5,     6,     7,    90,    40,    10,     5,    27,   449,
-     424,   425,    72,    71,   124,   124,   118,    21,    22,   126,
-     124,    80,    93,   437,    85,   439,    93,   124,   442,    33,
-      34,    85,    89,     4,     5,     6,     7,    41,    42,    10,
-      36,   124,   124,   457,    48,    49,    50,   461,    91,   124,
-      21,    22,    56,   126,    88,    40,    83,    61,    62,     5,
-      40,    65,    33,    34,     7,   125,    98,    92,   124,   124,
-      41,    42,    76,    77,   126,   125,    86,    48,    49,    50,
-      84,    85,   124,     7,   309,    56,   425,   211,   169,   439,
-      61,    62,   105,    97,    65,   336,   137,   101,   449,   146,
-     104,   170,   236,   107,   108,    76,    77,   237,   141,   102,
-     124,   115,   396,    84,    85,   119,    -1,   183,   381,    -1,
-     124,     4,     5,     6,     7,    -1,    97,    -1,    -1,    -1,
-     183,    -1,    -1,   104,    -1,    -1,   107,   108,    21,    22,
-      23,    -1,    -1,    -1,   115,    -1,    -1,    -1,   119,    -1,
-      33,    34,    -1,   124,     4,     5,     6,     7,    41,    42,
-      -1,    -1,    -1,    -1,    -1,    48,    49,    50,    -1,    -1,
-      -1,    21,    22,    56,    -1,    -1,    -1,    -1,    -1,    62,
-      -1,    -1,    65,    33,    34,    -1,    -1,    -1,    -1,    -1,
-      -1,    41,    42,    76,    77,    -1,    -1,    -1,    48,    49,
-      50,    84,    85,    -1,    -1,    -1,    56,    -1,    -1,    -1,
-      -1,    -1,    62,    -1,    97,    65,    -1,    -1,    -1,    -1,
-      -1,   104,    -1,    -1,   107,   108,    76,    77,    -1,    -1,
-      -1,    -1,   115,    -1,    84,    85,   119,    -1,    -1,    -1,
-      -1,   124,     4,     5,     6,     7,    -1,    97,    -1,    -1,
-      -1,    -1,    -1,    -1,   104,    -1,    -1,   107,   108,    21,
-      22,    -1,    -1,    -1,    -1,   115,   116,    -1,    -1,   119,
-      -1,    33,    34,    -1,   124,     4,     5,     6,     7,    41,
-      42,    -1,    -1,    -1,    -1,    -1,    48,    49,    50,    -1,
-      -1,    -1,    21,    22,    56,    -1,    -1,    -1,    -1,    -1,
-      62,    -1,    -1,    65,    33,    34,    -1,    -1,    -1,    -1,
-      -1,    -1,    41,    42,    76,    77,    -1,    -1,    -1,    48,
-      49,    50,    84,    85,    -1,    -1,    -1,    56,    -1,    -1,
-      -1,    -1,    61,    62,    -1,    97,    65,    -1,    -1,   101,
-      -1,    -1,   104,    -1,    -1,   107,   108,    76,    77,    -1,
-      -1,    -1,    -1,   115,    -1,    84,    85,   119,    -1,    -1,
-      -1,    -1,   124,     4,     5,     6,     7,    -1,    97,    -1,
-      -1,    -1,    -1,    -1,    -1,   104,    -1,    -1,   107,   108,
-      21,    22,    -1,    -1,    -1,    -1,   115,    -1,    -1,    -1,
-     119,    -1,    33,    34,    -1,   124,     4,     5,     6,     7,
-      41,    42,    -1,    -1,    -1,    -1,    -1,    48,    49,    50,
-      -1,    -1,    -1,    21,    22,    56,    -1,    -1,    -1,    -1,
-      -1,    62,    -1,    -1,    65,    33,    34,    -1,    -1,    -1,
-      -1,    -1,    -1,    41,    42,    76,    77,    -1,    -1,    -1,
-      48,    49,    50,    84,    85,    -1,    -1,    -1,    56,    -1,
-      -1,    -1,    -1,    -1,    62,    -1,    97,    65,    -1,    -1,
-      -1,    -1,    -1,   104,    -1,    -1,   107,   108,    76,    77,
-      -1,    -1,    -1,    -1,   115,    -1,    84,    85,   119,    -1,
-      -1,    -1,    -1,   124,    -1,     5,    -1,     7,    -1,    97,
-      -1,    -1,    -1,    -1,    -1,    -1,   104,    -1,    -1,   107,
-     108,    21,    22,    -1,    -1,    -1,    -1,   115,    33,    34,
-      -1,   119,    -1,    33,    34,    -1,   124,    42,    -1,    -1,
-      -1,    -1,    42,    48,    49,    50,    -1,    -1,    48,    49,
-      50,    56,    -1,    -1,    -1,    -1,    56,    -1,    -1,    -1,
-      65,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    -1,
-      -1,    76,    77,    -1,    -1,    -1,    76,    77,    -1,    84,
-      -1,    -1,    -1,    -1,    84,    85,    -1,    -1,    -1,    -1,
-      -1,    -1,    97,    -1,    -1,    -1,    -1,    97,    -1,   104,
-      -1,    -1,   107,   108,   104,    -1,    -1,   107,   108,    -1,
-     115,    -1,    -1,    -1,   119,   115,    -1,    -1,    -1,   119,
-      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
-      -1,    21,    22,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+       4,   122,     8,   118,    12,   135,   214,    11,    12,   114,
+     179,    41,   106,   235,     0,    10,    27,   122,     8,   200,
+       4,     8,     6,     7,    37,     4,    30,     6,   110,   160,
+      34,    35,    36,    37,    38,   205,     4,     8,     6,    69,
+      26,   135,    77,    23,    24,    29,    28,    21,    22,    59,
+      59,   172,   122,   126,    21,    22,   129,    87,    21,    22,
+      35,    75,   132,    38,    39,   170,    71,   172,    21,    22,
+     200,   106,    17,    18,    19,    61,    58,   171,   136,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    93,
+      21,    22,    43,   151,    89,   100,   110,   105,   279,    29,
+     104,   105,   115,   107,   108,   236,   200,   137,   112,   113,
+     106,   121,   121,   283,   118,    54,    67,   130,   326,   130,
+     150,   111,    61,   119,    68,   131,    56,   106,   233,    74,
+      54,   135,   110,   108,   130,     0,   140,    61,   243,   244,
+     348,   310,   172,    74,   131,   149,   130,    98,   111,   279,
+     372,   130,   182,   133,    80,   185,   160,   131,   162,   163,
+     131,   255,   130,   332,   131,   116,    10,     4,   121,     6,
+       9,    69,   293,   159,   382,    65,    21,    22,    76,    50,
+       3,   296,    21,    22,   214,   279,    84,    32,   293,    68,
+     220,    69,   107,    83,    31,   132,   200,   201,    76,    43,
+     131,   205,    73,    81,    31,   103,    84,   130,    52,     9,
+      55,    44,    45,   343,   218,    64,    87,    88,   222,   388,
+      80,    21,    22,     5,   254,   103,   256,   130,   349,   233,
+     324,   261,   236,   131,   105,     4,    92,     6,   268,   354,
+     355,   122,    91,    92,   349,    89,   126,     7,   128,   343,
+      44,    45,     7,   124,    98,   376,   131,   132,   102,   289,
+       4,   366,     6,   271,   130,   114,    79,   271,   131,   132,
+       5,   376,   116,   131,   132,   279,   130,    21,    22,   283,
+      21,    22,    79,   131,   132,   131,   132,    31,   131,   132,
+     131,   132,   296,   323,   130,     5,   326,   418,    68,   131,
+     132,   131,   132,   131,   132,   335,   131,   132,   132,   313,
+     131,   132,   130,   418,   131,   132,   131,   132,   348,   131,
+     132,   131,   132,   131,   132,   131,   132,   123,     4,     5,
+       6,     7,   131,   132,   449,   130,     7,     7,   131,   343,
+     106,   130,    11,   130,     8,    21,    22,    23,     9,   464,
+     354,   355,   382,   468,   384,    20,    60,    33,    34,   131,
+      68,   132,   366,   131,    70,    41,    42,   131,   130,    82,
+      82,   130,    48,    49,   130,    51,   118,    60,    94,   119,
+      56,    57,    81,   413,     7,    94,     7,    63,    40,   419,
+      66,    94,    72,   130,     4,     5,     6,     7,   130,     5,
+      10,   405,    78,    79,   132,    27,   123,    89,   412,   130,
+      86,    21,    22,    89,    82,   130,    89,    36,    97,   130,
+      97,    93,    40,    33,    34,   101,   456,   431,   432,   130,
+     130,    41,    42,   109,    92,    95,   112,   113,    48,    49,
+     444,    51,   446,   132,   120,   449,    85,    57,     5,   125,
+      40,     7,    62,    63,   130,   131,    66,   102,   132,    90,
+     464,    96,     7,   130,   468,   131,   316,   130,    78,    79,
+     432,   130,   169,   446,   343,   218,    86,   105,   243,    89,
+     137,   244,   170,   124,   456,   141,   102,     4,     5,     6,
+       7,   101,   146,    10,   388,   129,   106,   183,   183,   109,
+      -1,   403,   112,   113,    21,    22,    -1,    -1,    -1,    -1,
+     120,    -1,    -1,    -1,    -1,   125,    33,    34,    -1,    -1,
+     130,    -1,    -1,    -1,    41,    42,    -1,    -1,    -1,    -1,
+      -1,    48,    49,    -1,    51,    -1,    -1,    -1,    -1,    -1,
+      57,    -1,    -1,    -1,    -1,    62,    63,    -1,    -1,    66,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    78,    79,    -1,    -1,    -1,    -1,    -1,    -1,    86,
+      -1,    -1,    89,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+       4,     5,     6,     7,   101,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   109,    -1,    -1,   112,   113,    21,    22,    23,
+      -1,    -1,    -1,   120,    -1,    -1,    -1,    -1,   125,    33,
+      34,    -1,    -1,   130,    -1,    -1,    -1,    41,    42,    -1,
+      -1,    -1,    -1,    -1,    48,    49,    -1,    51,    -1,    -1,
+      -1,    -1,    -1,    57,    -1,    -1,    -1,    -1,    -1,    63,
+      -1,    -1,    66,    -1,    -1,    -1,     4,     5,     6,     7,
+      -1,    -1,    -1,    -1,    78,    79,    -1,    -1,    -1,    -1,
+      -1,    -1,    86,    21,    22,    89,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    33,    34,   101,    -1,    -1,
+      -1,    -1,    -1,    41,    42,   109,    -1,    -1,   112,   113,
+      48,    49,    -1,    51,    -1,    -1,   120,    -1,    -1,    57,
+      -1,   125,    -1,    -1,    -1,    63,   130,    -1,    66,    -1,
+      -1,    -1,     4,     5,     6,     7,    -1,    -1,    -1,    -1,
+      78,    79,    -1,    -1,    -1,    -1,    -1,    -1,    86,    21,
+      22,    89,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    33,    34,   101,    -1,    -1,    -1,    -1,    -1,    41,
+      42,   109,    -1,    -1,   112,   113,    48,    49,    -1,    51,
+      -1,    -1,   120,   121,    -1,    57,    -1,   125,    -1,    -1,
+      -1,    63,   130,    -1,    66,    -1,    -1,    -1,     4,     5,
+       6,     7,    -1,    -1,    -1,    -1,    78,    79,    -1,    -1,
+      -1,    -1,    -1,    -1,    86,    21,    22,    89,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    33,    34,   101,
+      -1,    -1,    -1,    -1,   106,    41,    42,   109,    -1,    -1,
+     112,   113,    48,    49,    -1,    51,    -1,    -1,   120,    -1,
+      -1,    57,    -1,   125,    -1,    -1,    62,    63,   130,    -1,
+      66,    -1,    -1,    -1,     4,     5,     6,     7,    -1,    -1,
+      -1,    -1,    78,    79,    -1,    -1,    -1,    -1,    -1,    -1,
+      86,    21,    22,    89,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    33,    34,   101,    -1,    -1,    -1,    -1,
+      -1,    41,    42,   109,    -1,    -1,   112,   113,    48,    49,
+      -1,    51,    -1,    -1,   120,    -1,    -1,    57,    -1,   125,
+      -1,    -1,    -1,    63,   130,    -1,    66,    -1,    -1,    -1,
+       4,     5,     6,     7,    -1,    -1,    -1,    -1,    78,    79,
+      -1,    -1,     1,    -1,     3,    -1,    86,    21,    22,    89,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    33,
+      34,   101,    -1,    -1,    -1,    -1,    -1,    41,    42,   109,
+      -1,    30,   112,   113,    48,    49,    -1,    51,    -1,    -1,
+     120,    -1,    -1,    57,    -1,   125,    -1,    46,    47,    63,
+     130,    -1,    66,    -1,    53,    -1,    -1,    -1,    -1,    58,
+      -1,    -1,    -1,    -1,    78,    79,    -1,    -1,    -1,    -1,
+      -1,    -1,    86,    -1,    -1,    89,    -1,    -1,    77,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,     5,   101,     7,    -1,
+      -1,    -1,    -1,    -1,    -1,   109,    -1,    -1,   112,   113,
+      99,    -1,    21,    22,    33,    34,   120,   106,    -1,    -1,
+      -1,   125,    -1,    42,    33,    34,   130,    -1,   117,    48,
+      49,    -1,    51,    42,   123,    -1,    -1,   126,    57,    48,
+      49,    -1,    51,    -1,    -1,    -1,    -1,    66,    57,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    66,    -1,    78,
+      79,    -1,    -1,    -1,    -1,    -1,    -1,    86,    -1,    78,
+      79,    -1,    -1,    -1,    -1,    -1,    -1,    86,    -1,    -1,
+      89,    -1,   101,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     109,    -1,   101,   112,   113,    -1,    -1,    -1,    -1,    -1,
+     109,   120,    -1,   112,   113,    -1,   125,    -1,    -1,    -1,
+      -1,   120,    -1,    -1,    -1,    -1,   125,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    -1,    21,    22,
       -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,    -1,    -1,    -1,    -1,
-      -1,    -1,    72
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    74
 };
 
   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
      symbol of state STATE-NUM.  */
 static const yytype_uint8 yystos[] =
 {
-       0,     1,     3,    30,    46,    47,    52,    57,    75,    95,
-     101,   112,   118,   120,   129,   130,   131,   132,   133,   134,
-     135,   156,   157,   160,   161,   164,   165,   168,   220,   221,
-     105,     4,     6,   218,    73,   105,    67,   105,    78,    29,
-      55,   169,   218,   166,   167,   180,   218,     0,   120,   122,
-      75,   168,   120,   123,     3,   218,    67,   218,   218,   218,
-     218,   218,     5,     7,    21,    22,    23,    33,    34,    41,
-      42,    48,    49,    50,    56,    62,    65,    76,    77,    84,
-      85,    97,   104,   107,   108,   115,   119,   124,   138,   170,
-     171,   172,   174,   196,   197,   198,   199,   200,   201,   202,
-     209,   211,   214,   218,   102,   126,    31,   124,    78,    28,
-      57,     5,    88,   124,   117,   190,   191,   114,   124,   168,
-       7,     7,   116,   196,   205,   206,   124,    77,   124,     5,
-     124,    77,   168,   196,     5,    67,   173,   126,    21,    22,
-      31,   215,   218,    23,    24,   127,   216,    22,   199,    27,
-     124,   162,   163,   218,   167,   124,   174,   217,   218,   218,
-      44,    45,    44,    45,   118,   158,   218,   136,   137,   218,
-      10,    61,   124,   192,   193,   194,   195,   196,   211,   124,
-     217,   192,   116,   203,   204,    58,   206,   207,     7,   218,
-       7,   125,   125,   124,   174,   177,   178,   181,   200,   218,
-     190,   172,   218,   197,   198,   218,    23,    55,   125,   196,
-     208,   126,   190,    11,   125,   126,   168,   136,    43,    66,
-      94,   111,   142,   218,   218,   124,   124,   145,   125,   126,
-      77,   138,   195,   174,   192,   196,     8,     9,    10,    11,
-      12,    13,    14,    15,    16,    17,    18,    19,    72,   213,
-      20,   209,   210,   125,   106,   196,   204,   207,   196,    59,
-     125,    67,   125,   177,    31,   179,   180,    68,    74,    82,
-      99,   176,   126,   179,    37,   110,   175,    69,   182,   125,
-     208,   125,   126,   163,   196,   218,   124,    80,    80,   124,
-      53,    60,   159,   211,   212,   218,   113,   142,   143,   144,
-     136,    10,    43,    51,    85,    94,    98,   111,   139,   140,
-     141,   125,   193,   194,    17,    18,    19,    72,   196,   124,
-     174,   196,    10,    85,   125,   126,   114,   196,   106,    59,
-     196,   125,   180,    90,    90,    90,    79,   177,     7,     7,
-     179,    40,    71,   183,   125,   196,   192,   124,   124,   217,
-       5,    63,    87,    88,   109,   219,   125,   126,   125,   126,
-      35,    38,    39,   103,   154,   126,   118,   146,    85,   124,
-     209,    80,   218,   139,   196,   124,   174,     9,   208,    85,
-     209,   124,   196,   125,   178,    93,    93,   208,   192,    89,
-     184,   125,   217,   217,   125,    53,    60,   211,   124,   155,
-     142,    36,    91,   147,   192,   124,     9,   208,   196,   125,
-     210,    88,    40,    83,   185,   125,   125,     5,   219,   149,
-     150,   151,   152,   153,   218,   124,    40,   125,   218,   196,
-     125,   125,   192,   186,   187,   196,     7,    98,   125,   126,
-       7,    29,   124,   218,   149,    70,    96,   148,   125,   126,
-      32,    54,   188,   218,   150,   217,   125,   124,   187,    86,
-     189,   124,   125,   217,    64,    81,   217,   125,   125,    92,
-       7
+       0,     1,     3,    30,    46,    47,    53,    58,    77,    99,
+     106,   117,   123,   126,   135,   136,   137,   138,   139,   140,
+     141,   162,   163,   166,   167,   170,   171,   174,   227,   228,
+     110,     4,     6,   225,    75,   110,    68,   110,    80,    29,
+      56,   175,   225,   172,   173,   186,   225,     0,   126,   128,
+      77,   174,   126,   129,     3,   225,    68,   225,   225,   225,
+     225,   225,     5,     7,    21,    22,    23,    33,    34,    41,
+      42,    48,    49,    51,    57,    63,    66,    78,    79,    86,
+      89,   101,   109,   112,   113,   120,   125,   130,   144,   176,
+     177,   178,   180,   202,   203,   204,   205,   206,   207,   208,
+     215,   218,   221,   225,   107,   132,    31,   130,    80,    28,
+      58,     5,    92,   130,   122,   196,   197,   119,   130,   174,
+       7,     7,   121,   202,   211,   212,   130,    79,   130,     5,
+     130,    79,   174,   202,     5,    68,   179,   132,    21,    22,
+      31,   222,   225,    23,    24,   133,   223,    22,   205,    27,
+     130,   168,   169,   225,   173,   130,   180,   224,   225,   225,
+      44,    45,    44,    45,   123,   164,   225,   142,   143,   225,
+      10,    62,   130,   198,   199,   200,   201,   202,   218,   130,
+     224,   198,   121,   209,   210,    59,   212,   213,     7,    50,
+      73,    87,    88,   105,   124,   216,   216,     7,   131,   131,
+     130,   180,   183,   184,   187,   206,   225,   196,   178,   225,
+     203,   204,   225,    23,    56,   131,   202,   214,   132,   196,
+      11,   131,   132,   174,   142,    43,    67,    98,   116,   148,
+     225,   225,   130,   130,   151,   131,   132,    79,   144,   201,
+     180,   198,   202,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    74,   220,    20,   215,   217,
+     131,   111,   202,   210,   213,   202,    60,   131,    68,   131,
+     183,    31,   185,   186,    69,    76,    84,   103,   182,   132,
+     185,    37,   115,   181,    70,   188,   131,   214,   131,   132,
+     169,   202,   225,   130,    82,    82,   130,    54,    61,   165,
+     218,   219,   225,   118,   148,   149,   150,   142,    10,    43,
+      52,    89,    98,   102,   116,   145,   146,   147,   131,   199,
+     200,    17,    18,    19,    74,   202,   130,   180,   202,    10,
+      89,   131,   132,   119,   202,   111,    60,   202,   131,   186,
+      94,    94,    94,    81,   183,     7,     7,   185,    40,    72,
+     189,   131,   202,   198,   130,   130,   224,     5,    64,    91,
+      92,   114,   226,   131,   132,   131,   132,    35,    38,    39,
+     108,   160,   132,   123,   152,    89,   130,   215,    82,   225,
+     145,   202,   130,   180,     9,   214,    89,   215,   130,   202,
+     131,   184,    97,    97,   214,   198,    93,   190,   131,   224,
+     224,   131,    54,    61,   218,   130,   161,   148,    36,    95,
+     153,   198,   130,     9,   214,   202,   131,   217,    92,    40,
+      85,   191,   131,   131,     5,   226,   155,   156,   157,   158,
+     159,   225,   130,    40,   131,   225,   202,   131,   131,   198,
+     192,   193,   202,     7,   102,   131,   132,     7,    29,   130,
+     225,   155,    71,   100,   154,   131,   132,    32,    55,   194,
+     225,   156,   224,   131,   130,   193,    90,   195,   130,   131,
+     224,    65,    83,   224,   131,   131,    96,     7
 };
 
   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint8 yyr1[] =
 {
-       0,   128,   129,   129,   129,   129,   129,   129,   130,   130,
-     130,   130,   130,   130,   130,   130,   130,   130,   131,   132,
-     132,   132,   132,   133,   134,   135,   136,   137,   137,   138,
-     138,   138,   138,   138,   138,   138,   138,   138,   138,   138,
-     138,   138,   138,   138,   138,   138,   138,   139,   139,   139,
-     139,   139,   139,   139,   140,   140,   141,   141,   142,   142,
-     142,   142,   143,   143,   144,   144,   145,   145,   146,   146,
-     147,   147,   148,   148,   149,   149,   150,   150,   150,   151,
-     151,   152,   153,   154,   154,   154,   154,   155,   155,   156,
-     156,   156,   156,   157,   158,   158,   159,   159,   159,   159,
-     160,   161,   162,   162,   163,   164,   164,   165,   166,   166,
-     167,   168,   169,   169,   169,   170,   170,   171,   171,   172,
-     172,   172,   173,   174,   175,   175,   175,   176,   176,   176,
-     176,   176,   176,   176,   176,   177,   177,   178,   178,   178,
-     178,   178,   178,   179,   179,   180,   180,   181,   181,   182,
-     182,   183,   183,   184,   184,   185,   185,   186,   186,   187,
-     188,   188,   188,   189,   189,   189,   190,   190,   191,   192,
-     192,   193,   193,   194,   194,   195,   195,   195,   195,   195,
-     195,   195,   195,   195,   195,   195,   196,   196,   197,   197,
-     198,   198,   199,   199,   199,   199,   199,   199,   199,   200,
-     200,   200,   200,   201,   202,   202,   203,   203,   204,   205,
-     205,   206,   207,   207,   208,   208,   209,   209,   209,   209,
-     209,   209,   209,   210,   210,   211,   211,   212,   212,   213,
-     213,   213,   213,   213,   213,   213,   213,   213,   213,   214,
-     215,   215,   216,   216,   216,   217,   217,   218,   218,   219,
-     219,   219,   219,   220,   221,   221
+       0,   134,   135,   135,   135,   135,   135,   135,   136,   136,
+     136,   136,   136,   136,   136,   136,   136,   136,   137,   138,
+     138,   138,   138,   139,   140,   141,   142,   143,   143,   144,
+     144,   144,   144,   144,   144,   144,   144,   144,   144,   144,
+     144,   144,   144,   144,   144,   144,   144,   145,   145,   145,
+     145,   145,   145,   145,   146,   146,   147,   147,   148,   148,
+     148,   148,   149,   149,   150,   150,   151,   151,   152,   152,
+     153,   153,   154,   154,   155,   155,   156,   156,   156,   157,
+     157,   158,   159,   160,   160,   160,   160,   161,   161,   162,
+     162,   162,   162,   163,   164,   164,   165,   165,   165,   165,
+     166,   167,   168,   168,   169,   170,   170,   171,   172,   172,
+     173,   174,   175,   175,   175,   176,   176,   177,   177,   178,
+     178,   178,   179,   180,   181,   181,   181,   182,   182,   182,
+     182,   182,   182,   182,   182,   183,   183,   184,   184,   184,
+     184,   184,   184,   185,   185,   186,   186,   187,   187,   188,
+     188,   189,   189,   190,   190,   191,   191,   192,   192,   193,
+     194,   194,   194,   195,   195,   195,   196,   196,   197,   198,
+     198,   199,   199,   200,   200,   201,   201,   201,   201,   201,
+     201,   201,   201,   201,   201,   201,   202,   202,   203,   203,
+     204,   204,   205,   205,   205,   205,   205,   205,   205,   206,
+     206,   206,   206,   207,   208,   208,   209,   209,   210,   211,
+     211,   212,   213,   213,   214,   214,   215,   215,   215,   215,
+     215,   215,   215,   215,   216,   216,   216,   216,   216,   216,
+     217,   217,   218,   218,   219,   219,   220,   220,   220,   220,
+     220,   220,   220,   220,   220,   220,   221,   222,   222,   223,
+     223,   223,   224,   224,   225,   225,   226,   226,   226,   226,
+     227,   228,   228
 };
 
   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
@@ -1349,10 +1384,11 @@ static const yytype_uint8 yyr2[] =
        2,     1,     1,     1,     1,     1,     1,     3,     1,     3,
        4,     4,     5,     6,     5,     4,     1,     2,     4,     1,
        2,     4,     0,     2,     1,     3,     1,     1,     2,     2,
-       1,     2,     2,     1,     3,     1,     3,     1,     3,     1,
-       1,     1,     1,     1,     1,     1,     2,     1,     2,     1,
-       1,     1,     1,     1,     1,     1,     3,     1,     1,     1,
-       1,     1,     1,     2,     2,     0
+       1,     2,     3,     2,     1,     1,     1,     1,     1,     1,
+       1,     3,     1,     3,     1,     3,     1,     1,     1,     1,
+       1,     1,     1,     2,     1,     2,     1,     1,     1,     1,
+       1,     1,     1,     3,     1,     1,     1,     1,     1,     1,
+       2,     2,     0
 };
 
 
@@ -1849,909 +1885,919 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
   switch (yytype)
     {
           case 3: /* TOKEN_COMMAND  */
-#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 573 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).string_value_) != nullptr) {
     delete ((*yyvaluep).string_value_);
   }
 }
-#line 1859 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 1895 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 4: /* TOKEN_NAME  */
-#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 573 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).string_value_) != nullptr) {
     delete ((*yyvaluep).string_value_);
   }
 }
-#line 1869 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 1905 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 5: /* TOKEN_STRING_SINGLE_QUOTED  */
-#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 573 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).string_value_) != nullptr) {
     delete ((*yyvaluep).string_value_);
   }
 }
-#line 1879 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 1915 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 6: /* TOKEN_STRING_DOUBLE_QUOTED  */
-#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 573 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).string_value_) != nullptr) {
     delete ((*yyvaluep).string_value_);
   }
 }
-#line 1889 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 1925 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
     case 7: /* TOKEN_UNSIGNED_NUMVAL  */
-#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
+#line 573 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).numeric_literal_value_) != nullptr) {
     delete ((*yyvaluep).numeric_literal_value_);
   }
 }
-#line 1899 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 1935 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 130: /* sql_statement  */
-#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 136: /* sql_statement  */
+#line 573 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).statement_) != nullptr) {
     delete ((*yyvaluep).statement_);
   }
 }
-#line 1909 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 1945 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 131: /* quit_statement  */
-#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 137: /* quit_statement  */
+#line 573 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).quit_statement_) != nullptr) {
     delete ((*yyvaluep).quit_statement_);
   }
 }
-#line 1919 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 1955 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 132: /* alter_table_statement  */
-#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 138: /* alter_table_statement  */
+#line 573 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).statement_) != nullptr) {
     delete ((*yyvaluep).statement_);
   }
 }
-#line 1929 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 1965 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 133: /* create_table_statement  */
-#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 139: /* create_table_statement  */
+#line 573 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).create_table_statement_) != nullptr) {
     delete ((*yyvaluep).create_table_statement_);
   }
 }
-#line 1939 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 1975 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 134: /* create_index_statement  */
-#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 140: /* create_index_statement  */
+#line 573 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).statement_) != nullptr) {
     delete ((*yyvaluep).statement_);
   }
 }
-#line 1949 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 1985 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 135: /* drop_table_statement  */
-#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 141: /* drop_table_statement  */
+#line 573 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).drop_table_statement_) != nullptr) {
     delete ((*yyvaluep).drop_table_statement_);
   }
 }
-#line 1959 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 1995 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 136: /* column_def  */
-#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 142: /* column_def  */
+#line 573 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).attribute_definition_) != nullptr) {
     delete ((*yyvaluep).attribute_definition_);
   }
 }
-#line 1969 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2005 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 137: /* column_def_commalist  */
-#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 143: /* column_def_commalist  */
+#line 573 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).attribute_definition_list_) != nullptr) {
     delete ((*yyvaluep).attribute_definition_list_);
   }
 }
-#line 1979 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2015 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 138: /* data_type  */
-#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 144: /* data_type  */
+#line 573 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).data_type_) != nullptr) {
     delete ((*yyvaluep).data_type_);
   }
 }
-#line 1989 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2025 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 139: /* column_constraint_def  */
-#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 145: /* column_constraint_def  */
+#line 573 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).column_constraint_) != nullptr) {
     delete ((*yyvaluep).column_constraint_);
   }
 }
-#line 1999 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2035 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 140: /* column_constraint_def_list  */
-#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 146: /* column_constraint_def_list  */
+#line 573 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).column_constraint_list_) != nullptr) {
     delete ((*yyvaluep).column_constraint_list_);
   }
 }
-#line 2009 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2045 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 141: /* opt_column_constraint_def_list  */
-#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 147: /* opt_column_constraint_def_list  */
+#line 573 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).column_constraint_list_) != nullptr) {
     delete ((*yyvaluep).column_constraint_list_);
   }
 }
-#line 2019 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2055 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 145: /* opt_column_list  */
-#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 151: /* opt_column_list  */
+#line 573 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).attribute_list_) != nullptr) {
     delete ((*yyvaluep).attribute_list_);
   }
 }
-#line 2029 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2065 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 146: /* opt_block_properties  */
-#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 152: /* opt_block_properties  */
+#line 573 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).block_properties_) != nullptr) {
     delete ((*yyvaluep).block_properties_);
   }
 }
-#line 2039 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2075 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 147: /* opt_partition_clause  */
-#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 153: /* opt_partition_clause  */
+#line 573 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).partition_clause_) != nullptr) {
     delete ((*yyvaluep).partition_clause_);
   }
 }
-#line 2049 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2085 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 148: /* partition_type  */
-#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 154: /* partition_type  */
+#line 573 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).string_value_) != nullptr) {
     delete ((*yyvaluep).string_value_);
   }
 }
-#line 2059 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2095 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 149: /* key_value_list  */
-#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 155: /* key_value_list  */
+#line 573 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).key_value_list_) != nullptr) {
     delete ((*yyvaluep).key_value_list_);
   }
 }
-#line 2069 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2105 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 150: /* key_value  */
-#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 156: /* key_value  */
+#line 573 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).key_value_) != nullptr) {
     delete ((*yyvaluep).key_value_);
   }
 }
-#line 2079 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2115 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 151: /* key_string_value  */
-#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 157: /* key_string_value  */
+#line 573 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).key_string_value_) != nullptr) {
     delete ((*yyvaluep).key_string_value_);
   }
 }
-#line 2089 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2125 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 152: /* key_string_list  */
-#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 158: /* key_string_list  */
+#line 573 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).key_string_list_) != nullptr) {
     delete ((*yyvaluep).key_string_list_);
   }
 }
-#line 2099 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2135 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 153: /* key_integer_value  */
-#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 159: /* key_integer_value  */
+#line 573 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).key_integer_value_) != nullptr) {
     delete ((*yyvaluep).key_integer_value_);
   }
 }
-#line 2109 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2145 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 154: /* index_type  */
-#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 160: /* index_type  */
+#line 573 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).string_value_) != nullptr) {
     delete ((*yyvaluep).string_value_);
   }
 }
-#line 2119 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2155 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 155: /* opt_index_properties  */
-#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 161: /* opt_index_properties  */
+#line 573 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).key_value_list_) != nullptr) {
     delete ((*yyvaluep).key_value_list_);
   }
 }
-#line 2129 "SqlParser_gen.cpp" /* yacc.c:1257  */
+#line 2165 "SqlParser_gen.cpp" /* yacc.c:1257  */
         break;
 
-    case 156: /* insert_statement  */
-#line 566 "../SqlParser.ypp" /* yacc.c:1257  */
+    case 162: /* insert_statement  */
+#line 573 "../SqlParser.ypp" /* yacc.c:1257  */
       {
   if (((*yyvaluep).insert_statement_) != nullptr) {
     delete ((*yyvaluep).insert_statement_);
   }
 }
-#lin

<TRUNCATED>