[project @ 1996-01-18 16:33:17 by partain]
[ghc-hetmet.git] / ghc / compiler / yaccParser / hslexer.c
index 768b8a2..f7fd94c 100644 (file)
@@ -1,7 +1,7 @@
 /* A lexical scanner generated by flex */
 
 /* Scanner skeleton version:
- * $Header: /srv/cvs/cvs.haskell.org/fptools/ghc/compiler/yaccParser/Attic/hslexer.c,v 1.2 1996/01/12 11:36:07 partain Exp $
+ * $Header: /srv/cvs/cvs.haskell.org/fptools/ghc/compiler/yaccParser/Attic/hslexer.c,v 1.3 1996/01/18 16:36:38 partain Exp $
  */
 
 #define FLEX_SCANNER
@@ -281,102 +281,102 @@ static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
        *yy_cp = '\0'; \
        yy_c_buf_p = yy_cp;
 
-#define YY_NUM_RULES 201
-#define YY_END_OF_BUFFER 202
-static yyconst short int yy_accept[836] =
+#define YY_NUM_RULES 202
+#define YY_END_OF_BUFFER 203
+static yyconst short int yy_accept[837] =
     {   0,
-        0,    0,    0,    0,    0,    0,    0,    0,  190,  190,
+        0,    0,    0,    0,    0,    0,    0,    0,  191,  191,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      202,  196,  197,  129,  128,  136,  198,  141,  184,  198,
-      198,  198,  198,  198,  198,  198,  198,  198,  198,  198,
-      198,  198,  198,  139,  198,  150,  152,  160,  156,  198,
-      162,  154,  158,  198,  188,  121,  132,  126,   91,   92,
-       97,   84,  104,  121,  110,  110,  121,   83,  121,   86,
-       98,  120,   93,   99,   94,  101,  102,  120,  120,  120,
-      120,  120,  120,  120,  120,  120,  120,  120,   95,   85,
-       96,  103,  121,  190,  195,  195,  132,  126,  104,  110,
-
-      110,  120,  101,  102,  120,  120,  120,  120,  120,  120,
-      120,  120,  120,  120,  120,  188,  126,  121,  110,  196,
-      120,  120,  120,  120,  120,   95,  121,  121,  121,  196,
-      196,  120,  120,  196,  199,  135,  134,  138,  200,  188,
-      141,  200,  184,  200,  200,  200,  200,  200,  200,  200,
-      200,  200,  200,  200,  200,  200,  200,  140,  200,  150,
-      152,  160,  156,  200,  162,  154,  158,  200,  200,  129,
-      128,  127,  184,    0,    0,  151,    0,  161,    0,    0,
-        0,  174,    0,    0,    0,    0,  159,  177,  178,  153,
-      155,    0,    0,  179,  164,  163,  181,    0,    0,    0,
-
-      180,  157,  183,  185,  186,  188,  121,  132,  131,  126,
-      125,  187,   88,   82,    0,  110,    0,    0,   90,   87,
-       89,  120,  119,    0,  119,  120,  120,  120,  120,  120,
-      120,   60,  120,   74,  120,  120,   68,  120,  120,   71,
-      120,  120,  189,    0,    0,  190,  191,    0,  194,  192,
-      193,    0,  132,  131,  126,    0,    0,  109,    0,  110,
-        0,    0,  118,  120,  119,    0,    0,  120,  120,  120,
-      120,  120,  120,   60,  120,   74,  120,  120,   68,  120,
-      120,   71,  120,  120,    0,  126,    0,  110,    0,    0,
-        0,  119,  119,  119,  119,  119,  119,  119,  119,  119,
-
-      119,  119,  119,  119,  119,  119,  119,    0,  120,  120,
-       74,  120,   68,  189,    0,  120,  135,  134,  133,  137,
-      148,  149,  173,  166,  167,  168,  169,  182,  165,  147,
-      146,  176,  172,  145,  170,  142,  143,  144,  175,  171,
-      126,  124,  187,  187,  187,  187,  113,  106,  108,  119,
-      119,  120,  120,  120,  120,  120,  120,  120,  120,  120,
-      120,  120,   75,  120,  120,  120,  120,  120,    0,    0,
-        1,    1,    0,  130,  124,    0,    0,  113,  106,  108,
-      119,  119,    0,    0,    0,  120,  120,  120,  120,  120,
-      120,  120,  120,  120,  120,  120,   75,  120,  120,  120,
-
-      120,  120,    0,    0,    0,   18,   19,    0,  119,  119,
-      119,  119,   12,  119,  119,  119,  119,  119,  119,   17,
-      119,   15,  119,  119,  119,   11,  119,  119,    6,  119,
-      119,  119,  119,   14,  119,  119,  119,   13,  119,  119,
-      117,  120,   75,   52,  187,    0,  119,   53,  120,   55,
-      120,  120,   58,  120,  120,  120,  120,  120,  120,  120,
-       70,   72,  120,    0,    0,    0,    0,    0,    0,    0,
-        0,  123,    0,    0,  112,    0,  105,  107,  119,  119,
-      122,    0,   53,  120,   55,  120,  120,   58,  120,  120,
-      120,  120,  120,  120,  120,   70,   72,  120,   46,    0,
-
-      100,  119,  119,  119,  119,  119,  119,  119,  119,  119,
-      119,  119,  119,  119,  119,  119,   16,  119,    7,  119,
-      119,  119,  119,  119,  119,  119,  119,  119,  119,  119,
-      119,  117,   53,    0,  113,   80,   54,  120,  120,  120,
-      120,   62,  120,  120,  120,  120,   73,    0,    0,    0,
-        0,    0,    0,    0,    0,  111,    0,  113,  119,  119,
-      114,   54,  120,  120,  120,  120,   62,  120,  120,  120,
-      120,   73,    0,    0,  119,   22,  119,  119,   20,  119,
-      119,  119,  119,  119,  119,  119,  119,  119,  119,  119,
-      115,  119,  119,  119,  119,  119,  119,  119,  119,  119,
-
-      119,  119,  119,  120,  120,   59,   61,   63,   64,  120,
-      120,   67,  120,    0,    0,    0,    0,    0,    0,    0,
-        0,   78,  119,  120,  120,   59,   61,   63,   64,  120,
-      120,   67,  120,  119,  119,  119,  119,  119,  119,   35,
-      119,   36,  119,  119,  119,  119,   34,  119,  119,   40,
-      119,   23,  119,  119,   38,  116,  119,  119,   39,  119,
-       56,  120,  120,  120,  120,    0,    0,    0,    0,    0,
-        0,    0,    0,    2,    2,  119,   76,   56,  120,  120,
-      120,  120,  119,  119,  119,  119,  119,  119,  119,  119,
-      119,  119,  119,  119,  119,  119,   33,  119,   21,  119,
-
-      119,   57,   65,  120,   69,    0,    0,    0,    0,    0,
-        0,    0,  119,  119,   57,   65,  120,   69,  119,  119,
-       41,  119,   32,   37,  119,  119,  119,  119,   25,  119,
-      119,  119,  119,  119,  119,  119,   81,   66,    0,    0,
-        0,    0,   48,    0,    0,   79,  119,   66,  119,  119,
-       29,  119,   30,   31,   42,   43,   44,   45,  119,  119,
-      119,   28,    0,    0,    0,    0,    0,    0,    0,   77,
-        8,  119,    9,   24,  119,  119,    0,    0,   51,   50,
-        0,    0,  119,  119,  119,    0,    3,    3,    0,    0,
-      119,  119,   10,    0,    0,   47,  119,  119,    0,    0,
-
-       27,  119,    5,    0,  119,    0,    0,  119,    0,    0,
-      119,    0,   49,   26,    0,    0,    0,    0,    0,    0,
+      203,  197,  198,  130,  129,  137,  199,  142,  185,  199,
+      199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
+      199,  199,  199,  140,  199,  151,  153,  161,  157,  199,
+      163,  155,  159,  199,  189,  122,  133,  127,   92,   93,
+       98,   85,  105,  122,  111,  111,  122,   84,  122,   87,
+       99,  121,   94,  100,   95,  102,  103,  121,  121,  121,
+      121,  121,  121,  121,  121,  121,  121,  121,   96,   86,
+       97,  104,  122,  191,  196,  196,  133,  127,  105,  111,
+
+      111,  121,  102,  103,  121,  121,  121,  121,  121,  121,
+      121,  121,  121,  121,  121,  189,  127,  122,  111,  197,
+      121,  121,  121,  121,  121,   96,  122,  122,  122,  197,
+      197,  121,  121,  197,  200,  136,  135,  139,  201,  189,
+      142,  201,  185,  201,  201,  201,  201,  201,  201,  201,
+      201,  201,  201,  201,  201,  201,  201,  141,  201,  151,
+      153,  161,  157,  201,  163,  155,  159,  201,  201,  130,
+      129,  128,  185,    0,    0,  152,    0,  162,    0,    0,
+        0,  175,    0,    0,    0,    0,  160,  178,  179,  154,
+      156,    0,    0,  180,  165,  164,  182,    0,    0,    0,
+
+      181,  158,  184,  186,  187,  189,  122,  133,  132,  127,
+      126,  188,   89,   83,    0,  111,    0,    0,   91,   88,
+       90,  121,  120,    0,  120,  121,  121,  121,  121,  121,
+      121,   61,  121,   75,  121,  121,   69,  121,  121,   72,
+      121,  121,  190,    0,    0,  191,  192,    0,  195,  193,
+      194,    0,  133,  132,  127,    0,    0,  110,    0,  111,
+        0,    0,  119,  121,  120,    0,    0,  121,  121,  121,
+      121,  121,  121,   61,  121,   75,  121,  121,   69,  121,
+      121,   72,  121,  121,    0,  127,    0,  111,    0,    0,
+        0,  120,  120,  120,  120,  120,  120,  120,  120,  120,
+
+      120,  120,  120,  120,  120,  120,  120,    0,  121,  121,
+       75,  121,   69,  190,    0,  121,  136,  135,  134,  138,
+      149,  150,  174,  167,  168,  169,  170,  183,  166,  148,
+      147,  177,  173,  146,  171,  143,  144,  145,  176,  172,
+      127,  125,  188,  188,  188,  188,  114,  107,  109,  120,
+      120,  121,  121,  121,  121,  121,  121,  121,  121,  121,
+      121,  121,   76,  121,  121,  121,  121,  121,    0,    0,
+        1,    1,    0,  131,  125,    0,    0,  114,  107,  109,
+      120,  120,    0,    0,    0,  121,  121,  121,  121,  121,
+      121,  121,  121,  121,  121,  121,   76,  121,  121,  121,
+
+      121,  121,    0,    0,    0,   18,   19,    0,  120,  120,
+      120,  120,   12,  120,  120,  120,  120,  120,  120,   17,
+      120,   15,  120,  120,  120,   11,  120,  120,    6,  120,
+      120,  120,  120,   14,  120,  120,  120,   13,  120,  120,
+      118,  121,   76,   53,  188,    0,  120,   54,  121,   56,
+      121,  121,   59,  121,  121,  121,  121,  121,  121,  121,
+       71,   73,  121,    0,    0,   52,   52,   52,   52,   52,
+       52,    0,  124,    0,    0,  113,    0,  106,  108,  120,
+      120,  123,    0,   54,  121,   56,  121,  121,   59,  121,
+      121,  121,  121,  121,  121,  121,   71,   73,  121,   46,
+
+        0,  101,  120,  120,  120,  120,  120,  120,  120,  120,
+      120,  120,  120,  120,  120,  120,  120,   16,  120,    7,
+      120,  120,  120,  120,  120,  120,  120,  120,  120,  120,
+      120,  120,  118,   54,    0,  114,   81,   55,  121,  121,
+      121,  121,   63,  121,  121,  121,  121,   74,   52,   52,
+       52,   52,   52,   52,   52,    0,  112,    0,  114,  120,
+      120,  115,   55,  121,  121,  121,  121,   63,  121,  121,
+      121,  121,   74,    0,    0,  120,   22,  120,  120,   20,
+      120,  120,  120,  120,  120,  120,  120,  120,  120,  120,
+      120,  116,  120,  120,  120,  120,  120,  120,  120,  120,
+
+      120,  120,  120,  120,  121,  121,   60,   62,   64,   65,
+      121,  121,   68,  121,   52,   52,   52,   52,   52,   52,
+       52,    0,   79,  120,  121,  121,   60,   62,   64,   65,
+      121,  121,   68,  121,  120,  120,  120,  120,  120,  120,
+       35,  120,   36,  120,  120,  120,  120,   34,  120,  120,
+       40,  120,   23,  120,  120,   38,  117,  120,  120,   39,
+      120,   57,  121,  121,  121,  121,   52,   52,   52,   52,
+       52,   52,   52,    0,    2,    2,  120,   77,   57,  121,
+      121,  121,  121,  120,  120,  120,  120,  120,  120,  120,
+      120,  120,  120,  120,  120,  120,  120,   33,  120,   21,
+
+      120,  120,   58,   66,  121,   70,   52,   52,   52,   52,
+       52,   52,   52,  120,  120,   58,   66,  121,   70,  120,
+      120,   41,  120,   32,   37,  120,  120,  120,  120,   25,
+      120,  120,  120,  120,  120,  120,  120,   82,   67,   52,
+        0,   52,   52,   48,   52,   52,   80,  120,   67,  120,
+      120,   29,  120,   30,   31,   42,   43,   44,   45,  120,
+      120,  120,   28,   52,    0,    0,   52,   52,   52,   52,
+       78,    8,  120,    9,   24,  120,  120,   52,    0,   51,
+       50,   52,   52,  120,  120,  120,   52,    3,    3,   52,
+       52,  120,  120,   10,   52,   52,   47,  120,  120,   52,
+
+       52,   27,  120,    5,   52,  120,    0,   52,  120,    0,
+       52,  120,    0,   49,   26,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    4,    0
+        0,    0,    0,    0,    4,    0
     } ;
 
 static yyconst int yy_ec[256] =
@@ -413,227 +413,227 @@ static yyconst int yy_ec[256] =
 
 static yyconst int yy_meta[92] =
     {   0,
-        1,    1,    2,    1,    3,    4,    3,    5,    6,    4,
-        4,    7,    3,    3,    4,    3,    8,    4,    4,    9,
-        9,    9,    9,    9,    9,    9,    4,    3,    4,    4,
-        4,   10,   11,   11,   11,   11,   11,   11,   12,   12,
-       12,   12,   12,   12,   12,   12,   12,   12,   12,   12,
-       12,   12,   12,   12,   12,   12,   12,   12,   13,   14,
-       13,   10,   15,   16,   17,   17,   17,   17,   17,   17,
-       18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
-       18,   18,   18,   18,   18,   18,   18,   19,    4,   20,
-        4
+        1,    2,    3,    2,    4,    5,    6,    7,    8,    5,
+        5,    9,    6,    6,    5,    6,   10,    5,    5,   11,
+       11,   11,   11,   11,   11,   11,    5,    6,    5,    5,
+        5,   12,   13,   13,   13,   13,   13,   13,   14,   14,
+       14,   14,   14,   14,   14,   14,   14,   14,   14,   14,
+       14,   14,   14,   14,   14,   14,   14,   14,   15,   16,
+       15,   12,   17,   18,   19,   19,   19,   19,   19,   19,
+       20,   20,   20,   20,   20,   20,   20,   20,   20,   20,
+       20,   20,   20,   20,   20,   20,   20,   21,    5,   22,
+        5
 
     } ;
 
-static yyconst short int yy_base[879] =
+static yyconst short int yy_base[881] =
     {   0,
-        0,    0,    0,    4,   58,  138,  224, 2188,    0,    1,
-      315, 2187,  402,    0,  487,    0,   25,   39,  578,    0,
-     2194, 2197, 2197, 2181, 2184, 2197, 2197, 2197,   13, 2156,
-        7,   12,   12,   21,   10, 2139, 2137, 2150,   18, 2136,
-       69, 2135, 2133, 2197,    0, 2197, 2197, 2197, 2197,    0,
-     2197, 2197, 2197,    0,   50,    0, 2177, 2171, 2197, 2197,
-        0, 2197,   46, 2164,  131,  415, 2154, 2197, 2163, 2148,
-        0,    0, 2197,    0, 2197,    6, 2197,   11,   36, 2103,
-     2104,   30, 2107, 2097, 2104, 2104,   47, 2100, 2154,    0,
-     2197,    0,   52,    0,   13,    2, 2163, 2157,  425,  662,
-
-      506, 2160,   66, 2103,   66,  452,  105,    2,  129,  124,
+        0,    0,    0,    4,   58,  138,  224, 2450,    0,    1,
+      315, 2449,  402,    0,  487,    0,   25,   39,  578,    0,
+     2456, 2459, 2459, 2443, 2446, 2459, 2459, 2459,   13, 2418,
+        7,   12,   12,   21,   10, 2401, 2399, 2412,   18, 2398,
+       69, 2397, 2395, 2459,    0, 2459, 2459, 2459, 2459,    0,
+     2459, 2459, 2459,    0,   50,    0, 2439, 2433, 2459, 2459,
+        0, 2459,   46, 2426,  131,  415, 2416, 2459, 2425, 2410,
+        0,    0, 2459,    0, 2459,    6, 2459,   11,   36, 2365,
+     2366,   30, 2369, 2359, 2366, 2366,   47, 2362, 2416,    0,
+     2459,    0,   52,    0,   13,    2, 2425, 2419,  425,  662,
+
+      506, 2422,   66, 2365,   66,  452,  105,    2,  129,  124,
       107,  131,  138,  663,   42,  407,    0,  148,  515,  745,
-        5,  158,  421,  449,  455, 2149,    0, 2148, 2133, 2100,
-     2098,  122,  135, 2144, 2197, 2153, 2151, 2147, 2197,  192,
-     2197, 2140,  652, 2121,  132,  169,  417,  497,  370, 2104,
-     2102, 2115,  137, 2101,  648, 2100, 2098, 2197,    0, 2197,
-     2197, 2197, 2197,  686, 2197, 2197, 2197,    0, 2132, 2136,
-     2139, 2197,  692, 2103, 2101, 2197, 2098, 2197,  669, 2099,
-     2105, 2197, 2092, 2088, 2104,  410, 2197, 2197, 2197, 2197,
-     2197, 2095, 2093, 2197, 2197, 2096, 2197, 2079, 2100, 2087,
-
-     2197, 2197, 2197,  699,    0,  723,    0, 2125, 2197, 2119,
-     2197,  727,    0,    0,  734,  745,  722,    0,    0, 2197,
-        0,    0,    0, 2067, 2062, 2047, 2062, 2044,  141, 2044,
-     2056,    0, 2044,  464, 2040, 2053,    0, 2043, 2050,    0,
-     2039, 2048, 2108,  210, 2042,    0,    0, 2097, 2197,    0,
-     2197, 2025, 2105, 2103, 2098,  796,  815, 2197,  822,  841,
-      752,    0, 2197, 2101,  114, 2100,    0,  410,  435,  424,
-      488,  489,  454, 2099,  495,  725,  484,  493, 2098,  726,
-      451, 2097,  673,  730, 2087, 2091,  830,  863, 2039, 2038,
-     2040,  846,  524,  772, 2036, 2060, 2034, 2059,  699,  738,
-
-     2045, 2044,  843,  641,  501, 2043, 2014,    0,  694,  819,
-      821,  823,  849, 2197, 2001,  753, 2083, 2081, 2197, 2197,
-     2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197,
-     2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197, 2197,
-     2076, 2197,  873,  893,  899,  908,  894,  901,    0,    0,
-     2020, 2017, 2004, 2019, 2018, 2009, 2012, 2007, 2001, 2005,
-     1995, 2007,    0, 1992, 2009, 1996, 2003, 1991,  925,  865,
-     2197,  869, 1993, 2197, 2061,  912,    0,  930,  957, 2060,
-     1986, 2001, 2001, 2056, 2051,  899,  779,  884,  931,  797,
-      900,  932,  671,  933,  934,  935, 2054,  936,  937,  816,
-
-      938,  731, 1971, 2052,  963, 2197, 2197, 1996, 2007,  918,
-     2009, 2004,    0, 2017, 2008, 2015, 1999, 2016, 2002,    0,
-     1986,    0, 1996, 1995, 1983,    0,  928,  897,    0, 2004,
-      953, 1993, 2006,    0, 1994, 2008, 2003,    0, 1996, 1958,
-        0,  966,  984, 2197, 1006, 1000, 1974,    0, 1955,    0,
-     1952, 1950,    0, 1956, 1952, 1945, 1965, 1949, 1953, 1951,
-        0,    0, 1957, 1025, 1036, 1991, 1987, 1977, 1989, 1973,
-     1951, 2197, 1023, 2011, 2010, 1068, 2197, 2197, 1941, 1941,
-     2197, 2003, 2006,  956, 2005,  951,  987, 2004,  990,  993,
-      696,  989, 1004, 1025, 1006, 2003, 2002,  995, 2197, 1081,
-
-     2197, 1957, 1945, 1944, 1973, 1942, 1957, 1940, 1951,  408,
-     1955, 1948, 1963, 1965, 1947, 1956,    0, 1932,    0, 1957,
-     1957, 1953, 1947, 1945, 1952, 1953, 1924, 1938, 1935, 1934,
-     1918,    0, 1041, 1088, 1095,    0,    0, 1907, 1908, 1909,
-     1897,  938, 1901, 1907, 1907, 1902,    0, 1934, 1932, 1921,
-     1933, 1926, 1930, 1931, 1962, 2197, 1102, 1121, 1903, 1890,
-     2197, 1956, 1055, 1060, 1028, 1049, 1057, 1071,  140, 1066,
-     1078, 1955, 1132, 1141, 1912,    0, 1925, 1903,    0, 1896,
-     1923, 1905, 1893, 1905, 1891, 1890, 1889, 1901, 1913, 1886,
-        0, 1900, 1910, 1883, 1892, 1881, 1899, 1015, 1148, 1894,
-
-     1878, 1877, 1864, 1856, 1860,    0,    0,    0,    0, 1869,
-     1870,    0, 1857, 1898, 1886, 1879, 1883, 1888, 1887, 1892,
-     1048, 1887, 1862, 1052, 1128, 1916, 1915, 1914, 1913, 1130,
-     1131, 1912, 1132, 1886, 1877, 1866, 1881, 1880, 1869,    0,
-     1876,    0, 1877, 1876, 1871, 1874,    0, 1845, 1869,    0,
-     1870,    0, 1842, 1871,    0, 1155, 1840, 1867,    0, 1826,
-        0, 1829, 1830, 1831, 1826, 1833, 1858, 1844, 1825, 1805,
-     1814, 1807, 1156, 2197, 1179, 1810, 1804, 1827, 1142, 1176,
-     1177, 1178, 1786, 1784, 1755, 1780, 1750, 1733, 1736, 1750,
-     1749, 1730, 1716, 1148, 1733, 1732,    0, 1703,    0, 1694,
-
-     1657,    0,    0, 1640,    0, 1631, 1672, 1643, 1636, 1634,
-     1604, 1632, 1601, 1626, 1651, 1623, 1179, 1605, 1547, 1545,
-        0, 1533,    0,    0, 1541, 1528, 1518, 1511,    0, 1503,
-     1502, 1501, 1507, 1494, 1515, 1490,    0,    0, 1501, 1532,
-     1506, 1472, 2197, 1438, 1427,    0, 1397, 1442, 1385, 1396,
-        0, 1379,    0,    0,    0,    0,    0,    0, 1377, 1403,
-     1385,    0, 1401, 1409, 1171, 1356, 1343, 1348, 1352,    0,
-        0, 1328,    0,    0, 1349, 1352, 1334, 1187, 2197, 2197,
-     1222, 1004, 1224, 1223, 1194, 1211, 2197, 1238, 1207, 1216,
-     1217, 1199,    0, 1217, 1203, 2197, 1183, 1192, 1237, 1205,
-
-        0, 1177, 1198, 1197, 1200, 1188, 1187, 1197, 1160, 1172,
-     1147, 1171, 2197,    0, 1157, 1059, 1062, 1024, 1016, 1037,
-      894,  765,  744,  733,  658,  650,  527,  548, 1194, 1201,
-      408,  396,   96, 2197, 2197, 1261, 1281, 1301, 1321, 1341,
-     1359, 1370, 1183, 1382, 1394, 1412, 1426, 1434, 1452, 1472,
-     1492, 1509, 1527, 1543, 1551, 1567, 1583, 1599, 1617, 1637,
-     1184, 1651, 1663, 1681, 1701, 1721, 1739, 1755, 1219, 1771,
-     1789, 1185, 1805, 1821, 1220, 1835, 1853, 1873
+        5,  158,  421,  449,  455, 2411,    0, 2410, 2395, 2362,
+     2360,  122,  135, 2406, 2459, 2415, 2413, 2409, 2459,  192,
+     2459, 2402,  652, 2383,  132,  169,  417,  497,  370, 2366,
+     2364, 2377,  137, 2363,  648, 2362, 2360, 2459,    0, 2459,
+     2459, 2459, 2459,  686, 2459, 2459, 2459,    0, 2394, 2398,
+     2401, 2459,  692, 2365, 2363, 2459, 2360, 2459,  669, 2361,
+     2367, 2459, 2354, 2350, 2366,  410, 2459, 2459, 2459, 2459,
+     2459, 2357, 2355, 2459, 2459, 2358, 2459, 2341, 2362, 2349,
+
+     2459, 2459, 2459,  699,    0,  723,    0, 2387, 2459, 2381,
+     2459,  727,    0,    0,  734,  745,  722,    0,    0, 2459,
+        0,    0,    0, 2329, 2324, 2309, 2324, 2306,  141, 2306,
+     2318,    0, 2306,  464, 2302, 2315,    0, 2305, 2312,    0,
+     2301, 2310, 2370,  210, 2304,    0,    0, 2359, 2459,    0,
+     2459, 2287, 2367, 2365, 2360,  796,  815, 2459,  822,  841,
+      752,    0, 2459, 2363,  114, 2362,    0,  410,  435,  424,
+      488,  489,  454, 2361,  495,  725,  484,  493, 2360,  726,
+      451, 2359,  673,  730, 2349, 2353,  830,  863, 2301, 2300,
+     2302,  846,  524,  772, 2298, 2322, 2296, 2321,  699,  738,
+
+     2307, 2306,  843,  641,  501, 2305, 2276,    0,  694,  819,
+      821,  823,  849, 2459, 2263,  753, 2345, 2343, 2459, 2459,
+     2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459,
+     2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459, 2459,
+     2338, 2459,  873,  893,  899,  908,  894,  901,    0,    0,
+     2282, 2279, 2266, 2281, 2280, 2271, 2274, 2269, 2263, 2267,
+     2257, 2269,    0, 2254, 2271, 2258, 2265, 2253,  925,  865,
+     2459,  869, 2255, 2459, 2323,  912,    0,  930,  957, 2322,
+     2248, 2263, 2263, 2318, 2313,  899,  779,  884,  931,  797,
+      900,  932,  671,  933,  934,  935, 2316,  936,  937,  816,
+
+      938,  731, 2233, 2314,  963, 2459, 2459, 2258, 2269,  918,
+     2271, 2266,    0, 2279, 2270, 2277, 2261, 2278, 2264,    0,
+     2248,    0, 2258, 2257, 2245,    0,  928,  897,    0, 2266,
+      953, 2255, 2268,    0, 2256, 2270, 2265,    0, 2258, 2220,
+        0,  966,  984, 2459, 1006, 1000, 2236,    0, 2217,    0,
+     2214, 2212,    0, 2218, 2214, 2207, 2227, 2211, 2215, 2213,
+        0,    0, 2219, 1025,  660, 1034, 1038, 1042, 1046, 1050,
+     1060, 2218, 2459, 1064, 2278, 2277, 1076, 2459, 2459, 2208,
+     2208, 2459, 2270, 2273,  990, 2272,  951,  989, 2271,  956,
+      987,  995, 1004, 1010, 1005, 1006, 2270, 2269, 1048, 2459,
+
+     1089, 2459, 2224, 2212, 2211, 2240, 2209, 2224, 2207, 2218,
+      408, 2222, 2215, 2230, 2232, 2214, 2223,    0, 2199,    0,
+     2224, 2224, 2220, 2214, 2212, 2219, 2220, 2191, 2205, 2202,
+     2201, 2185,    0, 1051, 1098, 1105,    0,    0, 2174, 2175,
+     2176, 2164, 1057, 2168, 2174, 2174, 2169,    0, 1131, 1136,
+     1140, 1144, 1148, 1154, 1158, 2236, 2459, 1144, 1164, 2177,
+     2164, 2459, 2230, 1099, 1108, 1023,  993, 1146, 1147,  140,
+     1165, 1167, 2229, 1176, 1186, 2186,    0, 2199, 2177,    0,
+     2170, 2197, 2179, 2167, 2179, 2165, 2164, 2163, 2175, 2168,
+     2115,    0, 2128, 2138, 2109, 2117, 2104, 2122, 1142, 1193,
+
+     2115, 2099, 2098, 2085, 2077, 2081,    0,    0,    0,    0,
+     2090, 2091,    0, 2069, 1225, 1233, 1239, 1243, 1247, 1251,
+     1259, 1074, 2092, 2066, 1097, 1195, 2120, 2117, 2115, 2098,
+     1172, 1168, 2087, 1196, 2060, 2051, 2038, 2052, 2050, 2032,
+        0, 2017,    0, 1999, 1988, 1973, 1943,    0, 1913, 1937,
+        0, 1936,    0, 1907, 1933,    0, 1245, 1901, 1928,    0,
+     1885,    0, 1887, 1859, 1842, 1823, 1272, 1278, 1282, 1293,
+     1298, 1302, 1306, 1219, 2459, 1228, 1857, 1852, 1880, 1249,
+     1250, 1251, 1270, 1851, 1841, 1806, 1825, 1796, 1795, 1802,
+     1816, 1815, 1796, 1782, 1271, 1799, 1798,    0, 1772,    0,
+
+     1746, 1696,    0,    0, 1679,    0, 1321, 1325, 1346, 1350,
+     1354, 1358, 1362, 1673, 1699, 1725, 1718, 1305, 1717, 1660,
+     1641,    0, 1616,    0,    0, 1626, 1614, 1612, 1611,    0,
+     1610, 1607, 1593, 1474, 1462, 1483, 1458,    0,    0, 1368,
+     1502, 1373, 1378, 1394, 1398, 1402,    0, 1455, 1495, 1439,
+     1450,    0, 1437,    0,    0,    0,    0,    0,    0, 1436,
+     1459, 1441,    0, 1407, 1464, 1203, 1411, 1420, 1428, 1432,
+        0,    0, 1416,    0,    0, 1436, 1434, 1439, 1435, 1445,
+     1451, 1455, 1462, 1393, 1392, 1357, 1288, 2459, 1400, 1287,
+     1424, 1359, 1338,    0, 1335, 1418, 1334, 1326, 1337, 1440,
+
+     1432,    0, 1321, 1301, 1429, 1305, 1290, 1438, 1296, 1262,
+     1446, 1236, 1252, 1368,    0, 1175, 1140, 1070, 1060, 1037,
+     1052,  894,  765,  744,  733,  741,  650,  527,  548, 1485,
+     1507,  408,  396,   96, 2459, 2459, 1533, 1555, 1577, 1599,
+     1621, 1640, 1651, 1475, 1664, 1677, 1696, 1710, 1718, 1738,
+     1760, 1782, 1800, 1819, 1835, 1843, 1860, 1876, 1893, 1912,
+     1934, 1503, 1948, 1960, 1980, 2002, 2024, 2044, 2061, 1504,
+     2077, 2097, 1297, 2113, 2130, 2151, 1709, 2160, 2180, 2202
     } ;
 
-static yyconst short int yy_def[879] =
+static yyconst short int yy_def[881] =
     {   0,
-      836,  836,  837,  837,  838,  838,  835,    7,  839,  839,
-      835,   11,   11,   13,   11,   15,  840,  840,  835,   19,
-      835,  835,  835,  841,  835,  835,  835,  835,  835,  835,
-      835,  835,  835,  835,  835,  835,  835,  835,  835,  835,
-      835,  835,  835,  835,  842,  835,  835,  835,  835,  835,
-      835,  835,  835,  843,  835,  844,  845,  846,  835,  835,
-      844,  835,  844,  844,  835,  835,  844,  835,  844,  844,
-      844,  847,  835,  844,  835,  848,  835,  847,  847,  847,
-      847,  847,  847,  847,  847,  847,  847,  847,  835,  844,
-      835,  844,  844,  849,  850,  851,  852,  853,  844,  835,
-
-      835,  854,  848,  855,  854,  854,  854,  854,  854,  854,
-      854,  854,  854,  854,  854,  835,  856,   99,  835,  848,
-      857,  857,  857,  857,  857,  835,  844,  844,  844,  848,
-      855,  854,  854,  835,  835,  858,  835,  835,  835,  835,
-      835,  835,  835,  835,  835,  835,  835,  835,  835,  835,
-      835,  835,  835,  835,  835,  835,  835,  835,  842,  835,
-      835,  835,  835,  835,  835,  835,  835,  843,  835,  841,
-      835,  835,  835,  835,  835,  835,  835,  835,  835,  835,
-      835,  835,  835,  835,  835,  835,  835,  835,  835,  835,
-      835,  835,  835,  835,  835,  835,  835,  835,  835,  835,
-
-      835,  835,  835,  835,  843,  835,  844,  845,  835,  859,
-      835,  860,  844,  844,  835,  835,  835,  861,  844,  835,
-      844,  862,  863,  848,  863,  862,  862,  862,  862,  862,
-      862,  862,  862,  862,  862,  862,  862,  862,  862,  862,
-      862,  862,  835,  864,  835,  865,  866,  866,  835,  867,
-      835,  867,  868,  835,  859,  835,  835,  835,  835,  835,
-      835,  869,  835,  854,  863,  870,  871,  854,  854,  854,
-      854,  854,  854,  854,  854,  854,  854,  854,  854,  854,
-      854,  854,  854,  854,  835,  859,  835,  835,  835,  835,
-      835,  863,  863,  863,  863,  863,  863,  863,  863,  863,
-
-      863,  863,  863,  863,  863,  863,  863,  872,  873,  873,
-      873,  873,  873,  835,  835,  854,  874,  835,  835,  835,
-      835,  835,  835,  835,  835,  835,  835,  835,  835,  835,
-      835,  835,  835,  835,  835,  835,  835,  835,  835,  835,
-      859,  835,  860,  860,  835,  860,  835,  835,  861,  863,
-      863,  862,  862,  862,  862,  862,  862,  862,  862,  862,
-      862,  862,  862,  862,  862,  862,  862,  862,  835,  864,
-      835,  864,  835,  835,  835,  835,  875,  835,  835,  869,
-      863,  863,  835,  870,  871,  854,  854,  854,  854,  854,
-      854,  854,  854,  854,  854,  854,  854,  854,  854,  854,
-
-      854,  854,  835,  835,  835,  835,  835,  835,  863,  863,
-      863,  863,  863,  863,  863,  863,  863,  863,  863,  863,
-      863,  863,  863,  863,  863,  863,  863,  863,  863,  863,
-      863,  863,  863,  863,  863,  863,  863,  863,  863,  863,
-      876,  873,  873,  835,  835,  835,  863,  862,  862,  862,
-      862,  862,  862,  862,  862,  862,  862,  862,  862,  862,
-      862,  862,  862,  835,  835,  835,  835,  835,  835,  835,
-      835,  835,  835,  875,  835,  835,  835,  835,  863,  863,
-      835,  835,  854,  854,  854,  854,  854,  854,  854,  854,
-      854,  854,  854,  854,  854,  854,  854,  854,  835,  835,
-
-      835,  863,  863,  863,  863,  863,  863,  863,  863,  863,
-      863,  863,  863,  863,  863,  863,  863,  863,  863,  863,
-      863,  863,  863,  863,  863,  863,  863,  863,  863,  863,
-      863,  876,  873,  835,  835,  863,  862,  862,  862,  862,
-      862,  862,  862,  862,  862,  862,  862,  835,  835,  835,
-      835,  835,  835,  835,  835,  835,  835,  835,  863,  863,
-      835,  854,  854,  854,  854,  854,  854,  854,  854,  854,
-      854,  854,  835,  835,  863,  863,  863,  863,  863,  863,
-      863,  863,  863,  863,  863,  863,  863,  863,  863,  863,
-      863,  863,  863,  863,  863,  863,  863,  863,  863,  863,
+      837,  837,  838,  838,  839,  839,  836,    7,  840,  840,
+      836,   11,   11,   13,   11,   15,  841,  841,  836,   19,
+      836,  836,  836,  842,  836,  836,  836,  836,  836,  836,
+      836,  836,  836,  836,  836,  836,  836,  836,  836,  836,
+      836,  836,  836,  836,  843,  836,  836,  836,  836,  836,
+      836,  836,  836,  844,  836,  845,  846,  847,  836,  836,
+      845,  836,  845,  845,  836,  836,  845,  836,  845,  845,
+      845,  848,  836,  845,  836,  849,  836,  848,  848,  848,
+      848,  848,  848,  848,  848,  848,  848,  848,  836,  845,
+      836,  845,  845,  850,  851,  852,  853,  854,  845,  836,
+
+      836,  855,  849,  856,  855,  855,  855,  855,  855,  855,
+      855,  855,  855,  855,  855,  836,  857,   99,  836,  849,
+      858,  858,  858,  858,  858,  836,  845,  845,  845,  849,
+      856,  855,  855,  836,  836,  859,  836,  836,  836,  836,
+      836,  836,  836,  836,  836,  836,  836,  836,  836,  836,
+      836,  836,  836,  836,  836,  836,  836,  836,  843,  836,
+      836,  836,  836,  836,  836,  836,  836,  844,  836,  842,
+      836,  836,  836,  836,  836,  836,  836,  836,  836,  836,
+      836,  836,  836,  836,  836,  836,  836,  836,  836,  836,
+      836,  836,  836,  836,  836,  836,  836,  836,  836,  836,
 
-      863,  863,  863,  862,  862,  862,  862,  862,  862,  862,
-      862,  862,  862,  835,  835,  835,  835,  835,  835,  835,
-      877,  863,  863,  854,  854,  854,  854,  854,  854,  854,
-      854,  854,  854,  863,  863,  863,  863,  863,  863,  863,
+      836,  836,  836,  836,  844,  836,  845,  846,  836,  860,
+      836,  861,  845,  845,  836,  836,  836,  862,  845,  836,
+      845,  863,  864,  849,  864,  863,  863,  863,  863,  863,
       863,  863,  863,  863,  863,  863,  863,  863,  863,  863,
+      863,  863,  836,  865,  836,  866,  867,  867,  836,  868,
+      836,  868,  869,  836,  860,  836,  836,  836,  836,  836,
+      836,  870,  836,  855,  864,  871,  872,  855,  855,  855,
+      855,  855,  855,  855,  855,  855,  855,  855,  855,  855,
+      855,  855,  855,  855,  836,  860,  836,  836,  836,  836,
+      836,  864,  864,  864,  864,  864,  864,  864,  864,  864,
+
+      864,  864,  864,  864,  864,  864,  864,  873,  874,  874,
+      874,  874,  874,  836,  836,  855,  875,  836,  836,  836,
+      836,  836,  836,  836,  836,  836,  836,  836,  836,  836,
+      836,  836,  836,  836,  836,  836,  836,  836,  836,  836,
+      860,  836,  861,  861,  836,  861,  836,  836,  862,  864,
+      864,  863,  863,  863,  863,  863,  863,  863,  863,  863,
+      863,  863,  863,  863,  863,  863,  863,  863,  876,  865,
+      836,  865,  836,  836,  836,  836,  877,  836,  836,  870,
+      864,  864,  836,  871,  872,  855,  855,  855,  855,  855,
+      855,  855,  855,  855,  855,  855,  855,  855,  855,  855,
+
+      855,  855,  836,  836,  836,  836,  836,  836,  864,  864,
+      864,  864,  864,  864,  864,  864,  864,  864,  864,  864,
+      864,  864,  864,  864,  864,  864,  864,  864,  864,  864,
+      864,  864,  864,  864,  864,  864,  864,  864,  864,  864,
+      878,  874,  874,  836,  836,  836,  864,  863,  863,  863,
       863,  863,  863,  863,  863,  863,  863,  863,  863,  863,
-      862,  862,  862,  862,  862,  835,  835,  835,  835,  835,
-      835,  835,  877,  835,  877,  863,  863,  854,  854,  854,
-      854,  854,  863,  863,  863,  863,  863,  863,  863,  863,
-      863,  863,  863,  863,  863,  863,  863,  863,  863,  863,
+      863,  863,  863,  876,  464,  876,  876,  876,  876,  876,
+      876,  836,  836,  836,  877,  836,  836,  836,  836,  864,
+      864,  836,  836,  855,  855,  855,  855,  855,  855,  855,
+      855,  855,  855,  855,  855,  855,  855,  855,  855,  836,
 
-      863,  862,  862,  862,  862,  835,  835,  835,  835,  835,
-      835,  835,  863,  863,  854,  854,  854,  854,  863,  863,
-      863,  863,  863,  863,  863,  863,  863,  863,  863,  863,
-      863,  863,  863,  863,  863,  863,  863,  862,  835,  878,
-      835,  835,  835,  835,  835,  863,  863,  854,  863,  863,
-      863,  863,  863,  863,  863,  863,  863,  863,  863,  863,
-      863,  863,  835,  878,  878,  835,  835,  835,  835,  863,
-      863,  863,  863,  863,  863,  863,  835,  878,  835,  835,
-      835,  835,  863,  863,  863,  835,  835,  878,  835,  835,
-      863,  863,  863,  835,  835,  835,  863,  863,  835,  835,
-
-      863,  863,  835,  835,  863,  835,  835,  863,  835,  835,
-      863,  835,  835,  863,  835,  835,  835,  835,  835,  835,
-      835,  835,  835,  835,  835,  835,  835,  835,  835,  835,
-      835,  835,  835,  835,    0,  835,  835,  835,  835,  835,
-      835,  835,  835,  835,  835,  835,  835,  835,  835,  835,
-      835,  835,  835,  835,  835,  835,  835,  835,  835,  835,
-      835,  835,  835,  835,  835,  835,  835,  835,  835,  835,
-      835,  835,  835,  835,  835,  835,  835,  835
+      836,  836,  864,  864,  864,  864,  864,  864,  864,  864,
+      864,  864,  864,  864,  864,  864,  864,  864,  864,  864,
+      864,  864,  864,  864,  864,  864,  864,  864,  864,  864,
+      864,  864,  878,  874,  836,  836,  864,  863,  863,  863,
+      863,  863,  863,  863,  863,  863,  863,  863,  876,  876,
+      876,  876,  876,  876,  876,  836,  836,  836,  836,  864,
+      864,  836,  855,  855,  855,  855,  855,  855,  855,  855,
+      855,  855,  855,  836,  836,  864,  864,  864,  864,  864,
+      864,  864,  864,  864,  864,  864,  864,  864,  864,  864,
+      864,  864,  864,  864,  864,  864,  864,  864,  864,  864,
+
+      864,  864,  864,  864,  863,  863,  863,  863,  863,  863,
+      863,  863,  863,  863,  876,  876,  876,  876,  876,  876,
+      876,  879,  864,  864,  855,  855,  855,  855,  855,  855,
+      855,  855,  855,  855,  864,  864,  864,  864,  864,  864,
+      864,  864,  864,  864,  864,  864,  864,  864,  864,  864,
+      864,  864,  864,  864,  864,  864,  864,  864,  864,  864,
+      864,  863,  863,  863,  863,  863,  876,  876,  876,  876,
+      876,  876,  876,  879,  836,  879,  864,  864,  855,  855,
+      855,  855,  855,  864,  864,  864,  864,  864,  864,  864,
+      864,  864,  864,  864,  864,  864,  864,  864,  864,  864,
+
+      864,  864,  863,  863,  863,  863,  876,  876,  876,  876,
+      876,  876,  876,  864,  864,  855,  855,  855,  855,  864,
+      864,  864,  864,  864,  864,  864,  864,  864,  864,  864,
+      864,  864,  864,  864,  864,  864,  864,  864,  863,  876,
+      880,  876,  876,  876,  876,  876,  864,  864,  855,  864,
+      864,  864,  864,  864,  864,  864,  864,  864,  864,  864,
+      864,  864,  864,  876,  880,  880,  876,  876,  876,  876,
+      864,  864,  864,  864,  864,  864,  864,  876,  880,  876,
+      876,  876,  876,  864,  864,  864,  783,  836,  880,  783,
+      783,  864,  864,  864,  783,  783,  783,  864,  864,  783,
+
+      783,  864,  864,  836,  783,  864,  836,  783,  864,  836,
+      783,  864,  836,  783,  864,  836,  836,  836,  836,  836,
+      836,  836,  836,  836,  836,  836,  836,  836,  836,  836,
+      836,  836,  836,  836,  836,    0,  836,  836,  836,  836,
+      836,  836,  836,  836,  836,  836,  836,  836,  836,  836,
+      836,  836,  836,  836,  836,  836,  836,  836,  836,  836,
+      836,  836,  836,  836,  836,  836,  836,  836,  836,  836,
+      836,  836,  836,  836,  836,  836,  836,  836,  836,  836
     } ;
 
-static yyconst short int yy_nxt[2289] =
+static yyconst short int yy_nxt[2551] =
     {   0,
-       23,   23,   23,   23,   23,   23,   23,   23,  835,  263,
-      835,   25,  263,  308,  835,   25,   95,   95,  251,  204,
+       23,   23,   23,   23,   23,   23,   23,   23,  836,  263,
+      836,   25,  263,  308,  836,   25,   95,   95,  251,  204,
       204,  204,  204,  204,  204,  135,  135,  135,  135,  248,
-      835,  137,  173,  173,  173,  173,  173,  173,  173,  135,
+      836,  137,  173,  173,  173,  173,  173,  173,  173,  135,
       135,  135,  135,  175,  177,  137,  179,  187,  180,  263,
-      192,  206,  206,  206,  206,  181,  244,  176,  835,   26,
+      192,  206,  206,  206,  206,  181,  244,  176,  836,   26,
       188,  178,  212,   26,   28,  182,  183,  184,  224,   28,
       193,  185,  186,  263,  273,  226,  213,   29,   29,   29,
        29,   29,   29,   29,  138,  227,  225,   96,   96,  252,
@@ -645,12 +645,12 @@ static yyconst short int yy_nxt[2289] =
       268,  263,  265,  241,   49,   50,  263,   51,  263,   52,
       269,   53,  263,   54,   28,  263,  225,  263,  215,   28,
       216,  216,  216,  216,  216,  216,  216,   29,   29,   29,
-       29,   29,   29,   29,  835,  263,  308,  257,  175,  192,
+       29,   29,   29,   29,  836,  263,  308,  257,  175,  192,
        30,   31,   32,   33,   34,   35,   36,   37,  381,  272,
-      382,   38,  176,   39,  278,  834,  270,   40,   41,  193,
+      382,   38,  176,   39,  278,  835,  270,   40,   41,  193,
        42,   43,  277,  206,  206,  206,  206,   44,  274,   45,
 
-      279,  177,   46,   47,  275,  276,  280,   48,  217,  631,
+      279,  177,   46,   47,  275,  276,  280,   48,  217,  632,
       355,  316,  371,  372,   49,   50,  218,   51,  178,   52,
       356,   53,  310,   54,   22,   55,   55,   55,   55,   56,
        57,   56,   56,   56,   56,   58,   59,   60,   61,   62,
@@ -673,11 +673,11 @@ static yyconst short int yy_nxt[2289] =
       111,  102,  112,  102,  113,  102,  114,  102,  102,  115,
 
       102,  102,   89,   90,   91,   92,  116,  187,  206,  206,
-      206,  206,  833,  117,  285,  832,   56,  263,  118,   56,
+      206,  206,  834,  117,  285,  833,   56,  263,  118,   56,
       188,  119,  119,  119,  119,  119,  119,  119,  263,  308,
        56,  263,  215,   56,  216,  216,  216,  216,  216,  216,
       216,  212,  263,  333,  256,  257,  257,  257,  257,  257,
-      257,  179,  583,  180,  584,  213,  263,  308,  263,  263,
+      257,  179,  584,  180,  585,  213,  263,  308,  263,  263,
       181,  263,  263,  308,  120,  334,  121,  121,  122,  121,
       121,  121,  121,  121,  123,  121,  124,  121,  121,  125,
       121,  121,  121,  121,  121,  121,  121,  121,  121,  126,
@@ -688,9 +688,9 @@ static yyconst short int yy_nxt[2289] =
       271,  392,  258,  259,  313,  260,  260,  260,  260,  260,
       260,  260,  287,  360,  288,  288,  288,  288,  288,  288,
       288,  182,  183,  184,  361,  362,   56,  185,  186,  130,
-      131,  437,  829,  102,  132,  102,  414,  389,  102,  133,
+      131,  437,  830,  102,  132,  102,  414,  389,  102,  133,
       398,  102,  102,  438,  102,  397,  102,  390,  102,  391,
-      415,  102,  828,  393,  134,   56,   22,  127,  139,  140,
+      415,  102,  829,  393,  134,   56,   22,  127,  139,  140,
       140,  140,  140,  139,  141,  139,  139,  139,  139,  141,
       139,  139,  139,  139,  142,  139,  139,  143,  143,  143,
 
@@ -703,185 +703,214 @@ static yyconst short int yy_nxt[2289] =
       139,  167,  139,  168,  139,  169,  139,  139,  139,  258,
       263,  173,  173,  173,  173,  173,  173,  173,  263,  259,
       263,  260,  260,  260,  260,  260,  260,  260,  195,  324,
-      325,  326,  327,  435,  196,  197,  827,  436,  826,  198,
+      325,  326,  327,  435,  196,  197,  828,  436,  549,  198,
 
-      199,  263,  308,  263,  200,  204,  204,  204,  204,  204,
+      199,  263,  308,  550,  200,  204,  204,  204,  204,  204,
       204,  173,  173,  173,  173,  173,  173,  173,  204,  204,
       204,  204,  204,  204,  206,  206,  206,  206,  344,  345,
       346,  344,  263,  263,  281,  424,  425,  263,  263,  261,
-      282,  348,  348,  348,  348,  348,  348,  262,  490,  283,
+      282,  348,  348,  348,  348,  348,  348,  262,  491,  283,
       289,  401,  290,  347,  347,  347,  347,  347,  347,  347,
       263,  426,  215,  291,  216,  216,  216,  216,  216,  216,
       216,  379,  379,  379,  379,  379,  379,  292,  427,  293,
-      294,  567,  295,  825,  428,  296,  263,  297,  298,  299,
-      300,  301,  302,  824,  394,  303,  304,  305,  402,  306,
+      294,  827,  295,  826,  428,  296,  263,  297,  298,  299,
+      300,  301,  302,  825,  394,  303,  304,  305,  402,  306,
 
-      429,  823,  399,  258,  263,  395,  396,  224,  416,  417,
-      498,  265,  418,  287,  307,  257,  257,  257,  257,  257,
+      429,  824,  399,  258,  263,  395,  396,  224,  416,  417,
+      499,  265,  418,  287,  307,  257,  257,  257,  257,  257,
       257,  257,  258,  263,  419,  225,  263,  308,  263,  308,
       263,  308,  287,  395,  257,  257,  257,  257,  257,  257,
       257,  378,  378,  378,  378,  378,  378,  378,  258,  405,
-      405,  405,  405,  405,  405,  405,  263,  308,  259,  484,
-      260,  260,  260,  260,  260,  260,  260,  371,  372,  487,
+      405,  405,  405,  405,  405,  405,  263,  308,  259,  485,
+      260,  260,  260,  260,  260,  260,  260,  371,  372,  488,
       258,  371,  372,  376,  344,  345,  346,  344,  432,  409,
       287,  377,  288,  288,  288,  288,  288,  288,  288,  410,
-      433,  263,  496,  411,  344,  345,  346,  344,  412,  442,
+      433,  263,  497,  411,  344,  345,  346,  344,  412,  442,
 
       445,  445,  445,  445,  443,  434,  263,  263,  413,  344,
       345,  346,  344,  347,  347,  347,  347,  347,  347,  347,
       348,  348,  348,  348,  348,  348,  464,  464,  464,  465,
-      446,  473,  473,  473,  473,  473,  473,  475,  263,  263,
-      263,  263,  263,  263,  263,  263,  520,  822,  485,  378,
-      378,  378,  378,  378,  378,  378,  503,  466,  263,  521,
-      467,  504,  446,  263,  477,  468,  476,  483,  488,  469,
-      475,  518,  505,  263,  308,  470,  379,  379,  379,  379,
-      379,  379,  405,  405,  405,  405,  405,  405,  405,  523,
-      519,  263,  308,  524,  263,  486,  263,  263,  476,  500,
-
-      263,  495,  263,  493,  489,  491,  497,  445,  445,  445,
-      445,  263,  608,  263,  534,  492,  534,  609,  494,  535,
-      535,  535,  535,  535,  535,  535,  464,  464,  464,  464,
-      477,  500,  263,  563,  533,  263,  562,  464,  464,  464,
-      464,  821,  473,  473,  473,  473,  473,  473,  263,  308,
-      674,  675,  820,  568,  790,  654,  263,  466,  819,  263,
-      467,  790,  263,  572,  263,  468,  565,  263,  466,  469,
-      564,  467,  566,  263,  548,  470,  468,  655,  263,  549,
-      469,  571,  557,  569,  557,  263,  470,  558,  558,  558,
-      558,  558,  558,  558,  818,  573,  817,  573,  626,  570,
-
-      574,  574,  574,  574,  574,  574,  574,  535,  535,  535,
-      535,  535,  535,  535,  535,  535,  535,  535,  535,  535,
-      535,  558,  558,  558,  558,  558,  558,  558,  475,  624,
-      627,  628,  625,  678,  632,  263,  629,  263,  263,  263,
-      558,  558,  558,  558,  558,  558,  558,  630,  475,  263,
-      633,  574,  574,  574,  574,  574,  574,  574,  674,  675,
-      574,  574,  574,  574,  574,  574,  574,  656,  656,  656,
-      656,  656,  656,  656,  656,  656,  656,  656,  656,  656,
-      656,  674,  675,  263,  263,  263,  263,  765,  730,  787,
-      788,  205,  349,  205,  349,  681,  680,  731,  732,  205,
-
-      349,  441,  441,  765,  679,  831,  816,  815,  682,  814,
-      813,  812,  715,  830,  830,  830,  830,  830,  830,  830,
-      830,  830,  830,  830,  830,  830,  830,  380,  474,  380,
-      474,  811,  810,  809,  808,  380,  474,  807,  806,  805,
-      804,  803,  802,  717,  716,  801,  800,  748,  718,  799,
-      798,  797,  796,  795,  765,  794,  793,  792,  791,  789,
-      778,   22,   22,   22,   22,   22,   22,   22,   22,   22,
+      446,  474,  474,  474,  474,  474,  474,  476,  263,  263,
+      263,  263,  263,  263,  263,  263,  521,  823,  486,  378,
+      378,  378,  378,  378,  378,  378,  504,  466,  263,  522,
+      468,  505,  446,  263,  478,  469,  477,  484,  489,  470,
+      476,  519,  506,  263,  308,  471,  379,  379,  379,  379,
+      379,  379,  405,  405,  405,  405,  405,  405,  405,  524,
+      520,  263,  308,  525,  263,  487,  263,  263,  477,  501,
+
+      263,  496,  263,  494,  490,  492,  498,  445,  445,  445,
+      445,  263,  263,  263,  535,  493,  535,  263,  495,  536,
+      536,  536,  536,  536,  536,  536,  464,  464,  464,  464,
+      263,  501,  566,  564,  534,  836,  836,  836,  836,  836,
+      836,  836,  836,  836,  836,  836,  836,  836,  836,  836,
+      836,  836,  836,  836,  836,  263,  822,  466,  263,  308,
+      468,  836,  836,  836,  836,  469,  567,  551,  569,  470,
+      563,  478,  565,  821,  628,  471,  675,  676,  552,  571,
+      568,  572,  554,  474,  474,  474,  474,  474,  474,  570,
+      558,  553,  558,  627,  820,  559,  559,  559,  559,  559,
+
+      559,  559,  819,  574,  263,  574,  263,  555,  575,  575,
+      575,  575,  575,  575,  575,  263,  573,  536,  536,  536,
+      536,  536,  536,  536,  536,  536,  536,  536,  536,  536,
+      536,  609,  836,  836,  836,  836,  610,  836,  836,  836,
+      836,  836,  836,  836,  836,  836,  836,  836,  836,  836,
+      836,  836,  836,  263,  263,  836,  836,  836,  836,  836,
+      836,  836,  836,  559,  559,  559,  559,  559,  559,  559,
+      615,  476,  263,  625,  263,  263,  616,  818,  679,  263,
+      626,  618,  655,  559,  559,  559,  559,  559,  559,  559,
+      617,  619,  620,  476,  621,  575,  575,  575,  575,  575,
+
+      575,  575,  263,  263,  656,  575,  575,  575,  575,  575,
+      575,  575,  657,  657,  657,  657,  657,  657,  657,  766,
+      629,  675,  676,  631,  817,  630,  836,  836,  836,  836,
+      675,  676,  682,  633,  836,  836,  836,  836,  681,  634,
+      836,  836,  836,  836,  836,  836,  836,  836,  836,  836,
+      836,  836,  836,  836,  836,  836,  263,  263,  263,  667,
+      836,  836,  836,  836,  657,  657,  657,  657,  657,  657,
+      657,  680,  683,  836,  836,  836,  836,  263,  668,  836,
+      836,  836,  836,  836,  836,  836,  836,  671,  816,  670,
+      669,  672,  779,  673,  836,  836,  836,  836,  815,  836,
+
+      836,  836,  836,  836,  836,  836,  836,  836,  836,  836,
+      836,  731,  263,  813,  708,  441,  441,  718,  717,  716,
+      732,  733,  836,  836,  836,  836,  836,  836,  836,  741,
+      812,  709,  795,  796,  707,  810,  712,  467,  467,  809,
+      719,  807,  710,  711,  467,  467,  713,  836,  836,  836,
+      836,  836,  836,  836,  836,  836,  836,  836,  836,  836,
+      836,  836,  836,  836,  836,  836,  836,  800,  740,  836,
+      836,  836,  836,  749,  836,  836,  836,  836,  742,  836,
+      836,  836,  836,  806,  467,  467,  743,  803,  802,  799,
+      744,  467,  467,  798,  746,  836,  836,  836,  836,  836,
+
+      836,  836,  836,  836,  836,  836,  836,  767,  836,  836,
+      836,  836,  836,  836,  836,  836,  766,  764,  467,  794,
+      745,  836,  836,  836,  836,  467,  793,  792,  768,  836,
+      836,  836,  836,  836,  836,  836,  836,  788,  789,  778,
+      836,  836,  836,  836,  804,  770,  836,  836,  836,  836,
+      769,  766,  836,  836,  836,  836,  836,  836,  836,  836,
+      797,  801,  780,  836,  836,  836,  836,  805,  467,  808,
+      786,  781,  783,  782,  467,  467,  785,  787,  784,  467,
+      766,  467,  467,  811,  814,  205,  467,  205,  467,  467,
+      467,  777,  790,  205,  776,  467,  467,  467,  775,  774,
+
+      773,  772,  263,  467,  831,  831,  831,  831,  831,  831,
+      831,  832,  791,  349,  380,  349,  380,  771,  766,  791,
+      763,  349,  380,  762,  761,  760,  831,  831,  831,  831,
+      831,  831,  831,   22,   22,   22,   22,   22,   22,   22,
        22,   22,   22,   22,   22,   22,   22,   22,   22,   22,
-       22,   24,   24,   24,   24,   24,   24,   24,   24,   24,
+       22,   22,   22,   22,   22,   24,   24,   24,   24,   24,
        24,   24,   24,   24,   24,   24,   24,   24,   24,   24,
-
-       24,   27,   27,   27,   27,   27,   27,   27,   27,   27,
+       24,   24,   24,   24,   24,   24,   24,   27,   27,   27,
        27,   27,   27,   27,   27,   27,   27,   27,   27,   27,
-       27,   94,   94,   94,   94,   94,   94,   94,   94,   94,
+       27,   27,   27,   27,   27,   27,   27,   27,   27,   94,
+
+       94,   94,   94,   94,   94,   94,   94,   94,   94,   94,
        94,   94,   94,   94,   94,   94,   94,   94,   94,   94,
        94,  136,  136,  136,  136,  136,  136,  136,  136,  136,
       136,  136,  136,  136,  136,  136,  136,  136,  136,  136,
-      136,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  786,  170,  170,  170,  170,  170,  170,  203,
-      203,  203,  203,  203,  203,  207,  207,  207,  785,  784,
-      783,  207,  782,  781,  780,  207,  208,  208,  208,  208,
-
-      208,  208,  208,  208,  208,  208,  208,  779,  208,  208,
-      208,  208,  208,  208,  210,  210,  210,  210,  210,  210,
-      210,  210,  210,  210,  210,  765,  210,  210,  210,  210,
-      210,  210,  222,  777,  222,  776,  222,  222,  775,  774,
-      222,  773,  222,  222,  223,  223,  772,  771,  223,  263,
-      223,  223,  246,  246,  246,  246,  246,  246,  246,  770,
-      246,  246,  246,  246,  246,  246,  246,  246,  246,  246,
-      769,  246,  247,  247,  247,  247,  247,  247,  247,  247,
+      136,  136,  136,  170,  170,  170,  170,  170,  170,  170,
+      170,  170,  170,  170,  170,  759,  170,  170,  170,  170,
+      170,  170,  203,  203,  203,  203,  203,  203,  207,  758,
+      207,  207,  757,  756,  755,  207,  754,  753,  752,  207,
+      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
+      208,  208,  751,  208,  208,  208,  208,  208,  208,  210,
+
+      210,  210,  210,  210,  210,  210,  210,  210,  210,  210,
+      210,  750,  210,  210,  210,  210,  210,  210,  222,  475,
+      222,  475,  222,  222,  263,  263,  222,  475,  222,  222,
+      223,  223,  263,  748,  223,  747,  223,  223,  246,  246,
+      246,  246,  246,  246,  246,  246,  246,  739,  246,  246,
+      246,  246,  246,  246,  246,  246,  246,  246,  738,  246,
       247,  247,  247,  247,  247,  247,  247,  247,  247,  247,
-      768,  247,  250,  250,  250,  250,  250,  250,  250,  250,
-
+      247,  247,  247,  247,  247,  247,  247,  247,  247,  247,
+      737,  247,  250,  250,  250,  250,  250,  250,  250,  250,
       250,  250,  250,  250,  250,  250,  250,  250,  250,  250,
-      250,  253,  253,  253,  253,  253,  253,  253,  253,  253,
-      253,  253,  767,  253,  253,  253,  253,  253,  253,  255,
-      255,  255,  255,  255,  255,  255,  255,  255,  255,  255,
-      766,  255,  255,  255,  255,  255,  255,  264,  765,  264,
-      763,  264,  762,  264,  264,  761,  760,  264,  759,  264,
-      264,  266,  266,  758,  757,  756,  266,  266,  266,  286,
-      286,  286,  286,  755,  286,  286,  286,  286,  286,  286,
-      754,  286,  286,  286,  286,  286,  286,  309,  309,  309,
-      753,  309,  752,  309,  309,  751,  750,  309,  749,  309,
-
-      309,  317,  317,  317,  317,  317,  317,  317,  317,  317,
-      317,  317,  263,  317,  317,  317,  317,  317,  317,  341,
-      341,  341,  341,  341,  341,  341,  341,  341,  341,  341,
-      263,  341,  341,  341,  341,  341,  341,  343,  343,  343,
+
+      250,  250,  250,  253,  253,  253,  253,  253,  253,  253,
+      253,  253,  253,  253,  253,  736,  253,  253,  253,  253,
+      253,  253,  255,  255,  255,  255,  255,  255,  255,  255,
+      255,  255,  255,  255,  735,  255,  255,  255,  255,  255,
+      255,  264,  734,  264,  730,  264,  729,  264,  264,  728,
+      727,  264,  726,  264,  264,  266,  266,  725,  724,  723,
+      266,  266,  266,  286,  286,  286,  286,  286,  722,  286,
+      286,  286,  286,  286,  286,  721,  286,  286,  286,  286,
+      286,  286,  309,  309,  309,  720,  309,  263,  309,  309,
+      715,  714,  309,  706,  309,  309,  317,  317,  317,  317,
+
+      317,  317,  317,  317,  317,  317,  317,  317,  705,  317,
+      317,  317,  317,  317,  317,  341,  341,  341,  341,  341,
+      341,  341,  341,  341,  341,  341,  341,  704,  341,  341,
+      341,  341,  341,  341,  343,  343,  343,  343,  343,  343,
       343,  343,  343,  343,  343,  343,  343,  343,  343,  343,
-      343,  343,  343,  343,  343,  343,  343,  222,  263,  222,
-      747,  222,  222,  746,  745,  222,  744,  222,  222,  350,
-      743,  350,  742,  350,  350,  741,  740,  350,  739,  350,
-      350,  370,  370,  370,  370,  370,  370,  370,  370,  370,
+      343,  343,  343,  343,  343,  343,  222,  703,  222,  702,
+      222,  222,  701,  700,  222,  699,  222,  222,  350,  698,
+      350,  697,  350,  350,  696,  695,  350,  694,  350,  350,
+      370,  370,  370,  370,  370,  370,  370,  370,  370,  370,
       370,  370,  370,  370,  370,  370,  370,  370,  370,  370,
 
-      370,  246,  246,  246,  246,  246,  246,  246,  738,  246,
-      246,  246,  246,  246,  246,  246,  246,  246,  246,  737,
-      246,  247,  247,  247,  247,  247,  247,  247,  736,  247,
-      247,  247,  247,  247,  247,  247,  247,  247,  247,  250,
-      250,  250,  250,  250,  250,  250,  735,  250,  250,  250,
-      250,  250,  250,  250,  250,  250,  250,  253,  253,  253,
-      253,  253,  253,  253,  253,  253,  253,  253,  734,  253,
-      253,  253,  253,  253,  253,  384,  733,  384,  729,  384,
-      728,  384,  384,  727,  726,  384,  725,  384,  384,  385,
-      385,  385,  385,  385,  385,  724,  385,  385,  385,  385,
-
+      370,  370,  246,  246,  246,  246,  246,  246,  246,  246,
+      246,  693,  246,  246,  246,  246,  246,  246,  246,  246,
+      246,  246,  692,  246,  247,  247,  247,  247,  247,  247,
+      247,  247,  247,  691,  247,  247,  247,  247,  247,  247,
+      247,  247,  247,  247,  250,  250,  250,  250,  250,  250,
+      250,  250,  250,  690,  250,  250,  250,  250,  250,  250,
+      250,  250,  250,  250,  253,  253,  253,  253,  253,  253,
+      253,  253,  253,  253,  253,  253,  689,  253,  253,  253,
+      253,  253,  253,  384,  688,  384,  687,  384,  686,  384,
+      384,  685,  684,  384,  263,  384,  384,  385,  385,  385,
+
+      385,  385,  385,  385,  385,  263,  385,  385,  385,  385,
       385,  385,  385,  385,  385,  385,  385,  385,  385,  309,
-      309,  309,  723,  309,  722,  309,  309,  721,  720,  309,
-      719,  309,  309,  317,  317,  317,  317,  317,  317,  317,
-      317,  317,  317,  317,  263,  317,  317,  317,  317,  317,
-      317,  532,  714,  532,  713,  532,  532,  712,  711,  532,
-      710,  532,  532,  673,  673,  673,  673,  673,  673,  673,
-      673,  673,  673,  673,  673,  673,  673,  673,  673,  673,
-      673,  673,  673,  764,  709,  764,  764,  764,  764,  764,
-      764,  764,  764,  764,  764,  764,  764,  764,  764,  764,
-      764,  764,  764,  708,  707,  706,  705,  704,  703,  702,
-
-      701,  700,  699,  698,  697,  696,  695,  694,  693,  692,
-      691,  690,  689,  688,  687,  686,  685,  684,  683,  263,
-      263,  263,  263,  263,  677,  676,  672,  671,  670,  669,
-      668,  667,  666,  665,  664,  663,  662,  661,  660,  659,
-      658,  657,  653,  652,  651,  650,  649,  648,  647,  646,
-      645,  644,  643,  642,  641,  640,  639,  638,  637,  636,
-      635,  634,  263,  263,  623,  622,  621,  620,  619,  618,
-      617,  616,  615,  614,  613,  612,  611,  610,  607,  606,
-      605,  604,  603,  602,  601,  600,  599,  598,  597,  596,
-      595,  594,  593,  592,  591,  590,  589,  588,  587,  586,
-
-      585,  582,  581,  580,  579,  578,  577,  576,  575,  263,
-      263,  263,  263,  263,  561,  560,  559,  556,  478,  555,
-      554,  553,  552,  551,  550,  547,  546,  545,  544,  543,
-      542,  541,  540,  539,  538,  537,  536,  531,  530,  529,
-      528,  527,  526,  525,  522,  517,  516,  515,  514,  513,
-      512,  511,  510,  509,  508,  507,  506,  502,  501,  472,
-      499,  263,  482,  383,  481,  480,  479,  478,  472,  471,
-      463,  462,  461,  460,  459,  458,  457,  456,  455,  454,
-      453,  452,  451,  450,  449,  448,  447,  835,  319,  318,
-      444,  440,  439,  431,  430,  423,  422,  421,  420,  408,
-
-      407,  406,  404,  403,  263,  263,  263,  383,  263,  375,
-      374,  254,  252,  248,  373,  369,  368,  367,  366,  365,
-      364,  363,  359,  358,  357,  354,  353,  352,  351,  224,
-      342,  209,  340,  339,  338,  337,  336,  335,  332,  331,
-      330,  329,  328,  323,  322,  321,  172,  171,  314,  202,
-      201,  194,  191,  190,  189,  174,  212,  320,  319,  318,
-      314,  835,  224,  213,  315,  314,  267,  263,  211,  254,
-      243,  242,  238,  237,  236,  235,  231,  230,  221,  220,
-      219,  214,  211,  209,  202,  201,  194,  191,  190,  189,
-      174,  172,  171,  835,   93,   93,   21,  835,  835,  835,
-
-      835,  835,  835,  835,  835,  835,  835,  835,  835,  835,
-      835,  835,  835,  835,  835,  835,  835,  835,  835,  835,
-      835,  835,  835,  835,  835,  835,  835,  835,  835,  835,
-      835,  835,  835,  835,  835,  835,  835,  835,  835,  835,
-      835,  835,  835,  835,  835,  835,  835,  835,  835,  835,
-      835,  835,  835,  835,  835,  835,  835,  835,  835,  835,
-      835,  835,  835,  835,  835,  835,  835,  835,  835,  835,
-      835,  835,  835,  835,  835,  835,  835,  835,  835,  835,
-      835,  835,  835,  835,  835,  835,  835,  835
+      309,  309,  263,  309,  263,  309,  309,  263,  678,  309,
+      677,  309,  309,  317,  317,  317,  317,  317,  317,  317,
+      317,  317,  317,  317,  317,  666,  317,  317,  317,  317,
+      317,  317,  467,  467,  467,  665,  664,  663,  662,  661,
+      660,  659,  658,  467,  467,  654,  653,  467,  533,  652,
+      533,  651,  533,  533,  650,  649,  533,  648,  533,  533,
+      674,  674,  674,  674,  674,  674,  674,  674,  674,  674,
+      674,  674,  674,  674,  674,  674,  674,  674,  674,  674,
+
+      674,  674,  765,  765,  647,  765,  765,  765,  765,  765,
+      765,  765,  765,  765,  765,  765,  765,  765,  765,  765,
+      765,  765,  765,  765,  646,  645,  644,  643,  642,  641,
+      640,  639,  638,  637,  636,  635,  263,  263,  624,  623,
+      622,  614,  613,  612,  611,  608,  607,  606,  605,  604,
+      603,  602,  601,  600,  599,  598,  597,  596,  595,  594,
+      593,  592,  591,  590,  589,  588,  587,  586,  583,  582,
+      581,  580,  579,  578,  577,  576,  263,  263,  263,  263,
+      263,  562,  561,  560,  557,  479,  556,  548,  547,  546,
+      545,  544,  543,  542,  541,  540,  539,  538,  537,  532,
+
+      531,  530,  529,  528,  527,  526,  523,  518,  517,  516,
+      515,  514,  513,  512,  511,  510,  509,  508,  507,  503,
+      502,  473,  500,  263,  483,  383,  482,  481,  480,  479,
+      473,  472,  463,  462,  461,  460,  459,  458,  457,  456,
+      455,  454,  453,  452,  451,  450,  449,  448,  447,  836,
+      319,  318,  444,  440,  439,  431,  430,  423,  422,  421,
+      420,  408,  407,  406,  404,  403,  263,  263,  263,  383,
+      263,  375,  374,  254,  252,  248,  373,  369,  368,  367,
+      366,  365,  364,  363,  359,  358,  357,  354,  353,  352,
+      351,  224,  342,  209,  340,  339,  338,  337,  336,  335,
+
+      332,  331,  330,  329,  328,  323,  322,  321,  172,  171,
+      314,  202,  201,  194,  191,  190,  189,  174,  212,  320,
+      319,  318,  314,  836,  224,  213,  315,  314,  267,  263,
+      211,  254,  243,  242,  238,  237,  236,  235,  231,  230,
+      221,  220,  219,  214,  211,  209,  202,  201,  194,  191,
+      190,  189,  174,  172,  171,  836,   93,   93,   21,  836,
+      836,  836,  836,  836,  836,  836,  836,  836,  836,  836,
+      836,  836,  836,  836,  836,  836,  836,  836,  836,  836,
+      836,  836,  836,  836,  836,  836,  836,  836,  836,  836,
+      836,  836,  836,  836,  836,  836,  836,  836,  836,  836,
+
+      836,  836,  836,  836,  836,  836,  836,  836,  836,  836,
+      836,  836,  836,  836,  836,  836,  836,  836,  836,  836,
+      836,  836,  836,  836,  836,  836,  836,  836,  836,  836,
+      836,  836,  836,  836,  836,  836,  836,  836,  836,  836,
+      836,  836,  836,  836,  836,  836,  836,  836,  836,  836
     } ;
 
-static yyconst short int yy_chk[2289] =
+static yyconst short int yy_chk[2551] =
     {   0,
         3,    3,    3,    3,    4,    4,    4,    4,    0,  108,
         0,    3,  121,  121,    0,    4,    9,   10,   96,   50,
@@ -898,14 +927,14 @@ static yyconst short int yy_chk[2289] =
         5,    5,  107,  115,  111,   41,   41,    5,   87,    5,
        41,   41,    5,    5,   87,   41,   93,    5,  103,  132,
       105,  110,  103,   87,    5,    5,  109,    5,  112,    5,
-      105,    5,  133,    5,    6,  113,  103,  569,   65,    6,
+      105,    5,  133,    5,    6,  113,  103,  570,   65,    6,
        65,   65,   65,   65,   65,   65,   65,    6,    6,    6,
         6,    6,    6,    6,  118,  122,  122,  118,  145,  153,
         6,    6,    6,    6,    6,    6,    6,    6,  265,  107,
-      265,    6,  145,    6,  111,  833,  132,    6,    6,  153,
+      265,    6,  145,    6,  111,  834,  132,    6,    6,  153,
         6,    6,  110,  140,  140,  140,  140,    6,  109,    6,
 
-      112,  146,    6,    6,  109,  109,  113,    6,   65,  569,
+      112,  146,    6,    6,  109,  109,  113,    6,   65,  570,
       229,  133,  244,  244,    6,    6,   65,    6,  146,    6,
       229,    6,  122,    6,    7,    7,    7,    7,    7,    7,
         7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
@@ -928,11 +957,11 @@ static yyconst short int yy_chk[2289] =
        11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
 
        11,   11,   11,   11,   11,   11,   13,  149,  116,  116,
-      116,  116,  832,   13,  116,  831,   13,  268,   13,   13,
+      116,  116,  833,   13,  116,  832,   13,  268,   13,   13,
       149,   13,   13,   13,   13,   13,   13,   13,  123,  123,
        13,  270,   66,   13,   66,   66,   66,   66,   66,   66,
        66,   99,  269,  186,   99,   99,   99,   99,   99,   99,
-       99,  147,  510,  147,  510,   99,  124,  124,  281,  106,
+       99,  147,  511,  147,  511,   99,  124,  124,  281,  106,
       147,  273,  125,  125,   13,  186,   13,   13,   13,   13,
        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
@@ -943,9 +972,9 @@ static yyconst short int yy_chk[2289] =
       106,  273,  119,  101,  125,  101,  101,  101,  101,  101,
       101,  101,  119,  234,  119,  119,  119,  119,  119,  119,
       119,  148,  148,  148,  234,  234,   15,  148,  148,   15,
-       15,  305,  828,   15,   15,   15,  293,  271,   15,   15,
+       15,  305,  829,   15,   15,   15,  293,  271,   15,   15,
       278,   15,   15,  305,   15,  277,   15,  271,   15,  272,
-      293,   15,  827,  275,   15,   15,   15,   15,   19,   19,
+      293,   15,  828,  275,   15,   15,   15,   15,   19,   19,
        19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
        19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
 
@@ -958,9 +987,9 @@ static yyconst short int yy_chk[2289] =
        19,   19,   19,   19,   19,   19,   19,   19,   19,  100,
       114,  143,  143,  143,  143,  143,  143,  143,  393,  100,
       283,  100,  100,  100,  100,  100,  100,  100,  155,  179,
-      179,  179,  179,  304,  155,  155,  826,  304,  825,  155,
+      179,  179,  179,  304,  155,  155,  827,  304,  465,  155,
 
-      155,  309,  309,  491,  155,  164,  164,  164,  164,  164,
+      155,  309,  309,  465,  155,  164,  164,  164,  164,  164,
       164,  173,  173,  173,  173,  173,  173,  173,  204,  204,
       204,  204,  204,  204,  206,  206,  206,  206,  212,  212,
       212,  212,  276,  280,  114,  299,  299,  284,  402,  100,
@@ -968,10 +997,10 @@ static yyconst short int yy_chk[2289] =
       120,  283,  120,  215,  215,  215,  215,  215,  215,  215,
       316,  299,  216,  120,  216,  216,  216,  216,  216,  216,
       216,  261,  261,  261,  261,  261,  261,  120,  300,  120,
-      120,  491,  120,  824,  300,  120,  387,  120,  120,  120,
-      120,  120,  120,  823,  276,  120,  120,  120,  284,  120,
+      120,  826,  120,  825,  300,  120,  387,  120,  120,  120,
+      120,  120,  120,  824,  276,  120,  120,  120,  284,  120,
 
-      300,  822,  280,  256,  390,  276,  276,  120,  294,  294,
+      300,  823,  280,  256,  390,  276,  276,  120,  294,  294,
       402,  120,  294,  256,  120,  256,  256,  256,  256,  256,
       256,  256,  257,  400,  294,  120,  310,  310,  311,  311,
       312,  312,  257,  316,  257,  257,  257,  257,  257,  257,
@@ -986,154 +1015,183 @@ static yyconst short int yy_chk[2289] =
       346,  346,  346,  347,  347,  347,  347,  347,  347,  347,
       348,  348,  348,  348,  348,  348,  369,  369,  369,  369,
       347,  376,  376,  376,  376,  376,  376,  378,  389,  392,
-      394,  395,  396,  398,  399,  401,  428,  821,  388,  378,
-      378,  378,  378,  378,  378,  378,  410,  369,  486,  428,
-      369,  410,  347,  484,  379,  369,  378,  386,  391,  369,
+      394,  395,  396,  398,  399,  401,  428,  822,  388,  378,
+      378,  378,  378,  378,  378,  378,  410,  369,  487,  428,
+      369,  410,  347,  490,  379,  369,  378,  386,  391,  369,
       405,  427,  410,  442,  442,  369,  379,  379,  379,  379,
       379,  379,  405,  405,  405,  405,  405,  405,  405,  431,
-      427,  443,  443,  431,  487,  389,  492,  489,  378,  405,
+      427,  443,  443,  431,  491,  389,  488,  485,  378,  405,
 
-      490,  399,  498,  396,  392,  394,  401,  445,  445,  445,
-      445,  493,  542,  495,  446,  395,  446,  542,  398,  446,
+      567,  399,  492,  396,  392,  394,  401,  445,  445,  445,
+      445,  493,  495,  496,  446,  395,  446,  494,  398,  446,
       446,  446,  446,  446,  446,  446,  464,  464,  464,  464,
-      473,  405,  494,  486,  442,  565,  484,  465,  465,  465,
-      465,  820,  473,  473,  473,  473,  473,  473,  533,  533,
-      621,  621,  819,  492,  782,  598,  566,  464,  818,  624,
-      464,  782,  563,  498,  567,  464,  489,  564,  465,  464,
-      487,  465,  490,  570,  465,  464,  465,  598,  568,  465,
-      465,  495,  476,  493,  476,  571,  465,  476,  476,  476,
-      476,  476,  476,  476,  817,  500,  816,  500,  565,  494,
-
-      500,  500,  500,  500,  500,  500,  500,  534,  534,  534,
-      534,  534,  534,  534,  535,  535,  535,  535,  535,  535,
-      535,  557,  557,  557,  557,  557,  557,  557,  558,  563,
-      566,  567,  564,  624,  570,  625,  567,  630,  631,  633,
-      558,  558,  558,  558,  558,  558,  558,  568,  574,  679,
-      571,  573,  573,  573,  573,  573,  573,  573,  673,  673,
-      574,  574,  574,  574,  574,  574,  574,  599,  599,  599,
-      599,  599,  599,  599,  656,  656,  656,  656,  656,  656,
-      656,  675,  675,  680,  681,  682,  717,  765,  694,  778,
-      778,  843,  861,  843,  861,  631,  630,  694,  694,  843,
-
-      861,  872,  872,  778,  625,  830,  815,  812,  633,  811,
-      810,  809,  679,  829,  829,  829,  829,  829,  829,  829,
-      830,  830,  830,  830,  830,  830,  830,  869,  875,  869,
-      875,  808,  807,  806,  805,  869,  875,  804,  803,  802,
-      800,  799,  798,  681,  680,  797,  795,  717,  682,  794,
-      792,  791,  790,  789,  788,  786,  785,  784,  783,  781,
-      765,  836,  836,  836,  836,  836,  836,  836,  836,  836,
-      836,  836,  836,  836,  836,  836,  836,  836,  836,  836,
-      836,  837,  837,  837,  837,  837,  837,  837,  837,  837,
+      566,  405,  490,  487,  442,  466,  466,  466,  466,  467,
+      467,  467,  467,  468,  468,  468,  468,  469,  469,  469,
+      469,  470,  470,  470,  470,  499,  821,  464,  534,  534,
+      464,  471,  471,  471,  471,  464,  491,  466,  493,  464,
+      485,  474,  488,  820,  567,  464,  622,  622,  468,  495,
+      492,  496,  470,  474,  474,  474,  474,  474,  474,  494,
+      477,  469,  477,  566,  819,  477,  477,  477,  477,  477,
+
+      477,  477,  818,  501,  625,  501,  564,  471,  501,  501,
+      501,  501,  501,  501,  501,  565,  499,  535,  535,  535,
+      535,  535,  535,  535,  536,  536,  536,  536,  536,  536,
+      536,  543,  549,  549,  549,  549,  543,  550,  550,  550,
+      550,  551,  551,  551,  551,  552,  552,  552,  552,  553,
+      553,  553,  553,  568,  569,  554,  554,  554,  554,  555,
+      555,  555,  555,  558,  558,  558,  558,  558,  558,  558,
+      549,  559,  571,  564,  572,  632,  550,  817,  625,  631,
+      565,  552,  599,  559,  559,  559,  559,  559,  559,  559,
+      551,  553,  554,  575,  555,  574,  574,  574,  574,  574,
+
+      574,  574,  626,  634,  599,  575,  575,  575,  575,  575,
+      575,  575,  600,  600,  600,  600,  600,  600,  600,  766,
+      568,  674,  674,  569,  816,  568,  615,  615,  615,  615,
+      676,  676,  632,  571,  616,  616,  616,  616,  631,  572,
+      617,  617,  617,  617,  618,  618,  618,  618,  619,  619,
+      619,  619,  620,  620,  620,  620,  680,  681,  682,  615,
+      621,  621,  621,  621,  657,  657,  657,  657,  657,  657,
+      657,  626,  634,  667,  667,  667,  667,  683,  616,  668,
+      668,  668,  668,  669,  669,  669,  669,  619,  813,  618,
+      617,  620,  766,  621,  670,  670,  670,  670,  812,  671,
+
+      671,  671,  671,  672,  672,  672,  672,  673,  673,  673,
+      673,  695,  718,  810,  668,  873,  873,  682,  681,  680,
+      695,  695,  707,  707,  707,  707,  708,  708,  708,  708,
+      809,  669,  787,  790,  667,  807,  672,  790,  787,  806,
+      683,  804,  670,  671,  790,  787,  673,  709,  709,  709,
+      709,  710,  710,  710,  710,  711,  711,  711,  711,  712,
+      712,  712,  712,  713,  713,  713,  713,  795,  707,  740,
+      740,  740,  740,  718,  742,  742,  742,  742,  709,  743,
+      743,  743,  743,  803,  797,  795,  710,  799,  798,  793,
+      711,  797,  795,  792,  713,  744,  744,  744,  744,  745,
+
+      745,  745,  745,  746,  746,  746,  746,  742,  764,  764,
+      764,  764,  767,  767,  767,  767,  789,  740,  814,  786,
+      712,  768,  768,  768,  768,  814,  785,  784,  743,  769,
+      769,  769,  769,  770,  770,  770,  770,  779,  779,  764,
+      778,  778,  778,  778,  800,  746,  780,  780,  780,  780,
+      745,  779,  781,  781,  781,  781,  782,  782,  782,  782,
+      791,  796,  767,  783,  783,  783,  783,  801,  796,  805,
+      777,  768,  770,  769,  791,  796,  776,  778,  773,  805,
+      765,  791,  801,  808,  811,  844,  805,  844,  808,  801,
+      800,  762,  782,  844,  761,  808,  811,  800,  760,  753,
+
+      751,  750,  749,  811,  830,  830,  830,  830,  830,  830,
+      830,  831,  783,  862,  870,  862,  870,  748,  741,  783,
+      737,  862,  870,  736,  735,  734,  831,  831,  831,  831,
+      831,  831,  831,  837,  837,  837,  837,  837,  837,  837,
       837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
-
-      837,  838,  838,  838,  838,  838,  838,  838,  838,  838,
+      837,  837,  837,  837,  837,  838,  838,  838,  838,  838,
       838,  838,  838,  838,  838,  838,  838,  838,  838,  838,
-      838,  839,  839,  839,  839,  839,  839,  839,  839,  839,
+      838,  838,  838,  838,  838,  838,  838,  839,  839,  839,
       839,  839,  839,  839,  839,  839,  839,  839,  839,  839,
-      839,  840,  840,  840,  840,  840,  840,  840,  840,  840,
+      839,  839,  839,  839,  839,  839,  839,  839,  839,  840,
+
+      840,  840,  840,  840,  840,  840,  840,  840,  840,  840,
       840,  840,  840,  840,  840,  840,  840,  840,  840,  840,
       840,  841,  841,  841,  841,  841,  841,  841,  841,  841,
-      841,  841,  777,  841,  841,  841,  841,  841,  841,  842,
-      842,  842,  842,  842,  842,  844,  844,  844,  776,  775,
-      772,  844,  769,  768,  767,  844,  845,  845,  845,  845,
-
-      845,  845,  845,  845,  845,  845,  845,  766,  845,  845,
-      845,  845,  845,  845,  846,  846,  846,  846,  846,  846,
-      846,  846,  846,  846,  846,  764,  846,  846,  846,  846,
-      846,  846,  847,  763,  847,  761,  847,  847,  760,  759,
-      847,  752,  847,  847,  848,  848,  750,  749,  848,  748,
-      848,  848,  849,  849,  849,  849,  849,  849,  849,  747,
-      849,  849,  849,  849,  849,  849,  849,  849,  849,  849,
-      745,  849,  850,  850,  850,  850,  850,  850,  850,  850,
-      850,  850,  850,  850,  850,  850,  850,  850,  850,  850,
-      744,  850,  851,  851,  851,  851,  851,  851,  851,  851,
-
+      841,  841,  841,  841,  841,  841,  841,  841,  841,  841,
+      841,  841,  841,  842,  842,  842,  842,  842,  842,  842,
+      842,  842,  842,  842,  842,  733,  842,  842,  842,  842,
+      842,  842,  843,  843,  843,  843,  843,  843,  845,  732,
+      845,  845,  731,  729,  728,  845,  727,  726,  723,  845,
+      846,  846,  846,  846,  846,  846,  846,  846,  846,  846,
+      846,  846,  721,  846,  846,  846,  846,  846,  846,  847,
+
+      847,  847,  847,  847,  847,  847,  847,  847,  847,  847,
+      847,  720,  847,  847,  847,  847,  847,  847,  848,  877,
+      848,  877,  848,  848,  719,  717,  848,  877,  848,  848,
+      849,  849,  716,  715,  849,  714,  849,  849,  850,  850,
+      850,  850,  850,  850,  850,  850,  850,  705,  850,  850,
+      850,  850,  850,  850,  850,  850,  850,  850,  702,  850,
       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
-      851,  852,  852,  852,  852,  852,  852,  852,  852,  852,
-      852,  852,  742,  852,  852,  852,  852,  852,  852,  853,
-      853,  853,  853,  853,  853,  853,  853,  853,  853,  853,
-      741,  853,  853,  853,  853,  853,  853,  854,  740,  854,
-      739,  854,  736,  854,  854,  735,  734,  854,  733,  854,
-      854,  855,  855,  732,  731,  730,  855,  855,  855,  856,
-      856,  856,  856,  728,  856,  856,  856,  856,  856,  856,
-      727,  856,  856,  856,  856,  856,  856,  857,  857,  857,
-      726,  857,  725,  857,  857,  722,  720,  857,  719,  857,
-
-      857,  858,  858,  858,  858,  858,  858,  858,  858,  858,
-      858,  858,  718,  858,  858,  858,  858,  858,  858,  859,
-      859,  859,  859,  859,  859,  859,  859,  859,  859,  859,
-      716,  859,  859,  859,  859,  859,  859,  860,  860,  860,
-      860,  860,  860,  860,  860,  860,  860,  860,  860,  860,
-      860,  860,  860,  860,  860,  860,  860,  862,  715,  862,
-      714,  862,  862,  713,  712,  862,  711,  862,  862,  863,
-      710,  863,  709,  863,  863,  708,  707,  863,  706,  863,
-      863,  864,  864,  864,  864,  864,  864,  864,  864,  864,
-      864,  864,  864,  864,  864,  864,  864,  864,  864,  864,
+      851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
+      701,  851,  852,  852,  852,  852,  852,  852,  852,  852,
+      852,  852,  852,  852,  852,  852,  852,  852,  852,  852,
+
+      852,  852,  852,  853,  853,  853,  853,  853,  853,  853,
+      853,  853,  853,  853,  853,  699,  853,  853,  853,  853,
+      853,  853,  854,  854,  854,  854,  854,  854,  854,  854,
+      854,  854,  854,  854,  697,  854,  854,  854,  854,  854,
+      854,  855,  696,  855,  694,  855,  693,  855,  855,  692,
+      691,  855,  690,  855,  855,  856,  856,  689,  688,  687,
+      856,  856,  856,  857,  857,  857,  857,  857,  686,  857,
+      857,  857,  857,  857,  857,  685,  857,  857,  857,  857,
+      857,  857,  858,  858,  858,  684,  858,  679,  858,  858,
+      678,  677,  858,  666,  858,  858,  859,  859,  859,  859,
+
+      859,  859,  859,  859,  859,  859,  859,  859,  665,  859,
+      859,  859,  859,  859,  859,  860,  860,  860,  860,  860,
+      860,  860,  860,  860,  860,  860,  860,  664,  860,  860,
+      860,  860,  860,  860,  861,  861,  861,  861,  861,  861,
+      861,  861,  861,  861,  861,  861,  861,  861,  861,  861,
+      861,  861,  861,  861,  861,  861,  863,  663,  863,  661,
+      863,  863,  659,  658,  863,  655,  863,  863,  864,  654,
+      864,  652,  864,  864,  650,  649,  864,  647,  864,  864,
+      865,  865,  865,  865,  865,  865,  865,  865,  865,  865,
+      865,  865,  865,  865,  865,  865,  865,  865,  865,  865,
+
+      865,  865,  866,  866,  866,  866,  866,  866,  866,  866,
+      866,  646,  866,  866,  866,  866,  866,  866,  866,  866,
+      866,  866,  645,  866,  867,  867,  867,  867,  867,  867,
+      867,  867,  867,  644,  867,  867,  867,  867,  867,  867,
+      867,  867,  867,  867,  868,  868,  868,  868,  868,  868,
+      868,  868,  868,  642,  868,  868,  868,  868,  868,  868,
+      868,  868,  868,  868,  869,  869,  869,  869,  869,  869,
+      869,  869,  869,  869,  869,  869,  640,  869,  869,  869,
+      869,  869,  869,  871,  639,  871,  638,  871,  637,  871,
+      871,  636,  635,  871,  633,  871,  871,  872,  872,  872,
+
+      872,  872,  872,  872,  872,  630,  872,  872,  872,  872,
+      872,  872,  872,  872,  872,  872,  872,  872,  872,  874,
+      874,  874,  629,  874,  628,  874,  874,  627,  624,  874,
+      623,  874,  874,  875,  875,  875,  875,  875,  875,  875,
+      875,  875,  875,  875,  875,  614,  875,  875,  875,  875,
+      875,  875,  876,  876,  876,  612,  611,  606,  605,  604,
+      603,  602,  601,  876,  876,  598,  597,  876,  878,  596,
+      878,  595,  878,  878,  594,  593,  878,  591,  878,  878,
+      879,  879,  879,  879,  879,  879,  879,  879,  879,  879,
+      879,  879,  879,  879,  879,  879,  879,  879,  879,  879,
+
+      879,  879,  880,  880,  590,  880,  880,  880,  880,  880,
+      880,  880,  880,  880,  880,  880,  880,  880,  880,  880,
+      880,  880,  880,  880,  589,  588,  587,  586,  585,  584,
+      583,  582,  581,  579,  578,  576,  573,  563,  561,  560,
+      556,  547,  546,  545,  544,  542,  541,  540,  539,  532,
+      531,  530,  529,  528,  527,  526,  525,  524,  523,  522,
+      521,  519,  517,  516,  515,  514,  513,  512,  510,  509,
+      508,  507,  506,  505,  504,  503,  498,  497,  489,  486,
+      484,  483,  481,  480,  476,  475,  472,  463,  460,  459,
+      458,  457,  456,  455,  454,  452,  451,  449,  447,  440,
+
+      439,  437,  436,  435,  433,  432,  430,  425,  424,  423,
+      421,  419,  418,  417,  416,  415,  414,  412,  411,  409,
+      408,  404,  403,  397,  385,  384,  383,  382,  381,  380,
+      375,  373,  368,  367,  366,  365,  364,  362,  361,  360,
+      359,  358,  357,  356,  355,  354,  353,  352,  351,  341,
+      318,  317,  315,  307,  306,  302,  301,  298,  297,  296,
+      295,  291,  290,  289,  286,  285,  282,  279,  274,  266,
+      264,  255,  254,  253,  252,  248,  245,  243,  242,  241,
+      239,  238,  236,  235,  233,  231,  230,  228,  227,  226,
+      225,  224,  210,  208,  200,  199,  198,  196,  193,  192,
+
+      185,  184,  183,  181,  180,  177,  175,  174,  171,  170,
+      169,  157,  156,  154,  152,  151,  150,  144,  142,  138,
+      137,  136,  134,  131,  130,  129,  128,  126,  104,  102,
+       98,   97,   89,   88,   86,   85,   84,   83,   81,   80,
+       70,   69,   67,   64,   58,   57,   43,   42,   40,   38,
+       37,   36,   30,   25,   24,   21,   12,    8,  836,  836,
+      836,  836,  836,  836,  836,  836,  836,  836,  836,  836,
+      836,  836,  836,  836,  836,  836,  836,  836,  836,  836,
+      836,  836,  836,  836,  836,  836,  836,  836,  836,  836,
+      836,  836,  836,  836,  836,  836,  836,  836,  836,  836,
 
-      864,  865,  865,  865,  865,  865,  865,  865,  704,  865,
-      865,  865,  865,  865,  865,  865,  865,  865,  865,  701,
-      865,  866,  866,  866,  866,  866,  866,  866,  700,  866,
-      866,  866,  866,  866,  866,  866,  866,  866,  866,  867,
-      867,  867,  867,  867,  867,  867,  698,  867,  867,  867,
-      867,  867,  867,  867,  867,  867,  867,  868,  868,  868,
-      868,  868,  868,  868,  868,  868,  868,  868,  696,  868,
-      868,  868,  868,  868,  868,  870,  695,  870,  693,  870,
-      692,  870,  870,  691,  690,  870,  689,  870,  870,  871,
-      871,  871,  871,  871,  871,  688,  871,  871,  871,  871,
-
-      871,  871,  871,  871,  871,  871,  871,  871,  871,  873,
-      873,  873,  687,  873,  686,  873,  873,  685,  684,  873,
-      683,  873,  873,  874,  874,  874,  874,  874,  874,  874,
-      874,  874,  874,  874,  678,  874,  874,  874,  874,  874,
-      874,  876,  677,  876,  676,  876,  876,  672,  671,  876,
-      670,  876,  876,  877,  877,  877,  877,  877,  877,  877,
-      877,  877,  877,  877,  877,  877,  877,  877,  877,  877,
-      877,  877,  877,  878,  669,  878,  878,  878,  878,  878,
-      878,  878,  878,  878,  878,  878,  878,  878,  878,  878,
-      878,  878,  878,  668,  667,  666,  665,  664,  663,  662,
-
-      660,  658,  657,  654,  653,  651,  649,  648,  646,  645,
-      644,  643,  641,  639,  638,  637,  636,  635,  634,  632,
-      629,  628,  627,  626,  623,  622,  620,  619,  618,  617,
-      616,  615,  614,  613,  611,  610,  605,  604,  603,  602,
-      601,  600,  597,  596,  595,  594,  593,  592,  590,  589,
-      588,  587,  586,  585,  584,  583,  582,  581,  580,  578,
-      577,  575,  572,  562,  560,  559,  555,  554,  553,  552,
-      551,  550,  549,  548,  546,  545,  544,  543,  541,  540,
-      539,  538,  531,  530,  529,  528,  527,  526,  525,  524,
-      523,  522,  521,  520,  518,  516,  515,  514,  513,  512,
-
-      511,  509,  508,  507,  506,  505,  504,  503,  502,  497,
-      496,  488,  485,  483,  482,  480,  479,  475,  474,  471,
-      470,  469,  468,  467,  466,  463,  460,  459,  458,  457,
-      456,  455,  454,  452,  451,  449,  447,  440,  439,  437,
-      436,  435,  433,  432,  430,  425,  424,  423,  421,  419,
-      418,  417,  416,  415,  414,  412,  411,  409,  408,  404,
-      403,  397,  385,  384,  383,  382,  381,  380,  375,  373,
-      368,  367,  366,  365,  364,  362,  361,  360,  359,  358,
-      357,  356,  355,  354,  353,  352,  351,  341,  318,  317,
-      315,  307,  306,  302,  301,  298,  297,  296,  295,  291,
-
-      290,  289,  286,  285,  282,  279,  274,  266,  264,  255,
-      254,  253,  252,  248,  245,  243,  242,  241,  239,  238,
-      236,  235,  233,  231,  230,  228,  227,  226,  225,  224,
-      210,  208,  200,  199,  198,  196,  193,  192,  185,  184,
-      183,  181,  180,  177,  175,  174,  171,  170,  169,  157,
-      156,  154,  152,  151,  150,  144,  142,  138,  137,  136,
-      134,  131,  130,  129,  128,  126,  104,  102,   98,   97,
-       89,   88,   86,   85,   84,   83,   81,   80,   70,   69,
-       67,   64,   58,   57,   43,   42,   40,   38,   37,   36,
-       30,   25,   24,   21,   12,    8,  835,  835,  835,  835,
-
-      835,  835,  835,  835,  835,  835,  835,  835,  835,  835,
-      835,  835,  835,  835,  835,  835,  835,  835,  835,  835,
-      835,  835,  835,  835,  835,  835,  835,  835,  835,  835,
-      835,  835,  835,  835,  835,  835,  835,  835,  835,  835,
-      835,  835,  835,  835,  835,  835,  835,  835,  835,  835,
-      835,  835,  835,  835,  835,  835,  835,  835,  835,  835,
-      835,  835,  835,  835,  835,  835,  835,  835,  835,  835,
-      835,  835,  835,  835,  835,  835,  835,  835,  835,  835,
-      835,  835,  835,  835,  835,  835,  835,  835
+      836,  836,  836,  836,  836,  836,  836,  836,  836,  836,
+      836,  836,  836,  836,  836,  836,  836,  836,  836,  836,
+      836,  836,  836,  836,  836,  836,  836,  836,  836,  836,
+      836,  836,  836,  836,  836,  836,  836,  836,  836,  836,
+      836,  836,  836,  836,  836,  836,  836,  836,  836,  836
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -1623,13 +1681,13 @@ yy_match:
                        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                                {
                                yy_current_state = (int) yy_def[yy_current_state];
-                               if ( yy_current_state >= 836 )
+                               if ( yy_current_state >= 837 )
                                        yy_c = yy_meta[(unsigned int) yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
                        ++yy_cp;
                        }
-               while ( yy_base[yy_current_state] != 2197 );
+               while ( yy_base[yy_current_state] != 2459 );
 
 yy_find_action:
                yy_act = yy_accept[yy_current_state];
@@ -1956,6 +2014,18 @@ YY_RULE_SETUP
 case 52:
 YY_RULE_SETUP
 #line 390 "yaccParser/hslexer.flex"
+{
+                             fprintf(stderr, "Warning: \"%s\", line %d: Unrecognised pragma '",
+                               input_filename, hsplineno);
+                             format_string(stderr, (unsigned char *) yytext, yyleng);
+                             fputs("'\n", stderr);
+                             nested_comments = 1;
+                             PUSH_STATE(Comment);
+                           }
+       YY_BREAK
+case 53:
+YY_RULE_SETUP
+#line 398 "yaccParser/hslexer.flex"
 { POP_STATE; RETURN(END_UPRAGMA); }
        YY_BREAK
 
@@ -1964,149 +2034,149 @@ YY_RULE_SETUP
      * intentionally accepted as a keyword even for normal <Code>.
      */
 
-case 53:
+case 54:
 YY_RULE_SETUP
-#line 399 "yaccParser/hslexer.flex"
+#line 407 "yaccParser/hslexer.flex"
 { RETURN(CASE); }
        YY_BREAK
-case 54:
+case 55:
 YY_RULE_SETUP
-#line 400 "yaccParser/hslexer.flex"
+#line 408 "yaccParser/hslexer.flex"
 { RETURN(CLASS); }
        YY_BREAK
-case 55:
+case 56:
 YY_RULE_SETUP
-#line 401 "yaccParser/hslexer.flex"
+#line 409 "yaccParser/hslexer.flex"
 { RETURN(DATA); }
        YY_BREAK
-case 56:
+case 57:
 YY_RULE_SETUP
-#line 402 "yaccParser/hslexer.flex"
+#line 410 "yaccParser/hslexer.flex"
 { RETURN(DEFAULT); }
        YY_BREAK
-case 57:
+case 58:
 YY_RULE_SETUP
-#line 403 "yaccParser/hslexer.flex"
+#line 411 "yaccParser/hslexer.flex"
 { RETURN(DERIVING); }
        YY_BREAK
-case 58:
+case 59:
 YY_RULE_SETUP
-#line 404 "yaccParser/hslexer.flex"
+#line 412 "yaccParser/hslexer.flex"
 { RETURN(ELSE); }
        YY_BREAK
-case 59:
+case 60:
 YY_RULE_SETUP
-#line 405 "yaccParser/hslexer.flex"
+#line 413 "yaccParser/hslexer.flex"
 { RETURN(HIDING); }
        YY_BREAK
-case 60:
+case 61:
 YY_RULE_SETUP
-#line 406 "yaccParser/hslexer.flex"
+#line 414 "yaccParser/hslexer.flex"
 { RETURN(IF); }
        YY_BREAK
-case 61:
+case 62:
 YY_RULE_SETUP
-#line 407 "yaccParser/hslexer.flex"
+#line 415 "yaccParser/hslexer.flex"
 { RETURN(IMPORT); }
        YY_BREAK
-case 62:
+case 63:
 YY_RULE_SETUP
-#line 408 "yaccParser/hslexer.flex"
+#line 416 "yaccParser/hslexer.flex"
 { RETURN(INFIX); }
        YY_BREAK
-case 63:
+case 64:
 YY_RULE_SETUP
-#line 409 "yaccParser/hslexer.flex"
+#line 417 "yaccParser/hslexer.flex"
 { RETURN(INFIXL); }
        YY_BREAK
-case 64:
+case 65:
 YY_RULE_SETUP
-#line 410 "yaccParser/hslexer.flex"
+#line 418 "yaccParser/hslexer.flex"
 { RETURN(INFIXR); }
        YY_BREAK
-case 65:
+case 66:
 YY_RULE_SETUP
-#line 411 "yaccParser/hslexer.flex"
+#line 419 "yaccParser/hslexer.flex"
 { RETURN(INSTANCE); }
        YY_BREAK
-case 66:
+case 67:
 YY_RULE_SETUP
-#line 412 "yaccParser/hslexer.flex"
+#line 420 "yaccParser/hslexer.flex"
 { RETURN(INTERFACE); }
        YY_BREAK
-case 67:
+case 68:
 YY_RULE_SETUP
-#line 413 "yaccParser/hslexer.flex"
+#line 421 "yaccParser/hslexer.flex"
 { RETURN(MODULE); }
        YY_BREAK
-case 68:
+case 69:
 YY_RULE_SETUP
-#line 414 "yaccParser/hslexer.flex"
+#line 422 "yaccParser/hslexer.flex"
 { RETURN(OF); }
        YY_BREAK
-case 69:
+case 70:
 YY_RULE_SETUP
-#line 415 "yaccParser/hslexer.flex"
+#line 423 "yaccParser/hslexer.flex"
 { RETURN(RENAMING); }
        YY_BREAK
-case 70:
+case 71:
 YY_RULE_SETUP
-#line 416 "yaccParser/hslexer.flex"
+#line 424 "yaccParser/hslexer.flex"
 { RETURN(THEN); }
        YY_BREAK
-case 71:
+case 72:
 YY_RULE_SETUP
-#line 417 "yaccParser/hslexer.flex"
+#line 425 "yaccParser/hslexer.flex"
 { RETURN(TO); }
        YY_BREAK
-case 72:
+case 73:
 YY_RULE_SETUP
-#line 418 "yaccParser/hslexer.flex"
+#line 426 "yaccParser/hslexer.flex"
 { RETURN(TYPE); }
        YY_BREAK
-case 73:
+case 74:
 YY_RULE_SETUP
-#line 419 "yaccParser/hslexer.flex"
+#line 427 "yaccParser/hslexer.flex"
 { RETURN(WHERE); }
        YY_BREAK
-case 74:
+case 75:
 YY_RULE_SETUP
-#line 420 "yaccParser/hslexer.flex"
+#line 428 "yaccParser/hslexer.flex"
 { RETURN(IN); }
        YY_BREAK
-case 75:
+case 76:
 YY_RULE_SETUP
-#line 421 "yaccParser/hslexer.flex"
+#line 429 "yaccParser/hslexer.flex"
 { RETURN(LET); }
        YY_BREAK
-case 76:
+case 77:
 YY_RULE_SETUP
-#line 422 "yaccParser/hslexer.flex"
+#line 430 "yaccParser/hslexer.flex"
 { RETURN(CCALL); }
        YY_BREAK
-case 77:
+case 78:
 YY_RULE_SETUP
-#line 423 "yaccParser/hslexer.flex"
+#line 431 "yaccParser/hslexer.flex"
 { RETURN(CCALL_GC); }
        YY_BREAK
-case 78:
+case 79:
 YY_RULE_SETUP
-#line 424 "yaccParser/hslexer.flex"
+#line 432 "yaccParser/hslexer.flex"
 { RETURN(CASM); }
        YY_BREAK
-case 79:
+case 80:
 YY_RULE_SETUP
-#line 425 "yaccParser/hslexer.flex"
+#line 433 "yaccParser/hslexer.flex"
 { RETURN(CASM_GC); }
        YY_BREAK
-case 80:
+case 81:
 YY_RULE_SETUP
-#line 426 "yaccParser/hslexer.flex"
+#line 434 "yaccParser/hslexer.flex"
 { RETURN(SCC); }
        YY_BREAK
-case 81:
+case 82:
 YY_RULE_SETUP
-#line 427 "yaccParser/hslexer.flex"
+#line 435 "yaccParser/hslexer.flex"
 { RETURN(FORALL); }
        YY_BREAK
 
@@ -2114,119 +2184,119 @@ YY_RULE_SETUP
      * Haskell operators.  Nothing special about these.
      */
 
-case 82:
+case 83:
 YY_RULE_SETUP
-#line 435 "yaccParser/hslexer.flex"
+#line 443 "yaccParser/hslexer.flex"
 { RETURN(DOTDOT); }
        YY_BREAK
-case 83:
+case 84:
 YY_RULE_SETUP
-#line 436 "yaccParser/hslexer.flex"
+#line 444 "yaccParser/hslexer.flex"
 { RETURN(SEMI); }
        YY_BREAK
-case 84:
+case 85:
 YY_RULE_SETUP
-#line 437 "yaccParser/hslexer.flex"
+#line 445 "yaccParser/hslexer.flex"
 { RETURN(COMMA); }
        YY_BREAK
-case 85:
+case 86:
 YY_RULE_SETUP
-#line 438 "yaccParser/hslexer.flex"
+#line 446 "yaccParser/hslexer.flex"
 { RETURN(VBAR); }
        YY_BREAK
-case 86:
+case 87:
 YY_RULE_SETUP
-#line 439 "yaccParser/hslexer.flex"
+#line 447 "yaccParser/hslexer.flex"
 { RETURN(EQUAL); }
        YY_BREAK
-case 87:
+case 88:
 YY_RULE_SETUP
-#line 440 "yaccParser/hslexer.flex"
+#line 448 "yaccParser/hslexer.flex"
 { RETURN(LARROW); }
        YY_BREAK
-case 88:
+case 89:
 YY_RULE_SETUP
-#line 441 "yaccParser/hslexer.flex"
+#line 449 "yaccParser/hslexer.flex"
 { RETURN(RARROW); }
        YY_BREAK
-case 89:
+case 90:
 YY_RULE_SETUP
-#line 442 "yaccParser/hslexer.flex"
+#line 450 "yaccParser/hslexer.flex"
 { RETURN(DARROW); }
        YY_BREAK
-case 90:
+case 91:
 YY_RULE_SETUP
-#line 443 "yaccParser/hslexer.flex"
+#line 451 "yaccParser/hslexer.flex"
 { RETURN(DCOLON); }
        YY_BREAK
-case 91:
+case 92:
 YY_RULE_SETUP
-#line 444 "yaccParser/hslexer.flex"
+#line 452 "yaccParser/hslexer.flex"
 { RETURN(OPAREN); }
        YY_BREAK
-case 92:
+case 93:
 YY_RULE_SETUP
-#line 445 "yaccParser/hslexer.flex"
+#line 453 "yaccParser/hslexer.flex"
 { RETURN(CPAREN); }
        YY_BREAK
-case 93:
+case 94:
 YY_RULE_SETUP
-#line 446 "yaccParser/hslexer.flex"
+#line 454 "yaccParser/hslexer.flex"
 { RETURN(OBRACK); }
        YY_BREAK
-case 94:
+case 95:
 YY_RULE_SETUP
-#line 447 "yaccParser/hslexer.flex"
+#line 455 "yaccParser/hslexer.flex"
 { RETURN(CBRACK); }
        YY_BREAK
-case 95:
+case 96:
 YY_RULE_SETUP
-#line 448 "yaccParser/hslexer.flex"
+#line 456 "yaccParser/hslexer.flex"
 { RETURN(OCURLY); }
        YY_BREAK
-case 96:
+case 97:
 YY_RULE_SETUP
-#line 449 "yaccParser/hslexer.flex"
+#line 457 "yaccParser/hslexer.flex"
 { RETURN(CCURLY); }
        YY_BREAK
-case 97:
+case 98:
 YY_RULE_SETUP
-#line 450 "yaccParser/hslexer.flex"
+#line 458 "yaccParser/hslexer.flex"
 { RETURN(PLUS); }
        YY_BREAK
-case 98:
+case 99:
 YY_RULE_SETUP
-#line 451 "yaccParser/hslexer.flex"
+#line 459 "yaccParser/hslexer.flex"
 { RETURN(AT); }
        YY_BREAK
-case 99:
+case 100:
 YY_RULE_SETUP
-#line 452 "yaccParser/hslexer.flex"
+#line 460 "yaccParser/hslexer.flex"
 { RETURN(LAMBDA); }
        YY_BREAK
-case 100:
+case 101:
 YY_RULE_SETUP
-#line 453 "yaccParser/hslexer.flex"
+#line 461 "yaccParser/hslexer.flex"
 { RETURN(TYLAMBDA); }
        YY_BREAK
-case 101:
+case 102:
 YY_RULE_SETUP
-#line 454 "yaccParser/hslexer.flex"
+#line 462 "yaccParser/hslexer.flex"
 { RETURN(WILDCARD); }
        YY_BREAK
-case 102:
+case 103:
 YY_RULE_SETUP
-#line 455 "yaccParser/hslexer.flex"
+#line 463 "yaccParser/hslexer.flex"
 { RETURN(BQUOTE); }
        YY_BREAK
-case 103:
+case 104:
 YY_RULE_SETUP
-#line 456 "yaccParser/hslexer.flex"
+#line 464 "yaccParser/hslexer.flex"
 { RETURN(LAZY); }
        YY_BREAK
-case 104:
+case 105:
 YY_RULE_SETUP
-#line 457 "yaccParser/hslexer.flex"
+#line 465 "yaccParser/hslexer.flex"
 { RETURN(MINUS); }
        YY_BREAK
 
@@ -2236,49 +2306,49 @@ YY_RULE_SETUP
      * arbitrary precision numbers.
      */
 
-case 105:
+case 106:
 YY_RULE_SETUP
-#line 467 "yaccParser/hslexer.flex"
+#line 475 "yaccParser/hslexer.flex"
 { /* octal */
                         yylval.uid = xstrndup(yytext, yyleng - 1);
                         RETURN(INTPRIM);
                        }
        YY_BREAK
-case 106:
+case 107:
 YY_RULE_SETUP
-#line 471 "yaccParser/hslexer.flex"
+#line 479 "yaccParser/hslexer.flex"
 { /* octal */
                         yylval.uid = xstrndup(yytext, yyleng);
                         RETURN(INTEGER);
                        }
        YY_BREAK
-case 107:
+case 108:
 YY_RULE_SETUP
-#line 475 "yaccParser/hslexer.flex"
+#line 483 "yaccParser/hslexer.flex"
 { /* hexadecimal */
                         yylval.uid = xstrndup(yytext, yyleng - 1);
                         RETURN(INTPRIM);
                        }
        YY_BREAK
-case 108:
+case 109:
 YY_RULE_SETUP
-#line 479 "yaccParser/hslexer.flex"
+#line 487 "yaccParser/hslexer.flex"
 { /* hexadecimal */
                         yylval.uid = xstrndup(yytext, yyleng);
                         RETURN(INTEGER);
                        }
        YY_BREAK
-case 109:
+case 110:
 YY_RULE_SETUP
-#line 483 "yaccParser/hslexer.flex"
+#line 491 "yaccParser/hslexer.flex"
 {
                         yylval.uid = xstrndup(yytext, yyleng - 1);
                         RETURN(INTPRIM);
                        }
        YY_BREAK
-case 110:
+case 111:
 YY_RULE_SETUP
-#line 487 "yaccParser/hslexer.flex"
+#line 495 "yaccParser/hslexer.flex"
 {
                         yylval.uid = xstrndup(yytext, yyleng);
                         RETURN(INTEGER);
@@ -2289,25 +2359,25 @@ YY_RULE_SETUP
      * Floats and (for Glasgow extensions) primitive floats/doubles.
      */
 
-case 111:
+case 112:
 YY_RULE_SETUP
-#line 498 "yaccParser/hslexer.flex"
+#line 506 "yaccParser/hslexer.flex"
 {
                         yylval.uid = xstrndup(yytext, yyleng - 2);
                         RETURN(DOUBLEPRIM);
                        }
        YY_BREAK
-case 112:
+case 113:
 YY_RULE_SETUP
-#line 502 "yaccParser/hslexer.flex"
+#line 510 "yaccParser/hslexer.flex"
 {
                         yylval.uid = xstrndup(yytext, yyleng - 1);
                         RETURN(FLOATPRIM);
                        }
        YY_BREAK
-case 113:
+case 114:
 YY_RULE_SETUP
-#line 506 "yaccParser/hslexer.flex"
+#line 514 "yaccParser/hslexer.flex"
 {
                         yylval.uid = xstrndup(yytext, yyleng);
                         RETURN(FLOAT);
@@ -2318,9 +2388,9 @@ YY_RULE_SETUP
      * Funky ``foo'' style C literals for Glasgow extensions
      */
 
-case 114:
+case 115:
 YY_RULE_SETUP
-#line 517 "yaccParser/hslexer.flex"
+#line 525 "yaccParser/hslexer.flex"
 {
                         hsnewid(yytext + 2, yyleng - 4);
                         RETURN(CLITLIT);
@@ -2332,24 +2402,24 @@ YY_RULE_SETUP
      * for Glasgow extensions.
      */
 
-case 115:
+case 116:
 YY_RULE_SETUP
-#line 529 "yaccParser/hslexer.flex"
+#line 537 "yaccParser/hslexer.flex"
 { hsnewid(yytext, yyleng); RETURN(CONID); }
        YY_BREAK
-case 116:
+case 117:
 YY_RULE_SETUP
-#line 530 "yaccParser/hslexer.flex"
+#line 538 "yaccParser/hslexer.flex"
 { hsnewid(yytext, yyleng); RETURN(CONID); }
        YY_BREAK
-case 117:
+case 118:
 YY_RULE_SETUP
-#line 531 "yaccParser/hslexer.flex"
+#line 539 "yaccParser/hslexer.flex"
 { hsnewid(yytext, yyleng); RETURN(TYVAR_TEMPLATE_ID); }
        YY_BREAK
-case 118:
+case 119:
 YY_RULE_SETUP
-#line 533 "yaccParser/hslexer.flex"
+#line 541 "yaccParser/hslexer.flex"
 { 
                         hsnewid(yytext, yyleng);
                         RETURN(_isconstr(yytext) ? CONID : VARID);
@@ -2358,9 +2428,9 @@ YY_RULE_SETUP
 
 /* This SHOULDNAE work in "Code" (sigh) */
 
-case 119:
+case 120:
 YY_RULE_SETUP
-#line 540 "yaccParser/hslexer.flex"
+#line 548 "yaccParser/hslexer.flex"
 { 
                         if (! (nonstandardFlag || in_interface)) {
                            char errbuf[ERR_BUF_SIZE];
@@ -2372,17 +2442,17 @@ YY_RULE_SETUP
                         /* NB: ^^^^^^^^ : not the macro! */
                        }
        YY_BREAK
-case 120:
+case 121:
 YY_RULE_SETUP
-#line 550 "yaccParser/hslexer.flex"
+#line 558 "yaccParser/hslexer.flex"
 {
                         hsnewid(yytext, yyleng);
                         RETURN(_isconstr(yytext) ? CONID : VARID);
                        }
        YY_BREAK
-case 121:
+case 122:
 YY_RULE_SETUP
-#line 554 "yaccParser/hslexer.flex"
+#line 562 "yaccParser/hslexer.flex"
 {
                         hsnewid(yytext, yyleng);
                         RETURN(_isconstr(yytext) ? CONSYM : VARSYM);
@@ -2397,9 +2467,9 @@ YY_RULE_SETUP
        la-la land constructs as `{-a 900-line comment-} foo`.  (WDP 94/12)
     */
 
-case 122:
+case 123:
 YY_RULE_SETUP
-#line 569 "yaccParser/hslexer.flex"
+#line 577 "yaccParser/hslexer.flex"
 {      
                         hsnewid(yytext + 1, yyleng - 2);
                         RETURN(_isconstr(yytext+1) ? CONSYM : VARSYM);
@@ -2418,33 +2488,33 @@ YY_RULE_SETUP
      * are ignored with a warning.
      */
 
-case 123:
+case 124:
 YY_RULE_SETUP
-#line 588 "yaccParser/hslexer.flex"
+#line 596 "yaccParser/hslexer.flex"
 {
                         yylval.uhstring = installHstring(1, yytext+1);
                         RETURN(CHARPRIM);
                        }
        YY_BREAK
-case 124:
+case 125:
 YY_RULE_SETUP
-#line 592 "yaccParser/hslexer.flex"
+#line 600 "yaccParser/hslexer.flex"
 {
                         yylval.uhstring = installHstring(1, yytext+1);
                         RETURN(CHAR);
                        }
        YY_BREAK
-case 125:
+case 126:
 YY_RULE_SETUP
-#line 596 "yaccParser/hslexer.flex"
+#line 604 "yaccParser/hslexer.flex"
 {char errbuf[ERR_BUF_SIZE];
                         sprintf(errbuf, "'' is not a valid character (or string) literal\n");
                         hsperror(errbuf);
                        }
        YY_BREAK
-case 126:
+case 127:
 YY_RULE_SETUP
-#line 600 "yaccParser/hslexer.flex"
+#line 608 "yaccParser/hslexer.flex"
 {
                         hsmlcolno = hspcolno;
                         cleartext();
@@ -2452,9 +2522,9 @@ YY_RULE_SETUP
                         PUSH_STATE(Char);
                        }
        YY_BREAK
-case 127:
+case 128:
 YY_RULE_SETUP
-#line 606 "yaccParser/hslexer.flex"
+#line 614 "yaccParser/hslexer.flex"
 {
                         unsigned length;
                         char *text;
@@ -2481,9 +2551,9 @@ YY_RULE_SETUP
                         RETURN(CHARPRIM); 
                        }
        YY_BREAK
-case 128:
+case 129:
 YY_RULE_SETUP
-#line 631 "yaccParser/hslexer.flex"
+#line 639 "yaccParser/hslexer.flex"
 {
                         unsigned length;
                         char *text;
@@ -2504,9 +2574,9 @@ YY_RULE_SETUP
                         RETURN(CHAR); 
                        }
        YY_BREAK
-case 129:
+case 130:
 YY_RULE_SETUP
-#line 650 "yaccParser/hslexer.flex"
+#line 658 "yaccParser/hslexer.flex"
 { addtext(yytext, yyleng); }
        YY_BREAK
 
@@ -2523,26 +2593,26 @@ YY_RULE_SETUP
      * of normal characters and the close ".
      */
 
-case 130:
+case 131:
 YY_RULE_SETUP
-#line 668 "yaccParser/hslexer.flex"
+#line 676 "yaccParser/hslexer.flex"
 {
                         yylval.uhstring = installHstring(yyleng-3, yytext+1);
                            /* the -3 accounts for the " on front, "# on the end */
                         RETURN(STRINGPRIM); 
                        }
        YY_BREAK
-case 131:
+case 132:
 YY_RULE_SETUP
-#line 673 "yaccParser/hslexer.flex"
+#line 681 "yaccParser/hslexer.flex"
 {
                         yylval.uhstring = installHstring(yyleng-2, yytext+1);
                         RETURN(STRING); 
                        }
        YY_BREAK
-case 132:
+case 133:
 YY_RULE_SETUP
-#line 677 "yaccParser/hslexer.flex"
+#line 685 "yaccParser/hslexer.flex"
 {
                         hsmlcolno = hspcolno;
                         cleartext();
@@ -2550,9 +2620,9 @@ YY_RULE_SETUP
                         PUSH_STATE(String);
                        }
        YY_BREAK
-case 133:
+case 134:
 YY_RULE_SETUP
-#line 683 "yaccParser/hslexer.flex"
+#line 691 "yaccParser/hslexer.flex"
 {
                         unsigned length;
                         char *text;
@@ -2572,9 +2642,9 @@ YY_RULE_SETUP
                         RETURN(STRINGPRIM);
                        }
        YY_BREAK
-case 134:
+case 135:
 YY_RULE_SETUP
-#line 701 "yaccParser/hslexer.flex"
+#line 709 "yaccParser/hslexer.flex"
 {
                         unsigned length;
                         char *text;
@@ -2588,9 +2658,9 @@ YY_RULE_SETUP
                         RETURN(STRING); 
                        }
        YY_BREAK
-case 135:
+case 136:
 YY_RULE_SETUP
-#line 713 "yaccParser/hslexer.flex"
+#line 721 "yaccParser/hslexer.flex"
 { addtext(yytext, yyleng); }
        YY_BREAK
 
@@ -2608,228 +2678,228 @@ YY_RULE_SETUP
      * also needs to be able to escape the escape character ('\\').  Sigh.
      */
 
-case 136:
+case 137:
 YY_RULE_SETUP
-#line 731 "yaccParser/hslexer.flex"
+#line 739 "yaccParser/hslexer.flex"
 { PUSH_STATE(CharEsc); }
        YY_BREAK
-case 137:
+case 138:
 YY_RULE_SETUP
-#line 732 "yaccParser/hslexer.flex"
+#line 740 "yaccParser/hslexer.flex"
 /* Ignore */ ;
        YY_BREAK
-case 138:
+case 139:
 YY_RULE_SETUP
-#line 733 "yaccParser/hslexer.flex"
+#line 741 "yaccParser/hslexer.flex"
 { PUSH_STATE(StringEsc); noGap = TRUE; }
        YY_BREAK
-case 139:
+case 140:
 YY_RULE_SETUP
-#line 735 "yaccParser/hslexer.flex"
+#line 743 "yaccParser/hslexer.flex"
 { addchar(*yytext); POP_STATE; }
        YY_BREAK
-case 140:
+case 141:
 YY_RULE_SETUP
-#line 736 "yaccParser/hslexer.flex"
+#line 744 "yaccParser/hslexer.flex"
 { if (noGap) { addchar(*yytext); } POP_STATE; }
        YY_BREAK
-case 141:
+case 142:
 YY_RULE_SETUP
-#line 738 "yaccParser/hslexer.flex"
+#line 746 "yaccParser/hslexer.flex"
 { addchar(*yytext); POP_STATE; }
        YY_BREAK
-case 142:
+case 143:
 YY_RULE_SETUP
-#line 739 "yaccParser/hslexer.flex"
+#line 747 "yaccParser/hslexer.flex"
 { addchar('\000'); POP_STATE; }
        YY_BREAK
-case 143:
+case 144:
 YY_RULE_SETUP
-#line 740 "yaccParser/hslexer.flex"
+#line 748 "yaccParser/hslexer.flex"
 { addchar('\001'); POP_STATE; }
        YY_BREAK
-case 144:
+case 145:
 YY_RULE_SETUP
-#line 741 "yaccParser/hslexer.flex"
+#line 749 "yaccParser/hslexer.flex"
 { addchar('\002'); POP_STATE; }
        YY_BREAK
-case 145:
+case 146:
 YY_RULE_SETUP
-#line 742 "yaccParser/hslexer.flex"
+#line 750 "yaccParser/hslexer.flex"
 { addchar('\003'); POP_STATE; }
        YY_BREAK
-case 146:
+case 147:
 YY_RULE_SETUP
-#line 743 "yaccParser/hslexer.flex"
+#line 751 "yaccParser/hslexer.flex"
 { addchar('\004'); POP_STATE; }
        YY_BREAK
-case 147:
+case 148:
 YY_RULE_SETUP
-#line 744 "yaccParser/hslexer.flex"
+#line 752 "yaccParser/hslexer.flex"
 { addchar('\005'); POP_STATE; }
        YY_BREAK
-case 148:
+case 149:
 YY_RULE_SETUP
-#line 745 "yaccParser/hslexer.flex"
+#line 753 "yaccParser/hslexer.flex"
 { addchar('\006'); POP_STATE; }
        YY_BREAK
-case 149:
-#line 747 "yaccParser/hslexer.flex"
 case 150:
+#line 755 "yaccParser/hslexer.flex"
+case 151:
 YY_RULE_SETUP
-#line 747 "yaccParser/hslexer.flex"
+#line 755 "yaccParser/hslexer.flex"
 { addchar('\007'); POP_STATE; }
        YY_BREAK
-case 151:
-#line 749 "yaccParser/hslexer.flex"
 case 152:
+#line 757 "yaccParser/hslexer.flex"
+case 153:
 YY_RULE_SETUP
-#line 749 "yaccParser/hslexer.flex"
+#line 757 "yaccParser/hslexer.flex"
 { addchar('\010'); POP_STATE; }
        YY_BREAK
-case 153:
-#line 751 "yaccParser/hslexer.flex"
 case 154:
+#line 759 "yaccParser/hslexer.flex"
+case 155:
 YY_RULE_SETUP
-#line 751 "yaccParser/hslexer.flex"
+#line 759 "yaccParser/hslexer.flex"
 { addchar('\011'); POP_STATE; }
        YY_BREAK
-case 155:
-#line 753 "yaccParser/hslexer.flex"
 case 156:
+#line 761 "yaccParser/hslexer.flex"
+case 157:
 YY_RULE_SETUP
-#line 753 "yaccParser/hslexer.flex"
+#line 761 "yaccParser/hslexer.flex"
 { addchar('\012'); POP_STATE; }
        YY_BREAK
-case 157:
-#line 755 "yaccParser/hslexer.flex"
 case 158:
+#line 763 "yaccParser/hslexer.flex"
+case 159:
 YY_RULE_SETUP
-#line 755 "yaccParser/hslexer.flex"
+#line 763 "yaccParser/hslexer.flex"
 { addchar('\013'); POP_STATE; }
        YY_BREAK
-case 159:
-#line 757 "yaccParser/hslexer.flex"
 case 160:
+#line 765 "yaccParser/hslexer.flex"
+case 161:
 YY_RULE_SETUP
-#line 757 "yaccParser/hslexer.flex"
+#line 765 "yaccParser/hslexer.flex"
 { addchar('\014'); POP_STATE; }
        YY_BREAK
-case 161:
-#line 759 "yaccParser/hslexer.flex"
 case 162:
+#line 767 "yaccParser/hslexer.flex"
+case 163:
 YY_RULE_SETUP
-#line 759 "yaccParser/hslexer.flex"
+#line 767 "yaccParser/hslexer.flex"
 { addchar('\015'); POP_STATE; }
        YY_BREAK
-case 163:
+case 164:
 YY_RULE_SETUP
-#line 760 "yaccParser/hslexer.flex"
+#line 768 "yaccParser/hslexer.flex"
 { addchar('\016'); POP_STATE; }
        YY_BREAK
-case 164:
+case 165:
 YY_RULE_SETUP
-#line 761 "yaccParser/hslexer.flex"
+#line 769 "yaccParser/hslexer.flex"
 { addchar('\017'); POP_STATE; }
        YY_BREAK
-case 165:
+case 166:
 YY_RULE_SETUP
-#line 762 "yaccParser/hslexer.flex"
+#line 770 "yaccParser/hslexer.flex"
 { addchar('\020'); POP_STATE; }
        YY_BREAK
-case 166:
+case 167:
 YY_RULE_SETUP
-#line 763 "yaccParser/hslexer.flex"
+#line 771 "yaccParser/hslexer.flex"
 { addchar('\021'); POP_STATE; }
        YY_BREAK
-case 167:
+case 168:
 YY_RULE_SETUP
-#line 764 "yaccParser/hslexer.flex"
+#line 772 "yaccParser/hslexer.flex"
 { addchar('\022'); POP_STATE; }
        YY_BREAK
-case 168:
+case 169:
 YY_RULE_SETUP
-#line 765 "yaccParser/hslexer.flex"
+#line 773 "yaccParser/hslexer.flex"
 { addchar('\023'); POP_STATE; }
        YY_BREAK
-case 169:
+case 170:
 YY_RULE_SETUP
-#line 766 "yaccParser/hslexer.flex"
+#line 774 "yaccParser/hslexer.flex"
 { addchar('\024'); POP_STATE; }
        YY_BREAK
-case 170:
+case 171:
 YY_RULE_SETUP
-#line 767 "yaccParser/hslexer.flex"
+#line 775 "yaccParser/hslexer.flex"
 { addchar('\025'); POP_STATE; }
        YY_BREAK
-case 171:
+case 172:
 YY_RULE_SETUP
-#line 768 "yaccParser/hslexer.flex"
+#line 776 "yaccParser/hslexer.flex"
 { addchar('\026'); POP_STATE; }
        YY_BREAK
-case 172:
+case 173:
 YY_RULE_SETUP
-#line 769 "yaccParser/hslexer.flex"
+#line 777 "yaccParser/hslexer.flex"
 { addchar('\027'); POP_STATE; }
        YY_BREAK
-case 173:
+case 174:
 YY_RULE_SETUP
-#line 770 "yaccParser/hslexer.flex"
+#line 778 "yaccParser/hslexer.flex"
 { addchar('\030'); POP_STATE; }
        YY_BREAK
-case 174:
+case 175:
 YY_RULE_SETUP
-#line 771 "yaccParser/hslexer.flex"
+#line 779 "yaccParser/hslexer.flex"
 { addchar('\031'); POP_STATE; }
        YY_BREAK
-case 175:
+case 176:
 YY_RULE_SETUP
-#line 772 "yaccParser/hslexer.flex"
+#line 780 "yaccParser/hslexer.flex"
 { addchar('\032'); POP_STATE; }
        YY_BREAK
-case 176:
+case 177:
 YY_RULE_SETUP
-#line 773 "yaccParser/hslexer.flex"
+#line 781 "yaccParser/hslexer.flex"
 { addchar('\033'); POP_STATE; }
        YY_BREAK
-case 177:
+case 178:
 YY_RULE_SETUP
-#line 774 "yaccParser/hslexer.flex"
+#line 782 "yaccParser/hslexer.flex"
 { addchar('\034'); POP_STATE; }
        YY_BREAK
-case 178:
+case 179:
 YY_RULE_SETUP
-#line 775 "yaccParser/hslexer.flex"
+#line 783 "yaccParser/hslexer.flex"
 { addchar('\035'); POP_STATE; }
        YY_BREAK
-case 179:
+case 180:
 YY_RULE_SETUP
-#line 776 "yaccParser/hslexer.flex"
+#line 784 "yaccParser/hslexer.flex"
 { addchar('\036'); POP_STATE; }
        YY_BREAK
-case 180:
+case 181:
 YY_RULE_SETUP
-#line 777 "yaccParser/hslexer.flex"
+#line 785 "yaccParser/hslexer.flex"
 { addchar('\037'); POP_STATE; }
        YY_BREAK
-case 181:
+case 182:
 YY_RULE_SETUP
-#line 778 "yaccParser/hslexer.flex"
+#line 786 "yaccParser/hslexer.flex"
 { addchar('\040'); POP_STATE; }
        YY_BREAK
-case 182:
+case 183:
 YY_RULE_SETUP
-#line 779 "yaccParser/hslexer.flex"
+#line 787 "yaccParser/hslexer.flex"
 { addchar('\177'); POP_STATE; }
        YY_BREAK
-case 183:
+case 184:
 YY_RULE_SETUP
-#line 780 "yaccParser/hslexer.flex"
+#line 788 "yaccParser/hslexer.flex"
 { char c = yytext[1] - '@'; addchar(c); POP_STATE; }
        YY_BREAK
-case 184:
+case 185:
 YY_RULE_SETUP
-#line 781 "yaccParser/hslexer.flex"
+#line 789 "yaccParser/hslexer.flex"
 {
                          int i = strtol(yytext, NULL, 10);
                          if (i < NCHARS) {
@@ -2843,9 +2913,9 @@ YY_RULE_SETUP
                          POP_STATE;
                        }
        YY_BREAK
-case 185:
+case 186:
 YY_RULE_SETUP
-#line 793 "yaccParser/hslexer.flex"
+#line 801 "yaccParser/hslexer.flex"
 {
                          int i = strtol(yytext + 1, NULL, 8);
                          if (i < NCHARS) {
@@ -2859,9 +2929,9 @@ YY_RULE_SETUP
                          POP_STATE;
                        }
        YY_BREAK
-case 186:
+case 187:
 YY_RULE_SETUP
-#line 805 "yaccParser/hslexer.flex"
+#line 813 "yaccParser/hslexer.flex"
 {
                          int i = strtol(yytext + 1, NULL, 16);
                          if (i < NCHARS) {
@@ -2886,11 +2956,11 @@ YY_RULE_SETUP
      * to do.  Reported by Rajiv Mirani.  (WDP 95/08)
      */
 
-case 187:
-#line 831 "yaccParser/hslexer.flex"
 case 188:
+#line 839 "yaccParser/hslexer.flex"
+case 189:
 YY_RULE_SETUP
-#line 831 "yaccParser/hslexer.flex"
+#line 839 "yaccParser/hslexer.flex"
 { noGap = FALSE; }
        YY_BREAK
 
@@ -2900,35 +2970,35 @@ YY_RULE_SETUP
      * That's why the rules look so bizarre.
      */
 
-case 189:
+case 190:
 YY_RULE_SETUP
-#line 841 "yaccParser/hslexer.flex"
+#line 849 "yaccParser/hslexer.flex"
 { 
                          noGap = FALSE; nested_comments = 1; PUSH_STATE(Comment); 
                        }
        YY_BREAK
-case 190:
-#line 846 "yaccParser/hslexer.flex"
 case 191:
-#line 847 "yaccParser/hslexer.flex"
+#line 854 "yaccParser/hslexer.flex"
 case 192:
+#line 855 "yaccParser/hslexer.flex"
+case 193:
 YY_RULE_SETUP
-#line 847 "yaccParser/hslexer.flex"
+#line 855 "yaccParser/hslexer.flex"
 ;
        YY_BREAK
-case 193:
+case 194:
 YY_RULE_SETUP
-#line 848 "yaccParser/hslexer.flex"
+#line 856 "yaccParser/hslexer.flex"
 { nested_comments++; }
        YY_BREAK
-case 194:
+case 195:
 YY_RULE_SETUP
-#line 849 "yaccParser/hslexer.flex"
+#line 857 "yaccParser/hslexer.flex"
 { if (--nested_comments == 0) POP_STATE; }
        YY_BREAK
-case 195:
+case 196:
 YY_RULE_SETUP
-#line 850 "yaccParser/hslexer.flex"
+#line 858 "yaccParser/hslexer.flex"
 ;
        YY_BREAK
 
@@ -2938,9 +3008,9 @@ YY_RULE_SETUP
      * the error message.
      */
 
-case 196:
+case 197:
 YY_RULE_SETUP
-#line 860 "yaccParser/hslexer.flex"
+#line 868 "yaccParser/hslexer.flex"
 { 
                         fprintf(stderr, "\"%s\", line %d, column %d: Illegal character: `", 
                            input_filename, hsplineno, hspcolno + 1); 
@@ -2949,9 +3019,9 @@ YY_RULE_SETUP
                         hsperror("");
                        }
        YY_BREAK
-case 197:
+case 198:
 YY_RULE_SETUP
-#line 867 "yaccParser/hslexer.flex"
+#line 875 "yaccParser/hslexer.flex"
 { 
                         fprintf(stderr, "\"%s\", line %d, column %d: Illegal character: `",
                            input_filename, hsplineno, hspcolno + 1); 
@@ -2960,9 +3030,9 @@ YY_RULE_SETUP
                         hsperror("");
                        }
        YY_BREAK
-case 198:
+case 199:
 YY_RULE_SETUP
-#line 874 "yaccParser/hslexer.flex"
+#line 882 "yaccParser/hslexer.flex"
 {
                         fprintf(stderr, "\"%s\", line %d, column %d: Illegal character escape: `\\",
                            input_filename, hsplineno, hspcolno + 1); 
@@ -2971,9 +3041,9 @@ YY_RULE_SETUP
                         hsperror("");
                        }
        YY_BREAK
-case 199:
+case 200:
 YY_RULE_SETUP
-#line 881 "yaccParser/hslexer.flex"
+#line 889 "yaccParser/hslexer.flex"
 { if (nonstandardFlag) {
                              addtext(yytext, yyleng);
                           } else { 
@@ -2985,9 +3055,9 @@ YY_RULE_SETUP
                          }
                        }
        YY_BREAK
-case 200:
+case 201:
 YY_RULE_SETUP
-#line 891 "yaccParser/hslexer.flex"
+#line 899 "yaccParser/hslexer.flex"
 {
                         if (noGap) {
                             fprintf(stderr, "\"%s\", line %d, column %d: Illegal string escape: `\\", 
@@ -3018,14 +3088,14 @@ YY_RULE_SETUP
 
 case YY_STATE_EOF(Char):
 case YY_STATE_EOF(CharEsc):
-#line 920 "yaccParser/hslexer.flex"
+#line 928 "yaccParser/hslexer.flex"
 { 
                          hsplineno = hslineno; hspcolno = hscolno;
                          hsperror("unterminated character literal");
                        }
        YY_BREAK
 case YY_STATE_EOF(Comment):
-#line 924 "yaccParser/hslexer.flex"
+#line 932 "yaccParser/hslexer.flex"
 { 
                          hsplineno = hslineno; hspcolno = hscolno;
                          hsperror("unterminated comment"); 
@@ -3033,21 +3103,21 @@ case YY_STATE_EOF(Comment):
        YY_BREAK
 case YY_STATE_EOF(String):
 case YY_STATE_EOF(StringEsc):
-#line 928 "yaccParser/hslexer.flex"
+#line 936 "yaccParser/hslexer.flex"
 { 
                          hsplineno = hslineno; hspcolno = hscolno;
                          hsperror("unterminated string literal"); 
                        }
        YY_BREAK
 case YY_STATE_EOF(GhcPragma):
-#line 932 "yaccParser/hslexer.flex"
+#line 940 "yaccParser/hslexer.flex"
 {
                          hsplineno = hslineno; hspcolno = hscolno;
                          hsperror("unterminated interface pragma"); 
                        }
        YY_BREAK
 case YY_STATE_EOF(UserPragma):
-#line 936 "yaccParser/hslexer.flex"
+#line 944 "yaccParser/hslexer.flex"
 {
                          hsplineno = hslineno; hspcolno = hscolno;
                          hsperror("unterminated user-specified pragma"); 
@@ -3055,12 +3125,12 @@ case YY_STATE_EOF(UserPragma):
        YY_BREAK
 case YY_STATE_EOF(Code):
 case YY_STATE_EOF(GlaExt):
-#line 940 "yaccParser/hslexer.flex"
+#line 948 "yaccParser/hslexer.flex"
 { hsplineno = hslineno; hspcolno = hscolno; return(EOF); }
        YY_BREAK
-case 201:
+case 202:
 YY_RULE_SETUP
-#line 942 "yaccParser/hslexer.flex"
+#line 950 "yaccParser/hslexer.flex"
 YY_FATAL_ERROR( "flex scanner jammed" );
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
@@ -3352,7 +3422,7 @@ static yy_state_type yy_get_previous_state()
                while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                        {
                        yy_current_state = (int) yy_def[yy_current_state];
-                       if ( yy_current_state >= 836 )
+                       if ( yy_current_state >= 837 )
                                yy_c = yy_meta[(unsigned int) yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -3387,11 +3457,11 @@ yy_state_type yy_current_state;
        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                {
                yy_current_state = (int) yy_def[yy_current_state];
-               if ( yy_current_state >= 836 )
+               if ( yy_current_state >= 837 )
                        yy_c = yy_meta[(unsigned int) yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-       yy_is_jam = (yy_current_state == 835);
+       yy_is_jam = (yy_current_state == 836);
 
        return yy_is_jam ? 0 : yy_current_state;
        }
@@ -3924,7 +3994,7 @@ int main()
        return 0;
        }
 #endif
-#line 942 "yaccParser/hslexer.flex"
+#line 950 "yaccParser/hslexer.flex"
 
 
 /**********************************************************************