c-parse.in (component_decl): Support anonymous struct/union.
authorAlastair J. Houghton <ajh8@doc.ic.ac.uk>
Fri, 15 Oct 1999 08:42:02 +0000 (08:42 +0000)
committerJeff Law <law@gcc.gnu.org>
Fri, 15 Oct 1999 08:42:02 +0000 (02:42 -0600)
        * c-parse.in (component_decl): Support anonymous struct/union.
        (%expect): Update.
        * c-parse.y: Regenerate.
        * c-parse.c: Likewise.
        * objc/objc-parse.y: Likewise.
        * objc/objc-parse.c: Likewise.
        * c-decl.c (finish_struct): Don't sort the fields.
        (field_decl_cmp): Delete unused function.

Co-Authored-By: Mumit Khan <khan@xraylith.wisc.edu>
From-SVN: r30016

gcc/ChangeLog
gcc/c-decl.c
gcc/c-parse.c
gcc/c-parse.in
gcc/c-parse.y
gcc/objc/objc-parse.c
gcc/objc/objc-parse.y

index 2e9aacb6f68053c1e8fbff5262db3fa4e97b5d28..abc3e1c8ecaa84797684b386bd78a1e6f52c23ed 100644 (file)
@@ -1,3 +1,15 @@
+Fri Oct 15 02:37:28 1999  Alastair J. Houghton <ajh8@doc.ic.ac.uk>
+                         Mumit Khan  <khan@xraylith.wisc.edu>
+
+       * c-parse.in (component_decl): Support anonymous struct/union.
+       (%expect): Update.
+       * c-parse.y: Regenerate.
+       * c-parse.c: Likewise.
+       * objc/objc-parse.y: Likewise.
+       * objc/objc-parse.c: Likewise.
+       * c-decl.c (finish_struct): Don't sort the fields.
+       (field_decl_cmp): Delete unused function.
+
 Fri Oct 15 01:20:52 1999  Richard Henderson  <rth@cygnus.com>
 
        * sparc.md (movsf_const_intreg): Revert last constraint change.
index ca9940c63f9b68d8347e1227efb309dad6df613a..3a38c4fc76ada869886ebeb8227f083567a64f09 100644 (file)
@@ -290,7 +290,6 @@ static tree lookup_tag_reverse              PROTO((tree));
 static tree grokdeclarator             PROTO((tree, tree, enum decl_context,
                                               int));
 static tree grokparms                  PROTO((tree, int));
-static int field_decl_cmp              PROTO((const PTR, const PTR));
 static void layout_array_type          PROTO((tree));
 \f
 /* C-specific option variables.  */
@@ -5287,26 +5286,6 @@ grokfield (filename, line, declarator, declspecs, width)
   return value;
 }
 \f
-/* Function to help qsort sort FIELD_DECLs by name order.  */
-
-static int
-field_decl_cmp (xp, yp)
-     const PTR xp;
-     const PTR yp;
-{
-  tree *x = (tree *)xp, *y = (tree *)yp;
-
-  if (DECL_NAME (*x) == DECL_NAME (*y))
-    return 0;
-  if (DECL_NAME (*x) == NULL)
-    return -1;
-  if (DECL_NAME (*y) == NULL)
-    return 1;
-  if (DECL_NAME (*x) < DECL_NAME (*y))
-    return -1;
-  return 1;
-}
-
 /* Fill in the fields of a RECORD_TYPE or UNION_TYPE node, T.
    FIELDLIST is a chain of FIELD_DECL nodes for the fields.
    ATTRIBUTES are attributes to be applied to the structure.
@@ -5541,45 +5520,6 @@ finish_struct (t, fieldlist, attributes)
 
   TYPE_FIELDS (t) = fieldlist;
 
-  /* If there are lots of fields, sort so we can look through them fast.
-     We arbitrarily consider 16 or more elts to be "a lot".  */
-  {
-    int len = 0;
-
-    for (x = fieldlist; x; x = TREE_CHAIN (x))
-      {
-       if (len > 15)
-         break;
-       len += 1;
-      }
-    if (len > 15)
-      {
-       tree *field_array;
-       char *space;
-
-       len += list_length (x);
-       /* Use the same allocation policy here that make_node uses, to
-          ensure that this lives as long as the rest of the struct decl.
-          All decls in an inline function need to be saved.  */
-       if (ggc_p)
-         space = ggc_alloc (sizeof (struct lang_type) + len * sizeof (tree));
-       else if (allocation_temporary_p ())
-         space = savealloc (sizeof (struct lang_type) + len * sizeof (tree));
-       else
-         space = oballoc (sizeof (struct lang_type) + len * sizeof (tree));
-
-       TYPE_LANG_SPECIFIC (t) = (struct lang_type *) space;
-       TYPE_LANG_SPECIFIC (t)->len = len;
-
-       field_array = &TYPE_LANG_SPECIFIC (t)->elts[0];
-       len = 0;
-       for (x = fieldlist; x; x = TREE_CHAIN (x))
-         field_array[len++] = x;
-
-       qsort (field_array, len, sizeof (tree), field_decl_cmp);
-      }
-  }
-
   for (x = TYPE_MAIN_VARIANT (t); x; x = TYPE_NEXT_VARIANT (x))
     {
       TYPE_FIELDS (x) = TYPE_FIELDS (t);
index ac7022674e42cc5bf4e8cf5044ed9952bc6f344d..e358450a9c1dc7b677354afeb50450786395631a 100644 (file)
@@ -155,7 +155,7 @@ c_parse_init ()
 
 
 
-#define        YYFINAL         702
+#define        YYFINAL         706
 #define        YYFLAG          -32768
 #define        YYNTBASE        86
 
@@ -224,21 +224,21 @@ static const short yyprhs[] = {     0,
    718,   722,   726,   730,   735,   740,   744,   748,   750,   752,
    755,   757,   760,   762,   765,   766,   774,   780,   783,   784,
    792,   798,   801,   802,   811,   812,   820,   823,   824,   826,
-   827,   829,   831,   834,   835,   839,   842,   846,   848,   852,
-   854,   856,   859,   861,   865,   870,   877,   883,   885,   889,
-   891,   893,   897,   900,   903,   904,   906,   908,   911,   912,
-   915,   919,   923,   926,   930,   935,   939,   942,   946,   949,
-   953,   955,   957,   960,   963,   964,   966,   969,   970,   971,
-   973,   975,   978,   982,   984,   987,   989,   991,   997,  1002,
-  1007,  1010,  1013,  1016,  1019,  1024,  1025,  1030,  1031,  1032,
-  1036,  1041,  1045,  1047,  1049,  1051,  1053,  1056,  1057,  1062,
-  1064,  1068,  1069,  1070,  1078,  1084,  1087,  1088,  1089,  1090,
-  1103,  1104,  1111,  1114,  1117,  1120,  1124,  1131,  1140,  1151,
-  1164,  1168,  1173,  1175,  1177,  1178,  1185,  1189,  1195,  1198,
-  1202,  1203,  1205,  1206,  1208,  1209,  1211,  1213,  1217,  1222,
-  1224,  1228,  1229,  1232,  1235,  1236,  1241,  1244,  1245,  1247,
-  1249,  1253,  1255,  1259,  1264,  1269,  1274,  1279,  1284,  1285,
-  1288,  1290,  1293,  1295,  1299,  1301,  1305
+   827,   829,   831,   834,   835,   839,   842,   846,   852,   856,
+   858,   860,   863,   865,   869,   874,   881,   887,   889,   893,
+   895,   897,   901,   904,   907,   908,   910,   912,   915,   916,
+   919,   923,   927,   930,   934,   939,   943,   946,   950,   953,
+   957,   959,   961,   964,   967,   968,   970,   973,   974,   975,
+   977,   979,   982,   986,   988,   991,   993,   995,  1001,  1006,
+  1011,  1014,  1017,  1020,  1023,  1028,  1029,  1034,  1035,  1036,
+  1040,  1045,  1049,  1051,  1053,  1055,  1057,  1060,  1061,  1066,
+  1068,  1072,  1073,  1074,  1082,  1088,  1091,  1092,  1093,  1094,
+  1107,  1108,  1115,  1118,  1121,  1124,  1128,  1135,  1144,  1155,
+  1168,  1172,  1177,  1179,  1181,  1182,  1189,  1193,  1199,  1202,
+  1206,  1207,  1209,  1210,  1212,  1213,  1215,  1217,  1221,  1226,
+  1228,  1232,  1233,  1236,  1239,  1240,  1245,  1248,  1249,  1251,
+  1253,  1257,  1259,  1263,  1268,  1273,  1278,  1283,  1288,  1289,
+  1292,  1294,  1297,  1299,  1303,  1305,  1309
 };
 
 static const short yyrhs[] = {    -1,
@@ -326,53 +326,53 @@ static const short yyrhs[] = {    -1,
      0,   171,    84,   176,   184,   178,    80,   143,     0,   171,
     99,     0,     0,    83,     0,     0,    83,     0,   180,     0,
    180,   181,     0,     0,   180,   181,    79,     0,   180,    79,
-     0,   132,   123,   182,     0,   132,     0,   188,   123,   182,
-     0,   188,     0,     1,     0,   243,   181,     0,   183,     0,
-   182,    83,   183,     0,   208,   209,   165,   143,     0,   208,
-   209,   165,    40,   109,   143,     0,   208,   209,    40,   109,
-   143,     0,   185,     0,   184,    83,   185,     0,     1,     0,
-    99,     0,    99,    38,   109,     0,   132,   187,     0,   188,
-   187,     0,     0,   190,     0,     7,     0,   188,     7,     0,
-     0,   189,     7,     0,    61,   190,    78,     0,    52,   189,
-   190,     0,    52,   189,     0,   190,    61,   231,     0,   190,
-    62,   101,    85,     0,   190,    62,    85,     0,    61,   231,
-     0,    62,   101,    85,     0,    62,    85,     0,   144,   124,
-   190,     0,   192,     0,   211,     0,   192,   211,     0,   192,
-   194,     0,     0,   191,     0,     1,    79,     0,     0,     0,
-   197,     0,   198,     0,   197,   198,     0,    32,   242,    79,
-     0,   203,     0,     1,   203,     0,    84,     0,    80,     0,
-   195,   196,   122,   193,    80,     0,   195,   196,     1,    80,
-     0,   195,   196,   191,    80,     0,    61,    84,     0,   200,
-   201,     0,   205,   210,     0,   205,     1,     0,    15,    61,
-   101,    78,     0,     0,    18,   207,   210,    17,     0,     0,
-     0,   208,   209,   213,     0,   208,   209,   224,   210,     0,
-   208,   209,   212,     0,   213,     0,   224,     0,   203,     0,
-   221,     0,   101,    79,     0,     0,   204,    16,   214,   210,
-     0,   204,     0,   204,    16,     1,     0,     0,     0,    17,
-   215,    61,   101,    78,   216,   210,     0,   206,    61,   101,
-    78,    79,     0,   206,     1,     0,     0,     0,     0,    19,
-    61,   226,    79,   217,   226,    79,   218,   226,    78,   219,
-   210,     0,     0,    20,    61,   101,    78,   220,   210,     0,
-    23,    79,     0,    24,    79,     0,    25,    79,     0,    25,
-   101,    79,     0,    27,   225,    61,   101,    78,    79,     0,
-    27,   225,    61,   101,    40,   227,    78,    79,     0,    27,
-   225,    61,   101,    40,   227,    40,   227,    78,    79,     0,
-    27,   225,    61,   101,    40,   227,    40,   227,    40,   230,
-    78,    79,     0,    26,    99,    79,     0,    26,    52,   101,
-    79,     0,    79,     0,   222,     0,     0,    19,    61,   115,
-    78,   223,   210,     0,    21,   109,    40,     0,    21,   109,
-    10,   109,    40,     0,    22,    40,     0,    99,    40,   143,
-     0,     0,     7,     0,     0,   101,     0,     0,   228,     0,
-   229,     0,   228,    83,   229,     0,     9,    61,   101,    78,
-     0,   116,     0,   230,    83,   116,     0,     0,   232,   233,
-     0,   235,    78,     0,     0,   236,    79,   234,   233,     0,
-     1,    78,     0,     0,    10,     0,   236,     0,   236,    83,
-    10,     0,   237,     0,   236,    83,   237,     0,   126,   123,
-   167,   143,     0,   126,   123,   168,   143,     0,   126,   123,
-   187,   143,     0,   130,   123,   168,   143,     0,   130,   123,
-   187,   143,     0,     0,   239,   240,     0,   233,     0,   241,
-    78,     0,     3,     0,   241,    83,     3,     0,    99,     0,
-   242,    83,    99,     0,    31,     0
+     0,   132,   123,   182,     0,   132,   123,   208,   209,   143,
+     0,   188,   123,   182,     0,   188,     0,     1,     0,   243,
+   181,     0,   183,     0,   182,    83,   183,     0,   208,   209,
+   165,   143,     0,   208,   209,   165,    40,   109,   143,     0,
+   208,   209,    40,   109,   143,     0,   185,     0,   184,    83,
+   185,     0,     1,     0,    99,     0,    99,    38,   109,     0,
+   132,   187,     0,   188,   187,     0,     0,   190,     0,     7,
+     0,   188,     7,     0,     0,   189,     7,     0,    61,   190,
+    78,     0,    52,   189,   190,     0,    52,   189,     0,   190,
+    61,   231,     0,   190,    62,   101,    85,     0,   190,    62,
+    85,     0,    61,   231,     0,    62,   101,    85,     0,    62,
+    85,     0,   144,   124,   190,     0,   192,     0,   211,     0,
+   192,   211,     0,   192,   194,     0,     0,   191,     0,     1,
+    79,     0,     0,     0,   197,     0,   198,     0,   197,   198,
+     0,    32,   242,    79,     0,   203,     0,     1,   203,     0,
+    84,     0,    80,     0,   195,   196,   122,   193,    80,     0,
+   195,   196,     1,    80,     0,   195,   196,   191,    80,     0,
+    61,    84,     0,   200,   201,     0,   205,   210,     0,   205,
+     1,     0,    15,    61,   101,    78,     0,     0,    18,   207,
+   210,    17,     0,     0,     0,   208,   209,   213,     0,   208,
+   209,   224,   210,     0,   208,   209,   212,     0,   213,     0,
+   224,     0,   203,     0,   221,     0,   101,    79,     0,     0,
+   204,    16,   214,   210,     0,   204,     0,   204,    16,     1,
+     0,     0,     0,    17,   215,    61,   101,    78,   216,   210,
+     0,   206,    61,   101,    78,    79,     0,   206,     1,     0,
+     0,     0,     0,    19,    61,   226,    79,   217,   226,    79,
+   218,   226,    78,   219,   210,     0,     0,    20,    61,   101,
+    78,   220,   210,     0,    23,    79,     0,    24,    79,     0,
+    25,    79,     0,    25,   101,    79,     0,    27,   225,    61,
+   101,    78,    79,     0,    27,   225,    61,   101,    40,   227,
+    78,    79,     0,    27,   225,    61,   101,    40,   227,    40,
+   227,    78,    79,     0,    27,   225,    61,   101,    40,   227,
+    40,   227,    40,   230,    78,    79,     0,    26,    99,    79,
+     0,    26,    52,   101,    79,     0,    79,     0,   222,     0,
+     0,    19,    61,   115,    78,   223,   210,     0,    21,   109,
+    40,     0,    21,   109,    10,   109,    40,     0,    22,    40,
+     0,    99,    40,   143,     0,     0,     7,     0,     0,   101,
+     0,     0,   228,     0,   229,     0,   228,    83,   229,     0,
+     9,    61,   101,    78,     0,   116,     0,   230,    83,   116,
+     0,     0,   232,   233,     0,   235,    78,     0,     0,   236,
+    79,   234,   233,     0,     1,    78,     0,     0,    10,     0,
+   236,     0,   236,    83,    10,     0,   237,     0,   236,    83,
+   237,     0,   126,   123,   167,   143,     0,   126,   123,   168,
+   143,     0,   126,   123,   187,   143,     0,   130,   123,   168,
+   143,     0,   130,   123,   187,   143,     0,     0,   239,   240,
+     0,   233,     0,   241,    78,     0,     3,     0,   241,    83,
+     3,     0,    99,     0,   242,    83,    99,     0,    31,     0
 };
 
 #endif
@@ -405,21 +405,21 @@ static const short yyrline[] = { 0,
   1276,  1282,  1284,  1286,  1291,  1293,  1300,  1302,  1305,  1308,
   1312,  1315,  1319,  1322,  1326,  1331,  1333,  1337,  1339,  1341,
   1343,  1347,  1349,  1352,  1355,  1358,  1361,  1365,  1367,  1370,
-  1372,  1377,  1380,  1385,  1387,  1389,  1403,  1410,  1415,  1421,
-  1426,  1428,  1433,  1435,  1439,  1443,  1447,  1457,  1459,  1464,
-  1469,  1472,  1476,  1479,  1483,  1486,  1489,  1492,  1496,  1499,
-  1503,  1507,  1509,  1511,  1513,  1515,  1517,  1519,  1521,  1525,
-  1533,  1541,  1543,  1545,  1549,  1551,  1554,  1557,  1568,  1570,
-  1575,  1577,  1580,  1594,  1597,  1600,  1602,  1604,  1612,  1620,
-  1630,  1648,  1653,  1658,  1661,  1675,  1684,  1688,  1692,  1696,
-  1702,  1706,  1711,  1714,  1719,  1722,  1723,  1740,  1745,  1748,
-  1760,  1762,  1772,  1782,  1783,  1791,  1794,  1806,  1810,  1827,
-  1837,  1846,  1851,  1856,  1861,  1865,  1869,  1880,  1887,  1894,
-  1901,  1912,  1918,  1921,  1926,  1949,  1983,  2014,  2045,  2060,
-  2074,  2078,  2082,  2085,  2090,  2092,  2095,  2097,  2101,  2106,
-  2109,  2115,  2120,  2125,  2127,  2136,  2137,  2143,  2145,  2155,
-  2157,  2161,  2164,  2170,  2180,  2189,  2198,  2208,  2222,  2227,
-  2232,  2234,  2243,  2246,  2251,  2254,  2258
+  1372,  1377,  1380,  1385,  1387,  1389,  1403,  1410,  1424,  1430,
+  1435,  1437,  1442,  1444,  1448,  1452,  1456,  1466,  1468,  1473,
+  1478,  1481,  1485,  1488,  1492,  1495,  1498,  1501,  1505,  1508,
+  1512,  1516,  1518,  1520,  1522,  1524,  1526,  1528,  1530,  1534,
+  1542,  1550,  1552,  1554,  1558,  1560,  1563,  1566,  1577,  1579,
+  1584,  1586,  1589,  1603,  1606,  1609,  1611,  1613,  1621,  1629,
+  1639,  1657,  1662,  1667,  1670,  1684,  1693,  1697,  1701,  1705,
+  1711,  1715,  1720,  1723,  1728,  1731,  1732,  1749,  1754,  1757,
+  1769,  1771,  1781,  1791,  1792,  1800,  1803,  1815,  1819,  1836,
+  1846,  1855,  1860,  1865,  1870,  1874,  1878,  1889,  1896,  1903,
+  1910,  1921,  1927,  1930,  1935,  1958,  1992,  2023,  2054,  2069,
+  2083,  2087,  2091,  2094,  2099,  2101,  2104,  2106,  2110,  2115,
+  2118,  2124,  2129,  2134,  2136,  2145,  2146,  2152,  2154,  2164,
+  2166,  2170,  2173,  2179,  2189,  2198,  2207,  2217,  2231,  2236,
+  2241,  2243,  2252,  2255,  2260,  2263,  2267
 };
 #endif
 
@@ -535,7 +535,7 @@ static const short yyr2[] = {     0,
      3,     3,     3,     4,     4,     3,     3,     1,     1,     2,
      1,     2,     1,     2,     0,     7,     5,     2,     0,     7,
      5,     2,     0,     8,     0,     7,     2,     0,     1,     0,
-     1,     1,     2,     0,     3,     2,     3,     1,     3,     1,
+     1,     1,     2,     0,     3,     2,     3,     5,     3,     1,
      1,     2,     1,     3,     4,     6,     5,     1,     3,     1,
      1,     3,     2,     2,     0,     1,     1,     2,     0,     2,
      3,     3,     2,     3,     4,     3,     2,     3,     2,     3,
@@ -593,675 +593,675 @@ static const short yydefact[] = {     3,
    383,   298,   300,   294,   296,     0,   175,   177,    87,     0,
    164,   387,   285,   285,   384,   385,     0,   402,     0,     0,
    316,    29,   308,   314,   105,   119,   119,   136,     0,     0,
-   165,   219,     0,   267,   273,   329,   269,   171,   171,   282,
-   279,   171,     0,     0,     0,    81,    84,   313,     0,   319,
-   118,   117,   306,     0,   320,   304,   329,   303,     0,   295,
-   180,     0,   182,   230,   289,   382,   120,   171,   171,   171,
-   289,   120,   171,   171,     0,   391,   393,   404,   315,   322,
-   112,     0,   113,     0,   136,   134,   190,   188,   187,   169,
-    21,     0,    25,   328,     0,   246,   250,   256,   171,    56,
-   203,    87,     0,     0,   200,     0,   202,     0,   258,   193,
-   199,     0,     0,     0,   406,   318,     0,   153,     0,   342,
-   326,     0,     0,     0,     0,     0,     0,     0,     0,   371,
-   363,     0,     0,   114,   119,   119,   335,   340,     0,     0,
-   332,   333,   336,   364,   334,     0,     0,   293,     0,   399,
-     0,   394,   395,   396,   293,     0,   397,   398,   386,     0,
-     0,   163,   135,   138,   137,     0,   166,   274,     0,   171,
-   254,   206,     0,     0,   197,    62,     0,   192,     0,   205,
-   196,    82,     0,     0,   328,   373,     0,     0,   369,   353,
-   354,   355,     0,     0,     0,   372,     0,   171,   337,   125,
-     0,   126,     0,     0,   324,   329,   323,   346,     0,   127,
-   181,   228,   229,   224,     0,   227,     0,   110,   111,     0,
-   171,     0,   275,     0,   208,     0,     0,   194,   195,     0,
-     0,     0,   374,    45,     0,     0,     0,   367,   356,     0,
-   361,     0,   370,     0,   123,   209,     0,   124,   212,   341,
-   328,     0,     0,   225,   226,   189,   277,   171,     0,   201,
-   198,   325,     0,   327,   365,   347,   351,     0,   362,     0,
-   121,     0,   122,     0,   339,   330,   328,     0,   276,   207,
-   343,   328,   373,   328,   368,   375,     0,   210,   213,   331,
-   345,   328,   366,     0,   352,     0,     0,   376,   377,   357,
-     0,     0,   344,   348,     0,   375,     0,     0,   211,   214,
-   373,     0,     0,   358,   378,     0,   379,     0,     0,   349,
-   380,     0,   359,   328,     0,     0,   350,   360,   381,     0,
-     0,     0
+   165,   219,     0,   267,   273,   329,   269,   329,   171,   171,
+   282,   279,   171,     0,     0,     0,    81,    84,   313,     0,
+   319,   118,   117,   306,     0,   320,   304,   329,   303,     0,
+   295,   180,     0,   182,   230,   289,   382,   120,   171,   171,
+   171,   289,   120,   171,   171,     0,   391,   393,   404,   315,
+   322,   112,     0,   113,     0,   136,   134,   190,   188,   187,
+   169,    21,     0,    25,   328,   171,     0,   246,   250,   256,
+   171,    56,   203,    87,     0,     0,   200,     0,   202,     0,
+   258,   193,   199,     0,     0,     0,   406,   318,     0,   153,
+     0,   342,   326,     0,     0,     0,     0,     0,     0,     0,
+     0,   371,   363,     0,     0,   114,   119,   119,   335,   340,
+     0,     0,   332,   333,   336,   364,   334,     0,     0,   293,
+     0,   399,     0,   394,   395,   396,   293,     0,   397,   398,
+   386,     0,     0,   163,   135,   138,   137,     0,   166,   274,
+     0,   268,   120,   171,   254,   206,     0,     0,   197,    62,
+     0,   192,     0,   205,   196,    82,     0,     0,   328,   373,
+     0,     0,   369,   353,   354,   355,     0,     0,     0,   372,
+     0,   171,   337,   125,     0,   126,     0,     0,   324,   329,
+   323,   346,     0,   127,   181,   228,   229,   224,     0,   227,
+     0,   110,   111,     0,   171,     0,   275,     0,   208,     0,
+     0,   194,   195,     0,     0,     0,   374,    45,     0,     0,
+     0,   367,   356,     0,   361,     0,   370,     0,   123,   209,
+     0,   124,   212,   341,   328,     0,     0,   225,   226,   189,
+   277,   171,     0,   201,   198,   325,     0,   327,   365,   347,
+   351,     0,   362,     0,   121,     0,   122,     0,   339,   330,
+   328,     0,   276,   207,   343,   328,   373,   328,   368,   375,
+     0,   210,   213,   331,   345,   328,   366,     0,   352,     0,
+     0,   376,   377,   357,     0,     0,   344,   348,     0,   375,
+     0,     0,   211,   214,   373,     0,     0,   358,   378,     0,
+   379,     0,     0,   349,   380,     0,   359,   328,     0,     0,
+   350,   360,   381,     0,     0,     0
 };
 
-static const short yydefgoto[] = {   700,
+static const short yydefgoto[] = {   704,
      1,     2,     3,    17,    18,    19,   231,   400,   237,   403,
-   114,   319,   476,    86,   148,   281,    88,    89,    90,    91,
-    92,   415,    93,   266,   265,   263,   484,   264,    94,    95,
-   218,   219,   220,   395,   361,   362,    20,   109,   504,   308,
-    57,   396,   456,   309,    23,   100,   193,    24,   131,   119,
-    44,   115,   120,   462,    45,   399,   223,   224,    26,   202,
-   203,   204,   460,   536,   478,   479,   480,   597,   481,   544,
-   482,   483,   615,   642,   671,   618,   644,   672,   209,   123,
-   438,   124,    27,    28,    29,    30,   245,   247,   252,   139,
-   548,   345,   134,   135,   242,   404,   405,   250,   251,   102,
-   191,   103,   105,   192,   363,   364,   424,   221,   183,   286,
-   287,   288,   392,   393,   184,    96,   394,   508,   509,   510,
-   555,   576,   323,   577,   367,   511,   512,   621,   554,   662,
-   653,   681,   694,   654,   513,   514,   652,   515,   567,   605,
-   667,   668,   669,   692,   292,   293,   310,   445,   311,   312,
+   114,   319,   478,    86,   148,   281,    88,    89,    90,    91,
+    92,   416,    93,   266,   265,   263,   486,   264,    94,    95,
+   218,   219,   220,   395,   361,   362,    20,   229,   506,   308,
+    57,   396,   457,   309,    23,   100,   193,    24,   131,   119,
+    44,   115,   120,   463,    45,   399,   223,   224,    26,   202,
+   203,   204,   461,   538,   480,   481,   482,   601,   483,   548,
+   484,   485,   619,   646,   675,   622,   648,   676,   209,   123,
+   439,   124,    27,    28,    29,    30,   245,   247,   252,   139,
+   552,   345,   134,   135,   242,   404,   405,   250,   251,   102,
+   191,   103,   105,   192,   363,   364,   425,   221,   183,   286,
+   287,   288,   392,   393,   184,    96,   394,   510,   511,   512,
+   559,   580,   323,   581,   367,   513,   514,   625,   558,   666,
+   657,   685,   698,   658,   515,   516,   656,   517,   571,   609,
+   671,   672,   673,   696,   292,   293,   310,   446,   311,   312,
    313,   212,   213,   314,   315,   359,    97
 };
 
-static const short yypact[] = {   130,
-   136,  2364,  2364,   105,-32768,-32768,-32768,-32768,   117,   117,
-   117,    22,   103,   137,-32768,-32768,-32768,-32768,-32768,   288,
-   134,   461,   168,-32768,   117,-32768,    48,    86,    95,-32768,
-  2364,-32768,-32768,-32768,   117,   117,   117,  2180,  2090,   139,
--32768,-32768,   288,   127,-32768,   117,  1396,-32768,   245,-32768,
-   288,   168,-32768,   117,-32768,-32768,   559,-32768,-32768,-32768,
--32768,   135,-32768,   144,-32768,   169,-32768,-32768,-32768,-32768,
--32768,-32768,  2180,  2180,   179,   328,-32768,-32768,-32768,  2180,
--32768,-32768,  1133,-32768,-32768,  2180,   185,   188,-32768,  2215,
-  2270,-32768,  2495,  1061,   265,   627,  2180,-32768,   206,   228,
--32768,   209,   978,   689,   350,   215,-32768,   245,   288,-32768,
-   196,-32768,  1496,   855,   117,-32768,-32768,   245,   237,-32768,
-   117,  1488,   367,   386,   273,  1460,   559,-32768,-32768,-32768,
--32768,   117,-32768,   222,   949,-32768,   270,-32768,   438,-32768,
--32768,-32768,  2180,-32768,-32768,   230,-32768,   239,   267,-32768,
-   313,  2180,  1133,-32768,  1133,-32768,  2180,  2180,   321,-32768,
--32768,  2180,  2180,  2180,  2180,  2180,  2180,  2180,  2180,  2180,
-  2180,  2180,  2180,-32768,-32768,   328,   328,  2180,  2180,-32768,
-   286,-32768,   363,   320,-32768,-32768,-32768,   228,  1551,   117,
--32768,   416,   376,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,    35,-32768,   347,-32768,   386,-32768,-32768,   387,   386,
-   443,-32768,  1051,  1589,-32768,   370,   379,-32768,   323,    55,
--32768,-32768,   425,   117,   240,   285,-32768,   245,   245,-32768,
-   855,   117,-32768,  1644,-32768,-32768,   855,   117,-32768,-32768,
-   305,   393,   431,  1919,-32768,   117,-32768,-32768,   452,   410,
--32768,   438,  2430,-32768,-32768,  1975,-32768,  2495,   421,   444,
-  2495,  2495,  2180,   463,  2180,  2180,  2518,   571,  2059,   727,
-  1401,   733,   733,   104,   104,-32768,-32768,-32768,-32768,-32768,
-   446,   188,   432,-32768,   328,   794,   363,-32768,-32768,   351,
-   316,-32768,  1653,-32768,   445,   228,-32768,  1682,-32768,   376,
-   450,   689,  2305,    94,   454,-32768,-32768,-32768,   743,-32768,
-   456,   276,-32768,-32768,   110,-32768,-32768,-32768,    71,-32768,
--32768,-32768,  2188,-32768,   367,-32768,-32768,   367,-32768,   471,
--32768,-32768,   453,-32768,-32768,-32768,-32768,-32768,-32768,   436,
--32768,   457,  2180,   328,   459,   410,   945,-32768,-32768,-32768,
--32768,   509,  2180,  2354,  2507,-32768,-32768,-32768,   296,   401,
-   709,   476,   477,   885,-32768,-32768,-32768,-32768,   416,-32768,
--32768,-32768,   416,-32768,-32768,   482,-32768,-32768,   131,   484,
--32768,-32768,   234,   156,-32768,-32768,   661,-32768,   565,   485,
--32768,-32768,   490,-32768,-32768,   497,  1745,-32768,  1330,    71,
--32768,-32768,    71,   495,-32768,-32768,   495,   117,   117,  2495,
--32768,   117,   499,   502,  1168,-32768,  2241,-32768,   328,-32768,
--32768,-32768,-32768,   501,-32768,-32768,-32768,-32768,  1858,-32768,
--32768,  2180,-32768,-32768,-32768,   156,   117,   253,   282,   117,
--32768,   117,   282,   117,  1653,-32768,-32768,-32768,-32768,-32768,
--32768,   245,-32768,   288,-32768,   420,-32768,-32768,  2495,-32768,
--32768,  1330,-32768,-32768,   248,-32768,-32768,-32768,   117,-32768,
--32768,   543,   328,  2180,-32768,   545,  2495,   506,   504,-32768,
--32768,    83,  1292,  2180,-32768,-32768,  1940,   552,   532,-32768,
--32768,   533,   534,  2180,   558,   521,   535,  2125,    98,   606,
--32768,   587,   550,-32768,   584,   547,-32768,   648,   992,    53,
--32768,-32768,-32768,-32768,-32768,  2034,   138,   220,   234,-32768,
-  1737,-32768,-32768,-32768,   174,   156,-32768,-32768,-32768,   314,
-   326,   121,   420,-32768,-32768,  1168,-32768,-32768,  2180,    64,
--32768,-32768,  2403,  1168,-32768,-32768,  1230,-32768,  1387,-32768,
--32768,  2241,  2180,   609,-32768,  2180,  2180,  1801,-32768,-32768,
--32768,-32768,   597,  2180,   601,-32768,   620,   117,-32768,-32768,
-   245,-32768,   288,  1074,-32768,-32768,-32768,-32768,  2180,-32768,
--32768,   424,   424,-32768,  1775,-32768,   600,-32768,-32768,   602,
-  2455,  2180,-32768,  2180,-32768,   607,  1387,-32768,-32768,   608,
-  2180,   673,-32768,   641,   646,   621,  2180,-32768,-32768,   662,
--32768,  2180,-32768,   337,-32768,   467,   338,-32768,  1143,-32768,
--32768,  1940,   667,-32768,-32768,-32768,-32768,  2455,  2385,-32768,
--32768,-32768,   668,-32768,-32768,-32768,-32768,  2477,-32768,    29,
--32768,   855,-32768,   855,-32768,-32768,-32768,   674,-32768,-32768,
--32768,-32768,  2180,-32768,-32768,   749,   683,-32768,-32768,-32768,
--32768,-32768,-32768,   684,-32768,   691,    31,   681,-32768,-32768,
-   485,   485,-32768,-32768,  2180,   749,   688,   749,-32768,-32768,
-  2180,   690,    33,-32768,-32768,   694,-32768,   443,   715,-32768,
-   265,   178,-32768,-32768,   717,   443,-32768,-32768,   265,   769,
-   804,-32768
+static const short yypact[] = {    74,
+    77,  2389,  2389,   126,-32768,-32768,-32768,-32768,    73,    73,
+    73,    84,    88,    98,-32768,-32768,-32768,-32768,-32768,   361,
+    35,  1677,   248,-32768,    73,-32768,    55,    76,    91,-32768,
+  2389,-32768,-32768,-32768,    73,    73,    73,  2205,  2115,   111,
+-32768,-32768,   361,    65,-32768,    73,  1485,-32768,   629,-32768,
+   361,   248,-32768,    73,-32768,-32768,   329,-32768,-32768,-32768,
+-32768,    44,-32768,   106,-32768,   134,-32768,-32768,-32768,-32768,
+-32768,-32768,  2205,  2205,   121,   426,-32768,-32768,-32768,  2205,
+-32768,-32768,   732,-32768,-32768,  2205,   163,   180,-32768,  2240,
+  2295,-32768,  2520,   656,   235,   820,  2205,-32768,   187,   206,
+-32768,   222,   381,   545,   292,   219,-32768,   629,   361,-32768,
+   241,-32768,  1521,   648,    73,-32768,-32768,   629,   114,-32768,
+    73,   319,   444,   451,   151,  1513,   329,-32768,-32768,-32768,
+-32768,    73,-32768,   227,   483,-32768,   234,-32768,   552,-32768,
+-32768,-32768,  2205,-32768,-32768,   249,-32768,   252,   259,-32768,
+   261,  2205,   732,-32768,   732,-32768,  2205,  2205,   311,-32768,
+-32768,  2205,  2205,  2205,  2205,  2205,  2205,  2205,  2205,  2205,
+  2205,  2205,  2205,-32768,-32768,   426,   426,  2205,  2205,-32768,
+   283,-32768,   358,   321,-32768,-32768,-32768,   206,  1576,    73,
+-32768,   463,   457,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,   125,-32768,   354,-32768,   451,-32768,-32768,   393,   451,
+   423,-32768,  1043,  1614,-32768,   349,   360,-32768,   595,    66,
+-32768,-32768,   403,    73,   614,   267,-32768,   629,   629,-32768,
+   648,    73,-32768,  1669,-32768,-32768,   648,    73,-32768,-32768,
+-32768,   365,   233,  1209,-32768,    73,-32768,-32768,   410,   373,
+-32768,   552,  2455,-32768,-32768,  2000,-32768,  2520,   387,   389,
+  2520,  2520,  2205,   435,  2205,  2205,  2377,  2085,  2437,  1081,
+  1090,   718,   718,   429,   429,-32768,-32768,-32768,-32768,-32768,
+   408,   180,   406,-32768,   426,   984,   358,-32768,-32768,   242,
+   396,-32768,   790,-32768,   409,   206,-32768,  1707,-32768,   457,
+   420,   545,  2330,    53,   422,-32768,-32768,-32768,  1917,-32768,
+   438,   195,-32768,-32768,   137,-32768,-32768,-32768,    46,-32768,
+-32768,-32768,   884,-32768,   444,-32768,-32768,   444,-32768,   450,
+-32768,-32768,   433,-32768,-32768,-32768,-32768,-32768,-32768,   427,
+-32768,   447,  2205,   426,   456,   373,   966,-32768,-32768,-32768,
+-32768,   491,  2205,  2265,  2174,-32768,-32768,-32768,   210,   460,
+   902,   464,   480,  1066,-32768,-32768,-32768,-32768,   463,-32768,
+-32768,-32768,   463,-32768,-32768,   488,-32768,-32768,   143,   501,
+-32768,-32768,   224,   161,-32768,-32768,   936,-32768,   578,   503,
+-32768,-32768,   517,-32768,-32768,   525,   172,-32768,   669,    46,
+-32768,-32768,    46,   528,-32768,-32768,   528,-32768,    73,    73,
+  2520,-32768,    73,   533,   536,  1265,-32768,  1907,-32768,   426,
+-32768,-32768,-32768,-32768,   540,-32768,-32768,-32768,-32768,  1883,
+-32768,-32768,  2205,-32768,-32768,-32768,   161,    73,   208,   247,
+    73,-32768,    73,   247,    73,   790,-32768,-32768,-32768,-32768,
+-32768,-32768,   629,-32768,   361,-32768,   679,-32768,-32768,  2520,
+-32768,-32768,   669,-32768,-32768,   582,   582,-32768,-32768,-32768,
+    73,-32768,-32768,   588,   426,  2205,-32768,   591,  2520,   555,
+   553,-32768,-32768,   150,  1389,  2205,-32768,-32768,  1965,   598,
+   579,-32768,-32768,   581,   584,  2205,   606,   569,   571,  2150,
+    82,   650,-32768,   618,   585,-32768,   586,  1770,-32768,   647,
+  1148,    59,-32768,-32768,-32768,-32768,-32768,  2059,   223,   554,
+   224,-32768,  1762,-32768,-32768,-32768,   398,   161,-32768,-32768,
+-32768,   317,   325,    75,   679,-32768,-32768,  1265,-32768,-32768,
+  2205,-32768,    67,    58,-32768,-32768,  2428,  1265,-32768,-32768,
+  1327,-32768,  1427,-32768,-32768,  1907,  2205,   607,-32768,  2205,
+  2205,  1826,-32768,-32768,-32768,-32768,   590,  2205,   592,-32768,
+   612,    73,-32768,-32768,   629,-32768,   361,  1230,-32768,-32768,
+-32768,-32768,  2205,-32768,-32768,   504,   504,-32768,  1800,-32768,
+   597,-32768,-32768,   587,  2480,  2205,-32768,  2205,-32768,   603,
+  1427,-32768,-32768,   610,  2205,   672,-32768,   515,   615,   617,
+  2205,-32768,-32768,   620,-32768,  2205,-32768,   327,-32768,   205,
+   335,-32768,  1075,-32768,-32768,  1965,   623,-32768,-32768,-32768,
+-32768,  2480,  2410,-32768,-32768,-32768,   627,-32768,-32768,-32768,
+-32768,  2502,-32768,    29,-32768,   648,-32768,   648,-32768,-32768,
+-32768,   630,-32768,-32768,-32768,-32768,  2205,-32768,-32768,   697,
+   631,-32768,-32768,-32768,-32768,-32768,-32768,   643,-32768,   662,
+    43,   625,-32768,-32768,   503,   503,-32768,-32768,  2205,   697,
+   645,   697,-32768,-32768,  2205,   649,    49,-32768,-32768,   653,
+-32768,   423,   655,-32768,   235,   289,-32768,-32768,   658,   423,
+-32768,-32768,   235,   728,   742,-32768
 };
 
 static const short yypgoto[] = {-32768,
--32768,-32768,-32768,    54,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,   -23,-32768,   -38,   507,  -138,   397,-32768,-32768,
-   -65,-32768,   439,-32768,-32768,-32768,-32768,-32768,   274,  -182,
-  -188,   611,-32768,-32768,   464,-32768,   -10,   -66,   317,    28,
-   779,-32768,   380,    32,    -4,   -77,   638,    25,  -171,  -402,
-   -44,  -112,   -62,-32768,-32768,-32768,   -70,    17,    42,-32768,
-   538,-32768,   375,-32768,  -417,-32768,   294,-32768,  -407,-32768,
--32768,   360,-32768,-32768,-32768,-32768,-32768,-32768,   -46,   -26,
-    -6,   -18,-32768,-32768,-32768,   -41,-32768,-32768,-32768,-32768,
--32768,   503,   -25,-32768,   599,   510,   383,   605,   508,   -22,
-   -80,   -73,   -81,   -95,   491,-32768,-32768,  -149,-32768,-32768,
--32768,   576,  -288,-32768,   465,-32768,  -349,-32768,-32768,-32768,
--32768,   -97,  -322,  -460,   500,-32768,   243,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,   244,-32768,  -571,
-   194,-32768,   193,-32768,   575,-32768,  -248,-32768,-32768,-32768,
-   487,  -209,-32768,-32768,-32768,-32768,    11
+-32768,-32768,-32768,    93,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,   -23,-32768,   -38,   445,  -137,   478,-32768,-32768,
+   -57,-32768,   211,-32768,-32768,-32768,-32768,-32768,   194,  -199,
+  -193,   527,-32768,-32768,   394,-32768,    30,    -3,   237,    17,
+   705,-32768,   320,    24,    -4,   -89,   577,    39,  -165,  -417,
+   -43,  -100,   -59,-32768,-32768,-32768,   185,    62,   -22,-32768,
+   473,-32768,   315,-32768,  -430,-32768,   228,-32768,  -428,-32768,
+-32768,   297,-32768,-32768,-32768,-32768,-32768,-32768,   -42,   -73,
+    71,   -18,-32768,-32768,-32768,    11,-32768,-32768,-32768,-32768,
+-32768,   439,   -28,-32768,   542,   449,   333,   538,   448,   -49,
+   -66,   -81,   -86,   -48,   437,-32768,-32768,  -163,-32768,-32768,
+-32768,   514,  -337,-32768,   412,-32768,  -360,-32768,-32768,-32768,
+-32768,  -105,  -316,  -442,   442,-32768,   182,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,   184,-32768,  -524,
+   131,-32768,   133,-32768,   522,-32768,  -251,-32768,-32768,-32768,
+   443,  -212,-32768,-32768,-32768,-32768,     8
 };
 
 
-#define        YYLAST          2572
+#define        YYLAST          2574
 
 
 static const short yytable[] = {    87,
-    99,    47,   122,    62,    64,    66,   125,   141,   142,   232,
-    49,    51,    31,    31,   145,   133,   222,    52,    25,    25,
-   150,   299,   197,   331,   106,    35,    36,    37,   304,    21,
-    21,   185,   126,    22,    22,   225,    46,   137,    54,   282,
-   449,    31,   329,   429,   371,   208,    53,    25,   334,   530,
-    59,    60,   144,   578,   229,  -103,    32,   241,    21,    46,
-   149,   243,    22,   101,   321,   121,    58,    46,   656,   320,
-   676,   390,   688,   132,   216,   551,    58,    58,    58,   507,
-   201,   664,    38,   465,    67,   133,   206,    58,    59,    60,
-   210,   226,   291,    14,   602,    58,   232,    59,    60,   106,
-    59,    60,   180,   592,   487,   290,   657,   101,   677,   686,
-   689,   461,   301,   579,   463,   249,   190,   302,   590,   190,
-   549,    46,   222,   296,   121,    46,   596,   196,   299,    -1,
-   259,    61,   260,   222,   121,    -2,   365,   507,  -103,   222,
-   283,   599,   473,   132,   474,   244,    14,   111,   145,   564,
-   295,   133,   279,   280,   391,   171,   172,   173,    41,   101,
-   645,   330,    58,    39,   282,   327,   241,   335,   614,    63,
-   243,   381,    55,    58,    56,   341,    41,   101,    65,   101,
-   205,   112,   113,    33,    34,    14,   660,   388,   366,   631,
-   349,   663,   389,   665,   369,   333,   529,    40,   325,   104,
-   373,   673,   328,    14,   190,   107,   206,   441,   431,   108,
-   210,   421,    48,   432,   426,   581,   436,   189,   136,   340,
-   152,   342,    41,   434,   352,   441,   205,   138,   249,    25,
-   336,    58,   338,   697,   436,   189,    41,   434,   406,   143,
-   406,   121,    41,   116,   121,   121,   205,    41,   116,    14,
-    41,   116,   140,   622,   244,   695,   211,    14,   133,   376,
-   696,   358,   151,    14,   366,    58,   427,   196,   101,    14,
-   152,   435,   507,   180,    14,   112,   113,    14,   201,   187,
-   436,   189,    14,   186,   535,   435,   194,   539,   188,   189,
-    41,   117,   207,   517,   436,   189,   117,   383,   384,   117,
-   118,   238,   440,   444,    52,   118,   190,   254,   118,    25,
-   584,    14,   190,   520,   521,   227,   255,    14,   397,   228,
-   249,   679,   680,   217,   414,    54,  -106,  -106,  -106,  -106,
-    59,    60,  -106,    53,  -106,  -106,  -106,   466,   467,    42,
-   291,   468,   112,   113,   256,   233,   234,   398,    43,   246,
-  -106,   235,    41,   518,   386,   108,   205,   205,   387,   525,
-   -83,   535,   326,   284,   439,   443,   406,   522,   523,   524,
-   519,   101,   527,   528,   418,   526,   297,   298,   419,    14,
-    14,   129,   130,  -268,  -268,   452,   454,     9,    10,    11,
-   503,   257,   588,   370,   285,   485,   228,   289,   541,   437,
-   442,    42,   187,    25,   589,   502,  -106,   303,   108,   531,
-    43,   188,   189,   111,   133,   641,   643,   106,   540,   228,
-   108,   455,   369,   373,   534,   129,   130,   233,   234,   369,
-   373,     9,    10,    11,     5,   532,     7,   195,   248,   516,
-    59,    60,     9,    10,    11,    25,   112,   113,   503,   542,
-   185,    70,   442,   658,   317,   659,   505,   318,    13,   563,
-   506,    25,   324,   502,     5,     6,     7,     8,   121,   593,
-    46,   337,     9,    10,    11,   565,   297,   298,    58,   318,
-   420,   121,   587,    58,   520,   521,   154,   156,    13,   343,
-    14,   133,   344,   111,   571,   573,  -163,   613,   350,   206,
-   210,    52,   353,   232,  -163,   691,   206,   210,   401,  -270,
-  -270,   582,   583,   699,   600,   408,   357,   603,   606,   145,
-   627,   351,    54,   356,   616,   610,   516,   377,   617,   372,
-    53,   382,    25,   385,   437,   437,   409,   402,   412,    50,
-   623,   442,   442,   505,   222,  -163,   222,   506,   416,  -163,
-     5,     6,     7,     8,   619,  -305,   425,   649,     9,    10,
-    11,   433,   633,   128,   129,   130,   430,   448,   391,   182,
-     9,    10,    11,   640,    13,   451,    14,   464,   469,   470,
-   486,   253,   -31,   503,   545,   546,   547,   121,    14,    46,
-   258,   -32,   553,   556,   557,   261,   262,   559,   502,   560,
-   267,   268,   269,   270,   271,   272,   273,   274,   275,   276,
-   277,   278,   566,   561,   603,   164,   165,   166,   167,   168,
-   169,   170,   171,   172,   173,   572,   568,   181,   569,  -308,
-  -308,  -308,  -308,  -308,  -308,  -308,   682,  -308,  -308,  -308,
-  -308,  -308,   603,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
+    99,    47,    58,    62,    64,    66,   122,   125,   222,    31,
+    31,   304,    58,    58,    58,   141,   142,    52,    21,    21,
+   331,   232,   145,    58,   106,    22,    22,   299,   150,   450,
+   225,    58,   126,   149,   137,   532,   197,   329,    31,   185,
+   282,   371,   109,   334,   226,   241,   390,    21,   208,   430,
+    49,    51,   144,   243,    22,   320,   555,    59,    60,   582,
+    53,   180,   462,    25,    25,   464,  -103,   133,   660,   509,
+    35,    36,    37,    -1,   216,   321,    -2,   101,    59,    60,
+   201,    46,   680,    54,    59,    60,   206,    14,   692,   466,
+   210,   467,    25,    59,    60,    32,    14,   596,    58,   106,
+   290,   111,    14,   259,    46,   260,   661,   594,   232,    58,
+   121,   489,    46,    48,   222,   249,   606,   600,   132,   583,
+   681,   101,   365,    67,   603,   222,   693,   136,   509,   391,
+   381,   222,   668,   568,   299,   112,   113,   133,    61,   291,
+   283,   196,   244,   107,    38,  -172,  -172,   108,    39,  -103,
+   295,   325,   279,   280,   241,   328,   145,   618,    40,    63,
+   690,   190,   243,    41,   190,   282,    46,    58,   327,   121,
+    46,   104,   635,   101,    65,     5,    55,     7,    56,   121,
+   366,   143,   649,     9,    10,    11,   296,   553,   132,   138,
+    14,   101,   227,   101,   531,   333,   228,   422,   349,    13,
+   427,    58,   301,   133,    33,    34,   206,   302,   664,   475,
+   210,   476,   442,   667,   388,   669,   340,   140,   342,   389,
+   432,   437,   189,   677,   352,   433,    41,   435,   249,   235,
+   406,   111,   408,   108,  -163,    14,     5,    14,     7,   195,
+   151,   369,  -163,   180,     9,    10,    11,   373,   205,   190,
+   454,   244,    55,    14,    56,   701,   366,   187,   428,   376,
+    13,   358,   152,   626,   186,   509,   188,   189,   522,   523,
+   336,    14,   338,   386,    25,   436,    14,   387,   201,   112,
+   113,   196,   101,  -163,   437,   189,   121,  -163,   419,   121,
+   121,   537,   420,   187,    41,   519,   207,   415,   205,   194,
+   585,   211,   188,   189,    52,   152,   238,   112,   113,   588,
+   133,  -270,  -270,   246,   683,   684,   441,   445,   397,   230,
+   249,    14,   -19,   -19,   -19,   -19,   254,   233,   234,   255,
+   -19,   -19,   -19,   128,   129,   130,   256,   383,   384,   257,
+     9,    10,    11,    42,   326,   111,   -19,    53,  -163,   520,
+   -83,   190,    43,   253,    25,   527,  -163,   190,    14,   408,
+   284,   398,   258,    41,   440,   444,   699,   261,   262,   537,
+    54,   700,   267,   268,   269,   270,   271,   272,   273,   274,
+   275,   276,   277,   278,     5,   101,     7,   195,   291,   285,
+    14,   505,     9,    10,    11,   592,   487,  -163,   289,   228,
+    41,  -163,   -19,   593,   205,   645,   504,   108,    13,   228,
+    14,   533,    42,   647,   303,    58,   330,   108,   106,   111,
+    58,    43,   335,   544,   544,   453,   455,    14,    59,    60,
+   341,    70,   187,   317,   521,   456,   534,   518,   318,   528,
+   324,   188,   189,   337,   438,   443,   507,   343,    25,   442,
+   505,   546,   662,   508,   663,   344,   297,   298,   437,   189,
+   185,   567,   129,   130,   350,   504,   351,   133,     9,    10,
+    11,   369,   373,   370,   353,   354,   355,   569,   369,   373,
+   171,   172,   173,   239,   591,   356,     5,   401,     7,    98,
+   357,    25,   695,   372,     9,    10,    11,   377,   443,   382,
+   703,   206,   210,    52,   233,   234,   409,    25,   206,   210,
+    13,   112,   113,    15,   121,   385,    46,   402,   604,   232,
+    58,   607,   610,   297,   298,   518,   410,   543,   121,   614,
+   417,   145,   620,   621,   507,   413,   575,   577,   318,   421,
+   222,   508,   222,  -305,   627,   133,    53,    59,    60,   198,
+   199,   200,   248,   411,    59,    60,    41,   435,   623,   426,
+   205,   240,  -262,   418,   522,   523,   637,   154,   156,    54,
+   174,   175,   431,   176,   177,   178,   179,   644,   434,    25,
+   449,   438,   438,    14,    41,   116,   391,   505,   443,   443,
+   586,   587,   639,   468,   469,   217,   182,   470,  -106,  -106,
+  -106,  -106,   504,   452,  -106,   436,  -106,  -106,  -106,   460,
+   465,    14,   471,   472,   437,   189,    41,   116,   607,   488,
+   205,   541,  -106,   524,   525,   526,   479,   -31,   529,   530,
+   549,    41,   116,   117,   550,   551,   121,   -32,    46,   557,
+   686,   560,   118,    14,   561,   563,   607,   564,   217,   565,
+   542,  -328,  -328,  -328,  -328,   545,   570,   572,    14,  -328,
+  -328,  -328,   578,   573,   574,   117,   630,   605,   613,   458,
+   615,    68,   616,   460,   118,  -328,    69,    70,  -106,    71,
+   117,   629,   634,   536,   129,   130,   547,   636,   638,   118,
+     9,    10,    11,   640,   641,   479,   556,    72,   643,    15,
+   652,    73,    74,    75,   655,   670,   562,   682,   665,   674,
+    76,   174,   175,    77,   176,   177,   178,   179,    78,    79,
+    80,   678,   679,   688,    81,    82,   691,   705,   597,    83,
+   694,  -102,   146,   697,    68,     5,   702,     7,    98,    69,
+    70,   706,    71,     9,    10,    11,   322,   380,   479,    84,
+    85,   595,   459,   608,   584,   423,   617,   127,   479,    13,
+    72,   479,    15,   479,    73,    74,    75,   169,   170,   171,
+   172,   173,   300,    76,   378,   535,    77,   539,   602,   631,
+   554,    78,    79,    80,   414,   339,   407,    81,    82,   346,
+   305,   412,    83,     5,     6,     7,     8,   540,   424,   307,
+   368,     9,    10,    11,   451,   429,   632,   650,   633,   651,
+   687,   479,    84,    85,   689,   147,   653,    13,   374,    14,
+   181,   642,  -308,  -308,  -308,  -308,  -308,  -308,  -308,   448,
+  -308,  -308,  -308,  -308,  -308,     0,  -308,  -308,  -308,  -308,
   -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,  -308,
-  -308,  -308,   570,   574,     5,     6,     7,     8,  -308,   601,
-   446,  -308,     9,    10,    11,   609,  -308,  -308,  -308,   611,
-   612,   626,  -308,  -308,   625,   632,   630,  -308,    13,   634,
-    14,    59,    60,   198,   199,   200,   174,   175,   637,   176,
-   177,   178,   179,   354,   355,  -308,   182,  -308,  -308,   217,
-  -308,  -115,  -115,  -115,  -115,  -115,  -115,  -115,   635,  -115,
-  -115,  -115,  -115,  -115,   636,  -115,  -115,  -115,  -115,  -115,
+  -308,  -308,  -308,  -308,  -308,     0,     0,     0,     0,     0,
+     0,  -308,     0,     0,  -308,     0,     0,  -388,     0,  -308,
+  -308,  -308,     0,     0,     0,  -308,  -308,     0,     0,     0,
+  -308,     0,     0,     0,     0,     0,     0,     5,     6,     7,
+     8,     0,     0,     0,     0,     9,    10,    11,  -308,   182,
+  -308,  -308,   217,  -308,  -115,  -115,  -115,  -115,  -115,  -115,
+  -115,    13,  -115,  -115,  -115,  -115,  -115,     0,  -115,  -115,
   -115,  -115,  -115,  -115,  -115,  -115,  -115,  -115,  -115,  -115,
-   639,  -115,  -115,  -115,   648,   651,     5,     6,     7,     8,
-  -115,   675,   661,  -115,     9,    10,    11,   666,  -115,  -115,
-  -115,   670,   674,   678,  -115,  -115,   684,   687,   701,  -115,
-    13,   690,    14,   166,   167,   168,   169,   170,   171,   172,
-   173,   410,   169,   170,   171,   172,   173,  -115,  -115,  -115,
-  -115,   417,  -115,   693,   360,   698,  -328,  -328,  -328,  -328,
-  -328,  -328,  -328,   702,  -328,  -328,  -328,  -328,  -328,   380,
+  -115,  -115,  -115,     0,  -115,  -115,  -115,     0,     0,     5,
+     6,     7,     8,  -115,     0,   447,  -115,     9,    10,    11,
+     0,  -115,  -115,  -115,     0,     0,     0,  -115,  -115,     0,
+     0,     0,  -115,    13,     0,    14,     0,     0,     0,     5,
+     0,     7,    98,     0,     0,     0,     0,     9,    10,    11,
+  -115,  -115,  -115,  -115,   360,  -115,  -328,  -328,  -328,  -328,
+  -328,  -328,  -328,    13,  -328,  -328,  -328,  -328,  -328,     0,
   -328,  -328,  -328,  -328,  -328,  -328,  -328,  -328,  -328,  -328,
-  -328,  -328,  -328,  -328,  -328,   422,  -328,  -328,  -328,   604,
-   322,   127,   580,   300,   533,  -328,   537,   459,  -328,   378,
-   598,   550,   339,  -328,  -328,  -328,   538,   407,   413,  -328,
-  -328,   411,   423,   477,  -328,   217,   346,   450,  -328,  -328,
-  -328,  -328,   368,   428,   646,   647,  -328,  -328,  -328,   683,
-   685,   374,  -328,   447,  -328,  -328,     0,  -328,     0,     0,
-     0,     0,  -328,     0,     0,   217,     0,  -328,  -328,     0,
-     0,     0,  -328,  -328,     0,  -328,     0,     0,     0,  -328,
-   459,  -328,  -328,  -328,  -328,  -328,  -328,  -328,  -328,  -328,
-  -328,  -328,   543,  -328,     0,  -328,     0,  -328,  -328,  -328,
-     0,   477,   552,     0,     0,     0,  -328,     0,     0,  -328,
-     0,     0,   558,     0,  -328,  -328,  -328,     0,  -102,     0,
-  -328,  -328,     0,     0,     0,  -328,     0,     0,     5,   239,
-     7,    98,     5,     0,     7,    98,     9,    10,    11,     0,
-     9,    10,    11,  -328,  -301,  -328,  -328,     0,  -328,     0,
-     0,     0,    13,     0,   477,     0,    13,   591,     0,    15,
-     0,     5,   477,     7,   195,   477,     0,   477,     0,     9,
-    10,    11,   575,     0,  -328,  -328,     0,     0,     0,  -328,
-  -328,     0,  -328,     0,     0,    13,  -328,    14,  -328,  -328,
-  -328,  -328,  -328,  -328,  -328,  -328,  -328,  -328,  -328,     0,
-  -328,     0,  -328,     0,  -328,  -328,  -328,   240,  -262,   187,
-   628,     0,   629,  -328,     0,   477,  -328,     0,   188,   189,
-     0,  -328,  -328,  -328,     0,   638,     0,  -328,  -328,     0,
-     0,   305,  -328,   306,     5,     6,     7,     8,     0,     0,
-   307,     0,     9,    10,    11,     0,     0,     0,     0,     0,
-  -328,     0,  -328,  -328,   620,  -328,  -338,  -338,    13,     0,
-    14,  -338,  -338,     0,  -338,     0,     0,     0,  -338,     0,
-  -338,  -338,  -338,  -338,  -338,  -338,  -338,  -338,  -338,  -338,
-  -338,     0,  -338,     0,  -338,     0,  -338,  -338,  -338,     0,
-     0,     0,     0,     0,     0,  -338,   174,   175,  -338,   176,
-   177,   178,   179,  -338,  -338,  -338,     0,     0,  -388,  -338,
-  -338,     0,     0,   146,  -338,    68,     5,     0,     7,    98,
-    69,    70,     0,    71,     9,    10,    11,     0,     0,     0,
-     0,     0,  -338,     0,  -338,  -338,     0,  -338,     0,     0,
-    13,    72,     0,    15,     0,    73,    74,    75,   471,   111,
-   472,    60,  -163,     0,    76,    69,    70,    77,    71,     0,
-  -163,     0,    78,    79,    80,     0,     0,     0,    81,    82,
-     0,     0,     0,    83,     0,     0,    72,     0,    15,     0,
-    73,    74,    75,   112,   113,     0,     0,     0,     0,    76,
-     0,     0,    77,    84,    85,     0,   147,    78,    79,    80,
-     0,  -163,     0,    81,    82,  -163,     0,   473,    83,   474,
-   471,     0,   472,    60,     0,     0,     0,    69,    70,     0,
-    71,     0,     0,     0,     0,     0,     0,  -191,    84,    85,
-     0,   475,     0,     0,     0,     0,     0,     0,    72,     0,
-    15,     0,    73,    74,    75,     0,     0,     0,     0,     0,
-     0,    76,     0,     0,    77,     0,     0,     0,     0,    78,
-    79,    80,     0,     0,     0,    81,    82,     0,     0,   473,
-    83,   474,   471,     0,    68,     0,     0,     0,     0,    69,
-    70,     0,    71,     0,     0,     0,     0,     0,     0,  -259,
-    84,    85,     0,   475,     0,     0,     0,     0,     0,     0,
-    72,     0,    15,     0,    73,    74,    75,     0,     0,  -204,
-   457,     0,    68,    76,     0,     0,    77,    69,    70,     0,
-    71,    78,    79,    80,     0,     0,     0,    81,    82,     0,
-     0,  -204,    83,  -204,     0,     0,     0,     0,    72,     0,
-    15,     0,    73,    74,    75,     0,     0,     0,     0,     0,
-     0,    76,    84,    85,    77,   475,     0,     0,     0,    78,
-    79,    80,     0,     0,     0,    81,    82,   471,     0,    68,
-    83,     0,     0,     0,    69,    70,   110,    71,     0,   -27,
-   -27,   -27,   -27,     0,     0,     0,     0,   -27,   -27,   -27,
-    84,    85,     0,   458,     0,    72,     0,    15,     0,    73,
-    74,    75,   111,   -27,     0,  -163,     0,     0,    76,     0,
-     0,    77,     0,  -163,     0,     0,    78,    79,    80,     0,
-     0,     0,    81,    82,     0,     0,     0,    83,   167,   168,
-   169,   170,   171,   172,   173,     0,   112,   113,     0,     0,
-   236,     0,     0,   -23,   -23,   -23,   -23,    84,    85,     0,
-   475,   -23,   -23,   -23,  -163,     0,     0,     0,  -163,   -27,
-     0,     0,     0,     0,     0,     0,   111,   -23,   230,  -163,
-     0,   -19,   -19,   -19,   -19,     0,     0,  -163,    68,   -19,
-   -19,   -19,     0,    69,    70,     0,    71,     0,     0,     0,
-     0,     0,     0,     0,   111,   -19,     0,  -163,     0,     0,
-   112,   113,     0,     0,    72,  -163,    15,     0,    73,    74,
-    75,     0,     0,     0,     0,     0,     0,    76,  -163,     0,
-    77,     0,  -163,   -23,     0,    78,    79,   214,     0,     0,
-     0,    81,    82,    68,     0,     0,    83,     0,    69,    70,
-     0,    71,     0,     0,     0,     0,  -163,     0,     0,     0,
-  -163,   -19,     0,     0,     0,     0,    84,    85,     0,    72,
-   215,    15,     0,    73,    74,    75,     0,     0,     0,     0,
-     0,    68,    76,     0,     0,    77,    69,    70,     0,    71,
-    78,    79,    80,     0,     0,     0,    81,    82,     0,     0,
-     0,    83,     0,     0,     0,     0,     0,    72,     0,    15,
-     0,    73,    74,    75,     0,     0,     0,     0,     0,     0,
-    76,    84,    85,    77,     0,   294,     0,     0,    78,    79,
-    80,     0,     0,     0,    81,    82,    68,     0,     0,    83,
-     0,    69,    70,   305,    71,     0,     5,     6,     7,     8,
-     0,     0,   307,     0,     9,    10,    11,     0,     0,    84,
-    85,     0,    72,   316,    15,     0,    73,    74,    75,     0,
-    13,     0,    14,     0,    68,    76,     0,     0,    77,    69,
-    70,     0,    71,    78,    79,    80,     0,     0,     0,    81,
-    82,     0,     0,     0,    83,     0,     0,     0,     0,     0,
-    72,     0,    15,     0,    73,    74,    75,     0,     0,     0,
-     0,     0,     0,    76,    84,    85,    77,     0,   332,     0,
-  -388,    78,    79,    80,     0,     0,     0,    81,    82,    68,
-     0,     0,    83,     0,    69,    70,     0,    71,     5,    55,
-     7,    56,     0,     0,     0,     0,     9,    10,    11,     0,
-     0,     0,    84,    85,     0,    72,   375,    15,     0,    73,
-    74,    75,    13,     0,     0,     0,     0,    68,    76,     0,
-     0,    77,    69,    70,     0,    71,    78,    79,   585,     0,
-     0,     0,    81,    82,     0,     0,     0,    83,     0,     0,
-     0,     0,     0,    72,     0,    15,     0,    73,    74,    75,
-   607,     0,     0,     0,     0,     0,    76,    84,    85,    77,
-     0,   586,     0,   453,    78,    79,    80,     0,     0,     0,
-    81,    82,     0,     0,     0,    83,     0,   157,   158,   159,
-   608,   160,   161,   162,   163,   164,   165,   166,   167,   168,
-   169,   170,   171,   172,   173,    84,    85,     0,     0,   624,
-   472,   488,     6,     7,     8,    69,    70,     0,    71,     9,
-    10,    11,   489,     0,   490,   491,   492,   493,   494,   495,
-   496,   497,   498,   499,   500,    13,    72,    14,    15,     0,
-    73,    74,    75,     0,     0,     0,     0,     0,     0,    76,
-     0,     0,    77,     0,     0,     0,     0,    78,    79,    80,
-     0,     0,     0,    81,    82,     0,     0,     0,    83,   239,
+  -328,  -328,  -328,  -328,  -328,     0,  -328,  -328,  -328,     0,
+     0,     0,     0,     0,     0,  -328,     0,     0,  -328,     0,
+     0,     0,     0,  -328,  -328,  -328,     0,     0,     0,  -328,
+  -328,     0,     0,   305,  -328,   306,     5,     6,     7,     8,
+     0,     0,   307,     0,     9,    10,    11,     0,     0,     0,
+     0,     0,  -328,     0,  -328,  -328,   217,  -328,  -328,  -328,
+    13,     0,    14,  -328,  -328,     0,  -328,     0,     0,     0,
+  -328,     0,  -328,  -328,  -328,  -328,  -328,  -328,  -328,  -328,
+  -328,  -328,  -328,     0,  -328,     0,  -328,     0,  -328,  -328,
+  -328,   111,     0,     0,  -163,     0,     0,  -328,     0,     0,
+  -328,     0,  -163,     0,     0,  -328,  -328,  -328,     0,     0,
+  -388,  -328,  -328,     0,     0,     0,  -328,   166,   167,   168,
+   169,   170,   171,   172,   173,   112,   113,   167,   168,   169,
+   170,   171,   172,   173,  -328,  -301,  -328,  -328,   579,  -328,
+  -328,  -328,     0,  -163,     0,  -328,  -328,  -163,  -328,     0,
+     0,     0,  -328,     0,  -328,  -328,  -328,  -328,  -328,  -328,
+  -328,  -328,  -328,  -328,  -328,     0,  -328,     0,  -328,     0,
+  -328,  -328,  -328,     0,     0,     0,     0,     0,     0,  -328,
+     0,     0,  -328,     0,     0,     0,     0,  -328,  -328,  -328,
+     0,     0,     0,  -328,  -328,     0,     0,     0,  -328,   239,
      0,     0,     5,     0,     7,    98,     0,     0,     0,     0,
-     9,    10,    11,     0,     0,     0,   501,     0,    84,    85,
-     0,   391,   472,    60,     0,     0,    13,    69,    70,    15,
-    71,     0,     0,     0,   489,     0,   490,   491,   492,   493,
-   494,   495,   496,   497,   498,   499,   500,     0,    72,     0,
-    15,     0,    73,    74,    75,     0,     0,    68,     0,     0,
-     0,    76,    69,    70,    77,    71,     0,     0,     0,    78,
+     9,    10,    11,     0,     0,     0,  -328,     0,  -328,  -328,
+   624,  -328,  -338,  -338,     0,     0,    13,  -338,  -338,    15,
+  -338,     0,     0,     0,  -338,     0,  -338,  -338,  -338,  -338,
+  -338,  -338,  -338,  -338,  -338,  -338,  -338,     0,  -338,     0,
+  -338,     0,  -338,  -338,  -338,   473,     0,   474,    60,     0,
+     0,  -338,    69,    70,  -338,    71,     0,     0,     0,  -338,
+  -338,  -338,     0,     0,     0,  -338,  -338,     0,     0,     0,
+  -338,     0,     0,    72,     0,    15,     0,    73,    74,    75,
+     0,     0,     0,     0,     0,     0,    76,     0,  -338,    77,
+  -338,  -338,     0,  -338,    78,    79,    80,     0,     0,     0,
+    81,    82,     0,     0,   475,    83,   476,   473,     0,   474,
+    60,     0,     0,     0,    69,    70,     0,    71,     0,     0,
+     0,     0,     0,     0,  -191,    84,    85,     0,   477,     0,
+     0,     0,     0,     0,     0,    72,     0,    15,     0,    73,
+    74,    75,     0,     0,     0,     0,     0,     0,    76,     0,
+     0,    77,     0,     0,     0,     0,    78,    79,    80,     0,
+     0,     0,    81,    82,     0,     0,   475,    83,   476,   473,
+     0,    68,     0,     0,     0,     0,    69,    70,     0,    71,
+     0,     0,     0,     0,     0,     0,  -259,    84,    85,     0,
+   477,     0,     0,     0,     0,     0,     0,    72,     0,    15,
+     0,    73,    74,    75,     0,     0,  -204,   473,     0,    68,
+    76,     0,     0,    77,    69,    70,     0,    71,    78,    79,
+    80,     0,     0,     0,    81,    82,     0,     0,  -204,    83,
+  -204,     0,     0,     0,     0,    72,     0,    15,     0,    73,
+    74,    75,     0,     0,     0,     0,     0,     0,    76,    84,
+    85,    77,   477,     0,     0,     0,    78,    79,    80,     0,
+     0,     0,    81,    82,     0,   110,     0,    83,   -27,   -27,
+   -27,   -27,     0,     0,     0,     0,   -27,   -27,   -27,     0,
+     0,     0,     0,     0,     0,     0,     0,    84,    85,     0,
+   477,   111,   -27,   236,  -163,     0,   -23,   -23,   -23,   -23,
+     0,     0,  -163,    68,   -23,   -23,   -23,     0,    69,    70,
+     0,    71,     0,     0,     0,     0,     0,     0,     0,   111,
+   -23,     0,  -163,     0,     0,   112,   113,     0,     0,    72,
+  -163,    15,     0,    73,    74,    75,     0,     0,     0,     0,
+     0,     0,    76,  -163,     0,    77,     0,  -163,   -27,     0,
+    78,    79,   214,   112,   113,     0,    81,    82,    68,     0,
+     0,    83,     0,    69,    70,     0,    71,     0,     0,     0,
+     0,  -163,     0,     0,     0,  -163,   -23,     0,     0,     0,
+     0,    84,    85,     0,    72,   215,    15,     0,    73,    74,
+    75,     0,     0,     0,     0,     0,    68,    76,     0,     0,
+    77,    69,    70,     0,    71,    78,    79,    80,     0,     0,
+     0,    81,    82,     0,     0,     0,    83,     0,     0,     0,
+     0,     0,    72,     0,    15,     0,    73,    74,    75,     0,
+     0,     0,     0,     0,     0,    76,    84,    85,    77,     0,
+   294,     0,     0,    78,    79,    80,     0,     0,     0,    81,
+    82,    68,     0,     0,    83,     0,    69,    70,     0,    71,
+     5,     6,     7,     8,     0,     0,     0,     0,     9,    10,
+    11,     0,     0,     0,    84,    85,     0,    72,   316,    15,
+     0,    73,    74,    75,    13,     0,    14,     0,     0,    68,
+    76,     0,     0,    77,    69,    70,     0,    71,    78,    79,
+    80,     0,     0,     0,    81,    82,     0,     0,     0,    83,
+     0,     0,     0,     0,     0,    72,     0,    15,     0,    73,
+    74,    75,     0,     0,     0,     0,     0,     0,    76,    84,
+    85,    77,     0,   332,     0,    50,    78,    79,    80,     0,
+     0,     0,    81,    82,    68,     0,     0,    83,     0,    69,
+    70,     0,    71,     5,     6,     7,     8,     0,     0,     0,
+     0,     9,    10,    11,     0,     0,     0,    84,    85,     0,
+    72,   375,    15,     0,    73,    74,    75,    13,     0,    14,
+     0,     0,    68,    76,     0,     0,    77,    69,    70,     0,
+    71,    78,    79,   589,     0,     0,     0,    81,    82,     0,
+     0,     0,    83,     0,     0,     0,     0,     0,    72,     0,
+    15,     0,    73,    74,    75,   611,     0,     0,     0,     0,
+     0,    76,    84,    85,    77,     0,   590,     0,   576,    78,
     79,    80,     0,     0,     0,    81,    82,     0,     0,     0,
-    83,     0,     0,    72,     0,    15,     0,    73,    74,    75,
-     0,     0,     0,     0,     0,     0,    76,     0,   501,    77,
-    84,    85,     0,   391,    78,    79,    80,     0,     0,     0,
-    81,    82,     0,     0,     0,    83,    68,     5,     6,     7,
-     8,    69,    70,     0,    71,     9,    10,    11,     0,     0,
-     0,     0,     0,     0,     0,    84,    85,     0,   348,     0,
-     0,    13,    72,    14,    15,     0,    73,    74,    75,     0,
-     0,     0,     0,     0,     0,    76,     0,     0,    77,     0,
-     0,     0,     0,    78,    79,    80,     0,     0,     0,    81,
-    82,     0,    68,     5,    83,     7,    98,    69,    70,     0,
-    71,     9,    10,    11,   165,   166,   167,   168,   169,   170,
-   171,   172,   173,     0,    84,    85,     0,    13,    72,     0,
-    15,     0,    73,    74,    75,     0,     0,    68,     0,     0,
-     0,    76,    69,    70,    77,    71,     0,     0,     0,    78,
-    79,    80,     0,     0,     0,    81,    82,     0,     0,     0,
-    83,     0,     0,    72,     0,    15,     0,    73,    74,    75,
-     0,     0,     0,     0,     0,     0,    76,     0,     0,    77,
-    84,    85,     0,     0,    78,    79,    80,     0,     0,     0,
-    81,    82,    68,     0,     0,    83,     0,    69,    70,     0,
-    71,     5,     6,     7,     8,     0,     0,     0,     0,     9,
-    10,    11,     0,   562,     0,    84,    85,     0,    72,     0,
-    15,     0,    73,    74,    75,    13,     0,    68,     0,     0,
-     0,    76,    69,    70,    77,    71,     0,     0,     0,    78,
-    79,    80,     0,     0,     0,    81,    82,     0,     0,     0,
-    83,     0,     0,    72,     0,    15,     0,    73,    74,    75,
-     0,     0,     0,     0,     0,     0,    76,     0,     0,    77,
-    84,    85,     0,     0,    78,    79,    80,     0,     0,     0,
-    81,    82,    68,     0,     0,   153,     0,    69,    70,   159,
-    71,   160,   161,   162,   163,   164,   165,   166,   167,   168,
-   169,   170,   171,   172,   173,    84,    85,     0,    72,     0,
-    15,     0,    73,    74,    75,     0,     0,   379,     0,     0,
-     0,    76,    69,    70,    77,    71,     0,     0,     0,    78,
+    83,     0,   157,   158,   159,   612,   160,   161,   162,   163,
+   164,   165,   166,   167,   168,   169,   170,   171,   172,   173,
+    84,    85,     0,     0,   628,   474,   490,     6,     7,     8,
+    69,    70,     0,    71,     9,    10,    11,   491,     0,   492,
+   493,   494,   495,   496,   497,   498,   499,   500,   501,   502,
+    13,    72,    14,    15,     0,    73,    74,    75,     0,     0,
+     5,     6,     7,     8,    76,     0,     0,    77,     9,    10,
+    11,     0,    78,    79,    80,     0,     0,     0,    81,    82,
+     0,     0,     0,    83,    13,   159,    14,   160,   161,   162,
+   163,   164,   165,   166,   167,   168,   169,   170,   171,   172,
+   173,   503,     0,    84,    85,     0,   391,   474,    60,     0,
+     0,     0,    69,    70,     0,    71,     0,     0,     0,   491,
+     0,   492,   493,   494,   495,   496,   497,   498,   499,   500,
+   501,   502,     0,    72,     0,    15,     0,    73,    74,    75,
+     0,     0,    68,     0,     0,     0,    76,    69,    70,    77,
+    71,     0,     0,     0,    78,    79,    80,     0,     0,     0,
+    81,    82,     0,     0,     0,    83,     0,     0,    72,     0,
+    15,     0,    73,    74,    75,     0,     0,     0,     0,     0,
+     0,    76,     0,   503,    77,    84,    85,     0,   391,    78,
     79,    80,     0,     0,     0,    81,    82,     0,     0,     0,
-   155,     0,     0,    72,     0,    15,     0,    73,    74,    75,
-     0,     0,     0,     0,     0,     0,    76,     0,     0,    77,
-    84,    85,     0,     0,    78,    79,    80,     0,     0,     0,
-    81,    82,     0,     0,     4,    83,  -119,     5,     6,     7,
-     8,     0,     0,     0,     0,     9,    10,    11,     0,     0,
-     0,     0,     0,     0,     0,    84,    85,     0,     0,     0,
-    12,    13,     0,    14,    15,   161,   162,   163,   164,   165,
-   166,   167,   168,   169,   170,   171,   172,   173,     0,     0,
-     0,     0,   594,     0,     0,  -119,     0,     0,     0,     0,
-     0,   157,   158,   159,  -119,   160,   161,   162,   163,   164,
-   165,   166,   167,   168,   169,   170,   171,   172,   173,   157,
-   158,   159,    16,   160,   161,   162,   163,   164,   165,   166,
-   167,   168,   169,   170,   171,   172,   173,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,   157,   158,   159,   650,
-   160,   161,   162,   163,   164,   165,   166,   167,   168,   169,
-   170,   171,   172,   173,    14,     0,     0,   595,     0,     0,
-     0,   157,   158,   159,     0,   160,   161,   162,   163,   164,
+    83,    68,     5,     6,     7,     8,    69,    70,     0,    71,
+     9,    10,    11,     0,     0,     0,     0,     0,     0,     0,
+    84,    85,     0,   348,     0,     0,    13,    72,    14,    15,
+     0,    73,    74,    75,     0,     0,     0,     0,     0,     0,
+    76,     0,     0,    77,     0,     0,     0,     0,    78,    79,
+    80,     0,     0,     0,    81,    82,     0,    68,     5,    83,
+     7,    98,    69,    70,     0,    71,     9,    10,    11,   164,
+   165,   166,   167,   168,   169,   170,   171,   172,   173,    84,
+    85,     0,    13,    72,     0,    15,     0,    73,    74,    75,
+     0,     0,    68,     0,     0,     0,    76,    69,    70,    77,
+    71,     0,     0,     0,    78,    79,    80,     0,     0,     0,
+    81,    82,     0,     0,     0,    83,     0,     0,    72,     0,
+    15,     0,    73,    74,    75,     0,     0,     0,     0,     0,
+     0,    76,     0,     0,    77,    84,    85,     0,     0,    78,
+    79,    80,     0,     0,     0,    81,    82,    68,     0,     0,
+    83,     0,    69,    70,     0,    71,   162,   163,   164,   165,
+   166,   167,   168,   169,   170,   171,   172,   173,   566,     0,
+    84,    85,     0,    72,     0,    15,     0,    73,    74,    75,
+     0,     0,    68,     0,     0,     0,    76,    69,    70,    77,
+    71,     0,     0,     0,    78,    79,    80,     0,     0,     0,
+    81,    82,     0,     0,     0,    83,     0,     0,    72,     0,
+    15,     0,    73,    74,    75,     0,     0,     0,     0,     0,
+     0,    76,     0,     0,    77,    84,    85,     0,     0,    78,
+    79,    80,     0,     0,     0,    81,    82,    68,     0,     0,
+   153,     0,    69,    70,     0,    71,   161,   162,   163,   164,
    165,   166,   167,   168,   169,   170,   171,   172,   173,     0,
-     0,     0,   347,   157,   158,   159,   655,   160,   161,   162,
-   163,   164,   165,   166,   167,   168,   169,   170,   171,   172,
-   173,   157,   158,   159,     0,   160,   161,   162,   163,   164,
-   165,   166,   167,   168,   169,   170,   171,   172,   173,   162,
+    84,    85,     0,    72,     0,    15,     0,    73,    74,    75,
+     0,     0,   379,     0,     0,     0,    76,    69,    70,    77,
+    71,     0,     0,     0,    78,    79,    80,     0,     0,     0,
+    81,    82,     0,     0,     0,   155,     0,     0,    72,     0,
+    15,     0,    73,    74,    75,     0,     0,     0,     0,     0,
+     0,    76,     0,     0,    77,    84,    85,     0,     0,    78,
+    79,    80,     0,     0,     0,    81,    82,     0,     0,     4,
+    83,  -119,     5,     6,     7,     8,     0,     0,     0,     0,
+     9,    10,    11,     0,     0,     0,     0,     0,     0,     0,
+    84,    85,     0,     0,     0,    12,    13,     0,    14,    15,
    163,   164,   165,   166,   167,   168,   169,   170,   171,   172,
-   173,   163,   164,   165,   166,   167,   168,   169,   170,   171,
-   172,   173
+   173,     0,     0,     0,     0,     0,     0,   598,     0,     0,
+  -119,     0,     0,     0,     0,     0,   157,   158,   159,  -119,
+   160,   161,   162,   163,   164,   165,   166,   167,   168,   169,
+   170,   171,   172,   173,   157,   158,   159,    16,   160,   161,
+   162,   163,   164,   165,   166,   167,   168,   169,   170,   171,
+   172,   173,   165,   166,   167,   168,   169,   170,   171,   172,
+   173,   157,   158,   159,   654,   160,   161,   162,   163,   164,
+   165,   166,   167,   168,   169,   170,   171,   172,   173,    14,
+     0,     0,   599,     0,     0,     0,   157,   158,   159,     0,
+   160,   161,   162,   163,   164,   165,   166,   167,   168,   169,
+   170,   171,   172,   173,     0,     0,     0,   347,   157,   158,
+   159,   659,   160,   161,   162,   163,   164,   165,   166,   167,
+   168,   169,   170,   171,   172,   173,   157,   158,   159,     0,
+   160,   161,   162,   163,   164,   165,   166,   167,   168,   169,
+   170,   171,   172,   173
 };
 
 static const short yycheck[] = {    38,
-    39,    20,    49,    27,    28,    29,    51,    73,    74,   122,
-    21,    22,     2,     3,    80,    57,   114,    22,     2,     3,
-    86,   193,   103,   233,    43,     9,    10,    11,   211,     2,
-     3,    97,    51,     2,     3,   117,    20,    63,    22,   178,
-   390,    31,   231,   366,   293,   108,    22,    31,   237,   452,
-     3,     4,    76,     1,   121,     1,     3,   135,    31,    43,
-    83,   135,    31,    39,    10,    49,    25,    51,    40,   219,
-    40,     1,    40,    57,   113,   483,    35,    36,    37,   429,
-   104,   653,    61,   406,    31,   127,   105,    46,     3,     4,
-   109,   118,   188,    30,   555,    54,   209,     3,     4,   118,
-     3,     4,     9,    40,   427,   187,    78,    83,    78,   681,
-    78,   400,    78,    61,   403,   139,   100,    83,   536,   103,
-    38,   105,   220,   190,   108,   109,   544,   103,   300,     0,
-   153,    84,   155,   231,   118,     0,   286,   487,    84,   237,
-   179,   549,    60,   127,    62,   135,    30,    27,   214,    52,
-   189,   193,   176,   177,    84,    52,    53,    54,     3,   135,
-   621,   232,   121,    61,   303,   228,   244,   238,   571,    84,
-   244,    78,     5,   132,     7,   246,     3,   153,    84,   155,
-     7,    61,    62,    79,    80,    30,   647,    78,   286,   597,
-   256,   652,    83,   654,   290,   234,   445,    61,   225,    61,
-   296,   662,   229,    30,   188,    79,   225,    52,    78,    83,
-   229,   361,    79,    83,   364,    78,    61,    62,    84,   245,
-    83,   247,     3,     4,   263,    52,     7,    84,   252,   213,
-   241,   190,   243,   694,    61,    62,     3,     4,   336,    61,
-   338,   225,     3,     4,   228,   229,     7,     3,     4,    30,
-     3,     4,    84,   576,   244,    78,    61,    30,   300,   298,
-    83,   285,    78,    30,   362,   224,   364,   243,   244,    30,
-    83,    52,   622,     9,    30,    61,    62,    30,   302,    52,
-    61,    62,    30,    78,   456,    52,    78,    40,    61,    62,
-     3,    52,    78,   432,    61,    62,    52,   308,   309,    52,
-    61,    80,   383,   384,   309,    61,   290,    78,    61,   293,
-   520,    30,   296,    61,    62,    79,    78,    30,   323,    83,
-   344,   671,   672,     1,   347,   309,     4,     5,     6,     7,
-     3,     4,    10,   309,    12,    13,    14,   408,   409,    52,
-   436,   412,    61,    62,    78,    61,    62,   323,    61,    80,
-    28,    79,     3,   435,    79,    83,     7,     7,    83,   441,
-    40,   533,    78,    78,   383,   384,   464,   438,   439,   440,
-   437,   347,   443,   444,    79,   442,    61,    62,    83,    30,
-    30,     6,     7,    79,    80,   396,   397,    12,    13,    14,
-   429,    79,    79,    78,    32,   419,    83,    78,   469,   383,
-   384,    52,    52,   387,    79,   429,    84,    61,    83,   454,
-    61,    61,    62,    27,   456,    79,    79,   436,   465,    83,
-    83,   397,   518,   519,     5,     6,     7,    61,    62,   525,
-   526,    12,    13,    14,     4,   454,     6,     7,     1,   429,
-     3,     4,    12,    13,    14,   429,    61,    62,   487,   473,
-   516,     9,   436,   642,    85,   644,   429,    79,    28,   498,
-   429,   445,    38,   487,     4,     5,     6,     7,   452,   540,
-   454,    79,    12,    13,    14,   499,    61,    62,   437,    79,
-    80,   465,   521,   442,    61,    62,    90,    91,    28,    38,
-    30,   533,    83,    27,   505,   506,    30,   568,    78,   518,
-   519,   506,    40,   616,    38,   688,   525,   526,    38,    79,
-    80,   518,   519,   696,   553,    80,    85,   556,   557,   585,
-   591,    78,   506,    78,   571,   564,   516,    78,   573,    85,
-   506,    78,   516,    78,   518,   519,    80,    85,    80,    79,
-   579,   525,   526,   516,   642,    79,   644,   516,    40,    83,
-     4,     5,     6,     7,   573,    80,    80,   628,    12,    13,
-    14,    78,   601,     5,     6,     7,    85,     3,    84,    80,
-    12,    13,    14,   612,    28,    79,    30,    83,    80,    78,
-    80,   143,    40,   622,    40,    80,    83,   571,    30,   573,
-   152,    40,    61,    61,    61,   157,   158,    40,   622,    79,
-   162,   163,   164,   165,   166,   167,   168,   169,   170,   171,
-   172,   173,     7,    79,   653,    45,    46,    47,    48,    49,
-    50,    51,    52,    53,    54,    79,    40,     1,    79,     3,
-     4,     5,     6,     7,     8,     9,   675,    11,    12,    13,
-    14,    15,   681,    17,    18,    19,    20,    21,    22,    23,
-    24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
-    34,    35,    79,    16,     4,     5,     6,     7,    42,    61,
-    10,    45,    12,    13,    14,    79,    50,    51,    52,    79,
-    61,    80,    56,    57,    85,    78,    80,    61,    28,    17,
-    30,     3,     4,     5,     6,     7,    56,    57,    78,    59,
-    60,    61,    62,   265,   266,    79,    80,    81,    82,     1,
-    84,     3,     4,     5,     6,     7,     8,     9,    78,    11,
-    12,    13,    14,    15,    79,    17,    18,    19,    20,    21,
-    22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
-    79,    33,    34,    35,    78,    78,     4,     5,     6,     7,
-    42,    61,    79,    45,    12,    13,    14,     9,    50,    51,
-    52,    79,    79,    83,    56,    57,    79,    78,     0,    61,
-    28,    78,    30,    47,    48,    49,    50,    51,    52,    53,
-    54,   343,    50,    51,    52,    53,    54,    79,    80,    81,
-    82,   353,    84,    79,     1,    79,     3,     4,     5,     6,
-     7,     8,     9,     0,    11,    12,    13,    14,    15,   303,
-    17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-    27,    28,    29,    30,    31,   362,    33,    34,    35,   556,
-   220,    53,   516,   196,   455,    42,   462,   399,    45,   302,
-   547,   482,   244,    50,    51,    52,   464,   338,   346,    56,
-    57,   344,   362,   415,    61,     1,   252,   393,     4,     5,
-     6,     7,   287,   364,   622,   622,    12,    13,    14,   676,
-   678,   297,    79,   387,    81,    82,    -1,    84,    -1,    -1,
-    -1,    -1,    28,    -1,    -1,     1,    -1,     3,     4,    -1,
-    -1,    -1,     8,     9,    -1,    11,    -1,    -1,    -1,    15,
-   462,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-    26,    27,   474,    29,    -1,    31,    -1,    33,    34,    35,
-    -1,   483,   484,    -1,    -1,    -1,    42,    -1,    -1,    45,
-    -1,    -1,   494,    -1,    50,    51,    52,    -1,    84,    -1,
-    56,    57,    -1,    -1,    -1,    61,    -1,    -1,     4,     1,
-     6,     7,     4,    -1,     6,     7,    12,    13,    14,    -1,
-    12,    13,    14,    79,    80,    81,    82,    -1,    84,    -1,
-    -1,    -1,    28,    -1,   536,    -1,    28,   539,    -1,    31,
-    -1,     4,   544,     6,     7,   547,    -1,   549,    -1,    12,
-    13,    14,     1,    -1,     3,     4,    -1,    -1,    -1,     8,
-     9,    -1,    11,    -1,    -1,    28,    15,    30,    17,    18,
-    19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
-    29,    -1,    31,    -1,    33,    34,    35,    79,    80,    52,
-   592,    -1,   594,    42,    -1,   597,    45,    -1,    61,    62,
-    -1,    50,    51,    52,    -1,   607,    -1,    56,    57,    -1,
-    -1,     1,    61,     3,     4,     5,     6,     7,    -1,    -1,
-    10,    -1,    12,    13,    14,    -1,    -1,    -1,    -1,    -1,
-    79,    -1,    81,    82,     1,    84,     3,     4,    28,    -1,
-    30,     8,     9,    -1,    11,    -1,    -1,    -1,    15,    -1,
+    39,    20,    25,    27,    28,    29,    49,    51,   114,     2,
+     3,   211,    35,    36,    37,    73,    74,    22,     2,     3,
+   233,   122,    80,    46,    43,     2,     3,   193,    86,   390,
+   117,    54,    51,    83,    63,   453,   103,   231,    31,    97,
+   178,   293,    46,   237,   118,   135,     1,    31,   108,   366,
+    21,    22,    76,   135,    31,   219,   485,     3,     4,     1,
+    22,     9,   400,     2,     3,   403,     1,    57,    40,   430,
+     9,    10,    11,     0,   113,    10,     0,    39,     3,     4,
+   104,    20,    40,    22,     3,     4,   105,    30,    40,   406,
+   109,   408,    31,     3,     4,     3,    30,    40,   121,   118,
+   187,    27,    30,   153,    43,   155,    78,   538,   209,   132,
+    49,   428,    51,    79,   220,   139,   559,   548,    57,    61,
+    78,    83,   286,    31,   553,   231,    78,    84,   489,    84,
+    78,   237,   657,    52,   300,    61,    62,   127,    84,   188,
+   179,   103,   135,    79,    61,    79,    80,    83,    61,    84,
+   189,   225,   176,   177,   244,   229,   214,   575,    61,    84,
+   685,   100,   244,     3,   103,   303,   105,   190,   228,   108,
+   109,    61,   601,   135,    84,     4,     5,     6,     7,   118,
+   286,    61,   625,    12,    13,    14,   190,    38,   127,    84,
+    30,   153,    79,   155,   446,   234,    83,   361,   256,    28,
+   364,   224,    78,   193,    79,    80,   225,    83,   651,    60,
+   229,    62,    52,   656,    78,   658,   245,    84,   247,    83,
+    78,    61,    62,   666,   263,    83,     3,     4,   252,    79,
+   336,    27,   338,    83,    30,    30,     4,    30,     6,     7,
+    78,   290,    38,     9,    12,    13,    14,   296,     7,   188,
+    79,   244,     5,    30,     7,   698,   362,    52,   364,   298,
+    28,   285,    83,   580,    78,   626,    61,    62,    61,    62,
+   241,    30,   243,    79,   213,    52,    30,    83,   302,    61,
+    62,   243,   244,    79,    61,    62,   225,    83,    79,   228,
+   229,   457,    83,    52,     3,   433,    78,   347,     7,    78,
+    78,    61,    61,    62,   309,    83,    80,    61,    62,   522,
+   300,    79,    80,    80,   675,   676,   383,   384,   323,     1,
+   344,    30,     4,     5,     6,     7,    78,    61,    62,    78,
+    12,    13,    14,     5,     6,     7,    78,   308,   309,    79,
+    12,    13,    14,    52,    78,    27,    28,   309,    30,   436,
+    40,   290,    61,   143,   293,   442,    38,   296,    30,   465,
+    78,   323,   152,     3,   383,   384,    78,   157,   158,   535,
+   309,    83,   162,   163,   164,   165,   166,   167,   168,   169,
+   170,   171,   172,   173,     4,   347,     6,     7,   437,    32,
+    30,   430,    12,    13,    14,    79,   420,    79,    78,    83,
+     3,    83,    84,    79,     7,    79,   430,    83,    28,    83,
+    30,   455,    52,    79,    61,   438,   232,    83,   437,    27,
+   443,    61,   238,   466,   467,   396,   397,    30,     3,     4,
+   246,     9,    52,    85,   438,   397,   455,   430,    79,   443,
+    38,    61,    62,    79,   383,   384,   430,    38,   387,    52,
+   489,   475,   646,   430,   648,    83,    61,    62,    61,    62,
+   518,   500,     6,     7,    78,   489,    78,   457,    12,    13,
+    14,   520,   521,    78,    40,   265,   266,   501,   527,   528,
+    52,    53,    54,     1,   523,    78,     4,    38,     6,     7,
+    85,   430,   692,    85,    12,    13,    14,    78,   437,    78,
+   700,   520,   521,   508,    61,    62,    80,   446,   527,   528,
+    28,    61,    62,    31,   453,    78,   455,    85,   557,   620,
+   543,   560,   561,    61,    62,   518,    80,   466,   467,   568,
+    40,   589,   575,   577,   518,    80,   507,   508,    79,    80,
+   646,   518,   648,    80,   583,   535,   508,     3,     4,     5,
+     6,     7,     1,   343,     3,     4,     3,     4,   577,    80,
+     7,    79,    80,   353,    61,    62,   605,    90,    91,   508,
+    56,    57,    85,    59,    60,    61,    62,   616,    78,   518,
+     3,   520,   521,    30,     3,     4,    84,   626,   527,   528,
+   520,   521,    78,   409,   410,     1,    80,   413,     4,     5,
+     6,     7,   626,    79,    10,    52,    12,    13,    14,   399,
+    83,    30,    80,    78,    61,    62,     3,     4,   657,    80,
+     7,    40,    28,   439,   440,   441,   416,    40,   444,   445,
+    40,     3,     4,    52,    80,    83,   575,    40,   577,    61,
+   679,    61,    61,    30,    61,    40,   685,    79,     1,    79,
+   466,     4,     5,     6,     7,   471,     7,    40,    30,    12,
+    13,    14,    16,    79,    79,    52,    80,    61,    79,     1,
+    79,     3,    61,   463,    61,    28,     8,     9,    84,    11,
+    52,    85,    80,     5,     6,     7,   476,    78,    17,    61,
+    12,    13,    14,    79,    78,   485,   486,    29,    79,    31,
+    78,    33,    34,    35,    78,     9,   496,    83,    79,    79,
+    42,    56,    57,    45,    59,    60,    61,    62,    50,    51,
+    52,    79,    61,    79,    56,    57,    78,     0,   544,    61,
+    78,    84,     1,    79,     3,     4,    79,     6,     7,     8,
+     9,     0,    11,    12,    13,    14,   220,   303,   538,    81,
+    82,   541,    84,   560,   518,   362,   572,    53,   548,    28,
+    29,   551,    31,   553,    33,    34,    35,    50,    51,    52,
+    53,    54,   196,    42,   302,   456,    45,   463,   551,   595,
+   484,    50,    51,    52,   346,   244,   338,    56,    57,   252,
+     1,   344,    61,     4,     5,     6,     7,   465,   362,    10,
+   287,    12,    13,    14,   393,   364,   596,   626,   598,   626,
+   680,   601,    81,    82,   682,    84,   632,    28,   297,    30,
+     1,   611,     3,     4,     5,     6,     7,     8,     9,   387,
+    11,    12,    13,    14,    15,    -1,    17,    18,    19,    20,
+    21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
+    31,    32,    33,    34,    35,    -1,    -1,    -1,    -1,    -1,
+    -1,    42,    -1,    -1,    45,    -1,    -1,    78,    -1,    50,
+    51,    52,    -1,    -1,    -1,    56,    57,    -1,    -1,    -1,
+    61,    -1,    -1,    -1,    -1,    -1,    -1,     4,     5,     6,
+     7,    -1,    -1,    -1,    -1,    12,    13,    14,    79,    80,
+    81,    82,     1,    84,     3,     4,     5,     6,     7,     8,
+     9,    28,    11,    12,    13,    14,    15,    -1,    17,    18,
+    19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
+    29,    30,    31,    -1,    33,    34,    35,    -1,    -1,     4,
+     5,     6,     7,    42,    -1,    10,    45,    12,    13,    14,
+    -1,    50,    51,    52,    -1,    -1,    -1,    56,    57,    -1,
+    -1,    -1,    61,    28,    -1,    30,    -1,    -1,    -1,     4,
+    -1,     6,     7,    -1,    -1,    -1,    -1,    12,    13,    14,
+    79,    80,    81,    82,     1,    84,     3,     4,     5,     6,
+     7,     8,     9,    28,    11,    12,    13,    14,    15,    -1,
     17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-    27,    -1,    29,    -1,    31,    -1,    33,    34,    35,    -1,
-    -1,    -1,    -1,    -1,    -1,    42,    56,    57,    45,    59,
-    60,    61,    62,    50,    51,    52,    -1,    -1,    78,    56,
-    57,    -1,    -1,     1,    61,     3,     4,    -1,     6,     7,
-     8,     9,    -1,    11,    12,    13,    14,    -1,    -1,    -1,
-    -1,    -1,    79,    -1,    81,    82,    -1,    84,    -1,    -1,
-    28,    29,    -1,    31,    -1,    33,    34,    35,     1,    27,
-     3,     4,    30,    -1,    42,     8,     9,    45,    11,    -1,
-    38,    -1,    50,    51,    52,    -1,    -1,    -1,    56,    57,
-    -1,    -1,    -1,    61,    -1,    -1,    29,    -1,    31,    -1,
-    33,    34,    35,    61,    62,    -1,    -1,    -1,    -1,    42,
-    -1,    -1,    45,    81,    82,    -1,    84,    50,    51,    52,
-    -1,    79,    -1,    56,    57,    83,    -1,    60,    61,    62,
-     1,    -1,     3,     4,    -1,    -1,    -1,     8,     9,    -1,
-    11,    -1,    -1,    -1,    -1,    -1,    -1,    80,    81,    82,
-    -1,    84,    -1,    -1,    -1,    -1,    -1,    -1,    29,    -1,
-    31,    -1,    33,    34,    35,    -1,    -1,    -1,    -1,    -1,
-    -1,    42,    -1,    -1,    45,    -1,    -1,    -1,    -1,    50,
-    51,    52,    -1,    -1,    -1,    56,    57,    -1,    -1,    60,
-    61,    62,     1,    -1,     3,    -1,    -1,    -1,    -1,     8,
-     9,    -1,    11,    -1,    -1,    -1,    -1,    -1,    -1,    80,
-    81,    82,    -1,    84,    -1,    -1,    -1,    -1,    -1,    -1,
-    29,    -1,    31,    -1,    33,    34,    35,    -1,    -1,    38,
-     1,    -1,     3,    42,    -1,    -1,    45,     8,     9,    -1,
-    11,    50,    51,    52,    -1,    -1,    -1,    56,    57,    -1,
-    -1,    60,    61,    62,    -1,    -1,    -1,    -1,    29,    -1,
-    31,    -1,    33,    34,    35,    -1,    -1,    -1,    -1,    -1,
-    -1,    42,    81,    82,    45,    84,    -1,    -1,    -1,    50,
-    51,    52,    -1,    -1,    -1,    56,    57,     1,    -1,     3,
-    61,    -1,    -1,    -1,     8,     9,     1,    11,    -1,     4,
-     5,     6,     7,    -1,    -1,    -1,    -1,    12,    13,    14,
-    81,    82,    -1,    84,    -1,    29,    -1,    31,    -1,    33,
-    34,    35,    27,    28,    -1,    30,    -1,    -1,    42,    -1,
-    -1,    45,    -1,    38,    -1,    -1,    50,    51,    52,    -1,
-    -1,    -1,    56,    57,    -1,    -1,    -1,    61,    48,    49,
-    50,    51,    52,    53,    54,    -1,    61,    62,    -1,    -1,
-     1,    -1,    -1,     4,     5,     6,     7,    81,    82,    -1,
-    84,    12,    13,    14,    79,    -1,    -1,    -1,    83,    84,
-    -1,    -1,    -1,    -1,    -1,    -1,    27,    28,     1,    30,
-    -1,     4,     5,     6,     7,    -1,    -1,    38,     3,    12,
-    13,    14,    -1,     8,     9,    -1,    11,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    27,    28,    -1,    30,    -1,    -1,
-    61,    62,    -1,    -1,    29,    38,    31,    -1,    33,    34,
-    35,    -1,    -1,    -1,    -1,    -1,    -1,    42,    79,    -1,
-    45,    -1,    83,    84,    -1,    50,    51,    52,    -1,    -1,
-    -1,    56,    57,     3,    -1,    -1,    61,    -1,     8,     9,
-    -1,    11,    -1,    -1,    -1,    -1,    79,    -1,    -1,    -1,
-    83,    84,    -1,    -1,    -1,    -1,    81,    82,    -1,    29,
-    85,    31,    -1,    33,    34,    35,    -1,    -1,    -1,    -1,
-    -1,     3,    42,    -1,    -1,    45,     8,     9,    -1,    11,
-    50,    51,    52,    -1,    -1,    -1,    56,    57,    -1,    -1,
-    -1,    61,    -1,    -1,    -1,    -1,    -1,    29,    -1,    31,
-    -1,    33,    34,    35,    -1,    -1,    -1,    -1,    -1,    -1,
-    42,    81,    82,    45,    -1,    85,    -1,    -1,    50,    51,
-    52,    -1,    -1,    -1,    56,    57,     3,    -1,    -1,    61,
-    -1,     8,     9,     1,    11,    -1,     4,     5,     6,     7,
-    -1,    -1,    10,    -1,    12,    13,    14,    -1,    -1,    81,
-    82,    -1,    29,    85,    31,    -1,    33,    34,    35,    -1,
-    28,    -1,    30,    -1,     3,    42,    -1,    -1,    45,     8,
-     9,    -1,    11,    50,    51,    52,    -1,    -1,    -1,    56,
-    57,    -1,    -1,    -1,    61,    -1,    -1,    -1,    -1,    -1,
-    29,    -1,    31,    -1,    33,    34,    35,    -1,    -1,    -1,
-    -1,    -1,    -1,    42,    81,    82,    45,    -1,    85,    -1,
-    78,    50,    51,    52,    -1,    -1,    -1,    56,    57,     3,
-    -1,    -1,    61,    -1,     8,     9,    -1,    11,     4,     5,
-     6,     7,    -1,    -1,    -1,    -1,    12,    13,    14,    -1,
-    -1,    -1,    81,    82,    -1,    29,    85,    31,    -1,    33,
-    34,    35,    28,    -1,    -1,    -1,    -1,     3,    42,    -1,
-    -1,    45,     8,     9,    -1,    11,    50,    51,    52,    -1,
-    -1,    -1,    56,    57,    -1,    -1,    -1,    61,    -1,    -1,
-    -1,    -1,    -1,    29,    -1,    31,    -1,    33,    34,    35,
-    10,    -1,    -1,    -1,    -1,    -1,    42,    81,    82,    45,
-    -1,    85,    -1,    79,    50,    51,    52,    -1,    -1,    -1,
-    56,    57,    -1,    -1,    -1,    61,    -1,    37,    38,    39,
-    40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
-    50,    51,    52,    53,    54,    81,    82,    -1,    -1,    85,
-     3,     4,     5,     6,     7,     8,     9,    -1,    11,    12,
-    13,    14,    15,    -1,    17,    18,    19,    20,    21,    22,
-    23,    24,    25,    26,    27,    28,    29,    30,    31,    -1,
+    27,    28,    29,    30,    31,    -1,    33,    34,    35,    -1,
+    -1,    -1,    -1,    -1,    -1,    42,    -1,    -1,    45,    -1,
+    -1,    -1,    -1,    50,    51,    52,    -1,    -1,    -1,    56,
+    57,    -1,    -1,     1,    61,     3,     4,     5,     6,     7,
+    -1,    -1,    10,    -1,    12,    13,    14,    -1,    -1,    -1,
+    -1,    -1,    79,    -1,    81,    82,     1,    84,     3,     4,
+    28,    -1,    30,     8,     9,    -1,    11,    -1,    -1,    -1,
+    15,    -1,    17,    18,    19,    20,    21,    22,    23,    24,
+    25,    26,    27,    -1,    29,    -1,    31,    -1,    33,    34,
+    35,    27,    -1,    -1,    30,    -1,    -1,    42,    -1,    -1,
+    45,    -1,    38,    -1,    -1,    50,    51,    52,    -1,    -1,
+    78,    56,    57,    -1,    -1,    -1,    61,    47,    48,    49,
+    50,    51,    52,    53,    54,    61,    62,    48,    49,    50,
+    51,    52,    53,    54,    79,    80,    81,    82,     1,    84,
+     3,     4,    -1,    79,    -1,     8,     9,    83,    11,    -1,
+    -1,    -1,    15,    -1,    17,    18,    19,    20,    21,    22,
+    23,    24,    25,    26,    27,    -1,    29,    -1,    31,    -1,
     33,    34,    35,    -1,    -1,    -1,    -1,    -1,    -1,    42,
     -1,    -1,    45,    -1,    -1,    -1,    -1,    50,    51,    52,
     -1,    -1,    -1,    56,    57,    -1,    -1,    -1,    61,     1,
     -1,    -1,     4,    -1,     6,     7,    -1,    -1,    -1,    -1,
     12,    13,    14,    -1,    -1,    -1,    79,    -1,    81,    82,
-    -1,    84,     3,     4,    -1,    -1,    28,     8,     9,    31,
+     1,    84,     3,     4,    -1,    -1,    28,     8,     9,    31,
     11,    -1,    -1,    -1,    15,    -1,    17,    18,    19,    20,
     21,    22,    23,    24,    25,    26,    27,    -1,    29,    -1,
-    31,    -1,    33,    34,    35,    -1,    -1,     3,    -1,    -1,
+    31,    -1,    33,    34,    35,     1,    -1,     3,     4,    -1,
     -1,    42,     8,     9,    45,    11,    -1,    -1,    -1,    50,
     51,    52,    -1,    -1,    -1,    56,    57,    -1,    -1,    -1,
     61,    -1,    -1,    29,    -1,    31,    -1,    33,    34,    35,
     -1,    -1,    -1,    -1,    -1,    -1,    42,    -1,    79,    45,
     81,    82,    -1,    84,    50,    51,    52,    -1,    -1,    -1,
-    56,    57,    -1,    -1,    -1,    61,     3,     4,     5,     6,
-     7,     8,     9,    -1,    11,    12,    13,    14,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    81,    82,    -1,    84,    -1,
-    -1,    28,    29,    30,    31,    -1,    33,    34,    35,    -1,
-    -1,    -1,    -1,    -1,    -1,    42,    -1,    -1,    45,    -1,
-    -1,    -1,    -1,    50,    51,    52,    -1,    -1,    -1,    56,
-    57,    -1,     3,     4,    61,     6,     7,     8,     9,    -1,
-    11,    12,    13,    14,    46,    47,    48,    49,    50,    51,
-    52,    53,    54,    -1,    81,    82,    -1,    28,    29,    -1,
-    31,    -1,    33,    34,    35,    -1,    -1,     3,    -1,    -1,
-    -1,    42,     8,     9,    45,    11,    -1,    -1,    -1,    50,
-    51,    52,    -1,    -1,    -1,    56,    57,    -1,    -1,    -1,
-    61,    -1,    -1,    29,    -1,    31,    -1,    33,    34,    35,
-    -1,    -1,    -1,    -1,    -1,    -1,    42,    -1,    -1,    45,
-    81,    82,    -1,    -1,    50,    51,    52,    -1,    -1,    -1,
-    56,    57,     3,    -1,    -1,    61,    -1,     8,     9,    -1,
-    11,     4,     5,     6,     7,    -1,    -1,    -1,    -1,    12,
-    13,    14,    -1,    79,    -1,    81,    82,    -1,    29,    -1,
-    31,    -1,    33,    34,    35,    28,    -1,     3,    -1,    -1,
-    -1,    42,     8,     9,    45,    11,    -1,    -1,    -1,    50,
+    56,    57,    -1,    -1,    60,    61,    62,     1,    -1,     3,
+     4,    -1,    -1,    -1,     8,     9,    -1,    11,    -1,    -1,
+    -1,    -1,    -1,    -1,    80,    81,    82,    -1,    84,    -1,
+    -1,    -1,    -1,    -1,    -1,    29,    -1,    31,    -1,    33,
+    34,    35,    -1,    -1,    -1,    -1,    -1,    -1,    42,    -1,
+    -1,    45,    -1,    -1,    -1,    -1,    50,    51,    52,    -1,
+    -1,    -1,    56,    57,    -1,    -1,    60,    61,    62,     1,
+    -1,     3,    -1,    -1,    -1,    -1,     8,     9,    -1,    11,
+    -1,    -1,    -1,    -1,    -1,    -1,    80,    81,    82,    -1,
+    84,    -1,    -1,    -1,    -1,    -1,    -1,    29,    -1,    31,
+    -1,    33,    34,    35,    -1,    -1,    38,     1,    -1,     3,
+    42,    -1,    -1,    45,     8,     9,    -1,    11,    50,    51,
+    52,    -1,    -1,    -1,    56,    57,    -1,    -1,    60,    61,
+    62,    -1,    -1,    -1,    -1,    29,    -1,    31,    -1,    33,
+    34,    35,    -1,    -1,    -1,    -1,    -1,    -1,    42,    81,
+    82,    45,    84,    -1,    -1,    -1,    50,    51,    52,    -1,
+    -1,    -1,    56,    57,    -1,     1,    -1,    61,     4,     5,
+     6,     7,    -1,    -1,    -1,    -1,    12,    13,    14,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    81,    82,    -1,
+    84,    27,    28,     1,    30,    -1,     4,     5,     6,     7,
+    -1,    -1,    38,     3,    12,    13,    14,    -1,     8,     9,
+    -1,    11,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    27,
+    28,    -1,    30,    -1,    -1,    61,    62,    -1,    -1,    29,
+    38,    31,    -1,    33,    34,    35,    -1,    -1,    -1,    -1,
+    -1,    -1,    42,    79,    -1,    45,    -1,    83,    84,    -1,
+    50,    51,    52,    61,    62,    -1,    56,    57,     3,    -1,
+    -1,    61,    -1,     8,     9,    -1,    11,    -1,    -1,    -1,
+    -1,    79,    -1,    -1,    -1,    83,    84,    -1,    -1,    -1,
+    -1,    81,    82,    -1,    29,    85,    31,    -1,    33,    34,
+    35,    -1,    -1,    -1,    -1,    -1,     3,    42,    -1,    -1,
+    45,     8,     9,    -1,    11,    50,    51,    52,    -1,    -1,
+    -1,    56,    57,    -1,    -1,    -1,    61,    -1,    -1,    -1,
+    -1,    -1,    29,    -1,    31,    -1,    33,    34,    35,    -1,
+    -1,    -1,    -1,    -1,    -1,    42,    81,    82,    45,    -1,
+    85,    -1,    -1,    50,    51,    52,    -1,    -1,    -1,    56,
+    57,     3,    -1,    -1,    61,    -1,     8,     9,    -1,    11,
+     4,     5,     6,     7,    -1,    -1,    -1,    -1,    12,    13,
+    14,    -1,    -1,    -1,    81,    82,    -1,    29,    85,    31,
+    -1,    33,    34,    35,    28,    -1,    30,    -1,    -1,     3,
+    42,    -1,    -1,    45,     8,     9,    -1,    11,    50,    51,
+    52,    -1,    -1,    -1,    56,    57,    -1,    -1,    -1,    61,
+    -1,    -1,    -1,    -1,    -1,    29,    -1,    31,    -1,    33,
+    34,    35,    -1,    -1,    -1,    -1,    -1,    -1,    42,    81,
+    82,    45,    -1,    85,    -1,    79,    50,    51,    52,    -1,
+    -1,    -1,    56,    57,     3,    -1,    -1,    61,    -1,     8,
+     9,    -1,    11,     4,     5,     6,     7,    -1,    -1,    -1,
+    -1,    12,    13,    14,    -1,    -1,    -1,    81,    82,    -1,
+    29,    85,    31,    -1,    33,    34,    35,    28,    -1,    30,
+    -1,    -1,     3,    42,    -1,    -1,    45,     8,     9,    -1,
+    11,    50,    51,    52,    -1,    -1,    -1,    56,    57,    -1,
+    -1,    -1,    61,    -1,    -1,    -1,    -1,    -1,    29,    -1,
+    31,    -1,    33,    34,    35,    10,    -1,    -1,    -1,    -1,
+    -1,    42,    81,    82,    45,    -1,    85,    -1,    79,    50,
     51,    52,    -1,    -1,    -1,    56,    57,    -1,    -1,    -1,
-    61,    -1,    -1,    29,    -1,    31,    -1,    33,    34,    35,
-    -1,    -1,    -1,    -1,    -1,    -1,    42,    -1,    -1,    45,
-    81,    82,    -1,    -1,    50,    51,    52,    -1,    -1,    -1,
-    56,    57,     3,    -1,    -1,    61,    -1,     8,     9,    39,
-    11,    41,    42,    43,    44,    45,    46,    47,    48,    49,
-    50,    51,    52,    53,    54,    81,    82,    -1,    29,    -1,
-    31,    -1,    33,    34,    35,    -1,    -1,     3,    -1,    -1,
-    -1,    42,     8,     9,    45,    11,    -1,    -1,    -1,    50,
+    61,    -1,    37,    38,    39,    40,    41,    42,    43,    44,
+    45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
+    81,    82,    -1,    -1,    85,     3,     4,     5,     6,     7,
+     8,     9,    -1,    11,    12,    13,    14,    15,    -1,    17,
+    18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
+    28,    29,    30,    31,    -1,    33,    34,    35,    -1,    -1,
+     4,     5,     6,     7,    42,    -1,    -1,    45,    12,    13,
+    14,    -1,    50,    51,    52,    -1,    -1,    -1,    56,    57,
+    -1,    -1,    -1,    61,    28,    39,    30,    41,    42,    43,
+    44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
+    54,    79,    -1,    81,    82,    -1,    84,     3,     4,    -1,
+    -1,    -1,     8,     9,    -1,    11,    -1,    -1,    -1,    15,
+    -1,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+    26,    27,    -1,    29,    -1,    31,    -1,    33,    34,    35,
+    -1,    -1,     3,    -1,    -1,    -1,    42,     8,     9,    45,
+    11,    -1,    -1,    -1,    50,    51,    52,    -1,    -1,    -1,
+    56,    57,    -1,    -1,    -1,    61,    -1,    -1,    29,    -1,
+    31,    -1,    33,    34,    35,    -1,    -1,    -1,    -1,    -1,
+    -1,    42,    -1,    79,    45,    81,    82,    -1,    84,    50,
     51,    52,    -1,    -1,    -1,    56,    57,    -1,    -1,    -1,
-    61,    -1,    -1,    29,    -1,    31,    -1,    33,    34,    35,
-    -1,    -1,    -1,    -1,    -1,    -1,    42,    -1,    -1,    45,
-    81,    82,    -1,    -1,    50,    51,    52,    -1,    -1,    -1,
-    56,    57,    -1,    -1,     1,    61,     3,     4,     5,     6,
-     7,    -1,    -1,    -1,    -1,    12,    13,    14,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    81,    82,    -1,    -1,    -1,
-    27,    28,    -1,    30,    31,    42,    43,    44,    45,    46,
-    47,    48,    49,    50,    51,    52,    53,    54,    -1,    -1,
-    -1,    -1,    10,    -1,    -1,    52,    -1,    -1,    -1,    -1,
-    -1,    37,    38,    39,    61,    41,    42,    43,    44,    45,
-    46,    47,    48,    49,    50,    51,    52,    53,    54,    37,
-    38,    39,    79,    41,    42,    43,    44,    45,    46,    47,
-    48,    49,    50,    51,    52,    53,    54,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    37,    38,    39,    85,
-    41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
-    51,    52,    53,    54,    30,    -1,    -1,    85,    -1,    -1,
-    -1,    37,    38,    39,    -1,    41,    42,    43,    44,    45,
+    61,     3,     4,     5,     6,     7,     8,     9,    -1,    11,
+    12,    13,    14,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    81,    82,    -1,    84,    -1,    -1,    28,    29,    30,    31,
+    -1,    33,    34,    35,    -1,    -1,    -1,    -1,    -1,    -1,
+    42,    -1,    -1,    45,    -1,    -1,    -1,    -1,    50,    51,
+    52,    -1,    -1,    -1,    56,    57,    -1,     3,     4,    61,
+     6,     7,     8,     9,    -1,    11,    12,    13,    14,    45,
+    46,    47,    48,    49,    50,    51,    52,    53,    54,    81,
+    82,    -1,    28,    29,    -1,    31,    -1,    33,    34,    35,
+    -1,    -1,     3,    -1,    -1,    -1,    42,     8,     9,    45,
+    11,    -1,    -1,    -1,    50,    51,    52,    -1,    -1,    -1,
+    56,    57,    -1,    -1,    -1,    61,    -1,    -1,    29,    -1,
+    31,    -1,    33,    34,    35,    -1,    -1,    -1,    -1,    -1,
+    -1,    42,    -1,    -1,    45,    81,    82,    -1,    -1,    50,
+    51,    52,    -1,    -1,    -1,    56,    57,     3,    -1,    -1,
+    61,    -1,     8,     9,    -1,    11,    43,    44,    45,    46,
+    47,    48,    49,    50,    51,    52,    53,    54,    79,    -1,
+    81,    82,    -1,    29,    -1,    31,    -1,    33,    34,    35,
+    -1,    -1,     3,    -1,    -1,    -1,    42,     8,     9,    45,
+    11,    -1,    -1,    -1,    50,    51,    52,    -1,    -1,    -1,
+    56,    57,    -1,    -1,    -1,    61,    -1,    -1,    29,    -1,
+    31,    -1,    33,    34,    35,    -1,    -1,    -1,    -1,    -1,
+    -1,    42,    -1,    -1,    45,    81,    82,    -1,    -1,    50,
+    51,    52,    -1,    -1,    -1,    56,    57,     3,    -1,    -1,
+    61,    -1,     8,     9,    -1,    11,    42,    43,    44,    45,
     46,    47,    48,    49,    50,    51,    52,    53,    54,    -1,
-    -1,    -1,    83,    37,    38,    39,    40,    41,    42,    43,
-    44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
-    54,    37,    38,    39,    -1,    41,    42,    43,    44,    45,
-    46,    47,    48,    49,    50,    51,    52,    53,    54,    43,
+    81,    82,    -1,    29,    -1,    31,    -1,    33,    34,    35,
+    -1,    -1,     3,    -1,    -1,    -1,    42,     8,     9,    45,
+    11,    -1,    -1,    -1,    50,    51,    52,    -1,    -1,    -1,
+    56,    57,    -1,    -1,    -1,    61,    -1,    -1,    29,    -1,
+    31,    -1,    33,    34,    35,    -1,    -1,    -1,    -1,    -1,
+    -1,    42,    -1,    -1,    45,    81,    82,    -1,    -1,    50,
+    51,    52,    -1,    -1,    -1,    56,    57,    -1,    -1,     1,
+    61,     3,     4,     5,     6,     7,    -1,    -1,    -1,    -1,
+    12,    13,    14,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    81,    82,    -1,    -1,    -1,    27,    28,    -1,    30,    31,
     44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
-    54,    44,    45,    46,    47,    48,    49,    50,    51,    52,
-    53,    54
+    54,    -1,    -1,    -1,    -1,    -1,    -1,    10,    -1,    -1,
+    52,    -1,    -1,    -1,    -1,    -1,    37,    38,    39,    61,
+    41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
+    51,    52,    53,    54,    37,    38,    39,    79,    41,    42,
+    43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
+    53,    54,    46,    47,    48,    49,    50,    51,    52,    53,
+    54,    37,    38,    39,    85,    41,    42,    43,    44,    45,
+    46,    47,    48,    49,    50,    51,    52,    53,    54,    30,
+    -1,    -1,    85,    -1,    -1,    -1,    37,    38,    39,    -1,
+    41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
+    51,    52,    53,    54,    -1,    -1,    -1,    83,    37,    38,
+    39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
+    49,    50,    51,    52,    53,    54,    37,    38,    39,    -1,
+    41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
+    51,    52,    53,    54
 };
 /* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
 #line 3 "/usr/cygnus/TBD-TBD/share/bison.simple"
@@ -2982,13 +2982,22 @@ case 267:
     break;}
 case 268:
 #line 1411 "c-parse.y"
-{ if (pedantic)
-                   pedwarn ("ANSI C forbids member declarations with no members");
-                 shadow_tag(yyvsp[0].ttype);
-                 yyval.ttype = NULL_TREE; ;
+{
+                 /* Support for unnamed structs or unions as members of 
+                    structs or unions (which is [a] useful and [b] supports 
+                    MS P-SDK).  */
+                 if (pedantic)
+                   pedwarn ("ANSI C doesn't support unnamed structs/unions");
+
+                 yyval.ttype = grokfield(yyvsp[-2].filename, yyvsp[-1].lineno, NULL, current_declspecs, NULL_TREE);
+                 current_declspecs = TREE_VALUE (declspec_stack);
+                 prefix_attributes = TREE_PURPOSE (declspec_stack);
+                 declspec_stack = TREE_CHAIN (declspec_stack);
+                 resume_momentary (yyvsp[-3].itype);
+               ;
     break;}
 case 269:
-#line 1416 "c-parse.y"
+#line 1425 "c-parse.y"
 { yyval.ttype = yyvsp[0].ttype;
                  current_declspecs = TREE_VALUE (declspec_stack);
                  prefix_attributes = TREE_PURPOSE (declspec_stack);
@@ -2996,144 +3005,144 @@ case 269:
                  resume_momentary (yyvsp[-1].itype); ;
     break;}
 case 270:
-#line 1422 "c-parse.y"
+#line 1431 "c-parse.y"
 { if (pedantic)
                    pedwarn ("ANSI C forbids member declarations with no members");
                  shadow_tag(yyvsp[0].ttype);
                  yyval.ttype = NULL_TREE; ;
     break;}
 case 271:
-#line 1427 "c-parse.y"
+#line 1436 "c-parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
 case 272:
-#line 1429 "c-parse.y"
+#line 1438 "c-parse.y"
 { yyval.ttype = yyvsp[0].ttype;
                  RESTORE_WARN_FLAGS (yyvsp[-1].itype); ;
     break;}
 case 274:
-#line 1436 "c-parse.y"
+#line 1445 "c-parse.y"
 { yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ;
     break;}
 case 275:
-#line 1441 "c-parse.y"
+#line 1450 "c-parse.y"
 { yyval.ttype = grokfield (yyvsp[-3].filename, yyvsp[-2].lineno, yyvsp[-1].ttype, current_declspecs, NULL_TREE);
                  decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
     break;}
 case 276:
-#line 1445 "c-parse.y"
+#line 1454 "c-parse.y"
 { yyval.ttype = grokfield (yyvsp[-5].filename, yyvsp[-4].lineno, yyvsp[-3].ttype, current_declspecs, yyvsp[-1].ttype);
                  decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
     break;}
 case 277:
-#line 1448 "c-parse.y"
+#line 1457 "c-parse.y"
 { yyval.ttype = grokfield (yyvsp[-4].filename, yyvsp[-3].lineno, NULL_TREE, current_declspecs, yyvsp[-1].ttype);
                  decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
     break;}
 case 279:
-#line 1460 "c-parse.y"
+#line 1469 "c-parse.y"
 { if (yyvsp[-2].ttype == error_mark_node)
                    yyval.ttype = yyvsp[-2].ttype;
                  else
                    yyval.ttype = chainon (yyvsp[0].ttype, yyvsp[-2].ttype); ;
     break;}
 case 280:
-#line 1465 "c-parse.y"
+#line 1474 "c-parse.y"
 { yyval.ttype = error_mark_node; ;
     break;}
 case 281:
-#line 1471 "c-parse.y"
+#line 1480 "c-parse.y"
 { yyval.ttype = build_enumerator (yyvsp[0].ttype, NULL_TREE); ;
     break;}
 case 282:
-#line 1473 "c-parse.y"
+#line 1482 "c-parse.y"
 { yyval.ttype = build_enumerator (yyvsp[-2].ttype, yyvsp[0].ttype); ;
     break;}
 case 283:
-#line 1478 "c-parse.y"
+#line 1487 "c-parse.y"
 { yyval.ttype = build_tree_list (yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 284:
-#line 1480 "c-parse.y"
+#line 1489 "c-parse.y"
 { yyval.ttype = build_tree_list (yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 285:
-#line 1485 "c-parse.y"
+#line 1494 "c-parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
 case 287:
-#line 1491 "c-parse.y"
+#line 1500 "c-parse.y"
 { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE); ;
     break;}
 case 288:
-#line 1493 "c-parse.y"
+#line 1502 "c-parse.y"
 { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
     break;}
 case 289:
-#line 1498 "c-parse.y"
+#line 1507 "c-parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
 case 290:
-#line 1500 "c-parse.y"
+#line 1509 "c-parse.y"
 { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
     break;}
 case 291:
-#line 1505 "c-parse.y"
+#line 1514 "c-parse.y"
 { yyval.ttype = yyvsp[-1].ttype; ;
     break;}
 case 292:
-#line 1508 "c-parse.y"
+#line 1517 "c-parse.y"
 { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 293:
-#line 1510 "c-parse.y"
+#line 1519 "c-parse.y"
 { yyval.ttype = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE); ;
     break;}
 case 294:
-#line 1512 "c-parse.y"
+#line 1521 "c-parse.y"
 { yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;
     break;}
 case 295:
-#line 1514 "c-parse.y"
+#line 1523 "c-parse.y"
 { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
     break;}
 case 296:
-#line 1516 "c-parse.y"
+#line 1525 "c-parse.y"
 { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-2].ttype, NULL_TREE); ;
     break;}
 case 297:
-#line 1518 "c-parse.y"
+#line 1527 "c-parse.y"
 { yyval.ttype = build_nt (CALL_EXPR, NULL_TREE, yyvsp[0].ttype, NULL_TREE); ;
     break;}
 case 298:
-#line 1520 "c-parse.y"
+#line 1529 "c-parse.y"
 { yyval.ttype = build_nt (ARRAY_REF, NULL_TREE, yyvsp[-1].ttype); ;
     break;}
 case 299:
-#line 1522 "c-parse.y"
+#line 1531 "c-parse.y"
 { yyval.ttype = build_nt (ARRAY_REF, NULL_TREE, NULL_TREE); ;
     break;}
 case 300:
-#line 1526 "c-parse.y"
+#line 1535 "c-parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 301:
-#line 1535 "c-parse.y"
+#line 1544 "c-parse.y"
 {
                  if (pedantic && yyvsp[0].ends_in_label)
                    pedwarn ("ANSI C forbids label at end of compound statement");
                ;
     break;}
 case 303:
-#line 1544 "c-parse.y"
+#line 1553 "c-parse.y"
 { yyval.ends_in_label = yyvsp[0].ends_in_label; ;
     break;}
 case 304:
-#line 1546 "c-parse.y"
+#line 1555 "c-parse.y"
 { yyval.ends_in_label = 0; ;
     break;}
 case 308:
-#line 1558 "c-parse.y"
+#line 1567 "c-parse.y"
 { emit_line_note (input_filename, lineno);
                  pushlevel (0);
                  clear_last_expr ();
@@ -3142,12 +3151,12 @@ case 308:
                ;
     break;}
 case 310:
-#line 1571 "c-parse.y"
+#line 1580 "c-parse.y"
 { if (pedantic)
                    pedwarn ("ANSI C forbids label declarations"); ;
     break;}
 case 313:
-#line 1582 "c-parse.y"
+#line 1591 "c-parse.y"
 { tree link;
                  for (link = yyvsp[-1].ttype; link; link = TREE_CHAIN (link))
                    {
@@ -3158,19 +3167,19 @@ case 313:
                ;
     break;}
 case 314:
-#line 1596 "c-parse.y"
+#line 1605 "c-parse.y"
 {;
     break;}
 case 316:
-#line 1600 "c-parse.y"
+#line 1609 "c-parse.y"
 { compstmt_count++; ;
     break;}
 case 317:
-#line 1603 "c-parse.y"
+#line 1612 "c-parse.y"
 { yyval.ttype = convert (void_type_node, integer_zero_node); ;
     break;}
 case 318:
-#line 1605 "c-parse.y"
+#line 1614 "c-parse.y"
 { emit_line_note (input_filename, lineno);
                  expand_end_bindings (getdecls (), 1, 0);
                  yyval.ttype = poplevel (1, 1, 0);
@@ -3180,7 +3189,7 @@ case 318:
                    pop_momentary (); ;
     break;}
 case 319:
-#line 1613 "c-parse.y"
+#line 1622 "c-parse.y"
 { emit_line_note (input_filename, lineno);
                  expand_end_bindings (getdecls (), kept_level_p (), 0);
                  yyval.ttype = poplevel (kept_level_p (), 0, 0);
@@ -3190,7 +3199,7 @@ case 319:
                    pop_momentary (); ;
     break;}
 case 320:
-#line 1621 "c-parse.y"
+#line 1630 "c-parse.y"
 { emit_line_note (input_filename, lineno);
                  expand_end_bindings (getdecls (), kept_level_p (), 0);
                  yyval.ttype = poplevel (kept_level_p (), 0, 0);
@@ -3200,7 +3209,7 @@ case 320:
                    pop_momentary (); ;
     break;}
 case 321:
-#line 1632 "c-parse.y"
+#line 1641 "c-parse.y"
 { if (current_function_decl == 0)
                    {
                      error ("braced-group within expression allowed only inside a function");
@@ -3218,11 +3227,11 @@ case 321:
                ;
     break;}
 case 322:
-#line 1649 "c-parse.y"
+#line 1658 "c-parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 325:
-#line 1663 "c-parse.y"
+#line 1672 "c-parse.y"
 { emit_line_note (yyvsp[-5].filename, yyvsp[-4].lineno);
                  c_expand_start_cond (truthvalue_conversion (yyvsp[-1].ttype), 0, 
                                       compstmt_count);
@@ -3232,7 +3241,7 @@ case 325:
                  position_after_white_space (); ;
     break;}
 case 326:
-#line 1677 "c-parse.y"
+#line 1686 "c-parse.y"
 { stmt_count++;
                  compstmt_count++;
                  emit_line_note (yyvsp[-2].filename, yyvsp[-1].lineno);
@@ -3242,43 +3251,43 @@ case 326:
                  position_after_white_space (); ;
     break;}
 case 327:
-#line 1685 "c-parse.y"
+#line 1694 "c-parse.y"
 { expand_loop_continue_here (); ;
     break;}
 case 328:
-#line 1689 "c-parse.y"
+#line 1698 "c-parse.y"
 { yyval.filename = input_filename; ;
     break;}
 case 329:
-#line 1693 "c-parse.y"
+#line 1702 "c-parse.y"
 { yyval.lineno = lineno; ;
     break;}
 case 330:
-#line 1698 "c-parse.y"
+#line 1707 "c-parse.y"
 { ;
     break;}
 case 331:
-#line 1703 "c-parse.y"
+#line 1712 "c-parse.y"
 { ;
     break;}
 case 332:
-#line 1708 "c-parse.y"
+#line 1717 "c-parse.y"
 { yyval.ends_in_label = yyvsp[0].ends_in_label; ;
     break;}
 case 333:
-#line 1713 "c-parse.y"
+#line 1722 "c-parse.y"
 { yyval.ends_in_label = 0; ;
     break;}
 case 334:
-#line 1715 "c-parse.y"
+#line 1724 "c-parse.y"
 { yyval.ends_in_label = 1; ;
     break;}
 case 335:
-#line 1721 "c-parse.y"
+#line 1730 "c-parse.y"
 { stmt_count++; ;
     break;}
 case 337:
-#line 1724 "c-parse.y"
+#line 1733 "c-parse.y"
 { stmt_count++;
                  emit_line_note (yyvsp[-3].filename, yyvsp[-2].lineno);
 /* It appears that this should not be done--that a non-lvalue array
@@ -3297,19 +3306,19 @@ case 337:
                  clear_momentary (); ;
     break;}
 case 338:
-#line 1741 "c-parse.y"
+#line 1750 "c-parse.y"
 { c_expand_start_else ();
                  yyvsp[-1].itype = stmt_count;
                  position_after_white_space (); ;
     break;}
 case 339:
-#line 1745 "c-parse.y"
+#line 1754 "c-parse.y"
 { c_expand_end_cond ();
                  if (extra_warnings && stmt_count == yyvsp[-3].itype)
                    warning ("empty body in an else-statement"); ;
     break;}
 case 340:
-#line 1749 "c-parse.y"
+#line 1758 "c-parse.y"
 { c_expand_end_cond ();
                  /* This warning is here instead of in simple_if, because we
                     do not want a warning if an empty if is followed by an
@@ -3320,11 +3329,11 @@ case 340:
                                                "empty body in an if-statement"); ;
     break;}
 case 341:
-#line 1761 "c-parse.y"
+#line 1770 "c-parse.y"
 { c_expand_end_cond (); ;
     break;}
 case 342:
-#line 1763 "c-parse.y"
+#line 1772 "c-parse.y"
 { stmt_count++;
                  emit_line_note (yyvsp[-2].filename, yyvsp[-1].lineno);
                  /* The emit_nop used to come before emit_line_note,
@@ -3336,7 +3345,7 @@ case 342:
                  emit_nop (); ;
     break;}
 case 343:
-#line 1773 "c-parse.y"
+#line 1782 "c-parse.y"
 { /* Don't start the loop till we have succeeded
                     in parsing the end test.  This is to make sure
                     that we end every loop we start.  */
@@ -3347,11 +3356,11 @@ case 343:
                  position_after_white_space (); ;
     break;}
 case 344:
-#line 1782 "c-parse.y"
+#line 1791 "c-parse.y"
 { expand_end_loop (); ;
     break;}
 case 345:
-#line 1785 "c-parse.y"
+#line 1794 "c-parse.y"
 { emit_line_note (input_filename, lineno);
                  expand_exit_loop_if_false (NULL_PTR,
                                             truthvalue_conversion (yyvsp[-2].ttype));
@@ -3359,12 +3368,12 @@ case 345:
                  clear_momentary (); ;
     break;}
 case 346:
-#line 1792 "c-parse.y"
+#line 1801 "c-parse.y"
 { expand_end_loop ();
                  clear_momentary (); ;
     break;}
 case 347:
-#line 1796 "c-parse.y"
+#line 1805 "c-parse.y"
 { stmt_count++;
                  emit_line_note (yyvsp[-5].filename, yyvsp[-4].lineno);
                  /* See comment in `while' alternative, above.  */
@@ -3377,12 +3386,12 @@ case 347:
                ;
     break;}
 case 348:
-#line 1808 "c-parse.y"
+#line 1817 "c-parse.y"
 { yyvsp[0].lineno = lineno;
                  yyval.filename = input_filename; ;
     break;}
 case 349:
-#line 1811 "c-parse.y"
+#line 1820 "c-parse.y"
 { 
                  /* Start the loop.  Doing this after parsing
                     all the expressions ensures we will end the loop.  */
@@ -3400,7 +3409,7 @@ case 349:
                  position_after_white_space (); ;
     break;}
 case 350:
-#line 1827 "c-parse.y"
+#line 1836 "c-parse.y"
 { /* Emit the increment expression, with a line number.  */
                  emit_line_note (yyvsp[-4].filename, yyvsp[-5].lineno);
                  expand_loop_continue_here ();
@@ -3413,7 +3422,7 @@ case 350:
                  expand_end_loop (); ;
     break;}
 case 351:
-#line 1838 "c-parse.y"
+#line 1847 "c-parse.y"
 { stmt_count++;
                  emit_line_note (yyvsp[-5].filename, yyvsp[-4].lineno);
                  c_expand_start_case (yyvsp[-1].ttype);
@@ -3423,7 +3432,7 @@ case 351:
                  position_after_white_space (); ;
     break;}
 case 352:
-#line 1846 "c-parse.y"
+#line 1855 "c-parse.y"
 { expand_end_case (yyvsp[-3].ttype);
                  if (yychar == CONSTANT || yychar == STRING)
                    pop_momentary_nofree ();
@@ -3431,33 +3440,33 @@ case 352:
                    pop_momentary (); ;
     break;}
 case 353:
-#line 1852 "c-parse.y"
+#line 1861 "c-parse.y"
 { stmt_count++;
                  emit_line_note (yyvsp[-3].filename, yyvsp[-2].lineno);
                  if ( ! expand_exit_something ())
                    error ("break statement not within loop or switch"); ;
     break;}
 case 354:
-#line 1857 "c-parse.y"
+#line 1866 "c-parse.y"
 { stmt_count++;
                  emit_line_note (yyvsp[-3].filename, yyvsp[-2].lineno);
                  if (! expand_continue_loop (NULL_PTR))
                    error ("continue statement not within a loop"); ;
     break;}
 case 355:
-#line 1862 "c-parse.y"
+#line 1871 "c-parse.y"
 { stmt_count++;
                  emit_line_note (yyvsp[-3].filename, yyvsp[-2].lineno);
                  c_expand_return (NULL_TREE); ;
     break;}
 case 356:
-#line 1866 "c-parse.y"
+#line 1875 "c-parse.y"
 { stmt_count++;
                  emit_line_note (yyvsp[-4].filename, yyvsp[-3].lineno);
                  c_expand_return (yyvsp[-1].ttype); ;
     break;}
 case 357:
-#line 1870 "c-parse.y"
+#line 1879 "c-parse.y"
 { stmt_count++;
                  emit_line_note (yyvsp[-7].filename, yyvsp[-6].lineno);
                  STRIP_NOPS (yyvsp[-2].ttype);
@@ -3469,7 +3478,7 @@ case 357:
                    error ("argument of `asm' is not a constant string"); ;
     break;}
 case 358:
-#line 1881 "c-parse.y"
+#line 1890 "c-parse.y"
 { stmt_count++;
                  emit_line_note (yyvsp[-9].filename, yyvsp[-8].lineno);
                  c_expand_asm_operands (yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE, NULL_TREE,
@@ -3477,7 +3486,7 @@ case 358:
                                         input_filename, lineno); ;
     break;}
 case 359:
-#line 1888 "c-parse.y"
+#line 1897 "c-parse.y"
 { stmt_count++;
                  emit_line_note (yyvsp[-11].filename, yyvsp[-10].lineno);
                  c_expand_asm_operands (yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE,
@@ -3485,7 +3494,7 @@ case 359:
                                         input_filename, lineno); ;
     break;}
 case 360:
-#line 1896 "c-parse.y"
+#line 1905 "c-parse.y"
 { stmt_count++;
                  emit_line_note (yyvsp[-13].filename, yyvsp[-12].lineno);
                  c_expand_asm_operands (yyvsp[-8].ttype, yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype,
@@ -3493,7 +3502,7 @@ case 360:
                                         input_filename, lineno); ;
     break;}
 case 361:
-#line 1902 "c-parse.y"
+#line 1911 "c-parse.y"
 { tree decl;
                  stmt_count++;
                  emit_line_note (yyvsp[-4].filename, yyvsp[-3].lineno);
@@ -3506,7 +3515,7 @@ case 361:
                ;
     break;}
 case 362:
-#line 1913 "c-parse.y"
+#line 1922 "c-parse.y"
 { if (pedantic)
                    pedwarn ("ANSI C forbids `goto *expr;'");
                  stmt_count++;
@@ -3514,7 +3523,7 @@ case 362:
                  expand_computed_goto (convert (ptr_type_node, yyvsp[-1].ttype)); ;
     break;}
 case 365:
-#line 1928 "c-parse.y"
+#line 1937 "c-parse.y"
 {
            /* The value returned by this action is  */
            /*      1 if everything is OK */ 
@@ -3537,14 +3546,14 @@ case 365:
          ;
     break;}
 case 366:
-#line 1949 "c-parse.y"
+#line 1958 "c-parse.y"
 {
            if (yyvsp[-1].itype)
              iterator_for_loop_end (yyvsp[-3].ttype);
          ;
     break;}
 case 367:
-#line 1984 "c-parse.y"
+#line 1993 "c-parse.y"
 { register tree value = check_case_value (yyvsp[-1].ttype);
                  register tree label
                    = build_decl (LABEL_DECL, NULL_TREE, NULL_TREE);
@@ -3577,7 +3586,7 @@ case 367:
                  position_after_white_space (); ;
     break;}
 case 368:
-#line 2015 "c-parse.y"
+#line 2024 "c-parse.y"
 { register tree value1 = check_case_value (yyvsp[-3].ttype);
                  register tree value2 = check_case_value (yyvsp[-1].ttype);
                  register tree label
@@ -3610,7 +3619,7 @@ case 368:
                  position_after_white_space (); ;
     break;}
 case 369:
-#line 2046 "c-parse.y"
+#line 2055 "c-parse.y"
 {
                  tree duplicate;
                  register tree label
@@ -3627,7 +3636,7 @@ case 369:
                  position_after_white_space (); ;
     break;}
 case 370:
-#line 2061 "c-parse.y"
+#line 2070 "c-parse.y"
 { tree label = define_label (input_filename, lineno, yyvsp[-2].ttype);
                  stmt_count++;
                  emit_nop ();
@@ -3639,52 +3648,52 @@ case 370:
                  position_after_white_space (); ;
     break;}
 case 371:
-#line 2076 "c-parse.y"
+#line 2085 "c-parse.y"
 { emit_line_note (input_filename, lineno);
                  yyval.ttype = NULL_TREE; ;
     break;}
 case 372:
-#line 2079 "c-parse.y"
+#line 2088 "c-parse.y"
 { emit_line_note (input_filename, lineno); ;
     break;}
 case 373:
-#line 2084 "c-parse.y"
+#line 2093 "c-parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
 case 375:
-#line 2091 "c-parse.y"
+#line 2100 "c-parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
 case 378:
-#line 2098 "c-parse.y"
+#line 2107 "c-parse.y"
 { yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ;
     break;}
 case 379:
-#line 2103 "c-parse.y"
+#line 2112 "c-parse.y"
 { yyval.ttype = build_tree_list (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
     break;}
 case 380:
-#line 2108 "c-parse.y"
+#line 2117 "c-parse.y"
 { yyval.ttype = tree_cons (NULL_TREE, combine_strings (yyvsp[0].ttype), NULL_TREE); ;
     break;}
 case 381:
-#line 2110 "c-parse.y"
+#line 2119 "c-parse.y"
 { yyval.ttype = tree_cons (NULL_TREE, combine_strings (yyvsp[0].ttype), yyvsp[-2].ttype); ;
     break;}
 case 382:
-#line 2116 "c-parse.y"
+#line 2125 "c-parse.y"
 { pushlevel (0);
                  clear_parm_order ();
                  declare_parm_level (0); ;
     break;}
 case 383:
-#line 2120 "c-parse.y"
+#line 2129 "c-parse.y"
 { yyval.ttype = yyvsp[0].ttype;
                  parmlist_tags_warning ();
                  poplevel (0, 0, 0); ;
     break;}
 case 385:
-#line 2128 "c-parse.y"
+#line 2137 "c-parse.y"
 { tree parm;
                  if (pedantic)
                    pedwarn ("ANSI C forbids forward parameter declarations");
@@ -3694,19 +3703,19 @@ case 385:
                  clear_parm_order (); ;
     break;}
 case 386:
-#line 2136 "c-parse.y"
+#line 2145 "c-parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 387:
-#line 2138 "c-parse.y"
+#line 2147 "c-parse.y"
 { yyval.ttype = tree_cons (NULL_TREE, NULL_TREE, NULL_TREE); ;
     break;}
 case 388:
-#line 2144 "c-parse.y"
+#line 2153 "c-parse.y"
 { yyval.ttype = get_parm_info (0); ;
     break;}
 case 389:
-#line 2146 "c-parse.y"
+#line 2155 "c-parse.y"
 { yyval.ttype = get_parm_info (0);
                  /* Gcc used to allow this as an extension.  However, it does
                     not work for all targets, and thus has been disabled.
@@ -3718,23 +3727,23 @@ case 389:
                ;
     break;}
 case 390:
-#line 2156 "c-parse.y"
+#line 2165 "c-parse.y"
 { yyval.ttype = get_parm_info (1); ;
     break;}
 case 391:
-#line 2158 "c-parse.y"
+#line 2167 "c-parse.y"
 { yyval.ttype = get_parm_info (0); ;
     break;}
 case 392:
-#line 2163 "c-parse.y"
+#line 2172 "c-parse.y"
 { push_parm_decl (yyvsp[0].ttype); ;
     break;}
 case 393:
-#line 2165 "c-parse.y"
+#line 2174 "c-parse.y"
 { push_parm_decl (yyvsp[0].ttype); ;
     break;}
 case 394:
-#line 2172 "c-parse.y"
+#line 2181 "c-parse.y"
 { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
                                                         yyvsp[-1].ttype),
                                        build_tree_list (prefix_attributes,
@@ -3745,7 +3754,7 @@ case 394:
                  resume_momentary (yyvsp[-2].itype); ;
     break;}
 case 395:
-#line 2181 "c-parse.y"
+#line 2190 "c-parse.y"
 { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
                                                         yyvsp[-1].ttype),
                                        build_tree_list (prefix_attributes,
@@ -3756,7 +3765,7 @@ case 395:
                  resume_momentary (yyvsp[-2].itype); ;
     break;}
 case 396:
-#line 2190 "c-parse.y"
+#line 2199 "c-parse.y"
 { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
                                                         yyvsp[-1].ttype),
                                        build_tree_list (prefix_attributes,
@@ -3767,7 +3776,7 @@ case 396:
                  resume_momentary (yyvsp[-2].itype); ;
     break;}
 case 397:
-#line 2199 "c-parse.y"
+#line 2208 "c-parse.y"
 { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
                                                         yyvsp[-1].ttype),
                                        build_tree_list (prefix_attributes,
@@ -3778,7 +3787,7 @@ case 397:
                  resume_momentary (yyvsp[-2].itype);  ;
     break;}
 case 398:
-#line 2209 "c-parse.y"
+#line 2218 "c-parse.y"
 { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
                                                         yyvsp[-1].ttype),
                                        build_tree_list (prefix_attributes,
@@ -3789,19 +3798,19 @@ case 398:
                  resume_momentary (yyvsp[-2].itype);  ;
     break;}
 case 399:
-#line 2223 "c-parse.y"
+#line 2232 "c-parse.y"
 { pushlevel (0);
                  clear_parm_order ();
                  declare_parm_level (1); ;
     break;}
 case 400:
-#line 2227 "c-parse.y"
+#line 2236 "c-parse.y"
 { yyval.ttype = yyvsp[0].ttype;
                  parmlist_tags_warning ();
                  poplevel (0, 0, 0); ;
     break;}
 case 402:
-#line 2235 "c-parse.y"
+#line 2244 "c-parse.y"
 { tree t;
                  for (t = yyvsp[-1].ttype; t; t = TREE_CHAIN (t))
                    if (TREE_VALUE (t) == NULL_TREE)
@@ -3809,23 +3818,23 @@ case 402:
                  yyval.ttype = tree_cons (NULL_TREE, NULL_TREE, yyvsp[-1].ttype); ;
     break;}
 case 403:
-#line 2245 "c-parse.y"
+#line 2254 "c-parse.y"
 { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
     break;}
 case 404:
-#line 2247 "c-parse.y"
+#line 2256 "c-parse.y"
 { yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
     break;}
 case 405:
-#line 2253 "c-parse.y"
+#line 2262 "c-parse.y"
 { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
     break;}
 case 406:
-#line 2255 "c-parse.y"
+#line 2264 "c-parse.y"
 { yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
     break;}
 case 407:
-#line 2260 "c-parse.y"
+#line 2269 "c-parse.y"
 { yyval.itype = SAVE_WARN_FLAGS();
                  pedantic = 0;
                  warn_pointer_arith = 0; ;
@@ -4028,5 +4037,5 @@ yyerrhandle:
   yystate = yyn;
   goto yynewstate;
 }
-#line 2265 "c-parse.y"
+#line 2274 "c-parse.y"
 
index 92b50cc22b3b7e7d5b3e0d29506692ce3fe05591..3259ecac2b6410a4732e3704feb4c42480316f8d 100644 (file)
@@ -28,10 +28,10 @@ Boston, MA 02111-1307, USA.  */
    written by AT&T, but I have never seen it.  */
 
 ifobjc
-%expect 73
+%expect 74
 end ifobjc
 ifc
-%expect 52
+%expect 53
 end ifc
 
 %{
@@ -1598,12 +1598,21 @@ component_decl:
                  prefix_attributes = TREE_PURPOSE (declspec_stack);
                  declspec_stack = TREE_CHAIN (declspec_stack);
                  resume_momentary ($2); }
-       | typed_typespecs
-               { if (pedantic)
-                   pedwarn ("ANSI C forbids member declarations with no members");
-                 shadow_tag($1);
-                 $$ = NULL_TREE; }
-       | nonempty_type_quals setspecs components
+       | typed_typespecs setspecs save_filename save_lineno maybe_attribute
+               {
+                 /* Support for unnamed structs or unions as members of 
+                    structs or unions (which is [a] useful and [b] supports 
+                    MS P-SDK).  */
+                 if (pedantic)
+                   pedwarn ("ANSI C doesn't support unnamed structs/unions");
+
+                 $$ = grokfield($3, $4, NULL, current_declspecs, NULL_TREE);
+                 current_declspecs = TREE_VALUE (declspec_stack);
+                 prefix_attributes = TREE_PURPOSE (declspec_stack);
+                 declspec_stack = TREE_CHAIN (declspec_stack);
+                 resume_momentary ($2);
+               }
+    | nonempty_type_quals setspecs components
                { $$ = $3;
                  current_declspecs = TREE_VALUE (declspec_stack);
                  prefix_attributes = TREE_PURPOSE (declspec_stack);
index 7d4e2c69213c58d5ece2b2b944988bf1cb175cfd..f9092d7aed624c5623c0e10ed240edd1505a470e 100644 (file)
@@ -28,7 +28,7 @@ Boston, MA 02111-1307, USA.  */
 /* To whomever it may concern: I have heard that such a thing was once
    written by AT&T, but I have never seen it.  */
 
-%expect 52
+%expect 53
 
 %{
 #include "config.h"
@@ -1407,12 +1407,21 @@ component_decl:
                  prefix_attributes = TREE_PURPOSE (declspec_stack);
                  declspec_stack = TREE_CHAIN (declspec_stack);
                  resume_momentary ($2); }
-       | typed_typespecs
-               { if (pedantic)
-                   pedwarn ("ANSI C forbids member declarations with no members");
-                 shadow_tag($1);
-                 $$ = NULL_TREE; }
-       | nonempty_type_quals setspecs components
+       | typed_typespecs setspecs save_filename save_lineno maybe_attribute
+               {
+                 /* Support for unnamed structs or unions as members of 
+                    structs or unions (which is [a] useful and [b] supports 
+                    MS P-SDK).  */
+                 if (pedantic)
+                   pedwarn ("ANSI C doesn't support unnamed structs/unions");
+
+                 $$ = grokfield($3, $4, NULL, current_declspecs, NULL_TREE);
+                 current_declspecs = TREE_VALUE (declspec_stack);
+                 prefix_attributes = TREE_PURPOSE (declspec_stack);
+                 declspec_stack = TREE_CHAIN (declspec_stack);
+                 resume_momentary ($2);
+               }
+    | nonempty_type_quals setspecs components
                { $$ = $3;
                  current_declspecs = TREE_VALUE (declspec_stack);
                  prefix_attributes = TREE_PURPOSE (declspec_stack);
index f414ae665c527354ee72238a5f1bbd09228a78fb..0a9eb500d4a2d76deba9d09fb36b614ffbc88063 100644 (file)
@@ -167,7 +167,7 @@ c_parse_init ()
 
 
 
-#define        YYFINAL         965
+#define        YYFINAL         969
 #define        YYFLAG          -32768
 #define        YYNTBASE        86
 
@@ -237,36 +237,36 @@ static const short yyprhs[] = {     0,
    732,   734,   738,   742,   746,   751,   755,   759,   761,   763,
    766,   768,   771,   773,   776,   777,   785,   791,   794,   795,
    803,   809,   812,   813,   822,   823,   831,   834,   835,   837,
-   838,   840,   842,   845,   846,   850,   853,   858,   862,   864,
-   868,   870,   872,   875,   877,   881,   886,   893,   899,   901,
-   905,   907,   909,   913,   916,   919,   920,   922,   924,   927,
-   928,   931,   935,   939,   942,   946,   951,   955,   958,   962,
-   965,   969,   971,   973,   976,   979,   980,   982,   985,   986,
-   987,   989,   991,   994,   998,  1000,  1003,  1005,  1007,  1013,
-  1018,  1023,  1026,  1029,  1032,  1035,  1040,  1041,  1046,  1047,
-  1048,  1052,  1057,  1061,  1063,  1065,  1067,  1069,  1072,  1073,
-  1078,  1080,  1084,  1085,  1086,  1094,  1100,  1103,  1104,  1105,
-  1106,  1119,  1120,  1127,  1130,  1133,  1136,  1140,  1147,  1156,
-  1167,  1180,  1184,  1189,  1191,  1193,  1194,  1201,  1205,  1211,
-  1214,  1218,  1219,  1221,  1222,  1224,  1225,  1227,  1229,  1233,
-  1238,  1240,  1244,  1245,  1248,  1251,  1252,  1257,  1260,  1261,
-  1263,  1265,  1269,  1271,  1275,  1280,  1285,  1290,  1295,  1300,
-  1301,  1304,  1306,  1309,  1311,  1315,  1317,  1321,  1323,  1325,
-  1327,  1329,  1331,  1333,  1335,  1337,  1341,  1345,  1350,  1351,
-  1352,  1363,  1364,  1371,  1372,  1373,  1386,  1387,  1396,  1397,
-  1404,  1407,  1408,  1417,  1422,  1423,  1433,  1439,  1440,  1447,
-  1448,  1450,  1454,  1458,  1460,  1462,  1464,  1466,  1467,  1471,
-  1474,  1478,  1482,  1484,  1485,  1487,  1491,  1493,  1497,  1500,
-  1501,  1502,  1503,  1511,  1512,  1513,  1514,  1522,  1523,  1524,
-  1527,  1529,  1531,  1534,  1535,  1539,  1541,  1543,  1544,  1545,
-  1551,  1552,  1553,  1559,  1564,  1566,  1572,  1575,  1576,  1579,
-  1580,  1582,  1584,  1586,  1589,  1592,  1597,  1600,  1603,  1605,
-  1609,  1612,  1615,  1618,  1619,  1622,  1623,  1627,  1629,  1631,
-  1634,  1636,  1638,  1640,  1642,  1644,  1646,  1648,  1650,  1652,
-  1654,  1656,  1658,  1660,  1662,  1664,  1666,  1668,  1670,  1672,
-  1674,  1676,  1678,  1680,  1682,  1684,  1691,  1695,  1701,  1704,
-  1706,  1708,  1710,  1713,  1715,  1719,  1722,  1724,  1726,  1727,
-  1728,  1735,  1737,  1739,  1741,  1744,  1747,  1749,  1754,  1759
+   838,   840,   842,   845,   846,   850,   853,   858,   862,   868,
+   872,   874,   876,   879,   881,   885,   890,   897,   903,   905,
+   909,   911,   913,   917,   920,   923,   924,   926,   928,   931,
+   932,   935,   939,   943,   946,   950,   955,   959,   962,   966,
+   969,   973,   975,   977,   980,   983,   984,   986,   989,   990,
+   991,   993,   995,   998,  1002,  1004,  1007,  1009,  1011,  1017,
+  1022,  1027,  1030,  1033,  1036,  1039,  1044,  1045,  1050,  1051,
+  1052,  1056,  1061,  1065,  1067,  1069,  1071,  1073,  1076,  1077,
+  1082,  1084,  1088,  1089,  1090,  1098,  1104,  1107,  1108,  1109,
+  1110,  1123,  1124,  1131,  1134,  1137,  1140,  1144,  1151,  1160,
+  1171,  1184,  1188,  1193,  1195,  1197,  1198,  1205,  1209,  1215,
+  1218,  1222,  1223,  1225,  1226,  1228,  1229,  1231,  1233,  1237,
+  1242,  1244,  1248,  1249,  1252,  1255,  1256,  1261,  1264,  1265,
+  1267,  1269,  1273,  1275,  1279,  1284,  1289,  1294,  1299,  1304,
+  1305,  1308,  1310,  1313,  1315,  1319,  1321,  1325,  1327,  1329,
+  1331,  1333,  1335,  1337,  1339,  1341,  1345,  1349,  1354,  1355,
+  1356,  1367,  1368,  1375,  1376,  1377,  1390,  1391,  1400,  1401,
+  1408,  1411,  1412,  1421,  1426,  1427,  1437,  1443,  1444,  1451,
+  1452,  1454,  1458,  1462,  1464,  1466,  1468,  1470,  1471,  1475,
+  1478,  1482,  1486,  1488,  1489,  1491,  1495,  1497,  1501,  1504,
+  1505,  1506,  1507,  1515,  1516,  1517,  1518,  1526,  1527,  1528,
+  1531,  1533,  1535,  1538,  1539,  1543,  1545,  1547,  1548,  1549,
+  1555,  1556,  1557,  1563,  1568,  1570,  1576,  1579,  1580,  1583,
+  1584,  1586,  1588,  1590,  1593,  1596,  1601,  1604,  1607,  1609,
+  1613,  1616,  1619,  1622,  1623,  1626,  1627,  1631,  1633,  1635,
+  1638,  1640,  1642,  1644,  1646,  1648,  1650,  1652,  1654,  1656,
+  1658,  1660,  1662,  1664,  1666,  1668,  1670,  1672,  1674,  1676,
+  1678,  1680,  1682,  1684,  1686,  1688,  1695,  1699,  1705,  1708,
+  1710,  1712,  1714,  1717,  1719,  1723,  1726,  1728,  1730,  1731,
+  1732,  1739,  1741,  1743,  1745,  1748,  1751,  1753,  1758,  1763
 };
 
 static const short yyrhs[] = {    -1,
@@ -356,97 +356,97 @@ static const short yyrhs[] = {    -1,
    172,    99,     0,     0,    83,     0,     0,    83,     0,   181,
      0,   181,   182,     0,     0,   181,   182,    79,     0,   181,
     79,     0,    67,    61,    69,    78,     0,   133,   124,   183,
-     0,   133,     0,   189,   124,   183,     0,   189,     0,     1,
-     0,   244,   182,     0,   184,     0,   183,    83,   184,     0,
-   209,   210,   166,   144,     0,   209,   210,   166,    40,   109,
-   144,     0,   209,   210,    40,   109,   144,     0,   186,     0,
-   185,    83,   186,     0,     1,     0,    99,     0,    99,    38,
-   109,     0,   133,   188,     0,   189,   188,     0,     0,   191,
-     0,     7,     0,   189,     7,     0,     0,   190,     7,     0,
-    61,   191,    78,     0,    52,   190,   191,     0,    52,   190,
-     0,   191,    61,   232,     0,   191,    62,   101,    85,     0,
-   191,    62,    85,     0,    61,   232,     0,    62,   101,    85,
-     0,    62,    85,     0,   145,   125,   191,     0,   193,     0,
-   212,     0,   193,   212,     0,   193,   195,     0,     0,   192,
-     0,     1,    79,     0,     0,     0,   198,     0,   199,     0,
-   198,   199,     0,    32,   243,    79,     0,   204,     0,     1,
-   204,     0,    84,     0,    80,     0,   196,   197,   123,   194,
-    80,     0,   196,   197,     1,    80,     0,   196,   197,   192,
-    80,     0,    61,    84,     0,   201,   202,     0,   206,   211,
-     0,   206,     1,     0,    15,    61,   101,    78,     0,     0,
-    18,   208,   211,    17,     0,     0,     0,   209,   210,   214,
-     0,   209,   210,   225,   211,     0,   209,   210,   213,     0,
-   214,     0,   225,     0,   204,     0,   222,     0,   101,    79,
-     0,     0,   205,    16,   215,   211,     0,   205,     0,   205,
-    16,     1,     0,     0,     0,    17,   216,    61,   101,    78,
-   217,   211,     0,   207,    61,   101,    78,    79,     0,   207,
-     1,     0,     0,     0,     0,    19,    61,   227,    79,   218,
-   227,    79,   219,   227,    78,   220,   211,     0,     0,    20,
-    61,   101,    78,   221,   211,     0,    23,    79,     0,    24,
-    79,     0,    25,    79,     0,    25,   101,    79,     0,    27,
-   226,    61,   101,    78,    79,     0,    27,   226,    61,   101,
-    40,   228,    78,    79,     0,    27,   226,    61,   101,    40,
-   228,    40,   228,    78,    79,     0,    27,   226,    61,   101,
-    40,   228,    40,   228,    40,   231,    78,    79,     0,    26,
-    99,    79,     0,    26,    52,   101,    79,     0,    79,     0,
-   223,     0,     0,    19,    61,   115,    78,   224,   211,     0,
-    21,   109,    40,     0,    21,   109,    10,   109,    40,     0,
-    22,    40,     0,    99,    40,   144,     0,     0,     7,     0,
-     0,   101,     0,     0,   229,     0,   230,     0,   229,    83,
-   230,     0,     9,    61,   101,    78,     0,   116,     0,   231,
-    83,   116,     0,     0,   233,   234,     0,   236,    78,     0,
-     0,   237,    79,   235,   234,     0,     1,    78,     0,     0,
-    10,     0,   237,     0,   237,    83,    10,     0,   238,     0,
-   237,    83,   238,     0,   127,   124,   168,   144,     0,   127,
-   124,   169,   144,     0,   127,   124,   188,   144,     0,   131,
-   124,   169,   144,     0,   131,   124,   188,   144,     0,     0,
-   240,   241,     0,   234,     0,   242,    78,     0,     3,     0,
-   242,    83,     3,     0,    99,     0,   243,    83,    99,     0,
-    31,     0,   249,     0,   247,     0,   248,     0,   259,     0,
-   269,     0,    65,     0,    99,     0,   246,    83,    99,     0,
-    75,   246,    79,     0,    76,    99,    99,    79,     0,     0,
-     0,    63,    99,   261,    84,   250,   263,    80,   251,   276,
-    65,     0,     0,    63,    99,   261,   252,   276,    65,     0,
-     0,     0,    63,    99,    40,    99,   261,    84,   253,   263,
-    80,   254,   276,    65,     0,     0,    63,    99,    40,    99,
-   261,   255,   276,    65,     0,     0,    64,    99,    84,   256,
-   263,    80,     0,    64,    99,     0,     0,    64,    99,    40,
-    99,    84,   257,   263,    80,     0,    64,    99,    40,    99,
-     0,     0,    63,    99,    61,    99,    78,   261,   258,   276,
-    65,     0,    64,    99,    61,    99,    78,     0,     0,    73,
-    99,   261,   260,   276,    65,     0,     0,   262,     0,    47,
-   246,    47,     0,   263,   264,   265,     0,   265,     0,    71,
-     0,    72,     0,    70,     0,     0,   265,   266,    79,     0,
-   265,    79,     0,   133,   124,   267,     0,   189,   124,   267,
-     0,     1,     0,     0,   268,     0,   267,    83,   268,     0,
-   166,     0,   166,    40,   109,     0,    40,   109,     0,     0,
-     0,     0,    50,   270,   286,   271,   287,   272,   200,     0,
-     0,     0,     0,    51,   273,   286,   274,   287,   275,   200,
-     0,     0,     0,   277,   278,     0,   281,     0,    91,     0,
-   278,   281,     0,     0,   278,   279,    91,     0,    79,     0,
-     1,     0,     0,     0,    50,   282,   286,   283,   280,     0,
-     0,     0,    51,   284,   286,   285,   280,     0,    61,   187,
-    78,   295,     0,   295,     0,    61,   187,    78,   296,   293,
-     0,   296,   293,     0,     0,    79,   288,     0,     0,   289,
-     0,   290,     0,   195,     0,   289,   290,     0,   290,   195,
-     0,   127,   124,   291,    79,     0,   127,    79,     0,   131,
-    79,     0,   292,     0,   291,    83,   292,     0,   168,   144,
-     0,   169,   144,     0,   188,   144,     0,     0,    83,    10,
-     0,     0,    83,   294,   236,     0,   297,     0,   299,     0,
-   296,   299,     0,     3,     0,     4,     0,    74,     0,   298,
-     0,    12,     0,    13,     0,    14,     0,    15,     0,    16,
-     0,    17,     0,    18,     0,    19,     0,    20,     0,    21,
-     0,    22,     0,    23,     0,    24,     0,    25,     0,    26,
-     0,    27,     0,    11,     0,    28,     0,    29,     0,     6,
-     0,     7,     0,   297,    40,    61,   187,    78,    99,     0,
-   297,    40,    99,     0,    40,    61,   187,    78,    99,     0,
-    40,    99,     0,   297,     0,   301,     0,   303,     0,   301,
-   303,     0,   103,     0,   297,    40,   302,     0,    40,   302,
-     0,   101,     0,    69,     0,     0,     0,    62,   306,   304,
-   307,   300,    85,     0,   297,     0,   309,     0,   310,     0,
-   309,   310,     0,   297,    40,     0,    40,     0,    66,    61,
-   308,    78,     0,    73,    61,    99,    78,     0,    68,    61,
-   187,    78,     0
+     0,   133,   124,   209,   210,   144,     0,   189,   124,   183,
+     0,   189,     0,     1,     0,   244,   182,     0,   184,     0,
+   183,    83,   184,     0,   209,   210,   166,   144,     0,   209,
+   210,   166,    40,   109,   144,     0,   209,   210,    40,   109,
+   144,     0,   186,     0,   185,    83,   186,     0,     1,     0,
+    99,     0,    99,    38,   109,     0,   133,   188,     0,   189,
+   188,     0,     0,   191,     0,     7,     0,   189,     7,     0,
+     0,   190,     7,     0,    61,   191,    78,     0,    52,   190,
+   191,     0,    52,   190,     0,   191,    61,   232,     0,   191,
+    62,   101,    85,     0,   191,    62,    85,     0,    61,   232,
+     0,    62,   101,    85,     0,    62,    85,     0,   145,   125,
+   191,     0,   193,     0,   212,     0,   193,   212,     0,   193,
+   195,     0,     0,   192,     0,     1,    79,     0,     0,     0,
+   198,     0,   199,     0,   198,   199,     0,    32,   243,    79,
+     0,   204,     0,     1,   204,     0,    84,     0,    80,     0,
+   196,   197,   123,   194,    80,     0,   196,   197,     1,    80,
+     0,   196,   197,   192,    80,     0,    61,    84,     0,   201,
+   202,     0,   206,   211,     0,   206,     1,     0,    15,    61,
+   101,    78,     0,     0,    18,   208,   211,    17,     0,     0,
+     0,   209,   210,   214,     0,   209,   210,   225,   211,     0,
+   209,   210,   213,     0,   214,     0,   225,     0,   204,     0,
+   222,     0,   101,    79,     0,     0,   205,    16,   215,   211,
+     0,   205,     0,   205,    16,     1,     0,     0,     0,    17,
+   216,    61,   101,    78,   217,   211,     0,   207,    61,   101,
+    78,    79,     0,   207,     1,     0,     0,     0,     0,    19,
+    61,   227,    79,   218,   227,    79,   219,   227,    78,   220,
+   211,     0,     0,    20,    61,   101,    78,   221,   211,     0,
+    23,    79,     0,    24,    79,     0,    25,    79,     0,    25,
+   101,    79,     0,    27,   226,    61,   101,    78,    79,     0,
+    27,   226,    61,   101,    40,   228,    78,    79,     0,    27,
+   226,    61,   101,    40,   228,    40,   228,    78,    79,     0,
+    27,   226,    61,   101,    40,   228,    40,   228,    40,   231,
+    78,    79,     0,    26,    99,    79,     0,    26,    52,   101,
+    79,     0,    79,     0,   223,     0,     0,    19,    61,   115,
+    78,   224,   211,     0,    21,   109,    40,     0,    21,   109,
+    10,   109,    40,     0,    22,    40,     0,    99,    40,   144,
+     0,     0,     7,     0,     0,   101,     0,     0,   229,     0,
+   230,     0,   229,    83,   230,     0,     9,    61,   101,    78,
+     0,   116,     0,   231,    83,   116,     0,     0,   233,   234,
+     0,   236,    78,     0,     0,   237,    79,   235,   234,     0,
+     1,    78,     0,     0,    10,     0,   237,     0,   237,    83,
+    10,     0,   238,     0,   237,    83,   238,     0,   127,   124,
+   168,   144,     0,   127,   124,   169,   144,     0,   127,   124,
+   188,   144,     0,   131,   124,   169,   144,     0,   131,   124,
+   188,   144,     0,     0,   240,   241,     0,   234,     0,   242,
+    78,     0,     3,     0,   242,    83,     3,     0,    99,     0,
+   243,    83,    99,     0,    31,     0,   249,     0,   247,     0,
+   248,     0,   259,     0,   269,     0,    65,     0,    99,     0,
+   246,    83,    99,     0,    75,   246,    79,     0,    76,    99,
+    99,    79,     0,     0,     0,    63,    99,   261,    84,   250,
+   263,    80,   251,   276,    65,     0,     0,    63,    99,   261,
+   252,   276,    65,     0,     0,     0,    63,    99,    40,    99,
+   261,    84,   253,   263,    80,   254,   276,    65,     0,     0,
+    63,    99,    40,    99,   261,   255,   276,    65,     0,     0,
+    64,    99,    84,   256,   263,    80,     0,    64,    99,     0,
+     0,    64,    99,    40,    99,    84,   257,   263,    80,     0,
+    64,    99,    40,    99,     0,     0,    63,    99,    61,    99,
+    78,   261,   258,   276,    65,     0,    64,    99,    61,    99,
+    78,     0,     0,    73,    99,   261,   260,   276,    65,     0,
+     0,   262,     0,    47,   246,    47,     0,   263,   264,   265,
+     0,   265,     0,    71,     0,    72,     0,    70,     0,     0,
+   265,   266,    79,     0,   265,    79,     0,   133,   124,   267,
+     0,   189,   124,   267,     0,     1,     0,     0,   268,     0,
+   267,    83,   268,     0,   166,     0,   166,    40,   109,     0,
+    40,   109,     0,     0,     0,     0,    50,   270,   286,   271,
+   287,   272,   200,     0,     0,     0,     0,    51,   273,   286,
+   274,   287,   275,   200,     0,     0,     0,   277,   278,     0,
+   281,     0,    91,     0,   278,   281,     0,     0,   278,   279,
+    91,     0,    79,     0,     1,     0,     0,     0,    50,   282,
+   286,   283,   280,     0,     0,     0,    51,   284,   286,   285,
+   280,     0,    61,   187,    78,   295,     0,   295,     0,    61,
+   187,    78,   296,   293,     0,   296,   293,     0,     0,    79,
+   288,     0,     0,   289,     0,   290,     0,   195,     0,   289,
+   290,     0,   290,   195,     0,   127,   124,   291,    79,     0,
+   127,    79,     0,   131,    79,     0,   292,     0,   291,    83,
+   292,     0,   168,   144,     0,   169,   144,     0,   188,   144,
+     0,     0,    83,    10,     0,     0,    83,   294,   236,     0,
+   297,     0,   299,     0,   296,   299,     0,     3,     0,     4,
+     0,    74,     0,   298,     0,    12,     0,    13,     0,    14,
+     0,    15,     0,    16,     0,    17,     0,    18,     0,    19,
+     0,    20,     0,    21,     0,    22,     0,    23,     0,    24,
+     0,    25,     0,    26,     0,    27,     0,    11,     0,    28,
+     0,    29,     0,     6,     0,     7,     0,   297,    40,    61,
+   187,    78,    99,     0,   297,    40,    99,     0,    40,    61,
+   187,    78,    99,     0,    40,    99,     0,   297,     0,   301,
+     0,   303,     0,   301,   303,     0,   103,     0,   297,    40,
+   302,     0,    40,   302,     0,   101,     0,    69,     0,     0,
+     0,    62,   306,   304,   307,   300,    85,     0,   297,     0,
+   309,     0,   310,     0,   309,   310,     0,   297,    40,     0,
+    40,     0,    66,    61,   308,    78,     0,    73,    61,    99,
+    78,     0,    68,    61,   187,    78,     0
 };
 
 #endif
@@ -480,36 +480,36 @@ static const short yyrline[] = { 0,
   1391,  1397,  1403,  1405,  1407,  1409,  1416,  1418,  1421,  1424,
   1428,  1431,  1435,  1438,  1442,  1447,  1449,  1453,  1455,  1457,
   1459,  1463,  1465,  1468,  1471,  1474,  1477,  1481,  1483,  1486,
-  1488,  1493,  1496,  1501,  1503,  1505,  1509,  1533,  1540,  1545,
-  1551,  1556,  1558,  1563,  1565,  1569,  1573,  1577,  1587,  1589,
-  1594,  1599,  1602,  1606,  1609,  1613,  1616,  1619,  1622,  1626,
-  1629,  1633,  1637,  1639,  1641,  1643,  1645,  1647,  1649,  1651,
-  1655,  1663,  1671,  1673,  1675,  1679,  1681,  1684,  1687,  1700,
-  1702,  1707,  1709,  1712,  1726,  1729,  1732,  1734,  1736,  1744,
-  1752,  1762,  1780,  1785,  1790,  1793,  1807,  1816,  1820,  1824,
-  1828,  1834,  1838,  1843,  1846,  1851,  1854,  1855,  1872,  1877,
-  1880,  1892,  1894,  1904,  1914,  1915,  1923,  1926,  1938,  1942,
-  1959,  1969,  1978,  1983,  1988,  1993,  1997,  2001,  2012,  2019,
-  2026,  2033,  2044,  2050,  2053,  2058,  2081,  2115,  2146,  2177,
-  2192,  2206,  2210,  2214,  2217,  2222,  2224,  2227,  2229,  2233,
-  2238,  2241,  2247,  2252,  2257,  2259,  2268,  2269,  2275,  2277,
-  2287,  2289,  2293,  2296,  2302,  2312,  2321,  2330,  2340,  2354,
-  2359,  2364,  2366,  2375,  2378,  2383,  2386,  2390,  2399,  2401,
-  2402,  2403,  2404,  2405,  2419,  2422,  2426,  2432,  2438,  2445,
-  2450,  2456,  2463,  2469,  2475,  2480,  2486,  2493,  2499,  2505,
-  2511,  2519,  2525,  2531,  2539,  2546,  2552,  2561,  2568,  2576,
-  2581,  2584,  2594,  2596,  2599,  2601,  2602,  2605,  2610,  2611,
-  2628,  2635,  2641,  2645,  2648,  2649,  2652,  2660,  2666,  2675,
-  2685,  2692,  2696,  2701,  2710,  2717,  2721,  2731,  2733,  2734,
-  2736,  2738,  2739,  2740,  2741,  2743,  2745,  2748,  2756,  2763,
-  2763,  2770,  2776,  2778,  2784,  2789,  2794,  2803,  2805,  2811,
-  2813,  2816,  2818,  2819,  2820,  2823,  2829,  2831,  2835,  2838,
-  2845,  2851,  2856,  2863,  2868,  2873,  2878,  2885,  2889,  2892,
-  2898,  2900,  2901,  2902,  2905,  2907,  2908,  2909,  2910,  2911,
-  2912,  2913,  2914,  2915,  2916,  2917,  2918,  2919,  2920,  2921,
-  2922,  2923,  2924,  2925,  2925,  2928,  2934,  2939,  2944,  2950,
-  2952,  2955,  2957,  2964,  2976,  2981,  2987,  2989,  2995,  2999,
-  3000,  3006,  3008,  3011,  3013,  3019,  3024,  3030,  3037,  3046
+  1488,  1493,  1496,  1501,  1503,  1505,  1509,  1533,  1540,  1554,
+  1560,  1565,  1567,  1572,  1574,  1578,  1582,  1586,  1596,  1598,
+  1603,  1608,  1611,  1615,  1618,  1622,  1625,  1628,  1631,  1635,
+  1638,  1642,  1646,  1648,  1650,  1652,  1654,  1656,  1658,  1660,
+  1664,  1672,  1680,  1682,  1684,  1688,  1690,  1693,  1696,  1709,
+  1711,  1716,  1718,  1721,  1735,  1738,  1741,  1743,  1745,  1753,
+  1761,  1771,  1789,  1794,  1799,  1802,  1816,  1825,  1829,  1833,
+  1837,  1843,  1847,  1852,  1855,  1860,  1863,  1864,  1881,  1886,
+  1889,  1901,  1903,  1913,  1923,  1924,  1932,  1935,  1947,  1951,
+  1968,  1978,  1987,  1992,  1997,  2002,  2006,  2010,  2021,  2028,
+  2035,  2042,  2053,  2059,  2062,  2067,  2090,  2124,  2155,  2186,
+  2201,  2215,  2219,  2223,  2226,  2231,  2233,  2236,  2238,  2242,
+  2247,  2250,  2256,  2261,  2266,  2268,  2277,  2278,  2284,  2286,
+  2296,  2298,  2302,  2305,  2311,  2321,  2330,  2339,  2349,  2363,
+  2368,  2373,  2375,  2384,  2387,  2392,  2395,  2399,  2408,  2410,
+  2411,  2412,  2413,  2414,  2428,  2431,  2435,  2441,  2447,  2454,
+  2459,  2465,  2472,  2478,  2484,  2489,  2495,  2502,  2508,  2514,
+  2520,  2528,  2534,  2540,  2548,  2555,  2561,  2570,  2577,  2585,
+  2590,  2593,  2603,  2605,  2608,  2610,  2611,  2614,  2619,  2620,
+  2637,  2644,  2650,  2654,  2657,  2658,  2661,  2669,  2675,  2684,
+  2694,  2701,  2705,  2710,  2719,  2726,  2730,  2740,  2742,  2743,
+  2745,  2747,  2748,  2749,  2750,  2752,  2754,  2757,  2765,  2772,
+  2772,  2779,  2785,  2787,  2793,  2798,  2803,  2812,  2814,  2820,
+  2822,  2825,  2827,  2828,  2829,  2832,  2838,  2840,  2844,  2847,
+  2854,  2860,  2865,  2872,  2877,  2882,  2887,  2894,  2898,  2901,
+  2907,  2909,  2910,  2911,  2914,  2916,  2917,  2918,  2919,  2920,
+  2921,  2922,  2923,  2924,  2925,  2926,  2927,  2928,  2929,  2930,
+  2931,  2932,  2933,  2934,  2934,  2937,  2943,  2948,  2953,  2959,
+  2961,  2964,  2966,  2973,  2985,  2990,  2996,  2998,  3004,  3008,
+  3009,  3015,  3017,  3020,  3022,  3028,  3033,  3039,  3046,  3055
 };
 #endif
 
@@ -651,7 +651,7 @@ static const short yyr2[] = {     0,
      1,     3,     3,     3,     4,     3,     3,     1,     1,     2,
      1,     2,     1,     2,     0,     7,     5,     2,     0,     7,
      5,     2,     0,     8,     0,     7,     2,     0,     1,     0,
-     1,     1,     2,     0,     3,     2,     4,     3,     1,     3,
+     1,     1,     2,     0,     3,     2,     4,     3,     5,     3,
      1,     1,     2,     1,     3,     4,     6,     5,     1,     3,
      1,     1,     3,     2,     2,     0,     1,     1,     2,     0,
      2,     3,     3,     2,     3,     4,     3,     2,     3,     2,
@@ -743,835 +743,833 @@ static const short yydefact[] = {     3,
    440,   458,   463,   460,   129,   129,     0,   449,   177,   398,
    296,   296,   395,   396,     0,   413,     0,     0,   327,    30,
    319,   325,   115,   129,   129,   146,     0,     0,   178,   230,
-     0,   277,   278,   284,   340,   280,   184,   184,   293,   290,
-   184,     0,     0,     0,     0,   550,     0,   551,   552,    84,
-    87,   324,     0,   330,   128,   127,   317,     0,   331,   315,
-   340,   314,     0,   306,   193,     0,   195,   548,   496,   507,
-   296,   508,   504,   505,   473,     0,   477,   458,     0,   479,
-   430,     0,     0,   176,     0,     0,     0,   483,     0,     0,
-   464,   464,   459,   241,   300,   393,   130,   184,   184,   184,
-   300,   130,   184,   184,     0,   402,   404,   415,   326,   333,
-   122,     0,   123,     0,   146,   144,   203,   201,   200,   182,
-    22,     0,    26,   339,     0,   256,   260,   266,   184,    59,
-   216,    90,     0,   213,     0,   215,     0,   268,   206,   212,
-     0,     0,   554,   556,     0,   561,     0,   553,     0,   417,
-   329,     0,   163,     0,   353,   337,     0,     0,     0,     0,
-     0,     0,     0,     0,   382,   450,   450,   374,     0,     0,
-   124,   129,   129,   346,   351,     0,     0,   343,   344,   347,
-   375,   345,     0,     0,   184,   184,   184,     0,   509,   546,
-     0,   438,     0,   479,   489,   492,   485,   443,     0,   467,
-   461,   465,   462,   304,     0,   410,     0,   405,   406,   407,
-   304,     0,   408,   409,   397,     0,     0,   145,   148,   147,
-     0,   179,   285,     0,   184,   264,   219,     0,   210,    65,
-     0,   205,     0,   218,   209,   555,    85,     0,     0,   339,
-   384,     0,     0,   380,   364,   365,   366,     0,     0,     0,
-   383,     0,   184,   348,   135,     0,   136,     0,     0,   335,
-   340,   334,   357,     0,   137,   194,   511,   512,   513,   506,
-   296,   435,   446,     0,     0,     0,   469,     0,     0,   239,
-   240,   236,   238,     0,   120,   121,     0,   184,     0,   286,
-     0,     0,   207,   208,     0,     0,     0,   385,    48,     0,
-     0,     0,   378,   367,     0,   372,     0,   381,     0,   133,
-   220,     0,   134,   223,   352,   339,     0,     0,   510,   479,
-   431,   487,   486,   490,   493,   468,   466,   237,   202,   288,
-   184,   214,   211,   336,     0,   338,   376,   358,   362,     0,
-   373,     0,   131,     0,   132,     0,   350,   341,   339,     0,
-     0,   287,   354,   339,   384,   339,   379,   386,     0,   221,
-   224,   342,   356,   436,   339,   377,     0,   363,     0,     0,
-   387,   388,   368,     0,     0,   355,   359,     0,   386,     0,
-     0,   222,   225,   384,     0,     0,   369,   389,     0,   390,
-     0,     0,   360,   391,     0,   370,   339,     0,     0,   361,
-   371,   392,     0,     0,     0
+     0,   277,   278,   284,   340,   280,   340,   184,   184,   293,
+   290,   184,     0,     0,     0,     0,   550,     0,   551,   552,
+    84,    87,   324,     0,   330,   128,   127,   317,     0,   331,
+   315,   340,   314,     0,   306,   193,     0,   195,   548,   496,
+   507,   296,   508,   504,   505,   473,     0,   477,   458,     0,
+   479,   430,     0,     0,   176,     0,     0,     0,   483,     0,
+     0,   464,   464,   459,   241,   300,   393,   130,   184,   184,
+   184,   300,   130,   184,   184,     0,   402,   404,   415,   326,
+   333,   122,     0,   123,     0,   146,   144,   203,   201,   200,
+   182,    22,     0,    26,   339,   184,     0,   256,   260,   266,
+   184,    59,   216,    90,     0,   213,     0,   215,     0,   268,
+   206,   212,     0,     0,   554,   556,     0,   561,     0,   553,
+     0,   417,   329,     0,   163,     0,   353,   337,     0,     0,
+     0,     0,     0,     0,     0,     0,   382,   450,   450,   374,
+     0,     0,   124,   129,   129,   346,   351,     0,     0,   343,
+   344,   347,   375,   345,     0,     0,   184,   184,   184,     0,
+   509,   546,     0,   438,     0,   479,   489,   492,   485,   443,
+     0,   467,   461,   465,   462,   304,     0,   410,     0,   405,
+   406,   407,   304,     0,   408,   409,   397,     0,     0,   145,
+   148,   147,     0,   179,   285,     0,   279,   130,   184,   264,
+   219,     0,   210,    65,     0,   205,     0,   218,   209,   555,
+    85,     0,     0,   339,   384,     0,     0,   380,   364,   365,
+   366,     0,     0,     0,   383,     0,   184,   348,   135,     0,
+   136,     0,     0,   335,   340,   334,   357,     0,   137,   194,
+   511,   512,   513,   506,   296,   435,   446,     0,     0,     0,
+   469,     0,     0,   239,   240,   236,   238,     0,   120,   121,
+     0,   184,     0,   286,     0,     0,   207,   208,     0,     0,
+     0,   385,    48,     0,     0,     0,   378,   367,     0,   372,
+     0,   381,     0,   133,   220,     0,   134,   223,   352,   339,
+     0,     0,   510,   479,   431,   487,   486,   490,   493,   468,
+   466,   237,   202,   288,   184,   214,   211,   336,     0,   338,
+   376,   358,   362,     0,   373,     0,   131,     0,   132,     0,
+   350,   341,   339,     0,     0,   287,   354,   339,   384,   339,
+   379,   386,     0,   221,   224,   342,   356,   436,   339,   377,
+     0,   363,     0,     0,   387,   388,   368,     0,     0,   355,
+   359,     0,   386,     0,     0,   222,   225,   384,     0,     0,
+   369,   389,     0,   390,     0,     0,   360,   391,     0,   370,
+   339,     0,     0,   361,   371,   392,     0,     0,     0
 };
 
-static const short yydefgoto[] = {   963,
+static const short yydefgoto[] = {   967,
      1,     2,     3,    28,    29,    30,   343,   588,   349,   591,
-   200,   460,   695,   123,   236,   404,   125,   126,   127,   128,
-   129,   604,   130,   389,   388,   386,   709,   387,   131,   132,
-   133,   330,   331,   332,   583,   510,   511,    31,   195,   731,
-   450,    91,   584,   676,   451,    34,   142,   286,    35,   218,
-   206,    78,   201,   207,   682,    79,   587,   335,   336,    37,
-   295,   296,   297,   680,   781,   697,   698,   699,   852,   700,
-   788,   701,   702,   870,   904,   934,   873,   906,   935,   322,
-   210,   745,   211,    38,    39,    40,    41,   358,   360,   365,
-   227,   792,   487,   222,   223,   355,   593,   594,   363,   364,
-   144,   747,   145,   191,   285,   512,   513,   618,   333,   276,
-   409,   410,   411,   580,   581,   277,   134,   582,   735,   736,
-   737,   800,   821,   464,   822,   516,   738,   739,   876,   799,
-   925,   915,   944,   957,   916,   740,   741,   914,   742,   812,
-   860,   930,   931,   932,   955,   415,   416,   452,   665,   453,
+   200,   460,   697,   123,   236,   404,   125,   126,   127,   128,
+   129,   605,   130,   389,   388,   386,   711,   387,   131,   132,
+   133,   330,   331,   332,   583,   510,   511,    31,   341,   733,
+   450,    91,   584,   677,   451,    34,   142,   286,    35,   218,
+   206,    78,   201,   207,   683,    79,   587,   335,   336,    37,
+   295,   296,   297,   681,   783,   699,   700,   701,   856,   702,
+   792,   703,   704,   874,   908,   938,   877,   910,   939,   322,
+   210,   747,   211,    38,    39,    40,    41,   358,   360,   365,
+   227,   796,   487,   222,   223,   355,   593,   594,   363,   364,
+   144,   749,   145,   191,   285,   512,   513,   619,   333,   276,
+   409,   410,   411,   580,   581,   277,   134,   582,   737,   738,
+   739,   804,   825,   464,   826,   516,   740,   741,   880,   803,
+   929,   919,   948,   961,   920,   742,   743,   918,   744,   816,
+   864,   934,   935,   936,   959,   415,   416,   452,   666,   453,
    454,   455,   325,   326,   456,   457,   508,   135,    43,    64,
-    44,    45,    46,   438,   754,   312,   638,   880,   545,   315,
-   557,   640,    47,   316,    69,    48,   443,   562,   444,   567,
-   761,   762,    49,    65,   302,   539,    66,   308,   543,   439,
-   440,   555,   647,   884,   556,   642,   835,   643,   836,   175,
-   430,   536,   537,   538,   748,   749,   304,   432,   176,   177,
-   178,   179,   180,   607,   608,   704,   609,   372,   136,   238,
+    44,    45,    46,   438,   756,   312,   639,   884,   545,   315,
+   557,   641,    47,   316,    69,    48,   443,   562,   444,   567,
+   763,   764,    49,    65,   302,   539,    66,   308,   543,   439,
+   440,   555,   648,   888,   556,   643,   839,   644,   840,   175,
+   430,   536,   537,   538,   750,   751,   304,   432,   176,   177,
+   178,   179,   180,   608,   609,   706,   610,   372,   136,   238,
    492,   375,   376,   377,   137,   138,   139
 };
 
-static const short yypact[] = {   101,
-   110,  3362,  3362,   129,-32768,-32768,-32768,-32768,    94,    94,
-    94,   134,   169,   178,-32768,   303,-32768,-32768,   303,   303,
--32768,    80,   303,    80,   303,   303,-32768,-32768,-32768,-32768,
-   112,   177,  2761,   217,-32768,    94,-32768,    82,   133,   239,
--32768,  3362,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,    94,    94,    94,  2998,  2830,   211,-32768,-32768,
--32768,-32768,-32768,    46,  3614,  3614,   210,    51,-32768,-32768,
-    80,-32768,   231,   303,-32768,-32768,   112,   336,-32768,    94,
-  1979,-32768,   601,-32768,   112,   217,-32768,    94,-32768,-32768,
-   677,-32768,   207,    78,   207,   196,-32768,   200,-32768,-32768,
--32768,-32768,-32768,-32768,  2998,  2998,   237,   303,-32768,-32768,
--32768,  2998,-32768,-32768,  1497,-32768,   261,   272,   299,-32768,
--32768,-32768,  2998,   292,   310,-32768,  3054,  3110,-32768,  3935,
-   735,   366,   326,  1011,  2998,-32768,-32768,-32768,-32768,-32768,
-   340,   497,-32768,   343,  3738,   322,-32768,   303,-32768,-32768,
+static const short yypact[] = {   118,
+   137,  3350,  3350,   190,-32768,-32768,-32768,-32768,   204,   204,
+   204,   104,   161,   189,-32768,   294,-32768,-32768,   294,   294,
+-32768,   236,   294,   236,   294,   294,-32768,-32768,-32768,-32768,
+   226,   174,  2782,   382,-32768,   204,-32768,   135,   192,   208,
+-32768,  3350,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,   204,   204,   204,  3019,  2851,   241,-32768,-32768,
+-32768,-32768,-32768,   158,  3627,  3627,   346,   123,-32768,-32768,
+   236,-32768,   237,   294,-32768,-32768,   226,   249,-32768,   204,
+   870,-32768,   416,-32768,   226,   382,-32768,   204,-32768,-32768,
+   793,-32768,   238,   242,   238,   258,-32768,   266,-32768,-32768,
+-32768,-32768,-32768,-32768,  3019,  3019,   300,   294,-32768,-32768,
+-32768,  3019,-32768,-32768,  1277,-32768,   354,   357,   362,-32768,
+-32768,-32768,  3019,   330,   371,-32768,  3075,  3131,-32768,  3955,
+  1125,   457,   403,   986,  3019,-32768,-32768,-32768,-32768,-32768,
+   411,   297,-32768,   413,  3751,   303,-32768,   294,-32768,-32768,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,   278,  3809,-32768,-32768,-32768,  2720,   386,-32768,-32768,
--32768,   303,   303,   348,   303,   303,-32768,-32768,-32768,   367,
-   460,    47,-32768,   601,   112,-32768,   390,-32768,  2173,  2152,
-    94,-32768,-32768,   601,-32768,   345,-32768,    94,  2066,   293,
-   306,   383,  2007,   677,-32768,-32768,-32768,-32768,    94,-32768,
-   393,   381,  3282,-32768,   411,-32768,   127,-32768,-32768,-32768,
-  2998,-32768,-32768,   427,-32768,   432,   448,  2886,  3644,  3809,
-   303,-32768,   462,  2998,  1497,-32768,  1497,-32768,  2998,  2998,
-   491,-32768,-32768,  2998,  2998,  2998,  2998,  2998,  2998,  2998,
-  2998,  2998,  2998,  2998,  2998,-32768,-32768,   303,   303,  2998,
-  2998,-32768,-32768,   461,-32768,   518,   479,-32768,-32768,-32768,
-   497,  2234,    94,-32768,   377,   753,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,    35,-32768,   522,-32768,  3809,-32768,
-   490,   510,   583,-32768,   386,-32768,   395,   510,    80,   517,
--32768,   535,   529,   523,-32768,   535,-32768,-32768,   306,-32768,
--32768,   590,   306,   610,-32768,  1209,-32768,   540,   547,-32768,
-   290,    95,-32768,-32768,   589,    94,   328,   171,-32768,   601,
-   601,-32768,  2152,    94,-32768,  2295,-32768,-32768,  2152,   560,
-    94,-32768,-32768,   414,   554,   801,  3550,   207,    94,   207,
--32768,   596,   553,-32768,   127,  3856,-32768,-32768,  2638,-32768,
--32768,-32768,-32768,   597,   561,  3644,-32768,   564,   565,-32768,
-  3935,   568,   569,  3935,  3935,  2998,   618,  2998,  2998,   845,
-  1546,  1152,  1626,  1553,   814,   814,   333,   333,-32768,-32768,
--32768,-32768,-32768,   572,   310,   576,-32768,   303,  1246,   518,
--32768,-32768,   644,   284,-32768,  3467,-32768,   578,   497,-32768,
-  2356,-32768,   753,   587,   322,  3166,   593,  3679,  2094,-32768,
--32768,  3392,  3809,-32768,-32768,   584,    80,-32768,   611,  3439,
--32768,-32768,   342,  3245,   613,    83,   602,-32768,-32768,-32768,
-  3797,-32768,   603,   397,-32768,-32768,    38,-32768,-32768,    65,
--32768,-32768,-32768,  2018,-32768,   293,-32768,-32768,   293,-32768,
-   650,-32768,-32768,   609,-32768,   621,-32768,-32768,-32768,-32768,
--32768,   622,-32768,   623,  2998,   303,   628,   553,  3809,-32768,
--32768,  3709,-32768,-32768,   597,-32768,-32768,-32768,-32768,-32768,
-   653,  2998,  1054,  1469,-32768,-32768,-32768,   400,   423,  1113,
-   632,   637,   908,-32768,-32768,-32768,-32768,   377,-32768,-32768,
--32768,   377,-32768,-32768,   616,-32768,-32768,    67,   640,   303,
--32768,  2720,   645,  3497,-32768,-32768,  3797,  2114,    65,-32768,
-   636,   648,    65,-32768,   535,-32768,   452,-32768,-32768,-32768,
--32768,   112,   177,  2761,   236,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,  3822,   652,-32768,-32768,-32768,
-   608,   216,-32768,-32768,  3750,-32768,   724,   649,-32768,-32768,
-   656,-32768,-32768,   659,   541,-32768,  1820,    65,-32768,-32768,
-    65,-32768,   646,-32768,-32768,   646,    94,    94,  3935,-32768,
-    94,   667,   654,  1579,  2998,   710,   666,  3709,-32768,-32768,
-   952,-32768,   303,-32768,-32768,-32768,-32768,   682,-32768,-32768,
--32768,-32768,  2500,-32768,-32768,  2998,-32768,-32768,-32768,-32768,
-   608,-32768,-32768,-32768,-32768,   303,-32768,-32768,   708,   535,
--32768,  3614,  3614,   126,   601,   112,  1908,-32768,   494,  3262,
-   413,   413,-32768,-32768,-32768,   216,    94,   167,   259,    94,
--32768,    94,   259,    94,  3467,-32768,-32768,-32768,-32768,-32768,
--32768,   601,-32768,   112,-32768,   830,-32768,-32768,  3935,-32768,
--32768,  1820,-32768,-32768,   456,-32768,-32768,-32768,    94,-32768,
--32768,   736,   303,-32768,   737,  3935,   698,   715,-32768,-32768,
-    60,  1743,   310,-32768,  2998,-32768,   710,-32768,  2998,-32768,
--32768,  2582,   759,   740,-32768,-32768,   742,   743,  2998,   766,
-   730,   731,  2942,   201,   809,   159,   212,-32768,   782,   746,
--32768,   747,  3525,-32768,   811,  1333,    87,-32768,-32768,-32768,
--32768,-32768,  2750,   241,   167,   259,    94,   473,-32768,-32768,
-   615,-32768,   763,   535,-32768,-32768,-32768,-32768,  2998,   791,
-   749,-32768,   749,   445,   608,-32768,  2417,-32768,-32768,-32768,
-   375,   216,-32768,-32768,-32768,   496,   498,   830,-32768,-32768,
-  1579,-32768,-32768,  2998,    77,-32768,-32768,  1579,-32768,-32768,
-  1661,-32768,  1897,-32768,-32768,-32768,   952,  2998,   777,-32768,
-  2998,  2998,  3874,-32768,-32768,-32768,-32768,   760,  2998,   767,
--32768,   784,    94,-32768,-32768,   601,-32768,   112,  1415,-32768,
--32768,-32768,-32768,  2998,-32768,-32768,-32768,-32768,-32768,-32768,
-   608,-32768,-32768,   787,    86,    86,  3935,  2998,   413,   482,
-   482,-32768,-32768,   762,-32768,-32768,   778,  3899,  2998,-32768,
-   780,  1897,-32768,-32768,   779,  2998,   844,-32768,   794,   783,
-   793,  2998,-32768,-32768,   790,-32768,  2998,-32768,   499,-32768,
-   454,   507,-32768,   346,-32768,-32768,  2582,   795,-32768,   535,
--32768,-32768,-32768,-32768,-32768,  3935,-32768,-32768,-32768,-32768,
-  3899,-32768,-32768,-32768,   796,-32768,-32768,-32768,-32768,  3917,
--32768,    55,-32768,  2152,-32768,  2152,-32768,-32768,-32768,   798,
-   813,-32768,-32768,-32768,  2998,-32768,-32768,   870,   804,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,   805,-32768,   825,    63,
-   818,-32768,-32768,   649,   649,-32768,-32768,  2998,   870,   823,
-   870,-32768,-32768,  2998,   826,    66,-32768,-32768,   832,-32768,
-   610,   824,-32768,   366,   270,-32768,-32768,   836,   610,-32768,
--32768,   366,   918,   920,-32768
+-32768,   188,  2179,-32768,-32768,-32768,  2741,   458,-32768,-32768,
+-32768,   294,   294,   423,   294,   294,-32768,-32768,-32768,   421,
+    98,    52,-32768,   416,   226,-32768,   452,-32768,  2194,   498,
+   204,-32768,-32768,   416,-32768,   327,-32768,   204,  2082,   317,
+   329,   347,  2054,   793,-32768,-32768,-32768,-32768,   204,-32768,
+   454,   442,  3270,-32768,   444,-32768,   106,-32768,-32768,-32768,
+  3019,-32768,-32768,   464,-32768,   465,   466,  2907,  3657,  2179,
+   294,-32768,   455,  3019,  1277,-32768,  1277,-32768,  3019,  3019,
+   510,-32768,-32768,  3019,  3019,  3019,  3019,  3019,  3019,  3019,
+  3019,  3019,  3019,  3019,  3019,-32768,-32768,   294,   294,  3019,
+  3019,-32768,-32768,   473,-32768,   531,   486,-32768,-32768,-32768,
+   297,  2255,   204,-32768,   379,   907,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,    41,-32768,   515,-32768,  2179,-32768,
+   493,   504,   567,-32768,   458,-32768,   353,   504,   236,   513,
+-32768,   527,   519,   516,-32768,   527,-32768,-32768,   329,-32768,
+-32768,   579,   329,   599,-32768,  3455,-32768,   524,   532,-32768,
+  1371,    80,-32768,-32768,   589,   204,   308,   182,-32768,   416,
+   416,-32768,   498,   204,-32768,  2316,-32768,-32768,   498,   560,
+   204,-32768,-32768,-32768,   551,  3296,  3563,   238,   204,   238,
+-32768,   594,   552,-32768,   106,  3876,-32768,-32768,  2659,-32768,
+-32768,-32768,-32768,   598,   558,  3657,-32768,   562,   568,-32768,
+  3955,   569,   570,  3955,  3955,  3019,   610,  3019,  3019,  1863,
+   912,   675,  1126,  1034,   535,   535,    63,    63,-32768,-32768,
+-32768,-32768,-32768,   576,   371,   571,-32768,   294,  1191,   531,
+-32768,-32768,   409,   185,-32768,  3485,-32768,   575,   297,-32768,
+  2377,-32768,   907,   577,   303,  3187,   583,  3692,  2140,-32768,
+-32768,  3763,  2179,-32768,-32768,   573,   236,-32768,   601,  3427,
+-32768,-32768,   449,   898,   602,    84,   586,-32768,-32768,-32768,
+  3829,-32768,   592,   364,-32768,-32768,   211,-32768,-32768,    83,
+-32768,-32768,-32768,  2093,-32768,   317,-32768,-32768,   317,-32768,
+   634,-32768,-32768,   590,-32768,   600,-32768,-32768,-32768,-32768,
+-32768,   604,-32768,   605,  3019,   294,   607,   552,  2179,-32768,
+-32768,  3722,-32768,-32768,   598,-32768,-32768,-32768,-32768,-32768,
+   639,  3019,  1706,  1787,-32768,-32768,-32768,   435,   372,  1088,
+   609,   613,  1408,-32768,-32768,-32768,-32768,   379,-32768,-32768,
+-32768,   379,-32768,-32768,   595,-32768,-32768,   246,   617,   294,
+-32768,  2741,   624,  3513,-32768,-32768,  3829,  2168,    83,-32768,
+   591,   626,    83,-32768,   527,-32768,   476,-32768,-32768,-32768,
+-32768,   226,   174,  2782,   399,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,  3842,   627,-32768,-32768,-32768,
+   471,    93,-32768,-32768,  3817,-32768,   702,   623,-32768,-32768,
+   628,-32768,-32768,   632,  3314,-32768,  1895,    83,-32768,-32768,
+    83,-32768,   631,-32768,-32768,   631,-32768,   204,   204,  3955,
+-32768,   204,   655,   658,  1654,  3019,   701,   659,  3722,-32768,
+-32768,  1625,-32768,   294,-32768,-32768,-32768,-32768,   663,-32768,
+-32768,-32768,-32768,  2521,-32768,-32768,  3019,-32768,-32768,-32768,
+-32768,   471,-32768,-32768,-32768,-32768,   294,-32768,-32768,   680,
+   527,-32768,  3627,  3627,   206,   416,   226,  1983,-32768,   489,
+  3266,   314,   314,-32768,-32768,-32768,    93,   204,   261,   273,
+   204,-32768,   204,   273,   204,  3485,-32768,-32768,-32768,-32768,
+-32768,-32768,   416,-32768,   226,-32768,   829,-32768,-32768,  3955,
+-32768,-32768,  1895,-32768,-32768,   343,   343,-32768,-32768,-32768,
+   204,-32768,-32768,   708,   294,-32768,   711,  3955,   672,   670,
+-32768,-32768,   143,  1818,   371,-32768,  3019,-32768,   701,-32768,
+  3019,-32768,-32768,  2603,   714,   694,-32768,-32768,   697,   698,
+  3019,   721,   684,   685,  2963,   227,   759,   212,   324,-32768,
+   727,   692,-32768,   695,  3543,-32768,   757,  1490,    99,-32768,
+-32768,-32768,-32768,-32768,  2771,   270,   261,   273,   204,   456,
+-32768,-32768,   572,-32768,   712,   527,-32768,-32768,-32768,-32768,
+  3019,   738,   699,-32768,   699,   621,   471,-32768,  2438,-32768,
+-32768,-32768,   735,    93,-32768,-32768,-32768,   474,   487,   829,
+-32768,-32768,  1654,-32768,-32768,  3019,-32768,    73,   184,-32768,
+-32768,  1654,-32768,-32768,  1736,-32768,  1972,-32768,-32768,-32768,
+  1625,  3019,   719,-32768,  3019,  3019,  3894,-32768,-32768,-32768,
+-32768,   705,  3019,   706,-32768,   725,   204,-32768,-32768,   416,
+-32768,   226,  1572,-32768,-32768,-32768,-32768,  3019,-32768,-32768,
+-32768,-32768,-32768,-32768,   471,-32768,-32768,   723,    77,    77,
+  3955,  3019,   314,   397,   397,-32768,-32768,   707,-32768,-32768,
+   710,  3919,  3019,-32768,   713,  1972,-32768,-32768,   716,  3019,
+   778,-32768,   375,   724,   730,  3019,-32768,-32768,   733,-32768,
+  3019,-32768,   522,-32768,    95,   539,-32768,   479,-32768,-32768,
+  2603,   731,-32768,   527,-32768,-32768,-32768,-32768,-32768,  3955,
+-32768,-32768,-32768,-32768,  3919,-32768,-32768,-32768,   741,-32768,
+-32768,-32768,-32768,  3937,-32768,    48,-32768,   498,-32768,   498,
+-32768,-32768,-32768,   737,   755,-32768,-32768,-32768,  3019,-32768,
+-32768,   812,   743,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+   747,-32768,   767,    64,   746,-32768,-32768,   623,   623,-32768,
+-32768,  3019,   812,   751,   812,-32768,-32768,  3019,   753,    66,
+-32768,-32768,   760,-32768,   599,   765,-32768,   457,   284,-32768,
+-32768,   768,   599,-32768,-32768,   457,   839,   862,-32768
 };
 
 static const short yypgoto[] = {-32768,
--32768,-32768,-32768,    96,  -378,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,   -14,-32768,   -56,   495,  -234,   435,-32768,-32768,
-   -77,-32768,   525,-32768,-32768,-32768,-32768,-32768,   121,  -302,
--32768,  -290,   592,-32768,-32768,   425,-32768,     7,  -144,   195,
-     1,   853,-32768,   269,     5,   -20,  -200,   657,   143,  -253,
-  -591,   -66,  -199,  -117,-32768,-32768,-32768,   160,    69,     2,
--32768,   524,-32768,   265,-32768,  -447,-32768,   157,-32768,  -634,
--32768,-32768,   250,-32768,-32768,-32768,-32768,-32768,-32768,   -67,
-  -121,  -498,    -1,-32768,-32768,-32768,   -74,-32768,-32768,-32768,
--32768,-32768,   464,   -43,-32768,   598,   474,   273,   591,   475,
-   -54,   -94,  -182,  -166,  -236,   451,-32768,-32768,  -262,-32768,
--32768,-32768,   556,  -354,-32768,   382,-32768,  -534,-32768,-32768,
--32768,-32768,  -169,  -440,  -678,   455,-32768,    90,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,    98,-32768,
-  -818,    32,-32768,    31,-32768,   558,-32768,  -366,-32768,   548,
-   551,   404,  -311,-32768,-32768,-32768,-32768,    12,-32768,   959,
+-32768,-32768,-32768,   105,  -375,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,   -14,-32768,   -56,   439,  -226,   355,-32768,-32768,
+   -74,-32768,   596,-32768,-32768,-32768,-32768,-32768,    65,  -310,
+-32768,  -313,   536,-32768,-32768,   358,-32768,   248,   -46,   127,
+    15,   786,-32768,   202,    38,   -26,  -172,   606,   492,  -244,
+  -602,   -82,  -181,  -120,-32768,-32768,-32768,  -262,    44,   -32,
+-32768,   460,-32768,   197,-32768,  -672,-32768,    86,-32768,  -631,
+-32768,-32768,   186,-32768,-32768,-32768,-32768,-32768,-32768,   -73,
+  -109,  -502,     2,-32768,-32768,-32768,   -78,-32768,-32768,-32768,
+-32768,-32768,   400,   -27,-32768,   533,   414,   216,   526,   407,
+   -24,   -75,  -159,  -168,  -236,   392,-32768,-32768,  -239,-32768,
+-32768,-32768,   496,  -143,-32768,   326,-32768,  -526,-32768,-32768,
+-32768,-32768,  -192,  -449,  -719,   396,-32768,    34,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,    35,-32768,
+  -817,   -25,-32768,   -22,-32768,   502,-32768,  -353,-32768,   495,
+   497,   349,  -306,-32768,-32768,-32768,-32768,    17,-32768,   903,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,     3,    -4,  -373,-32768,   424,-32768,
-   355,   170,-32768,-32768,-32768,-32768,-32768,-32768,-32768,  -284,
--32768,-32768,-32768,   175,   458,-32768,-32768,-32768,-32768,   -45,
-   713,-32768,-32768,   511,-32768,   218,   515,-32768,   624,   626,
-  -135,-32768,  -128,-32768,-32768,   350,   442,-32768,-32768,-32768,
--32768,-32768,-32768,   681,-32768,-32768,-32768
+-32768,-32768,-32768,-32768,    -9,     5,  -355,-32768,   368,-32768,
+   280,    91,-32768,-32768,-32768,-32768,-32768,-32768,-32768,  -300,
+-32768,-32768,-32768,    97,   380,-32768,-32768,-32768,-32768,   -23,
+   630,-32768,-32768,   404,-32768,   107,   408,-32768,   518,   520,
+  -140,-32768,  -127,-32768,-32768,   240,   341,-32768,-32768,-32768,
+-32768,-32768,-32768,   597,-32768,-32768,-32768
 };
 
 
-#define        YYLAST          3989
+#define        YYLAST          4009
 
 
 static const short yytable[] = {   124,
-   141,    63,    32,    32,    67,    68,    33,    33,    71,   344,
-    63,    74,    86,    42,    42,   209,   220,    70,   212,    70,
-   181,   446,   354,    94,    96,    98,    72,   229,   230,    81,
-   334,   445,   422,   472,   233,   405,   337,    92,    83,    85,
-   356,   305,    32,   669,   414,   242,    33,   284,   306,   520,
-   290,   225,   470,    42,    92,    92,    92,   278,   475,   190,
-   237,   551,    70,   341,   547,   578,    70,   795,   461,   184,
-    36,    36,   658,   188,   623,   192,   321,    53,    54,    55,
-   776,    92,   338,   213,    59,    60,   882,   823,   734,    92,
-   185,   272,   147,   232,   918,  -113,   927,   793,    50,    80,
-    -1,    88,   939,   374,   462,   951,    14,   198,   199,    -2,
-    36,   186,   424,   413,    75,   576,   849,   425,   301,   693,
-   577,   857,   344,    14,   320,   949,    16,   361,   148,    59,
-    60,   294,   919,   298,   187,    59,    60,    99,   419,   220,
-   940,    14,   328,   952,   625,    80,   514,   824,   579,   626,
-    61,   208,   197,    80,   685,    62,   354,   300,   854,   219,
-   569,   224,   334,    76,   883,    93,   535,   309,   310,   422,
-   313,   314,    77,   334,   356,    87,   518,   734,  -113,   334,
-   712,   371,   522,   649,   635,   378,   198,   199,   637,   319,
-   382,   405,   383,   323,    56,    61,    14,   907,   -35,   143,
-    62,    61,   192,    59,    60,    16,    62,    51,    52,    92,
-   283,   220,   362,   283,   406,   466,    95,   893,    75,   469,
-    92,    89,   468,    90,   869,   418,   379,   766,   767,    57,
-   922,   345,   346,   681,   357,   926,   683,   928,    58,   515,
-   495,    59,    60,   565,   427,    14,   936,   615,   467,   182,
-   620,   -34,   809,   402,   403,    82,    16,   143,    16,    80,
-   639,   566,   208,    80,   751,   840,   841,   661,   757,    61,
-   183,   146,   208,   221,    62,   634,   656,   282,   960,   226,
-    59,    60,   219,   228,    92,   549,   550,   289,    14,   474,
-   329,   491,   434,  -116,  -116,  -116,  -116,   231,   775,  -116,
-  -480,  -116,  -116,  -116,    70,    59,    60,    61,   595,   189,
-   595,   436,    62,   148,   482,   143,   484,  -116,   826,   198,
-   199,   239,    97,   244,    59,    60,   291,   292,   293,   501,
-    75,   202,   240,   847,   318,   319,  -116,    92,   299,   323,
-   851,   515,   734,   621,   420,   421,    61,   958,   220,   283,
-   362,    62,   959,   345,   346,   753,   606,    14,  -116,   241,
-   478,   519,   480,  -116,   525,   143,   198,   199,   357,   243,
-   703,    61,   197,  -116,   272,  -176,    62,    75,   542,   203,
-   877,   318,   143,  -176,   263,   264,   265,   143,   204,   143,
-    61,   744,   244,   507,    36,    62,   305,    59,    60,   942,
-   943,   205,   273,   306,    14,   208,   198,   199,   208,   208,
-   294,   558,   559,   560,   193,    75,   202,   279,   194,   414,
-   287,   561,   780,   339,  -176,   307,   661,   340,  -176,   533,
-    86,   311,    70,   534,   603,   656,   282,   420,   421,   546,
-   553,   143,    14,   585,   554,   317,   552,    75,   654,   565,
-   324,   318,   759,   350,   842,   433,   571,   572,    75,   202,
-   351,   347,    75,    61,   203,   194,   318,   566,    62,   834,
-   703,   362,   707,   204,    14,   574,   660,   664,   612,   575,
-   197,   283,   613,  -176,    36,    14,   205,   283,   764,    14,
-   359,  -176,  -279,  -279,   771,   784,   655,    36,   289,   143,
-    36,   459,   614,   471,   367,   656,   282,   203,    36,   368,
-   477,    76,   765,    86,   595,   628,   204,   772,   483,    88,
-    77,   558,   559,   560,   780,   369,    14,   518,   522,   205,
-   -86,   641,  -176,    86,   518,   522,  -176,   533,   407,   631,
-   380,   534,   766,   767,     5,    89,     7,    90,   280,   408,
-   644,   830,     9,    10,    11,   831,   412,   281,   282,   645,
-   646,   246,   248,   558,   559,   560,   730,   428,    13,   659,
-   663,   651,   652,   758,   845,   143,   846,   903,   340,   212,
-   194,   340,   426,   760,   760,   905,   143,    16,   429,   194,
-   672,   674,   431,    87,   437,   911,   755,   756,   710,  -478,
-   442,   220,    88,    75,   202,    36,   586,   777,   729,    22,
-    75,   654,   441,   920,    24,   921,   197,   785,   102,   673,
-    80,   750,    88,   732,   458,   459,   465,   733,   476,   746,
-    14,   143,   479,   485,   743,   486,   493,    14,   494,   657,
-   662,   497,   498,    36,   644,   499,   500,   553,   954,   505,
-   318,   554,   203,   552,   192,   730,   962,   502,    92,   655,
-   506,   204,   521,    92,   526,   278,   808,   544,   656,   282,
-   530,   344,   644,    14,   205,   548,    87,   568,   787,   570,
-   573,   215,   216,   217,   558,   559,   560,   589,     9,    10,
-    11,    36,   610,   590,   832,   280,    87,   729,   592,   657,
-   624,   597,   598,   220,   281,   282,    14,   601,   289,   810,
-   844,  -316,    86,   208,    80,    36,   619,   627,   575,   208,
-   208,    70,    70,   630,   662,   636,   668,   675,   684,    72,
-   653,   690,   579,    36,   334,   275,   334,   671,   816,   818,
-   208,   855,    80,   732,   858,   861,   689,   733,   871,   705,
-   706,   872,   865,   208,   743,   366,   686,   687,   216,   217,
-   688,   711,   319,   323,     9,    10,    11,   878,   381,   319,
-   323,   760,   752,   384,   385,   -32,   789,   790,   390,   391,
-   392,   393,   394,   395,   396,   397,   398,   399,   400,   401,
-   266,   267,   143,   268,   269,   270,   271,   791,   -33,   895,
-   798,    88,   801,   802,     5,   804,     7,   288,   805,   806,
-   902,    36,     9,    10,    11,   811,   874,   768,   769,   770,
-   730,   813,   773,   774,   814,   815,   819,   833,    13,   746,
-   838,   839,   657,   657,   779,   216,   217,   856,   864,   662,
-   662,     9,    10,    11,   867,   866,   888,    16,   786,   266,
-   267,   881,   268,   269,   270,   271,   894,   889,   858,   892,
-   896,   898,   729,   261,   262,   263,   264,   265,   901,    22,
-   899,   897,   910,   913,    24,    87,   923,   924,   929,  -281,
-  -281,   945,   933,   937,   208,   938,    80,   858,   255,   256,
-   257,   258,   259,   260,   261,   262,   263,   264,   265,   657,
-   941,   947,   956,   950,   827,   828,   829,   208,   329,   953,
-  -339,  -339,   503,   504,   961,  -339,  -339,   964,  -339,   965,
-   529,   859,  -339,   463,  -339,  -339,  -339,  -339,  -339,  -339,
-  -339,  -339,  -339,  -339,  -339,   616,  -339,   825,  -339,   214,
-  -339,  -339,  -339,   778,   850,   423,   782,   853,   527,  -339,
-   794,   602,  -339,   596,   481,   488,   783,  -339,  -339,  -339,
-   600,   617,   670,  -339,  -339,   517,   908,   622,  -339,  -339,
-   946,   948,   868,  -339,   909,  -339,  -339,   523,   667,   540,
-  -339,  -339,   541,    73,  -339,   650,  -339,  -312,  -339,  -339,
-   251,  -339,   252,   253,   254,   255,   256,   257,   258,   259,
-   260,   261,   262,   263,   264,   265,   763,   890,   887,   599,
-   885,   274,   648,  -319,  -319,  -319,  -319,  -319,  -319,  -319,
-   435,  -319,  -319,  -319,  -319,  -319,   611,  -319,  -319,  -319,
+   141,    63,   212,    92,    67,    68,    86,   334,    71,   209,
+    63,    74,   220,   446,    72,   445,    32,    32,    42,    42,
+    92,    92,    92,    94,    96,    98,    70,   344,    70,   470,
+   229,   230,    81,   195,   337,   475,   305,   233,   472,    33,
+    33,   422,   181,   405,   414,    36,    36,    92,   242,   306,
+   354,   670,    53,    54,    55,    92,    32,   184,    42,   190,
+   278,   188,   520,   356,   551,   624,   284,   225,   659,   290,
+   778,    70,   799,   321,    80,    70,    88,   886,   192,    33,
+  -113,   471,   547,   578,   861,    36,   213,   922,   477,   462,
+   237,   461,   272,   232,   338,    75,   483,   736,   374,   827,
+    75,   931,    14,   943,   318,   955,   361,    50,    59,    60,
+   851,   413,   198,   199,   263,   264,   265,    -1,   424,   855,
+    80,   197,    14,   425,  -176,   923,   208,    14,    80,   320,
+   953,   294,  -176,   298,   219,   220,    -2,    59,    60,   334,
+   344,   944,   328,   956,   662,   686,    99,   687,   301,    76,
+   334,  -185,  -185,   657,   282,   887,   334,   300,    77,   828,
+   911,   569,   185,  -113,    56,   858,   579,   309,   310,   514,
+   313,   314,   714,  -176,    61,    92,   518,  -176,   422,    62,
+   797,   371,   522,   186,   354,   283,    92,   736,   283,   535,
+    59,    60,   319,   926,    59,    60,   323,   356,   930,   405,
+   932,   650,   695,    61,   147,   192,   187,   220,    62,   940,
+    59,    60,   362,    14,   406,   378,   515,   873,    93,   468,
+   382,    57,   383,   853,   897,   418,   379,   466,    75,    59,
+    60,   469,   197,    14,    80,   495,   419,   208,    80,   357,
+   148,   964,   345,   346,   640,   420,   421,   208,   299,    58,
+    92,   -35,    82,   402,   403,    14,    61,   219,    16,   467,
+    61,    62,   519,   844,   845,    62,   198,   199,    51,    52,
+   616,   565,   759,   621,   427,    95,    61,    76,   813,    83,
+    85,    62,    16,   753,   566,   595,    77,   597,   576,   474,
+    14,    97,   434,   577,   491,    61,    59,    60,   635,   436,
+    62,   146,    14,    92,   221,    59,    60,   291,   292,   293,
+    75,   202,   777,    70,   318,   189,    75,   202,   515,   148,
+   622,   768,   769,   626,   283,   224,    14,   193,   627,   501,
+   482,   194,   484,   198,   199,   688,   689,    14,   319,   690,
+   755,   226,   323,    14,   220,    75,   202,   830,   280,   228,
+   362,   607,   244,   761,   736,    59,    60,   281,   282,   203,
+   231,   962,    61,   -34,   525,   203,   963,    62,   204,    36,
+    16,    61,    14,   357,   204,   881,    62,   345,   346,   705,
+   208,   205,   786,   208,   208,   182,    89,   205,    90,   198,
+   199,   305,    16,   507,   203,   636,   770,   771,   772,   638,
+   746,   775,   776,   204,   306,   339,   183,   243,   542,   340,
+   294,   946,   947,   433,   239,   318,   205,   240,    75,   202,
+   414,    61,   241,   787,    86,   347,    62,   546,   790,   194,
+   266,   267,   782,   268,   269,   270,   271,   585,    14,   420,
+   421,    70,   574,   533,   682,    14,   575,   684,   549,   550,
+   459,   615,   901,   244,   553,   838,   283,   768,   769,    36,
+   280,   846,   283,  -480,   604,   272,   534,   203,   709,   281,
+   282,   362,    36,    75,   655,    36,   204,   554,   565,   273,
+   705,   246,   248,    36,   831,   832,   833,   766,   279,   205,
+   287,   566,   597,   773,    88,   661,   665,   307,   329,   317,
+    14,  -339,  -339,  -339,  -339,   197,   311,    86,  -176,  -339,
+  -339,  -339,   324,   613,   350,   629,  -176,   614,   558,   559,
+   560,   351,   656,   359,    87,  -339,   854,    86,   561,   518,
+   522,   657,   282,   380,   834,   782,   518,   522,   835,   198,
+   199,   367,   368,   369,  -339,   558,   559,   560,   143,   -86,
+   407,   533,   849,   645,   872,   642,   340,  -176,   558,   559,
+   560,  -176,   408,   412,   212,   850,  -339,   732,   760,   194,
+   428,  -339,   660,   664,   534,   426,   431,    88,   762,   762,
+    36,  -112,   429,   915,   261,   262,   263,   264,   265,   894,
+   437,  -478,   779,   442,   924,    80,   925,    88,   220,   712,
+   907,   478,   441,   480,   340,   197,   143,   102,   458,   731,
+   459,   767,   789,   789,   658,   663,   774,   909,    36,   757,
+   758,   194,   752,    75,   655,    92,   465,   318,   476,   479,
+    92,   485,   916,   748,   486,   494,   289,   493,   734,   497,
+   745,   558,   559,   560,   958,   498,   499,   500,   645,   502,
+    14,   836,   966,   505,   526,   506,   544,   732,   192,   521,
+   530,   735,   553,   570,   143,   548,   568,    36,   812,   573,
+   278,   589,   656,   575,   590,   658,   645,   592,   611,   625,
+   791,   657,   282,   598,   599,   554,   602,   552,  -316,   208,
+    80,    36,   620,   344,   628,   208,   208,   571,   572,   731,
+   663,   220,   631,   637,   669,   654,   579,   275,    86,    36,
+   672,   814,   848,   685,   143,   334,   208,   334,    80,    72,
+   257,   258,   259,   260,   261,   262,   263,   264,   265,   788,
+   208,   143,    70,    70,   691,   692,   143,    75,   143,   876,
+   707,   318,   713,   708,   754,   859,   875,   -32,   862,   865,
+   793,   794,   795,   -33,   802,    92,   869,   805,   806,   734,
+   808,   745,   809,   810,    14,   815,   817,   319,   323,   762,
+   818,   882,   823,   819,   319,   323,   837,   842,    88,   860,
+   632,   843,   735,   868,   870,   871,   662,   885,    36,   893,
+   143,   892,   896,   898,   900,   657,   282,   215,   216,   217,
+   646,   647,   902,   899,     9,    10,    11,   903,   914,   658,
+   658,   905,   652,   653,   906,   927,   663,   663,   917,   928,
+   933,   937,    14,   878,   732,   941,   366,   942,   945,   951,
+   954,   673,   675,   781,   216,   217,   748,   957,   968,   381,
+     9,    10,    11,   960,   384,   385,   965,   289,   143,   390,
+   391,   392,   393,   394,   395,   396,   397,   398,   399,   400,
+   401,   969,   862,   208,   529,    80,   731,   463,   617,   863,
+   196,   829,   214,   -28,   -28,   -28,   -28,   780,   658,   784,
+   857,   -28,   -28,   -28,   527,   949,   208,   603,   798,   481,
+   488,   862,   601,   596,   423,   552,   197,   -28,   563,  -176,
+   785,     5,   618,     7,   140,   517,   671,  -176,   623,     9,
+    10,    11,   216,   217,   912,   913,   -28,   950,     9,    10,
+    11,   523,   952,   668,   143,    13,   540,    73,   541,   651,
+   198,   199,   765,   891,   649,   143,   889,   435,   -28,   630,
+   634,   883,    87,   -28,    16,   531,   800,   532,  -176,   710,
+     0,     0,  -176,   -28,     0,   586,   256,   257,   258,   259,
+   260,   261,   262,   263,   264,   265,    22,  -454,  -454,  -454,
+     0,    24,   496,     0,     0,     0,   564,  -454,     0,     0,
+   143,   820,   822,   503,   504,     0,   274,     0,  -319,  -319,
+  -319,  -319,  -319,  -319,  -319,     0,  -319,  -319,  -319,  -319,
+  -319,     0,  -319,  -319,  -319,  -319,  -319,  -319,  -319,  -319,
   -319,  -319,  -319,  -319,  -319,  -319,  -319,  -319,  -319,  -319,
-  -319,  -319,  -319,  -319,  -319,  -319,   629,   633,   879,   708,
-   912,   531,  -319,   532,   796,  -319,   496,  -319,     0,     0,
-  -319,  -319,  -319,     0,     0,     0,  -319,  -319,     0,     0,
-     0,  -319,  -319,     0,     0,     0,  -319,     0,  -319,  -319,
-     0,     0,     0,  -319,  -319,     0,     0,  -319,     0,  -319,
-   275,  -319,  -319,     0,  -319,   253,   254,   255,   256,   257,
-   258,   259,   260,   261,   262,   263,   264,   265,     0,     0,
-     0,   679,     0,   329,     0,  -125,  -125,  -125,  -125,  -125,
-  -125,  -125,     0,  -125,  -125,  -125,  -125,  -125,   696,  -125,
-  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
-  -125,  -125,  -125,  -125,     0,  -125,  -125,  -125,     0,     0,
-     0,     0,     0,     0,  -125,     0,     0,  -125,     0,  -125,
-     0,     0,  -125,  -125,  -125,     0,     0,     0,  -125,  -125,
-     0,     0,     0,  -125,  -125,     0,     0,     0,  -125,     0,
-  -125,  -125,     0,     0,     0,  -125,  -125,     0,     0,  -125,
-     0,  -125,  -125,  -125,  -125,     0,  -125,   257,   258,   259,
-   260,   261,   262,   263,   264,   265,   679,     0,     0,   447,
-     0,   448,     5,     6,     7,     8,     0,     0,   449,     0,
-     9,    10,    11,     0,     0,     0,   696,     0,     0,     0,
-     0,     0,     0,   797,     0,     0,    13,     0,    14,     0,
-     0,     0,     0,   803,     0,     0,   509,     0,  -339,  -339,
-  -339,  -339,  -339,  -339,  -339,    16,  -339,  -339,  -339,  -339,
-  -339,     0,  -339,  -339,  -339,  -339,  -339,  -339,  -339,  -339,
-  -339,  -339,  -339,  -339,  -339,  -339,  -339,    22,  -339,  -339,
-  -339,     0,    24,   837,     0,     0,  -399,  -339,     0,     0,
-  -339,     0,  -339,     0,     0,  -339,  -339,  -339,     0,     0,
-     0,  -339,  -339,     0,     0,   696,  -339,  -339,   848,     0,
-     0,  -339,   696,  -339,  -339,   696,     0,   696,  -339,  -339,
-     0,     0,  -339,     0,  -339,     0,  -339,  -339,     0,  -339,
-     0,     0,     0,   820,     0,  -339,  -339,     0,     0,     0,
-  -339,  -339,     0,  -339,     0,     0,     0,  -339,     0,  -339,
+  -319,     0,     0,     0,     0,    87,     0,  -319,     0,     0,
+  -319,     0,  -319,     0,     0,  -319,  -319,  -319,     0,     0,
+     0,  -319,  -319,     0,     0,    87,  -319,  -319,     0,     0,
+     0,  -319,     0,  -319,  -319,     0,     0,   289,  -319,  -319,
+     0,     0,  -319,     0,  -319,   275,  -319,  -319,     0,  -319,
+     0,     0,     0,     0,     0,     0,   676,     0,     0,     0,
+   600,   259,   260,   261,   262,   263,   264,   265,   329,     0,
+  -125,  -125,  -125,  -125,  -125,  -125,  -125,   612,  -125,  -125,
+  -125,  -125,  -125,     0,  -125,  -125,  -125,  -125,  -125,  -125,
+  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,     0,
+  -125,  -125,  -125,     0,     0,     0,     0,     0,     0,  -125,
+     0,     0,  -125,     0,  -125,     0,     0,  -125,  -125,  -125,
+     0,     0,   143,  -125,  -125,     0,     0,     0,  -125,  -125,
+     0,     0,     0,  -125,     0,  -125,  -125,     0,     0,     0,
+  -125,  -125,     0,     0,  -125,     0,  -125,  -125,  -125,  -125,
+     0,  -125,   258,   259,   260,   261,   262,   263,   264,   265,
+   266,   267,   680,   268,   269,   270,   271,     0,     0,     0,
+     0,   509,     0,  -339,  -339,  -339,  -339,  -339,  -339,  -339,
+   698,  -339,  -339,  -339,  -339,  -339,     0,  -339,  -339,  -339,
   -339,  -339,  -339,  -339,  -339,  -339,  -339,  -339,  -339,  -339,
-     0,  -339,   886,  -339,     0,  -339,  -339,  -339,     0,     0,
-     0,     0,     0,   891,  -339,     0,   696,  -339,     0,     0,
-     0,     0,  -339,  -339,  -339,     0,   900,     0,  -339,  -339,
-     0,     0,     0,  -339,  -339,     0,     0,     0,  -339,     0,
-  -339,  -339,     0,     0,     0,  -339,  -339,     0,     0,  -339,
-     0,  -339,     0,  -339,  -339,   875,  -339,  -349,  -349,     0,
-     0,     0,  -349,  -349,     0,  -349,     0,     0,     0,  -349,
-     0,  -349,  -349,  -349,  -349,  -349,  -349,  -349,  -349,  -349,
-  -349,  -349,     0,  -349,     0,  -349,     0,  -349,  -349,  -349,
-     0,     0,     0,     0,     0,     0,  -349,     0,     0,  -349,
-     0,     0,     0,     0,  -349,  -349,  -349,     0,     0,     0,
-  -349,  -349,     0,     0,     0,  -349,  -349,     0,     0,     0,
-  -349,     0,  -349,  -349,     0,     0,     0,  -349,  -349,     0,
-     0,  -349,     0,  -349,     0,  -349,  -349,   234,  -349,   100,
+  -339,  -339,     0,  -339,  -339,  -339,    87,     0,     0,     0,
+     0,     0,  -339,     0,     0,  -339,     0,  -339,     0,     0,
+  -339,  -339,  -339,     0,     0,     0,  -339,  -339,     0,     0,
+     0,  -339,  -339,     0,     0,     0,  -339,     0,  -339,  -339,
+     0,     0,     0,  -339,  -339,     0,     0,  -339,     0,  -339,
+     0,  -339,  -339,     0,  -339,     0,     0,   234,   680,   100,
      5,     0,     7,   140,   101,   102,     0,   103,     9,    10,
-    11,   254,   255,   256,   257,   258,   259,   260,   261,   262,
-   263,   264,   265,     0,    13,   104,     0,    15,     0,   105,
-   106,   107,     0,     0,     0,     0,     0,     0,   108,     0,
+    11,     0,     0,     0,     0,     0,     0,     0,     0,   698,
+     0,     0,     0,     0,    13,   104,   801,    15,     0,   105,
+   106,   107,     0,     0,     0,     0,   807,     0,   108,     0,
      0,   109,     0,    16,     0,     0,   110,   111,   112,     0,
      0,     0,   113,   114,     0,     0,     0,   115,   116,     0,
      0,     0,   117,     0,   118,    22,     0,     0,     0,   119,
-    24,     0,     0,   120,     0,     0,     0,   121,   122,   691,
-   235,   692,    60,     0,     0,     0,   101,   102,     0,   103,
-   256,   257,   258,   259,   260,   261,   262,   263,   264,   265,
-   259,   260,   261,   262,   263,   264,   265,   104,     0,    15,
-     0,   105,   106,   107,     0,     0,     0,     0,     0,     0,
-   108,     0,     0,   109,     0,     0,     0,     0,   110,   111,
-   112,     0,     0,     0,   113,   114,     0,     0,   693,   115,
-   116,     0,     0,     0,   117,     0,   118,    61,     0,     0,
-     0,   119,    62,     0,     0,   120,     0,     0,  -204,   121,
-   122,   691,   694,   692,    60,     0,     0,     0,   101,   102,
-     0,   103,   258,   259,   260,   261,   262,   263,   264,   265,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   104,
-     0,    15,     0,   105,   106,   107,     0,     0,     0,     0,
-     0,     0,   108,     0,     0,   109,     0,     0,     0,     0,
-   110,   111,   112,     0,     0,     0,   113,   114,     0,     0,
-   693,   115,   116,     0,     0,     0,   117,     0,   118,    61,
-     0,     0,     0,   119,    62,     0,     0,   120,     0,     0,
-  -269,   121,   122,   691,   694,   100,     0,     0,     0,     0,
-   101,   102,     0,   103,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,   104,     0,    15,     0,   105,   106,   107,     0,     0,
-  -217,     0,     0,     0,   108,     0,     0,   109,     0,     0,
-     0,     0,   110,   111,   112,     0,     0,     0,   113,   114,
-     0,     0,  -217,   115,   116,     0,     0,     0,   117,     0,
-   118,     0,     0,     0,     0,   119,     0,     0,     0,   120,
-   677,     0,   100,   121,   122,     0,   694,   101,   102,     0,
-   103,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,   104,     0,
-    15,     0,   105,   106,   107,     0,     0,     0,     0,     0,
-     0,   108,     0,     0,   109,     0,     0,     0,     0,   110,
-   111,   112,     0,     0,     0,   113,   114,     0,     0,     0,
-   115,   116,     0,     0,     0,   117,     0,   118,     0,     0,
-     0,     0,   119,     0,     0,     0,   120,   691,     0,   100,
-   121,   122,     0,   678,   101,   102,     0,   103,     4,     0,
-  -129,     5,     6,     7,     8,     0,     0,     0,     0,     9,
-    10,    11,     0,     0,     0,   104,     0,    15,     0,   105,
-   106,   107,     0,     0,     0,    13,     0,    14,   108,     0,
-     0,   109,     0,     0,     0,     0,   110,   111,   112,     0,
-     0,     0,   113,   114,    16,     0,     0,   115,   116,  -129,
-     0,     0,   117,     0,   118,     0,     0,     0,  -129,   119,
-     0,     0,     0,   120,     0,     0,    22,   121,   122,   196,
-   694,    24,   -28,   -28,   -28,   -28,    27,     0,     0,     0,
-   -28,   -28,   -28,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,   197,   -28,   348,  -176,     0,
-   -24,   -24,   -24,   -24,     0,     0,  -176,     0,   -24,   -24,
-   -24,     5,     6,     7,     8,   -28,     0,     0,     0,     9,
-    10,    11,     0,   197,   -24,     0,  -176,     0,     0,   198,
-   199,     0,     0,     0,  -176,    13,     0,   -28,     0,     0,
-     0,     0,   -28,   -24,     0,     0,     0,  -176,     0,     0,
-     0,  -176,   -28,     0,    16,     0,   342,   198,   199,   -20,
-   -20,   -20,   -20,     0,     0,   -24,     0,   -20,   -20,   -20,
-   -24,     0,     0,     0,     0,  -176,    22,     0,     0,  -176,
-   -24,    24,   197,   -20,   329,  -176,     0,     5,     6,     7,
-     8,     0,     0,  -176,     0,     9,    10,    11,     0,     0,
-     0,     0,   -20,     0,   329,     0,     0,  -502,  -502,  -502,
-  -502,    13,     0,    14,     0,  -502,  -502,  -502,     0,     0,
-     0,     0,     0,     0,   -20,     0,     0,     0,     0,   -20,
-    16,  -502,     0,  -502,  -176,     0,     0,     0,  -176,   -20,
-     0,     0,   329,     0,     0,  -339,  -339,  -339,  -339,     0,
-  -502,     0,    22,  -339,  -339,  -339,     0,    24,     0,     0,
-     0,     0,     0,     0,     0,   100,     0,  -500,     0,  -339,
-   101,   102,  -502,   103,     0,     0,     0,  -502,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,  -502,  -339,     0,
-     0,   104,     0,    15,     0,   105,   106,   107,     0,     0,
-     0,     0,     0,     0,   108,     0,     0,   109,     0,     0,
-  -339,     0,   110,   111,   112,  -339,     0,     0,   113,   114,
-     0,     0,     0,   115,   116,  -112,   100,     0,   117,     0,
-   118,   101,   102,     0,   103,   119,     0,     0,     0,   120,
-     0,     0,     0,   121,   122,     0,     0,   327,     0,     0,
+    24,     0,     0,   120,     0,     0,   841,   121,   122,     0,
+   235,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,   329,     0,     0,  -116,  -116,  -116,  -116,   698,     0,
+  -116,   852,  -116,  -116,  -116,     0,     0,   698,     0,     0,
+   698,     0,   698,     0,     0,     0,     0,     0,  -116,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,   329,     0,
+  -339,  -339,     0,     0,     0,  -339,  -339,  -116,  -339,     0,
+     0,     0,  -339,     0,  -339,  -339,  -339,  -339,  -339,  -339,
+  -339,  -339,  -339,  -339,  -339,     0,  -339,   890,  -339,  -116,
+  -339,  -339,  -339,     0,  -116,     0,     0,     0,   895,  -339,
+     0,   698,  -339,     0,  -116,     0,     0,  -339,  -339,  -339,
+     0,   904,     0,  -339,  -339,     0,     0,     0,  -339,  -339,
+     0,     0,     0,  -339,     0,  -339,  -339,     0,     0,     0,
+  -339,  -339,     0,     0,  -339,     0,  -339,  -312,  -339,  -339,
+   824,  -339,  -339,  -339,     0,     0,     0,  -339,  -339,     0,
+  -339,     0,     0,     0,  -339,     0,  -339,  -339,  -339,  -339,
+  -339,  -339,  -339,  -339,  -339,  -339,  -339,     0,  -339,     0,
+  -339,     0,  -339,  -339,  -339,     0,     0,     0,     0,     0,
+     0,  -339,     0,     0,  -339,     0,     0,     0,     0,  -339,
+  -339,  -339,     0,     0,     0,  -339,  -339,     0,     0,     0,
+  -339,  -339,     0,     0,     0,  -339,     0,  -339,  -339,     0,
+     0,     0,  -339,  -339,     0,     0,  -339,     0,  -339,     0,
+  -339,  -339,   879,  -339,  -349,  -349,     0,     0,     0,  -349,
+  -349,     0,  -349,     0,     0,     0,  -349,     0,  -349,  -349,
+  -349,  -349,  -349,  -349,  -349,  -349,  -349,  -349,  -349,     0,
+  -349,     0,  -349,     0,  -349,  -349,  -349,     0,     0,     0,
+     0,     0,     0,  -349,     0,     0,  -349,     0,     0,     0,
+     0,  -349,  -349,  -349,     0,     0,     0,  -349,  -349,     0,
+     0,     0,  -349,  -349,     0,     0,     0,  -349,     0,  -349,
+  -349,     0,     0,     0,  -349,  -349,     0,     0,  -349,     0,
+  -349,     0,  -349,  -349,   693,  -349,   694,    60,     0,     0,
+     0,   101,   102,   251,   103,   252,   253,   254,   255,   256,
+   257,   258,   259,   260,   261,   262,   263,   264,   265,     0,
      0,     0,   104,     0,    15,     0,   105,   106,   107,     0,
      0,     0,     0,     0,     0,   108,     0,     0,   109,     0,
      0,     0,     0,   110,   111,   112,     0,     0,     0,   113,
-   114,     0,     0,     0,   115,   116,     0,   100,     0,   117,
+   114,     0,     0,   695,   115,   116,     0,     0,     0,   117,
+     0,   118,    61,     0,     0,     0,   119,    62,     0,     0,
+   120,     0,     0,  -204,   121,   122,   693,   696,   694,    60,
+     0,     0,     0,   101,   102,     0,   103,   253,   254,   255,
+   256,   257,   258,   259,   260,   261,   262,   263,   264,   265,
+     0,     0,     0,     0,   104,     0,    15,     0,   105,   106,
+   107,     0,     0,     0,     0,     0,     0,   108,     0,     0,
+   109,     0,     0,     0,     0,   110,   111,   112,     0,     0,
+     0,   113,   114,     0,     0,   695,   115,   116,     0,     0,
+     0,   117,     0,   118,    61,     0,     0,     0,   119,    62,
+     0,     0,   120,     0,     0,  -269,   121,   122,   693,   696,
+   100,     0,     0,     0,     0,   101,   102,     0,   103,   254,
+   255,   256,   257,   258,   259,   260,   261,   262,   263,   264,
+   265,     0,     0,     0,     0,     0,   104,     0,    15,     0,
+   105,   106,   107,     0,     0,  -217,     0,     0,     0,   108,
+     0,     0,   109,     0,     0,     0,     0,   110,   111,   112,
+     0,     0,     0,   113,   114,     0,     0,  -217,   115,   116,
+     0,     0,     0,   117,     0,   118,     0,     0,     0,     0,
+   119,     0,     0,     0,   120,   678,     0,   100,   121,   122,
+     0,   696,   101,   102,     0,   103,   255,   256,   257,   258,
+   259,   260,   261,   262,   263,   264,   265,     0,     0,     0,
+     0,     0,     0,   104,     0,    15,     0,   105,   106,   107,
+     0,     0,     0,     0,     0,     0,   108,     0,     0,   109,
+     0,     0,     0,     0,   110,   111,   112,     0,     0,     0,
+   113,   114,     0,     0,     0,   115,   116,     0,     0,     0,
+   117,     0,   118,     0,     0,     0,     0,   119,     0,     0,
+     0,   120,   693,     0,   100,   121,   122,     0,   679,   101,
+   102,     0,   103,     4,     0,  -129,     5,     6,     7,     8,
+     0,     0,     0,     0,     9,    10,    11,     0,     0,     0,
+   104,     0,    15,     0,   105,   106,   107,     0,     0,     0,
+    13,     0,    14,   108,     0,     0,   109,     0,     0,     0,
+     0,   110,   111,   112,     0,     0,     0,   113,   114,    16,
+     0,     0,   115,   116,  -129,     0,     0,   117,     0,   118,
+     0,     0,     0,  -129,   119,     0,     0,     0,   120,     0,
+     0,    22,   121,   122,   348,   696,    24,   -24,   -24,   -24,
+   -24,    27,     0,     0,     0,   -24,   -24,   -24,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+   197,   -24,   342,  -176,     0,   -20,   -20,   -20,   -20,     0,
+     0,  -176,     0,   -20,   -20,   -20,     5,     6,     7,     8,
+   -24,     0,     0,     0,     9,    10,    11,     0,   197,   -20,
+     0,  -176,     0,     0,   198,   199,     0,     0,     0,  -176,
+    13,     0,   -24,     0,     0,     0,     0,   -24,   -20,     0,
+     0,     0,  -176,     0,     0,     0,  -176,   -24,     0,    16,
+   329,     0,     0,     5,     6,     7,     8,     0,     0,     0,
+   -20,     9,    10,    11,     0,   -20,     0,     0,     0,     0,
+  -176,    22,     0,     0,  -176,   -20,    24,    13,   329,    14,
+     0,  -502,  -502,  -502,  -502,     0,     0,     0,     0,  -502,
+  -502,  -502,     5,     0,     7,   140,    16,     0,     0,     0,
+     9,    10,    11,     0,     0,  -502,   100,  -502,     0,     0,
+     0,   101,   102,     0,   103,     0,    13,     0,    22,     0,
+     0,     0,     0,    24,  -502,     0,     0,     0,     0,     0,
+     0,     0,   104,  -500,    15,    16,   105,   106,   107,     0,
+     0,     0,     0,     0,     0,   108,  -502,     0,   109,     0,
+     0,  -502,     0,   110,   111,   112,     0,    22,     0,   113,
+   114,  -502,    24,     0,   115,   116,     0,   100,     0,   117,
      0,   118,   101,   102,     0,   103,   119,     0,     0,     0,
-   120,     0,     0,     0,   121,   122,     0,     0,   417,     0,
+   120,     0,     0,     0,   121,   122,     0,     0,   327,     0,
      0,     0,     0,   104,     0,    15,     0,   105,   106,   107,
      0,     0,     0,     0,     0,     0,   108,     0,     0,   109,
      0,     0,     0,     0,   110,   111,   112,     0,     0,     0,
    113,   114,     0,     0,     0,   115,   116,     0,   100,     0,
    117,     0,   118,   101,   102,     0,   103,   119,     0,     0,
-     0,   120,     0,     0,     0,   121,   122,     0,     0,   473,
+     0,   120,     0,     0,     0,   121,   122,     0,     0,   417,
      0,     0,     0,     0,   104,     0,    15,     0,   105,   106,
    107,     0,     0,     0,     0,     0,     0,   108,     0,     0,
    109,     0,     0,     0,     0,   110,   111,   112,     0,     0,
      0,   113,   114,     0,     0,     0,   115,   116,     0,   100,
      0,   117,     0,   118,   101,   102,     0,   103,   119,     0,
      0,     0,   120,     0,     0,     0,   121,   122,     0,     0,
-   524,     0,     0,     0,     0,   104,     0,    15,     0,   105,
+   473,     0,     0,     0,     0,   104,     0,    15,     0,   105,
    106,   107,     0,     0,     0,     0,     0,     0,   108,     0,
      0,   109,     0,     0,     0,     0,   110,   111,   112,     0,
      0,     0,   113,   114,     0,     0,     0,   115,   116,     0,
-     0,     0,   117,     0,   118,     0,     0,     0,     0,   119,
+   100,     0,   117,     0,   118,   101,   102,     0,   103,   119,
      0,     0,     0,   120,     0,     0,     0,   121,   122,     0,
-     0,   843,   692,   713,     6,     7,     8,   101,   102,     0,
-   103,     9,    10,    11,   714,     0,   715,   716,   717,   718,
-   719,   720,   721,   722,   723,   724,   725,    13,   104,    14,
-    15,     0,   105,   106,   107,     0,     0,     0,     0,     0,
-     0,   108,     0,     0,   109,     0,    16,     0,     0,   110,
-   111,   112,     0,     0,     0,   113,   114,     0,     0,     0,
-   115,   116,     0,     0,     0,   117,     0,   118,   726,     0,
-     0,     0,   119,   727,     0,     0,   120,     0,   728,     0,
-   121,   122,     0,   579,   692,    60,     0,     0,     0,   101,
-   102,     0,   103,     0,     0,     0,   714,     0,   715,   716,
-   717,   718,   719,   720,   721,   722,   723,   724,   725,     0,
-   104,     0,    15,     0,   105,   106,   107,     0,     0,     0,
-     0,     0,     0,   108,     0,     0,   109,     0,     0,     0,
-     0,   110,   111,   112,     0,     0,     0,   113,   114,     0,
-   100,     0,   115,   116,     0,   101,   102,   117,   103,   118,
-    61,     0,     0,     0,   119,    62,     0,     0,   120,     0,
-   728,     0,   121,   122,     0,   579,   104,     0,    15,     0,
+     0,   524,     0,     0,     0,     0,   104,     0,    15,     0,
    105,   106,   107,     0,     0,     0,     0,     0,     0,   108,
      0,     0,   109,     0,     0,     0,     0,   110,   111,   112,
      0,     0,     0,   113,   114,     0,     0,     0,   115,   116,
      0,     0,     0,   117,     0,   118,     0,     0,     0,     0,
    119,     0,     0,     0,   120,     0,     0,     0,   121,   122,
-     0,   490,   149,   150,     0,   151,   152,     0,     0,     0,
-   153,   154,   155,   156,   157,   158,   159,   160,   161,   162,
-   163,   164,   165,   166,   167,   168,   169,   170,   171,     0,
-     0,     0,   100,     5,     6,     7,     8,   101,   102,   172,
-   103,     9,    10,    11,     5,     6,     7,     8,     0,     0,
-     0,     0,     9,    10,    11,     0,     0,    13,   104,    14,
-    15,     0,   105,   106,   107,     0,     0,     0,    13,     0,
-    14,   108,     0,   174,   109,     0,    16,     0,     0,   110,
-   111,   112,   303,     0,     0,   113,   114,    16,     0,     0,
-   115,   116,     0,     0,     0,   117,     0,   118,    22,     0,
-     0,     0,   119,    24,     0,     0,   120,     0,     0,    22,
-   121,   122,   100,     5,    24,     7,   140,   101,   102,    84,
-   103,     9,    10,    11,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,    13,   104,     0,
-    15,     0,   105,   106,   107,     0,     0,     0,     0,     0,
-     0,   108,     0,     0,   109,     0,    16,     0,     0,   110,
-   111,   112,     0,     0,     0,   113,   114,     0,   100,     0,
-   115,   116,     0,   101,   102,   117,   103,   118,    22,     0,
-     0,     0,   119,    24,     0,     0,   120,     0,     0,     0,
-   121,   122,     0,     0,   104,     0,    15,     0,   105,   106,
-   107,     0,     0,     0,     0,     0,     0,   108,     0,     0,
-   109,     0,     0,     0,     0,   110,   111,   112,     0,     0,
-     0,   113,   114,     0,   100,     0,   115,   116,     0,   101,
-   102,   117,   103,   118,   370,     0,     0,     0,   119,     0,
-     0,     0,   120,     0,     0,     0,   121,   122,     0,     0,
-   104,     0,    15,     0,   105,   106,   107,     0,     0,     0,
-     0,     0,     0,   108,     0,     0,   109,     0,     0,     0,
-     0,   110,   111,   112,     0,     0,     0,   113,   114,     0,
-   100,     0,   115,   116,     0,   101,   102,   117,   103,   118,
-     0,     0,     0,     0,   119,     0,     0,     0,   120,     0,
-   807,     0,   121,   122,     0,     0,   104,     0,    15,     0,
-   105,   106,   107,     0,     0,     0,     0,     0,     0,   108,
-     0,     0,   109,     0,     0,     0,     0,   110,   111,   112,
-     0,     0,     0,   113,   114,     0,   100,     0,   115,   116,
-     0,   101,   102,   117,   103,   118,     0,     0,     0,     0,
-   119,     0,     0,     0,   120,     0,     0,     0,   121,   122,
-     0,     0,   104,     0,    15,     0,   105,   106,   107,     0,
-     0,     0,     0,     0,     0,   108,     0,     0,   109,     0,
-     0,     0,     0,   110,   111,   112,     0,     0,     0,   113,
-   114,     0,   100,     0,   245,   116,     0,   101,   102,   117,
-   103,   118,     0,     0,     0,     0,   119,     0,     0,     0,
-   120,     0,     0,     0,   121,   122,     0,     0,   104,     0,
-    15,     0,   105,   106,   107,     0,     0,     0,     0,     0,
-     0,   108,     0,     0,   109,     0,     0,     0,     0,   110,
-   111,   112,     0,     0,     0,   113,   114,     0,   528,     0,
-   247,   116,     0,   101,   102,   117,   103,   118,     0,     0,
-     0,     0,   119,     0,     0,     0,   120,     0,     0,     0,
-   121,   122,     0,     0,   104,     0,    15,     0,   105,   106,
-   107,     0,     0,     0,     0,     0,     0,   108,     0,     0,
-   109,     0,     0,     0,     0,   110,   111,   112,     0,     0,
-     0,   113,   114,     0,     0,     0,   115,   116,     0,     0,
-     0,   117,     0,   118,     0,     0,     0,     0,   119,     0,
-     0,     0,   120,     0,     0,   563,   121,   122,     5,     0,
-     7,   140,     0,     0,     0,     0,     9,    10,    11,     0,
-     0,     0,   563,     0,     0,     5,     0,     7,   140,     0,
-     0,     0,    13,     9,    10,    11,     0,     0,     0,     0,
-     0,     0,   352,     0,     0,     5,     0,     7,   140,    13,
-     0,    16,     0,     9,    10,    11,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,    16,    13,
-     0,     0,    15,    22,  -454,  -454,  -454,     0,    24,     0,
-     0,     0,     0,   564,  -454,     0,     0,     0,    16,     0,
-    22,  -453,  -453,  -453,     0,    24,     0,     0,     0,     0,
-   564,  -453,     0,     0,     0,     0,     0,     0,     0,     0,
-    22,     0,     0,     0,     0,    24,     0,     0,     0,     0,
-   353,  -272,     4,     0,  -129,     5,     6,     7,     8,     0,
-     0,     0,     0,     9,    10,    11,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,    12,    13,
-     0,    14,    15,     0,     0,     5,     6,     7,     8,     0,
-     0,   449,     0,     9,    10,    11,     0,     0,    16,     0,
-     0,    17,    18,  -129,     0,     0,     0,     0,     0,    13,
-     0,    14,  -129,     0,    19,    20,    21,     0,     0,     0,
-    22,     0,     0,     0,    23,    24,    25,    26,    16,     4,
-    27,  -129,     5,     6,     7,     8,     0,     0,     0,     0,
-     9,    10,    11,     0,     0,     0,     0,     0,     0,     0,
-    22,     0,     0,     0,     0,    24,    13,   447,    14,     0,
-     5,     6,     7,     8,     0,     0,   449,     0,     9,    10,
-    11,     0,     0,     0,     0,    16,     0,     0,   549,   550,
-  -129,     0,     0,     0,    13,     0,    14,     0,     0,  -129,
-     5,     6,     7,     8,     0,     0,     0,    22,     9,    10,
-    11,     0,    24,    16,     0,     0,     0,    27,     0,     0,
-     0,     0,     0,     0,    13,     0,    14,     0,     5,     6,
-     7,     8,     0,     0,     0,    22,     9,    10,    11,     0,
-    24,     0,     0,    16,  -399,     0,     0,     0,     0,     0,
-   352,     0,    13,     5,    14,     7,   140,     0,     0,     0,
-     0,     9,    10,    11,     0,    22,     0,     0,     0,     0,
-    24,    16,     0,     0,     0,   632,     0,    13,     0,     0,
-    15,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,    22,     0,     0,    16,     0,    24,     0,
-     0,     0,     0,   817,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,   149,   150,    22,   151,
-   152,     0,     0,    24,   153,   154,   155,   156,   157,   158,
-   159,   160,   161,   162,   163,   164,   165,   166,   167,   168,
-   169,   170,   171,     0,     0,     0,   149,   150,     0,   151,
-   152,     0,     0,   172,   153,   154,   155,   156,   157,   158,
-   159,   160,   161,   162,   163,   164,   165,   166,   167,   168,
-   169,   170,   171,     0,   173,     0,     0,     0,     0,     0,
-     0,   149,   150,   373,   151,   152,     0,   174,     0,   153,
-   154,   155,   156,   157,   158,   159,   160,   161,   162,   163,
-   164,   165,   166,   167,   168,   169,   170,   171,     0,     0,
-     0,   149,   150,     0,   151,   152,     0,   174,   172,   153,
-   154,   155,   156,   157,   158,   159,   160,   161,   162,   163,
-   164,   165,   166,   167,   168,   169,   170,   171,     0,     0,
-     0,     5,     0,     7,   288,     0,     0,     0,   605,     9,
-    10,    11,   174,     5,     6,     7,     8,     0,     0,   666,
-     0,     9,    10,    11,     0,    13,     0,    14,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,    13,     0,    14,
-     0,     0,   174,     0,    16,     0,     0,     0,     0,   280,
-     0,     0,     0,     0,     0,     0,    16,     0,   281,   282,
-     5,     6,     7,     8,     0,     0,    22,     0,     9,    10,
-    11,    24,     5,     0,     7,   140,     0,     0,    22,     0,
-     9,    10,    11,    24,    13,     5,    14,     7,   288,     0,
-     0,     0,     0,     9,    10,    11,    13,     0,     0,     0,
+     0,     0,   847,   694,   715,     6,     7,     8,   101,   102,
+     0,   103,     9,    10,    11,   716,     0,   717,   718,   719,
+   720,   721,   722,   723,   724,   725,   726,   727,    13,   104,
+    14,    15,     0,   105,   106,   107,     0,     0,     0,     0,
+     0,     0,   108,     0,     0,   109,     0,    16,     0,     0,
+   110,   111,   112,     0,     0,     0,   113,   114,     0,     0,
+     0,   115,   116,     0,     0,     0,   117,     0,   118,   728,
+     0,     0,     0,   119,   729,     0,     0,   120,     0,   730,
+     0,   121,   122,     0,   579,   694,    60,     0,     0,     0,
+   101,   102,     0,   103,     0,     0,     0,   716,     0,   717,
+   718,   719,   720,   721,   722,   723,   724,   725,   726,   727,
+     0,   104,     0,    15,     0,   105,   106,   107,     0,     0,
+     0,     0,     0,     0,   108,     0,     0,   109,     0,     0,
+     0,     0,   110,   111,   112,     0,     0,     0,   113,   114,
+     0,   100,     0,   115,   116,     0,   101,   102,   117,   103,
+   118,    61,     0,     0,     0,   119,    62,     0,     0,   120,
+     0,   730,     0,   121,   122,     0,   579,   104,     0,    15,
+     0,   105,   106,   107,     0,     0,     0,     0,     0,     0,
+   108,     0,     0,   109,     0,     0,     0,     0,   110,   111,
+   112,     0,     0,     0,   113,   114,     0,     0,     0,   115,
+   116,     0,     0,     0,   117,     0,   118,     0,     0,     0,
+     0,   119,     0,     0,     0,   120,     0,     0,     0,   121,
+   122,     0,   490,   149,   150,     0,   151,   152,     0,     0,
+     0,   153,   154,   155,   156,   157,   158,   159,   160,   161,
+   162,   163,   164,   165,   166,   167,   168,   169,   170,   171,
+     0,     0,     0,   100,     5,     6,     7,     8,   101,   102,
+   172,   103,     9,    10,    11,     5,     6,     7,     8,     0,
+     0,     0,     0,     9,    10,    11,     0,     0,    13,   104,
+    14,    15,     0,   105,   106,   107,     0,     0,     0,    13,
+     0,    14,   108,     0,   174,   109,     0,    16,     0,     0,
+   110,   111,   112,   303,     0,     0,   113,   114,    16,     0,
+     0,   115,   116,     0,     0,     0,   117,     0,   118,    22,
+     0,     0,     0,   119,    24,     0,     0,   120,     0,     0,
+    22,   121,   122,   100,     5,    24,     7,   140,   101,   102,
+    84,   103,     9,    10,    11,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,    13,   104,
+     0,    15,     0,   105,   106,   107,     0,     0,     0,     0,
+     0,     0,   108,     0,     0,   109,     0,    16,     0,     0,
+   110,   111,   112,     0,     0,     0,   113,   114,     0,   100,
+     0,   115,   116,     0,   101,   102,   117,   103,   118,    22,
+     0,     0,     0,   119,    24,     0,     0,   120,     0,     0,
+     0,   121,   122,     0,     0,   104,     0,    15,     0,   105,
+   106,   107,     0,     0,     0,     0,     0,     0,   108,     0,
+     0,   109,     0,     0,     0,     0,   110,   111,   112,     0,
+     0,     0,   113,   114,     0,   100,     0,   115,   116,     0,
+   101,   102,   117,   103,   118,   370,     0,     0,     0,   119,
+     0,     0,     0,   120,     0,     0,     0,   121,   122,     0,
+     0,   104,     0,    15,     0,   105,   106,   107,     0,     0,
+     0,     0,     0,     0,   108,     0,     0,   109,     0,     0,
+     0,     0,   110,   111,   112,     0,     0,     0,   113,   114,
+     0,   100,     0,   115,   116,     0,   101,   102,   117,   103,
+   118,     0,     0,     0,     0,   119,     0,     0,     0,   120,
+     0,   811,     0,   121,   122,     0,     0,   104,     0,    15,
+     0,   105,   106,   107,     0,     0,     0,     0,     0,     0,
+   108,     0,     0,   109,     0,     0,     0,     0,   110,   111,
+   112,     0,     0,     0,   113,   114,     0,   100,     0,   115,
+   116,     0,   101,   102,   117,   103,   118,     0,     0,     0,
+     0,   119,     0,     0,     0,   120,     0,     0,     0,   121,
+   122,     0,     0,   104,     0,    15,     0,   105,   106,   107,
+     0,     0,     0,     0,     0,     0,   108,     0,     0,   109,
+     0,     0,     0,     0,   110,   111,   112,     0,     0,     0,
+   113,   114,     0,   100,     0,   245,   116,     0,   101,   102,
+   117,   103,   118,     0,     0,     0,     0,   119,     0,     0,
+     0,   120,     0,     0,     0,   121,   122,     0,     0,   104,
+     0,    15,     0,   105,   106,   107,     0,     0,     0,     0,
+     0,     0,   108,     0,     0,   109,     0,     0,     0,     0,
+   110,   111,   112,     0,     0,     0,   113,   114,     0,   528,
+     0,   247,   116,     0,   101,   102,   117,   103,   118,     0,
+     0,     0,     0,   119,     0,     0,     0,   120,     0,     0,
+     0,   121,   122,     0,     0,   104,     0,    15,     0,   105,
+   106,   107,     0,     0,     0,     0,     0,     0,   108,     0,
+     0,   109,     0,     0,     0,     0,   110,   111,   112,     0,
+     0,     0,   113,   114,     0,     0,     0,   115,   116,     0,
+     0,     0,   117,     0,   118,     0,     0,     0,     0,   119,
+     0,     0,     0,   120,     0,     0,   563,   121,   122,     5,
+   352,     7,   140,     5,     0,     7,   140,     9,    10,    11,
+     0,     9,    10,    11,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,    13,     0,     0,     0,    13,     0,     5,
+    15,     7,   288,     0,     0,     0,     0,     9,    10,    11,
+     0,     0,    16,     0,     0,     0,    16,     5,    89,     7,
+    90,     0,     0,    13,     0,     9,    10,    11,     0,     0,
+     0,     0,     0,     0,    22,  -453,  -453,  -453,    22,    24,
+     0,    13,    16,    24,   564,  -453,     0,     0,   353,  -272,
+     4,     0,  -129,     5,     6,     7,     8,     0,     0,     0,
+    16,     9,    10,    11,    22,     0,     0,     0,     0,    24,
+     0,     0,     0,     0,  -281,  -281,    12,    13,     0,    14,
+    15,     0,    22,     0,     0,     0,     0,    24,     0,     0,
+     0,     0,   674,     0,     0,     0,    16,     0,     0,    17,
+    18,  -129,     0,     0,     0,     0,     0,     0,     0,     0,
+  -129,     0,    19,    20,    21,     0,     0,     0,    22,     0,
+     0,     0,    23,    24,    25,    26,     0,     4,    27,  -129,
+     5,     6,     7,     8,     0,     0,     0,     0,     9,    10,
+    11,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,    13,   447,    14,   448,     5,     6,
+     7,     8,     0,     0,   449,     0,     9,    10,    11,     0,
+     0,     0,     0,    16,     0,     0,   549,   550,  -129,     0,
+     0,     0,    13,     0,    14,   447,     0,  -129,     5,     6,
+     7,     8,     0,     0,   449,    22,     9,    10,    11,     0,
+    24,    16,     0,     0,     0,    27,     0,     0,     0,     0,
+     0,     0,    13,     0,    14,     0,     5,     6,     7,     8,
+     0,     0,     0,    22,     9,    10,    11,     0,    24,     0,
+     0,    16,  -399,     0,     0,     0,     0,     0,     0,     0,
+    13,     0,    14,     0,     0,     0,     5,     6,     7,     8,
+     0,     0,     0,    22,     9,    10,    11,     0,    24,    16,
+     0,     0,  -399,   352,     0,     0,     5,     0,     7,   140,
+    13,     0,    14,     0,     9,    10,    11,     0,     0,     0,
+     0,    22,     0,     0,     0,     0,    24,     0,     0,    16,
+    13,   633,     0,    15,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,    16,
+     0,    22,     0,     0,     0,     0,    24,     0,     0,     0,
+     0,   821,     0,     0,     0,     0,     0,     0,     0,   149,
+   150,    22,   151,   152,     0,     0,    24,   153,   154,   155,
+   156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
+   166,   167,   168,   169,   170,   171,     0,     0,     0,   149,
+   150,     0,   151,   152,     0,     0,   172,   153,   154,   155,
+   156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
+   166,   167,   168,   169,   170,   171,     0,   173,     0,     0,
+     0,     0,     0,     0,   149,   150,   373,   151,   152,     0,
+   174,     0,   153,   154,   155,   156,   157,   158,   159,   160,
+   161,   162,   163,   164,   165,   166,   167,   168,   169,   170,
+   171,     0,     0,     0,   149,   150,     0,   151,   152,     0,
+   174,   172,   153,   154,   155,   156,   157,   158,   159,   160,
+   161,   162,   163,   164,   165,   166,   167,   168,   169,   170,
+   171,     0,     0,     0,     5,     0,     7,   288,     0,     0,
+     0,   606,     9,    10,    11,   174,     5,     6,     7,     8,
+     0,     0,   449,     0,     9,    10,    11,     0,    13,     0,
+    14,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+    13,     0,    14,     0,     0,   174,     0,    16,     0,     0,
+     0,     0,   280,     0,     0,     0,     0,     0,     0,    16,
+     0,   281,   282,     0,     0,     0,     0,     0,     0,    22,
+     5,     6,     7,     8,    24,     0,   667,     0,     9,    10,
+    11,    22,     5,     6,     7,     8,    24,     0,     0,     0,
+     9,    10,    11,     0,    13,     5,    14,     7,   288,     0,
+     0,     0,     0,     9,    10,    11,    13,     0,    14,     0,
      0,     0,     0,    16,     0,     0,     0,     0,     0,    13,
      0,     0,     0,     0,     0,    16,     0,     0,     0,     0,
      0,     0,     0,     0,     0,    22,     0,     0,    16,     0,
     24,     0,     0,     0,     0,     0,     0,    22,     0,     0,
-     0,     0,    24,   862,     0,     0,     0,     0,     0,     0,
+     0,     0,    24,   866,     0,     0,     0,     0,     0,     0,
     22,     0,   249,   250,   251,    24,   252,   253,   254,   255,
    256,   257,   258,   259,   260,   261,   262,   263,   264,   265,
-   249,   250,   251,   863,   252,   253,   254,   255,   256,   257,
+   249,   250,   251,   867,   252,   253,   254,   255,   256,   257,
    258,   259,   260,   261,   262,   263,   264,   265,    14,     0,
      0,     0,     0,     0,     0,   249,   250,   251,   489,   252,
    253,   254,   255,   256,   257,   258,   259,   260,   261,   262,
-   263,   264,   265,   249,   250,   251,   917,   252,   253,   254,
+   263,   264,   265,   249,   250,   251,   921,   252,   253,   254,
    255,   256,   257,   258,   259,   260,   261,   262,   263,   264,
    265,   249,   250,   251,     0,   252,   253,   254,   255,   256,
    257,   258,   259,   260,   261,   262,   263,   264,   265
 };
 
 static const short yycheck[] = {    56,
-    57,    16,     2,     3,    19,    20,     2,     3,    23,   209,
-    25,    26,    33,     2,     3,    83,    91,    22,    85,    24,
-    66,   324,   223,    38,    39,    40,    24,   105,   106,    31,
-   200,   316,   286,   345,   112,   270,   203,    36,    32,    33,
-   223,   177,    42,   578,   281,   123,    42,   142,   177,   416,
-   145,    95,   343,    42,    53,    54,    55,   135,   349,    74,
-   115,   440,    67,   208,   438,     1,    71,   702,   331,    67,
-     2,     3,   571,    71,   515,    77,   194,     9,    10,    11,
-   672,    80,   204,    85,     3,     4,     1,     1,   623,    88,
-    40,     9,    47,   108,    40,     1,   915,    38,     3,    31,
-     0,    33,    40,   239,    10,    40,    30,    61,    62,     0,
-    42,    61,    78,   280,     3,    78,    40,    83,   173,    60,
-    83,   800,   322,    30,    78,   944,    47,     1,    83,     3,
-     4,   146,    78,   148,    84,     3,     4,    42,   283,   214,
-    78,    30,   199,    78,    78,    77,   409,    61,    84,    83,
-    69,    83,    27,    85,   595,    74,   357,   172,   793,    91,
-    78,    84,   332,    52,    79,    84,   429,   182,   183,   423,
-   185,   186,    61,   343,   357,    33,   413,   712,    84,   349,
-   621,   238,   419,   557,   539,   240,    61,    62,   543,   191,
-   245,   426,   247,   195,    61,    69,    30,   876,    40,    57,
-    74,    69,   204,     3,     4,    47,    74,    79,    80,   208,
-   142,   286,   227,   145,   271,   337,    84,   852,     3,   341,
-   219,     5,   340,     7,   816,   282,   241,    61,    62,    61,
-   909,    61,    62,   588,   223,   914,   591,   916,    61,   409,
-   376,     3,     4,   444,   299,    30,   925,   510,    78,    40,
-   513,    40,    52,   268,   269,    79,    47,   115,    47,   191,
-   545,   444,   194,   195,   638,   764,   765,    52,   647,    69,
-    61,    61,   204,    67,    74,   538,    61,    62,   957,    84,
-     3,     4,   214,    84,   283,    50,    51,   145,    30,   346,
-     1,   369,   307,     4,     5,     6,     7,    61,   665,    10,
-    65,    12,    13,    14,   309,     3,     4,    69,   478,    79,
-   480,   309,    74,    83,   358,   173,   360,    28,    78,    61,
-    62,    61,    84,    83,     3,     4,     5,     6,     7,   386,
-     3,     4,    61,   781,     7,   337,    47,   336,    61,   341,
-   788,   511,   877,   513,    61,    62,    69,    78,   423,   281,
-   365,    74,    83,    61,    62,   640,   492,    30,    69,    61,
-   354,    78,   356,    74,   421,   223,    61,    62,   357,    78,
-   605,    69,    27,    84,     9,    30,    74,     3,   433,    52,
-   821,     7,   240,    38,    52,    53,    54,   245,    61,   247,
-    69,   626,    83,   408,   326,    74,   532,     3,     4,   934,
-   935,    74,    77,   532,    30,   337,    61,    62,   340,   341,
-   425,    70,    71,    72,    79,     3,     4,    78,    83,   656,
-    78,    80,   676,    79,    79,    40,    52,    83,    83,   429,
-   451,    84,   437,   429,   489,    61,    62,    61,    62,   437,
-   440,   299,    30,   464,   440,    79,   440,     3,     4,   650,
-    61,     7,    40,    61,   766,    61,   450,   451,     3,     4,
-    80,    79,     3,    69,    52,    83,     7,   650,    74,   754,
-   705,   486,   608,    61,    30,    79,   571,   572,    79,    83,
-    27,   413,    83,    30,   416,    30,    74,   419,   655,    30,
-    80,    38,    79,    80,   661,    40,    52,   429,   356,   357,
-   432,    79,    80,   344,    78,    61,    62,    52,   440,    78,
-   351,    52,   657,   534,   684,   530,    61,   662,   359,   451,
-    61,    70,    71,    72,   778,    78,    30,   764,   765,    74,
-    40,    80,    79,   554,   771,   772,    83,   537,    78,   533,
-    79,   537,    61,    62,     4,     5,     6,     7,    52,    32,
-   552,    79,    12,    13,    14,    83,    78,    61,    62,   553,
-   554,   127,   128,    70,    71,    72,   623,    78,    28,   571,
-   572,   565,   566,    80,    79,   433,    79,    79,    83,   646,
-    83,    83,    61,   651,   652,    79,   444,    47,    79,    83,
-   584,   585,    10,   451,    78,   880,   642,   643,   613,    65,
-    78,   676,   534,     3,     4,   537,   464,   674,   623,    69,
-     3,     4,    84,   904,    74,   906,    27,   685,     9,    79,
-   552,   636,   554,   623,    85,    79,    38,   623,    69,   631,
-    30,   489,    79,    38,   623,    83,    40,    30,    78,   571,
-   572,    78,    78,   575,   646,    78,    78,   647,   951,    78,
-     7,   647,    52,   647,   656,   712,   959,    40,   657,    52,
-    85,    61,    85,   662,    78,   743,   723,    84,    61,    62,
-    78,   871,   674,    30,    74,    65,   534,    65,   693,    78,
-    78,     5,     6,     7,    70,    71,    72,    38,    12,    13,
-    14,   623,    40,    85,    80,    52,   554,   712,    78,   631,
-    85,    80,    80,   778,    61,    62,    30,    80,   566,   724,
-   767,    80,   733,   645,   646,   647,    80,    78,    83,   651,
-   652,   726,   727,    79,   656,    78,     3,   585,    83,   727,
-    79,    78,    84,   665,   904,    80,   906,    79,   732,   733,
-   672,   798,   674,   743,   801,   802,    80,   743,   816,    40,
-    85,   818,   809,   685,   743,   231,   597,   598,     6,     7,
-   601,    80,   764,   765,    12,    13,    14,   824,   244,   771,
-   772,   839,    65,   249,   250,    40,    40,    80,   254,   255,
-   256,   257,   258,   259,   260,   261,   262,   263,   264,   265,
-    56,    57,   650,    59,    60,    61,    62,    83,    40,   856,
-    61,   733,    61,    61,     4,    40,     6,     7,    79,    79,
-   867,   743,    12,    13,    14,     7,   818,   658,   659,   660,
-   877,    40,   663,   664,    79,    79,    16,    65,    28,   831,
-    40,    83,   764,   765,     5,     6,     7,    61,    79,   771,
-   772,    12,    13,    14,    61,    79,    85,    47,   689,    56,
-    57,    65,    59,    60,    61,    62,    78,    80,   915,    80,
-    17,    79,   877,    50,    51,    52,    53,    54,    79,    69,
-    78,    78,    78,    78,    74,   733,    79,    65,     9,    79,
-    80,   938,    79,    79,   816,    61,   818,   944,    44,    45,
-    46,    47,    48,    49,    50,    51,    52,    53,    54,   831,
-    83,    79,    79,    78,   745,   746,   747,   839,     1,    78,
-     3,     4,   388,   389,    79,     8,     9,     0,    11,     0,
-   426,   801,    15,   332,    17,    18,    19,    20,    21,    22,
-    23,    24,    25,    26,    27,   511,    29,   743,    31,    87,
-    33,    34,    35,   675,   785,   289,   682,   791,   425,    42,
-   701,   488,    45,   480,   357,   365,   684,    50,    51,    52,
-   486,   511,   581,    56,    57,   410,   877,   513,    61,    62,
-   939,   941,   813,    66,   877,    68,    69,   420,   575,   432,
-    73,    74,   432,    25,    77,   562,    79,    80,    81,    82,
-    39,    84,    41,    42,    43,    44,    45,    46,    47,    48,
-    49,    50,    51,    52,    53,    54,   652,   848,   839,   485,
-   836,     1,   555,     3,     4,     5,     6,     7,     8,     9,
-   308,    11,    12,    13,    14,    15,   502,    17,    18,    19,
+    57,    16,    85,    36,    19,    20,    33,   200,    23,    83,
+    25,    26,    91,   324,    24,   316,     2,     3,     2,     3,
+    53,    54,    55,    38,    39,    40,    22,   209,    24,   343,
+   105,   106,    31,    80,   203,   349,   177,   112,   345,     2,
+     3,   286,    66,   270,   281,     2,     3,    80,   123,   177,
+   223,   578,     9,    10,    11,    88,    42,    67,    42,    74,
+   135,    71,   416,   223,   440,   515,   142,    95,   571,   145,
+   673,    67,   704,   194,    31,    71,    33,     1,    77,    42,
+     1,   344,   438,     1,   804,    42,    85,    40,   351,    10,
+   115,   331,     9,   108,   204,     3,   359,   624,   239,     1,
+     3,   919,    30,    40,     7,    40,     1,     3,     3,     4,
+   783,   280,    61,    62,    52,    53,    54,     0,    78,   792,
+    77,    27,    30,    83,    30,    78,    83,    30,    85,    78,
+   948,   146,    38,   148,    91,   214,     0,     3,     4,   332,
+   322,    78,   199,    78,    52,   595,    42,   597,   173,    52,
+   343,    79,    80,    61,    62,    79,   349,   172,    61,    61,
+   880,    78,    40,    84,    61,   797,    84,   182,   183,   409,
+   185,   186,   622,    79,    69,   208,   413,    83,   423,    74,
+    38,   238,   419,    61,   357,   142,   219,   714,   145,   429,
+     3,     4,   191,   913,     3,     4,   195,   357,   918,   426,
+   920,   557,    60,    69,    47,   204,    84,   286,    74,   929,
+     3,     4,   227,    30,   271,   240,   409,   820,    84,   340,
+   245,    61,   247,    40,   856,   282,   241,   337,     3,     3,
+     4,   341,    27,    30,   191,   376,   283,   194,   195,   223,
+    83,   961,    61,    62,   545,    61,    62,   204,    61,    61,
+   283,    40,    79,   268,   269,    30,    69,   214,    47,    78,
+    69,    74,    78,   766,   767,    74,    61,    62,    79,    80,
+   510,   444,   648,   513,   299,    84,    69,    52,    52,    32,
+    33,    74,    47,   639,   444,   478,    61,   480,    78,   346,
+    30,    84,   307,    83,   369,    69,     3,     4,   538,   309,
+    74,    61,    30,   336,    67,     3,     4,     5,     6,     7,
+     3,     4,   666,   309,     7,    79,     3,     4,   511,    83,
+   513,    61,    62,    78,   281,    84,    30,    79,    83,   386,
+   358,    83,   360,    61,    62,   598,   599,    30,   337,   602,
+   641,    84,   341,    30,   423,     3,     4,    78,    52,    84,
+   365,   492,    83,    40,   881,     3,     4,    61,    62,    52,
+    61,    78,    69,    40,   421,    52,    83,    74,    61,   326,
+    47,    69,    30,   357,    61,   825,    74,    61,    62,   606,
+   337,    74,    40,   340,   341,    40,     5,    74,     7,    61,
+    62,   532,    47,   408,    52,   539,   659,   660,   661,   543,
+   627,   664,   665,    61,   532,    79,    61,    78,   433,    83,
+   425,   938,   939,    61,    61,     7,    74,    61,     3,     4,
+   657,    69,    61,   686,   451,    79,    74,   437,   691,    83,
+    56,    57,   677,    59,    60,    61,    62,   464,    30,    61,
+    62,   437,    79,   429,   588,    30,    83,   591,    50,    51,
+    79,    80,    78,    83,   440,   756,   413,    61,    62,   416,
+    52,   768,   419,    65,   489,     9,   429,    52,   609,    61,
+    62,   486,   429,     3,     4,   432,    61,   440,   651,    77,
+   707,   127,   128,   440,   747,   748,   749,   656,    78,    74,
+    78,   651,   685,   662,   451,   571,   572,    40,     1,    79,
+    30,     4,     5,     6,     7,    27,    84,   534,    30,    12,
+    13,    14,    61,    79,    61,   530,    38,    83,    70,    71,
+    72,    80,    52,    80,    33,    28,   789,   554,    80,   766,
+   767,    61,    62,    79,    79,   780,   773,   774,    83,    61,
+    62,    78,    78,    78,    47,    70,    71,    72,    57,    40,
+    78,   537,    79,   552,   817,    80,    83,    79,    70,    71,
+    72,    83,    32,    78,   647,    79,    69,   624,    80,    83,
+    78,    74,   571,   572,   537,    61,    10,   534,   652,   653,
+   537,    84,    79,   884,    50,    51,    52,    53,    54,   852,
+    78,    65,   675,    78,   908,   552,   910,   554,   677,   614,
+    79,   354,    84,   356,    83,    27,   115,     9,    85,   624,
+    79,   658,   686,   687,   571,   572,   663,    79,   575,   643,
+   644,    83,   637,     3,     4,   658,    38,     7,    69,    79,
+   663,    38,   895,   632,    83,    78,   145,    40,   624,    78,
+   624,    70,    71,    72,   955,    78,    78,    78,   647,    40,
+    30,    80,   963,    78,    78,    85,    84,   714,   657,    85,
+    78,   624,   648,    78,   173,    65,    65,   624,   725,    78,
+   745,    38,    52,    83,    85,   632,   675,    78,    40,    85,
+   695,    61,    62,    80,    80,   648,    80,   440,    80,   646,
+   647,   648,    80,   875,    78,   652,   653,   450,   451,   714,
+   657,   780,    79,    78,     3,    79,    84,    80,   735,   666,
+    79,   726,   769,    83,   223,   908,   673,   910,   675,   729,
+    46,    47,    48,    49,    50,    51,    52,    53,    54,   686,
+   687,   240,   728,   729,    80,    78,   245,     3,   247,   822,
+    40,     7,    80,    85,    65,   802,   820,    40,   805,   806,
+    40,    80,    83,    40,    61,   788,   813,    61,    61,   745,
+    40,   745,    79,    79,    30,     7,    40,   766,   767,   843,
+    79,   828,    16,    79,   773,   774,    65,    40,   735,    61,
+   533,    83,   745,    79,    79,    61,    52,    65,   745,    80,
+   299,    85,    80,    78,    17,    61,    62,     5,     6,     7,
+   553,   554,    79,   860,    12,    13,    14,    78,    78,   766,
+   767,    79,   565,   566,   871,    79,   773,   774,    78,    65,
+     9,    79,    30,   822,   881,    79,   231,    61,    83,    79,
+    78,   584,   585,     5,     6,     7,   835,    78,     0,   244,
+    12,    13,    14,    79,   249,   250,    79,   356,   357,   254,
+   255,   256,   257,   258,   259,   260,   261,   262,   263,   264,
+   265,     0,   919,   820,   426,   822,   881,   332,   511,   805,
+     1,   745,    87,     4,     5,     6,     7,   676,   835,   683,
+   795,    12,    13,    14,   425,   942,   843,   488,   703,   357,
+   365,   948,   486,   480,   289,   648,    27,    28,     1,    30,
+   685,     4,   511,     6,     7,   410,   581,    38,   513,    12,
+    13,    14,     6,     7,   881,   881,    47,   943,    12,    13,
+    14,   420,   945,   575,   433,    28,   432,    25,   432,   562,
+    61,    62,   653,   843,   555,   444,   840,   308,    69,   532,
+   537,   835,   451,    74,    47,   428,   707,   428,    79,   609,
+    -1,    -1,    83,    84,    -1,   464,    45,    46,    47,    48,
+    49,    50,    51,    52,    53,    54,    69,    70,    71,    72,
+    -1,    74,   376,    -1,    -1,    -1,    79,    80,    -1,    -1,
+   489,   734,   735,   388,   389,    -1,     1,    -1,     3,     4,
+     5,     6,     7,     8,     9,    -1,    11,    12,    13,    14,
+    15,    -1,    17,    18,    19,    20,    21,    22,    23,    24,
+    25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
+    35,    -1,    -1,    -1,    -1,   534,    -1,    42,    -1,    -1,
+    45,    -1,    47,    -1,    -1,    50,    51,    52,    -1,    -1,
+    -1,    56,    57,    -1,    -1,   554,    61,    62,    -1,    -1,
+    -1,    66,    -1,    68,    69,    -1,    -1,   566,    73,    74,
+    -1,    -1,    77,    -1,    79,    80,    81,    82,    -1,    84,
+    -1,    -1,    -1,    -1,    -1,    -1,   585,    -1,    -1,    -1,
+   485,    48,    49,    50,    51,    52,    53,    54,     1,    -1,
+     3,     4,     5,     6,     7,     8,     9,   502,    11,    12,
+    13,    14,    15,    -1,    17,    18,    19,    20,    21,    22,
+    23,    24,    25,    26,    27,    28,    29,    30,    31,    -1,
+    33,    34,    35,    -1,    -1,    -1,    -1,    -1,    -1,    42,
+    -1,    -1,    45,    -1,    47,    -1,    -1,    50,    51,    52,
+    -1,    -1,   651,    56,    57,    -1,    -1,    -1,    61,    62,
+    -1,    -1,    -1,    66,    -1,    68,    69,    -1,    -1,    -1,
+    73,    74,    -1,    -1,    77,    -1,    79,    80,    81,    82,
+    -1,    84,    47,    48,    49,    50,    51,    52,    53,    54,
+    56,    57,   587,    59,    60,    61,    62,    -1,    -1,    -1,
+    -1,     1,    -1,     3,     4,     5,     6,     7,     8,     9,
+   605,    11,    12,    13,    14,    15,    -1,    17,    18,    19,
     20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
-    30,    31,    32,    33,    34,    35,   532,   537,   831,   608,
-   891,   428,    42,   428,   705,    45,   376,    47,    -1,    -1,
+    30,    31,    -1,    33,    34,    35,   735,    -1,    -1,    -1,
+    -1,    -1,    42,    -1,    -1,    45,    -1,    47,    -1,    -1,
     50,    51,    52,    -1,    -1,    -1,    56,    57,    -1,    -1,
     -1,    61,    62,    -1,    -1,    -1,    66,    -1,    68,    69,
     -1,    -1,    -1,    73,    74,    -1,    -1,    77,    -1,    79,
-    80,    81,    82,    -1,    84,    42,    43,    44,    45,    46,
-    47,    48,    49,    50,    51,    52,    53,    54,    -1,    -1,
-    -1,   587,    -1,     1,    -1,     3,     4,     5,     6,     7,
-     8,     9,    -1,    11,    12,    13,    14,    15,   604,    17,
-    18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
-    28,    29,    30,    31,    -1,    33,    34,    35,    -1,    -1,
-    -1,    -1,    -1,    -1,    42,    -1,    -1,    45,    -1,    47,
-    -1,    -1,    50,    51,    52,    -1,    -1,    -1,    56,    57,
-    -1,    -1,    -1,    61,    62,    -1,    -1,    -1,    66,    -1,
-    68,    69,    -1,    -1,    -1,    73,    74,    -1,    -1,    77,
-    -1,    79,    80,    81,    82,    -1,    84,    46,    47,    48,
-    49,    50,    51,    52,    53,    54,   682,    -1,    -1,     1,
-    -1,     3,     4,     5,     6,     7,    -1,    -1,    10,    -1,
-    12,    13,    14,    -1,    -1,    -1,   702,    -1,    -1,    -1,
-    -1,    -1,    -1,   709,    -1,    -1,    28,    -1,    30,    -1,
-    -1,    -1,    -1,   719,    -1,    -1,     1,    -1,     3,     4,
-     5,     6,     7,     8,     9,    47,    11,    12,    13,    14,
-    15,    -1,    17,    18,    19,    20,    21,    22,    23,    24,
-    25,    26,    27,    28,    29,    30,    31,    69,    33,    34,
-    35,    -1,    74,   759,    -1,    -1,    78,    42,    -1,    -1,
-    45,    -1,    47,    -1,    -1,    50,    51,    52,    -1,    -1,
-    -1,    56,    57,    -1,    -1,   781,    61,    62,   784,    -1,
-    -1,    66,   788,    68,    69,   791,    -1,   793,    73,    74,
-    -1,    -1,    77,    -1,    79,    -1,    81,    82,    -1,    84,
-    -1,    -1,    -1,     1,    -1,     3,     4,    -1,    -1,    -1,
-     8,     9,    -1,    11,    -1,    -1,    -1,    15,    -1,    17,
-    18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
-    -1,    29,   838,    31,    -1,    33,    34,    35,    -1,    -1,
-    -1,    -1,    -1,   849,    42,    -1,   852,    45,    -1,    -1,
-    -1,    -1,    50,    51,    52,    -1,   862,    -1,    56,    57,
-    -1,    -1,    -1,    61,    62,    -1,    -1,    -1,    66,    -1,
-    68,    69,    -1,    -1,    -1,    73,    74,    -1,    -1,    77,
-    -1,    79,    -1,    81,    82,     1,    84,     3,     4,    -1,
-    -1,    -1,     8,     9,    -1,    11,    -1,    -1,    -1,    15,
-    -1,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-    26,    27,    -1,    29,    -1,    31,    -1,    33,    34,    35,
-    -1,    -1,    -1,    -1,    -1,    -1,    42,    -1,    -1,    45,
-    -1,    -1,    -1,    -1,    50,    51,    52,    -1,    -1,    -1,
-    56,    57,    -1,    -1,    -1,    61,    62,    -1,    -1,    -1,
-    66,    -1,    68,    69,    -1,    -1,    -1,    73,    74,    -1,
-    -1,    77,    -1,    79,    -1,    81,    82,     1,    84,     3,
+    -1,    81,    82,    -1,    84,    -1,    -1,     1,   683,     3,
      4,    -1,     6,     7,     8,     9,    -1,    11,    12,    13,
-    14,    43,    44,    45,    46,    47,    48,    49,    50,    51,
-    52,    53,    54,    -1,    28,    29,    -1,    31,    -1,    33,
-    34,    35,    -1,    -1,    -1,    -1,    -1,    -1,    42,    -1,
+    14,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   704,
+    -1,    -1,    -1,    -1,    28,    29,   711,    31,    -1,    33,
+    34,    35,    -1,    -1,    -1,    -1,   721,    -1,    42,    -1,
     -1,    45,    -1,    47,    -1,    -1,    50,    51,    52,    -1,
     -1,    -1,    56,    57,    -1,    -1,    -1,    61,    62,    -1,
     -1,    -1,    66,    -1,    68,    69,    -1,    -1,    -1,    73,
-    74,    -1,    -1,    77,    -1,    -1,    -1,    81,    82,     1,
-    84,     3,     4,    -1,    -1,    -1,     8,     9,    -1,    11,
-    45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
-    48,    49,    50,    51,    52,    53,    54,    29,    -1,    31,
-    -1,    33,    34,    35,    -1,    -1,    -1,    -1,    -1,    -1,
-    42,    -1,    -1,    45,    -1,    -1,    -1,    -1,    50,    51,
-    52,    -1,    -1,    -1,    56,    57,    -1,    -1,    60,    61,
-    62,    -1,    -1,    -1,    66,    -1,    68,    69,    -1,    -1,
-    -1,    73,    74,    -1,    -1,    77,    -1,    -1,    80,    81,
-    82,     1,    84,     3,     4,    -1,    -1,    -1,     8,     9,
-    -1,    11,    47,    48,    49,    50,    51,    52,    53,    54,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    29,
-    -1,    31,    -1,    33,    34,    35,    -1,    -1,    -1,    -1,
-    -1,    -1,    42,    -1,    -1,    45,    -1,    -1,    -1,    -1,
-    50,    51,    52,    -1,    -1,    -1,    56,    57,    -1,    -1,
-    60,    61,    62,    -1,    -1,    -1,    66,    -1,    68,    69,
-    -1,    -1,    -1,    73,    74,    -1,    -1,    77,    -1,    -1,
-    80,    81,    82,     1,    84,     3,    -1,    -1,    -1,    -1,
-     8,     9,    -1,    11,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    29,    -1,    31,    -1,    33,    34,    35,    -1,    -1,
-    38,    -1,    -1,    -1,    42,    -1,    -1,    45,    -1,    -1,
-    -1,    -1,    50,    51,    52,    -1,    -1,    -1,    56,    57,
-    -1,    -1,    60,    61,    62,    -1,    -1,    -1,    66,    -1,
-    68,    -1,    -1,    -1,    -1,    73,    -1,    -1,    -1,    77,
-     1,    -1,     3,    81,    82,    -1,    84,     8,     9,    -1,
-    11,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    29,    -1,
+    74,    -1,    -1,    77,    -1,    -1,   761,    81,    82,    -1,
+    84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,     1,    -1,    -1,     4,     5,     6,     7,   783,    -1,
+    10,   786,    12,    13,    14,    -1,    -1,   792,    -1,    -1,
+   795,    -1,   797,    -1,    -1,    -1,    -1,    -1,    28,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     1,    -1,
+     3,     4,    -1,    -1,    -1,     8,     9,    47,    11,    -1,
+    -1,    -1,    15,    -1,    17,    18,    19,    20,    21,    22,
+    23,    24,    25,    26,    27,    -1,    29,   842,    31,    69,
+    33,    34,    35,    -1,    74,    -1,    -1,    -1,   853,    42,
+    -1,   856,    45,    -1,    84,    -1,    -1,    50,    51,    52,
+    -1,   866,    -1,    56,    57,    -1,    -1,    -1,    61,    62,
+    -1,    -1,    -1,    66,    -1,    68,    69,    -1,    -1,    -1,
+    73,    74,    -1,    -1,    77,    -1,    79,    80,    81,    82,
+     1,    84,     3,     4,    -1,    -1,    -1,     8,     9,    -1,
+    11,    -1,    -1,    -1,    15,    -1,    17,    18,    19,    20,
+    21,    22,    23,    24,    25,    26,    27,    -1,    29,    -1,
     31,    -1,    33,    34,    35,    -1,    -1,    -1,    -1,    -1,
     -1,    42,    -1,    -1,    45,    -1,    -1,    -1,    -1,    50,
     51,    52,    -1,    -1,    -1,    56,    57,    -1,    -1,    -1,
-    61,    62,    -1,    -1,    -1,    66,    -1,    68,    -1,    -1,
-    -1,    -1,    73,    -1,    -1,    -1,    77,     1,    -1,     3,
-    81,    82,    -1,    84,     8,     9,    -1,    11,     1,    -1,
-     3,     4,     5,     6,     7,    -1,    -1,    -1,    -1,    12,
-    13,    14,    -1,    -1,    -1,    29,    -1,    31,    -1,    33,
-    34,    35,    -1,    -1,    -1,    28,    -1,    30,    42,    -1,
-    -1,    45,    -1,    -1,    -1,    -1,    50,    51,    52,    -1,
-    -1,    -1,    56,    57,    47,    -1,    -1,    61,    62,    52,
-    -1,    -1,    66,    -1,    68,    -1,    -1,    -1,    61,    73,
-    -1,    -1,    -1,    77,    -1,    -1,    69,    81,    82,     1,
-    84,    74,     4,     5,     6,     7,    79,    -1,    -1,    -1,
-    12,    13,    14,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    27,    28,     1,    30,    -1,
-     4,     5,     6,     7,    -1,    -1,    38,    -1,    12,    13,
-    14,     4,     5,     6,     7,    47,    -1,    -1,    -1,    12,
-    13,    14,    -1,    27,    28,    -1,    30,    -1,    -1,    61,
-    62,    -1,    -1,    -1,    38,    28,    -1,    69,    -1,    -1,
-    -1,    -1,    74,    47,    -1,    -1,    -1,    79,    -1,    -1,
-    -1,    83,    84,    -1,    47,    -1,     1,    61,    62,     4,
-     5,     6,     7,    -1,    -1,    69,    -1,    12,    13,    14,
-    74,    -1,    -1,    -1,    -1,    79,    69,    -1,    -1,    83,
-    84,    74,    27,    28,     1,    30,    -1,     4,     5,     6,
-     7,    -1,    -1,    38,    -1,    12,    13,    14,    -1,    -1,
-    -1,    -1,    47,    -1,     1,    -1,    -1,     4,     5,     6,
-     7,    28,    -1,    30,    -1,    12,    13,    14,    -1,    -1,
-    -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,    -1,    74,
-    47,    28,    -1,    30,    79,    -1,    -1,    -1,    83,    84,
-    -1,    -1,     1,    -1,    -1,     4,     5,     6,     7,    -1,
-    47,    -1,    69,    12,    13,    14,    -1,    74,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,     3,    -1,    84,    -1,    28,
-     8,     9,    69,    11,    -1,    -1,    -1,    74,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    84,    47,    -1,
-    -1,    29,    -1,    31,    -1,    33,    34,    35,    -1,    -1,
-    -1,    -1,    -1,    -1,    42,    -1,    -1,    45,    -1,    -1,
-    69,    -1,    50,    51,    52,    74,    -1,    -1,    56,    57,
-    -1,    -1,    -1,    61,    62,    84,     3,    -1,    66,    -1,
-    68,     8,     9,    -1,    11,    73,    -1,    -1,    -1,    77,
-    -1,    -1,    -1,    81,    82,    -1,    -1,    85,    -1,    -1,
+    61,    62,    -1,    -1,    -1,    66,    -1,    68,    69,    -1,
+    -1,    -1,    73,    74,    -1,    -1,    77,    -1,    79,    -1,
+    81,    82,     1,    84,     3,     4,    -1,    -1,    -1,     8,
+     9,    -1,    11,    -1,    -1,    -1,    15,    -1,    17,    18,
+    19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
+    29,    -1,    31,    -1,    33,    34,    35,    -1,    -1,    -1,
+    -1,    -1,    -1,    42,    -1,    -1,    45,    -1,    -1,    -1,
+    -1,    50,    51,    52,    -1,    -1,    -1,    56,    57,    -1,
+    -1,    -1,    61,    62,    -1,    -1,    -1,    66,    -1,    68,
+    69,    -1,    -1,    -1,    73,    74,    -1,    -1,    77,    -1,
+    79,    -1,    81,    82,     1,    84,     3,     4,    -1,    -1,
+    -1,     8,     9,    39,    11,    41,    42,    43,    44,    45,
+    46,    47,    48,    49,    50,    51,    52,    53,    54,    -1,
     -1,    -1,    29,    -1,    31,    -1,    33,    34,    35,    -1,
     -1,    -1,    -1,    -1,    -1,    42,    -1,    -1,    45,    -1,
     -1,    -1,    -1,    50,    51,    52,    -1,    -1,    -1,    56,
-    57,    -1,    -1,    -1,    61,    62,    -1,     3,    -1,    66,
+    57,    -1,    -1,    60,    61,    62,    -1,    -1,    -1,    66,
+    -1,    68,    69,    -1,    -1,    -1,    73,    74,    -1,    -1,
+    77,    -1,    -1,    80,    81,    82,     1,    84,     3,     4,
+    -1,    -1,    -1,     8,     9,    -1,    11,    42,    43,    44,
+    45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
+    -1,    -1,    -1,    -1,    29,    -1,    31,    -1,    33,    34,
+    35,    -1,    -1,    -1,    -1,    -1,    -1,    42,    -1,    -1,
+    45,    -1,    -1,    -1,    -1,    50,    51,    52,    -1,    -1,
+    -1,    56,    57,    -1,    -1,    60,    61,    62,    -1,    -1,
+    -1,    66,    -1,    68,    69,    -1,    -1,    -1,    73,    74,
+    -1,    -1,    77,    -1,    -1,    80,    81,    82,     1,    84,
+     3,    -1,    -1,    -1,    -1,     8,     9,    -1,    11,    43,
+    44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
+    54,    -1,    -1,    -1,    -1,    -1,    29,    -1,    31,    -1,
+    33,    34,    35,    -1,    -1,    38,    -1,    -1,    -1,    42,
+    -1,    -1,    45,    -1,    -1,    -1,    -1,    50,    51,    52,
+    -1,    -1,    -1,    56,    57,    -1,    -1,    60,    61,    62,
+    -1,    -1,    -1,    66,    -1,    68,    -1,    -1,    -1,    -1,
+    73,    -1,    -1,    -1,    77,     1,    -1,     3,    81,    82,
+    -1,    84,     8,     9,    -1,    11,    44,    45,    46,    47,
+    48,    49,    50,    51,    52,    53,    54,    -1,    -1,    -1,
+    -1,    -1,    -1,    29,    -1,    31,    -1,    33,    34,    35,
+    -1,    -1,    -1,    -1,    -1,    -1,    42,    -1,    -1,    45,
+    -1,    -1,    -1,    -1,    50,    51,    52,    -1,    -1,    -1,
+    56,    57,    -1,    -1,    -1,    61,    62,    -1,    -1,    -1,
+    66,    -1,    68,    -1,    -1,    -1,    -1,    73,    -1,    -1,
+    -1,    77,     1,    -1,     3,    81,    82,    -1,    84,     8,
+     9,    -1,    11,     1,    -1,     3,     4,     5,     6,     7,
+    -1,    -1,    -1,    -1,    12,    13,    14,    -1,    -1,    -1,
+    29,    -1,    31,    -1,    33,    34,    35,    -1,    -1,    -1,
+    28,    -1,    30,    42,    -1,    -1,    45,    -1,    -1,    -1,
+    -1,    50,    51,    52,    -1,    -1,    -1,    56,    57,    47,
+    -1,    -1,    61,    62,    52,    -1,    -1,    66,    -1,    68,
+    -1,    -1,    -1,    61,    73,    -1,    -1,    -1,    77,    -1,
+    -1,    69,    81,    82,     1,    84,    74,     4,     5,     6,
+     7,    79,    -1,    -1,    -1,    12,    13,    14,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    27,    28,     1,    30,    -1,     4,     5,     6,     7,    -1,
+    -1,    38,    -1,    12,    13,    14,     4,     5,     6,     7,
+    47,    -1,    -1,    -1,    12,    13,    14,    -1,    27,    28,
+    -1,    30,    -1,    -1,    61,    62,    -1,    -1,    -1,    38,
+    28,    -1,    69,    -1,    -1,    -1,    -1,    74,    47,    -1,
+    -1,    -1,    79,    -1,    -1,    -1,    83,    84,    -1,    47,
+     1,    -1,    -1,     4,     5,     6,     7,    -1,    -1,    -1,
+    69,    12,    13,    14,    -1,    74,    -1,    -1,    -1,    -1,
+    79,    69,    -1,    -1,    83,    84,    74,    28,     1,    30,
+    -1,     4,     5,     6,     7,    -1,    -1,    -1,    -1,    12,
+    13,    14,     4,    -1,     6,     7,    47,    -1,    -1,    -1,
+    12,    13,    14,    -1,    -1,    28,     3,    30,    -1,    -1,
+    -1,     8,     9,    -1,    11,    -1,    28,    -1,    69,    -1,
+    -1,    -1,    -1,    74,    47,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    29,    84,    31,    47,    33,    34,    35,    -1,
+    -1,    -1,    -1,    -1,    -1,    42,    69,    -1,    45,    -1,
+    -1,    74,    -1,    50,    51,    52,    -1,    69,    -1,    56,
+    57,    84,    74,    -1,    61,    62,    -1,     3,    -1,    66,
     -1,    68,     8,     9,    -1,    11,    73,    -1,    -1,    -1,
     77,    -1,    -1,    -1,    81,    82,    -1,    -1,    85,    -1,
     -1,    -1,    -1,    29,    -1,    31,    -1,    33,    34,    35,
@@ -1590,142 +1588,148 @@ static const short yycheck[] = {    56,
     34,    35,    -1,    -1,    -1,    -1,    -1,    -1,    42,    -1,
     -1,    45,    -1,    -1,    -1,    -1,    50,    51,    52,    -1,
     -1,    -1,    56,    57,    -1,    -1,    -1,    61,    62,    -1,
-    -1,    -1,    66,    -1,    68,    -1,    -1,    -1,    -1,    73,
+     3,    -1,    66,    -1,    68,     8,     9,    -1,    11,    73,
     -1,    -1,    -1,    77,    -1,    -1,    -1,    81,    82,    -1,
-    -1,    85,     3,     4,     5,     6,     7,     8,     9,    -1,
-    11,    12,    13,    14,    15,    -1,    17,    18,    19,    20,
-    21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
-    31,    -1,    33,    34,    35,    -1,    -1,    -1,    -1,    -1,
-    -1,    42,    -1,    -1,    45,    -1,    47,    -1,    -1,    50,
-    51,    52,    -1,    -1,    -1,    56,    57,    -1,    -1,    -1,
-    61,    62,    -1,    -1,    -1,    66,    -1,    68,    69,    -1,
-    -1,    -1,    73,    74,    -1,    -1,    77,    -1,    79,    -1,
-    81,    82,    -1,    84,     3,     4,    -1,    -1,    -1,     8,
-     9,    -1,    11,    -1,    -1,    -1,    15,    -1,    17,    18,
-    19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
-    29,    -1,    31,    -1,    33,    34,    35,    -1,    -1,    -1,
-    -1,    -1,    -1,    42,    -1,    -1,    45,    -1,    -1,    -1,
-    -1,    50,    51,    52,    -1,    -1,    -1,    56,    57,    -1,
-     3,    -1,    61,    62,    -1,     8,     9,    66,    11,    68,
-    69,    -1,    -1,    -1,    73,    74,    -1,    -1,    77,    -1,
-    79,    -1,    81,    82,    -1,    84,    29,    -1,    31,    -1,
+    -1,    85,    -1,    -1,    -1,    -1,    29,    -1,    31,    -1,
     33,    34,    35,    -1,    -1,    -1,    -1,    -1,    -1,    42,
     -1,    -1,    45,    -1,    -1,    -1,    -1,    50,    51,    52,
     -1,    -1,    -1,    56,    57,    -1,    -1,    -1,    61,    62,
     -1,    -1,    -1,    66,    -1,    68,    -1,    -1,    -1,    -1,
     73,    -1,    -1,    -1,    77,    -1,    -1,    -1,    81,    82,
-    -1,    84,     3,     4,    -1,     6,     7,    -1,    -1,    -1,
-    11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-    21,    22,    23,    24,    25,    26,    27,    28,    29,    -1,
-    -1,    -1,     3,     4,     5,     6,     7,     8,     9,    40,
-    11,    12,    13,    14,     4,     5,     6,     7,    -1,    -1,
-    -1,    -1,    12,    13,    14,    -1,    -1,    28,    29,    30,
-    31,    -1,    33,    34,    35,    -1,    -1,    -1,    28,    -1,
-    30,    42,    -1,    74,    45,    -1,    47,    -1,    -1,    50,
-    51,    52,    83,    -1,    -1,    56,    57,    47,    -1,    -1,
-    61,    62,    -1,    -1,    -1,    66,    -1,    68,    69,    -1,
-    -1,    -1,    73,    74,    -1,    -1,    77,    -1,    -1,    69,
-    81,    82,     3,     4,    74,     6,     7,     8,     9,    79,
-    11,    12,    13,    14,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    28,    29,    -1,
-    31,    -1,    33,    34,    35,    -1,    -1,    -1,    -1,    -1,
-    -1,    42,    -1,    -1,    45,    -1,    47,    -1,    -1,    50,
-    51,    52,    -1,    -1,    -1,    56,    57,    -1,     3,    -1,
-    61,    62,    -1,     8,     9,    66,    11,    68,    69,    -1,
-    -1,    -1,    73,    74,    -1,    -1,    77,    -1,    -1,    -1,
-    81,    82,    -1,    -1,    29,    -1,    31,    -1,    33,    34,
-    35,    -1,    -1,    -1,    -1,    -1,    -1,    42,    -1,    -1,
-    45,    -1,    -1,    -1,    -1,    50,    51,    52,    -1,    -1,
-    -1,    56,    57,    -1,     3,    -1,    61,    62,    -1,     8,
-     9,    66,    11,    68,    69,    -1,    -1,    -1,    73,    -1,
-    -1,    -1,    77,    -1,    -1,    -1,    81,    82,    -1,    -1,
-    29,    -1,    31,    -1,    33,    34,    35,    -1,    -1,    -1,
-    -1,    -1,    -1,    42,    -1,    -1,    45,    -1,    -1,    -1,
-    -1,    50,    51,    52,    -1,    -1,    -1,    56,    57,    -1,
-     3,    -1,    61,    62,    -1,     8,     9,    66,    11,    68,
-    -1,    -1,    -1,    -1,    73,    -1,    -1,    -1,    77,    -1,
-    79,    -1,    81,    82,    -1,    -1,    29,    -1,    31,    -1,
-    33,    34,    35,    -1,    -1,    -1,    -1,    -1,    -1,    42,
-    -1,    -1,    45,    -1,    -1,    -1,    -1,    50,    51,    52,
-    -1,    -1,    -1,    56,    57,    -1,     3,    -1,    61,    62,
-    -1,     8,     9,    66,    11,    68,    -1,    -1,    -1,    -1,
-    73,    -1,    -1,    -1,    77,    -1,    -1,    -1,    81,    82,
-    -1,    -1,    29,    -1,    31,    -1,    33,    34,    35,    -1,
-    -1,    -1,    -1,    -1,    -1,    42,    -1,    -1,    45,    -1,
-    -1,    -1,    -1,    50,    51,    52,    -1,    -1,    -1,    56,
-    57,    -1,     3,    -1,    61,    62,    -1,     8,     9,    66,
-    11,    68,    -1,    -1,    -1,    -1,    73,    -1,    -1,    -1,
-    77,    -1,    -1,    -1,    81,    82,    -1,    -1,    29,    -1,
-    31,    -1,    33,    34,    35,    -1,    -1,    -1,    -1,    -1,
-    -1,    42,    -1,    -1,    45,    -1,    -1,    -1,    -1,    50,
-    51,    52,    -1,    -1,    -1,    56,    57,    -1,     3,    -1,
-    61,    62,    -1,     8,     9,    66,    11,    68,    -1,    -1,
-    -1,    -1,    73,    -1,    -1,    -1,    77,    -1,    -1,    -1,
-    81,    82,    -1,    -1,    29,    -1,    31,    -1,    33,    34,
-    35,    -1,    -1,    -1,    -1,    -1,    -1,    42,    -1,    -1,
-    45,    -1,    -1,    -1,    -1,    50,    51,    52,    -1,    -1,
-    -1,    56,    57,    -1,    -1,    -1,    61,    62,    -1,    -1,
-    -1,    66,    -1,    68,    -1,    -1,    -1,    -1,    73,    -1,
-    -1,    -1,    77,    -1,    -1,     1,    81,    82,     4,    -1,
-     6,     7,    -1,    -1,    -1,    -1,    12,    13,    14,    -1,
-    -1,    -1,     1,    -1,    -1,     4,    -1,     6,     7,    -1,
-    -1,    -1,    28,    12,    13,    14,    -1,    -1,    -1,    -1,
-    -1,    -1,     1,    -1,    -1,     4,    -1,     6,     7,    28,
-    -1,    47,    -1,    12,    13,    14,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    47,    28,
-    -1,    -1,    31,    69,    70,    71,    72,    -1,    74,    -1,
-    -1,    -1,    -1,    79,    80,    -1,    -1,    -1,    47,    -1,
-    69,    70,    71,    72,    -1,    74,    -1,    -1,    -1,    -1,
-    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    69,    -1,    -1,    -1,    -1,    74,    -1,    -1,    -1,    -1,
-    79,    80,     1,    -1,     3,     4,     5,     6,     7,    -1,
-    -1,    -1,    -1,    12,    13,    14,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    27,    28,
-    -1,    30,    31,    -1,    -1,     4,     5,     6,     7,    -1,
-    -1,    10,    -1,    12,    13,    14,    -1,    -1,    47,    -1,
-    -1,    50,    51,    52,    -1,    -1,    -1,    -1,    -1,    28,
-    -1,    30,    61,    -1,    63,    64,    65,    -1,    -1,    -1,
-    69,    -1,    -1,    -1,    73,    74,    75,    76,    47,     1,
-    79,     3,     4,     5,     6,     7,    -1,    -1,    -1,    -1,
-    12,    13,    14,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    69,    -1,    -1,    -1,    -1,    74,    28,     1,    30,    -1,
-     4,     5,     6,     7,    -1,    -1,    10,    -1,    12,    13,
-    14,    -1,    -1,    -1,    -1,    47,    -1,    -1,    50,    51,
-    52,    -1,    -1,    -1,    28,    -1,    30,    -1,    -1,    61,
-     4,     5,     6,     7,    -1,    -1,    -1,    69,    12,    13,
-    14,    -1,    74,    47,    -1,    -1,    -1,    79,    -1,    -1,
-    -1,    -1,    -1,    -1,    28,    -1,    30,    -1,     4,     5,
-     6,     7,    -1,    -1,    -1,    69,    12,    13,    14,    -1,
-    74,    -1,    -1,    47,    78,    -1,    -1,    -1,    -1,    -1,
-     1,    -1,    28,     4,    30,     6,     7,    -1,    -1,    -1,
-    -1,    12,    13,    14,    -1,    69,    -1,    -1,    -1,    -1,
-    74,    47,    -1,    -1,    -1,    79,    -1,    28,    -1,    -1,
-    31,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    69,    -1,    -1,    47,    -1,    74,    -1,
-    -1,    -1,    -1,    79,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,     3,     4,    69,     6,
-     7,    -1,    -1,    74,    11,    12,    13,    14,    15,    16,
-    17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-    27,    28,    29,    -1,    -1,    -1,     3,     4,    -1,     6,
-     7,    -1,    -1,    40,    11,    12,    13,    14,    15,    16,
-    17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-    27,    28,    29,    -1,    61,    -1,    -1,    -1,    -1,    -1,
-    -1,     3,     4,    40,     6,     7,    -1,    74,    -1,    11,
-    12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-    22,    23,    24,    25,    26,    27,    28,    29,    -1,    -1,
-    -1,     3,     4,    -1,     6,     7,    -1,    74,    40,    11,
-    12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-    22,    23,    24,    25,    26,    27,    28,    29,    -1,    -1,
-    -1,     4,    -1,     6,     7,    -1,    -1,    -1,    40,    12,
-    13,    14,    74,     4,     5,     6,     7,    -1,    -1,    10,
-    -1,    12,    13,    14,    -1,    28,    -1,    30,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    28,    -1,    30,
-    -1,    -1,    74,    -1,    47,    -1,    -1,    -1,    -1,    52,
-    -1,    -1,    -1,    -1,    -1,    -1,    47,    -1,    61,    62,
-     4,     5,     6,     7,    -1,    -1,    69,    -1,    12,    13,
-    14,    74,     4,    -1,     6,     7,    -1,    -1,    69,    -1,
-    12,    13,    14,    74,    28,     4,    30,     6,     7,    -1,
-    -1,    -1,    -1,    12,    13,    14,    28,    -1,    -1,    -1,
+    -1,    -1,    85,     3,     4,     5,     6,     7,     8,     9,
+    -1,    11,    12,    13,    14,    15,    -1,    17,    18,    19,
+    20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
+    30,    31,    -1,    33,    34,    35,    -1,    -1,    -1,    -1,
+    -1,    -1,    42,    -1,    -1,    45,    -1,    47,    -1,    -1,
+    50,    51,    52,    -1,    -1,    -1,    56,    57,    -1,    -1,
+    -1,    61,    62,    -1,    -1,    -1,    66,    -1,    68,    69,
+    -1,    -1,    -1,    73,    74,    -1,    -1,    77,    -1,    79,
+    -1,    81,    82,    -1,    84,     3,     4,    -1,    -1,    -1,
+     8,     9,    -1,    11,    -1,    -1,    -1,    15,    -1,    17,
+    18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
+    -1,    29,    -1,    31,    -1,    33,    34,    35,    -1,    -1,
+    -1,    -1,    -1,    -1,    42,    -1,    -1,    45,    -1,    -1,
+    -1,    -1,    50,    51,    52,    -1,    -1,    -1,    56,    57,
+    -1,     3,    -1,    61,    62,    -1,     8,     9,    66,    11,
+    68,    69,    -1,    -1,    -1,    73,    74,    -1,    -1,    77,
+    -1,    79,    -1,    81,    82,    -1,    84,    29,    -1,    31,
+    -1,    33,    34,    35,    -1,    -1,    -1,    -1,    -1,    -1,
+    42,    -1,    -1,    45,    -1,    -1,    -1,    -1,    50,    51,
+    52,    -1,    -1,    -1,    56,    57,    -1,    -1,    -1,    61,
+    62,    -1,    -1,    -1,    66,    -1,    68,    -1,    -1,    -1,
+    -1,    73,    -1,    -1,    -1,    77,    -1,    -1,    -1,    81,
+    82,    -1,    84,     3,     4,    -1,     6,     7,    -1,    -1,
+    -1,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+    20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
+    -1,    -1,    -1,     3,     4,     5,     6,     7,     8,     9,
+    40,    11,    12,    13,    14,     4,     5,     6,     7,    -1,
+    -1,    -1,    -1,    12,    13,    14,    -1,    -1,    28,    29,
+    30,    31,    -1,    33,    34,    35,    -1,    -1,    -1,    28,
+    -1,    30,    42,    -1,    74,    45,    -1,    47,    -1,    -1,
+    50,    51,    52,    83,    -1,    -1,    56,    57,    47,    -1,
+    -1,    61,    62,    -1,    -1,    -1,    66,    -1,    68,    69,
+    -1,    -1,    -1,    73,    74,    -1,    -1,    77,    -1,    -1,
+    69,    81,    82,     3,     4,    74,     6,     7,     8,     9,
+    79,    11,    12,    13,    14,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    28,    29,
+    -1,    31,    -1,    33,    34,    35,    -1,    -1,    -1,    -1,
+    -1,    -1,    42,    -1,    -1,    45,    -1,    47,    -1,    -1,
+    50,    51,    52,    -1,    -1,    -1,    56,    57,    -1,     3,
+    -1,    61,    62,    -1,     8,     9,    66,    11,    68,    69,
+    -1,    -1,    -1,    73,    74,    -1,    -1,    77,    -1,    -1,
+    -1,    81,    82,    -1,    -1,    29,    -1,    31,    -1,    33,
+    34,    35,    -1,    -1,    -1,    -1,    -1,    -1,    42,    -1,
+    -1,    45,    -1,    -1,    -1,    -1,    50,    51,    52,    -1,
+    -1,    -1,    56,    57,    -1,     3,    -1,    61,    62,    -1,
+     8,     9,    66,    11,    68,    69,    -1,    -1,    -1,    73,
+    -1,    -1,    -1,    77,    -1,    -1,    -1,    81,    82,    -1,
+    -1,    29,    -1,    31,    -1,    33,    34,    35,    -1,    -1,
+    -1,    -1,    -1,    -1,    42,    -1,    -1,    45,    -1,    -1,
+    -1,    -1,    50,    51,    52,    -1,    -1,    -1,    56,    57,
+    -1,     3,    -1,    61,    62,    -1,     8,     9,    66,    11,
+    68,    -1,    -1,    -1,    -1,    73,    -1,    -1,    -1,    77,
+    -1,    79,    -1,    81,    82,    -1,    -1,    29,    -1,    31,
+    -1,    33,    34,    35,    -1,    -1,    -1,    -1,    -1,    -1,
+    42,    -1,    -1,    45,    -1,    -1,    -1,    -1,    50,    51,
+    52,    -1,    -1,    -1,    56,    57,    -1,     3,    -1,    61,
+    62,    -1,     8,     9,    66,    11,    68,    -1,    -1,    -1,
+    -1,    73,    -1,    -1,    -1,    77,    -1,    -1,    -1,    81,
+    82,    -1,    -1,    29,    -1,    31,    -1,    33,    34,    35,
+    -1,    -1,    -1,    -1,    -1,    -1,    42,    -1,    -1,    45,
+    -1,    -1,    -1,    -1,    50,    51,    52,    -1,    -1,    -1,
+    56,    57,    -1,     3,    -1,    61,    62,    -1,     8,     9,
+    66,    11,    68,    -1,    -1,    -1,    -1,    73,    -1,    -1,
+    -1,    77,    -1,    -1,    -1,    81,    82,    -1,    -1,    29,
+    -1,    31,    -1,    33,    34,    35,    -1,    -1,    -1,    -1,
+    -1,    -1,    42,    -1,    -1,    45,    -1,    -1,    -1,    -1,
+    50,    51,    52,    -1,    -1,    -1,    56,    57,    -1,     3,
+    -1,    61,    62,    -1,     8,     9,    66,    11,    68,    -1,
+    -1,    -1,    -1,    73,    -1,    -1,    -1,    77,    -1,    -1,
+    -1,    81,    82,    -1,    -1,    29,    -1,    31,    -1,    33,
+    34,    35,    -1,    -1,    -1,    -1,    -1,    -1,    42,    -1,
+    -1,    45,    -1,    -1,    -1,    -1,    50,    51,    52,    -1,
+    -1,    -1,    56,    57,    -1,    -1,    -1,    61,    62,    -1,
+    -1,    -1,    66,    -1,    68,    -1,    -1,    -1,    -1,    73,
+    -1,    -1,    -1,    77,    -1,    -1,     1,    81,    82,     4,
+     1,     6,     7,     4,    -1,     6,     7,    12,    13,    14,
+    -1,    12,    13,    14,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    28,    -1,    -1,    -1,    28,    -1,     4,
+    31,     6,     7,    -1,    -1,    -1,    -1,    12,    13,    14,
+    -1,    -1,    47,    -1,    -1,    -1,    47,     4,     5,     6,
+     7,    -1,    -1,    28,    -1,    12,    13,    14,    -1,    -1,
+    -1,    -1,    -1,    -1,    69,    70,    71,    72,    69,    74,
+    -1,    28,    47,    74,    79,    80,    -1,    -1,    79,    80,
+     1,    -1,     3,     4,     5,     6,     7,    -1,    -1,    -1,
+    47,    12,    13,    14,    69,    -1,    -1,    -1,    -1,    74,
+    -1,    -1,    -1,    -1,    79,    80,    27,    28,    -1,    30,
+    31,    -1,    69,    -1,    -1,    -1,    -1,    74,    -1,    -1,
+    -1,    -1,    79,    -1,    -1,    -1,    47,    -1,    -1,    50,
+    51,    52,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    61,    -1,    63,    64,    65,    -1,    -1,    -1,    69,    -1,
+    -1,    -1,    73,    74,    75,    76,    -1,     1,    79,     3,
+     4,     5,     6,     7,    -1,    -1,    -1,    -1,    12,    13,
+    14,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    28,     1,    30,     3,     4,     5,
+     6,     7,    -1,    -1,    10,    -1,    12,    13,    14,    -1,
+    -1,    -1,    -1,    47,    -1,    -1,    50,    51,    52,    -1,
+    -1,    -1,    28,    -1,    30,     1,    -1,    61,     4,     5,
+     6,     7,    -1,    -1,    10,    69,    12,    13,    14,    -1,
+    74,    47,    -1,    -1,    -1,    79,    -1,    -1,    -1,    -1,
+    -1,    -1,    28,    -1,    30,    -1,     4,     5,     6,     7,
+    -1,    -1,    -1,    69,    12,    13,    14,    -1,    74,    -1,
+    -1,    47,    78,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    28,    -1,    30,    -1,    -1,    -1,     4,     5,     6,     7,
+    -1,    -1,    -1,    69,    12,    13,    14,    -1,    74,    47,
+    -1,    -1,    78,     1,    -1,    -1,     4,    -1,     6,     7,
+    28,    -1,    30,    -1,    12,    13,    14,    -1,    -1,    -1,
+    -1,    69,    -1,    -1,    -1,    -1,    74,    -1,    -1,    47,
+    28,    79,    -1,    31,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    47,
+    -1,    69,    -1,    -1,    -1,    -1,    74,    -1,    -1,    -1,
+    -1,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     3,
+     4,    69,     6,     7,    -1,    -1,    74,    11,    12,    13,
+    14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+    24,    25,    26,    27,    28,    29,    -1,    -1,    -1,     3,
+     4,    -1,     6,     7,    -1,    -1,    40,    11,    12,    13,
+    14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+    24,    25,    26,    27,    28,    29,    -1,    61,    -1,    -1,
+    -1,    -1,    -1,    -1,     3,     4,    40,     6,     7,    -1,
+    74,    -1,    11,    12,    13,    14,    15,    16,    17,    18,
+    19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
+    29,    -1,    -1,    -1,     3,     4,    -1,     6,     7,    -1,
+    74,    40,    11,    12,    13,    14,    15,    16,    17,    18,
+    19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
+    29,    -1,    -1,    -1,     4,    -1,     6,     7,    -1,    -1,
+    -1,    40,    12,    13,    14,    74,     4,     5,     6,     7,
+    -1,    -1,    10,    -1,    12,    13,    14,    -1,    28,    -1,
+    30,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    28,    -1,    30,    -1,    -1,    74,    -1,    47,    -1,    -1,
+    -1,    -1,    52,    -1,    -1,    -1,    -1,    -1,    -1,    47,
+    -1,    61,    62,    -1,    -1,    -1,    -1,    -1,    -1,    69,
+     4,     5,     6,     7,    74,    -1,    10,    -1,    12,    13,
+    14,    69,     4,     5,     6,     7,    74,    -1,    -1,    -1,
+    12,    13,    14,    -1,    28,     4,    30,     6,     7,    -1,
+    -1,    -1,    -1,    12,    13,    14,    28,    -1,    30,    -1,
     -1,    -1,    -1,    47,    -1,    -1,    -1,    -1,    -1,    28,
     -1,    -1,    -1,    -1,    -1,    47,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    69,    -1,    -1,    47,    -1,
@@ -3567,13 +3571,22 @@ case 278:
     break;}
 case 279:
 #line 1541 "objc-parse.y"
-{ if (pedantic)
-                   pedwarn ("ANSI C forbids member declarations with no members");
-                 shadow_tag(yyvsp[0].ttype);
-                 yyval.ttype = NULL_TREE; ;
+{
+                 /* Support for unnamed structs or unions as members of 
+                    structs or unions (which is [a] useful and [b] supports 
+                    MS P-SDK).  */
+                 if (pedantic)
+                   pedwarn ("ANSI C doesn't support unnamed structs/unions");
+
+                 yyval.ttype = grokfield(yyvsp[-2].filename, yyvsp[-1].lineno, NULL, current_declspecs, NULL_TREE);
+                 current_declspecs = TREE_VALUE (declspec_stack);
+                 prefix_attributes = TREE_PURPOSE (declspec_stack);
+                 declspec_stack = TREE_CHAIN (declspec_stack);
+                 resume_momentary (yyvsp[-3].itype);
+               ;
     break;}
 case 280:
-#line 1546 "objc-parse.y"
+#line 1555 "objc-parse.y"
 { yyval.ttype = yyvsp[0].ttype;
                  current_declspecs = TREE_VALUE (declspec_stack);
                  prefix_attributes = TREE_PURPOSE (declspec_stack);
@@ -3581,144 +3594,144 @@ case 280:
                  resume_momentary (yyvsp[-1].itype); ;
     break;}
 case 281:
-#line 1552 "objc-parse.y"
+#line 1561 "objc-parse.y"
 { if (pedantic)
                    pedwarn ("ANSI C forbids member declarations with no members");
                  shadow_tag(yyvsp[0].ttype);
                  yyval.ttype = NULL_TREE; ;
     break;}
 case 282:
-#line 1557 "objc-parse.y"
+#line 1566 "objc-parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
 case 283:
-#line 1559 "objc-parse.y"
+#line 1568 "objc-parse.y"
 { yyval.ttype = yyvsp[0].ttype;
                  RESTORE_WARN_FLAGS (yyvsp[-1].itype); ;
     break;}
 case 285:
-#line 1566 "objc-parse.y"
+#line 1575 "objc-parse.y"
 { yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ;
     break;}
 case 286:
-#line 1571 "objc-parse.y"
+#line 1580 "objc-parse.y"
 { yyval.ttype = grokfield (yyvsp[-3].filename, yyvsp[-2].lineno, yyvsp[-1].ttype, current_declspecs, NULL_TREE);
                  decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
     break;}
 case 287:
-#line 1575 "objc-parse.y"
+#line 1584 "objc-parse.y"
 { yyval.ttype = grokfield (yyvsp[-5].filename, yyvsp[-4].lineno, yyvsp[-3].ttype, current_declspecs, yyvsp[-1].ttype);
                  decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
     break;}
 case 288:
-#line 1578 "objc-parse.y"
+#line 1587 "objc-parse.y"
 { yyval.ttype = grokfield (yyvsp[-4].filename, yyvsp[-3].lineno, NULL_TREE, current_declspecs, yyvsp[-1].ttype);
                  decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
     break;}
 case 290:
-#line 1590 "objc-parse.y"
+#line 1599 "objc-parse.y"
 { if (yyvsp[-2].ttype == error_mark_node)
                    yyval.ttype = yyvsp[-2].ttype;
                  else
                    yyval.ttype = chainon (yyvsp[0].ttype, yyvsp[-2].ttype); ;
     break;}
 case 291:
-#line 1595 "objc-parse.y"
+#line 1604 "objc-parse.y"
 { yyval.ttype = error_mark_node; ;
     break;}
 case 292:
-#line 1601 "objc-parse.y"
+#line 1610 "objc-parse.y"
 { yyval.ttype = build_enumerator (yyvsp[0].ttype, NULL_TREE); ;
     break;}
 case 293:
-#line 1603 "objc-parse.y"
+#line 1612 "objc-parse.y"
 { yyval.ttype = build_enumerator (yyvsp[-2].ttype, yyvsp[0].ttype); ;
     break;}
 case 294:
-#line 1608 "objc-parse.y"
+#line 1617 "objc-parse.y"
 { yyval.ttype = build_tree_list (yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 295:
-#line 1610 "objc-parse.y"
+#line 1619 "objc-parse.y"
 { yyval.ttype = build_tree_list (yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 296:
-#line 1615 "objc-parse.y"
+#line 1624 "objc-parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
 case 298:
-#line 1621 "objc-parse.y"
+#line 1630 "objc-parse.y"
 { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE); ;
     break;}
 case 299:
-#line 1623 "objc-parse.y"
+#line 1632 "objc-parse.y"
 { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
     break;}
 case 300:
-#line 1628 "objc-parse.y"
+#line 1637 "objc-parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
 case 301:
-#line 1630 "objc-parse.y"
+#line 1639 "objc-parse.y"
 { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
     break;}
 case 302:
-#line 1635 "objc-parse.y"
+#line 1644 "objc-parse.y"
 { yyval.ttype = yyvsp[-1].ttype; ;
     break;}
 case 303:
-#line 1638 "objc-parse.y"
+#line 1647 "objc-parse.y"
 { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 304:
-#line 1640 "objc-parse.y"
+#line 1649 "objc-parse.y"
 { yyval.ttype = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE); ;
     break;}
 case 305:
-#line 1642 "objc-parse.y"
+#line 1651 "objc-parse.y"
 { yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;
     break;}
 case 306:
-#line 1644 "objc-parse.y"
+#line 1653 "objc-parse.y"
 { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
     break;}
 case 307:
-#line 1646 "objc-parse.y"
+#line 1655 "objc-parse.y"
 { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-2].ttype, NULL_TREE); ;
     break;}
 case 308:
-#line 1648 "objc-parse.y"
+#line 1657 "objc-parse.y"
 { yyval.ttype = build_nt (CALL_EXPR, NULL_TREE, yyvsp[0].ttype, NULL_TREE); ;
     break;}
 case 309:
-#line 1650 "objc-parse.y"
+#line 1659 "objc-parse.y"
 { yyval.ttype = build_nt (ARRAY_REF, NULL_TREE, yyvsp[-1].ttype); ;
     break;}
 case 310:
-#line 1652 "objc-parse.y"
+#line 1661 "objc-parse.y"
 { yyval.ttype = build_nt (ARRAY_REF, NULL_TREE, NULL_TREE); ;
     break;}
 case 311:
-#line 1656 "objc-parse.y"
+#line 1665 "objc-parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 312:
-#line 1665 "objc-parse.y"
+#line 1674 "objc-parse.y"
 {
                  if (pedantic && yyvsp[0].ends_in_label)
                    pedwarn ("ANSI C forbids label at end of compound statement");
                ;
     break;}
 case 314:
-#line 1674 "objc-parse.y"
+#line 1683 "objc-parse.y"
 { yyval.ends_in_label = yyvsp[0].ends_in_label; ;
     break;}
 case 315:
-#line 1676 "objc-parse.y"
+#line 1685 "objc-parse.y"
 { yyval.ends_in_label = 0; ;
     break;}
 case 319:
-#line 1688 "objc-parse.y"
+#line 1697 "objc-parse.y"
 { emit_line_note (input_filename, lineno);
                  pushlevel (0);
                  clear_last_expr ();
@@ -3729,12 +3742,12 @@ case 319:
                ;
     break;}
 case 321:
-#line 1703 "objc-parse.y"
+#line 1712 "objc-parse.y"
 { if (pedantic)
                    pedwarn ("ANSI C forbids label declarations"); ;
     break;}
 case 324:
-#line 1714 "objc-parse.y"
+#line 1723 "objc-parse.y"
 { tree link;
                  for (link = yyvsp[-1].ttype; link; link = TREE_CHAIN (link))
                    {
@@ -3745,19 +3758,19 @@ case 324:
                ;
     break;}
 case 325:
-#line 1728 "objc-parse.y"
+#line 1737 "objc-parse.y"
 {;
     break;}
 case 327:
-#line 1732 "objc-parse.y"
+#line 1741 "objc-parse.y"
 { compstmt_count++; ;
     break;}
 case 328:
-#line 1735 "objc-parse.y"
+#line 1744 "objc-parse.y"
 { yyval.ttype = convert (void_type_node, integer_zero_node); ;
     break;}
 case 329:
-#line 1737 "objc-parse.y"
+#line 1746 "objc-parse.y"
 { emit_line_note (input_filename, lineno);
                  expand_end_bindings (getdecls (), 1, 0);
                  yyval.ttype = poplevel (1, 1, 0);
@@ -3767,7 +3780,7 @@ case 329:
                    pop_momentary (); ;
     break;}
 case 330:
-#line 1745 "objc-parse.y"
+#line 1754 "objc-parse.y"
 { emit_line_note (input_filename, lineno);
                  expand_end_bindings (getdecls (), kept_level_p (), 0);
                  yyval.ttype = poplevel (kept_level_p (), 0, 0);
@@ -3777,7 +3790,7 @@ case 330:
                    pop_momentary (); ;
     break;}
 case 331:
-#line 1753 "objc-parse.y"
+#line 1762 "objc-parse.y"
 { emit_line_note (input_filename, lineno);
                  expand_end_bindings (getdecls (), kept_level_p (), 0);
                  yyval.ttype = poplevel (kept_level_p (), 0, 0);
@@ -3787,7 +3800,7 @@ case 331:
                    pop_momentary (); ;
     break;}
 case 332:
-#line 1764 "objc-parse.y"
+#line 1773 "objc-parse.y"
 { if (current_function_decl == 0)
                    {
                      error ("braced-group within expression allowed only inside a function");
@@ -3805,11 +3818,11 @@ case 332:
                ;
     break;}
 case 333:
-#line 1781 "objc-parse.y"
+#line 1790 "objc-parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 336:
-#line 1795 "objc-parse.y"
+#line 1804 "objc-parse.y"
 { emit_line_note (yyvsp[-5].filename, yyvsp[-4].lineno);
                  c_expand_start_cond (truthvalue_conversion (yyvsp[-1].ttype), 0, 
                                       compstmt_count);
@@ -3819,7 +3832,7 @@ case 336:
                  position_after_white_space (); ;
     break;}
 case 337:
-#line 1809 "objc-parse.y"
+#line 1818 "objc-parse.y"
 { stmt_count++;
                  compstmt_count++;
                  emit_line_note (yyvsp[-2].filename, yyvsp[-1].lineno);
@@ -3829,43 +3842,43 @@ case 337:
                  position_after_white_space (); ;
     break;}
 case 338:
-#line 1817 "objc-parse.y"
+#line 1826 "objc-parse.y"
 { expand_loop_continue_here (); ;
     break;}
 case 339:
-#line 1821 "objc-parse.y"
+#line 1830 "objc-parse.y"
 { yyval.filename = input_filename; ;
     break;}
 case 340:
-#line 1825 "objc-parse.y"
+#line 1834 "objc-parse.y"
 { yyval.lineno = lineno; ;
     break;}
 case 341:
-#line 1830 "objc-parse.y"
+#line 1839 "objc-parse.y"
 { ;
     break;}
 case 342:
-#line 1835 "objc-parse.y"
+#line 1844 "objc-parse.y"
 { ;
     break;}
 case 343:
-#line 1840 "objc-parse.y"
+#line 1849 "objc-parse.y"
 { yyval.ends_in_label = yyvsp[0].ends_in_label; ;
     break;}
 case 344:
-#line 1845 "objc-parse.y"
+#line 1854 "objc-parse.y"
 { yyval.ends_in_label = 0; ;
     break;}
 case 345:
-#line 1847 "objc-parse.y"
+#line 1856 "objc-parse.y"
 { yyval.ends_in_label = 1; ;
     break;}
 case 346:
-#line 1853 "objc-parse.y"
+#line 1862 "objc-parse.y"
 { stmt_count++; ;
     break;}
 case 348:
-#line 1856 "objc-parse.y"
+#line 1865 "objc-parse.y"
 { stmt_count++;
                  emit_line_note (yyvsp[-3].filename, yyvsp[-2].lineno);
 /* It appears that this should not be done--that a non-lvalue array
@@ -3884,19 +3897,19 @@ case 348:
                  clear_momentary (); ;
     break;}
 case 349:
-#line 1873 "objc-parse.y"
+#line 1882 "objc-parse.y"
 { c_expand_start_else ();
                  yyvsp[-1].itype = stmt_count;
                  position_after_white_space (); ;
     break;}
 case 350:
-#line 1877 "objc-parse.y"
+#line 1886 "objc-parse.y"
 { c_expand_end_cond ();
                  if (extra_warnings && stmt_count == yyvsp[-3].itype)
                    warning ("empty body in an else-statement"); ;
     break;}
 case 351:
-#line 1881 "objc-parse.y"
+#line 1890 "objc-parse.y"
 { c_expand_end_cond ();
                  /* This warning is here instead of in simple_if, because we
                     do not want a warning if an empty if is followed by an
@@ -3907,11 +3920,11 @@ case 351:
                                                "empty body in an if-statement"); ;
     break;}
 case 352:
-#line 1893 "objc-parse.y"
+#line 1902 "objc-parse.y"
 { c_expand_end_cond (); ;
     break;}
 case 353:
-#line 1895 "objc-parse.y"
+#line 1904 "objc-parse.y"
 { stmt_count++;
                  emit_line_note (yyvsp[-2].filename, yyvsp[-1].lineno);
                  /* The emit_nop used to come before emit_line_note,
@@ -3923,7 +3936,7 @@ case 353:
                  emit_nop (); ;
     break;}
 case 354:
-#line 1905 "objc-parse.y"
+#line 1914 "objc-parse.y"
 { /* Don't start the loop till we have succeeded
                     in parsing the end test.  This is to make sure
                     that we end every loop we start.  */
@@ -3934,11 +3947,11 @@ case 354:
                  position_after_white_space (); ;
     break;}
 case 355:
-#line 1914 "objc-parse.y"
+#line 1923 "objc-parse.y"
 { expand_end_loop (); ;
     break;}
 case 356:
-#line 1917 "objc-parse.y"
+#line 1926 "objc-parse.y"
 { emit_line_note (input_filename, lineno);
                  expand_exit_loop_if_false (NULL_PTR,
                                             truthvalue_conversion (yyvsp[-2].ttype));
@@ -3946,12 +3959,12 @@ case 356:
                  clear_momentary (); ;
     break;}
 case 357:
-#line 1924 "objc-parse.y"
+#line 1933 "objc-parse.y"
 { expand_end_loop ();
                  clear_momentary (); ;
     break;}
 case 358:
-#line 1928 "objc-parse.y"
+#line 1937 "objc-parse.y"
 { stmt_count++;
                  emit_line_note (yyvsp[-5].filename, yyvsp[-4].lineno);
                  /* See comment in `while' alternative, above.  */
@@ -3964,12 +3977,12 @@ case 358:
                ;
     break;}
 case 359:
-#line 1940 "objc-parse.y"
+#line 1949 "objc-parse.y"
 { yyvsp[0].lineno = lineno;
                  yyval.filename = input_filename; ;
     break;}
 case 360:
-#line 1943 "objc-parse.y"
+#line 1952 "objc-parse.y"
 { 
                  /* Start the loop.  Doing this after parsing
                     all the expressions ensures we will end the loop.  */
@@ -3987,7 +4000,7 @@ case 360:
                  position_after_white_space (); ;
     break;}
 case 361:
-#line 1959 "objc-parse.y"
+#line 1968 "objc-parse.y"
 { /* Emit the increment expression, with a line number.  */
                  emit_line_note (yyvsp[-4].filename, yyvsp[-5].lineno);
                  expand_loop_continue_here ();
@@ -4000,7 +4013,7 @@ case 361:
                  expand_end_loop (); ;
     break;}
 case 362:
-#line 1970 "objc-parse.y"
+#line 1979 "objc-parse.y"
 { stmt_count++;
                  emit_line_note (yyvsp[-5].filename, yyvsp[-4].lineno);
                  c_expand_start_case (yyvsp[-1].ttype);
@@ -4010,7 +4023,7 @@ case 362:
                  position_after_white_space (); ;
     break;}
 case 363:
-#line 1978 "objc-parse.y"
+#line 1987 "objc-parse.y"
 { expand_end_case (yyvsp[-3].ttype);
                  if (yychar == CONSTANT || yychar == STRING)
                    pop_momentary_nofree ();
@@ -4018,33 +4031,33 @@ case 363:
                    pop_momentary (); ;
     break;}
 case 364:
-#line 1984 "objc-parse.y"
+#line 1993 "objc-parse.y"
 { stmt_count++;
                  emit_line_note (yyvsp[-3].filename, yyvsp[-2].lineno);
                  if ( ! expand_exit_something ())
                    error ("break statement not within loop or switch"); ;
     break;}
 case 365:
-#line 1989 "objc-parse.y"
+#line 1998 "objc-parse.y"
 { stmt_count++;
                  emit_line_note (yyvsp[-3].filename, yyvsp[-2].lineno);
                  if (! expand_continue_loop (NULL_PTR))
                    error ("continue statement not within a loop"); ;
     break;}
 case 366:
-#line 1994 "objc-parse.y"
+#line 2003 "objc-parse.y"
 { stmt_count++;
                  emit_line_note (yyvsp[-3].filename, yyvsp[-2].lineno);
                  c_expand_return (NULL_TREE); ;
     break;}
 case 367:
-#line 1998 "objc-parse.y"
+#line 2007 "objc-parse.y"
 { stmt_count++;
                  emit_line_note (yyvsp[-4].filename, yyvsp[-3].lineno);
                  c_expand_return (yyvsp[-1].ttype); ;
     break;}
 case 368:
-#line 2002 "objc-parse.y"
+#line 2011 "objc-parse.y"
 { stmt_count++;
                  emit_line_note (yyvsp[-7].filename, yyvsp[-6].lineno);
                  STRIP_NOPS (yyvsp[-2].ttype);
@@ -4056,7 +4069,7 @@ case 368:
                    error ("argument of `asm' is not a constant string"); ;
     break;}
 case 369:
-#line 2013 "objc-parse.y"
+#line 2022 "objc-parse.y"
 { stmt_count++;
                  emit_line_note (yyvsp[-9].filename, yyvsp[-8].lineno);
                  c_expand_asm_operands (yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE, NULL_TREE,
@@ -4064,7 +4077,7 @@ case 369:
                                         input_filename, lineno); ;
     break;}
 case 370:
-#line 2020 "objc-parse.y"
+#line 2029 "objc-parse.y"
 { stmt_count++;
                  emit_line_note (yyvsp[-11].filename, yyvsp[-10].lineno);
                  c_expand_asm_operands (yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE,
@@ -4072,7 +4085,7 @@ case 370:
                                         input_filename, lineno); ;
     break;}
 case 371:
-#line 2028 "objc-parse.y"
+#line 2037 "objc-parse.y"
 { stmt_count++;
                  emit_line_note (yyvsp[-13].filename, yyvsp[-12].lineno);
                  c_expand_asm_operands (yyvsp[-8].ttype, yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype,
@@ -4080,7 +4093,7 @@ case 371:
                                         input_filename, lineno); ;
     break;}
 case 372:
-#line 2034 "objc-parse.y"
+#line 2043 "objc-parse.y"
 { tree decl;
                  stmt_count++;
                  emit_line_note (yyvsp[-4].filename, yyvsp[-3].lineno);
@@ -4093,7 +4106,7 @@ case 372:
                ;
     break;}
 case 373:
-#line 2045 "objc-parse.y"
+#line 2054 "objc-parse.y"
 { if (pedantic)
                    pedwarn ("ANSI C forbids `goto *expr;'");
                  stmt_count++;
@@ -4101,7 +4114,7 @@ case 373:
                  expand_computed_goto (convert (ptr_type_node, yyvsp[-1].ttype)); ;
     break;}
 case 376:
-#line 2060 "objc-parse.y"
+#line 2069 "objc-parse.y"
 {
            /* The value returned by this action is  */
            /*      1 if everything is OK */ 
@@ -4124,14 +4137,14 @@ case 376:
          ;
     break;}
 case 377:
-#line 2081 "objc-parse.y"
+#line 2090 "objc-parse.y"
 {
            if (yyvsp[-1].itype)
              iterator_for_loop_end (yyvsp[-3].ttype);
          ;
     break;}
 case 378:
-#line 2116 "objc-parse.y"
+#line 2125 "objc-parse.y"
 { register tree value = check_case_value (yyvsp[-1].ttype);
                  register tree label
                    = build_decl (LABEL_DECL, NULL_TREE, NULL_TREE);
@@ -4164,7 +4177,7 @@ case 378:
                  position_after_white_space (); ;
     break;}
 case 379:
-#line 2147 "objc-parse.y"
+#line 2156 "objc-parse.y"
 { register tree value1 = check_case_value (yyvsp[-3].ttype);
                  register tree value2 = check_case_value (yyvsp[-1].ttype);
                  register tree label
@@ -4197,7 +4210,7 @@ case 379:
                  position_after_white_space (); ;
     break;}
 case 380:
-#line 2178 "objc-parse.y"
+#line 2187 "objc-parse.y"
 {
                  tree duplicate;
                  register tree label
@@ -4214,7 +4227,7 @@ case 380:
                  position_after_white_space (); ;
     break;}
 case 381:
-#line 2193 "objc-parse.y"
+#line 2202 "objc-parse.y"
 { tree label = define_label (input_filename, lineno, yyvsp[-2].ttype);
                  stmt_count++;
                  emit_nop ();
@@ -4226,52 +4239,52 @@ case 381:
                  position_after_white_space (); ;
     break;}
 case 382:
-#line 2208 "objc-parse.y"
+#line 2217 "objc-parse.y"
 { emit_line_note (input_filename, lineno);
                  yyval.ttype = NULL_TREE; ;
     break;}
 case 383:
-#line 2211 "objc-parse.y"
+#line 2220 "objc-parse.y"
 { emit_line_note (input_filename, lineno); ;
     break;}
 case 384:
-#line 2216 "objc-parse.y"
+#line 2225 "objc-parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
 case 386:
-#line 2223 "objc-parse.y"
+#line 2232 "objc-parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
 case 389:
-#line 2230 "objc-parse.y"
+#line 2239 "objc-parse.y"
 { yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ;
     break;}
 case 390:
-#line 2235 "objc-parse.y"
+#line 2244 "objc-parse.y"
 { yyval.ttype = build_tree_list (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
     break;}
 case 391:
-#line 2240 "objc-parse.y"
+#line 2249 "objc-parse.y"
 { yyval.ttype = tree_cons (NULL_TREE, combine_strings (yyvsp[0].ttype), NULL_TREE); ;
     break;}
 case 392:
-#line 2242 "objc-parse.y"
+#line 2251 "objc-parse.y"
 { yyval.ttype = tree_cons (NULL_TREE, combine_strings (yyvsp[0].ttype), yyvsp[-2].ttype); ;
     break;}
 case 393:
-#line 2248 "objc-parse.y"
+#line 2257 "objc-parse.y"
 { pushlevel (0);
                  clear_parm_order ();
                  declare_parm_level (0); ;
     break;}
 case 394:
-#line 2252 "objc-parse.y"
+#line 2261 "objc-parse.y"
 { yyval.ttype = yyvsp[0].ttype;
                  parmlist_tags_warning ();
                  poplevel (0, 0, 0); ;
     break;}
 case 396:
-#line 2260 "objc-parse.y"
+#line 2269 "objc-parse.y"
 { tree parm;
                  if (pedantic)
                    pedwarn ("ANSI C forbids forward parameter declarations");
@@ -4281,19 +4294,19 @@ case 396:
                  clear_parm_order (); ;
     break;}
 case 397:
-#line 2268 "objc-parse.y"
+#line 2277 "objc-parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 398:
-#line 2270 "objc-parse.y"
+#line 2279 "objc-parse.y"
 { yyval.ttype = tree_cons (NULL_TREE, NULL_TREE, NULL_TREE); ;
     break;}
 case 399:
-#line 2276 "objc-parse.y"
+#line 2285 "objc-parse.y"
 { yyval.ttype = get_parm_info (0); ;
     break;}
 case 400:
-#line 2278 "objc-parse.y"
+#line 2287 "objc-parse.y"
 { yyval.ttype = get_parm_info (0);
                  /* Gcc used to allow this as an extension.  However, it does
                     not work for all targets, and thus has been disabled.
@@ -4305,23 +4318,23 @@ case 400:
                ;
     break;}
 case 401:
-#line 2288 "objc-parse.y"
+#line 2297 "objc-parse.y"
 { yyval.ttype = get_parm_info (1); ;
     break;}
 case 402:
-#line 2290 "objc-parse.y"
+#line 2299 "objc-parse.y"
 { yyval.ttype = get_parm_info (0); ;
     break;}
 case 403:
-#line 2295 "objc-parse.y"
+#line 2304 "objc-parse.y"
 { push_parm_decl (yyvsp[0].ttype); ;
     break;}
 case 404:
-#line 2297 "objc-parse.y"
+#line 2306 "objc-parse.y"
 { push_parm_decl (yyvsp[0].ttype); ;
     break;}
 case 405:
-#line 2304 "objc-parse.y"
+#line 2313 "objc-parse.y"
 { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
                                                         yyvsp[-1].ttype),
                                        build_tree_list (prefix_attributes,
@@ -4332,7 +4345,7 @@ case 405:
                  resume_momentary (yyvsp[-2].itype); ;
     break;}
 case 406:
-#line 2313 "objc-parse.y"
+#line 2322 "objc-parse.y"
 { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
                                                         yyvsp[-1].ttype),
                                        build_tree_list (prefix_attributes,
@@ -4343,7 +4356,7 @@ case 406:
                  resume_momentary (yyvsp[-2].itype); ;
     break;}
 case 407:
-#line 2322 "objc-parse.y"
+#line 2331 "objc-parse.y"
 { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
                                                         yyvsp[-1].ttype),
                                        build_tree_list (prefix_attributes,
@@ -4354,7 +4367,7 @@ case 407:
                  resume_momentary (yyvsp[-2].itype); ;
     break;}
 case 408:
-#line 2331 "objc-parse.y"
+#line 2340 "objc-parse.y"
 { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
                                                         yyvsp[-1].ttype),
                                        build_tree_list (prefix_attributes,
@@ -4365,7 +4378,7 @@ case 408:
                  resume_momentary (yyvsp[-2].itype);  ;
     break;}
 case 409:
-#line 2341 "objc-parse.y"
+#line 2350 "objc-parse.y"
 { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
                                                         yyvsp[-1].ttype),
                                        build_tree_list (prefix_attributes,
@@ -4376,19 +4389,19 @@ case 409:
                  resume_momentary (yyvsp[-2].itype);  ;
     break;}
 case 410:
-#line 2355 "objc-parse.y"
+#line 2364 "objc-parse.y"
 { pushlevel (0);
                  clear_parm_order ();
                  declare_parm_level (1); ;
     break;}
 case 411:
-#line 2359 "objc-parse.y"
+#line 2368 "objc-parse.y"
 { yyval.ttype = yyvsp[0].ttype;
                  parmlist_tags_warning ();
                  poplevel (0, 0, 0); ;
     break;}
 case 413:
-#line 2367 "objc-parse.y"
+#line 2376 "objc-parse.y"
 { tree t;
                  for (t = yyvsp[-1].ttype; t; t = TREE_CHAIN (t))
                    if (TREE_VALUE (t) == NULL_TREE)
@@ -4396,29 +4409,29 @@ case 413:
                  yyval.ttype = tree_cons (NULL_TREE, NULL_TREE, yyvsp[-1].ttype); ;
     break;}
 case 414:
-#line 2377 "objc-parse.y"
+#line 2386 "objc-parse.y"
 { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
     break;}
 case 415:
-#line 2379 "objc-parse.y"
+#line 2388 "objc-parse.y"
 { yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
     break;}
 case 416:
-#line 2385 "objc-parse.y"
+#line 2394 "objc-parse.y"
 { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
     break;}
 case 417:
-#line 2387 "objc-parse.y"
+#line 2396 "objc-parse.y"
 { yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
     break;}
 case 418:
-#line 2392 "objc-parse.y"
+#line 2401 "objc-parse.y"
 { yyval.itype = SAVE_WARN_FLAGS();
                  pedantic = 0;
                  warn_pointer_arith = 0; ;
     break;}
 case 424:
-#line 2406 "objc-parse.y"
+#line 2415 "objc-parse.y"
 {
                  if (objc_implementation_context)
                     {
@@ -4431,27 +4444,27 @@ case 424:
                ;
     break;}
 case 425:
-#line 2421 "objc-parse.y"
+#line 2430 "objc-parse.y"
 { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
     break;}
 case 426:
-#line 2423 "objc-parse.y"
+#line 2432 "objc-parse.y"
 { yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
     break;}
 case 427:
-#line 2428 "objc-parse.y"
+#line 2437 "objc-parse.y"
 {
                  objc_declare_class (yyvsp[-1].ttype);
                ;
     break;}
 case 428:
-#line 2434 "objc-parse.y"
+#line 2443 "objc-parse.y"
 {
                  objc_declare_alias (yyvsp[-2].ttype, yyvsp[-1].ttype);
                ;
     break;}
 case 429:
-#line 2440 "objc-parse.y"
+#line 2449 "objc-parse.y"
 {
                  objc_interface_context = objc_ivar_context
                    = start_class (CLASS_INTERFACE_TYPE, yyvsp[-2].ttype, NULL_TREE, yyvsp[-1].ttype);
@@ -4459,20 +4472,20 @@ case 429:
                ;
     break;}
 case 430:
-#line 2446 "objc-parse.y"
+#line 2455 "objc-parse.y"
 {
                   continue_class (objc_interface_context);
                ;
     break;}
 case 431:
-#line 2451 "objc-parse.y"
+#line 2460 "objc-parse.y"
 {
                  finish_class (objc_interface_context);
                  objc_interface_context = NULL_TREE;
                ;
     break;}
 case 432:
-#line 2457 "objc-parse.y"
+#line 2466 "objc-parse.y"
 {
                  objc_interface_context
                    = start_class (CLASS_INTERFACE_TYPE, yyvsp[-1].ttype, NULL_TREE, yyvsp[0].ttype);
@@ -4480,14 +4493,14 @@ case 432:
                ;
     break;}
 case 433:
-#line 2464 "objc-parse.y"
+#line 2473 "objc-parse.y"
 {
                  finish_class (objc_interface_context);
                  objc_interface_context = NULL_TREE;
                ;
     break;}
 case 434:
-#line 2470 "objc-parse.y"
+#line 2479 "objc-parse.y"
 {
                  objc_interface_context = objc_ivar_context
                    = start_class (CLASS_INTERFACE_TYPE, yyvsp[-4].ttype, yyvsp[-2].ttype, yyvsp[-1].ttype);
@@ -4495,20 +4508,20 @@ case 434:
                ;
     break;}
 case 435:
-#line 2476 "objc-parse.y"
+#line 2485 "objc-parse.y"
 {
                   continue_class (objc_interface_context);
                ;
     break;}
 case 436:
-#line 2481 "objc-parse.y"
+#line 2490 "objc-parse.y"
 {
                  finish_class (objc_interface_context);
                  objc_interface_context = NULL_TREE;
                ;
     break;}
 case 437:
-#line 2487 "objc-parse.y"
+#line 2496 "objc-parse.y"
 {
                  objc_interface_context
                    = start_class (CLASS_INTERFACE_TYPE, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype);
@@ -4516,14 +4529,14 @@ case 437:
                ;
     break;}
 case 438:
-#line 2494 "objc-parse.y"
+#line 2503 "objc-parse.y"
 {
                  finish_class (objc_interface_context);
                  objc_interface_context = NULL_TREE;
                ;
     break;}
 case 439:
-#line 2500 "objc-parse.y"
+#line 2509 "objc-parse.y"
 {
                  objc_implementation_context = objc_ivar_context
                    = start_class (CLASS_IMPLEMENTATION_TYPE, yyvsp[-1].ttype, NULL_TREE, NULL_TREE);
@@ -4531,14 +4544,14 @@ case 439:
                ;
     break;}
 case 440:
-#line 2506 "objc-parse.y"
+#line 2515 "objc-parse.y"
 {
                   objc_ivar_chain
                    = continue_class (objc_implementation_context);
                ;
     break;}
 case 441:
-#line 2512 "objc-parse.y"
+#line 2521 "objc-parse.y"
 {
                  objc_implementation_context
                    = start_class (CLASS_IMPLEMENTATION_TYPE, yyvsp[0].ttype, NULL_TREE, NULL_TREE);
@@ -4547,7 +4560,7 @@ case 441:
                ;
     break;}
 case 442:
-#line 2520 "objc-parse.y"
+#line 2529 "objc-parse.y"
 {
                  objc_implementation_context = objc_ivar_context
                    = start_class (CLASS_IMPLEMENTATION_TYPE, yyvsp[-3].ttype, yyvsp[-1].ttype, NULL_TREE);
@@ -4555,14 +4568,14 @@ case 442:
                ;
     break;}
 case 443:
-#line 2526 "objc-parse.y"
+#line 2535 "objc-parse.y"
 {
                   objc_ivar_chain
                    = continue_class (objc_implementation_context);
                ;
     break;}
 case 444:
-#line 2532 "objc-parse.y"
+#line 2541 "objc-parse.y"
 {
                  objc_implementation_context
                    = start_class (CLASS_IMPLEMENTATION_TYPE, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE);
@@ -4571,7 +4584,7 @@ case 444:
                ;
     break;}
 case 445:
-#line 2540 "objc-parse.y"
+#line 2549 "objc-parse.y"
 {
                  objc_interface_context
                    = start_class (CATEGORY_INTERFACE_TYPE, yyvsp[-4].ttype, yyvsp[-2].ttype, yyvsp[0].ttype);
@@ -4579,14 +4592,14 @@ case 445:
                ;
     break;}
 case 446:
-#line 2547 "objc-parse.y"
+#line 2556 "objc-parse.y"
 {
                  finish_class (objc_interface_context);
                  objc_interface_context = NULL_TREE;
                ;
     break;}
 case 447:
-#line 2553 "objc-parse.y"
+#line 2562 "objc-parse.y"
 {
                  objc_implementation_context
                    = start_class (CATEGORY_IMPLEMENTATION_TYPE, yyvsp[-3].ttype, yyvsp[-1].ttype, NULL_TREE);
@@ -4595,7 +4608,7 @@ case 447:
                ;
     break;}
 case 448:
-#line 2563 "objc-parse.y"
+#line 2572 "objc-parse.y"
 {
                  remember_protocol_qualifiers ();
                  objc_interface_context
@@ -4603,7 +4616,7 @@ case 448:
                ;
     break;}
 case 449:
-#line 2569 "objc-parse.y"
+#line 2578 "objc-parse.y"
 {
                  forget_protocol_qualifiers();
                  finish_protocol(objc_interface_context);
@@ -4611,13 +4624,13 @@ case 449:
                ;
     break;}
 case 450:
-#line 2578 "objc-parse.y"
+#line 2587 "objc-parse.y"
 {
                  yyval.ttype = NULL_TREE;
                ;
     break;}
 case 452:
-#line 2586 "objc-parse.y"
+#line 2595 "objc-parse.y"
 {
                  if (yyvsp[-2].code == LT_EXPR && yyvsp[0].code == GT_EXPR)
                    yyval.ttype = yyvsp[-1].ttype;
@@ -4626,32 +4639,32 @@ case 452:
                ;
     break;}
 case 455:
-#line 2600 "objc-parse.y"
+#line 2609 "objc-parse.y"
 { objc_public_flag = 2; ;
     break;}
 case 456:
-#line 2601 "objc-parse.y"
+#line 2610 "objc-parse.y"
 { objc_public_flag = 0; ;
     break;}
 case 457:
-#line 2602 "objc-parse.y"
+#line 2611 "objc-parse.y"
 { objc_public_flag = 1; ;
     break;}
 case 458:
-#line 2607 "objc-parse.y"
+#line 2616 "objc-parse.y"
 {
                   yyval.ttype = NULL_TREE;
                 ;
     break;}
 case 460:
-#line 2612 "objc-parse.y"
+#line 2621 "objc-parse.y"
 {
                   if (pedantic)
                    pedwarn ("extra semicolon in struct or union specified");
                 ;
     break;}
 case 461:
-#line 2630 "objc-parse.y"
+#line 2639 "objc-parse.y"
 { yyval.ttype = yyvsp[0].ttype;
                  current_declspecs = TREE_VALUE (declspec_stack);
                  prefix_attributes = TREE_PURPOSE (declspec_stack);
@@ -4659,7 +4672,7 @@ case 461:
                  resume_momentary (yyvsp[-1].itype); ;
     break;}
 case 462:
-#line 2636 "objc-parse.y"
+#line 2645 "objc-parse.y"
 { yyval.ttype = yyvsp[0].ttype;
                  current_declspecs = TREE_VALUE (declspec_stack);
                  prefix_attributes = TREE_PURPOSE (declspec_stack);
@@ -4667,15 +4680,15 @@ case 462:
                  resume_momentary (yyvsp[-1].itype); ;
     break;}
 case 463:
-#line 2642 "objc-parse.y"
+#line 2651 "objc-parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
 case 464:
-#line 2647 "objc-parse.y"
+#line 2656 "objc-parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
 case 467:
-#line 2654 "objc-parse.y"
+#line 2663 "objc-parse.y"
 {
                  yyval.ttype = add_instance_variable (objc_ivar_context,
                                              objc_public_flag,
@@ -4684,7 +4697,7 @@ case 467:
                 ;
     break;}
 case 468:
-#line 2661 "objc-parse.y"
+#line 2670 "objc-parse.y"
 {
                  yyval.ttype = add_instance_variable (objc_ivar_context,
                                              objc_public_flag,
@@ -4692,7 +4705,7 @@ case 468:
                 ;
     break;}
 case 469:
-#line 2667 "objc-parse.y"
+#line 2676 "objc-parse.y"
 {
                  yyval.ttype = add_instance_variable (objc_ivar_context,
                                              objc_public_flag,
@@ -4701,7 +4714,7 @@ case 469:
                 ;
     break;}
 case 470:
-#line 2677 "objc-parse.y"
+#line 2686 "objc-parse.y"
 {
                  remember_protocol_qualifiers ();
                  if (objc_implementation_context)
@@ -4711,7 +4724,7 @@ case 470:
                ;
     break;}
 case 471:
-#line 2685 "objc-parse.y"
+#line 2694 "objc-parse.y"
 {
                  forget_protocol_qualifiers ();
                  add_class_method (objc_implementation_context, yyvsp[0].ttype);
@@ -4720,20 +4733,20 @@ case 471:
                ;
     break;}
 case 472:
-#line 2692 "objc-parse.y"
+#line 2701 "objc-parse.y"
 {
                  continue_method_def ();
                ;
     break;}
 case 473:
-#line 2696 "objc-parse.y"
+#line 2705 "objc-parse.y"
 {
                  finish_method_def ();
                  objc_method_context = NULL_TREE;
                ;
     break;}
 case 474:
-#line 2702 "objc-parse.y"
+#line 2711 "objc-parse.y"
 {
                  remember_protocol_qualifiers ();
                  if (objc_implementation_context)
@@ -4743,7 +4756,7 @@ case 474:
                ;
     break;}
 case 475:
-#line 2710 "objc-parse.y"
+#line 2719 "objc-parse.y"
 {
                  forget_protocol_qualifiers ();
                  add_instance_method (objc_implementation_context, yyvsp[0].ttype);
@@ -4752,28 +4765,28 @@ case 475:
                ;
     break;}
 case 476:
-#line 2717 "objc-parse.y"
+#line 2726 "objc-parse.y"
 {
                  continue_method_def ();
                ;
     break;}
 case 477:
-#line 2721 "objc-parse.y"
+#line 2730 "objc-parse.y"
 {
                  finish_method_def ();
                  objc_method_context = NULL_TREE;
                ;
     break;}
 case 479:
-#line 2733 "objc-parse.y"
+#line 2742 "objc-parse.y"
 {yyval.ttype = NULL_TREE; ;
     break;}
 case 484:
-#line 2740 "objc-parse.y"
+#line 2749 "objc-parse.y"
 {yyval.ttype = NULL_TREE; ;
     break;}
 case 488:
-#line 2750 "objc-parse.y"
+#line 2759 "objc-parse.y"
 {
                  /* Remember protocol qualifiers in prototypes.  */
                  remember_protocol_qualifiers ();
@@ -4781,7 +4794,7 @@ case 488:
                ;
     break;}
 case 489:
-#line 2756 "objc-parse.y"
+#line 2765 "objc-parse.y"
 {
                  /* Forget protocol qualifiers here.  */
                  forget_protocol_qualifiers ();
@@ -4789,7 +4802,7 @@ case 489:
                ;
     break;}
 case 491:
-#line 2764 "objc-parse.y"
+#line 2773 "objc-parse.y"
 {
                  /* Remember protocol qualifiers in prototypes.  */
                  remember_protocol_qualifiers ();
@@ -4797,7 +4810,7 @@ case 491:
                ;
     break;}
 case 492:
-#line 2770 "objc-parse.y"
+#line 2779 "objc-parse.y"
 {
                  /* Forget protocol qualifiers here.  */
                  forget_protocol_qualifiers ();
@@ -4805,94 +4818,94 @@ case 492:
                ;
     break;}
 case 494:
-#line 2780 "objc-parse.y"
+#line 2789 "objc-parse.y"
 {
                  yyval.ttype = build_method_decl (objc_inherit_code, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE);
                ;
     break;}
 case 495:
-#line 2785 "objc-parse.y"
+#line 2794 "objc-parse.y"
 {
                  yyval.ttype = build_method_decl (objc_inherit_code, NULL_TREE, yyvsp[0].ttype, NULL_TREE);
                ;
     break;}
 case 496:
-#line 2790 "objc-parse.y"
+#line 2799 "objc-parse.y"
 {
                  yyval.ttype = build_method_decl (objc_inherit_code, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype);
                ;
     break;}
 case 497:
-#line 2795 "objc-parse.y"
+#line 2804 "objc-parse.y"
 {
                  yyval.ttype = build_method_decl (objc_inherit_code, NULL_TREE, yyvsp[-1].ttype, yyvsp[0].ttype);
                ;
     break;}
 case 506:
-#line 2825 "objc-parse.y"
+#line 2834 "objc-parse.y"
 { current_declspecs = TREE_VALUE (declspec_stack);
                  prefix_attributes = TREE_PURPOSE (declspec_stack);
                  declspec_stack = TREE_CHAIN (declspec_stack);
                  resume_momentary (yyvsp[-2].itype); ;
     break;}
 case 507:
-#line 2830 "objc-parse.y"
+#line 2839 "objc-parse.y"
 { shadow_tag (yyvsp[-1].ttype); ;
     break;}
 case 508:
-#line 2832 "objc-parse.y"
+#line 2841 "objc-parse.y"
 { pedwarn ("empty declaration"); ;
     break;}
 case 509:
-#line 2837 "objc-parse.y"
+#line 2846 "objc-parse.y"
 { push_parm_decl (yyvsp[0].ttype); ;
     break;}
 case 510:
-#line 2839 "objc-parse.y"
+#line 2848 "objc-parse.y"
 { push_parm_decl (yyvsp[0].ttype); ;
     break;}
 case 511:
-#line 2847 "objc-parse.y"
+#line 2856 "objc-parse.y"
 { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
                                                         yyvsp[-1].ttype),
                                        build_tree_list (prefix_attributes,
                                                         yyvsp[0].ttype)); ;
     break;}
 case 512:
-#line 2852 "objc-parse.y"
+#line 2861 "objc-parse.y"
 { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
                                                         yyvsp[-1].ttype),
                                        build_tree_list (prefix_attributes,
                                                         yyvsp[0].ttype)); ;
     break;}
 case 513:
-#line 2857 "objc-parse.y"
+#line 2866 "objc-parse.y"
 { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
                                                         yyvsp[-1].ttype),
                                        build_tree_list (prefix_attributes,
                                                         yyvsp[0].ttype)); ;
     break;}
 case 514:
-#line 2865 "objc-parse.y"
+#line 2874 "objc-parse.y"
 {
                  yyval.ttype = NULL_TREE;
                ;
     break;}
 case 515:
-#line 2869 "objc-parse.y"
+#line 2878 "objc-parse.y"
 {
                  /* oh what a kludge! */
                  yyval.ttype = (tree)1;
                ;
     break;}
 case 516:
-#line 2874 "objc-parse.y"
+#line 2883 "objc-parse.y"
 {
                  pushlevel (0);
                ;
     break;}
 case 517:
-#line 2878 "objc-parse.y"
+#line 2887 "objc-parse.y"
 {
                  /* returns a tree list node generated by get_parm_info */
                  yyval.ttype = yyvsp[0].ttype;
@@ -4900,119 +4913,119 @@ case 517:
                ;
     break;}
 case 520:
-#line 2893 "objc-parse.y"
+#line 2902 "objc-parse.y"
 {
                  yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype);
                ;
     break;}
 case 525:
-#line 2906 "objc-parse.y"
+#line 2915 "objc-parse.y"
 { yyval.ttype = get_identifier (token_buffer); ;
     break;}
 case 526:
-#line 2907 "objc-parse.y"
+#line 2916 "objc-parse.y"
 { yyval.ttype = get_identifier (token_buffer); ;
     break;}
 case 527:
-#line 2908 "objc-parse.y"
+#line 2917 "objc-parse.y"
 { yyval.ttype = get_identifier (token_buffer); ;
     break;}
 case 528:
-#line 2909 "objc-parse.y"
+#line 2918 "objc-parse.y"
 { yyval.ttype = get_identifier (token_buffer); ;
     break;}
 case 529:
-#line 2910 "objc-parse.y"
+#line 2919 "objc-parse.y"
 { yyval.ttype = get_identifier (token_buffer); ;
     break;}
 case 530:
-#line 2911 "objc-parse.y"
+#line 2920 "objc-parse.y"
 { yyval.ttype = get_identifier (token_buffer); ;
     break;}
 case 531:
-#line 2912 "objc-parse.y"
+#line 2921 "objc-parse.y"
 { yyval.ttype = get_identifier (token_buffer); ;
     break;}
 case 532:
-#line 2913 "objc-parse.y"
+#line 2922 "objc-parse.y"
 { yyval.ttype = get_identifier (token_buffer); ;
     break;}
 case 533:
-#line 2914 "objc-parse.y"
+#line 2923 "objc-parse.y"
 { yyval.ttype = get_identifier (token_buffer); ;
     break;}
 case 534:
-#line 2915 "objc-parse.y"
+#line 2924 "objc-parse.y"
 { yyval.ttype = get_identifier (token_buffer); ;
     break;}
 case 535:
-#line 2916 "objc-parse.y"
+#line 2925 "objc-parse.y"
 { yyval.ttype = get_identifier (token_buffer); ;
     break;}
 case 536:
-#line 2917 "objc-parse.y"
+#line 2926 "objc-parse.y"
 { yyval.ttype = get_identifier (token_buffer); ;
     break;}
 case 537:
-#line 2918 "objc-parse.y"
+#line 2927 "objc-parse.y"
 { yyval.ttype = get_identifier (token_buffer); ;
     break;}
 case 538:
-#line 2919 "objc-parse.y"
+#line 2928 "objc-parse.y"
 { yyval.ttype = get_identifier (token_buffer); ;
     break;}
 case 539:
-#line 2920 "objc-parse.y"
+#line 2929 "objc-parse.y"
 { yyval.ttype = get_identifier (token_buffer); ;
     break;}
 case 540:
-#line 2921 "objc-parse.y"
+#line 2930 "objc-parse.y"
 { yyval.ttype = get_identifier (token_buffer); ;
     break;}
 case 541:
-#line 2922 "objc-parse.y"
+#line 2931 "objc-parse.y"
 { yyval.ttype = get_identifier (token_buffer); ;
     break;}
 case 542:
-#line 2923 "objc-parse.y"
+#line 2932 "objc-parse.y"
 { yyval.ttype = get_identifier (token_buffer); ;
     break;}
 case 543:
-#line 2924 "objc-parse.y"
+#line 2933 "objc-parse.y"
 { yyval.ttype = get_identifier (token_buffer); ;
     break;}
 case 546:
-#line 2930 "objc-parse.y"
+#line 2939 "objc-parse.y"
 {
                  yyval.ttype = build_keyword_decl (yyvsp[-5].ttype, yyvsp[-2].ttype, yyvsp[0].ttype);
                ;
     break;}
 case 547:
-#line 2935 "objc-parse.y"
+#line 2944 "objc-parse.y"
 {
                  yyval.ttype = build_keyword_decl (yyvsp[-2].ttype, NULL_TREE, yyvsp[0].ttype);
                ;
     break;}
 case 548:
-#line 2940 "objc-parse.y"
+#line 2949 "objc-parse.y"
 {
                  yyval.ttype = build_keyword_decl (NULL_TREE, yyvsp[-2].ttype, yyvsp[0].ttype);
                ;
     break;}
 case 549:
-#line 2945 "objc-parse.y"
+#line 2954 "objc-parse.y"
 {
                  yyval.ttype = build_keyword_decl (NULL_TREE, NULL_TREE, yyvsp[0].ttype);
                ;
     break;}
 case 553:
-#line 2958 "objc-parse.y"
+#line 2967 "objc-parse.y"
 {
                  yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype);
                ;
     break;}
 case 554:
-#line 2966 "objc-parse.y"
+#line 2975 "objc-parse.y"
 {
                  if (TREE_CHAIN (yyvsp[0].ttype) == NULL_TREE)
                    /* just return the expr., remove a level of indirection */
@@ -5023,69 +5036,69 @@ case 554:
                ;
     break;}
 case 555:
-#line 2978 "objc-parse.y"
+#line 2987 "objc-parse.y"
 {
                  yyval.ttype = build_tree_list (yyvsp[-2].ttype, yyvsp[0].ttype);
                ;
     break;}
 case 556:
-#line 2982 "objc-parse.y"
+#line 2991 "objc-parse.y"
 {
                  yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype);
                ;
     break;}
 case 558:
-#line 2990 "objc-parse.y"
+#line 2999 "objc-parse.y"
 {
                  yyval.ttype = get_class_reference (yyvsp[0].ttype);
                ;
     break;}
 case 559:
-#line 2997 "objc-parse.y"
+#line 3006 "objc-parse.y"
 { objc_receiver_context = 1; ;
     break;}
 case 560:
-#line 2999 "objc-parse.y"
+#line 3008 "objc-parse.y"
 { objc_receiver_context = 0; ;
     break;}
 case 561:
-#line 3001 "objc-parse.y"
+#line 3010 "objc-parse.y"
 {
                  yyval.ttype = build_tree_list (yyvsp[-3].ttype, yyvsp[-1].ttype);
                ;
     break;}
 case 565:
-#line 3014 "objc-parse.y"
+#line 3023 "objc-parse.y"
 {
                  yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype);
                ;
     break;}
 case 566:
-#line 3021 "objc-parse.y"
+#line 3030 "objc-parse.y"
 {
                  yyval.ttype = build_tree_list (yyvsp[-1].ttype, NULL_TREE);
                ;
     break;}
 case 567:
-#line 3025 "objc-parse.y"
+#line 3034 "objc-parse.y"
 {
                  yyval.ttype = build_tree_list (NULL_TREE, NULL_TREE);
                ;
     break;}
 case 568:
-#line 3032 "objc-parse.y"
+#line 3041 "objc-parse.y"
 {
                  yyval.ttype = yyvsp[-1].ttype;
                ;
     break;}
 case 569:
-#line 3039 "objc-parse.y"
+#line 3048 "objc-parse.y"
 {
                  yyval.ttype = yyvsp[-1].ttype;
                ;
     break;}
 case 570:
-#line 3048 "objc-parse.y"
+#line 3057 "objc-parse.y"
 {
                  yyval.ttype = groktypename (yyvsp[-1].ttype);
                ;
@@ -5288,5 +5301,5 @@ yyerrhandle:
   yystate = yyn;
   goto yynewstate;
 }
-#line 3053 "objc-parse.y"
+#line 3062 "objc-parse.y"
 
index f22926f2d2c5b9eb1e27d5f5b826b06b0fa4b298..24d39f0ae463e9374a8c84c7771a15fefcffa46b 100644 (file)
@@ -28,7 +28,7 @@ Boston, MA 02111-1307, USA.  */
 /* To whomever it may concern: I have heard that such a thing was once
    written by AT&T, but I have never seen it.  */
 
-%expect 73
+%expect 74
 
 %{
 #include "config.h"
@@ -1537,12 +1537,21 @@ component_decl:
                  prefix_attributes = TREE_PURPOSE (declspec_stack);
                  declspec_stack = TREE_CHAIN (declspec_stack);
                  resume_momentary ($2); }
-       | typed_typespecs
-               { if (pedantic)
-                   pedwarn ("ANSI C forbids member declarations with no members");
-                 shadow_tag($1);
-                 $$ = NULL_TREE; }
-       | nonempty_type_quals setspecs components
+       | typed_typespecs setspecs save_filename save_lineno maybe_attribute
+               {
+                 /* Support for unnamed structs or unions as members of 
+                    structs or unions (which is [a] useful and [b] supports 
+                    MS P-SDK).  */
+                 if (pedantic)
+                   pedwarn ("ANSI C doesn't support unnamed structs/unions");
+
+                 $$ = grokfield($3, $4, NULL, current_declspecs, NULL_TREE);
+                 current_declspecs = TREE_VALUE (declspec_stack);
+                 prefix_attributes = TREE_PURPOSE (declspec_stack);
+                 declspec_stack = TREE_CHAIN (declspec_stack);
+                 resume_momentary ($2);
+               }
+    | nonempty_type_quals setspecs components
                { $$ = $3;
                  current_declspecs = TREE_VALUE (declspec_stack);
                  prefix_attributes = TREE_PURPOSE (declspec_stack);