[svn:parrot] r42028 - in trunk: compilers/imcc include/parrot src/call

whiteknight at svn.parrot.org whiteknight at svn.parrot.org
Fri Oct 23 00:31:04 UTC 2009


Author: whiteknight
Date: Fri Oct 23 00:30:59 2009
New Revision: 42028
URL: https://trac.parrot.org/parrot/changeset/42028

Log:
[pcc] Add EXPERIMENTAL support for :call_sig on the callee param side only. This is not the final form of the implementation, but enough proof-of-concept to get some HLL developers using it. Tests forthcoming

Modified:
   trunk/compilers/imcc/imcc.l
   trunk/compilers/imcc/imcc.y
   trunk/compilers/imcc/imclexer.c
   trunk/compilers/imcc/imcparser.c
   trunk/compilers/imcc/imcparser.h
   trunk/compilers/imcc/pcc.c
   trunk/compilers/imcc/symreg.c
   trunk/compilers/imcc/symreg.h
   trunk/include/parrot/enums.h
   trunk/src/call/args.c

Modified: trunk/compilers/imcc/imcc.l
==============================================================================
--- trunk/compilers/imcc/imcc.l	Thu Oct 22 22:59:40 2009	(r42027)
+++ trunk/compilers/imcc/imcc.l	Fri Oct 23 00:30:59 2009	(r42028)
@@ -353,6 +353,7 @@
 ":named"        return ADV_NAMED;
 "=>"            return ADV_ARROW;
 ":invocant"     return ADV_INVOCANT;
+":call_sig"     return ADV_CALL_SIG;
 
 <emit,INITIAL>".namespace"    return NAMESPACE;
 <emit,INITIAL>".HLL"          return HLL;

Modified: trunk/compilers/imcc/imcc.y
==============================================================================
--- trunk/compilers/imcc/imcc.y	Thu Oct 22 22:59:40 2009	(r42027)
+++ trunk/compilers/imcc/imcc.y	Fri Oct 23 00:30:59 2009	(r42028)
@@ -1071,7 +1071,7 @@
 %token <t> HLL TK_LINE TK_FILE
 %token <t> GOTO ARG IF UNLESS PNULL SET_RETURN SET_YIELD
 %token <t> ADV_FLAT ADV_SLURPY ADV_OPTIONAL ADV_OPT_FLAG ADV_NAMED ADV_ARROW
-%token <t> NEW ADV_INVOCANT
+%token <t> NEW ADV_INVOCANT ADV_CALL_SIG
 %token <t> NAMESPACE DOT_METHOD
 %token <t> SUB SYM LOCAL LEXICAL CONST ANNOTATE
 %token <t> INC DEC GLOBAL_CONST
@@ -1706,6 +1706,7 @@
    | ADV_NAMED '(' STRINGC ')'  { adv_named_set(interp, $3);   $$ = 0; mem_sys_free($3); }
    | ADV_NAMED '(' USTRINGC ')' { adv_named_set_u(interp, $3); $$ = 0; mem_sys_free($3); }
    | UNIQUE_REG                 { $$ = VT_UNIQUE_REG; }
+   | ADV_CALL_SIG               { $$ = VT_CALL_SIG; }
    ;
 
 

Modified: trunk/compilers/imcc/imclexer.c
==============================================================================
--- trunk/compilers/imcc/imclexer.c	Thu Oct 22 22:59:40 2009	(r42027)
+++ trunk/compilers/imcc/imclexer.c	Fri Oct 23 00:30:59 2009	(r42028)
@@ -376,8 +376,8 @@
 	*yy_cp = '\0'; \
 	yyg->yy_c_buf_p = yy_cp;
 
-#define YY_NUM_RULES 147
-#define YY_END_OF_BUFFER 148
+#define YY_NUM_RULES 148
+#define YY_END_OF_BUFFER 149
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -385,124 +385,125 @@
 	flex_int32_t yy_verify;
 	flex_int32_t yy_nxt;
 	};
-static yyconst flex_int16_t yy_accept[1054] =
+static yyconst flex_int16_t yy_accept[1062] =
     {   0,
         0,    0,    0,    0,    0,    0,   16,   16,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        3,    3,  148,  134,  133,   10,  133,  134,  134,   11,
-      134,  134,  134,  134,  134,  134,  114,  134,   94,  134,
-      118,  118,  134,   86,  134,   88,  132,  132,  132,  132,
-      132,  132,  132,  132,  134,  134,   14,  133,  133,  134,
-      134,  134,  134,  132,   14,  146,  141,  136,  141,  146,
-      146,  146,  146,  146,  118,  118,  146,  144,  144,  144,
-      140,  140,   14,   16,   17,   16,   16,   16,   16,   16,
-       16,   16,   16,   16,   16,   16,  147,  134,    8,    8,
-
-      134,  134,    4,    4,    4,    4,    4,    4,    4,    4,
-        4,    4,    5,  134,    9,  134,  134,  134,  134,  134,
-      118,  118,  134,  134,  134,  134,   12,  134,  134,  134,
-      134,  134,  118,  118,  134,  134,  134,  147,    1,  147,
-      147,  147,  147,  147,  118,  118,  147,  147,  147,    3,
+        3,    3,  149,  135,  134,   10,  134,  135,  135,   11,
+      135,  135,  135,  135,  135,  135,  115,  135,   95,  135,
+      119,  119,  135,   87,  135,   89,  133,  133,  133,  133,
+      133,  133,  133,  133,  135,  135,   14,  134,  134,  135,
+      135,  135,  135,  133,   14,  147,  142,  137,  142,  147,
+      147,  147,  147,  147,  119,  119,  147,  145,  145,  145,
+      141,  141,   14,   16,   17,   16,   16,   16,   16,   16,
+       16,   16,   16,   16,   16,   16,  148,  135,    8,    8,
+
+      135,  135,    4,    4,    4,    4,    4,    4,    4,    4,
+        4,    4,    5,  135,    9,  135,  135,  135,  135,  135,
+      119,  119,  135,  135,  135,  135,   12,  135,  135,  135,
+      135,  135,  119,  119,  135,  135,  135,  148,    1,  148,
+      148,  148,  148,  148,  119,  119,  148,  148,  148,    3,
         2,    3,    3,    3,    3,    3,    3,    3,    3,    3,
-        3,  133,    0,   10,   91,    0,  123,    0,  130,  130,
-      130,  130,  130,   99,   83,  102,    0,   92,   97,    0,
-      118,   95,   96,  117,  108,  116,  116,  116,  116,  116,
-      116,  116,  116,  116,  116,  116,  116,  116,  116,  116,
+        3,  134,    0,   10,   92,    0,  124,    0,  131,  131,
+      131,  131,  131,  100,   84,  103,    0,   93,   98,    0,
+      119,   96,   97,  118,  109,  117,  117,  117,  117,  117,
+      117,  117,  117,  117,  117,  117,  117,  117,  117,  117,
 
-      116,  116,  100,   98,  117,    0,    0,  122,    0,    0,
+      117,  117,  101,   99,  118,    0,    0,  123,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   80,   87,   90,   64,   89,   81,  113,    0,  132,
-      115,  131,  132,   73,  132,  132,  132,  132,  132,  132,
-      103,   84,  104,   85,    0,  133,  116,  116,  116,  116,
-      116,  116,    0,    0,    0,    0,  141,  136,  141,    0,
-        0,    0,  145,  145,  145,  145,  144,    0,  142,  144,
-      140,  140,   16,   17,   16,   16,   16,   16,   16,   16,
+        0,    0,   81,   88,   91,   64,   90,   82,  114,    0,
+      133,  116,  132,  133,   74,  133,  133,  133,  133,  133,
+      133,  104,   85,  105,   86,    0,  134,  117,  117,  117,
+      117,  117,  117,    0,    0,    0,    0,  142,  137,  142,
+        0,    0,    0,  146,  146,  146,  146,  145,    0,  143,
+      145,  141,  141,   16,   17,   16,   16,   16,   16,   16,
        16,   16,   16,   16,   16,   16,   16,   16,   16,   16,
-       16,   16,   16,   16,    0,    0,    8,    0,    4,    4,
+       16,   16,   16,   16,   16,    0,    0,    8,    0,    4,
 
         4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
-        4,    4,    4,    4,    4,    4,    0,    9,    0,    0,
-        0,  123,    0,    0,    0,    0,  118,  117,    0,    0,
-      117,    0,    0,  122,    0,    0,    0,    0,    0,    0,
-        0,   12,    0,    0,    0,  123,    0,    0,    0,    0,
-      118,  117,    0,    0,  117,    0,    0,  122,    0,    0,
-        0,    0,    0,    0,    0,    1,    0,    0,    0,  123,
-        0,    0,    0,    0,  118,  117,    0,    0,  117,    0,
-        0,  122,    0,    0,    0,    0,    0,    0,    3,    2,
-        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
+        4,    4,    4,    4,    4,    4,    4,    0,    9,    0,
+        0,    0,  124,    0,    0,    0,    0,  119,  118,    0,
+        0,  118,    0,    0,  123,    0,    0,    0,    0,    0,
+        0,    0,   12,    0,    0,    0,  124,    0,    0,    0,
+        0,  119,  118,    0,    0,  118,    0,    0,  123,    0,
+        0,    0,    0,    0,    0,    0,    1,    0,    0,    0,
+      124,    0,    0,    0,    0,  119,  118,    0,    0,  118,
+        0,    0,  123,    0,    0,    0,    0,    0,    0,    3,
+        2,    3,    3,    3,    3,    3,    3,    3,    3,    3,
 
-        3,    3,    3,    3,    3,    3,    3,    3,    3,   93,
-      126,  127,  129,  128,    0,  116,  116,  116,  116,  116,
-      116,  116,  116,  116,  116,  116,  116,  116,  116,  116,
-      116,  116,  116,  116,  116,  116,  116,  116,  116,  116,
-      101,  117,  120,    0,  117,  121,  119,    0,    0,    0,
+        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
+       94,  127,  128,  130,  129,    0,  117,  117,  117,  117,
+      117,  117,  117,  117,  117,  117,  117,  117,  117,  117,
+      117,  117,  117,  117,  117,  117,  117,  117,  117,  117,
+      117,  102,  118,  121,    0,  118,  122,  120,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,  106,  105,   82,
-      112,    0,    0,  131,  132,   76,  132,   77,   78,  132,
-      132,  132,    0,  116,  116,    0,    0,  137,  143,  139,
-      145,  145,  145,  145,  145,  144,   16,   16,   16,   16,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  107,
+      106,   83,  113,    0,    0,  132,  133,   77,  133,   78,
+       79,  133,  133,  133,    0,  117,  117,    0,    0,  138,
+      144,  140,  146,  146,  146,  146,  146,  145,   16,   16,
 
        16,   16,   16,   16,   16,   16,   16,   16,   16,   16,
-       16,    0,    0,    0,    4,    4,    4,    4,    4,    4,
-        4,    4,    4,    4,    4,    4,    0,    0,    0,  117,
-      120,    0,  117,  121,  119,    0,    0,    0,    0,    0,
-        0,    0,    0,  117,  120,    0,  117,  121,  119,    0,
-        0,    0,    0,    0,    0,    0,    0,  117,  120,    0,
-      117,  121,  119,    0,    0,    0,    0,    0,    3,    3,
+       16,   16,   16,    0,    0,    0,    4,    4,    4,    4,
+        4,    4,    4,    4,    4,    4,    4,    4,    0,    0,
+        0,  118,  121,    0,  118,  122,  120,    0,    0,    0,
+        0,    0,    0,    0,    0,  118,  121,    0,  118,  122,
+      120,    0,    0,    0,    0,    0,    0,    0,    0,  118,
+      121,    0,  118,  122,  120,    0,    0,    0,    0,    0,
         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
-        3,    3,    0,  117,   67,  116,  116,  116,  116,   24,
-      116,  116,  116,  116,  116,   21,  116,  116,  116,  116,
+        3,    3,    3,    3,    0,  118,   68,  117,  117,  117,
+      117,   24,  117,  117,  117,  117,  117,   21,  117,  117,
 
-      116,  116,  116,  116,  116,  116,  116,   23,  116,  116,
-        0,    0,    0,    0,    0,    0,   45,    0,    0,    0,
+      117,  117,  117,  117,  117,  117,  117,  117,  117,   23,
+      117,  117,    0,    0,    0,    0,    0,    0,    0,   45,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  124,    0,    0,  107,    0,  125,    0,    0,    0,
-       72,   75,  132,  132,  132,  132,    0,  139,  145,  145,
-      145,  145,  144,  144,   16,   16,   16,   16,   16,   16,
+        0,    0,    0,    0,  125,    0,    0,  108,    0,  126,
+        0,    0,    0,   73,   76,  133,  133,  133,  133,    0,
+      140,  146,  146,  146,  146,  145,  145,   16,   16,   16,
        16,   16,   16,   16,   16,   16,   16,   16,   16,   16,
-        0,    0,    0,    0,    4,    4,    4,    4,    4,    4,
-        4,    4,    4,    4,    0,  117,    0,    0,    0,    0,
-      124,    0,    0,    0,    0,    0,  125,    0,    0,    0,
-
-        0,    0,    0,  117,    0,    0,    0,    0,  124,    0,
-        0,    0,    0,    0,  125,    0,    0,    0,    0,    0,
-        0,  117,    0,    0,    0,    0,  124,    0,    0,    0,
-        0,    0,  125,    0,    0,    0,    0,    0,    3,    3,
-        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
-        3,    3,    3,  116,  116,   27,  116,  116,   19,  116,
-      116,  116,  116,   18,  116,  116,  116,  116,  116,  116,
-      116,  116,  116,  116,  116,  116,   43,   59,    0,   40,
-        0,    0,   39,   38,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  132,  132,  132,  132,
-
-       13,    0,  135,   19,  145,   18,  144,  144,   16,   16,
-       16,   16,   15,   16,   19,   18,    0,    0,    4,    4,
-        4,    4,   19,   18,    0,    0,   19,   18,    0,    0,
-       19,   18,    0,    0,    3,    3,    3,    3,  116,  116,
-       69,  116,  116,  116,  116,  116,  116,  116,  116,   68,
-      110,  116,  116,  116,   71,  116,  116,  116,  116,  116,
-      116,   53,    0,    0,    0,    0,   37,   63,    0,    0,
-        0,   44,    0,    0,   50,    0,    0,  132,  132,   79,
-       74,  145,  144,  144,   16,   16,    0,    0,    4,    4,
-        0,    0,    0,    0,    0,    0,    3,    3,  116,  116,
-
-      116,  116,  116,  116,  116,  116,  116,  116,  116,  116,
-      116,  116,  116,   55,  116,  116,  116,  116,    0,    0,
-        0,   36,    0,    0,    0,    0,   60,    0,   46,  132,
-      132,  138,  144,  144,   16,   16,    0,    0,    4,    4,
-        0,    0,    0,    0,    0,    0,    3,    3,  116,  116,
-      116,  116,  116,  116,  116,  116,  116,  111,  116,   58,
-      116,  116,  116,  116,   31,   22,  116,  116,  116,    0,
-        0,    0,   47,    0,    0,    0,    0,    0,    7,   16,
-        7,    4,    4,    0,    7,    0,    7,    0,    7,    3,
-        3,   20,  116,  116,  116,   26,  116,  116,  116,  116,
-
-       30,  116,  116,  116,   28,  116,  116,   57,    0,    0,
-       65,   62,   61,   42,    0,    6,    6,    6,    6,    6,
-        3,  116,  116,  116,  116,   35,  116,  116,  116,   29,
-       66,  116,   54,   41,    0,    0,   25,  116,  116,   33,
-       51,  116,  116,   56,   49,   48,  116,   34,   52,   70,
-      109,   32,    0
+       16,   16,   16,    0,    0,    0,    0,    4,    4,    4,
+        4,    4,    4,    4,    4,    4,    4,    0,  118,    0,
+        0,    0,    0,  125,    0,    0,    0,    0,    0,  126,
+
+        0,    0,    0,    0,    0,    0,  118,    0,    0,    0,
+        0,  125,    0,    0,    0,    0,    0,  126,    0,    0,
+        0,    0,    0,    0,  118,    0,    0,    0,    0,  125,
+        0,    0,    0,    0,    0,  126,    0,    0,    0,    0,
+        0,    3,    3,    3,    3,    3,    3,    3,    3,    3,
+        3,    3,    3,    3,    3,    3,  117,  117,   27,  117,
+      117,   19,  117,  117,  117,  117,   18,  117,  117,  117,
+      117,  117,  117,  117,  117,  117,  117,  117,  117,   43,
+        0,   59,    0,   40,    0,    0,   39,   38,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+
+      133,  133,  133,  133,   13,    0,  136,   19,  146,   18,
+      145,  145,   16,   16,   16,   16,   15,   16,   19,   18,
+        0,    0,    4,    4,    4,    4,   19,   18,    0,    0,
+       19,   18,    0,    0,   19,   18,    0,    0,    3,    3,
+        3,    3,  117,  117,   70,  117,  117,  117,  117,  117,
+      117,  117,  117,   69,  111,  117,  117,  117,   72,  117,
+      117,  117,  117,  117,  117,   53,    0,    0,    0,    0,
+        0,   37,   63,    0,    0,    0,   44,    0,    0,   50,
+        0,    0,  133,  133,   80,   75,  146,  145,  145,   16,
+       16,    0,    0,    4,    4,    0,    0,    0,    0,    0,
+
+        0,    3,    3,  117,  117,  117,  117,  117,  117,  117,
+      117,  117,  117,  117,  117,  117,  117,  117,   55,  117,
+      117,  117,  117,    0,    0,    0,    0,   36,    0,    0,
+        0,    0,   60,    0,   46,  133,  133,  139,  145,  145,
+       16,   16,    0,    0,    4,    4,    0,    0,    0,    0,
+        0,    0,    3,    3,  117,  117,  117,  117,  117,  117,
+      117,  117,  117,  112,  117,   58,  117,  117,  117,  117,
+       31,   22,  117,  117,  117,    0,    0,    0,    0,   47,
+        0,    0,    0,    0,    0,    7,   16,    7,    4,    4,
+        0,    7,    0,    7,    0,    7,    3,    3,   20,  117,
+
+      117,  117,   26,  117,  117,  117,  117,   30,  117,  117,
+      117,   28,  117,  117,   57,   66,    0,    0,   65,   62,
+       61,   42,    0,    6,    6,    6,    6,    6,    3,  117,
+      117,  117,  117,   35,  117,  117,  117,   29,   67,  117,
+       54,   41,    0,    0,   25,  117,  117,   33,   51,  117,
+      117,   56,   49,   48,  117,   34,   52,   71,  110,   32,
+        0
     } ;
 
 static yyconst flex_int32_t yy_ec[256] =
@@ -548,281 +549,283 @@
        10,   10,   10,    1,    1
     } ;
 
-static yyconst flex_int16_t yy_base[1205] =
+static yyconst flex_int16_t yy_base[1213] =
     {   0,
-        0, 4296,   64, 4295,  129,   81,  194, 4294,  259,    0,
+        0, 4304,   64, 4303,  129,   81,  194, 4302,  259,    0,
       324,    0,   72,   77,  389,    0,  454,    0,  519,    0,
-      584,    0, 4318, 6973,   98, 6973,  106, 4292,   64, 6973,
-       83, 4291,  102, 4303,   82,  633, 6973,  640,  647,  638,
-      694,  724,  729,   48,  100,  645,  703,  741,  711,  750,
-      709,  726,  776,  777,  704,  726,  769,  734,  802,  795,
-      811,  787, 4290,  810, 4269, 6973,  806, 6973,  841,  715,
-      790, 4296,  830,  856,    0,  862, 4283,  751,  878,  844,
-      883,  907, 4262,    0, 6973, 4302,  781, 4290,  896,  900,
-      935,  896, 4256,  997, 1062, 4235, 6973,  921,  907, 1008,
-
-     4255,  641,    0,    0,  941,  963,  940, 1111,  934, 4253,
-     1173, 1238,  791,  749, 6973,  798,  927,  868, 1014, 1078,
-     1301, 1080,  942, 1363, 1428,  901, 6973,  920, 1043, 1036,
-     1149, 1092, 1491, 1164,  989, 1553, 1618,  933, 6973,  972,
-     1049, 1089, 1202, 1266, 1681, 1173, 1041, 1743, 1808,    0,
-     6973, 4273,  813, 4263, 1038, 1116, 1857, 1229, 4250, 1919,
-     1984, 1101, 1144, 6973, 6973,  851, 6973,    0,    0, 1139,
-     1209, 1254, 1260, 6973, 6973, 6973, 4261, 6973, 6973, 1273,
-     1374, 6973, 6973, 1278, 6973,    0, 4238, 4218, 4224, 1036,
-     4213, 4215,  726, 4211,  940,   59,  790,  851, 4217,  671,
-
-     4220, 4207, 4231, 6973, 1306, 1101, 1329, 6973, 1213,    0,
-     4202, 4203, 1103,  860, 1269,  831,  878, 4199,   16, 4199,
-     4192, 1289, 6973, 6973, 6973, 6973, 1169, 4227, 4226, 1101,
-     4241, 1337, 1389, 1192, 1390, 1374, 1400, 1391, 1401, 1446,
-     6973, 6973, 6973, 6973, 4187, 1255, 4192, 4192, 1288, 4202,
-     4132, 4129, 1158, 4114, 4111,  988, 1461, 6973, 1468, 4147,
-     1456,    0,    0, 4116, 4118,  974, 1003, 4160, 1464, 1444,
-     1486, 1496,    0, 6973, 1044,    0,    0, 4154, 1485, 1564,
-     1496, 4115, 4114, 1569, 1247, 1519,    0, 1503, 2031, 1213,
-     2078, 2143, 2208, 4103, 4112, 4111, 1629, 1092,    0, 1540,
-
-        0, 1529, 1635, 1658, 4110, 4109, 1675, 1270, 1581,    0,
-     1553, 2255, 1300, 2302, 2367, 2432, 1306, 6973, 1329, 1605,
-     1667, 1358, 1381, 1601, 1635, 1709, 2495, 1759, 1478, 1603,
-     1825, 1689, 1771, 1398, 1719, 2539, 1729, 2586, 2651, 2716,
-     1415, 6973, 1418, 1795, 1797, 1453, 1528, 1664, 1687, 1837,
-     2779, 1862, 1669, 1722, 1935, 1848, 1885, 1657, 1894, 2823,
-     1857, 2870, 2935, 3000, 1683, 6973, 1761, 1835, 1960, 1767,
-     1773, 1791, 1906, 1949, 3063, 1957, 1793, 1891, 2001, 2008,
-     2022, 1846, 2013, 3107, 2051, 3154, 3219, 3284,    0, 6973,
-     1299,    0,    0, 4146, 1927, 2089, 2094, 4107, 4106, 2208,
-
-     1843, 2048,    0, 1953, 3331, 1502, 3378, 3443, 3508, 2035,
-     2078, 2106, 2110, 2117, 2221,    0, 4121, 4101, 4105, 4101,
-     4097, 4104, 4097, 4088, 4092,  988, 4083, 4091,  999, 4099,
-     4083, 4089, 4090, 4082, 4094, 4074, 4073, 4088, 4080, 4081,
-     6973, 2225, 1897, 2230, 2237, 1994,    0, 4051, 4062, 4051,
-     2203, 4040, 4059, 4050, 4040, 4047, 4045, 4050, 4036, 4032,
-     4032, 4029, 4045, 4037, 4040, 1375, 4069, 6973, 6973, 4055,
-     6973, 1489, 4056, 2270, 2450, 2271, 2272, 2273, 2313, 2454,
-     2315, 2444, 4019, 4033, 4034, 4025, 4051, 6973, 2324,    0,
-        0, 4028, 4021, 4028, 4017, 2438, 2334, 4018, 3946, 2462,
-
-     1931, 2313, 2338, 2101, 3555, 1529, 3986, 1766, 3602, 3667,
-     3938, 3945, 3942, 2428, 2512, 3943, 3940, 2500, 1999, 2342,
-     2516, 2249, 3714, 2462, 3761, 3826, 2602, 2288, 2491, 2732,
-     2483, 2544, 2551, 2610, 3889, 2754, 2053, 2762, 3936, 4001,
-     2624, 2506, 2503, 2784, 2520, 2770, 2812, 2616, 4064, 2814,
-     2337, 2816, 4111, 4176, 2886, 2574, 2549, 3016, 2629, 2894,
-     2900, 2843, 4239, 3038, 2734, 3046, 4286, 4351, 2909, 3941,
-     3938, 3009, 2026, 2728, 2816, 2530, 4398, 1895, 3978, 2065,
-     4445, 4510, 2838, 3049,    0, 3935, 3938, 3936, 3928, 3944,
-     3938, 3942, 3939, 3930, 3926,    0, 3933, 3933, 3935, 3918,
-
-     3925, 3927, 3931, 3929, 3929, 3909, 3927,    0, 3916, 3915,
-     3912, 3905, 3917, 3899, 3898, 3902, 6973, 3910, 3899, 3881,
-     3870, 3882, 3874, 1139, 3880, 3866, 3867, 3873, 3866, 3878,
-     2311, 6973,    0, 3908, 6973, 2471, 6973,    0, 3893, 3908,
-     2754, 2763, 3038, 3080, 3078, 3082, 2130,    0, 3862, 3867,
-     3866, 3861, 1564, 2477, 3053, 3093, 3860, 3859, 2473,    0,
-        0, 3892, 2567,    0,    0, 4575, 3896, 4640, 3852, 2259,
-     3855, 3854, 1496, 1639, 3097, 3101, 3853, 3852, 2752,    0,
-     4705, 3890, 4770, 3846, 3170, 3178, 2764, 2804, 3135, 3314,
-     2262, 2572, 2781, 2836, 3316, 3322, 2576, 2638, 4835, 3053,
-
-     4900, 3845, 3182, 3192, 3030, 3130, 3324, 3329, 2740, 2808,
-     2914, 3040, 3331, 3406, 2825, 2888, 4965, 3140, 5030, 3844,
-     3395, 3402, 3142, 3300, 3538, 3540, 2908, 2929, 3096, 3203,
-     3546, 3548, 3018, 3103, 5095, 3180, 5160, 3783, 3292, 3320,
-     3778, 3777, 2815,    0,    0, 3810, 3041,    0,    0, 5225,
-     3814, 5290, 3770, 3760, 3765,    0, 3758, 3300,    0, 3759,
-     3773, 3754, 3769,    0, 3761, 3760, 3756, 3768, 3750, 3763,
-     3754, 3747, 3747, 3369, 3759, 3751, 6973, 6973, 3745, 6973,
-     3747, 3744, 6973, 6973, 3729, 3731, 3735, 3718, 3721, 3701,
-     3697, 3704, 3682, 3625, 3605, 3613, 3349, 3729, 3545, 3547,
-
-     6973, 3659,    0,    0, 3610,    0, 3513, 3079,    0,    0,
-     5355, 1111, 6973, 3654, 6973, 6973,  724,  926,    0,    0,
-     5420, 1408, 3121, 3205, 3166, 1041, 3302, 3312, 3316, 1054,
-     3404, 3416, 3377, 1164,    0,    0, 3379, 1266, 3599, 3592,
-        0, 3579, 3545, 3540, 3541, 3530, 3534, 3529, 3512,    0,
-     3518, 3513, 3456, 3399,    0, 3365, 3359, 3340, 3348, 3331,
-     3328,    0, 3318, 3302, 3305, 3292, 6973, 6973, 3273, 3271,
-     3157, 6973, 3151, 3107, 6973, 3095, 3058, 3613, 3614, 3573,
-     3615, 3429, 3512, 3514, 1565, 1691, 1231, 1736, 1834, 1929,
-     1546, 1668, 1738, 1912, 2402, 2418, 3389, 3390, 3020, 3483,
-
-     3012, 2999, 3005, 2969, 2972, 2881, 2871, 2866, 2817, 2807,
-     2782, 2725, 2728,    0, 2712, 2686, 2686, 2596, 2597, 2590,
-     2555, 6973, 2499, 2503, 2476, 2436, 6973, 2435, 6973, 3630,
-     3635, 3590, 3627, 3629, 1819, 2030, 1711, 1917, 2061, 2066,
-     2836, 3027, 3143, 3295, 3519, 3613, 3741, 3742, 2425, 2420,
-     2393, 2302, 2286, 2270, 2270, 2249, 2236,    0, 2219,    0,
-     2206, 2188, 2192, 2173,    0,    0, 2151, 2095, 2090, 2048,
-     2048, 1970, 6973, 1958, 1931, 1911, 1855, 2610, 1885, 2790,
-     1848, 2894, 1831, 3746, 3644, 3790, 3651, 3795, 3736, 3085,
-     1825,    0, 1776, 1727, 1660,    0, 1609, 1595, 1586, 1581,
-
-        0, 1529, 1524, 1498,    0, 1445, 1402,    0, 1365, 1338,
-     6973, 6973, 6973, 6973, 1333, 6973,    0, 3434, 3535, 3562,
-        0, 1303, 1281, 1220, 1192,    0, 1177, 1146, 1134,    0,
-        0, 1119,    0, 6973, 1097, 1074,    0,  767,  773,    0,
-      738,  662,  614,    0, 6973, 6973,  598,    0,    0,    0,
-        0,    0, 6973, 5485, 5491, 5501, 5509, 5513, 5521, 5528,
-     5539, 5550, 5561, 5572, 5579, 5590, 5601, 5612, 5623, 5634,
-     5645, 5656, 5667, 5678, 5689, 5700, 5711, 5722, 5733, 5744,
-     5755, 5766, 5777, 5788, 5794, 5804, 5810, 5816, 5821, 5829,
-     5838, 5844, 5848, 5854, 5861, 5872, 5883, 5894, 5905, 5916,
-
-     5927, 5938, 5949, 5960, 5971, 5982, 5993, 6004, 6015, 6026,
-     6037, 6048, 6059, 6070, 6081, 6092, 6103, 6114, 6120, 6125,
-     6131, 6140, 6151, 6162, 6169, 6177, 6183, 6189, 6195, 6202,
-     6213, 6224, 6235, 6246, 6257, 6264, 6275, 6286, 6297, 6308,
-     6319, 6330, 6341, 6352, 6363, 6374, 6385, 6396, 6407, 6418,
-     6429, 6440, 6451, 6462, 6473, 6484, 6495, 6506, 6517, 6523,
-     6534, 6545, 6556, 6563, 6571, 6577, 6583, 6590, 6601, 6612,
-     6623, 6634, 6645, 6652, 6663, 6674, 6685, 6696, 6707, 6718,
-     6729, 6740, 6751, 6762, 6773, 6784, 6795, 6806, 6817, 6828,
-     6839, 6850, 6861, 6872, 6883, 6894, 6905, 6911, 6919, 6925,
+      584,    0, 4326, 6980,   98, 6980,  106, 4300,   64, 6980,
+       83, 4299,  102, 4311,   82,  633, 6980,  640,  647,  638,
+      694,  724,  729,   48,  100,  645,  703,  741,  711,  769,
+      709,  743,  777,  782,  704,  710,  771,  734,  799,  789,
+      812,  777, 4298,  798, 4277, 6980,  837, 6980,  843,  715,
+      816, 4308,  857,  863,    0,  869, 4291,  726,  885,  797,
+      890,  914, 4270,    0, 6980, 4310,  810, 4300,  903,  907,
+      942,  903, 4285, 1004, 1069, 4243, 6980,  928,  914, 1015,
+
+     4263,  641,    0,    0,  854,  970,  947, 1118,  941, 4261,
+     1180, 1245,  819,  821, 6980,  830,  934,  909, 1021, 1085,
+     1308, 1087,  927, 1370, 1435,  877, 6980,  893, 1050,  940,
+     1043, 1099, 1498, 1171,  996, 1560, 1625,  952, 6980,  979,
+     1156, 1047, 1209, 1273, 1688, 1180, 1093, 1750, 1815,    0,
+     6980, 4281,  933, 4271, 1091, 1123, 1864, 1236, 4258, 1926,
+     1991, 1151, 1096, 6980, 6980,  946, 6980,    0,    0, 1156,
+     1216, 1261, 1267, 6980, 6980, 6980, 4269, 6980, 6980, 1280,
+     1381, 6980, 6980, 1285, 6980,    0, 4246, 4226, 4232, 1013,
+     4224, 4223,  721, 4219,  947,   59,  709,  856, 4225,  671,
+
+     4228, 4219, 4239, 6980, 1313, 1105, 1336, 6980, 1108,    0,
+     4210, 4220, 4210, 1113,  977, 1006,  810,  739, 4206,   16,
+     4206, 4199, 1215, 6980, 6980, 6980, 6980, 1176, 4234, 4233,
+     1330, 4248, 1397, 1398, 1381, 1446, 1455, 1447, 1457, 1456,
+     1473, 6980, 6980, 6980, 6980, 4194, 1213, 4199, 4199, 1267,
+     4209, 4139, 4136, 1214, 4121, 4118,  995, 1361, 6980, 1420,
+     4154, 1409,    0,    0, 4123, 4125, 1049, 1010, 4167, 1526,
+     1451, 1481, 1490,    0, 6980, 1032,    0,    0, 4161, 1534,
+     1571, 1576, 4122, 4121, 1633, 1254, 1588,    0, 1348, 2038,
+     1155, 2085, 2150, 2215, 4110, 4119, 4118, 1639, 1099,    0,
+
+     1311,    0, 1560, 1682, 1750, 4117, 4116, 1762, 1277, 1599,
+        0, 1502, 2262, 1296, 2309, 2374, 2439, 1337, 6980, 1345,
+     1536, 1671, 1357, 1388, 1500, 1526, 1716, 2502, 1832, 1643,
+     1663, 1844, 1677, 1783, 1405, 1726, 2546, 1736, 2593, 2658,
+     2723, 1473, 6980, 1484, 1791, 1803, 1494, 1505, 1547, 1683,
+     1892, 2786, 1942, 1673, 1729, 1964, 1853, 1901, 1522, 1856,
+     2830, 1885, 2877, 2942, 3007, 1532, 6980, 1554, 1842, 1967,
+     1608, 1641, 1797, 1944, 1956, 3070, 2008, 1808, 1866, 2031,
+     1905, 2101, 1679, 2020, 3114, 2066, 3161, 3226, 3291,    0,
+     6980, 1192,    0,    0, 4153, 1960, 2107, 2215, 4114, 4113,
+
+     2227, 1695, 2124,    0, 1934, 3338, 1582, 3385, 3450, 3515,
+     1897, 1999, 2023, 2027, 2043, 2244,    0, 4128, 4108, 4112,
+     4108, 4104, 4111, 4104, 4095, 4099, 1070, 4090, 4098, 1014,
+     4106, 4090, 4096, 4097, 4089, 4101, 4081, 4080, 4095, 4087,
+     4088, 6980, 2232, 1706, 2111, 2248, 2055,    0, 4058, 4060,
+     4068, 4057, 1727, 4046, 4065, 4056, 4046, 4053, 4051, 4056,
+     4039, 4038, 4038, 4035, 4051, 4039, 4046, 1201, 4075, 6980,
+     6980, 4061, 6980, 1681, 4062, 2277, 2457, 2278, 2279, 2280,
+     2320, 2461, 2322, 2451, 4025, 4039, 4040, 4031, 4057, 6980,
+     2331,    0,    0, 4034, 4027, 4034, 4023, 2445, 2341, 3955,
+
+     3952, 2469, 1848, 2320, 2345, 2093, 3562, 1982, 3992, 2094,
+     3609, 3674, 3944, 3951, 3948, 1647, 2519, 3949, 3946, 2507,
+     1938, 2349, 2523, 2223, 3721, 2469, 3768, 3833, 2609, 2068,
+     2272, 2739, 2482, 2551, 2558, 2617, 3896, 2506, 2344, 2761,
+     3943, 4008, 2631, 2295, 2556, 2751, 2623, 2772, 2792, 2806,
+     4071, 2795, 2513, 2814, 4118, 4183, 2825, 2479, 2579, 2893,
+     2636, 2905, 2915, 2901, 4246, 2858, 2741, 3035, 4293, 4358,
+     3029, 3947, 3944, 3007, 2006, 2565, 2758, 2474, 4405, 2099,
+     3984, 2480, 4452, 4517, 2847, 2909,    0, 3941, 3944, 3942,
+     3934, 3950, 3944, 3948, 3945, 3936, 3932,    0, 3939, 3939,
+
+     3940, 3924, 3931, 3933, 3937, 3935, 3935, 3915, 3933,    0,
+     3922, 3921, 3918, 3919, 3906, 3918, 3904, 3903, 3905, 6980,
+     3892, 3883, 3886, 3875, 3887, 3879,  861, 3885, 3871, 3872,
+     3878, 3871, 3880, 2507, 6980,    0, 3910, 6980, 2511, 6980,
+        0, 3898, 3913, 2814, 2815, 3045, 3046, 3054, 2848, 2029,
+        0, 3867, 3868, 3867, 3866, 1821, 2484, 3037, 3059, 3865,
+     3864, 2524,    0,    0, 3897, 2574,    0,    0, 4582, 3901,
+     4647, 3857, 2132, 3860, 3859,  724, 1376, 3063, 3089, 3858,
+     3857, 2904,    0, 4712, 3895, 4777, 3851, 3102, 3109, 3094,
+     3099, 3143, 3148, 2144, 2268, 3032, 3177, 3321, 3323, 2355,
+
+     2455, 4842, 3134, 4907, 3790, 3187, 3191, 3150, 3307, 3329,
+     3331, 2553, 2645, 3211, 3309, 3336, 3338, 2747, 2753, 4972,
+     3195, 5037, 3781, 3200, 3401, 3316, 3319, 3545, 3547, 2763,
+     2780, 3403, 3414, 3553, 3555, 2839, 2852, 5102, 3344, 5167,
+     3780, 3353, 3408, 3783, 3782, 2779,    0,    0, 3815, 2808,
+        0,    0, 5232, 3819, 5297, 3775, 3765, 3770,    0, 3763,
+     3057,    0, 3764, 3778, 3759, 3774,    0, 3766, 3765, 3761,
+     3773, 3755, 3768, 3759, 3752, 3752, 3307, 3763, 3761, 6980,
+     3764, 6980, 3759, 6980, 3757, 3746, 6980, 6980, 3734, 3737,
+     3739, 3716, 3715, 3707, 3701, 3713, 3693, 3702, 3684, 3626,
+
+     3552, 3736, 3554, 3737, 6980, 3669,    0,    0, 3619,    0,
+     3396, 3519,    0,    0, 5362, 1118, 6980, 3661, 6980, 6980,
+     1128,  765,    0,    0, 5427, 1480, 2929, 3037, 3014, 1171,
+     3090, 3122, 3098, 1211, 3189, 3213, 3363, 1266,    0,    0,
+     3381, 1336, 3617, 3616,    0, 3614, 3608, 3602, 3604, 3596,
+     3600, 3596, 3581,    0, 3589, 3581, 3545, 3557,    0, 3534,
+     3535, 3529, 3527, 3519, 3523,    0, 3479, 3484, 3465, 3374,
+     3356, 6980, 6980, 3331, 3326, 3301, 6980, 3292, 3281, 6980,
+     3291, 3283, 3555, 3620, 3425, 3430, 3431, 2847, 3520, 1611,
+     1698, 1299, 1618, 2512, 2595, 1193, 1553, 1622, 1743, 1841,
+
+     1919, 2425, 2754, 3259, 3161, 3149, 3138, 3136, 3081, 3083,
+     3073, 3062, 3056, 3044, 3044, 3034, 3016, 3017,    0, 3004,
+     2987, 2988, 2972, 2860, 2794, 2730, 2709, 6980, 2689, 2697,
+     2612, 2592, 6980, 2511, 6980, 3632, 3635, 3438, 3623, 3637,
+     1400, 1463, 2254, 2817, 2564, 2848, 1937, 3127, 3302, 3374,
+     3526, 3539, 3548, 3562, 2432, 2427, 2409, 2396, 2293, 2277,
+     2277, 2256, 2243,    0, 2226,    0, 2202, 2199, 2187, 2167,
+        0,    0, 2082, 2056, 2037, 2031, 1977, 1967, 1914, 6980,
+     1881, 1868, 1851, 1793, 1609, 1837, 2111, 1829, 2617, 1808,
+     3658, 3542, 3664, 3751, 3793, 3798, 2933, 1786,    0, 1727,
+
+     1707, 1695,    0, 1649, 1655, 1633, 1570,    0, 1534, 1460,
+     1444,    0, 1397, 1388,    0, 6980, 1366, 1282, 6980, 6980,
+     6980, 6980, 1280, 6980,    0, 3434, 3441, 3593,    0, 1233,
+     1218, 1201, 1158,    0, 1128, 1115, 1027,    0,    0,  907,
+        0, 6980,  898,  839,    0,  816,  767,    0,  719,  662,
+      614,    0, 6980, 6980,  598,    0,    0,    0,    0,    0,
+     6980, 5492, 5498, 5508, 5516, 5520, 5528, 5535, 5546, 5557,
+     5568, 5579, 5586, 5597, 5608, 5619, 5630, 5641, 5652, 5663,
+     5674, 5685, 5696, 5707, 5718, 5729, 5740, 5751, 5762, 5773,
+     5784, 5795, 5801, 5811, 5817, 5823, 5828, 5836, 5845, 5851,
+
+     5855, 5861, 5868, 5879, 5890, 5901, 5912, 5923, 5934, 5945,
+     5956, 5967, 5978, 5989, 6000, 6011, 6022, 6033, 6044, 6055,
+     6066, 6077, 6088, 6099, 6110, 6121, 6127, 6132, 6138, 6147,
+     6158, 6169, 6176, 6184, 6190, 6196, 6202, 6209, 6220, 6231,
+     6242, 6253, 6264, 6271, 6282, 6293, 6304, 6315, 6326, 6337,
+     6348, 6359, 6370, 6381, 6392, 6403, 6414, 6425, 6436, 6447,
+     6458, 6469, 6480, 6491, 6502, 6513, 6524, 6530, 6541, 6552,
+     6563, 6570, 6578, 6584, 6590, 6597, 6608, 6619, 6630, 6641,
+     6652, 6659, 6670, 6681, 6692, 6703, 6714, 6725, 6736, 6747,
+     6758, 6769, 6780, 6791, 6802, 6813, 6824, 6835, 6846, 6857,
 
-     6932, 6943, 6950, 6961
+     6868, 6879, 6890, 6901, 6912, 6918, 6926, 6932, 6939, 6950,
+     6957, 6968
     } ;
 
-static yyconst flex_int16_t yy_def[1205] =
+static yyconst flex_int16_t yy_def[1213] =
     {   0,
-     1053,    1,    1,    3, 1053,    5, 1053,    7, 1053,    9,
-     1053,   11,    9,    9, 1053,   15, 1053,   17, 1053,   19,
-     1053,   21, 1053, 1053, 1053, 1053, 1053, 1053, 1054, 1053,
-     1055, 1053, 1053, 1056, 1053, 1053, 1053, 1053, 1053, 1053,
-     1053, 1053, 1053, 1053, 1053, 1053, 1057, 1057, 1057, 1057,
-     1057, 1057, 1057, 1057, 1053, 1053, 1053, 1053, 1053, 1053,
-       39, 1053, 1053, 1057, 1053, 1053, 1053, 1053, 1053, 1054,
-     1058, 1056, 1053, 1059,   41, 1053, 1053, 1060, 1060, 1060,
-     1053, 1053, 1053, 1061, 1053, 1061, 1062, 1063, 1061, 1061,
-     1061,   91, 1061, 1064, 1064, 1061, 1053, 1053,   41, 1053,
-
-     1065, 1065, 1066, 1066, 1067, 1066, 1066, 1066,  108, 1066,
-     1068, 1068, 1054, 1069, 1053, 1069, 1070, 1071, 1069, 1069,
-     1069,  121, 1069, 1072, 1072, 1073, 1053, 1073, 1074, 1075,
-     1073, 1073, 1073,  133, 1073, 1076, 1076, 1077, 1053, 1077,
-     1078, 1079, 1077, 1077, 1077,  145, 1077, 1080, 1080, 1081,
-     1053, 1081, 1082, 1083, 1081, 1081, 1081,  157, 1081, 1084,
-     1084, 1053, 1053, 1053, 1053, 1054, 1053, 1054, 1085, 1085,
-     1085, 1085, 1085, 1053, 1053, 1053, 1086, 1053, 1053, 1053,
-     1053, 1053, 1053, 1053, 1053, 1087, 1087, 1087, 1087, 1087,
-     1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087,
+     1061,    1,    1,    3, 1061,    5, 1061,    7, 1061,    9,
+     1061,   11,    9,    9, 1061,   15, 1061,   17, 1061,   19,
+     1061,   21, 1061, 1061, 1061, 1061, 1061, 1061, 1062, 1061,
+     1063, 1061, 1061, 1064, 1061, 1061, 1061, 1061, 1061, 1061,
+     1061, 1061, 1061, 1061, 1061, 1061, 1065, 1065, 1065, 1065,
+     1065, 1065, 1065, 1065, 1061, 1061, 1061, 1061, 1061, 1061,
+       39, 1061, 1061, 1065, 1061, 1061, 1061, 1061, 1061, 1062,
+     1066, 1064, 1061, 1067,   41, 1061, 1061, 1068, 1068, 1068,
+     1061, 1061, 1061, 1069, 1061, 1069, 1070, 1071, 1069, 1069,
+     1069,   91, 1069, 1072, 1072, 1069, 1061, 1061,   41, 1061,
+
+     1073, 1073, 1074, 1074, 1075, 1074, 1074, 1074,  108, 1074,
+     1076, 1076, 1062, 1077, 1061, 1077, 1078, 1079, 1077, 1077,
+     1077,  121, 1077, 1080, 1080, 1081, 1061, 1081, 1082, 1083,
+     1081, 1081, 1081,  133, 1081, 1084, 1084, 1085, 1061, 1085,
+     1086, 1087, 1085, 1085, 1085,  145, 1085, 1088, 1088, 1089,
+     1061, 1089, 1090, 1091, 1089, 1089, 1089,  157, 1089, 1092,
+     1092, 1061, 1061, 1061, 1061, 1062, 1061, 1062, 1093, 1093,
+     1093, 1093, 1093, 1061, 1061, 1061, 1094, 1061, 1061, 1061,
+     1061, 1061, 1061, 1061, 1061, 1095, 1095, 1095, 1095, 1095,
+     1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095,
+
+     1095, 1095, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1096,
+     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
+     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1097,
+     1098, 1099, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098,
+     1098, 1061, 1061, 1061, 1061, 1061, 1061, 1095, 1095, 1095,
+     1095, 1095, 1095, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
+     1100, 1100, 1101, 1102, 1102, 1102, 1102, 1103, 1099, 1103,
+     1103, 1061, 1061, 1104, 1061, 1105, 1104, 1105, 1106, 1104,
+     1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104,
+     1104, 1107, 1061, 1107, 1104, 1061, 1061, 1061, 1097, 1108,
 
-     1087, 1087, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1088,
-     1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
-     1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1089, 1090,
-     1091, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090,
-     1053, 1053, 1053, 1053, 1053, 1053, 1087, 1087, 1087, 1087,
-     1087, 1087, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1092,
-     1092, 1093, 1094, 1094, 1094, 1094, 1095, 1091, 1095, 1095,
-     1053, 1053, 1096, 1053, 1097, 1096, 1097, 1098, 1096, 1096,
-     1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096,
-     1099, 1053, 1099, 1096, 1053, 1053, 1053, 1089, 1100, 1101,
-
-     1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100,
-     1100, 1100, 1100, 1102, 1053, 1102, 1103, 1053, 1103, 1104,
-     1104, 1103, 1104, 1105, 1105, 1103, 1103, 1103, 1103, 1103,
-     1103, 1103, 1103, 1103, 1103, 1103, 1103, 1106, 1053, 1106,
-     1107, 1053, 1107, 1108, 1108, 1107, 1108, 1109, 1109, 1107,
-     1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107,
-     1107, 1110, 1053, 1110, 1111, 1053, 1111, 1112, 1112, 1111,
-     1112, 1113, 1113, 1111, 1111, 1111, 1111, 1111, 1111, 1111,
-     1111, 1111, 1111, 1111, 1111, 1114, 1053, 1114, 1115, 1053,
-     1116, 1115, 1116, 1117, 1115, 1115, 1115, 1115, 1115, 1115,
-
-     1115, 1115, 1115, 1115, 1115, 1115, 1118, 1053, 1118, 1053,
-     1119, 1119, 1119, 1119, 1053, 1120, 1120, 1120, 1120, 1120,
-     1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120,
-     1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120,
-     1053, 1053, 1053, 1053, 1053, 1053, 1121, 1053, 1053, 1053,
-     1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
-     1053, 1053, 1053, 1053, 1053, 1122, 1123, 1053, 1053, 1053,
-     1053, 1124, 1125, 1126, 1126, 1126, 1126, 1126, 1126, 1126,
-     1126, 1126, 1053, 1120, 1120, 1053, 1127, 1053, 1127, 1128,
-     1129, 1129, 1129, 1129, 1129, 1130, 1131, 1131, 1131, 1131,
-
-     1131, 1131, 1131, 1131, 1131, 1132, 1133, 1134, 1135, 1053,
-     1131, 1053, 1053, 1136, 1137, 1137, 1137, 1137, 1137, 1137,
-     1137, 1137, 1137, 1138, 1139, 1053, 1140, 1140, 1140, 1140,
-     1140, 1140, 1140, 1140, 1140, 1141, 1142, 1143, 1144, 1053,
-     1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1146,
-     1147, 1148, 1149, 1053, 1150, 1150, 1150, 1150, 1150, 1150,
-     1150, 1150, 1150, 1151, 1152, 1153, 1154, 1053, 1155, 1155,
-     1155, 1155, 1155, 1155, 1155, 1155, 1155, 1156, 1157, 1158,
-     1159, 1053, 1053, 1053, 1160, 1160, 1160, 1160, 1160, 1160,
-     1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160,
-
-     1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160,
-     1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
-     1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
-     1161, 1053, 1161, 1162, 1053, 1163, 1053, 1163, 1164, 1053,
-     1165, 1165, 1165, 1165, 1165, 1165, 1053, 1166, 1167, 1167,
-     1167, 1167, 1168, 1168, 1169, 1169, 1169, 1169, 1170, 1169,
-     1170, 1171, 1172, 1169, 1172, 1173, 1169, 1053,  668, 1169,
-     1053, 1053, 1174, 1174, 1175, 1175, 1175, 1175, 1176, 1175,
-     1177, 1175, 1053,  683, 1178, 1178, 1178, 1178, 1179, 1179,
-     1178, 1179, 1180, 1180, 1181, 1181, 1178, 1181, 1182, 1178,
-
-     1053,  701, 1183, 1183, 1183, 1183, 1184, 1184, 1183, 1184,
-     1185, 1185, 1186, 1186, 1183, 1186, 1187, 1183, 1053,  719,
-     1188, 1188, 1188, 1188, 1189, 1189, 1188, 1189, 1190, 1190,
-     1191, 1191, 1188, 1191, 1192, 1188, 1053,  737, 1193, 1193,
-     1193, 1193, 1194, 1193, 1194, 1195, 1196, 1193, 1196, 1197,
-     1193, 1053,  752, 1198, 1198, 1198, 1198, 1198, 1198, 1198,
-     1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198,
-     1198, 1198, 1198, 1198, 1198, 1198, 1053, 1053, 1053, 1053,
-     1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
-     1053, 1053, 1053, 1053, 1053, 1053, 1199, 1199, 1199, 1199,
-
-     1053, 1053, 1200, 1200, 1200, 1200, 1201, 1201, 1202, 1202,
-     1053,  811, 1053, 1202, 1053, 1053, 1203, 1203, 1204, 1204,
-     1053,  821, 1178, 1178,  701,  701, 1183, 1183,  719,  719,
-     1188, 1188,  737,  737, 1193, 1193,  752,  752, 1198, 1198,
-     1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198,
-     1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198,
-     1198, 1198, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
-     1053, 1053, 1053, 1053, 1053, 1053, 1053, 1199, 1199, 1199,
-     1199, 1200, 1201, 1201,  811,  811, 1203, 1203,  821,  821,
-      701,  701,  719,  719,  737,  737,  752,  752, 1198, 1198,
-
-     1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198,
-     1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1053, 1053,
-     1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1199,
-     1199, 1053, 1201, 1201,  811,  811, 1203, 1203,  821,  821,
-      701,  701,  719,  719,  737,  737,  752,  752, 1198, 1198,
-     1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198,
-     1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1053,
-     1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1202,
-     1202, 1204, 1204, 1178, 1178, 1183, 1183, 1188, 1188, 1193,
-     1193, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198,
-
-     1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1053, 1053,
-     1053, 1053, 1053, 1053, 1053, 1053, 1202, 1178, 1183, 1188,
-     1193, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198,
-     1198, 1198, 1198, 1053, 1053, 1053, 1198, 1198, 1198, 1198,
-     1198, 1198, 1198, 1198, 1053, 1053, 1198, 1198, 1198, 1198,
-     1198, 1198,    0, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
-     1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
-     1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
-     1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
-     1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
-
-     1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
-     1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
-     1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
-     1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
-     1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
-     1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
-     1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
-     1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
-     1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
-     1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
+     1109, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108,
+     1108, 1108, 1108, 1108, 1110, 1061, 1110, 1111, 1061, 1111,
+     1112, 1112, 1111, 1112, 1113, 1113, 1111, 1111, 1111, 1111,
+     1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1114, 1061,
+     1114, 1115, 1061, 1115, 1116, 1116, 1115, 1116, 1117, 1117,
+     1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115,
+     1115, 1115, 1118, 1061, 1118, 1119, 1061, 1119, 1120, 1120,
+     1119, 1120, 1121, 1121, 1119, 1119, 1119, 1119, 1119, 1119,
+     1119, 1119, 1119, 1119, 1119, 1119, 1122, 1061, 1122, 1123,
+     1061, 1124, 1123, 1124, 1125, 1123, 1123, 1123, 1123, 1123,
+
+     1123, 1123, 1123, 1123, 1123, 1123, 1123, 1126, 1061, 1126,
+     1061, 1127, 1127, 1127, 1127, 1061, 1128, 1128, 1128, 1128,
+     1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128,
+     1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128,
+     1128, 1061, 1061, 1061, 1061, 1061, 1061, 1129, 1061, 1061,
+     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
+     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1130, 1131, 1061,
+     1061, 1061, 1061, 1132, 1133, 1134, 1134, 1134, 1134, 1134,
+     1134, 1134, 1134, 1134, 1061, 1128, 1128, 1061, 1135, 1061,
+     1135, 1136, 1137, 1137, 1137, 1137, 1137, 1138, 1139, 1139,
+
+     1139, 1139, 1139, 1139, 1139, 1139, 1139, 1140, 1141, 1142,
+     1143, 1061, 1139, 1061, 1061, 1144, 1145, 1145, 1145, 1145,
+     1145, 1145, 1145, 1145, 1145, 1146, 1147, 1061, 1148, 1148,
+     1148, 1148, 1148, 1148, 1148, 1148, 1148, 1149, 1150, 1151,
+     1152, 1061, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153,
+     1153, 1154, 1155, 1156, 1157, 1061, 1158, 1158, 1158, 1158,
+     1158, 1158, 1158, 1158, 1158, 1159, 1160, 1161, 1162, 1061,
+     1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1164,
+     1165, 1166, 1167, 1061, 1061, 1061, 1168, 1168, 1168, 1168,
+     1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168,
+
+     1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168, 1168,
+     1168, 1168, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
+     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
+     1061, 1061, 1061, 1169, 1061, 1169, 1170, 1061, 1171, 1061,
+     1171, 1172, 1061, 1173, 1173, 1173, 1173, 1173, 1173, 1061,
+     1174, 1175, 1175, 1175, 1175, 1176, 1176, 1177, 1177, 1177,
+     1177, 1178, 1177, 1178, 1179, 1180, 1177, 1180, 1181, 1177,
+     1061,  671, 1177, 1061, 1061, 1182, 1182, 1183, 1183, 1183,
+     1183, 1184, 1183, 1185, 1183, 1061,  686, 1186, 1186, 1186,
+     1186, 1187, 1187, 1186, 1187, 1188, 1188, 1189, 1189, 1186,
+
+     1189, 1190, 1186, 1061,  704, 1191, 1191, 1191, 1191, 1192,
+     1192, 1191, 1192, 1193, 1193, 1194, 1194, 1191, 1194, 1195,
+     1191, 1061,  722, 1196, 1196, 1196, 1196, 1197, 1197, 1196,
+     1197, 1198, 1198, 1199, 1199, 1196, 1199, 1200, 1196, 1061,
+      740, 1201, 1201, 1201, 1201, 1202, 1201, 1202, 1203, 1204,
+     1201, 1204, 1205, 1201, 1061,  755, 1206, 1206, 1206, 1206,
+     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
+     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1061,
+     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
+     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
+
+     1207, 1207, 1207, 1207, 1061, 1061, 1208, 1208, 1208, 1208,
+     1209, 1209, 1210, 1210, 1061,  815, 1061, 1210, 1061, 1061,
+     1211, 1211, 1212, 1212, 1061,  825, 1186, 1186,  704,  704,
+     1191, 1191,  722,  722, 1196, 1196,  740,  740, 1201, 1201,
+      755,  755, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
+     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
+     1206, 1206, 1206, 1206, 1206, 1206, 1061, 1061, 1061, 1061,
+     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
+     1061, 1061, 1207, 1207, 1207, 1207, 1208, 1209, 1209,  815,
+      815, 1211, 1211,  825,  825,  704,  704,  722,  722,  740,
+
+      740,  755,  755, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
+     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
+     1206, 1206, 1206, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
+     1061, 1061, 1061, 1061, 1061, 1207, 1207, 1061, 1209, 1209,
+      815,  815, 1211, 1211,  825,  825,  704,  704,  722,  722,
+      740,  740,  755,  755, 1206, 1206, 1206, 1206, 1206, 1206,
+     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
+     1206, 1206, 1206, 1206, 1206, 1061, 1061, 1061, 1061, 1061,
+     1061, 1061, 1061, 1061, 1061, 1061, 1210, 1210, 1212, 1212,
+     1186, 1186, 1191, 1191, 1196, 1196, 1201, 1201, 1206, 1206,
+
+     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
+     1206, 1206, 1206, 1206, 1206, 1061, 1061, 1061, 1061, 1061,
+     1061, 1061, 1061, 1061, 1210, 1186, 1191, 1196, 1201, 1206,
+     1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
+     1206, 1061, 1061, 1061, 1206, 1206, 1206, 1206, 1206, 1206,
+     1206, 1206, 1061, 1061, 1206, 1206, 1206, 1206, 1206, 1206,
+        0, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
+     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
+     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
+     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
+
+     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
+     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
+     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
+     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
+     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
+     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
+     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
+     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
+     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
+     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
 
-     1053, 1053, 1053, 1053
+     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
+     1061, 1061
     } ;
 
-static yyconst flex_int16_t yy_nxt[7039] =
+static yyconst flex_int16_t yy_nxt[7046] =
     {   0,
        24,   25,   26,   27,   25,   28,   29,   30,   31,   32,
        33,   34,   35,   36,   37,   38,   39,   40,   41,   42,
@@ -830,14 +833,14 @@
        47,   47,   48,   47,   48,   47,   48,   48,   47,   24,
        47,   47,   47,   47,   47,   47,   47,   49,   47,   50,
        47,   47,   51,   47,   52,   47,   47,   53,   47,   54,
-       47,   47,   47,   55,   56,   58,  462,   59,   58,   24,
-      167,  222,  223,   24,   24,  463,   24,   60,  113,   60,
+       47,   47,   47,   55,   56,   58,  464,   59,   58,   24,
+      167,  223,  224,   24,   24,  465,   24,   60,  113,   60,
        61,   24,   81,  113,   82,   81,   62,   63,   24,   24,
        41,   42,   42,   42,  178,   41,   42,   42,   42,  162,
 
-      430,  162,  162,  168,  431,   83,  179,  162,  164,  162,
+      431,  162,  162,  168,  432,   83,  179,  162,  164,  162,
       162,   47,  175,   47,  163,  170,   47,  171,   47,  172,
-      173,   64,  163,   47,  224,  225,  176,   24,   24,   66,
+      173,   64,  163,   47,  225,  226,  176,   24,   24,   66,
        67,   68,   69,   67,   66,   70,   66,   71,   66,   66,
        72,   66,   73,   66,   73,   74,   66,   75,   76,   76,
        76,   66,   77,   66,   66,   78,   78,   78,   78,   78,
@@ -895,712 +898,713 @@
       160,  160,  160,  150,  160,  160,  160,  160,  160,  160,
       160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
       160,  161,  160,  160,  160,  160,  160,  150,  150,  180,
-     1052,  181,  181,  181,  181,  203,  180,  182,  181,  181,
-      181,  181,  204,  268,  183,  184,  184,  184,  184,  226,
-      227,  185, 1051,  186,  186,  186,  186,  186,  187,  186,
-      186,  186,  186,  186,  186,  186,  298,  186,  188,  189,
+     1060,  181,  181,  181,  181,  203,  180,  182,  181,  181,
+      181,  181,  204,  269,  183,  184,  184,  184,  184,  227,
+      228,  185, 1059,  186,  186,  186,  186,  186,  187,  186,
+      186,  186,  186,  186,  186,  186,  299,  186,  188,  189,
       190,  186,  191,  192,  193,  186,  194,  195,  196,  197,
 
       186,  198,  186,  199,  200,  201,  186,  186,  186,  202,
-      205,  228,  181,  181,  181,  181,  437,  228,  229,  228,
-     1050,  167,  206,  207,  229,  231,  229,  208,  241,  209,
-      438,  231,  210,  231,  228,  246,  206,  246,  246,  207,
-      205,  229,  181,  181,  181,  181,  268,  209,  231,  228,
-      243,  318,  319,  207,  168,  210,  229,  208,  228,  232,
-      232,  232,  232,  231,  233,  229,  229,  242,  236,  207,
-      211,  424,  231,  268,  887,  212,  425,  237,  213,  214,
-      215,  216,  217,  218,  228,  228,  219,  276,  220,  221,
-      244,  229,  229,  224,  225, 1049,  234,  167,  231,  231,
-
-      318,  319,  235,  246,  164,  246,  246,  257,  258,  259,
-      257,  180,  245,  181,  181,  181,  181, 1048,  228,  392,
-      277,  238,  261, 1047,  261,  229,  261,  261,  211,  240,
-      168,  432,  231,  433,  239, 1053,  253,  214,  215,  254,
-      255,  218,  257,  258,  259,  257,  180,  221,  181,  181,
-      181,  181,  393,  186,  247,  238,  186,  167,  186,  229,
-      248,  249,  250,  251,  262,  252,  268,  186,  186,  186,
-      318,  325,  457,  186,  184,  184,  184,  184,  205,  322,
-      181,  181,  181,  181,  271,  258,  272,  271,  458,  270,
-      168,  207,  434,  229,  435,  208,  269,  269,  269,  269,
-
-      268,  264,  265,  342,  343,  452,  266,  207,  271,  258,
-      272,  271,  279,  453,  280,  280,  280,  280,  281,  281,
-      281,  281,  342,  343,  273,  297,  297,  297,  297,  318,
-      321,  273,  459,  322,  273,  366,  367,  460,  273,  184,
-      184,  184,  184,  299,  318,  319,  282,  177,  268,  273,
-      283,  284,  301,  280,  280,  280,  280,  273,  304,  304,
-      304,  304,  299,  285,  286,  337,  323,  295,  287,  299,
-      288,  296,  299,  289,  366,  367,  299,  285,  888,  302,
-      286,  303,  303,  303,  303,  427,  305,  299,  288,  428,
-      306,  342,  343,  429,  466,  299,  289,  273,  273,  467,
-
-      273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
-      273,  273,  361,  273,  273,  494,  318,  319,  229,  292,
-      273,  273,  273,  495,  205,  268,  297,  297,  297,  297,
-      326,  594,  327,  327,  327,  327,  273,  207,  342,  349,
-      598,  208,  599,  366,  367,  342,  345,  346,  595,  346,
-      276,  366,  369,  207,  395,  370,  396,  396,  396,  396,
-      273,  273,  273,  273,  385,  273,  273,  273,  273,  273,
-      273,  273,  273,  273,  273,  273,  273,  420,  273,  273,
-      318,  319,  347,  277,  292,  273,  273,  273,  371,  421,
-      338,  366,  373,  892,  342,  343,  328,  328,  328,  328,
-
-      370,  273,  162,  362,  162,  162,  894,  293,  317,  228,
-      352,  352,  352,  352,  268,  317,  229,  163,  317,  443,
-      443, 1046,  317,  231,  329,  273,  273,  307,  330,  303,
-      303,  303,  303,  317,  397,  397,  397,  397,  353,  308,
-      309,  317,  354, 1045,  310,  410,  311,  410,  410,  312,
-      514,  342,  343,  308,  450,  451,  309,  411,  411,  411,
-      411,  291,  398,  886,  311,  350,  399,  351,  351,  351,
-      351, 1044,  312,  299,  299,  299,  299,  299,  299,  789,
-      299,  299,  299,  299,  299,  299,  299,  299,  790,  299,
-      299, 1043,  341,  469,  470,  315,  299,  299,  299,  341,
-
-      228,  365,  341, 1042,  366,  367,  341,  229,  365,  450,
-      486,  365,  299,  386,  231,  365,  896,  341,  374,  506,
-      375,  375,  375,  375,  507,  341,  365,  412,  412,  412,
-      412,  446,  446,  446,  365, 1041,  299,  299,  299,  299,
-      299,  299,  299,  299, 1040,  299,  299,  299,  299,  299,
-      299,  299,  299,  268,  299,  299,  246,  389,  246,  246,
-      315,  299,  299,  299,  389,  501,  501,  389,  366,  367,
-     1039,  389,  413,  413,  413,  413,  937,  299,  414,  414,
-      414,  414,  389,  316,  376,  376,  376,  376,  519,  519,
-      389,  184,  184,  184,  184,  466,  184,  184,  184,  184,
-
-      467,  299,  299,  318,  319,  392,  466,  415,  318,  319,
-      454,  524,  377,  468,  455,  407,  378,  331,  898,  327,
-      327,  327,  327,  415,  442,  442,  442,  442,  456,  332,
-      333,  318,  319,  427,  334,  415,  335,  428,  393,  336,
-     1038,  485,  444,  332,  444,  228,  333,  445,  445,  445,
-      445,  415,  229, 1037,  335,  474,  474,  474,  474,  231,
-      318,  319,  336,  317,  317,  318,  319,  317,  317,  317,
-      317,  317,  317,  317,  317,  317,  317,  317, 1036,  317,
-      317,  632,  228,  318,  321,  339,  317,  317,  317,  229,
-      205, 1035,  181,  181,  181,  181,  231,  228,  228,  228,
-
-      318,  319,  317,  207,  229,  229,  229,  208,  228,  228,
-     1034,  231,  231,  231,  633,  229,  229,  342,  343,  207,
-      342,  343,  231,  231,  477,  478,  317,  317,  317,  317,
-      318,  319,  317,  317,  317,  317,  317,  317,  317,  317,
-      317,  317,  317,  479,  317,  317, 1033,  475,  476,  480,
-      339,  317,  317,  317,  228,  342,  343,  481,  314,  229,
-      890,  229,  257,  258,  259,  257,  268,  317,  231,  257,
-      258,  259,  257,  340,  489,  489,  489,  489,  488,  229,
-      318,  319,  269,  269,  269,  269,  268,  271,  258,  272,
-      271,  317,  317,  342,  343,  637,  482,  271,  258,  272,
-
-      271, 1032,  496,  281,  281,  281,  281,  355,  578,  351,
-      351,  351,  351,  579,  281,  281,  281,  281,  268,  356,
-      357,  504,  504,  504,  358,  497,  359,  528,  638,  360,
-      342,  345,  502,  356,  502,  660,  357,  503,  503,  503,
-      503,  497,  299, 1031,  359,  817,  177,  304,  304,  304,
-      304,  301,  360,  341,  341,  342,  343,  341,  341,  341,
-      341,  341,  341,  341,  341,  341,  341,  341,  661,  341,
-      341,  522,  522,  522, 1030,  363,  341,  341,  341,  229,
-      284, 1029,  280,  280,  280,  280,  268,  500,  500,  500,
-      500,  941,  341,  286,  520,  338,  520,  287,  497,  521,
-
-      521,  521,  521,  318,  325,  318,  319,  318,  321,  286,
-      935,  322,  322,  807,  497,  291,  341,  341,  341,  341,
-      342,  343,  341,  341,  341,  341,  341,  341,  341,  341,
-      341,  341,  341, 1028,  341,  341, 1027,  318,  325, 1026,
-      363,  341,  341,  341,  323,  205,  322,  297,  297,  297,
-      297,  307,  529,  303,  303,  303,  303,  341,  207,  342,
-      343,  268,  208,  364,  309, 1025,  342,  349,  310,  318,
-      321,  342,  343,  322,  207,  346,  304,  304,  304,  304,
-      309,  341,  341,  366,  367,  366,  367,  515,  818,  342,
-      349,  318,  319,  518,  518,  518,  518,  379,  346,  375,
-
-      375,  375,  375,  515,  515, 1024,  323,  531,  531,  380,
-      381,  318,  319,  942,  382,  978,  383,  338,  542,  384,
-      515,  318,  319,  380,  342,  343,  381,  328,  328,  328,
-      328,  318,  319,  268,  383,  536,  936,  534,  534,  534,
-      537,  291,  384,  365,  365,  366,  367,  365,  365,  365,
-      365,  365,  365,  365,  365,  365,  365,  365,  268,  365,
-      365,  318,  319,  366,  367,  387,  365,  365,  365,  366,
-      367,  543,  664,  318,  319,  366,  369,  328,  328,  328,
-      328,  938,  365,  943,  532, 1023,  532,  362,  527,  533,
-      533,  533,  533,  366,  373,  366,  367,  342,  345,  342,
-
-      345,  346,  370,  346,  527,  665,  365,  365,  365,  365,
-      366,  367,  365,  365,  365,  365,  365,  365,  365,  365,
-      365,  365,  365,  980,  365,  365, 1022,  318,  319,  991,
-      387,  365,  365,  365,  347,  983,  347,  366,  369,  342,
-      343,  370,  556,  530,  530,  530,  530,  365,  366,  367,
-      342,  343,  981,  388,  527,  352,  352,  352,  352,  342,
-      343,  573,  573,  550,  342,  343,  545,  545,  551,  291,
-      527,  365,  365,  400,  371,  396,  396,  396,  396,  939,
-      352,  352,  352,  352,  314,  401,  402,  342,  343,  979,
-      403,  541,  404,  366,  367,  405,  342,  343,  546,  401,
-
-      546,  744,  402,  547,  547,  547,  547,  541,  366,  373,
-      404, 1015,  548,  548,  548,  443,  443,  370,  405,  389,
-      389,  979,  389,  389,  389,  389,  389,  389,  389,  389,
-      389,  389,  389,  389,  745,  389,  389,  342,  343,  268,
-      557,  408,  389,  389,  389,  397,  397,  397,  397,  501,
-      501,  366,  367,  544,  544,  544,  544,  944,  389,  366,
-      367,  362,  366,  369,  541, 1014,  370,  376,  376,  376,
-      376,  576,  576,  576,  940,  376,  376,  376,  376,  314,
-      541, 1013,  389,  389,  389,  389,  555,  389,  389,  389,
-      389,  389,  389,  389,  389,  389,  389,  389,  389,  371,
-
-      389,  389,  555,  366,  367, 1012,  408,  389,  389,  389,
-      366,  367,  446,  446,  446,  366,  367,  519,  519,  558,
-      558,  558,  558,  389,  366,  367,  559,  559, 1011,  409,
-      555,  562,  562,  562,  981,  560,  410,  560,  410,  410,
-      561,  561,  561,  561,  573,  573,  555,  389,  389,  505,
-      505,  505,  505,  366,  367,  318,  694,  564,  505,  505,
-      505,  574,  565,  574,  691,  982,  575,  575,  575,  575,
-      983,  748,  505,  505,  505,  505,  505,  505,  273,  273,
-      291,  273,  273,  273,  273,  273,  273,  273,  273,  273,
-      273,  273,  273, 1010,  273,  273,  411,  411,  411,  411,
-
-      292,  273,  273,  273,  749,  400, 1009,  396,  396,  396,
-      396,  314,  397,  397,  397,  397,  314,  273,  402,  504,
-      504,  504,  403,  569,  412,  412,  412,  412,  413,  413,
-      413,  413,  801,  802,  402,  414,  414,  414,  414,  569,
-     1008,  273,  273,  273,  273, 1007,  273,  273,  273,  508,
-      273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
-      273,  273,  273,  273,  273,  273,  273,  273,  273,  509,
-      509,  509,  509,  509,  509,  509,  509,  509,  509,  509,
-      509,  509,  273,  509,  509,  509,  509,  509,  509,  509,
-      509,  509,  509,  509,  509,  509,  509,  509,  509,  509,
-
-      509,  509,  509,  509,  509,  509,  273,  273,  273,  273,
-     1006,  273,  273,  273,  273,  273,  273,  273,  273,  273,
-      273,  273,  273, 1005,  273,  273,  572,  572,  572,  572,
-      292,  273,  273,  273,  583, 1004,  583,  569, 1003,  584,
-      584,  584,  584,  442,  442,  442,  442,  273,  445,  445,
-      445,  445,  614,  569,  415,  445,  445,  445,  445, 1002,
-      615,  813,  814,  616,  318,  319,  510,  522,  522,  522,
-      415,  273,  273,  523,  523,  523,  523, 1001,  228,  228,
-      228,  228,  523,  523,  523,  229,  229,  229,  229, 1000,
-      318,  319,  231,  231,  231,  231,  523,  523,  523,  523,
-
-      523,  523,  299,  299,  299,  299,  299,  299,  999,  299,
-      299,  299,  299,  299,  299,  299,  299,  632,  299,  299,
-      998,  228,  642,  228,  315,  299,  299,  299,  229,  997,
-      229,  503,  503,  503,  503,  231,  996,  231,  687,  342,
-      712,  299,  489,  489,  489,  489,  488,  655,  709,  655,
-      633,  995,  656,  656,  656,  656,  503,  503,  503,  503,
-      521,  521,  521,  521,  645,  299,  299,  299,  299,  299,
-      299,  299,  299,  472,  299,  299,  299,  299,  299,  299,
-      299,  299,  299,  299,  299,  299,  299,  299,  299,  299,
-      299,  299,  299,  525,  525,  525,  525,  525,  525,  525,
-
-      525,  525,  525,  525,  525,  525,  299,  525,  525,  525,
-      525,  525,  525,  525,  525,  525,  525,  525,  525,  525,
-      525,  525,  525,  525,  525,  525,  525,  525,  525,  525,
-      299,  299,  299,  299,  299,  299,  299,  299,  994,  299,
-      299,  299,  299,  299,  299,  299,  299,  945,  299,  299,
-      268,  386,  228,  229,  315,  299,  299,  299,  228,  229,
-      268,  993,  228,  946,  299,  229,  231,  386,  634,  229,
-      992,  299,  231,  680,  673,  977,  231,  637,  674,  660,
-      500,  500,  500,  500,  653,  318,  319,  976,  654,  646,
-      526,  497,  229,  318,  319,  299,  299,  318,  319,  268,
-
-      643,  531,  531,  641,  644,  342,  343,  497,  342,  343,
-      638,  331,  661,  327,  327,  327,  327,  975,  518,  518,
-      518,  518,  342,  343,  333,  675,  808,  675,  334,  515,
-      676,  676,  676,  676,  521,  521,  521,  521,  545,  545,
-      333,  318,  319,  688,  974,  515,  318,  319,  576,  576,
-      576,  366,  367,  318,  319,  706,  705,  535,  535,  535,
-      535,  973,  533,  533,  533,  533,  535,  535,  535,  533,
-      533,  533,  533,  664,  318,  690,  366,  367,  318,  319,
-      535,  535,  535,  535,  535,  535,  317,  317,  318,  319,
-      317,  317,  317,  317,  317,  317,  317,  317,  317,  317,
-
-      317,  724,  317,  317,  318,  319,  665,  972,  339,  317,
-      317,  317,  318,  319,  978,  685, 1016,  685,  342,  343,
-      686,  686,  686,  686,  723,  317,  342,  343,  534,  534,
-      534,  366,  367,  971,  548,  548,  548,  703,  970,  703,
-      318,  696,  704,  704,  704,  704,  969,  559,  559,  317,
-      317,  317,  317,  318,  319,  317,  317,  538,  317,  317,
-      317,  317,  317,  317,  317,  317,  317,  317,  317,  317,
-      317,  317,  317,  317,  317,  317,  317,  539,  539,  539,
-      539,  539,  539,  539,  539,  539,  539,  539,  539,  539,
-      317,  539,  539,  539,  539,  539,  539,  539,  539,  539,
-
-      539,  539,  539,  539,  539,  539,  539,  539,  539,  539,
-      539,  539,  539,  539,  317,  317,  317,  317,  318,  319,
-      317,  317,  317,  317,  317,  317,  317,  317,  317,  317,
-      317,  968,  317,  317,  318,  319,  366,  730,  339,  317,
-      317,  317,  342,  343,  967,  727,  575,  575,  575,  575,
-      530,  530,  530,  530,  299,  317,  318,  690,  634,  966,
-      691,  527,  228,  680,  318,  696,  318,  319,  697,  229,
-      965,  228,  342,  343,  540,  964,  231,  527,  229,  317,
-      317,  342,  343,  318,  694,  231,  342,  343,  547,  547,
-      547,  547,  691,  692,  980,  355, 1017,  351,  351,  351,
-
-      351,  698,  544,  544,  544,  544,  318,  319,  357,  823,
-      342,  708,  358,  541,  342,  343,  342,  708,  342,  714,
-      709,  744,  715,  963,  357,  342,  343,  342,  343,  541,
-      547,  547,  547,  547,  575,  575,  575,  575,  318,  694,
-      984,  549,  549,  549,  549,  366,  367,  691,  962,  824,
-      549,  549,  549,  710,  745,  716,  584,  584,  584,  584,
-      961,  562,  562,  562,  549,  549,  549,  549,  549,  549,
-      341,  341,  342,  343,  341,  341,  341,  341,  341,  341,
-      341,  341,  341,  341,  341,  338,  341,  341,  366,  367,
-      342,  714,  363,  341,  341,  341,  366,  367,  982,  721,
-
-     1016,  721,  366,  367,  722,  722,  722,  722,  960,  341,
-      366,  367,  561,  561,  561,  561,  342,  712,  561,  561,
-      561,  561,  739,  959,  739,  709,  958,  740,  740,  740,
-      740,  366,  726,  341,  341,  341,  341,  342,  343,  341,
-      341,  552,  341,  341,  341,  341,  341,  341,  341,  341,
-      341,  341,  341,  341,  341,  341,  341,  341,  341,  341,
-      341,  553,  553,  553,  553,  553,  553,  553,  553,  553,
-      553,  553,  553,  553,  341,  553,  553,  553,  553,  553,
-      553,  553,  553,  553,  553,  553,  553,  553,  553,  553,
-      553,  553,  553,  553,  553,  553,  553,  553,  341,  341,
-
-      341,  341,  342,  343,  341,  341,  341,  341,  341,  341,
-      341,  341,  341,  341,  341,  957,  341,  341,  366,  367,
-      366,  367,  363,  341,  341,  341,  956,  572,  572,  572,
-      572,  985,  342,  343,  558,  558,  558,  558,  569,  341,
-      366,  726,  342,  712,  727,  555,  228,  748,  366,  732,
-      955,  709,  733,  229,  569,  318,  319,  954,  554,  538,
-      231,  555,  953,  341,  341,  366,  367,  584,  584,  584,
-      584,  656,  656,  656,  656,  827,  338,  728,  949,  379,
-      749,  375,  375,  375,  375,  734,  228,  797,  228,  990,
-      228, 1021,  381,  229,  229,  229,  382,  229,  366,  730,
-
-      231,  268,  231,  929,  231,  366,  732,  727,  381,  366,
-      367,  656,  656,  656,  656,  676,  676,  676,  676,  676,
-      676,  676,  676,  318,  319,  563,  563,  563,  563,  798,
-      799,  884,  342,  343,  563,  563,  563,  318,  690,  800,
-      928,  691,  342,  343,  366,  367,  552,  986,  563,  563,
-      563,  563,  563,  563,  365,  365,  366,  367,  365,  365,
-      365,  365,  365,  365,  365,  365,  365,  365,  365,  927,
-      365,  365,  318,  319,  692,  828,  387,  365,  365,  365,
-      318,  319,  366,  367,  342,  343,  566,  831,  686,  686,
-      686,  686,  362,  365,  342,  343,  686,  686,  686,  686,
-
-      704,  704,  704,  704,  926,  366,  730,  318,  319,  925,
-      704,  704,  704,  704,  727,  338,  891,  365,  365,  365,
-      365,  366,  367,  365,  365,  566,  365,  365,  365,  365,
-      365,  365,  365,  365,  365,  365,  365,  365,  365,  365,
-      365,  365,  365,  365,  365,  567,  567,  567,  567,  567,
-      567,  567,  567,  567,  567,  567,  567,  567,  365,  567,
-      567,  567,  567,  567,  567,  567,  567,  567,  567,  567,
-      567,  567,  567,  567,  567,  567,  567,  567,  567,  567,
-      567,  567,  365,  365,  365,  365,  366,  367,  365,  365,
-      365,  365,  365,  365,  365,  365,  365,  365,  365,  987,
-
-      365,  365,  366,  367,  342,  343,  387,  365,  365,  365,
-      740,  740,  740,  740,  342,  343,  318,  690,  318,  696,
-      691,  924,  697,  365,  318,  696,  342,  708,  697,  923,
-      709,  342,  708,  342,  714,  709,  922,  715,  740,  740,
-      740,  740,  568,  842,  362,  832,  921,  365,  365,  577,
-      577,  577,  577,  692,  920,  698,  843,  228,  577,  577,
-      577,  698,  844,  710,  229,  362,  893,  919,  710,  918,
-      716,  231,  577,  577,  577,  577,  577,  577,  389,  389,
-      917,  389,  389,  389,  389,  389,  389,  389,  389,  389,
-      389,  389,  389,  916,  389,  389,  915,  366,  367,  878,
-
-      408,  389,  389,  389,  366,  367,  366,  367,  342,  714,
-      858,  914,  715,  722,  722,  722,  722,  389,  366,  367,
-      722,  722,  722,  722,  913,  859,  386,  895,  407,  897,
-      932,  860,  932,  932,  947,  948,  318,  319,  407,  407,
-      912,  389,  389,  389,  389,  716,  389,  389,  389,  580,
-      389,  389,  389,  389,  389,  389,  389,  389,  389,  389,
-      389,  389,  389,  389,  389,  389,  389,  389,  389,  581,
-      581,  581,  581,  581,  581,  581,  581,  581,  581,  581,
-      581,  581,  389,  581,  581,  581,  581,  581,  581,  581,
-      581,  581,  581,  581,  581,  581,  581,  581,  581,  581,
-
-      581,  581,  581,  581,  581,  581,  389,  389,  389,  389,
-      911,  389,  389,  389,  389,  389,  389,  389,  389,  389,
-      389,  389,  389,  988,  389,  389,  950,  229,  229,  229,
-      408,  389,  389,  389,  268,  268,  268,  342,  343,  951,
-      366,  726,  366,  726,  727,  952,  727,  389,  366,  732,
-      366,  732,  733,  228,  733,  228,  910,  933,  909,  934,
-      229,  908,  229,  883,  366,  367,  582,  231,  386,  231,
-      907,  389,  389,  505,  505,  505,  505,  728,  906,  728,
-      905,  228,  505,  505,  505,  734,  904,  734,  229,  903,
-      902,  932,  880,  932,  932,  231,  505,  505,  505,  505,
-
-      505,  505,  273,  273,  881,  273,  273,  273,  273,  273,
-      273,  273,  273,  273,  273,  273,  273,  989,  273,  273,
-      901,  228,  228,  228,  667,  273,  273,  273,  229,  229,
-      229,  978,  900,  979,  978,  231,  231,  231,  228,  979,
-      899,  273,  229,  228,  229,  229,  318,  319,  985,  268,
-      229,  268,  231,  342,  343,  987,  813,  231,  930,  931,
-      882,  801,  386,  877,  876,  273,  273,  273,  273,  875,
-      273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
-      273,  273,  291,  273,  273,  291,  291,  291,  291,  292,
-      273,  273,  273,  291,  291,  291,  291,  291,  291,  291,
-
-      291,  291,  291,  291,  291,  291,  273,  291,  291,  291,
-      291,  291,  291,  668,  291,  291,  291,  669,  291,  291,
-      291,  291,  291,  291,  291,  291,  291,  291,  291,  291,
-      273,  273,  523,  523,  523,  523,  874,  228,  366,  367,
-      989,  523,  523,  523,  229,  990,  991,  873,  318,  319,
-      984,  231, 1018,  872,  871,  523,  523,  523,  523,  523,
-      523,  299,  299,  299,  299,  299,  299,  870,  299,  299,
-      299,  299,  299,  299,  299,  299,  869,  299,  299,  868,
-      867,  879,  866,  682,  299,  299,  299,  865,  864,  863,
-      407,  407,  342,  343,  986,  862, 1019,  366,  367,  988,
-
-      299, 1020,  861,  857,  856,  855,  854,  853,  852,  851,
-      850,  849,  848,  847,  846,  845,  841,  840,  839,  838,
-      580,  744,  836,  835,  299,  299,  299,  299,  299,  299,
-      299,  299,  834,  299,  299,  299,  299,  299,  299,  299,
-      299,  314,  299,  299,  314,  314,  314,  314,  315,  299,
-      299,  299,  314,  314,  314,  314,  314,  314,  314,  314,
-      314,  314,  314,  314,  314,  299,  314,  314,  314,  314,
-      314,  314,  683,  314,  314,  314,  684,  314,  314,  314,
-      314,  314,  314,  314,  314,  314,  314,  314,  314,  299,
-      299,  318,  319,  830,  826,  822,  472,  820,  819,  816,
-
-      815,  812,  508,  660,  810,  809,  806,  535,  535,  535,
-      535,  805,  804,  803,  472,  640,  535,  535,  535,  632,
-      796,  795,  794,  793,  792,  791,  788,  787,  786,  785,
-      535,  535,  535,  535,  535,  535,  317,  317,  318,  319,
-      317,  317,  317,  317,  317,  317,  317,  317,  317,  317,
-      317,  784,  317,  317,  783,  782,  781,  780,  700,  317,
-      317,  317,  779,  778,  777,  776,  775,  774,  773,  772,
-      771,  770,  769,  768,  767,  317,  766,  765,  764,  763,
-      762,  761,  760,  759,  758,  757,  756,  755,  754,  744,
-      742,  741,  678,  677,  672,  671,  670,  660,  658,  317,
-
-      317,  317,  317,  318,  319,  317,  317,  317,  317,  317,
-      317,  317,  317,  317,  317,  317,  338,  317,  317,  338,
-      338,  338,  338,  339,  317,  317,  317,  338,  338,  338,
-      338,  338,  338,  338,  338,  338,  338,  338,  338,  338,
-      317,  338,  338,  338,  338,  338,  338,  701,  338,  338,
-      338,  702,  338,  338,  338,  338,  338,  338,  338,  338,
-      338,  338,  338,  338,  317,  317,  342,  343,  657,  652,
-      651,  650,  649,  488,  614,  598,  594,  647,  640,  635,
-      632,  630,  549,  549,  549,  549,  629,  628,  627,  626,
-      625,  549,  549,  549,  624,  623,  622,  621,  620,  619,
-
-      618,  617,  613,  612,  611,  549,  549,  549,  549,  549,
-      549,  341,  341,  342,  343,  341,  341,  341,  341,  341,
-      341,  341,  341,  341,  341,  341,  610,  341,  341,  609,
-      608,  607,  606,  718,  341,  341,  341,  605,  604,  603,
-      602,  601,  600,  597,  596,  593,  592,  591,  590,  589,
-      341,  588,  587,  586,  585,  571,  570,  392,  517,  516,
-      513,  512,  511,  499,  498,  276,  472,  493,  492,  488,
-      460,  458,  435,  432,  341,  341,  341,  341,  342,  343,
-      341,  341,  341,  341,  341,  341,  341,  341,  341,  341,
-      341,  362,  341,  341,  362,  362,  362,  362,  363,  341,
-
-      341,  341,  362,  362,  362,  362,  362,  362,  362,  362,
-      362,  362,  362,  362,  362,  341,  362,  362,  362,  362,
-      362,  362,  719,  362,  362,  362,  720,  362,  362,  362,
-      362,  362,  362,  362,  362,  362,  362,  362,  362,  341,
-      341,  366,  367,  430,  484,  421,  483,  472,  268,  471,
-      465,  464,  461,  449,  448,  441,  440,  563,  563,  563,
-      563,  439,  436,  426,  423,  422,  563,  563,  563,  419,
-      418,  417,  167,  406,  392,  390,  313,  268,  294,  290,
-      563,  563,  563,  563,  563,  563,  365,  365,  366,  367,
-      365,  365,  365,  365,  365,  365,  365,  365,  365,  365,
+      205,  229,  181,  181,  181,  181,  438,  229,  230,  229,
+     1058,  167,  206,  207,  230,  232,  230,  208,  242,  209,
+      439,  232,  210,  232,  244,  247,  206,  247,  247,  207,
+      205,  230,  181,  181,  181,  181,  269,  209,  269,  229,
+      433,  229,  434,  207,  168,  210,  230,  208,  230,  233,
+      233,  233,  233,  232,  234,  232,  425,  243,  237,  207,
+      211,  426,  212,  821,  245,  213, 1057,  229,  214,  215,
+      216,  217,  218,  219,  230,  229,  220,  269,  221,  222,
+      229,  232,  230,  461,  238,  225,  226,  230,  462,  232,
+
+      247,  164,  247,  247,  232,  180,  229,  181,  181,  181,
+      181, 1056,  230,  230,  246,  235,  277,  893,  211,  269,
+      232,  236,  239,  319,  320,  167,  254,  215,  216,  255,
+      256,  219,  319,  320,  241,  240, 1061,  222,  258,  259,
+      260,  258,  271,  239,  258,  259,  260,  258,  262,  278,
+      262,  459,  262,  262,  186,  248,  300,  186,  168,  186,
+      177,  249,  250,  251,  252,  302,  253,  460,  186,  186,
+      186,  263, 1055,  180,  186,  181,  181,  181,  181,  343,
+      344,  184,  184,  184,  184,  205, 1054,  181,  181,  181,
+      181,  272,  259,  273,  272,  343,  344,  435,  207,  436,
+
+      230,  793,  208,  270,  270,  270,  270,  269,  265,  266,
+      794,  319,  326,  267,  207,  272,  259,  273,  272,  280,
+      323,  281,  281,  281,  281,  282,  282,  282,  282,  319,
+      320,  274,  298,  298,  298,  298,  319,  322,  274,  393,
+      323,  274,  343,  350, 1053,  274,  184,  184,  184,  184,
+      338,  347,  167,  283,  367,  368,  274,  284,  285, 1052,
+      281,  281,  281,  281,  274,  305,  305,  305,  305,  300,
+      286,  287,  394,  324,  296,  288,  300,  289,  297,  300,
+      290,  367,  368,  300,  286,  168,  303,  287,  304,  304,
+      304,  304,  428,  306,  300,  289,  429,  307,  343,  344,
+
+      430,  468,  300,  290,  274,  274,  469,  274,  274,  274,
+      274,  274,  274,  274,  274,  274,  274,  274,  274,  362,
+      274,  274,  454,  319,  320,  230,  293,  274,  274,  274,
+      455,  205,  269,  298,  298,  298,  298,  327,  277,  328,
+      328,  328,  328,  274,  207,  343,  344,  456,  208,  367,
+      374,  457,  343,  346,  421,  600,  347,  601,  371,  351,
+      207,  352,  352,  352,  352,  458,  422,  274,  274,  274,
+      274,  278,  274,  274,  274,  274,  274,  274,  274,  274,
+      274,  274,  274,  274, 1051,  274,  274,  319,  320,  348,
+      496,  293,  274,  274,  274,  367,  368,  411,  497,  411,
+
+      411,  343,  344,  329,  329,  329,  329,  396,  274,  397,
+      397,  397,  397,  596,  294,  318,  386,  353,  353,  353,
+      353,  269,  318,  444,  444,  318,  447,  447,  447,  318,
+      597,  330,  274,  274,  308,  331,  304,  304,  304,  304,
+      318,  398,  398,  398,  398,  354,  309,  310,  318,  355,
+      269,  311,  162,  312,  162,  162,  313,  516,  367,  370,
+      309,  508,  371,  310,  452,  453,  509,  163,  292,  399,
+      891,  312, 1050,  400,  412,  412,  412,  412,  892,  313,
+      300,  300,  300,  300,  300,  300, 1049,  300,  300,  300,
+      300,  300,  300,  300,  300,  372,  300,  300,  393,  342,
+
+      471,  472,  316,  300,  300,  300,  342,  635,  366,  342,
+     1048,  367,  368,  342,  247,  366,  247,  247,  366,  300,
+      339,  468,  366,  897,  342,  375,  469,  376,  376,  376,
+      376,  394,  342,  366,  413,  413,  413,  413,  947,  470,
+      636,  366,  339,  300,  300,  300,  300,  300,  300,  300,
+      300, 1047,  300,  300,  300,  300,  300,  300,  300,  300,
+      363,  300,  300,  899,  390,  452,  488,  316,  300,  300,
+      300,  390,  503,  503,  390,  367,  368, 1046,  390,  414,
+      414,  414,  414, 1045,  300,  415,  415,  415,  415,  390,
+      317,  377,  377,  377,  377,  521,  521,  390,  184,  184,
+
+      184,  184,  468,  184,  184,  184,  184,  526,  300,  300,
+      319,  320,  428,  300,  416,  387,  429,  177,  901,  378,
+      487,  269,  302,  379,  332, 1044,  328,  328,  328,  328,
+      416,  443,  443,  443,  443, 1043,  333,  334,  229,  319,
+      320,  335,  416,  336,  943,  230,  337,  319,  320,  445,
+      333,  445,  232,  334,  446,  446,  446,  446,  416,  319,
+      320,  336,  258,  259,  260,  258,  506,  506,  506,  337,
+      318,  318,  319,  320,  318,  318,  318,  318,  318,  318,
+      318,  318,  318,  318,  318,  408,  318,  318,  903,  229,
+      319,  322,  340,  318,  318,  318,  230,  205,  269,  181,
+
+      181,  181,  181,  232,  987,  229,  229,  319,  320,  318,
+      207, 1042,  230,  230,  208,  476,  476,  476,  476,  232,
+      232,  258,  259,  260,  258,  822,  207,  491,  491,  491,
+      491,  490, 1041,  318,  318,  318,  318,  319,  320,  318,
+      318,  318,  318,  318,  318,  318,  318,  318,  318,  318,
+      292,  318,  318, 1040,  229,  229,  477,  340,  318,  318,
+      318,  230,  230,  229,  229,  229,  230,  988,  232,  232,
+      230,  230,  230,  269,  318,  343,  344,  232,  232,  232,
+      341,  229,  272,  259,  273,  272,  343,  344,  230, 1039,
+      481,  272,  259,  273,  272,  232,  343,  344,  318,  318,
+
+      343,  344,  319,  326,  478,  479,  480,  343,  346,  498,
+     1038,  323,  483,  292,  356,  482,  352,  352,  352,  352,
+      524,  524,  524,  484,  343,  344,  357,  358,  319,  326,
+      315,  359,  895,  360,  367,  368,  361,  323,  319,  322,
+      357,  230,  323,  358,  270,  270,  270,  270,  269,  343,
+      350,  360,  282,  282,  282,  282,  367,  368,  347,  361,
+      342,  342,  343,  344,  342,  342,  342,  342,  342,  342,
+      342,  342,  342,  342,  342,  324,  342,  342,  305,  305,
+      305,  305,  364,  342,  342,  342, 1037,  285,  580,  281,
+      281,  281,  281,  581,  282,  282,  282,  282,  948,  342,
+
+      287,  504,  339,  504,  288,  499,  505,  505,  505,  505,
+      367,  368,  522,  985,  522, 1024,  287,  523,  523,  523,
+      523,  499, 1036,  342,  342,  342,  342,  343,  344,  342,
+      342,  342,  342,  342,  342,  342,  342,  342,  342,  342,
+      269,  342,  342,  367,  370,  319,  320,  364,  342,  342,
+      342,  502,  502,  502,  502,  205,  941,  298,  298,  298,
+      298,  292,  499,  944,  342,  319,  320,  949,  207,  269,
+      365,  363,  208,  319,  322,  343,  344,  323,  499,  319,
+      320,  367,  368, 1035,  207,  343,  350,  640,  342,  342,
+      367,  368,  530,  676,  347,  533,  533,  677,  308, 1034,
+
+      304,  304,  304,  304,  380, 1033,  376,  376,  376,  376,
+      324,  310,  531,  575,  575,  311,  381,  382,  319,  320,
+      641,  383,  544,  384,  444,  444,  385,  310,  319,  320,
+      381,  343,  344,  382,  329,  329,  329,  329,  319,  320,
+     1032,  384,  538,  942,  536,  536,  536,  539,  292,  385,
+      366,  366,  367,  368,  366,  366,  366,  366,  366,  366,
+      366,  366,  366,  366,  366, 1031,  366,  366,  305,  305,
+      305,  305,  388,  366,  366,  366,  617, 1030,  545,  517,
+      520,  520,  520,  520,  618,  319,  320,  619,  950,  366,
+      998,  517,  363,  343,  346,  517,  534,  347,  534,  367,
+
+      374,  535,  535,  535,  535,  343,  346,  517,  371,  347,
+      367,  368,  990,  366,  366,  366,  366,  367,  368,  366,
+      366,  366,  366,  366,  366,  366,  366,  366,  366,  366,
+      348,  366,  366,  988,  319,  320,  230,  388,  366,  366,
+      366,  986,  348,  269,  367,  370,  319,  320,  371, 1023,
+      329,  329,  329,  329,  366,  343,  344,  558,  343,  344,
+      389,  529,  532,  532,  532,  532,  503,  503,  367,  368,
+      811,  547,  547,  529,  550,  550,  550,  529,  366,  366,
+      401,  372,  397,  397,  397,  397,  951,  343,  344,  529,
+      387,  552,  402,  403,  343,  344,  553,  404,  411,  405,
+
+      411,  411,  406,  343,  344, 1022,  402,  367,  368,  403,
+      353,  353,  353,  353,  548,  559,  548,  405, 1021,  549,
+      549,  549,  549,  561,  561,  406,  390,  390, 1020,  390,
+      390,  390,  390,  390,  390,  390,  390,  390,  390,  390,
+      390,  991,  390,  390,  343,  344,  367,  374,  409,  390,
+      390,  390,  578,  578,  578,  371,  521,  521,  367,  368,
+      353,  353,  353,  353,  952,  390,  343,  344,  387,  367,
+      370,  543, 1019,  371,  377,  377,  377,  377,  398,  398,
+      398,  398,  546,  546,  546,  546,  339,  543,  663,  390,
+      390,  390,  390,  543,  390,  390,  390,  390,  390,  390,
+
+      390,  390,  390,  390,  390,  390,  372,  390,  390,  543,
+      367,  368, 1018,  409,  390,  390,  390,  412,  412,  412,
+      412,  664,  367,  368,  575,  575,  377,  377,  377,  377,
+      390,  805,  806,  367,  368, 1017,  410,  557,  564,  564,
+      564,  413,  413,  413,  413,  414,  414,  414,  414,  560,
+      560,  560,  560,  557,  390,  390,  507,  507,  507,  507,
+      557,  415,  415,  415,  415,  507,  507,  507,  367,  368,
+      319,  320,  566,  447,  447,  447,  557,  567, 1016,  507,
+      507,  507,  507,  507,  507,  274,  274, 1015,  274,  274,
+      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
+
+      667,  274,  274,  367,  368,  747, 1014,  293,  274,  274,
+      274,  506,  506,  506,  562,  987,  562, 1025,  690,  563,
+      563,  563,  563,  401,  274,  397,  397,  397,  397,  446,
+      446,  446,  446,  668,  817,  818,  403,  576,  748,  576,
+      404, 1013,  577,  577,  577,  577,  319,  320,  274,  274,
+      274,  274,  403,  274,  274,  274,  510,  274,  274,  274,
+      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
+      274,  274,  274,  274,  274,  274,  511,  511,  511,  511,
+      511,  511,  511,  511,  511,  511,  511,  511,  511,  274,
+      511,  511,  511,  511,  511,  511,  511,  511,  511,  511,
+
+      511,  511,  511,  511,  511,  511,  511,  511,  511,  511,
+      511,  511,  511,  274,  274,  274,  274, 1012,  274,  274,
+      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
+     1011,  274,  274,  398,  398,  398,  398,  293,  274,  274,
+      274,  524,  524,  524,  571,  574,  574,  574,  574, 1010,
+      443,  443,  443,  443,  274, 1009,  571,  585,  985,  585,
+      571,  416,  586,  586,  586,  586,  446,  446,  446,  446,
+      319,  693,  571,  512,  319,  320,  269,  416,  274,  274,
+      525,  525,  525,  525, 1008,  229,  229,  229,  229,  525,
+      525,  525,  230,  230,  230,  230, 1007,  343,  344,  232,
+
+      232,  232,  232,  525,  525,  525,  525,  525,  525,  300,
+      300,  300,  300,  300,  300, 1006,  300,  300,  300,  300,
+      300,  300,  300,  300,  691,  300,  300, 1005,  229,  645,
+      229,  316,  300,  300,  300,  230, 1004,  230,  505,  505,
+      505,  505,  232, 1003,  232,  708,  319,  697,  300,  491,
+      491,  491,  491,  490,  658,  694,  658,  319,  320,  659,
+      659,  659,  659,  505,  505,  505,  505,  523,  523,  523,
+      523,  648,  300,  300,  300,  300,  300,  300,  300,  300,
+      474,  300,  300,  300,  300,  300,  300,  300,  300,  300,
+      300,  300,  300,  300,  300,  300,  300,  300,  300,  300,
+
+      527,  527,  527,  527,  527,  527,  527,  527,  527,  527,
+      527,  527,  527,  300,  527,  527,  527,  527,  527,  527,
+      527,  527,  527,  527,  527,  527,  527,  527,  527,  527,
+      527,  527,  527,  527,  527,  527,  527,  300,  300,  300,
+      300,  300,  300,  300,  300, 1002,  300,  300,  300,  300,
+      300,  300,  300,  300, 1001,  300,  300,  319,  699,  229,
+      230,  316,  300,  300,  300,  229,  230,  269, 1000,  229,
+      953,  300,  230,  232,  408,  637,  230,  999,  300,  232,
+      683,  367,  368,  232,  319,  320,  751,  502,  502,  502,
+      502,  656,  578,  578,  578,  657,  649,  528,  499,  230,
+
+      533,  533,  300,  300,  319,  320,  269,  646,  319,  693,
+      644,  647,  694,  635,  499,  343,  715,  640,  332,  752,
+      328,  328,  328,  328,  712,  520,  520,  520,  520,  726,
+      663,  334,  678,  812,  678,  335,  517,  679,  679,  679,
+      679,  523,  523,  523,  523,  695,  636,  334,  319,  320,
+      641,  984,  517,  319,  320,  343,  344,  945,  343,  344,
+      319,  320,  315,  664,  537,  537,  537,  537,  989,  535,
+      535,  535,  535,  537,  537,  537,  535,  535,  535,  535,
+      667,  367,  368,  577,  577,  577,  577,  537,  537,  537,
+      537,  537,  537,  318,  318,  319,  320,  318,  318,  318,
+
+      318,  318,  318,  318,  318,  318,  318,  318,  709,  318,
+      318,  319,  320,  668,  315,  340,  318,  318,  318,  319,
+      320,  989,  688, 1024,  688,  343,  344,  689,  689,  689,
+      689,  727,  318,  343,  344,  536,  536,  536,  367,  368,
+      946,  547,  547,  983,  706,  315,  706,  343,  711,  707,
+      707,  707,  707,  982,  561,  561,  318,  318,  318,  318,
+      319,  320,  318,  318,  540,  318,  318,  318,  318,  318,
+      318,  318,  318,  318,  318,  318,  318,  318,  318,  318,
+      318,  318,  318,  318,  541,  541,  541,  541,  541,  541,
+      541,  541,  541,  541,  541,  541,  541,  318,  541,  541,
+
+      541,  541,  541,  541,  541,  541,  541,  541,  541,  541,
+      541,  541,  541,  541,  541,  541,  541,  541,  541,  541,
+      541,  318,  318,  318,  318,  319,  320,  318,  318,  318,
+      318,  318,  318,  318,  318,  318,  318,  318,  981,  318,
+      318,  319,  320,  367,  733,  340,  318,  318,  318,  343,
+      344,  980,  730,  343,  344,  343,  717,  532,  532,  532,
+      532,  979,  318,  319,  699,  367,  368,  700,  529,  546,
+      546,  546,  546,  978,  343,  344,  577,  577,  577,  577,
+      543,  542,  367,  729,  529,  747,  318,  318,  343,  344,
+      549,  549,  549,  549,  343,  344,  543,  343,  711,  954,
+
+      701,  712,  356,  408,  352,  352,  352,  352,  343,  344,
+      549,  549,  549,  549,  751,  358,  343,  717,  748,  359,
+      718,  986,  229,  229,  550,  550,  550,  367,  368,  230,
+      230,  358,  343,  344,  713,  977,  232,  232,  724,  269,
+      724,  367,  368,  725,  725,  725,  725,  752,  551,  551,
+      551,  551,  990,  719,  367,  735,  229,  551,  551,  551,
+      367,  729,  230,  230,  730,  586,  586,  586,  586,  269,
+      232,  551,  551,  551,  551,  551,  551,  342,  342,  343,
+      344,  342,  342,  342,  342,  342,  342,  342,  342,  342,
+      342,  342,  939,  342,  342,  367,  368,  731,  315,  364,
+
+      342,  342,  342,  367,  368,  804,  300,  367,  368,  976,
+      637,  560,  560,  560,  560,  683,  342,  367,  368,  564,
+      564,  564,  557,  563,  563,  563,  563,  586,  586,  586,
+      586,  319,  320,  563,  563,  563,  563,  997,  557, 1029,
+      342,  342,  342,  342,  343,  344,  342,  342,  554,  342,
+      342,  342,  342,  342,  342,  342,  342,  342,  342,  342,
+      342,  342,  342,  342,  342,  342,  342,  342,  555,  555,
+      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
+      555,  342,  555,  555,  555,  555,  555,  555,  555,  555,
+      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
+
+      555,  555,  555,  555,  555,  342,  342,  342,  342,  343,
+      344,  342,  342,  342,  342,  342,  342,  342,  342,  342,
+      342,  342,  975,  342,  342,  574,  574,  574,  574,  364,
+      342,  342,  342,  974,  319,  697,  571,  367,  735,  319,
+      320,  736,  742,  694,  742,  973,  342,  743,  743,  743,
+      743,  972,  571,  229,  229,  659,  659,  659,  659,  971,
+      230,  230,  229,  339,  896,  556,  970,  232,  232,  230,
+      342,  342,  367,  368,  737,  969,  232,  659,  659,  659,
+      659,  679,  679,  679,  679,  968,  380,  967,  376,  376,
+      376,  376,  343,  344,  801,  802,  319,  320,  966,  382,
+
+      846,  319,  320,  383,  319,  320,  803,  679,  679,  679,
+      679,  319,  320,  847,  965,  382,  367,  368,  964,  848,
+      689,  689,  689,  689,  343,  344,  963,  689,  689,  689,
+      689,  992,  565,  565,  565,  565,  319,  320,  962,  827,
+      540,  565,  565,  565,  828,  319,  693,  363,  898,  694,
+      319,  693,  343,  344,  694,  565,  565,  565,  565,  565,
+      565,  366,  366,  367,  368,  366,  366,  366,  366,  366,
+      366,  366,  366,  366,  366,  366,  339,  366,  366,  319,
+      697,  961,  695,  388,  366,  366,  366,  695,  694,  343,
+      344,  367,  368,  343,  344,  831,  960,  343,  344,  959,
+
+      366,  554,  367,  368,  956,  707,  707,  707,  707,  707,
+      707,  707,  707,  343,  715,  367,  368,  957,  725,  725,
+      725,  725,  712,  958,  366,  366,  366,  366,  367,  368,
+      366,  366,  568,  366,  366,  366,  366,  366,  366,  366,
+      366,  366,  366,  366,  366,  366,  366,  366,  366,  366,
+      366,  366,  569,  569,  569,  569,  569,  569,  569,  569,
+      569,  569,  569,  569,  569,  366,  569,  569,  569,  569,
+      569,  569,  569,  569,  569,  569,  569,  569,  569,  569,
+      569,  569,  569,  569,  569,  569,  569,  569,  569,  366,
+      366,  366,  366,  367,  368,  366,  366,  366,  366,  366,
+
+      366,  366,  366,  366,  366,  366,  993,  366,  366,  343,
+      344,  343,  715,  388,  366,  366,  366,  955,  367,  368,
+      712,  367,  368,  319,  699,  319,  699,  700,  935,  700,
+      366,  343,  711,  343,  711,  712,  934,  712,  343,  717,
+      343,  717,  718,  933,  718,  932,  367,  368,  862,  570,
+      568,  363,  832,  931,  366,  366,  579,  579,  579,  579,
+      701,  835,  701,  863,  836,  579,  579,  579,  713,  864,
+      713,  743,  743,  743,  743,  719,  930,  719,  994,  579,
+      579,  579,  579,  579,  579,  390,  390,  929,  390,  390,
+      390,  390,  390,  390,  390,  390,  390,  390,  390,  390,
+
+      928,  390,  390,  367,  368,  367,  733,  409,  390,  390,
+      390,  230,  387,  900,  730,  927,  367,  733,  269,  725,
+      725,  725,  725,  363,  390,  730,  743,  743,  743,  743,
+      408,  902,  938,  229,  938,  938,  319,  320,  229,  938,
+      230,  938,  938,  343,  344,  230,  888,  232,  390,  390,
+      390,  390,  232,  390,  390,  390,  582,  390,  390,  390,
+      390,  390,  390,  390,  390,  390,  390,  390,  390,  390,
+      390,  390,  390,  390,  390,  390,  583,  583,  583,  583,
+      583,  583,  583,  583,  583,  583,  583,  583,  583,  390,
+      583,  583,  583,  583,  583,  583,  583,  583,  583,  583,
+
+      583,  583,  583,  583,  583,  583,  583,  583,  583,  583,
+      583,  583,  583,  390,  390,  390,  390,  926,  390,  390,
+      390,  390,  390,  390,  390,  390,  390,  390,  390,  390,
+      995,  390,  390,  925,  230,  230,  924,  409,  390,  390,
+      390,  269,  269,  996,  319,  320,  992,  367,  729,  367,
+      729,  730,  997,  730,  390,  367,  735,  367,  735,  736,
+      229,  736,  229,  229,  923,  940,  998,  230,  922,  230,
+      230,  889,  921,  584,  232,  387,  232,  232,  390,  390,
+      507,  507,  507,  507,  731,  920,  731,  919,  387,  507,
+      507,  507,  737,  918,  737,  367,  368,  408,  917,  916,
+
+      936,  885,  883,  507,  507,  507,  507,  507,  507,  274,
+      274,  408,  274,  274,  274,  274,  274,  274,  274,  274,
+      274,  274,  274,  274,  915,  274,  274,  985,  229,  914,
+      913,  670,  274,  274,  274,  230,  985,  912,  230,  986,
+      229,  986,  232,  229,  911,  269,  910,  230,  274,  909,
+      230,  908,  230,  907,  232,  906,  905,  232,  904,  269,
+      319,  320,  991,  817, 1026,  937,  343,  344,  993,  887,
+     1027,  805,  274,  274,  274,  274,  882,  274,  274,  274,
+      274,  274,  274,  274,  274,  274,  274,  274,  274,  292,
+      274,  274,  292,  292,  292,  292,  293,  274,  274,  274,
+
+      292,  292,  292,  292,  292,  292,  292,  292,  292,  292,
+      292,  292,  292,  274,  292,  292,  292,  292,  292,  292,
+      671,  292,  292,  292,  672,  292,  292,  292,  292,  292,
+      292,  292,  292,  292,  292,  292,  292,  274,  274,  525,
+      525,  525,  525,  881,  229,  229,  880,  879,  525,  525,
+      525,  230,  230,  343,  344,  994,  878,  877,  232,  232,
+      876,  875,  525,  525,  525,  525,  525,  525,  300,  300,
+      300,  300,  300,  300,  874,  300,  300,  300,  300,  300,
+      300,  300,  300,  873,  300,  300,  872,  871,  884,  870,
+      685,  300,  300,  300,  886,  367,  368,  995,  869, 1028,
+
+      367,  368,  996,  868,  867,  866,  865,  300,  861,  860,
+      859,  858,  857,  856,  855,  854,  853,  852,  851,  850,
+      849,  845,  844,  843,  842,  582,  747,  840,  839,  838,
+      834,  300,  300,  300,  300,  300,  300,  300,  300,  830,
+      300,  300,  300,  300,  300,  300,  300,  300,  315,  300,
+      300,  315,  315,  315,  315,  316,  300,  300,  300,  315,
+      315,  315,  315,  315,  315,  315,  315,  315,  315,  315,
+      315,  315,  300,  315,  315,  315,  315,  315,  315,  686,
+      315,  315,  315,  687,  315,  315,  315,  315,  315,  315,
+      315,  315,  315,  315,  315,  315,  300,  300,  319,  320,
+
+      826,  474,  824,  823,  820,  819,  816,  510,  663,  814,
+      813,  810,  809,  808,  537,  537,  537,  537,  807,  474,
+      643,  635,  800,  537,  537,  537,  799,  798,  797,  796,
+      795,  792,  791,  790,  789,  788,  787,  537,  537,  537,
+      537,  537,  537,  318,  318,  319,  320,  318,  318,  318,
+      318,  318,  318,  318,  318,  318,  318,  318,  786,  318,
+      318,  785,  784,  783,  782,  703,  318,  318,  318,  781,
+      780,  779,  778,  777,  776,  775,  774,  773,  772,  771,
+      770,  769,  318,  768,  767,  766,  765,  764,  763,  762,
+      761,  760,  759,  758,  757,  747,  745,  744,  681,  680,
+
+      675,  674,  673,  663,  661,  660,  318,  318,  318,  318,
+      319,  320,  318,  318,  318,  318,  318,  318,  318,  318,
+      318,  318,  318,  339,  318,  318,  339,  339,  339,  339,
+      340,  318,  318,  318,  339,  339,  339,  339,  339,  339,
+      339,  339,  339,  339,  339,  339,  339,  318,  339,  339,
+      339,  339,  339,  339,  704,  339,  339,  339,  705,  339,
+      339,  339,  339,  339,  339,  339,  339,  339,  339,  339,
+      339,  318,  318,  343,  344,  655,  654,  653,  652,  490,
+      617,  600,  596,  650,  643,  638,  635,  633,  632,  551,
+      551,  551,  551,  631,  630,  629,  628,  627,  551,  551,
+
+      551,  626,  625,  624,  623,  622,  621,  620,  616,  615,
+      614,  613,  551,  551,  551,  551,  551,  551,  342,  342,
+      343,  344,  342,  342,  342,  342,  342,  342,  342,  342,
+      342,  342,  342,  612,  342,  342,  611,  610,  609,  608,
+      721,  342,  342,  342,  607,  606,  605,  604,  603,  602,
+      599,  598,  595,  594,  593,  592,  591,  342,  590,  589,
+      588,  587,  573,  572,  393,  519,  518,  515,  514,  513,
+      501,  500,  277,  474,  495,  494,  490,  462,  460,  436,
+      433,  342,  342,  342,  342,  343,  344,  342,  342,  342,
+      342,  342,  342,  342,  342,  342,  342,  342,  363,  342,
 
-      365,  276,  365,  365,  274,  245,  256,  167,  736,  365,
-      365,  365,  245,  256,  167,  174,  165, 1053,   96,   65,
-       57, 1053, 1053, 1053, 1053,  365, 1053, 1053, 1053, 1053,
-     1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
-     1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,  365,
-      365,  365,  365,  366,  367,  365,  365,  365,  365,  365,
-      365,  365,  365,  365,  365,  365,  386,  365,  365,  386,
-      386,  386,  386,  387,  365,  365,  365,  386,  386,  386,
-      386,  386,  386,  386,  386,  386,  386,  386,  386,  386,
-      365,  386,  386,  386,  386,  386,  386,  737,  386,  386,
-
-      386,  738,  386,  386,  386,  386,  386,  386,  386,  386,
-      386,  386,  386,  386,  365,  365,  577,  577,  577,  577,
-     1053, 1053, 1053, 1053, 1053,  577,  577,  577, 1053, 1053,
-     1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,  577,
-      577,  577,  577,  577,  577,  389,  389, 1053,  389,  389,
-      389,  389,  389,  389,  389,  389,  389,  389,  389,  389,
-     1053,  389,  389, 1053, 1053, 1053, 1053,  751,  389,  389,
-      389, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
-     1053, 1053, 1053, 1053,  389, 1053, 1053, 1053, 1053, 1053,
-     1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
-
-     1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,  389,  389,
-      389,  389, 1053,  389,  389,  389,  389,  389,  389,  389,
-      389,  389,  389,  389,  389,  407,  389,  389,  407,  407,
-      407,  407,  408,  389,  389,  389,  407,  407,  407,  407,
-      407,  407,  407,  407,  407,  407,  407,  407,  407,  389,
-      407,  407,  407,  407,  407,  407,  752,  407,  407,  407,
-      753,  407,  407,  407,  407,  407,  407,  407,  407,  407,
-      407,  407,  407,  389,  389,  273,  273, 1053,  273,  273,
-      273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
-     1053,  273,  273, 1053, 1053, 1053, 1053,  667,  273,  273,
-
-      273, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
-     1053, 1053, 1053, 1053,  273, 1053, 1053, 1053, 1053, 1053,
-     1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
-     1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,  273,  273,
-      273,  273, 1053,  273,  273,  273,  273,  273,  273,  273,
-      273,  273,  273,  273,  273,  291,  273,  273,  291,  291,
-      291,  291,  292,  273,  273,  273,  291,  291,  291,  291,
-      291,  291,  291,  291,  291,  291,  291,  291,  291,  273,
-      291,  291,  291,  291,  291,  291,  291,  291,  291,  811,
-      291,  291,  291,  291,  291,  291,  291,  291,  291,  291,
-
-      291,  291,  291,  273,  273,  299,  299,  299,  299,  299,
-      299, 1053,  299,  299,  299,  299,  299,  299,  299,  299,
-     1053,  299,  299, 1053, 1053, 1053, 1053,  682,  299,  299,
-      299, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
-     1053, 1053, 1053, 1053,  299, 1053, 1053, 1053, 1053, 1053,
-     1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
-     1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,  299,  299,
-      299,  299,  299,  299,  299,  299, 1053,  299,  299,  299,
-      299,  299,  299,  299,  299,  314,  299,  299,  314,  314,
-      314,  314,  315,  299,  299,  299,  314,  314,  314,  314,
-
-      314,  314,  314,  314,  314,  314,  314,  314,  314,  299,
-      314,  314,  314,  314,  314,  314,  314,  314,  314,  821,
-      314,  314,  314,  314,  314,  314,  314,  314,  314,  314,
-      314,  314,  314,  299,  299,  317,  317,  318,  319,  317,
-      317,  317,  317,  317,  317,  317,  317,  317,  317,  317,
-     1053,  317,  317, 1053, 1053, 1053, 1053,  700,  317,  317,
-      317, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
-     1053, 1053, 1053, 1053,  317, 1053, 1053, 1053, 1053, 1053,
-     1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
-     1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,  317,  317,
-
-      317,  317,  318,  319,  317,  317,  317,  317,  317,  317,
-      317,  317,  317,  317,  317,  338,  317,  317,  338,  338,
-      338,  338,  339,  317,  317,  317,  338,  338,  338,  338,
-      338,  338,  338,  338,  338,  338,  338,  338,  338,  317,
-      338,  338,  338,  338,  338,  338,  338,  338,  338,  825,
-      338,  338,  338,  338,  338,  338,  338,  338,  338,  338,
-      338,  338,  338,  317,  317,  341,  341,  342,  343,  341,
-      341,  341,  341,  341,  341,  341,  341,  341,  341,  341,
-     1053,  341,  341, 1053, 1053, 1053, 1053,  718,  341,  341,
-      341, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
-
-     1053, 1053, 1053, 1053,  341, 1053, 1053, 1053, 1053, 1053,
-     1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
-     1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,  341,  341,
-      341,  341,  342,  343,  341,  341,  341,  341,  341,  341,
-      341,  341,  341,  341,  341,  362,  341,  341,  362,  362,
-      362,  362,  363,  341,  341,  341,  362,  362,  362,  362,
-      362,  362,  362,  362,  362,  362,  362,  362,  362,  341,
-      362,  362,  362,  362,  362,  362,  362,  362,  362,  829,
-      362,  362,  362,  362,  362,  362,  362,  362,  362,  362,
-      362,  362,  362,  341,  341,  365,  365,  366,  367,  365,
+      342,  363,  363,  363,  363,  364,  342,  342,  342,  363,
+      363,  363,  363,  363,  363,  363,  363,  363,  363,  363,
+      363,  363,  342,  363,  363,  363,  363,  363,  363,  722,
+      363,  363,  363,  723,  363,  363,  363,  363,  363,  363,
+      363,  363,  363,  363,  363,  363,  342,  342,  367,  368,
+      431,  486,  422,  485,  474,  269,  473,  467,  466,  463,
+      451,  450,  449,  442,  565,  565,  565,  565,  441,  440,
+      437,  427,  424,  565,  565,  565,  423,  420,  419,  418,
+      167,  407,  393,  391,  314,  269,  295,  565,  565,  565,
+      565,  565,  565,  366,  366,  367,  368,  366,  366,  366,
+
+      366,  366,  366,  366,  366,  366,  366,  366,  291,  366,
+      366,  277,  275,  246,  257,  739,  366,  366,  366,  167,
+      246,  257,  167,  174,  165, 1061,   96,   65,   57, 1061,
+     1061, 1061,  366, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
+     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
+     1061, 1061, 1061, 1061, 1061, 1061,  366,  366,  366,  366,
+      367,  368,  366,  366,  366,  366,  366,  366,  366,  366,
+      366,  366,  366,  387,  366,  366,  387,  387,  387,  387,
+      388,  366,  366,  366,  387,  387,  387,  387,  387,  387,
+      387,  387,  387,  387,  387,  387,  387,  366,  387,  387,
 
-      365,  365,  365,  365,  365,  365,  365,  365,  365,  365,
-     1053,  365,  365, 1053, 1053, 1053, 1053,  736,  365,  365,
-      365, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
-     1053, 1053, 1053, 1053,  365, 1053, 1053, 1053, 1053, 1053,
-     1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
-     1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,  365,  365,
-      365,  365,  366,  367,  365,  365,  365,  365,  365,  365,
-      365,  365,  365,  365,  365,  386,  365,  365,  386,  386,
-      386,  386,  387,  365,  365,  365,  386,  386,  386,  386,
-      386,  386,  386,  386,  386,  386,  386,  386,  386,  365,
-
-      386,  386,  386,  386,  386,  386,  386,  386,  386,  833,
-      386,  386,  386,  386,  386,  386,  386,  386,  386,  386,
-      386,  386,  386,  365,  365,  389,  389, 1053,  389,  389,
-      389,  389,  389,  389,  389,  389,  389,  389,  389,  389,
-     1053,  389,  389, 1053, 1053, 1053, 1053,  751,  389,  389,
-      389, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
-     1053, 1053, 1053, 1053,  389, 1053, 1053, 1053, 1053, 1053,
-     1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
-     1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,  389,  389,
-      389,  389, 1053,  389,  389,  389,  389,  389,  389,  389,
-
-      389,  389,  389,  389,  389,  407,  389,  389,  407,  407,
-      407,  407,  408,  389,  389,  389,  407,  407,  407,  407,
-      407,  407,  407,  407,  407,  407,  407,  407,  407,  389,
-      407,  407,  407,  407,  407,  407,  407,  407,  407,  837,
-      407,  407,  407,  407,  407,  407,  407,  407,  407,  407,
-      407,  407,  407,  389,  389,  273,  273, 1053,  273,  273,
-      273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
-      291,  273,  273,  291,  291,  291,  291,  292,  273,  273,
-      273,  291,  291,  291,  291,  291,  291,  291,  291,  291,
-      291,  291,  291,  291,  273,  291,  291,  291,  291,  291,
-
-      291,  291,  291,  291,  291,  885,  291,  291,  291,  291,
-      291,  291,  291,  291,  291,  291,  291,  291,  273,  273,
-      299,  299,  299,  299,  299,  299, 1053,  299,  299,  299,
-      299,  299,  299,  299,  299,  314,  299,  299,  314,  314,
-      314,  314,  315,  299,  299,  299,  314,  314,  314,  314,
-      314,  314,  314,  314,  314,  314,  314,  314,  314,  299,
-      314,  314,  314,  314,  314,  314,  314,  314,  314,  314,
-      889,  314,  314,  314,  314,  314,  314,  314,  314,  314,
-      314,  314,  314,  299,  299,  166, 1053,  166,  166,  166,
-      166,  166,  166,  166,  166,  166,  169, 1053, 1053,  169,
-
-      169,  177, 1053,  177,  177,  177,  177,  177,  177,  177,
-      177,  177,  230,  230,  230,  230,  230,  230,  230,  230,
-      260,  260,  260,  260,  263, 1053,  263, 1053,  263,  263,
-      263,  263,  267,  267,  267,  267,  267,  267,  267,  273,
-     1053,  273,  273,  273,  273,  273,  273,  273,  273,  273,
-      275, 1053,  275,  275,  275,  275,  275,  275,  275,  275,
-      275,  278, 1053,  278,  278,  278,  278,  278,  278,  278,
-      278,  278,  291, 1053,  291,  291,  291,  291,  291,  291,
-      291,  291,  291,  229,  229,  229,  229,  229,  229,  229,
-      299,  299, 1053,  299,  299,  299,  299,  299,  299,  299,
-
-      299,  300,  300,  300,  300,  300,  300,  300,  300,  300,
-      300,  300,  314,  314, 1053,  314,  314,  314,  314,  314,
-      314,  314,  314,  317,  317,  317,  317,  317,  317,  317,
-      317,  317,  317,  317,  320,  320,  320,  320,  320,  320,
-      320,  320,  320,  320,  320,  324,  324,  324,  324,  324,
-      324,  324,  324,  324,  324,  324,  338,  338,  338,  338,
-      338,  338,  338,  338,  338,  338,  338,  341,  341,  341,
-      341,  341,  341,  341,  341,  341,  341,  341,  344,  344,
-      344,  344,  344,  344,  344,  344,  344,  344,  344,  348,
-      348,  348,  348,  348,  348,  348,  348,  348,  348,  348,
-
-      362,  362,  362,  362,  362,  362,  362,  362,  362,  362,
-      362,  365,  365,  365,  365,  365,  365,  365,  365,  365,
-      365,  365,  368,  368,  368,  368,  368,  368,  368,  368,
-      368,  368,  368,  372,  372,  372,  372,  372,  372,  372,
-      372,  372,  372,  372,  386,  386,  386,  386,  386,  386,
-      386,  386,  386,  386,  386,  389, 1053,  389,  389,  389,
-      389,  389,  389,  389,  389,  389,  391, 1053,  391,  391,
-      391,  391,  391,  391,  391,  391,  391,  394, 1053,  394,
-      394,  394,  394,  394,  394,  394,  394,  394,  407, 1053,
-      407,  407,  407,  407,  407,  407,  407,  407,  407,  169,
-
-     1053, 1053,  169,  169,  177, 1053,  177,  177,  177,  177,
-      177,  177,  177,  177,  177,  416, 1053, 1053,  416,  416,
-      416,  447, 1053, 1053,  447,  229,  229,  229,  229,  229,
-      229,  229,  230,  230,  230,  230,  230,  230,  230,  230,
-      473, 1053, 1053, 1053, 1053,  473,  473,  473,  473,  487,
-      487,  487,  487,  487,  487,  490,  490,  490,  490,  491,
-     1053,  491,  491,  491,  491,  267,  267,  267,  267,  267,
-      267,  267,  273, 1053,  273,  273,  273,  273,  273,  273,
-      273,  273,  273,  275, 1053,  275,  275,  275,  275,  275,
-      275,  275,  275,  275,  278, 1053,  278,  278,  278,  278,
-
-      278,  278,  278,  278,  278,  291, 1053,  291,  291,  291,
-      291,  291,  291,  291,  291,  291,  299,  299, 1053,  299,
-      299,  299,  299,  299,  299,  299,  299,  300,  300,  300,
-      300,  300,  300,  300,  300,  300,  300,  300,  314,  314,
-     1053,  314,  314,  314,  314,  314,  314,  314,  314,  317,
-      317,  317,  317,  317,  317,  317,  317,  317,  317,  317,
-      320,  320,  320,  320,  320,  320,  320,  320,  320,  320,
-      320,  324,  324,  324,  324,  324,  324,  324,  324,  324,
-      324,  324,  338,  338,  338,  338,  338,  338,  338,  338,
-      338,  338,  338,  341,  341,  341,  341,  341,  341,  341,
-
-      341,  341,  341,  341,  344,  344,  344,  344,  344,  344,
-      344,  344,  344,  344,  344,  348,  348,  348,  348,  348,
-      348,  348,  348,  348,  348,  348,  362,  362,  362,  362,
-      362,  362,  362,  362,  362,  362,  362,  365,  365,  365,
-      365,  365,  365,  365,  365,  365,  365,  365,  368,  368,
-      368,  368,  368,  368,  368,  368,  368,  368,  368,  372,
-      372,  372,  372,  372,  372,  372,  372,  372,  372,  372,
-      386,  386,  386,  386,  386,  386,  386,  386,  386,  386,
-      386,  389, 1053,  389,  389,  389,  389,  389,  389,  389,
-      389,  389,  391, 1053,  391,  391,  391,  391,  391,  391,
-
-      391,  391,  391,  394, 1053,  394,  394,  394,  394,  394,
-      394,  394,  394,  394,  407, 1053,  407,  407,  407,  407,
-      407,  407,  407,  407,  407,  169, 1053, 1053,  169,  169,
-      416, 1053, 1053,  416,  416,  416,  447, 1053, 1053,  447,
-      631, 1053,  631,  631,  631,  631,  631,  631,  631,  631,
-      631,  634, 1053,  634,  634,  634,  634,  634,  634,  634,
-      634,  634,  636, 1053,  636,  636,  636,  636,  636,  636,
-      636,  636,  636,  639,  639,  639,  639,  639,  639,  639,
-      230,  230,  230,  230,  230,  230,  230,  230,  487,  487,
-      487,  487,  487,  487,  648, 1053,  648,  648,  648,  648,
-
-      491, 1053,  491,  491,  491,  491,  267,  267,  267,  267,
-      267,  267,  267,  273, 1053,  273,  273,  273,  273,  273,
-      273,  273,  273,  273,  659, 1053,  659,  659,  659,  659,
-      659,  659,  659,  659,  659,  662, 1053,  662,  662,  662,
-      662,  662,  662,  662,  662,  662,  663, 1053,  663,  663,
-      663,  663,  663,  663,  663,  663,  663,  666, 1053,  666,
-      666,  666,  666,  666,  666,  666,  666,  666,  229,  229,
-      229,  229,  229,  229,  229,  299,  299, 1053,  299,  299,
-      299,  299,  299,  299,  299,  299,  679,  679,  679,  679,
-      679,  679,  679,  679,  679,  679,  679,  681,  681, 1053,
-
-      681,  681,  681,  681,  681,  681,  681,  681,  317,  317,
-      317,  317,  317,  317,  317,  317,  317,  317,  317,  689,
-      689,  689,  689,  689,  689,  689,  689,  689,  689,  689,
-      693,  693,  693,  693,  693,  693,  693,  693,  693,  693,
-      693,  695,  695,  695,  695,  695,  695,  695,  695,  695,
-      695,  695,  699,  699,  699,  699,  699,  699,  699,  699,
-      699,  699,  699,  341,  341,  341,  341,  341,  341,  341,
-      341,  341,  341,  341,  707,  707,  707,  707,  707,  707,
-      707,  707,  707,  707,  707,  711,  711,  711,  711,  711,
-      711,  711,  711,  711,  711,  711,  713,  713,  713,  713,
-
-      713,  713,  713,  713,  713,  713,  713,  717,  717,  717,
-      717,  717,  717,  717,  717,  717,  717,  717,  365,  365,
-      365,  365,  365,  365,  365,  365,  365,  365,  365,  725,
-      725,  725,  725,  725,  725,  725,  725,  725,  725,  725,
-      729,  729,  729,  729,  729,  729,  729,  729,  729,  729,
-      729,  731,  731,  731,  731,  731,  731,  731,  731,  731,
-      731,  731,  735,  735,  735,  735,  735,  735,  735,  735,
-      735,  735,  735,  389, 1053,  389,  389,  389,  389,  389,
-      389,  389,  389,  389,  743, 1053,  743,  743,  743,  743,
-      743,  743,  743,  743,  743,  746, 1053,  746,  746,  746,
-
-      746,  746,  746,  746,  746,  746,  747, 1053,  747,  747,
-      747,  747,  747,  747,  747,  747,  747,  750, 1053,  750,
-      750,  750,  750,  750,  750,  750,  750,  750,  416, 1053,
-     1053,  416,  416,  416,  631, 1053,  631,  631,  631,  631,
-      631,  631,  631,  631,  631,  634, 1053,  634,  634,  634,
-      634,  634,  634,  634,  634,  634,  636, 1053,  636,  636,
-      636,  636,  636,  636,  636,  636,  636,  639,  639,  639,
-      639,  639,  639,  639,  230,  230,  230,  230,  230,  230,
-      230,  230,  648, 1053,  648,  648,  648,  648,  491, 1053,
-      491,  491,  491,  491,  267,  267,  267,  267,  267,  267,
-
-      267,  273, 1053,  273,  273,  273,  273,  273,  273,  273,
-      273,  273,  659, 1053,  659,  659,  659,  659,  659,  659,
-      659,  659,  659,  662, 1053,  662,  662,  662,  662,  662,
-      662,  662,  662,  662,  663, 1053,  663,  663,  663,  663,
-      663,  663,  663,  663,  663,  666, 1053,  666,  666,  666,
-      666,  666,  666,  666,  666,  666,  229,  229,  229,  229,
-      229,  229,  229,  299,  299, 1053,  299,  299,  299,  299,
-      299,  299,  299,  299,  679,  679,  679,  679,  679,  679,
-      679,  679,  679,  679,  679,  681,  681, 1053,  681,  681,
-      681,  681,  681,  681,  681,  681,  317,  317,  317,  317,
-
-      317,  317,  317,  317,  317,  317,  317,  689,  689,  689,
-      689,  689,  689,  689,  689,  689,  689,  689,  693,  693,
-      693,  693,  693,  693,  693,  693,  693,  693,  693,  695,
-      695,  695,  695,  695,  695,  695,  695,  695,  695,  695,
-      699,  699,  699,  699,  699,  699,  699,  699,  699,  699,
-      699,  341,  341,  341,  341,  341,  341,  341,  341,  341,
-      341,  341,  707,  707,  707,  707,  707,  707,  707,  707,
-      707,  707,  707,  711,  711,  711,  711,  711,  711,  711,
-      711,  711,  711,  711,  713,  713,  713,  713,  713,  713,
-      713,  713,  713,  713,  713,  717,  717,  717,  717,  717,
-
-      717,  717,  717,  717,  717,  717,  365,  365,  365,  365,
-      365,  365,  365,  365,  365,  365,  365,  725,  725,  725,
-      725,  725,  725,  725,  725,  725,  725,  725,  729,  729,
-      729,  729,  729,  729,  729,  729,  729,  729,  729,  731,
-      731,  731,  731,  731,  731,  731,  731,  731,  731,  731,
-      735,  735,  735,  735,  735,  735,  735,  735,  735,  735,
-      735,  389, 1053,  389,  389,  389,  389,  389,  389,  389,
-      389,  389,  743, 1053,  743,  743,  743,  743,  743,  743,
-      743,  743,  743,  746, 1053,  746,  746,  746,  746,  746,
-      746,  746,  746,  746,  747, 1053,  747,  747,  747,  747,
-
-      747,  747,  747,  747,  747,  750, 1053,  750,  750,  750,
-      750,  750,  750,  750,  750,  750,  416, 1053, 1053,  416,
-      416,  416,  230,  230,  230,  230,  230,  230,  230,  230,
-      491, 1053,  491,  491,  491,  491,  267,  267,  267,  267,
-      267,  267,  267,  273, 1053,  273,  273,  273,  273,  273,
-      273,  273,  273,  273,  229,  229,  229,  229,  229,  229,
-      229,  299,  299, 1053,  299,  299,  299,  299,  299,  299,
-      299,  299,   23, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
-     1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
-     1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
-
-     1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
-     1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
-     1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
-     1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053
+      387,  387,  387,  387,  740,  387,  387,  387,  741,  387,
+      387,  387,  387,  387,  387,  387,  387,  387,  387,  387,
+      387,  366,  366,  579,  579,  579,  579, 1061, 1061, 1061,
+     1061, 1061,  579,  579,  579, 1061, 1061, 1061, 1061, 1061,
+     1061, 1061, 1061, 1061, 1061, 1061,  579,  579,  579,  579,
+      579,  579,  390,  390, 1061,  390,  390,  390,  390,  390,
+      390,  390,  390,  390,  390,  390,  390, 1061,  390,  390,
+     1061, 1061, 1061, 1061,  754,  390,  390,  390, 1061, 1061,
+     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
+     1061,  390, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
+
+     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
+     1061, 1061, 1061, 1061, 1061,  390,  390,  390,  390, 1061,
+      390,  390,  390,  390,  390,  390,  390,  390,  390,  390,
+      390,  390,  408,  390,  390,  408,  408,  408,  408,  409,
+      390,  390,  390,  408,  408,  408,  408,  408,  408,  408,
+      408,  408,  408,  408,  408,  408,  390,  408,  408,  408,
+      408,  408,  408,  755,  408,  408,  408,  756,  408,  408,
+      408,  408,  408,  408,  408,  408,  408,  408,  408,  408,
+      390,  390,  274,  274, 1061,  274,  274,  274,  274,  274,
+      274,  274,  274,  274,  274,  274,  274, 1061,  274,  274,
+
+     1061, 1061, 1061, 1061,  670,  274,  274,  274, 1061, 1061,
+     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
+     1061,  274, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
+     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
+     1061, 1061, 1061, 1061, 1061,  274,  274,  274,  274, 1061,
+      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
+      274,  274,  292,  274,  274,  292,  292,  292,  292,  293,
+      274,  274,  274,  292,  292,  292,  292,  292,  292,  292,
+      292,  292,  292,  292,  292,  292,  274,  292,  292,  292,
+      292,  292,  292,  292,  292,  292,  815,  292,  292,  292,
+
+      292,  292,  292,  292,  292,  292,  292,  292,  292,  292,
+      274,  274,  300,  300,  300,  300,  300,  300, 1061,  300,
+      300,  300,  300,  300,  300,  300,  300, 1061,  300,  300,
+     1061, 1061, 1061, 1061,  685,  300,  300,  300, 1061, 1061,
+     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
+     1061,  300, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
+     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
+     1061, 1061, 1061, 1061, 1061,  300,  300,  300,  300,  300,
+      300,  300,  300, 1061,  300,  300,  300,  300,  300,  300,
+      300,  300,  315,  300,  300,  315,  315,  315,  315,  316,
+
+      300,  300,  300,  315,  315,  315,  315,  315,  315,  315,
+      315,  315,  315,  315,  315,  315,  300,  315,  315,  315,
+      315,  315,  315,  315,  315,  315,  825,  315,  315,  315,
+      315,  315,  315,  315,  315,  315,  315,  315,  315,  315,
+      300,  300,  318,  318,  319,  320,  318,  318,  318,  318,
+      318,  318,  318,  318,  318,  318,  318, 1061,  318,  318,
+     1061, 1061, 1061, 1061,  703,  318,  318,  318, 1061, 1061,
+     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
+     1061,  318, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
+     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
+
+     1061, 1061, 1061, 1061, 1061,  318,  318,  318,  318,  319,
+      320,  318,  318,  318,  318,  318,  318,  318,  318,  318,
+      318,  318,  339,  318,  318,  339,  339,  339,  339,  340,
+      318,  318,  318,  339,  339,  339,  339,  339,  339,  339,
+      339,  339,  339,  339,  339,  339,  318,  339,  339,  339,
+      339,  339,  339,  339,  339,  339,  829,  339,  339,  339,
+      339,  339,  339,  339,  339,  339,  339,  339,  339,  339,
+      318,  318,  342,  342,  343,  344,  342,  342,  342,  342,
+      342,  342,  342,  342,  342,  342,  342, 1061,  342,  342,
+     1061, 1061, 1061, 1061,  721,  342,  342,  342, 1061, 1061,
+
+     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
+     1061,  342, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
+     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
+     1061, 1061, 1061, 1061, 1061,  342,  342,  342,  342,  343,
+      344,  342,  342,  342,  342,  342,  342,  342,  342,  342,
+      342,  342,  363,  342,  342,  363,  363,  363,  363,  364,
+      342,  342,  342,  363,  363,  363,  363,  363,  363,  363,
+      363,  363,  363,  363,  363,  363,  342,  363,  363,  363,
+      363,  363,  363,  363,  363,  363,  833,  363,  363,  363,
+      363,  363,  363,  363,  363,  363,  363,  363,  363,  363,
+
+      342,  342,  366,  366,  367,  368,  366,  366,  366,  366,
+      366,  366,  366,  366,  366,  366,  366, 1061,  366,  366,
+     1061, 1061, 1061, 1061,  739,  366,  366,  366, 1061, 1061,
+     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
+     1061,  366, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
+     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
+     1061, 1061, 1061, 1061, 1061,  366,  366,  366,  366,  367,
+      368,  366,  366,  366,  366,  366,  366,  366,  366,  366,
+      366,  366,  387,  366,  366,  387,  387,  387,  387,  388,
+      366,  366,  366,  387,  387,  387,  387,  387,  387,  387,
+
+      387,  387,  387,  387,  387,  387,  366,  387,  387,  387,
+      387,  387,  387,  387,  387,  387,  837,  387,  387,  387,
+      387,  387,  387,  387,  387,  387,  387,  387,  387,  387,
+      366,  366,  390,  390, 1061,  390,  390,  390,  390,  390,
+      390,  390,  390,  390,  390,  390,  390, 1061,  390,  390,
+     1061, 1061, 1061, 1061,  754,  390,  390,  390, 1061, 1061,
+     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
+     1061,  390, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
+     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
+     1061, 1061, 1061, 1061, 1061,  390,  390,  390,  390, 1061,
+
+      390,  390,  390,  390,  390,  390,  390,  390,  390,  390,
+      390,  390,  408,  390,  390,  408,  408,  408,  408,  409,
+      390,  390,  390,  408,  408,  408,  408,  408,  408,  408,
+      408,  408,  408,  408,  408,  408,  390,  408,  408,  408,
+      408,  408,  408,  408,  408,  408,  841,  408,  408,  408,
+      408,  408,  408,  408,  408,  408,  408,  408,  408,  408,
+      390,  390,  274,  274, 1061,  274,  274,  274,  274,  274,
+      274,  274,  274,  274,  274,  274,  274,  292,  274,  274,
+      292,  292,  292,  292,  293,  274,  274,  274,  292,  292,
+      292,  292,  292,  292,  292,  292,  292,  292,  292,  292,
+
+      292,  274,  292,  292,  292,  292,  292,  292,  292,  292,
+      292,  292,  890,  292,  292,  292,  292,  292,  292,  292,
+      292,  292,  292,  292,  292,  274,  274,  300,  300,  300,
+      300,  300,  300, 1061,  300,  300,  300,  300,  300,  300,
+      300,  300,  315,  300,  300,  315,  315,  315,  315,  316,
+      300,  300,  300,  315,  315,  315,  315,  315,  315,  315,
+      315,  315,  315,  315,  315,  315,  300,  315,  315,  315,
+      315,  315,  315,  315,  315,  315,  315,  894,  315,  315,
+      315,  315,  315,  315,  315,  315,  315,  315,  315,  315,
+      300,  300,  166, 1061,  166,  166,  166,  166,  166,  166,
+
+      166,  166,  166,  169, 1061, 1061,  169,  169,  177, 1061,
+      177,  177,  177,  177,  177,  177,  177,  177,  177,  231,
+      231,  231,  231,  231,  231,  231,  231,  261,  261,  261,
+      261,  264, 1061,  264, 1061,  264,  264,  264,  264,  268,
+      268,  268,  268,  268,  268,  268,  274, 1061,  274,  274,
+      274,  274,  274,  274,  274,  274,  274,  276, 1061,  276,
+      276,  276,  276,  276,  276,  276,  276,  276,  279, 1061,
+      279,  279,  279,  279,  279,  279,  279,  279,  279,  292,
+     1061,  292,  292,  292,  292,  292,  292,  292,  292,  292,
+      230,  230,  230,  230,  230,  230,  230,  300,  300, 1061,
+
+      300,  300,  300,  300,  300,  300,  300,  300,  301,  301,
+      301,  301,  301,  301,  301,  301,  301,  301,  301,  315,
+      315, 1061,  315,  315,  315,  315,  315,  315,  315,  315,
+      318,  318,  318,  318,  318,  318,  318,  318,  318,  318,
+      318,  321,  321,  321,  321,  321,  321,  321,  321,  321,
+      321,  321,  325,  325,  325,  325,  325,  325,  325,  325,
+      325,  325,  325,  339,  339,  339,  339,  339,  339,  339,
+      339,  339,  339,  339,  342,  342,  342,  342,  342,  342,
+      342,  342,  342,  342,  342,  345,  345,  345,  345,  345,
+      345,  345,  345,  345,  345,  345,  349,  349,  349,  349,
+
+      349,  349,  349,  349,  349,  349,  349,  363,  363,  363,
+      363,  363,  363,  363,  363,  363,  363,  363,  366,  366,
+      366,  366,  366,  366,  366,  366,  366,  366,  366,  369,
+      369,  369,  369,  369,  369,  369,  369,  369,  369,  369,
+      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
+      373,  387,  387,  387,  387,  387,  387,  387,  387,  387,
+      387,  387,  390, 1061,  390,  390,  390,  390,  390,  390,
+      390,  390,  390,  392, 1061,  392,  392,  392,  392,  392,
+      392,  392,  392,  392,  395, 1061,  395,  395,  395,  395,
+      395,  395,  395,  395,  395,  408, 1061,  408,  408,  408,
+
+      408,  408,  408,  408,  408,  408,  169, 1061, 1061,  169,
+      169,  177, 1061,  177,  177,  177,  177,  177,  177,  177,
+      177,  177,  417, 1061, 1061,  417,  417,  417,  448, 1061,
+     1061,  448,  230,  230,  230,  230,  230,  230,  230,  231,
+      231,  231,  231,  231,  231,  231,  231,  475, 1061, 1061,
+     1061, 1061,  475,  475,  475,  475,  489,  489,  489,  489,
+      489,  489,  492,  492,  492,  492,  493, 1061,  493,  493,
+      493,  493,  268,  268,  268,  268,  268,  268,  268,  274,
+     1061,  274,  274,  274,  274,  274,  274,  274,  274,  274,
+      276, 1061,  276,  276,  276,  276,  276,  276,  276,  276,
+
+      276,  279, 1061,  279,  279,  279,  279,  279,  279,  279,
+      279,  279,  292, 1061,  292,  292,  292,  292,  292,  292,
+      292,  292,  292,  300,  300, 1061,  300,  300,  300,  300,
+      300,  300,  300,  300,  301,  301,  301,  301,  301,  301,
+      301,  301,  301,  301,  301,  315,  315, 1061,  315,  315,
+      315,  315,  315,  315,  315,  315,  318,  318,  318,  318,
+      318,  318,  318,  318,  318,  318,  318,  321,  321,  321,
+      321,  321,  321,  321,  321,  321,  321,  321,  325,  325,
+      325,  325,  325,  325,  325,  325,  325,  325,  325,  339,
+      339,  339,  339,  339,  339,  339,  339,  339,  339,  339,
+
+      342,  342,  342,  342,  342,  342,  342,  342,  342,  342,
+      342,  345,  345,  345,  345,  345,  345,  345,  345,  345,
+      345,  345,  349,  349,  349,  349,  349,  349,  349,  349,
+      349,  349,  349,  363,  363,  363,  363,  363,  363,  363,
+      363,  363,  363,  363,  366,  366,  366,  366,  366,  366,
+      366,  366,  366,  366,  366,  369,  369,  369,  369,  369,
+      369,  369,  369,  369,  369,  369,  373,  373,  373,  373,
+      373,  373,  373,  373,  373,  373,  373,  387,  387,  387,
+      387,  387,  387,  387,  387,  387,  387,  387,  390, 1061,
+      390,  390,  390,  390,  390,  390,  390,  390,  390,  392,
+
+     1061,  392,  392,  392,  392,  392,  392,  392,  392,  392,
+      395, 1061,  395,  395,  395,  395,  395,  395,  395,  395,
+      395,  408, 1061,  408,  408,  408,  408,  408,  408,  408,
+      408,  408,  169, 1061, 1061,  169,  169,  417, 1061, 1061,
+      417,  417,  417,  448, 1061, 1061,  448,  634, 1061,  634,
+      634,  634,  634,  634,  634,  634,  634,  634,  637, 1061,
+      637,  637,  637,  637,  637,  637,  637,  637,  637,  639,
+     1061,  639,  639,  639,  639,  639,  639,  639,  639,  639,
+      642,  642,  642,  642,  642,  642,  642,  231,  231,  231,
+      231,  231,  231,  231,  231,  489,  489,  489,  489,  489,
+
+      489,  651, 1061,  651,  651,  651,  651,  493, 1061,  493,
+      493,  493,  493,  268,  268,  268,  268,  268,  268,  268,
+      274, 1061,  274,  274,  274,  274,  274,  274,  274,  274,
+      274,  662, 1061,  662,  662,  662,  662,  662,  662,  662,
+      662,  662,  665, 1061,  665,  665,  665,  665,  665,  665,
+      665,  665,  665,  666, 1061,  666,  666,  666,  666,  666,
+      666,  666,  666,  666,  669, 1061,  669,  669,  669,  669,
+      669,  669,  669,  669,  669,  230,  230,  230,  230,  230,
+      230,  230,  300,  300, 1061,  300,  300,  300,  300,  300,
+      300,  300,  300,  682,  682,  682,  682,  682,  682,  682,
+
+      682,  682,  682,  682,  684,  684, 1061,  684,  684,  684,
+      684,  684,  684,  684,  684,  318,  318,  318,  318,  318,
+      318,  318,  318,  318,  318,  318,  692,  692,  692,  692,
+      692,  692,  692,  692,  692,  692,  692,  696,  696,  696,
+      696,  696,  696,  696,  696,  696,  696,  696,  698,  698,
+      698,  698,  698,  698,  698,  698,  698,  698,  698,  702,
+      702,  702,  702,  702,  702,  702,  702,  702,  702,  702,
+      342,  342,  342,  342,  342,  342,  342,  342,  342,  342,
+      342,  710,  710,  710,  710,  710,  710,  710,  710,  710,
+      710,  710,  714,  714,  714,  714,  714,  714,  714,  714,
+
+      714,  714,  714,  716,  716,  716,  716,  716,  716,  716,
+      716,  716,  716,  716,  720,  720,  720,  720,  720,  720,
+      720,  720,  720,  720,  720,  366,  366,  366,  366,  366,
+      366,  366,  366,  366,  366,  366,  728,  728,  728,  728,
+      728,  728,  728,  728,  728,  728,  728,  732,  732,  732,
+      732,  732,  732,  732,  732,  732,  732,  732,  734,  734,
+      734,  734,  734,  734,  734,  734,  734,  734,  734,  738,
+      738,  738,  738,  738,  738,  738,  738,  738,  738,  738,
+      390, 1061,  390,  390,  390,  390,  390,  390,  390,  390,
+      390,  746, 1061,  746,  746,  746,  746,  746,  746,  746,
+
+      746,  746,  749, 1061,  749,  749,  749,  749,  749,  749,
+      749,  749,  749,  750, 1061,  750,  750,  750,  750,  750,
+      750,  750,  750,  750,  753, 1061,  753,  753,  753,  753,
+      753,  753,  753,  753,  753,  417, 1061, 1061,  417,  417,
+      417,  634, 1061,  634,  634,  634,  634,  634,  634,  634,
+      634,  634,  637, 1061,  637,  637,  637,  637,  637,  637,
+      637,  637,  637,  639, 1061,  639,  639,  639,  639,  639,
+      639,  639,  639,  639,  642,  642,  642,  642,  642,  642,
+      642,  231,  231,  231,  231,  231,  231,  231,  231,  651,
+     1061,  651,  651,  651,  651,  493, 1061,  493,  493,  493,
+
+      493,  268,  268,  268,  268,  268,  268,  268,  274, 1061,
+      274,  274,  274,  274,  274,  274,  274,  274,  274,  662,
+     1061,  662,  662,  662,  662,  662,  662,  662,  662,  662,
+      665, 1061,  665,  665,  665,  665,  665,  665,  665,  665,
+      665,  666, 1061,  666,  666,  666,  666,  666,  666,  666,
+      666,  666,  669, 1061,  669,  669,  669,  669,  669,  669,
+      669,  669,  669,  230,  230,  230,  230,  230,  230,  230,
+      300,  300, 1061,  300,  300,  300,  300,  300,  300,  300,
+      300,  682,  682,  682,  682,  682,  682,  682,  682,  682,
+      682,  682,  684,  684, 1061,  684,  684,  684,  684,  684,
+
+      684,  684,  684,  318,  318,  318,  318,  318,  318,  318,
+      318,  318,  318,  318,  692,  692,  692,  692,  692,  692,
+      692,  692,  692,  692,  692,  696,  696,  696,  696,  696,
+      696,  696,  696,  696,  696,  696,  698,  698,  698,  698,
+      698,  698,  698,  698,  698,  698,  698,  702,  702,  702,
+      702,  702,  702,  702,  702,  702,  702,  702,  342,  342,
+      342,  342,  342,  342,  342,  342,  342,  342,  342,  710,
+      710,  710,  710,  710,  710,  710,  710,  710,  710,  710,
+      714,  714,  714,  714,  714,  714,  714,  714,  714,  714,
+      714,  716,  716,  716,  716,  716,  716,  716,  716,  716,
+
+      716,  716,  720,  720,  720,  720,  720,  720,  720,  720,
+      720,  720,  720,  366,  366,  366,  366,  366,  366,  366,
+      366,  366,  366,  366,  728,  728,  728,  728,  728,  728,
+      728,  728,  728,  728,  728,  732,  732,  732,  732,  732,
+      732,  732,  732,  732,  732,  732,  734,  734,  734,  734,
+      734,  734,  734,  734,  734,  734,  734,  738,  738,  738,
+      738,  738,  738,  738,  738,  738,  738,  738,  390, 1061,
+      390,  390,  390,  390,  390,  390,  390,  390,  390,  746,
+     1061,  746,  746,  746,  746,  746,  746,  746,  746,  746,
+      749, 1061,  749,  749,  749,  749,  749,  749,  749,  749,
+
+      749,  750, 1061,  750,  750,  750,  750,  750,  750,  750,
+      750,  750,  753, 1061,  753,  753,  753,  753,  753,  753,
+      753,  753,  753,  417, 1061, 1061,  417,  417,  417,  231,
+      231,  231,  231,  231,  231,  231,  231,  493, 1061,  493,
+      493,  493,  493,  268,  268,  268,  268,  268,  268,  268,
+      274, 1061,  274,  274,  274,  274,  274,  274,  274,  274,
+      274,  230,  230,  230,  230,  230,  230,  230,  300,  300,
+     1061,  300,  300,  300,  300,  300,  300,  300,  300,   23,
+     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
+     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
+
+     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
+     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
+     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
+     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
+     1061, 1061, 1061, 1061, 1061
     } ;
 
-static yyconst flex_int16_t yy_chk[7039] =
+static yyconst flex_int16_t yy_chk[7046] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -1608,8 +1612,8 @@
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    3,  219,    3,    3,    3,
-       29,   44,   44,    3,    3,  219,    3,    3,   13,    3,
+        1,    1,    1,    1,    1,    3,  220,    3,    3,    3,
+       29,   44,   44,    3,    3,  220,    3,    3,   13,    3,
         3,    3,    6,   14,    6,    6,    3,    3,    3,    3,
        13,   13,   13,   13,   35,   14,   14,   14,   14,   25,
 
@@ -1673,709 +1677,710 @@
        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
        21,   21,   21,   21,   21,   21,   21,   21,   21,   36,
-     1047,   36,   36,   36,   36,   40,   38,   36,   38,   38,
+     1055,   36,   36,   36,   36,   40,   38,   36,   38,   38,
        38,   38,   40,  102,   38,   39,   39,   39,   39,   46,
-       46,   39, 1043,   39,   39,   39,   39,   39,   39,   39,
+       46,   39, 1051,   39,   39,   39,   39,   39,   39,   39,
        39,   39,   39,   39,   39,   39,  102,   39,   39,   39,
        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
 
        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
        41,   47,   41,   41,   41,   41,  200,   51,   47,   49,
-     1042,   70,   41,   41,   51,   47,   49,   41,   55,   41,
-      200,   51,   41,   49,   52,   58,   41,   58,   58,   41,
-       42,   52,   42,   42,   42,   42,  817,   41,   52,   48,
-       56,  114,  114,   42,   70,   41,   48,   42,   50,   48,
-       48,   48,   48,   48,   49,   50,   78,   55,   51,   42,
-       43,  193,   50,   78,  817,   43,  193,   52,   43,   43,
-       43,   43,   43,   43,   53,   54,   43,   87,   43,   43,
-       56,   53,   54,   57,   57, 1041,   50,  113,   53,   54,
-
-      116,  116,   50,   59,   59,   59,   59,   67,   67,   67,
-       67,   60,   57,   60,   60,   60,   60, 1039,   64,  153,
-       87,   53,   71, 1038,   71,   64,   71,   71,   62,   54,
-      113,  197,   64,  197,   53,   61,   62,   62,   62,   62,
-       62,   62,   69,   69,   69,   69,   73,   62,   73,   73,
-       73,   73,  153,   61,   61,   64,   61,  166,   61,   80,
-       61,   61,   61,   61,   74,   61,   80,   61,   61,   61,
-      118,  118,  216,   61,   74,   74,   74,   74,   76,  118,
-       76,   76,   76,   76,   81,   81,   81,   81,  216,   80,
-      166,   76,  198,   79,  198,   76,   79,   79,   79,   79,
-
-       79,   74,   74,  126,  126,  214,   74,   76,   82,   82,
-       82,   82,   89,  214,   89,   89,   89,   89,   90,   90,
-       90,   90,  128,  128,   92,   99,   99,   99,   99,  117,
-      117,   92,  217,  117,   92,  138,  138,  217,   92,   98,
-       98,   98,   98,  105,  123,  123,   90,  105,  818,   92,
-       90,   91,  105,   91,   91,   91,   91,   92,  107,  107,
-      107,  107,  109,   91,   91,  123,  117,   98,   91,  109,
-       91,   98,  109,   91,  140,  140,  109,   91,  818,  106,
-       91,  106,  106,  106,  106,  195,  107,  109,   91,  195,
-      107,  135,  135,  195,  256,  109,   91,   94,   94,  256,
+     1050,   70,   41,   41,   51,   47,   49,   41,   55,   41,
+      200,   51,   41,   49,   56,   58,   41,   58,   58,   41,
+       42,   78,   42,   42,   42,   42,  676,   41,   78,   48,
+      197,   52,  197,   42,   70,   41,   48,   42,   52,   48,
+       48,   48,   48,   48,   49,   52,  193,   55,   51,   42,
+       43,  193,   43,  676,   56,   43, 1049,   50,   43,   43,
+       43,   43,   43,   43,   50,   53,   43,  822,   43,   43,
+       54,   50,   53,  218,   52,   57,   57,   54,  218,   53,
+
+       59,   59,   59,   59,   54,   60,   64,   60,   60,   60,
+       60, 1047,   80,   64,   57,   50,   87,  822,   62,   80,
+       64,   50,   53,  114,  114,  113,   62,   62,   62,   62,
+       62,   62,  116,  116,   54,   53,   61,   62,   67,   67,
+       67,   67,   80,   64,   69,   69,   69,   69,   71,   87,
+       71,  217,   71,   71,   61,   61,  105,   61,  113,   61,
+      105,   61,   61,   61,   61,  105,   61,  217,   61,   61,
+       61,   74, 1046,   73,   61,   73,   73,   73,   73,  126,
+      126,   74,   74,   74,   74,   76, 1044,   76,   76,   76,
+       76,   81,   81,   81,   81,  128,  128,  198,   76,  198,
+
+       79,  627,   76,   79,   79,   79,   79,   79,   74,   74,
+      627,  118,  118,   74,   76,   82,   82,   82,   82,   89,
+      118,   89,   89,   89,   89,   90,   90,   90,   90,  123,
+      123,   92,   99,   99,   99,   99,  117,  117,   92,  153,
+      117,   92,  130,  130, 1043,   92,   98,   98,   98,   98,
+      123,  130,  166,   90,  138,  138,   92,   90,   91, 1040,
+       91,   91,   91,   91,   92,  107,  107,  107,  107,  109,
+       91,   91,  153,  117,   98,   91,  109,   91,   98,  109,
+       91,  140,  140,  109,   91,  166,  106,   91,  106,  106,
+      106,  106,  195,  107,  109,   91,  195,  107,  135,  135,
+
+      195,  257,  109,   91,   94,   94,  257,   94,   94,   94,
+       94,   94,   94,   94,   94,   94,   94,   94,   94,  135,
+       94,   94,  215,  119,  119,  268,   94,   94,   94,   94,
+      215,  100,  268,  100,  100,  100,  100,  119,  276,  119,
+      119,  119,  119,   94,  100,  131,  131,  216,  100,  142,
+      142,  216,  129,  129,  190,  430,  129,  430,  142,  131,
+      100,  131,  131,  131,  131,  216,  190,   94,   94,   95,
+       95,  276,   95,   95,   95,   95,   95,   95,   95,   95,
+       95,   95,   95,   95, 1037,   95,   95,  120,  120,  129,
+      267,   95,   95,   95,   95,  147,  147,  163,  267,  163,
+
+      163,  132,  132,  120,  120,  120,  120,  155,   95,  155,
+      155,  155,  155,  427,   95,  122,  147,  132,  132,  132,
+      132,  299,  122,  206,  206,  122,  209,  209,  209,  122,
+      427,  120,   95,   95,  108,  120,  108,  108,  108,  108,
+      122,  156,  156,  156,  156,  132,  108,  108,  122,  132,
+      821,  108,  162,  108,  162,  162,  108,  299,  141,  141,
+      108,  291,  141,  108,  214,  214,  291,  162,  816,  156,
+      816,  108, 1036,  156,  170,  170,  170,  170,  821,  108,
+      111,  111,  111,  111,  111,  111, 1035,  111,  111,  111,
+      111,  111,  111,  111,  111,  141,  111,  111,  392,  134,
+
+      228,  228,  111,  111,  111,  111,  134,  468,  146,  134,
+     1033,  143,  143,  134,  247,  146,  247,  247,  146,  111,
+      830,  223,  146,  830,  134,  143,  223,  143,  143,  143,
+      143,  392,  134,  146,  171,  171,  171,  171,  896,  223,
+      468,  146,  896,  111,  111,  112,  112,  112,  112,  112,
+      112, 1032,  112,  112,  112,  112,  112,  112,  112,  112,
+      834,  112,  112,  834,  158,  254,  254,  112,  112,  112,
+      112,  158,  286,  286,  158,  144,  144, 1031,  158,  172,
+      172,  172,  172, 1030,  112,  173,  173,  173,  173,  158,
+      112,  144,  144,  144,  144,  309,  309,  158,  180,  180,
+
+      180,  180,  314,  184,  184,  184,  184,  314,  112,  112,
+      121,  121,  250,  301,  184,  838,  250,  301,  838,  144,
+      250,  892,  301,  144,  121, 1023,  121,  121,  121,  121,
+      184,  205,  205,  205,  205, 1018,  121,  121,  231,  318,
+      318,  121,  205,  121,  892,  231,  121,  320,  320,  207,
+      121,  207,  231,  121,  207,  207,  207,  207,  205,  323,
+      323,  121,  258,  258,  258,  258,  289,  289,  289,  121,
+      124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
+      124,  124,  124,  124,  124,  842,  124,  124,  842,  235,
+      324,  324,  124,  124,  124,  124,  235,  181,  677,  181,
 
-       94,   94,   94,   94,   94,   94,   94,   94,   94,   94,
-       94,   94,  135,   94,   94,  266,  119,  119,  267,   94,
-       94,   94,   94,  266,  100,  267,  100,  100,  100,  100,
-      119,  426,  119,  119,  119,  119,   94,  100,  130,  130,
-      429,  100,  429,  147,  147,  129,  129,  130,  426,  129,
-      275,  141,  141,  100,  155,  141,  155,  155,  155,  155,
-       94,   94,   95,   95,  147,   95,   95,   95,   95,   95,
-       95,   95,   95,   95,   95,   95,   95,  190,   95,   95,
-      120,  120,  129,  275,   95,   95,   95,   95,  141,  190,
-      826,  142,  142,  826,  132,  132,  120,  120,  120,  120,
-
-      142,   95,  162,  830,  162,  162,  830,   95,  122,  230,
-      132,  132,  132,  132,  298,  122,  230,  162,  122,  206,
-      206, 1036,  122,  230,  120,   95,   95,  108,  120,  108,
-      108,  108,  108,  122,  156,  156,  156,  156,  132,  108,
-      108,  122,  132, 1035,  108,  163,  108,  163,  163,  108,
-      298,  131,  131,  108,  213,  213,  108,  170,  170,  170,
-      170,  812,  156,  812,  108,  131,  156,  131,  131,  131,
-      131, 1032,  108,  111,  111,  111,  111,  111,  111,  624,
-      111,  111,  111,  111,  111,  111,  111,  111,  624,  111,
-      111, 1029,  134,  227,  227,  111,  111,  111,  111,  134,
-
-      234,  146,  134, 1028,  143,  143,  134,  234,  146,  253,
-      253,  146,  111,  834,  234,  146,  834,  134,  143,  290,
-      143,  143,  143,  143,  290,  134,  146,  171,  171,  171,
-      171,  209,  209,  209,  146, 1027,  111,  111,  112,  112,
-      112,  112,  112,  112, 1025,  112,  112,  112,  112,  112,
-      112,  112,  112,  887,  112,  112,  246,  158,  246,  246,
-      112,  112,  112,  112,  158,  285,  285,  158,  144,  144,
-     1024,  158,  172,  172,  172,  172,  887,  112,  173,  173,
-      173,  173,  158,  112,  144,  144,  144,  144,  308,  308,
-      158,  180,  180,  180,  180,  222,  184,  184,  184,  184,
-
-      222,  112,  112,  121,  121,  391,  313,  184,  317,  317,
-      215,  313,  144,  222,  215,  838,  144,  121,  838,  121,
-      121,  121,  121,  184,  205,  205,  205,  205,  215,  121,
-      121,  319,  319,  249,  121,  205,  121,  249,  391,  121,
-     1023,  249,  207,  121,  207,  232,  121,  207,  207,  207,
-      207,  205,  232, 1022,  121,  232,  232,  232,  232,  232,
-      322,  322,  121,  124,  124,  124,  124,  124,  124,  124,
-      124,  124,  124,  124,  124,  124,  124,  124, 1015,  124,
-      124,  466,  236,  323,  323,  124,  124,  124,  124,  236,
-      181, 1010,  181,  181,  181,  181,  236,  233,  235,  238,
-
-      334,  334,  124,  181,  233,  235,  238,  181,  237,  239,
-     1009,  233,  235,  238,  466,  237,  239,  341,  341,  181,
-      343,  343,  237,  239,  236,  236,  124,  124,  125,  125,
+      181,  181,  181,  235,  941,  233,  234,  335,  335,  124,
+      181, 1017,  233,  234,  181,  233,  233,  233,  233,  233,
+      234,  260,  260,  260,  260,  677,  181,  262,  262,  262,
+      262,  262, 1014,  124,  124,  125,  125,  125,  125,  125,
       125,  125,  125,  125,  125,  125,  125,  125,  125,  125,
-      125,  125,  125,  237,  125,  125, 1007,  233,  235,  238,
-      125,  125,  125,  125,  240,  346,  346,  239,  822,  270,
-      822,  240,  257,  257,  257,  257,  270,  125,  240,  259,
-      259,  259,  259,  125,  261,  261,  261,  261,  261,  269,
-      329,  329,  269,  269,  269,  269,  269,  271,  271,  271,
-      271,  125,  125,  133,  133,  472,  240,  272,  272,  272,
-
-      272, 1006,  270,  279,  279,  279,  279,  133,  406,  133,
-      133,  133,  133,  406,  281,  281,  281,  281,  673,  133,
-      133,  288,  288,  288,  133,  281,  133,  329,  472,  133,
-      347,  347,  286,  133,  286,  506,  133,  286,  286,  286,
-      286,  281,  300, 1004,  133,  673,  300,  302,  302,  302,
-      302,  300,  133,  136,  136,  136,  136,  136,  136,  136,
-      136,  136,  136,  136,  136,  136,  136,  136,  506,  136,
-      136,  311,  311,  311, 1003,  136,  136,  136,  136,  653,
-      280, 1002,  280,  280,  280,  280,  653,  284,  284,  284,
-      284,  891,  136,  280,  309,  891,  309,  280,  284,  309,
-
-      309,  309,  309,  324,  324,  330,  330,  320,  320,  280,
-      885,  320,  324,  653,  284,  885,  136,  136,  137,  137,
+      941,  125,  125, 1013,  236,  238,  234,  125,  125,  125,
+      125,  236,  238,  237,  240,  239,  271,  942,  236,  238,
+      237,  240,  239,  271,  125,  342,  342,  237,  240,  239,
+      125,  241,  272,  272,  272,  272,  344,  344,  241, 1011,
+      238,  273,  273,  273,  273,  241,  347,  347,  125,  125,
+
+      133,  133,  325,  325,  236,  237,  237,  348,  348,  271,
+     1010,  325,  240,  942,  133,  239,  133,  133,  133,  133,
+      312,  312,  312,  241,  359,  359,  133,  133,  326,  326,
+      826,  133,  826,  133,  366,  366,  133,  326,  321,  321,
+      133,  270,  321,  133,  270,  270,  270,  270,  270,  349,
+      349,  133,  280,  280,  280,  280,  368,  368,  349,  133,
+      136,  136,  136,  136,  136,  136,  136,  136,  136,  136,
+      136,  136,  136,  136,  136,  321,  136,  136,  303,  303,
+      303,  303,  136,  136,  136,  136, 1009,  281,  407,  281,
+      281,  281,  281,  407,  282,  282,  282,  282,  897,  136,
+
+      281,  287,  897,  287,  281,  282,  287,  287,  287,  287,
+      371,  371,  310,  985,  310,  985,  281,  310,  310,  310,
+      310,  282, 1007,  136,  136,  137,  137,  137,  137,  137,
       137,  137,  137,  137,  137,  137,  137,  137,  137,  137,
-      137,  137,  137, 1000,  137,  137,  999,  325,  325,  998,
-      137,  137,  137,  137,  320,  297,  325,  297,  297,  297,
-      297,  303,  330,  303,  303,  303,  303,  137,  297,  358,
-      358,  674,  297,  137,  303,  997,  348,  348,  303,  321,
-      321,  353,  353,  321,  297,  348,  304,  304,  304,  304,
-      303,  137,  137,  145,  145,  365,  365,  304,  674,  349,
-      349,  332,  332,  307,  307,  307,  307,  145,  349,  145,
-
-      145,  145,  145,  304,  307,  995,  321,  332,  332,  145,
-      145,  326,  326,  892,  145,  937,  145,  892,  353,  145,
-      307,  335,  335,  145,  354,  354,  145,  326,  326,  326,
-      326,  337,  337,  937,  145,  337,  886,  335,  335,  335,
-      337,  886,  145,  148,  148,  148,  148,  148,  148,  148,
-      148,  148,  148,  148,  148,  148,  148,  148,  888,  148,
-      148,  328,  328,  367,  367,  148,  148,  148,  148,  370,
-      370,  354,  508,  333,  333,  371,  371,  328,  328,  328,
-      328,  888,  148,  893,  333,  994,  333,  893,  328,  333,
-      333,  333,  333,  372,  372,  377,  377,  344,  344,  345,
+      893,  137,  137,  372,  372,  330,  330,  137,  137,  137,
+      137,  285,  285,  285,  285,  298,  890,  298,  298,  298,
+      298,  890,  285,  893,  137,  331,  331,  898,  298,  516,
+      137,  898,  298,  322,  322,  354,  354,  322,  285,  333,
+      333,  383,  383, 1006,  298,  350,  350,  474,  137,  137,
+      145,  145,  330,  516,  350,  333,  333,  516,  304, 1005,
+
+      304,  304,  304,  304,  145, 1004,  145,  145,  145,  145,
+      322,  304,  331,  402,  402,  304,  145,  145,  327,  327,
+      474,  145,  354,  145,  444,  444,  145,  304,  336,  336,
+      145,  355,  355,  145,  327,  327,  327,  327,  338,  338,
+     1002,  145,  338,  891,  336,  336,  336,  338,  891,  145,
+      148,  148,  148,  148,  148,  148,  148,  148,  148,  148,
+      148,  148,  148,  148,  148, 1001,  148,  148,  305,  305,
+      305,  305,  148,  148,  148,  148,  453, 1000,  355,  305,
+      308,  308,  308,  308,  453,  334,  334,  453,  899,  148,
+      998,  308,  899,  345,  345,  305,  334,  345,  334,  373,
 
-      345,  344,  372,  345,  328,  508,  148,  148,  149,  149,
+      373,  334,  334,  334,  334,  346,  346,  308,  373,  346,
+      378,  378,  990,  148,  148,  149,  149,  149,  149,  149,
       149,  149,  149,  149,  149,  149,  149,  149,  149,  149,
-      149,  149,  149,  935,  149,  149,  993,  331,  331,  991,
-      149,  149,  149,  149,  344,  983,  345,  368,  368,  350,
-      350,  368,  377,  331,  331,  331,  331,  149,  382,  382,
-      356,  356,  981,  149,  331,  350,  350,  350,  350,  361,
-      361,  401,  401,  361,  352,  352,  356,  356,  361,  935,
-      331,  149,  149,  157,  368,  157,  157,  157,  157,  889,
-      352,  352,  352,  352,  889,  157,  157,  357,  357,  979,
-      157,  352,  157,  378,  378,  157,  359,  359,  357,  157,
-
-      357,  578,  157,  357,  357,  357,  357,  352,  373,  373,
-      157,  977,  359,  359,  359,  443,  443,  373,  157,  160,
-      160,  938,  160,  160,  160,  160,  160,  160,  160,  160,
-      160,  160,  160,  160,  578,  160,  160,  355,  355,  938,
-      378,  160,  160,  160,  160,  395,  395,  395,  395,  501,
-      501,  374,  374,  355,  355,  355,  355,  894,  160,  376,
-      376,  894,  369,  369,  355,  976,  369,  374,  374,  374,
-      374,  404,  404,  404,  890,  376,  376,  376,  376,  890,
-      355,  975,  160,  160,  161,  161,  376,  161,  161,  161,
-      161,  161,  161,  161,  161,  161,  161,  161,  161,  369,
-
-      161,  161,  376,  379,  379,  974,  161,  161,  161,  161,
-      380,  380,  446,  446,  446,  383,  383,  519,  519,  379,
-      379,  379,  379,  161,  381,  381,  380,  380,  972,  161,
-      379,  383,  383,  383,  936,  381,  410,  381,  410,  410,
-      381,  381,  381,  381,  573,  573,  379,  161,  161,  289,
-      289,  289,  289,  385,  385,  537,  537,  385,  289,  289,
-      289,  402,  385,  402,  537,  939,  402,  402,  402,  402,
-      940,  580,  289,  289,  289,  289,  289,  289,  291,  291,
-      936,  291,  291,  291,  291,  291,  291,  291,  291,  291,
-      291,  291,  291,  971,  291,  291,  411,  411,  411,  411,
-
-      291,  291,  291,  291,  580,  396,  970,  396,  396,  396,
-      396,  939,  397,  397,  397,  397,  940,  291,  396,  504,
-      504,  504,  396,  397,  412,  412,  412,  412,  413,  413,
-      413,  413,  647,  647,  396,  414,  414,  414,  414,  397,
-      969,  291,  291,  292,  292,  968,  292,  292,  292,  292,
-      292,  292,  292,  292,  292,  292,  292,  292,  292,  292,
-      292,  292,  292,  292,  292,  292,  292,  292,  292,  292,
-      292,  292,  292,  292,  292,  292,  292,  292,  292,  292,
-      292,  292,  292,  292,  292,  292,  292,  292,  292,  292,
+      345,  149,  149,  988,  329,  329,  656,  149,  149,  149,
+      149,  986,  346,  656,  369,  369,  332,  332,  369,  984,
+      329,  329,  329,  329,  149,  357,  357,  378,  360,  360,
+      149,  329,  332,  332,  332,  332,  503,  503,  379,  379,
+      656,  357,  357,  332,  360,  360,  360,  329,  149,  149,
+      157,  369,  157,  157,  157,  157,  900,  362,  362,  332,
+      900,  362,  157,  157,  351,  351,  362,  157,  411,  157,
+
+      411,  411,  157,  358,  358,  983,  157,  381,  381,  157,
+      351,  351,  351,  351,  358,  379,  358,  157,  982,  358,
+      358,  358,  358,  381,  381,  157,  160,  160,  981,  160,
+      160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
+      160,  947,  160,  160,  353,  353,  374,  374,  160,  160,
+      160,  160,  405,  405,  405,  374,  521,  521,  375,  375,
+      353,  353,  353,  353,  901,  160,  356,  356,  901,  370,
+      370,  353,  979,  370,  375,  375,  375,  375,  396,  396,
+      396,  396,  356,  356,  356,  356,  947,  353,  508,  160,
+      160,  161,  161,  356,  161,  161,  161,  161,  161,  161,
+
+      161,  161,  161,  161,  161,  161,  370,  161,  161,  356,
+      377,  377,  978,  161,  161,  161,  161,  412,  412,  412,
+      412,  508,  384,  384,  575,  575,  377,  377,  377,  377,
+      161,  650,  650,  380,  380,  977,  161,  377,  384,  384,
+      384,  413,  413,  413,  413,  414,  414,  414,  414,  380,
+      380,  380,  380,  377,  161,  161,  290,  290,  290,  290,
+      380,  415,  415,  415,  415,  290,  290,  290,  386,  386,
+      530,  530,  386,  447,  447,  447,  380,  386,  976,  290,
+      290,  290,  290,  290,  290,  292,  292,  975,  292,  292,
       292,  292,  292,  292,  292,  292,  292,  292,  292,  292,
 
-      292,  292,  292,  292,  292,  292,  292,  292,  293,  293,
-      967,  293,  293,  293,  293,  293,  293,  293,  293,  293,
-      293,  293,  293,  964,  293,  293,  400,  400,  400,  400,
-      293,  293,  293,  293,  415,  963,  415,  400,  962,  415,
-      415,  415,  415,  442,  442,  442,  442,  293,  444,  444,
-      444,  444,  451,  400,  442,  445,  445,  445,  445,  961,
-      451,  670,  670,  451,  691,  691,  293,  522,  522,  522,
-      442,  293,  293,  312,  312,  312,  312,  959,  474,  476,
-      477,  478,  312,  312,  312,  474,  476,  477,  478,  957,
-      528,  528,  474,  476,  477,  478,  312,  312,  312,  312,
-
-      312,  312,  314,  314,  314,  314,  314,  314,  956,  314,
-      314,  314,  314,  314,  314,  314,  314,  631,  314,  314,
-      955,  479,  477,  481,  314,  314,  314,  314,  479,  954,
-      481,  502,  502,  502,  502,  479,  953,  481,  528,  551,
-      551,  314,  489,  489,  489,  489,  489,  497,  551,  497,
-      631,  952,  497,  497,  497,  497,  503,  503,  503,  503,
-      520,  520,  520,  520,  481,  314,  314,  315,  315,  315,
-      315,  315,  315,  315,  315,  315,  315,  315,  315,  315,
-      315,  315,  315,  315,  315,  315,  315,  315,  315,  315,
-      315,  315,  315,  315,  315,  315,  315,  315,  315,  315,
-
-      315,  315,  315,  315,  315,  315,  315,  315,  315,  315,
-      315,  315,  315,  315,  315,  315,  315,  315,  315,  315,
-      315,  315,  315,  315,  315,  315,  315,  315,  315,  315,
-      315,  315,  316,  316,  316,  316,  316,  316,  951,  316,
-      316,  316,  316,  316,  316,  316,  316,  895,  316,  316,
-      514,  895,  482,  496,  316,  316,  316,  316,  475,  482,
-      496,  950,  480,  896,  524,  475,  482,  896,  524,  480,
-      949,  316,  475,  524,  514,  928,  480,  636,  514,  659,
-      500,  500,  500,  500,  496,  531,  531,  926,  496,  482,
-      316,  500,  654,  529,  529,  316,  316,  327,  327,  654,
-
-      480,  531,  531,  475,  480,  543,  543,  500,  542,  542,
-      636,  327,  659,  327,  327,  327,  327,  925,  518,  518,
-      518,  518,  545,  545,  327,  515,  654,  515,  327,  518,
-      515,  515,  515,  515,  521,  521,  521,  521,  545,  545,
-      327,  336,  336,  529,  924,  518,  532,  532,  576,  576,
-      576,  557,  557,  533,  533,  543,  542,  336,  336,  336,
-      336,  923,  532,  532,  532,  532,  336,  336,  336,  533,
-      533,  533,  533,  663,  692,  692,  556,  556,  697,  697,
-      336,  336,  336,  336,  336,  336,  338,  338,  338,  338,
-      338,  338,  338,  338,  338,  338,  338,  338,  338,  338,
-
-      338,  557,  338,  338,  527,  527,  663,  921,  338,  338,
-      338,  338,  534,  534,  978,  527,  978,  527,  548,  548,
-      527,  527,  527,  527,  556,  338,  541,  541,  534,  534,
-      534,  559,  559,  920,  548,  548,  548,  541,  919,  541,
-      698,  698,  541,  541,  541,  541,  918,  559,  559,  338,
-      338,  339,  339,  339,  339,  339,  339,  339,  339,  339,
-      339,  339,  339,  339,  339,  339,  339,  339,  339,  339,
-      339,  339,  339,  339,  339,  339,  339,  339,  339,  339,
-      339,  339,  339,  339,  339,  339,  339,  339,  339,  339,
-      339,  339,  339,  339,  339,  339,  339,  339,  339,  339,
+      510,  292,  292,  382,  382,  580,  974,  292,  292,  292,
+      292,  506,  506,  506,  382,  987,  382,  987,  530,  382,
+      382,  382,  382,  397,  292,  397,  397,  397,  397,  445,
+      445,  445,  445,  510,  673,  673,  397,  403,  580,  403,
+      397,  973,  403,  403,  403,  403,  694,  694,  292,  292,
+      293,  293,  397,  293,  293,  293,  293,  293,  293,  293,
+      293,  293,  293,  293,  293,  293,  293,  293,  293,  293,
+      293,  293,  293,  293,  293,  293,  293,  293,  293,  293,
+      293,  293,  293,  293,  293,  293,  293,  293,  293,  293,
+      293,  293,  293,  293,  293,  293,  293,  293,  293,  293,
+
+      293,  293,  293,  293,  293,  293,  293,  293,  293,  293,
+      293,  293,  293,  293,  293,  294,  294,  970,  294,  294,
+      294,  294,  294,  294,  294,  294,  294,  294,  294,  294,
+      969,  294,  294,  398,  398,  398,  398,  294,  294,  294,
+      294,  524,  524,  524,  398,  401,  401,  401,  401,  968,
+      443,  443,  443,  443,  294,  967,  401,  416,  943,  416,
+      398,  443,  416,  416,  416,  416,  446,  446,  446,  446,
+      695,  695,  401,  294,  531,  531,  943,  443,  294,  294,
+      313,  313,  313,  313,  965,  476,  478,  479,  480,  313,
+      313,  313,  476,  478,  479,  480,  963,  544,  544,  476,
+
+      478,  479,  480,  313,  313,  313,  313,  313,  313,  315,
+      315,  315,  315,  315,  315,  962,  315,  315,  315,  315,
+      315,  315,  315,  315,  531,  315,  315,  961,  481,  479,
+      483,  315,  315,  315,  315,  481,  960,  483,  504,  504,
+      504,  504,  481,  959,  483,  544,  539,  539,  315,  491,
+      491,  491,  491,  491,  499,  539,  499,  700,  700,  499,
+      499,  499,  499,  505,  505,  505,  505,  522,  522,  522,
+      522,  483,  315,  315,  316,  316,  316,  316,  316,  316,
+      316,  316,  316,  316,  316,  316,  316,  316,  316,  316,
+      316,  316,  316,  316,  316,  316,  316,  316,  316,  316,
+
+      316,  316,  316,  316,  316,  316,  316,  316,  316,  316,
+      316,  316,  316,  316,  316,  316,  316,  316,  316,  316,
+      316,  316,  316,  316,  316,  316,  316,  316,  316,  316,
+      316,  316,  316,  316,  316,  316,  316,  316,  316,  317,
+      317,  317,  317,  317,  317,  958,  317,  317,  317,  317,
+      317,  317,  317,  317,  957,  317,  317,  701,  701,  484,
+      498,  317,  317,  317,  317,  477,  484,  498,  956,  482,
+      902,  526,  477,  484,  902,  526,  482,  955,  317,  477,
+      526,  558,  558,  482,  533,  533,  582,  502,  502,  502,
+      502,  498,  578,  578,  578,  498,  484,  317,  502,  657,
+
+      533,  533,  317,  317,  328,  328,  657,  482,  538,  538,
+      477,  482,  538,  634,  502,  553,  553,  639,  328,  582,
+      328,  328,  328,  328,  553,  520,  520,  520,  520,  558,
+      662,  328,  517,  657,  517,  328,  520,  517,  517,  517,
+      517,  523,  523,  523,  523,  538,  634,  328,  337,  337,
+      639,  934,  520,  534,  534,  712,  712,  894,  545,  545,
+      535,  535,  894,  662,  337,  337,  337,  337,  945,  534,
+      534,  534,  534,  337,  337,  337,  535,  535,  535,  535,
+      666,  559,  559,  576,  576,  576,  576,  337,  337,  337,
+      337,  337,  337,  339,  339,  339,  339,  339,  339,  339,
+
+      339,  339,  339,  339,  339,  339,  339,  339,  545,  339,
+      339,  529,  529,  666,  945,  339,  339,  339,  339,  536,
+      536,  989,  529,  989,  529,  547,  547,  529,  529,  529,
+      529,  559,  339,  543,  543,  536,  536,  536,  561,  561,
+      895,  547,  547,  932,  543,  895,  543,  713,  713,  543,
+      543,  543,  543,  931,  561,  561,  339,  339,  340,  340,
+      340,  340,  340,  340,  340,  340,  340,  340,  340,  340,
+      340,  340,  340,  340,  340,  340,  340,  340,  340,  340,
+      340,  340,  340,  340,  340,  340,  340,  340,  340,  340,
+      340,  340,  340,  340,  340,  340,  340,  340,  340,  340,
 
-      339,  339,  339,  339,  339,  339,  339,  339,  339,  339,
-      339,  339,  339,  339,  339,  339,  340,  340,  340,  340,
       340,  340,  340,  340,  340,  340,  340,  340,  340,  340,
-      340,  917,  340,  340,  530,  530,  565,  565,  340,  340,
-      340,  340,  709,  709,  916,  565,  574,  574,  574,  574,
-      530,  530,  530,  530,  679,  340,  536,  536,  679,  915,
-      536,  530,  641,  679,  538,  538,  687,  687,  538,  641,
-      913,  642,  546,  546,  340,  912,  641,  530,  642,  340,
-      340,  351,  351,  693,  693,  642,  544,  544,  546,  546,
-      546,  546,  693,  536,  980,  351,  980,  351,  351,  351,
-
-      351,  538,  544,  544,  544,  544,  688,  688,  351,  687,
-      710,  710,  351,  544,  547,  547,  550,  550,  552,  552,
-      550,  743,  552,  911,  351,  360,  360,  715,  715,  544,
-      547,  547,  547,  547,  575,  575,  575,  575,  694,  694,
-      941,  360,  360,  360,  360,  562,  562,  694,  910,  688,
-      360,  360,  360,  550,  743,  552,  583,  583,  583,  583,
-      909,  562,  562,  562,  360,  360,  360,  360,  360,  360,
-      362,  362,  362,  362,  362,  362,  362,  362,  362,  362,
-      362,  362,  362,  362,  362,  941,  362,  362,  555,  555,
-      716,  716,  362,  362,  362,  362,  560,  560,  982,  555,
-
-      982,  555,  561,  561,  555,  555,  555,  555,  908,  362,
-      727,  727,  560,  560,  560,  560,  711,  711,  561,  561,
-      561,  561,  569,  907,  569,  711,  906,  569,  569,  569,
-      569,  728,  728,  362,  362,  363,  363,  363,  363,  363,
-      363,  363,  363,  363,  363,  363,  363,  363,  363,  363,
-      363,  363,  363,  363,  363,  363,  363,  363,  363,  363,
-      363,  363,  363,  363,  363,  363,  363,  363,  363,  363,
-      363,  363,  363,  363,  363,  363,  363,  363,  363,  363,
-      363,  363,  363,  363,  363,  363,  363,  363,  363,  363,
+      340,  340,  340,  340,  340,  340,  340,  340,  340,  340,
+      340,  340,  340,  341,  341,  341,  341,  341,  341,  341,
+      341,  341,  341,  341,  341,  341,  341,  341,  930,  341,
+      341,  532,  532,  567,  567,  341,  341,  341,  341,  718,
+      718,  929,  567,  546,  546,  719,  719,  532,  532,  532,
+      532,  927,  341,  540,  540,  730,  730,  540,  532,  546,
+      546,  546,  546,  926,  548,  548,  577,  577,  577,  577,
+      546,  341,  731,  731,  532,  746,  341,  341,  352,  352,
+      548,  548,  548,  548,  549,  549,  546,  552,  552,  903,
+
+      540,  552,  352,  903,  352,  352,  352,  352,  550,  550,
+      549,  549,  549,  549,  750,  352,  554,  554,  746,  352,
+      554,  944,  644,  645,  550,  550,  550,  557,  557,  644,
+      645,  352,  361,  361,  552,  925,  644,  645,  557,  944,
+      557,  736,  736,  557,  557,  557,  557,  750,  361,  361,
+      361,  361,  946,  554,  737,  737,  649,  361,  361,  361,
+      566,  566,  888,  649,  566,  585,  585,  585,  585,  888,
+      649,  361,  361,  361,  361,  361,  361,  363,  363,  363,
       363,  363,  363,  363,  363,  363,  363,  363,  363,  363,
+      363,  363,  888,  363,  363,  560,  560,  566,  946,  363,
 
+      363,  363,  363,  564,  564,  649,  682,  562,  562,  924,
+      682,  560,  560,  560,  560,  682,  363,  563,  563,  564,
+      564,  564,  560,  562,  562,  562,  562,  586,  586,  586,
+      586,  827,  827,  563,  563,  563,  563,  997,  560,  997,
+      363,  363,  364,  364,  364,  364,  364,  364,  364,  364,
+      364,  364,  364,  364,  364,  364,  364,  364,  364,  364,
+      364,  364,  364,  364,  364,  364,  364,  364,  364,  364,
+      364,  364,  364,  364,  364,  364,  364,  364,  364,  364,
+      364,  364,  364,  364,  364,  364,  364,  364,  364,  364,
       364,  364,  364,  364,  364,  364,  364,  364,  364,  364,
-      364,  364,  364,  364,  364,  905,  364,  364,  558,  558,
-      733,  733,  364,  364,  364,  364,  904,  572,  572,  572,
-      572,  942,  705,  705,  558,  558,  558,  558,  572,  364,
-      564,  564,  712,  712,  564,  558,  643,  747,  566,  566,
-      903,  712,  566,  643,  572,  700,  700,  902,  364,  700,
-      643,  558,  901,  364,  364,  375,  375,  584,  584,  584,
-      584,  655,  655,  655,  655,  705,  942,  564,  899,  375,
-      747,  375,  375,  375,  375,  566,  645,  643,  644,  990,
-      646,  990,  375,  645,  808,  644,  375,  646,  729,  729,
-
-      645,  808,  644,  877,  646,  734,  734,  729,  375,  384,
-      384,  656,  656,  656,  656,  675,  675,  675,  675,  676,
-      676,  676,  676,  823,  823,  384,  384,  384,  384,  644,
-      645,  808,  706,  706,  384,  384,  384,  689,  689,  646,
-      876,  689,  718,  718,  723,  723,  718,  943,  384,  384,
-      384,  384,  384,  384,  386,  386,  386,  386,  386,  386,
-      386,  386,  386,  386,  386,  386,  386,  386,  386,  874,
-      386,  386,  685,  685,  689,  706,  386,  386,  386,  386,
-      686,  686,  736,  736,  703,  703,  736,  723,  685,  685,
-      685,  685,  943,  386,  704,  704,  686,  686,  686,  686,
-
-      703,  703,  703,  703,  873,  730,  730,  824,  824,  871,
-      704,  704,  704,  704,  730,  825,  825,  386,  386,  387,
-      387,  387,  387,  387,  387,  387,  387,  387,  387,  387,
-      387,  387,  387,  387,  387,  387,  387,  387,  387,  387,
-      387,  387,  387,  387,  387,  387,  387,  387,  387,  387,
-      387,  387,  387,  387,  387,  387,  387,  387,  387,  387,
-      387,  387,  387,  387,  387,  387,  387,  387,  387,  387,
-      387,  387,  387,  387,  387,  387,  387,  387,  387,  387,
-      387,  387,  387,  387,  388,  388,  388,  388,  388,  388,
-      388,  388,  388,  388,  388,  388,  388,  388,  388,  944,
 
-      388,  388,  724,  724,  827,  827,  388,  388,  388,  388,
-      739,  739,  739,  739,  828,  828,  690,  690,  695,  695,
-      690,  870,  695,  388,  696,  696,  707,  707,  696,  869,
-      707,  708,  708,  713,  713,  708,  866,  713,  740,  740,
-      740,  740,  388,  758,  944,  724,  865,  388,  388,  405,
-      405,  405,  405,  690,  864,  695,  758,  797,  405,  405,
-      405,  696,  758,  707,  797,  829,  829,  863,  708,  861,
-      713,  797,  405,  405,  405,  405,  405,  405,  407,  407,
-      860,  407,  407,  407,  407,  407,  407,  407,  407,  407,
-      407,  407,  407,  859,  407,  407,  858,  721,  721,  797,
-
-      407,  407,  407,  407,  722,  722,  831,  831,  714,  714,
-      774,  857,  714,  721,  721,  721,  721,  407,  832,  832,
-      722,  722,  722,  722,  856,  774,  833,  833,  837,  837,
-      882,  774,  882,  882,  897,  898, 1018, 1018,  897,  898,
-      854,  407,  407,  408,  408,  714,  408,  408,  408,  408,
-      408,  408,  408,  408,  408,  408,  408,  408,  408,  408,
-      408,  408,  408,  408,  408,  408,  408,  408,  408,  408,
-      408,  408,  408,  408,  408,  408,  408,  408,  408,  408,
-      408,  408,  408,  408,  408,  408,  408,  408,  408,  408,
+      364,  364,  364,  364,  364,  364,  364,  365,  365,  365,
+      365,  365,  365,  365,  365,  365,  365,  365,  365,  365,
+      365,  365,  923,  365,  365,  574,  574,  574,  574,  365,
+      365,  365,  365,  922,  696,  696,  574,  568,  568,  828,
+      828,  568,  571,  696,  571,  921,  365,  571,  571,  571,
+      571,  920,  574,  646,  647,  658,  658,  658,  658,  918,
+      646,  647,  648,  829,  829,  365,  917,  646,  647,  648,
+      365,  365,  376,  376,  568,  916,  648,  659,  659,  659,
+      659,  678,  678,  678,  678,  915,  376,  914,  376,  376,
+      376,  376,  831,  831,  646,  647,  690,  690,  913,  376,
+
+      761,  691,  691,  376,  688,  688,  648,  679,  679,  679,
+      679,  689,  689,  761,  912,  376,  385,  385,  911,  761,
+      688,  688,  688,  688,  832,  832,  910,  689,  689,  689,
+      689,  948,  385,  385,  385,  385,  703,  703,  909,  690,
+      703,  385,  385,  385,  691,  692,  692,  833,  833,  692,
+      693,  693,  708,  708,  693,  385,  385,  385,  385,  385,
+      385,  387,  387,  387,  387,  387,  387,  387,  387,  387,
+      387,  387,  387,  387,  387,  387,  948,  387,  387,  697,
+      697,  908,  692,  387,  387,  387,  387,  693,  697,  706,
+      706,  835,  835,  707,  707,  708,  907,  721,  721,  906,
+
+      387,  721,  724,  724,  905,  706,  706,  706,  706,  707,
+      707,  707,  707,  714,  714,  836,  836,  905,  724,  724,
+      724,  724,  714,  905,  387,  387,  388,  388,  388,  388,
+      388,  388,  388,  388,  388,  388,  388,  388,  388,  388,
+      388,  388,  388,  388,  388,  388,  388,  388,  388,  388,
+      388,  388,  388,  388,  388,  388,  388,  388,  388,  388,
+      388,  388,  388,  388,  388,  388,  388,  388,  388,  388,
+      388,  388,  388,  388,  388,  388,  388,  388,  388,  388,
+      388,  388,  388,  388,  388,  388,  388,  388,  388,  388,
+      388,  389,  389,  389,  389,  389,  389,  389,  389,  389,
+
+      389,  389,  389,  389,  389,  389,  949,  389,  389,  709,
+      709,  715,  715,  389,  389,  389,  389,  904,  726,  726,
+      715,  727,  727,  698,  698,  699,  699,  698,  882,  699,
+      389,  710,  710,  711,  711,  710,  881,  711,  716,  716,
+      717,  717,  716,  879,  717,  878,  739,  739,  777,  389,
+      739,  949,  709,  876,  389,  389,  406,  406,  406,  406,
+      698,  726,  699,  777,  727,  406,  406,  406,  710,  777,
+      711,  742,  742,  742,  742,  716,  875,  717,  950,  406,
+      406,  406,  406,  406,  406,  408,  408,  874,  408,  408,
       408,  408,  408,  408,  408,  408,  408,  408,  408,  408,
 
-      408,  408,  408,  408,  408,  408,  408,  408,  409,  409,
-      853,  409,  409,  409,  409,  409,  409,  409,  409,  409,
-      409,  409,  409,  945,  409,  409,  900,  883,  807,  884,
-      409,  409,  409,  409,  883,  807,  884, 1019, 1019,  900,
-      725,  725,  726,  726,  725,  900,  726,  409,  731,  731,
-      732,  732,  731,  799,  732,  800,  852,  883,  851,  884,
-      799,  849,  800,  807, 1020, 1020,  409,  799,  945,  800,
-      848,  409,  409,  505,  505,  505,  505,  725,  847,  726,
-      846,  880,  505,  505,  505,  731,  845,  732,  880,  844,
-      843,  932,  799,  932,  932,  880,  505,  505,  505,  505,
-
-      505,  505,  509,  509,  800,  509,  509,  509,  509,  509,
-      509,  509,  509,  509,  509,  509,  509,  946,  509,  509,
-      842,  878,  879,  881,  509,  509,  509,  509,  878,  879,
-      881,  933,  840,  934,  930,  878,  879,  881,  930,  931,
-      839,  509,  933,  931,  934,  930,  985,  985,  985,  933,
-      931,  934,  930,  987,  987,  987,  814,  931,  878,  879,
-      805,  802,  946,  796,  795,  509,  509,  510,  510,  794,
-      510,  510,  510,  510,  510,  510,  510,  510,  510,  510,
-      510,  510,  510,  510,  510,  510,  510,  510,  510,  510,
-      510,  510,  510,  510,  510,  510,  510,  510,  510,  510,
-
-      510,  510,  510,  510,  510,  510,  510,  510,  510,  510,
-      510,  510,  510,  510,  510,  510,  510,  510,  510,  510,
-      510,  510,  510,  510,  510,  510,  510,  510,  510,  510,
-      510,  510,  523,  523,  523,  523,  793,  798,  989,  989,
-      989,  523,  523,  523,  798,  947,  948,  792,  984,  984,
-      984,  798,  984,  791,  790,  523,  523,  523,  523,  523,
-      523,  525,  525,  525,  525,  525,  525,  789,  525,  525,
-      525,  525,  525,  525,  525,  525,  788,  525,  525,  787,
-      786,  798,  785,  525,  525,  525,  525,  782,  781,  779,
-      947,  948,  986,  986,  986,  776,  986,  988,  988,  988,
-
-      525,  988,  775,  773,  772,  771,  770,  769,  768,  767,
-      766,  765,  763,  762,  761,  760,  757,  755,  754,  753,
-      751,  746,  742,  741,  525,  525,  526,  526,  526,  526,
-      526,  526,  738,  526,  526,  526,  526,  526,  526,  526,
-      526,  526,  526,  526,  526,  526,  526,  526,  526,  526,
-      526,  526,  526,  526,  526,  526,  526,  526,  526,  526,
-      526,  526,  526,  526,  526,  526,  526,  526,  526,  526,
-      526,  526,  526,  526,  526,  526,  526,  526,  526,  526,
-      526,  526,  526,  526,  526,  526,  526,  526,  526,  526,
-      526,  535,  535,  720,  702,  684,  682,  678,  677,  672,
-
-      671,  669,  667,  662,  658,  657,  652,  535,  535,  535,
-      535,  651,  650,  649,  640,  639,  535,  535,  535,  634,
-      630,  629,  628,  627,  626,  625,  623,  622,  621,  620,
-      535,  535,  535,  535,  535,  535,  539,  539,  539,  539,
-      539,  539,  539,  539,  539,  539,  539,  539,  539,  539,
-      539,  619,  539,  539,  618,  616,  615,  614,  539,  539,
-      539,  539,  613,  612,  611,  610,  609,  607,  606,  605,
-      604,  603,  602,  601,  600,  539,  599,  598,  597,  595,
-      594,  593,  592,  591,  590,  589,  588,  587,  586,  579,
-      571,  570,  517,  516,  513,  512,  511,  507,  499,  539,
-
-      539,  540,  540,  540,  540,  540,  540,  540,  540,  540,
-      540,  540,  540,  540,  540,  540,  540,  540,  540,  540,
-      540,  540,  540,  540,  540,  540,  540,  540,  540,  540,
-      540,  540,  540,  540,  540,  540,  540,  540,  540,  540,
-      540,  540,  540,  540,  540,  540,  540,  540,  540,  540,
-      540,  540,  540,  540,  540,  540,  540,  540,  540,  540,
-      540,  540,  540,  540,  540,  540,  549,  549,  498,  495,
-      494,  493,  492,  487,  486,  485,  484,  483,  473,  470,
-      467,  465,  549,  549,  549,  549,  464,  463,  462,  461,
-      460,  549,  549,  549,  459,  458,  457,  456,  455,  454,
-
-      453,  452,  450,  449,  448,  549,  549,  549,  549,  549,
-      549,  553,  553,  553,  553,  553,  553,  553,  553,  553,
-      553,  553,  553,  553,  553,  553,  440,  553,  553,  439,
-      438,  437,  436,  553,  553,  553,  553,  435,  434,  433,
-      432,  431,  430,  428,  427,  425,  424,  423,  422,  421,
-      553,  420,  419,  418,  417,  399,  398,  394,  306,  305,
-      296,  295,  294,  283,  282,  278,  268,  265,  264,  260,
-      255,  254,  252,  251,  553,  553,  554,  554,  554,  554,
-      554,  554,  554,  554,  554,  554,  554,  554,  554,  554,
-      554,  554,  554,  554,  554,  554,  554,  554,  554,  554,
-
-      554,  554,  554,  554,  554,  554,  554,  554,  554,  554,
-      554,  554,  554,  554,  554,  554,  554,  554,  554,  554,
-      554,  554,  554,  554,  554,  554,  554,  554,  554,  554,
-      554,  554,  554,  554,  554,  554,  554,  554,  554,  554,
-      554,  563,  563,  250,  248,  247,  245,  231,  229,  228,
-      221,  220,  218,  212,  211,  203,  202,  563,  563,  563,
-      563,  201,  199,  194,  192,  191,  563,  563,  563,  189,
-      188,  187,  177,  159,  154,  152,  110,  101,   96,   93,
-      563,  563,  563,  563,  563,  563,  567,  567,  567,  567,
-      567,  567,  567,  567,  567,  567,  567,  567,  567,  567,
-
-      567,   88,  567,  567,   86,   83,   77,   72,  567,  567,
-      567,  567,   65,   63,   34,   32,   28,   23,    8,    4,
-        2,    0,    0,    0,    0,  567,    0,    0,    0,    0,
+      871,  408,  408,  725,  725,  732,  732,  408,  408,  408,
+      408,  811,  837,  837,  732,  870,  733,  733,  811,  725,
+      725,  725,  725,  950,  408,  733,  743,  743,  743,  743,
+      841,  841,  887,  885,  887,  887, 1026, 1026,  886,  938,
+      885,  938,  938, 1027, 1027,  886,  811,  885,  408,  408,
+      409,  409,  886,  409,  409,  409,  409,  409,  409,  409,
+      409,  409,  409,  409,  409,  409,  409,  409,  409,  409,
+      409,  409,  409,  409,  409,  409,  409,  409,  409,  409,
+      409,  409,  409,  409,  409,  409,  409,  409,  409,  409,
+      409,  409,  409,  409,  409,  409,  409,  409,  409,  409,
+
+      409,  409,  409,  409,  409,  409,  409,  409,  409,  409,
+      409,  409,  409,  409,  409,  410,  410,  869,  410,  410,
+      410,  410,  410,  410,  410,  410,  410,  410,  410,  410,
+      951,  410,  410,  868,  812,  889,  867,  410,  410,  410,
+      410,  812,  889,  952,  992,  992,  992,  728,  728,  729,
+      729,  728,  953,  729,  410,  734,  734,  735,  735,  734,
+      801,  735,  803,  883,  865,  889,  954,  801,  864,  803,
+      883,  812,  863,  410,  801,  951,  803,  883,  410,  410,
+      507,  507,  507,  507,  728,  862,  729,  861,  952,  507,
+      507,  507,  734,  860,  735, 1028, 1028,  953,  858,  857,
+
+      883,  803,  801,  507,  507,  507,  507,  507,  507,  511,
+      511,  954,  511,  511,  511,  511,  511,  511,  511,  511,
+      511,  511,  511,  511,  856,  511,  511,  939,  884,  855,
+      853,  511,  511,  511,  511,  884,  936,  852,  939,  937,
+      936,  940,  884,  937,  851,  939,  850,  936,  511,  849,
+      937,  848,  940,  847,  936,  846,  844,  937,  843,  940,
+      991,  991,  991,  818,  991,  884,  993,  993,  993,  809,
+      993,  806,  511,  511,  512,  512,  800,  512,  512,  512,
+      512,  512,  512,  512,  512,  512,  512,  512,  512,  512,
+      512,  512,  512,  512,  512,  512,  512,  512,  512,  512,
+
+      512,  512,  512,  512,  512,  512,  512,  512,  512,  512,
+      512,  512,  512,  512,  512,  512,  512,  512,  512,  512,
+      512,  512,  512,  512,  512,  512,  512,  512,  512,  512,
+      512,  512,  512,  512,  512,  512,  512,  512,  512,  525,
+      525,  525,  525,  799,  802,  804,  798,  797,  525,  525,
+      525,  802,  804,  994,  994,  994,  796,  795,  802,  804,
+      794,  793,  525,  525,  525,  525,  525,  525,  527,  527,
+      527,  527,  527,  527,  792,  527,  527,  527,  527,  527,
+      527,  527,  527,  791,  527,  527,  790,  789,  802,  786,
+      527,  527,  527,  527,  804,  995,  995,  995,  785,  995,
+
+      996,  996,  996,  783,  781,  779,  778,  527,  776,  775,
+      774,  773,  772,  771,  770,  769,  768,  766,  765,  764,
+      763,  760,  758,  757,  756,  754,  749,  745,  744,  741,
+      723,  527,  527,  528,  528,  528,  528,  528,  528,  705,
+      528,  528,  528,  528,  528,  528,  528,  528,  528,  528,
+      528,  528,  528,  528,  528,  528,  528,  528,  528,  528,
+      528,  528,  528,  528,  528,  528,  528,  528,  528,  528,
+      528,  528,  528,  528,  528,  528,  528,  528,  528,  528,
+      528,  528,  528,  528,  528,  528,  528,  528,  528,  528,
+      528,  528,  528,  528,  528,  528,  528,  528,  537,  537,
+
+      687,  685,  681,  680,  675,  674,  672,  670,  665,  661,
+      660,  655,  654,  653,  537,  537,  537,  537,  652,  643,
+      642,  637,  633,  537,  537,  537,  632,  631,  630,  629,
+      628,  626,  625,  624,  623,  622,  621,  537,  537,  537,
+      537,  537,  537,  541,  541,  541,  541,  541,  541,  541,
+      541,  541,  541,  541,  541,  541,  541,  541,  619,  541,
+      541,  618,  617,  616,  615,  541,  541,  541,  541,  614,
+      613,  612,  611,  609,  608,  607,  606,  605,  604,  603,
+      602,  601,  541,  600,  599,  597,  596,  595,  594,  593,
+      592,  591,  590,  589,  588,  581,  573,  572,  519,  518,
+
+      515,  514,  513,  509,  501,  500,  541,  541,  542,  542,
+      542,  542,  542,  542,  542,  542,  542,  542,  542,  542,
+      542,  542,  542,  542,  542,  542,  542,  542,  542,  542,
+      542,  542,  542,  542,  542,  542,  542,  542,  542,  542,
+      542,  542,  542,  542,  542,  542,  542,  542,  542,  542,
+      542,  542,  542,  542,  542,  542,  542,  542,  542,  542,
+      542,  542,  542,  542,  542,  542,  542,  542,  542,  542,
+      542,  542,  542,  551,  551,  497,  496,  495,  494,  489,
+      488,  487,  486,  485,  475,  472,  469,  467,  466,  551,
+      551,  551,  551,  465,  464,  463,  462,  461,  551,  551,
+
+      551,  460,  459,  458,  457,  456,  455,  454,  452,  451,
+      450,  449,  551,  551,  551,  551,  551,  551,  555,  555,
+      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
+      555,  555,  555,  441,  555,  555,  440,  439,  438,  437,
+      555,  555,  555,  555,  436,  435,  434,  433,  432,  431,
+      429,  428,  426,  425,  424,  423,  422,  555,  421,  420,
+      419,  418,  400,  399,  395,  307,  306,  297,  296,  295,
+      284,  283,  279,  269,  266,  265,  261,  256,  255,  253,
+      252,  555,  555,  556,  556,  556,  556,  556,  556,  556,
+      556,  556,  556,  556,  556,  556,  556,  556,  556,  556,
+
+      556,  556,  556,  556,  556,  556,  556,  556,  556,  556,
+      556,  556,  556,  556,  556,  556,  556,  556,  556,  556,
+      556,  556,  556,  556,  556,  556,  556,  556,  556,  556,
+      556,  556,  556,  556,  556,  556,  556,  556,  556,  556,
+      556,  556,  556,  556,  556,  556,  556,  556,  565,  565,
+      251,  249,  248,  246,  232,  230,  229,  222,  221,  219,
+      213,  212,  211,  203,  565,  565,  565,  565,  202,  201,
+      199,  194,  192,  565,  565,  565,  191,  189,  188,  187,
+      177,  159,  154,  152,  110,  101,   96,  565,  565,  565,
+      565,  565,  565,  569,  569,  569,  569,  569,  569,  569,
+
+      569,  569,  569,  569,  569,  569,  569,  569,   93,  569,
+      569,   88,   86,   83,   77,  569,  569,  569,  569,   72,
+       65,   63,   34,   32,   28,   23,    8,    4,    2,    0,
+        0,    0,  569,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  567,
-      567,  568,  568,  568,  568,  568,  568,  568,  568,  568,
-      568,  568,  568,  568,  568,  568,  568,  568,  568,  568,
-      568,  568,  568,  568,  568,  568,  568,  568,  568,  568,
-      568,  568,  568,  568,  568,  568,  568,  568,  568,  568,
-      568,  568,  568,  568,  568,  568,  568,  568,  568,  568,
-
-      568,  568,  568,  568,  568,  568,  568,  568,  568,  568,
-      568,  568,  568,  568,  568,  568,  577,  577,  577,  577,
-        0,    0,    0,    0,    0,  577,  577,  577,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  577,
-      577,  577,  577,  577,  577,  581,  581,    0,  581,  581,
-      581,  581,  581,  581,  581,  581,  581,  581,  581,  581,
-        0,  581,  581,    0,    0,    0,    0,  581,  581,  581,
-      581,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  581,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  569,  569,  570,  570,
+      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
+      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
+      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
+      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
+
+      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
+      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
+      570,  570,  570,  579,  579,  579,  579,    0,    0,    0,
+        0,    0,  579,  579,  579,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  579,  579,  579,  579,
+      579,  579,  583,  583,    0,  583,  583,  583,  583,  583,
+      583,  583,  583,  583,  583,  583,  583,    0,  583,  583,
+        0,    0,    0,    0,  583,  583,  583,  583,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,  583,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,    0,    0,    0,    0,    0,    0,    0,  581,  581,
-      582,  582,    0,  582,  582,  582,  582,  582,  582,  582,
-      582,  582,  582,  582,  582,  582,  582,  582,  582,  582,
-      582,  582,  582,  582,  582,  582,  582,  582,  582,  582,
-      582,  582,  582,  582,  582,  582,  582,  582,  582,  582,
-      582,  582,  582,  582,  582,  582,  582,  582,  582,  582,
-      582,  582,  582,  582,  582,  582,  582,  582,  582,  582,
-      582,  582,  582,  582,  582,  666,  666,    0,  666,  666,
-      666,  666,  666,  666,  666,  666,  666,  666,  666,  666,
-        0,  666,  666,    0,    0,    0,    0,  666,  666,  666,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  583,  583,  584,  584,    0,
+      584,  584,  584,  584,  584,  584,  584,  584,  584,  584,
+      584,  584,  584,  584,  584,  584,  584,  584,  584,  584,
+      584,  584,  584,  584,  584,  584,  584,  584,  584,  584,
+      584,  584,  584,  584,  584,  584,  584,  584,  584,  584,
+      584,  584,  584,  584,  584,  584,  584,  584,  584,  584,
+      584,  584,  584,  584,  584,  584,  584,  584,  584,  584,
+      584,  584,  669,  669,    0,  669,  669,  669,  669,  669,
+      669,  669,  669,  669,  669,  669,  669,    0,  669,  669,
 
-      666,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  666,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  669,  669,  669,  669,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,  669,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  669,  669,  671,  671,    0,
+      671,  671,  671,  671,  671,  671,  671,  671,  671,  671,
+      671,  671,  671,  671,  671,  671,  671,  671,  671,  671,
+      671,  671,  671,  671,  671,  671,  671,  671,  671,  671,
+      671,  671,  671,  671,  671,  671,  671,  671,  671,  671,
+      671,  671,  671,  671,  671,  671,  671,  671,  671,  671,
+
+      671,  671,  671,  671,  671,  671,  671,  671,  671,  671,
+      671,  671,  684,  684,  684,  684,  684,  684,    0,  684,
+      684,  684,  684,  684,  684,  684,  684,    0,  684,  684,
+        0,    0,    0,    0,  684,  684,  684,  684,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,  684,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  666,  666,
-      668,  668,    0,  668,  668,  668,  668,  668,  668,  668,
-      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
-      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
-      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
-      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
-      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
-
-      668,  668,  668,  668,  668,  681,  681,  681,  681,  681,
-      681,    0,  681,  681,  681,  681,  681,  681,  681,  681,
-        0,  681,  681,    0,    0,    0,    0,  681,  681,  681,
-      681,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  681,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  684,  684,  686,  686,  686,
+      686,  686,  686,    0,  686,  686,  686,  686,  686,  686,
+      686,  686,  686,  686,  686,  686,  686,  686,  686,  686,
+
+      686,  686,  686,  686,  686,  686,  686,  686,  686,  686,
+      686,  686,  686,  686,  686,  686,  686,  686,  686,  686,
+      686,  686,  686,  686,  686,  686,  686,  686,  686,  686,
+      686,  686,  686,  686,  686,  686,  686,  686,  686,  686,
+      686,  686,  702,  702,  702,  702,  702,  702,  702,  702,
+      702,  702,  702,  702,  702,  702,  702,    0,  702,  702,
+        0,    0,    0,    0,  702,  702,  702,  702,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  681,  681,
-      683,  683,  683,  683,  683,  683,    0,  683,  683,  683,
-      683,  683,  683,  683,  683,  683,  683,  683,  683,  683,
-      683,  683,  683,  683,  683,  683,  683,  683,  683,  683,
-
-      683,  683,  683,  683,  683,  683,  683,  683,  683,  683,
-      683,  683,  683,  683,  683,  683,  683,  683,  683,  683,
-      683,  683,  683,  683,  683,  683,  683,  683,  683,  683,
-      683,  683,  683,  683,  683,  699,  699,  699,  699,  699,
-      699,  699,  699,  699,  699,  699,  699,  699,  699,  699,
-        0,  699,  699,    0,    0,    0,    0,  699,  699,  699,
-      699,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  699,    0,    0,    0,    0,    0,
+        0,  702,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  699,  699,
 
-      701,  701,  701,  701,  701,  701,  701,  701,  701,  701,
-      701,  701,  701,  701,  701,  701,  701,  701,  701,  701,
-      701,  701,  701,  701,  701,  701,  701,  701,  701,  701,
-      701,  701,  701,  701,  701,  701,  701,  701,  701,  701,
-      701,  701,  701,  701,  701,  701,  701,  701,  701,  701,
-      701,  701,  701,  701,  701,  701,  701,  701,  701,  701,
-      701,  701,  701,  701,  701,  717,  717,  717,  717,  717,
-      717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
-        0,  717,  717,    0,    0,    0,    0,  717,  717,  717,
-      717,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  702,  702,  704,  704,  704,
+      704,  704,  704,  704,  704,  704,  704,  704,  704,  704,
+      704,  704,  704,  704,  704,  704,  704,  704,  704,  704,
+      704,  704,  704,  704,  704,  704,  704,  704,  704,  704,
+      704,  704,  704,  704,  704,  704,  704,  704,  704,  704,
+      704,  704,  704,  704,  704,  704,  704,  704,  704,  704,
+      704,  704,  704,  704,  704,  704,  704,  704,  704,  704,
+      704,  704,  720,  720,  720,  720,  720,  720,  720,  720,
+      720,  720,  720,  720,  720,  720,  720,    0,  720,  720,
+        0,    0,    0,    0,  720,  720,  720,  720,    0,    0,
 
-        0,    0,    0,    0,  717,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  717,  717,
-      719,  719,  719,  719,  719,  719,  719,  719,  719,  719,
-      719,  719,  719,  719,  719,  719,  719,  719,  719,  719,
-      719,  719,  719,  719,  719,  719,  719,  719,  719,  719,
-      719,  719,  719,  719,  719,  719,  719,  719,  719,  719,
-      719,  719,  719,  719,  719,  719,  719,  719,  719,  719,
-      719,  719,  719,  719,  719,  719,  719,  719,  719,  719,
-      719,  719,  719,  719,  719,  735,  735,  735,  735,  735,
-
-      735,  735,  735,  735,  735,  735,  735,  735,  735,  735,
-        0,  735,  735,    0,    0,    0,    0,  735,  735,  735,
-      735,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  735,    0,    0,    0,    0,    0,
+        0,  720,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  735,  735,
-      737,  737,  737,  737,  737,  737,  737,  737,  737,  737,
-      737,  737,  737,  737,  737,  737,  737,  737,  737,  737,
-      737,  737,  737,  737,  737,  737,  737,  737,  737,  737,
-      737,  737,  737,  737,  737,  737,  737,  737,  737,  737,
-
-      737,  737,  737,  737,  737,  737,  737,  737,  737,  737,
-      737,  737,  737,  737,  737,  737,  737,  737,  737,  737,
-      737,  737,  737,  737,  737,  750,  750,    0,  750,  750,
-      750,  750,  750,  750,  750,  750,  750,  750,  750,  750,
-        0,  750,  750,    0,    0,    0,    0,  750,  750,  750,
-      750,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  750,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  720,  720,  722,  722,  722,
+      722,  722,  722,  722,  722,  722,  722,  722,  722,  722,
+      722,  722,  722,  722,  722,  722,  722,  722,  722,  722,
+      722,  722,  722,  722,  722,  722,  722,  722,  722,  722,
+      722,  722,  722,  722,  722,  722,  722,  722,  722,  722,
+      722,  722,  722,  722,  722,  722,  722,  722,  722,  722,
+      722,  722,  722,  722,  722,  722,  722,  722,  722,  722,
+
+      722,  722,  738,  738,  738,  738,  738,  738,  738,  738,
+      738,  738,  738,  738,  738,  738,  738,    0,  738,  738,
+        0,    0,    0,    0,  738,  738,  738,  738,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  750,  750,
-      752,  752,    0,  752,  752,  752,  752,  752,  752,  752,
+        0,  738,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  738,  738,  740,  740,  740,
+      740,  740,  740,  740,  740,  740,  740,  740,  740,  740,
+      740,  740,  740,  740,  740,  740,  740,  740,  740,  740,
+      740,  740,  740,  740,  740,  740,  740,  740,  740,  740,
+
+      740,  740,  740,  740,  740,  740,  740,  740,  740,  740,
+      740,  740,  740,  740,  740,  740,  740,  740,  740,  740,
+      740,  740,  740,  740,  740,  740,  740,  740,  740,  740,
+      740,  740,  753,  753,    0,  753,  753,  753,  753,  753,
+      753,  753,  753,  753,  753,  753,  753,    0,  753,  753,
+        0,    0,    0,    0,  753,  753,  753,  753,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,  753,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  753,  753,  755,  755,    0,
 
-      752,  752,  752,  752,  752,  752,  752,  752,  752,  752,
-      752,  752,  752,  752,  752,  752,  752,  752,  752,  752,
-      752,  752,  752,  752,  752,  752,  752,  752,  752,  752,
-      752,  752,  752,  752,  752,  752,  752,  752,  752,  752,
-      752,  752,  752,  752,  752,  752,  752,  752,  752,  752,
-      752,  752,  752,  752,  752,  811,  811,    0,  811,  811,
-      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
-      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
-      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
-      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
-
-      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
-      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
-      821,  821,  821,  821,  821,  821,    0,  821,  821,  821,
-      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
-      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
-      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
-      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
-      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
-      821,  821,  821,  821,  821, 1054,    0, 1054, 1054, 1054,
-     1054, 1054, 1054, 1054, 1054, 1054, 1055,    0,    0, 1055,
-
-     1055, 1056,    0, 1056, 1056, 1056, 1056, 1056, 1056, 1056,
-     1056, 1056, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057,
-     1058, 1058, 1058, 1058, 1059,    0, 1059,    0, 1059, 1059,
-     1059, 1059, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1061,
-        0, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
-     1062,    0, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062,
-     1062, 1063,    0, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
-     1063, 1063, 1064,    0, 1064, 1064, 1064, 1064, 1064, 1064,
-     1064, 1064, 1064, 1065, 1065, 1065, 1065, 1065, 1065, 1065,
-     1066, 1066,    0, 1066, 1066, 1066, 1066, 1066, 1066, 1066,
-
-     1066, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067,
-     1067, 1067, 1068, 1068,    0, 1068, 1068, 1068, 1068, 1068,
-     1068, 1068, 1068, 1069, 1069, 1069, 1069, 1069, 1069, 1069,
-     1069, 1069, 1069, 1069, 1070, 1070, 1070, 1070, 1070, 1070,
-     1070, 1070, 1070, 1070, 1070, 1071, 1071, 1071, 1071, 1071,
-     1071, 1071, 1071, 1071, 1071, 1071, 1072, 1072, 1072, 1072,
-     1072, 1072, 1072, 1072, 1072, 1072, 1072, 1073, 1073, 1073,
-     1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1074, 1074,
-     1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1075,
-     1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075,
-
-     1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076,
-     1076, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077,
-     1077, 1077, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078,
-     1078, 1078, 1078, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
-     1079, 1079, 1079, 1079, 1080, 1080, 1080, 1080, 1080, 1080,
-     1080, 1080, 1080, 1080, 1080, 1081,    0, 1081, 1081, 1081,
-     1081, 1081, 1081, 1081, 1081, 1081, 1082,    0, 1082, 1082,
-     1082, 1082, 1082, 1082, 1082, 1082, 1082, 1083,    0, 1083,
-     1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1084,    0,
-     1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1085,
-
-        0,    0, 1085, 1085, 1086,    0, 1086, 1086, 1086, 1086,
-     1086, 1086, 1086, 1086, 1086, 1087,    0,    0, 1087, 1087,
-     1087, 1088,    0,    0, 1088, 1089, 1089, 1089, 1089, 1089,
-     1089, 1089, 1090, 1090, 1090, 1090, 1090, 1090, 1090, 1090,
-     1091,    0,    0,    0,    0, 1091, 1091, 1091, 1091, 1092,
-     1092, 1092, 1092, 1092, 1092, 1093, 1093, 1093, 1093, 1094,
-        0, 1094, 1094, 1094, 1094, 1095, 1095, 1095, 1095, 1095,
-     1095, 1095, 1096,    0, 1096, 1096, 1096, 1096, 1096, 1096,
-     1096, 1096, 1096, 1097,    0, 1097, 1097, 1097, 1097, 1097,
-     1097, 1097, 1097, 1097, 1098,    0, 1098, 1098, 1098, 1098,
-
-     1098, 1098, 1098, 1098, 1098, 1099,    0, 1099, 1099, 1099,
-     1099, 1099, 1099, 1099, 1099, 1099, 1100, 1100,    0, 1100,
-     1100, 1100, 1100, 1100, 1100, 1100, 1100, 1101, 1101, 1101,
-     1101, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1102, 1102,
-        0, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1103,
-     1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103,
-     1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104,
-     1104, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105,
-     1105, 1105, 1106, 1106, 1106, 1106, 1106, 1106, 1106, 1106,
-     1106, 1106, 1106, 1107, 1107, 1107, 1107, 1107, 1107, 1107,
-
-     1107, 1107, 1107, 1107, 1108, 1108, 1108, 1108, 1108, 1108,
-     1108, 1108, 1108, 1108, 1108, 1109, 1109, 1109, 1109, 1109,
-     1109, 1109, 1109, 1109, 1109, 1109, 1110, 1110, 1110, 1110,
-     1110, 1110, 1110, 1110, 1110, 1110, 1110, 1111, 1111, 1111,
-     1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1112, 1112,
-     1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1113,
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
+      755,  755,  755,  755,  755,  755,  755,  755,  755,  755,
+      755,  755,  755,  755,  755,  755,  755,  755,  755,  755,
+      755,  755,  755,  755,  755,  755,  755,  755,  755,  755,
+      755,  755,  755,  755,  755,  755,  755,  755,  755,  755,
+      755,  755,  755,  755,  755,  755,  755,  755,  755,  755,
+      755,  755,  755,  755,  755,  755,  755,  755,  755,  755,
+      755,  755,  815,  815,    0,  815,  815,  815,  815,  815,
+      815,  815,  815,  815,  815,  815,  815,  815,  815,  815,
+      815,  815,  815,  815,  815,  815,  815,  815,  815,  815,
+      815,  815,  815,  815,  815,  815,  815,  815,  815,  815,
+
+      815,  815,  815,  815,  815,  815,  815,  815,  815,  815,
+      815,  815,  815,  815,  815,  815,  815,  815,  815,  815,
+      815,  815,  815,  815,  815,  815,  815,  825,  825,  825,
+      825,  825,  825,    0,  825,  825,  825,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+      825,  825, 1062,    0, 1062, 1062, 1062, 1062, 1062, 1062,
+
+     1062, 1062, 1062, 1063,    0,    0, 1063, 1063, 1064,    0,
+     1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1065,
+     1065, 1065, 1065, 1065, 1065, 1065, 1065, 1066, 1066, 1066,
+     1066, 1067,    0, 1067,    0, 1067, 1067, 1067, 1067, 1068,
+     1068, 1068, 1068, 1068, 1068, 1068, 1069,    0, 1069, 1069,
+     1069, 1069, 1069, 1069, 1069, 1069, 1069, 1070,    0, 1070,
+     1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1071,    0,
+     1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1072,
+        0, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072,
+     1073, 1073, 1073, 1073, 1073, 1073, 1073, 1074, 1074,    0,
+
+     1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1075, 1075,
+     1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1076,
+     1076,    0, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076,
+     1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077,
+     1077, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078,
+     1078, 1078, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
+     1079, 1079, 1079, 1080, 1080, 1080, 1080, 1080, 1080, 1080,
+     1080, 1080, 1080, 1080, 1081, 1081, 1081, 1081, 1081, 1081,
+     1081, 1081, 1081, 1081, 1081, 1082, 1082, 1082, 1082, 1082,
+     1082, 1082, 1082, 1082, 1082, 1082, 1083, 1083, 1083, 1083,
+
+     1083, 1083, 1083, 1083, 1083, 1083, 1083, 1084, 1084, 1084,
+     1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1085, 1085,
+     1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1086,
+     1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086,
+     1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087,
+     1087, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088,
+     1088, 1088, 1089,    0, 1089, 1089, 1089, 1089, 1089, 1089,
+     1089, 1089, 1089, 1090,    0, 1090, 1090, 1090, 1090, 1090,
+     1090, 1090, 1090, 1090, 1091,    0, 1091, 1091, 1091, 1091,
+     1091, 1091, 1091, 1091, 1091, 1092,    0, 1092, 1092, 1092,
+
+     1092, 1092, 1092, 1092, 1092, 1092, 1093,    0,    0, 1093,
+     1093, 1094,    0, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
+     1094, 1094, 1095,    0,    0, 1095, 1095, 1095, 1096,    0,
+        0, 1096, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1098,
+     1098, 1098, 1098, 1098, 1098, 1098, 1098, 1099,    0,    0,
+        0,    0, 1099, 1099, 1099, 1099, 1100, 1100, 1100, 1100,
+     1100, 1100, 1101, 1101, 1101, 1101, 1102,    0, 1102, 1102,
+     1102, 1102, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1104,
+        0, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104,
+     1105,    0, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105,
+
+     1105, 1106,    0, 1106, 1106, 1106, 1106, 1106, 1106, 1106,
+     1106, 1106, 1107,    0, 1107, 1107, 1107, 1107, 1107, 1107,
+     1107, 1107, 1107, 1108, 1108,    0, 1108, 1108, 1108, 1108,
+     1108, 1108, 1108, 1108, 1109, 1109, 1109, 1109, 1109, 1109,
+     1109, 1109, 1109, 1109, 1109, 1110, 1110,    0, 1110, 1110,
+     1110, 1110, 1110, 1110, 1110, 1110, 1111, 1111, 1111, 1111,
+     1111, 1111, 1111, 1111, 1111, 1111, 1111, 1112, 1112, 1112,
+     1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1113, 1113,
+     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1114,
      1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114, 1114,
-     1114, 1115,    0, 1115, 1115, 1115, 1115, 1115, 1115, 1115,
-     1115, 1115, 1116,    0, 1116, 1116, 1116, 1116, 1116, 1116,
 
-     1116, 1116, 1116, 1117,    0, 1117, 1117, 1117, 1117, 1117,
-     1117, 1117, 1117, 1117, 1118,    0, 1118, 1118, 1118, 1118,
-     1118, 1118, 1118, 1118, 1118, 1119,    0,    0, 1119, 1119,
-     1120,    0,    0, 1120, 1120, 1120, 1121,    0,    0, 1121,
-     1122,    0, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122,
-     1122, 1123,    0, 1123, 1123, 1123, 1123, 1123, 1123, 1123,
-     1123, 1123, 1124,    0, 1124, 1124, 1124, 1124, 1124, 1124,
-     1124, 1124, 1124, 1125, 1125, 1125, 1125, 1125, 1125, 1125,
-     1126, 1126, 1126, 1126, 1126, 1126, 1126, 1126, 1127, 1127,
-     1127, 1127, 1127, 1127, 1128,    0, 1128, 1128, 1128, 1128,
-
-     1129,    0, 1129, 1129, 1129, 1129, 1130, 1130, 1130, 1130,
-     1130, 1130, 1130, 1131,    0, 1131, 1131, 1131, 1131, 1131,
-     1131, 1131, 1131, 1131, 1132,    0, 1132, 1132, 1132, 1132,
-     1132, 1132, 1132, 1132, 1132, 1133,    0, 1133, 1133, 1133,
-     1133, 1133, 1133, 1133, 1133, 1133, 1134,    0, 1134, 1134,
-     1134, 1134, 1134, 1134, 1134, 1134, 1134, 1135,    0, 1135,
-     1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1136, 1136,
-     1136, 1136, 1136, 1136, 1136, 1137, 1137,    0, 1137, 1137,
-     1137, 1137, 1137, 1137, 1137, 1137, 1138, 1138, 1138, 1138,
-     1138, 1138, 1138, 1138, 1138, 1138, 1138, 1139, 1139,    0,
-
-     1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1140, 1140,
-     1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1141,
-     1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141,
-     1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142,
-     1142, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143,
-     1143, 1143, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144,
-     1144, 1144, 1144, 1145, 1145, 1145, 1145, 1145, 1145, 1145,
-     1145, 1145, 1145, 1145, 1146, 1146, 1146, 1146, 1146, 1146,
-     1146, 1146, 1146, 1146, 1146, 1147, 1147, 1147, 1147, 1147,
-     1147, 1147, 1147, 1147, 1147, 1147, 1148, 1148, 1148, 1148,
-
-     1148, 1148, 1148, 1148, 1148, 1148, 1148, 1149, 1149, 1149,
-     1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1150, 1150,
-     1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1151,
-     1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151,
+     1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115,
+     1115, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1116,
+     1116, 1116, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117,
+     1117, 1117, 1117, 1118, 1118, 1118, 1118, 1118, 1118, 1118,
+     1118, 1118, 1118, 1118, 1119, 1119, 1119, 1119, 1119, 1119,
+     1119, 1119, 1119, 1119, 1119, 1120, 1120, 1120, 1120, 1120,
+     1120, 1120, 1120, 1120, 1120, 1120, 1121, 1121, 1121, 1121,
+     1121, 1121, 1121, 1121, 1121, 1121, 1121, 1122, 1122, 1122,
+     1122, 1122, 1122, 1122, 1122, 1122, 1122, 1122, 1123,    0,
+     1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1123, 1124,
+
+        0, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1124,
+     1125,    0, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1125,
+     1125, 1126,    0, 1126, 1126, 1126, 1126, 1126, 1126, 1126,
+     1126, 1126, 1127,    0,    0, 1127, 1127, 1128,    0,    0,
+     1128, 1128, 1128, 1129,    0,    0, 1129, 1130,    0, 1130,
+     1130, 1130, 1130, 1130, 1130, 1130, 1130, 1130, 1131,    0,
+     1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1132,
+        0, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132, 1132,
+     1133, 1133, 1133, 1133, 1133, 1133, 1133, 1134, 1134, 1134,
+     1134, 1134, 1134, 1134, 1134, 1135, 1135, 1135, 1135, 1135,
+
+     1135, 1136,    0, 1136, 1136, 1136, 1136, 1137,    0, 1137,
+     1137, 1137, 1137, 1138, 1138, 1138, 1138, 1138, 1138, 1138,
+     1139,    0, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139,
+     1139, 1140,    0, 1140, 1140, 1140, 1140, 1140, 1140, 1140,
+     1140, 1140, 1141,    0, 1141, 1141, 1141, 1141, 1141, 1141,
+     1141, 1141, 1141, 1142,    0, 1142, 1142, 1142, 1142, 1142,
+     1142, 1142, 1142, 1142, 1143,    0, 1143, 1143, 1143, 1143,
+     1143, 1143, 1143, 1143, 1143, 1144, 1144, 1144, 1144, 1144,
+     1144, 1144, 1145, 1145,    0, 1145, 1145, 1145, 1145, 1145,
+     1145, 1145, 1145, 1146, 1146, 1146, 1146, 1146, 1146, 1146,
+
+     1146, 1146, 1146, 1146, 1147, 1147,    0, 1147, 1147, 1147,
+     1147, 1147, 1147, 1147, 1147, 1148, 1148, 1148, 1148, 1148,
+     1148, 1148, 1148, 1148, 1148, 1148, 1149, 1149, 1149, 1149,
+     1149, 1149, 1149, 1149, 1149, 1149, 1149, 1150, 1150, 1150,
+     1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1151, 1151,
+     1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1152,
      1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
-     1152, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153,
-     1153, 1153, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154,
-     1154, 1154, 1154, 1155,    0, 1155, 1155, 1155, 1155, 1155,
-     1155, 1155, 1155, 1155, 1156,    0, 1156, 1156, 1156, 1156,
-     1156, 1156, 1156, 1156, 1156, 1157,    0, 1157, 1157, 1157,
-
-     1157, 1157, 1157, 1157, 1157, 1157, 1158,    0, 1158, 1158,
-     1158, 1158, 1158, 1158, 1158, 1158, 1158, 1159,    0, 1159,
-     1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1160,    0,
-        0, 1160, 1160, 1160, 1161,    0, 1161, 1161, 1161, 1161,
-     1161, 1161, 1161, 1161, 1161, 1162,    0, 1162, 1162, 1162,
-     1162, 1162, 1162, 1162, 1162, 1162, 1163,    0, 1163, 1163,
-     1163, 1163, 1163, 1163, 1163, 1163, 1163, 1164, 1164, 1164,
-     1164, 1164, 1164, 1164, 1165, 1165, 1165, 1165, 1165, 1165,
-     1165, 1165, 1166,    0, 1166, 1166, 1166, 1166, 1167,    0,
-     1167, 1167, 1167, 1167, 1168, 1168, 1168, 1168, 1168, 1168,
-
+     1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153,
+     1153, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154,
+     1154, 1154, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155,
+
+     1155, 1155, 1155, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
+     1156, 1156, 1156, 1156, 1157, 1157, 1157, 1157, 1157, 1157,
+     1157, 1157, 1157, 1157, 1157, 1158, 1158, 1158, 1158, 1158,
+     1158, 1158, 1158, 1158, 1158, 1158, 1159, 1159, 1159, 1159,
+     1159, 1159, 1159, 1159, 1159, 1159, 1159, 1160, 1160, 1160,
+     1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1161, 1161,
+     1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1161, 1162,
+     1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162,
+     1163,    0, 1163, 1163, 1163, 1163, 1163, 1163, 1163, 1163,
+     1163, 1164,    0, 1164, 1164, 1164, 1164, 1164, 1164, 1164,
+
+     1164, 1164, 1165,    0, 1165, 1165, 1165, 1165, 1165, 1165,
+     1165, 1165, 1165, 1166,    0, 1166, 1166, 1166, 1166, 1166,
+     1166, 1166, 1166, 1166, 1167,    0, 1167, 1167, 1167, 1167,
+     1167, 1167, 1167, 1167, 1167, 1168,    0,    0, 1168, 1168,
      1168, 1169,    0, 1169, 1169, 1169, 1169, 1169, 1169, 1169,
      1169, 1169, 1170,    0, 1170, 1170, 1170, 1170, 1170, 1170,
      1170, 1170, 1170, 1171,    0, 1171, 1171, 1171, 1171, 1171,
-     1171, 1171, 1171, 1171, 1172,    0, 1172, 1172, 1172, 1172,
-     1172, 1172, 1172, 1172, 1172, 1173,    0, 1173, 1173, 1173,
-     1173, 1173, 1173, 1173, 1173, 1173, 1174, 1174, 1174, 1174,
-     1174, 1174, 1174, 1175, 1175,    0, 1175, 1175, 1175, 1175,
-     1175, 1175, 1175, 1175, 1176, 1176, 1176, 1176, 1176, 1176,
-     1176, 1176, 1176, 1176, 1176, 1177, 1177,    0, 1177, 1177,
-     1177, 1177, 1177, 1177, 1177, 1177, 1178, 1178, 1178, 1178,
-
-     1178, 1178, 1178, 1178, 1178, 1178, 1178, 1179, 1179, 1179,
-     1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1180, 1180,
-     1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1180, 1181,
-     1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181,
-     1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182,
-     1182, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183,
-     1183, 1183, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184,
-     1184, 1184, 1184, 1185, 1185, 1185, 1185, 1185, 1185, 1185,
-     1185, 1185, 1185, 1185, 1186, 1186, 1186, 1186, 1186, 1186,
-     1186, 1186, 1186, 1186, 1186, 1187, 1187, 1187, 1187, 1187,
-
-     1187, 1187, 1187, 1187, 1187, 1187, 1188, 1188, 1188, 1188,
-     1188, 1188, 1188, 1188, 1188, 1188, 1188, 1189, 1189, 1189,
-     1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1190, 1190,
-     1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1191,
-     1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191,
+     1171, 1171, 1171, 1171, 1172, 1172, 1172, 1172, 1172, 1172,
+     1172, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1174,
+        0, 1174, 1174, 1174, 1174, 1175,    0, 1175, 1175, 1175,
+
+     1175, 1176, 1176, 1176, 1176, 1176, 1176, 1176, 1177,    0,
+     1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1178,
+        0, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178,
+     1179,    0, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179,
+     1179, 1180,    0, 1180, 1180, 1180, 1180, 1180, 1180, 1180,
+     1180, 1180, 1181,    0, 1181, 1181, 1181, 1181, 1181, 1181,
+     1181, 1181, 1181, 1182, 1182, 1182, 1182, 1182, 1182, 1182,
+     1183, 1183,    0, 1183, 1183, 1183, 1183, 1183, 1183, 1183,
+     1183, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184,
+     1184, 1184, 1185, 1185,    0, 1185, 1185, 1185, 1185, 1185,
+
+     1185, 1185, 1185, 1186, 1186, 1186, 1186, 1186, 1186, 1186,
+     1186, 1186, 1186, 1186, 1187, 1187, 1187, 1187, 1187, 1187,
+     1187, 1187, 1187, 1187, 1187, 1188, 1188, 1188, 1188, 1188,
+     1188, 1188, 1188, 1188, 1188, 1188, 1189, 1189, 1189, 1189,
+     1189, 1189, 1189, 1189, 1189, 1189, 1189, 1190, 1190, 1190,
+     1190, 1190, 1190, 1190, 1190, 1190, 1190, 1190, 1191, 1191,
+     1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1191, 1192,
      1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192, 1192,
-     1192, 1193,    0, 1193, 1193, 1193, 1193, 1193, 1193, 1193,
-     1193, 1193, 1194,    0, 1194, 1194, 1194, 1194, 1194, 1194,
-     1194, 1194, 1194, 1195,    0, 1195, 1195, 1195, 1195, 1195,
-     1195, 1195, 1195, 1195, 1196,    0, 1196, 1196, 1196, 1196,
-
-     1196, 1196, 1196, 1196, 1196, 1197,    0, 1197, 1197, 1197,
-     1197, 1197, 1197, 1197, 1197, 1197, 1198,    0,    0, 1198,
-     1198, 1198, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199,
-     1200,    0, 1200, 1200, 1200, 1200, 1201, 1201, 1201, 1201,
-     1201, 1201, 1201, 1202,    0, 1202, 1202, 1202, 1202, 1202,
-     1202, 1202, 1202, 1202, 1203, 1203, 1203, 1203, 1203, 1203,
-     1203, 1204, 1204,    0, 1204, 1204, 1204, 1204, 1204, 1204,
-     1204, 1204, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
-     1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
-     1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
-
-     1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
-     1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
-     1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
-     1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053
+     1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193, 1193,
+     1193, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194, 1194,
+
+     1194, 1194, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195,
+     1195, 1195, 1195, 1196, 1196, 1196, 1196, 1196, 1196, 1196,
+     1196, 1196, 1196, 1196, 1197, 1197, 1197, 1197, 1197, 1197,
+     1197, 1197, 1197, 1197, 1197, 1198, 1198, 1198, 1198, 1198,
+     1198, 1198, 1198, 1198, 1198, 1198, 1199, 1199, 1199, 1199,
+     1199, 1199, 1199, 1199, 1199, 1199, 1199, 1200, 1200, 1200,
+     1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1201,    0,
+     1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1202,
+        0, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202,
+     1203,    0, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203,
+
+     1203, 1204,    0, 1204, 1204, 1204, 1204, 1204, 1204, 1204,
+     1204, 1204, 1205,    0, 1205, 1205, 1205, 1205, 1205, 1205,
+     1205, 1205, 1205, 1206,    0,    0, 1206, 1206, 1206, 1207,
+     1207, 1207, 1207, 1207, 1207, 1207, 1207, 1208,    0, 1208,
+     1208, 1208, 1208, 1209, 1209, 1209, 1209, 1209, 1209, 1209,
+     1210,    0, 1210, 1210, 1210, 1210, 1210, 1210, 1210, 1210,
+     1210, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1212, 1212,
+        0, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1212, 1061,
+     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
+     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
+
+     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
+     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
+     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
+     1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061,
+     1061, 1061, 1061, 1061, 1061
     } ;
 
 /* The intent behind this definition is that it'll catch
@@ -2484,7 +2489,7 @@
 
 
 
-#line 2488 "compilers/imcc/imclexer.c"
+#line 2493 "compilers/imcc/imclexer.c"
 
 #define INITIAL 0
 #define emit 1
@@ -2748,7 +2753,7 @@
             return 0;
         }
 
-#line 2752 "compilers/imcc/imclexer.c"
+#line 2757 "compilers/imcc/imclexer.c"
 
 	if ( !yyg->yy_init )
 		{
@@ -2802,13 +2807,13 @@
 			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 >= 1054 )
+				if ( yy_current_state >= 1062 )
 					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_current_state != 1053 );
+		while ( yy_current_state != 1061 );
 		yy_cp = yyg->yy_last_accepting_cpos;
 		yy_current_state = yyg->yy_last_accepting_state;
 
@@ -3264,222 +3269,227 @@
 	YY_BREAK
 case 66:
 YY_RULE_SETUP
-#line 357 "compilers/imcc/imcc.l"
-return NAMESPACE;
+#line 356 "compilers/imcc/imcc.l"
+return ADV_CALL_SIG;
 	YY_BREAK
 case 67:
 YY_RULE_SETUP
 #line 358 "compilers/imcc/imcc.l"
-return HLL;
+return NAMESPACE;
 	YY_BREAK
 case 68:
 YY_RULE_SETUP
-#line 360 "compilers/imcc/imcc.l"
-return LOCAL;
+#line 359 "compilers/imcc/imcc.l"
+return HLL;
 	YY_BREAK
 case 69:
 YY_RULE_SETUP
 #line 361 "compilers/imcc/imcc.l"
-return CONST;
+return LOCAL;
 	YY_BREAK
 case 70:
 YY_RULE_SETUP
 #line 362 "compilers/imcc/imcc.l"
-return GLOBAL_CONST;
+return CONST;
 	YY_BREAK
 case 71:
 YY_RULE_SETUP
 #line 363 "compilers/imcc/imcc.l"
-return PARAM;
+return GLOBAL_CONST;
 	YY_BREAK
 case 72:
 YY_RULE_SETUP
 #line 364 "compilers/imcc/imcc.l"
-return GOTO;
+return PARAM;
 	YY_BREAK
 case 73:
 YY_RULE_SETUP
 #line 365 "compilers/imcc/imcc.l"
-return IF;
+return GOTO;
 	YY_BREAK
 case 74:
 YY_RULE_SETUP
 #line 366 "compilers/imcc/imcc.l"
-return UNLESS;
+return IF;
 	YY_BREAK
 case 75:
 YY_RULE_SETUP
 #line 367 "compilers/imcc/imcc.l"
-return PNULL;
+return UNLESS;
 	YY_BREAK
 case 76:
 YY_RULE_SETUP
 #line 368 "compilers/imcc/imcc.l"
-return INTV;
+return PNULL;
 	YY_BREAK
 case 77:
 YY_RULE_SETUP
 #line 369 "compilers/imcc/imcc.l"
-return FLOATV;
+return INTV;
 	YY_BREAK
 case 78:
 YY_RULE_SETUP
-#line 371 "compilers/imcc/imcc.l"
-return PMCV;
+#line 370 "compilers/imcc/imcc.l"
+return FLOATV;
 	YY_BREAK
 case 79:
 YY_RULE_SETUP
 #line 372 "compilers/imcc/imcc.l"
-return STRINGV;
+return PMCV;
 	YY_BREAK
 case 80:
 YY_RULE_SETUP
 #line 373 "compilers/imcc/imcc.l"
-return SHIFT_LEFT;
+return STRINGV;
 	YY_BREAK
 case 81:
 YY_RULE_SETUP
 #line 374 "compilers/imcc/imcc.l"
-return SHIFT_RIGHT;
+return SHIFT_LEFT;
 	YY_BREAK
 case 82:
 YY_RULE_SETUP
 #line 375 "compilers/imcc/imcc.l"
-return SHIFT_RIGHT_U;
+return SHIFT_RIGHT;
 	YY_BREAK
 case 83:
 YY_RULE_SETUP
 #line 376 "compilers/imcc/imcc.l"
-return LOG_AND;
+return SHIFT_RIGHT_U;
 	YY_BREAK
 case 84:
 YY_RULE_SETUP
 #line 377 "compilers/imcc/imcc.l"
-return LOG_OR;
+return LOG_AND;
 	YY_BREAK
 case 85:
 YY_RULE_SETUP
 #line 378 "compilers/imcc/imcc.l"
-return LOG_XOR;
+return LOG_OR;
 	YY_BREAK
 case 86:
 YY_RULE_SETUP
 #line 379 "compilers/imcc/imcc.l"
-return RELOP_LT;
+return LOG_XOR;
 	YY_BREAK
 case 87:
 YY_RULE_SETUP
 #line 380 "compilers/imcc/imcc.l"
-return RELOP_LTE;
+return RELOP_LT;
 	YY_BREAK
 case 88:
 YY_RULE_SETUP
 #line 381 "compilers/imcc/imcc.l"
-return RELOP_GT;
+return RELOP_LTE;
 	YY_BREAK
 case 89:
 YY_RULE_SETUP
 #line 382 "compilers/imcc/imcc.l"
-return RELOP_GTE;
+return RELOP_GT;
 	YY_BREAK
 case 90:
 YY_RULE_SETUP
 #line 383 "compilers/imcc/imcc.l"
-return RELOP_EQ;
+return RELOP_GTE;
 	YY_BREAK
 case 91:
 YY_RULE_SETUP
 #line 384 "compilers/imcc/imcc.l"
-return RELOP_NE;
+return RELOP_EQ;
 	YY_BREAK
 case 92:
 YY_RULE_SETUP
 #line 385 "compilers/imcc/imcc.l"
-return POW;
+return RELOP_NE;
 	YY_BREAK
 case 93:
 YY_RULE_SETUP
-#line 387 "compilers/imcc/imcc.l"
-return CONCAT;
+#line 386 "compilers/imcc/imcc.l"
+return POW;
 	YY_BREAK
 case 94:
 YY_RULE_SETUP
 #line 388 "compilers/imcc/imcc.l"
-return DOT;
+return CONCAT;
 	YY_BREAK
 case 95:
 YY_RULE_SETUP
-#line 390 "compilers/imcc/imcc.l"
-return PLUS_ASSIGN;
+#line 389 "compilers/imcc/imcc.l"
+return DOT;
 	YY_BREAK
 case 96:
 YY_RULE_SETUP
 #line 391 "compilers/imcc/imcc.l"
-return MINUS_ASSIGN;
+return PLUS_ASSIGN;
 	YY_BREAK
 case 97:
 YY_RULE_SETUP
 #line 392 "compilers/imcc/imcc.l"
-return MUL_ASSIGN;
+return MINUS_ASSIGN;
 	YY_BREAK
 case 98:
 YY_RULE_SETUP
 #line 393 "compilers/imcc/imcc.l"
-return DIV_ASSIGN;
+return MUL_ASSIGN;
 	YY_BREAK
 case 99:
 YY_RULE_SETUP
 #line 394 "compilers/imcc/imcc.l"
-return MOD_ASSIGN;
+return DIV_ASSIGN;
 	YY_BREAK
 case 100:
 YY_RULE_SETUP
 #line 395 "compilers/imcc/imcc.l"
-return FDIV;
+return MOD_ASSIGN;
 	YY_BREAK
 case 101:
 YY_RULE_SETUP
 #line 396 "compilers/imcc/imcc.l"
-return FDIV_ASSIGN;
+return FDIV;
 	YY_BREAK
 case 102:
 YY_RULE_SETUP
 #line 397 "compilers/imcc/imcc.l"
-return BAND_ASSIGN;
+return FDIV_ASSIGN;
 	YY_BREAK
 case 103:
 YY_RULE_SETUP
 #line 398 "compilers/imcc/imcc.l"
-return BOR_ASSIGN;
+return BAND_ASSIGN;
 	YY_BREAK
 case 104:
 YY_RULE_SETUP
 #line 399 "compilers/imcc/imcc.l"
-return BXOR_ASSIGN;
+return BOR_ASSIGN;
 	YY_BREAK
 case 105:
 YY_RULE_SETUP
 #line 400 "compilers/imcc/imcc.l"
-return SHR_ASSIGN;
+return BXOR_ASSIGN;
 	YY_BREAK
 case 106:
 YY_RULE_SETUP
 #line 401 "compilers/imcc/imcc.l"
-return SHL_ASSIGN;
+return SHR_ASSIGN;
 	YY_BREAK
 case 107:
 YY_RULE_SETUP
 #line 402 "compilers/imcc/imcc.l"
-return SHR_U_ASSIGN;
+return SHL_ASSIGN;
 	YY_BREAK
 case 108:
 YY_RULE_SETUP
 #line 403 "compilers/imcc/imcc.l"
-return CONCAT_ASSIGN;
+return SHR_U_ASSIGN;
 	YY_BREAK
 case 109:
 YY_RULE_SETUP
-#line 405 "compilers/imcc/imcc.l"
+#line 404 "compilers/imcc/imcc.l"
+return CONCAT_ASSIGN;
+	YY_BREAK
+case 110:
+YY_RULE_SETUP
+#line 406 "compilers/imcc/imcc.l"
 {
         char *macro_name   = NULL;
         int   start_cond   = YY_START;
@@ -3523,16 +3533,16 @@
         return MACRO;
     }
 	YY_BREAK
-case 110:
+case 111:
 YY_RULE_SETUP
-#line 448 "compilers/imcc/imcc.l"
+#line 449 "compilers/imcc/imcc.l"
 {
         return read_macro(valp, interp, yyscanner);
     }
 	YY_BREAK
-case 111:
+case 112:
 YY_RULE_SETUP
-#line 452 "compilers/imcc/imcc.l"
+#line 453 "compilers/imcc/imcc.l"
 {
         const int c = yylex(valp,yyscanner,interp);
 
@@ -3545,9 +3555,9 @@
         include_file(interp, yytext + 1, yyscanner);
     }
 	YY_BREAK
-case 112:
+case 113:
 YY_RULE_SETUP
-#line 464 "compilers/imcc/imcc.l"
+#line 465 "compilers/imcc/imcc.l"
 {
         if (valp) {
             char *label;
@@ -3570,9 +3580,9 @@
         return LABEL;
     }
 	YY_BREAK
-case 113:
+case 114:
 YY_RULE_SETUP
-#line 486 "compilers/imcc/imcc.l"
+#line 487 "compilers/imcc/imcc.l"
 {
 
         if (valp) {
@@ -3595,14 +3605,14 @@
         return IDENTIFIER;
      }
 	YY_BREAK
-case 114:
+case 115:
 YY_RULE_SETUP
-#line 508 "compilers/imcc/imcc.l"
+#line 509 "compilers/imcc/imcc.l"
 return COMMA;
 	YY_BREAK
-case 115:
+case 116:
 YY_RULE_SETUP
-#line 510 "compilers/imcc/imcc.l"
+#line 511 "compilers/imcc/imcc.l"
 {
         /* trim last ':' */
         YYCHOP();
@@ -3613,9 +3623,9 @@
         return LABEL;
     }
 	YY_BREAK
-case 116:
+case 117:
 YY_RULE_SETUP
-#line 520 "compilers/imcc/imcc.l"
+#line 521 "compilers/imcc/imcc.l"
 {
         char   * const macro_name = mem_sys_strdup(yytext + 1);
         int failed = expand_macro(interp, macro_name, yyscanner);
@@ -3626,15 +3636,10 @@
         }
     }
 	YY_BREAK
-case 117:
-YY_RULE_SETUP
-#line 532 "compilers/imcc/imcc.l"
-DUP_AND_RET(valp, FLOATC);
-	YY_BREAK
 case 118:
 YY_RULE_SETUP
 #line 533 "compilers/imcc/imcc.l"
-DUP_AND_RET(valp, INTC);
+DUP_AND_RET(valp, FLOATC);
 	YY_BREAK
 case 119:
 YY_RULE_SETUP
@@ -3653,7 +3658,12 @@
 	YY_BREAK
 case 122:
 YY_RULE_SETUP
-#line 538 "compilers/imcc/imcc.l"
+#line 537 "compilers/imcc/imcc.l"
+DUP_AND_RET(valp, INTC);
+	YY_BREAK
+case 123:
+YY_RULE_SETUP
+#line 539 "compilers/imcc/imcc.l"
 {
         valp->s = mem_sys_strdup(yytext);
 
@@ -3664,18 +3674,18 @@
         return STRINGC;
     }
 	YY_BREAK
-case 123:
+case 124:
 YY_RULE_SETUP
-#line 548 "compilers/imcc/imcc.l"
+#line 549 "compilers/imcc/imcc.l"
 {
         valp->s = mem_sys_strdup(yytext);
 
         return STRINGC;
     }
 	YY_BREAK
-case 124:
+case 125:
 YY_RULE_SETUP
-#line 554 "compilers/imcc/imcc.l"
+#line 555 "compilers/imcc/imcc.l"
 {
         macro_frame_t *frame;
 
@@ -3704,9 +3714,9 @@
         yy_push_state(heredoc1, yyscanner);
     }
 	YY_BREAK
-case 125:
+case 126:
 YY_RULE_SETUP
-#line 582 "compilers/imcc/imcc.l"
+#line 583 "compilers/imcc/imcc.l"
 {
         /* charset:"..." */
         valp->s = mem_sys_strdup(yytext);
@@ -3715,9 +3725,9 @@
         return USTRINGC;
     }
 	YY_BREAK
-case 126:
+case 127:
 YY_RULE_SETUP
-#line 590 "compilers/imcc/imcc.l"
+#line 591 "compilers/imcc/imcc.l"
 {
         if (valp) (valp)->s = yytext;
         if (IMCC_INFO(interp)->state->pasm_file)
@@ -3726,9 +3736,9 @@
         return IREG;
     }
 	YY_BREAK
-case 127:
+case 128:
 YY_RULE_SETUP
-#line 598 "compilers/imcc/imcc.l"
+#line 599 "compilers/imcc/imcc.l"
 {
         if (valp) (valp)->s = yytext;
         if (IMCC_INFO(interp)->state->pasm_file)
@@ -3737,9 +3747,9 @@
         return NREG;
     }
 	YY_BREAK
-case 128:
+case 129:
 YY_RULE_SETUP
-#line 606 "compilers/imcc/imcc.l"
+#line 607 "compilers/imcc/imcc.l"
 {
         if (valp) (valp)->s = yytext;
         if (IMCC_INFO(interp)->state->pasm_file)
@@ -3748,9 +3758,9 @@
         return SREG;
     }
 	YY_BREAK
-case 129:
+case 130:
 YY_RULE_SETUP
-#line 614 "compilers/imcc/imcc.l"
+#line 615 "compilers/imcc/imcc.l"
 {
         if (valp) (valp)->s = yytext;
         if (IMCC_INFO(interp)->state->pasm_file)
@@ -3759,17 +3769,17 @@
         return PREG;
     }
 	YY_BREAK
-case 130:
+case 131:
 YY_RULE_SETUP
-#line 622 "compilers/imcc/imcc.l"
+#line 623 "compilers/imcc/imcc.l"
 {
         IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR,
             "'%s' is not a valid register name", yytext);
     }
 	YY_BREAK
-case 131:
+case 132:
 YY_RULE_SETUP
-#line 627 "compilers/imcc/imcc.l"
+#line 628 "compilers/imcc/imcc.l"
 {
         if (IMCC_INFO(interp)->state->pasm_file == 0)
             IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR,
@@ -3781,9 +3791,9 @@
         return REG;
     }
 	YY_BREAK
-case 132:
+case 133:
 YY_RULE_SETUP
-#line 638 "compilers/imcc/imcc.l"
+#line 639 "compilers/imcc/imcc.l"
 {
         if (!IMCC_INFO(interp)->is_def) {
             SymReg *r = find_sym(interp, yytext);
@@ -3812,21 +3822,21 @@
         return (!IMCC_INFO(interp)->is_def && is_op(interp, valp->s) ? PARROT_OP : IDENTIFIER);
     }
 	YY_BREAK
-case 133:
+case 134:
 YY_RULE_SETUP
-#line 667 "compilers/imcc/imcc.l"
+#line 668 "compilers/imcc/imcc.l"
 /* skip */;
 	YY_BREAK
-case 134:
+case 135:
 YY_RULE_SETUP
-#line 669 "compilers/imcc/imcc.l"
+#line 670 "compilers/imcc/imcc.l"
 {
         /* catch all except for state macro */
         return yytext[0];
     }
 	YY_BREAK
 case YY_STATE_EOF(emit):
-#line 674 "compilers/imcc/imcc.l"
+#line 675 "compilers/imcc/imcc.l"
 {
         BEGIN(INITIAL);
 
@@ -3839,31 +3849,31 @@
     }
 	YY_BREAK
 case YY_STATE_EOF(INITIAL):
-#line 685 "compilers/imcc/imcc.l"
+#line 686 "compilers/imcc/imcc.l"
 yyterminate();
 	YY_BREAK
-case 135:
+case 136:
 YY_RULE_SETUP
-#line 687 "compilers/imcc/imcc.l"
+#line 688 "compilers/imcc/imcc.l"
 DUP_AND_RET(valp, ENDM);
 	YY_BREAK
-case 136:
-/* rule 136 can match eol */
+case 137:
+/* rule 137 can match eol */
 YY_RULE_SETUP
-#line 689 "compilers/imcc/imcc.l"
+#line 690 "compilers/imcc/imcc.l"
 {
         IMCC_INFO(interp)->line++;
         DUP_AND_RET(valp, '\n');
     }
 	YY_BREAK
-case 137:
+case 138:
 YY_RULE_SETUP
-#line 694 "compilers/imcc/imcc.l"
+#line 695 "compilers/imcc/imcc.l"
 return LABEL;
 	YY_BREAK
-case 138:
+case 139:
 YY_RULE_SETUP
-#line 696 "compilers/imcc/imcc.l"
+#line 697 "compilers/imcc/imcc.l"
 {
 
         if (yylex(valp,yyscanner,interp) != LABEL)
@@ -3888,9 +3898,9 @@
         return LABEL;
     }
 	YY_BREAK
-case 139:
+case 140:
 YY_RULE_SETUP
-#line 720 "compilers/imcc/imcc.l"
+#line 721 "compilers/imcc/imcc.l"
 {
         if (valp) {
             const size_t len = strlen(IMCC_INFO(interp)->cur_macro_name) + yyleng + 12;
@@ -3907,20 +3917,15 @@
         return IDENTIFIER;
     }
 	YY_BREAK
-case 140:
-YY_RULE_SETUP
-#line 736 "compilers/imcc/imcc.l"
-/* skip leading ws */;
-	YY_BREAK
 case 141:
 YY_RULE_SETUP
 #line 737 "compilers/imcc/imcc.l"
-DUP_AND_RET(valp, ' ');
+/* skip leading ws */;
 	YY_BREAK
 case 142:
 YY_RULE_SETUP
 #line 738 "compilers/imcc/imcc.l"
-DUP_AND_RET(valp, REG);
+DUP_AND_RET(valp, ' ');
 	YY_BREAK
 case 143:
 YY_RULE_SETUP
@@ -3930,28 +3935,33 @@
 case 144:
 YY_RULE_SETUP
 #line 740 "compilers/imcc/imcc.l"
-DUP_AND_RET(valp, IDENTIFIER);
+DUP_AND_RET(valp, REG);
 	YY_BREAK
 case 145:
 YY_RULE_SETUP
 #line 741 "compilers/imcc/imcc.l"
-DUP_AND_RET(valp, MACRO);
+DUP_AND_RET(valp, IDENTIFIER);
 	YY_BREAK
 case 146:
 YY_RULE_SETUP
 #line 742 "compilers/imcc/imcc.l"
+DUP_AND_RET(valp, MACRO);
+	YY_BREAK
+case 147:
+YY_RULE_SETUP
+#line 743 "compilers/imcc/imcc.l"
 DUP_AND_RET(valp, yytext[0]);
 	YY_BREAK
 case YY_STATE_EOF(macro):
-#line 743 "compilers/imcc/imcc.l"
+#line 744 "compilers/imcc/imcc.l"
 yyterminate();
 	YY_BREAK
-case 147:
+case 148:
 YY_RULE_SETUP
-#line 745 "compilers/imcc/imcc.l"
+#line 746 "compilers/imcc/imcc.l"
 ECHO;
 	YY_BREAK
-#line 3955 "compilers/imcc/imclexer.c"
+#line 3965 "compilers/imcc/imclexer.c"
 case YY_STATE_EOF(pod):
 case YY_STATE_EOF(cmt1):
 case YY_STATE_EOF(cmt2):
@@ -4254,7 +4264,7 @@
 		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 >= 1054 )
+			if ( yy_current_state >= 1062 )
 				yy_c = yy_meta[(unsigned int) yy_c];
 			}
 		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -4283,11 +4293,11 @@
 	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 >= 1054 )
+		if ( yy_current_state >= 1062 )
 			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 == 1053);
+	yy_is_jam = (yy_current_state == 1061);
 
 	return yy_is_jam ? 0 : yy_current_state;
 }
@@ -5153,7 +5163,7 @@
 
 #define YYTABLES_NAME "yytables"
 
-#line 745 "compilers/imcc/imcc.l"
+#line 746 "compilers/imcc/imcc.l"
 
 
 

Modified: trunk/compilers/imcc/imcparser.c
==============================================================================
--- trunk/compilers/imcc/imcparser.c	Thu Oct 22 22:59:40 2009	(r42027)
+++ trunk/compilers/imcc/imcparser.c	Fri Oct 23 00:30:59 2009	(r42028)
@@ -97,104 +97,105 @@
      ADV_ARROW = 275,
      NEW = 276,
      ADV_INVOCANT = 277,
-     NAMESPACE = 278,
-     DOT_METHOD = 279,
-     SUB = 280,
-     SYM = 281,
-     LOCAL = 282,
-     LEXICAL = 283,
-     CONST = 284,
-     ANNOTATE = 285,
-     INC = 286,
-     DEC = 287,
-     GLOBAL_CONST = 288,
-     PLUS_ASSIGN = 289,
-     MINUS_ASSIGN = 290,
-     MUL_ASSIGN = 291,
-     DIV_ASSIGN = 292,
-     CONCAT_ASSIGN = 293,
-     BAND_ASSIGN = 294,
-     BOR_ASSIGN = 295,
-     BXOR_ASSIGN = 296,
-     FDIV = 297,
-     FDIV_ASSIGN = 298,
-     MOD_ASSIGN = 299,
-     SHR_ASSIGN = 300,
-     SHL_ASSIGN = 301,
-     SHR_U_ASSIGN = 302,
-     SHIFT_LEFT = 303,
-     SHIFT_RIGHT = 304,
-     INTV = 305,
-     FLOATV = 306,
-     STRINGV = 307,
-     PMCV = 308,
-     LOG_XOR = 309,
-     RELOP_EQ = 310,
-     RELOP_NE = 311,
-     RELOP_GT = 312,
-     RELOP_GTE = 313,
-     RELOP_LT = 314,
-     RELOP_LTE = 315,
-     RESULT = 316,
-     RETURN = 317,
-     TAILCALL = 318,
-     YIELDT = 319,
-     GET_RESULTS = 320,
-     POW = 321,
-     SHIFT_RIGHT_U = 322,
-     LOG_AND = 323,
-     LOG_OR = 324,
-     COMMA = 325,
-     ESUB = 326,
-     DOTDOT = 327,
-     PCC_BEGIN = 328,
-     PCC_END = 329,
-     PCC_CALL = 330,
-     PCC_SUB = 331,
-     PCC_BEGIN_RETURN = 332,
-     PCC_END_RETURN = 333,
-     PCC_BEGIN_YIELD = 334,
-     PCC_END_YIELD = 335,
-     NCI_CALL = 336,
-     METH_CALL = 337,
-     INVOCANT = 338,
-     MAIN = 339,
-     LOAD = 340,
-     INIT = 341,
-     IMMEDIATE = 342,
-     POSTCOMP = 343,
-     METHOD = 344,
-     ANON = 345,
-     OUTER = 346,
-     NEED_LEX = 347,
-     MULTI = 348,
-     VTABLE_METHOD = 349,
-     LOADLIB = 350,
-     SUB_INSTANCE_OF = 351,
-     SUBID = 352,
-     NS_ENTRY = 353,
-     UNIQUE_REG = 354,
-     LABEL = 355,
-     EMIT = 356,
-     EOM = 357,
-     IREG = 358,
-     NREG = 359,
-     SREG = 360,
-     PREG = 361,
-     IDENTIFIER = 362,
-     REG = 363,
-     MACRO = 364,
-     ENDM = 365,
-     STRINGC = 366,
-     INTC = 367,
-     FLOATC = 368,
-     USTRINGC = 369,
-     PARROT_OP = 370,
-     VAR = 371,
-     LINECOMMENT = 372,
-     FILECOMMENT = 373,
-     DOT = 374,
-     CONCAT = 375
+     ADV_CALL_SIG = 278,
+     NAMESPACE = 279,
+     DOT_METHOD = 280,
+     SUB = 281,
+     SYM = 282,
+     LOCAL = 283,
+     LEXICAL = 284,
+     CONST = 285,
+     ANNOTATE = 286,
+     INC = 287,
+     DEC = 288,
+     GLOBAL_CONST = 289,
+     PLUS_ASSIGN = 290,
+     MINUS_ASSIGN = 291,
+     MUL_ASSIGN = 292,
+     DIV_ASSIGN = 293,
+     CONCAT_ASSIGN = 294,
+     BAND_ASSIGN = 295,
+     BOR_ASSIGN = 296,
+     BXOR_ASSIGN = 297,
+     FDIV = 298,
+     FDIV_ASSIGN = 299,
+     MOD_ASSIGN = 300,
+     SHR_ASSIGN = 301,
+     SHL_ASSIGN = 302,
+     SHR_U_ASSIGN = 303,
+     SHIFT_LEFT = 304,
+     SHIFT_RIGHT = 305,
+     INTV = 306,
+     FLOATV = 307,
+     STRINGV = 308,
+     PMCV = 309,
+     LOG_XOR = 310,
+     RELOP_EQ = 311,
+     RELOP_NE = 312,
+     RELOP_GT = 313,
+     RELOP_GTE = 314,
+     RELOP_LT = 315,
+     RELOP_LTE = 316,
+     RESULT = 317,
+     RETURN = 318,
+     TAILCALL = 319,
+     YIELDT = 320,
+     GET_RESULTS = 321,
+     POW = 322,
+     SHIFT_RIGHT_U = 323,
+     LOG_AND = 324,
+     LOG_OR = 325,
+     COMMA = 326,
+     ESUB = 327,
+     DOTDOT = 328,
+     PCC_BEGIN = 329,
+     PCC_END = 330,
+     PCC_CALL = 331,
+     PCC_SUB = 332,
+     PCC_BEGIN_RETURN = 333,
+     PCC_END_RETURN = 334,
+     PCC_BEGIN_YIELD = 335,
+     PCC_END_YIELD = 336,
+     NCI_CALL = 337,
+     METH_CALL = 338,
+     INVOCANT = 339,
+     MAIN = 340,
+     LOAD = 341,
+     INIT = 342,
+     IMMEDIATE = 343,
+     POSTCOMP = 344,
+     METHOD = 345,
+     ANON = 346,
+     OUTER = 347,
+     NEED_LEX = 348,
+     MULTI = 349,
+     VTABLE_METHOD = 350,
+     LOADLIB = 351,
+     SUB_INSTANCE_OF = 352,
+     SUBID = 353,
+     NS_ENTRY = 354,
+     UNIQUE_REG = 355,
+     LABEL = 356,
+     EMIT = 357,
+     EOM = 358,
+     IREG = 359,
+     NREG = 360,
+     SREG = 361,
+     PREG = 362,
+     IDENTIFIER = 363,
+     REG = 364,
+     MACRO = 365,
+     ENDM = 366,
+     STRINGC = 367,
+     INTC = 368,
+     FLOATC = 369,
+     USTRINGC = 370,
+     PARROT_OP = 371,
+     VAR = 372,
+     LINECOMMENT = 373,
+     FILECOMMENT = 374,
+     DOT = 375,
+     CONCAT = 376
    };
 #endif
 /* Tokens.  */
@@ -218,104 +219,105 @@
 #define ADV_ARROW 275
 #define NEW 276
 #define ADV_INVOCANT 277
-#define NAMESPACE 278
-#define DOT_METHOD 279
-#define SUB 280
-#define SYM 281
-#define LOCAL 282
-#define LEXICAL 283
-#define CONST 284
-#define ANNOTATE 285
-#define INC 286
-#define DEC 287
-#define GLOBAL_CONST 288
-#define PLUS_ASSIGN 289
-#define MINUS_ASSIGN 290
-#define MUL_ASSIGN 291
-#define DIV_ASSIGN 292
-#define CONCAT_ASSIGN 293
-#define BAND_ASSIGN 294
-#define BOR_ASSIGN 295
-#define BXOR_ASSIGN 296
-#define FDIV 297
-#define FDIV_ASSIGN 298
-#define MOD_ASSIGN 299
-#define SHR_ASSIGN 300
-#define SHL_ASSIGN 301
-#define SHR_U_ASSIGN 302
-#define SHIFT_LEFT 303
-#define SHIFT_RIGHT 304
-#define INTV 305
-#define FLOATV 306
-#define STRINGV 307
-#define PMCV 308
-#define LOG_XOR 309
-#define RELOP_EQ 310
-#define RELOP_NE 311
-#define RELOP_GT 312
-#define RELOP_GTE 313
-#define RELOP_LT 314
-#define RELOP_LTE 315
-#define RESULT 316
-#define RETURN 317
-#define TAILCALL 318
-#define YIELDT 319
-#define GET_RESULTS 320
-#define POW 321
-#define SHIFT_RIGHT_U 322
-#define LOG_AND 323
-#define LOG_OR 324
-#define COMMA 325
-#define ESUB 326
-#define DOTDOT 327
-#define PCC_BEGIN 328
-#define PCC_END 329
-#define PCC_CALL 330
-#define PCC_SUB 331
-#define PCC_BEGIN_RETURN 332
-#define PCC_END_RETURN 333
-#define PCC_BEGIN_YIELD 334
-#define PCC_END_YIELD 335
-#define NCI_CALL 336
-#define METH_CALL 337
-#define INVOCANT 338
-#define MAIN 339
-#define LOAD 340
-#define INIT 341
-#define IMMEDIATE 342
-#define POSTCOMP 343
-#define METHOD 344
-#define ANON 345
-#define OUTER 346
-#define NEED_LEX 347
-#define MULTI 348
-#define VTABLE_METHOD 349
-#define LOADLIB 350
-#define SUB_INSTANCE_OF 351
-#define SUBID 352
-#define NS_ENTRY 353
-#define UNIQUE_REG 354
-#define LABEL 355
-#define EMIT 356
-#define EOM 357
-#define IREG 358
-#define NREG 359
-#define SREG 360
-#define PREG 361
-#define IDENTIFIER 362
-#define REG 363
-#define MACRO 364
-#define ENDM 365
-#define STRINGC 366
-#define INTC 367
-#define FLOATC 368
-#define USTRINGC 369
-#define PARROT_OP 370
-#define VAR 371
-#define LINECOMMENT 372
-#define FILECOMMENT 373
-#define DOT 374
-#define CONCAT 375
+#define ADV_CALL_SIG 278
+#define NAMESPACE 279
+#define DOT_METHOD 280
+#define SUB 281
+#define SYM 282
+#define LOCAL 283
+#define LEXICAL 284
+#define CONST 285
+#define ANNOTATE 286
+#define INC 287
+#define DEC 288
+#define GLOBAL_CONST 289
+#define PLUS_ASSIGN 290
+#define MINUS_ASSIGN 291
+#define MUL_ASSIGN 292
+#define DIV_ASSIGN 293
+#define CONCAT_ASSIGN 294
+#define BAND_ASSIGN 295
+#define BOR_ASSIGN 296
+#define BXOR_ASSIGN 297
+#define FDIV 298
+#define FDIV_ASSIGN 299
+#define MOD_ASSIGN 300
+#define SHR_ASSIGN 301
+#define SHL_ASSIGN 302
+#define SHR_U_ASSIGN 303
+#define SHIFT_LEFT 304
+#define SHIFT_RIGHT 305
+#define INTV 306
+#define FLOATV 307
+#define STRINGV 308
+#define PMCV 309
+#define LOG_XOR 310
+#define RELOP_EQ 311
+#define RELOP_NE 312
+#define RELOP_GT 313
+#define RELOP_GTE 314
+#define RELOP_LT 315
+#define RELOP_LTE 316
+#define RESULT 317
+#define RETURN 318
+#define TAILCALL 319
+#define YIELDT 320
+#define GET_RESULTS 321
+#define POW 322
+#define SHIFT_RIGHT_U 323
+#define LOG_AND 324
+#define LOG_OR 325
+#define COMMA 326
+#define ESUB 327
+#define DOTDOT 328
+#define PCC_BEGIN 329
+#define PCC_END 330
+#define PCC_CALL 331
+#define PCC_SUB 332
+#define PCC_BEGIN_RETURN 333
+#define PCC_END_RETURN 334
+#define PCC_BEGIN_YIELD 335
+#define PCC_END_YIELD 336
+#define NCI_CALL 337
+#define METH_CALL 338
+#define INVOCANT 339
+#define MAIN 340
+#define LOAD 341
+#define INIT 342
+#define IMMEDIATE 343
+#define POSTCOMP 344
+#define METHOD 345
+#define ANON 346
+#define OUTER 347
+#define NEED_LEX 348
+#define MULTI 349
+#define VTABLE_METHOD 350
+#define LOADLIB 351
+#define SUB_INSTANCE_OF 352
+#define SUBID 353
+#define NS_ENTRY 354
+#define UNIQUE_REG 355
+#define LABEL 356
+#define EMIT 357
+#define EOM 358
+#define IREG 359
+#define NREG 360
+#define SREG 361
+#define PREG 362
+#define IDENTIFIER 363
+#define REG 364
+#define MACRO 365
+#define ENDM 366
+#define STRINGC 367
+#define INTC 368
+#define FLOATC 369
+#define USTRINGC 370
+#define PARROT_OP 371
+#define VAR 372
+#define LINECOMMENT 373
+#define FILECOMMENT 374
+#define DOT 375
+#define CONCAT 376
 
 
 
@@ -1408,7 +1410,7 @@
     Instruction *i;
 }
 /* Line 187 of yacc.c.  */
-#line 1401 "compilers/imcc/imcparser.c"
+#line 1403 "compilers/imcc/imcparser.c"
 	YYSTYPE;
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
@@ -1421,7 +1423,7 @@
 
 
 /* Line 216 of yacc.c.  */
-#line 1414 "compilers/imcc/imcparser.c"
+#line 1416 "compilers/imcc/imcparser.c"
 
 #ifdef short
 # undef short
@@ -1636,20 +1638,20 @@
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  31
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   680
+#define YYLAST   651
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  138
+#define YYNTOKENS  139
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  126
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  337
+#define YYNRULES  338
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  543
+#define YYNSTATES  544
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   375
+#define YYMAXUTOK   376
 
 #define YYTRANSLATE(YYX)						\
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -1660,16 +1662,16 @@
        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        4,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,   128,     2,     2,     2,   134,   135,     2,
-     125,   126,   132,   131,     2,   130,     2,   133,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,   137,
-       2,   122,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,   129,     2,     2,     2,   135,   136,     2,
+     126,   127,   133,   132,     2,   131,     2,   134,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,   138,
+       2,   123,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,   123,     2,   124,     2,     2,     2,     2,     2,     2,
+       2,   124,     2,   125,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     127,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,   136,     2,   129,     2,     2,     2,
+     128,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,   137,     2,   130,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -1694,7 +1696,7 @@
       86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
       96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
      106,   107,   108,   109,   110,   111,   112,   113,   114,   115,
-     116,   117,   118,   119,   120,   121
+     116,   117,   118,   119,   120,   121,   122
 };
 
 #if YYDEBUG
@@ -1715,128 +1717,128 @@
      286,   288,   290,   292,   294,   296,   298,   300,   302,   304,
      310,   314,   318,   322,   326,   332,   338,   339,   343,   346,
      347,   351,   355,   356,   361,   362,   365,   367,   369,   371,
-     373,   378,   383,   385,   386,   392,   394,   395,   401,   402,
-     405,   409,   410,   413,   417,   421,   425,   426,   432,   434,
-     436,   437,   439,   443,   447,   453,   455,   458,   459,   462,
-     465,   467,   469,   471,   473,   474,   476,   479,   481,   483,
-     487,   490,   492,   496,   499,   500,   502,   504,   506,   507,
-     512,   517,   522,   523,   530,   532,   533,   540,   543,   546,
-     549,   552,   554,   556,   558,   560,   561,   563,   565,   567,
-     569,   571,   575,   580,   586,   593,   600,   608,   612,   613,
-     623,   625,   627,   629,   633,   635,   637,   639,   641,   643,
+     373,   378,   383,   385,   387,   388,   394,   396,   397,   403,
+     404,   407,   411,   412,   415,   419,   423,   427,   428,   434,
+     436,   438,   439,   441,   445,   449,   455,   457,   460,   461,
+     464,   467,   469,   471,   473,   475,   476,   478,   481,   483,
+     485,   489,   492,   494,   498,   501,   502,   504,   506,   508,
+     509,   514,   519,   524,   525,   532,   534,   535,   542,   545,
+     548,   551,   554,   556,   558,   560,   562,   563,   565,   567,
+     569,   571,   573,   577,   582,   588,   595,   602,   610,   614,
+     615,   625,   627,   629,   631,   635,   637,   639,   641,   643,
      645,   647,   649,   651,   653,   655,   657,   659,   661,   663,
      665,   667,   669,   671,   673,   675,   677,   679,   681,   683,
-     685,   686,   692,   696,   698,   700,   702,   704,   706,   708,
-     710,   712,   714,   716,   718,   720,   722,   727,   729,   731,
-     733,   735,   739,   743,   747,   751,   752,   758,   759,   763,
-     765,   771,   775,   779,   782,   783,   786,   788,   790,   795,
-     800,   803,   807,   813,   815,   819,   820,   822,   824,   831,
-     837,   842,   847,   854,   860,   862,   864,   866,   868,   870,
-     872,   874,   876,   878,   880,   881,   883,   887,   889,   891,
-     896,   900,   902,   904,   906,   908,   910,   912,   914,   916,
-     918,   920,   922,   923,   926,   927,   930,   932,   936,   938,
-     940,   942,   944,   946,   948,   950,   952,   954
+     685,   687,   688,   694,   698,   700,   702,   704,   706,   708,
+     710,   712,   714,   716,   718,   720,   722,   724,   729,   731,
+     733,   735,   737,   741,   745,   749,   753,   754,   760,   761,
+     765,   767,   773,   777,   781,   784,   785,   788,   790,   792,
+     797,   802,   805,   809,   815,   817,   821,   822,   824,   826,
+     833,   839,   844,   849,   856,   862,   864,   866,   868,   870,
+     872,   874,   876,   878,   880,   882,   883,   885,   889,   891,
+     893,   898,   902,   904,   906,   908,   910,   912,   914,   916,
+     918,   920,   922,   924,   925,   928,   929,   932,   934,   938,
+     940,   942,   944,   946,   948,   950,   952,   954,   956
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 static const yytype_int16 yyrhs[] =
 {
-     139,     0,    -1,   140,    -1,   141,    -1,   140,   141,    -1,
-     161,    -1,   146,    -1,   163,    -1,   158,    -1,   110,     4,
-      -1,   142,    -1,   143,    -1,     4,    -1,   145,     4,    -1,
-      96,   112,     4,    -1,     7,   113,    71,   112,     4,    -1,
-       8,   112,     4,    -1,    31,   112,    71,   263,    -1,     6,
-     112,    -1,    -1,    30,   147,   222,   108,   122,   263,    -1,
-      -1,    30,   149,   113,   254,   122,   151,    -1,    -1,    30,
-     150,   112,   254,   122,   151,    -1,   112,    -1,   115,    -1,
-     153,    -1,   152,   153,    -1,   211,   154,     4,    -1,   110,
-       4,    -1,   119,    -1,   118,    -1,   161,    -1,   148,    -1,
-     142,    -1,    -1,   155,   116,   157,    -1,    -1,    77,   156,
-     185,   101,    -1,    13,   255,    -1,    29,   112,    71,   109,
-      -1,    -1,   248,    -1,    -1,   102,   159,   160,   103,    -1,
-      -1,   152,    -1,    24,   162,     4,    -1,   123,   256,   124,
-      -1,   123,   124,    -1,    -1,    -1,    -1,    26,   164,   251,
-     165,   185,     4,   166,   167,   180,    72,    -1,    -1,     4,
-      -1,   167,   168,     4,    -1,    -1,     5,   169,   170,    -1,
-     222,   108,   194,    -1,    94,   125,   178,   126,    -1,    92,
-     125,   112,   126,    -1,    92,   125,   108,   126,    -1,    95,
-      -1,    95,   125,   112,   126,    -1,    90,    -1,    90,   125,
-     151,   126,    -1,    99,    -1,    99,   125,   151,   126,    -1,
-      97,   125,   112,   126,    -1,    98,    -1,    98,   125,   151,
-     126,    -1,    -1,   178,    71,   179,    -1,   179,    -1,    51,
-      -1,    52,    -1,    54,    -1,    53,    -1,   108,    -1,   112,
-      -1,   123,   256,   124,    -1,    -1,   208,    -1,    -1,    74,
-       4,   182,   189,   184,   188,   183,   191,    75,    -1,    -1,
-     213,     4,    -1,    -1,    84,   255,     4,    -1,    -1,   186,
-      -1,   187,    -1,   186,   187,    -1,    86,    -1,    87,    -1,
-      85,    -1,    88,    -1,    89,    -1,    91,    -1,    93,    -1,
-     171,    -1,   172,    -1,   173,    -1,   174,    -1,   175,    -1,
-     176,    -1,   177,    -1,    76,   255,    71,   255,     4,    -1,
-      76,   255,     4,    -1,    82,   255,     4,    -1,    83,   247,
-       4,    -1,    83,   112,     4,    -1,    83,   247,    71,   255,
-       4,    -1,    83,   112,    71,   255,     4,    -1,    -1,   189,
-     190,     4,    -1,    10,   237,    -1,    -1,   191,   192,     4,
-      -1,    62,   247,   194,    -1,    -1,    28,   193,   222,   216,
-      -1,    -1,   194,   195,    -1,    17,    -1,    18,    -1,    19,
-      -1,    20,    -1,    20,   125,   112,   126,    -1,    20,   125,
-     115,   126,    -1,   100,    -1,    -1,    78,     4,   197,   200,
-      79,    -1,   204,    -1,    -1,    80,     4,   199,   201,    81,
-      -1,    -1,   200,     4,    -1,   200,   202,     4,    -1,    -1,
-     201,     4,    -1,   201,   203,     4,    -1,    14,   255,   238,
-      -1,    15,   255,   238,    -1,    -1,   206,   125,   205,   207,
-     126,    -1,    63,    -1,    65,    -1,    -1,   237,    -1,   112,
-      21,   255,    -1,   207,    71,   237,    -1,   207,    71,   112,
-      21,   255,    -1,   210,    -1,   208,   210,    -1,    -1,   209,
-     214,    -1,   110,     4,    -1,   119,    -1,   118,    -1,   143,
-      -1,   144,    -1,    -1,   212,    -1,   212,   213,    -1,   213,
-      -1,   101,    -1,   211,   218,     4,    -1,     1,     4,    -1,
-     216,    -1,   215,    71,   216,    -1,   108,   217,    -1,    -1,
-     100,    -1,   224,    -1,   242,    -1,    -1,    28,   219,   222,
-     215,    -1,    29,   112,    71,   247,    -1,    29,   115,    71,
-     247,    -1,    -1,    30,   220,   222,   108,   122,   263,    -1,
-     148,    -1,    -1,    34,   221,   222,   108,   122,   263,    -1,
-      64,   234,    -1,     9,   253,    -1,   116,   248,    -1,    13,
-     255,    -1,   234,    -1,   181,    -1,   196,    -1,   198,    -1,
-      -1,    51,    -1,    52,    -1,    53,    -1,    54,    -1,   108,
-      -1,   247,   122,   255,    -1,   247,   122,   226,   255,    -1,
-     247,   122,   255,   227,   255,    -1,   247,   122,   255,   123,
-     256,   124,    -1,   247,   123,   256,   124,   122,   255,    -1,
-     247,   122,   127,   223,   123,   256,   124,    -1,   247,   122,
-     234,    -1,    -1,   125,   225,   241,   126,   122,   233,   125,
-     236,   126,    -1,   228,    -1,   230,    -1,   232,    -1,   247,
-     122,    13,    -1,   128,    -1,   129,    -1,   130,    -1,   130,
-      -1,   131,    -1,   132,    -1,   133,    -1,   134,    -1,    43,
-      -1,    67,    -1,   121,    -1,    56,    -1,    57,    -1,    58,
-      -1,    59,    -1,    60,    -1,    61,    -1,    49,    -1,    50,
-      -1,    68,    -1,    69,    -1,    70,    -1,    55,    -1,   135,
-      -1,   136,    -1,   129,    -1,    -1,    66,   229,   125,   241,
-     126,    -1,   247,   231,   255,    -1,    35,    -1,    36,    -1,
-      37,    -1,    38,    -1,    45,    -1,    44,    -1,    39,    -1,
-      40,    -1,    41,    -1,    42,    -1,    46,    -1,    47,    -1,
-      48,    -1,   247,   122,   116,   157,    -1,   108,    -1,   112,
-      -1,   115,    -1,   247,    -1,   247,   120,   252,    -1,   247,
-     120,   115,    -1,   247,   120,   112,    -1,   247,   120,   247,
-      -1,    -1,   233,   235,   125,   236,   126,    -1,    -1,   236,
-      71,   237,    -1,   237,    -1,   236,    71,   112,    21,   255,
-      -1,   255,    21,   255,    -1,   112,    21,   255,    -1,   255,
-     238,    -1,    -1,   238,   239,    -1,    16,    -1,    20,    -1,
-      20,   125,   115,   126,    -1,    20,   125,   112,   126,    -1,
-     247,   194,    -1,   241,    71,   240,    -1,   241,    71,   112,
-      21,   247,    -1,   240,    -1,   112,    21,   247,    -1,    -1,
-     244,    -1,   243,    -1,    12,   255,   246,   255,     9,   253,
-      -1,    12,    13,   255,     9,   253,    -1,    12,   255,   245,
-     253,    -1,    11,   255,   245,   253,    -1,    11,   255,   246,
-     255,     9,   253,    -1,    11,    13,   255,     9,   253,    -1,
-      71,    -1,     9,    -1,    56,    -1,    57,    -1,    58,    -1,
-      59,    -1,    60,    -1,    61,    -1,   117,    -1,   262,    -1,
-      -1,   249,    -1,   249,    71,   250,    -1,   250,    -1,   254,
-      -1,   247,   123,   256,   124,    -1,   123,   258,   124,    -1,
-     252,    -1,   112,    -1,   115,    -1,   108,    -1,   116,    -1,
-     108,    -1,   116,    -1,   253,    -1,   255,    -1,   247,    -1,
-     263,    -1,    -1,   257,   260,    -1,    -1,   259,   260,    -1,
-     261,    -1,   260,   137,   261,    -1,   255,    -1,   104,    -1,
-     105,    -1,   106,    -1,   107,    -1,   109,    -1,   113,    -1,
-     114,    -1,   112,    -1,   115,    -1
+     140,     0,    -1,   141,    -1,   142,    -1,   141,   142,    -1,
+     162,    -1,   147,    -1,   164,    -1,   159,    -1,   111,     4,
+      -1,   143,    -1,   144,    -1,     4,    -1,   146,     4,    -1,
+      97,   113,     4,    -1,     7,   114,    72,   113,     4,    -1,
+       8,   113,     4,    -1,    32,   113,    72,   264,    -1,     6,
+     113,    -1,    -1,    31,   148,   223,   109,   123,   264,    -1,
+      -1,    31,   150,   114,   255,   123,   152,    -1,    -1,    31,
+     151,   113,   255,   123,   152,    -1,   113,    -1,   116,    -1,
+     154,    -1,   153,   154,    -1,   212,   155,     4,    -1,   111,
+       4,    -1,   120,    -1,   119,    -1,   162,    -1,   149,    -1,
+     143,    -1,    -1,   156,   117,   158,    -1,    -1,    78,   157,
+     186,   102,    -1,    13,   256,    -1,    30,   113,    72,   110,
+      -1,    -1,   249,    -1,    -1,   103,   160,   161,   104,    -1,
+      -1,   153,    -1,    25,   163,     4,    -1,   124,   257,   125,
+      -1,   124,   125,    -1,    -1,    -1,    -1,    27,   165,   252,
+     166,   186,     4,   167,   168,   181,    73,    -1,    -1,     4,
+      -1,   168,   169,     4,    -1,    -1,     5,   170,   171,    -1,
+     223,   109,   195,    -1,    95,   126,   179,   127,    -1,    93,
+     126,   113,   127,    -1,    93,   126,   109,   127,    -1,    96,
+      -1,    96,   126,   113,   127,    -1,    91,    -1,    91,   126,
+     152,   127,    -1,   100,    -1,   100,   126,   152,   127,    -1,
+      98,   126,   113,   127,    -1,    99,    -1,    99,   126,   152,
+     127,    -1,    -1,   179,    72,   180,    -1,   180,    -1,    52,
+      -1,    53,    -1,    55,    -1,    54,    -1,   109,    -1,   113,
+      -1,   124,   257,   125,    -1,    -1,   209,    -1,    -1,    75,
+       4,   183,   190,   185,   189,   184,   192,    76,    -1,    -1,
+     214,     4,    -1,    -1,    85,   256,     4,    -1,    -1,   187,
+      -1,   188,    -1,   187,   188,    -1,    87,    -1,    88,    -1,
+      86,    -1,    89,    -1,    90,    -1,    92,    -1,    94,    -1,
+     172,    -1,   173,    -1,   174,    -1,   175,    -1,   176,    -1,
+     177,    -1,   178,    -1,    77,   256,    72,   256,     4,    -1,
+      77,   256,     4,    -1,    83,   256,     4,    -1,    84,   248,
+       4,    -1,    84,   113,     4,    -1,    84,   248,    72,   256,
+       4,    -1,    84,   113,    72,   256,     4,    -1,    -1,   190,
+     191,     4,    -1,    10,   238,    -1,    -1,   192,   193,     4,
+      -1,    63,   248,   195,    -1,    -1,    29,   194,   223,   217,
+      -1,    -1,   195,   196,    -1,    17,    -1,    18,    -1,    19,
+      -1,    20,    -1,    20,   126,   113,   127,    -1,    20,   126,
+     116,   127,    -1,   101,    -1,    24,    -1,    -1,    79,     4,
+     198,   201,    80,    -1,   205,    -1,    -1,    81,     4,   200,
+     202,    82,    -1,    -1,   201,     4,    -1,   201,   203,     4,
+      -1,    -1,   202,     4,    -1,   202,   204,     4,    -1,    14,
+     256,   239,    -1,    15,   256,   239,    -1,    -1,   207,   126,
+     206,   208,   127,    -1,    64,    -1,    66,    -1,    -1,   238,
+      -1,   113,    21,   256,    -1,   208,    72,   238,    -1,   208,
+      72,   113,    21,   256,    -1,   211,    -1,   209,   211,    -1,
+      -1,   210,   215,    -1,   111,     4,    -1,   120,    -1,   119,
+      -1,   144,    -1,   145,    -1,    -1,   213,    -1,   213,   214,
+      -1,   214,    -1,   102,    -1,   212,   219,     4,    -1,     1,
+       4,    -1,   217,    -1,   216,    72,   217,    -1,   109,   218,
+      -1,    -1,   101,    -1,   225,    -1,   243,    -1,    -1,    29,
+     220,   223,   216,    -1,    30,   113,    72,   248,    -1,    30,
+     116,    72,   248,    -1,    -1,    31,   221,   223,   109,   123,
+     264,    -1,   149,    -1,    -1,    35,   222,   223,   109,   123,
+     264,    -1,    65,   235,    -1,     9,   254,    -1,   117,   249,
+      -1,    13,   256,    -1,   235,    -1,   182,    -1,   197,    -1,
+     199,    -1,    -1,    52,    -1,    53,    -1,    54,    -1,    55,
+      -1,   109,    -1,   248,   123,   256,    -1,   248,   123,   227,
+     256,    -1,   248,   123,   256,   228,   256,    -1,   248,   123,
+     256,   124,   257,   125,    -1,   248,   124,   257,   125,   123,
+     256,    -1,   248,   123,   128,   224,   124,   257,   125,    -1,
+     248,   123,   235,    -1,    -1,   126,   226,   242,   127,   123,
+     234,   126,   237,   127,    -1,   229,    -1,   231,    -1,   233,
+      -1,   248,   123,    13,    -1,   129,    -1,   130,    -1,   131,
+      -1,   131,    -1,   132,    -1,   133,    -1,   134,    -1,   135,
+      -1,    44,    -1,    68,    -1,   122,    -1,    57,    -1,    58,
+      -1,    59,    -1,    60,    -1,    61,    -1,    62,    -1,    50,
+      -1,    51,    -1,    69,    -1,    70,    -1,    71,    -1,    56,
+      -1,   136,    -1,   137,    -1,   130,    -1,    -1,    67,   230,
+     126,   242,   127,    -1,   248,   232,   256,    -1,    36,    -1,
+      37,    -1,    38,    -1,    39,    -1,    46,    -1,    45,    -1,
+      40,    -1,    41,    -1,    42,    -1,    43,    -1,    47,    -1,
+      48,    -1,    49,    -1,   248,   123,   117,   158,    -1,   109,
+      -1,   113,    -1,   116,    -1,   248,    -1,   248,   121,   253,
+      -1,   248,   121,   116,    -1,   248,   121,   113,    -1,   248,
+     121,   248,    -1,    -1,   234,   236,   126,   237,   127,    -1,
+      -1,   237,    72,   238,    -1,   238,    -1,   237,    72,   113,
+      21,   256,    -1,   256,    21,   256,    -1,   113,    21,   256,
+      -1,   256,   239,    -1,    -1,   239,   240,    -1,    16,    -1,
+      20,    -1,    20,   126,   116,   127,    -1,    20,   126,   113,
+     127,    -1,   248,   195,    -1,   242,    72,   241,    -1,   242,
+      72,   113,    21,   248,    -1,   241,    -1,   113,    21,   248,
+      -1,    -1,   245,    -1,   244,    -1,    12,   256,   247,   256,
+       9,   254,    -1,    12,    13,   256,     9,   254,    -1,    12,
+     256,   246,   254,    -1,    11,   256,   246,   254,    -1,    11,
+     256,   247,   256,     9,   254,    -1,    11,    13,   256,     9,
+     254,    -1,    72,    -1,     9,    -1,    57,    -1,    58,    -1,
+      59,    -1,    60,    -1,    61,    -1,    62,    -1,   118,    -1,
+     263,    -1,    -1,   250,    -1,   250,    72,   251,    -1,   251,
+      -1,   255,    -1,   248,   124,   257,   125,    -1,   124,   259,
+     125,    -1,   253,    -1,   113,    -1,   116,    -1,   109,    -1,
+     117,    -1,   109,    -1,   117,    -1,   254,    -1,   256,    -1,
+     248,    -1,   264,    -1,    -1,   258,   261,    -1,    -1,   260,
+     261,    -1,   262,    -1,   261,   138,   262,    -1,   256,    -1,
+     105,    -1,   106,    -1,   107,    -1,   108,    -1,   110,    -1,
+     114,    -1,   115,    -1,   113,    -1,   116,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
@@ -1855,27 +1857,27 @@
     1614,  1615,  1616,  1617,  1618,  1619,  1620,  1621,  1622,  1626,
     1631,  1635,  1640,  1644,  1648,  1653,  1662,  1663,  1667,  1672,
     1673,  1681,  1682,  1682,  1697,  1698,  1702,  1703,  1704,  1705,
-    1706,  1707,  1708,  1713,  1713,  1716,  1724,  1724,  1730,  1731,
-    1736,  1744,  1745,  1750,  1758,  1762,  1767,  1766,  1779,  1780,
-    1784,  1785,  1795,  1800,  1810,  1819,  1820,  1832,  1836,  1838,
-    1839,  1840,  1841,  1842,  1846,  1847,  1851,  1852,  1856,  1867,
-    1868,  1879,  1886,  1895,  1905,  1906,  1911,  1912,  1913,  1913,
-    1929,  1939,  1945,  1945,  1952,  1953,  1953,  1959,  1965,  1969,
-    1981,  1982,  1983,  1984,  1985,  1986,  1990,  1991,  1992,  1993,
-    1997,  2010,  2012,  2014,  2016,  2018,  2023,  2026,  2033,  2032,
-    2041,  2042,  2043,  2044,  2052,  2053,  2054,  2058,  2059,  2060,
+    1706,  1707,  1708,  1709,  1714,  1714,  1717,  1725,  1725,  1731,
+    1732,  1737,  1745,  1746,  1751,  1759,  1763,  1768,  1767,  1780,
+    1781,  1785,  1786,  1796,  1801,  1811,  1820,  1821,  1833,  1837,
+    1839,  1840,  1841,  1842,  1843,  1847,  1848,  1852,  1853,  1857,
+    1868,  1869,  1880,  1887,  1896,  1906,  1907,  1912,  1913,  1914,
+    1914,  1930,  1940,  1946,  1946,  1953,  1954,  1954,  1960,  1966,
+    1970,  1982,  1983,  1984,  1985,  1986,  1987,  1991,  1992,  1993,
+    1994,  1998,  2011,  2013,  2015,  2017,  2019,  2024,  2027,  2034,
+    2033,  2042,  2043,  2044,  2045,  2053,  2054,  2055,  2059,  2060,
     2061,  2062,  2063,  2064,  2065,  2066,  2067,  2068,  2069,  2070,
     2071,  2072,  2073,  2074,  2075,  2076,  2077,  2078,  2079,  2080,
-    2086,  2085,  2097,  2102,  2103,  2104,  2105,  2106,  2107,  2108,
-    2109,  2110,  2111,  2112,  2113,  2114,  2119,  2130,  2131,  2132,
-    2133,  2139,  2153,  2159,  2165,  2171,  2170,  2179,  2180,  2190,
-    2200,  2207,  2212,  2222,  2226,  2227,  2231,  2232,  2235,  2236,
-    2240,  2244,  2254,  2260,  2270,  2275,  2279,  2280,  2284,  2288,
-    2292,  2299,  2303,  2307,  2314,  2315,  2319,  2320,  2321,  2322,
-    2323,  2324,  2328,  2329,  2333,  2334,  2338,  2339,  2343,  2344,
-    2351,  2358,  2359,  2360,  2364,  2365,  2369,  2370,  2374,  2375,
-    2379,  2380,  2384,  2384,  2396,  2396,  2408,  2409,  2417,  2424,
-    2425,  2426,  2427,  2428,  2432,  2433,  2434,  2435
+    2081,  2087,  2086,  2098,  2103,  2104,  2105,  2106,  2107,  2108,
+    2109,  2110,  2111,  2112,  2113,  2114,  2115,  2120,  2131,  2132,
+    2133,  2134,  2140,  2154,  2160,  2166,  2172,  2171,  2180,  2181,
+    2191,  2201,  2208,  2213,  2223,  2227,  2228,  2232,  2233,  2236,
+    2237,  2241,  2245,  2255,  2261,  2271,  2276,  2280,  2281,  2285,
+    2289,  2293,  2300,  2304,  2308,  2315,  2316,  2320,  2321,  2322,
+    2323,  2324,  2325,  2329,  2330,  2334,  2335,  2339,  2340,  2344,
+    2345,  2352,  2359,  2360,  2361,  2365,  2366,  2370,  2371,  2375,
+    2376,  2380,  2381,  2385,  2385,  2397,  2397,  2409,  2410,  2418,
+    2425,  2426,  2427,  2428,  2429,  2433,  2434,  2435,  2436
 };
 #endif
 
@@ -1888,34 +1890,34 @@
   "TK_LINE", "TK_FILE", "GOTO", "ARG", "IF", "UNLESS", "PNULL",
   "SET_RETURN", "SET_YIELD", "ADV_FLAT", "ADV_SLURPY", "ADV_OPTIONAL",
   "ADV_OPT_FLAG", "ADV_NAMED", "ADV_ARROW", "NEW", "ADV_INVOCANT",
-  "NAMESPACE", "DOT_METHOD", "SUB", "SYM", "LOCAL", "LEXICAL", "CONST",
-  "ANNOTATE", "INC", "DEC", "GLOBAL_CONST", "PLUS_ASSIGN", "MINUS_ASSIGN",
-  "MUL_ASSIGN", "DIV_ASSIGN", "CONCAT_ASSIGN", "BAND_ASSIGN", "BOR_ASSIGN",
-  "BXOR_ASSIGN", "FDIV", "FDIV_ASSIGN", "MOD_ASSIGN", "SHR_ASSIGN",
-  "SHL_ASSIGN", "SHR_U_ASSIGN", "SHIFT_LEFT", "SHIFT_RIGHT", "INTV",
-  "FLOATV", "STRINGV", "PMCV", "LOG_XOR", "RELOP_EQ", "RELOP_NE",
-  "RELOP_GT", "RELOP_GTE", "RELOP_LT", "RELOP_LTE", "RESULT", "RETURN",
-  "TAILCALL", "YIELDT", "GET_RESULTS", "POW", "SHIFT_RIGHT_U", "LOG_AND",
-  "LOG_OR", "COMMA", "ESUB", "DOTDOT", "PCC_BEGIN", "PCC_END", "PCC_CALL",
-  "PCC_SUB", "PCC_BEGIN_RETURN", "PCC_END_RETURN", "PCC_BEGIN_YIELD",
-  "PCC_END_YIELD", "NCI_CALL", "METH_CALL", "INVOCANT", "MAIN", "LOAD",
-  "INIT", "IMMEDIATE", "POSTCOMP", "METHOD", "ANON", "OUTER", "NEED_LEX",
-  "MULTI", "VTABLE_METHOD", "LOADLIB", "SUB_INSTANCE_OF", "SUBID",
-  "NS_ENTRY", "UNIQUE_REG", "LABEL", "EMIT", "EOM", "IREG", "NREG", "SREG",
-  "PREG", "IDENTIFIER", "REG", "MACRO", "ENDM", "STRINGC", "INTC",
-  "FLOATC", "USTRINGC", "PARROT_OP", "VAR", "LINECOMMENT", "FILECOMMENT",
-  "DOT", "CONCAT", "'='", "'['", "']'", "'('", "')'", "'new'", "'!'",
-  "'~'", "'-'", "'+'", "'*'", "'/'", "'%'", "'&'", "'|'", "';'", "$accept",
-  "program", "compilation_units", "compilation_unit", "pragma",
-  "location_directive", "annotate_directive", "hll_def", "constdef", "@1",
-  "pmc_const", "@2", "@3", "any_string", "pasmcode", "pasmline",
-  "pasm_inst", "@4", "@5", "pasm_args", "emit", "@6", "opt_pasmcode",
-  "class_namespace", "maybe_ns", "sub", "@7", "@8", "@9", "sub_params",
-  "sub_param", "@10", "sub_param_type_def", "multi", "outer", "vtable",
-  "method", "ns_entry_name", "instanceof", "subid", "multi_types",
-  "multi_type", "sub_body", "pcc_sub_call", "@11", "opt_label",
-  "opt_invocant", "sub_proto", "sub_proto_list", "proto", "pcc_call",
-  "pcc_args", "pcc_arg", "pcc_results", "pcc_result", "@12",
+  "ADV_CALL_SIG", "NAMESPACE", "DOT_METHOD", "SUB", "SYM", "LOCAL",
+  "LEXICAL", "CONST", "ANNOTATE", "INC", "DEC", "GLOBAL_CONST",
+  "PLUS_ASSIGN", "MINUS_ASSIGN", "MUL_ASSIGN", "DIV_ASSIGN",
+  "CONCAT_ASSIGN", "BAND_ASSIGN", "BOR_ASSIGN", "BXOR_ASSIGN", "FDIV",
+  "FDIV_ASSIGN", "MOD_ASSIGN", "SHR_ASSIGN", "SHL_ASSIGN", "SHR_U_ASSIGN",
+  "SHIFT_LEFT", "SHIFT_RIGHT", "INTV", "FLOATV", "STRINGV", "PMCV",
+  "LOG_XOR", "RELOP_EQ", "RELOP_NE", "RELOP_GT", "RELOP_GTE", "RELOP_LT",
+  "RELOP_LTE", "RESULT", "RETURN", "TAILCALL", "YIELDT", "GET_RESULTS",
+  "POW", "SHIFT_RIGHT_U", "LOG_AND", "LOG_OR", "COMMA", "ESUB", "DOTDOT",
+  "PCC_BEGIN", "PCC_END", "PCC_CALL", "PCC_SUB", "PCC_BEGIN_RETURN",
+  "PCC_END_RETURN", "PCC_BEGIN_YIELD", "PCC_END_YIELD", "NCI_CALL",
+  "METH_CALL", "INVOCANT", "MAIN", "LOAD", "INIT", "IMMEDIATE", "POSTCOMP",
+  "METHOD", "ANON", "OUTER", "NEED_LEX", "MULTI", "VTABLE_METHOD",
+  "LOADLIB", "SUB_INSTANCE_OF", "SUBID", "NS_ENTRY", "UNIQUE_REG", "LABEL",
+  "EMIT", "EOM", "IREG", "NREG", "SREG", "PREG", "IDENTIFIER", "REG",
+  "MACRO", "ENDM", "STRINGC", "INTC", "FLOATC", "USTRINGC", "PARROT_OP",
+  "VAR", "LINECOMMENT", "FILECOMMENT", "DOT", "CONCAT", "'='", "'['",
+  "']'", "'('", "')'", "'new'", "'!'", "'~'", "'-'", "'+'", "'*'", "'/'",
+  "'%'", "'&'", "'|'", "';'", "$accept", "program", "compilation_units",
+  "compilation_unit", "pragma", "location_directive", "annotate_directive",
+  "hll_def", "constdef", "@1", "pmc_const", "@2", "@3", "any_string",
+  "pasmcode", "pasmline", "pasm_inst", "@4", "@5", "pasm_args", "emit",
+  "@6", "opt_pasmcode", "class_namespace", "maybe_ns", "sub", "@7", "@8",
+  "@9", "sub_params", "sub_param", "@10", "sub_param_type_def", "multi",
+  "outer", "vtable", "method", "ns_entry_name", "instanceof", "subid",
+  "multi_types", "multi_type", "sub_body", "pcc_sub_call", "@11",
+  "opt_label", "opt_invocant", "sub_proto", "sub_proto_list", "proto",
+  "pcc_call", "pcc_args", "pcc_arg", "pcc_results", "pcc_result", "@12",
   "paramtype_list", "paramtype", "pcc_ret", "@13", "pcc_yield", "@14",
   "pcc_returns", "pcc_yields", "pcc_return", "pcc_set_yield",
   "pcc_return_many", "@15", "return_or_yield", "var_returns", "statements",
@@ -1949,48 +1951,48 @@
      344,   345,   346,   347,   348,   349,   350,   351,   352,   353,
      354,   355,   356,   357,   358,   359,   360,   361,   362,   363,
      364,   365,   366,   367,   368,   369,   370,   371,   372,   373,
-     374,   375,    61,    91,    93,    40,    41,   110,    33,   126,
-      45,    43,    42,    47,    37,    38,   124,    59
+     374,   375,   376,    61,    91,    93,    40,    41,   110,    33,
+     126,    45,    43,    42,    47,    37,    38,   124,    59
 };
 # endif
 
 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint16 yyr1[] =
 {
-       0,   138,   139,   140,   140,   141,   141,   141,   141,   141,
-     141,   141,   141,   142,   142,   143,   143,   144,   145,   147,
-     146,   149,   148,   150,   148,   151,   151,   152,   152,   153,
-     153,   153,   153,   153,   153,   153,   155,   154,   156,   154,
-     154,   154,   154,   157,   159,   158,   160,   160,   161,   162,
-     162,   164,   165,   166,   163,   167,   167,   167,   169,   168,
-     170,   171,   172,   172,   173,   173,   174,   174,   175,   175,
-     176,   177,   177,   178,   178,   178,   179,   179,   179,   179,
-     179,   179,   179,   180,   180,   182,   181,   183,   183,   184,
-     184,   185,   185,   186,   186,   187,   187,   187,   187,   187,
-     187,   187,   187,   187,   187,   187,   187,   187,   187,   188,
-     188,   188,   188,   188,   188,   188,   189,   189,   190,   191,
-     191,   192,   193,   192,   194,   194,   195,   195,   195,   195,
-     195,   195,   195,   197,   196,   196,   199,   198,   200,   200,
-     200,   201,   201,   201,   202,   203,   205,   204,   206,   206,
-     207,   207,   207,   207,   207,   208,   208,   209,   210,   210,
-     210,   210,   210,   210,   211,   211,   212,   212,   213,   214,
-     214,   215,   215,   216,   217,   217,   218,   218,   219,   218,
-     218,   218,   220,   218,   218,   221,   218,   218,   218,   218,
-     218,   218,   218,   218,   218,   218,   222,   222,   222,   222,
-     223,   224,   224,   224,   224,   224,   224,   224,   225,   224,
-     224,   224,   224,   224,   226,   226,   226,   227,   227,   227,
-     227,   227,   227,   227,   227,   227,   227,   227,   227,   227,
-     227,   227,   227,   227,   227,   227,   227,   227,   227,   227,
-     229,   228,   230,   231,   231,   231,   231,   231,   231,   231,
-     231,   231,   231,   231,   231,   231,   232,   233,   233,   233,
-     233,   233,   233,   233,   233,   235,   234,   236,   236,   236,
-     236,   236,   236,   237,   238,   238,   239,   239,   239,   239,
-     240,   241,   241,   241,   241,   241,   242,   242,   243,   243,
-     243,   244,   244,   244,   245,   245,   246,   246,   246,   246,
-     246,   246,   247,   247,   248,   248,   249,   249,   250,   250,
-     250,   251,   251,   251,   252,   252,   253,   253,   254,   254,
-     255,   255,   257,   256,   259,   258,   260,   260,   261,   262,
-     262,   262,   262,   262,   263,   263,   263,   263
+       0,   139,   140,   141,   141,   142,   142,   142,   142,   142,
+     142,   142,   142,   143,   143,   144,   144,   145,   146,   148,
+     147,   150,   149,   151,   149,   152,   152,   153,   153,   154,
+     154,   154,   154,   154,   154,   154,   156,   155,   157,   155,
+     155,   155,   155,   158,   160,   159,   161,   161,   162,   163,
+     163,   165,   166,   167,   164,   168,   168,   168,   170,   169,
+     171,   172,   173,   173,   174,   174,   175,   175,   176,   176,
+     177,   178,   178,   179,   179,   179,   180,   180,   180,   180,
+     180,   180,   180,   181,   181,   183,   182,   184,   184,   185,
+     185,   186,   186,   187,   187,   188,   188,   188,   188,   188,
+     188,   188,   188,   188,   188,   188,   188,   188,   188,   189,
+     189,   189,   189,   189,   189,   189,   190,   190,   191,   192,
+     192,   193,   194,   193,   195,   195,   196,   196,   196,   196,
+     196,   196,   196,   196,   198,   197,   197,   200,   199,   201,
+     201,   201,   202,   202,   202,   203,   204,   206,   205,   207,
+     207,   208,   208,   208,   208,   208,   209,   209,   210,   211,
+     211,   211,   211,   211,   211,   212,   212,   213,   213,   214,
+     215,   215,   216,   216,   217,   218,   218,   219,   219,   220,
+     219,   219,   219,   221,   219,   219,   222,   219,   219,   219,
+     219,   219,   219,   219,   219,   219,   219,   223,   223,   223,
+     223,   224,   225,   225,   225,   225,   225,   225,   225,   226,
+     225,   225,   225,   225,   225,   227,   227,   227,   228,   228,
+     228,   228,   228,   228,   228,   228,   228,   228,   228,   228,
+     228,   228,   228,   228,   228,   228,   228,   228,   228,   228,
+     228,   230,   229,   231,   232,   232,   232,   232,   232,   232,
+     232,   232,   232,   232,   232,   232,   232,   233,   234,   234,
+     234,   234,   234,   234,   234,   234,   236,   235,   237,   237,
+     237,   237,   237,   237,   238,   239,   239,   240,   240,   240,
+     240,   241,   242,   242,   242,   242,   242,   243,   243,   244,
+     244,   244,   245,   245,   245,   246,   246,   247,   247,   247,
+     247,   247,   247,   248,   248,   249,   249,   250,   250,   251,
+     251,   251,   252,   252,   252,   253,   253,   254,   254,   255,
+     255,   256,   256,   258,   257,   260,   259,   261,   261,   262,
+     263,   263,   263,   263,   263,   264,   264,   264,   264
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -2009,27 +2011,27 @@
        1,     1,     1,     1,     1,     1,     1,     1,     1,     5,
        3,     3,     3,     3,     5,     5,     0,     3,     2,     0,
        3,     3,     0,     4,     0,     2,     1,     1,     1,     1,
-       4,     4,     1,     0,     5,     1,     0,     5,     0,     2,
-       3,     0,     2,     3,     3,     3,     0,     5,     1,     1,
-       0,     1,     3,     3,     5,     1,     2,     0,     2,     2,
-       1,     1,     1,     1,     0,     1,     2,     1,     1,     3,
-       2,     1,     3,     2,     0,     1,     1,     1,     0,     4,
-       4,     4,     0,     6,     1,     0,     6,     2,     2,     2,
-       2,     1,     1,     1,     1,     0,     1,     1,     1,     1,
-       1,     3,     4,     5,     6,     6,     7,     3,     0,     9,
-       1,     1,     1,     3,     1,     1,     1,     1,     1,     1,
+       4,     4,     1,     1,     0,     5,     1,     0,     5,     0,
+       2,     3,     0,     2,     3,     3,     3,     0,     5,     1,
+       1,     0,     1,     3,     3,     5,     1,     2,     0,     2,
+       2,     1,     1,     1,     1,     0,     1,     2,     1,     1,
+       3,     2,     1,     3,     2,     0,     1,     1,     1,     0,
+       4,     4,     4,     0,     6,     1,     0,     6,     2,     2,
+       2,     2,     1,     1,     1,     1,     0,     1,     1,     1,
+       1,     1,     3,     4,     5,     6,     6,     7,     3,     0,
+       9,     1,     1,     1,     3,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       0,     5,     3,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     4,     1,     1,     1,
-       1,     3,     3,     3,     3,     0,     5,     0,     3,     1,
-       5,     3,     3,     2,     0,     2,     1,     1,     4,     4,
-       2,     3,     5,     1,     3,     0,     1,     1,     6,     5,
-       4,     4,     6,     5,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     0,     1,     3,     1,     1,     4,
-       3,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     0,     2,     0,     2,     1,     3,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1
+       1,     0,     5,     3,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     4,     1,     1,
+       1,     1,     3,     3,     3,     3,     0,     5,     0,     3,
+       1,     5,     3,     3,     2,     0,     2,     1,     1,     4,
+       4,     2,     3,     5,     1,     3,     0,     1,     1,     6,
+       5,     4,     4,     6,     5,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     0,     1,     3,     1,     1,
+       4,     3,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     0,     2,     0,     2,     1,     3,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -2039,59 +2041,59 @@
 {
        0,    12,     0,     0,     0,     0,    51,    19,     0,    44,
        0,     0,     2,     3,    10,    11,     0,     6,     8,     5,
-       7,    18,     0,     0,   322,     0,     0,     0,     0,   164,
+       7,    18,     0,     0,   323,     0,     0,     0,     0,   165,
        9,     1,     4,    13,     0,    16,    50,     0,     0,    48,
-     314,   312,   313,   315,    52,   311,   196,   197,   198,   199,
-       0,    14,    21,   168,     0,    32,    31,    35,    34,   164,
-      27,     0,    33,    36,   165,   167,     0,    49,   329,   330,
-     331,   332,   333,   336,   334,   335,   337,   302,   320,   328,
-     323,   326,   303,   321,    91,     0,     0,     0,    30,    28,
-      45,     0,     0,    38,     0,     0,   166,    15,     0,    97,
+     315,   313,   314,   316,    52,   312,   197,   198,   199,   200,
+       0,    14,    21,   169,     0,    32,    31,    35,    34,   165,
+      27,     0,    33,    36,   166,   168,     0,    49,   330,   331,
+     332,   333,   334,   337,   335,   336,   338,   303,   321,   329,
+     324,   327,   304,   322,    91,     0,     0,     0,    30,    28,
+      45,     0,     0,    38,     0,     0,   167,    15,     0,    97,
       95,    96,    98,    99,    66,   100,     0,   101,     0,    64,
        0,    71,    68,   102,   103,   104,   105,   106,   107,   108,
        0,    92,    93,     0,     0,     0,    40,     0,    91,    29,
-     304,   327,     0,     0,    73,     0,     0,     0,     0,    53,
-      94,    20,   316,   317,   318,     0,   319,     0,     0,     0,
-     324,    37,   320,    43,   305,   307,   308,    25,    26,     0,
-       0,     0,    76,    77,    79,    78,    80,    81,   322,     0,
+     305,   328,     0,     0,    73,     0,     0,     0,     0,    53,
+      94,    20,   317,   318,   319,     0,   320,     0,     0,     0,
+     325,    37,   321,    43,   306,   308,   309,    25,    26,     0,
+       0,     0,    76,    77,    79,    78,    80,    81,   323,     0,
       75,     0,     0,     0,     0,    55,     0,     0,    41,    39,
-       0,     0,   322,     0,    67,    63,    62,     0,     0,    61,
-      65,    70,    72,    69,    56,   157,    22,    24,   310,   325,
-       0,   306,    82,    74,    58,     0,     0,   161,   160,   162,
-     163,     0,     0,   157,     0,   155,   309,     0,     0,   159,
-      57,    54,   156,     0,   195,   158,    59,     0,     0,   170,
-       0,     0,     0,     0,   178,     0,   182,   185,   148,     0,
-     149,   240,     0,     0,     0,   257,   258,   259,   304,   208,
-     184,   192,   193,   194,   135,     0,     0,   176,   210,   211,
-     212,   265,   191,   177,   287,   286,   260,   124,    17,   188,
-       0,     0,     0,     0,   190,     0,     0,     0,     0,     0,
-     187,   260,     0,    85,   133,   136,   189,   285,   146,   169,
-       0,   243,   244,   245,   246,   249,   250,   251,   252,   248,
-     247,   253,   254,   255,     0,     0,   322,     0,    60,     0,
-     295,   296,   297,   298,   299,   300,   301,   294,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   285,   116,
-     138,   141,     0,   283,     0,   124,   150,   267,   263,   262,
-     264,   261,   213,   336,   337,   304,     0,   214,   215,   216,
-       0,   207,   320,   201,     0,   242,   126,   127,   128,   129,
-     132,   125,     0,   291,     0,     0,   290,     0,   174,   179,
-     171,   180,   181,     0,     0,     0,    89,     0,     0,     0,
-       0,     0,   280,   336,     0,   151,   274,   336,     0,   269,
-     274,   256,   200,     0,   202,   222,   231,   232,   236,   225,
-     226,   227,   228,   229,   230,   223,   233,   234,   235,   224,
-     322,   239,   217,   218,   219,   220,   221,   237,   238,     0,
-       0,     0,   293,     0,   289,     0,   175,   173,     0,     0,
-       0,   241,     0,     0,     0,     0,   139,     0,   134,     0,
-     142,     0,   137,     0,   284,     0,   281,     0,     0,     0,
-     147,   273,     0,     0,   266,     0,   322,     0,   203,     0,
-       0,     0,   292,   288,   172,   183,   186,   118,     0,     0,
-       0,     0,    87,   117,   274,   140,   274,   143,     0,     0,
-     152,   336,   153,   276,   277,   275,   272,   336,   268,   271,
-       0,   204,   205,   130,   131,    90,     0,     0,     0,     0,
-     119,     0,   144,   145,   282,   267,     0,     0,     0,   206,
-     110,     0,   111,   113,     0,   112,     0,     0,    88,     0,
-     154,     0,     0,   270,     0,     0,     0,   122,     0,    86,
-       0,   209,   279,   278,   109,   115,   114,     0,   124,   120,
-       0,   121,   123
+       0,     0,   323,     0,    67,    63,    62,     0,     0,    61,
+      65,    70,    72,    69,    56,   158,    22,    24,   311,   326,
+       0,   307,    82,    74,    58,     0,     0,   162,   161,   163,
+     164,     0,     0,   158,     0,   156,   310,     0,     0,   160,
+      57,    54,   157,     0,   196,   159,    59,     0,     0,   171,
+       0,     0,     0,     0,   179,     0,   183,   186,   149,     0,
+     150,   241,     0,     0,     0,   258,   259,   260,   305,   209,
+     185,   193,   194,   195,   136,     0,     0,   177,   211,   212,
+     213,   266,   192,   178,   288,   287,   261,   124,    17,   189,
+       0,     0,     0,     0,   191,     0,     0,     0,     0,     0,
+     188,   261,     0,    85,   134,   137,   190,   286,   147,   170,
+       0,   244,   245,   246,   247,   250,   251,   252,   253,   249,
+     248,   254,   255,   256,     0,     0,   323,     0,    60,     0,
+     296,   297,   298,   299,   300,   301,   302,   295,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   286,   116,
+     139,   142,     0,   284,     0,   124,   151,   268,   264,   263,
+     265,   262,   214,   337,   338,   305,     0,   215,   216,   217,
+       0,   208,   321,   202,     0,   243,   126,   127,   128,   129,
+     133,   132,   125,     0,   292,     0,     0,   291,     0,   175,
+     180,   172,   181,   182,     0,     0,     0,    89,     0,     0,
+       0,     0,     0,   281,   337,     0,   152,   275,   337,     0,
+     270,   275,   257,   201,     0,   203,   223,   232,   233,   237,
+     226,   227,   228,   229,   230,   231,   224,   234,   235,   236,
+     225,   323,   240,   218,   219,   220,   221,   222,   238,   239,
+       0,     0,     0,   294,     0,   290,     0,   176,   174,     0,
+       0,     0,   242,     0,     0,     0,     0,   140,     0,   135,
+       0,   143,     0,   138,     0,   285,     0,   282,     0,     0,
+       0,   148,   274,     0,     0,   267,     0,   323,     0,   204,
+       0,     0,     0,   293,   289,   173,   184,   187,   118,     0,
+       0,     0,     0,    87,   117,   275,   141,   275,   144,     0,
+       0,   153,   337,   154,   277,   278,   276,   273,   337,   269,
+     272,     0,   205,   206,   130,   131,    90,     0,     0,     0,
+       0,   119,     0,   145,   146,   283,   268,     0,     0,     0,
+     207,   110,     0,   111,   113,     0,   112,     0,     0,    88,
+       0,   155,     0,     0,   271,     0,     0,     0,   122,     0,
+      86,     0,   210,   280,   279,   109,   115,   114,     0,   124,
+     120,     0,   121,   123
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
@@ -2101,307 +2103,301 @@
       58,    86,    87,   159,    59,    60,    94,    95,   128,   151,
       18,    29,    61,    19,    25,    20,    26,    84,   175,   195,
      211,   217,   226,   113,   114,   115,   116,   117,   118,   119,
-     169,   170,   212,   251,   329,   500,   434,   120,   121,   122,
-     472,   376,   435,   517,   530,   537,   308,   361,   252,   330,
-     253,   331,   377,   378,   439,   443,   254,   336,   255,   384,
-     213,   214,   215,    63,    64,    65,   225,   369,   370,   427,
-     256,   275,   278,   279,    50,   393,   257,   287,   350,   419,
-     258,   282,   259,   307,   260,   261,   262,   290,   388,   389,
-     451,   485,   333,   334,   263,   264,   265,   318,   319,    78,
+     169,   170,   212,   251,   329,   501,   435,   120,   121,   122,
+     473,   377,   436,   518,   531,   538,   308,   362,   252,   330,
+     253,   331,   378,   379,   440,   444,   254,   336,   255,   385,
+     213,   214,   215,    63,    64,    65,   225,   370,   371,   428,
+     256,   275,   278,   279,    50,   394,   257,   287,   350,   420,
+     258,   282,   259,   307,   260,   261,   262,   290,   389,   390,
+     452,   486,   333,   334,   263,   264,   265,   318,   319,    78,
      153,   154,   155,    44,    45,   144,   156,   146,    37,    38,
      180,   181,    80,    81,    82,    83
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -418
+#define YYPACT_NINF -397
 static const yytype_int16 yypact[] =
 {
-     252,  -418,   -82,   -71,   -58,   -55,  -418,  -418,    -6,  -418,
-     112,   141,   252,  -418,  -418,  -418,   145,  -418,  -418,  -418,
-    -418,  -418,    87,   169,    68,   194,    48,   184,   200,    11,
-    -418,  -418,  -418,  -418,    94,  -418,  -418,    83,   479,  -418,
-    -418,  -418,  -418,  -418,  -418,  -418,  -418,  -418,  -418,  -418,
-     101,  -418,    98,  -418,   211,  -418,  -418,  -418,  -418,   144,
-    -418,   122,  -418,    20,   132,  -418,   235,  -418,  -418,  -418,
-    -418,  -418,  -418,  -418,  -418,  -418,  -418,  -418,  -418,  -418,
-     109,  -418,  -418,  -418,   451,   127,   137,   143,  -418,  -418,
-    -418,   479,   149,  -418,   249,   148,  -418,  -418,   479,  -418,
-    -418,  -418,  -418,  -418,   140,  -418,   146,  -418,   150,   152,
-     154,   155,   158,  -418,  -418,  -418,  -418,  -418,  -418,  -418,
-     253,   451,  -418,   173,   464,   464,  -418,   195,   451,  -418,
-     412,  -418,    54,   -41,     5,   156,   180,    54,    54,  -418,
-    -418,  -418,  -418,  -418,  -418,   171,  -418,   174,   188,   203,
-    -418,  -418,   183,  -418,   236,  -418,  -418,  -418,  -418,   189,
-     190,   191,  -418,  -418,  -418,  -418,  -418,  -418,  -418,   -46,
-    -418,   192,   202,   204,   205,   305,    54,    54,  -418,  -418,
-     197,   479,  -418,   412,  -418,  -418,  -418,   198,     5,  -418,
-    -418,  -418,  -418,  -418,  -418,    43,  -418,  -418,  -418,   109,
-     208,  -418,  -418,  -418,  -418,   217,   310,  -418,  -418,  -418,
-    -418,   316,   264,     0,    74,  -418,  -418,   184,   262,  -418,
-    -418,  -418,  -418,   333,   261,  -418,  -418,   230,   173,  -418,
-     -69,   321,   336,   479,  -418,    55,   -50,  -418,  -418,   354,
-    -418,  -418,   338,   340,   341,  -418,  -418,  -418,   412,  -418,
-    -418,  -418,  -418,  -418,  -418,   215,   342,  -418,  -418,  -418,
-    -418,  -418,  -418,  -418,  -418,  -418,   467,  -418,  -418,  -418,
-     479,    75,   479,    75,  -418,   184,   276,   280,   184,   184,
-    -418,   232,   228,  -418,  -418,  -418,  -418,   196,  -418,  -418,
-     231,  -418,  -418,  -418,  -418,  -418,  -418,  -418,  -418,  -418,
-    -418,  -418,  -418,  -418,   493,   114,  -418,   479,    -5,   346,
-    -418,  -418,  -418,  -418,  -418,  -418,  -418,  -418,   -69,   479,
-     348,   -69,   479,   250,   107,   107,   251,   255,   196,  -418,
-    -418,  -418,   339,  -418,   -45,  -418,   507,   521,  -418,  -418,
-    -418,  -418,  -418,   239,   246,   412,   266,  -418,  -418,  -418,
-     479,  -418,   -80,   431,   237,  -418,  -418,  -418,  -418,   247,
-    -418,  -418,   -69,  -418,   366,   -69,  -418,   370,   282,   309,
-    -418,  -418,  -418,   263,   265,   -35,     8,    15,    12,   107,
-     284,   270,    -5,   362,   -27,  -418,  -418,   363,    -2,  -418,
-     376,  -418,  -418,   275,  -418,  -418,  -418,  -418,  -418,  -418,
-    -418,  -418,  -418,  -418,  -418,  -418,  -418,  -418,  -418,  -418,
-    -418,  -418,  -418,  -418,  -418,  -418,  -418,  -418,  -418,   479,
-     283,    72,  -418,   -69,  -418,   -69,  -418,  -418,   250,   173,
-     173,  -418,   479,   479,    89,   398,  -418,   479,  -418,   400,
-    -418,   479,  -418,   402,  -418,   386,  -418,   354,   479,   535,
-    -418,   131,   479,   549,  -418,   479,  -418,   288,  -418,   479,
-     287,   290,  -418,  -418,  -418,  -418,  -418,  -418,   404,   479,
-     479,   563,   132,  -418,  -418,  -418,  -418,  -418,   107,   293,
-    -418,   399,  -418,  -418,   294,  -418,  -418,   401,  -418,  -418,
-     299,  -418,  -418,  -418,  -418,  -418,    17,   420,    18,    19,
-    -418,   425,   131,   131,  -418,   521,   479,    73,   479,  -418,
-    -418,   479,  -418,  -418,   479,  -418,   479,     4,  -418,    -1,
-    -418,   311,   313,  -418,   440,   442,   443,  -418,   107,  -418,
-     448,  -418,  -418,  -418,  -418,  -418,  -418,   184,  -418,  -418,
-     250,    -5,  -418
+     219,  -397,   -79,   -65,   -54,   -16,  -397,  -397,   -25,  -397,
+      62,   148,   219,  -397,  -397,  -397,    90,  -397,  -397,  -397,
+    -397,  -397,    91,   171,    59,   182,   159,   149,   184,    70,
+    -397,  -397,  -397,  -397,    79,  -397,  -397,    73,   431,  -397,
+    -397,  -397,  -397,  -397,  -397,  -397,  -397,  -397,  -397,  -397,
+      97,  -397,    86,  -397,   204,  -397,  -397,  -397,  -397,   160,
+    -397,   125,  -397,   152,   108,  -397,   229,  -397,  -397,  -397,
+    -397,  -397,  -397,  -397,  -397,  -397,  -397,  -397,  -397,  -397,
+      98,  -397,  -397,  -397,   421,   112,   124,   127,  -397,  -397,
+    -397,   431,   132,  -397,   244,   134,  -397,  -397,   431,  -397,
+    -397,  -397,  -397,  -397,   123,  -397,   128,  -397,   129,   130,
+     137,   144,   147,  -397,  -397,  -397,  -397,  -397,  -397,  -397,
+     254,   421,  -397,   188,   417,   417,  -397,   202,   421,  -397,
+     336,  -397,    33,   -29,   279,   164,   165,    33,    33,  -397,
+    -397,  -397,  -397,  -397,  -397,   168,  -397,   169,   172,   181,
+    -397,  -397,   183,  -397,   234,  -397,  -397,  -397,  -397,   186,
+     190,   191,  -397,  -397,  -397,  -397,  -397,  -397,  -397,   -64,
+    -397,   192,   194,   196,   198,   304,    33,    33,  -397,  -397,
+     185,   431,  -397,   336,  -397,  -397,  -397,   201,   279,  -397,
+    -397,  -397,  -397,  -397,  -397,    49,  -397,  -397,  -397,    98,
+     203,  -397,  -397,  -397,  -397,   214,   325,  -397,  -397,  -397,
+    -397,   337,   269,    60,     8,  -397,  -397,   149,   273,  -397,
+    -397,  -397,  -397,   345,   230,  -397,  -397,   241,   188,  -397,
+     -47,   106,   253,   431,  -397,    48,   -36,  -397,  -397,   501,
+    -397,  -397,   358,   360,   366,  -397,  -397,  -397,   336,  -397,
+    -397,  -397,  -397,  -397,  -397,   246,   385,  -397,  -397,  -397,
+    -397,  -397,  -397,  -397,  -397,  -397,   338,  -397,  -397,  -397,
+     431,   228,   431,   228,  -397,   149,   301,   318,   149,   149,
+    -397,   270,   267,  -397,  -397,  -397,  -397,   515,  -397,  -397,
+     268,  -397,  -397,  -397,  -397,  -397,  -397,  -397,  -397,  -397,
+    -397,  -397,  -397,  -397,   379,    22,  -397,   431,     5,   388,
+    -397,  -397,  -397,  -397,  -397,  -397,  -397,  -397,   -47,   431,
+     389,   -47,   431,   290,   247,   247,   293,   296,   515,  -397,
+    -397,  -397,   386,  -397,   -58,  -397,   445,   459,  -397,  -397,
+    -397,  -397,  -397,   280,   282,   336,   300,  -397,  -397,  -397,
+     431,  -397,    52,   369,   289,  -397,  -397,  -397,  -397,   291,
+    -397,  -397,  -397,   -47,  -397,   412,   -47,  -397,   414,   323,
+     362,  -397,  -397,  -397,   312,   313,   -41,     0,     2,    11,
+     247,   524,   324,     5,   427,   -30,  -397,  -397,   434,   -24,
+    -397,   435,  -397,  -397,   333,  -397,  -397,  -397,  -397,  -397,
+    -397,  -397,  -397,  -397,  -397,  -397,  -397,  -397,  -397,  -397,
+    -397,  -397,  -397,  -397,  -397,  -397,  -397,  -397,  -397,  -397,
+     431,   335,   102,  -397,   -47,  -397,   -47,  -397,  -397,   290,
+     188,   188,  -397,   431,   431,   -37,   460,  -397,   431,  -397,
+     461,  -397,   431,  -397,   462,  -397,   442,  -397,   501,   431,
+     473,  -397,   167,   431,   487,  -397,   431,  -397,   342,  -397,
+     431,   343,   346,  -397,  -397,  -397,  -397,  -397,  -397,   468,
+     431,   431,   533,   108,  -397,  -397,  -397,  -397,  -397,   247,
+     349,  -397,   455,  -397,  -397,   352,  -397,  -397,   469,  -397,
+    -397,   355,  -397,  -397,  -397,  -397,  -397,    26,   477,    28,
+      32,  -397,   478,   167,   167,  -397,   459,   431,   115,   431,
+    -397,  -397,   431,  -397,  -397,   431,  -397,   431,    94,  -397,
+     -22,  -397,   356,   367,  -397,   494,   514,   525,  -397,   247,
+    -397,   536,  -397,  -397,  -397,  -397,  -397,  -397,   149,  -397,
+    -397,   290,     5,  -397
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -418,  -418,  -418,   444,    14,  -167,  -418,  -418,  -418,  -418,
-     233,  -418,  -418,  -100,  -418,   395,  -418,  -418,  -418,   110,
-    -418,  -418,  -418,    23,  -418,  -418,  -418,  -418,  -418,  -418,
-    -418,  -418,  -418,  -418,  -418,  -418,  -418,  -418,  -418,  -418,
-    -418,   277,  -418,  -418,  -418,  -418,  -418,   344,  -418,   343,
-    -418,  -418,  -418,  -418,  -418,  -418,  -330,  -418,  -418,  -418,
-    -418,  -418,  -418,  -418,  -418,  -418,  -418,  -418,  -418,  -418,
-    -418,  -418,   269,   271,  -418,   -63,  -418,  -418,  -417,  -418,
-    -418,  -418,  -418,  -418,  -214,  -418,  -418,  -418,  -418,  -418,
-    -418,  -418,  -418,  -418,  -418,    28,  -205,  -418,   -28,  -327,
-    -319,  -418,    99,   165,  -418,  -418,  -418,   210,   221,  -128,
-     248,  -418,   301,  -418,   193,  -220,    77,   -38,  -162,  -418,
-    -418,  -418,   314,   424,  -418,  -119
+    -397,  -397,  -397,   516,    -1,  -168,  -397,  -397,  -397,  -397,
+     319,  -397,  -397,   -86,  -397,   483,  -397,  -397,  -397,   209,
+    -397,  -397,  -397,    12,  -397,  -397,  -397,  -397,  -397,  -397,
+    -397,  -397,  -397,  -397,  -397,  -397,  -397,  -397,  -397,  -397,
+    -397,   368,  -397,  -397,  -397,  -397,  -397,   420,  -397,   436,
+    -397,  -397,  -397,  -397,  -397,  -397,  -330,  -397,  -397,  -397,
+    -397,  -397,  -397,  -397,  -397,  -397,  -397,  -397,  -397,  -397,
+    -397,  -397,   357,   348,  -397,   -63,  -397,  -397,  -396,  -397,
+    -397,  -397,  -397,  -397,  -214,  -397,  -397,  -397,  -397,  -397,
+    -397,  -397,  -397,  -397,  -397,   120,  -226,  -397,    65,  -292,
+    -368,  -397,   195,   256,  -397,  -397,  -397,   309,   317,  -128,
+     350,  -397,   402,  -397,   292,  -219,    30,   -38,  -164,  -397,
+    -397,  -397,   418,   506,  -397,  -116
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
    positive, shift that token.  If negative, reduce the rule which
    number is the opposite.  If zero, do what YYDEFACT says.
    If YYTABLE_NINF, syntax error.  */
-#define YYTABLE_NINF -261
+#define YYTABLE_NINF -262
 static const yytype_int16 yytable[] =
 {
-      79,    96,   152,   227,   141,   382,   187,     3,     4,   385,
-     269,   464,   356,   357,   358,   359,   440,     2,   432,   436,
-     200,   510,   513,   515,   -42,   188,   380,   441,   209,   437,
-      21,   205,   527,    91,   280,     5,   380,   173,   174,   142,
-     304,    52,    22,    57,   449,  -260,   209,   143,   204,    92,
-       3,     4,    62,   126,    23,   152,   162,   163,   164,   165,
-      79,   323,   -23,   -21,   326,   327,   528,   160,    24,   453,
-     453,   161,   -84,    57,   205,   223,   196,   197,  -164,   529,
-     189,   381,    62,  -164,   310,  -164,  -164,  -164,   511,   514,
-     516,   431,   433,   442,   438,   360,   266,    93,   363,   450,
-     351,   366,  -164,  -164,  -164,   467,    28,     8,  -164,   268,
-     206,   281,    53,   166,   -46,   -83,    30,   167,   207,   208,
-     152,    54,   482,   542,   454,   531,   488,   342,   168,    55,
-      56,   311,   312,   313,   314,   315,   316,  -164,  -164,  -164,
-    -164,    31,   422,    79,   354,   424,   317,   483,  -164,    33,
-       2,   484,  -164,   206,  -164,   502,    40,   503,    34,   335,
-      41,   207,   208,    42,    43,   469,   157,   276,     5,   158,
-     277,   470,   471,    35,    52,    53,   340,   352,  -164,  -164,
-    -164,  -164,  -164,  -164,   460,   521,  -164,   461,   522,  -164,
-    -164,  -164,    36,   271,   273,   274,   371,   372,    39,  -164,
-     335,   145,   147,   462,    51,   463,    66,    67,   541,    85,
-     -23,    68,    69,    70,    71,    88,    72,   152,    68,    69,
-      70,    71,   245,    72,    77,    90,   343,    74,    75,   344,
-     345,    77,   309,    53,   320,    46,    47,    48,    49,    97,
-       8,   346,   347,   348,   349,    53,    98,   -47,   457,   123,
-     124,   444,   335,   129,    54,   125,     1,   139,     2,     3,
-       4,   127,    55,    56,   130,   132,   148,   353,   171,   355,
-     230,   133,   231,   232,   233,   134,     5,   135,     6,   136,
-     137,   364,     7,   138,   367,    73,    74,    75,    76,   234,
-     235,   236,   172,   176,   490,   237,   177,   178,   386,   390,
-      68,    69,    70,    71,   179,    72,   182,   183,   332,   194,
-     465,   466,   394,    77,   219,   184,   185,   186,   190,   281,
-     220,   198,   202,   540,   238,   239,   240,   241,   191,   218,
-     192,   193,   216,   228,   270,   242,   221,   229,   267,   243,
-     288,   244,   283,   499,   284,   285,   289,   324,     8,   272,
-     504,   325,   304,   328,     9,   362,   337,   365,   368,   373,
-     379,   420,    10,   374,  -258,    68,    69,    70,    71,   245,
-      72,  -259,   421,   246,   392,   423,   247,   248,    77,   425,
-     428,   458,   426,   448,   452,   429,   249,   430,    68,    69,
-      70,    71,   447,    72,   386,   468,   445,   455,   456,   474,
-     538,    77,   473,   476,   475,   459,   477,   478,   495,   501,
-     480,   386,   491,   493,   486,   386,   494,   489,   505,   507,
-     506,   492,   508,   509,   512,    68,    69,    70,    71,   518,
-      72,   496,   497,    73,    74,    75,    76,   532,    77,   533,
-      68,    69,    70,    71,   534,    72,   535,   536,    73,    74,
-      75,    76,   539,    77,    89,   391,    32,   250,    68,    69,
-      70,    71,   245,    72,   140,   203,   246,   390,   520,   247,
-     523,    77,   149,   524,   395,   479,   525,   519,   526,   446,
-     396,   397,   222,   321,   201,   224,   398,   399,   400,   401,
-     402,   403,   404,   375,   322,   199,   286,   341,   405,   406,
-     407,   408,   291,   292,   293,   294,   295,   296,   297,   298,
-       0,   299,   300,   301,   302,   303,    68,    69,    70,    71,
-     142,    72,   131,     0,    73,    74,    75,    76,   143,    77,
-       0,     0,     0,     0,     0,   150,    99,   100,   101,   102,
-     103,   104,   105,   106,   107,   108,   109,     0,   110,   111,
-     112,     0,   409,     0,   410,     0,     0,     0,     0,     0,
-     411,   412,   413,   414,   415,   416,   417,   418,    68,    69,
-      70,    71,   142,    72,     0,     0,    73,    74,    75,    76,
-     143,    77,     0,    68,    69,    70,    71,   304,    72,   305,
-     306,    73,    74,    75,    76,     0,    77,    68,    69,    70,
-      71,    40,    72,     0,     0,   338,     0,     0,   339,    43,
-      77,    68,    69,    70,    71,     0,    72,     0,     0,   383,
-      74,    75,    76,     0,    77,    68,    69,    70,    71,     0,
-      72,     0,     0,   387,    74,    75,    76,     0,    77,    68,
-      69,    70,    71,     0,    72,     0,     0,   481,    74,    75,
-      76,     0,    77,    68,    69,    70,    71,     0,    72,     0,
-       0,   487,    74,    75,    76,     0,    77,    68,    69,    70,
-      71,     0,    72,     0,     0,   498,     0,     0,     0,     0,
-      77
+      79,    96,   152,   227,   187,   383,   437,   141,   188,   223,
+     433,   269,  -165,   280,   381,   441,   438,  -165,   200,  -165,
+    -165,  -165,   356,   357,   358,   359,   442,   209,    57,   360,
+     511,   381,   514,   465,    21,   342,   516,  -165,  -165,  -165,
+     470,    62,   450,  -165,   386,   209,   471,   472,   454,    22,
+     454,   173,   174,   126,   204,   152,     3,     4,    57,    23,
+      79,   323,   142,   189,   326,   327,    30,     3,     4,   382,
+     143,    62,  -165,  -165,  -165,  -165,     2,   -23,   -21,   351,
+     160,   205,   439,  -165,   161,   434,   432,  -165,    28,  -165,
+     196,   197,   205,   443,    33,     5,   266,   451,   512,   364,
+     515,    52,   367,   455,   517,   532,   361,   503,    24,   504,
+      53,   281,   268,  -165,  -165,  -165,  -165,  -165,  -165,   270,
+     152,  -165,   -83,   528,  -165,  -165,  -165,    68,    69,    70,
+      71,   245,    72,   -84,  -165,   343,    74,    75,   344,   345,
+      77,   468,   354,    79,   423,   543,   157,   425,    31,   158,
+     346,   347,   348,   349,   145,   147,   -42,   529,   483,   335,
+     206,   276,   489,    34,   277,    91,     2,     8,   207,   208,
+     530,   206,    53,   304,   -46,    35,   340,   352,  -261,   207,
+     208,    54,    92,   484,    36,     5,    39,   485,    51,    55,
+      56,    52,    66,   271,   273,   274,   372,   373,    67,   -23,
+     335,    46,    47,    48,    49,   463,    85,   464,    88,   542,
+      53,    68,    69,    70,    71,   461,    72,   152,   462,    73,
+      74,    75,    76,     1,    77,     2,     3,     4,   522,    90,
+      93,   523,   309,    97,   320,   123,    98,   310,   124,   230,
+     125,   231,   232,   233,     5,   127,     6,   458,   129,   132,
+       7,   130,   445,   335,   133,   134,   135,     8,   139,   234,
+     235,   236,    53,   136,   -47,   237,   272,   353,    40,   355,
+     137,    54,    41,   138,   148,    42,    43,   171,   172,    55,
+      56,   365,   178,   179,   368,   311,   312,   313,   314,   315,
+     316,   176,   177,   491,   238,   239,   240,   241,   387,   391,
+     317,    73,    74,    75,    76,   242,   183,   182,   194,   243,
+     198,   244,   395,   184,   466,   467,     8,   185,   186,   190,
+     281,   191,     9,   192,   541,   193,   202,   218,   216,   219,
+      10,   162,   163,   164,   165,    68,    69,    70,    71,   245,
+      72,   220,   221,   246,   500,   228,   247,   248,    77,   229,
+     267,   505,    68,    69,    70,    71,   249,    72,    68,    69,
+      70,    71,   283,    72,   284,    77,    73,    74,    75,    76,
+     285,    77,   288,   324,   291,   292,   293,   294,   295,   296,
+     297,   298,   459,   299,   300,   301,   302,   303,   166,   289,
+     325,   304,   167,   328,   337,   387,   469,   363,   366,   369,
+     475,   539,   374,   168,   477,   375,  -259,   380,  -260,   393,
+     502,   481,   387,   396,   421,   487,   387,   422,   490,   397,
+     398,   424,   493,   426,   427,   399,   400,   401,   402,   403,
+     404,   405,   497,   498,   429,   430,   431,   406,   407,   408,
+     409,    68,    69,    70,    71,   142,    72,   448,   449,    73,
+      74,    75,    76,   143,    77,   453,   456,   457,   460,   304,
+     150,   305,   306,   479,   474,   476,   478,   492,   391,   521,
+     494,   524,   496,   495,   525,   506,   507,   526,   508,   527,
+     510,   513,   519,   533,    68,    69,    70,    71,    40,    72,
+     509,   410,   338,   411,   534,   339,    43,    77,   535,   412,
+     413,   414,   415,   416,   417,   418,   419,    99,   100,   101,
+     102,   103,   104,   105,   106,   107,   108,   109,   536,   110,
+     111,   112,    68,    69,    70,    71,   142,    72,    32,   537,
+      73,    74,    75,    76,   143,    77,    68,    69,    70,    71,
+     540,    72,    89,   250,    73,    74,    75,    76,   149,    77,
+      68,    69,    70,    71,   392,    72,   203,   140,   384,    74,
+      75,    76,   224,    77,    68,    69,    70,    71,   480,    72,
+     222,   520,   388,    74,    75,    76,   447,    77,    68,    69,
+      70,    71,   321,    72,   376,   201,   482,    74,    75,    76,
+     322,    77,    68,    69,    70,    71,   341,    72,   286,   199,
+     488,    74,    75,    76,   131,    77,    68,    69,    70,    71,
+     245,    72,     0,     0,   246,     0,     0,   247,     0,    77,
+      68,    69,    70,    71,     0,    72,     0,     0,   332,    68,
+      69,    70,    71,    77,    72,     0,     0,   446,    68,    69,
+      70,    71,    77,    72,     0,     0,   499,     0,     0,     0,
+       0,    77
 };
 
 static const yytype_int16 yycheck[] =
 {
-      38,    64,   130,   217,   123,   335,   168,     7,     8,   336,
-     230,   428,    17,    18,    19,    20,     4,     6,    10,     4,
-     182,     4,     4,     4,     4,    71,    71,    15,   195,    14,
-     112,    31,    28,    13,   239,    24,    71,   137,   138,   108,
-     120,    30,   113,    29,    71,   125,   213,   116,     5,    29,
-       7,     8,    29,    91,   112,   183,    51,    52,    53,    54,
-      98,   275,   112,   113,   278,   279,    62,   108,   123,    71,
-      71,   112,    72,    59,    31,     1,   176,   177,     4,    75,
-     126,   126,    59,     9,     9,    11,    12,    13,    71,    71,
-      71,   126,    84,    81,    79,   100,   224,    77,   318,   126,
-     305,   321,    28,    29,    30,   432,   112,    96,    34,   228,
-     110,   239,   101,   108,   103,    72,     4,   112,   118,   119,
-     248,   110,   449,   540,   126,   126,   453,    13,   123,   118,
-     119,    56,    57,    58,    59,    60,    61,    63,    64,    65,
-      66,     0,   362,   181,   306,   365,    71,    16,    74,     4,
-       6,    20,    78,   110,    80,   474,   108,   476,    71,   287,
-     112,   118,   119,   115,   116,    76,   112,   112,    24,   115,
-     115,    82,    83,     4,    30,   101,   304,   305,   104,   105,
-     106,   107,   108,   109,   112,   112,   112,   115,   115,   115,
-     116,   117,   124,   231,   232,   233,   324,   325,     4,   125,
-     328,   124,   125,   423,     4,   425,   112,   124,   538,   108,
-     112,   104,   105,   106,   107,     4,   109,   345,   104,   105,
-     106,   107,   108,   109,   117,   103,   112,   113,   114,   115,
-     116,   117,   270,   101,   272,    51,    52,    53,    54,     4,
-      96,   127,   128,   129,   130,   101,   137,   103,   410,   122,
-     113,   379,   380,     4,   110,   112,     4,     4,     6,     7,
-       8,   112,   118,   119,   116,   125,    71,   305,   112,   307,
-       9,   125,    11,    12,    13,   125,    24,   125,    26,   125,
-     125,   319,    30,   125,   322,   112,   113,   114,   115,    28,
-      29,    30,   112,   122,   456,    34,   122,   109,   336,   337,
-     104,   105,   106,   107,   101,   109,   123,    71,   112,     4,
-     429,   430,   350,   117,     4,   126,   126,   126,   126,   447,
-       4,   124,   124,   537,    63,    64,    65,    66,   126,   112,
-     126,   126,   124,    71,    13,    74,    72,     4,   108,    78,
-     125,    80,     4,   471,     4,     4,     4,    71,    96,    13,
-     478,    71,   120,   125,   102,     9,   125,     9,   108,   108,
-      21,   124,   110,   108,   125,   104,   105,   106,   107,   108,
-     109,   125,   125,   112,   108,     9,   115,   116,   117,     9,
-      71,   419,   100,    21,    21,   122,   125,   122,   104,   105,
-     106,   107,   122,   109,   432,   433,   112,    21,   123,   437,
-     528,   117,     4,   441,     4,   122,     4,    21,     4,   472,
-     448,   449,   124,   126,   452,   453,   126,   455,   125,   125,
-      21,   459,    21,   124,     4,   104,   105,   106,   107,     4,
-     109,   469,   470,   112,   113,   114,   115,   126,   117,   126,
-     104,   105,   106,   107,     4,   109,     4,     4,   112,   113,
-     114,   115,     4,   117,    59,   345,    12,   224,   104,   105,
-     106,   107,   108,   109,   121,   188,   112,   505,   506,   115,
-     508,   117,   128,   511,    43,   447,   514,   505,   516,   380,
-      49,    50,   213,   273,   183,   214,    55,    56,    57,    58,
-      59,    60,    61,   328,   273,   181,   248,   304,    67,    68,
-      69,    70,    35,    36,    37,    38,    39,    40,    41,    42,
-      -1,    44,    45,    46,    47,    48,   104,   105,   106,   107,
-     108,   109,    98,    -1,   112,   113,   114,   115,   116,   117,
-      -1,    -1,    -1,    -1,    -1,   123,    85,    86,    87,    88,
-      89,    90,    91,    92,    93,    94,    95,    -1,    97,    98,
-      99,    -1,   121,    -1,   123,    -1,    -1,    -1,    -1,    -1,
-     129,   130,   131,   132,   133,   134,   135,   136,   104,   105,
-     106,   107,   108,   109,    -1,    -1,   112,   113,   114,   115,
-     116,   117,    -1,   104,   105,   106,   107,   120,   109,   122,
-     123,   112,   113,   114,   115,    -1,   117,   104,   105,   106,
-     107,   108,   109,    -1,    -1,   112,    -1,    -1,   115,   116,
-     117,   104,   105,   106,   107,    -1,   109,    -1,    -1,   112,
-     113,   114,   115,    -1,   117,   104,   105,   106,   107,    -1,
-     109,    -1,    -1,   112,   113,   114,   115,    -1,   117,   104,
-     105,   106,   107,    -1,   109,    -1,    -1,   112,   113,   114,
-     115,    -1,   117,   104,   105,   106,   107,    -1,   109,    -1,
-      -1,   112,   113,   114,   115,    -1,   117,   104,   105,   106,
-     107,    -1,   109,    -1,    -1,   112,    -1,    -1,    -1,    -1,
-     117
+      38,    64,   130,   217,   168,   335,     4,   123,    72,     1,
+      10,   230,     4,   239,    72,     4,    14,     9,   182,    11,
+      12,    13,    17,    18,    19,    20,    15,   195,    29,    24,
+       4,    72,     4,   429,   113,    13,     4,    29,    30,    31,
+      77,    29,    72,    35,   336,   213,    83,    84,    72,   114,
+      72,   137,   138,    91,     5,   183,     7,     8,    59,   113,
+      98,   275,   109,   127,   278,   279,     4,     7,     8,   127,
+     117,    59,    64,    65,    66,    67,     6,   113,   114,   305,
+     109,    32,    80,    75,   113,    85,   127,    79,   113,    81,
+     176,   177,    32,    82,     4,    25,   224,   127,    72,   318,
+      72,    31,   321,   127,    72,   127,   101,   475,   124,   477,
+     102,   239,   228,   105,   106,   107,   108,   109,   110,    13,
+     248,   113,    73,    29,   116,   117,   118,   105,   106,   107,
+     108,   109,   110,    73,   126,   113,   114,   115,   116,   117,
+     118,   433,   306,   181,   363,   541,   113,   366,     0,   116,
+     128,   129,   130,   131,   124,   125,     4,    63,   450,   287,
+     111,   113,   454,    72,   116,    13,     6,    97,   119,   120,
+      76,   111,   102,   121,   104,     4,   304,   305,   126,   119,
+     120,   111,    30,    16,   125,    25,     4,    20,     4,   119,
+     120,    31,   113,   231,   232,   233,   324,   325,   125,   113,
+     328,    52,    53,    54,    55,   424,   109,   426,     4,   539,
+     102,   105,   106,   107,   108,   113,   110,   345,   116,   113,
+     114,   115,   116,     4,   118,     6,     7,     8,   113,   104,
+      78,   116,   270,     4,   272,   123,   138,     9,   114,     9,
+     113,    11,    12,    13,    25,   113,    27,   411,     4,   126,
+      31,   117,   380,   381,   126,   126,   126,    97,     4,    29,
+      30,    31,   102,   126,   104,    35,    13,   305,   109,   307,
+     126,   111,   113,   126,    72,   116,   117,   113,   113,   119,
+     120,   319,   110,   102,   322,    57,    58,    59,    60,    61,
+      62,   123,   123,   457,    64,    65,    66,    67,   336,   337,
+      72,   113,   114,   115,   116,    75,    72,   124,     4,    79,
+     125,    81,   350,   127,   430,   431,    97,   127,   127,   127,
+     448,   127,   103,   127,   538,   127,   125,   113,   125,     4,
+     111,    52,    53,    54,    55,   105,   106,   107,   108,   109,
+     110,     4,    73,   113,   472,    72,   116,   117,   118,     4,
+     109,   479,   105,   106,   107,   108,   126,   110,   105,   106,
+     107,   108,     4,   110,     4,   118,   113,   114,   115,   116,
+       4,   118,   126,    72,    36,    37,    38,    39,    40,    41,
+      42,    43,   420,    45,    46,    47,    48,    49,   109,     4,
+      72,   121,   113,   126,   126,   433,   434,     9,     9,   109,
+     438,   529,   109,   124,   442,   109,   126,    21,   126,   109,
+     473,   449,   450,    44,   125,   453,   454,   126,   456,    50,
+      51,     9,   460,     9,   101,    56,    57,    58,    59,    60,
+      61,    62,   470,   471,    72,   123,   123,    68,    69,    70,
+      71,   105,   106,   107,   108,   109,   110,   123,    21,   113,
+     114,   115,   116,   117,   118,    21,    21,   124,   123,   121,
+     124,   123,   124,    21,     4,     4,     4,   125,   506,   507,
+     127,   509,     4,   127,   512,   126,    21,   515,   126,   517,
+     125,     4,     4,   127,   105,   106,   107,   108,   109,   110,
+      21,   122,   113,   124,   127,   116,   117,   118,     4,   130,
+     131,   132,   133,   134,   135,   136,   137,    86,    87,    88,
+      89,    90,    91,    92,    93,    94,    95,    96,     4,    98,
+      99,   100,   105,   106,   107,   108,   109,   110,    12,     4,
+     113,   114,   115,   116,   117,   118,   105,   106,   107,   108,
+       4,   110,    59,   224,   113,   114,   115,   116,   128,   118,
+     105,   106,   107,   108,   345,   110,   188,   121,   113,   114,
+     115,   116,   214,   118,   105,   106,   107,   108,   448,   110,
+     213,   506,   113,   114,   115,   116,   381,   118,   105,   106,
+     107,   108,   273,   110,   328,   183,   113,   114,   115,   116,
+     273,   118,   105,   106,   107,   108,   304,   110,   248,   181,
+     113,   114,   115,   116,    98,   118,   105,   106,   107,   108,
+     109,   110,    -1,    -1,   113,    -1,    -1,   116,    -1,   118,
+     105,   106,   107,   108,    -1,   110,    -1,    -1,   113,   105,
+     106,   107,   108,   118,   110,    -1,    -1,   113,   105,   106,
+     107,   108,   118,   110,    -1,    -1,   113,    -1,    -1,    -1,
+      -1,   118
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
    symbol of state STATE-NUM.  */
 static const yytype_uint16 yystos[] =
 {
-       0,     4,     6,     7,     8,    24,    26,    30,    96,   102,
-     110,   139,   140,   141,   142,   143,   145,   146,   158,   161,
-     163,   112,   113,   112,   123,   162,   164,   147,   112,   159,
-       4,     0,   141,     4,    71,     4,   124,   256,   257,     4,
-     108,   112,   115,   116,   251,   252,    51,    52,    53,    54,
-     222,     4,    30,   101,   110,   118,   119,   142,   148,   152,
-     153,   160,   161,   211,   212,   213,   112,   124,   104,   105,
-     106,   107,   109,   112,   113,   114,   115,   117,   247,   255,
-     260,   261,   262,   263,   165,   108,   149,   150,     4,   153,
-     103,    13,    29,    77,   154,   155,   213,     4,   137,    85,
-      86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
-      97,    98,    99,   171,   172,   173,   174,   175,   176,   177,
-     185,   186,   187,   122,   113,   112,   255,   112,   156,     4,
-     116,   261,   125,   125,   125,   125,   125,   125,   125,     4,
-     187,   263,   108,   116,   253,   254,   255,   254,    71,   185,
-     123,   157,   247,   248,   249,   250,   254,   112,   115,   151,
-     108,   112,    51,    52,    53,    54,   108,   112,   123,   178,
-     179,   112,   112,   151,   151,   166,   122,   122,   109,   101,
-     258,   259,   123,    71,   126,   126,   126,   256,    71,   126,
-     126,   126,   126,   126,     4,   167,   151,   151,   124,   260,
-     256,   250,   124,   179,     5,    31,   110,   118,   119,   143,
-     144,   168,   180,   208,   209,   210,   124,   169,   112,     4,
-       4,    72,   210,     1,   211,   214,   170,   222,    71,     4,
-       9,    11,    12,    13,    28,    29,    30,    34,    63,    64,
-      65,    66,    74,    78,    80,   108,   112,   115,   116,   125,
-     148,   181,   196,   198,   204,   206,   218,   224,   228,   230,
-     232,   233,   234,   242,   243,   244,   247,   108,   263,   253,
-      13,   255,    13,   255,   255,   219,   112,   115,   220,   221,
-     234,   247,   229,     4,     4,     4,   248,   225,   125,     4,
-     235,    35,    36,    37,    38,    39,    40,    41,    42,    44,
-      45,    46,    47,    48,   120,   122,   123,   231,   194,   255,
-       9,    56,    57,    58,    59,    60,    61,    71,   245,   246,
-     255,   245,   246,   222,    71,    71,   222,   222,   125,   182,
-     197,   199,   112,   240,   241,   247,   205,   125,   112,   115,
-     247,   252,    13,   112,   115,   116,   127,   128,   129,   130,
-     226,   234,   247,   255,   256,   255,    17,    18,    19,    20,
-     100,   195,     9,   253,   255,     9,   253,   255,   108,   215,
-     216,   247,   247,   108,   108,   241,   189,   200,   201,    21,
-      71,   126,   194,   112,   207,   237,   255,   112,   236,   237,
-     255,   157,   108,   223,   255,    43,    49,    50,    55,    56,
-      57,    58,    59,    60,    61,    67,    68,    69,    70,   121,
-     123,   129,   130,   131,   132,   133,   134,   135,   136,   227,
-     124,   125,   253,     9,   253,     9,   100,   217,    71,   122,
-     122,   126,    10,    84,   184,   190,     4,    14,    79,   202,
-       4,    15,    81,   203,   247,   112,   240,   122,    21,    71,
-     126,   238,    21,    71,   126,    21,   123,   256,   255,   122,
-     112,   115,   253,   253,   216,   263,   263,   237,   255,    76,
-      82,    83,   188,     4,   255,     4,   255,     4,    21,   233,
-     255,   112,   237,    16,    20,   239,   255,   112,   237,   255,
-     256,   124,   255,   126,   126,     4,   255,   255,   112,   247,
-     183,   213,   238,   238,   247,   125,    21,   125,    21,   124,
-       4,    71,     4,     4,    71,     4,    71,   191,     4,   236,
-     255,   112,   115,   255,   255,   255,   255,    28,    62,    75,
-     192,   126,   126,   126,     4,     4,     4,   193,   247,     4,
-     222,   194,   216
+       0,     4,     6,     7,     8,    25,    27,    31,    97,   103,
+     111,   140,   141,   142,   143,   144,   146,   147,   159,   162,
+     164,   113,   114,   113,   124,   163,   165,   148,   113,   160,
+       4,     0,   142,     4,    72,     4,   125,   257,   258,     4,
+     109,   113,   116,   117,   252,   253,    52,    53,    54,    55,
+     223,     4,    31,   102,   111,   119,   120,   143,   149,   153,
+     154,   161,   162,   212,   213,   214,   113,   125,   105,   106,
+     107,   108,   110,   113,   114,   115,   116,   118,   248,   256,
+     261,   262,   263,   264,   166,   109,   150,   151,     4,   154,
+     104,    13,    30,    78,   155,   156,   214,     4,   138,    86,
+      87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
+      98,    99,   100,   172,   173,   174,   175,   176,   177,   178,
+     186,   187,   188,   123,   114,   113,   256,   113,   157,     4,
+     117,   262,   126,   126,   126,   126,   126,   126,   126,     4,
+     188,   264,   109,   117,   254,   255,   256,   255,    72,   186,
+     124,   158,   248,   249,   250,   251,   255,   113,   116,   152,
+     109,   113,    52,    53,    54,    55,   109,   113,   124,   179,
+     180,   113,   113,   152,   152,   167,   123,   123,   110,   102,
+     259,   260,   124,    72,   127,   127,   127,   257,    72,   127,
+     127,   127,   127,   127,     4,   168,   152,   152,   125,   261,
+     257,   251,   125,   180,     5,    32,   111,   119,   120,   144,
+     145,   169,   181,   209,   210,   211,   125,   170,   113,     4,
+       4,    73,   211,     1,   212,   215,   171,   223,    72,     4,
+       9,    11,    12,    13,    29,    30,    31,    35,    64,    65,
+      66,    67,    75,    79,    81,   109,   113,   116,   117,   126,
+     149,   182,   197,   199,   205,   207,   219,   225,   229,   231,
+     233,   234,   235,   243,   244,   245,   248,   109,   264,   254,
+      13,   256,    13,   256,   256,   220,   113,   116,   221,   222,
+     235,   248,   230,     4,     4,     4,   249,   226,   126,     4,
+     236,    36,    37,    38,    39,    40,    41,    42,    43,    45,
+      46,    47,    48,    49,   121,   123,   124,   232,   195,   256,
+       9,    57,    58,    59,    60,    61,    62,    72,   246,   247,
+     256,   246,   247,   223,    72,    72,   223,   223,   126,   183,
+     198,   200,   113,   241,   242,   248,   206,   126,   113,   116,
+     248,   253,    13,   113,   116,   117,   128,   129,   130,   131,
+     227,   235,   248,   256,   257,   256,    17,    18,    19,    20,
+      24,   101,   196,     9,   254,   256,     9,   254,   256,   109,
+     216,   217,   248,   248,   109,   109,   242,   190,   201,   202,
+      21,    72,   127,   195,   113,   208,   238,   256,   113,   237,
+     238,   256,   158,   109,   224,   256,    44,    50,    51,    56,
+      57,    58,    59,    60,    61,    62,    68,    69,    70,    71,
+     122,   124,   130,   131,   132,   133,   134,   135,   136,   137,
+     228,   125,   126,   254,     9,   254,     9,   101,   218,    72,
+     123,   123,   127,    10,    85,   185,   191,     4,    14,    80,
+     203,     4,    15,    82,   204,   248,   113,   241,   123,    21,
+      72,   127,   239,    21,    72,   127,    21,   124,   257,   256,
+     123,   113,   116,   254,   254,   217,   264,   264,   238,   256,
+      77,    83,    84,   189,     4,   256,     4,   256,     4,    21,
+     234,   256,   113,   238,    16,    20,   240,   256,   113,   238,
+     256,   257,   125,   256,   127,   127,     4,   256,   256,   113,
+     248,   184,   214,   239,   239,   248,   126,    21,   126,    21,
+     125,     4,    72,     4,     4,    72,     4,    72,   192,     4,
+     237,   256,   113,   116,   256,   256,   256,   256,    29,    63,
+      76,   193,   127,   127,   127,     4,     4,     4,   194,   248,
+       4,   223,   195,   217
 };
 
 #define yyerrok		(yyerrstatus = 0)
@@ -4017,118 +4013,123 @@
     break;
 
   case 133:
-#line 1713 "compilers/imcc/imcc.y"
-    { begin_return_or_yield(interp, 0); }
+#line 1709 "compilers/imcc/imcc.y"
+    { (yyval.t) = VT_CALL_SIG; }
     break;
 
   case 134:
-#line 1715 "compilers/imcc/imcc.y"
-    { (yyval.i) = 0; IMCC_INFO(interp)->asm_state = AsmDefault; }
+#line 1714 "compilers/imcc/imcc.y"
+    { begin_return_or_yield(interp, 0); }
     break;
 
   case 135:
-#line 1717 "compilers/imcc/imcc.y"
+#line 1716 "compilers/imcc/imcc.y"
+    { (yyval.i) = 0; IMCC_INFO(interp)->asm_state = AsmDefault; }
+    break;
+
+  case 136:
+#line 1718 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->asm_state = AsmDefault;
            (yyval.i) = 0;
          }
     break;
 
-  case 136:
-#line 1724 "compilers/imcc/imcc.y"
+  case 137:
+#line 1725 "compilers/imcc/imcc.y"
     { begin_return_or_yield(interp, 1); }
     break;
 
-  case 137:
-#line 1726 "compilers/imcc/imcc.y"
+  case 138:
+#line 1727 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; IMCC_INFO(interp)->asm_state = AsmDefault; }
     break;
 
-  case 138:
-#line 1730 "compilers/imcc/imcc.y"
+  case 139:
+#line 1731 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
-  case 139:
-#line 1732 "compilers/imcc/imcc.y"
+  case 140:
+#line 1733 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(1) - (2)].sr))
                add_pcc_result(IMCC_INFO(interp)->sr_return, (yyvsp[(1) - (2)].sr));
          }
     break;
 
-  case 140:
-#line 1737 "compilers/imcc/imcc.y"
+  case 141:
+#line 1738 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(2) - (3)].sr))
                add_pcc_result(IMCC_INFO(interp)->sr_return, (yyvsp[(2) - (3)].sr));
          }
     break;
 
-  case 141:
-#line 1744 "compilers/imcc/imcc.y"
+  case 142:
+#line 1745 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
-  case 142:
-#line 1746 "compilers/imcc/imcc.y"
+  case 143:
+#line 1747 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(1) - (2)].sr))
                add_pcc_result(IMCC_INFO(interp)->sr_return, (yyvsp[(1) - (2)].sr));
          }
     break;
 
-  case 143:
-#line 1751 "compilers/imcc/imcc.y"
+  case 144:
+#line 1752 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(2) - (3)].sr))
                add_pcc_result(IMCC_INFO(interp)->sr_return, (yyvsp[(2) - (3)].sr));
          }
     break;
 
-  case 144:
-#line 1758 "compilers/imcc/imcc.y"
+  case 145:
+#line 1759 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); }
     break;
 
-  case 145:
-#line 1762 "compilers/imcc/imcc.y"
+  case 146:
+#line 1763 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); }
     break;
 
-  case 146:
-#line 1767 "compilers/imcc/imcc.y"
+  case 147:
+#line 1768 "compilers/imcc/imcc.y"
     {
           if (IMCC_INFO(interp)->asm_state == AsmDefault)
               begin_return_or_yield(interp, (yyvsp[(1) - (2)].t));
         }
     break;
 
-  case 147:
-#line 1772 "compilers/imcc/imcc.y"
+  case 148:
+#line 1773 "compilers/imcc/imcc.y"
     {
           IMCC_INFO(interp)->asm_state = AsmDefault;
           (yyval.t) = 0;
         }
     break;
 
-  case 148:
-#line 1779 "compilers/imcc/imcc.y"
+  case 149:
+#line 1780 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
-  case 149:
-#line 1780 "compilers/imcc/imcc.y"
+  case 150:
+#line 1781 "compilers/imcc/imcc.y"
     { (yyval.t) = 1; }
     break;
 
-  case 150:
-#line 1784 "compilers/imcc/imcc.y"
+  case 151:
+#line 1785 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
-  case 151:
-#line 1786 "compilers/imcc/imcc.y"
+  case 152:
+#line 1787 "compilers/imcc/imcc.y"
     {
            if (IMCC_INFO(interp)->adv_named_id) {
                add_pcc_named_return(IMCC_INFO(interp)->sr_return,
@@ -4140,16 +4141,16 @@
          }
     break;
 
-  case 152:
-#line 1796 "compilers/imcc/imcc.y"
+  case 153:
+#line 1797 "compilers/imcc/imcc.y"
     {
             SymReg * const name = mk_const(interp, (yyvsp[(1) - (3)].s), 'S');
             add_pcc_named_return(IMCC_INFO(interp)->sr_return, name, (yyvsp[(3) - (3)].sr));
          }
     break;
 
-  case 153:
-#line 1801 "compilers/imcc/imcc.y"
+  case 154:
+#line 1802 "compilers/imcc/imcc.y"
     {
            if (IMCC_INFO(interp)->adv_named_id) {
                add_pcc_named_return(IMCC_INFO(interp)->sr_return,
@@ -4161,27 +4162,22 @@
          }
     break;
 
-  case 154:
-#line 1811 "compilers/imcc/imcc.y"
+  case 155:
+#line 1812 "compilers/imcc/imcc.y"
     {
            SymReg * const name = mk_const(interp, (yyvsp[(3) - (5)].s), 'S');
            add_pcc_named_return(IMCC_INFO(interp)->sr_return, name, (yyvsp[(5) - (5)].sr));
          }
     break;
 
-  case 157:
-#line 1832 "compilers/imcc/imcc.y"
-    { clear_state(interp); }
-    break;
-
   case 158:
-#line 1837 "compilers/imcc/imcc.y"
-    { (yyval.i) = (yyvsp[(2) - (2)].i); }
+#line 1833 "compilers/imcc/imcc.y"
+    { clear_state(interp); }
     break;
 
   case 159:
 #line 1838 "compilers/imcc/imcc.y"
-    { (yyval.i) = 0; }
+    { (yyval.i) = (yyvsp[(2) - (2)].i); }
     break;
 
   case 160:
@@ -4201,16 +4197,21 @@
 
   case 163:
 #line 1842 "compilers/imcc/imcc.y"
-    { (yyval.i) = (yyvsp[(1) - (1)].i); }
+    { (yyval.i) = 0; }
     break;
 
   case 164:
-#line 1846 "compilers/imcc/imcc.y"
+#line 1843 "compilers/imcc/imcc.y"
+    { (yyval.i) = (yyvsp[(1) - (1)].i); }
+    break;
+
+  case 165:
+#line 1847 "compilers/imcc/imcc.y"
     { (yyval.i) = NULL; }
     break;
 
-  case 168:
-#line 1857 "compilers/imcc/imcc.y"
+  case 169:
+#line 1858 "compilers/imcc/imcc.y"
     {
              Instruction * const i = iLABEL(interp, IMCC_INFO(interp)->cur_unit, mk_local_label(interp, (yyvsp[(1) - (1)].s)));
              mem_sys_free((yyvsp[(1) - (1)].s));
@@ -4218,13 +4219,13 @@
          }
     break;
 
-  case 169:
-#line 1867 "compilers/imcc/imcc.y"
+  case 170:
+#line 1868 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(2) - (3)].i); }
     break;
 
-  case 170:
-#line 1869 "compilers/imcc/imcc.y"
+  case 171:
+#line 1870 "compilers/imcc/imcc.y"
     {
            if (yynerrs >= PARROT_MAX_RECOVER_ERRORS) {
                IMCC_warning(interp, "Too many errors. Correct some first.\n");
@@ -4234,8 +4235,8 @@
          }
     break;
 
-  case 171:
-#line 1880 "compilers/imcc/imcc.y"
+  case 172:
+#line 1881 "compilers/imcc/imcc.y"
     {
            IdList* const l = (yyvsp[(1) - (1)].idlist);
            l->next = NULL;
@@ -4243,8 +4244,8 @@
          }
     break;
 
-  case 172:
-#line 1887 "compilers/imcc/imcc.y"
+  case 173:
+#line 1888 "compilers/imcc/imcc.y"
     {
            IdList* const l = (yyvsp[(3) - (3)].idlist);
            l->next = (yyvsp[(1) - (3)].idlist);
@@ -4252,8 +4253,8 @@
          }
     break;
 
-  case 173:
-#line 1896 "compilers/imcc/imcc.y"
+  case 174:
+#line 1897 "compilers/imcc/imcc.y"
     {
            IdList* const l = mem_allocate_n_zeroed_typed(1, IdList);
            l->id           = (yyvsp[(1) - (2)].s);
@@ -4262,23 +4263,23 @@
          }
     break;
 
-  case 174:
-#line 1905 "compilers/imcc/imcc.y"
+  case 175:
+#line 1906 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
-  case 175:
-#line 1906 "compilers/imcc/imcc.y"
+  case 176:
+#line 1907 "compilers/imcc/imcc.y"
     { (yyval.t) = 1; }
     break;
 
-  case 178:
-#line 1913 "compilers/imcc/imcc.y"
+  case 179:
+#line 1914 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->is_def = 1; }
     break;
 
-  case 179:
-#line 1914 "compilers/imcc/imcc.y"
+  case 180:
+#line 1915 "compilers/imcc/imcc.y"
     {
            IdList *l = (yyvsp[(4) - (4)].idlist);
            while (l) {
@@ -4296,8 +4297,8 @@
          }
     break;
 
-  case 180:
-#line 1930 "compilers/imcc/imcc.y"
+  case 181:
+#line 1931 "compilers/imcc/imcc.y"
     {
            SymReg *n;
            char   *name = mem_sys_strdup((yyvsp[(2) - (4)].s) + 1);
@@ -4309,8 +4310,8 @@
          }
     break;
 
-  case 181:
-#line 1940 "compilers/imcc/imcc.y"
+  case 182:
+#line 1941 "compilers/imcc/imcc.y"
     {
            SymReg *n = mk_const(interp, (yyvsp[(2) - (4)].s), 'U');
            set_lexical(interp, (yyvsp[(4) - (4)].sr), n); (yyval.i) = 0;
@@ -4318,13 +4319,13 @@
          }
     break;
 
-  case 182:
-#line 1945 "compilers/imcc/imcc.y"
+  case 183:
+#line 1946 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->is_def = 1; }
     break;
 
-  case 183:
-#line 1946 "compilers/imcc/imcc.y"
+  case 184:
+#line 1947 "compilers/imcc/imcc.y"
     {
            mk_const_ident(interp, (yyvsp[(4) - (6)].s), (yyvsp[(3) - (6)].t), (yyvsp[(6) - (6)].sr), 0);
            IMCC_INFO(interp)->is_def = 0;
@@ -4332,13 +4333,13 @@
          }
     break;
 
-  case 185:
-#line 1953 "compilers/imcc/imcc.y"
+  case 186:
+#line 1954 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->is_def = 1; }
     break;
 
-  case 186:
-#line 1954 "compilers/imcc/imcc.y"
+  case 187:
+#line 1955 "compilers/imcc/imcc.y"
     {
            mk_const_ident(interp, (yyvsp[(4) - (6)].s), (yyvsp[(3) - (6)].t), (yyvsp[(6) - (6)].sr), 1);
            IMCC_INFO(interp)->is_def = 0;
@@ -4346,8 +4347,8 @@
          }
     break;
 
-  case 187:
-#line 1960 "compilers/imcc/imcc.y"
+  case 188:
+#line 1961 "compilers/imcc/imcc.y"
     {
            (yyval.i) = NULL;
            IMCC_INFO(interp)->cur_call->pcc_sub->flags |= isTAIL_CALL;
@@ -4355,15 +4356,15 @@
          }
     break;
 
-  case 188:
-#line 1966 "compilers/imcc/imcc.y"
+  case 189:
+#line 1967 "compilers/imcc/imcc.y"
     {
             (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "branch", 1, (yyvsp[(2) - (2)].sr));
          }
     break;
 
-  case 189:
-#line 1970 "compilers/imcc/imcc.y"
+  case 190:
+#line 1971 "compilers/imcc/imcc.y"
     {
            (yyval.i) = INS(interp,
                     IMCC_INFO(interp)->cur_unit,
@@ -4377,48 +4378,48 @@
          }
     break;
 
-  case 190:
-#line 1981 "compilers/imcc/imcc.y"
-    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, (yyvsp[(2) - (2)].sr)); }
-    break;
-
   case 191:
 #line 1982 "compilers/imcc/imcc.y"
-    { (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; }
+    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, (yyvsp[(2) - (2)].sr)); }
     break;
 
   case 192:
 #line 1983 "compilers/imcc/imcc.y"
-    { (yyval.i) = 0; }
+    { (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; }
     break;
 
-  case 195:
-#line 1986 "compilers/imcc/imcc.y"
-    { (yyval.i) = 0;}
+  case 193:
+#line 1984 "compilers/imcc/imcc.y"
+    { (yyval.i) = 0; }
     break;
 
   case 196:
-#line 1990 "compilers/imcc/imcc.y"
-    { (yyval.t) = 'I'; }
+#line 1987 "compilers/imcc/imcc.y"
+    { (yyval.i) = 0;}
     break;
 
   case 197:
 #line 1991 "compilers/imcc/imcc.y"
-    { (yyval.t) = 'N'; }
+    { (yyval.t) = 'I'; }
     break;
 
   case 198:
 #line 1992 "compilers/imcc/imcc.y"
-    { (yyval.t) = 'S'; }
+    { (yyval.t) = 'N'; }
     break;
 
   case 199:
 #line 1993 "compilers/imcc/imcc.y"
-    { (yyval.t) = 'P'; }
+    { (yyval.t) = 'S'; }
     break;
 
   case 200:
-#line 1998 "compilers/imcc/imcc.y"
+#line 1994 "compilers/imcc/imcc.y"
+    { (yyval.t) = 'P'; }
+    break;
+
+  case 201:
+#line 1999 "compilers/imcc/imcc.y"
     {
            /* there'd normally be a mem_sys_strdup() here, but the lexer already
             * copied the string, so it's safe to use directly */
@@ -4430,38 +4431,38 @@
          }
     break;
 
-  case 201:
-#line 2011 "compilers/imcc/imcc.y"
+  case 202:
+#line 2012 "compilers/imcc/imcc.y"
     { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "set", 2, (yyvsp[(1) - (3)].sr), (yyvsp[(3) - (3)].sr));  }
     break;
 
-  case 202:
-#line 2013 "compilers/imcc/imcc.y"
+  case 203:
+#line 2014 "compilers/imcc/imcc.y"
     { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (4)].s), 2, (yyvsp[(1) - (4)].sr), (yyvsp[(4) - (4)].sr));  }
     break;
 
-  case 203:
-#line 2015 "compilers/imcc/imcc.y"
+  case 204:
+#line 2016 "compilers/imcc/imcc.y"
     { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(4) - (5)].s), 3, (yyvsp[(1) - (5)].sr), (yyvsp[(3) - (5)].sr), (yyvsp[(5) - (5)].sr)); }
     break;
 
-  case 204:
-#line 2017 "compilers/imcc/imcc.y"
+  case 205:
+#line 2018 "compilers/imcc/imcc.y"
     { (yyval.i) = iINDEXFETCH(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (6)].sr), (yyvsp[(3) - (6)].sr), (yyvsp[(5) - (6)].sr)); }
     break;
 
-  case 205:
-#line 2019 "compilers/imcc/imcc.y"
+  case 206:
+#line 2020 "compilers/imcc/imcc.y"
     { (yyval.i) = iINDEXSET(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (6)].sr), (yyvsp[(3) - (6)].sr), (yyvsp[(6) - (6)].sr)); }
     break;
 
-  case 206:
-#line 2024 "compilers/imcc/imcc.y"
+  case 207:
+#line 2025 "compilers/imcc/imcc.y"
     { (yyval.i) = iNEW(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (7)].sr), (yyvsp[(4) - (7)].s), (yyvsp[(6) - (7)].sr), 1); }
     break;
 
-  case 207:
-#line 2027 "compilers/imcc/imcc.y"
+  case 208:
+#line 2028 "compilers/imcc/imcc.y"
     {
            add_pcc_result((yyvsp[(3) - (3)].i)->symregs[0], (yyvsp[(1) - (3)].sr));
            IMCC_INFO(interp)->cur_call = NULL;
@@ -4469,160 +4470,160 @@
          }
     break;
 
-  case 208:
-#line 2033 "compilers/imcc/imcc.y"
+  case 209:
+#line 2034 "compilers/imcc/imcc.y"
     {
            (yyval.i) = IMCC_create_itcall_label(interp);
          }
     break;
 
-  case 209:
-#line 2037 "compilers/imcc/imcc.y"
+  case 210:
+#line 2038 "compilers/imcc/imcc.y"
     {
            IMCC_itcall_sub(interp, (yyvsp[(6) - (9)].sr));
            IMCC_INFO(interp)->cur_call = NULL;
          }
     break;
 
-  case 213:
-#line 2045 "compilers/imcc/imcc.y"
+  case 214:
+#line 2046 "compilers/imcc/imcc.y"
     {
            (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, (yyvsp[(1) - (3)].sr));
          }
     break;
 
-  case 214:
-#line 2052 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"not"; }
-    break;
-
   case 215:
 #line 2053 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"bnot"; }
+    { (yyval.s) = (char *)"not"; }
     break;
 
   case 216:
 #line 2054 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"neg"; }
+    { (yyval.s) = (char *)"bnot"; }
     break;
 
   case 217:
-#line 2058 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"sub"; }
+#line 2055 "compilers/imcc/imcc.y"
+    { (yyval.s) = (char *)"neg"; }
     break;
 
   case 218:
 #line 2059 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"add"; }
+    { (yyval.s) = (char *)"sub"; }
     break;
 
   case 219:
 #line 2060 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"mul"; }
+    { (yyval.s) = (char *)"add"; }
     break;
 
   case 220:
 #line 2061 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"div"; }
+    { (yyval.s) = (char *)"mul"; }
     break;
 
   case 221:
 #line 2062 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"mod"; }
+    { (yyval.s) = (char *)"div"; }
     break;
 
   case 222:
 #line 2063 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"fdiv"; }
+    { (yyval.s) = (char *)"mod"; }
     break;
 
   case 223:
 #line 2064 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"pow"; }
+    { (yyval.s) = (char *)"fdiv"; }
     break;
 
   case 224:
 #line 2065 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"concat"; }
+    { (yyval.s) = (char *)"pow"; }
     break;
 
   case 225:
 #line 2066 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"iseq"; }
+    { (yyval.s) = (char *)"concat"; }
     break;
 
   case 226:
 #line 2067 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"isne"; }
+    { (yyval.s) = (char *)"iseq"; }
     break;
 
   case 227:
 #line 2068 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"isgt"; }
+    { (yyval.s) = (char *)"isne"; }
     break;
 
   case 228:
 #line 2069 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"isge"; }
+    { (yyval.s) = (char *)"isgt"; }
     break;
 
   case 229:
 #line 2070 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"islt"; }
+    { (yyval.s) = (char *)"isge"; }
     break;
 
   case 230:
 #line 2071 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"isle"; }
+    { (yyval.s) = (char *)"islt"; }
     break;
 
   case 231:
 #line 2072 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"shl"; }
+    { (yyval.s) = (char *)"isle"; }
     break;
 
   case 232:
 #line 2073 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"shr"; }
+    { (yyval.s) = (char *)"shl"; }
     break;
 
   case 233:
 #line 2074 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"lsr"; }
+    { (yyval.s) = (char *)"shr"; }
     break;
 
   case 234:
 #line 2075 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"and"; }
+    { (yyval.s) = (char *)"lsr"; }
     break;
 
   case 235:
 #line 2076 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"or"; }
+    { (yyval.s) = (char *)"and"; }
     break;
 
   case 236:
 #line 2077 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"xor"; }
+    { (yyval.s) = (char *)"or"; }
     break;
 
   case 237:
 #line 2078 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"band"; }
+    { (yyval.s) = (char *)"xor"; }
     break;
 
   case 238:
 #line 2079 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"bor"; }
+    { (yyval.s) = (char *)"band"; }
     break;
 
   case 239:
 #line 2080 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"bxor"; }
+    { (yyval.s) = (char *)"bor"; }
     break;
 
   case 240:
-#line 2086 "compilers/imcc/imcc.y"
+#line 2081 "compilers/imcc/imcc.y"
+    { (yyval.s) = (char *)"bxor"; }
+    break;
+
+  case 241:
+#line 2087 "compilers/imcc/imcc.y"
     {
            (yyval.i) = IMCC_create_itcall_label(interp);
            (yyval.i)->type &= ~ITCALL;
@@ -4630,83 +4631,83 @@
          }
     break;
 
-  case 241:
-#line 2091 "compilers/imcc/imcc.y"
-    {  (yyval.i) = 0; }
-    break;
-
   case 242:
-#line 2098 "compilers/imcc/imcc.y"
-    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(2) - (3)].s), 2, (yyvsp[(1) - (3)].sr), (yyvsp[(3) - (3)].sr)); }
+#line 2092 "compilers/imcc/imcc.y"
+    {  (yyval.i) = 0; }
     break;
 
   case 243:
-#line 2102 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"add"; }
+#line 2099 "compilers/imcc/imcc.y"
+    { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(2) - (3)].s), 2, (yyvsp[(1) - (3)].sr), (yyvsp[(3) - (3)].sr)); }
     break;
 
   case 244:
 #line 2103 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"sub"; }
+    { (yyval.s) = (char *)"add"; }
     break;
 
   case 245:
 #line 2104 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"mul"; }
+    { (yyval.s) = (char *)"sub"; }
     break;
 
   case 246:
 #line 2105 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"div"; }
+    { (yyval.s) = (char *)"mul"; }
     break;
 
   case 247:
 #line 2106 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"mod"; }
+    { (yyval.s) = (char *)"div"; }
     break;
 
   case 248:
 #line 2107 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"fdiv"; }
+    { (yyval.s) = (char *)"mod"; }
     break;
 
   case 249:
 #line 2108 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"concat"; }
+    { (yyval.s) = (char *)"fdiv"; }
     break;
 
   case 250:
 #line 2109 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"band"; }
+    { (yyval.s) = (char *)"concat"; }
     break;
 
   case 251:
 #line 2110 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"bor"; }
+    { (yyval.s) = (char *)"band"; }
     break;
 
   case 252:
 #line 2111 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"bxor"; }
+    { (yyval.s) = (char *)"bor"; }
     break;
 
   case 253:
 #line 2112 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"shr"; }
+    { (yyval.s) = (char *)"bxor"; }
     break;
 
   case 254:
 #line 2113 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"shl"; }
+    { (yyval.s) = (char *)"shr"; }
     break;
 
   case 255:
 #line 2114 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"lsr"; }
+    { (yyval.s) = (char *)"shl"; }
     break;
 
   case 256:
-#line 2120 "compilers/imcc/imcc.y"
+#line 2115 "compilers/imcc/imcc.y"
+    { (yyval.s) = (char *)"lsr"; }
+    break;
+
+  case 257:
+#line 2121 "compilers/imcc/imcc.y"
     {
         (yyval.i) = func_ins(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (4)].sr), (yyvsp[(3) - (4)].s),
                       IMCC_INFO(interp) -> regs,
@@ -4716,23 +4717,23 @@
        }
     break;
 
-  case 257:
-#line 2130 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s));       mem_sys_free((yyvsp[(1) - (1)].s)); }
-    break;
-
   case 258:
 #line 2131 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_sub_address_fromc(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
+    { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s));       mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 259:
 #line 2132 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_sub_address_u(interp, (yyvsp[(1) - (1)].s));     mem_sys_free((yyvsp[(1) - (1)].s)); }
+    { (yyval.sr) = mk_sub_address_fromc(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 260:
-#line 2134 "compilers/imcc/imcc.y"
+#line 2133 "compilers/imcc/imcc.y"
+    { (yyval.sr) = mk_sub_address_u(interp, (yyvsp[(1) - (1)].s));     mem_sys_free((yyvsp[(1) - (1)].s)); }
+    break;
+
+  case 261:
+#line 2135 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = (yyvsp[(1) - (1)].sr);
            if ((yyvsp[(1) - (1)].sr)->set != 'P')
@@ -4740,8 +4741,8 @@
          }
     break;
 
-  case 261:
-#line 2140 "compilers/imcc/imcc.y"
+  case 262:
+#line 2141 "compilers/imcc/imcc.y"
     {
             /* disallow bareword method names; SREG name constants are fine */
             const char * const name = (yyvsp[(3) - (3)].sr)->name;
@@ -4757,8 +4758,8 @@
         }
     break;
 
-  case 262:
-#line 2154 "compilers/imcc/imcc.y"
+  case 263:
+#line 2155 "compilers/imcc/imcc.y"
     {
             IMCC_INFO(interp)->cur_obj = (yyvsp[(1) - (3)].sr);
             (yyval.sr)                         = mk_const(interp, (yyvsp[(3) - (3)].s), 'U');
@@ -4766,8 +4767,8 @@
          }
     break;
 
-  case 263:
-#line 2160 "compilers/imcc/imcc.y"
+  case 264:
+#line 2161 "compilers/imcc/imcc.y"
     {
             IMCC_INFO(interp)->cur_obj = (yyvsp[(1) - (3)].sr);
             (yyval.sr)                         = mk_const(interp, (yyvsp[(3) - (3)].s), 'S');
@@ -4775,31 +4776,31 @@
          }
     break;
 
-  case 264:
-#line 2165 "compilers/imcc/imcc.y"
+  case 265:
+#line 2166 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->cur_obj = (yyvsp[(1) - (3)].sr); (yyval.sr) = (yyvsp[(3) - (3)].sr); }
     break;
 
-  case 265:
-#line 2171 "compilers/imcc/imcc.y"
+  case 266:
+#line 2172 "compilers/imcc/imcc.y"
     {
            (yyval.i) = IMCC_create_itcall_label(interp);
            IMCC_itcall_sub(interp, (yyvsp[(1) - (1)].sr));
          }
     break;
 
-  case 266:
-#line 2175 "compilers/imcc/imcc.y"
+  case 267:
+#line 2176 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(2) - (5)].i); }
     break;
 
-  case 267:
-#line 2179 "compilers/imcc/imcc.y"
+  case 268:
+#line 2180 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
-  case 268:
-#line 2181 "compilers/imcc/imcc.y"
+  case 269:
+#line 2182 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
            if (IMCC_INFO(interp)->adv_named_id) {
@@ -4811,8 +4812,8 @@
          }
     break;
 
-  case 269:
-#line 2191 "compilers/imcc/imcc.y"
+  case 270:
+#line 2192 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
            if (IMCC_INFO(interp)->adv_named_id) {
@@ -4824,8 +4825,8 @@
          }
     break;
 
-  case 270:
-#line 2201 "compilers/imcc/imcc.y"
+  case 271:
+#line 2202 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
            add_pcc_named_arg(IMCC_INFO(interp)->cur_call,
@@ -4834,16 +4835,16 @@
          }
     break;
 
-  case 271:
-#line 2208 "compilers/imcc/imcc.y"
+  case 272:
+#line 2209 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
            add_pcc_named_arg_var(IMCC_INFO(interp)->cur_call, (yyvsp[(1) - (3)].sr), (yyvsp[(3) - (3)].sr));
          }
     break;
 
-  case 272:
-#line 2213 "compilers/imcc/imcc.y"
+  case 273:
+#line 2214 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
            add_pcc_named_arg(IMCC_INFO(interp)->cur_call,
@@ -4852,48 +4853,48 @@
          }
     break;
 
-  case 273:
-#line 2222 "compilers/imcc/imcc.y"
-    { (yyval.sr) = (yyvsp[(1) - (2)].sr); (yyval.sr)->type |= (yyvsp[(2) - (2)].t); }
-    break;
-
   case 274:
-#line 2226 "compilers/imcc/imcc.y"
-    { (yyval.t) = 0; }
+#line 2223 "compilers/imcc/imcc.y"
+    { (yyval.sr) = (yyvsp[(1) - (2)].sr); (yyval.sr)->type |= (yyvsp[(2) - (2)].t); }
     break;
 
   case 275:
 #line 2227 "compilers/imcc/imcc.y"
-    { (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); }
+    { (yyval.t) = 0; }
     break;
 
   case 276:
-#line 2231 "compilers/imcc/imcc.y"
-    { (yyval.t) = VT_FLAT; }
+#line 2228 "compilers/imcc/imcc.y"
+    { (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); }
     break;
 
   case 277:
 #line 2232 "compilers/imcc/imcc.y"
-    { (yyval.t) = VT_NAMED; }
+    { (yyval.t) = VT_FLAT; }
     break;
 
   case 278:
-#line 2235 "compilers/imcc/imcc.y"
-    { adv_named_set_u(interp, (yyvsp[(3) - (4)].s)); (yyval.t) = 0; }
+#line 2233 "compilers/imcc/imcc.y"
+    { (yyval.t) = VT_NAMED; }
     break;
 
   case 279:
 #line 2236 "compilers/imcc/imcc.y"
-    { adv_named_set(interp, (yyvsp[(3) - (4)].s));   (yyval.t) = 0; }
+    { adv_named_set_u(interp, (yyvsp[(3) - (4)].s)); (yyval.t) = 0; }
     break;
 
   case 280:
-#line 2240 "compilers/imcc/imcc.y"
-    { (yyval.sr) = (yyvsp[(1) - (2)].sr); (yyval.sr)->type |= (yyvsp[(2) - (2)].t); }
+#line 2237 "compilers/imcc/imcc.y"
+    { adv_named_set(interp, (yyvsp[(3) - (4)].s));   (yyval.t) = 0; }
     break;
 
   case 281:
-#line 2245 "compilers/imcc/imcc.y"
+#line 2241 "compilers/imcc/imcc.y"
+    { (yyval.sr) = (yyvsp[(1) - (2)].sr); (yyval.sr)->type |= (yyvsp[(2) - (2)].t); }
+    break;
+
+  case 282:
+#line 2246 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
            if (IMCC_INFO(interp)->adv_named_id) {
@@ -4905,8 +4906,8 @@
          }
     break;
 
-  case 282:
-#line 2255 "compilers/imcc/imcc.y"
+  case 283:
+#line 2256 "compilers/imcc/imcc.y"
     {
             add_pcc_named_result(IMCC_INFO(interp)->cur_call,
             mk_const(interp, (yyvsp[(3) - (5)].s), 'S'), (yyvsp[(5) - (5)].sr));
@@ -4914,8 +4915,8 @@
          }
     break;
 
-  case 283:
-#line 2261 "compilers/imcc/imcc.y"
+  case 284:
+#line 2262 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
            if (IMCC_INFO(interp)->adv_named_id) {
@@ -4927,22 +4928,17 @@
          }
     break;
 
-  case 284:
-#line 2271 "compilers/imcc/imcc.y"
+  case 285:
+#line 2272 "compilers/imcc/imcc.y"
     {
            add_pcc_named_result(IMCC_INFO(interp)->cur_call, mk_const(interp, (yyvsp[(1) - (3)].s), 'S'), (yyvsp[(3) - (3)].sr));
            mem_sys_free((yyvsp[(1) - (3)].s));
          }
     break;
 
-  case 285:
-#line 2275 "compilers/imcc/imcc.y"
-    { (yyval.sr) = 0; }
-    break;
-
   case 286:
-#line 2279 "compilers/imcc/imcc.y"
-    { (yyval.i) = (yyvsp[(1) - (1)].i); }
+#line 2276 "compilers/imcc/imcc.y"
+    { (yyval.sr) = 0; }
     break;
 
   case 287:
@@ -4951,50 +4947,50 @@
     break;
 
   case 288:
-#line 2285 "compilers/imcc/imcc.y"
-    {
-           (yyval.i) =MK_I(interp, IMCC_INFO(interp)->cur_unit, inv_op((yyvsp[(3) - (6)].s)), 3, (yyvsp[(2) - (6)].sr), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].sr));
-         }
+#line 2281 "compilers/imcc/imcc.y"
+    { (yyval.i) = (yyvsp[(1) - (1)].i); }
     break;
 
   case 289:
-#line 2289 "compilers/imcc/imcc.y"
+#line 2286 "compilers/imcc/imcc.y"
     {
-           (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "unless_null", 2, (yyvsp[(3) - (5)].sr), (yyvsp[(5) - (5)].sr));
+           (yyval.i) =MK_I(interp, IMCC_INFO(interp)->cur_unit, inv_op((yyvsp[(3) - (6)].s)), 3, (yyvsp[(2) - (6)].sr), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].sr));
          }
     break;
 
   case 290:
-#line 2293 "compilers/imcc/imcc.y"
+#line 2290 "compilers/imcc/imcc.y"
     {
-           (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "unless", 2, (yyvsp[(2) - (4)].sr), (yyvsp[(4) - (4)].sr));
+           (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "unless_null", 2, (yyvsp[(3) - (5)].sr), (yyvsp[(5) - (5)].sr));
          }
     break;
 
   case 291:
-#line 2300 "compilers/imcc/imcc.y"
+#line 2294 "compilers/imcc/imcc.y"
     {
-           (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "if", 2, (yyvsp[(2) - (4)].sr), (yyvsp[(4) - (4)].sr));
+           (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "unless", 2, (yyvsp[(2) - (4)].sr), (yyvsp[(4) - (4)].sr));
          }
     break;
 
   case 292:
-#line 2304 "compilers/imcc/imcc.y"
+#line 2301 "compilers/imcc/imcc.y"
     {
-           (yyval.i) =MK_I(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (6)].s), 3, (yyvsp[(2) - (6)].sr), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].sr));
+           (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "if", 2, (yyvsp[(2) - (4)].sr), (yyvsp[(4) - (4)].sr));
          }
     break;
 
   case 293:
-#line 2308 "compilers/imcc/imcc.y"
+#line 2305 "compilers/imcc/imcc.y"
     {
-           (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "if_null", 2, (yyvsp[(3) - (5)].sr), (yyvsp[(5) - (5)].sr));
+           (yyval.i) =MK_I(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (6)].s), 3, (yyvsp[(2) - (6)].sr), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].sr));
          }
     break;
 
   case 294:
-#line 2314 "compilers/imcc/imcc.y"
-    { (yyval.t) = 0; }
+#line 2309 "compilers/imcc/imcc.y"
+    {
+           (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "if_null", 2, (yyvsp[(3) - (5)].sr), (yyvsp[(5) - (5)].sr));
+         }
     break;
 
   case 295:
@@ -5003,57 +4999,62 @@
     break;
 
   case 296:
-#line 2319 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"eq"; }
+#line 2316 "compilers/imcc/imcc.y"
+    { (yyval.t) = 0; }
     break;
 
   case 297:
 #line 2320 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"ne"; }
+    { (yyval.s) = (char *)"eq"; }
     break;
 
   case 298:
 #line 2321 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"gt"; }
+    { (yyval.s) = (char *)"ne"; }
     break;
 
   case 299:
 #line 2322 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"ge"; }
+    { (yyval.s) = (char *)"gt"; }
     break;
 
   case 300:
 #line 2323 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"lt"; }
+    { (yyval.s) = (char *)"ge"; }
     break;
 
   case 301:
 #line 2324 "compilers/imcc/imcc.y"
-    { (yyval.s) = (char *)"le"; }
+    { (yyval.s) = (char *)"lt"; }
     break;
 
-  case 304:
-#line 2333 "compilers/imcc/imcc.y"
-    { (yyval.sr) = NULL; }
+  case 302:
+#line 2325 "compilers/imcc/imcc.y"
+    { (yyval.s) = (char *)"le"; }
     break;
 
   case 305:
 #line 2334 "compilers/imcc/imcc.y"
-    { (yyval.sr) = (yyvsp[(1) - (1)].sr); }
+    { (yyval.sr) = NULL; }
     break;
 
   case 306:
-#line 2338 "compilers/imcc/imcc.y"
+#line 2335 "compilers/imcc/imcc.y"
+    { (yyval.sr) = (yyvsp[(1) - (1)].sr); }
+    break;
+
+  case 307:
+#line 2339 "compilers/imcc/imcc.y"
     { (yyval.sr) = IMCC_INFO(interp)->regs[0]; }
     break;
 
-  case 308:
-#line 2343 "compilers/imcc/imcc.y"
+  case 309:
+#line 2344 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->regs[IMCC_INFO(interp)->nargs++] = (yyvsp[(1) - (1)].sr); }
     break;
 
-  case 309:
-#line 2345 "compilers/imcc/imcc.y"
+  case 310:
+#line 2346 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp) -> regs[IMCC_INFO(interp)->nargs++] = (yyvsp[(1) - (4)].sr);
            IMCC_INFO(interp) -> keyvec |= KEY_BIT(IMCC_INFO(interp)->nargs);
@@ -5062,27 +5063,22 @@
          }
     break;
 
-  case 310:
-#line 2352 "compilers/imcc/imcc.y"
+  case 311:
+#line 2353 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp) -> regs[IMCC_INFO(interp)->nargs++] = (yyvsp[(2) - (3)].sr);
            (yyval.sr) = (yyvsp[(2) - (3)].sr);
          }
     break;
 
-  case 312:
-#line 2359 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_sub_address_fromc(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
-    break;
-
   case 313:
 #line 2360 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_sub_address_u(interp, (yyvsp[(1) - (1)].s));  mem_sys_free((yyvsp[(1) - (1)].s)); }
+    { (yyval.sr) = mk_sub_address_fromc(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 314:
-#line 2364 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
+#line 2361 "compilers/imcc/imcc.y"
+    { (yyval.sr) = mk_sub_address_u(interp, (yyvsp[(1) - (1)].s));  mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 315:
@@ -5091,8 +5087,8 @@
     break;
 
   case 316:
-#line 2369 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_label_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
+#line 2366 "compilers/imcc/imcc.y"
+    { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 317:
@@ -5100,15 +5096,20 @@
     { (yyval.sr) = mk_label_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
-  case 322:
-#line 2384 "compilers/imcc/imcc.y"
+  case 318:
+#line 2371 "compilers/imcc/imcc.y"
+    { (yyval.sr) = mk_label_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
+    break;
+
+  case 323:
+#line 2385 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->nkeys    = 0;
          }
     break;
 
-  case 323:
-#line 2388 "compilers/imcc/imcc.y"
+  case 324:
+#line 2389 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = link_keys(interp,
                           IMCC_INFO(interp)->nkeys,
@@ -5116,15 +5117,15 @@
          }
     break;
 
-  case 324:
-#line 2396 "compilers/imcc/imcc.y"
+  case 325:
+#line 2397 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->nkeys = 0;
          }
     break;
 
-  case 325:
-#line 2400 "compilers/imcc/imcc.y"
+  case 326:
+#line 2401 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = link_keys(interp,
                           IMCC_INFO(interp)->nkeys,
@@ -5132,74 +5133,74 @@
          }
     break;
 
-  case 326:
-#line 2408 "compilers/imcc/imcc.y"
+  case 327:
+#line 2409 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->keys[IMCC_INFO(interp)->nkeys++] = (yyvsp[(1) - (1)].sr); }
     break;
 
-  case 327:
-#line 2410 "compilers/imcc/imcc.y"
+  case 328:
+#line 2411 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->keys[IMCC_INFO(interp)->nkeys++] = (yyvsp[(3) - (3)].sr);
            (yyval.sr) = IMCC_INFO(interp)->keys[0];
          }
     break;
 
-  case 328:
-#line 2418 "compilers/imcc/imcc.y"
+  case 329:
+#line 2419 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = (yyvsp[(1) - (1)].sr);
          }
     break;
 
-  case 329:
-#line 2424 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'I'); }
-    break;
-
   case 330:
 #line 2425 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'N'); }
+    { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'I'); }
     break;
 
   case 331:
 #line 2426 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'S'); }
+    { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'N'); }
     break;
 
   case 332:
 #line 2427 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'P'); }
+    { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'S'); }
     break;
 
   case 333:
 #line 2428 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_pasm_reg(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
+    { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'P'); }
     break;
 
   case 334:
-#line 2432 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'I'); mem_sys_free((yyvsp[(1) - (1)].s)); }
+#line 2429 "compilers/imcc/imcc.y"
+    { (yyval.sr) = mk_pasm_reg(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 335:
 #line 2433 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'N'); mem_sys_free((yyvsp[(1) - (1)].s)); }
+    { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'I'); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 336:
 #line 2434 "compilers/imcc/imcc.y"
-    { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'S'); mem_sys_free((yyvsp[(1) - (1)].s)); }
+    { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'N'); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 337:
 #line 2435 "compilers/imcc/imcc.y"
+    { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'S'); mem_sys_free((yyvsp[(1) - (1)].s)); }
+    break;
+
+  case 338:
+#line 2436 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'U'); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
 
 /* Line 1267 of yacc.c.  */
-#line 5192 "compilers/imcc/imcparser.c"
+#line 5193 "compilers/imcc/imcparser.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -5413,7 +5414,7 @@
 }
 
 
-#line 2441 "compilers/imcc/imcc.y"
+#line 2442 "compilers/imcc/imcc.y"
 
 
 /* I need this prototype somewhere... */

Modified: trunk/compilers/imcc/imcparser.h
==============================================================================
--- trunk/compilers/imcc/imcparser.h	Thu Oct 22 22:59:40 2009	(r42027)
+++ trunk/compilers/imcc/imcparser.h	Fri Oct 23 00:30:59 2009	(r42028)
@@ -70,104 +70,105 @@
      ADV_ARROW = 275,
      NEW = 276,
      ADV_INVOCANT = 277,
-     NAMESPACE = 278,
-     DOT_METHOD = 279,
-     SUB = 280,
-     SYM = 281,
-     LOCAL = 282,
-     LEXICAL = 283,
-     CONST = 284,
-     ANNOTATE = 285,
-     INC = 286,
-     DEC = 287,
-     GLOBAL_CONST = 288,
-     PLUS_ASSIGN = 289,
-     MINUS_ASSIGN = 290,
-     MUL_ASSIGN = 291,
-     DIV_ASSIGN = 292,
-     CONCAT_ASSIGN = 293,
-     BAND_ASSIGN = 294,
-     BOR_ASSIGN = 295,
-     BXOR_ASSIGN = 296,
-     FDIV = 297,
-     FDIV_ASSIGN = 298,
-     MOD_ASSIGN = 299,
-     SHR_ASSIGN = 300,
-     SHL_ASSIGN = 301,
-     SHR_U_ASSIGN = 302,
-     SHIFT_LEFT = 303,
-     SHIFT_RIGHT = 304,
-     INTV = 305,
-     FLOATV = 306,
-     STRINGV = 307,
-     PMCV = 308,
-     LOG_XOR = 309,
-     RELOP_EQ = 310,
-     RELOP_NE = 311,
-     RELOP_GT = 312,
-     RELOP_GTE = 313,
-     RELOP_LT = 314,
-     RELOP_LTE = 315,
-     RESULT = 316,
-     RETURN = 317,
-     TAILCALL = 318,
-     YIELDT = 319,
-     GET_RESULTS = 320,
-     POW = 321,
-     SHIFT_RIGHT_U = 322,
-     LOG_AND = 323,
-     LOG_OR = 324,
-     COMMA = 325,
-     ESUB = 326,
-     DOTDOT = 327,
-     PCC_BEGIN = 328,
-     PCC_END = 329,
-     PCC_CALL = 330,
-     PCC_SUB = 331,
-     PCC_BEGIN_RETURN = 332,
-     PCC_END_RETURN = 333,
-     PCC_BEGIN_YIELD = 334,
-     PCC_END_YIELD = 335,
-     NCI_CALL = 336,
-     METH_CALL = 337,
-     INVOCANT = 338,
-     MAIN = 339,
-     LOAD = 340,
-     INIT = 341,
-     IMMEDIATE = 342,
-     POSTCOMP = 343,
-     METHOD = 344,
-     ANON = 345,
-     OUTER = 346,
-     NEED_LEX = 347,
-     MULTI = 348,
-     VTABLE_METHOD = 349,
-     LOADLIB = 350,
-     SUB_INSTANCE_OF = 351,
-     SUBID = 352,
-     NS_ENTRY = 353,
-     UNIQUE_REG = 354,
-     LABEL = 355,
-     EMIT = 356,
-     EOM = 357,
-     IREG = 358,
-     NREG = 359,
-     SREG = 360,
-     PREG = 361,
-     IDENTIFIER = 362,
-     REG = 363,
-     MACRO = 364,
-     ENDM = 365,
-     STRINGC = 366,
-     INTC = 367,
-     FLOATC = 368,
-     USTRINGC = 369,
-     PARROT_OP = 370,
-     VAR = 371,
-     LINECOMMENT = 372,
-     FILECOMMENT = 373,
-     DOT = 374,
-     CONCAT = 375
+     ADV_CALL_SIG = 278,
+     NAMESPACE = 279,
+     DOT_METHOD = 280,
+     SUB = 281,
+     SYM = 282,
+     LOCAL = 283,
+     LEXICAL = 284,
+     CONST = 285,
+     ANNOTATE = 286,
+     INC = 287,
+     DEC = 288,
+     GLOBAL_CONST = 289,
+     PLUS_ASSIGN = 290,
+     MINUS_ASSIGN = 291,
+     MUL_ASSIGN = 292,
+     DIV_ASSIGN = 293,
+     CONCAT_ASSIGN = 294,
+     BAND_ASSIGN = 295,
+     BOR_ASSIGN = 296,
+     BXOR_ASSIGN = 297,
+     FDIV = 298,
+     FDIV_ASSIGN = 299,
+     MOD_ASSIGN = 300,
+     SHR_ASSIGN = 301,
+     SHL_ASSIGN = 302,
+     SHR_U_ASSIGN = 303,
+     SHIFT_LEFT = 304,
+     SHIFT_RIGHT = 305,
+     INTV = 306,
+     FLOATV = 307,
+     STRINGV = 308,
+     PMCV = 309,
+     LOG_XOR = 310,
+     RELOP_EQ = 311,
+     RELOP_NE = 312,
+     RELOP_GT = 313,
+     RELOP_GTE = 314,
+     RELOP_LT = 315,
+     RELOP_LTE = 316,
+     RESULT = 317,
+     RETURN = 318,
+     TAILCALL = 319,
+     YIELDT = 320,
+     GET_RESULTS = 321,
+     POW = 322,
+     SHIFT_RIGHT_U = 323,
+     LOG_AND = 324,
+     LOG_OR = 325,
+     COMMA = 326,
+     ESUB = 327,
+     DOTDOT = 328,
+     PCC_BEGIN = 329,
+     PCC_END = 330,
+     PCC_CALL = 331,
+     PCC_SUB = 332,
+     PCC_BEGIN_RETURN = 333,
+     PCC_END_RETURN = 334,
+     PCC_BEGIN_YIELD = 335,
+     PCC_END_YIELD = 336,
+     NCI_CALL = 337,
+     METH_CALL = 338,
+     INVOCANT = 339,
+     MAIN = 340,
+     LOAD = 341,
+     INIT = 342,
+     IMMEDIATE = 343,
+     POSTCOMP = 344,
+     METHOD = 345,
+     ANON = 346,
+     OUTER = 347,
+     NEED_LEX = 348,
+     MULTI = 349,
+     VTABLE_METHOD = 350,
+     LOADLIB = 351,
+     SUB_INSTANCE_OF = 352,
+     SUBID = 353,
+     NS_ENTRY = 354,
+     UNIQUE_REG = 355,
+     LABEL = 356,
+     EMIT = 357,
+     EOM = 358,
+     IREG = 359,
+     NREG = 360,
+     SREG = 361,
+     PREG = 362,
+     IDENTIFIER = 363,
+     REG = 364,
+     MACRO = 365,
+     ENDM = 366,
+     STRINGC = 367,
+     INTC = 368,
+     FLOATC = 369,
+     USTRINGC = 370,
+     PARROT_OP = 371,
+     VAR = 372,
+     LINECOMMENT = 373,
+     FILECOMMENT = 374,
+     DOT = 375,
+     CONCAT = 376
    };
 #endif
 /* Tokens.  */
@@ -191,104 +192,105 @@
 #define ADV_ARROW 275
 #define NEW 276
 #define ADV_INVOCANT 277
-#define NAMESPACE 278
-#define DOT_METHOD 279
-#define SUB 280
-#define SYM 281
-#define LOCAL 282
-#define LEXICAL 283
-#define CONST 284
-#define ANNOTATE 285
-#define INC 286
-#define DEC 287
-#define GLOBAL_CONST 288
-#define PLUS_ASSIGN 289
-#define MINUS_ASSIGN 290
-#define MUL_ASSIGN 291
-#define DIV_ASSIGN 292
-#define CONCAT_ASSIGN 293
-#define BAND_ASSIGN 294
-#define BOR_ASSIGN 295
-#define BXOR_ASSIGN 296
-#define FDIV 297
-#define FDIV_ASSIGN 298
-#define MOD_ASSIGN 299
-#define SHR_ASSIGN 300
-#define SHL_ASSIGN 301
-#define SHR_U_ASSIGN 302
-#define SHIFT_LEFT 303
-#define SHIFT_RIGHT 304
-#define INTV 305
-#define FLOATV 306
-#define STRINGV 307
-#define PMCV 308
-#define LOG_XOR 309
-#define RELOP_EQ 310
-#define RELOP_NE 311
-#define RELOP_GT 312
-#define RELOP_GTE 313
-#define RELOP_LT 314
-#define RELOP_LTE 315
-#define RESULT 316
-#define RETURN 317
-#define TAILCALL 318
-#define YIELDT 319
-#define GET_RESULTS 320
-#define POW 321
-#define SHIFT_RIGHT_U 322
-#define LOG_AND 323
-#define LOG_OR 324
-#define COMMA 325
-#define ESUB 326
-#define DOTDOT 327
-#define PCC_BEGIN 328
-#define PCC_END 329
-#define PCC_CALL 330
-#define PCC_SUB 331
-#define PCC_BEGIN_RETURN 332
-#define PCC_END_RETURN 333
-#define PCC_BEGIN_YIELD 334
-#define PCC_END_YIELD 335
-#define NCI_CALL 336
-#define METH_CALL 337
-#define INVOCANT 338
-#define MAIN 339
-#define LOAD 340
-#define INIT 341
-#define IMMEDIATE 342
-#define POSTCOMP 343
-#define METHOD 344
-#define ANON 345
-#define OUTER 346
-#define NEED_LEX 347
-#define MULTI 348
-#define VTABLE_METHOD 349
-#define LOADLIB 350
-#define SUB_INSTANCE_OF 351
-#define SUBID 352
-#define NS_ENTRY 353
-#define UNIQUE_REG 354
-#define LABEL 355
-#define EMIT 356
-#define EOM 357
-#define IREG 358
-#define NREG 359
-#define SREG 360
-#define PREG 361
-#define IDENTIFIER 362
-#define REG 363
-#define MACRO 364
-#define ENDM 365
-#define STRINGC 366
-#define INTC 367
-#define FLOATC 368
-#define USTRINGC 369
-#define PARROT_OP 370
-#define VAR 371
-#define LINECOMMENT 372
-#define FILECOMMENT 373
-#define DOT 374
-#define CONCAT 375
+#define ADV_CALL_SIG 278
+#define NAMESPACE 279
+#define DOT_METHOD 280
+#define SUB 281
+#define SYM 282
+#define LOCAL 283
+#define LEXICAL 284
+#define CONST 285
+#define ANNOTATE 286
+#define INC 287
+#define DEC 288
+#define GLOBAL_CONST 289
+#define PLUS_ASSIGN 290
+#define MINUS_ASSIGN 291
+#define MUL_ASSIGN 292
+#define DIV_ASSIGN 293
+#define CONCAT_ASSIGN 294
+#define BAND_ASSIGN 295
+#define BOR_ASSIGN 296
+#define BXOR_ASSIGN 297
+#define FDIV 298
+#define FDIV_ASSIGN 299
+#define MOD_ASSIGN 300
+#define SHR_ASSIGN 301
+#define SHL_ASSIGN 302
+#define SHR_U_ASSIGN 303
+#define SHIFT_LEFT 304
+#define SHIFT_RIGHT 305
+#define INTV 306
+#define FLOATV 307
+#define STRINGV 308
+#define PMCV 309
+#define LOG_XOR 310
+#define RELOP_EQ 311
+#define RELOP_NE 312
+#define RELOP_GT 313
+#define RELOP_GTE 314
+#define RELOP_LT 315
+#define RELOP_LTE 316
+#define RESULT 317
+#define RETURN 318
+#define TAILCALL 319
+#define YIELDT 320
+#define GET_RESULTS 321
+#define POW 322
+#define SHIFT_RIGHT_U 323
+#define LOG_AND 324
+#define LOG_OR 325
+#define COMMA 326
+#define ESUB 327
+#define DOTDOT 328
+#define PCC_BEGIN 329
+#define PCC_END 330
+#define PCC_CALL 331
+#define PCC_SUB 332
+#define PCC_BEGIN_RETURN 333
+#define PCC_END_RETURN 334
+#define PCC_BEGIN_YIELD 335
+#define PCC_END_YIELD 336
+#define NCI_CALL 337
+#define METH_CALL 338
+#define INVOCANT 339
+#define MAIN 340
+#define LOAD 341
+#define INIT 342
+#define IMMEDIATE 343
+#define POSTCOMP 344
+#define METHOD 345
+#define ANON 346
+#define OUTER 347
+#define NEED_LEX 348
+#define MULTI 349
+#define VTABLE_METHOD 350
+#define LOADLIB 351
+#define SUB_INSTANCE_OF 352
+#define SUBID 353
+#define NS_ENTRY 354
+#define UNIQUE_REG 355
+#define LABEL 356
+#define EMIT 357
+#define EOM 358
+#define IREG 359
+#define NREG 360
+#define SREG 361
+#define PREG 362
+#define IDENTIFIER 363
+#define REG 364
+#define MACRO 365
+#define ENDM 366
+#define STRINGC 367
+#define INTC 368
+#define FLOATC 369
+#define USTRINGC 370
+#define PARROT_OP 371
+#define VAR 372
+#define LINECOMMENT 373
+#define FILECOMMENT 374
+#define DOT 375
+#define CONCAT 376
 
 
 
@@ -304,7 +306,7 @@
     Instruction *i;
 }
 /* Line 1489 of yacc.c.  */
-#line 297 "compilers/imcc/imcparser.h"
+#line 299 "compilers/imcc/imcparser.h"
 	YYSTYPE;
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1

Modified: trunk/compilers/imcc/pcc.c
==============================================================================
--- trunk/compilers/imcc/pcc.c	Thu Oct 22 22:59:40 2009	(r42027)
+++ trunk/compilers/imcc/pcc.c	Fri Oct 23 00:30:59 2009	(r42028)
@@ -288,31 +288,45 @@
         regs[i + 1] = arg;
         flags       = 0;
 
-        if (arg_flags[i] & VT_FLAT)
-            flags |= PARROT_ARG_FLATTEN;
-
-        if (arg_flags[i] & VT_OPTIONAL)
-            flags |= PARROT_ARG_OPTIONAL;
-        else if (arg_flags[i] & VT_OPT_FLAG)
-            flags |= PARROT_ARG_OPT_FLAG;
-
-        if (arg_flags[i] & VT_NAMED)
-            flags |= PARROT_ARG_NAME;
-
-        /* add argument type bits */
-        if (arg->type & VTCONST)
-            flags |= PARROT_ARG_CONSTANT;
-
-        /* TODO verify if const is allowed */
-        switch (arg->set) {
-            case 'I':                               break;
-            case 'S': flags |= PARROT_ARG_STRING;   break;
-            case 'N': flags |= PARROT_ARG_FLOATVAL; break;
-            case 'K':
-            case 'P': flags |= PARROT_ARG_PMC;      break;
-            default :                               break;
+        if (arg_flags[i] & VT_CALL_SIG) {
+            if (n > 1 || i != 0)
+                Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INTERNAL_PANIC,
+                    ":call_sig must be the first and only parameter");
+            if (arg_flags[i] & (VT_FLAT | VT_OPTIONAL | VT_OPT_FLAG | VT_NAMED))
+                Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INTERNAL_PANIC,
+                    ":call_sig cannot be combined with any other flags");
+            if (arg->set != 'P')
+                Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INTERNAL_PANIC,
+                    ":call_sig must be a PMC");
+            flags |= PARROT_ARG_CALL_SIG;
+            flags |= PARROT_ARG_PMC;
         }
+        else {
+            if (arg_flags[i] & VT_FLAT)
+                flags |= PARROT_ARG_FLATTEN;
 
+            if (arg_flags[i] & VT_OPTIONAL)
+                flags |= PARROT_ARG_OPTIONAL;
+            else if (arg_flags[i] & VT_OPT_FLAG)
+                flags |= PARROT_ARG_OPT_FLAG;
+
+            if (arg_flags[i] & VT_NAMED)
+                flags |= PARROT_ARG_NAME;
+
+            /* add argument type bits */
+            if (arg->type & VTCONST)
+                flags |= PARROT_ARG_CONSTANT;
+
+            /* TODO verify if const is allowed */
+            switch (arg->set) {
+                case 'I':                               break;
+                case 'S': flags |= PARROT_ARG_STRING;   break;
+                case 'N': flags |= PARROT_ARG_FLOATVAL; break;
+                case 'K':
+                case 'P': flags |= PARROT_ARG_PMC;      break;
+                default :                               break;
+            }
+        }
 
         snprintf(s, sizeof (s), "0x%.4x,", flags);
         if (bufpos+lenitem >= bufsize)

Modified: trunk/compilers/imcc/symreg.c
==============================================================================
--- trunk/compilers/imcc/symreg.c	Thu Oct 22 22:59:40 2009	(r42027)
+++ trunk/compilers/imcc/symreg.c	Fri Oct 23 00:30:59 2009	(r42028)
@@ -336,6 +336,7 @@
     if (t & VT_FLAT)      { strcat(buf, "VT_FLAT ");       }
     if (t & VT_OPTIONAL)  { strcat(buf, "VT_OPTIONAL ");   }
     if (t & VT_NAMED)     { strcat(buf, "VT_NAMED ");      }
+    if (t & VT_CALL_SIG)  { strcat(buf, "VT_CALL_SIG ");   }
 
     strcat(buf, "]");
 
@@ -461,7 +462,7 @@
     sub->args[n]      = arg;
     sub->arg_flags[n] = arg->type;
 
-    arg->type &= ~(VT_FLAT|VT_OPTIONAL|VT_OPT_FLAG|VT_NAMED);
+    arg->type &= ~(VT_FLAT|VT_OPTIONAL|VT_OPT_FLAG|VT_NAMED|VT_CALL_SIG);
 
     sub->nargs++;
 }

Modified: trunk/compilers/imcc/symreg.h
==============================================================================
--- trunk/compilers/imcc/symreg.h	Thu Oct 22 22:59:40 2009	(r42027)
+++ trunk/compilers/imcc/symreg.h	Fri Oct 23 00:30:59 2009	(r42028)
@@ -24,7 +24,8 @@
     VT_ENCODED      = VARTYPE_BIT(16),  /* unicode string constant */
     VT_OPT_FLAG     = VARTYPE_BIT(17),  /* var :opt_flag */
     VT_NAMED        = VARTYPE_BIT(18),  /* var :named(name) */
-    VT_UNIQUE_REG   = VARTYPE_BIT(19)
+    VT_UNIQUE_REG   = VARTYPE_BIT(19),
+    VT_CALL_SIG     = VARTYPE_BIT(20)
 };
 #undef VARTYPE_BIT
 

Modified: trunk/include/parrot/enums.h
==============================================================================
--- trunk/include/parrot/enums.h	Thu Oct 22 22:59:40 2009	(r42027)
+++ trunk/include/parrot/enums.h	Fri Oct 23 00:30:59 2009	(r42028)
@@ -45,22 +45,23 @@
 /* &gen_from_enum(call_bits.pasm lib/Parrot/Pmc2c/PCCMETHOD_BITS.pm) */
 typedef enum {
     /* 4 low bits are argument types */
-    PARROT_ARG_INTVAL           = 0x000,  /* 0 */
-    PARROT_ARG_STRING           = 0x001,  /* 1 */
-    PARROT_ARG_PMC              = 0x002,  /* 2 */
-    PARROT_ARG_FLOATVAL         = 0x003,  /* 3 */
-    PARROT_ARG_TYPE_MASK        = 0x00f,
+    PARROT_ARG_INTVAL           = 0x0000,  /* 0 */
+    PARROT_ARG_STRING           = 0x0001,  /* 1 */
+    PARROT_ARG_PMC              = 0x0002,  /* 2 */
+    PARROT_ARG_FLOATVAL         = 0x0003,  /* 3 */
+    PARROT_ARG_TYPE_MASK        = 0x000f,
     /* argument meaning and conversion bits */
-    PARROT_ARG_CONSTANT         = 0x010,  /* 16 */
+    PARROT_ARG_CONSTANT         = 0x0010,  /* 16 */
     /* bits a user has to define */
-    PARROT_ARG_FLATTEN          = 0x020,       /* .flatten_arg */
+    PARROT_ARG_FLATTEN          = 0x0020,       /* .flatten_arg */
     PARROT_ARG_SLURPY_ARRAY     = PARROT_ARG_FLATTEN,  /* i.e. foldup  */
     /* unused - 0x040 */
-    PARROT_ARG_OPTIONAL         = 0x080, /* 128 */
-    PARROT_ARG_OPT_FLAG         = 0x100, /* 256 prev optional was set */
-    PARROT_ARG_NAME             = 0x200, /* 512 this String is an arg name */
-    PARROT_ARG_LOOKAHEAD        = 0x400, /* 1024 this is a lookahead argument */
-    PARROT_ARG_INVOCANT         = 0x800  /* 2048 this PMC is an invocant */
+    PARROT_ARG_OPTIONAL         = 0x0080, /* 128 */
+    PARROT_ARG_OPT_FLAG         = 0x0100, /* 256 prev optional was set */
+    PARROT_ARG_NAME             = 0x0200, /* 512 this String is an arg name */
+    PARROT_ARG_LOOKAHEAD        = 0x0400, /* 1024 this is a lookahead argument */
+    PARROT_ARG_INVOCANT         = 0x0800,  /* 2048 this PMC is an invocant */
+    PARROT_ARG_CALL_SIG         = 0x1000
     /* more to come soon */
 
 } Call_bits_enum_t;

Modified: trunk/src/call/args.c
==============================================================================
--- trunk/src/call/args.c	Thu Oct 22 22:59:40 2009	(r42027)
+++ trunk/src/call/args.c	Fri Oct 23 00:30:59 2009	(r42028)
@@ -986,8 +986,7 @@
         if (param_count > 0) {
             if (err_check)
                 Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
-                        "too few arguments: 0 passed, %d expected",
-                        param_count);
+                    "too few arguments: 0 passed, %d expected", param_count);
         }
         return;
     }
@@ -995,6 +994,19 @@
     positional_args = VTABLE_elements(interp, call_object);
     GETATTR_CallSignature_arg_flags(interp, call_object, arg_sig);
 
+    /* EXPERIMENTAL! This block adds provisional :call_sig param support on the
+       callee side only. Does not add :call_sig arg support on the caller side.
+       This is not the final form of the algorithm, but should provide the
+       tools that HLL designers need in the interim. */
+    if (param_count == 1) {
+        const INTVAL first_flag = VTABLE_get_integer_keyed_int(interp, raw_sig, 0);
+        if (first_flag & PARROT_ARG_CALL_SIG) {
+            fprintf(stderr, "Found CallSignature!\n");
+            *accessor->pmc(interp, arg_info, 0) = call_object;
+            return;
+        }
+    }
+
     /* First iterate over positional args and positional parameters. */
     arg_index = 0;
     param_index = 0;


More information about the parrot-commits mailing list