]> andersk Git - splint.git/commitdiff
Changed to used /\ and requires instead of bufferConstraint exportPreAlpha
authordlaroche <dlaroche>
Mon, 18 Jun 2001 13:18:11 +0000 (13:18 +0000)
committerdlaroche <dlaroche>
Mon, 18 Jun 2001 13:18:11 +0000 (13:18 +0000)
changed to used /\ and requires and ensures instead of bufferConstraint and ensuresConstraint

src/Headers/cgrammar_tokens.h
src/Headers/local_constants.h
src/Headers/local_constants.last
src/cgrammar.tab.c
src/cgrammar.y
src/cscanner.l
src/lex.yy.c
test/globalbufferannotation/globalvariable.c
test/maxset/maxsetannotations.c
test/simplebufferConstraintTests/m.c
test/simplebufferConstraintTests/sizeof.c

index f0266acb0f7775081f3441f96b1859b984a57260..75d11c4e002031b8f16a3406ab837c31bc718166 100644 (file)
@@ -254,13 +254,14 @@ typedef union
 #define        QMAXSET 434
 #define        QMAXREAD        435
 #define        QTESTINRANGE    436
-#define        IDENTIFIER      437
-#define        NEW_IDENTIFIER  438
-#define        TYPE_NAME_OR_ID 439
-#define        CCONSTANT       440
-#define        ITER_NAME       441
-#define        ITER_ENDNAME    442
-#define        TYPE_NAME       443
+#define        TCAND   437
+#define        IDENTIFIER      438
+#define        NEW_IDENTIFIER  439
+#define        TYPE_NAME_OR_ID 440
+#define        CCONSTANT       441
+#define        ITER_NAME       442
+#define        ITER_ENDNAME    443
+#define        TYPE_NAME       444
 
 
 extern YYSTYPE yylval;
index de2e753d565b5dd04b32ab07e7e55603e4151838..a6f582af761d0ffa2998cd7bd4bb22ace4c68fc1 100644 (file)
@@ -1,7 +1,7 @@
 /* local_constants.h - created automatically by gmake localconstants */
 /*@constant observer char *SYSTEM_LIBDIR;@*/
-# define SYSTEM_LIBDIR "/usr/include"
+# define SYSTEM_LIBDIR /usr/include
 /*@constant observer char *DEFAULT_LARCHPATH;@*/
-# define DEFAULT_LARCHPATH ".:/afs/cert.org/usr/dlaroche/LCLintDev/lib"
+# define DEFAULT_LARCHPATH /usr/local/lclint-2.5m/lib
 /*@constant observer char *DEFAULT_LCLIMPORTDIR;@*/
-# define DEFAULT_LCLIMPORTDIR "/afs/cert.org/usr/dlaroche/LCLintDev/imports"
+# define DEFAULT_LCLIMPORTDIR /usr/local/lclint-2.5m/imports
index 865afaa0f20852fa0abde309a9c2d376a9a6fcc4..de2e753d565b5dd04b32ab07e7e55603e4151838 100644 (file)
@@ -2,6 +2,6 @@
 /*@constant observer char *SYSTEM_LIBDIR;@*/
 # define SYSTEM_LIBDIR "/usr/include"
 /*@constant observer char *DEFAULT_LARCHPATH;@*/
-# define DEFAULT_LARCHPATH ".:/a/apollo.cs.Virginia.EDU/af10/evans/lclint-build/lclint-2.5m/lib"
+# define DEFAULT_LARCHPATH ".:/afs/cert.org/usr/dlaroche/LCLintDev/lib"
 /*@constant observer char *DEFAULT_LCLIMPORTDIR;@*/
-# define DEFAULT_LCLIMPORTDIR "/a/apollo.cs.Virginia.EDU/af10/evans/lclint-build/lclint-2.5m/imports"
+# define DEFAULT_LCLIMPORTDIR "/afs/cert.org/usr/dlaroche/LCLintDev/imports"
index fd30c61667979a0ab2f0505c2f4c86d9963728bc..bfba8e704345eacf42adc2fd746db9e0161a6dc6 100644 (file)
 #define        QMAXSET 434
 #define        QMAXREAD        435
 #define        QTESTINRANGE    436
-#define        IDENTIFIER      437
-#define        NEW_IDENTIFIER  438
-#define        TYPE_NAME_OR_ID 439
-#define        CCONSTANT       440
-#define        ITER_NAME       441
-#define        ITER_ENDNAME    442
-#define        TYPE_NAME       443
+#define        TCAND   437
+#define        IDENTIFIER      438
+#define        NEW_IDENTIFIER  439
+#define        TYPE_NAME_OR_ID 440
+#define        CCONSTANT       441
+#define        ITER_NAME       442
+#define        ITER_ENDNAME    443
+#define        TYPE_NAME       444
 
 #line 19 "cgrammar.y"
 
@@ -292,11 +293,11 @@ typedef union
 
 
 
-#define        YYFINAL         1216
+#define        YYFINAL         1218
 #define        YYFLAG          -32768
-#define        YYNTBASE        190
+#define        YYNTBASE        191
 
-#define YYTRANSLATE(x) ((unsigned)(x) <= 443 ? yytranslate[x] : 433)
+#define YYTRANSLATE(x) ((unsigned)(x) <= 444 ? yytranslate[x] : 434)
 
 static const short yytranslate[] = {     0,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -343,7 +344,7 @@ static const short yytranslate[] = {     0,
    157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
    167,   168,   169,   170,   171,   172,   173,   174,   175,   176,
    177,   178,   179,   180,   181,   182,   183,   184,   185,   186,
-   187,   188,   189
+   187,   188,   189,   190
 };
 
 #if YYDEBUG != 0
@@ -353,354 +354,354 @@ static const short yyprhs[] = {     0,
     64,    71,    75,    82,    83,    91,    92,   101,   103,   110,
    114,   121,   122,   129,   130,   138,   139,   140,   151,   155,
    159,   163,   166,   168,   169,   172,   173,   176,   179,   180,
-   185,   186,   187,   192,   193,   196,   198,   203,   205,   207,
-   209,   211,   213,   215,   220,   226,   228,   230,   232,   234,
-   238,   243,   246,   250,   254,   258,   260,   262,   264,   265,
-   268,   269,   272,   274,   277,   279,   282,   284,   287,   289,
-   293,   296,   298,   300,   302,   304,   306,   308,   310,   311,
-   314,   315,   322,   323,   330,   332,   334,   335,   336,   342,
-   343,   349,   351,   353,   354,   356,   357,   358,   362,   363,
-   367,   369,   371,   373,   375,   377,   379,   381,   383,   385,
-   387,   389,   391,   393,   395,   397,   399,   401,   402,   410,
-   411,   420,   422,   426,   427,   431,   432,   436,   439,   443,
-   446,   449,   451,   453,   455,   459,   464,   467,   471,   475,
-   479,   481,   483,   485,   489,   491,   493,   497,   502,   505,
-   509,   513,   517,   519,   523,   525,   527,   529,   533,   535,
-   537,   539,   544,   548,   553,   560,   566,   572,   575,   578,
-   580,   584,   586,   589,   592,   595,   598,   601,   604,   607,
-   610,   612,   614,   618,   620,   630,   631,   635,   640,   643,
-   648,   651,   653,   658,   660,   664,   668,   672,   674,   678,
-   682,   684,   688,   692,   694,   698,   702,   706,   710,   712,
-   716,   720,   722,   726,   728,   732,   734,   738,   740,   741,
-   746,   748,   749,   754,   756,   757,   758,   766,   768,   772,
-   776,   780,   784,   788,   792,   796,   800,   804,   808,   812,
-   814,   818,   819,   821,   823,   825,   827,   829,   833,   834,
-   844,   845,   857,   860,   861,   868,   869,   877,   882,   887,
-   888,   889,   892,   894,   899,   900,   905,   907,   911,   916,
-   918,   922,   924,   926,   928,   930,   932,   935,   938,   941,
-   944,   947,   950,   953,   956,   959,   962,   965,   968,   971,
-   974,   977,   980,   983,   986,   989,   992,   995,   998,  1001,
-  1004,  1007,  1010,  1013,  1016,  1019,  1022,  1025,  1028,  1031,
-  1034,  1037,  1040,  1043,  1046,  1049,  1052,  1055,  1058,  1061,
-  1064,  1067,  1070,  1072,  1074,  1076,  1078,  1081,  1084,  1087,
-  1090,  1093,  1096,  1099,  1102,  1105,  1108,  1111,  1114,  1117,
-  1120,  1124,  1126,  1131,  1133,  1137,  1140,  1143,  1146,  1147,
-  1149,  1150,  1151,  1163,  1164,  1165,  1177,  1184,  1191,  1192,
-  1193,  1204,  1205,  1206,  1217,  1223,  1229,  1234,  1239,  1240,
-  1242,  1244,  1247,  1253,  1257,  1260,  1265,  1267,  1271,  1276,
-  1283,  1284,  1293,  1298,  1300,  1304,  1307,  1309,  1314,  1316,
-  1318,  1321,  1324,  1326,  1329,  1331,  1334,  1336,  1338,  1340,
-  1343,  1345,  1348,  1351,  1355,  1357,  1361,  1363,  1367,  1369,
-  1371,  1375,  1376,  1379,  1380,  1385,  1390,  1392,  1394,  1397,
-  1399,  1401,  1404,  1405,  1407,  1413,  1416,  1420,  1424,  1429,
-  1433,  1438,  1443,  1449,  1451,  1453,  1455,  1457,  1459,  1461,
-  1463,  1465,  1467,  1470,  1472,  1474,  1476,  1479,  1482,  1490,
-  1497,  1500,  1501,  1502,  1513,  1514,  1521,  1523,  1525,  1527,
-  1529,  1532,  1534,  1536,  1538,  1540,  1542,  1544,  1546,  1550,
-  1552,  1555,  1558,  1561,  1563,  1565,  1567,  1569,  1571,  1573,
-  1575,  1577,  1579,  1581,  1585,  1587,  1589,  1592,  1595,  1596,
-  1601,  1602,  1608,  1609,  1613,  1614,  1619,  1623,  1626,  1630,
-  1631,  1632,  1633,  1634,  1635,  1637,  1640,  1643,  1647,  1650,
-  1654,  1658,  1663,  1666,  1669,  1673,  1677,  1682,  1684,  1687,
-  1689,  1692,  1694,  1697,  1699,  1702,  1704,  1707,  1709,  1714,
-  1717,  1718,  1724,  1725,  1732,  1737,  1742,  1743,  1744,  1755,
-  1757,  1758,  1763,  1765,  1767,  1769,  1771,  1773,  1777,  1779,
-  1784,  1788,  1793,  1800,  1806,  1812,  1815,  1818,  1820,  1823,
-  1826,  1829,  1832,  1835,  1838,  1841,  1844,  1846,  1848,  1853,
-  1855,  1859,  1863,  1867,  1869,  1873,  1877,  1879,  1883,  1887,
-  1889,  1893,  1897,  1901,  1905,  1907,  1911,  1915,  1917,  1921,
-  1923,  1927,  1929,  1933,  1935,  1939,  1941,  1945,  1947,  1948,
-  1949,  1957,  1959,  1963,  1967,  1971,  1975,  1979,  1983,  1987,
-  1991,  1995,  1999,  2003,  2005,  2006,  2008,  2011,  2019,  2022,
-  2025,  2033,  2040,  2043,  2047,  2050,  2054,  2057,  2061,  2065,
-  2069,  2073,  2076,  2080,  2081,  2083,  2085,  2087,  2089,  2091,
-  2093,  2095,  2097
+   186,   187,   188,   194,   195,   199,   201,   205,   207,   209,
+   211,   213,   215,   217,   222,   228,   230,   232,   234,   236,
+   240,   245,   248,   252,   256,   260,   262,   264,   266,   267,
+   270,   271,   274,   276,   279,   281,   284,   286,   289,   291,
+   295,   298,   300,   302,   304,   306,   308,   310,   312,   313,
+   316,   317,   324,   325,   332,   334,   336,   337,   338,   344,
+   345,   351,   353,   355,   356,   358,   359,   360,   364,   365,
+   369,   371,   373,   375,   377,   379,   381,   383,   385,   387,
+   389,   391,   393,   395,   397,   399,   401,   403,   404,   412,
+   413,   422,   424,   428,   429,   433,   434,   438,   441,   445,
+   448,   451,   453,   455,   457,   461,   466,   469,   473,   477,
+   481,   483,   485,   487,   491,   493,   495,   499,   504,   507,
+   511,   515,   519,   521,   525,   527,   529,   531,   535,   537,
+   539,   541,   546,   550,   555,   562,   568,   574,   577,   580,
+   582,   586,   588,   591,   594,   597,   600,   603,   606,   609,
+   612,   614,   616,   620,   622,   632,   633,   637,   642,   645,
+   650,   653,   655,   660,   662,   666,   670,   674,   676,   680,
+   684,   686,   690,   694,   696,   700,   704,   708,   712,   714,
+   718,   722,   724,   728,   730,   734,   736,   740,   742,   743,
+   748,   750,   751,   756,   758,   759,   760,   768,   770,   774,
+   778,   782,   786,   790,   794,   798,   802,   806,   810,   814,
+   816,   820,   821,   823,   825,   827,   829,   831,   835,   836,
+   846,   847,   859,   862,   863,   870,   871,   879,   884,   889,
+   890,   891,   894,   896,   901,   902,   907,   909,   913,   918,
+   920,   924,   926,   928,   930,   932,   934,   937,   940,   943,
+   946,   949,   952,   955,   958,   961,   964,   967,   970,   973,
+   976,   979,   982,   985,   988,   991,   994,   997,  1000,  1003,
+  1006,  1009,  1012,  1015,  1018,  1021,  1024,  1027,  1030,  1033,
+  1036,  1039,  1042,  1045,  1048,  1051,  1054,  1057,  1060,  1063,
+  1066,  1069,  1072,  1074,  1076,  1078,  1080,  1083,  1086,  1089,
+  1092,  1095,  1098,  1101,  1104,  1107,  1110,  1113,  1116,  1119,
+  1122,  1126,  1128,  1133,  1135,  1139,  1142,  1145,  1148,  1149,
+  1151,  1152,  1153,  1165,  1166,  1167,  1179,  1186,  1193,  1194,
+  1195,  1206,  1207,  1208,  1219,  1225,  1231,  1236,  1241,  1242,
+  1244,  1246,  1249,  1255,  1259,  1262,  1267,  1269,  1273,  1278,
+  1285,  1286,  1295,  1300,  1302,  1306,  1309,  1311,  1316,  1318,
+  1320,  1323,  1326,  1328,  1331,  1333,  1336,  1338,  1340,  1342,
+  1345,  1347,  1350,  1353,  1357,  1359,  1363,  1365,  1369,  1371,
+  1373,  1377,  1378,  1381,  1382,  1387,  1392,  1394,  1396,  1399,
+  1401,  1403,  1406,  1407,  1409,  1415,  1418,  1422,  1426,  1431,
+  1435,  1440,  1445,  1451,  1453,  1455,  1457,  1459,  1461,  1463,
+  1465,  1467,  1469,  1472,  1474,  1476,  1478,  1481,  1484,  1492,
+  1499,  1502,  1503,  1504,  1515,  1516,  1523,  1525,  1527,  1529,
+  1531,  1534,  1536,  1538,  1540,  1542,  1544,  1546,  1548,  1552,
+  1554,  1557,  1560,  1563,  1565,  1567,  1569,  1571,  1573,  1575,
+  1577,  1579,  1581,  1583,  1587,  1589,  1591,  1594,  1597,  1598,
+  1603,  1604,  1610,  1611,  1615,  1616,  1621,  1625,  1628,  1632,
+  1633,  1634,  1635,  1636,  1637,  1639,  1642,  1645,  1649,  1652,
+  1656,  1660,  1665,  1668,  1671,  1675,  1679,  1684,  1686,  1689,
+  1691,  1694,  1696,  1699,  1701,  1704,  1706,  1709,  1711,  1716,
+  1719,  1720,  1726,  1727,  1734,  1739,  1744,  1745,  1746,  1757,
+  1759,  1760,  1765,  1767,  1769,  1771,  1773,  1775,  1779,  1781,
+  1786,  1790,  1795,  1802,  1808,  1814,  1817,  1820,  1822,  1825,
+  1828,  1831,  1834,  1837,  1840,  1843,  1846,  1848,  1850,  1855,
+  1857,  1861,  1865,  1869,  1871,  1875,  1879,  1881,  1885,  1889,
+  1891,  1895,  1899,  1903,  1907,  1909,  1913,  1917,  1919,  1923,
+  1925,  1929,  1931,  1935,  1937,  1941,  1943,  1947,  1949,  1950,
+  1951,  1959,  1961,  1965,  1969,  1973,  1977,  1981,  1985,  1989,
+  1993,  1997,  2001,  2005,  2007,  2008,  2010,  2013,  2021,  2024,
+  2027,  2035,  2042,  2045,  2049,  2052,  2056,  2059,  2063,  2067,
+  2071,  2075,  2078,  2082,  2083,  2085,  2087,  2089,  2091,  2093,
+  2095,  2097,  2099
 };
 
 static const short yyrhs[] = {    -1,
-   191,     0,   192,     0,   191,   192,     0,   260,   429,     0,
-   193,     0,   194,     0,   204,     0,   207,     0,   297,     0,
-     1,     0,    75,   317,   330,   340,   330,   429,   305,    88,
-     0,    75,   317,   330,   340,   330,    23,   305,   310,   309,
-   429,    88,     0,     0,    76,   195,   196,   429,    88,     0,
-   197,     0,   317,   330,   197,     0,   201,     0,   344,   201,
-     0,   431,     0,   305,    24,   330,   340,   305,    25,     0,
-   198,    26,    27,     0,   198,    26,   305,   296,    27,   330,
-     0,     0,   198,   306,    24,    25,   199,   209,   211,     0,
-     0,   198,   306,    24,   341,    25,   200,   209,   211,     0,
-   431,     0,   305,    24,   330,   197,   305,    25,     0,   201,
-    26,    27,     0,   201,    26,   305,   296,    27,   330,     0,
-     0,   201,   306,    24,    25,   202,   227,     0,     0,   201,
-   306,    24,   341,    25,   203,   227,     0,     0,     0,    77,
-   431,    24,   341,    25,   205,   227,   206,   429,    88,     0,
-    89,   370,    92,     0,    90,   357,    92,     0,    91,   358,
-    92,     0,    89,    92,     0,   256,     0,     0,   210,   229,
-     0,     0,   212,   213,     0,   216,   214,     0,     0,   215,
-   178,   218,    88,     0,     0,     0,   217,   177,   218,    88,
-     0,     0,   219,   218,     0,   219,     0,   222,   221,   222,
-    18,     0,   180,     0,   181,     0,    52,     0,    51,     0,
-    53,     0,   223,     0,   225,    24,   222,    25,     0,    24,
-   222,   226,   222,    25,     0,   224,     0,   186,     0,   430,
-     0,   184,     0,   224,    26,    27,     0,   224,    26,   186,
-    27,     0,    34,   224,     0,    24,   224,    25,     0,   224,
-    28,   431,     0,   224,    44,   431,     0,   220,     0,    33,
-     0,    32,     0,     0,     0,   230,     0,     0,   228,   230,
-     0,   237,     0,   231,   237,     0,   240,     0,   231,   240,
-     0,   253,     0,   253,   231,     0,   233,     0,   232,    21,
-   233,     0,   236,   234,     0,   430,     0,   184,     0,    86,
-     0,    87,     0,   116,     0,   117,     0,   130,     0,     0,
-   235,   236,     0,     0,    72,   238,   390,   429,    88,   243,
-     0,     0,    72,   239,   232,   429,    88,   243,     0,    74,
-     0,   244,     0,     0,     0,    72,   241,   390,   429,   243,
-     0,     0,    72,   242,   232,   429,   243,     0,    74,     0,
-   246,     0,     0,   244,     0,     0,     0,    73,   245,   261,
-     0,     0,    73,   247,   262,     0,    78,     0,    79,     0,
-    80,     0,    81,     0,    82,     0,    88,     0,    88,     0,
-    83,     0,    84,     0,   119,     0,   137,     0,   135,     0,
-   133,     0,   132,     0,   121,     0,   138,     0,   150,     0,
-     0,   248,   330,   254,   267,   429,   250,   305,     0,     0,
-   251,   330,   252,   255,   267,   429,   249,   305,     0,   340,
-     0,   317,   330,   340,     0,     0,    19,   258,   386,     0,
-     0,   390,   259,   379,     0,   208,   257,     0,   265,   429,
-    88,     0,   429,    88,     0,   265,   429,     0,   429,     0,
-   430,     0,   184,     0,   263,    26,    27,     0,   263,    26,
-   264,    27,     0,    34,   263,     0,    24,   263,    25,     0,
-   263,    28,   431,     0,   263,    44,   431,     0,   263,     0,
-   186,     0,   263,     0,   265,    21,   263,     0,   430,     0,
-   184,     0,   266,    26,    27,     0,   266,    26,   264,    27,
-     0,    34,   266,     0,    24,   266,    25,     0,   266,    28,
-   431,     0,   266,    44,   431,     0,   266,     0,   267,    21,
-   266,     0,   430,     0,   184,     0,   186,     0,    24,   294,
-    25,     0,   185,     0,   111,     0,   268,     0,   269,    26,
-   294,    27,     0,   269,    24,    25,     0,   269,    24,   270,
-    25,     0,    70,    24,   293,    21,   352,    25,     0,   269,
-   330,    28,   431,   305,     0,   269,   330,    44,   431,   305,
-     0,   269,    47,     0,   269,    48,     0,   293,     0,   270,
-    21,   293,     0,   269,     0,    47,   271,     0,    48,   271,
-     0,    29,   277,     0,    34,   277,     0,    33,   277,     0,
-    32,   277,     0,    31,   277,     0,    30,   277,     0,   274,
-     0,   273,     0,   272,    28,   431,     0,   431,     0,    46,
-   305,    24,   352,   330,    21,   272,    25,   305,     0,     0,
-   305,   275,   276,     0,    42,    24,   352,    25,     0,    42,
-   271,     0,    43,    24,   352,    25,     0,    43,   271,     0,
-   271,     0,    24,   352,    25,   277,     0,   277,     0,   278,
-    34,   277,     0,   278,    35,   277,     0,   278,    36,   277,
-     0,   278,     0,   279,    33,   278,     0,   279,    32,   278,
-     0,   279,     0,   280,    49,   279,     0,   280,    50,   279,
-     0,   280,     0,   281,    37,   280,     0,   281,    38,   280,
-     0,   281,    51,   280,     0,   281,    52,   280,     0,   281,
-     0,   282,    53,   281,     0,   282,    54,   281,     0,   282,
-     0,   283,    29,   282,     0,   283,     0,   284,    39,   283,
-     0,   284,     0,   285,    40,   284,     0,   285,     0,     0,
-   286,    55,   287,   285,     0,   286,     0,     0,   288,    56,
-   289,   286,     0,   288,     0,     0,     0,   288,    41,   291,
-   294,    22,   292,   290,     0,   290,     0,   271,    23,   293,
-     0,   271,    57,   293,     0,   271,    58,   293,     0,   271,
-    59,   293,     0,   271,    60,   293,     0,   271,    61,   293,
-     0,   271,    62,   293,     0,   271,    63,   293,     0,   271,
-    64,   293,     0,   271,    65,   293,     0,   271,    66,   293,
-     0,   293,     0,   294,    21,   293,     0,     0,   294,     0,
-   290,     0,   298,     0,    71,     0,   303,     0,   317,   305,
-    18,     0,     0,   317,   330,   340,   330,   299,   305,   309,
-    18,   305,     0,     0,   317,   330,   340,   330,    23,   300,
-   305,   310,   309,    18,   305,     0,   340,   330,     0,     0,
-   340,   330,    23,   302,   305,   310,     0,     0,    45,   317,
-   304,   330,   307,   305,    18,     0,    45,   317,   305,    18,
-     0,    45,   307,   305,    18,     0,     0,     0,   308,   305,
-     0,   301,     0,   307,    21,   330,   301,     0,     0,   309,
-    21,   330,   301,     0,   293,     0,    19,   311,    20,     0,
-    19,   311,    21,    20,     0,   310,     0,   311,    21,   310,
-     0,   112,     0,   110,     0,   113,     0,   114,     0,   115,
-     0,   108,   305,     0,   109,   305,     0,   116,   305,     0,
-   117,   305,     0,   130,   305,     0,   131,   305,     0,   132,
-   305,     0,   133,   305,     0,   118,   305,     0,   120,   305,
-     0,   119,   305,     0,   128,   305,     0,   129,   305,     0,
-   121,   305,     0,   123,   305,     0,   139,   305,     0,   140,
-   305,     0,   142,   305,     0,   143,   305,     0,   141,   305,
-     0,   136,   305,     0,   151,   305,     0,   134,   305,     0,
-   135,   305,     0,   137,   305,     0,   124,   305,     0,   127,
-   305,     0,   125,   305,     0,   126,   305,     0,   156,   305,
-     0,   157,   305,     0,   148,   305,     0,   158,   305,     0,
-   149,   305,     0,   152,   305,     0,   153,   305,     0,   154,
-   305,     0,   155,   305,     0,   150,   305,     0,   159,   305,
-     0,   160,   305,     0,   163,   305,     0,   164,   305,     0,
-   161,   305,     0,   162,   305,     0,   175,   305,     0,   147,
-     0,   144,     0,   145,     0,   146,     0,   165,   330,     0,
-   167,   330,     0,   166,   330,     0,   168,   330,     0,   169,
-   330,     0,   170,   330,     0,   171,   330,     0,   172,   330,
-     0,   173,   330,     0,   174,   330,     0,   432,   330,     0,
-   321,   330,     0,   335,   330,     0,   314,   330,     0,   305,
-   317,   305,     0,   319,     0,   319,    85,   318,    88,     0,
-   352,     0,   352,    21,   318,     0,   312,   320,     0,   313,
-   320,     0,   315,   320,     0,     0,   317,     0,     0,     0,
-   330,    67,   431,   305,    19,   322,   383,   331,   384,   323,
-    20,     0,     0,     0,   330,    68,   431,   305,    19,   324,
-   383,   331,   384,   325,    20,     0,   330,    67,   431,   305,
-    19,    20,     0,   330,    68,   431,   305,    19,    20,     0,
-     0,     0,   330,    67,   305,    19,   326,   383,   331,   384,
-   327,    20,     0,     0,     0,   330,    68,   305,    19,   328,
-   383,   331,   384,   329,    20,     0,   330,    67,   305,    19,
-    20,     0,   330,    68,   305,    19,    20,     0,   330,    67,
-   431,   330,     0,   330,    68,   431,   330,     0,     0,   332,
-     0,   207,     0,   331,   332,     0,   317,   330,   333,   305,
-    18,     0,   317,   305,    18,     0,   334,   330,     0,   333,
-    21,   334,   330,     0,   340,     0,    22,   305,   296,     0,
-   340,    22,   305,   296,     0,   330,    69,    19,   337,    20,
-   305,     0,     0,   330,    69,   431,    19,   336,   337,    20,
-   305,     0,   330,    69,   431,   305,     0,   338,     0,   337,
-    21,   338,     0,   337,    21,     0,   431,     0,   431,    23,
-   305,   296,     0,   198,     0,   354,     0,   344,   189,     0,
-   344,   339,     0,   198,     0,   344,   198,     0,   347,     0,
-   330,   345,     0,   108,     0,   109,     0,   342,     0,   343,
-   342,     0,    34,     0,    34,   343,     0,    34,   344,     0,
-    34,   343,   344,     0,   346,     0,   346,    21,     5,     0,
-   431,     0,   346,    21,   431,     0,     5,     0,   348,     0,
-   348,    21,     5,     0,     0,   349,   351,     0,     0,   348,
-    21,   350,   351,     0,   305,   317,   339,   305,     0,   431,
-     0,   316,     0,   316,   353,     0,   344,     0,   355,     0,
-   344,   355,     0,     0,   355,     0,   305,    24,   330,   353,
-    25,     0,    26,    27,     0,    26,   296,    27,     0,   355,
-    26,    27,     0,   355,    26,   296,    27,     0,   305,    24,
-    25,     0,   305,    24,   347,    25,     0,   355,   305,    24,
-    25,     0,   355,   305,    24,   347,    25,     0,   372,     0,
-   373,     0,   376,     0,   379,     0,   392,     0,   395,     0,
-   426,     0,   400,     0,   428,     0,    22,   431,     0,   359,
-     0,   357,     0,   366,     0,   359,   366,     0,   399,   359,
-     0,   425,   371,    11,    24,   294,    25,    18,     0,   425,
-   371,    11,    24,   294,    25,     0,   361,   366,     0,     0,
-     0,    13,    24,   295,    18,   295,    18,   362,   295,   363,
-    25,     0,     0,   187,   381,    24,   365,   403,    25,     0,
-   188,     0,   372,     0,   373,     0,   376,     0,   368,   390,
-     0,   368,     0,   369,     0,   392,     0,   367,     0,   360,
-     0,   364,     0,   428,     0,    24,   366,    25,     0,     1,
-     0,   394,   366,     0,   381,    19,     0,   385,    20,     0,
-   371,     0,   389,     0,   372,     0,   373,     0,   376,     0,
-   380,     0,   393,     0,   395,     0,   400,     0,   427,     0,
-    24,   371,    25,     0,   428,     0,     1,     0,   431,    22,
-     0,   107,   356,     0,     0,     6,   296,   374,    22,     0,
-     0,    98,     6,   296,   375,    22,     0,     0,     7,   377,
-    22,     0,     0,    98,     7,   378,    22,     0,    24,   379,
-    25,     0,   381,   387,     0,   381,   388,   382,     0,     0,
-     0,     0,     0,     0,    20,     0,   107,    20,     0,   391,
-    20,     0,   391,   107,    20,     0,   390,    20,     0,   390,
-   107,    20,     0,   390,   391,    20,     0,   390,   391,   107,
-    20,     0,    19,   386,     0,    19,    20,     0,    19,   389,
-    20,     0,    19,   390,    20,     0,    19,   390,   391,    20,
-     0,   371,     0,   389,   371,     0,   297,     0,   390,   297,
-     0,   356,     0,   391,   356,     0,    18,     0,   294,    18,
-     0,    18,     0,   294,    18,     0,   294,     0,     8,    24,
-   294,    25,     0,   394,   356,     0,     0,   394,   356,     9,
-   396,   356,     0,     0,    10,    24,   294,   397,    25,   356,
-     0,    11,    24,   294,    25,     0,    11,    24,   294,    25,
-     0,     0,     0,   187,   401,   381,    24,   402,   403,    25,
-   379,   424,   382,     0,   405,     0,     0,   403,   404,    21,
-   405,     0,   423,     0,   430,     0,   185,     0,   184,     0,
-   186,     0,    24,   294,    25,     0,   406,     0,   269,    26,
-   294,    27,     0,   269,    24,    25,     0,   269,    24,   270,
-    25,     0,    70,    24,   293,    21,   352,    25,     0,   269,
-   330,    28,   431,   305,     0,   269,   330,    44,   431,   305,
-     0,   269,    47,     0,   269,    48,     0,   407,     0,    47,
-   271,     0,    48,   271,     0,    29,   277,     0,    34,   277,
-     0,    33,   277,     0,    32,   277,     0,    31,   277,     0,
-    30,   277,     0,   274,     0,   408,     0,    24,   352,    25,
-   277,     0,   409,     0,   278,    34,   277,     0,   278,    35,
-   277,     0,   278,    36,   277,     0,   410,     0,   279,    33,
-   278,     0,   279,    32,   278,     0,   411,     0,   280,    49,
-   279,     0,   280,    50,   279,     0,   412,     0,   281,    37,
-   280,     0,   281,    38,   280,     0,   281,    51,   280,     0,
-   281,    52,   280,     0,   413,     0,   282,    53,   281,     0,
-   282,    54,   281,     0,   414,     0,   283,    29,   282,     0,
-   415,     0,   284,    39,   283,     0,   416,     0,   285,    40,
-   284,     0,   417,     0,   286,    55,   285,     0,   418,     0,
-   288,    56,   286,     0,   419,     0,     0,     0,   288,    41,
-   421,   294,    22,   422,   290,     0,   420,     0,   271,    23,
-   293,     0,   271,    57,   293,     0,   271,    58,   293,     0,
-   271,    59,   293,     0,   271,    60,   293,     0,   271,    61,
-   293,     0,   271,    62,   293,     0,   271,    63,   293,     0,
-   271,    64,   293,     0,   271,    65,   293,     0,   271,    66,
-   293,     0,   188,     0,     0,    12,     0,   398,   356,     0,
-   425,   356,    11,    24,   294,    25,    18,     0,   361,   356,
-     0,   398,   371,     0,   425,   371,    11,    24,   294,    25,
-    18,     0,   425,   371,    11,    24,   294,    25,     0,   361,
-   371,     0,    14,   431,    18,     0,    15,    18,     0,    97,
-    15,    18,     0,    16,    18,     0,    93,    16,    18,     0,
-    94,    16,    18,     0,    95,    16,    18,     0,    96,    16,
-    18,     0,    17,    18,     0,    17,   294,    18,     0,     0,
-    18,     0,   183,     0,   184,     0,   187,     0,   188,     0,
-   430,     0,   185,     0,   189,     0,   185,     0
+   192,     0,   193,     0,   192,   193,     0,   261,   430,     0,
+   194,     0,   195,     0,   205,     0,   208,     0,   298,     0,
+     1,     0,    75,   318,   331,   341,   331,   430,   306,    88,
+     0,    75,   318,   331,   341,   331,    23,   306,   311,   310,
+   430,    88,     0,     0,    76,   196,   197,   430,    88,     0,
+   198,     0,   318,   331,   198,     0,   202,     0,   345,   202,
+     0,   432,     0,   306,    24,   331,   341,   306,    25,     0,
+   199,    26,    27,     0,   199,    26,   306,   297,    27,   331,
+     0,     0,   199,   307,    24,    25,   200,   210,   212,     0,
+     0,   199,   307,    24,   342,    25,   201,   210,   212,     0,
+   432,     0,   306,    24,   331,   198,   306,    25,     0,   202,
+    26,    27,     0,   202,    26,   306,   297,    27,   331,     0,
+     0,   202,   307,    24,    25,   203,   228,     0,     0,   202,
+   307,    24,   342,    25,   204,   228,     0,     0,     0,    77,
+   432,    24,   342,    25,   206,   228,   207,   430,    88,     0,
+    89,   371,    92,     0,    90,   358,    92,     0,    91,   359,
+    92,     0,    89,    92,     0,   257,     0,     0,   211,   230,
+     0,     0,   213,   214,     0,   217,   215,     0,     0,   216,
+   178,   219,   430,    88,     0,     0,     0,   218,   177,   219,
+   430,    88,     0,     0,   220,   183,   219,     0,   220,     0,
+   223,   222,   223,     0,   180,     0,   181,     0,    52,     0,
+    51,     0,    53,     0,   224,     0,   226,    24,   223,    25,
+     0,    24,   223,   227,   223,    25,     0,   225,     0,   187,
+     0,   431,     0,   185,     0,   225,    26,    27,     0,   225,
+    26,   187,    27,     0,    34,   225,     0,    24,   225,    25,
+     0,   225,    28,   432,     0,   225,    44,   432,     0,   221,
+     0,    33,     0,    32,     0,     0,     0,   231,     0,     0,
+   229,   231,     0,   238,     0,   232,   238,     0,   241,     0,
+   232,   241,     0,   254,     0,   254,   232,     0,   234,     0,
+   233,    21,   234,     0,   237,   235,     0,   431,     0,   185,
+     0,    86,     0,    87,     0,   116,     0,   117,     0,   130,
+     0,     0,   236,   237,     0,     0,    72,   239,   391,   430,
+    88,   244,     0,     0,    72,   240,   233,   430,    88,   244,
+     0,    74,     0,   245,     0,     0,     0,    72,   242,   391,
+   430,   244,     0,     0,    72,   243,   233,   430,   244,     0,
+    74,     0,   247,     0,     0,   245,     0,     0,     0,    73,
+   246,   262,     0,     0,    73,   248,   263,     0,    78,     0,
+    79,     0,    80,     0,    81,     0,    82,     0,    88,     0,
+    88,     0,    83,     0,    84,     0,   119,     0,   137,     0,
+   135,     0,   133,     0,   132,     0,   121,     0,   138,     0,
+   150,     0,     0,   249,   331,   255,   268,   430,   251,   306,
+     0,     0,   252,   331,   253,   256,   268,   430,   250,   306,
+     0,   341,     0,   318,   331,   341,     0,     0,    19,   259,
+   387,     0,     0,   391,   260,   380,     0,   209,   258,     0,
+   266,   430,    88,     0,   430,    88,     0,   266,   430,     0,
+   430,     0,   431,     0,   185,     0,   264,    26,    27,     0,
+   264,    26,   265,    27,     0,    34,   264,     0,    24,   264,
+    25,     0,   264,    28,   432,     0,   264,    44,   432,     0,
+   264,     0,   187,     0,   264,     0,   266,    21,   264,     0,
+   431,     0,   185,     0,   267,    26,    27,     0,   267,    26,
+   265,    27,     0,    34,   267,     0,    24,   267,    25,     0,
+   267,    28,   432,     0,   267,    44,   432,     0,   267,     0,
+   268,    21,   267,     0,   431,     0,   185,     0,   187,     0,
+    24,   295,    25,     0,   186,     0,   111,     0,   269,     0,
+   270,    26,   295,    27,     0,   270,    24,    25,     0,   270,
+    24,   271,    25,     0,    70,    24,   294,    21,   353,    25,
+     0,   270,   331,    28,   432,   306,     0,   270,   331,    44,
+   432,   306,     0,   270,    47,     0,   270,    48,     0,   294,
+     0,   271,    21,   294,     0,   270,     0,    47,   272,     0,
+    48,   272,     0,    29,   278,     0,    34,   278,     0,    33,
+   278,     0,    32,   278,     0,    31,   278,     0,    30,   278,
+     0,   275,     0,   274,     0,   273,    28,   432,     0,   432,
+     0,    46,   306,    24,   353,   331,    21,   273,    25,   306,
+     0,     0,   306,   276,   277,     0,    42,    24,   353,    25,
+     0,    42,   272,     0,    43,    24,   353,    25,     0,    43,
+   272,     0,   272,     0,    24,   353,    25,   278,     0,   278,
+     0,   279,    34,   278,     0,   279,    35,   278,     0,   279,
+    36,   278,     0,   279,     0,   280,    33,   279,     0,   280,
+    32,   279,     0,   280,     0,   281,    49,   280,     0,   281,
+    50,   280,     0,   281,     0,   282,    37,   281,     0,   282,
+    38,   281,     0,   282,    51,   281,     0,   282,    52,   281,
+     0,   282,     0,   283,    53,   282,     0,   283,    54,   282,
+     0,   283,     0,   284,    29,   283,     0,   284,     0,   285,
+    39,   284,     0,   285,     0,   286,    40,   285,     0,   286,
+     0,     0,   287,    55,   288,   286,     0,   287,     0,     0,
+   289,    56,   290,   287,     0,   289,     0,     0,     0,   289,
+    41,   292,   295,    22,   293,   291,     0,   291,     0,   272,
+    23,   294,     0,   272,    57,   294,     0,   272,    58,   294,
+     0,   272,    59,   294,     0,   272,    60,   294,     0,   272,
+    61,   294,     0,   272,    62,   294,     0,   272,    63,   294,
+     0,   272,    64,   294,     0,   272,    65,   294,     0,   272,
+    66,   294,     0,   294,     0,   295,    21,   294,     0,     0,
+   295,     0,   291,     0,   299,     0,    71,     0,   304,     0,
+   318,   306,    18,     0,     0,   318,   331,   341,   331,   300,
+   306,   310,    18,   306,     0,     0,   318,   331,   341,   331,
+    23,   301,   306,   311,   310,    18,   306,     0,   341,   331,
+     0,     0,   341,   331,    23,   303,   306,   311,     0,     0,
+    45,   318,   305,   331,   308,   306,    18,     0,    45,   318,
+   306,    18,     0,    45,   308,   306,    18,     0,     0,     0,
+   309,   306,     0,   302,     0,   308,    21,   331,   302,     0,
+     0,   310,    21,   331,   302,     0,   294,     0,    19,   312,
+    20,     0,    19,   312,    21,    20,     0,   311,     0,   312,
+    21,   311,     0,   112,     0,   110,     0,   113,     0,   114,
+     0,   115,     0,   108,   306,     0,   109,   306,     0,   116,
+   306,     0,   117,   306,     0,   130,   306,     0,   131,   306,
+     0,   132,   306,     0,   133,   306,     0,   118,   306,     0,
+   120,   306,     0,   119,   306,     0,   128,   306,     0,   129,
+   306,     0,   121,   306,     0,   123,   306,     0,   139,   306,
+     0,   140,   306,     0,   142,   306,     0,   143,   306,     0,
+   141,   306,     0,   136,   306,     0,   151,   306,     0,   134,
+   306,     0,   135,   306,     0,   137,   306,     0,   124,   306,
+     0,   127,   306,     0,   125,   306,     0,   126,   306,     0,
+   156,   306,     0,   157,   306,     0,   148,   306,     0,   158,
+   306,     0,   149,   306,     0,   152,   306,     0,   153,   306,
+     0,   154,   306,     0,   155,   306,     0,   150,   306,     0,
+   159,   306,     0,   160,   306,     0,   163,   306,     0,   164,
+   306,     0,   161,   306,     0,   162,   306,     0,   175,   306,
+     0,   147,     0,   144,     0,   145,     0,   146,     0,   165,
+   331,     0,   167,   331,     0,   166,   331,     0,   168,   331,
+     0,   169,   331,     0,   170,   331,     0,   171,   331,     0,
+   172,   331,     0,   173,   331,     0,   174,   331,     0,   433,
+   331,     0,   322,   331,     0,   336,   331,     0,   315,   331,
+     0,   306,   318,   306,     0,   320,     0,   320,    85,   319,
+    88,     0,   353,     0,   353,    21,   319,     0,   313,   321,
+     0,   314,   321,     0,   316,   321,     0,     0,   318,     0,
+     0,     0,   331,    67,   432,   306,    19,   323,   384,   332,
+   385,   324,    20,     0,     0,     0,   331,    68,   432,   306,
+    19,   325,   384,   332,   385,   326,    20,     0,   331,    67,
+   432,   306,    19,    20,     0,   331,    68,   432,   306,    19,
+    20,     0,     0,     0,   331,    67,   306,    19,   327,   384,
+   332,   385,   328,    20,     0,     0,     0,   331,    68,   306,
+    19,   329,   384,   332,   385,   330,    20,     0,   331,    67,
+   306,    19,    20,     0,   331,    68,   306,    19,    20,     0,
+   331,    67,   432,   331,     0,   331,    68,   432,   331,     0,
+     0,   333,     0,   208,     0,   332,   333,     0,   318,   331,
+   334,   306,    18,     0,   318,   306,    18,     0,   335,   331,
+     0,   334,    21,   335,   331,     0,   341,     0,    22,   306,
+   297,     0,   341,    22,   306,   297,     0,   331,    69,    19,
+   338,    20,   306,     0,     0,   331,    69,   432,    19,   337,
+   338,    20,   306,     0,   331,    69,   432,   306,     0,   339,
+     0,   338,    21,   339,     0,   338,    21,     0,   432,     0,
+   432,    23,   306,   297,     0,   199,     0,   355,     0,   345,
+   190,     0,   345,   340,     0,   199,     0,   345,   199,     0,
+   348,     0,   331,   346,     0,   108,     0,   109,     0,   343,
+     0,   344,   343,     0,    34,     0,    34,   344,     0,    34,
+   345,     0,    34,   344,   345,     0,   347,     0,   347,    21,
+     5,     0,   432,     0,   347,    21,   432,     0,     5,     0,
+   349,     0,   349,    21,     5,     0,     0,   350,   352,     0,
+     0,   349,    21,   351,   352,     0,   306,   318,   340,   306,
+     0,   432,     0,   317,     0,   317,   354,     0,   345,     0,
+   356,     0,   345,   356,     0,     0,   356,     0,   306,    24,
+   331,   354,    25,     0,    26,    27,     0,    26,   297,    27,
+     0,   356,    26,    27,     0,   356,    26,   297,    27,     0,
+   306,    24,    25,     0,   306,    24,   348,    25,     0,   356,
+   306,    24,    25,     0,   356,   306,    24,   348,    25,     0,
+   373,     0,   374,     0,   377,     0,   380,     0,   393,     0,
+   396,     0,   427,     0,   401,     0,   429,     0,    22,   432,
+     0,   360,     0,   358,     0,   367,     0,   360,   367,     0,
+   400,   360,     0,   426,   372,    11,    24,   295,    25,    18,
+     0,   426,   372,    11,    24,   295,    25,     0,   362,   367,
+     0,     0,     0,    13,    24,   296,    18,   296,    18,   363,
+   296,   364,    25,     0,     0,   188,   382,    24,   366,   404,
+    25,     0,   189,     0,   373,     0,   374,     0,   377,     0,
+   369,   391,     0,   369,     0,   370,     0,   393,     0,   368,
+     0,   361,     0,   365,     0,   429,     0,    24,   367,    25,
+     0,     1,     0,   395,   367,     0,   382,    19,     0,   386,
+    20,     0,   372,     0,   390,     0,   373,     0,   374,     0,
+   377,     0,   381,     0,   394,     0,   396,     0,   401,     0,
+   428,     0,    24,   372,    25,     0,   429,     0,     1,     0,
+   432,    22,     0,   107,   357,     0,     0,     6,   297,   375,
+    22,     0,     0,    98,     6,   297,   376,    22,     0,     0,
+     7,   378,    22,     0,     0,    98,     7,   379,    22,     0,
+    24,   380,    25,     0,   382,   388,     0,   382,   389,   383,
+     0,     0,     0,     0,     0,     0,    20,     0,   107,    20,
+     0,   392,    20,     0,   392,   107,    20,     0,   391,    20,
+     0,   391,   107,    20,     0,   391,   392,    20,     0,   391,
+   392,   107,    20,     0,    19,   387,     0,    19,    20,     0,
+    19,   390,    20,     0,    19,   391,    20,     0,    19,   391,
+   392,    20,     0,   372,     0,   390,   372,     0,   298,     0,
+   391,   298,     0,   357,     0,   392,   357,     0,    18,     0,
+   295,    18,     0,    18,     0,   295,    18,     0,   295,     0,
+     8,    24,   295,    25,     0,   395,   357,     0,     0,   395,
+   357,     9,   397,   357,     0,     0,    10,    24,   295,   398,
+    25,   357,     0,    11,    24,   295,    25,     0,    11,    24,
+   295,    25,     0,     0,     0,   188,   402,   382,    24,   403,
+   404,    25,   380,   425,   383,     0,   406,     0,     0,   404,
+   405,    21,   406,     0,   424,     0,   431,     0,   186,     0,
+   185,     0,   187,     0,    24,   295,    25,     0,   407,     0,
+   270,    26,   295,    27,     0,   270,    24,    25,     0,   270,
+    24,   271,    25,     0,    70,    24,   294,    21,   353,    25,
+     0,   270,   331,    28,   432,   306,     0,   270,   331,    44,
+   432,   306,     0,   270,    47,     0,   270,    48,     0,   408,
+     0,    47,   272,     0,    48,   272,     0,    29,   278,     0,
+    34,   278,     0,    33,   278,     0,    32,   278,     0,    31,
+   278,     0,    30,   278,     0,   275,     0,   409,     0,    24,
+   353,    25,   278,     0,   410,     0,   279,    34,   278,     0,
+   279,    35,   278,     0,   279,    36,   278,     0,   411,     0,
+   280,    33,   279,     0,   280,    32,   279,     0,   412,     0,
+   281,    49,   280,     0,   281,    50,   280,     0,   413,     0,
+   282,    37,   281,     0,   282,    38,   281,     0,   282,    51,
+   281,     0,   282,    52,   281,     0,   414,     0,   283,    53,
+   282,     0,   283,    54,   282,     0,   415,     0,   284,    29,
+   283,     0,   416,     0,   285,    39,   284,     0,   417,     0,
+   286,    40,   285,     0,   418,     0,   287,    55,   286,     0,
+   419,     0,   289,    56,   287,     0,   420,     0,     0,     0,
+   289,    41,   422,   295,    22,   423,   291,     0,   421,     0,
+   272,    23,   294,     0,   272,    57,   294,     0,   272,    58,
+   294,     0,   272,    59,   294,     0,   272,    60,   294,     0,
+   272,    61,   294,     0,   272,    62,   294,     0,   272,    63,
+   294,     0,   272,    64,   294,     0,   272,    65,   294,     0,
+   272,    66,   294,     0,   189,     0,     0,    12,     0,   399,
+   357,     0,   426,   357,    11,    24,   295,    25,    18,     0,
+   362,   357,     0,   399,   372,     0,   426,   372,    11,    24,
+   295,    25,    18,     0,   426,   372,    11,    24,   295,    25,
+     0,   362,   372,     0,    14,   432,    18,     0,    15,    18,
+     0,    97,    15,    18,     0,    16,    18,     0,    93,    16,
+    18,     0,    94,    16,    18,     0,    95,    16,    18,     0,
+    96,    16,    18,     0,    17,    18,     0,    17,   295,    18,
+     0,     0,    18,     0,   184,     0,   185,     0,   188,     0,
+   189,     0,   431,     0,   186,     0,   190,     0,   186,     0
 };
 
 #endif
 
 #if YYDEBUG != 0
 static const short yyrline[] = { 0,
-   268,   269,   272,   273,   276,   277,   278,   279,   280,   281,
-   282,   285,   287,   291,   291,   296,   302,   306,   307,   311,
-   312,   314,   316,   320,   323,   331,   334,   342,   343,   345,
-   347,   363,   367,   374,   378,   384,   386,   386,   390,   391,
-   392,   393,   396,   399,   400,   406,   407,   411,   415,   420,
-   427,   431,   436,   443,   446,   447,   450,   455,   456,   459,
-   460,   461,   464,   465,   466,   471,   472,   480,   483,   485,
-   486,   491,   492,   493,   495,   511,   515,   516,   521,   522,
-   532,   533,   536,   537,   540,   541,   544,   545,   548,   549,
-   552,   555,   556,   559,   560,   561,   562,   563,   566,   567,
-   570,   570,   573,   573,   576,   580,   581,   584,   584,   587,
-   587,   590,   594,   595,   598,   599,   602,   608,   615,   621,
-   628,   629,   630,   631,   632,   635,   638,   641,   642,   645,
-   646,   647,   648,   649,   650,   651,   652,   655,   661,   668,
-   674,   683,   689,   693,   695,   699,   702,   709,   719,   720,
-   723,   724,   727,   728,   729,   730,   731,   732,   733,   734,
-   738,   739,   743,   744,   747,   749,   751,   752,   753,   754,
-   755,   757,   761,   765,   777,   778,   779,   780,   781,   782,
-   785,   786,   787,   788,   789,   790,   791,   792,   793,   796,
-   797,   800,   801,   802,   803,   804,   805,   806,   807,   808,
-   809,   810,   813,   814,   817,   821,   822,   825,   826,   827,
-   828,   831,   832,   836,   837,   838,   839,   842,   843,   844,
-   847,   848,   849,   852,   853,   854,   855,   856,   859,   860,
-   861,   864,   865,   868,   869,   873,   874,   877,   878,   883,
-   889,   890,   896,   902,   903,   903,   905,   908,   909,   910,
-   911,   912,   913,   914,   915,   916,   917,   918,   919,   922,
-   923,   926,   927,   930,   935,   936,   937,   940,   953,   957,
-   958,   961,   966,   967,   967,   972,   973,   974,   975,   978,
-   981,   984,   987,   988,   991,   992,   995,   996,   997,  1001,
-  1003,  1012,  1013,  1014,  1015,  1016,  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,  1062,
-  1063,  1064,  1070,  1071,  1072,  1073,  1076,  1077,  1078,  1079,
-  1080,  1081,  1082,  1083,  1084,  1085,  1086,  1087,  1088,  1089,
-  1092,  1096,  1097,  1101,  1102,  1106,  1107,  1108,  1111,  1112,
-  1115,  1117,  1119,  1120,  1122,  1124,  1125,  1127,  1129,  1131,
-  1133,  1134,  1136,  1138,  1139,  1141,  1143,  1144,  1147,  1150,
-  1151,  1152,  1155,  1157,  1161,  1163,  1167,  1168,  1169,  1173,
-  1175,  1175,  1177,  1180,  1182,  1184,  1187,  1192,  1199,  1200,
-  1201,  1208,  1212,  1213,  1217,  1218,  1221,  1222,  1225,  1226,
-  1229,  1230,  1231,  1232,  1235,  1236,  1239,  1240,  1243,  1244,
-  1245,  1248,  1248,  1249,  1250,  1253,  1265,  1281,  1282,  1285,
-  1286,  1287,  1290,  1291,  1294,  1296,  1297,  1299,  1300,  1302,
-  1304,  1306,  1308,  1314,  1315,  1316,  1317,  1318,  1319,  1320,
-  1321,  1322,  1337,  1342,  1345,  1348,  1349,  1353,  1355,  1357,
-  1359,  1363,  1364,  1366,  1370,  1372,  1374,  1377,  1378,  1379,
-  1380,  1381,  1382,  1383,  1384,  1385,  1386,  1387,  1388,  1389,
-  1392,  1398,  1401,  1404,  1405,  1408,  1409,  1410,  1411,  1412,
-  1413,  1414,  1415,  1416,  1417,  1418,  1421,  1422,  1428,  1429,
-  1430,  1431,  1434,  1435,  1436,  1437,  1440,  1441,  1445,  1448,
-  1451,  1454,  1457,  1460,  1463,  1464,  1465,  1466,  1468,  1469,
-  1471,  1473,  1480,  1484,  1486,  1488,  1490,  1494,  1495,  1498,
-  1499,  1502,  1503,  1506,  1507,  1510,  1511,  1512,  1515,  1523,
-  1528,  1529,  1533,  1534,  1537,  1542,  1545,  1546,  1547,  1555,
-  1556,  1556,  1560,  1561,  1562,  1573,  1580,  1581,  1584,  1585,
-  1586,  1587,  1588,  1590,  1591,  1592,  1593,  1596,  1597,  1598,
-  1599,  1600,  1601,  1602,  1603,  1604,  1605,  1608,  1609,  1612,
-  1613,  1614,  1615,  1618,  1619,  1620,  1623,  1624,  1625,  1628,
-  1629,  1630,  1631,  1632,  1635,  1636,  1637,  1640,  1641,  1644,
-  1645,  1649,  1650,  1653,  1654,  1657,  1658,  1661,  1662,  1663,
-  1664,  1667,  1668,  1669,  1670,  1671,  1672,  1673,  1674,  1675,
-  1676,  1677,  1678,  1681,  1682,  1685,  1688,  1690,  1692,  1696,
-  1697,  1699,  1701,  1704,  1705,  1706,  1708,  1709,  1710,  1711,
-  1712,  1713,  1714,  1717,  1718,  1721,  1724,  1725,  1726,  1727,
-  1728,  1731,  1732
+   269,   270,   273,   274,   277,   278,   279,   280,   281,   282,
+   283,   286,   288,   292,   292,   297,   303,   307,   308,   312,
+   313,   315,   317,   321,   324,   332,   335,   343,   344,   346,
+   348,   364,   368,   375,   379,   385,   387,   387,   391,   392,
+   393,   394,   397,   400,   401,   407,   408,   412,   416,   421,
+   428,   432,   437,   444,   447,   448,   451,   456,   457,   460,
+   461,   462,   465,   466,   467,   472,   473,   481,   484,   486,
+   487,   492,   493,   494,   496,   512,   516,   517,   522,   523,
+   533,   534,   537,   538,   541,   542,   545,   546,   549,   550,
+   553,   556,   557,   560,   561,   562,   563,   564,   567,   568,
+   571,   571,   574,   574,   577,   581,   582,   585,   585,   588,
+   588,   591,   595,   596,   599,   600,   603,   609,   616,   622,
+   629,   630,   631,   632,   633,   636,   639,   642,   643,   646,
+   647,   648,   649,   650,   651,   652,   653,   656,   662,   669,
+   675,   684,   690,   694,   696,   700,   703,   710,   720,   721,
+   724,   725,   728,   729,   730,   731,   732,   733,   734,   735,
+   739,   740,   744,   745,   748,   750,   752,   753,   754,   755,
+   756,   758,   762,   766,   778,   779,   780,   781,   782,   783,
+   786,   787,   788,   789,   790,   791,   792,   793,   794,   797,
+   798,   801,   802,   803,   804,   805,   806,   807,   808,   809,
+   810,   811,   814,   815,   818,   822,   823,   826,   827,   828,
+   829,   832,   833,   837,   838,   839,   840,   843,   844,   845,
+   848,   849,   850,   853,   854,   855,   856,   857,   860,   861,
+   862,   865,   866,   869,   870,   874,   875,   878,   879,   884,
+   890,   891,   897,   903,   904,   904,   906,   909,   910,   911,
+   912,   913,   914,   915,   916,   917,   918,   919,   920,   923,
+   924,   927,   928,   931,   936,   937,   938,   941,   954,   958,
+   959,   962,   967,   968,   968,   973,   974,   975,   976,   979,
+   982,   985,   988,   989,   992,   993,   996,   997,   998,  1002,
+  1004,  1013,  1014,  1015,  1016,  1017,  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,  1062,  1063,
+  1064,  1065,  1071,  1072,  1073,  1074,  1077,  1078,  1079,  1080,
+  1081,  1082,  1083,  1084,  1085,  1086,  1087,  1088,  1089,  1090,
+  1093,  1097,  1098,  1102,  1103,  1107,  1108,  1109,  1112,  1113,
+  1116,  1118,  1120,  1121,  1123,  1125,  1126,  1128,  1130,  1132,
+  1134,  1135,  1137,  1139,  1140,  1142,  1144,  1145,  1148,  1151,
+  1152,  1153,  1156,  1158,  1162,  1164,  1168,  1169,  1170,  1174,
+  1176,  1176,  1178,  1181,  1183,  1185,  1188,  1193,  1200,  1201,
+  1202,  1209,  1213,  1214,  1218,  1219,  1222,  1223,  1226,  1227,
+  1230,  1231,  1232,  1233,  1236,  1237,  1240,  1241,  1244,  1245,
+  1246,  1249,  1249,  1250,  1251,  1254,  1266,  1282,  1283,  1286,
+  1287,  1288,  1291,  1292,  1295,  1297,  1298,  1300,  1301,  1303,
+  1305,  1307,  1309,  1315,  1316,  1317,  1318,  1319,  1320,  1321,
+  1322,  1323,  1338,  1343,  1346,  1349,  1350,  1354,  1356,  1358,
+  1360,  1364,  1365,  1367,  1371,  1373,  1375,  1378,  1379,  1380,
+  1381,  1382,  1383,  1384,  1385,  1386,  1387,  1388,  1389,  1390,
+  1393,  1399,  1402,  1405,  1406,  1409,  1410,  1411,  1412,  1413,
+  1414,  1415,  1416,  1417,  1418,  1419,  1422,  1423,  1429,  1430,
+  1431,  1432,  1435,  1436,  1437,  1438,  1441,  1442,  1446,  1449,
+  1452,  1455,  1458,  1461,  1464,  1465,  1466,  1467,  1469,  1470,
+  1472,  1474,  1481,  1485,  1487,  1489,  1491,  1495,  1496,  1499,
+  1500,  1503,  1504,  1507,  1508,  1511,  1512,  1513,  1516,  1524,
+  1529,  1530,  1534,  1535,  1538,  1543,  1546,  1547,  1548,  1556,
+  1557,  1557,  1561,  1562,  1563,  1574,  1581,  1582,  1585,  1586,
+  1587,  1588,  1589,  1591,  1592,  1593,  1594,  1597,  1598,  1599,
+  1600,  1601,  1602,  1603,  1604,  1605,  1606,  1609,  1610,  1613,
+  1614,  1615,  1616,  1619,  1620,  1621,  1624,  1625,  1626,  1629,
+  1630,  1631,  1632,  1633,  1636,  1637,  1638,  1641,  1642,  1645,
+  1646,  1650,  1651,  1654,  1655,  1658,  1659,  1662,  1663,  1664,
+  1665,  1668,  1669,  1670,  1671,  1672,  1673,  1674,  1675,  1676,
+  1677,  1678,  1679,  1682,  1683,  1686,  1689,  1691,  1693,  1697,
+  1698,  1700,  1702,  1705,  1706,  1707,  1709,  1710,  1711,  1712,
+  1713,  1714,  1715,  1718,  1719,  1722,  1725,  1726,  1727,  1728,
+  1729,  1732,  1733
 };
 #endif
 
@@ -732,7 +733,7 @@ static const char * const yytname[] = {   "$","error","$undefined.","BADTOK",
 "QKILLREF","QRELDEF","CGCHAR","CBOOL","CINT","CGFLOAT","CDOUBLE","CVOID","QANYTYPE",
 "QINTEGRALTYPE","QUNSIGNEDINTEGRALTYPE","QSIGNEDINTEGRALTYPE","QNULLTERMINATED",
 "QSETBUFFERSIZE","QBUFFERCONSTRAINT","QENSURESCONSTRAINT","QSETSTRINGLENGTH",
-"QMAXSET","QMAXREAD","QTESTINRANGE","IDENTIFIER","NEW_IDENTIFIER","TYPE_NAME_OR_ID",
+"QMAXSET","QMAXREAD","QTESTINRANGE","TCAND","IDENTIFIER","NEW_IDENTIFIER","TYPE_NAME_OR_ID",
 "CCONSTANT","ITER_NAME","ITER_ENDNAME","TYPE_NAME","file","externalDefs","externalDef",
 "constantDecl","fcnDecl","@1","plainFcn","plainNamedDecl","namedDeclBase","@2",
 "@3","plainNamedDeclBase","@4","@5","iterDecl","@6","@7","macroDef","fcnDefHdr",
@@ -776,73 +777,73 @@ static const char * const yytname[] = {   "$","error","$undefined.","BADTOK",
 #endif
 
 static const short yyr1[] = {     0,
-   190,   190,   191,   191,   192,   192,   192,   192,   192,   192,
-   192,   193,   193,   195,   194,   196,   196,   197,   197,   198,
-   198,   198,   198,   199,   198,   200,   198,   201,   201,   201,
-   201,   202,   201,   203,   201,   205,   206,   204,   207,   207,
-   207,   207,   208,   210,   209,   212,   211,   213,   215,   214,
-   214,   217,   216,   216,   218,   218,   219,   220,   220,   221,
-   221,   221,   222,   222,   222,   223,   223,   224,   224,   224,
-   224,   224,   224,   224,   224,   225,   226,   226,    -1,    -1,
-   228,   227,   229,   229,   230,   230,   231,   231,   232,   232,
-   233,   234,   234,   235,   235,   235,   235,   235,   236,   236,
-   238,   237,   239,   237,   237,   237,   237,   241,   240,   242,
-   240,   240,   240,   240,   243,   243,   245,   244,   247,   246,
-   248,   248,   248,   248,   248,   249,   250,   251,   251,   252,
-   252,   252,   252,   252,   252,   252,   252,   254,   253,   255,
-   253,   256,   256,   258,   257,   259,   257,   260,   261,   261,
-   262,   262,   263,   263,   263,   263,   263,   263,   263,   263,
-   264,   264,   265,   265,   266,   266,   266,   266,   266,   266,
-   266,   266,   267,   267,   268,   268,   268,   268,   268,   268,
-   269,   269,   269,   269,   269,   269,   269,   269,   269,   270,
-   270,   271,   271,   271,   271,   271,   271,   271,   271,   271,
-   271,   271,   272,   272,   273,   275,   274,   276,   276,   276,
-   276,   277,   277,   278,   278,   278,   278,   279,   279,   279,
-   280,   280,   280,   281,   281,   281,   281,   281,   282,   282,
-   282,   283,   283,   284,   284,   285,   285,   286,   287,   286,
-   288,   289,   288,   290,   291,   292,   290,   293,   293,   293,
-   293,   293,   293,   293,   293,   293,   293,   293,   293,   294,
-   294,   295,   295,   296,   297,   297,   297,   298,   299,   298,
-   300,   298,   301,   302,   301,   304,   303,   303,   303,   305,
-   306,   307,   308,   308,   309,   309,   310,   310,   310,   311,
-   311,   312,   312,   312,   312,   312,   313,   313,   313,   313,
-   313,   313,   313,   313,   313,   313,   313,   313,   313,   313,
-   313,   313,   313,   313,   313,   313,   313,   313,   313,   313,
-   313,   313,   313,   313,   313,   313,   313,   313,   313,   313,
-   313,   313,   313,   313,   313,   313,   313,   313,   313,   313,
-   313,   313,   314,   314,   314,   314,   315,   315,   315,   315,
-   315,   315,   315,   315,   315,   315,   315,   315,   315,   315,
-   316,   317,   317,   318,   318,   319,   319,   319,   320,   320,
-   322,   323,   321,   324,   325,   321,   321,   321,   326,   327,
-   321,   328,   329,   321,   321,   321,   321,   321,   330,   331,
-   331,   331,   332,   332,   333,   333,   334,   334,   334,   335,
-   336,   335,   335,   337,   337,   337,   338,   338,   339,   339,
-   339,   339,   340,   340,   341,   341,   342,   342,   343,   343,
-   344,   344,   344,   344,   345,   345,   346,   346,   347,   347,
-   347,   349,   348,   350,   348,   351,   351,   352,   352,   353,
-   353,   353,   354,   354,   355,   355,   355,   355,   355,   355,
-   355,   355,   355,   356,   356,   356,   356,   356,   356,   356,
-   356,   356,    -1,   357,   358,   359,   359,   360,   360,   360,
-   360,   362,   363,   361,   365,   364,   364,   366,   366,   366,
-   366,   366,   366,   366,   366,   366,   366,   366,   366,   366,
-   367,   368,   369,   370,   370,   371,   371,   371,   371,   371,
-   371,   371,   371,   371,   371,   371,   372,   372,   374,   373,
-   375,   373,   377,   376,   378,   376,   379,   379,   380,   381,
-   382,   383,   384,   385,   386,   386,   386,   386,   386,   386,
-   386,   386,   387,   388,   388,   388,   388,   389,   389,   390,
-   390,   391,   391,   392,   392,   393,   393,   393,   394,   395,
-   396,   395,   397,   395,   398,   399,   401,   402,   400,   403,
-   404,   403,   405,   405,   405,   405,   406,   406,   407,   407,
-   407,   407,   407,   407,   407,   407,   407,   408,   408,   408,
-   408,   408,   408,   408,   408,   408,   408,   409,   409,   410,
-   410,   410,   410,   411,   411,   411,   412,   412,   412,   413,
-   413,   413,   413,   413,   414,   414,   414,   415,   415,   416,
-   416,   417,   417,   418,   418,   419,   419,   420,   421,   422,
-   420,   423,   423,   423,   423,   423,   423,   423,   423,   423,
-   423,   423,   423,   424,   424,   425,   426,   426,   426,   427,
-   427,   427,   427,   428,   428,   428,   428,   428,   428,   428,
-   428,   428,   428,   429,   429,   430,   431,   431,   431,   431,
-   431,   432,   432
+   191,   191,   192,   192,   193,   193,   193,   193,   193,   193,
+   193,   194,   194,   196,   195,   197,   197,   198,   198,   199,
+   199,   199,   199,   200,   199,   201,   199,   202,   202,   202,
+   202,   203,   202,   204,   202,   206,   207,   205,   208,   208,
+   208,   208,   209,   211,   210,   213,   212,   214,   216,   215,
+   215,   218,   217,   217,   219,   219,   220,   221,   221,   222,
+   222,   222,   223,   223,   223,   224,   224,   225,   225,   225,
+   225,   225,   225,   225,   225,   226,   227,   227,    -1,    -1,
+   229,   228,   230,   230,   231,   231,   232,   232,   233,   233,
+   234,   235,   235,   236,   236,   236,   236,   236,   237,   237,
+   239,   238,   240,   238,   238,   238,   238,   242,   241,   243,
+   241,   241,   241,   241,   244,   244,   246,   245,   248,   247,
+   249,   249,   249,   249,   249,   250,   251,   252,   252,   253,
+   253,   253,   253,   253,   253,   253,   253,   255,   254,   256,
+   254,   257,   257,   259,   258,   260,   258,   261,   262,   262,
+   263,   263,   264,   264,   264,   264,   264,   264,   264,   264,
+   265,   265,   266,   266,   267,   267,   267,   267,   267,   267,
+   267,   267,   268,   268,   269,   269,   269,   269,   269,   269,
+   270,   270,   270,   270,   270,   270,   270,   270,   270,   271,
+   271,   272,   272,   272,   272,   272,   272,   272,   272,   272,
+   272,   272,   273,   273,   274,   276,   275,   277,   277,   277,
+   277,   278,   278,   279,   279,   279,   279,   280,   280,   280,
+   281,   281,   281,   282,   282,   282,   282,   282,   283,   283,
+   283,   284,   284,   285,   285,   286,   286,   287,   288,   287,
+   289,   290,   289,   291,   292,   293,   291,   294,   294,   294,
+   294,   294,   294,   294,   294,   294,   294,   294,   294,   295,
+   295,   296,   296,   297,   298,   298,   298,   299,   300,   299,
+   301,   299,   302,   303,   302,   305,   304,   304,   304,   306,
+   307,   308,   309,   309,   310,   310,   311,   311,   311,   312,
+   312,   313,   313,   313,   313,   313,   314,   314,   314,   314,
+   314,   314,   314,   314,   314,   314,   314,   314,   314,   314,
+   314,   314,   314,   314,   314,   314,   314,   314,   314,   314,
+   314,   314,   314,   314,   314,   314,   314,   314,   314,   314,
+   314,   314,   314,   314,   314,   314,   314,   314,   314,   314,
+   314,   314,   315,   315,   315,   315,   316,   316,   316,   316,
+   316,   316,   316,   316,   316,   316,   316,   316,   316,   316,
+   317,   318,   318,   319,   319,   320,   320,   320,   321,   321,
+   323,   324,   322,   325,   326,   322,   322,   322,   327,   328,
+   322,   329,   330,   322,   322,   322,   322,   322,   331,   332,
+   332,   332,   333,   333,   334,   334,   335,   335,   335,   336,
+   337,   336,   336,   338,   338,   338,   339,   339,   340,   340,
+   340,   340,   341,   341,   342,   342,   343,   343,   344,   344,
+   345,   345,   345,   345,   346,   346,   347,   347,   348,   348,
+   348,   350,   349,   351,   349,   352,   352,   353,   353,   354,
+   354,   354,   355,   355,   356,   356,   356,   356,   356,   356,
+   356,   356,   356,   357,   357,   357,   357,   357,   357,   357,
+   357,   357,    -1,   358,   359,   360,   360,   361,   361,   361,
+   361,   363,   364,   362,   366,   365,   365,   367,   367,   367,
+   367,   367,   367,   367,   367,   367,   367,   367,   367,   367,
+   368,   369,   370,   371,   371,   372,   372,   372,   372,   372,
+   372,   372,   372,   372,   372,   372,   373,   373,   375,   374,
+   376,   374,   378,   377,   379,   377,   380,   380,   381,   382,
+   383,   384,   385,   386,   387,   387,   387,   387,   387,   387,
+   387,   387,   388,   389,   389,   389,   389,   390,   390,   391,
+   391,   392,   392,   393,   393,   394,   394,   394,   395,   396,
+   397,   396,   398,   396,   399,   400,   402,   403,   401,   404,
+   405,   404,   406,   406,   406,   406,   407,   407,   408,   408,
+   408,   408,   408,   408,   408,   408,   408,   409,   409,   409,
+   409,   409,   409,   409,   409,   409,   409,   410,   410,   411,
+   411,   411,   411,   412,   412,   412,   413,   413,   413,   414,
+   414,   414,   414,   414,   415,   415,   415,   416,   416,   417,
+   417,   418,   418,   419,   419,   420,   420,   421,   422,   423,
+   421,   424,   424,   424,   424,   424,   424,   424,   424,   424,
+   424,   424,   424,   425,   425,   426,   427,   427,   427,   428,
+   428,   428,   428,   429,   429,   429,   429,   429,   429,   429,
+   429,   429,   429,   430,   430,   431,   432,   432,   432,   432,
+   432,   433,   433
 };
 
 static const short yyr2[] = {     0,
@@ -850,8 +851,8 @@ static const short yyr2[] = {     0,
      1,     8,    11,     0,     5,     1,     3,     1,     2,     1,
      6,     3,     6,     0,     7,     0,     8,     1,     6,     3,
      6,     0,     6,     0,     7,     0,     0,    10,     3,     3,
-     3,     2,     1,     0,     2,     0,     2,     2,     0,     4,
-     0,     0,     4,     0,     2,     1,     4,     1,     1,     1,
+     3,     2,     1,     0,     2,     0,     2,     2,     0,     5,
+     0,     0,     5,     0,     3,     1,     3,     1,     1,     1,
      1,     1,     1,     4,     5,     1,     1,     1,     1,     3,
      4,     2,     3,     3,     3,     1,     1,     1,     0,     2,
      0,     2,     1,     2,     1,     2,     1,     2,     1,     3,
@@ -1024,29 +1025,29 @@ static const short yydefact[] = {     0,
    389,   397,     0,   372,     0,   375,   289,   291,     0,    38,
    654,   654,   120,   654,   152,   280,     0,   205,   203,   634,
    521,     0,   186,   187,   620,     0,     0,     0,    58,    59,
-    69,    67,     0,    56,    76,     0,    63,    66,     0,    68,
+    69,    67,   654,    56,    76,     0,    63,    66,     0,    68,
      0,    99,     0,   100,    93,    91,    92,     0,   157,     0,
      0,     0,     0,     0,   150,     0,     0,   166,   173,   654,
    165,     0,   280,   286,   280,   280,     0,   395,   280,   381,
      0,   384,     0,    13,   116,   116,   151,   474,   559,   185,
-   280,     0,     0,    66,     0,    72,    53,    55,    61,    60,
+   280,   654,     0,    66,     0,    72,     0,     0,    61,    60,
     62,     0,     0,     0,     0,     0,   116,    90,   116,   158,
    155,   162,   161,     0,   159,   160,   164,   149,     0,   169,
      0,     0,     0,     0,     0,   654,   272,   398,   389,   393,
-   280,   373,   376,   109,   115,   111,   621,    50,    78,    77,
-     0,    73,     0,     0,    70,     0,    74,    75,     0,   102,
-   104,   156,   170,   167,     0,   171,   172,   174,   127,   280,
-     0,   396,   399,     0,    57,    71,    64,   168,   139,   126,
-   280,    65,   141,     0,     0,     0
+   280,   373,   376,   109,   115,   111,   621,     0,    78,    77,
+     0,    73,     0,    53,    55,    57,    70,     0,    74,    75,
+     0,   102,   104,   156,   170,   167,     0,   171,   172,   174,
+   127,   280,     0,   396,   399,    50,     0,    71,    64,   168,
+   139,   126,   280,    65,   141,     0,     0,     0
 };
 
-static const short yydefgoto[] = {  1214,
+static const short yydefgoto[] = {  1216,
     82,    83,    84,    85,   122,   320,   321,    86,   657,   765,
    322,   790,   906,    87,   689,   908,   891,    89,   763,   764,
    868,   869,   969,  1014,  1015,   970,   971,  1083,  1084,  1085,
   1142,  1086,  1087,  1088,  1089,  1181,   795,   796,   880,   912,
    881,  1023,  1024,  1096,  1025,  1026,   882,   972,   973,   914,
-   996,   997,  1174,  1175,   974,   915,   998,   884,  1211,  1200,
+   996,   997,  1174,  1175,   974,   915,   998,   884,  1213,  1202,
    885,  1044,   886,  1035,  1112,    90,   289,   449,   451,    91,
   1030,  1063,  1031,  1154,  1032,  1109,  1110,   162,   163,   519,
    164,   923,   165,   166,   421,   557,   167,   168,   169,   170,
@@ -1068,406 +1069,405 @@ static const short yydefgoto[] = {  1214,
    200,   109
 };
 
-static const short yypact[] = {  2064,
--32768,   361,  5617,-32768,  6626,-32768,   803,  2992,  3372,  3372,
+static const short yypact[] = {  2053,
+-32768,   117,  5389,-32768,  6235,-32768,   896,  3028,  3410,  3410,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,   134,-32768,-32768,
--32768,  2240,-32768,-32768,-32768,   273,-32768,-32768,  5145,-32768,
-   170,-32768,-32768,-32768,   189,  6461,  6461,-32768,  6461,   253,
-   151,-32768,   654,-32768,-32768,   803,-32768,-32768,-32768,-32768,
--32768,-32768,   361,-32768,-32768,   269,-32768,   253,-32768,-32768,
--32768,  5617,-32768,   319,-32768,  5853,-32768,   330,   337,   351,
--32768,   366,   803,   397,   412,  1980,-32768,  2614,  5853,  5853,
-  5853,  5853,  5853,  5853,-32768,  5888,  5888,   439,-32768,   457,
-   463,   494,   516,   502,   479,  4592,-32768,   536,   559,-32768,
-   579,-32768,   760,  1080,-32768,-32768,-32768,  1076,   538,    94,
-   585,   554,   604,   549,   588,   598,   111,-32768,-32768,   406,
--32768,  3415,   567,   601,-32768,-32768,-32768,-32768,   689,  3035,
--32768,  4592,-32768,  3415,-32768,  3415,-32768,-32768,   693,   719,
--32768,   728,-32768,  2803,   579,   761,   436,   666,  3182,-32768,
-  3372,-32768,-32768,-32768,  6221,-32768,-32768,-32768,-32768,   778,
-   779,-32768,  3372,  3372,  3415,-32768,-32768,   721,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,   557,-32768,-32768,
+-32768,  2229,-32768,-32768,-32768,   430,-32768,-32768,  5126,-32768,
+   105,-32768,-32768,-32768,   124,  6069,  6069,-32768,  6069,   118,
+    80,-32768,   527,-32768,-32768,   896,-32768,-32768,-32768,-32768,
+-32768,-32768,   117,-32768,-32768,   156,-32768,   118,-32768,-32768,
+-32768,  5389,-32768,   162,-32768,  5552,-32768,   183,   197,   205,
+-32768,   213,   896,   283,   311,   892,-32768,  2605,  5552,  5552,
+  5552,  5552,  5552,  5552,-32768,  5563,  5563,   288,-32768,   366,
+   374,   379,   387,   345,   149,  4650,-32768,   389,   412,-32768,
+   436,-32768,   834,   963,-32768,-32768,-32768,   821,   303,   636,
+   294,   683,   439,   457,   463,   453,   106,-32768,-32768,   333,
+-32768,  3558,   427,   435,-32768,-32768,-32768,-32768,   517,  3176,
+-32768,  4650,-32768,  3558,-32768,  3558,-32768,-32768,   519,   537,
+-32768,   565,-32768,  2795,   436,   585,   344,   523,  3219,-32768,
+  3410,-32768,-32768,-32768,  5829,-32768,-32768,-32768,-32768,   604,
+   623,-32768,  3410,  3410,  3558,-32768,-32768,   561,-32768,-32768,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,   796,   787,-32768,-32768,-32768,
-   253,  4988,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-   788,   541,-32768,-32768,   803,   803,    50,-32768,   273,-32768,
--32768,-32768,-32768,   827,-32768,-32768,   860,   798,   541,   170,
--32768,   514,   861,-32768,   803,-32768,   293,  5853,-32768,-32768,
--32768,-32768,-32768,-32768,   865,  5853,  5853,  5853,  2236,   872,
--32768,-32768,-32768,   450,   291,  6090,   232,   870,   880,-32768,
--32768,-32768,-32768,-32768,-32768,   893,  5853,-32768,-32768,  5853,
-   913,   919,   924,   939,   942,  5853,-32768,  5404,-32768,  4592,
--32768,-32768,-32768,-32768,   944,-32768,-32768,  4592,-32768,  4592,
--32768,-32768,-32768,  5628,  5853,-32768,-32768,   106,  5853,  5853,
-  5853,  5853,  5853,  5853,  5853,  5853,  5853,  5853,  5853,  5853,
-  5853,  5853,  5853,  5853,  5853,  5853,  5853,  5853,  5853,  5853,
-  5853,  5853,  5853,  5853,  5853,-32768,-32768,-32768,-32768,  5853,
-   599,-32768,-32768,  2425,-32768,-32768,   970,-32768,   974,-32768,
-  5853,   529,   967,   977,-32768,-32768,-32768,-32768,  6221,-32768,
--32768,-32768,  1890,   993,-32768,-32768,  5853,    96,  3562,   541,
-   982,-32768,   541,-32768,    90,  6626,   921,  1022,  1018,  1034,
-  1037,  1034,   803,  1050,   541,-32768,   541,-32768,-32768,-32768,
-   926,  1019,  1048,-32768,   541,   514,-32768,   803,  1051,-32768,
-  1054,   803,   201,  1060,-32768,   302,  1062,   323,  1062,  1075,
--32768,-32768,-32768,-32768,  5791,  1072,   593,-32768,   707,  5853,
--32768,-32768,  1079,-32768,-32768,-32768,-32768,-32768,-32768,  1082,
-  1083,-32768,  3562,-32768,-32768,  1086,  1077,-32768,   356,-32768,
-   145,   803,   803,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,  1076,  1076,   538,
-   538,    94,    94,    94,    94,   585,   585,   554,   604,   549,
-  5853,  5853,  5853,-32768,  5919,  5980,-32768,-32768,  5377,-32768,
-  3225,  3746,-32768,-32768,  1081,   389,-32768,-32768,  1091,  1093,
--32768,  1100,-32768,  4114,-32768,-32768,  3930,  4157,-32768,   982,
--32768,-32768,  1084,-32768,-32768,  1106,  1114,-32768,  1127,  1129,
--32768,   752,-32768,  1130,-32768,-32768,-32768,   269,-32768,   255,
--32768,-32768,  5853,   250,   541,-32768,-32768,  1134,-32768,-32768,
-  1159,  6626,-32768,-32768,-32768,-32768,  1140,-32768,  2236,-32768,
--32768,  1141,   578,   707,  5802,  1143,-32768,-32768,-32768,  1161,
--32768,-32768,-32768,  1157,-32768,  5853,-32768,-32768,-32768,-32768,
-   588,   770,   598,  5853,-32768,  5853,-32768,-32768,-32768,  4259,
-  4592,  5853,-32768,  6011,  5853,-32768,-32768,-32768,-32768,-32768,
-  4302,  4404,-32768,  4447,-32768,  1162,-32768,-32768,-32768,-32768,
--32768,  1164,-32768,-32768,  1166,-32768,   803,-32768,   803,  1171,
-  5538,-32768,-32768,  1163,-32768,  1167,-32768,   346,-32768,-32768,
-   803,   741,  4592,  1173,-32768,-32768,   143,  1168,-32768,  1169,
-   122,  1176,  1174,-32768,  5853,  6011,-32768,-32768,-32768,-32768,
-  1179,  1180,-32768,-32768,   411,  5853,  5853,  5853,  5853,  5853,
-  5853,  5853,  5888,  5888,  1170,   475,   483,   530,  1016,  1113,
-   543,  1088,   836,   848,   726,   869,  1172,  1177,  1175,  1151,
-   156,  1182,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   566,
-   572,-32768,-32768,  1007,-32768,-32768,-32768,  4549,-32768,-32768,
--32768,-32768,  6548,-32768,-32768,  6548,-32768,-32768,-32768,-32768,
-  5853,   891,-32768,  5538,-32768,-32768,  5538,  1124,-32768,-32768,
--32768,  1188,-32768,-32768,-32768,  1257,-32768,   273,  1194,-32768,
-   641,-32768,   707,-32768,-32768,  1195,-32768,-32768,-32768,  1199,
-   803,-32768,   629,  1200,  5853,-32768,-32768,  1208,   645,  1203,
-   777,   784,   814,   837,   846,   875,   889,   909,  5853,  5822,
-  5853,   915,   922,   137,  5853,  5853,  5853,  5853,  5853,  5853,
-  5853,  5853,  5853,  5853,  5853,  5853,  5853,  5853,  5853,  5853,
-  5853,  5853,  5853,  5853,  5853,  5853,  5853,  5853,  5853,  5853,
-  5853,  5853,-32768,  5853,-32768,  1210,  1214,-32768,  1056,    77,
+-32768,-32768,-32768,-32768,-32768,   640,   653,-32768,-32768,-32768,
+   118,  4969,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+   662,   607,-32768,-32768,   896,   896,   -10,-32768,   430,-32768,
+-32768,-32768,-32768,   707,-32768,-32768,   729,   684,   607,   105,
+-32768,   648,   677,-32768,   896,-32768,   285,  5552,-32768,-32768,
+-32768,-32768,-32768,-32768,   747,  5552,  5552,  5552,  1041,   736,
+-32768,-32768,-32768,   414,   641,  5698,   375,   757,   781,-32768,
+-32768,-32768,-32768,-32768,-32768,   785,  5552,-32768,-32768,  5552,
+   796,   806,   811,   822,   827,  5552,-32768,  2225,-32768,  4650,
+-32768,-32768,-32768,-32768,   871,-32768,-32768,  4650,-32768,  4650,
+-32768,-32768,-32768,  3261,  5552,-32768,-32768,   140,  5552,  5552,
+  5552,  5552,  5552,  5552,  5552,  5552,  5552,  5552,  5552,  5552,
+  5552,  5552,  5552,  5552,  5552,  5552,  5552,  5552,  5552,  5552,
+  5552,  5552,  5552,  5552,  5552,-32768,-32768,-32768,-32768,  5552,
+   829,-32768,-32768,  2415,-32768,-32768,   854,-32768,   874,-32768,
+  5552,   730,   902,   913,-32768,-32768,-32768,-32768,  5829,-32768,
+-32768,-32768,  2985,   971,-32768,-32768,  5552,   260,  3660,   607,
+   948,-32768,   607,-32768,   275,  6235,   891,   953,   998,  1018,
+  1027,  1018,   896,  1029,   607,-32768,   607,-32768,-32768,-32768,
+   979,  1042,  1032,-32768,   607,   648,-32768,   896,   965,-32768,
+  1043,   896,   274,  1093,-32768,   301,  1099,   367,  1099,  1108,
+-32768,-32768,-32768,-32768,  3452,  1124,   840,-32768,   853,  5552,
+-32768,-32768,  1115,-32768,-32768,-32768,-32768,-32768,-32768,  1119,
+  1140,-32768,  3660,-32768,-32768,  1156,  1144,-32768,   458,-32768,
+   256,   896,   896,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,   821,   821,   303,
+   303,   636,   636,   636,   636,   294,   294,   683,   439,   457,
+  5552,  5552,  5552,-32768,  5583,  5594,-32768,-32768,  5321,-32768,
+  3367,  3845,-32768,-32768,  1157,   512,-32768,-32768,  1159,  1160,
+-32768,  1161,-32768,  1967,-32768,-32768,  4030,  4215,-32768,   948,
+-32768,-32768,  1169,-32768,-32768,  1173,  1175,-32768,  1176,  1178,
+-32768,   886,-32768,  1172,-32768,-32768,-32768,   156,-32768,   193,
+-32768,-32768,  5552,   524,   607,-32768,-32768,  1180,-32768,-32768,
+  1194,  6235,-32768,-32768,-32768,-32768,  1179,-32768,  1041,-32768,
+-32768,  1184,   923,   853,  3514,  1181,-32768,-32768,-32768,  1190,
+-32768,-32768,-32768,  1182,-32768,  5552,-32768,-32768,-32768,-32768,
+   463,   898,   453,  5552,-32768,  5552,-32768,-32768,-32768,  4258,
+  4650,  5552,-32768,  5614,  5552,-32768,-32768,-32768,-32768,-32768,
+  4360,  4403,-32768,  4505,-32768,  1189,-32768,-32768,-32768,-32768,
+-32768,  1183,-32768,-32768,  1195,-32768,   896,-32768,   896,  1198,
+  3070,-32768,-32768,  1192,-32768,  1196,-32768,   535,-32768,-32768,
+   896,   637,  4650,  1204,-32768,-32768,   108,  1199,-32768,  1203,
+   119,  1202,  1206,-32768,  5552,  5614,-32768,-32768,-32768,-32768,
+  1207,  1208,-32768,-32768,   526,  5552,  5552,  5552,  5552,  5552,
+  5552,  5552,  5563,  5563,  1211,   540,   612,   675,   968,  1272,
+   681,   908,   897,   917,   400,   945,  1209,  1197,  1200,  1188,
+   207,  1212,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   697,
+   705,-32768,-32768,   961,-32768,-32768,-32768,  4548,-32768,-32768,
+-32768,-32768,  6156,-32768,-32768,  6156,-32768,-32768,-32768,-32768,
+  5552,  1010,-32768,  3070,-32768,-32768,  3070,  1151,-32768,-32768,
+-32768,  1220,-32768,-32768,-32768,  1022,-32768,   430,  1222,-32768,
+   578,-32768,   853,-32768,-32768,  1225,-32768,-32768,-32768,  1226,
+   896,-32768,   732,  1227,  5552,-32768,-32768,  1229,   740,  1228,
+   755,   769,   777,   783,   809,   814,   817,   844,  5552,  4681,
+  5552,   876,   884,   152,  5552,  5552,  5552,  5552,  5552,  5552,
+  5552,  5552,  5552,  5552,  5552,  5552,  5552,  5552,  5552,  5552,
+  5552,  5552,  5552,  5552,  5552,  5552,  5552,  5552,  5552,  5552,
+  5552,  5552,-32768,  5552,-32768,  1233,  1237,-32768,  1080,    67,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-  1078,-32768,-32768,-32768,-32768,  1221,-32768,-32768,  5538,   477,
--32768,   253,  5223,-32768,  6548,  5223,  6548,-32768,-32768,-32768,
-   931,-32768,-32768,-32768,-32768,-32768,-32768,   170,    93,-32768,
--32768,-32768,  1085,-32768,-32768,   149,-32768,-32768,-32768,  5833,
--32768,-32768,   623,-32768,  1216,   982,-32768,-32768,   941,  5853,
-  1215,   952,   953,   241,   803,   803,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,   992,   995,  1020,
-   675,   806,   681,   736,   367,   613,   631,   669,   856,   987,
-   503,   342,   114,   588,  5853,   598,  6011,-32768,-32768,  1057,
-  1061,  6352,   429,   112,-32768,-32768,   783,-32768,-32768,-32768,
--32768,-32768,  1222,    56,-32768,-32768,  5223,-32768,  5223,-32768,
--32768,  4858,   653,-32768,  1153,  6352,   429,   112,-32768,   501,
--32768,-32768,   803,-32768,  1055,  1027,-32768,  1030,  1033,-32768,
--32768,   950,-32768,-32768,  1068,   218,  4831,-32768,-32768,-32768,
--32768,-32768,   680,-32768,   429,   815,    65,    65,-32768,-32768,
-   150,   816,  1165,-32768,   117,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,   839,-32768,   541,-32768,-32768,  1218,
--32768,  1225,  1229,-32768,  1230,-32768,-32768,-32768,  1181,-32768,
-  4673,   680,-32768,   816,-32768,   426,  1232,-32768,-32768,-32768,
--32768,  1236,  1040,  1046,-32768,   218,   218,   175,-32768,-32768,
--32768,-32768,  1183,   218,-32768,  1109,-32768,   495,  1231,-32768,
-  1184,   429,  1186,-32768,-32768,-32768,-32768,   722,   150,   258,
-   803,   803,    65,  1187,-32768,   117,   117,-32768,   551,   858,
--32768,   117,-32768,-32768,  5853,    56,  1244,-32768,-32768,-32768,
-  1234,-32768,  1243,-32768,  1191,  1191,-32768,-32768,-32768,  1049,
-  5853,  1189,   990,   768,   175,   495,-32768,-32768,-32768,-32768,
--32768,   218,    17,   803,   803,   218,  1191,-32768,  1191,-32768,
--32768,-32768,   150,  1238,-32768,-32768,   150,-32768,   794,   551,
-   432,   803,   803,   117,  1190,   858,-32768,-32768,-32768,-32768,
-  5853,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-   218,-32768,   768,  1250,-32768,  1252,-32768,-32768,  1255,-32768,
--32768,-32768,-32768,-32768,  1254,-32768,-32768,   551,-32768,-32768,
-  1198,-32768,-32768,  1262,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,  1290,  1293,-32768
+  1035,-32768,-32768,-32768,-32768,  1079,-32768,-32768,  3070,   459,
+-32768,   118,  5205,-32768,  6156,  5205,  6156,-32768,-32768,-32768,
+  1071,-32768,-32768,-32768,-32768,-32768,-32768,   105,   172,-32768,
+-32768,-32768,  1081,-32768,-32768,   543,-32768,-32768,-32768,  4996,
+-32768,-32768,   393,-32768,  1238,   948,-32768,-32768,   944,  5552,
+  1240,   970,   976,   257,   896,   896,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,   983,   984,   993,
+   654,   859,   920,   938,   485,   525,   567,   644,   816,   866,
+   555,   352,   110,   463,  5552,   453,  5614,-32768,-32768,  1084,
+  1086,  5960,    43,    91,-32768,-32768,   678,-32768,-32768,-32768,
+-32768,-32768,  1247,    61,-32768,-32768,  5205,-32768,  5205,-32768,
+-32768,  1858,   496,-32768,  1186,  5960,    43,    91,-32768,   600,
+-32768,-32768,   896,-32768,  1077,  1011,-32768,  1036,  1037,-32768,
+-32768,  1122,-32768,-32768,  1089,   232,  4812,-32768,-32768,-32768,
+-32768,-32768,   552,-32768,    43,   966,    77,    77,-32768,-32768,
+   314,   560,  1187,-32768,   133,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,   566,-32768,   607,-32768,-32768,  1248,
+-32768,  1246,  1250,-32768,  1251,-32768,-32768,-32768,  1191,-32768,
+  4654,   552,-32768,   560,-32768,    47,  1252,-32768,-32768,-32768,
+-32768,  1255,  1072,  1112,-32768,   232,   232,   258,-32768,-32768,
+-32768,-32768,   105,  1098,-32768,  1138,-32768,   500,  1263,-32768,
+  1213,    43,  1214,-32768,-32768,-32768,-32768,   528,   314,   471,
+   896,   896,    77,  1215,-32768,   133,   133,-32768,   575,   633,
+-32768,   133,-32768,-32768,  5552,    61,  1273,-32768,-32768,-32768,
+  1270,-32768,  1276,-32768,  1219,  1219,-32768,-32768,-32768,  1117,
+  5552,   105,  1090,   689,   258,   500,  1216,   232,-32768,-32768,
+-32768,   232,   -17,   896,   896,   232,  1219,-32768,  1219,-32768,
+-32768,-32768,   314,  1278,-32768,-32768,   314,-32768,   907,   575,
+   594,   896,   896,   133,  1218,   633,-32768,-32768,-32768,-32768,
+  5552,-32768,-32768,-32768,-32768,-32768,-32768,  1221,-32768,-32768,
+   232,-32768,   689,-32768,-32768,-32768,-32768,  1281,-32768,-32768,
+  1274,-32768,-32768,-32768,-32768,-32768,  1283,-32768,-32768,   575,
+-32768,-32768,  1223,-32768,-32768,-32768,  1275,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,  1297,  1312,-32768
 };
 
 static const short yypgoto[] = {-32768,
--32768,  1213,-32768,-32768,-32768,-32768,  -389,  -102,-32768,-32768,
-   971,-32768,-32768,-32768,-32768,-32768,   129,-32768,   532,-32768,
-   420,-32768,-32768,-32768,-32768,-32768,-32768,  -655,-32768,-32768,
--32768,  -928,-32768,  -907,-32768,-32768,  -705,-32768,-32768,-32768,
-  -691,   311,   217,-32768,-32768,   285,   430,-32768,-32768,   399,
--32768,-32768, -1016,  -676,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,  1231,-32768,-32768,-32768,-32768,  -459,  -102,-32768,-32768,
+   989,-32768,-32768,-32768,-32768,-32768,   112,-32768,   550,-32768,
+   429,-32768,-32768,-32768,-32768,-32768,-32768,  -955,-32768,-32768,
+-32768,  -937,-32768,  -964,-32768,-32768,  -687,-32768,-32768,-32768,
+  -698,   321,   227,-32768,-32768,   296,   441,-32768,-32768,   410,
+-32768,-32768,  -983,  -667,-32768,-32768,-32768,-32768,-32768,-32768,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,  -581,   155,   324,  -570,   211,-32768,  -587,   504,
-   988,-32768,-32768,  -583,-32768,-32768,    18,  -324,  -340,  -312,
-  -309,  -367,  -346,  -341,  -506,  -461,-32768,  -582,-32768,  -112,
--32768,-32768,   637,  1237,  -610,  -353,     1,-32768,-32768,-32768,
-  -463,-32768,-32768,-32768,     0,  -229,   881,-32768,  -793,  -703,
--32768,-32768,-32768,-32768,-32768,-32768,   326,   740,-32768,   580,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   782,
-  -672,  -484,-32768,   226,-32768,-32768,   668,   672,   550,     5,
-  -372,  1239,-32768,    15,-32768,-32768,  -576,-32768,-32768,-32768,
-   659,  -233,  1006,-32768,  -490,   714,  1345,-32768,  1132,-32768,
-   745,-32768,-32768,-32768,-32768,   -97,-32768,-32768,-32768,-32768,
-     2,  1311,  1408,-32768,-32768,  1434,-32768,-32768,  -360,-32768,
-   771,   286,  -554,  -781,-32768,   845,-32768,-32768,   935,   -83,
-  -331,     6,-32768,   146,    69,-32768,-32768,   249,-32768,   371,
--32768,-32768,   656,-32768,   393,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,  -901,   179,   343,  -864,   230,-32768,  -573,   518,
+   988,-32768,-32768,  -567,-32768,-32768,   130,  -357,  -340,  -331,
+  -367,  -317,  -347,  -345,  -482,  -467,-32768,  -565,-32768,   -32,
+-32768,-32768,   780,  1082,  -604,  -295,     2,-32768,-32768,-32768,
+  -464,-32768,-32768,-32768,     0,  -242,   880,-32768,  -782,  -679,
+-32768,-32768,-32768,-32768,-32768,-32768,   158,   765,-32768,   815,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   357,
+  -677,  -786,-32768,   233,-32768,-32768,   672,   676,   551,    68,
+  -374,  1242,-32768,     6,-32768,-32768,  -532,-32768,-32768,-32768,
+   665,  -296,  1012,-32768,  -480,  1101,  1347,-32768,  1134,-32768,
+   764,-32768,-32768,-32768,-32768,  -119,-32768,-32768,-32768,-32768,
+    85,  1376,  1566,-32768,-32768,  1584,-32768,-32768,  -363,-32768,
+  1450,   289,  -537,  -794,-32768,   848,-32768,-32768,   940,   -83,
+  -309,     4,-32768,   334,   173,-32768,-32768,   189,-32768,   214,
+-32768,-32768,   656,-32768,   398,-32768,-32768,-32768,-32768,-32768,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,  1547,-32768,-32768,  1600,  -247,   182,
-   267,-32768
+-32768,-32768,-32768,-32768,  1672,-32768,-32768,  1675,   498,   182,
+   433,-32768
 };
 
 
-#define        YYLAST          6815
+#define        YYLAST          6425
 
 
 static const short yytable[] = {    95,
-    92,   597,    95,   309,   105,   292,   624,   511,   694,   184,
-   229,   230,   509,   332,   222,   222,   114,   231,   232,   233,
+   597,    92,    95,   309,   511,   292,   458,   114,   463,  1187,
+   229,   230,   222,   222,   694,   606,   624,   231,   232,   233,
    234,   235,   236,   237,   238,   239,   240,   241,   242,   243,
    244,   245,   246,   247,   248,   249,   250,   251,   252,   253,
-   254,   255,   256,  1185,   641,   548,   698,   257,   258,   259,
+   254,   255,   256,   546,   547,   538,   539,   257,   258,   259,
    260,   261,   262,   263,   264,   265,   266,   267,   268,   269,
-   270,   271,   272,   273,   540,   541,   729,   549,   463,   458,
-   731,   741,   471,   550,   284,   572,   193,  1049,   538,   539,
-   900,    95,    92,   902,   905,   606,   105,   883,  1027,     2,
-   581,   643,   473,   570,   542,   543,   544,   545,  1028,   301,
-   477,   546,   547,   896,   913,    95,   433,  -389,   993,  1176,
-  -389,   437,  -389,   438,   988,   314,   315,   317,   729,   776,
-   571,   323,   731,   741,   810,   442,   477,   312,    88,   293,
-  1190,   439,  1191,   522,  -613,  1027,   325,   346,  -613,   349,
-  1106,   622,   405,   406,   356,  1028,   809,   739,  1133,   523,
-  1107,   417,   414,   477,   223,   223,   350,   351,   352,   353,
-   354,   355,  -103,  -103,   935,   420,   418,  -663,   495,  1134,
-  1136,   638,  -389,   696,  -389,  1100,     2,  1101,  -110,  -110,
-   936,   107,  -389,   422,   107,   980,  1045,   293,   107,   199,
-   199,   199,   740,  1102,   978,   428,   863,   429,  1135,   739,
-   994,   803,  1186,   346,   883,  1054,   193,  1056,  1078,   222,
-    88,   864,   295,  1184,   222,   687,   222,  1189,  -663,   511,
-   895,   420,   987,   897,   989,   493,   444,  1183,   222,   222,
-   650,   686,    76,    77,   123,   303,    79,    80,    76,    77,
-   123,  1077,    79,    80,   740,   662,   473,    76,  1029,   684,
-   193,  1078,  1204,   332,   477,  -280,   194,   495,   193,  -103,
-  -103,   420,   193,   107,   193,     2,   108,  1009,   628,   108,
-  -280,   700,   293,   124,   685,  -110,  -110,   682,  -389,  -389,
-  -389,  1027,  -389,  -389,  1151,   447,   736,   107,  1058,   313,
-   301,  1028,   452,   193,    76,  1029,  -281,   477,   286,    76,
-  1108,    95,   456,   107,   459,   461,   455,   737,   419,  1001,
-   803,   420,   738,   733,   107,   493,  -663,  -663,    95,   199,
-  -663,  -663,   420,   470,   323,   100,   616,   346,   118,   732,
-   121,  -389,  -389,  -389,   332,  -389,  -389,   199,   736,   698,
-   562,   734,   327,   420,   735,   437,   496,   618,   108,   223,
-   793,   458,   683,   336,   223,   964,   223,    76,  1081,   737,
-   337,   497,  -611,   199,   738,   733,  -611,   346,   223,   223,
-   413,   199,   108,   199,   338,   199,   636,   199,   195,   729,
-   637,   732,   332,   731,   741,   199,   194,  -601,   326,   339,
-   199,  -601,   199,   734,     2,   703,   735,  1079,  1080,   340,
-    76,  1081,   966,  1082,   199,   199,   199,   100,   985,   420,
-   711,   985,   712,   653,   341,   405,   406,   535,   536,   537,
-  1132,   296,   296,   419,   296,   560,   420,   898,  1138,   342,
-   194,   420,  -389,  -389,  -389,   818,  -389,  -389,   194,   452,
-    76,  1029,   194,  1152,   194,  1098,  1099,   324,   222,    95,
-  -440,   495,    95,   435,   579,  1027,   420,   582,  1194,   587,
-   739,   590,   360,   596,    95,  1028,    95,   492,   110,   111,
-   420,   603,   361,   194,   323,  -389,  -389,  -389,   362,  -389,
-  -389,   612,   820,   107,   366,   367,   107,   107,   107,   325,
-   332,   961,   193,   620,   981,  -566,   496,   982,   626,  -566,
-   107,   456,   985,  -565,   985,   740,   107,  -565,   195,   363,
-   953,   954,   332,   962,  1018,  1019,   365,   627,  1153,   963,
-  1143,  1157,  1144,  -609,   951,   952,   495,  -609,    76,    77,
-   123,   364,    79,    80,     2,  1159,  1160,  -281,  1145,   472,
-   955,   956,   957,   958,  1020,  1021,   435,   959,   960,   420,
-  -567,   199,   195,   493,  -567,   411,   412,  -657,  1022,   199,
-   195,   199,   452,  -587,   195,  1005,   195,  -587,   108,   403,
-   404,   460,   462,   464,     2,   624,  1161,   452,  1162,  1153,
-  -661,   666,   477,  1114,   456,   108,  -564,   414,   223,   798,
-  -564,   326,   420,  1198,  1163,   195,   867,   680,   681,   736,
-  -658,  -389,   696,  -389,   323,   199,   411,   412,    76,    77,
-   123,  -389,    79,    80,    76,  1029,  -280,  1152,   495,   325,
-   737,   407,   408,   626,   199,   738,   733,   415,   456,   193,
-   199,   107,   413,  -602,   107,   409,   410,  -602,   708,   709,
-   555,   556,   732,   346,   107,   346,   107,  1002,   107,   420,
-  1003,  -603,   416,   925,   734,  -603,   107,   735,   423,   107,
-   995,   405,   406,   107,  -280,   420,   495,   772,   332,   929,
-   293,   494,   194,   982,     2,   779,   298,   781,   300,   405,
-   406,   787,   788,    76,    77,   123,   792,    79,    80,  -604,
-   612,   799,  -494,  -604,   199,  -596,   496,   293,   798,  -596,
-  1092,  -598,   927,   107,   107,  -598,   801,   424,   400,   401,
-   402,   497,   403,   404,  -660,   346,   108,   405,   406,   108,
-   305,   306,   307,    76,    77,   123,  1033,    79,    80,   594,
-  -280,   108,   625,   108,   821,   822,   823,   824,   825,   826,
-   430,   326,   199,   199,   609,  1059,  1150,  1100,   614,  1101,
-  1065,   431,   182,   211,   211,   199,  -599,   436,   199,   199,
-  -599,  1168,   853,   854,  -280,  1102,   495,   403,   404,  1091,
-   889,   676,   677,  1072,     2,  1093,   855,   856,   189,   220,
-   220,   494,  -659,   384,  1104,   385,   107,  -389,   639,   640,
-   420,   710,  1182,  1143,   195,  1144,   440,  -581,   441,   917,
-   799,  -581,   626,  -389,  -586,   454,   386,   387,  -586,   194,
-   448,  1145,   445,  1125,  1126,   801,  1127,  1203,  1193,  1161,
-   469,  1162,   446,    76,    77,   123,  -595,    79,    80,   918,
-  -595,   199,   199,   293,  -585,   760,  1103,  1163,  -585,   400,
-   401,   402,   199,   199,   466,   199,   274,   275,   276,   277,
-   278,   279,   280,   281,   282,   283,  1113,  -584,   107,   982,
-   107,  -584,  1165,   948,   949,   950,  -583,   849,   850,   107,
-  -583,   326,   107,   107,   199,   293,  -606,   468,  1164,   299,
-  -606,   302,   182,   304,   474,   308,   485,   760,  1017,   491,
-   310,   983,   407,   408,   500,  -582,   851,   852,   990,  -582,
-   318,  1036,   319,  1037,   501,   427,   409,   410,   189,  -579,
-   899,   677,  1061,  -579,  1038,  1039,   502,  1040,  1201,  1041,
-  1042,   857,   858,    76,    77,   123,   182,    79,    80,  -580,
-   504,   195,  1043,  -580,   182,  -576,   505,   692,   182,  -576,
-   182,   506,  -577,   594,   388,   594,  -577,  1006,   211,   199,
-   991,   992,   189,   211,   794,   211,   507,   614,   108,   508,
-   189,  -568,   513,   309,   189,  -568,   189,   211,   211,   182,
-   420,  1075,  -571,   636,   220,   434,  -571,  1008,   564,   220,
-  1046,   220,   107,    95,   565,    76,    77,   123,  1052,    79,
-    80,   567,   107,   220,   220,   189,   503,    76,  1095,   799,
-   568,  1068,   332,   569,   582,   580,   456,  -607,   584,  1073,
-  1074,  -607,  -591,   601,  1066,  -592,  -591,   452,  1177,  -592,
-   520,  1179,  1180,   407,   408,   524,   525,   526,   527,   528,
-   529,   530,   531,   532,   533,   534,   586,   409,   410,   830,
-  -593,   831,   585,  -389,  -593,   602,    95,  -589,  1115,  1117,
-  -572,  -589,  -280,  -570,  -572,   589,   554,  -570,   332,  -389,
-  -574,   452,   832,   833,  -574,   799,  -575,   108,   595,  -573,
-  -575,   604,   450,  -573,   611,   610,   453,   924,   870,   871,
-   872,   615,   420,   512,   873,   874,   875,   876,   877,   878,
-   879,   515,   619,   516,   465,   623,   634,   467,   892,   629,
-   635,   892,   389,   631,   652,   475,   667,   632,   478,   400,
-   401,   402,  1167,   331,   655,    95,   107,   107,  1171,   656,
-  1052,   846,   847,   848,   658,   670,   331,   331,   331,   331,
-   331,   331,   672,   358,   359,   835,   390,   391,   392,   393,
-   394,   395,   396,   397,   398,   399,   673,   675,   760,   870,
-   871,   872,   678,   517,   688,  1034,   909,   910,   911,  1139,
-  1140,  1141,   575,   690,   693,   107,   701,   695,   182,   836,
-   837,   838,   839,   840,   841,   842,   843,   844,   845,  1034,
-   705,   107,   704,   774,   107,   777,   770,   211,   783,   789,
-   805,   791,   807,   829,   189,   808,   811,  1090,   812,  1209,
-   859,  1010,  1011,   816,   817,   862,   865,  1097,  1034,  1034,
-  1213,   903,   907,   220,   861,   860,  1111,   916,   892,   921,
-   892,   892,   892,   922,   926,   928,   575,   930,   107,   478,
-   967,   968,   -52,  1004,   -49,  1007,   583,  1016,  1116,  1048,
-  1060,   588,  1070,   591,   180,  1076,  1119,   107,  1120,  1122,
-   108,   600,  1105,  1172,  1146,   605,  1128,  1090,  1090,  1090,
-  1130,  1170,  1173,   871,  1192,  1090,   108,  1205,  1124,  1069,
-  1137,  1147,   707,  1149,  1158,   575,  1178,  1199,  1206,  1207,
-  1208,  1034,   107,   107,  1034,  1210,  1212,  1111,  1111,  1215,
-   575,   665,  1216,  1111,   285,   476,   887,   107,   873,   874,
-   875,   876,   877,   878,   879,   182,   979,  1062,  1148,  1094,
-   975,   999,   892,   108,   892,  1195,  1090,   785,   185,   217,
-   217,  1064,  1166,  1090,   669,   107,   107,  1090,   909,   910,
-   911,   189,   108,   933,   873,   874,   875,   876,   877,   878,
-   879,  1169,  1034,   107,   107,  1111,   782,   598,   780,   797,
-   919,   311,   498,   331,   227,   443,  1129,   633,   561,  1013,
-   583,   814,  1090,   665,   714,     0,     0,  1155,  1156,     0,
-     0,     0,   344,     0,   345,   665,     0,     0,     0,     0,
-     0,     0,   108,     0,     0,   478,     0,   331,   331,   331,
-   331,   331,   331,   331,   331,   331,   331,   331,   331,   331,
-   331,   331,   331,     0,   697,     0,   804,     0,     0,   702,
-  1187,  1188,     0,     0,     0,   186,   218,   218,   180,     0,
-   785,     0,     0,   785,     0,     0,   180,     0,  1196,  1197,
-   180,     0,   180,     0,   331,     0,     0,   762,     0,     0,
-   432,   187,   219,   219,     0,     0,     0,     0,   185,     0,
+   270,   271,   272,   273,   540,   541,   549,   105,   641,   550,
+   509,  -440,   495,   572,   284,   542,   543,   544,   545,   473,
+   729,    95,  1049,    92,   433,   643,   731,   581,   741,   437,
+   698,   438,   184,   332,     2,   548,   883,   913,   896,   301,
+  1027,   988,   905,   442,   900,    95,   985,   902,   293,   985,
+  1028,    88,  1134,  1136,  1027,   314,   315,   317,   312,   993,
+  1132,   323,   293,   477,  1028,  1098,  1099,   325,  1018,  1019,
+  -613,   439,   729,   495,  -613,  -280,   776,   346,   731,  1133,
+   741,     2,  1176,   809,   356,   687,   417,   295,   414,   105,
+     2,   570,  -103,  -103,   366,   367,  1106,   100,  1020,  1021,
+   118,   418,   121,  1192,   303,  1193,  1107,   522,   810,  1188,
+  1183,   739,  1022,    76,    77,   123,   313,    79,    80,   935,
+   193,   107,  1185,   523,   107,   327,   740,   978,   107,   199,
+   199,   199,  1054,    88,  1056,   936,   194,  1045,  1153,   622,
+   985,  1157,   985,   346,  1186,   628,   336,   222,  1191,   980,
+   293,   803,   222,   883,   222,   682,   511,   987,   994,   989,
+   337,   195,   349,   739,   110,   111,   222,   222,   338,   686,
+    76,    77,   123,   473,    79,    80,   339,   895,   740,   100,
+   897,  1159,  1160,  1207,    76,    77,   123,   863,    79,    80,
+  -103,  -103,   650,   296,   296,  1077,   296,  -110,  -110,  1153,
+    76,  1029,   864,   107,   477,  1078,   422,   662,   350,   351,
+   352,   353,   354,   355,    76,  1029,   420,   420,   428,   324,
+   429,  1135,   638,  1009,   571,   447,   735,   107,   458,   477,
+   301,  1078,  -389,   452,   420,  -389,   732,  -389,   493,  1200,
+   341,    95,   456,   107,   459,   461,   737,   684,   738,   444,
+   193,   360,  1058,   733,   107,  1001,    76,  1108,    95,   199,
+   803,   420,   734,   437,   323,   616,   194,   346,   342,   700,
+   407,   408,   703,   332,   403,   404,   736,   199,   735,  1100,
+   562,  1101,   223,   223,   409,   410,   496,   711,   732,   712,
+   419,   195,   497,   420,   193,  -110,  -110,  1102,   737,   365,
+   738,   435,   193,   199,   420,   733,   193,   346,   193,   455,
+   194,   199,  -611,   199,   734,   199,  -611,   199,   194,   964,
+   413,   361,   194,   698,   194,   199,   470,   420,   736,   362,
+   199,   618,   199,   729,   363,   195,   966,   193,  -280,   731,
+   495,   741,   364,   195,   199,   199,   199,   195,     2,   195,
+  -657,  1079,  1080,   194,   332,    76,  1081,  1002,  1082,   820,
+  1003,   274,   275,   276,   277,   278,   279,   280,   281,   282,
+   283,   492,   108,  -661,   420,   108,   853,   854,   195,   124,
+   452,    76,  1081,  -389,  -389,  -389,   222,  -389,  -389,    95,
+   855,   856,    95,  -281,   299,   286,   302,  -658,   304,   587,
+   308,   590,   332,   596,    95,   310,    95,   413,  -389,  -389,
+  -389,   603,  -389,  -389,   323,   318,   981,   319,   636,   982,
+   325,   612,   637,   107,   739,   898,   107,   107,   107,   959,
+   960,   951,   952,   620,  1027,   414,   496,  1151,   626,   740,
+   107,   456,   415,   494,  1028,  -601,   107,   416,   560,  -601,
+   953,   954,   962,   293,   108,   963,   982,   579,   423,   388,
+   582,   955,   956,   957,   958,  1143,  -494,  1144,   477,   535,
+   536,   537,   420,   405,   406,   424,   653,   223,   108,   793,
+  -660,   961,   223,  1145,   223,  -602,   420,   477,   685,  -602,
+   818,   199,  1150,  1100,   326,  1101,   223,   223,   430,   199,
+  -566,   199,  1005,   452,  -566,   340,  -389,   696,  -389,   293,
+   332,  1102,  1092,   405,   406,  -609,  -389,   293,   452,  -609,
+  1103,   666,  1114,  1113,   456,   624,   982,  -603,   431,   798,
+  -663,  -603,   332,   305,   306,   307,   193,   680,   681,   735,
+  1161,  -280,  1162,   495,   323,   199,  -659,   411,   412,   732,
+   325,     2,   194,   494,   436,   405,   406,  1027,  1163,   737,
+  1196,   738,   440,   626,   199,   495,   733,  1028,   456,   627,
+   199,   107,  -565,     2,   107,   734,  -565,   195,   708,   709,
+     2,  -663,   441,   346,   107,   346,   107,   450,   107,   736,
+   293,   453,   445,  1164,    76,  1029,   107,  1152,   419,   107,
+  -280,   420,   495,   107,  -604,   493,   446,   772,  -604,   465,
+     2,  -281,   467,   472,  -596,   779,   448,   781,  -596,   454,
+   475,   787,   788,   478,   405,   406,   792,   400,   401,   402,
+   612,   799,   405,   406,   199,  -567,   496,   801,   798,  -567,
+   474,  -587,   497,   107,   107,  -587,   469,  -389,  -389,  -389,
+  1072,  -389,  -389,  1182,  1143,   346,  1144,  -564,    76,    77,
+   123,  -564,    79,    80,   466,   420,  -389,  -389,  -389,   867,
+  -389,  -389,  1145,   193,   108,   411,   412,   460,   462,   464,
+  -663,  -663,   199,   199,  -663,  -663,   468,   435,   332,   194,
+   420,   108,   420,   491,   493,   199,   925,   326,   199,   199,
+   420,    76,    77,   123,   929,    79,    80,   918,   485,   692,
+   889,   182,   211,   211,   195,  -581,   223,    76,  1029,  -581,
+  1152,   500,   927,    76,    77,   123,   107,    79,    80,  -586,
+    76,    77,   123,  -586,    79,    80,  1036,  -585,  1037,   917,
+   799,  -585,   626,  -584,   478,   501,   801,  -584,   502,  1038,
+  1039,   583,  1040,   504,  1041,  1042,   588,   471,   591,  1168,
+    76,    77,   123,   505,    79,    80,   600,  1043,   506,  -583,
+   605,   199,   199,  -583,  -582,   760,  -606,  -579,  -582,   507,
+  -606,  -579,   199,   199,   508,   199,   821,   822,   823,   824,
+   825,   826,   407,   408,   400,   401,   402,   384,   107,   385,
+   107,  -389,   564,  -280,  -580,   495,   409,   410,  -580,   107,
+   555,   556,   107,   107,   199,  1205,  -280,  -389,   625,  -595,
+   386,   387,   108,  -595,   565,   108,  -607,   760,  1017,   513,
+  -607,   983,   400,   401,   402,   594,  -576,   108,   990,   108,
+  -576,   182,   407,   408,  -577,   676,   677,   326,  -577,   343,
+   609,   298,  1061,   300,   614,   328,   409,   410,   420,   710,
+   139,   140,   141,   142,   143,   144,   567,   477,   849,   850,
+   892,  1195,  1161,   892,  1162,   583,   568,   145,   146,   147,
+  -598,   846,   847,   848,  -598,   182,  -389,   696,  -389,   199,
+  1163,   403,   404,   182,   639,   640,  -389,   182,  -599,   182,
+   478,   148,  -599,   309,  -568,   851,   852,   211,  -568,   403,
+   404,   580,   211,   585,   211,   948,   949,   950,   584,   697,
+  1046,   569,   107,    95,   702,   389,   211,   211,   182,   610,
+  -571,   830,   107,   831,  -571,  -389,   636,   857,   858,   799,
+  1008,  1068,   157,  -591,  -592,  1066,   456,  -591,  -592,  1073,
+  1074,  -389,   762,  -593,   832,   833,   586,  -593,   452,   390,
+   391,   392,   393,   394,   395,   396,   397,   398,   399,   899,
+   677,  -589,   870,   871,   872,  -589,  -280,   326,   873,   874,
+   875,   876,   877,   878,   879,   589,    95,   595,  1115,  1117,
+   892,  1052,   892,   892,   892,   604,  -572,  -570,  -262,  1006,
+  -572,  -570,   452,   611,   328,   799,   601,   582,   602,   139,
+   140,   141,   142,   143,   144,    76,   329,   330,   160,    76,
+    77,   123,   332,    79,    80,   834,   145,   146,   147,   180,
+   991,   992,  -574,   909,   910,   911,  -574,   683,  1177,   873,
+   874,   875,   876,   877,   878,   879,   870,   871,   872,   594,
+   148,   594,  1167,   331,   615,    95,   107,   107,  1171,   420,
+   794,  1179,  1180,   614,   108,   619,   331,   331,   331,   331,
+   331,   331,  -575,   358,   359,   629,  -575,  -573,   332,   503,
+   631,  -573,   420,  1075,   892,   904,   892,   623,   760,    76,
+  1095,   157,   909,   910,   911,  1034,   873,   874,   875,   876,
+   877,   878,   879,   520,   632,   107,   634,   635,   524,   525,
+   526,   527,   528,   529,   530,   531,   532,   533,   534,  1034,
+   652,   107,   655,  1052,   107,   658,   656,   182,  1139,  1140,
+  1141,   667,   670,   672,   678,   673,   675,  1090,   690,   554,
+   688,  1211,   774,   693,   701,   705,   211,  1097,  1034,  1034,
+   695,   704,  1215,   770,   777,   783,  1111,   344,   789,   345,
+   791,   805,   811,   807,    76,   329,   330,   160,   107,   808,
+   812,   816,   817,   108,   829,   860,   865,   859,   903,   861,
+   976,   977,   862,   924,   907,   916,   928,   107,   984,   921,
+   922,   926,   930,   967,   968,  1004,   -52,  1090,  1090,  1090,
+  1007,   -49,  1016,   180,  1048,  1070,  1076,  1119,  1116,  1120,
+  1122,   180,  1000,  1060,  1105,   180,  1128,   180,  1124,  1130,
+  1138,  1034,   107,   107,  1034,   432,  1146,  1111,  1111,  1172,
+  1170,   871,   427,  1111,   835,  1173,  1217,   107,  1209,  1214,
+  1147,  1149,  1158,  1184,  1194,  1201,   180,  1208,  1206,  1210,
+  1212,  1218,   285,   476,   887,   979,  1090,  1062,  1148,  1090,
+  1094,   975,   999,  1090,   182,   107,   107,  1090,   836,   837,
+   838,   839,   840,   841,   842,   843,   844,   845,  1047,  1197,
+  1064,  1166,  1034,   107,   107,  1111,   598,   933,  1169,   669,
+   782,   919,   780,   331,   311,   797,   227,   443,   498,  1129,
+   633,   814,  1090,   561,  1013,     0,     0,  1010,  1011,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,   180,     0,     0,     0,   931,   520,     0,     0,     0,
-     0,   937,   938,   939,   940,   941,   942,   943,   944,   945,
-   946,   947,   331,     0,     0,     0,     0,   331,     0,     0,
-     0,     0,   185,     0,     0,     0,     0,     0,     0,     0,
-   185,     0,     0,     0,   185,     0,   185,     0,     0,     0,
-   834,     0,     0,     0,   217,     0,     0,     0,     0,   217,
-     0,   217,     0,     0,     0,   785,     0,     0,     0,     0,
-     0,     0,     0,   217,   217,   185,     0,     0,   331,     0,
-   331,     0,   645,   647,     0,   186,     0,     0,     0,     0,
-     0,     0,     0,     0,   196,   225,   225,     0,     0,     0,
-     0,     0,     0,     0,   483,     0,     0,     0,     0,     0,
-   904,   187,   486,   487,   488,   489,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   186,
-   331,     0,     0,   483,     0,     0,     0,   186,     0,     0,
-     0,   186,     0,   186,   483,     0,     0,   198,   226,   226,
-     0,   218,   331,     0,     0,   187,   218,     0,   218,     0,
-     0,   521,     0,   187,     0,     0,     0,   187,   785,   187,
-   218,   218,   186,     0,     0,     0,     0,   219,     0,     0,
-     0,   730,   219,     0,   219,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,   219,   219,   187,     0,
-   180,     0,     0,     0,     0,   976,   977,   566,     0,     0,
-     0,     0,     0,   984,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,   196,     0,     0,     0,     0,     0,
-     0,     0,     0,   730,     0,     0,     0,  1000,     0,     0,
-     0,     0,     0,     0,   331,   331,   331,   331,   331,   331,
+     0,     0,     0,   185,   217,   217,     0,   331,   331,   331,
+   331,   331,   331,   331,   331,   331,   331,   331,   331,   331,
+   331,   331,   331,     0,     0,   995,     0,  1118,     0,   483,
+     0,     0,     0,     0,     0,   707,   108,   486,   487,   488,
+   489,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,   108,     0,   331,  1069,     0,     0,   483,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,   483,
+     0,     0,     0,     0,     0,     0,     0,   189,   220,   220,
+   785,     0,     0,     0,     0,     0,   521,     0,     0,     0,
+   512,  1033,     0,     0,     0,     0,     0,     0,   515,   108,
+   516,     0,   331,     0,     0,     0,     0,   331,     0,     0,
+  1059,     0,     0,     0,     0,  1065,     0,     0,   108,     0,
+     0,     0,     0,     0,     0,   180,     0,     0,     0,     0,
+     0,     0,   566,   185,  1091,     0,     0,     0,     0,     0,
+  1093,     0,     0,     0,     0,  1204,     0,     0,     0,  1104,
+     0,     0,     0,  1155,  1156,     0,     0,     0,   331,     0,
+   331,     0,   645,   647,     0,     0,     0,     0,   108,   575,
+     0,     0,     0,     0,     0,     0,     0,   185,  1125,  1126,
+     0,  1127,     0,   785,     0,   185,   785,     0,     0,   185,
+     0,   185,     0,   186,   218,   218,  1189,  1190,     0,   217,
+  1137,     0,     0,     0,   217,     0,   217,   189,     0,     0,
+   331,   187,   219,   219,  1198,  1199,     0,     0,   217,   217,
+   185,     0,     0,     0,     0,     0,     0,  1165,   931,   520,
+     0,     0,   331,   575,   937,   938,   939,   940,   941,   942,
+   943,   944,   945,   946,   947,     0,     0,     0,     0,  1178,
+     0,   189,     0,   642,     0,     0,     0,     0,     0,   189,
+     0,   730,   180,   189,     0,   189,     0,     0,     0,     0,
+     0,     0,     0,   220,   434,     0,     0,     0,   220,     0,
+   220,     0,   575,  1203,     0,     0,     0,     0,   785,     0,
+     0,     0,   220,   220,   189,     0,     0,   575,   665,   196,
+   225,   225,   198,   226,   226,     0,     0,     0,     0,     0,
+     0,     0,     0,   730,     0,     0,     0,     0,     0,     0,
+   489,     0,     0,   186,   331,   331,   331,   331,   331,   331,
    827,   828,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,   196,     0,
-     0,     0,     0,     0,   185,     0,   196,   198,     0,     0,
-   196,     0,   196,     0,     0,     0,     0,     0,     0,     0,
-   225,     0,     0,   217,     0,   225,     0,   225,     0,     0,
-     0,     0,     0,  1047,     0,     0,     0,     0,   331,   225,
-   225,   196,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,   198,     0,     0,     0,     0,     0,     0,   642,   198,
-     0,     0,     0,   198,     0,   198,     0,   180,     0,     0,
-     0,     0,   331,   226,     0,     0,     0,     0,   226,     0,
-   226,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,   226,   226,   198,     0,     0,     0,     0,     0,
-     0,   186,  1118,   331,   331,   331,   331,   331,   331,   331,
+     0,   187,     0,     0,     0,   483,     0,   483,     0,     0,
+     0,     0,     0,   715,     0,     0,   761,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,   186,     0,     0,
+   665,   714,     0,     0,     0,   186,     0,     0,     0,   186,
+     0,   186,   665,     0,     0,   187,     0,     0,   331,   218,
+     0,   785,     0,   187,   218,     0,   218,   187,     0,   187,
+     0,     0,     0,     0,     0,     0,   813,   219,   218,   218,
+   186,     0,   219,   804,   219,     0,     0,   819,     0,   185,
+     0,     0,   331,     0,     0,     0,   219,   219,   187,   196,
+     0,     0,   198,     0,     0,     0,     0,     0,   217,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,   517,   331,   331,   331,   331,   331,   331,   331,
    331,   331,   331,   331,   331,   331,   331,   331,   331,   331,
-   218,   331,     0,     0,     0,   489,     0,   187,     0,     0,
+     0,   331,     0,   196,     0,     0,   198,     0,     0,     0,
+     0,   196,     0,     0,   198,   196,     0,   196,   198,     0,
+   198,     0,     0,   189,     0,   225,   784,  1057,   226,     0,
+   225,   328,   225,   226,     0,   226,   139,   140,   141,   142,
+   143,   144,   220,     0,   225,   225,   196,   226,   226,   198,
+     0,     0,     0,   145,   146,   147,     0,     0,     0,     0,
+     0,     0,   934,     0,     0,     0,     0,   331,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,   148,     0,     0,
+     0,     0,     0,     0,     0,     0,   185,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,   185,     0,     0,     0,     0,   219,     0,     0,     0,
-   483,     0,   483,     0,     0,     0,     0,     0,   715,     0,
-   201,   761,     0,     0,     0,   126,   127,   128,     0,     0,
-   202,   131,   132,   133,   134,   135,   136,   203,  -468,  -468,
-     0,     0,     0,   204,  -468,     0,     0,   331,   139,   140,
-   141,   142,   143,   144,     0,     0,     0,     0,     0,     0,
-     0,  -280,  -280,     0,     0,   145,   146,   147,     0,     0,
-     0,   813,     0,     0,     0,     0,     0,     0,     0,     0,
-  1202,     0,   819,     0,   730,     0,     0,     0,     0,   148,
-     0,     0,     0,     0,     0,     0,     0,     0,   186,     0,
-   196,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,  -468,   150,   151,   152,   153,   154,   155,     0,   225,
-     0,     0,     0,     0,   187,     0,   156,   343,     0,     0,
-   157,     0,     0,   328,     0,     0,     0,     0,   139,   140,
-   141,   142,   143,   144,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,   198,     0,   145,   146,   147,     0,     0,
+     0,     0,     0,     0,   730,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,   157,     0,
+     0,     0,   126,   127,   128,     0,   129,   130,   131,   132,
+   133,   134,   135,   136,   203,  -520,   659,     0,     0,   186,
+   368,     0,     0,     0,     0,   139,   140,   141,   142,   143,
+   144,   489,     0,     0,     0,     0,     0,   187,   218,     0,
+   189,     0,   145,   146,   147,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,   219,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,   148,     0,     0,     0,
+     0,    76,   329,   330,   160,     0,  1012,     0,     0,     0,
+     0,     0,    -1,     1,     0,     0,     0,     0,     0,   150,
+   151,   152,   153,   154,   155,     0,     0,     0,     0,     0,
+     0,     0,     0,   156,     0,     0,  -280,   157,     0,     0,
+     0,     0,     0,     0,     0,     0,     2,     0,     0,     0,
+     0,     0,     0,     0,     0,   196,     0,     3,   198,     0,
+     0,     0,   331,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,   225,     0,     0,   226,   331,  -389,
+  -389,  -389,     0,     4,     0,     0,   186,     5,     6,     7,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,   226,     0,     0,     0,     0,     0,     0,   148,
+     0,     8,     9,    10,   187,     0,     0,     0,     0,     0,
+    76,   158,   159,   160,   161,    80,     0,     0,   331,     0,
+    11,    12,    13,     0,    14,    15,    16,    17,    18,    19,
+    20,    21,    22,    23,     0,    24,    25,    26,    27,    28,
+    29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
+     0,    39,    40,    41,    42,    43,    44,    45,    46,    47,
+    48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
+    58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
+    68,    69,    70,    71,    72,    73,    74,    75,    -2,     1,
+     0,     0,   196,     0,     0,   198,    76,    77,    78,     0,
+    79,    80,    81,  -520,     0,     0,     0,     0,   368,     0,
+     0,     0,  -280,   139,   140,   141,   142,   143,   144,     0,
+     0,     0,     2,     0,     0,     0,     0,     0,     0,     0,
+   145,   146,   147,     3,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,    -1,     1,     0,     0,   934,     0,     0,
-     0,     0,    76,   158,   159,   160,   205,   206,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,  -280,     0,     0,
-   157,     0,     0,     0,     0,     0,     0,     2,     0,     0,
-     0,     0,   331,     0,     0,     0,     0,   196,     3,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,   331,     0,
+     0,     0,     0,     0,   148,  -389,  -389,  -389,     0,     4,
+     0,     0,     0,     5,     6,     7,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     8,     9,    10,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-  -389,  -389,  -389,     0,     4,     0,     0,     0,     5,     6,
-     7,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     8,     9,    10,     0,   489,     0,   331,     0,
-   198,     0,    76,   329,   330,   160,     0,     0,     0,     0,
-     0,    11,    12,    13,     0,    14,    15,    16,    17,    18,
-    19,    20,    21,    22,    23,     0,    24,    25,    26,    27,
-    28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
-    38,  1012,    39,    40,    41,    42,    43,    44,    45,    46,
-    47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
-    57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
-    67,    68,    69,    70,    71,    72,    73,    74,    75,    -2,
-     1,     0,     0,     0,     0,     0,    76,    77,    78,     0,
-    79,    80,    81,  -262,     0,     0,     0,     0,     0,   328,
-     0,     0,     0,  -280,   139,   140,   141,   142,   143,   144,
-     0,     0,     0,     2,     0,     0,     0,     0,     0,     0,
-     0,   145,   146,   147,     3,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,   148,  -389,  -389,  -389,     0,
-     4,     0,     0,     0,     5,     6,     7,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     8,     9,
-    10,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,   157,    11,    12,    13,
-     0,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-    23,     0,    24,    25,    26,    27,    28,    29,    30,    31,
-    32,    33,    34,    35,    36,    37,    38,     0,    39,    40,
-    41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
-    51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
-    61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
-    71,    72,    73,    74,    75,     0,     0,     0,    76,   329,
+     0,     0,     0,     0,     0,   157,    11,    12,    13,     0,
+    14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+     0,    24,    25,    26,    27,    28,    29,    30,    31,    32,
+    33,    34,    35,    36,    37,    38,     0,    39,    40,    41,
+    42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
+    52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
+    62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
+    72,    73,    74,    75,     0,     0,     0,     0,    76,   329,
    330,   160,    76,    77,    78,   125,    79,    80,    81,     0,
    126,   127,   128,     0,   129,   130,   131,   132,   133,   134,
    135,   136,   137,  -520,   558,     0,     0,     0,   138,     0,
@@ -1486,139 +1486,150 @@ static const short yytable[] = {    95,
     46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
     56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
     66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
-     0,     0,     0,     0,     0,     0,     0,    76,   158,   559,
-   160,   161,    80,    81,   125,     0,     0,     0,     0,   126,
-   127,   128,     0,   129,   130,   131,   132,   133,   134,   135,
-   136,   137,  -520,     0,     0,     0,     0,   138,     0,     0,
-     0,     0,   139,   140,   141,   142,   143,   144,     0,     0,
-     0,     0,     0,     0,     0,  -280,  -280,     0,     0,   145,
-   146,   147,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,    76,   158,
+   559,   160,   161,    80,    81,   125,     0,     0,     0,     0,
+   126,   127,   128,     0,   129,   130,   131,   132,   133,   134,
+   135,   136,   137,  -520,     0,     0,     0,     0,   138,     0,
+     0,     0,     0,   139,   140,   141,   142,   143,   144,     0,
+     0,     0,     0,     0,     0,     0,  -280,  -280,     0,     0,
+   145,   146,   147,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-  -280,  -280,  -280,   148,     0,     0,     0,     0,     0,     0,
+     0,  -280,  -280,  -280,   148,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,   150,   151,   152,   153,
-   154,   155,     0,     0,     0,     0,     0,     0,     0,     0,
-   156,  -280,  -280,  -280,   157,  -280,  -280,  -280,  -280,  -280,
-  -280,  -280,  -280,  -280,  -280,     0,  -280,  -280,  -280,  -280,
-  -280,  -280,  -280,  -280,  -280,  -280,  -280,  -280,  -280,  -280,
-  -280,     0,  -280,  -280,  -280,  -280,  -280,  -280,  -280,  -280,
-  -280,  -280,  -280,  -280,  -280,  -280,  -280,  -280,  -280,  -280,
+     0,     0,     0,     0,     0,     0,     0,   150,   151,   152,
+   153,   154,   155,     0,     0,     0,     0,     0,     0,     0,
+     0,   156,  -280,  -280,  -280,   157,  -280,  -280,  -280,  -280,
+  -280,  -280,  -280,  -280,  -280,  -280,     0,  -280,  -280,  -280,
   -280,  -280,  -280,  -280,  -280,  -280,  -280,  -280,  -280,  -280,
-  -280,  -280,  -280,  -280,  -280,  -280,  -280,  -280,  -280,     0,
-     0,     0,     0,     0,     0,     0,    76,   158,   159,   160,
-   161,    80,  -280,   201,     0,     0,     0,     0,   126,   127,
-   128,     0,     0,   202,   131,   132,   133,   134,   135,   136,
-   203,  -520,  -524,     0,     0,     0,   204,     0,     0,     0,
-     0,   139,   140,   141,   142,   143,   144,     0,     0,     0,
-     0,     0,     0,     0,  -280,  -280,     0,     0,   145,   146,
-   147,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,  -280,
-  -280,  -280,   148,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,   150,   151,   152,   153,   154,
-   155,     0,     0,     0,     0,     0,     0,     0,     0,   156,
-  -280,  -280,  -280,   157,  -280,  -280,  -280,  -280,  -280,  -280,
-  -280,  -280,  -280,  -280,     0,  -280,  -280,  -280,  -280,  -280,
+  -280,  -280,     0,  -280,  -280,  -280,  -280,  -280,  -280,  -280,
   -280,  -280,  -280,  -280,  -280,  -280,  -280,  -280,  -280,  -280,
-     0,  -280,  -280,  -280,  -280,  -280,  -280,  -280,  -280,  -280,
   -280,  -280,  -280,  -280,  -280,  -280,  -280,  -280,  -280,  -280,
   -280,  -280,  -280,  -280,  -280,  -280,  -280,  -280,  -280,  -280,
-  -280,  -280,  -280,  -280,  -280,  -280,  -280,  -280,     0,     0,
-     0,     0,     0,     0,     0,    76,   158,   159,   160,   205,
-   206,  -280,   125,     0,     0,     0,     0,   126,   127,   128,
-     0,   129,   130,   131,   132,   133,   134,   135,   136,   137,
-  -520,     0,     0,     0,     0,   138,     0,     0,     0,     0,
-   139,   140,   141,   142,   143,   144,     0,     0,     0,     0,
-     0,     0,     0,  -280,  -280,   125,     0,   145,   146,   147,
-   126,   127,   128,     0,   129,   130,   131,   132,   133,   134,
-   135,   136,   137,  -520,     0,     0,     0,     0,   138,     0,
-     0,   148,     0,   139,   140,   141,   142,   143,   144,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,    76,   158,
+   159,   160,   161,    80,  -280,   201,     0,     0,     0,     0,
+   126,   127,   128,     0,     0,   202,   131,   132,   133,   134,
+   135,   136,   203,  -520,  -524,     0,     0,     0,   204,     0,
+     0,     0,     0,   139,   140,   141,   142,   143,   144,     0,
      0,     0,     0,     0,     0,     0,  -280,  -280,     0,     0,
-   145,   146,   147,   149,   150,   151,   152,   153,   154,   155,
-     0,     0,     0,     0,     0,     0,     0,     0,   156,     0,
-     0,     0,   157,     0,   148,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,  -495,   150,   151,   152,
-   153,   154,   155,     0,     0,     0,     0,     0,     0,     0,
-     0,   156,     0,     0,     0,   157,     0,     0,     0,     0,
+   145,   146,   147,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,    76,   158,   159,   160,   161,    80,
-     0,     0,   201,     0,     0,     0,     0,   126,   127,   128,
-     0,     0,   202,   131,   132,   133,   134,   135,   136,   203,
-  -520,  -524,     0,     0,     0,   204,     0,     0,     0,     0,
-   139,   140,   141,   142,   143,   144,     0,    76,   158,   159,
-   160,   161,    80,  -280,  -280,   125,     0,   145,   146,   147,
-   126,   127,   128,     0,   129,   130,   131,   132,   133,   134,
-   135,   136,   137,  -520,   648,     0,     0,     0,   138,     0,
-     0,   148,     0,   139,   140,   141,   142,   143,   144,     0,
-     0,     0,     0,     0,     0,     0,  -280,  -280,     0,     0,
-   145,   146,   147,  -464,   150,   151,   152,   153,   154,   155,
-     0,     0,     0,     0,     0,     0,     0,     0,   156,     0,
-     0,     0,   157,     0,   148,     0,     0,     0,     0,     0,
+     0,  -280,  -280,  -280,   148,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,   150,   151,   152,
    153,   154,   155,     0,     0,     0,     0,     0,     0,     0,
-     0,   156,     0,     0,     0,   157,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,    76,   158,   159,   160,   205,   206,
-     0,     0,   201,     0,     0,     0,     0,   126,   127,   128,
-     0,     0,   202,   131,   132,   133,   134,   135,   136,   203,
-  -520,  -524,     0,     0,     0,   204,     0,     0,     0,     0,
-   139,   140,   141,   142,   143,   144,     0,    76,   158,   159,
-   160,   161,    80,  -280,  -280,   125,     0,   145,   146,   147,
-   126,   127,   128,     0,   129,   130,   131,   132,   133,   134,
-   135,   136,   137,  -520,     0,     0,     0,     0,   138,     0,
-     0,   148,     0,   139,   140,   141,   142,   143,   144,     0,
-     0,     0,     0,     0,     0,     0,  -280,  -280,     0,     0,
-   145,   146,   147,     0,   150,   151,   152,   153,   154,   155,
-     0,     0,     0,     0,     0,     0,     0,     0,   156,     0,
-     0,     0,   157,     0,   148,     0,     0,     0,     0,     0,
+     0,   156,  -280,  -280,  -280,   157,  -280,  -280,  -280,  -280,
+  -280,  -280,  -280,  -280,  -280,  -280,     0,  -280,  -280,  -280,
+  -280,  -280,  -280,  -280,  -280,  -280,  -280,  -280,  -280,  -280,
+  -280,  -280,     0,  -280,  -280,  -280,  -280,  -280,  -280,  -280,
+  -280,  -280,  -280,  -280,  -280,  -280,  -280,  -280,  -280,  -280,
+  -280,  -280,  -280,  -280,  -280,  -280,  -280,  -280,  -280,  -280,
+  -280,  -280,  -280,  -280,  -280,  -280,  -280,  -280,  -280,  -280,
+     0,     0,     0,     0,     0,     0,     0,     0,    76,   158,
+   159,   160,   205,   206,  -280,   201,     0,     0,     0,     0,
+   126,   127,   128,     0,     0,   202,   131,   132,   133,   134,
+   135,   136,   203,  -468,  -468,     0,     0,     0,   204,  -468,
+     0,     0,     0,   139,   140,   141,   142,   143,   144,     0,
+     0,     0,     0,     0,     0,     0,  -280,  -280,   125,     0,
+   145,   146,   147,   126,   127,   128,     0,   129,   130,   131,
+   132,   133,   134,   135,   136,   137,  -520,     0,     0,     0,
+     0,   138,     0,     0,   148,     0,   139,   140,   141,   142,
+   143,   144,     0,     0,     0,     0,     0,     0,     0,  -280,
+  -280,     0,     0,   145,   146,   147,  -468,   150,   151,   152,
+   153,   154,   155,     0,     0,     0,     0,     0,   784,     0,
+     0,   156,     0,   328,     0,   157,     0,   148,   139,   140,
+   141,   142,   143,   144,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,   145,   146,   147,     0,   149,
+   150,   151,   152,   153,   154,   155,     0,     0,     0,     0,
+     0,     0,     0,     0,   156,     0,     0,     0,   157,   148,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,   150,   151,   152,
-   153,   154,   155,     0,     0,     0,     0,     0,     0,     0,
-     0,   156,     0,     0,     0,   157,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,    76,   158,
+   159,   160,   205,   206,     0,     0,   125,     0,     0,     0,
+   157,   126,   127,   128,     0,   129,   130,   131,   132,   133,
+   134,   135,   136,   137,  -520,     0,     0,     0,     0,   138,
+     0,     0,     0,     0,   139,   140,   141,   142,   143,   144,
+     0,    76,   158,   159,   160,   161,    80,  -280,  -280,   201,
+     0,   145,   146,   147,   126,   127,   128,     0,     0,   202,
+   131,   132,   133,   134,   135,   136,   203,  -520,  -524,     0,
+     0,     0,   204,     0,     0,   148,     0,   139,   140,   141,
+   142,   143,   144,    76,   329,   330,   160,     0,     0,     0,
+  -280,  -280,     0,     0,   145,   146,   147,  -495,   150,   151,
+   152,   153,   154,   155,     0,     0,     0,     0,     0,     0,
+     0,     0,   156,     0,   328,   518,   157,     0,   148,   139,
+   140,   141,   142,   143,   144,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,   145,   146,   147,     0,
+  -464,   150,   151,   152,   153,   154,   155,     0,     0,     0,
+     0,     0,     0,     0,     0,   156,     0,     0,     0,   157,
+   148,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,    76,   158,   159,   160,   205,   206,
-     0,     0,     0,     0,     0,     0,     0,   126,   127,   128,
-     0,   129,   130,   131,   132,   133,   134,   135,   136,   203,
-  -520,   573,     0,     0,     0,   368,     0,     0,     0,     0,
-   139,   140,   141,   142,   143,   144,     0,    76,   158,   159,
-   160,   161,    80,  -280,  -280,     0,     3,   145,   146,   147,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,    76,
+   158,   159,   160,   161,    80,     0,     0,   125,     0,     0,
+     0,   157,   126,   127,   128,     0,   129,   130,   131,   132,
+   133,   134,   135,   136,   137,  -520,   648,     0,     0,     0,
+   138,     0,     0,     0,     0,   139,   140,   141,   142,   143,
+   144,     0,    76,   158,   159,   160,   205,   206,  -280,  -280,
+   201,     0,   145,   146,   147,   126,   127,   128,     0,     0,
+   202,   131,   132,   133,   134,   135,   136,   203,  -520,  -524,
+     0,     0,     0,   204,     0,     0,   148,     0,   139,   140,
+   141,   142,   143,   144,    76,   329,   330,   160,     0,     0,
+     0,  -280,  -280,     0,     0,   145,   146,   147,     0,   150,
+   151,   152,   153,   154,   155,     0,     0,     0,     0,     0,
+     0,     0,     0,   156,     0,   328,     0,   157,   621,   148,
+   139,   140,   141,   142,   143,   144,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,   145,   146,   147,
+     0,     0,   150,   151,   152,   153,   154,   155,     0,     0,
+     0,     0,     0,     0,     0,     0,   156,     0,     0,     0,
+   157,   148,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,   328,     0,     0,
+   699,     0,   139,   140,   141,   142,   143,   144,     0,     0,
+    76,   158,   159,   160,   161,    80,     0,     0,   125,   145,
+   146,   147,   157,   126,   127,   128,     0,   129,   130,   131,
+   132,   133,   134,   135,   136,   137,  -520,     0,     0,     0,
+     0,   138,     0,   148,     0,     0,   139,   140,   141,   142,
+   143,   144,     0,    76,   158,   159,   160,   205,   206,  -280,
+  -280,     0,     0,   145,   146,   147,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,   157,     0,     0,   148,     0,     0,
+     0,     0,     0,     0,     0,    76,   329,   330,   160,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,   148,     4,     0,     0,     0,     0,     0,     0,     0,
+   150,   151,   152,   153,   154,   155,     0,     0,     0,     0,
+     0,     0,     0,     0,   156,   126,   127,   128,   157,   129,
+   130,   131,   132,   133,   134,   135,   136,   203,  -520,   573,
+     0,     0,     0,   368,     0,     0,     0,     0,   139,   140,
+   141,   142,   143,   144,     0,     0,     0,    76,   329,   330,
+   160,  -280,  -280,     0,     3,   145,   146,   147,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,   150,   151,   152,   153,   154,   155,
-     0,     0,     0,     0,     0,     0,     0,     0,   574,    11,
-    12,    13,   157,    14,    15,    16,    17,    18,    19,    20,
-    21,    22,    23,     0,    24,    25,    26,    27,    28,    29,
-    30,    31,    32,    33,    34,    35,    36,    37,    38,     0,
-    39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
-    49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
-    59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
-    69,    70,    71,    72,    73,    74,    75,     0,     0,     0,
-     0,     0,     0,     0,    76,   158,   559,   160,   161,    80,
-    81,   126,   127,   128,     0,   129,   130,   131,   132,   133,
-   134,   135,   136,   203,  -520,   649,     0,     0,     0,   368,
-     0,     0,     0,     0,   139,   140,   141,   142,   143,   144,
-     0,     0,     0,     0,     0,     0,     0,  -280,  -280,     0,
-     3,   145,   146,   147,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,   148,
+     4,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,    76,   158,   159,   160,   161,    80,     0,     0,     0,
+     0,     0,   150,   151,   152,   153,   154,   155,     0,     0,
+     0,     0,     0,     0,     0,     0,   574,    11,    12,    13,
+   157,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+    23,     0,    24,    25,    26,    27,    28,    29,    30,    31,
+    32,    33,    34,    35,    36,    37,    38,     0,    39,    40,
+    41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
+    51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
+    61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
+    71,    72,    73,    74,    75,     0,     0,     0,     0,     0,
+     0,     0,     0,    76,   158,   559,   160,   161,    80,    81,
+   126,   127,   128,     0,   129,   130,   131,   132,   133,   134,
+   135,   136,   203,  -520,   649,     0,     0,     0,   368,     0,
+     0,     0,     0,   139,   140,   141,   142,   143,   144,     0,
+     0,     0,     0,     0,     0,     0,  -280,  -280,     0,     3,
+   145,   146,   147,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,   148,     4,     0,     0,     0,
+     0,     0,     0,     0,   148,     4,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,   150,   151,
-   152,   153,   154,   155,     0,     0,     0,     0,     0,     0,
-     0,     0,   156,    11,    12,    13,   157,    14,    15,    16,
-    17,    18,    19,    20,    21,    22,    23,     0,    24,    25,
-    26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
-    36,    37,    38,     0,    39,    40,    41,    42,    43,    44,
-    45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
-    55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
-    65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
-    75,     0,     0,     0,     0,     0,     0,     0,    76,   158,
+     0,     0,     0,     0,     0,     0,     0,   150,   151,   152,
+   153,   154,   155,     0,     0,     0,     0,     0,     0,     0,
+     0,   156,    11,    12,    13,   157,    14,    15,    16,    17,
+    18,    19,    20,    21,    22,    23,     0,    24,    25,    26,
+    27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
+    37,    38,     0,    39,    40,    41,    42,    43,    44,    45,
+    46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
+    56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
+    66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
+     0,     0,     0,     0,     0,     0,     0,     0,    76,   158,
    559,   160,   161,    80,    81,   126,   127,   128,     0,   129,
    130,   131,   132,   133,   134,   135,   136,   203,  -520,   660,
      0,     0,     0,   368,     0,     0,     0,     0,   139,   140,
@@ -1637,269 +1648,212 @@ static const short yytable[] = {    95,
     51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
     61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
     71,    72,    73,    74,    75,     0,     0,     0,     0,     0,
-     0,     0,    76,   158,   559,   160,   161,    80,    81,   126,
-   127,   128,     0,   129,   130,   131,   132,   133,   134,   135,
-   136,   203,  -520,   659,     0,     0,     0,   368,     0,     0,
-     0,     0,   139,   140,   141,   142,   143,   144,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   145,
-   146,   147,   126,   127,   128,     0,   129,   130,   131,   132,
-   133,   134,   135,   136,   203,  -520,   663,     0,     0,     0,
-   368,     0,     0,   148,     0,   139,   140,   141,   142,   143,
-   144,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,   145,   146,   147,     0,   150,   151,   152,   153,
-   154,   155,     0,     0,     0,     0,     0,     0,     0,     0,
-   156,     0,     0,     0,   157,     0,   148,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   150,
-   151,   152,   153,   154,   155,     0,     0,     0,     0,     0,
-     0,     0,     0,   664,   126,   127,   128,   157,   129,   130,
-   131,   132,   133,   134,   135,   136,   203,  -520,   713,     0,
-     0,     0,   368,     0,     0,     0,     0,   139,   140,   141,
-   142,   143,   144,     0,     0,     0,    76,   158,   159,   160,
-   161,    80,     0,     0,   145,   146,   147,   126,   127,   128,
-     0,   129,   130,   131,   132,   133,   134,   135,   136,   203,
-  -520,   766,     0,     0,     0,   368,     0,     0,   148,     0,
-   139,   140,   141,   142,   143,   144,     0,     0,     0,    76,
-   158,   159,   160,   161,    80,     0,     0,   145,   146,   147,
-     0,   150,   151,   152,   153,   154,   155,     0,     0,     0,
-     0,     0,     0,     0,     0,   156,     0,     0,     0,   157,
-     0,   148,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,   150,   151,   152,   153,   154,   155,
-     0,     0,     0,     0,     0,     0,     0,     0,   156,   126,
-   127,   128,   157,   129,   130,   131,   132,   133,   134,   135,
-   136,   203,  -520,   767,     0,     0,     0,   368,     0,     0,
-     0,     0,   139,   140,   141,   142,   143,   144,     0,     0,
-     0,    76,   158,   159,   160,   161,    80,     0,     0,   145,
-   146,   147,   126,   127,   128,     0,   129,   130,   131,   132,
-   133,   134,   135,   136,   203,  -520,   769,     0,     0,     0,
-   368,     0,     0,   148,     0,   139,   140,   141,   142,   143,
-   144,     0,     0,     0,    76,   158,   159,   160,   161,    80,
-     0,     0,   145,   146,   147,     0,   150,   151,   152,   153,
-   154,   155,     0,     0,     0,     0,     0,     0,     0,     0,
-   768,     0,     0,     0,   157,     0,   148,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   150,
-   151,   152,   153,   154,   155,     0,     0,     0,     0,     0,
-     0,     0,     0,   156,   126,   127,   128,   157,   129,   130,
-   131,   132,   133,   134,   135,   136,   203,  -520,   888,     0,
-     0,     0,   368,     0,     0,     0,     0,   139,   140,   141,
-   142,   143,   144,     0,     0,     0,    76,   158,   159,   160,
-   161,    80,     0,     0,   145,   146,   147,   126,   127,   128,
-     0,   129,   130,   131,   132,   133,   134,   135,   136,   203,
-  -520,     0,     0,     0,     0,   368,     0,     0,   148,     0,
-   139,   140,   141,   142,   143,   144,     0,     0,     0,    76,
-   158,   159,   160,   161,    80,     0,     0,   145,   146,   147,
-     0,   150,   151,   152,   153,   154,   155,     0,     0,     0,
-     0,     0,     0,     0,     0,   156,     0,     0,     0,   157,
-     0,   148,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,    76,   158,   559,   160,   161,    80,    81,
+   126,   127,   128,     0,   129,   130,   131,   132,   133,   134,
+   135,   136,   203,  -520,   663,     0,     0,     0,   368,     0,
+     0,     0,     0,   139,   140,   141,   142,   143,   144,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,   150,   151,   152,   153,   154,   155,
-   293,     0,     0,     0,     0,     0,     0,     0,   156,     0,
-     0,     0,   157,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     3,     0,     0,
+   145,   146,   147,   126,   127,   128,     0,   129,   130,   131,
+   132,   133,   134,   135,   136,   203,  -520,   713,     0,     0,
+     0,   368,     0,     0,   148,     0,   139,   140,   141,   142,
+   143,   144,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,   145,   146,   147,     0,   150,   151,   152,
+   153,   154,   155,     0,     0,     0,     0,     0,     0,     0,
+     0,   664,     0,     0,     0,   157,     0,   148,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,    76,   158,   159,   160,   161,    80,     0,     0,  -389,
-  -389,  -389,     0,     4,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+   150,   151,   152,   153,   154,   155,     0,     0,     0,     0,
+     0,     0,     0,     0,   156,   126,   127,   128,   157,   129,
+   130,   131,   132,   133,   134,   135,   136,   203,  -520,   766,
+     0,     0,     0,   368,     0,     0,     0,     0,   139,   140,
+   141,   142,   143,   144,     0,     0,     0,     0,    76,   158,
+   159,   160,   161,    80,     0,   145,   146,   147,   126,   127,
+   128,     0,   129,   130,   131,   132,   133,   134,   135,   136,
+   203,  -520,   767,     0,     0,     0,   368,     0,     0,   148,
+     0,   139,   140,   141,   142,   143,   144,     0,     0,     0,
+     0,    76,   158,   159,   160,   161,    80,     0,   145,   146,
+   147,     0,   150,   151,   152,   153,   154,   155,     0,     0,
+     0,     0,     0,     0,     0,     0,   156,     0,     0,     0,
+   157,     0,   148,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,    76,   158,   159,   160,   161,    80,
-    11,    12,    13,     0,    14,    15,    16,    17,    18,    19,
-    20,    21,    22,    23,     0,    24,    25,    26,    27,    28,
-    29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
-     0,    39,    40,    41,    42,    43,    44,    45,    46,    47,
-    48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
-    58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
-    68,    69,    70,    71,    72,    73,    74,    75,   293,     0,
-     0,     0,     0,     0,     0,     0,     0,   120,     0,     0,
-     0,    81,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     3,   784,  1057,     0,     0,
-     0,   328,     0,     0,     0,     0,   139,   140,   141,   142,
-   143,   144,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     4,     0,   145,   146,   147,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,  -654,     0,
-     0,     0,     0,     0,     0,     0,     0,   148,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,    11,    12,
-    13,     0,    14,    15,    16,    17,    18,    19,    20,    21,
-    22,    23,     0,    24,    25,    26,    27,    28,    29,    30,
-    31,    32,    33,    34,    35,    36,    37,    38,   157,    39,
-    40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
-    50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
-    60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
-    70,    71,    72,    73,    74,    75,  -146,     0,     0,     0,
-     0,  -146,     0,     0,     0,   120,     0,     0,     0,    81,
+     0,     0,     0,     0,     0,   150,   151,   152,   153,   154,
+   155,     0,     0,     0,     0,     0,     0,     0,     0,   768,
+   126,   127,   128,   157,   129,   130,   131,   132,   133,   134,
+   135,   136,   203,  -520,   769,     0,     0,     0,   368,     0,
+     0,     0,     0,   139,   140,   141,   142,   143,   144,     0,
+     0,     0,     0,    76,   158,   159,   160,   161,    80,     0,
+   145,   146,   147,   126,   127,   128,     0,   129,   130,   131,
+   132,   133,   134,   135,   136,   203,  -520,   888,     0,     0,
+     0,   368,     0,     0,   148,     0,   139,   140,   141,   142,
+   143,   144,     0,     0,     0,     0,    76,   158,   159,   160,
+   161,    80,     0,   145,   146,   147,     0,   150,   151,   152,
+   153,   154,   155,     0,     0,     0,     0,     0,     0,     0,
+     0,   156,     0,     0,     0,   157,     0,   148,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     3,     0,     0,     0,     0,     0,     0,     0,
-    76,   329,   330,   160,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     4,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+   150,   151,   152,   153,   154,   155,     0,     0,     0,     0,
+     0,     0,     0,     0,   156,   126,   127,   128,   157,   129,
+   130,   131,   132,   133,   134,   135,   136,   203,  -520,     0,
+     0,   293,     0,   368,     0,     0,     0,     0,   139,   140,
+   141,   142,   143,   144,     0,     0,     0,     0,    76,   158,
+   159,   160,   161,    80,     0,   145,   146,   147,     3,     0,
+     0,     0,     0,     0,   328,   932,     0,     0,     0,   139,
+   140,   141,   142,   143,   144,     0,     0,     0,     0,   148,
+  -389,  -389,  -389,     0,     4,     0,   145,   146,   147,     0,
+     0,    76,   158,   159,   160,   161,    80,     0,     0,     0,
+     0,     0,   150,   151,   152,   153,   154,   155,     0,     0,
+   148,     0,     0,     0,     0,     0,   156,     0,     0,     0,
+   157,    11,    12,    13,     0,    14,    15,    16,    17,    18,
+    19,    20,    21,    22,    23,     0,    24,    25,    26,    27,
+    28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
+    38,   157,    39,    40,    41,    42,    43,    44,    45,    46,
+    47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
+    57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
+    67,    68,    69,    70,    71,    72,    73,    74,    75,   293,
+     0,     0,     0,    76,   158,   159,   160,   161,    80,   120,
+     0,     0,     0,    81,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     3,     0,     0,     0,
+     0,     0,     0,     0,    76,   329,   330,   160,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     4,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,  -654,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,    11,    12,    13,     0,    14,
-    15,    16,    17,    18,    19,    20,    21,    22,    23,     0,
-    24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
-    34,    35,    36,    37,    38,     0,    39,    40,    41,    42,
-    43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
-    53,    54,    55,    56,    57,    58,    59,    60,    61,    62,
-    63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
-    73,    74,    75,   288,     0,     0,     0,     0,     0,     0,
-     0,     0,   120,     0,     0,     0,    81,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     3,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,    11,
+    12,    13,     0,    14,    15,    16,    17,    18,    19,    20,
+    21,    22,    23,     0,    24,    25,    26,    27,    28,    29,
+    30,    31,    32,    33,    34,    35,    36,    37,    38,     0,
+    39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
+    49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
+    59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
+    69,    70,    71,    72,    73,    74,    75,  -146,     0,     0,
+     0,     0,  -146,     0,     0,     0,     0,   120,     0,     0,
+     0,    81,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     3,     0,     0,     0,     0,     0,   328,
+  -262,     0,     0,     0,   139,   140,   141,   142,   143,   144,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     4,
+     0,   145,   146,   147,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,   148,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,    11,    12,    13,     0,
+    14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+     0,    24,    25,    26,    27,    28,    29,    30,    31,    32,
+    33,    34,    35,    36,    37,    38,   157,    39,    40,    41,
+    42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
+    52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
+    62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
+    72,    73,    74,    75,   288,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,   120,     0,     0,     0,    81,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     4,     0,     0,     0,     0,
+     3,     0,     0,     0,     0,     0,     0,     0,     0,    76,
+   329,   330,   160,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     4,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,  -523,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,    11,    12,    13,     0,    14,    15,    16,    17,
+     0,     0,     0,     0,  -523,     0,     0,     0,     0,     0,
+     0,     0,     0,    11,    12,    13,     0,    14,    15,    16,
+    17,    18,    19,    20,    21,    22,    23,     0,    24,    25,
+    26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
+    36,    37,    38,     0,    39,    40,    41,    42,    43,    44,
+    45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
+    55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
+    65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
+    75,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,   120,    11,    12,    13,    81,    14,    15,    16,    17,
     18,    19,    20,    21,    22,    23,     0,    24,    25,    26,
     27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
-    37,    38,     0,    39,    40,    41,    42,    43,    44,    45,
+    37,    38,  -661,    39,    40,    41,    42,    43,    44,    45,
     46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
     56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
     66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   120,
-    11,    12,    13,    81,    14,    15,    16,    17,    18,    19,
-    20,    21,    22,    23,     0,    24,    25,    26,    27,    28,
-    29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
-     0,    39,    40,    41,    42,    43,    44,    45,    46,    47,
-    48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
-    58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
-    68,    69,    70,    71,    72,    73,    74,    75,  -661,     0,
-     0,     0,     0,     0,     0,     0,     0,   120,     0,     0,
-     0,    81,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,  -520,     0,     0,     0,     0,   368,     0,     0,
-     0,     0,   139,   140,   141,   142,   143,   144,     0,     0,
-     0,     0,     0,  -663,  -663,  -663,     0,     0,     0,   145,
-   146,   147,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,  -663,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,   148,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,  -663,  -663,  -663,     0,  -663,  -663,
+     0,     0,     0,     0,     0,     0,     0,  -663,  -663,  -663,
+   120,     0,     0,     0,    81,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,  -663,     0,     0,     0,     0,
+     0,     0,  -280,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     2,     0,     0,     0,     0,     0,  -663,  -663,
+  -663,     0,  -663,  -663,  -663,  -663,  -663,  -663,  -663,  -663,
+  -663,  -663,     0,  -663,  -663,  -663,  -663,  -663,  -663,  -663,
   -663,  -663,  -663,  -663,  -663,  -663,  -663,  -663,     0,  -663,
   -663,  -663,  -663,  -663,  -663,  -663,  -663,  -663,  -663,  -663,
-  -663,  -663,  -663,  -663,   157,  -663,  -663,  -663,  -663,  -663,
   -663,  -663,  -663,  -663,  -663,  -663,  -663,  -663,  -663,  -663,
   -663,  -663,  -663,  -663,  -663,  -663,  -663,  -663,  -663,  -663,
-  -663,  -663,  -663,  -663,  -663,  -663,  -663,  -663,  -663,  -663,
-  -663,  -663,     0,     0,     0,     0,   784,     0,     0,     0,
-     0,   328,     0,     0,     0,  -663,   139,   140,   141,   142,
-   143,   144,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,   145,   146,   147,    76,   329,   330,   160,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,   148,     0,     0,
+  -663,  -663,  -663,  -663,  -663,  -663,    11,    12,    13,     0,
+    14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+  -663,    24,    25,    26,    27,    28,    29,    30,    31,    32,
+    33,    34,    35,    36,    37,    38,     0,    39,    40,    41,
+    42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
+    52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
+    62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
+    72,    73,    74,    75,     0,     0,     0,     0,     0,     0,
+     0,     0,    76,    77,    78,   328,    79,    80,    81,     0,
+   139,   140,   141,   142,   143,   144,   357,     0,     0,     0,
+     0,   139,   140,   141,   142,   143,   144,   145,   146,   147,
+     0,     0,     0,     0,     0,     0,   644,     0,   145,   146,
+   147,   139,   140,   141,   142,   143,   144,   646,     0,     0,
+     0,   148,   139,   140,   141,   142,   143,   144,   145,   146,
+   147,     0,   148,     0,     0,     0,     0,   716,     0,   145,
+   146,   147,   717,   718,   719,   720,   721,   722,     0,     0,
+     0,     0,   148,     0,     0,     0,     0,     0,     0,   145,
+   723,   724,   157,   148,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,   157,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,   725,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,   157,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,   157,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,   157,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,    76,   329,   330,   160,  -206,
+  -206,     0,     0,     0,     0,     0,    76,   329,   330,   160,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,    76,   329,   330,   160,
+     0,     0,     0,     0,     0,     0,     0,    76,   329,   330,
+   160,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,    76,   726,   727,
+   728,     0,     0,     0,     0,    11,    12,    13,     0,    14,
+    15,    16,    17,    18,    19,    20,    21,    22,    23,     0,
+    24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
+    34,    35,    36,    37,    38,     0,    39,    40,    41,    42,
+    43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
+    53,    54,    55,    56,    57,    58,    59,    60,    61,    62,
+    63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
+    73,    74,    75,     3,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,   120,     0,     0,     0,    81,     0,     0,
+     0,     0,     0,     0,     0,  -389,  -389,  -389,     0,     4,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-  -280,     0,     0,     0,     0,     0,     0,     0,   157,     0,
-     2,   328,   518,     0,     0,     0,   139,   140,   141,   142,
-   143,   144,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,   145,   146,   147,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,   148,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-    76,   329,   330,   160,    11,    12,    13,     0,    14,    15,
-    16,    17,    18,    19,    20,    21,    22,    23,   157,    24,
-    25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
-    35,    36,    37,    38,     0,    39,    40,    41,    42,    43,
-    44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
-    54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
-    64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
-    74,    75,     0,     0,     0,     0,     0,     0,     0,    76,
-    77,    78,     0,    79,    80,    81,     0,     0,     0,     0,
-    76,   329,   330,   160,   328,     0,     0,   621,     0,   139,
-   140,   141,   142,   143,   144,   328,     0,     0,   699,     0,
-   139,   140,   141,   142,   143,   144,   145,   146,   147,     0,
-     0,     0,     0,     0,     0,   328,   932,   145,   146,   147,
-   139,   140,   141,   142,   143,   144,   328,  -262,     0,     0,
-   148,   139,   140,   141,   142,   143,   144,   145,   146,   147,
-     0,   148,     0,     0,     0,     0,   328,     0,   145,   146,
-   147,   139,   140,   141,   142,   143,   144,     0,     0,     0,
-     0,   148,     0,     0,     0,     0,     0,     0,   145,   146,
-   147,   157,   148,     0,     0,     0,     0,     0,     0,     0,
-     0,   357,   157,     0,     0,     0,   139,   140,   141,   142,
-   143,   144,   148,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,   157,   145,   146,   147,     0,     0,     0,     0,
-     0,     0,   644,   157,     0,     0,     0,   139,   140,   141,
-   142,   143,   144,     0,     0,     0,     0,   148,     0,     0,
-     0,     0,     0,   157,   145,   146,   147,     0,     0,     0,
-     0,     0,     0,    76,   329,   330,   160,     0,     0,     0,
-     0,     0,     0,     0,    76,   329,   330,   160,   148,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,   157,     0,
-     0,     0,     0,   646,    76,   329,   330,   160,   139,   140,
-   141,   142,   143,   144,     0,    76,   329,   330,   160,     0,
-     0,     0,     0,     0,     0,   145,   146,   147,     0,   157,
-     0,     0,     0,     0,   716,    76,   329,   330,   160,   717,
-   718,   719,   720,   721,   722,     0,     0,     0,     0,   148,
-     0,     0,     0,     0,     0,     0,   145,   723,   724,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-    76,   329,   330,   160,     0,     0,     0,     0,     0,     0,
-   725,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-   157,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,    76,   329,   330,   160,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,   157,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,  -206,  -206,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,    11,    12,    13,     0,
+    14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+     0,    24,    25,    26,    27,    28,    29,    30,    31,    32,
+    33,    34,    35,    36,    37,    38,     0,    39,    40,    41,
+    42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
+    52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
+    62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
+    72,    73,    74,    75,     3,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,   120,     0,     0,     0,    81,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,    76,   329,   330,   160,     0,     0,     0,     0,
+     4,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,    76,   726,   727,   728,    11,    12,    13,
+     0,     0,     0,     0,     0,     0,     0,    11,    12,    13,
      0,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     23,     0,    24,    25,    26,    27,    28,    29,    30,    31,
     32,    33,    34,    35,    36,    37,    38,     0,    39,    40,
     41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
     51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
     61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
-    71,    72,    73,    74,    75,     3,     0,     0,     0,     0,
-     0,     0,     0,     0,   120,     0,     0,     0,    81,     0,
-     0,     0,     0,     0,     0,     0,     0,  -389,  -389,  -389,
-     0,     4,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,    11,    12,
-    13,     0,    14,    15,    16,    17,    18,    19,    20,    21,
-    22,    23,     0,    24,    25,    26,    27,    28,    29,    30,
-    31,    32,    33,    34,    35,    36,    37,    38,     0,    39,
-    40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
-    50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
-    60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
-    70,    71,    72,    73,    74,    75,     3,     0,     0,     0,
+    71,    72,    73,    74,    75,  -389,  -389,  -389,     0,     0,
      0,     0,     0,     0,     0,   120,     0,     0,     0,    81,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     4,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,    11,
-    12,    13,     0,    14,    15,    16,    17,    18,    19,    20,
-    21,    22,    23,     0,    24,    25,    26,    27,    28,    29,
-    30,    31,    32,    33,    34,    35,    36,    37,    38,     0,
-    39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
-    49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
-    59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
-    69,    70,    71,    72,    73,    74,    75,  -389,  -389,  -389,
-     0,     0,     0,     0,     0,     0,   120,     0,     0,     0,
-    81,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,    11,    12,
-    13,     0,    14,    15,    16,    17,    18,    19,    20,    21,
-    22,    23,     0,    24,    25,    26,    27,    28,    29,    30,
-    31,    32,    33,    34,    35,    36,    37,    38,     0,    39,
-    40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
-    50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
-    60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
-    70,    71,    72,    73,    74,    75,     8,     9,    10,     0,
-     0,     0,     0,     0,     0,   120,     0,     0,     0,    81,
-     0,     0,     0,     0,     0,    11,    12,    13,     0,    14,
-    15,    16,    17,    18,    19,    20,    21,    22,    23,     0,
-    24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
-    34,    35,    36,    37,    38,     0,    39,    40,    41,    42,
-    43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
-    53,    54,    55,    56,    57,    58,    59,    60,    61,    62,
-    63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
-    73,    74,    75,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,   120,    11,    12,    13,    81,    14,    15,    16,
+     0,     0,     0,     0,     0,     0,    11,    12,    13,     0,
+    14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+     0,    24,    25,    26,    27,    28,    29,    30,    31,    32,
+    33,    34,    35,    36,    37,    38,     0,    39,    40,    41,
+    42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
+    52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
+    62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
+    72,    73,    74,    75,     8,     9,    10,     0,     0,     0,
+     0,     0,     0,     0,   120,     0,     0,     0,    81,     0,
+     0,     0,     0,    11,    12,    13,     0,    14,    15,    16,
     17,    18,    19,    20,    21,    22,    23,     0,    24,    25,
     26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
     36,    37,    38,     0,    39,    40,    41,    42,    43,    44,
@@ -1907,253 +1861,260 @@ static const short yytable[] = {    95,
     55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
     65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
     75,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,   120,    11,    12,    13,    81,    14,    15,    16,    17,
+    18,    19,    20,    21,    22,    23,     0,    24,    25,    26,
+    27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
+    37,    38,     0,    39,    40,    41,    42,    43,    44,    45,
+    46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
+    56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
+    66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    120,     0,     0,     0,    81
 };
 
 static const short yycheck[] = {     0,
-     0,   465,     3,   106,     0,    89,   497,   368,   619,     8,
-    11,    12,   366,   126,     9,    10,     2,    18,    19,    20,
+   465,     0,     3,   106,   368,    89,   303,     2,    19,    27,
+    11,    12,     9,    10,   619,   475,   497,    18,    19,    20,
     21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
     31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
-    41,    42,    43,    27,   551,   413,   623,    48,    49,    50,
+    41,    42,    43,   411,   412,   403,   404,    48,    49,    50,
     51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
-    61,    62,    63,    64,   405,   406,   654,   414,    19,   303,
-   654,   654,   320,   415,    75,   448,     8,    22,   403,   404,
-   784,    82,    82,   787,   790,   475,    82,   764,    24,    34,
-   451,   553,   322,   447,   407,   408,   409,   410,    34,   100,
-     5,   411,   412,   776,   796,   106,   204,    18,   902,  1126,
-    21,   209,    23,   211,   896,   116,   117,   118,   706,   674,
-    25,   122,   706,   706,   701,   223,     5,   113,     0,    18,
-  1147,   215,  1149,    28,    21,    24,   122,   138,    25,   138,
-    24,   495,    49,    50,   145,    34,    25,   654,  1077,    44,
-    34,    41,    39,     5,     9,    10,   139,   140,   141,   142,
-   143,   144,    86,    87,    28,    21,    56,    34,    26,  1077,
-  1078,    27,    24,    25,    26,    26,    34,    28,    86,    87,
-    44,     0,    34,   182,     3,   889,   980,    18,     7,     8,
-     9,    10,   654,    44,   886,   194,    41,   196,    24,   706,
-   906,   692,   186,   204,   881,   987,   138,   989,    34,   204,
-    82,    56,    24,  1142,   209,   605,   211,  1146,    85,   580,
-   775,    21,   895,   778,   897,    25,   225,  1135,   223,   224,
-   562,   604,   183,   184,   185,    85,   187,   188,   183,   184,
-   185,    24,   187,   188,   706,   577,   476,   183,   184,   603,
-   182,    34,  1181,   366,     5,    24,     8,    26,   190,   183,
-   184,    21,   194,    82,   196,    34,     0,    27,   502,     3,
-    18,   625,    18,     7,    25,   183,   184,    23,   183,   184,
-   185,    24,   187,   188,    27,   286,   654,   106,   992,    21,
-   291,    34,   292,   225,   183,   184,    24,     5,    26,   183,
-   184,   302,   303,   122,   305,   306,   302,   654,    18,   920,
-   801,    21,   654,   654,   133,    25,   183,   184,   319,   138,
-   187,   188,    21,   319,   325,     0,    25,   328,     3,   654,
-     5,   183,   184,   185,   447,   187,   188,   156,   706,   916,
-   424,   654,    24,    21,   654,   443,   347,    25,    82,   204,
-     5,   585,   600,    24,   209,   862,   211,   183,   184,   706,
-    24,   347,    21,   182,   706,   706,    25,   368,   223,   224,
-    29,   190,   106,   192,    24,   194,    21,   196,     8,   967,
-    25,   706,   495,   967,   967,   204,   138,    21,   122,    24,
-   209,    25,   211,   706,    34,   629,   706,   180,   181,   133,
-   183,   184,   864,   186,   223,   224,   225,    82,   893,    21,
-   644,   896,   646,    25,    18,    49,    50,   400,   401,   402,
-  1076,    96,    97,    18,    99,   424,    21,   781,  1084,    18,
-   182,    21,   183,   184,   185,    25,   187,   188,   190,   439,
-   183,   184,   194,   186,   196,  1027,  1028,   122,   443,   450,
-    25,    26,   453,    18,   450,    24,    21,   453,    27,   460,
-   967,   462,    24,   464,   465,    34,   467,    18,   108,   109,
-    21,   472,    16,   225,   475,   183,   184,   185,    16,   187,
-   188,   482,   716,   302,     6,     7,   305,   306,   307,   475,
-   603,   859,   424,   494,    18,    21,   497,    21,   499,    25,
-   319,   502,   987,    21,   989,   967,   325,    25,   138,    16,
-   851,   852,   625,   860,    86,    87,    15,   500,  1100,   861,
-    26,  1103,    28,    21,   849,   850,    26,    25,   183,   184,
-   185,    16,   187,   188,    34,  1106,  1107,    24,    44,    26,
-   853,   854,   855,   856,   116,   117,    18,   857,   858,    21,
-    21,   370,   182,    25,    25,    53,    54,    22,   130,   378,
-   190,   380,   562,    21,   194,   926,   196,    25,   302,    32,
-    33,   305,   306,   307,    34,  1066,    26,   577,    28,  1161,
-    22,   582,     5,  1047,   585,   319,    21,    39,   443,   692,
-    25,   325,    21,  1164,    44,   225,    25,   598,   599,   967,
-    22,    24,    25,    26,   605,   424,    53,    54,   183,   184,
-   185,    34,   187,   188,   183,   184,    24,   186,    26,   605,
-   967,    37,    38,   624,   443,   967,   967,    40,   629,   561,
-   449,   450,    29,    21,   453,    51,    52,    25,   639,   640,
-    42,    43,   967,   644,   463,   646,   465,    25,   467,    21,
-    28,    21,    55,    25,   967,    25,   475,   967,    92,   478,
-   908,    49,    50,   482,    24,    21,    26,   668,   781,    25,
-    18,   346,   424,    21,    34,   676,    97,   678,    99,    49,
-    50,   682,   683,   183,   184,   185,   687,   187,   188,    21,
-   691,   692,    92,    25,   513,    21,   697,    18,   801,    25,
-    21,    21,   815,   522,   523,    25,   692,    19,    34,    35,
-    36,   697,    32,    33,    22,   716,   450,    49,    50,   453,
-    67,    68,    69,   183,   184,   185,   974,   187,   188,   463,
-    24,   465,    26,   467,   717,   718,   719,   720,   721,   722,
-    22,   475,   561,   562,   478,   993,    25,    26,   482,    28,
-   998,    24,     8,     9,    10,   574,    21,    92,   577,   578,
-    25,  1115,    37,    38,    24,    44,    26,    32,    33,  1017,
-   771,    20,    21,  1007,    34,  1023,    51,    52,     8,     9,
-    10,   456,    22,    24,  1032,    26,   605,    28,   522,   523,
-    21,    22,    25,    26,   424,    28,    19,    21,    20,   800,
-   801,    25,   803,    44,    21,    18,    47,    48,    25,   561,
-    24,    44,    92,  1061,  1062,   801,  1064,  1171,    25,    26,
-    23,    28,    27,   183,   184,   185,    21,   187,   188,   189,
-    25,   650,   651,    18,    21,   654,    21,    44,    25,    34,
-    35,    36,   661,   662,    18,   664,    65,    66,    67,    68,
-    69,    70,    71,    72,    73,    74,    18,    21,   677,    21,
-   679,    25,  1110,   846,   847,   848,    21,    32,    33,   688,
-    25,   605,   691,   692,   693,    18,    21,    18,    21,    98,
-    25,   100,   138,   102,    24,   104,    22,   706,   972,    18,
-   109,   892,    37,    38,    25,    21,    49,    50,   899,    25,
-   119,   119,   121,   121,    25,   192,    51,    52,   138,    21,
-    20,    21,   996,    25,   132,   133,    24,   135,  1166,   137,
-   138,    53,    54,   183,   184,   185,   182,   187,   188,    21,
-    18,   561,   150,    25,   190,    21,    18,   612,   194,    25,
-   196,    18,    21,   677,   163,   679,    25,   930,   204,   768,
-    20,    21,   182,   209,   688,   211,    18,   691,   692,    18,
-   190,    21,    19,  1066,   194,    25,   196,   223,   224,   225,
-    21,    22,    21,    21,   204,   205,    25,    25,     9,   209,
-   981,   211,   801,   984,    11,   183,   184,   185,   984,   187,
-   188,    25,   811,   223,   224,   225,   360,   183,   184,  1000,
-    24,  1002,  1115,    11,  1000,    24,  1007,    21,    88,  1010,
-  1011,    25,    21,    88,  1000,    21,    25,  1017,  1131,    25,
-   384,    32,    33,    37,    38,   389,   390,   391,   392,   393,
-   394,   395,   396,   397,   398,   399,    19,    51,    52,    24,
-    21,    26,    21,    28,    25,    27,  1047,    21,  1049,  1050,
-    21,    25,    19,    21,    25,    19,   420,    25,  1171,    44,
-    21,  1061,    47,    48,    25,  1066,    21,   801,    19,    21,
-    25,    24,   291,    25,    21,    25,   295,   811,    72,    73,
-    74,    22,    21,   370,    78,    79,    80,    81,    82,    83,
-    84,   378,    18,   380,   313,    24,    11,   316,   773,    21,
-    24,   776,    23,    22,    24,   324,    23,    25,   327,    34,
-    35,    36,  1113,   126,    24,  1116,   935,   936,  1119,    27,
-  1116,    34,    35,    36,    25,    20,   139,   140,   141,   142,
-   143,   144,    19,   146,   147,    23,    57,    58,    59,    60,
-    61,    62,    63,    64,    65,    66,    20,    19,   967,    72,
-    73,    74,    23,   383,    21,   974,    72,    73,    74,    51,
-    52,    53,   449,     5,    25,   984,    24,    27,   424,    57,
-    58,    59,    60,    61,    62,    63,    64,    65,    66,   998,
-    24,  1000,    22,    20,  1003,    20,    25,   443,    18,    27,
-    18,    25,    25,    24,   424,    27,    21,  1016,    25,  1200,
-    29,   935,   936,    25,    25,    55,    25,  1026,  1027,  1028,
-  1211,    88,    25,   443,    40,    39,  1035,    24,   893,    25,
-   895,   896,   897,    25,    25,    18,   513,    25,  1047,   448,
-    21,    18,   177,    18,   178,    21,   455,   177,    21,    18,
-    88,   460,   188,   462,     8,   178,    22,  1066,    20,    20,
-   984,   470,    88,    20,    24,   474,    25,  1076,  1077,  1078,
-    25,    18,    20,    73,    27,  1084,  1000,    18,    88,  1003,
-    88,    88,   636,    88,    88,   562,    88,    88,    27,    25,
-    27,  1100,  1101,  1102,  1103,    88,    25,  1106,  1107,     0,
-   577,   578,     0,  1112,    82,   325,   765,  1116,    78,    79,
-    80,    81,    82,    83,    84,   561,   887,   997,  1092,  1025,
-   881,   913,   987,  1047,   989,  1161,  1135,   681,     8,     9,
-    10,   998,  1112,  1142,   585,  1144,  1145,  1146,    72,    73,
-    74,   561,  1066,   830,    78,    79,    80,    81,    82,    83,
-    84,  1116,  1161,  1162,  1163,  1164,   679,   467,   677,   691,
-   801,   113,   347,   366,    10,   224,  1071,   513,   424,   967,
-   579,   706,  1181,   650,   651,    -1,    -1,  1101,  1102,    -1,
-    -1,    -1,   136,    -1,   138,   662,    -1,    -1,    -1,    -1,
-    -1,    -1,  1116,    -1,    -1,   604,    -1,   400,   401,   402,
-   403,   404,   405,   406,   407,   408,   409,   410,   411,   412,
-   413,   414,   415,    -1,   623,    -1,   693,    -1,    -1,   628,
-  1144,  1145,    -1,    -1,    -1,     8,     9,    10,   182,    -1,
-   784,    -1,    -1,   787,    -1,    -1,   190,    -1,  1162,  1163,
-   194,    -1,   196,    -1,   447,    -1,    -1,   656,    -1,    -1,
-   204,     8,     9,    10,    -1,    -1,    -1,    -1,   138,    -1,
+    61,    62,    63,    64,   405,   406,   414,     0,   551,   415,
+   366,    25,    26,   448,    75,   407,   408,   409,   410,   322,
+   654,    82,    22,    82,   204,   553,   654,   451,   654,   209,
+   623,   211,     8,   126,    34,   413,   764,   796,   776,   100,
+    24,   896,   790,   223,   784,   106,   893,   787,    18,   896,
+    34,     0,  1077,  1078,    24,   116,   117,   118,   113,   902,
+  1076,   122,    18,     5,    34,  1027,  1028,   122,    86,    87,
+    21,   215,   706,    26,    25,    18,   674,   138,   706,  1077,
+   706,    34,  1126,    25,   145,   605,    41,    24,    39,    82,
+    34,   447,    86,    87,     6,     7,    24,     0,   116,   117,
+     3,    56,     5,  1147,    85,  1149,    34,    28,   701,   187,
+  1135,   654,   130,   184,   185,   186,    21,   188,   189,    28,
+     8,     0,  1138,    44,     3,    24,   654,   886,     7,     8,
+     9,    10,   987,    82,   989,    44,     8,   980,  1100,   495,
+   987,  1103,   989,   204,  1142,   502,    24,   204,  1146,   889,
+    18,   692,   209,   881,   211,    23,   580,   895,   906,   897,
+    24,     8,   138,   706,   108,   109,   223,   224,    24,   604,
+   184,   185,   186,   476,   188,   189,    24,   775,   706,    82,
+   778,  1106,  1107,  1181,   184,   185,   186,    41,   188,   189,
+   184,   185,   562,    96,    97,    24,    99,    86,    87,  1161,
+   184,   185,    56,    82,     5,    34,   182,   577,   139,   140,
+   141,   142,   143,   144,   184,   185,    21,    21,   194,   122,
+   196,    24,    27,    27,    25,   286,   654,   106,   585,     5,
+   291,    34,    18,   292,    21,    21,   654,    23,    25,  1164,
+    18,   302,   303,   122,   305,   306,   654,   603,   654,   225,
+   138,    24,   992,   654,   133,   920,   184,   185,   319,   138,
+   801,    21,   654,   443,   325,    25,   138,   328,    18,   625,
+    37,    38,   629,   366,    32,    33,   654,   156,   706,    26,
+   424,    28,     9,    10,    51,    52,   347,   644,   706,   646,
+    18,   138,   347,    21,   182,   184,   185,    44,   706,    15,
+   706,    18,   190,   182,    21,   706,   194,   368,   196,   302,
+   182,   190,    21,   192,   706,   194,    25,   196,   190,   862,
+    29,    16,   194,   916,   196,   204,   319,    21,   706,    16,
+   209,    25,   211,   967,    16,   182,   864,   225,    24,   967,
+    26,   967,    16,   190,   223,   224,   225,   194,    34,   196,
+    22,   180,   181,   225,   447,   184,   185,    25,   187,   716,
+    28,    65,    66,    67,    68,    69,    70,    71,    72,    73,
+    74,    18,     0,    22,    21,     3,    37,    38,   225,     7,
+   439,   184,   185,   184,   185,   186,   443,   188,   189,   450,
+    51,    52,   453,    24,    98,    26,   100,    22,   102,   460,
+   104,   462,   495,   464,   465,   109,   467,    29,   184,   185,
+   186,   472,   188,   189,   475,   119,    18,   121,    21,    21,
+   475,   482,    25,   302,   967,   781,   305,   306,   307,   857,
+   858,   849,   850,   494,    24,    39,   497,    27,   499,   967,
+   319,   502,    40,   346,    34,    21,   325,    55,   424,    25,
+   851,   852,   860,    18,    82,   861,    21,   450,    92,   163,
+   453,   853,   854,   855,   856,    26,    92,    28,     5,   400,
+   401,   402,    21,    49,    50,    19,    25,   204,   106,     5,
+    22,   859,   209,    44,   211,    21,    21,     5,    25,    25,
+    25,   370,    25,    26,   122,    28,   223,   224,    22,   378,
+    21,   380,   926,   562,    25,   133,    24,    25,    26,    18,
+   603,    44,    21,    49,    50,    21,    34,    18,   577,    25,
+    21,   582,  1047,    18,   585,  1066,    21,    21,    24,   692,
+    34,    25,   625,    67,    68,    69,   424,   598,   599,   967,
+    26,    24,    28,    26,   605,   424,    22,    53,    54,   967,
+   605,    34,   424,   456,    92,    49,    50,    24,    44,   967,
+    27,   967,    19,   624,   443,    26,   967,    34,   629,   500,
+   449,   450,    21,    34,   453,   967,    25,   424,   639,   640,
+    34,    85,    20,   644,   463,   646,   465,   291,   467,   967,
+    18,   295,    92,    21,   184,   185,   475,   187,    18,   478,
+    24,    21,    26,   482,    21,    25,    27,   668,    25,   313,
+    34,    24,   316,    26,    21,   676,    24,   678,    25,    18,
+   324,   682,   683,   327,    49,    50,   687,    34,    35,    36,
+   691,   692,    49,    50,   513,    21,   697,   692,   801,    25,
+    24,    21,   697,   522,   523,    25,    23,   184,   185,   186,
+  1007,   188,   189,    25,    26,   716,    28,    21,   184,   185,
+   186,    25,   188,   189,    18,    21,   184,   185,   186,    25,
+   188,   189,    44,   561,   302,    53,    54,   305,   306,   307,
+   184,   185,   561,   562,   188,   189,    18,    18,   781,   561,
+    21,   319,    21,    18,    25,   574,    25,   325,   577,   578,
+    21,   184,   185,   186,    25,   188,   189,   190,    22,   612,
+   771,     8,     9,    10,   561,    21,   443,   184,   185,    25,
+   187,    25,   815,   184,   185,   186,   605,   188,   189,    21,
+   184,   185,   186,    25,   188,   189,   119,    21,   121,   800,
+   801,    25,   803,    21,   448,    25,   801,    25,    24,   132,
+   133,   455,   135,    18,   137,   138,   460,   320,   462,  1115,
+   184,   185,   186,    18,   188,   189,   470,   150,    18,    21,
+   474,   650,   651,    25,    21,   654,    21,    21,    25,    18,
+    25,    25,   661,   662,    18,   664,   717,   718,   719,   720,
+   721,   722,    37,    38,    34,    35,    36,    24,   677,    26,
+   679,    28,     9,    24,    21,    26,    51,    52,    25,   688,
+    42,    43,   691,   692,   693,  1171,    24,    44,    26,    21,
+    47,    48,   450,    25,    11,   453,    21,   706,   972,    19,
+    25,   892,    34,    35,    36,   463,    21,   465,   899,   467,
+    25,   138,    37,    38,    21,    20,    21,   475,    25,    18,
+   478,    97,   996,    99,   482,    24,    51,    52,    21,    22,
+    29,    30,    31,    32,    33,    34,    25,     5,    32,    33,
+   773,    25,    26,   776,    28,   579,    24,    46,    47,    48,
+    21,    34,    35,    36,    25,   182,    24,    25,    26,   768,
+    44,    32,    33,   190,   522,   523,    34,   194,    21,   196,
+   604,    70,    25,  1066,    21,    49,    50,   204,    25,    32,
+    33,    24,   209,    21,   211,   846,   847,   848,    88,   623,
+   981,    11,   801,   984,   628,    23,   223,   224,   225,    25,
+    21,    24,   811,    26,    25,    28,    21,    53,    54,  1000,
+    25,  1002,   111,    21,    21,  1000,  1007,    25,    25,  1010,
+  1011,    44,   656,    21,    47,    48,    19,    25,  1017,    57,
+    58,    59,    60,    61,    62,    63,    64,    65,    66,    20,
+    21,    21,    72,    73,    74,    25,    19,   605,    78,    79,
+    80,    81,    82,    83,    84,    19,  1047,    19,  1049,  1050,
+   893,   984,   895,   896,   897,    24,    21,    21,    18,   930,
+    25,    25,  1061,    21,    24,  1066,    88,  1000,    27,    29,
+    30,    31,    32,    33,    34,   184,   185,   186,   187,   184,
+   185,   186,  1115,   188,   189,   729,    46,    47,    48,     8,
+    20,    21,    21,    72,    73,    74,    25,   600,  1131,    78,
+    79,    80,    81,    82,    83,    84,    72,    73,    74,   677,
+    70,   679,  1113,   126,    22,  1116,   935,   936,  1119,    21,
+   688,    32,    33,   691,   692,    18,   139,   140,   141,   142,
+   143,   144,    21,   146,   147,    21,    25,    21,  1171,   360,
+    22,    25,    21,    22,   987,   789,   989,    24,   967,   184,
+   185,   111,    72,    73,    74,   974,    78,    79,    80,    81,
+    82,    83,    84,   384,    25,   984,    11,    24,   389,   390,
+   391,   392,   393,   394,   395,   396,   397,   398,   399,   998,
+    24,  1000,    24,  1116,  1003,    25,    27,   424,    51,    52,
+    53,    23,    20,    19,    23,    20,    19,  1016,     5,   420,
+    21,  1202,    20,    25,    24,    24,   443,  1026,  1027,  1028,
+    27,    22,  1213,    25,    20,    18,  1035,   136,    27,   138,
+    25,    18,    21,    25,   184,   185,   186,   187,  1047,    27,
+    25,    25,    25,   801,    24,    39,    25,    29,    88,    40,
+   884,   885,    55,   811,    25,    24,    18,  1066,   892,    25,
+    25,    25,    25,    21,    18,    18,   177,  1076,  1077,  1078,
+    21,   178,   177,   182,    18,   189,   178,    22,    21,    20,
+    20,   190,   916,    88,    88,   194,    25,   196,    88,    25,
+   183,  1100,  1101,  1102,  1103,   204,    24,  1106,  1107,    20,
+    18,    73,   192,  1112,    23,    20,     0,  1116,    25,    25,
+    88,    88,    88,    88,    27,    88,   225,    27,    88,    27,
+    88,     0,    82,   325,   765,   887,  1135,   997,  1092,  1138,
+  1025,   881,   913,  1142,   561,  1144,  1145,  1146,    57,    58,
+    59,    60,    61,    62,    63,    64,    65,    66,   982,  1161,
+   998,  1112,  1161,  1162,  1163,  1164,   467,   830,  1116,   585,
+   679,   801,   677,   366,   113,   691,    10,   224,   347,  1071,
+   513,   706,  1181,   424,   967,    -1,    -1,   935,   936,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,   225,    -1,    -1,    -1,   829,   830,    -1,    -1,    -1,
-    -1,   835,   836,   837,   838,   839,   840,   841,   842,   843,
-   844,   845,   495,    -1,    -1,    -1,    -1,   500,    -1,    -1,
-    -1,    -1,   182,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-   190,    -1,    -1,    -1,   194,    -1,   196,    -1,    -1,    -1,
-   729,    -1,    -1,    -1,   204,    -1,    -1,    -1,    -1,   209,
-    -1,   211,    -1,    -1,    -1,   889,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,   223,   224,   225,    -1,    -1,   551,    -1,
-   553,    -1,   555,   556,    -1,   138,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,     8,     9,    10,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,   328,    -1,    -1,    -1,    -1,    -1,
-   789,   138,   336,   337,   338,   339,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   182,
-   603,    -1,    -1,   357,    -1,    -1,    -1,   190,    -1,    -1,
-    -1,   194,    -1,   196,   368,    -1,    -1,     8,     9,    10,
-    -1,   204,   625,    -1,    -1,   182,   209,    -1,   211,    -1,
-    -1,   385,    -1,   190,    -1,    -1,    -1,   194,   992,   196,
-   223,   224,   225,    -1,    -1,    -1,    -1,   204,    -1,    -1,
-    -1,   654,   209,    -1,   211,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,   223,   224,   225,    -1,
-   424,    -1,    -1,    -1,    -1,   884,   885,   431,    -1,    -1,
-    -1,    -1,    -1,   892,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,   138,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,   706,    -1,    -1,    -1,   916,    -1,    -1,
-    -1,    -1,    -1,    -1,   717,   718,   719,   720,   721,   722,
+    -1,    -1,    -1,     8,     9,    10,    -1,   400,   401,   402,
+   403,   404,   405,   406,   407,   408,   409,   410,   411,   412,
+   413,   414,   415,    -1,    -1,   908,    -1,  1051,    -1,   328,
+    -1,    -1,    -1,    -1,    -1,   636,   984,   336,   337,   338,
+   339,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,  1000,    -1,   447,  1003,    -1,    -1,   357,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   368,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,     8,     9,    10,
+   681,    -1,    -1,    -1,    -1,    -1,   385,    -1,    -1,    -1,
+   370,   974,    -1,    -1,    -1,    -1,    -1,    -1,   378,  1047,
+   380,    -1,   495,    -1,    -1,    -1,    -1,   500,    -1,    -1,
+   993,    -1,    -1,    -1,    -1,   998,    -1,    -1,  1066,    -1,
+    -1,    -1,    -1,    -1,    -1,   424,    -1,    -1,    -1,    -1,
+    -1,    -1,   431,   138,  1017,    -1,    -1,    -1,    -1,    -1,
+  1023,    -1,    -1,    -1,    -1,  1169,    -1,    -1,    -1,  1032,
+    -1,    -1,    -1,  1101,  1102,    -1,    -1,    -1,   551,    -1,
+   553,    -1,   555,   556,    -1,    -1,    -1,    -1,  1116,   449,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,   182,  1061,  1062,
+    -1,  1064,    -1,   784,    -1,   190,   787,    -1,    -1,   194,
+    -1,   196,    -1,     8,     9,    10,  1144,  1145,    -1,   204,
+  1083,    -1,    -1,    -1,   209,    -1,   211,   138,    -1,    -1,
+   603,     8,     9,    10,  1162,  1163,    -1,    -1,   223,   224,
+   225,    -1,    -1,    -1,    -1,    -1,    -1,  1110,   829,   830,
+    -1,    -1,   625,   513,   835,   836,   837,   838,   839,   840,
+   841,   842,   843,   844,   845,    -1,    -1,    -1,    -1,  1132,
+    -1,   182,    -1,   552,    -1,    -1,    -1,    -1,    -1,   190,
+    -1,   654,   561,   194,    -1,   196,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,   204,   205,    -1,    -1,    -1,   209,    -1,
+   211,    -1,   562,  1166,    -1,    -1,    -1,    -1,   889,    -1,
+    -1,    -1,   223,   224,   225,    -1,    -1,   577,   578,     8,
+     9,    10,     8,     9,    10,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,   706,    -1,    -1,    -1,    -1,    -1,    -1,
+   619,    -1,    -1,   138,   717,   718,   719,   720,   721,   722,
    723,   724,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   182,    -1,
-    -1,    -1,    -1,    -1,   424,    -1,   190,   138,    -1,    -1,
-   194,    -1,   196,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-   204,    -1,    -1,   443,    -1,   209,    -1,   211,    -1,    -1,
-    -1,    -1,    -1,   982,    -1,    -1,    -1,    -1,   781,   223,
-   224,   225,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,   182,    -1,    -1,    -1,    -1,    -1,    -1,   552,   190,
-    -1,    -1,    -1,   194,    -1,   196,    -1,   561,    -1,    -1,
-    -1,    -1,   815,   204,    -1,    -1,    -1,    -1,   209,    -1,
-   211,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,   223,   224,   225,    -1,    -1,    -1,    -1,    -1,
-    -1,   424,  1051,   846,   847,   848,   849,   850,   851,   852,
-   853,   854,   855,   856,   857,   858,   859,   860,   861,   862,
-   443,   864,    -1,    -1,    -1,   619,    -1,   424,    -1,    -1,
+    -1,   138,    -1,    -1,    -1,   644,    -1,   646,    -1,    -1,
+    -1,    -1,    -1,   652,    -1,    -1,   655,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,   182,    -1,    -1,
+   650,   651,    -1,    -1,    -1,   190,    -1,    -1,    -1,   194,
+    -1,   196,   662,    -1,    -1,   182,    -1,    -1,   781,   204,
+    -1,   992,    -1,   190,   209,    -1,   211,   194,    -1,   196,
+    -1,    -1,    -1,    -1,    -1,    -1,   705,   204,   223,   224,
+   225,    -1,   209,   693,   211,    -1,    -1,   716,    -1,   424,
+    -1,    -1,   815,    -1,    -1,    -1,   223,   224,   225,   138,
+    -1,    -1,   138,    -1,    -1,    -1,    -1,    -1,   443,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,   561,    -1,    -1,    -1,    -1,   443,    -1,    -1,    -1,
-   644,    -1,   646,    -1,    -1,    -1,    -1,    -1,   652,    -1,
-     1,   655,    -1,    -1,    -1,     6,     7,     8,    -1,    -1,
-    11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-    -1,    -1,    -1,    24,    25,    -1,    -1,   930,    29,    30,
-    31,    32,    33,    34,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    42,    43,    -1,    -1,    46,    47,    48,    -1,    -1,
-    -1,   705,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-  1169,    -1,   716,    -1,   967,    -1,    -1,    -1,    -1,    70,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   561,    -1,
-   424,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    92,    93,    94,    95,    96,    97,    98,    -1,   443,
-    -1,    -1,    -1,    -1,   561,    -1,   107,    18,    -1,    -1,
-   111,    -1,    -1,    24,    -1,    -1,    -1,    -1,    29,    30,
-    31,    32,    33,    34,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,   424,    -1,    46,    47,    48,    -1,    -1,
+    -1,    -1,   383,   846,   847,   848,   849,   850,   851,   852,
+   853,   854,   855,   856,   857,   858,   859,   860,   861,   862,
+    -1,   864,    -1,   182,    -1,    -1,   182,    -1,    -1,    -1,
+    -1,   190,    -1,    -1,   190,   194,    -1,   196,   194,    -1,
+   196,    -1,    -1,   424,    -1,   204,    19,    20,   204,    -1,
+   209,    24,   211,   209,    -1,   211,    29,    30,    31,    32,
+    33,    34,   443,    -1,   223,   224,   225,   223,   224,   225,
+    -1,    -1,    -1,    46,    47,    48,    -1,    -1,    -1,    -1,
+    -1,    -1,   831,    -1,    -1,    -1,    -1,   930,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    70,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,   561,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,   443,    -1,    -1,    -1,    -1,    -1,    -1,    70,
+    -1,    -1,    -1,    -1,   967,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,
+    -1,    -1,     6,     7,     8,    -1,    10,    11,    12,    13,
+    14,    15,    16,    17,    18,    19,    20,    -1,    -1,   424,
+    24,    -1,    -1,    -1,    -1,    29,    30,    31,    32,    33,
+    34,   920,    -1,    -1,    -1,    -1,    -1,   424,   443,    -1,
+   561,    -1,    46,    47,    48,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,   443,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    70,    -1,    -1,    -1,
+    -1,   184,   185,   186,   187,    -1,   965,    -1,    -1,    -1,
+    -1,    -1,     0,     1,    -1,    -1,    -1,    -1,    -1,    93,
+    94,    95,    96,    97,    98,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,   107,    -1,    -1,    24,   111,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    34,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,   424,    -1,    45,   424,    -1,
+    -1,    -1,  1115,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,   443,    -1,    -1,   443,  1131,    67,
+    68,    69,    -1,    71,    -1,    -1,   561,    75,    76,    77,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,     0,     1,    -1,    -1,   831,    -1,    -1,
-    -1,    -1,   183,   184,   185,   186,   187,   188,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    24,    -1,    -1,
-   111,    -1,    -1,    -1,    -1,    -1,    -1,    34,    -1,    -1,
-    -1,    -1,  1115,    -1,    -1,    -1,    -1,   561,    45,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1131,    -1,
+    -1,    89,    90,    91,   561,    -1,    -1,    -1,    -1,    -1,
+   184,   185,   186,   187,   188,   189,    -1,    -1,  1171,    -1,
+   108,   109,   110,    -1,   112,   113,   114,   115,   116,   117,
+   118,   119,   120,   121,    -1,   123,   124,   125,   126,   127,
+   128,   129,   130,   131,   132,   133,   134,   135,   136,   137,
+    -1,   139,   140,   141,   142,   143,   144,   145,   146,   147,
+   148,   149,   150,   151,   152,   153,   154,   155,   156,   157,
+   158,   159,   160,   161,   162,   163,   164,   165,   166,   167,
+   168,   169,   170,   171,   172,   173,   174,   175,     0,     1,
+    -1,    -1,   561,    -1,    -1,   561,   184,   185,   186,    -1,
+   188,   189,   190,    19,    -1,    -1,    -1,    -1,    24,    -1,
+    -1,    -1,    24,    29,    30,    31,    32,    33,    34,    -1,
+    -1,    -1,    34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    46,    47,    48,    45,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    67,    68,    69,    -1,    71,    -1,    -1,    -1,    75,    76,
-    77,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    89,    90,    91,    -1,   920,    -1,  1171,    -1,
-   561,    -1,   183,   184,   185,   186,    -1,    -1,    -1,    -1,
-    -1,   108,   109,   110,    -1,   112,   113,   114,   115,   116,
-   117,   118,   119,   120,   121,    -1,   123,   124,   125,   126,
-   127,   128,   129,   130,   131,   132,   133,   134,   135,   136,
-   137,   965,   139,   140,   141,   142,   143,   144,   145,   146,
-   147,   148,   149,   150,   151,   152,   153,   154,   155,   156,
-   157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
-   167,   168,   169,   170,   171,   172,   173,   174,   175,     0,
-     1,    -1,    -1,    -1,    -1,    -1,   183,   184,   185,    -1,
-   187,   188,   189,    18,    -1,    -1,    -1,    -1,    -1,    24,
-    -1,    -1,    -1,    24,    29,    30,    31,    32,    33,    34,
-    -1,    -1,    -1,    34,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    46,    47,    48,    45,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    70,    67,    68,    69,    -1,    71,
+    -1,    -1,    -1,    75,    76,    77,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    89,    90,    91,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    70,    67,    68,    69,    -1,
-    71,    -1,    -1,    -1,    75,    76,    77,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    89,    90,
-    91,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,   111,   108,   109,   110,
-    -1,   112,   113,   114,   115,   116,   117,   118,   119,   120,
-   121,    -1,   123,   124,   125,   126,   127,   128,   129,   130,
-   131,   132,   133,   134,   135,   136,   137,    -1,   139,   140,
-   141,   142,   143,   144,   145,   146,   147,   148,   149,   150,
-   151,   152,   153,   154,   155,   156,   157,   158,   159,   160,
-   161,   162,   163,   164,   165,   166,   167,   168,   169,   170,
-   171,   172,   173,   174,   175,    -1,    -1,    -1,   183,   184,
-   185,   186,   183,   184,   185,     1,   187,   188,   189,    -1,
+    -1,    -1,    -1,    -1,    -1,   111,   108,   109,   110,    -1,
+   112,   113,   114,   115,   116,   117,   118,   119,   120,   121,
+    -1,   123,   124,   125,   126,   127,   128,   129,   130,   131,
+   132,   133,   134,   135,   136,   137,    -1,   139,   140,   141,
+   142,   143,   144,   145,   146,   147,   148,   149,   150,   151,
+   152,   153,   154,   155,   156,   157,   158,   159,   160,   161,
+   162,   163,   164,   165,   166,   167,   168,   169,   170,   171,
+   172,   173,   174,   175,    -1,    -1,    -1,    -1,   184,   185,
+   186,   187,   184,   185,   186,     1,   188,   189,   190,    -1,
      6,     7,     8,    -1,    10,    11,    12,    13,    14,    15,
     16,    17,    18,    19,    20,    -1,    -1,    -1,    24,    -1,
     -1,    -1,    -1,    29,    30,    31,    32,    33,    34,    -1,
@@ -2171,148 +2132,122 @@ static const short yycheck[] = {     0,
    146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
    156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
    166,   167,   168,   169,   170,   171,   172,   173,   174,   175,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,   183,   184,   185,
-   186,   187,   188,   189,     1,    -1,    -1,    -1,    -1,     6,
-     7,     8,    -1,    10,    11,    12,    13,    14,    15,    16,
-    17,    18,    19,    -1,    -1,    -1,    -1,    24,    -1,    -1,
-    -1,    -1,    29,    30,    31,    32,    33,    34,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    42,    43,    -1,    -1,    46,
-    47,    48,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    67,    68,    69,    70,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    93,    94,    95,    96,
-    97,    98,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-   107,   108,   109,   110,   111,   112,   113,   114,   115,   116,
-   117,   118,   119,   120,   121,    -1,   123,   124,   125,   126,
-   127,   128,   129,   130,   131,   132,   133,   134,   135,   136,
-   137,    -1,   139,   140,   141,   142,   143,   144,   145,   146,
-   147,   148,   149,   150,   151,   152,   153,   154,   155,   156,
-   157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
-   167,   168,   169,   170,   171,   172,   173,   174,   175,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,   183,   184,   185,   186,
-   187,   188,   189,     1,    -1,    -1,    -1,    -1,     6,     7,
-     8,    -1,    -1,    11,    12,    13,    14,    15,    16,    17,
-    18,    19,    20,    -1,    -1,    -1,    24,    -1,    -1,    -1,
-    -1,    29,    30,    31,    32,    33,    34,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    42,    43,    -1,    -1,    46,    47,
-    48,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,
-    68,    69,    70,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    93,    94,    95,    96,    97,
-    98,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   107,
-   108,   109,   110,   111,   112,   113,   114,   115,   116,   117,
-   118,   119,   120,   121,    -1,   123,   124,   125,   126,   127,
-   128,   129,   130,   131,   132,   133,   134,   135,   136,   137,
-    -1,   139,   140,   141,   142,   143,   144,   145,   146,   147,
-   148,   149,   150,   151,   152,   153,   154,   155,   156,   157,
-   158,   159,   160,   161,   162,   163,   164,   165,   166,   167,
-   168,   169,   170,   171,   172,   173,   174,   175,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,   183,   184,   185,   186,   187,
-   188,   189,     1,    -1,    -1,    -1,    -1,     6,     7,     8,
-    -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-    19,    -1,    -1,    -1,    -1,    24,    -1,    -1,    -1,    -1,
-    29,    30,    31,    32,    33,    34,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    42,    43,     1,    -1,    46,    47,    48,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   184,   185,
+   186,   187,   188,   189,   190,     1,    -1,    -1,    -1,    -1,
      6,     7,     8,    -1,    10,    11,    12,    13,    14,    15,
     16,    17,    18,    19,    -1,    -1,    -1,    -1,    24,    -1,
-    -1,    70,    -1,    29,    30,    31,    32,    33,    34,    -1,
+    -1,    -1,    -1,    29,    30,    31,    32,    33,    34,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    42,    43,    -1,    -1,
-    46,    47,    48,    92,    93,    94,    95,    96,    97,    98,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   107,    -1,
-    -1,    -1,   111,    -1,    70,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    92,    93,    94,    95,
-    96,    97,    98,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,   107,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,
+    46,    47,    48,    -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,   183,   184,   185,   186,   187,   188,
-    -1,    -1,     1,    -1,    -1,    -1,    -1,     6,     7,     8,
-    -1,    -1,    11,    12,    13,    14,    15,    16,    17,    18,
-    19,    20,    -1,    -1,    -1,    24,    -1,    -1,    -1,    -1,
-    29,    30,    31,    32,    33,    34,    -1,   183,   184,   185,
-   186,   187,   188,    42,    43,     1,    -1,    46,    47,    48,
-     6,     7,     8,    -1,    10,    11,    12,    13,    14,    15,
-    16,    17,    18,    19,    20,    -1,    -1,    -1,    24,    -1,
-    -1,    70,    -1,    29,    30,    31,    32,    33,    34,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    42,    43,    -1,    -1,
-    46,    47,    48,    92,    93,    94,    95,    96,    97,    98,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   107,    -1,
-    -1,    -1,   111,    -1,    70,    -1,    -1,    -1,    -1,    -1,
+    -1,    67,    68,    69,    70,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    93,    94,    95,
     96,    97,    98,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,   107,    -1,    -1,    -1,   111,    -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,   183,   184,   185,   186,   187,   188,
-    -1,    -1,     1,    -1,    -1,    -1,    -1,     6,     7,     8,
-    -1,    -1,    11,    12,    13,    14,    15,    16,    17,    18,
-    19,    20,    -1,    -1,    -1,    24,    -1,    -1,    -1,    -1,
-    29,    30,    31,    32,    33,    34,    -1,   183,   184,   185,
-   186,   187,   188,    42,    43,     1,    -1,    46,    47,    48,
-     6,     7,     8,    -1,    10,    11,    12,    13,    14,    15,
-    16,    17,    18,    19,    -1,    -1,    -1,    -1,    24,    -1,
-    -1,    70,    -1,    29,    30,    31,    32,    33,    34,    -1,
+    -1,   107,   108,   109,   110,   111,   112,   113,   114,   115,
+   116,   117,   118,   119,   120,   121,    -1,   123,   124,   125,
+   126,   127,   128,   129,   130,   131,   132,   133,   134,   135,
+   136,   137,    -1,   139,   140,   141,   142,   143,   144,   145,
+   146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
+   156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
+   166,   167,   168,   169,   170,   171,   172,   173,   174,   175,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   184,   185,
+   186,   187,   188,   189,   190,     1,    -1,    -1,    -1,    -1,
+     6,     7,     8,    -1,    -1,    11,    12,    13,    14,    15,
+    16,    17,    18,    19,    20,    -1,    -1,    -1,    24,    -1,
+    -1,    -1,    -1,    29,    30,    31,    32,    33,    34,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    42,    43,    -1,    -1,
-    46,    47,    48,    -1,    93,    94,    95,    96,    97,    98,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   107,    -1,
-    -1,    -1,   111,    -1,    70,    -1,    -1,    -1,    -1,    -1,
+    46,    47,    48,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    67,    68,    69,    70,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    93,    94,    95,
     96,    97,    98,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,   107,    -1,    -1,    -1,   111,    -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,   183,   184,   185,   186,   187,   188,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,     6,     7,     8,
-    -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-    19,    20,    -1,    -1,    -1,    24,    -1,    -1,    -1,    -1,
-    29,    30,    31,    32,    33,    34,    -1,   183,   184,   185,
-   186,   187,   188,    42,    43,    -1,    45,    46,    47,    48,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,   107,   108,   109,   110,   111,   112,   113,   114,   115,
+   116,   117,   118,   119,   120,   121,    -1,   123,   124,   125,
+   126,   127,   128,   129,   130,   131,   132,   133,   134,   135,
+   136,   137,    -1,   139,   140,   141,   142,   143,   144,   145,
+   146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
+   156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
+   166,   167,   168,   169,   170,   171,   172,   173,   174,   175,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   184,   185,
+   186,   187,   188,   189,   190,     1,    -1,    -1,    -1,    -1,
+     6,     7,     8,    -1,    -1,    11,    12,    13,    14,    15,
+    16,    17,    18,    19,    20,    -1,    -1,    -1,    24,    25,
+    -1,    -1,    -1,    29,    30,    31,    32,    33,    34,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    42,    43,     1,    -1,
+    46,    47,    48,     6,     7,     8,    -1,    10,    11,    12,
+    13,    14,    15,    16,    17,    18,    19,    -1,    -1,    -1,
+    -1,    24,    -1,    -1,    70,    -1,    29,    30,    31,    32,
+    33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,
+    43,    -1,    -1,    46,    47,    48,    92,    93,    94,    95,
+    96,    97,    98,    -1,    -1,    -1,    -1,    -1,    19,    -1,
+    -1,   107,    -1,    24,    -1,   111,    -1,    70,    29,    30,
+    31,    32,    33,    34,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    46,    47,    48,    -1,    92,
+    93,    94,    95,    96,    97,    98,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,   107,    -1,    -1,    -1,   111,    70,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    70,    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    93,    94,    95,    96,    97,    98,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   107,   108,
-   109,   110,   111,   112,   113,   114,   115,   116,   117,   118,
-   119,   120,   121,    -1,   123,   124,   125,   126,   127,   128,
-   129,   130,   131,   132,   133,   134,   135,   136,   137,    -1,
-   139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
-   149,   150,   151,   152,   153,   154,   155,   156,   157,   158,
-   159,   160,   161,   162,   163,   164,   165,   166,   167,   168,
-   169,   170,   171,   172,   173,   174,   175,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,   183,   184,   185,   186,   187,   188,
-   189,     6,     7,     8,    -1,    10,    11,    12,    13,    14,
-    15,    16,    17,    18,    19,    20,    -1,    -1,    -1,    24,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   184,   185,
+   186,   187,   188,   189,    -1,    -1,     1,    -1,    -1,    -1,
+   111,     6,     7,     8,    -1,    10,    11,    12,    13,    14,
+    15,    16,    17,    18,    19,    -1,    -1,    -1,    -1,    24,
     -1,    -1,    -1,    -1,    29,    30,    31,    32,    33,    34,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,    43,    -1,
-    45,    46,    47,    48,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,   184,   185,   186,   187,   188,   189,    42,    43,     1,
+    -1,    46,    47,    48,     6,     7,     8,    -1,    -1,    11,
+    12,    13,    14,    15,    16,    17,    18,    19,    20,    -1,
+    -1,    -1,    24,    -1,    -1,    70,    -1,    29,    30,    31,
+    32,    33,    34,   184,   185,   186,   187,    -1,    -1,    -1,
+    42,    43,    -1,    -1,    46,    47,    48,    92,    93,    94,
+    95,    96,    97,    98,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,   107,    -1,    24,    25,   111,    -1,    70,    29,
+    30,    31,    32,    33,    34,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    46,    47,    48,    -1,
+    92,    93,    94,    95,    96,    97,    98,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,   107,    -1,    -1,    -1,   111,
+    70,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    70,    71,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   184,
+   185,   186,   187,   188,   189,    -1,    -1,     1,    -1,    -1,
+    -1,   111,     6,     7,     8,    -1,    10,    11,    12,    13,
+    14,    15,    16,    17,    18,    19,    20,    -1,    -1,    -1,
+    24,    -1,    -1,    -1,    -1,    29,    30,    31,    32,    33,
+    34,    -1,   184,   185,   186,   187,   188,   189,    42,    43,
+     1,    -1,    46,    47,    48,     6,     7,     8,    -1,    -1,
+    11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+    -1,    -1,    -1,    24,    -1,    -1,    70,    -1,    29,    30,
+    31,    32,    33,    34,   184,   185,   186,   187,    -1,    -1,
+    -1,    42,    43,    -1,    -1,    46,    47,    48,    -1,    93,
+    94,    95,    96,    97,    98,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,   107,    -1,    24,    -1,   111,    27,    70,
+    29,    30,    31,    32,    33,    34,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    46,    47,    48,
+    -1,    -1,    93,    94,    95,    96,    97,    98,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,   107,    -1,    -1,    -1,
+   111,    70,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    24,    -1,    -1,
+    27,    -1,    29,    30,    31,    32,    33,    34,    -1,    -1,
+   184,   185,   186,   187,   188,   189,    -1,    -1,     1,    46,
+    47,    48,   111,     6,     7,     8,    -1,    10,    11,    12,
+    13,    14,    15,    16,    17,    18,    19,    -1,    -1,    -1,
+    -1,    24,    -1,    70,    -1,    -1,    29,    30,    31,    32,
+    33,    34,    -1,   184,   185,   186,   187,   188,   189,    42,
+    43,    -1,    -1,    46,    47,    48,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    93,    94,
-    95,    96,    97,    98,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,   107,   108,   109,   110,   111,   112,   113,   114,
-   115,   116,   117,   118,   119,   120,   121,    -1,   123,   124,
-   125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
-   135,   136,   137,    -1,   139,   140,   141,   142,   143,   144,
-   145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
-   155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
-   165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
-   175,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   183,   184,
-   185,   186,   187,   188,   189,     6,     7,     8,    -1,    10,
+    -1,    -1,    -1,    -1,   111,    -1,    -1,    70,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,   184,   185,   186,   187,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    93,    94,    95,    96,    97,    98,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,   107,     6,     7,     8,   111,    10,
     11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     -1,    -1,    -1,    24,    -1,    -1,    -1,    -1,    29,    30,
-    31,    32,    33,    34,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    42,    43,    -1,    45,    46,    47,    48,    -1,    -1,
+    31,    32,    33,    34,    -1,    -1,    -1,   184,   185,   186,
+   187,    42,    43,    -1,    45,    46,    47,    48,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    70,
     71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,   184,   185,   186,   187,   188,   189,    -1,    -1,    -1,
     -1,    -1,    93,    94,    95,    96,    97,    98,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,   107,   108,   109,   110,
    111,   112,   113,   114,   115,   116,   117,   118,   119,   120,
@@ -2322,239 +2257,112 @@ static const short yycheck[] = {     0,
    151,   152,   153,   154,   155,   156,   157,   158,   159,   160,
    161,   162,   163,   164,   165,   166,   167,   168,   169,   170,
    171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,   183,   184,   185,   186,   187,   188,   189,     6,
-     7,     8,    -1,    10,    11,    12,    13,    14,    15,    16,
-    17,    18,    19,    20,    -1,    -1,    -1,    24,    -1,    -1,
-    -1,    -1,    29,    30,    31,    32,    33,    34,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    46,
-    47,    48,     6,     7,     8,    -1,    10,    11,    12,    13,
-    14,    15,    16,    17,    18,    19,    20,    -1,    -1,    -1,
-    24,    -1,    -1,    70,    -1,    29,    30,    31,    32,    33,
-    34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    46,    47,    48,    -1,    93,    94,    95,    96,
-    97,    98,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-   107,    -1,    -1,    -1,   111,    -1,    70,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    93,
-    94,    95,    96,    97,    98,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,   107,     6,     7,     8,   111,    10,    11,
-    12,    13,    14,    15,    16,    17,    18,    19,    20,    -1,
-    -1,    -1,    24,    -1,    -1,    -1,    -1,    29,    30,    31,
-    32,    33,    34,    -1,    -1,    -1,   183,   184,   185,   186,
-   187,   188,    -1,    -1,    46,    47,    48,     6,     7,     8,
-    -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-    19,    20,    -1,    -1,    -1,    24,    -1,    -1,    70,    -1,
-    29,    30,    31,    32,    33,    34,    -1,    -1,    -1,   183,
-   184,   185,   186,   187,   188,    -1,    -1,    46,    47,    48,
-    -1,    93,    94,    95,    96,    97,    98,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,   107,    -1,    -1,    -1,   111,
-    -1,    70,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    93,    94,    95,    96,    97,    98,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   107,     6,
-     7,     8,   111,    10,    11,    12,    13,    14,    15,    16,
-    17,    18,    19,    20,    -1,    -1,    -1,    24,    -1,    -1,
-    -1,    -1,    29,    30,    31,    32,    33,    34,    -1,    -1,
-    -1,   183,   184,   185,   186,   187,   188,    -1,    -1,    46,
-    47,    48,     6,     7,     8,    -1,    10,    11,    12,    13,
-    14,    15,    16,    17,    18,    19,    20,    -1,    -1,    -1,
-    24,    -1,    -1,    70,    -1,    29,    30,    31,    32,    33,
-    34,    -1,    -1,    -1,   183,   184,   185,   186,   187,   188,
-    -1,    -1,    46,    47,    48,    -1,    93,    94,    95,    96,
-    97,    98,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-   107,    -1,    -1,    -1,   111,    -1,    70,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    93,
-    94,    95,    96,    97,    98,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,   107,     6,     7,     8,   111,    10,    11,
-    12,    13,    14,    15,    16,    17,    18,    19,    20,    -1,
-    -1,    -1,    24,    -1,    -1,    -1,    -1,    29,    30,    31,
-    32,    33,    34,    -1,    -1,    -1,   183,   184,   185,   186,
-   187,   188,    -1,    -1,    46,    47,    48,     6,     7,     8,
-    -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-    19,    -1,    -1,    -1,    -1,    24,    -1,    -1,    70,    -1,
-    29,    30,    31,    32,    33,    34,    -1,    -1,    -1,   183,
-   184,   185,   186,   187,   188,    -1,    -1,    46,    47,    48,
-    -1,    93,    94,    95,    96,    97,    98,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,   107,    -1,    -1,    -1,   111,
-    -1,    70,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    93,    94,    95,    96,    97,    98,
-    18,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   107,    -1,
-    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    45,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,   183,   184,   185,   186,   187,   188,    -1,    -1,    67,
-    68,    69,    -1,    71,    -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,   183,   184,   185,   186,   187,   188,
-   108,   109,   110,    -1,   112,   113,   114,   115,   116,   117,
-   118,   119,   120,   121,    -1,   123,   124,   125,   126,   127,
-   128,   129,   130,   131,   132,   133,   134,   135,   136,   137,
-    -1,   139,   140,   141,   142,   143,   144,   145,   146,   147,
-   148,   149,   150,   151,   152,   153,   154,   155,   156,   157,
-   158,   159,   160,   161,   162,   163,   164,   165,   166,   167,
-   168,   169,   170,   171,   172,   173,   174,   175,    18,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,   185,    -1,    -1,
-    -1,   189,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    45,    19,    20,    -1,    -1,
-    -1,    24,    -1,    -1,    -1,    -1,    29,    30,    31,    32,
-    33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    71,    -1,    46,    47,    48,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    88,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    70,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   108,   109,
-   110,    -1,   112,   113,   114,   115,   116,   117,   118,   119,
-   120,   121,    -1,   123,   124,   125,   126,   127,   128,   129,
-   130,   131,   132,   133,   134,   135,   136,   137,   111,   139,
-   140,   141,   142,   143,   144,   145,   146,   147,   148,   149,
-   150,   151,   152,   153,   154,   155,   156,   157,   158,   159,
-   160,   161,   162,   163,   164,   165,   166,   167,   168,   169,
-   170,   171,   172,   173,   174,   175,    19,    -1,    -1,    -1,
-    -1,    24,    -1,    -1,    -1,   185,    -1,    -1,    -1,   189,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    45,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-   183,   184,   185,   186,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    71,    -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,   108,   109,   110,    -1,   112,
-   113,   114,   115,   116,   117,   118,   119,   120,   121,    -1,
-   123,   124,   125,   126,   127,   128,   129,   130,   131,   132,
-   133,   134,   135,   136,   137,    -1,   139,   140,   141,   142,
-   143,   144,   145,   146,   147,   148,   149,   150,   151,   152,
-   153,   154,   155,   156,   157,   158,   159,   160,   161,   162,
-   163,   164,   165,   166,   167,   168,   169,   170,   171,   172,
-   173,   174,   175,    19,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,   185,    -1,    -1,    -1,   189,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    45,
-    -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,    71,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,   184,   185,   186,   187,   188,   189,   190,
+     6,     7,     8,    -1,    10,    11,    12,    13,    14,    15,
+    16,    17,    18,    19,    20,    -1,    -1,    -1,    24,    -1,
+    -1,    -1,    -1,    29,    30,    31,    32,    33,    34,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    42,    43,    -1,    45,
+    46,    47,    48,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    70,    71,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    20,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,   108,   109,   110,    -1,   112,   113,   114,   115,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    93,    94,    95,
+    96,    97,    98,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,   107,   108,   109,   110,   111,   112,   113,   114,   115,
    116,   117,   118,   119,   120,   121,    -1,   123,   124,   125,
    126,   127,   128,   129,   130,   131,   132,   133,   134,   135,
    136,   137,    -1,   139,   140,   141,   142,   143,   144,   145,
    146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
    156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
    166,   167,   168,   169,   170,   171,   172,   173,   174,   175,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   185,
-   108,   109,   110,   189,   112,   113,   114,   115,   116,   117,
-   118,   119,   120,   121,    -1,   123,   124,   125,   126,   127,
-   128,   129,   130,   131,   132,   133,   134,   135,   136,   137,
-    -1,   139,   140,   141,   142,   143,   144,   145,   146,   147,
-   148,   149,   150,   151,   152,   153,   154,   155,   156,   157,
-   158,   159,   160,   161,   162,   163,   164,   165,   166,   167,
-   168,   169,   170,   171,   172,   173,   174,   175,    22,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,   185,    -1,    -1,
-    -1,   189,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    19,    -1,    -1,    -1,    -1,    24,    -1,    -1,
-    -1,    -1,    29,    30,    31,    32,    33,    34,    -1,    -1,
-    -1,    -1,    -1,    67,    68,    69,    -1,    -1,    -1,    46,
-    47,    48,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    85,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    70,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,   108,   109,   110,    -1,   112,   113,
-   114,   115,   116,   117,   118,   119,   120,   121,    -1,   123,
-   124,   125,   126,   127,   128,   129,   130,   131,   132,   133,
-   134,   135,   136,   137,   111,   139,   140,   141,   142,   143,
-   144,   145,   146,   147,   148,   149,   150,   151,   152,   153,
-   154,   155,   156,   157,   158,   159,   160,   161,   162,   163,
-   164,   165,   166,   167,   168,   169,   170,   171,   172,   173,
-   174,   175,    -1,    -1,    -1,    -1,    19,    -1,    -1,    -1,
-    -1,    24,    -1,    -1,    -1,   189,    29,    30,    31,    32,
-    33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    46,    47,    48,   183,   184,   185,   186,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    70,    -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,
-    24,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,
-    34,    24,    25,    -1,    -1,    -1,    29,    30,    31,    32,
-    33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    46,    47,    48,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    70,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-   183,   184,   185,   186,   108,   109,   110,    -1,   112,   113,
-   114,   115,   116,   117,   118,   119,   120,   121,   111,   123,
-   124,   125,   126,   127,   128,   129,   130,   131,   132,   133,
-   134,   135,   136,   137,    -1,   139,   140,   141,   142,   143,
-   144,   145,   146,   147,   148,   149,   150,   151,   152,   153,
-   154,   155,   156,   157,   158,   159,   160,   161,   162,   163,
-   164,   165,   166,   167,   168,   169,   170,   171,   172,   173,
-   174,   175,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   183,
-   184,   185,    -1,   187,   188,   189,    -1,    -1,    -1,    -1,
-   183,   184,   185,   186,    24,    -1,    -1,    27,    -1,    29,
-    30,    31,    32,    33,    34,    24,    -1,    -1,    27,    -1,
-    29,    30,    31,    32,    33,    34,    46,    47,    48,    -1,
-    -1,    -1,    -1,    -1,    -1,    24,    25,    46,    47,    48,
-    29,    30,    31,    32,    33,    34,    24,    25,    -1,    -1,
-    70,    29,    30,    31,    32,    33,    34,    46,    47,    48,
-    -1,    70,    -1,    -1,    -1,    -1,    24,    -1,    46,    47,
-    48,    29,    30,    31,    32,    33,    34,    -1,    -1,    -1,
-    -1,    70,    -1,    -1,    -1,    -1,    -1,    -1,    46,    47,
-    48,   111,    70,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    24,   111,    -1,    -1,    -1,    29,    30,    31,    32,
-    33,    34,    70,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,   111,    46,    47,    48,    -1,    -1,    -1,    -1,
-    -1,    -1,    24,   111,    -1,    -1,    -1,    29,    30,    31,
-    32,    33,    34,    -1,    -1,    -1,    -1,    70,    -1,    -1,
-    -1,    -1,    -1,   111,    46,    47,    48,    -1,    -1,    -1,
-    -1,    -1,    -1,   183,   184,   185,   186,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,   183,   184,   185,   186,    70,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,
-    -1,    -1,    -1,    24,   183,   184,   185,   186,    29,    30,
-    31,    32,    33,    34,    -1,   183,   184,   185,   186,    -1,
-    -1,    -1,    -1,    -1,    -1,    46,    47,    48,    -1,   111,
-    -1,    -1,    -1,    -1,    24,   183,   184,   185,   186,    29,
-    30,    31,    32,    33,    34,    -1,    -1,    -1,    -1,    70,
-    -1,    -1,    -1,    -1,    -1,    -1,    46,    47,    48,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-   183,   184,   185,   186,    -1,    -1,    -1,    -1,    -1,    -1,
-    70,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,   183,   184,   185,   186,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    42,    43,    -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,   183,   184,   185,   186,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   184,   185,
+   186,   187,   188,   189,   190,     6,     7,     8,    -1,    10,
+    11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+    -1,    -1,    -1,    24,    -1,    -1,    -1,    -1,    29,    30,
+    31,    32,    33,    34,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    42,    43,    -1,    45,    46,    47,    48,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    70,
+    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,   183,   184,   185,   186,   108,   109,   110,
-    -1,   112,   113,   114,   115,   116,   117,   118,   119,   120,
+    -1,    -1,    93,    94,    95,    96,    97,    98,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,   107,   108,   109,   110,
+   111,   112,   113,   114,   115,   116,   117,   118,   119,   120,
    121,    -1,   123,   124,   125,   126,   127,   128,   129,   130,
    131,   132,   133,   134,   135,   136,   137,    -1,   139,   140,
    141,   142,   143,   144,   145,   146,   147,   148,   149,   150,
    151,   152,   153,   154,   155,   156,   157,   158,   159,   160,
    161,   162,   163,   164,   165,   166,   167,   168,   169,   170,
-   171,   172,   173,   174,   175,    45,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,   185,    -1,    -1,    -1,   189,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    68,    69,
-    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+   171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,   184,   185,   186,   187,   188,   189,   190,
+     6,     7,     8,    -1,    10,    11,    12,    13,    14,    15,
+    16,    17,    18,    19,    20,    -1,    -1,    -1,    24,    -1,
+    -1,    -1,    -1,    29,    30,    31,    32,    33,    34,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    46,    47,    48,     6,     7,     8,    -1,    10,    11,    12,
+    13,    14,    15,    16,    17,    18,    19,    20,    -1,    -1,
+    -1,    24,    -1,    -1,    70,    -1,    29,    30,    31,    32,
+    33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    46,    47,    48,    -1,    93,    94,    95,
+    96,    97,    98,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,   107,    -1,    -1,    -1,   111,    -1,    70,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   108,   109,
-   110,    -1,   112,   113,   114,   115,   116,   117,   118,   119,
-   120,   121,    -1,   123,   124,   125,   126,   127,   128,   129,
-   130,   131,   132,   133,   134,   135,   136,   137,    -1,   139,
-   140,   141,   142,   143,   144,   145,   146,   147,   148,   149,
-   150,   151,   152,   153,   154,   155,   156,   157,   158,   159,
-   160,   161,   162,   163,   164,   165,   166,   167,   168,   169,
-   170,   171,   172,   173,   174,   175,    45,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,   185,    -1,    -1,    -1,   189,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    93,    94,    95,    96,    97,    98,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,   107,     6,     7,     8,   111,    10,
+    11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+    -1,    -1,    -1,    24,    -1,    -1,    -1,    -1,    29,    30,
+    31,    32,    33,    34,    -1,    -1,    -1,    -1,   184,   185,
+   186,   187,   188,   189,    -1,    46,    47,    48,     6,     7,
+     8,    -1,    10,    11,    12,    13,    14,    15,    16,    17,
+    18,    19,    20,    -1,    -1,    -1,    24,    -1,    -1,    70,
+    -1,    29,    30,    31,    32,    33,    34,    -1,    -1,    -1,
+    -1,   184,   185,   186,   187,   188,   189,    -1,    46,    47,
+    48,    -1,    93,    94,    95,    96,    97,    98,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,   107,    -1,    -1,    -1,
+   111,    -1,    70,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    93,    94,    95,    96,    97,
+    98,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   107,
+     6,     7,     8,   111,    10,    11,    12,    13,    14,    15,
+    16,    17,    18,    19,    20,    -1,    -1,    -1,    24,    -1,
+    -1,    -1,    -1,    29,    30,    31,    32,    33,    34,    -1,
+    -1,    -1,    -1,   184,   185,   186,   187,   188,   189,    -1,
+    46,    47,    48,     6,     7,     8,    -1,    10,    11,    12,
+    13,    14,    15,    16,    17,    18,    19,    20,    -1,    -1,
+    -1,    24,    -1,    -1,    70,    -1,    29,    30,    31,    32,
+    33,    34,    -1,    -1,    -1,    -1,   184,   185,   186,   187,
+   188,   189,    -1,    46,    47,    48,    -1,    93,    94,    95,
+    96,    97,    98,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,   107,    -1,    -1,    -1,   111,    -1,    70,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    93,    94,    95,    96,    97,    98,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,   107,     6,     7,     8,   111,    10,
+    11,    12,    13,    14,    15,    16,    17,    18,    19,    -1,
+    -1,    18,    -1,    24,    -1,    -1,    -1,    -1,    29,    30,
+    31,    32,    33,    34,    -1,    -1,    -1,    -1,   184,   185,
+   186,   187,   188,   189,    -1,    46,    47,    48,    45,    -1,
+    -1,    -1,    -1,    -1,    24,    25,    -1,    -1,    -1,    29,
+    30,    31,    32,    33,    34,    -1,    -1,    -1,    -1,    70,
+    67,    68,    69,    -1,    71,    -1,    46,    47,    48,    -1,
+    -1,   184,   185,   186,   187,   188,   189,    -1,    -1,    -1,
+    -1,    -1,    93,    94,    95,    96,    97,    98,    -1,    -1,
+    70,    -1,    -1,    -1,    -1,    -1,   107,    -1,    -1,    -1,
+   111,   108,   109,   110,    -1,   112,   113,   114,   115,   116,
+   117,   118,   119,   120,   121,    -1,   123,   124,   125,   126,
+   127,   128,   129,   130,   131,   132,   133,   134,   135,   136,
+   137,   111,   139,   140,   141,   142,   143,   144,   145,   146,
+   147,   148,   149,   150,   151,   152,   153,   154,   155,   156,
+   157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
+   167,   168,   169,   170,   171,   172,   173,   174,   175,    18,
+    -1,    -1,    -1,   184,   185,   186,   187,   188,   189,   186,
+    -1,    -1,    -1,   190,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    45,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,   184,   185,   186,   187,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    88,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   108,
    109,   110,    -1,   112,   113,   114,   115,   116,   117,   118,
@@ -2563,28 +2371,135 @@ static const short yycheck[] = {     0,
    139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
    149,   150,   151,   152,   153,   154,   155,   156,   157,   158,
    159,   160,   161,   162,   163,   164,   165,   166,   167,   168,
-   169,   170,   171,   172,   173,   174,   175,    67,    68,    69,
-    -1,    -1,    -1,    -1,    -1,    -1,   185,    -1,    -1,    -1,
-   189,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+   169,   170,   171,   172,   173,   174,   175,    19,    -1,    -1,
+    -1,    -1,    24,    -1,    -1,    -1,    -1,   186,    -1,    -1,
+    -1,   190,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    45,    -1,    -1,    -1,    -1,    -1,    24,
+    25,    -1,    -1,    -1,    29,    30,    31,    32,    33,    34,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    71,
+    -1,    46,    47,    48,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    70,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,   108,   109,   110,    -1,
+   112,   113,   114,   115,   116,   117,   118,   119,   120,   121,
+    -1,   123,   124,   125,   126,   127,   128,   129,   130,   131,
+   132,   133,   134,   135,   136,   137,   111,   139,   140,   141,
+   142,   143,   144,   145,   146,   147,   148,   149,   150,   151,
+   152,   153,   154,   155,   156,   157,   158,   159,   160,   161,
+   162,   163,   164,   165,   166,   167,   168,   169,   170,   171,
+   172,   173,   174,   175,    19,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,   186,    -1,    -1,    -1,   190,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    45,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   184,
+   185,   186,   187,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    71,    -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,   108,   109,
+    -1,    -1,    -1,    -1,    20,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,   108,   109,   110,    -1,   112,   113,   114,
+   115,   116,   117,   118,   119,   120,   121,    -1,   123,   124,
+   125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
+   135,   136,   137,    -1,   139,   140,   141,   142,   143,   144,
+   145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
+   155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
+   165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
+   175,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,   186,   108,   109,   110,   190,   112,   113,   114,   115,
+   116,   117,   118,   119,   120,   121,    -1,   123,   124,   125,
+   126,   127,   128,   129,   130,   131,   132,   133,   134,   135,
+   136,   137,    22,   139,   140,   141,   142,   143,   144,   145,
+   146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
+   156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
+   166,   167,   168,   169,   170,   171,   172,   173,   174,   175,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    68,    69,
+   186,    -1,    -1,    -1,   190,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    85,    -1,    -1,    -1,    -1,
+    -1,    -1,    24,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    34,    -1,    -1,    -1,    -1,    -1,   108,   109,
    110,    -1,   112,   113,   114,   115,   116,   117,   118,   119,
    120,   121,    -1,   123,   124,   125,   126,   127,   128,   129,
    130,   131,   132,   133,   134,   135,   136,   137,    -1,   139,
    140,   141,   142,   143,   144,   145,   146,   147,   148,   149,
    150,   151,   152,   153,   154,   155,   156,   157,   158,   159,
    160,   161,   162,   163,   164,   165,   166,   167,   168,   169,
-   170,   171,   172,   173,   174,   175,    89,    90,    91,    -1,
-    -1,    -1,    -1,    -1,    -1,   185,    -1,    -1,    -1,   189,
-    -1,    -1,    -1,    -1,    -1,   108,   109,   110,    -1,   112,
+   170,   171,   172,   173,   174,   175,   108,   109,   110,    -1,
+   112,   113,   114,   115,   116,   117,   118,   119,   120,   121,
+   190,   123,   124,   125,   126,   127,   128,   129,   130,   131,
+   132,   133,   134,   135,   136,   137,    -1,   139,   140,   141,
+   142,   143,   144,   145,   146,   147,   148,   149,   150,   151,
+   152,   153,   154,   155,   156,   157,   158,   159,   160,   161,
+   162,   163,   164,   165,   166,   167,   168,   169,   170,   171,
+   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,   184,   185,   186,    24,   188,   189,   190,    -1,
+    29,    30,    31,    32,    33,    34,    24,    -1,    -1,    -1,
+    -1,    29,    30,    31,    32,    33,    34,    46,    47,    48,
+    -1,    -1,    -1,    -1,    -1,    -1,    24,    -1,    46,    47,
+    48,    29,    30,    31,    32,    33,    34,    24,    -1,    -1,
+    -1,    70,    29,    30,    31,    32,    33,    34,    46,    47,
+    48,    -1,    70,    -1,    -1,    -1,    -1,    24,    -1,    46,
+    47,    48,    29,    30,    31,    32,    33,    34,    -1,    -1,
+    -1,    -1,    70,    -1,    -1,    -1,    -1,    -1,    -1,    46,
+    47,    48,   111,    70,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    70,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,   184,   185,   186,   187,    42,
+    43,    -1,    -1,    -1,    -1,    -1,   184,   185,   186,   187,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,   184,   185,   186,   187,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,   184,   185,   186,
+   187,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,   184,   185,   186,
+   187,    -1,    -1,    -1,    -1,   108,   109,   110,    -1,   112,
    113,   114,   115,   116,   117,   118,   119,   120,   121,    -1,
    123,   124,   125,   126,   127,   128,   129,   130,   131,   132,
    133,   134,   135,   136,   137,    -1,   139,   140,   141,   142,
    143,   144,   145,   146,   147,   148,   149,   150,   151,   152,
    153,   154,   155,   156,   157,   158,   159,   160,   161,   162,
    163,   164,   165,   166,   167,   168,   169,   170,   171,   172,
-   173,   174,   175,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,   185,   108,   109,   110,   189,   112,   113,   114,
+   173,   174,   175,    45,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,   186,    -1,    -1,    -1,   190,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    67,    68,    69,    -1,    71,
+    -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,   108,   109,   110,    -1,
+   112,   113,   114,   115,   116,   117,   118,   119,   120,   121,
+    -1,   123,   124,   125,   126,   127,   128,   129,   130,   131,
+   132,   133,   134,   135,   136,   137,    -1,   139,   140,   141,
+   142,   143,   144,   145,   146,   147,   148,   149,   150,   151,
+   152,   153,   154,   155,   156,   157,   158,   159,   160,   161,
+   162,   163,   164,   165,   166,   167,   168,   169,   170,   171,
+   172,   173,   174,   175,    45,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,   186,    -1,    -1,    -1,   190,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    71,    -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,   108,   109,   110,
+    -1,   112,   113,   114,   115,   116,   117,   118,   119,   120,
+   121,    -1,   123,   124,   125,   126,   127,   128,   129,   130,
+   131,   132,   133,   134,   135,   136,   137,    -1,   139,   140,
+   141,   142,   143,   144,   145,   146,   147,   148,   149,   150,
+   151,   152,   153,   154,   155,   156,   157,   158,   159,   160,
+   161,   162,   163,   164,   165,   166,   167,   168,   169,   170,
+   171,   172,   173,   174,   175,    67,    68,    69,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,   186,    -1,    -1,    -1,   190,
+    -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,   108,   109,   110,    -1,
+   112,   113,   114,   115,   116,   117,   118,   119,   120,   121,
+    -1,   123,   124,   125,   126,   127,   128,   129,   130,   131,
+   132,   133,   134,   135,   136,   137,    -1,   139,   140,   141,
+   142,   143,   144,   145,   146,   147,   148,   149,   150,   151,
+   152,   153,   154,   155,   156,   157,   158,   159,   160,   161,
+   162,   163,   164,   165,   166,   167,   168,   169,   170,   171,
+   172,   173,   174,   175,    89,    90,    91,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,   186,    -1,    -1,    -1,   190,    -1,
+    -1,    -1,    -1,   108,   109,   110,    -1,   112,   113,   114,
    115,   116,   117,   118,   119,   120,   121,    -1,   123,   124,
    125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
    135,   136,   137,    -1,   139,   140,   141,   142,   143,   144,
@@ -2592,7 +2507,15 @@ static const short yycheck[] = {     0,
    155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
    165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
    175,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-   185,    -1,    -1,    -1,   189
+    -1,   186,   108,   109,   110,   190,   112,   113,   114,   115,
+   116,   117,   118,   119,   120,   121,    -1,   123,   124,   125,
+   126,   127,   128,   129,   130,   131,   132,   133,   134,   135,
+   136,   137,    -1,   139,   140,   141,   142,   143,   144,   145,
+   146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
+   156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
+   166,   167,   168,   169,   170,   171,   172,   173,   174,   175,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+   186,    -1,    -1,    -1,   190
 };
 /* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
 #line 3 "/usr/lib/bison.simple"
@@ -3138,52 +3061,52 @@ yyreduce:
   switch (yyn) {
 
 case 5:
-#line 276 "cgrammar.y"
+#line 277 "cgrammar.y"
 { uentry_clearDecl (); ;
     break;}
 case 6:
-#line 277 "cgrammar.y"
+#line 278 "cgrammar.y"
 { uentry_clearDecl (); ;
     break;}
 case 7:
-#line 278 "cgrammar.y"
+#line 279 "cgrammar.y"
 { uentry_clearDecl (); ;
     break;}
 case 8:
-#line 279 "cgrammar.y"
+#line 280 "cgrammar.y"
 { uentry_clearDecl (); ;
     break;}
 case 9:
-#line 280 "cgrammar.y"
+#line 281 "cgrammar.y"
 { uentry_clearDecl (); ;
     break;}
 case 10:
-#line 281 "cgrammar.y"
+#line 282 "cgrammar.y"
 { uentry_checkDecl (); exprNode_free (yyvsp[0].expr); ;
     break;}
 case 11:
-#line 282 "cgrammar.y"
+#line 283 "cgrammar.y"
 { uentry_clearDecl (); ;
     break;}
 case 12:
-#line 286 "cgrammar.y"
+#line 287 "cgrammar.y"
 { checkConstant (yyvsp[-6].qtyp, yyvsp[-4].ntyp); ;
     break;}
 case 13:
-#line 288 "cgrammar.y"
+#line 289 "cgrammar.y"
 { checkValueConstant (yyvsp[-9].qtyp, yyvsp[-7].ntyp, yyvsp[-3].expr) ; ;
     break;}
 case 14:
-#line 291 "cgrammar.y"
+#line 292 "cgrammar.y"
 { context_enterFunctionDecl (); ;
     break;}
 case 15:
-#line 292 "cgrammar.y"
+#line 293 "cgrammar.y"
 { declareStaticFunction (yyvsp[-2].ntyp); context_quietExitFunction (); 
      context_exitFunctionDecl (); ;
     break;}
 case 16:
-#line 297 "cgrammar.y"
+#line 298 "cgrammar.y"
 { 
      qtype qint = qtype_create (ctype_int);
      yyval.ntyp = idDecl_fixBase (yyvsp[0].ntyp, qint);
@@ -3191,38 +3114,38 @@ case 16:
    ;
     break;}
 case 17:
-#line 303 "cgrammar.y"
+#line 304 "cgrammar.y"
 { yyval.ntyp = idDecl_fixBase (yyvsp[0].ntyp, yyvsp[-2].qtyp); ;
     break;}
 case 19:
-#line 308 "cgrammar.y"
+#line 309 "cgrammar.y"
 { yyval.ntyp = yyvsp[0].ntyp; qtype_adjustPointers (yyvsp[-1].count, idDecl_getTyp (yyval.ntyp)); ;
     break;}
 case 20:
-#line 311 "cgrammar.y"
+#line 312 "cgrammar.y"
 { yyval.ntyp = idDecl_create (yyvsp[0].cname, qtype_unknown ()); ;
     break;}
 case 21:
-#line 313 "cgrammar.y"
+#line 314 "cgrammar.y"
 { yyval.ntyp = idDecl_expectFunction (yyvsp[-2].ntyp); ;
     break;}
 case 22:
-#line 315 "cgrammar.y"
+#line 316 "cgrammar.y"
 { yyval.ntyp = idDecl_replaceCtype (yyvsp[-2].ntyp, ctype_makeArray (idDecl_getCtype (yyvsp[-2].ntyp))); ;
     break;}
 case 23:
-#line 317 "cgrammar.y"
+#line 318 "cgrammar.y"
 { 
      yyval.ntyp = idDecl_replaceCtype (yyvsp[-5].ntyp, ctype_makeFixedArray (idDecl_getCtype (yyvsp[-5].ntyp), exprNode_getLongValue (yyvsp[-2].expr)));
    ;
     break;}
 case 24:
-#line 321 "cgrammar.y"
+#line 322 "cgrammar.y"
 { setCurrentParams (uentryList_missingParams); 
         ;
     break;}
 case 25:
-#line 324 "cgrammar.y"
+#line 325 "cgrammar.y"
 { /* need to support globals and modifies here! */
      ctype ct = ctype_makeFunction (idDecl_getCtype (yyvsp[-6].ntyp), 
                                    uentryList_makeMissingParams ());
@@ -3232,12 +3155,12 @@ case 25:
    ;
     break;}
 case 26:
-#line 332 "cgrammar.y"
+#line 333 "cgrammar.y"
 { setCurrentParams (yyvsp[-1].entrylist); 
         ;
     break;}
 case 27:
-#line 335 "cgrammar.y"
+#line 336 "cgrammar.y"
 { setImplictfcnConstraints ();
      clearCurrentParams ();
      yyval.ntyp = idDecl_replaceCtype (yyvsp[-7].ntyp, ctype_makeFunction (idDecl_getCtype (yyvsp[-7].ntyp), yyvsp[-4].entrylist));
@@ -3245,19 +3168,19 @@ case 27:
    ;
     break;}
 case 28:
-#line 342 "cgrammar.y"
+#line 343 "cgrammar.y"
 { yyval.ntyp = idDecl_create (yyvsp[0].cname, qtype_unknown ()); ;
     break;}
 case 29:
-#line 344 "cgrammar.y"
+#line 345 "cgrammar.y"
 { yyval.ntyp = idDecl_expectFunction (yyvsp[-2].ntyp); ;
     break;}
 case 30:
-#line 346 "cgrammar.y"
+#line 347 "cgrammar.y"
 { yyval.ntyp = idDecl_replaceCtype (yyvsp[-2].ntyp, ctype_makeArray (idDecl_getCtype (yyvsp[-2].ntyp))); ;
     break;}
 case 31:
-#line 348 "cgrammar.y"
+#line 349 "cgrammar.y"
 { 
      int value;
 
@@ -3275,12 +3198,12 @@ case 31:
    ;
     break;}
 case 32:
-#line 364 "cgrammar.y"
+#line 365 "cgrammar.y"
 { setCurrentParams (uentryList_missingParams); 
         ;
     break;}
 case 33:
-#line 367 "cgrammar.y"
+#line 368 "cgrammar.y"
 { /* need to support globals and modifies here! */
      ctype ct = ctype_makeFunction (idDecl_getCtype (yyvsp[-5].ntyp), 
                                    uentryList_makeMissingParams ());
@@ -3290,67 +3213,67 @@ case 33:
    ;
     break;}
 case 34:
-#line 375 "cgrammar.y"
+#line 376 "cgrammar.y"
 { setCurrentParams (yyvsp[-1].entrylist); 
         ;
     break;}
 case 35:
-#line 378 "cgrammar.y"
+#line 379 "cgrammar.y"
 { clearCurrentParams ();
      yyval.ntyp = idDecl_replaceCtype (yyvsp[-6].ntyp, ctype_makeFunction (idDecl_getCtype (yyvsp[-6].ntyp), yyvsp[-3].entrylist));
      context_popLoc (); 
    ;
     break;}
 case 36:
-#line 385 "cgrammar.y"
+#line 386 "cgrammar.y"
 { setCurrentParams (yyvsp[-1].entrylist); ;
     break;}
 case 37:
-#line 386 "cgrammar.y"
+#line 387 "cgrammar.y"
 { clearCurrentParams (); ;
     break;}
 case 38:
-#line 387 "cgrammar.y"
+#line 388 "cgrammar.y"
 { declareCIter (yyvsp[-8].cname, yyvsp[-6].entrylist); ;
     break;}
 case 39:
-#line 390 "cgrammar.y"
+#line 391 "cgrammar.y"
 { exprNode_checkMacroBody (yyvsp[-1].expr); ;
     break;}
 case 40:
-#line 391 "cgrammar.y"
+#line 392 "cgrammar.y"
 { exprNode_checkIterBody (yyvsp[-1].expr); ;
     break;}
 case 41:
-#line 392 "cgrammar.y"
+#line 393 "cgrammar.y"
 { exprNode_checkIterEnd (yyvsp[-1].expr); ;
     break;}
 case 42:
-#line 393 "cgrammar.y"
+#line 394 "cgrammar.y"
 { exprChecks_checkEmptyMacroBody (); ;
     break;}
 case 43:
-#line 396 "cgrammar.y"
+#line 397 "cgrammar.y"
 { declareFunction (yyvsp[0].ntyp); ;
     break;}
 case 44:
-#line 399 "cgrammar.y"
+#line 400 "cgrammar.y"
 { setProcessingGlobMods (); ;
     break;}
 case 45:
-#line 400 "cgrammar.y"
+#line 401 "cgrammar.y"
 { clearProcessingGlobMods (); ;
     break;}
 case 46:
-#line 406 "cgrammar.y"
+#line 407 "cgrammar.y"
 { setProcessingGlobMods (); ;
     break;}
 case 47:
-#line 407 "cgrammar.y"
+#line 408 "cgrammar.y"
 { clearProcessingGlobMods (); ;
     break;}
 case 49:
-#line 415 "cgrammar.y"
+#line 416 "cgrammar.y"
 {
   DPRINTF ( ("doing optGlobEnsuresConstraintsAux\n") );
 context_setProtectVars (); enterParamsTemp (); 
@@ -3359,16 +3282,16 @@ context_setProtectVars (); enterParamsTemp ();
 ;
     break;}
 case 50:
-#line 421 "cgrammar.y"
+#line 422 "cgrammar.y"
 {
-  setEnsuresConstraints (yyvsp[-1].conL);
+  setEnsuresConstraints (yyvsp[-2].conL);
   exitParamsTemp ();
      sRef_clearGlobalScopeSafe (); 
      context_releaseVars ();
   DPRINTF (("done optGlobBufConstraintsAux\n"));;
     break;}
 case 52:
-#line 431 "cgrammar.y"
+#line 432 "cgrammar.y"
 {
   DPRINTF ( ("doing optGlobBufConstraintsAux\n") );
 context_setProtectVars (); enterParamsTemp (); 
@@ -3377,44 +3300,44 @@ context_setProtectVars (); enterParamsTemp ();
 ;
     break;}
 case 53:
-#line 437 "cgrammar.y"
+#line 438 "cgrammar.y"
 {
-  setFunctionConstraints (yyvsp[-1].conL);
+  setFunctionConstraints (yyvsp[-2].conL);
   exitParamsTemp ();
      sRef_clearGlobalScopeSafe (); 
      context_releaseVars ();
   DPRINTF (("done optGlobBufConstraintsAux\n"));;
     break;}
 case 55:
-#line 446 "cgrammar.y"
-{ yyval.conL = constraintList_add (yyvsp[0].conL, yyvsp[-1].con); ;
+#line 447 "cgrammar.y"
+{ yyval.conL = constraintList_add (yyvsp[0].conL, yyvsp[-2].con); ;
     break;}
 case 56:
-#line 447 "cgrammar.y"
+#line 448 "cgrammar.y"
 {constraintList c; c = constraintList_makeNew(); c = constraintList_add (c, yyvsp[0].con); yyval.conL = c;
     break;}
 case 57:
-#line 450 "cgrammar.y"
+#line 451 "cgrammar.y"
 {
- yyval.con = makeConstraintParse3 (yyvsp[-3].conE, yyvsp[-2].tok, yyvsp[-1].conE);
+ yyval.con = makeConstraintParse3 (yyvsp[-2].conE, yyvsp[-1].tok, yyvsp[0].conE);
  DPRINTF(("Done BufConstraint1\n")); ;
     break;}
 case 64:
-#line 465 "cgrammar.y"
+#line 466 "cgrammar.y"
 {yyval.conE = constraintExpr_parseMakeUnaryOp (yyvsp[-3].tok, yyvsp[-1].conE);  DPRINTF( ("Got BufConstraintExpr UNary Op ") ); ;
     break;}
 case 65:
-#line 466 "cgrammar.y"
+#line 467 "cgrammar.y"
 {
    DPRINTF( ("Got BufConstraintExpr BINary Op ") );
    yyval.conE = constraintExpr_parseMakeBinaryOp (yyvsp[-3].conE, yyvsp[-2].tok, yyvsp[-1].conE); ;
     break;}
 case 66:
-#line 471 "cgrammar.y"
+#line 472 "cgrammar.y"
 { yyval.conE =  constraintExpr_makeTermsRef(yyvsp[0].sr);;
     break;}
 case 67:
-#line 472 "cgrammar.y"
+#line 473 "cgrammar.y"
 {  char *t; int c;
   t =  cstring_toCharsSafe (exprNode_unparse(yyvsp[0].expr));
   c = atoi( t );
@@ -3422,21 +3345,21 @@ case 67:
 ;
     break;}
 case 68:
-#line 480 "cgrammar.y"
+#line 481 "cgrammar.y"
 {
    yyval.sr =
      checkbufferConstraintClausesId (yyvsp[0].entry);;
     break;}
 case 69:
-#line 483 "cgrammar.y"
+#line 484 "cgrammar.y"
 { yyval.sr = fixSpecClausesId (yyvsp[0].cname); ;
     break;}
 case 70:
-#line 485 "cgrammar.y"
+#line 486 "cgrammar.y"
 { yyval.sr = sRef_makeAnyArrayFetch (yyvsp[-2].sr); ;
     break;}
 case 71:
-#line 486 "cgrammar.y"
+#line 487 "cgrammar.y"
 {
      char *t; int c;
   t =  cstring_toCharsSafe (exprNode_unparse(yyvsp[-1].expr));
@@ -3444,140 +3367,140 @@ case 71:
    yyval.sr = sRef_makeArrayFetchKnown(yyvsp[-3].sr, c); ;
     break;}
 case 72:
-#line 491 "cgrammar.y"
+#line 492 "cgrammar.y"
 { yyval.sr = sRef_constructPointer (yyvsp[0].sr); ;
     break;}
 case 73:
-#line 492 "cgrammar.y"
+#line 493 "cgrammar.y"
 { yyval.sr = yyvsp[-1].sr; ;
     break;}
 case 74:
-#line 493 "cgrammar.y"
+#line 494 "cgrammar.y"
 { cstring_markOwned (yyvsp[0].cname);
                                            yyval.sr = sRef_buildField (yyvsp[-2].sr, yyvsp[0].cname); ;
     break;}
 case 75:
-#line 495 "cgrammar.y"
+#line 496 "cgrammar.y"
 { cstring_markOwned (yyvsp[0].cname);
                                             yyval.sr = sRef_makeArrow (yyvsp[-2].sr, yyvsp[0].cname); ;
     break;}
 case 79:
-#line 521 "cgrammar.y"
+#line 522 "cgrammar.y"
 { setProcessingGlobMods (); ;
     break;}
 case 80:
-#line 522 "cgrammar.y"
+#line 523 "cgrammar.y"
 { clearProcessingGlobMods (); ;
     break;}
 case 81:
-#line 532 "cgrammar.y"
+#line 533 "cgrammar.y"
 { setProcessingGlobMods (); ;
     break;}
 case 82:
-#line 533 "cgrammar.y"
+#line 534 "cgrammar.y"
 { clearProcessingGlobMods (); ;
     break;}
 case 89:
-#line 548 "cgrammar.y"
+#line 549 "cgrammar.y"
 { ; ;
     break;}
 case 90:
-#line 549 "cgrammar.y"
+#line 550 "cgrammar.y"
 { ; ;
     break;}
 case 91:
-#line 552 "cgrammar.y"
+#line 553 "cgrammar.y"
 { globListAdd (yyvsp[0].sr, yyvsp[-1].tquallist); ;
     break;}
 case 92:
-#line 555 "cgrammar.y"
+#line 556 "cgrammar.y"
 { yyval.sr = uentry_getSref (yyvsp[0].entry); ;
     break;}
 case 93:
-#line 556 "cgrammar.y"
+#line 557 "cgrammar.y"
 { yyval.sr = globListUnrecognized (yyvsp[0].cname); ;
     break;}
 case 94:
-#line 559 "cgrammar.y"
+#line 560 "cgrammar.y"
 { yyval.typequal = qual_createUndef (); ;
     break;}
 case 95:
-#line 560 "cgrammar.y"
+#line 561 "cgrammar.y"
 { yyval.typequal = qual_createKilled (); ;
     break;}
 case 96:
-#line 561 "cgrammar.y"
+#line 562 "cgrammar.y"
 { yyval.typequal = qual_createOut (); ;
     break;}
 case 97:
-#line 562 "cgrammar.y"
+#line 563 "cgrammar.y"
 { yyval.typequal = qual_createIn (); ;
     break;}
 case 98:
-#line 563 "cgrammar.y"
+#line 564 "cgrammar.y"
 { yyval.typequal = qual_createPartial (); ;
     break;}
 case 99:
-#line 566 "cgrammar.y"
+#line 567 "cgrammar.y"
 { yyval.tquallist = qualList_undefined; ;
     break;}
 case 100:
-#line 567 "cgrammar.y"
+#line 568 "cgrammar.y"
 { yyval.tquallist = qualList_add (yyvsp[0].tquallist, yyvsp[-1].typequal); ;
     break;}
 case 101:
-#line 570 "cgrammar.y"
+#line 571 "cgrammar.y"
 { setProcessingGlobalsList (); ;
     break;}
 case 102:
-#line 572 "cgrammar.y"
+#line 573 "cgrammar.y"
 { unsetProcessingGlobals (); ;
     break;}
 case 103:
-#line 573 "cgrammar.y"
+#line 574 "cgrammar.y"
 { setProcessingGlobalsList (); ;
     break;}
 case 104:
-#line 575 "cgrammar.y"
+#line 576 "cgrammar.y"
 { unsetProcessingGlobals (); ;
     break;}
 case 105:
-#line 577 "cgrammar.y"
+#line 578 "cgrammar.y"
 { setFunctionNoGlobals ();
      setFunctionModifies (sRefSet_single (sRef_makeNothing ())); 
    ;
     break;}
 case 108:
-#line 584 "cgrammar.y"
+#line 585 "cgrammar.y"
 { setProcessingGlobalsList (); ;
     break;}
 case 109:
-#line 586 "cgrammar.y"
+#line 587 "cgrammar.y"
 { unsetProcessingGlobals (); ;
     break;}
 case 110:
-#line 587 "cgrammar.y"
+#line 588 "cgrammar.y"
 { setProcessingGlobalsList (); ;
     break;}
 case 111:
-#line 589 "cgrammar.y"
+#line 590 "cgrammar.y"
 { unsetProcessingGlobals (); ;
     break;}
 case 112:
-#line 591 "cgrammar.y"
+#line 592 "cgrammar.y"
 { setFunctionNoGlobals ();
      setFunctionModifies (sRefSet_single (sRef_makeNothing ())); 
    ;
     break;}
 case 117:
-#line 603 "cgrammar.y"
+#line 604 "cgrammar.y"
 {
      context_setProtectVars (); enterParamsTemp (); 
      sRef_setGlobalScopeSafe (); 
    ;
     break;}
 case 118:
-#line 608 "cgrammar.y"
+#line 609 "cgrammar.y"
 { 
      setFunctionModifies (yyvsp[0].srset); exitParamsTemp ();
      sRef_clearGlobalScopeSafe (); 
@@ -3585,14 +3508,14 @@ case 118:
    ;
     break;}
 case 119:
-#line 616 "cgrammar.y"
+#line 617 "cgrammar.y"
 {
      context_setProtectVars (); enterParamsTemp (); 
      sRef_setGlobalScopeSafe (); 
    ;
     break;}
 case 120:
-#line 621 "cgrammar.y"
+#line 622 "cgrammar.y"
 { 
      setFunctionModifies (yyvsp[0].srset); exitParamsTemp ();
      sRef_clearGlobalScopeSafe (); 
@@ -3600,39 +3523,39 @@ case 120:
    ;
     break;}
 case 130:
-#line 645 "cgrammar.y"
+#line 646 "cgrammar.y"
 { yyval.sck = SP_ISONLY; ;
     break;}
 case 131:
-#line 646 "cgrammar.y"
+#line 647 "cgrammar.y"
 { yyval.sck = SP_ISOBSERVER; ;
     break;}
 case 132:
-#line 647 "cgrammar.y"
+#line 648 "cgrammar.y"
 { yyval.sck = SP_ISEXPOSED; ;
     break;}
 case 133:
-#line 648 "cgrammar.y"
+#line 649 "cgrammar.y"
 { yyval.sck = SP_ISDEPENDENT; ;
     break;}
 case 134:
-#line 649 "cgrammar.y"
+#line 650 "cgrammar.y"
 { yyval.sck = SP_ISOWNED; ;
     break;}
 case 135:
-#line 650 "cgrammar.y"
+#line 651 "cgrammar.y"
 { yyval.sck = SP_ISSHARED; ;
     break;}
 case 136:
-#line 651 "cgrammar.y"
+#line 652 "cgrammar.y"
 { yyval.sck = SP_ISNULL; ;
     break;}
 case 137:
-#line 652 "cgrammar.y"
+#line 653 "cgrammar.y"
 { yyval.sck = SP_ISNOTNULL; ;
     break;}
 case 138:
-#line 656 "cgrammar.y"
+#line 657 "cgrammar.y"
 {
      context_setProtectVars (); 
      enterParamsTemp (); 
@@ -3640,7 +3563,7 @@ case 138:
    ;
     break;}
 case 139:
-#line 662 "cgrammar.y"
+#line 663 "cgrammar.y"
 { 
      setFunctionSpecialClause (yyvsp[-6].tok, yyvsp[-3].srset, yyvsp[-1].tok); 
      exitParamsTemp ();
@@ -3649,7 +3572,7 @@ case 139:
    ;
     break;}
 case 140:
-#line 669 "cgrammar.y"
+#line 670 "cgrammar.y"
 {
       context_setProtectVars (); 
       enterParamsTemp (); 
@@ -3657,7 +3580,7 @@ case 140:
     ;
     break;}
 case 141:
-#line 675 "cgrammar.y"
+#line 676 "cgrammar.y"
 { 
       setFunctionStateSpecialClause (yyvsp[-7].tok, yyvsp[-5].sck, yyvsp[-3].srset, yyvsp[-1].tok); 
       exitParamsTemp ();
@@ -3666,7 +3589,7 @@ case 141:
     ;
     break;}
 case 142:
-#line 684 "cgrammar.y"
+#line 685 "cgrammar.y"
 { 
      qtype qint = qtype_create (ctype_int);
      yyval.ntyp = idDecl_fixBase (yyvsp[0].ntyp, qint);
@@ -3674,26 +3597,26 @@ case 142:
    ;
     break;}
 case 143:
-#line 690 "cgrammar.y"
+#line 691 "cgrammar.y"
 { yyval.ntyp = idDecl_fixBase (yyvsp[0].ntyp, yyvsp[-2].qtyp); ;
     break;}
 case 144:
-#line 693 "cgrammar.y"
+#line 694 "cgrammar.y"
 { checkDoneParams (); context_enterInnerContext (); ;
     break;}
 case 145:
-#line 695 "cgrammar.y"
+#line 696 "cgrammar.y"
 {  
      exprNode_checkFunctionBody (yyvsp[0].expr); yyval.expr = yyvsp[0].expr; 
      context_exitInner (yyvsp[0].expr); 
    ;
     break;}
 case 146:
-#line 700 "cgrammar.y"
+#line 701 "cgrammar.y"
 { doneParams (); context_enterInnerContext (); ;
     break;}
 case 147:
-#line 702 "cgrammar.y"
+#line 703 "cgrammar.y"
 {
      context_exitInner (yyvsp[0].expr);
      exprNode_checkFunctionBody (yyvsp[0].expr); 
@@ -3701,7 +3624,7 @@ case 147:
    ;
     break;}
 case 148:
-#line 710 "cgrammar.y"
+#line 711 "cgrammar.y"
 { 
      context_setFunctionDefined (exprNode_loc (yyvsp[0].expr)); 
      exprNode_checkFunction (context_getHeader (), yyvsp[0].expr); 
@@ -3711,111 +3634,111 @@ case 148:
    ;
     break;}
 case 149:
-#line 719 "cgrammar.y"
+#line 720 "cgrammar.y"
 { yyval.srset = yyvsp[-2].srset; ;
     break;}
 case 150:
-#line 720 "cgrammar.y"
+#line 721 "cgrammar.y"
 { yyval.srset = sRefSet_new (); ;
     break;}
 case 151:
-#line 723 "cgrammar.y"
+#line 724 "cgrammar.y"
 { yyval.srset = yyvsp[-1].srset; ;
     break;}
 case 152:
-#line 724 "cgrammar.y"
+#line 725 "cgrammar.y"
 { yyval.srset = sRefSet_new (); ;
     break;}
 case 153:
-#line 727 "cgrammar.y"
+#line 728 "cgrammar.y"
 { yyval.sr = uentry_getSref (yyvsp[0].entry); checkModifiesId (yyvsp[0].entry); ;
     break;}
 case 154:
-#line 728 "cgrammar.y"
+#line 729 "cgrammar.y"
 { yyval.sr = fixModifiesId (yyvsp[0].cname); ;
     break;}
 case 155:
-#line 729 "cgrammar.y"
+#line 730 "cgrammar.y"
 { yyval.sr = modListArrayFetch (yyvsp[-2].sr, sRef_undefined); ;
     break;}
 case 156:
-#line 730 "cgrammar.y"
+#line 731 "cgrammar.y"
 { yyval.sr = modListArrayFetch (yyvsp[-3].sr, yyvsp[-1].sr); ;
     break;}
 case 157:
-#line 731 "cgrammar.y"
+#line 732 "cgrammar.y"
 { yyval.sr = modListPointer (yyvsp[0].sr); ;
     break;}
 case 158:
-#line 732 "cgrammar.y"
+#line 733 "cgrammar.y"
 { yyval.sr = yyvsp[-1].sr; ;
     break;}
 case 159:
-#line 733 "cgrammar.y"
+#line 734 "cgrammar.y"
 { yyval.sr = modListFieldAccess (yyvsp[-2].sr, yyvsp[0].cname); ;
     break;}
 case 160:
-#line 734 "cgrammar.y"
+#line 735 "cgrammar.y"
 { yyval.sr = modListArrowAccess (yyvsp[-2].sr, yyvsp[0].cname); ;
     break;}
 case 161:
-#line 738 "cgrammar.y"
+#line 739 "cgrammar.y"
 { yyval.sr = yyvsp[0].sr; ;
     break;}
 case 162:
-#line 739 "cgrammar.y"
+#line 740 "cgrammar.y"
 { yyval.sr = sRef_makeUnknown (); /* sRef_makeConstant ($1); ? */ ;
     break;}
 case 163:
-#line 743 "cgrammar.y"
+#line 744 "cgrammar.y"
 { yyval.srset = sRefSet_single (yyvsp[0].sr); ;
     break;}
 case 164:
-#line 744 "cgrammar.y"
+#line 745 "cgrammar.y"
 { yyval.srset = sRefSet_insert (yyvsp[-2].srset, yyvsp[0].sr); ;
     break;}
 case 165:
-#line 748 "cgrammar.y"
+#line 749 "cgrammar.y"
 { yyval.sr = checkSpecClausesId (yyvsp[0].entry); ;
     break;}
 case 166:
-#line 750 "cgrammar.y"
+#line 751 "cgrammar.y"
 { yyval.sr = fixSpecClausesId (yyvsp[0].cname); ;
     break;}
 case 167:
-#line 751 "cgrammar.y"
+#line 752 "cgrammar.y"
 { yyval.sr = sRef_makeAnyArrayFetch (yyvsp[-2].sr); ;
     break;}
 case 168:
-#line 752 "cgrammar.y"
+#line 753 "cgrammar.y"
 { yyval.sr = sRef_makeAnyArrayFetch (yyvsp[-3].sr); ;
     break;}
 case 169:
-#line 753 "cgrammar.y"
+#line 754 "cgrammar.y"
 { yyval.sr = sRef_constructPointer (yyvsp[0].sr); ;
     break;}
 case 170:
-#line 754 "cgrammar.y"
+#line 755 "cgrammar.y"
 { yyval.sr = yyvsp[-1].sr; ;
     break;}
 case 171:
-#line 755 "cgrammar.y"
+#line 756 "cgrammar.y"
 { cstring_markOwned (yyvsp[0].cname);
                                            yyval.sr = sRef_buildField (yyvsp[-2].sr, yyvsp[0].cname); ;
     break;}
 case 172:
-#line 757 "cgrammar.y"
+#line 758 "cgrammar.y"
 { cstring_markOwned (yyvsp[0].cname);
                                             yyval.sr = sRef_makeArrow (yyvsp[-2].sr, yyvsp[0].cname); ;
     break;}
 case 173:
-#line 762 "cgrammar.y"
+#line 763 "cgrammar.y"
 { if (sRef_isValid (yyvsp[0].sr)) { yyval.srset = sRefSet_single (yyvsp[0].sr); } 
       else { yyval.srset = sRefSet_undefined; } 
     ;
     break;}
 case 174:
-#line 766 "cgrammar.y"
+#line 767 "cgrammar.y"
 { if (sRef_isValid (yyvsp[0].sr))
        {
          yyval.srset = sRefSet_insert (yyvsp[-2].srset, yyvsp[0].sr); 
@@ -3827,849 +3750,849 @@ case 174:
     ;
     break;}
 case 175:
-#line 777 "cgrammar.y"
+#line 778 "cgrammar.y"
 { yyval.expr = exprNode_fromIdentifier (yyvsp[0].entry); ;
     break;}
 case 176:
-#line 778 "cgrammar.y"
+#line 779 "cgrammar.y"
 { yyval.expr = exprNode_fromUIO (yyvsp[0].cname); ;
     break;}
 case 177:
-#line 779 "cgrammar.y"
+#line 780 "cgrammar.y"
 { yyval.expr = yyvsp[0].expr; ;
     break;}
 case 178:
-#line 780 "cgrammar.y"
+#line 781 "cgrammar.y"
 { yyval.expr = exprNode_addParens (yyvsp[-2].tok, yyvsp[-1].expr); ;
     break;}
 case 179:
-#line 781 "cgrammar.y"
+#line 782 "cgrammar.y"
 { yyval.expr = exprNode_fromIdentifier (coerceId (yyvsp[0].cname)); ;
     break;}
 case 180:
-#line 782 "cgrammar.y"
+#line 783 "cgrammar.y"
 { yyval.expr = exprNode_makeError (); ;
     break;}
 case 182:
-#line 786 "cgrammar.y"
+#line 787 "cgrammar.y"
 { yyval.expr = exprNode_arrayFetch (yyvsp[-3].expr, yyvsp[-1].expr); ;
     break;}
 case 183:
-#line 787 "cgrammar.y"
+#line 788 "cgrammar.y"
 { yyval.expr = exprNode_functionCall (yyvsp[-2].expr, exprNodeList_new ()); ;
     break;}
 case 184:
-#line 788 "cgrammar.y"
+#line 789 "cgrammar.y"
 { yyval.expr = exprNode_functionCall (yyvsp[-3].expr, yyvsp[-1].alist); ;
     break;}
 case 185:
-#line 789 "cgrammar.y"
+#line 790 "cgrammar.y"
 { yyval.expr = exprNode_vaArg (yyvsp[-5].tok, yyvsp[-3].expr, yyvsp[-1].qtyp); ;
     break;}
 case 186:
-#line 790 "cgrammar.y"
+#line 791 "cgrammar.y"
 { yyval.expr = exprNode_fieldAccess (yyvsp[-4].expr, yyvsp[-1].cname); ;
     break;}
 case 187:
-#line 791 "cgrammar.y"
+#line 792 "cgrammar.y"
 { yyval.expr = exprNode_arrowAccess (yyvsp[-4].expr, yyvsp[-1].cname); ;
     break;}
 case 188:
-#line 792 "cgrammar.y"
+#line 793 "cgrammar.y"
 { yyval.expr = exprNode_postOp (yyvsp[-1].expr, yyvsp[0].tok); ;
     break;}
 case 189:
-#line 793 "cgrammar.y"
+#line 794 "cgrammar.y"
 { yyval.expr = exprNode_postOp (yyvsp[-1].expr, yyvsp[0].tok); ;
     break;}
 case 190:
-#line 796 "cgrammar.y"
+#line 797 "cgrammar.y"
 { yyval.alist = exprNodeList_singleton (yyvsp[0].expr); ;
     break;}
 case 191:
-#line 797 "cgrammar.y"
+#line 798 "cgrammar.y"
 { yyval.alist = exprNodeList_push (yyvsp[-2].alist, yyvsp[0].expr); ;
     break;}
 case 193:
-#line 801 "cgrammar.y"
+#line 802 "cgrammar.y"
 { yyval.expr = exprNode_preOp (yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 194:
-#line 802 "cgrammar.y"
+#line 803 "cgrammar.y"
 { yyval.expr = exprNode_preOp (yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 195:
-#line 803 "cgrammar.y"
+#line 804 "cgrammar.y"
 { yyval.expr = exprNode_preOp (yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 196:
-#line 804 "cgrammar.y"
+#line 805 "cgrammar.y"
 { yyval.expr = exprNode_preOp (yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 197:
-#line 805 "cgrammar.y"
+#line 806 "cgrammar.y"
 { yyval.expr = exprNode_preOp (yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 198:
-#line 806 "cgrammar.y"
+#line 807 "cgrammar.y"
 { yyval.expr = exprNode_preOp (yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 199:
-#line 807 "cgrammar.y"
+#line 808 "cgrammar.y"
 { yyval.expr = exprNode_preOp (yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 200:
-#line 808 "cgrammar.y"
+#line 809 "cgrammar.y"
 { yyval.expr = exprNode_preOp (yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 201:
-#line 809 "cgrammar.y"
+#line 810 "cgrammar.y"
 { yyval.expr = yyvsp[0].expr; ;
     break;}
 case 202:
-#line 810 "cgrammar.y"
+#line 811 "cgrammar.y"
 { yyval.expr = yyvsp[0].expr; ;
     break;}
 case 203:
-#line 813 "cgrammar.y"
+#line 814 "cgrammar.y"
 { yyval.cstringlist = cstringList_add (yyvsp[-2].cstringlist, yyvsp[0].cname); ;
     break;}
 case 204:
-#line 814 "cgrammar.y"
+#line 815 "cgrammar.y"
 { yyval.cstringlist = cstringList_single (yyvsp[0].cname); ;
     break;}
 case 205:
-#line 818 "cgrammar.y"
+#line 819 "cgrammar.y"
 { yyval.expr = exprNode_offsetof (yyvsp[-5].qtyp, yyvsp[-2].cstringlist); ;
     break;}
 case 206:
-#line 821 "cgrammar.y"
+#line 822 "cgrammar.y"
 { context_setProtectVars (); ;
     break;}
 case 207:
-#line 822 "cgrammar.y"
+#line 823 "cgrammar.y"
 { context_sizeofReleaseVars (); yyval.expr = yyvsp[0].expr; ;
     break;}
 case 208:
-#line 825 "cgrammar.y"
+#line 826 "cgrammar.y"
 { yyval.expr = exprNode_sizeofType (yyvsp[-1].qtyp); ;
     break;}
 case 209:
-#line 826 "cgrammar.y"
+#line 827 "cgrammar.y"
 { yyval.expr = exprNode_sizeofExpr (yyvsp[0].expr); ;
     break;}
 case 210:
-#line 827 "cgrammar.y"
+#line 828 "cgrammar.y"
 { yyval.expr = exprNode_alignofType (yyvsp[-1].qtyp); ;
     break;}
 case 211:
-#line 828 "cgrammar.y"
+#line 829 "cgrammar.y"
 { yyval.expr = exprNode_alignofExpr (yyvsp[0].expr); ;
     break;}
 case 213:
-#line 833 "cgrammar.y"
+#line 834 "cgrammar.y"
 { yyval.expr = exprNode_cast (yyvsp[-3].tok, yyvsp[0].expr, yyvsp[-2].qtyp); ;
     break;}
 case 215:
-#line 837 "cgrammar.y"
+#line 838 "cgrammar.y"
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 216:
-#line 838 "cgrammar.y"
+#line 839 "cgrammar.y"
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 217:
-#line 839 "cgrammar.y"
+#line 840 "cgrammar.y"
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 219:
-#line 843 "cgrammar.y"
+#line 844 "cgrammar.y"
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 220:
-#line 844 "cgrammar.y"
+#line 845 "cgrammar.y"
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 222:
-#line 848 "cgrammar.y"
+#line 849 "cgrammar.y"
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 223:
-#line 849 "cgrammar.y"
+#line 850 "cgrammar.y"
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 225:
-#line 853 "cgrammar.y"
+#line 854 "cgrammar.y"
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 226:
-#line 854 "cgrammar.y"
+#line 855 "cgrammar.y"
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 227:
-#line 855 "cgrammar.y"
+#line 856 "cgrammar.y"
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 228:
-#line 856 "cgrammar.y"
+#line 857 "cgrammar.y"
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 230:
-#line 860 "cgrammar.y"
+#line 861 "cgrammar.y"
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 231:
-#line 861 "cgrammar.y"
+#line 862 "cgrammar.y"
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 233:
-#line 865 "cgrammar.y"
+#line 866 "cgrammar.y"
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 235:
-#line 869 "cgrammar.y"
+#line 870 "cgrammar.y"
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 237:
-#line 874 "cgrammar.y"
+#line 875 "cgrammar.y"
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 239:
-#line 879 "cgrammar.y"
+#line 880 "cgrammar.y"
 { exprNode_produceGuards (yyvsp[-1].expr); 
      context_enterAndClause (yyvsp[-1].expr); 
    ;
     break;}
 case 240:
-#line 883 "cgrammar.y"
+#line 884 "cgrammar.y"
 { 
      yyval.expr = exprNode_op (yyvsp[-3].expr, yyvsp[0].expr, yyvsp[-2].tok); 
      context_exitAndClause (yyval.expr, yyvsp[0].expr);
    ;
     break;}
 case 242:
-#line 891 "cgrammar.y"
+#line 892 "cgrammar.y"
 { 
      exprNode_produceGuards (yyvsp[-1].expr);
      context_enterOrClause (yyvsp[-1].expr); 
    ;
     break;}
 case 243:
-#line 896 "cgrammar.y"
+#line 897 "cgrammar.y"
 { 
      yyval.expr = exprNode_op (yyvsp[-3].expr, yyvsp[0].expr, yyvsp[-2].tok); 
      context_exitOrClause (yyval.expr, yyvsp[0].expr);
    ;
     break;}
 case 245:
-#line 903 "cgrammar.y"
+#line 904 "cgrammar.y"
 { exprNode_produceGuards (yyvsp[-1].expr); context_enterTrueClause (yyvsp[-1].expr); ;
     break;}
 case 246:
-#line 904 "cgrammar.y"
+#line 905 "cgrammar.y"
 { context_enterFalseClause (yyvsp[-4].expr); ;
     break;}
 case 247:
-#line 905 "cgrammar.y"
+#line 906 "cgrammar.y"
 { yyval.expr = exprNode_cond (yyvsp[-6].expr, yyvsp[-3].expr, yyvsp[0].expr); context_exitClause (yyvsp[-6].expr, yyvsp[-3].expr, yyvsp[0].expr); ;
     break;}
 case 249:
-#line 909 "cgrammar.y"
+#line 910 "cgrammar.y"
 { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 250:
-#line 910 "cgrammar.y"
+#line 911 "cgrammar.y"
 { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 251:
-#line 911 "cgrammar.y"
+#line 912 "cgrammar.y"
 { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 252:
-#line 912 "cgrammar.y"
+#line 913 "cgrammar.y"
 { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 253:
-#line 913 "cgrammar.y"
+#line 914 "cgrammar.y"
 { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 254:
-#line 914 "cgrammar.y"
+#line 915 "cgrammar.y"
 { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 255:
-#line 915 "cgrammar.y"
+#line 916 "cgrammar.y"
 { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 256:
-#line 916 "cgrammar.y"
+#line 917 "cgrammar.y"
 { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 257:
-#line 917 "cgrammar.y"
+#line 918 "cgrammar.y"
 { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 258:
-#line 918 "cgrammar.y"
+#line 919 "cgrammar.y"
 { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 259:
-#line 919 "cgrammar.y"
+#line 920 "cgrammar.y"
 { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 261:
-#line 923 "cgrammar.y"
+#line 924 "cgrammar.y"
 { yyval.expr = exprNode_comma (yyvsp[-2].expr, yyvsp[0].expr); ;
     break;}
 case 262:
-#line 926 "cgrammar.y"
+#line 927 "cgrammar.y"
 { yyval.expr = exprNode_undefined; ;
     break;}
 case 265:
-#line 935 "cgrammar.y"
+#line 936 "cgrammar.y"
 { yyval.expr = yyvsp[0].expr; ;
     break;}
 case 266:
-#line 936 "cgrammar.y"
+#line 937 "cgrammar.y"
 { doVaDcl (); yyval.expr = exprNode_makeError (); ;
     break;}
 case 267:
-#line 937 "cgrammar.y"
+#line 938 "cgrammar.y"
 { yyval.expr = exprNode_makeError (); ;
     break;}
 case 268:
-#line 940 "cgrammar.y"
+#line 941 "cgrammar.y"
 { yyval.expr = exprNode_makeError (); ;
     break;}
 case 269:
-#line 954 "cgrammar.y"
+#line 955 "cgrammar.y"
 {
                setProcessingVars (yyvsp[-3].qtyp); 
      processNamedDecl (yyvsp[-1].ntyp); ;
     break;}
 case 270:
-#line 957 "cgrammar.y"
+#line 958 "cgrammar.y"
 { unsetProcessingVars (); yyval.expr = yyvsp[-2].expr; ;
     break;}
 case 271:
-#line 959 "cgrammar.y"
+#line 960 "cgrammar.y"
 { setProcessingVars (yyvsp[-4].qtyp); processNamedDecl (yyvsp[-2].ntyp); 
         ;
     break;}
 case 272:
-#line 962 "cgrammar.y"
+#line 963 "cgrammar.y"
 { yyval.expr = exprNode_concat (yyvsp[-2].expr, exprNode_makeInitialization (yyvsp[-8].ntyp, yyvsp[-3].expr)); 
      unsetProcessingVars ();
    ;
     break;}
 case 273:
-#line 966 "cgrammar.y"
+#line 967 "cgrammar.y"
 { processNamedDecl (yyvsp[-1].ntyp); yyval.expr = exprNode_makeError (); ;
     break;}
 case 274:
-#line 967 "cgrammar.y"
+#line 968 "cgrammar.y"
 { processNamedDecl (yyvsp[-2].ntyp); ;
     break;}
 case 275:
-#line 968 "cgrammar.y"
+#line 969 "cgrammar.y"
 { yyval.expr = exprNode_makeInitialization (yyvsp[-5].ntyp, yyvsp[0].expr); ;
     break;}
 case 276:
-#line 972 "cgrammar.y"
+#line 973 "cgrammar.y"
 { setProcessingTypedef (yyvsp[0].qtyp); ;
     break;}
 case 277:
-#line 973 "cgrammar.y"
+#line 974 "cgrammar.y"
 { unsetProcessingTypedef (); ;
     break;}
 case 278:
-#line 974 "cgrammar.y"
+#line 975 "cgrammar.y"
 { /* in the ANSI grammar, semantics unclear */ ;
     break;}
 case 279:
-#line 975 "cgrammar.y"
+#line 976 "cgrammar.y"
 { /* in the ANSI grammar, semantics unclear */ ;
     break;}
 case 280:
-#line 978 "cgrammar.y"
+#line 979 "cgrammar.y"
 { g_expectingTypeName = TRUE; ;
     break;}
 case 281:
-#line 981 "cgrammar.y"
+#line 982 "cgrammar.y"
 { g_expectingTypeName = TRUE; context_pushLoc (); ;
     break;}
 case 282:
-#line 984 "cgrammar.y"
+#line 985 "cgrammar.y"
 { ; ;
     break;}
 case 283:
-#line 987 "cgrammar.y"
+#line 988 "cgrammar.y"
 { ; ;
     break;}
 case 284:
-#line 988 "cgrammar.y"
+#line 989 "cgrammar.y"
 { ; ;
     break;}
 case 285:
-#line 991 "cgrammar.y"
+#line 992 "cgrammar.y"
 { yyval.expr = exprNode_makeError (); ;
     break;}
 case 286:
-#line 992 "cgrammar.y"
+#line 993 "cgrammar.y"
 { yyval.expr = exprNode_concat (yyvsp[-3].expr, yyvsp[0].expr); ;
     break;}
 case 287:
-#line 995 "cgrammar.y"
+#line 996 "cgrammar.y"
 { yyval.expr = yyvsp[0].expr; ;
     break;}
 case 288:
-#line 996 "cgrammar.y"
+#line 997 "cgrammar.y"
 { yyval.expr = exprNode_makeInitBlock (yyvsp[-2].tok, yyvsp[-1].alist); ;
     break;}
 case 289:
-#line 997 "cgrammar.y"
+#line 998 "cgrammar.y"
 { yyval.expr = exprNode_makeInitBlock (yyvsp[-3].tok, yyvsp[-2].alist); ;
     break;}
 case 290:
-#line 1002 "cgrammar.y"
+#line 1003 "cgrammar.y"
 { yyval.alist = exprNodeList_singleton (yyvsp[0].expr); ;
     break;}
 case 291:
-#line 1004 "cgrammar.y"
+#line 1005 "cgrammar.y"
 { yyval.alist = exprNodeList_push (yyvsp[-2].alist, yyvsp[0].expr); ;
     break;}
 case 292:
-#line 1012 "cgrammar.y"
+#line 1013 "cgrammar.y"
 { setStorageClass (SCEXTERN); yyval.typequal = qual_createExtern (); ;
     break;}
 case 293:
-#line 1013 "cgrammar.y"
+#line 1014 "cgrammar.y"
 { yyval.typequal = qual_createInline (); ;
     break;}
 case 294:
-#line 1014 "cgrammar.y"
+#line 1015 "cgrammar.y"
 { setStorageClass (SCSTATIC); yyval.typequal = qual_createStatic (); ;
     break;}
 case 295:
-#line 1015 "cgrammar.y"
+#line 1016 "cgrammar.y"
 { yyval.typequal = qual_createAuto (); ;
     break;}
 case 296:
-#line 1016 "cgrammar.y"
+#line 1017 "cgrammar.y"
 { yyval.typequal = qual_createRegister (); ;
     break;}
 case 297:
-#line 1019 "cgrammar.y"
+#line 1020 "cgrammar.y"
 { yyval.typequal = qual_createConst (); ;
     break;}
 case 298:
-#line 1020 "cgrammar.y"
+#line 1021 "cgrammar.y"
 { yyval.typequal = qual_createVolatile (); ;
     break;}
 case 299:
-#line 1021 "cgrammar.y"
+#line 1022 "cgrammar.y"
 { yyval.typequal = qual_createOut (); ;
     break;}
 case 300:
-#line 1022 "cgrammar.y"
+#line 1023 "cgrammar.y"
 { yyval.typequal = qual_createIn (); ;
     break;}
 case 301:
-#line 1023 "cgrammar.y"
+#line 1024 "cgrammar.y"
 { yyval.typequal = qual_createPartial (); ;
     break;}
 case 302:
-#line 1024 "cgrammar.y"
+#line 1025 "cgrammar.y"
 { yyval.typequal = qual_createSpecial (); ;
     break;}
 case 303:
-#line 1025 "cgrammar.y"
+#line 1026 "cgrammar.y"
 { yyval.typequal = qual_createOwned (); ;
     break;}
 case 304:
-#line 1026 "cgrammar.y"
+#line 1027 "cgrammar.y"
 { yyval.typequal = qual_createDependent (); ;
     break;}
 case 305:
-#line 1027 "cgrammar.y"
+#line 1028 "cgrammar.y"
 { yyval.typequal = qual_createYield (); ;
     break;}
 case 306:
-#line 1028 "cgrammar.y"
+#line 1029 "cgrammar.y"
 { yyval.typequal = qual_createTemp (); ;
     break;}
 case 307:
-#line 1029 "cgrammar.y"
+#line 1030 "cgrammar.y"
 { yyval.typequal = qual_createOnly (); ;
     break;}
 case 308:
-#line 1030 "cgrammar.y"
+#line 1031 "cgrammar.y"
 { yyval.typequal = qual_createKeep (); ;
     break;}
 case 309:
-#line 1031 "cgrammar.y"
+#line 1032 "cgrammar.y"
 { yyval.typequal = qual_createKept (); ;
     break;}
 case 310:
-#line 1032 "cgrammar.y"
+#line 1033 "cgrammar.y"
 { yyval.typequal = qual_createShared (); ;
     break;}
 case 311:
-#line 1033 "cgrammar.y"
+#line 1034 "cgrammar.y"
 { yyval.typequal = qual_createUnique (); ;
     break;}
 case 312:
-#line 1034 "cgrammar.y"
+#line 1035 "cgrammar.y"
 { yyval.typequal = qual_createExits (); ;
     break;}
 case 313:
-#line 1035 "cgrammar.y"
+#line 1036 "cgrammar.y"
 { yyval.typequal = qual_createMayExit (); ;
     break;}
 case 314:
-#line 1036 "cgrammar.y"
+#line 1037 "cgrammar.y"
 { yyval.typequal = qual_createTrueExit (); ;
     break;}
 case 315:
-#line 1037 "cgrammar.y"
+#line 1038 "cgrammar.y"
 { yyval.typequal = qual_createFalseExit (); ;
     break;}
 case 316:
-#line 1038 "cgrammar.y"
+#line 1039 "cgrammar.y"
 { yyval.typequal = qual_createNeverExit (); ;
     break;}
 case 317:
-#line 1039 "cgrammar.y"
+#line 1040 "cgrammar.y"
 { yyval.typequal = qual_createNull (); ;
     break;}
 case 318:
-#line 1040 "cgrammar.y"
+#line 1041 "cgrammar.y"
 { yyval.typequal = qual_createRelNull (); ;
     break;}
 case 319:
-#line 1041 "cgrammar.y"
+#line 1042 "cgrammar.y"
 { yyval.typequal = qual_createReturned (); ;
     break;}
 case 320:
-#line 1042 "cgrammar.y"
+#line 1043 "cgrammar.y"
 { yyval.typequal = qual_createExposed (); ;
     break;}
 case 321:
-#line 1043 "cgrammar.y"
+#line 1044 "cgrammar.y"
 { yyval.typequal = qual_createObserver (); ;
     break;}
 case 322:
-#line 1044 "cgrammar.y"
+#line 1045 "cgrammar.y"
 { yyval.typequal = qual_createChecked (); ;
     break;}
 case 323:
-#line 1045 "cgrammar.y"
+#line 1046 "cgrammar.y"
 { yyval.typequal = qual_createCheckMod (); ;
     break;}
 case 324:
-#line 1046 "cgrammar.y"
+#line 1047 "cgrammar.y"
 { yyval.typequal = qual_createUnchecked (); ;
     break;}
 case 325:
-#line 1047 "cgrammar.y"
+#line 1048 "cgrammar.y"
 { yyval.typequal = qual_createCheckedStrict (); ;
     break;}
 case 326:
-#line 1048 "cgrammar.y"
+#line 1049 "cgrammar.y"
 { yyval.typequal = qual_createTrueNull (); ;
     break;}
 case 327:
-#line 1049 "cgrammar.y"
+#line 1050 "cgrammar.y"
 { yyval.typequal = qual_createFalseNull (); ;
     break;}
 case 328:
-#line 1050 "cgrammar.y"
+#line 1051 "cgrammar.y"
 { yyval.typequal = qual_createUnused (); ;
     break;}
 case 329:
-#line 1051 "cgrammar.y"
+#line 1052 "cgrammar.y"
 { yyval.typequal = qual_createExternal (); ;
     break;}
 case 330:
-#line 1052 "cgrammar.y"
+#line 1053 "cgrammar.y"
 { yyval.typequal = qual_createSef (); ;
     break;}
 case 331:
-#line 1053 "cgrammar.y"
+#line 1054 "cgrammar.y"
 { yyval.typequal = qual_createAbstract (); ;
     break;}
 case 332:
-#line 1054 "cgrammar.y"
+#line 1055 "cgrammar.y"
 { yyval.typequal = qual_createConcrete (); ;
     break;}
 case 333:
-#line 1055 "cgrammar.y"
+#line 1056 "cgrammar.y"
 { yyval.typequal = qual_createMutable (); ;
     break;}
 case 334:
-#line 1056 "cgrammar.y"
+#line 1057 "cgrammar.y"
 { yyval.typequal = qual_createImmutable (); ;
     break;}
 case 335:
-#line 1057 "cgrammar.y"
+#line 1058 "cgrammar.y"
 { yyval.typequal = qual_createNotNull (); ;
     break;}
 case 336:
-#line 1058 "cgrammar.y"
+#line 1059 "cgrammar.y"
 { yyval.typequal = qual_createRefCounted (); ;
     break;}
 case 337:
-#line 1059 "cgrammar.y"
+#line 1060 "cgrammar.y"
 { yyval.typequal = qual_createRefs (); ;
     break;}
 case 338:
-#line 1060 "cgrammar.y"
+#line 1061 "cgrammar.y"
 { yyval.typequal = qual_createKillRef (); ;
     break;}
 case 339:
-#line 1061 "cgrammar.y"
+#line 1062 "cgrammar.y"
 { yyval.typequal = qual_createRelDef (); ;
     break;}
 case 340:
-#line 1062 "cgrammar.y"
+#line 1063 "cgrammar.y"
 { yyval.typequal = qual_createNewRef (); ;
     break;}
 case 341:
-#line 1063 "cgrammar.y"
+#line 1064 "cgrammar.y"
 { yyval.typequal = qual_createTempRef (); ;
     break;}
 case 342:
-#line 1064 "cgrammar.y"
+#line 1065 "cgrammar.y"
 { yyval.typequal = qual_createNullTerminated (); ;
     break;}
 case 343:
-#line 1070 "cgrammar.y"
+#line 1071 "cgrammar.y"
 { yyval.typequal = qual_createShort (); ;
     break;}
 case 344:
-#line 1071 "cgrammar.y"
+#line 1072 "cgrammar.y"
 { yyval.typequal = qual_createLong (); ;
     break;}
 case 345:
-#line 1072 "cgrammar.y"
+#line 1073 "cgrammar.y"
 { yyval.typequal = qual_createSigned (); ;
     break;}
 case 346:
-#line 1073 "cgrammar.y"
+#line 1074 "cgrammar.y"
 { yyval.typequal = qual_createUnsigned (); ;
     break;}
 case 353:
-#line 1082 "cgrammar.y"
+#line 1083 "cgrammar.y"
 { yyval.ctyp = ctype_unknown; ;
     break;}
 case 354:
-#line 1083 "cgrammar.y"
+#line 1084 "cgrammar.y"
 { yyval.ctyp = ctype_anyintegral; ;
     break;}
 case 355:
-#line 1084 "cgrammar.y"
+#line 1085 "cgrammar.y"
 { yyval.ctyp = ctype_unsignedintegral; ;
     break;}
 case 356:
-#line 1085 "cgrammar.y"
+#line 1086 "cgrammar.y"
 { yyval.ctyp = ctype_signedintegral; ;
     break;}
 case 360:
-#line 1089 "cgrammar.y"
+#line 1090 "cgrammar.y"
 { yyval.ctyp = ctype_fromQual (yyvsp[-1].typequal); ;
     break;}
 case 361:
-#line 1093 "cgrammar.y"
+#line 1094 "cgrammar.y"
 { yyval.qtyp = qtype_resolve (yyvsp[-1].qtyp); ;
     break;}
 case 362:
-#line 1096 "cgrammar.y"
+#line 1097 "cgrammar.y"
 { yyval.qtyp = yyvsp[0].qtyp; ;
     break;}
 case 363:
-#line 1098 "cgrammar.y"
+#line 1099 "cgrammar.y"
 { yyval.qtyp = qtype_mergeAlt (yyvsp[-3].qtyp, yyvsp[-1].qtyp); ;
     break;}
 case 365:
-#line 1103 "cgrammar.y"
+#line 1104 "cgrammar.y"
 { yyval.qtyp = qtype_mergeAlt (yyvsp[-2].qtyp, yyvsp[0].qtyp); ;
     break;}
 case 366:
-#line 1106 "cgrammar.y"
+#line 1107 "cgrammar.y"
 { yyval.qtyp = qtype_addQual (yyvsp[0].qtyp, yyvsp[-1].typequal); ;
     break;}
 case 367:
-#line 1107 "cgrammar.y"
+#line 1108 "cgrammar.y"
 { yyval.qtyp = qtype_addQual (yyvsp[0].qtyp, yyvsp[-1].typequal); ;
     break;}
 case 368:
-#line 1108 "cgrammar.y"
+#line 1109 "cgrammar.y"
 { yyval.qtyp = qtype_combine (yyvsp[0].qtyp, yyvsp[-1].ctyp); ;
     break;}
 case 369:
-#line 1111 "cgrammar.y"
+#line 1112 "cgrammar.y"
 { yyval.qtyp = qtype_unknown (); ;
     break;}
 case 370:
-#line 1112 "cgrammar.y"
+#line 1113 "cgrammar.y"
 { yyval.qtyp = yyvsp[0].qtyp; ;
     break;}
 case 371:
-#line 1115 "cgrammar.y"
+#line 1116 "cgrammar.y"
 { sRef_setGlobalScopeSafe (); ;
     break;}
 case 372:
-#line 1117 "cgrammar.y"
+#line 1118 "cgrammar.y"
 { sRef_clearGlobalScopeSafe (); ;
     break;}
 case 373:
-#line 1119 "cgrammar.y"
+#line 1120 "cgrammar.y"
 { yyval.ctyp = declareStruct (yyvsp[-8].cname, yyvsp[-3].flist); ;
     break;}
 case 374:
-#line 1120 "cgrammar.y"
+#line 1121 "cgrammar.y"
 { sRef_setGlobalScopeSafe (); ;
     break;}
 case 375:
-#line 1122 "cgrammar.y"
+#line 1123 "cgrammar.y"
 { sRef_clearGlobalScopeSafe (); ;
     break;}
 case 376:
-#line 1124 "cgrammar.y"
+#line 1125 "cgrammar.y"
 { yyval.ctyp = declareUnion (yyvsp[-8].cname, yyvsp[-3].flist); ;
     break;}
 case 377:
-#line 1126 "cgrammar.y"
+#line 1127 "cgrammar.y"
 { yyval.ctyp = declareStruct (yyvsp[-3].cname, uentryList_new ()); ;
     break;}
 case 378:
-#line 1128 "cgrammar.y"
+#line 1129 "cgrammar.y"
 { yyval.ctyp = declareUnion (yyvsp[-3].cname, uentryList_new ()); ;
     break;}
 case 379:
-#line 1129 "cgrammar.y"
+#line 1130 "cgrammar.y"
 { sRef_setGlobalScopeSafe (); ;
     break;}
 case 380:
-#line 1131 "cgrammar.y"
+#line 1132 "cgrammar.y"
 { sRef_clearGlobalScopeSafe (); ;
     break;}
 case 381:
-#line 1133 "cgrammar.y"
+#line 1134 "cgrammar.y"
 { yyval.ctyp = declareUnnamedStruct (yyvsp[-3].flist); ;
     break;}
 case 382:
-#line 1134 "cgrammar.y"
+#line 1135 "cgrammar.y"
 { sRef_setGlobalScopeSafe (); ;
     break;}
 case 383:
-#line 1136 "cgrammar.y"
+#line 1137 "cgrammar.y"
 { sRef_clearGlobalScopeSafe (); ;
     break;}
 case 384:
-#line 1138 "cgrammar.y"
+#line 1139 "cgrammar.y"
 { yyval.ctyp = declareUnnamedUnion (yyvsp[-3].flist); ;
     break;}
 case 385:
-#line 1140 "cgrammar.y"
+#line 1141 "cgrammar.y"
 { yyval.ctyp = ctype_createUnnamedStruct (uentryList_new ()); ;
     break;}
 case 386:
-#line 1142 "cgrammar.y"
+#line 1143 "cgrammar.y"
 { yyval.ctyp = ctype_createUnnamedUnion (uentryList_new ()); ;
     break;}
 case 387:
-#line 1143 "cgrammar.y"
+#line 1144 "cgrammar.y"
 { yyval.ctyp = handleStruct (yyvsp[-1].cname); ;
     break;}
 case 388:
-#line 1144 "cgrammar.y"
+#line 1145 "cgrammar.y"
 { yyval.ctyp = handleUnion (yyvsp[-1].cname); ;
     break;}
 case 389:
-#line 1147 "cgrammar.y"
+#line 1148 "cgrammar.y"
 { g_expectingTypeName = FALSE; ;
     break;}
 case 391:
-#line 1151 "cgrammar.y"
+#line 1152 "cgrammar.y"
 { yyval.flist = uentryList_undefined; /* bogus! */ ;
     break;}
 case 392:
-#line 1152 "cgrammar.y"
+#line 1153 "cgrammar.y"
 { yyval.flist = uentryList_mergeFields (yyvsp[-1].flist, yyvsp[0].flist); ;
     break;}
 case 393:
-#line 1156 "cgrammar.y"
+#line 1157 "cgrammar.y"
 { yyval.flist = fixUentryList (yyvsp[-2].ntyplist, yyvsp[-4].qtyp); ;
     break;}
 case 394:
-#line 1158 "cgrammar.y"
+#line 1159 "cgrammar.y"
 { yyval.flist = fixUnnamedDecl (yyvsp[-2].qtyp); ;
     break;}
 case 395:
-#line 1162 "cgrammar.y"
+#line 1163 "cgrammar.y"
 { yyval.ntyplist = idDeclList_singleton (yyvsp[-1].ntyp); ;
     break;}
 case 396:
-#line 1164 "cgrammar.y"
+#line 1165 "cgrammar.y"
 { yyval.ntyplist = idDeclList_add (yyvsp[-3].ntyplist, yyvsp[-1].ntyp); ;
     break;}
 case 397:
-#line 1167 "cgrammar.y"
+#line 1168 "cgrammar.y"
 { yyval.ntyp = yyvsp[0].ntyp; ;
     break;}
 case 398:
-#line 1168 "cgrammar.y"
+#line 1169 "cgrammar.y"
 { yyval.ntyp = idDecl_undefined; ;
     break;}
 case 399:
-#line 1169 "cgrammar.y"
+#line 1170 "cgrammar.y"
 { yyval.ntyp = yyvsp[-3].ntyp; ;
     break;}
 case 400:
-#line 1174 "cgrammar.y"
+#line 1175 "cgrammar.y"
 { yyval.ctyp = declareUnnamedEnum (yyvsp[-2].enumnamelist); ;
     break;}
 case 401:
-#line 1175 "cgrammar.y"
+#line 1176 "cgrammar.y"
 { context_pushLoc (); ;
     break;}
 case 402:
-#line 1176 "cgrammar.y"
+#line 1177 "cgrammar.y"
 { context_popLoc (); yyval.ctyp = declareEnum (yyvsp[-5].cname, yyvsp[-2].enumnamelist); ;
     break;}
 case 403:
-#line 1177 "cgrammar.y"
+#line 1178 "cgrammar.y"
 { yyval.ctyp = handleEnum (yyvsp[-1].cname); ;
     break;}
 case 404:
-#line 1181 "cgrammar.y"
+#line 1182 "cgrammar.y"
 { yyval.enumnamelist = enumNameList_single (yyvsp[0].cname); ;
     break;}
 case 405:
-#line 1183 "cgrammar.y"
+#line 1184 "cgrammar.y"
 { yyval.enumnamelist = enumNameList_push (yyvsp[-2].enumnamelist, yyvsp[0].cname); ;
     break;}
 case 407:
-#line 1188 "cgrammar.y"
+#line 1189 "cgrammar.y"
 { uentry ue = uentry_makeEnumConstant (yyvsp[0].cname, ctype_unknown);
      usymtab_supGlobalEntry (ue);
      yyval.cname = yyvsp[0].cname;
    ;
     break;}
 case 408:
-#line 1193 "cgrammar.y"
+#line 1194 "cgrammar.y"
 { uentry ue = uentry_makeEnumInitializedConstant (yyvsp[-3].cname, ctype_unknown, yyvsp[0].expr);
      usymtab_supGlobalEntry (ue);
      yyval.cname = yyvsp[-3].cname; 
    ;
     break;}
 case 410:
-#line 1200 "cgrammar.y"
+#line 1201 "cgrammar.y"
 { yyval.ntyp = idDecl_create (cstring_undefined, qtype_create (yyvsp[0].ctyp)); ;
     break;}
 case 411:
-#line 1202 "cgrammar.y"
+#line 1203 "cgrammar.y"
 { 
      qtype qt = qtype_unknown ();
 
@@ -4678,91 +4601,91 @@ case 411:
    ;
     break;}
 case 412:
-#line 1209 "cgrammar.y"
+#line 1210 "cgrammar.y"
 { yyval.ntyp = yyvsp[0].ntyp; qtype_adjustPointers (yyvsp[-1].count, idDecl_getTyp (yyval.ntyp)); ;
     break;}
 case 414:
-#line 1214 "cgrammar.y"
+#line 1215 "cgrammar.y"
 { yyval.ntyp = yyvsp[0].ntyp; qtype_adjustPointers (yyvsp[-1].count, idDecl_getTyp (yyval.ntyp)); ;
     break;}
 case 415:
-#line 1217 "cgrammar.y"
+#line 1218 "cgrammar.y"
 { yyval.entrylist = handleParamTypeList (yyvsp[0].entrylist); ;
     break;}
 case 416:
-#line 1218 "cgrammar.y"
+#line 1219 "cgrammar.y"
 { yyval.entrylist = handleParamIdList (yyvsp[0].entrylist); ;
     break;}
 case 417:
-#line 1221 "cgrammar.y"
+#line 1222 "cgrammar.y"
 { /* ignored for now */; ;
     break;}
 case 418:
-#line 1222 "cgrammar.y"
+#line 1223 "cgrammar.y"
 { ; ;
     break;}
 case 419:
-#line 1225 "cgrammar.y"
+#line 1226 "cgrammar.y"
 { ; ;
     break;}
 case 420:
-#line 1226 "cgrammar.y"
+#line 1227 "cgrammar.y"
 { ; ;
     break;}
 case 421:
-#line 1229 "cgrammar.y"
+#line 1230 "cgrammar.y"
 { yyval.count = 1; ;
     break;}
 case 422:
-#line 1230 "cgrammar.y"
+#line 1231 "cgrammar.y"
 { yyval.count = 1; ;
     break;}
 case 423:
-#line 1231 "cgrammar.y"
+#line 1232 "cgrammar.y"
 { yyval.count = 1 + yyvsp[0].count; ;
     break;}
 case 424:
-#line 1232 "cgrammar.y"
+#line 1233 "cgrammar.y"
 { yyval.count = 1 + yyvsp[0].count; ;
     break;}
 case 426:
-#line 1236 "cgrammar.y"
+#line 1237 "cgrammar.y"
 { yyval.entrylist = uentryList_add (yyvsp[-2].entrylist, uentry_makeElipsisMarker ()); ;
     break;}
 case 427:
-#line 1239 "cgrammar.y"
+#line 1240 "cgrammar.y"
 { yyval.entrylist = uentryList_single (uentry_makeVariableLoc (yyvsp[0].cname, ctype_int)); ;
     break;}
 case 428:
-#line 1240 "cgrammar.y"
+#line 1241 "cgrammar.y"
 { yyval.entrylist = uentryList_add (yyvsp[-2].entrylist, uentry_makeVariableLoc (yyvsp[0].cname, ctype_int)); ;
     break;}
 case 429:
-#line 1243 "cgrammar.y"
+#line 1244 "cgrammar.y"
 { yyval.entrylist = uentryList_single (uentry_makeElipsisMarker ()); ;
     break;}
 case 431:
-#line 1245 "cgrammar.y"
+#line 1246 "cgrammar.y"
 { yyval.entrylist = uentryList_add (yyvsp[-2].entrylist, uentry_makeElipsisMarker ()); ;
     break;}
 case 432:
-#line 1248 "cgrammar.y"
+#line 1249 "cgrammar.y"
 { storeLoc (); ;
     break;}
 case 433:
-#line 1248 "cgrammar.y"
+#line 1249 "cgrammar.y"
 { yyval.entrylist = uentryList_single (yyvsp[0].oentry); ;
     break;}
 case 434:
-#line 1249 "cgrammar.y"
+#line 1250 "cgrammar.y"
 { storeLoc (); ;
     break;}
 case 435:
-#line 1250 "cgrammar.y"
+#line 1251 "cgrammar.y"
 { yyval.entrylist = uentryList_add (yyvsp[-3].entrylist, yyvsp[0].oentry); ;
     break;}
 case 436:
-#line 1254 "cgrammar.y"
+#line 1255 "cgrammar.y"
 { 
      if (isFlipOldStyle ()) 
        { 
@@ -4776,7 +4699,7 @@ case 436:
    ;
     break;}
 case 437:
-#line 1266 "cgrammar.y"
+#line 1267 "cgrammar.y"
 { 
      idDecl tparam = idDecl_create (yyvsp[0].cname, qtype_unknown ());
 
@@ -4792,385 +4715,385 @@ case 437:
    ;
     break;}
 case 439:
-#line 1282 "cgrammar.y"
+#line 1283 "cgrammar.y"
 { yyval.qtyp = qtype_newBase (yyvsp[-1].qtyp, yyvsp[0].ctyp); ;
     break;}
 case 440:
-#line 1285 "cgrammar.y"
+#line 1286 "cgrammar.y"
 { yyval.ctyp = ctype_adjustPointers (yyvsp[0].count, ctype_unknown); ;
     break;}
 case 442:
-#line 1287 "cgrammar.y"
+#line 1288 "cgrammar.y"
 { yyval.ctyp = ctype_adjustPointers (yyvsp[-1].count, yyvsp[0].ctyp); ;
     break;}
 case 443:
-#line 1290 "cgrammar.y"
+#line 1291 "cgrammar.y"
 { yyval.ctyp = ctype_unknown; ;
     break;}
 case 445:
-#line 1295 "cgrammar.y"
+#line 1296 "cgrammar.y"
 { yyval.ctyp = ctype_expectFunction (yyvsp[-1].ctyp); ;
     break;}
 case 446:
-#line 1296 "cgrammar.y"
+#line 1297 "cgrammar.y"
 { yyval.ctyp = ctype_makeArray (ctype_unknown); ;
     break;}
 case 447:
-#line 1298 "cgrammar.y"
+#line 1299 "cgrammar.y"
 { yyval.ctyp = ctype_makeFixedArray (ctype_unknown, exprNode_getLongValue (yyvsp[-1].expr)); ;
     break;}
 case 448:
-#line 1299 "cgrammar.y"
+#line 1300 "cgrammar.y"
 { yyval.ctyp = ctype_makeArray (yyvsp[-2].ctyp); ;
     break;}
 case 449:
-#line 1301 "cgrammar.y"
+#line 1302 "cgrammar.y"
 { yyval.ctyp = ctype_makeFixedArray (yyvsp[-3].ctyp, exprNode_getLongValue (yyvsp[-1].expr)); ;
     break;}
 case 450:
-#line 1303 "cgrammar.y"
+#line 1304 "cgrammar.y"
 { yyval.ctyp = ctype_makeFunction (ctype_unknown, uentryList_makeMissingParams ()); ;
     break;}
 case 451:
-#line 1305 "cgrammar.y"
+#line 1306 "cgrammar.y"
 { yyval.ctyp = ctype_makeParamsFunction (ctype_unknown, yyvsp[-1].entrylist); ;
     break;}
 case 452:
-#line 1307 "cgrammar.y"
+#line 1308 "cgrammar.y"
 { yyval.ctyp = ctype_makeFunction (yyvsp[-3].ctyp, uentryList_makeMissingParams ()); ;
     break;}
 case 453:
-#line 1309 "cgrammar.y"
+#line 1310 "cgrammar.y"
 { yyval.ctyp = ctype_makeParamsFunction (yyvsp[-4].ctyp, yyvsp[-1].entrylist); ;
     break;}
 case 463:
-#line 1337 "cgrammar.y"
+#line 1338 "cgrammar.y"
 { yyval.expr = exprNode_labelMarker (yyvsp[0].cname); ;
     break;}
 case 464:
-#line 1342 "cgrammar.y"
+#line 1343 "cgrammar.y"
 { yyval.expr = yyvsp[0].expr; ;
     break;}
 case 467:
-#line 1350 "cgrammar.y"
+#line 1351 "cgrammar.y"
 { yyval.expr = exprNode_concat (yyvsp[-1].expr, yyvsp[0].expr); ;
     break;}
 case 468:
-#line 1354 "cgrammar.y"
+#line 1355 "cgrammar.y"
 { yyval.expr = exprNode_while (yyvsp[-1].expr, yyvsp[0].expr); ;
     break;}
 case 469:
-#line 1356 "cgrammar.y"
+#line 1357 "cgrammar.y"
 { yyval.expr = exprNode_doWhile (yyvsp[-5].expr, yyvsp[-2].expr); ;
     break;}
 case 470:
-#line 1358 "cgrammar.y"
+#line 1359 "cgrammar.y"
 { yyval.expr = exprNode_doWhile (yyvsp[-4].expr, yyvsp[-1].expr); ;
     break;}
 case 471:
-#line 1360 "cgrammar.y"
+#line 1361 "cgrammar.y"
 { yyval.expr = exprNode_for (yyvsp[-1].expr, yyvsp[0].expr); ;
     break;}
 case 472:
-#line 1364 "cgrammar.y"
+#line 1365 "cgrammar.y"
 { context_setProtectVars (); ;
     break;}
 case 473:
-#line 1364 "cgrammar.y"
+#line 1365 "cgrammar.y"
 { context_sizeofReleaseVars (); ;
     break;}
 case 474:
-#line 1366 "cgrammar.y"
+#line 1367 "cgrammar.y"
 { yyval.expr = exprNode_forPred (yyvsp[-7].expr, yyvsp[-5].expr, yyvsp[-2].expr); 
      context_enterForClause (yyvsp[-5].expr); ;
     break;}
 case 475:
-#line 1371 "cgrammar.y"
+#line 1372 "cgrammar.y"
 { setProcessingIterVars (yyvsp[-2].entry); ;
     break;}
 case 476:
-#line 1373 "cgrammar.y"
+#line 1374 "cgrammar.y"
 { yyval.expr = exprNode_iterStart (yyvsp[-5].entry, yyvsp[-1].alist); ;
     break;}
 case 477:
-#line 1374 "cgrammar.y"
+#line 1375 "cgrammar.y"
 { yyval.expr = exprNode_createId (yyvsp[0].entry); ;
     break;}
 case 481:
-#line 1380 "cgrammar.y"
+#line 1381 "cgrammar.y"
 { yyval.expr = yyvsp[0].expr; ;
     break;}
 case 489:
-#line 1388 "cgrammar.y"
+#line 1389 "cgrammar.y"
 { yyval.expr = yyvsp[-1].expr; ;
     break;}
 case 490:
-#line 1389 "cgrammar.y"
+#line 1390 "cgrammar.y"
 { yyval.expr = exprNode_makeError (); ;
     break;}
 case 491:
-#line 1393 "cgrammar.y"
+#line 1394 "cgrammar.y"
 { /* don't: context_exitTrueClause ($1, $2); */
      yyval.expr = exprNode_if (yyvsp[-1].expr, yyvsp[0].expr); 
    ;
     break;}
 case 492:
-#line 1398 "cgrammar.y"
+#line 1399 "cgrammar.y"
 { yyval.expr = exprNode_createTok (yyvsp[0].tok); ;
     break;}
 case 493:
-#line 1401 "cgrammar.y"
+#line 1402 "cgrammar.y"
 { yyval.expr = exprNode_createTok (yyvsp[0].tok); ;
     break;}
 case 504:
-#line 1416 "cgrammar.y"
+#line 1417 "cgrammar.y"
 { yyval.expr = exprNode_addParens (yyvsp[-2].tok, yyvsp[-1].expr); ;
     break;}
 case 506:
-#line 1418 "cgrammar.y"
+#line 1419 "cgrammar.y"
 { yyval.expr = exprNode_makeError (); ;
     break;}
 case 507:
-#line 1421 "cgrammar.y"
+#line 1422 "cgrammar.y"
 { yyval.expr = exprNode_labelMarker (yyvsp[-1].cname); ;
     break;}
 case 508:
-#line 1422 "cgrammar.y"
+#line 1423 "cgrammar.y"
 { yyval.expr = exprNode_notReached (yyvsp[0].expr); ;
     break;}
 case 509:
-#line 1428 "cgrammar.y"
+#line 1429 "cgrammar.y"
 { context_enterCaseClause (yyvsp[0].expr); ;
     break;}
 case 510:
-#line 1429 "cgrammar.y"
+#line 1430 "cgrammar.y"
 { yyval.expr = exprNode_caseMarker (yyvsp[-2].expr, FALSE); ;
     break;}
 case 511:
-#line 1430 "cgrammar.y"
+#line 1431 "cgrammar.y"
 { context_enterCaseClause (yyvsp[0].expr); ;
     break;}
 case 512:
-#line 1431 "cgrammar.y"
+#line 1432 "cgrammar.y"
 { yyval.expr = exprNode_caseMarker (yyvsp[-2].expr, TRUE); ;
     break;}
 case 513:
-#line 1434 "cgrammar.y"
+#line 1435 "cgrammar.y"
 { context_enterCaseClause (exprNode_undefined); ;
     break;}
 case 514:
-#line 1435 "cgrammar.y"
+#line 1436 "cgrammar.y"
 { yyval.expr = exprNode_defaultMarker (yyvsp[-2].tok, FALSE); ;
     break;}
 case 515:
-#line 1436 "cgrammar.y"
+#line 1437 "cgrammar.y"
 { context_enterCaseClause (exprNode_undefined); ;
     break;}
 case 516:
-#line 1437 "cgrammar.y"
+#line 1438 "cgrammar.y"
 { yyval.expr = exprNode_defaultMarker (yyvsp[-2].tok, TRUE); ;
     break;}
 case 517:
-#line 1440 "cgrammar.y"
+#line 1441 "cgrammar.y"
 { yyval.expr = yyvsp[-1].expr; ;
     break;}
 case 518:
-#line 1442 "cgrammar.y"
+#line 1443 "cgrammar.y"
 { yyval.expr = yyvsp[0].expr; context_exitInner (yyvsp[0].expr); ;
     break;}
 case 519:
-#line 1445 "cgrammar.y"
+#line 1446 "cgrammar.y"
 { yyval.expr = yyvsp[-1].expr; ;
     break;}
 case 520:
-#line 1448 "cgrammar.y"
+#line 1449 "cgrammar.y"
 { context_enterInnerContext (); ;
     break;}
 case 521:
-#line 1451 "cgrammar.y"
+#line 1452 "cgrammar.y"
 { context_exitInnerPlain (); ;
     break;}
 case 522:
-#line 1454 "cgrammar.y"
+#line 1455 "cgrammar.y"
 { context_enterStructInnerContext (); ;
     break;}
 case 523:
-#line 1457 "cgrammar.y"
+#line 1458 "cgrammar.y"
 { context_exitStructInnerContext (); ;
     break;}
 case 524:
-#line 1460 "cgrammar.y"
+#line 1461 "cgrammar.y"
 { context_exitInnerSafe (); ;
     break;}
 case 525:
-#line 1463 "cgrammar.y"
+#line 1464 "cgrammar.y"
 { yyval.expr = exprNode_createTok (yyvsp[0].tok); ;
     break;}
 case 526:
-#line 1464 "cgrammar.y"
+#line 1465 "cgrammar.y"
 { yyval.expr = exprNode_notReached (exprNode_createTok (yyvsp[0].tok)); ;
     break;}
 case 527:
-#line 1465 "cgrammar.y"
+#line 1466 "cgrammar.y"
 { yyval.expr = exprNode_updateLocation (yyvsp[-1].expr, lltok_getLoc (yyvsp[0].tok)); ;
     break;}
 case 528:
-#line 1467 "cgrammar.y"
+#line 1468 "cgrammar.y"
 { yyval.expr = exprNode_notReached (exprNode_updateLocation (yyvsp[-2].expr, lltok_getLoc (yyvsp[0].tok))); ;
     break;}
 case 529:
-#line 1468 "cgrammar.y"
+#line 1469 "cgrammar.y"
 { yyval.expr = exprNode_updateLocation (yyvsp[-1].expr, lltok_getLoc (yyvsp[0].tok)); ;
     break;}
 case 530:
-#line 1470 "cgrammar.y"
+#line 1471 "cgrammar.y"
 { yyval.expr = exprNode_notReached (exprNode_updateLocation (yyvsp[-2].expr, lltok_getLoc (yyvsp[0].tok))); ;
     break;}
 case 531:
-#line 1472 "cgrammar.y"
+#line 1473 "cgrammar.y"
 { yyval.expr = exprNode_updateLocation (exprNode_concat (yyvsp[-2].expr, yyvsp[-1].expr), lltok_getLoc (yyvsp[0].tok)); ;
     break;}
 case 532:
-#line 1474 "cgrammar.y"
+#line 1475 "cgrammar.y"
 { yyval.expr = exprNode_notReached (exprNode_updateLocation (exprNode_concat (yyvsp[-3].expr, yyvsp[-2].expr), 
                                                        lltok_getLoc (yyvsp[-1].tok))); 
    ;
     break;}
 case 533:
-#line 1481 "cgrammar.y"
+#line 1482 "cgrammar.y"
 { yyval.expr = exprNode_makeBlock (yyvsp[0].expr); ;
     break;}
 case 534:
-#line 1485 "cgrammar.y"
+#line 1486 "cgrammar.y"
 { yyval.expr = exprNode_createTok (yyvsp[0].tok); ;
     break;}
 case 535:
-#line 1487 "cgrammar.y"
+#line 1488 "cgrammar.y"
 { yyval.expr = exprNode_updateLocation (yyvsp[-1].expr, lltok_getLoc (yyvsp[0].tok)); ;
     break;}
 case 536:
-#line 1489 "cgrammar.y"
+#line 1490 "cgrammar.y"
 { yyval.expr = exprNode_updateLocation (yyvsp[-1].expr, lltok_getLoc (yyvsp[0].tok)); ;
     break;}
 case 537:
-#line 1491 "cgrammar.y"
+#line 1492 "cgrammar.y"
 { yyval.expr = exprNode_updateLocation (exprNode_concat (yyvsp[-2].expr, yyvsp[-1].expr), lltok_getLoc (yyvsp[0].tok)); ;
     break;}
 case 539:
-#line 1495 "cgrammar.y"
+#line 1496 "cgrammar.y"
 { yyval.expr = exprNode_concat (yyvsp[-1].expr, yyvsp[0].expr); ;
     break;}
 case 540:
-#line 1498 "cgrammar.y"
+#line 1499 "cgrammar.y"
 { yyval.expr = yyvsp[0].expr; ;
     break;}
 case 541:
-#line 1499 "cgrammar.y"
+#line 1500 "cgrammar.y"
 { yyval.expr = exprNode_concat (yyvsp[-1].expr, yyvsp[0].expr); ;
     break;}
 case 542:
-#line 1502 "cgrammar.y"
+#line 1503 "cgrammar.y"
 { yyval.expr = yyvsp[0].expr; ;
     break;}
 case 543:
-#line 1503 "cgrammar.y"
+#line 1504 "cgrammar.y"
 { yyval.expr = exprNode_concat (yyvsp[-1].expr, yyvsp[0].expr); ;
     break;}
 case 544:
-#line 1506 "cgrammar.y"
+#line 1507 "cgrammar.y"
 { yyval.expr = exprNode_createTok (yyvsp[0].tok); ;
     break;}
 case 545:
-#line 1507 "cgrammar.y"
+#line 1508 "cgrammar.y"
 { yyval.expr = exprNode_statement (yyvsp[-1].expr, yyvsp[0].tok); ;
     break;}
 case 546:
-#line 1510 "cgrammar.y"
+#line 1511 "cgrammar.y"
 { yyval.expr = exprNode_createTok (yyvsp[0].tok); ;
     break;}
 case 547:
-#line 1511 "cgrammar.y"
+#line 1512 "cgrammar.y"
 { yyval.expr = exprNode_statement (yyvsp[-1].expr, yyvsp[0].tok); ;
     break;}
 case 548:
-#line 1512 "cgrammar.y"
+#line 1513 "cgrammar.y"
 { yyval.expr = exprNode_checkExpr (yyvsp[0].expr); ;
     break;}
 case 549:
-#line 1516 "cgrammar.y"
+#line 1517 "cgrammar.y"
 { yyval.expr = yyvsp[-1].expr; exprNode_produceGuards (yyvsp[-1].expr); context_enterTrueClause (yyvsp[-1].expr); ;
     break;}
 case 550:
-#line 1524 "cgrammar.y"
+#line 1525 "cgrammar.y"
 { 
      context_exitTrueClause (yyvsp[-1].expr, yyvsp[0].expr);
      yyval.expr = exprNode_if (yyvsp[-1].expr, yyvsp[0].expr); 
    ;
     break;}
 case 551:
-#line 1528 "cgrammar.y"
+#line 1529 "cgrammar.y"
 { context_enterFalseClause (yyvsp[-2].expr); ;
     break;}
 case 552:
-#line 1529 "cgrammar.y"
+#line 1530 "cgrammar.y"
 {
      context_exitClause (yyvsp[-4].expr, yyvsp[-3].expr, yyvsp[0].expr);
      yyval.expr = exprNode_ifelse (yyvsp[-4].expr, yyvsp[-3].expr, yyvsp[0].expr); 
    ;
     break;}
 case 553:
-#line 1533 "cgrammar.y"
+#line 1534 "cgrammar.y"
 { context_enterSwitch (yyvsp[0].expr); ;
     break;}
 case 554:
-#line 1534 "cgrammar.y"
+#line 1535 "cgrammar.y"
 { yyval.expr = exprNode_switch (yyvsp[-3].expr, yyvsp[0].expr); ;
     break;}
 case 555:
-#line 1538 "cgrammar.y"
+#line 1539 "cgrammar.y"
 { yyval.expr = exprNode_whilePred (yyvsp[-1].expr); context_enterWhileClause (yyvsp[-1].expr); ;
     break;}
 case 556:
-#line 1542 "cgrammar.y"
+#line 1543 "cgrammar.y"
 { yyval.expr = exprNode_whilePred(yyvsp[-1].expr); ;
     break;}
 case 557:
-#line 1545 "cgrammar.y"
+#line 1546 "cgrammar.y"
 { context_enterIterClause (); ;
     break;}
 case 558:
-#line 1546 "cgrammar.y"
+#line 1547 "cgrammar.y"
 { setProcessingIterVars (yyvsp[-3].entry); ;
     break;}
 case 559:
-#line 1549 "cgrammar.y"
+#line 1550 "cgrammar.y"
 { 
      yyval.expr = exprNode_iter (yyvsp[-9].entry, yyvsp[-4].alist, yyvsp[-2].expr, yyvsp[-1].entry); 
 
    ;
     break;}
 case 560:
-#line 1555 "cgrammar.y"
+#line 1556 "cgrammar.y"
 { yyval.alist = exprNodeList_singleton (yyvsp[0].expr); ;
     break;}
 case 561:
-#line 1556 "cgrammar.y"
+#line 1557 "cgrammar.y"
 { nextIterParam (); ;
     break;}
 case 562:
-#line 1557 "cgrammar.y"
+#line 1558 "cgrammar.y"
 { yyval.alist = exprNodeList_push (yyvsp[-3].alist, yyvsp[0].expr); ;
     break;}
 case 563:
-#line 1560 "cgrammar.y"
+#line 1561 "cgrammar.y"
 { yyval.expr = exprNode_iterExpr (yyvsp[0].expr); ;
     break;}
 case 564:
-#line 1561 "cgrammar.y"
+#line 1562 "cgrammar.y"
 { yyval.expr = exprNode_iterId (yyvsp[0].entry); ;
     break;}
 case 565:
-#line 1562 "cgrammar.y"
+#line 1563 "cgrammar.y"
 { uentry ue = coerceIterId (yyvsp[0].cname);
 
                      if (uentry_isValid (ue)) 
@@ -5184,315 +5107,315 @@ case 565:
                    ;
     break;}
 case 566:
-#line 1573 "cgrammar.y"
+#line 1574 "cgrammar.y"
 { yyval.expr = exprNode_iterNewId (yyvsp[0].cname); ;
     break;}
 case 568:
-#line 1581 "cgrammar.y"
+#line 1582 "cgrammar.y"
 { yyval.expr = exprNode_addParens (yyvsp[-2].tok, yyvsp[-1].expr); ;
     break;}
 case 570:
-#line 1585 "cgrammar.y"
+#line 1586 "cgrammar.y"
 { yyval.expr = exprNode_arrayFetch (yyvsp[-3].expr, yyvsp[-1].expr); ;
     break;}
 case 571:
-#line 1586 "cgrammar.y"
+#line 1587 "cgrammar.y"
 { yyval.expr = exprNode_functionCall (yyvsp[-2].expr, exprNodeList_new ()); ;
     break;}
 case 572:
-#line 1587 "cgrammar.y"
+#line 1588 "cgrammar.y"
 { yyval.expr = exprNode_functionCall (yyvsp[-3].expr, yyvsp[-1].alist); ;
     break;}
 case 573:
-#line 1589 "cgrammar.y"
+#line 1590 "cgrammar.y"
 { yyval.expr = exprNode_vaArg (yyvsp[-5].tok, yyvsp[-3].expr, yyvsp[-1].qtyp); ;
     break;}
 case 574:
-#line 1590 "cgrammar.y"
+#line 1591 "cgrammar.y"
 { yyval.expr = exprNode_fieldAccess (yyvsp[-4].expr, yyvsp[-1].cname); ;
     break;}
 case 575:
-#line 1591 "cgrammar.y"
+#line 1592 "cgrammar.y"
 { yyval.expr = exprNode_arrowAccess (yyvsp[-4].expr, yyvsp[-1].cname); ;
     break;}
 case 576:
-#line 1592 "cgrammar.y"
+#line 1593 "cgrammar.y"
 { yyval.expr = exprNode_postOp (yyvsp[-1].expr, yyvsp[0].tok); ;
     break;}
 case 577:
-#line 1593 "cgrammar.y"
+#line 1594 "cgrammar.y"
 { yyval.expr = exprNode_postOp (yyvsp[-1].expr, yyvsp[0].tok); ;
     break;}
 case 579:
-#line 1597 "cgrammar.y"
+#line 1598 "cgrammar.y"
 { yyval.expr = exprNode_preOp (yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 580:
-#line 1598 "cgrammar.y"
+#line 1599 "cgrammar.y"
 { yyval.expr = exprNode_preOp (yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 581:
-#line 1599 "cgrammar.y"
+#line 1600 "cgrammar.y"
 { yyval.expr = exprNode_preOp (yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 582:
-#line 1600 "cgrammar.y"
+#line 1601 "cgrammar.y"
 { yyval.expr = exprNode_preOp (yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 583:
-#line 1601 "cgrammar.y"
+#line 1602 "cgrammar.y"
 { yyval.expr = exprNode_preOp (yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 584:
-#line 1602 "cgrammar.y"
+#line 1603 "cgrammar.y"
 { yyval.expr = exprNode_preOp (yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 585:
-#line 1603 "cgrammar.y"
+#line 1604 "cgrammar.y"
 { yyval.expr = exprNode_preOp (yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 586:
-#line 1604 "cgrammar.y"
+#line 1605 "cgrammar.y"
 { yyval.expr = exprNode_preOp (yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 587:
-#line 1605 "cgrammar.y"
+#line 1606 "cgrammar.y"
 { yyval.expr = yyvsp[0].expr; ;
     break;}
 case 589:
-#line 1609 "cgrammar.y"
+#line 1610 "cgrammar.y"
 { yyval.expr = exprNode_cast (yyvsp[-3].tok, yyvsp[0].expr, yyvsp[-2].qtyp); ;
     break;}
 case 591:
-#line 1613 "cgrammar.y"
+#line 1614 "cgrammar.y"
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 592:
-#line 1614 "cgrammar.y"
+#line 1615 "cgrammar.y"
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 593:
-#line 1615 "cgrammar.y"
+#line 1616 "cgrammar.y"
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 595:
-#line 1619 "cgrammar.y"
+#line 1620 "cgrammar.y"
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 596:
-#line 1620 "cgrammar.y"
+#line 1621 "cgrammar.y"
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 598:
-#line 1624 "cgrammar.y"
+#line 1625 "cgrammar.y"
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 599:
-#line 1625 "cgrammar.y"
+#line 1626 "cgrammar.y"
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 601:
-#line 1629 "cgrammar.y"
+#line 1630 "cgrammar.y"
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 602:
-#line 1630 "cgrammar.y"
+#line 1631 "cgrammar.y"
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 603:
-#line 1631 "cgrammar.y"
+#line 1632 "cgrammar.y"
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 604:
-#line 1632 "cgrammar.y"
+#line 1633 "cgrammar.y"
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 606:
-#line 1636 "cgrammar.y"
+#line 1637 "cgrammar.y"
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 607:
-#line 1637 "cgrammar.y"
+#line 1638 "cgrammar.y"
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 609:
-#line 1641 "cgrammar.y"
+#line 1642 "cgrammar.y"
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 611:
-#line 1645 "cgrammar.y"
+#line 1646 "cgrammar.y"
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 613:
-#line 1650 "cgrammar.y"
+#line 1651 "cgrammar.y"
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 615:
-#line 1654 "cgrammar.y"
+#line 1655 "cgrammar.y"
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 617:
-#line 1658 "cgrammar.y"
+#line 1659 "cgrammar.y"
 { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 619:
-#line 1662 "cgrammar.y"
+#line 1663 "cgrammar.y"
 { context_enterTrueClause (yyvsp[-1].expr); ;
     break;}
 case 620:
-#line 1663 "cgrammar.y"
+#line 1664 "cgrammar.y"
 { context_enterFalseClause (yyvsp[-4].expr); ;
     break;}
 case 621:
-#line 1664 "cgrammar.y"
+#line 1665 "cgrammar.y"
 { yyval.expr = exprNode_cond (yyvsp[-6].expr, yyvsp[-3].expr, yyvsp[0].expr); ;
     break;}
 case 623:
-#line 1668 "cgrammar.y"
+#line 1669 "cgrammar.y"
 { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 624:
-#line 1669 "cgrammar.y"
+#line 1670 "cgrammar.y"
 { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 625:
-#line 1670 "cgrammar.y"
+#line 1671 "cgrammar.y"
 { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 626:
-#line 1671 "cgrammar.y"
+#line 1672 "cgrammar.y"
 { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 627:
-#line 1672 "cgrammar.y"
+#line 1673 "cgrammar.y"
 { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 628:
-#line 1673 "cgrammar.y"
+#line 1674 "cgrammar.y"
 { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 629:
-#line 1674 "cgrammar.y"
+#line 1675 "cgrammar.y"
 { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 630:
-#line 1675 "cgrammar.y"
+#line 1676 "cgrammar.y"
 { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 631:
-#line 1676 "cgrammar.y"
+#line 1677 "cgrammar.y"
 { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 632:
-#line 1677 "cgrammar.y"
+#line 1678 "cgrammar.y"
 { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 633:
-#line 1678 "cgrammar.y"
+#line 1679 "cgrammar.y"
 { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ;
     break;}
 case 634:
-#line 1681 "cgrammar.y"
+#line 1682 "cgrammar.y"
 { yyval.entry = yyvsp[0].entry; ;
     break;}
 case 635:
-#line 1682 "cgrammar.y"
+#line 1683 "cgrammar.y"
 { yyval.entry = uentry_undefined; ;
     break;}
 case 636:
-#line 1685 "cgrammar.y"
+#line 1686 "cgrammar.y"
 { context_enterDoWhileClause (); yyval.tok = yyvsp[0].tok; ;
     break;}
 case 637:
-#line 1689 "cgrammar.y"
+#line 1690 "cgrammar.y"
 { yyval.expr = exprNode_while (yyvsp[-1].expr, yyvsp[0].expr); context_exitWhileClause (yyvsp[-1].expr, yyvsp[0].expr); ;
     break;}
 case 638:
-#line 1691 "cgrammar.y"
+#line 1692 "cgrammar.y"
 { yyval.expr = exprNode_statement (exprNode_doWhile (yyvsp[-5].expr, yyvsp[-2].expr), yyvsp[0].tok); ;
     break;}
 case 639:
-#line 1693 "cgrammar.y"
+#line 1694 "cgrammar.y"
 { yyval.expr = exprNode_for (yyvsp[-1].expr, yyvsp[0].expr); context_exitForClause (yyvsp[-1].expr, yyvsp[0].expr); ;
     break;}
 case 640:
-#line 1696 "cgrammar.y"
+#line 1697 "cgrammar.y"
 { yyval.expr = exprNode_while (yyvsp[-1].expr, yyvsp[0].expr); context_exitWhileClause (yyvsp[-1].expr, yyvsp[0].expr); ;
     break;}
 case 641:
-#line 1698 "cgrammar.y"
+#line 1699 "cgrammar.y"
 { yyval.expr = exprNode_statement (exprNode_doWhile (yyvsp[-5].expr, yyvsp[-2].expr), yyvsp[0].tok); ;
     break;}
 case 642:
-#line 1700 "cgrammar.y"
+#line 1701 "cgrammar.y"
 { yyval.expr = exprNode_doWhile (yyvsp[-4].expr, yyvsp[-1].expr); ;
     break;}
 case 643:
-#line 1701 "cgrammar.y"
+#line 1702 "cgrammar.y"
 { yyval.expr = exprNode_for (yyvsp[-1].expr, yyvsp[0].expr); context_exitForClause (yyvsp[-1].expr, yyvsp[0].expr); ;
     break;}
 case 644:
-#line 1704 "cgrammar.y"
+#line 1705 "cgrammar.y"
 { yyval.expr = exprNode_goto (yyvsp[-1].cname); ;
     break;}
 case 645:
-#line 1705 "cgrammar.y"
+#line 1706 "cgrammar.y"
 { yyval.expr = exprNode_continue (yyvsp[-1].tok, BADTOK); ;
     break;}
 case 646:
-#line 1707 "cgrammar.y"
+#line 1708 "cgrammar.y"
 { yyval.expr = exprNode_continue (yyvsp[-2].tok, QINNERCONTINUE); ;
     break;}
 case 647:
-#line 1708 "cgrammar.y"
+#line 1709 "cgrammar.y"
 { yyval.expr = exprNode_break (yyvsp[-1].tok, BADTOK); ;
     break;}
 case 648:
-#line 1709 "cgrammar.y"
+#line 1710 "cgrammar.y"
 { yyval.expr = exprNode_break (yyvsp[-1].tok, QSWITCHBREAK); ;
     break;}
 case 649:
-#line 1710 "cgrammar.y"
+#line 1711 "cgrammar.y"
 { yyval.expr = exprNode_break (yyvsp[-1].tok, QLOOPBREAK); ;
     break;}
 case 650:
-#line 1711 "cgrammar.y"
+#line 1712 "cgrammar.y"
 { yyval.expr = exprNode_break (yyvsp[-1].tok, QINNERBREAK); ;
     break;}
 case 651:
-#line 1712 "cgrammar.y"
+#line 1713 "cgrammar.y"
 { yyval.expr = exprNode_break (yyvsp[-1].tok, QSAFEBREAK); ;
     break;}
 case 652:
-#line 1713 "cgrammar.y"
+#line 1714 "cgrammar.y"
 { yyval.expr = exprNode_nullReturn (yyvsp[-1].tok); ;
     break;}
 case 653:
-#line 1714 "cgrammar.y"
+#line 1715 "cgrammar.y"
 { yyval.expr = exprNode_return (yyvsp[-1].expr); ;
     break;}
 case 655:
-#line 1718 "cgrammar.y"
+#line 1719 "cgrammar.y"
 { ; ;
     break;}
 case 658:
-#line 1725 "cgrammar.y"
+#line 1726 "cgrammar.y"
 { yyval.cname = uentry_getName (yyvsp[0].entry); ;
     break;}
 case 659:
-#line 1726 "cgrammar.y"
+#line 1727 "cgrammar.y"
 { yyval.cname = uentry_getName (yyvsp[0].entry); ;
     break;}
 case 660:
-#line 1727 "cgrammar.y"
+#line 1728 "cgrammar.y"
 { yyval.cname = uentry_getName (yyvsp[0].entry); ;
     break;}
 case 661:
-#line 1728 "cgrammar.y"
+#line 1729 "cgrammar.y"
 { yyval.cname = yyvsp[0].cname; ;
     break;}
 case 663:
-#line 1732 "cgrammar.y"
+#line 1733 "cgrammar.y"
 { yyval.ctyp = ctype_unknown; ;
     break;}
 }
@@ -5717,7 +5640,7 @@ yyerrhandle:
     }
   return 1;
 }
-#line 1734 "cgrammar.y"
+#line 1735 "cgrammar.y"
 
 
 /*@-redecl@*/
index d4b7d69c6c1ae13a36b4f1650d046eea39a727c5..ea03f8a7006bdcf7c0fb7eba053d15c5cf04d0e0 100644 (file)
@@ -177,6 +177,7 @@ void yyerror (char *s);
 %token <tok> QMAXREAD
 %token <tok> QTESTINRANGE
 
+%token <tok> TCAND
 
 
 /* identifiers, literals */
@@ -417,7 +418,7 @@ optGlobEnsuresConstraintsAux
 context_setProtectVars (); enterParamsTemp (); 
      sRef_setGlobalScopeSafe (); 
 
-}  QENSURESCONSTRAINT BufConstraintList  QENDMACRO
+}  QENSURESCONSTRAINT BufConstraintList optSemi QENDMACRO
 {
   setEnsuresConstraints ($3);
   exitParamsTemp ();
@@ -433,7 +434,7 @@ optGlobBufConstraintsAux
 context_setProtectVars (); enterParamsTemp (); 
      sRef_setGlobalScopeSafe (); 
 
-}  QBUFFERCONSTRAINT BufConstraintList  QENDMACRO
+}  QBUFFERCONSTRAINT BufConstraintList optSemi QENDMACRO
 {
   setFunctionConstraints ($3);
   exitParamsTemp ();
@@ -443,11 +444,11 @@ context_setProtectVars (); enterParamsTemp ();
  | /*empty*/
 
 BufConstraintList
-: BufConstraint BufConstraintList{ $$ = constraintList_add ($2, $1); }
+: BufConstraint TCAND BufConstraintList { $$ = constraintList_add ($3, $1); }
 | BufConstraint {constraintList c; c = constraintList_makeNew(); c = constraintList_add (c, $1); $$ = c}
 
 BufConstraint
-:  BufConstraintExpr relationalOp BufConstraintExpr TSEMI  {
+:  BufConstraintExpr relationalOp BufConstraintExpr {
  $$ = makeConstraintParse3 ($1, $2, $3);
  DPRINTF(("Done BufConstraint1\n")); }
 
index ae40852a0c7fb01c4772f226c781f1df63ebc460..def018339c3c5d4e8123d03bfd56eb42545983ab 100644 (file)
@@ -428,6 +428,10 @@ static void setTokLengthT (size_t len)
 "|"            { setTokLength (1); RETURN_TOK (TBAR); }
 "?"            { setTokLength (1); RETURN_TOK (TQUEST); }
 
+
+"/\\"          { setTokLength (1); RETURN_TOK (TCAND); }
+
+
 [ \t\v\f]      { incColumn (); }
 \n              { context_incLineno ();
                  if (continueLine)
@@ -565,8 +569,8 @@ struct skeyword s_parsetable[] = {
   { "pre", QPRECLAUSE } ,
   { "post", QPOSTCLAUSE } ,
   {"setBufferSize", QSETBUFFERSIZE},
-  {"bufferConstraint", QBUFFERCONSTRAINT},
-  {"ensuresConstraint", QENSURESCONSTRAINT},
+  {"requires", QBUFFERCONSTRAINT},
+  {"ensures", QENSURESCONSTRAINT},
   {"setStringLength", QSETSTRINGLENGTH},
   {"testinRange", QTESTINRANGE},
   { NULL, BADTOK }
@@ -613,8 +617,8 @@ struct skeyword s_keytable[] = {
   { "relnull", QRELNULL } ,
   { "nullterminated", QNULLTERMINATED }, 
   { "setBufferSize", QSETBUFFERSIZE },
-  { "bufferConstraint", QBUFFERCONSTRAINT },
-  { "ensuresConstraint", QENSURESCONSTRAINT },
+  { "requires", QBUFFERCONSTRAINT },
+  { "ensures", QENSURESCONSTRAINT },
   { "testInRange", QTESTINRANGE},
   { "MaxSet", QMAXSET},
   { "MaxRead", QMAXREAD},
index c95310bae0c94d4280a756473179f9e7da6d75ac..45e13de3dfc4e85f2fdae184199cc4558d77e1b3 100644 (file)
@@ -282,68 +282,68 @@ static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
        *yy_cp = '\0'; \
        yy_c_buf_p = yy_cp;
 
-#define YY_NUM_RULES 180
-#define YY_END_OF_BUFFER 181
-static yyconst short int yy_accept[529] =
+#define YY_NUM_RULES 181
+#define YY_END_OF_BUFFER 182
+static yyconst short int yy_accept[530] =
     {   0,
-        0,    0,  181,  179,  159,  160,  147,  179,    3,   82,
-      153,  146,  179,  141,  142,  151,  150,  138,  149,  145,
-      152,   97,   97,  139,  135,  154,  140,  155,  158,  179,
-       82,  143,  178,  144,  156,   82,   82,   82,   82,   82,
+        0,    0,  182,  180,  160,  161,  147,  180,    3,   82,
+      153,  146,  180,  141,  142,  151,  150,  138,  149,  145,
+      152,   97,   97,  139,  135,  154,  140,  155,  158,  180,
+       82,  143,  179,  144,  156,   82,   82,   82,   82,   82,
        82,   82,   82,   82,   82,   82,   82,   82,   82,   82,
        82,   82,   82,   82,   82,   82,  136,  157,  137,  148,
-      134,    0,   42,    0,    2,   82,  120,  176,  177,  129,
+      134,    0,   42,    0,    2,   82,  120,  177,  178,  129,
       121,    0,    0,  118,  126,  116,  127,  117,  128,    0,
-      110,    1,  119,  113,   90,    0,   99,   98,    0,   97,
-      125,  131,  133,  132,  124,    0,    0,    0,   82,  122,
+      110,    1,  119,  159,  113,   90,    0,   99,   98,    0,
+       97,  125,  131,  133,  132,  124,    0,    0,    0,   82,
 
-       82,   82,   82,   82,   82,   82,   82,   82,    9,   82,
-       82,   82,   82,   82,   82,   82,   13,   44,   82,   82,
+      122,   82,   82,   82,   82,   82,   82,   82,   82,    9,
+       82,   82,   82,   82,   82,   82,   82,   13,   44,   82,
        82,   82,   82,   82,   82,   82,   82,   82,   82,   82,
        82,   82,   82,   82,   82,   82,   82,   82,   82,   82,
-       82,   82,   82,   82,   82,   82,  123,  130,    0,    0,
-        2,  104,    4,    0,  108,  109,  110,    0,  111,  112,
-       92,   91,    0,  107,  100,  101,  101,   83,  115,  114,
-      166,  167,  164,  169,  174,  165,  175,  170,  173,  168,
-      171,  172,    0,    0,   82,   82,   82,   82,   82,   82,
+       82,   82,   82,   82,   82,   82,   82,  123,  130,    0,
+        0,    2,  104,    4,    0,  108,  109,  110,    0,  111,
+      112,   92,   91,    0,  107,  100,  101,  101,   83,  115,
+      114,  167,  168,  165,  170,  175,  166,  176,  171,  174,
+      169,  172,  173,    0,    0,   82,   82,   82,   82,   82,
        82,   82,   82,   82,   82,   82,   82,   82,   82,   82,
 
-       82,   82,   11,   82,   82,   27,   82,   82,   82,   82,
-       82,   82,   82,   82,   82,   82,   43,   82,   82,   82,
-       82,   82,   82,   74,   82,   82,   82,   82,   82,   82,
-       82,   82,   82,   82,   82,   82,   82,   82,   82,   82,
-       82,   82,   82,   82,   82,    0,   42,    0,    0,  110,
-        0,  108,  109,    0,  113,   93,   94,   94,  105,  106,
-      103,  102,   84,   86,  163,    0,    0,   82,   82,   82,
-       82,   39,   82,    6,   29,   82,   82,   82,   82,   82,
-       82,   10,   25,   82,   82,   82,   82,   12,   82,   82,
-       82,   51,   82,   31,   82,   82,   52,   82,   82,   68,
-
+       82,   82,   82,   11,   82,   82,   27,   82,   82,   82,
+       82,   82,   82,   82,   82,   82,   82,   43,   82,   82,
+       82,   82,   82,   82,   74,   82,   82,   82,   82,   82,
        82,   82,   82,   82,   82,   82,   82,   82,   82,   82,
+       82,   82,   82,   82,   82,   82,    0,   42,    0,    0,
+      110,    0,  108,  109,    0,  113,   93,   94,   94,  105,
+      106,  103,  102,   84,   86,  164,    0,    0,   82,   82,
+       82,   82,   39,   82,    6,   29,   82,   82,   82,   82,
+       82,   82,   10,   25,   82,   82,   82,   82,   12,   82,
+       82,   82,   51,   82,   31,   82,   82,   52,   82,   82,
+
+       68,   82,   82,   82,   82,   82,   82,   82,   82,   82,
        82,   82,   82,   82,   82,   82,   82,   82,   82,   82,
-       82,   82,   82,   82,   82,   26,   82,   82,   82,    0,
-      110,   96,   95,   85,   87,   87,    0,  162,   82,   82,
-       82,   82,    5,   82,   36,   82,   82,   82,   82,   82,
-       82,   82,   30,   82,   82,   82,   82,   82,   82,   82,
-       82,   82,   82,   69,   82,   82,   82,   82,   82,   82,
-       82,   32,   82,   82,   82,   82,   82,   82,   82,   82,
-       82,   82,   77,   24,   82,   82,   82,   82,   82,   18,
-       76,   89,   88,  161,   82,   80,   82,   82,   82,   82,
-
-       82,   82,   82,   28,   82,   38,   82,   21,   82,   54,
-       78,   82,   60,   82,   82,   82,   82,   82,   82,   82,
-       58,   82,   14,   75,   34,   15,   82,   41,   22,   17,
-       82,   82,   82,   82,   82,   72,   19,   20,   82,   81,
-       37,   47,   64,   82,   82,    8,   82,   59,   82,   82,
-       82,   62,   53,   82,   82,   82,   45,   82,   82,   57,
-       82,   46,   61,   82,   23,   82,   82,   82,   82,   65,
-        7,   82,   73,   82,   82,   82,   70,   16,   82,   40,
-       82,   55,   82,   33,   35,   82,   71,   56,   82,   82,
-       82,   82,   67,   82,   82,   82,   82,   63,   82,   82,
-
-       82,   82,   82,   82,   82,   82,   48,   82,   82,   82,
-       66,   82,   82,   82,   79,   82,   82,   82,   82,   82,
-       82,   82,   82,   50,   82,   82,   49,    0
+       82,   82,   82,   82,   82,   82,   26,   82,   82,   82,
+        0,  110,   96,   95,   85,   87,   87,    0,  163,   82,
+       82,   82,   82,    5,   82,   36,   82,   82,   82,   82,
+       82,   82,   82,   30,   82,   82,   82,   82,   82,   82,
+       82,   82,   82,   82,   69,   82,   82,   82,   82,   82,
+       82,   82,   32,   82,   82,   82,   82,   82,   82,   82,
+       82,   82,   82,   77,   24,   82,   82,   82,   82,   82,
+       18,   76,   89,   88,  162,   82,   80,   82,   82,   82,
+
+       82,   82,   82,   82,   28,   82,   38,   82,   21,   82,
+       54,   78,   82,   60,   82,   82,   82,   82,   82,   82,
+       82,   58,   82,   14,   75,   34,   15,   82,   41,   22,
+       17,   82,   82,   82,   82,   82,   72,   19,   20,   82,
+       81,   37,   47,   64,   82,   82,    8,   82,   59,   82,
+       82,   82,   62,   53,   82,   82,   82,   45,   82,   82,
+       57,   82,   46,   61,   82,   23,   82,   82,   82,   82,
+       65,    7,   82,   73,   82,   82,   82,   70,   16,   82,
+       40,   82,   55,   82,   33,   35,   82,   71,   56,   82,
+       82,   82,   82,   67,   82,   82,   82,   82,   63,   82,
+
+       82,   82,   82,   82,   82,   82,   82,   48,   82,   82,
+       82,   66,   82,   82,   82,   79,   82,   82,   82,   82,
+       82,   82,   82,   82,   50,   82,   82,   49,    0
     } ;
 
 static yyconst int yy_ec[256] =
@@ -390,133 +390,133 @@ static yyconst int yy_meta[79] =
         2,    2,    2,    2,    1,    1,    1,    1
     } ;
 
-static yyconst short int yy_base[536] =
+static yyconst short int yy_base[537] =
     {   0,
-        0,    0,  678,  679,  679,  679,  652,   73,    0,    0,
-       55,   71,  629,  679,  679,  650,   67,  679,   68,   66,
-       74,   80,   85,  679,  679,   65,  649,   82,  679,   91,
-      622,  679,  679,  679,  647,  621,   28,  604,   67,   40,
-       65,   72,  605,   88,   55,  604,   79,  101,  616,  611,
-      103,   90,  602,   51,  606,  604,  679,  113,  679,  679,
-      679,  133,  163,  659,    0,    0,  679,  679,  679,  679,
-      679,  100,  139,  679,  679,  679,  679,  679,  679,  643,
-      155,  679,  679,  162,  172,  164,  160,  142,    0,  204,
-      635,  679,  679,  679,  634,  245,  621,  621,  584,  679,
-
-      602,  581,  585,  597,  584,  122,  587,  141,  580,  581,
-      578,  144,  585,  581,  578,  575,    0,   99,  579,  586,
-      579,  576,  567,  569,  575,  568,  578,  572,  564,  568,
-      564,  174,  573,  135,  158,  573,  154,  568,  564,  556,
-      559,  184,  573,  167,  563,  566,  679,  679,  242,  153,
-        0,  679,  679,  235,  679,  679,  251,  243,  679,  679,
-      233,  230,  241,  272,  165,  679,  234,  261,  679,  679,
-      679,  579,  679,  679,  679,  679,  679,  679,  679,  679,
-      679,  679,  580,  581,  228,  553,  548,  551,  563,  558,
-      546,  558,  231,  559,  554,  556,  552,  544,  541,  549,
-
-      536,  551,    0,  537,  541,  544,  529,  532,  535,  538,
-      528,  530,  531,  536,  523,  516,    0,  533,  519,  533,
-      526,  246,  515,    0,  517,  516,  518,  525,  526,  510,
-      508,  508,  510,  519,  518,  514,  516,  506,  510,  501,
-      203,  513,  515,  504,  503,  271,  308,  560,  295,  299,
-      306,  679,  679,  304,  316,  262,  679,  277,  679,  679,
-      679,  679,  298,  281,  679,  534,  522,  505,  504,  495,
-      484,    0,  496,    0,    0,  495,  486,  494,  483,  488,
-      489,    0,    0,  482,  482,  492,  478,    0,  482,  487,
-      482,    0,  284,    0,  487,  472,  472,  473,  483,    0,
-
-      483,  477,  471,  467,  478,  463,  465,  475,  461,  473,
-      463,  467,  466,  471,  470,  456,  458,  466,  464,  462,
-      454,  459,  460,  448,  460,    0,  444,  456,  456,  323,
-      325,  679,  679,  287,  679,  305,  481,  679,  457,  439,
-      439,  440,    0,  292,    0,  441,  442,  448,  446,  445,
-      436,  435,    0,  442,  430,  434,  440,  438,  436,  430,
-      435,  419,  420,    0,  436,  417,  417,  428,  422,  419,
-      427,    0,  426,  423,  427,  424,  408,  417,  419,  404,
-      417,  418,    0,    0,  407,  415,  411,  406,  407,    0,
-        0,  679,  679,  679,  411,    0,  396,  408,  408,  397,
-
-      391,  391,  403,    0,  403,  405,  386,    0,  403,    0,
-        0,  397,    0,  391,  385,  395,  385,  387,  384,  391,
-        0,  384,    0,    0,  385,    0,  382,    0,    0,    0,
-      386,  380,  384,  379,  383,    0,    0,    0,  376,    0,
-        0,    0,  369,  381,  379,    0,  370,    0,  371,  370,
-      369,    0,    0,  367,  362,  371,    0,  358,  359,    0,
-      361,    0,    0,  362,    0,  367,  367,  365,  351,    0,
-        0,  350,    0,  356,  348,  347,    0,    0,  347,    0,
-      329,    0,  340,  334,    0,  319,    0,    0,  311,  320,
-      328,  325,    0,  316,  319,  311,  324,    0,  317,  305,
-
-      318,  315,  301,  302,  310,  296,    0,  308,  311,  300,
-        0,  299,  290,  282,    0,  233,  245,  176,  186,  174,
-      151,  158,  128,    0,   48,   28,    0,  679,  386,  390,
-      394,  399,  403,  405,  410
+        0,    0,  679,  680,  680,  680,  653,   73,    0,    0,
+       55,   71,  630,  680,  680,  651,   67,  680,   68,   66,
+       74,   80,   87,  680,  680,   65,  650,   77,  680,   99,
+      623,  680,  680,  680,  648,  622,   28,  605,   67,   40,
+       73,   82,  606,   84,   51,  605,   89,   98,  617,  612,
+      105,  102,  603,   62,  607,  605,  680,   86,  680,  680,
+      680,  108,  175,  660,    0,    0,  680,  680,  680,  680,
+      680,  127,  168,  680,  680,  680,  680,  680,  680,  644,
+      162,  680,  680,  680,  164,  169,  171,  166,  167,    0,
+      211,  636,  680,  680,  680,  635,  252,  622,  622,  585,
+
+      680,  603,  582,  586,  598,  585,  155,  588,  148,  581,
+      582,  579,  144,  586,  582,  579,  576,    0,   98,  580,
+      587,  580,  577,  568,  570,  576,  569,  579,  573,  565,
+      569,  565,  165,  574,   64,  142,  574,  114,  569,  565,
+      557,  560,  183,  574,  180,  564,  567,  680,  680,  242,
+      187,    0,  680,  680,  234,  680,  680,  243,  241,  680,
+      680,  204,  221,  194,  270,  225,  680,  223,  266,  680,
+      680,  680,  580,  680,  680,  680,  680,  680,  680,  680,
+      680,  680,  680,  581,  582,  229,  554,  549,  552,  564,
+      559,  547,  559,  203,  560,  555,  557,  553,  545,  542,
+
+      550,  537,  552,    0,  538,  542,  545,  530,  533,  536,
+      539,  529,  531,  532,  537,  524,  517,    0,  534,  520,
+      534,  527,  246,  516,    0,  518,  517,  519,  526,  527,
+      511,  509,  509,  511,  520,  519,  515,  517,  507,  511,
+      502,  223,  514,  516,  505,  504,  254,  308,  561,  292,
+      296,  303,  680,  680,  301,  313,  236,  680,  279,  680,
+      680,  680,  680,  294,  283,  680,  535,  523,  506,  505,
+      496,  485,    0,  497,    0,    0,  496,  487,  495,  484,
+      489,  490,    0,    0,  483,  483,  493,  479,    0,  483,
+      488,  483,    0,  273,    0,  488,  473,  473,  474,  484,
+
+        0,  484,  478,  472,  468,  479,  464,  466,  476,  462,
+      474,  464,  468,  467,  472,  471,  457,  459,  467,  465,
+      463,  455,  460,  461,  449,  461,    0,  445,  457,  457,
+      317,  339,  680,  680,  299,  680,  289,  482,  680,  458,
+      440,  440,  441,    0,  292,    0,  442,  443,  449,  447,
+      446,  437,  436,    0,  443,  431,  435,  441,  439,  437,
+      431,  436,  420,  421,    0,  437,  418,  418,  429,  423,
+      420,  428,    0,  427,  424,  428,  425,  409,  418,  420,
+      405,  418,  419,    0,    0,  408,  416,  412,  407,  408,
+        0,    0,  680,  680,  680,  412,    0,  397,  409,  409,
+
+      398,  392,  392,  404,    0,  404,  406,  387,    0,  404,
+        0,    0,  398,    0,  392,  386,  396,  386,  388,  385,
+      392,    0,  385,    0,    0,  386,    0,  383,    0,    0,
+        0,  387,  381,  385,  380,  384,    0,    0,    0,  377,
+        0,    0,    0,  370,  382,  380,    0,  371,    0,  372,
+      371,  370,    0,    0,  368,  354,  360,    0,  343,  342,
+        0,  344,    0,    0,  338,    0,  343,  343,  341,  326,
+        0,    0,  325,    0,  331,  323,  331,    0,    0,  334,
+        0,  320,    0,  333,  327,    0,  319,    0,    0,  311,
+      320,  328,  326,    0,  317,  320,  313,  326,    0,  319,
+
+      305,  318,  315,  299,  300,  310,  296,    0,  307,  310,
+      301,    0,  302,  292,  285,    0,  280,  294,  270,  281,
+      242,  139,  117,   66,    0,   44,   28,    0,  680,  400,
+      404,  408,  413,  417,  419,  424
     } ;
 
-static yyconst short int yy_def[536] =
+static yyconst short int yy_def[537] =
     {   0,
-      528,    1,  528,  528,  528,  528,  528,  529,  530,  531,
-      528,  528,  532,  528,  528,  528,  528,  528,  528,  528,
-      528,  528,  528,  528,  528,  528,  528,  528,  528,  528,
-      531,  528,  528,  528,  528,  531,  531,  531,  531,  531,
-      531,  531,  531,  531,  531,  531,  531,  531,  531,  531,
-      531,  531,  531,  531,  531,  531,  528,  528,  528,  528,
-      528,  529,  528,  529,  533,  531,  528,  528,  528,  528,
-      528,  532,  532,  528,  528,  528,  528,  528,  528,  528,
-      528,  528,  528,  528,  528,  528,  528,  528,  534,  528,
-      528,  528,  528,  528,  528,  528,  528,  528,  531,  528,
-
-      531,  531,  531,  531,  531,  531,  531,  531,  531,  531,
-      531,  531,  531,  531,  531,  531,  531,  531,  531,  531,
-      531,  531,  531,  531,  531,  531,  531,  531,  531,  531,
-      531,  531,  531,  531,  531,  531,  531,  531,  531,  531,
-      531,  531,  531,  531,  531,  531,  528,  528,  528,  535,
-      533,  528,  528,  528,  528,  528,  528,  528,  528,  528,
-      528,  528,  528,  528,  528,  528,  528,  534,  528,  528,
-      528,  528,  528,  528,  528,  528,  528,  528,  528,  528,
-      528,  528,  528,  528,  531,  531,  531,  531,  531,  531,
-      531,  531,  531,  531,  531,  531,  531,  531,  531,  531,
-
-      531,  531,  531,  531,  531,  531,  531,  531,  531,  531,
-      531,  531,  531,  531,  531,  531,  531,  531,  531,  531,
-      531,  531,  531,  531,  531,  531,  531,  531,  531,  531,
-      531,  531,  531,  531,  531,  531,  531,  531,  531,  531,
-      531,  531,  531,  531,  531,  535,  528,  535,  528,  528,
-      528,  528,  528,  528,  528,  528,  528,  528,  528,  528,
-      528,  528,  528,  528,  528,  528,  528,  531,  531,  531,
-      531,  531,  531,  531,  531,  531,  531,  531,  531,  531,
-      531,  531,  531,  531,  531,  531,  531,  531,  531,  531,
-      531,  531,  531,  531,  531,  531,  531,  531,  531,  531,
-
-      531,  531,  531,  531,  531,  531,  531,  531,  531,  531,
-      531,  531,  531,  531,  531,  531,  531,  531,  531,  531,
-      531,  531,  531,  531,  531,  531,  531,  531,  531,  528,
-      528,  528,  528,  528,  528,  528,  528,  528,  531,  531,
-      531,  531,  531,  531,  531,  531,  531,  531,  531,  531,
-      531,  531,  531,  531,  531,  531,  531,  531,  531,  531,
-      531,  531,  531,  531,  531,  531,  531,  531,  531,  531,
-      531,  531,  531,  531,  531,  531,  531,  531,  531,  531,
-      531,  531,  531,  531,  531,  531,  531,  531,  531,  531,
-      531,  528,  528,  528,  531,  531,  531,  531,  531,  531,
-
-      531,  531,  531,  531,  531,  531,  531,  531,  531,  531,
-      531,  531,  531,  531,  531,  531,  531,  531,  531,  531,
-      531,  531,  531,  531,  531,  531,  531,  531,  531,  531,
-      531,  531,  531,  531,  531,  531,  531,  531,  531,  531,
-      531,  531,  531,  531,  531,  531,  531,  531,  531,  531,
-      531,  531,  531,  531,  531,  531,  531,  531,  531,  531,
-      531,  531,  531,  531,  531,  531,  531,  531,  531,  531,
-      531,  531,  531,  531,  531,  531,  531,  531,  531,  531,
-      531,  531,  531,  531,  531,  531,  531,  531,  531,  531,
-      531,  531,  531,  531,  531,  531,  531,  531,  531,  531,
-
-      531,  531,  531,  531,  531,  531,  531,  531,  531,  531,
-      531,  531,  531,  531,  531,  531,  531,  531,  531,  531,
-      531,  531,  531,  531,  531,  531,  531,    0,  528,  528,
-      528,  528,  528,  528,  528
+      529,    1,  529,  529,  529,  529,  529,  530,  531,  532,
+      529,  529,  533,  529,  529,  529,  529,  529,  529,  529,
+      529,  529,  529,  529,  529,  529,  529,  529,  529,  529,
+      532,  529,  529,  529,  529,  532,  532,  532,  532,  532,
+      532,  532,  532,  532,  532,  532,  532,  532,  532,  532,
+      532,  532,  532,  532,  532,  532,  529,  529,  529,  529,
+      529,  530,  529,  530,  534,  532,  529,  529,  529,  529,
+      529,  533,  533,  529,  529,  529,  529,  529,  529,  529,
+      529,  529,  529,  529,  529,  529,  529,  529,  529,  535,
+      529,  529,  529,  529,  529,  529,  529,  529,  529,  532,
+
+      529,  532,  532,  532,  532,  532,  532,  532,  532,  532,
+      532,  532,  532,  532,  532,  532,  532,  532,  532,  532,
+      532,  532,  532,  532,  532,  532,  532,  532,  532,  532,
+      532,  532,  532,  532,  532,  532,  532,  532,  532,  532,
+      532,  532,  532,  532,  532,  532,  532,  529,  529,  529,
+      536,  534,  529,  529,  529,  529,  529,  529,  529,  529,
+      529,  529,  529,  529,  529,  529,  529,  529,  535,  529,
+      529,  529,  529,  529,  529,  529,  529,  529,  529,  529,
+      529,  529,  529,  529,  529,  532,  532,  532,  532,  532,
+      532,  532,  532,  532,  532,  532,  532,  532,  532,  532,
+
+      532,  532,  532,  532,  532,  532,  532,  532,  532,  532,
+      532,  532,  532,  532,  532,  532,  532,  532,  532,  532,
+      532,  532,  532,  532,  532,  532,  532,  532,  532,  532,
+      532,  532,  532,  532,  532,  532,  532,  532,  532,  532,
+      532,  532,  532,  532,  532,  532,  536,  529,  536,  529,
+      529,  529,  529,  529,  529,  529,  529,  529,  529,  529,
+      529,  529,  529,  529,  529,  529,  529,  529,  532,  532,
+      532,  532,  532,  532,  532,  532,  532,  532,  532,  532,
+      532,  532,  532,  532,  532,  532,  532,  532,  532,  532,
+      532,  532,  532,  532,  532,  532,  532,  532,  532,  532,
+
+      532,  532,  532,  532,  532,  532,  532,  532,  532,  532,
+      532,  532,  532,  532,  532,  532,  532,  532,  532,  532,
+      532,  532,  532,  532,  532,  532,  532,  532,  532,  532,
+      529,  529,  529,  529,  529,  529,  529,  529,  529,  532,
+      532,  532,  532,  532,  532,  532,  532,  532,  532,  532,
+      532,  532,  532,  532,  532,  532,  532,  532,  532,  532,
+      532,  532,  532,  532,  532,  532,  532,  532,  532,  532,
+      532,  532,  532,  532,  532,  532,  532,  532,  532,  532,
+      532,  532,  532,  532,  532,  532,  532,  532,  532,  532,
+      532,  532,  529,  529,  529,  532,  532,  532,  532,  532,
+
+      532,  532,  532,  532,  532,  532,  532,  532,  532,  532,
+      532,  532,  532,  532,  532,  532,  532,  532,  532,  532,
+      532,  532,  532,  532,  532,  532,  532,  532,  532,  532,
+      532,  532,  532,  532,  532,  532,  532,  532,  532,  532,
+      532,  532,  532,  532,  532,  532,  532,  532,  532,  532,
+      532,  532,  532,  532,  532,  532,  532,  532,  532,  532,
+      532,  532,  532,  532,  532,  532,  532,  532,  532,  532,
+      532,  532,  532,  532,  532,  532,  532,  532,  532,  532,
+      532,  532,  532,  532,  532,  532,  532,  532,  532,  532,
+      532,  532,  532,  532,  532,  532,  532,  532,  532,  532,
+
+      532,  532,  532,  532,  532,  532,  532,  532,  532,  532,
+      532,  532,  532,  532,  532,  532,  532,  532,  532,  532,
+      532,  532,  532,  532,  532,  532,  532,  532,    0,  529,
+      529,  529,  529,  529,  529,  529
     } ;
 
-static yyconst short int yy_nxt[758] =
+static yyconst short int yy_nxt[759] =
     {   0,
         4,    5,    6,    5,    7,    8,    9,   10,   11,   12,
        13,   14,   15,   16,   17,   18,   19,   20,   21,   22,
@@ -526,84 +526,84 @@ static yyconst short int yy_nxt[758] =
        37,   38,   39,   40,   41,   42,   43,   10,   44,   45,
        46,   10,   47,   48,   49,   50,   51,   52,   53,   54,
        55,   10,   56,   10,   57,   58,   59,   60,   63,   67,
-       70,   75,  527,   80,   77,   81,   81,   82,   91,   92,
-      102,   76,   78,   79,  108,   71,  103,   84,   83,   85,
-
-       85,  143,   84,  109,   90,   90,   94,   95,   96,  120,
-      152,   86,  526,  121,  144,   87,   86,  105,   97,   64,
-       87,   88,  113,   89,  106,  110,   88,  111,   98,   68,
-      107,   69,  114,  123,   86,  115,  112,  147,   63,   86,
-       87,  528,  124,  117,  139,   87,   73,  125,   88,   72,
-      118,   89,  126,   88,  119,  140,  127,  133,  247,  205,
-      134,  135,  141,  128,  149,  149,  206,  136,  150,  129,
-      137,  130,  191,  138,   81,   81,  192,  167,  163,   64,
-      163,  157,  157,  164,  164,  225,  154,  155,  148,   84,
-      156,   85,   85,  158,  159,  165,  194,  160,  226,  248,
-
-      525,  166,  167,   86,  230,  195,  261,  161,  199,  154,
-      155,  200,  524,  162,  227,  156,  158,  159,  523,  231,
-      165,   84,  160,   90,   90,  242,   86,  243,  166,  220,
-      221,  228,  161,  261,  222,   86,  236,  237,  522,   87,
-      162,  223,  238,  149,  149,   88,  521,  150,  520,  249,
-      239,  249,  240,  324,  250,  250,  325,  254,   86,  254,
-      164,  164,  255,  255,   87,  258,  268,  269,  256,  262,
-      157,  157,   88,  171,  257,  172,  247,  173,  174,  175,
-      176,  177,  251,  252,  178,  179,  253,  180,  181,  182,
-      258,  164,  164,  256,  262,  519,  263,  277,  278,  305,
-
-      518,  257,  264,  332,  259,  251,  252,  260,  306,  149,
-      149,  253,  333,  150,  250,  250,  336,  248,  250,  250,
-      330,  263,  330,  255,  255,  331,  331,  259,  392,  264,
-      332,  155,  260,  334,  156,  255,  255,  333,  357,  335,
-      393,  336,  331,  331,  331,  331,  399,  517,  159,  358,
-      516,  160,  515,  400,  155,  392,  514,  252,  334,  156,
-      253,  513,  512,  511,  510,  393,  335,  509,  508,  507,
-      506,  159,  505,  504,  503,  502,  160,  501,  500,  499,
-      252,  498,  497,  496,  495,  253,   62,   62,   62,   62,
-       62,   65,  494,  493,   65,   66,  492,   66,   66,   72,
-
-       72,  491,   72,   72,  151,  490,  151,  151,  168,  168,
-      246,  246,  246,  246,  246,  489,  488,  487,  486,  485,
-      484,  483,  482,  481,  480,  479,  478,  477,  476,  475,
-      474,  473,  472,  471,  470,  469,  468,  467,  466,  465,
-      464,  463,  462,  461,  460,  459,  458,  457,  456,  455,
-      454,  453,  452,  451,  450,  449,  448,  447,  446,  445,
-      444,  443,  442,  441,  440,  439,  438,  437,  436,  435,
-      434,  433,  432,  431,  430,  429,  428,  427,  426,  425,
-      424,  423,  422,  421,  420,  419,  418,  417,  416,  415,
-      414,  413,  412,  411,  410,  409,  408,  407,  406,  405,
-
-      404,  403,  402,  401,  398,  397,  396,  395,  394,  391,
-      390,  389,  388,  387,  386,  385,  384,  383,  382,  381,
-      380,  379,  378,  377,  376,  375,  374,  373,  372,  371,
-      370,  369,  368,  367,  366,  365,  364,  363,  362,  361,
-      360,  359,  356,  355,  354,  353,  352,  351,  350,  349,
-      348,  347,  346,  345,  344,  343,  342,  341,  340,  339,
-      338,  337,  528,  329,  328,  327,  326,  323,  322,  321,
-      320,  319,  318,  317,  316,  315,  314,  313,  312,  311,
-      310,  309,  308,  307,  304,  303,  302,  301,  300,  299,
-      298,  297,  296,  295,  294,  293,  292,  291,  290,  289,
-
-      288,  287,  286,  285,  284,  283,  282,  281,  280,  279,
-      276,  275,  274,  273,  272,  271,  270,  267,  266,  265,
-      245,  244,  241,  235,  234,  233,  232,  229,  224,  219,
-      218,  217,  216,  215,  214,  213,  212,  211,  210,  209,
-      208,  207,  204,  203,  202,  201,  198,  197,  196,  193,
-      190,  189,  188,  187,  186,  185,  184,  183,  170,  169,
-      153,  528,  146,  145,  142,  132,  131,  122,  116,  104,
-      101,  100,   99,   93,   74,   73,   61,  528,    3,  528,
-      528,  528,  528,  528,  528,  528,  528,  528,  528,  528,
-      528,  528,  528,  528,  528,  528,  528,  528,  528,  528,
-
-      528,  528,  528,  528,  528,  528,  528,  528,  528,  528,
-      528,  528,  528,  528,  528,  528,  528,  528,  528,  528,
-      528,  528,  528,  528,  528,  528,  528,  528,  528,  528,
-      528,  528,  528,  528,  528,  528,  528,  528,  528,  528,
-      528,  528,  528,  528,  528,  528,  528,  528,  528,  528,
-      528,  528,  528,  528,  528,  528,  528
+       70,   75,  528,   80,   77,   81,   81,   82,   92,   93,
+      103,   76,   78,   79,  109,   71,  104,   85,   83,   86,
+
+       86,   95,   96,  110,   85,  121,   91,   91,  527,  122,
+      148,   87,  144,   63,  226,   88,   97,  106,   87,   64,
+       84,   89,   88,   90,  107,  145,   98,  227,   89,   68,
+      108,   69,  114,  111,   87,  112,   99,  153,  526,  118,
+       88,   87,  115,  124,  113,  116,  119,   88,   89,  127,
+      120,   90,  125,  128,   64,   89,  140,  126,  206,  134,
+      129,  149,  135,  136,  231,  207,  130,  141,  131,  137,
+      529,  525,  138,   73,  142,  139,  150,  150,   72,  232,
+      151,   81,   81,  158,  158,  164,   85,  164,   86,   86,
+      165,  165,  248,  155,  156,  159,  160,  157,  228,  161,
+
+       87,  166,  168,  195,  162,  192,  524,  167,  200,  193,
+      163,  201,  196,  165,  165,  229,  155,  156,  159,  160,
+      221,  222,  157,   87,  161,  223,  166,  168,   85,  162,
+       91,   91,  224,  249,  167,  237,  238,  163,  243,  257,
+      244,  239,   87,  150,  150,  258,   88,  151,  250,  240,
+      250,  241,   89,  251,  251,  255,  259,  255,  263,  248,
+      256,  256,  158,  158,  257,   87,  262,  269,  270,  278,
+      279,   88,  258,  325,  252,  253,  326,  333,  254,   89,
+      172,  259,  173,  263,  174,  175,  176,  177,  178,  165,
+      165,  179,  180,  262,  181,  182,  183,  252,  253,  306,
+
+      249,  264,  260,  254,  333,  261,  523,  265,  307,  150,
+      150,  251,  251,  151,  334,  251,  251,  331,  337,  331,
+      256,  256,  332,  332,  394,  260,  264,  358,  156,  335,
+      261,  157,  256,  256,  265,  336,  332,  332,  359,  334,
+      393,  522,  521,  337,  520,  160,  400,  519,  161,  394,
+      518,  156,  517,  401,  335,  516,  157,  515,  332,  332,
+      514,  513,  336,  512,  511,  510,  509,  393,  160,  508,
+      507,  253,  506,  161,  254,  505,  504,  503,  502,  501,
+      500,  499,  498,  497,  496,  495,  494,  493,  492,  491,
+      490,  489,  488,  487,  253,  486,  485,  484,  483,  254,
+
+       62,   62,   62,   62,   62,   65,  482,  481,   65,   66,
+      480,   66,   66,   72,   72,  479,   72,   72,  152,  478,
+      152,  152,  169,  169,  247,  247,  247,  247,  247,  477,
+      476,  475,  474,  473,  472,  471,  470,  469,  468,  467,
+      466,  465,  464,  463,  462,  461,  460,  459,  458,  457,
+      456,  455,  454,  453,  452,  451,  450,  449,  448,  447,
+      446,  445,  444,  443,  442,  441,  440,  439,  438,  437,
+      436,  435,  434,  433,  432,  431,  430,  429,  428,  427,
+      426,  425,  424,  423,  422,  421,  420,  419,  418,  417,
+      416,  415,  414,  413,  412,  411,  410,  409,  408,  407,
+
+      406,  405,  404,  403,  402,  399,  398,  397,  396,  395,
+      392,  391,  390,  389,  388,  387,  386,  385,  384,  383,
+      382,  381,  380,  379,  378,  377,  376,  375,  374,  373,
+      372,  371,  370,  369,  368,  367,  366,  365,  364,  363,
+      362,  361,  360,  357,  356,  355,  354,  353,  352,  351,
+      350,  349,  348,  347,  346,  345,  344,  343,  342,  341,
+      340,  339,  338,  529,  330,  329,  328,  327,  324,  323,
+      322,  321,  320,  319,  318,  317,  316,  315,  314,  313,
+      312,  311,  310,  309,  308,  305,  304,  303,  302,  301,
+      300,  299,  298,  297,  296,  295,  294,  293,  292,  291,
+
+      290,  289,  288,  287,  286,  285,  284,  283,  282,  281,
+      280,  277,  276,  275,  274,  273,  272,  271,  268,  267,
+      266,  246,  245,  242,  236,  235,  234,  233,  230,  225,
+      220,  219,  218,  217,  216,  215,  214,  213,  212,  211,
+      210,  209,  208,  205,  204,  203,  202,  199,  198,  197,
+      194,  191,  190,  189,  188,  187,  186,  185,  184,  171,
+      170,  154,  529,  147,  146,  143,  133,  132,  123,  117,
+      105,  102,  101,  100,   94,   74,   73,   61,  529,    3,
+      529,  529,  529,  529,  529,  529,  529,  529,  529,  529,
+      529,  529,  529,  529,  529,  529,  529,  529,  529,  529,
+
+      529,  529,  529,  529,  529,  529,  529,  529,  529,  529,
+      529,  529,  529,  529,  529,  529,  529,  529,  529,  529,
+      529,  529,  529,  529,  529,  529,  529,  529,  529,  529,
+      529,  529,  529,  529,  529,  529,  529,  529,  529,  529,
+      529,  529,  529,  529,  529,  529,  529,  529,  529,  529,
+      529,  529,  529,  529,  529,  529,  529,  529
     } ;
 
-static yyconst short int yy_chk[758] =
+static yyconst short int yy_chk[759] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -613,81 +613,81 @@ static yyconst short int yy_chk[758] =
         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,    8,   11,
-       12,   17,  526,   20,   19,   20,   20,   21,   26,   26,
+       12,   17,  527,   20,   19,   20,   20,   21,   26,   26,
        37,   17,   19,   19,   40,   12,   37,   22,   21,   22,
 
-       22,   54,   23,   40,   23,   23,   28,   28,   30,   45,
-       72,   22,  525,   45,   54,   22,   23,   39,   30,    8,
-       23,   22,   42,   22,   39,   41,   23,   41,   30,   11,
-       39,   11,   42,   47,   22,   42,   41,   58,   62,   23,
-       22,   73,   47,   44,   52,   23,   72,   47,   22,   73,
-       44,   22,   48,   23,   44,   52,   48,   51,  150,  118,
-       51,   51,   52,   48,   63,   63,  118,   51,   63,   48,
-       51,   48,  106,   51,   81,   81,  106,   88,   86,   62,
-       86,   84,   84,   86,   86,  134,   81,   81,   58,   85,
-       81,   85,   85,   84,   84,   87,  108,   84,  134,  150,
-
-      523,   87,   88,   85,  137,  108,  165,   85,  112,   81,
-       81,  112,  522,   85,  135,   81,   84,   84,  521,  137,
-       87,   90,   84,   90,   90,  144,   85,  144,   87,  132,
-      132,  135,   85,  165,  132,   90,  142,  142,  520,   90,
-       85,  132,  142,  149,  149,   90,  519,  149,  518,  154,
-      142,  154,  142,  241,  154,  154,  241,  158,   90,  158,
-      163,  163,  158,  158,   90,  162,  185,  185,  161,  167,
-      157,  157,   90,   96,  161,   96,  246,   96,   96,   96,
-       96,   96,  157,  157,   96,   96,  157,   96,   96,   96,
-      162,  164,  164,  161,  167,  517,  168,  193,  193,  222,
-
-      516,  161,  168,  256,  164,  157,  157,  164,  222,  247,
-      247,  157,  258,  247,  249,  249,  264,  246,  250,  250,
-      251,  168,  251,  254,  254,  251,  251,  164,  334,  168,
-      256,  250,  164,  263,  250,  255,  255,  258,  293,  263,
-      336,  264,  330,  330,  331,  331,  344,  514,  255,  293,
-      513,  255,  512,  344,  250,  334,  510,  331,  263,  250,
-      331,  509,  508,  506,  505,  336,  263,  504,  503,  502,
-      501,  255,  500,  499,  497,  496,  255,  495,  494,  492,
-      331,  491,  490,  489,  486,  331,  529,  529,  529,  529,
-      529,  530,  484,  483,  530,  531,  481,  531,  531,  532,
-
-      532,  479,  532,  532,  533,  476,  533,  533,  534,  534,
-      535,  535,  535,  535,  535,  475,  474,  472,  469,  468,
-      467,  466,  464,  461,  459,  458,  456,  455,  454,  451,
-      450,  449,  447,  445,  444,  443,  439,  435,  434,  433,
-      432,  431,  427,  425,  422,  420,  419,  418,  417,  416,
-      415,  414,  412,  409,  407,  406,  405,  403,  402,  401,
-      400,  399,  398,  397,  395,  389,  388,  387,  386,  385,
-      382,  381,  380,  379,  378,  377,  376,  375,  374,  373,
-      371,  370,  369,  368,  367,  366,  365,  363,  362,  361,
-      360,  359,  358,  357,  356,  355,  354,  352,  351,  350,
-
-      349,  348,  347,  346,  342,  341,  340,  339,  337,  329,
-      328,  327,  325,  324,  323,  322,  321,  320,  319,  318,
-      317,  316,  315,  314,  313,  312,  311,  310,  309,  308,
-      307,  306,  305,  304,  303,  302,  301,  299,  298,  297,
-      296,  295,  291,  290,  289,  287,  286,  285,  284,  281,
-      280,  279,  278,  277,  276,  273,  271,  270,  269,  268,
-      267,  266,  248,  245,  244,  243,  242,  240,  239,  238,
-      237,  236,  235,  234,  233,  232,  231,  230,  229,  228,
-      227,  226,  225,  223,  221,  220,  219,  218,  216,  215,
-      214,  213,  212,  211,  210,  209,  208,  207,  206,  205,
-
-      204,  202,  201,  200,  199,  198,  197,  196,  195,  194,
-      192,  191,  190,  189,  188,  187,  186,  184,  183,  172,
-      146,  145,  143,  141,  140,  139,  138,  136,  133,  131,
-      130,  129,  128,  127,  126,  125,  124,  123,  122,  121,
-      120,  119,  116,  115,  114,  113,  111,  110,  109,  107,
-      105,  104,  103,  102,  101,   99,   98,   97,   95,   91,
-       80,   64,   56,   55,   53,   50,   49,   46,   43,   38,
-       36,   35,   31,   27,   16,   13,    7,    3,  528,  528,
-      528,  528,  528,  528,  528,  528,  528,  528,  528,  528,
-      528,  528,  528,  528,  528,  528,  528,  528,  528,  528,
-
-      528,  528,  528,  528,  528,  528,  528,  528,  528,  528,
-      528,  528,  528,  528,  528,  528,  528,  528,  528,  528,
-      528,  528,  528,  528,  528,  528,  528,  528,  528,  528,
-      528,  528,  528,  528,  528,  528,  528,  528,  528,  528,
-      528,  528,  528,  528,  528,  528,  528,  528,  528,  528,
-      528,  528,  528,  528,  528,  528,  528
+       22,   28,   28,   40,   23,   45,   23,   23,  526,   45,
+       58,   22,   54,   62,  135,   22,   30,   39,   23,    8,
+       21,   22,   23,   22,   39,   54,   30,  135,   23,   11,
+       39,   11,   42,   41,   22,   41,   30,   72,  524,   44,
+       22,   23,   42,   47,   41,   42,   44,   23,   22,   48,
+       44,   22,   47,   48,   62,   23,   52,   47,  119,   51,
+       48,   58,   51,   51,  138,  119,   48,   52,   48,   51,
+       73,  523,   51,   72,   52,   51,   63,   63,   73,  138,
+       63,   81,   81,   85,   85,   87,   86,   87,   86,   86,
+       87,   87,  151,   81,   81,   85,   85,   81,  136,   85,
+
+       86,   88,   89,  109,   86,  107,  522,   88,  113,  107,
+       86,  113,  109,  164,  164,  136,   81,   81,   85,   85,
+      133,  133,   81,   86,   85,  133,   88,   89,   91,   86,
+       91,   91,  133,  151,   88,  143,  143,   86,  145,  162,
+      145,  143,   91,  150,  150,  162,   91,  150,  155,  143,
+      155,  143,   91,  155,  155,  159,  163,  159,  168,  247,
+      159,  159,  158,  158,  162,   91,  166,  186,  186,  194,
+      194,   91,  162,  242,  158,  158,  242,  257,  158,   91,
+       97,  163,   97,  168,   97,   97,   97,   97,   97,  165,
+      165,   97,   97,  166,   97,   97,   97,  158,  158,  223,
+
+      247,  169,  165,  158,  257,  165,  521,  169,  223,  248,
+      248,  250,  250,  248,  259,  251,  251,  252,  265,  252,
+      255,  255,  252,  252,  337,  165,  169,  294,  251,  264,
+      165,  251,  256,  256,  169,  264,  331,  331,  294,  259,
+      335,  520,  519,  265,  518,  256,  345,  517,  256,  337,
+      515,  251,  514,  345,  264,  513,  251,  511,  332,  332,
+      510,  509,  264,  507,  506,  505,  504,  335,  256,  503,
+      502,  332,  501,  256,  332,  500,  498,  497,  496,  495,
+      493,  492,  491,  490,  487,  485,  484,  482,  480,  477,
+      476,  475,  473,  470,  332,  469,  468,  467,  465,  332,
+
+      530,  530,  530,  530,  530,  531,  462,  460,  531,  532,
+      459,  532,  532,  533,  533,  457,  533,  533,  534,  456,
+      534,  534,  535,  535,  536,  536,  536,  536,  536,  455,
+      452,  451,  450,  448,  446,  445,  444,  440,  436,  435,
+      434,  433,  432,  428,  426,  423,  421,  420,  419,  418,
+      417,  416,  415,  413,  410,  408,  407,  406,  404,  403,
+      402,  401,  400,  399,  398,  396,  390,  389,  388,  387,
+      386,  383,  382,  381,  380,  379,  378,  377,  376,  375,
+      374,  372,  371,  370,  369,  368,  367,  366,  364,  363,
+      362,  361,  360,  359,  358,  357,  356,  355,  353,  352,
+
+      351,  350,  349,  348,  347,  343,  342,  341,  340,  338,
+      330,  329,  328,  326,  325,  324,  323,  322,  321,  320,
+      319,  318,  317,  316,  315,  314,  313,  312,  311,  310,
+      309,  308,  307,  306,  305,  304,  303,  302,  300,  299,
+      298,  297,  296,  292,  291,  290,  288,  287,  286,  285,
+      282,  281,  280,  279,  278,  277,  274,  272,  271,  270,
+      269,  268,  267,  249,  246,  245,  244,  243,  241,  240,
+      239,  238,  237,  236,  235,  234,  233,  232,  231,  230,
+      229,  228,  227,  226,  224,  222,  221,  220,  219,  217,
+      216,  215,  214,  213,  212,  211,  210,  209,  208,  207,
+
+      206,  205,  203,  202,  201,  200,  199,  198,  197,  196,
+      195,  193,  192,  191,  190,  189,  188,  187,  185,  184,
+      173,  147,  146,  144,  142,  141,  140,  139,  137,  134,
+      132,  131,  130,  129,  128,  127,  126,  125,  124,  123,
+      122,  121,  120,  117,  116,  115,  114,  112,  111,  110,
+      108,  106,  105,  104,  103,  102,  100,   99,   98,   96,
+       92,   80,   64,   56,   55,   53,   50,   49,   46,   43,
+       38,   36,   35,   31,   27,   16,   13,    7,    3,  529,
+      529,  529,  529,  529,  529,  529,  529,  529,  529,  529,
+      529,  529,  529,  529,  529,  529,  529,  529,  529,  529,
+
+      529,  529,  529,  529,  529,  529,  529,  529,  529,  529,
+      529,  529,  529,  529,  529,  529,  529,  529,  529,  529,
+      529,  529,  529,  529,  529,  529,  529,  529,  529,  529,
+      529,  529,  529,  529,  529,  529,  529,  529,  529,  529,
+      529,  529,  529,  529,  529,  529,  529,  529,  529,  529,
+      529,  529,  529,  529,  529,  529,  529,  529
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -1078,13 +1078,13 @@ yy_match:
                        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                                {
                                yy_current_state = (int) yy_def[yy_current_state];
-                               if ( yy_current_state >= 529 )
+                               if ( yy_current_state >= 530 )
                                        yy_c = yy_meta[(unsigned int) yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
                        ++yy_cp;
                        }
-               while ( yy_base[yy_current_state] != 679 );
+               while ( yy_base[yy_current_state] != 680 );
 
 yy_find_action:
                yy_act = yy_accept[yy_current_state];
@@ -1972,12 +1972,17 @@ YY_RULE_SETUP
        YY_BREAK
 case 159:
 YY_RULE_SETUP
-#line 431 "cscanner.l"
-{ incColumn (); }
+#line 432 "cscanner.l"
+{ setTokLength (1); RETURN_TOK (TCAND); }
        YY_BREAK
 case 160:
 YY_RULE_SETUP
-#line 432 "cscanner.l"
+#line 435 "cscanner.l"
+{ incColumn (); }
+       YY_BREAK
+case 161:
+YY_RULE_SETUP
+#line 436 "cscanner.l"
 { context_incLineno ();
                  if (continueLine)
                    {
@@ -1995,9 +2000,9 @@ YY_RULE_SETUP
                   }
                }
        YY_BREAK
-case 161:
+case 162:
 YY_RULE_SETUP
-#line 448 "cscanner.l"
+#line 452 "cscanner.l"
 { setTokLength (6); 
                  
                  if (processMacro ()) {
@@ -2016,9 +2021,9 @@ YY_RULE_SETUP
                  }
                }
        YY_BREAK
-case 162:
+case 163:
 YY_RULE_SETUP
-#line 465 "cscanner.l"
+#line 469 "cscanner.l"
 { if (context_inHeader () || context_inFunction ())
                    { 
                      handleMacro ();
@@ -2056,79 +2061,79 @@ YY_RULE_SETUP
                    }
                }
        YY_BREAK
-case 163:
+case 164:
 YY_RULE_SETUP
-#line 501 "cscanner.l"
+#line 505 "cscanner.l"
 { setTokLength (4); lldiagmsg (ctype_unparseTable ()); }
        YY_BREAK
-case 164:
+case 165:
 YY_RULE_SETUP
-#line 502 "cscanner.l"
+#line 506 "cscanner.l"
 { setTokLength (3); 
                  lldiagmsg (message ("%q: *** marker ***", fileloc_unparse (g_currentloc)));
                }
        YY_BREAK
-case 165:
+case 166:
 YY_RULE_SETUP
-#line 505 "cscanner.l"
+#line 509 "cscanner.l"
 { setTokLength (3); usymtab_printLocal (); }
        YY_BREAK
-case 166:
+case 167:
 YY_RULE_SETUP
-#line 506 "cscanner.l"
+#line 510 "cscanner.l"
 { setTokLength (3); lldiagmsg (usymtab_unparseAliases ()); }
        YY_BREAK
-case 167:
+case 168:
 YY_RULE_SETUP
-#line 507 "cscanner.l"
+#line 511 "cscanner.l"
 { setTokLength (3); lldiagmsg (context_unparse ()); }
        YY_BREAK
-case 168:
+case 169:
 YY_RULE_SETUP
-#line 508 "cscanner.l"
+#line 512 "cscanner.l"
 { setTokLength (3); lldiagmsg (context_unparseClauses ()); }
        YY_BREAK
-case 169:
+case 170:
 YY_RULE_SETUP
-#line 509 "cscanner.l"
+#line 513 "cscanner.l"
 { setTokLength (3); usymtab_printGuards (); }
        YY_BREAK
-case 170:
+case 171:
 YY_RULE_SETUP
-#line 510 "cscanner.l"
+#line 514 "cscanner.l"
 { setTokLength (3); usymtab_printOut (); }
        YY_BREAK
-case 171:
+case 172:
 YY_RULE_SETUP
-#line 511 "cscanner.l"
+#line 515 "cscanner.l"
 { setTokLength (3); usymtab_printAll (); }
        YY_BREAK
-case 172:
+case 173:
 YY_RULE_SETUP
-#line 512 "cscanner.l"
+#line 516 "cscanner.l"
 { setTokLength (3); usymtab_printComplete (); }
        YY_BREAK
-case 173:
+case 174:
 YY_RULE_SETUP
-#line 513 "cscanner.l"
+#line 517 "cscanner.l"
 { setTokLength (3); usymtab_printTypes (); }
        YY_BREAK
-case 174:
+case 175:
 YY_RULE_SETUP
-#line 514 "cscanner.l"
+#line 518 "cscanner.l"
 { setTokLength (3); lldiagmsg (usymtab_unparseStack ()); }
        YY_BREAK
-case 175:
+case 176:
 YY_RULE_SETUP
-#line 515 "cscanner.l"
+#line 519 "cscanner.l"
 { setTokLength (3); 
                  lldiagmsg (message ("Can modify: %q", 
                                  sRefSet_unparse (context_modList ()))); 
                }
        YY_BREAK
-case 176:
+case 177:
 YY_RULE_SETUP
-#line 519 "cscanner.l"
+#line 523 "cscanner.l"
 { /* BEFORE_COMMENT_MARKER */
                   int tok; 
                  incColumn (); incColumn ();
@@ -2139,22 +2144,22 @@ YY_RULE_SETUP
                    }
                }
        YY_BREAK
-case 177:
+case 178:
 YY_RULE_SETUP
-#line 528 "cscanner.l"
+#line 532 "cscanner.l"
 { /* AFTER_COMMENT_MARKER */ 
                   setTokLength (2);
                  inSpecPart = FALSE;
                  RETURN_TOK (QENDMACRO); }
        YY_BREAK
-case 178:
+case 179:
 YY_RULE_SETUP
-#line 532 "cscanner.l"
+#line 536 "cscanner.l"
 { incColumn (); continueLine = TRUE; }
        YY_BREAK
-case 179:
+case 180:
 YY_RULE_SETUP
-#line 533 "cscanner.l"
+#line 537 "cscanner.l"
 { incColumn (); 
                  voptgenerror
                    (FLG_SYNTAX, 
@@ -2163,12 +2168,12 @@ YY_RULE_SETUP
                     g_currentloc);
                }
        YY_BREAK
-case 180:
+case 181:
 YY_RULE_SETUP
-#line 540 "cscanner.l"
+#line 544 "cscanner.l"
 ECHO;
        YY_BREAK
-#line 2172 "lex.yy.c"
+#line 2177 "lex.yy.c"
 case YY_STATE_EOF(INITIAL):
        yyterminate();
 
@@ -2460,7 +2465,7 @@ static yy_state_type yy_get_previous_state()
                while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                        {
                        yy_current_state = (int) yy_def[yy_current_state];
-                       if ( yy_current_state >= 529 )
+                       if ( yy_current_state >= 530 )
                                yy_c = yy_meta[(unsigned int) yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -2495,11 +2500,11 @@ yy_state_type yy_current_state;
        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                {
                yy_current_state = (int) yy_def[yy_current_state];
-               if ( yy_current_state >= 529 )
+               if ( yy_current_state >= 530 )
                        yy_c = yy_meta[(unsigned int) yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-       yy_is_jam = (yy_current_state == 528);
+       yy_is_jam = (yy_current_state == 529);
 
        return yy_is_jam ? 0 : yy_current_state;
        }
@@ -3054,7 +3059,7 @@ int main()
        return 0;
        }
 #endif
-#line 540 "cscanner.l"
+#line 544 "cscanner.l"
 
 
 struct skeyword
@@ -3083,8 +3088,8 @@ struct skeyword s_parsetable[] = {
   { "pre", QPRECLAUSE } ,
   { "post", QPOSTCLAUSE } ,
   {"setBufferSize", QSETBUFFERSIZE},
-  {"bufferConstraint", QBUFFERCONSTRAINT},
-  {"ensuresConstraint", QENSURESCONSTRAINT},
+  {"requires", QBUFFERCONSTRAINT},
+  {"ensures", QENSURESCONSTRAINT},
   {"setStringLength", QSETSTRINGLENGTH},
   {"testinRange", QTESTINRANGE},
   { NULL, BADTOK }
@@ -3131,8 +3136,8 @@ struct skeyword s_keytable[] = {
   { "relnull", QRELNULL } ,
   { "nullterminated", QNULLTERMINATED }, 
   { "setBufferSize", QSETBUFFERSIZE },
-  { "bufferConstraint", QBUFFERCONSTRAINT },
-  { "ensuresConstraint", QENSURESCONSTRAINT },
+  { "requires", QBUFFERCONSTRAINT },
+  { "ensures", QENSURESCONSTRAINT },
   { "testInRange", QTESTINRANGE},
   { "MaxSet", QMAXSET},
   { "MaxRead", QMAXREAD},
index 817dcd2d46cbdff20ca0e2193c2debb87a2bd916..75efab9f947dcdb83971db036050bf7327c54ae3 100644 (file)
@@ -3,10 +3,10 @@
 static char f [12];
 extern void /*@alt char * @*/
   mstrcpy (/*@unique@*/ /*@out@*/ /*returned*/ char *s1, char *s2) 
-     /*@modifies *s1@*/ /*@bufferConstraint MaxSet(s1) >= MaxRead(s2); @*/;
+     /*@modifies *s1@*/ /*@requires MaxSet(s1) >= MaxRead(s2); @*/;
 
 
-void copyf (char * c) /*@bufferConstraint MaxSet(c) >= MaxRead(f); @*/
+void copyf (char * c) /*@requires MaxSet(c) >= MaxRead(f); @*/
 {
   mstrcpy (c, f);
 }
index c2bc474052531b2dba5e28200730093ee1314e6f..503ffdda6b5c76b0dd6f0ab33e134289c3fec572 100644 (file)
@@ -1,6 +1,6 @@
 #include "../../lib/ansi.h"
 
-void anstrcpy( /*@unique@*/ char * a, char *b) /*@bufferConstraint MaxSet(a) >= MaxRead (b); @*/ {
+void anstrcpy( /*@unique@*/ char * a, char *b) /*@requires MaxSet(a) >= MaxRead (b); @*/ {
 strcpy (a,b);
 }
 
index 129144dfdbb9bf57db61956dc3eb81cb65fa7ca5..9c0636f3728ec0351c1f1c0d36471339426cc424 100644 (file)
@@ -1,5 +1,5 @@
 extern /*@null@*/ /*@out@*/ /*@only@*/ void *mymalloc (size_t size) /*@*/
-     /*@ensuresConstraint MaxSet(result) == (size - 1); @*/ ;
+     /*@ensures MaxSet(result) == (size - 1) @*/ ;
   
 void t()
 {
index d95b92b5930dd7ac66a7c484951ec894f20bc684..52a77d8e4810f33f88e16407b749d6e008409c13 100644 (file)
@@ -2,11 +2,11 @@
 extern void /*@alt char * @*/
   mystrncpy (/*@unique@*/ /*@out@*/ /*@returned@*/ char *s1, char *s2,
 size_t n) 
-  /*@modifies *s1@*/      /*@bufferConstraint MaxSet(s1) >= ( n - 1
-); MaxRead (s2) >= ( n - 1 ); @*/ /*@ensuresConstraint MaxRead (s1) ==
-MaxRead (s2); MaxRead (s1) <= n; @*/; 
+  /*@modifies *s1@*/      /*@requires MaxSet(s1) >= ( n - 1
+) /\ MaxRead (s2) >= ( n - 1 ); @*/ /*@ensures MaxRead (s1) ==
+MaxRead (s2) /\ MaxRead (s1) <= n; @*/; 
 
- void f(char *z) /*@bufferConstraint MaxRead(z) >= 2; @*/
+ void f(char *z) /*@requires MaxRead(z) >= 2; @*/
 {
 char x[3];
 char y[3];
This page took 0.645476 seconds and 5 git commands to generate.