reverting to a much more simplistic parsing

diff --git a/asn1c/asn1c.c b/asn1c/asn1c.c
index cf951af..9340c70 100644
--- a/asn1c/asn1c.c
+++ b/asn1c/asn1c.c
@@ -282,7 +282,7 @@
 		exit(EX_SOFTWARE);
 	}
 
-	return 0;
+	return 2;
 }
 
 /*
diff --git a/libasn1parser/asn1p_l.c b/libasn1parser/asn1p_l.c
index 9e33d8f..858ee6a 100644
--- a/libasn1parser/asn1p_l.c
+++ b/libasn1parser/asn1p_l.c
@@ -312,226 +312,227 @@
 	*yy_cp = '\0'; \
 	yy_c_buf_p = yy_cp;
 
-#define YY_NUM_RULES 129
-#define YY_END_OF_BUFFER 130
-static yyconst short int yy_acclist[1261] =
+#define YY_NUM_RULES 130
+#define YY_END_OF_BUFFER 131
+static yyconst short int yy_acclist[1259] =
     {   0,
-      130,  128,  129,  121,  128,  129,  121,  129,  122,  128,
-      129,   15,  128,  129,  122,  128,  129,  128,  129,  122,
-      128,  129,  128,  129,  122,  128,  129,  128,  129,   29,
-      128,  129,   28,  128,  129,  122,  128,  129,  128,  129,
-      116,  117,  128,  129,  116,  117,  128,  129,  116,  117,
-      128,  129,  116,  117,  128,  129,  116,  117,  128,  129,
-      116,  117,  128,  129,  116,  117,  128,  129,  116,  117,
-      128,  129,  116,  117,  128,  129,  116,  117,  128,  129,
-      116,  117,  128,  129,  116,  117,  128,  129,  116,  117,
-      128,  129,  116,  117,  128,  129,  116,  117,  128,  129,
+      131,  129,  130,  124,  129,  130,  124,  130,  127,  129,
+      130,   15,  129,  130,  127,  129,  130,  129,  130,  127,
+      129,  130,  129,  130,  127,  129,  130,  129,  130,   29,
+      129,  130,   28,  129,  130,  127,  129,  130,  129,  130,
+      116,  117,  129,  130,  116,  117,  129,  130,  116,  117,
+      129,  130,  116,  117,  129,  130,  116,  117,  129,  130,
+      116,  117,  129,  130,  116,  117,  129,  130,  116,  117,
+      129,  130,  116,  117,  129,  130,  116,  117,  129,  130,
+      116,  117,  129,  130,  116,  117,  129,  130,  116,  117,
+      129,  130,  116,  117,  129,  130,  116,  117,  129,  130,
 
-      116,  117,  128,  129,  116,  117,  128,  129,  116,  117,
-      128,  129,  116,  117,  128,  129,  127,  128,  129,  115,
-      128,  129,  122,  127,  128,  129,    5,  128,  129,    2,
-      129,    2,  128,  129,    4,  128,  129,    7,    9,  128,
-      129,    7,  129,    9,  128,  129,    9,  128,  129,   17,
-      128,  129,   17,  129,   18,  128,  129,   12,  128,  129,
-       12,  129,   14,  128,  129,   14,  128,  129,   10,  128,
-      129,   11,  128,  129,   21,   23,  128,  129,   23,  128,
-      129,   24,  129,   21,   22,   23,  128,  129,   21,   22,
-       23,  128,  129,  124,  128,  129,  125,  128,  129,  125,
+      116,  117,  129,  130,  116,  117,  129,  130,  116,  117,
+      129,  130,  116,  117,  129,  130,  115,  129,  130,  127,
+      129,  130,    5,  129,  130,    2,  130,    2,  129,  130,
+        4,  129,  130,    7,    9,  129,  130,    7,  130,    9,
+      129,  130,    9,  129,  130,   17,  129,  130,   17,  130,
+       18,  129,  130,   12,  129,  130,   12,  130,   14,  129,
+      130,   14,  129,  130,   10,  129,  130,   11,  129,  130,
+       21,   23,  129,  130,   23,  129,  130,   24,  130,   21,
+       22,   23,  129,  130,   21,   22,   23,  129,  130,  121,
+      129,  130,  122,  129,  130,  122,  130,  129,  130,  123,
 
-      129,  128,  129,  126,  128,  129,  121,   15,   15,  113,
-      114,    1,   27,  120,    6,   28,  116,  117,  116,  117,
-      116,  117,  116,  117,  116,  117,  116,  117,  117,  116,
-      117,  116,  117,  116,  117,  116,  117,   39,  116,  117,
+      129,  130,  124,   15,   15,  113,  114,    1,   27,  120,
+        6,   28,  116,  117,  116,  117,  116,  117,  116,  117,
+      116,  117,  116,  117,  117,  116,  117,  116,  117,  116,
+      117,  116,  117,   39,  116,  117,  116,  117,  116,  117,
       116,  117,  116,  117,  116,  117,  116,  117,  116,  117,
-      116,  117,  116,  117,  116,  117,  116,  117,  117,  117,
+      116,  117,  116,  117,  117,  117,  116,  117,  116,  117,
       116,  117,  116,  117,  116,  117,  116,  117,  116,  117,
-      116,  117,  116,  117,  116,  117,  117,  116,  117,  116,
-      117,   84,  116,  117,  116,  117,  117,  116,  117,  116,
-      117,  116,  117,  116,  117,  117,  116,  117,  116,  117,
-
-      116,  117,  116,  117,  116,  117,  116,  117,  116,  117,
-      116,  117,  116,  117,  117,  116,  117,  116,  117,  117,
-      117,  116,  117,  115,    5,    3,    8,   17,   16,   12,
-       21,   21,   22,   21,   22,  124,  125,  123,  113,  114,
-       27,  119,  118,  116,  117,   31,  116,  117,   32,  116,
-      117,  116,  117,  116,  117,  116,  117,   36,  116,  117,
-      116,  117,  116,  117,  116,  117,  116,  117,  116,  117,
-      116,  117,  116,  117,  116,  117,  116,  117,  116,  117,
-       53,  116,  117,  116,  117,  116,  117,  116,  117,  116,
-      117,  116,  117,  116,  117,  117,  117,  116,  117,  116,
-
-      117,  116,  117,  116,  117,  116,  117,  116,  117,  116,
-      117,   76,  116,  117,   77,  116,  117,  116,  117,  117,
-      116,  117,  116,  117,  116,  117,  117,  116,  117,   87,
-      116,  117,  116,  117,  116,  117,  116,  117,  117,  116,
-      117,  116,  117,  116,  117,   95,  116,  117,  116,  117,
-      116,  117,  116,  117,  116,  117,  116,  117,  116,  117,
-      116,  117,  117,  116,  117,  116,  117,  116,  117,  117,
-      117,  117,  116,  117,   13,   21,   22,   20,   21,   22,
-       26,   25,  116,  117,  116,  117,  116,  117,  116,  117,
-      116,  117,  116,  117,  116,  117,  116,  117,  116,  117,
-
-      116,  117,  116,  117,  116,  117,  116,  117,  116,  117,
-      116,  117,  116,  117,  116,  117,  116,  117,  116,  117,
-      116,  117,  116,  117,  116,  117,   61,  116,  117,  117,
-      117,  116,  117,  116,  117,  116,  117,  116,  117,  116,
-      117,  116,  117,  116,  117,  116,  117,  116,  117,   79,
-      116,  117,  117,  116,  117,  116,  117,  116,  117,  117,
-      116,  117,  116,  117,  116,  117,  116,  117,  117,   92,
-      116,  117,  116,  117,  116,  117,   96,  116,  117,  116,
-      117,  116,  117,  116,  117,  100,  116,  117,  102,  116,
-      117,  116,  117,  117,  116,  117,  116,  117,  116,  117,
-
-      116,  117,  116,  117,  117,  117,  117,  112,  116,  117,
-       21,   22,  116,  117,  116,  117,  116,  117,   35,  116,
-      117,  117,  116,  117,  116,  117,  116,  117,   42,  116,
-      117,  116,  117,  116,  117,  116,  117,  116,  117,  116,
-      117,  116,  117,  116,  117,  116,  117,  116,  117,  116,
-      117,  116,  117,  116,  117,  116,  117,   60,  116,  117,
-      117,  117,  117,  116,  117,  116,  117,  116,  117,  116,
-      117,  116,  117,  116,  117,  116,  117,  116,  117,  116,
-      117,  116,  117,  117,  116,  117,   83,  116,  117,  116,
+      116,  117,  117,  116,  117,  116,  117,   84,  116,  117,
+      116,  117,  117,  116,  117,  116,  117,  116,  117,  116,
       117,  117,  116,  117,  116,  117,  116,  117,  116,  117,
 
-      117,  116,  117,  116,  117,  116,  117,  116,  117,  117,
-      116,  117,  117,  104,  116,  117,  116,  117,  116,  117,
-      117,  116,  117,  117,  117,  117,   21,   22,   30,  116,
-      117,  116,  117,  116,  117,  117,  116,  117,  116,  117,
-       41,  116,  117,  116,  117,  116,  117,  116,  117,  116,
-      117,  116,  117,  116,  117,  116,  117,  116,  117,  116,
-      117,  116,  117,   55,  116,  117,  116,  117,  116,  117,
-      116,  117,  116,  117,  117,  117,  117,  116,  117,  116,
-      117,  116,  117,  116,  117,  116,  117,  116,  117,  116,
-      117,  116,  117,  116,  117,  116,  117,  116,  117,  117,
-
-       81,  116,  117,  116,  117,  117,  116,  117,  116,  117,
-      116,  117,  116,  117,  117,  116,  117,  116,  117,   97,
-      116,  117,   98,  116,  117,  117,  116,  117,  117,  105,
-      116,  117,  116,  117,  117,  117,  117,  117,  117,   21,
-       22,  116,  117,  116,  117,  117,   38,  116,  117,  116,
-      117,  116,  117,  116,  117,  116,  117,   47,  116,  117,
-       48,  116,  117,  116,  117,  116,  117,   51,  116,  117,
-      116,  117,  116,  117,  116,  117,   57,  116,  117,  116,
-      117,  116,  117,  117,  117,  117,  116,  117,  116,  117,
-       68,  116,  117,   69,  116,  117,  116,  117,  116,  117,
-
-      116,  117,   73,  116,  117,  116,  117,  116,  117,  116,
-      117,  117,  116,  117,  117,   86,  116,  117,  116,  117,
-       89,  116,  117,   91,  116,  117,  117,  116,  117,  116,
-      117,  117,  116,  117,  117,  116,  117,  108,  117,  117,
-      117,  117,  117,   21,   22,  116,  117,  116,  117,  117,
       116,  117,  116,  117,  116,  117,  116,  117,  116,  117,
-       50,  116,  117,  116,  117,  116,  117,   56,  116,  117,
-      116,  117,   59,  116,  117,  117,  117,  117,  117,  116,
-      117,   67,  116,  117,   70,  116,  117,   71,  116,  117,
-      116,  117,  116,  117,  117,  116,  117,  117,   85,  116,
+      117,  116,  117,  116,  117,  117,  117,  116,  117,  115,
+        5,    3,    8,   17,   16,   12,   21,   21,   22,   21,
+       22,  121,  122,  128,  113,  114,   27,  119,  118,  116,
+      117,   31,  116,  117,   32,  116,  117,  116,  117,  116,
+      117,  116,  117,   36,  116,  117,  116,  117,  116,  117,
+      116,  117,  116,  117,  116,  117,  116,  117,  116,  117,
+      116,  117,  116,  117,  116,  117,   53,  116,  117,  116,
+      117,  116,  117,  116,  117,  116,  117,  116,  117,  116,
+      117,  117,  117,  116,  117,  116,  117,  116,  117,  116,
 
-      117,  117,  116,  117,  117,  116,  117,   94,  116,  117,
-      117,  116,  117,  117,  116,  117,  117,  117,  117,  117,
-       21,   22,  116,  117,   34,  116,  117,   37,  117,   40,
-      116,  117,   43,  116,  117,  116,  117,  116,  117,  116,
-      117,  116,  117,  116,  117,  116,  117,  117,  117,  117,
-       65,  117,  116,  117,  116,  117,  116,  117,  117,  116,
-      117,  117,  117,  116,  117,  117,  116,  117,   99,  117,
-      116,  117,  117,  106,  116,  117,  117,  117,  117,  117,
-       21,  116,  117,   44,  116,  117,  116,  117,   46,  116,
-      117,  116,  117,  116,  117,   54,  116,  117,  116,  117,
+      117,  116,  117,  116,  117,  116,  117,   76,  116,  117,
+       77,  116,  117,  116,  117,  117,  116,  117,  116,  117,
+      116,  117,  117,  116,  117,   87,  116,  117,  116,  117,
+      116,  117,  116,  117,  117,  116,  117,  116,  117,  116,
+      117,   95,  116,  117,  116,  117,  116,  117,  116,  117,
+      116,  117,  116,  117,  116,  117,  116,  117,  117,  116,
+      117,  116,  117,  116,  117,  117,  117,  117,  116,  117,
+       13,   21,   22,   20,   21,   22,   26,   25,  116,  117,
+      116,  117,  116,  117,  116,  117,  116,  117,  116,  117,
+      116,  117,  116,  117,  116,  117,  116,  117,  116,  117,
 
-      117,  117,  117,   66,  116,  117,  116,  117,  116,  117,
-      117,  116,  117,  117,  117,  116,  117,  117,  116,  117,
-      116,  117,  117,  109,  117,  117,  117,  117,   21,   33,
-      116,  117,   45,  116,  117,   49,  116,  117,  116,  117,
-      116,  117,  117,  117,  117,  116,  117,  116,  117,  117,
-      116,  117,  117,  117,  116,  117,  117,  116,  117,  116,
-      117,  117,  117,  117,  117,   21,  116,  117,  116,  117,
-      117,  117,  117,   72,  116,  117,   74,  116,  117,   75,
-      117,  116,  117,  117,  117,  116,  117,  117,   93,  116,
-      117,  116,  117,  117,  117,  117,  117,   21,  116,  117,
+      116,  117,  116,  117,  116,  117,  116,  117,  116,  117,
+      116,  117,  116,  117,  116,  117,  116,  117,  116,  117,
+      116,  117,   61,  116,  117,  117,  117,  116,  117,  116,
+      117,  116,  117,  116,  117,  116,  117,  116,  117,  116,
+      117,  116,  117,  116,  117,   79,  116,  117,  117,  116,
+      117,  116,  117,  116,  117,  117,  116,  117,  116,  117,
+      116,  117,  116,  117,  117,   92,  116,  117,  116,  117,
+      116,  117,   96,  116,  117,  116,  117,  116,  117,  116,
+      117,  100,  116,  117,  102,  116,  117,  116,  117,  117,
+      116,  117,  116,  117,  116,  117,  116,  117,  116,  117,
 
-       58,  116,  117,   63,  117,  117,   64,  117,  116,  117,
-       80,  117,  117,   88,  116,  117,  117,  116,  117,  101,
-      117,  117,  117,  111,  117,   21,  116,  117,  117,   78,
-      116,  117,  117,  117,  116,  117,  117,  110,  117,   21,
-      116,  117,   62,  117,  117,   90,  117,  103,  116,  117,
-      107,  117,   21,   52,  116,  117,   82,  117,   19,   21
+      117,  117,  117,  112,  116,  117,   21,   22,  116,  117,
+      116,  117,  116,  117,   35,  116,  117,  117,  116,  117,
+      116,  117,  116,  117,   42,  116,  117,  116,  117,  116,
+      117,  116,  117,  116,  117,  116,  117,  116,  117,  116,
+      117,  116,  117,  116,  117,  116,  117,  116,  117,  116,
+      117,  116,  117,   60,  116,  117,  117,  117,  117,  116,
+      117,  116,  117,  116,  117,  116,  117,  116,  117,  116,
+      117,  116,  117,  116,  117,  116,  117,  116,  117,  117,
+      116,  117,   83,  116,  117,  116,  117,  117,  116,  117,
+      116,  117,  116,  117,  116,  117,  117,  116,  117,  116,
+
+      117,  116,  117,  116,  117,  117,  116,  117,  117,  104,
+      116,  117,  116,  117,  116,  117,  117,  116,  117,  117,
+      117,  117,  125,   21,   22,   30,  116,  117,  116,  117,
+      116,  117,  117,  116,  117,  116,  117,   41,  116,  117,
+      116,  117,  116,  117,  116,  117,  116,  117,  116,  117,
+      116,  117,  116,  117,  116,  117,  116,  117,  116,  117,
+       55,  116,  117,  116,  117,  116,  117,  116,  117,  116,
+      117,  117,  117,  117,  116,  117,  116,  117,  116,  117,
+      116,  117,  116,  117,  116,  117,  116,  117,  116,  117,
+      116,  117,  116,  117,  116,  117,  117,   81,  116,  117,
+
+      116,  117,  117,  116,  117,  116,  117,  116,  117,  116,
+      117,  117,  116,  117,  116,  117,   97,  116,  117,   98,
+      116,  117,  117,  116,  117,  117,  105,  116,  117,  116,
+      117,  117,  117,  117,  117,  117,   21,   22,  116,  117,
+      116,  117,  117,   38,  116,  117,  116,  117,  116,  117,
+      116,  117,  116,  117,   47,  116,  117,   48,  116,  117,
+      116,  117,  116,  117,   51,  116,  117,  116,  117,  116,
+      117,  116,  117,   57,  116,  117,  116,  117,  116,  117,
+      117,  117,  117,  116,  117,  116,  117,   68,  116,  117,
+       69,  116,  117,  116,  117,  116,  117,  116,  117,   73,
+
+      116,  117,  116,  117,  116,  117,  116,  117,  117,  116,
+      117,  117,   86,  116,  117,  116,  117,   89,  116,  117,
+       91,  116,  117,  117,  116,  117,  116,  117,  117,  116,
+      117,  117,  116,  117,  108,  117,  117,  117,  117,  117,
+       21,   22,  116,  117,  116,  117,  117,  116,  117,  116,
+      117,  116,  117,  116,  117,  116,  117,   50,  116,  117,
+      116,  117,  116,  117,   56,  116,  117,  116,  117,   59,
+      116,  117,  117,  117,  117,  117,  116,  117,   67,  116,
+      117,   70,  116,  117,   71,  116,  117,  116,  117,  116,
+      117,  117,  116,  117,  117,   85,  116,  117,  117,  116,
+
+      117,  117,  116,  117,   94,  116,  117,  117,  116,  117,
+      117,  116,  117,  117,  117,  117,  117,   21,   22,  116,
+      117,   34,  116,  117,   37,  117,   40,  116,  117,   43,
+      116,  117,  116,  117,  116,  117,  116,  117,  116,  117,
+      116,  117,  116,  117,  117,  117,  117,   65,  117,  116,
+      117,  116,  117,  116,  117,  117,  116,  117,  117,  117,
+      116,  117,  117,  116,  117,   99,  117,  116,  117,  117,
+      106,  116,  117,  117,  117,  117,  117,  126,   21,  116,
+      117,   44,  116,  117,  116,  117,   46,  116,  117,  116,
+      117,  116,  117,   54,  116,  117,  116,  117,  117,  117,
+
+      117,   66,  116,  117,  116,  117,  116,  117,  117,  116,
+      117,  117,  117,  116,  117,  117,  116,  117,  116,  117,
+      117,  109,  117,  117,  117,  117,   21,   33,  116,  117,
+       45,  116,  117,   49,  116,  117,  116,  117,  116,  117,
+      117,  117,  117,  116,  117,  116,  117,  117,  116,  117,
+      117,  117,  116,  117,  117,  116,  117,  116,  117,  117,
+      117,  117,  117,   21,  116,  117,  116,  117,  117,  117,
+      117,   72,  116,  117,   74,  116,  117,   75,  117,  116,
+      117,  117,  117,  116,  117,  117,   93,  116,  117,  116,
+      117,  117,  117,  117,  117,   21,  116,  117,   58,  116,
+
+      117,   63,  117,  117,   64,  117,  116,  117,   80,  117,
+      117,   88,  116,  117,  117,  116,  117,  101,  117,  117,
+      117,  111,  117,   21,  116,  117,  117,   78,  116,  117,
+      117,  117,  116,  117,  117,  110,  117,   21,  116,  117,
+       62,  117,  117,   90,  117,  103,  116,  117,  107,  117,
+       21,   52,  116,  117,   82,  117,   19,   21
     } ;
 
-static yyconst short int yy_accept[672] =
+static yyconst short int yy_accept[690] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    2,    4,    7,    9,   12,
        15,   18,   20,   23,   25,   28,   30,   33,   36,   39,
        41,   45,   49,   53,   57,   61,   65,   69,   73,   77,
        81,   85,   89,   93,   97,  101,  105,  109,  113,  117,
-      120,  123,  127,  130,  132,  135,  138,  142,  144,  147,
-      150,  153,  155,  158,  161,  163,  166,  169,  172,  175,
-      179,  182,  184,  189,  194,  197,  200,  202,  204,  207,
-      207,  208,  209,  210,  210,  211,  211,  212,  212,  212,
-      213,  214,  215,  216,  217,  217,  219,  221,  223,  225,
+      120,  123,  126,  128,  131,  134,  138,  140,  143,  146,
+      149,  151,  154,  157,  159,  162,  165,  168,  171,  175,
+      178,  180,  185,  190,  193,  196,  198,  200,  203,  203,
+      204,  205,  206,  206,  207,  207,  208,  208,  208,  209,
+      210,  211,  212,  213,  213,  215,  217,  219,  221,  223,
 
-      227,  229,  230,  232,  234,  236,  238,  241,  243,  245,
-      247,  249,  251,  253,  255,  257,  259,  260,  261,  263,
-      265,  267,  269,  271,  273,  275,  277,  278,  280,  282,
-      285,  287,  288,  290,  292,  294,  296,  297,  299,  301,
-      303,  305,  307,  309,  311,  313,  315,  316,  318,  320,
-      321,  322,  324,  325,  326,  327,  328,  329,  330,  331,
-      331,  332,  334,  336,  337,  338,  339,  339,  340,  341,
-      341,  341,  342,  343,  344,  346,  349,  352,  354,  356,
-      358,  361,  363,  365,  367,  369,  371,  373,  375,  377,
-      379,  381,  384,  386,  388,  390,  392,  394,  396,  397,
+      225,  226,  228,  230,  232,  234,  237,  239,  241,  243,
+      245,  247,  249,  251,  253,  255,  256,  257,  259,  261,
+      263,  265,  267,  269,  271,  273,  274,  276,  278,  281,
+      283,  284,  286,  288,  290,  292,  293,  295,  297,  299,
+      301,  303,  305,  307,  309,  311,  312,  314,  316,  317,
+      318,  320,  321,  321,  321,  321,  322,  323,  324,  325,
+      326,  327,  327,  328,  330,  332,  333,  334,  335,  335,
+      336,  337,  337,  337,  338,  339,  340,  342,  345,  348,
+      350,  352,  354,  357,  359,  361,  363,  365,  367,  369,
+      371,  373,  375,  377,  380,  382,  384,  386,  388,  390,
 
-      398,  400,  402,  404,  406,  408,  410,  412,  415,  418,
-      420,  421,  423,  425,  427,  428,  430,  433,  435,  437,
-      439,  440,  442,  444,  446,  449,  451,  453,  455,  457,
-      459,  461,  463,  464,  466,  468,  470,  471,  472,  473,
-      475,  476,  478,  481,  481,  482,  483,  485,  487,  489,
-      491,  493,  495,  497,  499,  501,  503,  505,  507,  509,
-      511,  513,  515,  517,  519,  521,  523,  525,  527,  530,
-      531,  532,  534,  536,  538,  540,  542,  544,  546,  548,
-      550,  553,  554,  556,  558,  560,  561,  563,  565,  567,
-      569,  570,  573,  575,  577,  580,  582,  584,  586,  589,
+      392,  393,  394,  396,  398,  400,  402,  404,  406,  408,
+      411,  414,  416,  417,  419,  421,  423,  424,  426,  429,
+      431,  433,  435,  436,  438,  440,  442,  445,  447,  449,
+      451,  453,  455,  457,  459,  460,  462,  464,  466,  467,
+      468,  469,  471,  471,  471,  472,  474,  477,  477,  478,
+      479,  481,  483,  485,  487,  489,  491,  493,  495,  497,
+      499,  501,  503,  505,  507,  509,  511,  513,  515,  517,
+      519,  521,  523,  526,  527,  528,  530,  532,  534,  536,
+      538,  540,  542,  544,  546,  549,  550,  552,  554,  556,
+      557,  559,  561,  563,  565,  566,  569,  571,  573,  576,
 
-      592,  594,  595,  597,  599,  601,  603,  605,  606,  607,
-      608,  611,  613,  615,  617,  619,  622,  623,  625,  627,
-      629,  632,  634,  636,  638,  640,  642,  644,  646,  648,
-      650,  652,  654,  656,  658,  661,  662,  663,  664,  666,
-      668,  670,  672,  674,  676,  678,  680,  682,  684,  685,
-      687,  690,  692,  693,  695,  697,  699,  701,  702,  704,
-      706,  708,  710,  711,  713,  714,  717,  719,  721,  722,
-      724,  725,  726,  727,  729,  732,  734,  736,  737,  739,
-      741,  744,  746,  748,  750,  752,  754,  756,  758,  760,
-      762,  764,  767,  769,  771,  773,  775,  776,  777,  778,
+      578,  580,  582,  585,  588,  590,  591,  593,  595,  597,
+      599,  601,  602,  603,  604,  607,  607,  607,  607,  607,
+      609,  611,  613,  615,  618,  619,  621,  623,  625,  628,
+      630,  632,  634,  636,  638,  640,  642,  644,  646,  648,
+      650,  652,  654,  657,  658,  659,  660,  662,  664,  666,
+      668,  670,  672,  674,  676,  678,  680,  681,  683,  686,
+      688,  689,  691,  693,  695,  697,  698,  700,  702,  704,
+      706,  707,  709,  710,  713,  715,  717,  718,  720,  721,
+      722,  723,  723,  723,  724,  726,  729,  731,  733,  734,
+      736,  738,  741,  743,  745,  747,  749,  751,  753,  755,
 
-      780,  782,  784,  786,  788,  790,  792,  794,  796,  798,
-      800,  801,  804,  806,  807,  809,  811,  813,  815,  816,
-      818,  820,  823,  826,  827,  829,  830,  833,  835,  836,
-      837,  838,  839,  840,  842,  844,  846,  847,  850,  852,
-      854,  856,  858,  861,  864,  866,  868,  871,  873,  875,
-      877,  880,  882,  884,  885,  886,  887,  889,  891,  894,
-      897,  899,  901,  903,  906,  908,  910,  912,  913,  915,
-      916,  919,  921,  924,  927,  928,  930,  932,  933,  935,
-      936,  938,  940,  941,  942,  943,  944,  946,  948,  950,
-      951,  953,  955,  957,  959,  961,  964,  966,  968,  971,
+      757,  759,  761,  764,  766,  768,  770,  772,  773,  774,
+      775,  777,  779,  781,  783,  785,  787,  789,  791,  793,
+      795,  797,  798,  801,  803,  804,  806,  808,  810,  812,
+      813,  815,  817,  820,  823,  824,  826,  827,  830,  832,
+      833,  834,  835,  836,  837,  837,  837,  839,  841,  843,
+      844,  847,  849,  851,  853,  855,  858,  861,  863,  865,
+      868,  870,  872,  874,  877,  879,  881,  882,  883,  884,
+      886,  888,  891,  894,  896,  898,  900,  903,  905,  907,
+      909,  910,  912,  913,  916,  918,  921,  924,  925,  927,
+      929,  930,  932,  933,  935,  937,  938,  939,  940,  941,
 
-      973,  976,  977,  978,  979,  980,  982,  985,  988,  991,
-      993,  995,  996,  998,  999, 1002, 1003, 1005, 1006, 1008,
-     1011, 1012, 1014, 1015, 1017, 1018, 1019, 1020, 1021, 1023,
-     1025, 1028, 1030, 1033, 1036, 1038, 1040, 1042, 1044, 1046,
-     1048, 1049, 1050, 1051, 1053, 1055, 1057, 1059, 1060, 1062,
-     1063, 1064, 1066, 1067, 1069, 1071, 1073, 1074, 1077, 1078,
-     1079, 1080, 1081, 1082, 1084, 1087, 1089, 1092, 1094, 1096,
-     1099, 1101, 1102, 1103, 1104, 1107, 1109, 1111, 1112, 1114,
-     1115, 1116, 1118, 1119, 1121, 1123, 1124, 1126, 1127, 1128,
-     1129, 1130, 1133, 1136, 1139, 1141, 1143, 1144, 1145, 1146,
+      941,  943,  945,  947,  948,  950,  952,  954,  956,  958,
+      961,  963,  965,  968,  970,  973,  974,  975,  976,  977,
+      979,  982,  985,  988,  990,  992,  993,  995,  996,  999,
+     1000, 1002, 1003, 1005, 1008, 1009, 1011, 1012, 1014, 1015,
+     1016, 1017, 1018, 1018, 1018, 1020, 1022, 1025, 1027, 1030,
+     1033, 1035, 1037, 1039, 1041, 1043, 1045, 1046, 1047, 1048,
+     1050, 1052, 1054, 1056, 1057, 1059, 1060, 1061, 1063, 1064,
+     1066, 1068, 1070, 1071, 1074, 1075, 1076, 1077, 1078, 1078,
+     1079, 1080, 1082, 1085, 1087, 1090, 1092, 1094, 1097, 1099,
+     1100, 1101, 1102, 1105, 1107, 1109, 1110, 1112, 1113, 1114,
 
-     1148, 1150, 1151, 1153, 1154, 1155, 1157, 1158, 1160, 1162,
-     1163, 1164, 1165, 1166, 1167, 1169, 1171, 1172, 1173, 1174,
-     1177, 1180, 1182, 1184, 1185, 1186, 1188, 1189, 1192, 1194,
-     1195, 1196, 1197, 1198, 1199, 1201, 1204, 1206, 1207, 1209,
-     1211, 1213, 1214, 1217, 1218, 1220, 1222, 1223, 1224, 1226,
-     1227, 1229, 1230, 1233, 1234, 1235, 1237, 1238, 1240, 1241,
-     1243, 1245, 1246, 1248, 1251, 1253, 1254, 1257, 1259, 1261,
-     1261
+     1116, 1117, 1119, 1121, 1122, 1124, 1125, 1126, 1127, 1128,
+     1131, 1134, 1137, 1139, 1141, 1142, 1143, 1144, 1146, 1148,
+     1149, 1151, 1152, 1153, 1155, 1156, 1158, 1160, 1161, 1162,
+     1163, 1164, 1165, 1167, 1169, 1170, 1171, 1172, 1175, 1178,
+     1180, 1182, 1183, 1184, 1186, 1187, 1190, 1192, 1193, 1194,
+     1195, 1196, 1197, 1199, 1202, 1204, 1205, 1207, 1209, 1211,
+     1212, 1215, 1216, 1218, 1220, 1221, 1222, 1224, 1225, 1227,
+     1228, 1231, 1232, 1233, 1235, 1236, 1238, 1239, 1241, 1243,
+     1244, 1246, 1249, 1251, 1252, 1255, 1257, 1259, 1259
     } ;
 
 static yyconst int yy_ec[256] =
@@ -540,16 +541,16 @@
         4,    4,    4,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    2,    5,    6,    1,    1,    1,    7,    8,    9,
-        9,   10,    1,    9,   11,   12,   13,   14,   15,   16,
-       16,   17,   18,   19,   16,   20,   16,   21,   22,   23,
-       24,    1,    1,    9,   25,   26,   27,   28,   29,   30,
-       31,   32,   33,   34,   35,   36,   37,   38,   39,   40,
-       41,   42,   43,   44,   45,   46,   47,   48,   49,   50,
-        9,    1,   51,   52,    1,    1,   53,   54,   55,   56,
+        9,   10,    1,   11,   12,   13,   14,   15,   16,   17,
+       17,   18,   19,   20,   17,   21,   22,   23,   24,   25,
+       26,    1,    1,    9,   27,   28,   29,   30,   31,   32,
+       33,   34,   35,   36,   37,   38,   39,   40,   41,   42,
+       43,   44,   45,   46,   47,   48,   49,   50,   51,   52,
+        9,    1,   53,   54,    1,    1,   55,   56,   57,   58,
 
-       57,   58,   59,   60,   61,   62,   58,   63,   64,   65,
-       66,   67,   58,   68,   69,   70,   71,   72,   58,   73,
-       58,   74,   75,   76,   77,    1,    1,    1,    1,    1,
+       59,   60,   61,   62,   63,   64,   60,   65,   66,   67,
+       68,   69,   60,   70,   71,   72,   73,   74,   60,   75,
+       60,   76,   77,   78,   79,    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,
@@ -566,659 +567,696 @@
         1,    1,    1,    1,    1
     } ;
 
-static yyconst int yy_meta[78] =
+static yyconst int yy_meta[80] =
     {   0,
         1,    2,    3,    3,    1,    4,    5,    6,    1,    1,
-        7,    1,    1,    8,    8,    8,    8,    8,    8,    8,
-        9,    1,    1,    9,    8,    8,    8,    8,    8,    8,
-       10,   10,   10,   10,   10,   10,   10,   10,   10,   10,
-       10,   10,   10,   10,   10,   10,   10,   10,   10,   10,
-        1,    1,   10,   10,   10,   10,   10,   10,   10,   10,
-       10,   10,   10,   10,   10,   10,   10,   10,   10,   10,
-       10,   10,   10,   10,   11,    1,   11
+        7,    8,    1,    1,    9,    9,    9,    9,    9,    9,
+        9,    9,   10,    1,    1,   10,   11,   11,   11,   11,
+       11,   11,   12,   12,   12,   12,   12,   12,   12,   12,
+       12,   12,   12,   12,   12,   12,   12,   12,   12,   12,
+       12,   12,    1,    1,   12,   12,   12,   12,   12,   12,
+       12,   12,   12,   12,   12,   12,   12,   12,   12,   12,
+       12,   12,   12,   12,   12,   12,   13,    1,   14
     } ;
 
-static yyconst short int yy_base[689] =
+static yyconst short int yy_base[709] =
     {   0,
-        0,    0,   75,   77,   79,   80,   81,   88,   82,   92,
-      169,  246,  108,  119,  797,  777,   94,   97,  775,  774,
-      316,  116, 4266,  117,  767,   99, 4266,  124,  751, 4266,
-      380,  173,  191,  120,  236,  254,  269,  188,  275,  430,
-      431,  447,  453,  468,  474,  490,  498,  514,  515,  762,
-        0,  760,    0, 4266, 4266,  756, 4266, 4266,  753,  754,
-        0,    0,  757,    0,    0,  740, 4266, 4266, 4266,    0,
-     4266, 4266,  575,  651,    0,  148,  151,  256, 4266,  746,
-      159,    0,  745,  743,    0,   95,    0,  325,  739, 4266,
-      223,  733, 4266,  550,  715,  564,  565,  580,  593,  596,
+        0,    0,   77,   79,   82,   83,   81,   92,   85,   91,
+      170,  249,  120,  126,  852,  843,   97,  117,  837,  835,
+      321,  132, 4544,  133,  828,   94, 4544,  170,  814, 4544,
+      386,  178,  193,  239,  250,  266,  277,  118,  293,  436,
+      437,  453,  459,  474,  480,  497,  500,  515,  523,    0,
+      569,    0, 4544, 4544,  822, 4544, 4544,  811,  814,    0,
+        0,  803,    0,    0,  784, 4544, 4544, 4544,    0, 4544,
+     4544,  591,  669,    0,  135,  140,  107, 4544,  800,  208,
+        0,  797,  791,    0,  174,    0,  604,  784, 4544,  606,
+      778, 4544,  614,  764,  609,  610,  625,  659,  626,  658,
 
-      609,    0,  640,  643,  656,  669,  680,  696,  704,  717,
-      720,  733,  748,  754,  751,  769,  673,  684,  784,  787,
-      795,  810,  821,  832,  838,  849,  669,  862,  865,  878,
-      886,  669,  889,  902,  913,  926,  667,  942,  948,  959,
-      965,  976,  991,  992, 1007, 1008,  663, 1023, 1024,  663,
-       58, 1039,    0,    0, 4266, 4266,    0, 4266,    0,  699,
-        0,  681,  159,    0,  201, 4266,  706,    0,    0,  163,
-      683, 1071, 4266, 4266, 1066, 1067, 1082, 1083, 1098, 1106,
-     1109, 1122, 1130, 1138, 1146, 1159, 1167, 1170, 1191, 1192,
-     1207, 1213, 1224, 1230, 1241, 1247, 1258, 1269,  656,  645,
+        0,  674,  687,  690,  698,  713,  716,  734,  731,  747,
+      755,  770,  776,  773,  791,  721,  731,  802,  808,  819,
+      825,  836,  847,  853,  864,  718,  877,  880,  893,  901,
+      718,  904,  917,  928,  941,  717,  957,  963,  974,  980,
+      991,  997, 1008, 1014, 1025,  712, 1031, 1047,  705,   32,
+     1046,    0, 1093, 1105, 1117,    0, 4544, 4544,    0, 4544,
+        0,  741,    0,  726,  236,    0,  234, 4544,  753,    0,
+        0,   78,  730, 1083, 4544, 4544, 1112, 1113, 1128, 1129,
+     1144, 1152, 1155, 1168, 1176, 1184, 1192, 1205, 1213, 1216,
+     1237, 1238, 1253, 1259, 1270, 1276, 1287, 1293, 1304, 1315,
 
-     1282, 1290, 1293, 1308, 1311, 1314, 1338, 1332, 1335, 1353,
-      654, 1356, 1371, 1377,  653, 1388, 1399, 1405, 1416, 1427,
-      639, 1438, 1444, 1455, 1461, 1476, 1477, 1492, 1503, 1509,
-     1524, 1530,  643, 1541, 1552, 1563,  627,  641,  636, 1574,
-     4266,  162,  655,  640, 4266, 4266, 1585, 1591, 1602, 1608,
-     1619, 1625, 1641, 1642, 1657, 1665, 1673, 1689, 1686, 1697,
-     1710, 1713, 1728, 1734, 1745, 1751, 1762, 1777, 1783,  622,
-      626, 1794, 1800, 1815, 1816, 1831, 1837, 1852, 1855, 1863,
-     1876,  616, 1884, 1887, 1900,  622, 1908, 1924, 1923, 1940,
-      600, 1941, 1956, 1969, 1977, 1980, 1998, 1995, 2001, 2016,
+      693,  681, 1328, 1336, 1339, 1354, 1357, 1360, 1385, 1382,
+     1388, 1403,  690, 1406, 1421, 1427,  689, 1438, 1449, 1455,
+     1466, 1477,  679, 1488, 1494, 1505, 1511, 1526, 1527, 1542,
+     1553, 1559, 1574, 1580,  683, 1591, 1602, 1615,  661,  672,
+      661, 1618, 1664, 1672, 4544,   69,  680,  666, 4544, 4544,
+     1631, 1667, 1673, 1688, 1689, 1706, 1705, 1722, 1728, 1739,
+     1750, 1766, 1763, 1774, 1787, 1790, 1805, 1811, 1822, 1828,
+     1839, 1854, 1860,  647,  651, 1871, 1877, 1892, 1893, 1908,
+     1914, 1929, 1942, 1950, 1958,  641, 1973, 1976, 1989,  651,
+     1997, 2012, 2015, 2033,  631, 2030, 2036, 2053, 2059, 2070,
 
-     2019,  598, 2022, 2037, 2040, 2048, 2061,  610,  599,  601,
-     2072,  187, 2085, 2088, 2106, 2109,  582, 2112, 2129, 2132,
-     2140, 2153, 2161, 2169, 2182, 2190, 2203, 2211, 2219, 2227,
-     2242, 2248, 2259, 2265, 2280,  595,  585,  576, 2281, 2301,
-     2298, 2319, 2318, 2334, 2340, 2351, 2362, 2373,  582, 2379,
-     2390, 2396,  570, 2407, 2418, 2424, 2435,  586, 2448, 2451,
-     2459, 2472,  569, 2483,  573, 2489, 2504, 2505,  564, 2520,
-      556,  553,  558,  227, 2526, 2542, 2548,  556, 2559, 2565,
-     2576, 2582, 2598, 2599, 2614, 2625, 2631, 2648, 2654, 2665,
-     2671, 2682, 2688, 2699, 2705, 2721,  552,  559,  552, 2722,
+     2076, 2087, 2093, 2104, 2110,  619, 2125, 2126, 2143, 2142,
+     2159,  631,  621,  632, 2160, 2206,  824, 2214, 2226,   86,
+     2211, 2226, 2232, 2243,  615, 2249, 2264, 2267, 2275, 2288,
+     2296, 2304, 2317, 2325, 2338, 2346, 2354, 2362, 2377, 2383,
+     2394, 2400, 2415,  629,  608,  592, 2416, 2436, 2433, 2454,
+     2453, 2469, 2475, 2486, 2492, 2507,  598, 2510, 2513, 2530,
+      588, 2531, 2546, 2552, 2563,  604, 2576, 2579, 2587, 2600,
+      588, 2611,  587, 2617, 2632, 2633,  577, 2648,  572,  569,
+      575,  239, 2681, 4544,   78, 2666, 2683, 2686,  576, 2689,
+     2706, 2707, 2727, 2733, 2744, 2750, 2765, 2771, 2788, 2794,
 
-     2737, 2743, 2754, 2760, 2775, 2781, 2792, 2807, 2813, 2824,
-      557, 2835, 2841,  583, 2852, 2858, 2869, 2882,  553, 2890,
-     2905, 2908, 2911,  534, 2926,  521, 2929, 2932,  536,  524,
-      520,  522,  521,  539, 2947, 2960,  509, 2963, 2978, 2984,
-     2995, 3001, 3012, 3018, 3029, 3040, 3046, 3057, 3063, 3074,
-     3085, 3091, 3102,  105,  530,  507, 3108, 3119, 3130, 3136,
-     3147, 3153, 3168, 3169, 3184, 3190, 3201,  528, 3207,  505,
-     3218, 3229, 3235, 3246,  498, 3252, 3267,  493, 3273,  514,
-     3289,    0,  495,  496,  473,  502,  251, 3290, 3305,  485,
-     3311, 3322, 3333, 3339, 3350, 3356, 3372, 3371, 3387, 3388,
+     2805, 2811, 2822, 2828, 2839, 2845, 2861,  553,  556,  548,
+     2862, 2877, 2883, 2894, 2900, 2915, 2921, 2932, 2947, 2953,
+     2964,  553, 2975, 2981,  565, 2992, 2998, 3009, 3022,  538,
+     3030, 3045, 3048, 3051,  530, 3066,  508, 3069, 3072,  523,
+      511,  509,  520,  518, 3118, 3130,  536, 3115, 3128,  508,
+     3131, 3146, 3152, 3163, 3169, 3180, 3186, 3197, 3208, 3214,
+     3225, 3231, 3242, 3253, 3259, 3270,  159,  529,  502, 3276,
+     3287, 3298, 3304, 3315, 3321, 3336, 3337, 3352, 3358, 3369,
+      523, 3375,  507, 3386, 3397, 3403, 3414,  499, 3420, 3435,
+      493, 3441,  514, 3457,    0,  491,  497,  475,  504, 3490,
 
-     3403,  467,  459,  461,  470, 3409, 3420, 3426, 3437, 3443,
-     3454,  459, 3465,  455, 3471,  453, 3482,  463, 3493, 3499,
-      458, 3510,  441, 3516,  440,  436,  453,  420,  196, 3527,
-     3533,    0, 3544, 3550, 3565, 3566, 3581, 3582, 3597, 3598,
-      420,  429,  416,    0, 3613, 3621, 3636,  421, 3637,  412,
-      417, 3652,  422, 3660,    0, 3668,  396, 3681,  403,  418,
-      390,  391,  431, 3684, 3692, 3705, 3708, 3716, 3729, 3737,
-     3745,  371,  375,  343, 3753, 3761, 3769,  338, 3777,  341,
-      333, 3785,  323, 3793, 3801,  331,    0,  297,  268,  274,
-      295, 3809, 3817, 3825, 3833, 3841,  267,  287,  265, 3854,
+      126, 3485, 3486,  475, 3501, 3509, 3512, 3525, 3533, 3541,
+     3554, 3562, 3570, 3578, 3586,  458,  447,  447,  452, 3599,
+     3607, 3610, 3623, 3631, 3634,  437, 3647,  432, 3655,  427,
+     3663,  437, 3676, 3679,  433, 3687,  420, 3700,  423,  423,
+      435,  401, 3733,  466,  190, 3718, 3729,    0, 3735, 3746,
+     3752, 3767, 3768, 3783, 3789, 3800,  402,  408,  396,    0,
+     3806, 3817, 3828,  377, 3834,  369,  355, 3845,  366, 3856,
+        0, 3862,  340, 3873,  348,  355,  327,  304,  530, 4544,
+      317, 3879, 3890, 3901, 3907, 3918, 3929, 3940, 3946,  281,
+      285,  279, 3957, 3963, 3974,  274, 3980,  276,  267, 3991,
 
-     3862,  266, 3870,  254,  256, 3878,  248, 3891, 3894,  245,
-      238,  243,  237,  255, 3902, 3915,  232,  227,  228, 3918,
-     3931,    0, 3939,  227,  218, 3942,  222, 3959, 3960,  218,
-      210,  201,  204,  217, 3975, 3976,    0,  171,    0, 3992,
-        0,  162, 3993,  154, 4010,    0,  151,  149,    0,  146,
-     4018,  127, 4026,  102,  105, 4034,   86,    0,   90, 4042,
-        0,   40,    0, 4055,    0,   68, 4058,    0,    0, 4266,
-     4103, 4114, 4125, 4136, 4147, 4158, 4169, 4179, 4181, 4191,
-     4202, 4213, 4223, 4233, 4243, 4247, 4251, 4255
+      262, 3997, 4008,  267,    0,  253,  252,  253,  273, 4014,
+     4025, 4031, 4042, 4048,  245,  265,  242, 4059, 4065,  246,
+     4080,  234,  236, 4083,  228, 4086, 4103,  229,  225,  228,
+      220,  245, 4106, 4109,  223,  220,  221, 4126, 4127,    0,
+     4142,  210,  200, 4143,  205, 4158, 4164,  203,  183,  178,
+      183,  193, 4175, 4186,    0,  166,    0, 4192,    0,  154,
+     4207,  148, 4210,    0,  147,  147,    0,  163, 4218,  141,
+     4233,  101,  106, 4234,  102,    0,  116, 4249,    0,   62,
+        0, 4255,    0,   69, 4266,    0,    0, 4544, 4313, 4327,
+     4341, 4355, 4369, 4383, 4397, 4410, 4414, 4426, 4440, 4454,
+
+     4466, 4478, 4490, 4495, 4500, 4505, 4516, 4529
     } ;
 
-static yyconst short int yy_def[689] =
+static yyconst short int yy_def[709] =
     {   0,
-      670,    1,  671,  671,  672,  672,  673,  673,  674,  674,
-      675,  675,  676,  676,  670,  670,  670,  670,  670,  677,
-      670,  678,  670,  670,  670,  670,  670,  670,  670,  670,
-      670,   31,   31,   31,   31,   31,   31,   31,   31,   31,
-       31,   31,   31,   31,   31,   31,   31,   31,   31,  670,
-      679,  670,  680,  670,  670,  670,  670,  670,  670,  670,
-      681,  681,  670,  682,  682,  670,  670,  670,  670,  683,
-      670,  670,  684,  684,  685,  670,  670,   21,  670,  670,
-      670,  677,  677,  670,  686,  670,  687,  678,  678,  670,
-      670,  670,  670,  670,  670,   31,   31,   31,   31,   31,
-
-       31,  688,   31,   31,   31,   31,   31,   31,   31,   31,
-       31,   31,   31,   31,   31,   31,  688,  688,   31,   31,
-       31,   31,   31,   31,   31,   31,  688,   31,   31,   31,
-       31,  688,   31,   31,   31,   31,  688,   31,   31,   31,
-       31,   31,   31,   31,   31,   31,  688,   31,   31,  688,
-      688,   31,  679,  680,  670,  670,  681,  670,  682,  670,
-      683,   74,   74,  685,  670,  670,  670,  686,  687,  670,
-      670,  670,  670,  670,   31,   31,   31,   31,   31,   31,
-       31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
-       31,   31,   31,   31,   31,   31,   31,   31,  688,  688,
-
-       31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
-      688,   31,   31,   31,  688,   31,   31,   31,   31,   31,
+      688,    1,  689,  689,  690,  690,  691,  691,  692,  692,
+      693,  693,  694,  694,  688,  688,  688,  688,  688,  695,
+      688,  696,  688,  688,  688,  688,  688,  688,  688,  688,
       688,   31,   31,   31,   31,   31,   31,   31,   31,   31,
-       31,   31,  688,   31,   31,   31,  688,  688,  688,   31,
-      670,   74,   74,  670,  670,  670,   31,   31,   31,   31,
-       31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
-       31,   31,   31,   31,   31,   31,   31,   31,   31,  688,
-      688,   31,   31,   31,   31,   31,   31,   31,   31,   31,
-       31,  688,   31,   31,   31,  688,   31,   31,   31,   31,
-      688,   31,   31,   31,   31,   31,   31,   31,   31,   31,
+       31,   31,   31,   31,   31,   31,   31,   31,   31,  697,
+      688,  698,  688,  688,  688,  688,  688,  688,  688,  699,
+      699,  688,  700,  700,  688,  688,  688,  688,  701,  688,
+      688,  702,  702,  703,  688,  688,   21,  688,  688,  688,
+      695,  695,  688,  704,  688,  705,  696,  696,  688,  688,
+      688,  688,  688,  688,   31,   31,   31,   31,   31,   31,
 
-       31,  688,   31,   31,   31,   31,   31,  688,  688,  688,
-       31,   74,   31,   31,   31,   31,  688,   31,   31,   31,
+      706,   31,   31,   31,   31,   31,   31,   31,   31,   31,
+       31,   31,   31,   31,   31,  706,  706,   31,   31,   31,
+       31,   31,   31,   31,   31,  706,   31,   31,   31,   31,
+      706,   31,   31,   31,   31,  706,   31,   31,   31,   31,
+       31,   31,   31,   31,   31,  706,   31,   31,  706,  706,
+       31,  697,  688,  688,  688,  698,  688,  688,  699,  688,
+      700,  688,  701,   73,   73,  703,  688,  688,  688,  704,
+      705,  688,  688,  688,  688,  688,   31,   31,   31,   31,
        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
-       31,   31,   31,   31,   31,  688,  688,  688,   31,   31,
-       31,   31,   31,   31,   31,   31,   31,   31,  688,   31,
-       31,   31,  688,   31,   31,   31,   31,  688,   31,   31,
-       31,   31,  688,   31,  688,   31,   31,   31,  688,   31,
-      688,  688,  688,   74,   31,   31,   31,  688,   31,   31,
-       31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
-       31,   31,   31,   31,   31,   31,  688,  688,  688,   31,
-
-       31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
-      688,   31,   31,  688,   31,   31,   31,   31,  688,   31,
-       31,   31,   31,  688,   31,  688,   31,   31,  688,  688,
-      688,  688,  688,   74,   31,   31,  688,   31,   31,   31,
-       31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
-       31,   31,   31,  688,  688,  688,   31,   31,   31,   31,
-       31,   31,   31,   31,   31,   31,   31,  688,   31,  688,
-       31,   31,   31,   31,  688,   31,   31,  688,   31,  688,
-       31,  688,  688,  688,  688,  688,   74,   31,   31,  688,
        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
 
-       31,  688,  688,  688,  688,   31,   31,   31,   31,   31,
-       31,  688,   31,  688,   31,  688,   31,  688,   31,   31,
-      688,   31,  688,   31,  688,  688,  688,  688,   74,   31,
-       31,  688,   31,   31,   31,   31,   31,   31,   31,   31,
-      688,  688,  688,  688,   31,   31,   31,  688,   31,  688,
-      688,   31,  688,   31,  688,   31,  688,   31,  688,  688,
-      688,  688,  683,   31,   31,   31,   31,   31,   31,   31,
-       31,  688,  688,  688,   31,   31,   31,  688,   31,  688,
-      688,   31,  688,   31,   31,  688,  688,  688,  688,  688,
-      683,   31,   31,   31,   31,   31,  688,  688,  688,   31,
+      706,  706,   31,   31,   31,   31,   31,   31,   31,   31,
+       31,   31,  706,   31,   31,   31,  706,   31,   31,   31,
+       31,   31,  706,   31,   31,   31,   31,   31,   31,   31,
+       31,   31,   31,   31,  706,   31,   31,   31,  706,  706,
+      706,   31,  688,  688,  688,   73,   73,  688,  688,  688,
+       31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
+       31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
+       31,   31,   31,  706,  706,   31,   31,   31,   31,   31,
+       31,   31,   31,   31,   31,  706,   31,   31,   31,  706,
+       31,   31,   31,   31,  706,   31,   31,   31,   31,   31,
 
-       31,  688,   31,  688,  688,   31,  688,   31,   31,  688,
-      688,  688,  688,  683,   31,   31,  688,  688,  688,   31,
-       31,  688,   31,  688,  688,   31,  688,   31,   31,  688,
-      688,  688,  688,  683,   31,   31,  688,  688,  688,   31,
-      688,  688,   31,  688,   31,  688,  688,  688,  688,  683,
-       31,  688,   31,  688,  688,   31,  688,  688,  683,   31,
-      688,  688,  688,   31,  688,  683,   31,  688,  683,    0,
-      670,  670,  670,  670,  670,  670,  670,  670,  670,  670,
-      670,  670,  670,  670,  670,  670,  670,  670
+       31,   31,   31,   31,   31,  706,   31,   31,   31,   31,
+       31,  706,  706,  706,   31,  688,  707,  688,  688,   73,
+       31,   31,   31,   31,  706,   31,   31,   31,   31,   31,
+       31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
+       31,   31,   31,  706,  706,  706,   31,   31,   31,   31,
+       31,   31,   31,   31,   31,   31,  706,   31,   31,   31,
+      706,   31,   31,   31,   31,  706,   31,   31,   31,   31,
+      706,   31,  706,   31,   31,   31,  706,   31,  706,  706,
+      706,  688,  688,  688,   73,   31,   31,   31,  706,   31,
+       31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
+
+       31,   31,   31,   31,   31,   31,   31,  706,  706,  706,
+       31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
+       31,  706,   31,   31,  706,   31,   31,   31,   31,  706,
+       31,   31,   31,   31,  706,   31,  706,   31,   31,  706,
+      706,  706,  706,  706,  688,  688,   73,   31,   31,  706,
+       31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
+       31,   31,   31,   31,   31,   31,  706,  706,  706,   31,
+       31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
+      706,   31,  706,   31,   31,   31,   31,  706,   31,   31,
+      706,   31,  706,   31,  706,  706,  706,  706,  706,  688,
+
+       73,   31,   31,  706,   31,   31,   31,   31,   31,   31,
+       31,   31,   31,   31,   31,  706,  706,  706,  706,   31,
+       31,   31,   31,   31,   31,  706,   31,  706,   31,  706,
+       31,  706,   31,   31,  706,   31,  706,   31,  706,  706,
+      706,  706,  688,  708,   73,   31,   31,  706,   31,   31,
+       31,   31,   31,   31,   31,   31,  706,  706,  706,  706,
+       31,   31,   31,  706,   31,  706,  706,   31,  706,   31,
+      706,   31,  706,   31,  706,  706,  706,  706,  688,  688,
+      701,   31,   31,   31,   31,   31,   31,   31,   31,  706,
+      706,  706,   31,   31,   31,  706,   31,  706,  706,   31,
+
+      706,   31,   31,  706,  706,  706,  706,  706,  701,   31,
+       31,   31,   31,   31,  706,  706,  706,   31,   31,  706,
+       31,  706,  706,   31,  706,   31,   31,  706,  706,  706,
+      706,  701,   31,   31,  706,  706,  706,   31,   31,  706,
+       31,  706,  706,   31,  706,   31,   31,  706,  706,  706,
+      706,  701,   31,   31,  706,  706,  706,   31,  706,  706,
+       31,  706,   31,  706,  706,  706,  706,  701,   31,  706,
+       31,  706,  706,   31,  706,  706,  701,   31,  706,  706,
+      706,   31,  706,  701,   31,  706,  701,    0,  688,  688,
+      688,  688,  688,  688,  688,  688,  688,  688,  688,  688,
+
+      688,  688,  688,  688,  688,  688,  688,  688
     } ;
 
-static yyconst short int yy_nxt[4344] =
+static yyconst short int yy_nxt[4624] =
     {   0,
        16,   17,   18,   17,   19,   20,   21,   22,   23,   16,
-       24,   25,   26,   27,   28,   28,   28,   28,   28,   28,
-       29,   19,   30,   30,   31,   32,   33,   34,   35,   36,
-       37,   38,   39,   38,   38,   38,   40,   41,   42,   43,
-       38,   44,   45,   46,   47,   48,   49,   38,   38,   38,
-       19,   50,   51,   51,   51,   51,   51,   51,   51,   51,
-       51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
-       51,   51,   51,   51,   23,   52,   23,   54,   55,   54,
-       55,   58,   58,   62,   65,   56,   63,   56,   59,   59,
-       62,   60,   60,   63,   65,   81,   81,   81,   81,   81,
+       23,   24,   25,   26,   27,   28,   28,   28,   28,   28,
+       28,   28,   29,   19,   30,   30,   31,   32,   33,   34,
+       35,   36,   37,   38,   39,   38,   38,   38,   40,   41,
+       42,   43,   38,   44,   45,   46,   47,   48,   49,   38,
+       38,   38,   19,   19,   50,   50,   50,   50,   50,   50,
+       50,   50,   50,   50,   50,   50,   50,   50,   50,   50,
+       50,   50,   50,   50,   50,   50,   51,   19,   23,   53,
+       54,   53,   54,   61,   57,   57,   62,   64,   55,  240,
+       55,   58,   58,   64,   61,   59,   59,   62,   80,   80,
 
-       81,   80,   66,  669,   80,   67,   80,  668,   93,   76,
-       77,   76,   66,  238,   78,   67,   84,   88,   88,   88,
-       76,   77,   76,   80,   80,   78,  239,   90,  666,   88,
-       88,   91,   91,   91,   91,   91,   91,   94,   94,   94,
-       94,   94,   94,   94,  665,   96,   86,  502,  111,  165,
-      165,  165,  165,  165,  165,   96,   68,   96,   69,   96,
-       81,   81,   81,  663,   96,  503,   68,  662,   69,   70,
-       71,   72,   71,   70,   70,   70,   70,   70,   70,   70,
-       70,   70,   30,  661,   79,  242,  243,  659,  245,   70,
-       70,   70,   70,   30,  246,   79,  162,   74,   96,  162,
+       80,   79,  241,   92,   79,  249,  687,   65,  164,  320,
+       66,  250,  447,   65,  688,  385,   66,  164,   80,   80,
+       80,   75,   76,   75,   79,  164,   77,   75,   76,   75,
+      688,  686,   77,   87,   87,   87,  167,  167,  167,   79,
+       79,  167,  167,  167,   89,   95,   87,   87,   90,   90,
+       90,   90,   90,   90,   90,   95,  684,   95,  545,   95,
+      688,   67,  683,   68,   95,  164,  681,   67,  680,   68,
+       69,   70,   71,   70,   69,   69,   69,   69,   69,   69,
+       69,   69,   69,   69,   93,   93,   93,   93,   93,   93,
+       93,   93,   69,   69,   69,   69,   30,   83,   78,  679,
 
-      312,  103,  165,  165,  165,  104,  563,  658,   96,  105,
-       96,  106,   96,   96,  374,  657,   96,   96,  655,   70,
-       70,  107,  108,   96,  162,   96,  109,   96,   96,  110,
-       96,  654,   96,  162,  652,   96,  172,  172,  172,  172,
-      172,  172,  172,   71,   70,   71,   70,   71,   72,   71,
-       70,   70,   70,   70,   70,   70,   70,   70,   70,  434,
-      650,   96,  649,  670,  162,  648,   70,   70,   70,   70,
-      647,   96,  112,  113,   74,   96,  646,  670,  115,   96,
-       96,  529,  644,  114,  642,  641,  639,  638,  162,   96,
-      637,   96,  634,   96,   96,  116,   70,   70,   96,  119,
+       73,  581,   30,  516,   78,   95,  677,  676,  102,   80,
+       80,   80,  103,  675,  673,   95,  104,   95,  105,   95,
+       95,  517,   69,   69,   95,  672,  107,   85,  106,  164,
+      108,  670,   95,  109,   95,  167,  167,  167,  668,   95,
+      382,  382,  382,  667,  666,  665,   70,   69,   70,   69,
+       70,   71,   70,   69,   69,   69,   69,   69,   69,   69,
+       69,   69,   69,  664,  246,  247,   95,  662,  660,  110,
+      659,   69,   69,   69,   69,  164,   95,   95,   95,   73,
+       95,  657,  656,  655,  652,   95,  651,   95,  111,  112,
+      650,   95,  114,   95,  649,  648,   95,  645,  643,  113,
 
-       96,  633,  120,  632,   96,  631,   96,  670,   96,  630,
-       96,  121,  122,   96,   96,  627,  625,  123,  624,   96,
-       71,   70,   71,   80,  622,  117,   88,   88,   88,  619,
-      618,  617,  170,  614,  613,  612,  118,   84,   88,   88,
-       85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
-       85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
-       85,   85,   85,   85,   85,   85,  611,   86,   87,   87,
-       87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
-       87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
-       96,  610,  607,   96,   96,   96,   96,   96,   96,   96,
+      642,   69,   69,   95,   95,   95,  640,   95,  637,  115,
+      636,  635,   95,  632,   95,  631,   95,  384,   95,  118,
+       95,  630,  119,   95,  629,   70,   69,   70,   79,  628,
+       95,  120,  121,  625,   95,  116,  623,  122,  622,   95,
+      620,  617,  616,  615,   83,  609,  117,   84,   84,   84,
+       84,   84,   84,   84,   84,   84,   84,   84,   84,   84,
+       84,   84,   84,   84,   84,   84,   84,   84,   84,   84,
+       84,   84,   84,  608,   85,   86,   86,   86,   86,   86,
+       86,   86,   86,   86,   86,   86,   86,   86,   86,   86,
+       86,   86,   86,   86,   86,   86,   86,   95,  607,  606,
 
-      605,  604,  602,  599,   96,   97,   96,   96,   96,   96,
-       96,   96,   96,   96,   96,   98,   96,   99,   96,  100,
-       96,   96,   96,   96,  101,   96,   96,   96,   96,   96,
-      598,  597,  102,  102,  102,  102,  102,  102,  102,  102,
-      102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
-      102,  102,  102,  102,  124,   96,   96,  591,  590,  589,
-      588,  587,  125,  586,  583,   96,   96,   96,   96,   96,
-       96,  581,  128,  129,   96,  126,  130,  133,   96,  580,
-      134,  578,   96,  574,   96,  573,  131,  572,  135,  562,
-       96,   96,   96,   96,  136,  561,  138,   96,  560,   96,
+       95,   95,   95,   95,   95,   95,   95,   95,  605,  604,
+      601,  599,   95,   96,   95,   95,   95,   95,   95,   95,
+       95,   95,   95,   97,   95,   98,   95,   99,   95,   95,
+       95,   95,  100,   95,   95,   95,   95,   95,  598,  596,
+      101,  101,  101,  101,  101,  101,  101,  101,  101,  101,
+      101,  101,  101,  101,  101,  101,  101,  101,  101,  101,
+      101,  101,  123,   95,   95,  592,  591,  579,  579,  579,
+      124,  590,  578,   95,   95,   95,   95,   95,   95,  577,
+      127,  128,   95,  125,  129,  132,   95,  576,  133,  575,
+       95,  573,   95,  571,  130,  569,  134,  567,   95,   95,
 
-      132,  127,  139,   96,  559,   96,  140,   96,  143,   96,
-      557,   96,   96,   96,  144,   96,  555,  141,   96,  553,
-      137,  551,  142,   96,  550,   96,  548,   96,  544,   96,
-      543,  145,  542,   96,   96,  148,  541,   96,  146,   96,
-       96,  149,   96,  532,  528,  527,  147,  152,  526,   96,
-       96,   96,   96,   96,   96,  525,  523,  521,   96,   96,
-      518,  516,  150,   94,   94,   94,   94,   94,   94,   94,
-      514,  505,  504,  490,  151,  161,  487,  486,  485,  161,
-      161,  161,  161,  161,  161,  161,  161,  161,  484,   96,
-       96,  483,  482,  480,  478,  161,  161,  161,  161,   96,
+       95,   95,  135,  566,  137,   95,  564,   95,  131,  126,
+      138,   95,  560,   95,  139,   95,  142,   95,  559,   95,
+       95,   95,  558,  143,   95,  140,   95,   95,  136,  557,
+      141,  579,  579,  579,   95,  548,   95,   95,   95,  147,
+      144,   95,   95,   95,  580,  148,   95,  145,  542,  541,
+       95,  540,   95,  539,   95,  146,   95,  151,  537,  535,
+       95,   95,   95,  532,   95,  530,  149,  528,  519,   95,
+      153,  153,  153,  518,  504,  501,  499,  150,  498,  497,
+      496,  495,  493,  154,  154,  154,  154,  154,  154,  155,
+      155,  163,  491,  488,  483,  163,  163,  163,  163,  163,
 
-       96,   96,   96,   96,   96,   96,  475,  175,   96,   96,
-      470,  468,  456,  455,  454,  176,  437,   96,   96,   96,
-      433,   96,  432,  431,   96,  161,  161,  429,   96,  426,
-       96,   96,   96,   96,   96,  178,  424,   96,  419,  414,
-       96,  177,  411,  399,   96,  398,   96,  397,   96,  378,
-      161,  161,  179,   96,  373,  161,  161,  161,  161,  161,
-      161,  161,  161,  161,  372,   96,  371,  365,   96,  358,
-      180,  161,  161,  161,  161,   96,  353,   96,   96,   96,
-       96,   96,   96,  349,   96,  337,  181,   96,  163,  336,
-      166,   96,  162,   96,   96,  182,  310,  309,  308,  302,
+      163,  163,  163,  163,  163,   87,   87,   87,  580,  481,
+      469,  172,  468,  163,  163,  163,  163,  467,   87,   87,
+      174,  174,  174,  174,  174,  174,  174,  174,   93,   93,
+       93,   93,   93,   93,   93,   93,   95,   95,  450,  444,
+      443,  442,  440,  163,  163,  437,   95,   95,   95,   95,
+       95,   95,   95,   95,  177,   95,   95,  435,  430,  425,
+      422,  410,  178,   95,   95,   95,   95,  180,  163,  163,
+      409,   95,   95,  163,  163,  163,  163,  163,  163,  163,
+      163,  163,  163,  408,  389,   95,   95,  381,  380,  379,
+      373,  163,  163,  163,  163,   95,   95,   95,   95,   95,
 
-       96,  161,  161,  291,   96,   96,   96,  183,   96,  286,
-      282,  271,  270,   96,  246,   96,  244,   96,  162,   96,
-      184,   96,  241,  237,   96,  233,  161,  221,  186,   96,
-      215,   96,  211,   96,  185,   96,  200,  199,  174,   96,
-       96,   96,   96,   96,  173,   96,  171,  167,   96,  189,
-      166,  166,   96,  187,  188,   96,   96,   96,  190,   96,
-      160,   96,  158,   93,   96,  156,  155,   80,   96,   80,
-       96,   95,   96,   96,  191,  192,   96,   96,   92,   96,
-      194,   83,   80,   96,   80,   96,  197,   96,   96,   96,
-       96,   96,  193,  195,   96,   96,  670,  196,   96,  670,
+       95,   95,  366,  181,   95,   95,  182,  361,  165,  179,
+      357,   95,  345,   95,   95,   95,  344,   95,  168,  164,
+       95,  163,  163,  314,   95,   95,   95,   95,   95,   95,
+      313,  184,  183,   95,  312,   95,   95,   95,  185,   95,
+       95,  306,  186,   95,   95,  295,  163,  290,  286,  275,
+       95,  274,   95,   95,   95,   95,  187,   95,   95,   95,
+      188,   95,   95,  250,  248,  164,  245,  239,   95,  189,
+      190,   95,   95,   95,   95,   95,  235,   95,  191,  223,
+       95,  217,  192,  213,   95,  202,   95,  201,   95,  176,
+      175,  173,   95,   95,   95,  169,   95,   95,  193,  194,
 
-      670,  201,  670,  670,   96,  670,   96,  198,   96,   96,
-      670,  670,   96,   96,  670,  202,  670,  670,  670,   96,
-       96,   96,   96,   96,   96,  670,   96,  670,   96,  670,
-       96,   96,   96,  670,  203,   96,  204,  670,  670,   96,
-      670,  670,  670,  670,  670,   96,   96,   96,  670,   96,
-      670,  670,  205,  206,   96,  670,   96,   96,   96,  207,
-       96,  670,  670,   96,  670,   96,  670,   96,  670,   96,
-      670,   96,  670,   96,   96,  209,   96,   96,  670,  208,
-      670,  670,   96,  670,  210,  670,   96,   96,   96,  670,
-       96,  670,  670,   96,  670,  212,  670,   96,  670,   96,
+       95,   95,  168,   95,  196,  168,  162,   95,  160,   95,
+      199,   95,   95,   95,   95,   95,  195,  197,   95,   95,
+      203,  198,   95,   92,  158,  382,  382,  382,   95,   95,
+       95,  200,   95,  157,  383,   95,   94,   95,  204,   95,
+       91,   95,   82,   95,   79,   95,   95,   95,   95,   95,
+       79,  688,   95,  206,   95,  688,   95,  688,   95,  688,
+      205,  688,   95,   95,   95,   95,   95,  688,  688,  207,
+      208,   95,  688,   95,   95,   95,  209,   95,  688,  688,
+       95,  688,   95,  688,   95,  688,   95,  688,   95,  688,
+       95,   95,  211,   95,   95,  688,  210,  688,  688,   95,
 
-       96,   96,   96,   96,   96,  670,   96,  670,  213,   96,
-      670,   96,  670,   96,   96,   96,  670,   96,  670,  670,
-      670,   96,   96,   96,   96,   96,   96,   96,   96,  214,
-       96,  670,  216,   96,  670,  670,  670,   96,   96,   96,
-      670,   96,  670,  670,  670,  670,   96,  217,   96,  670,
-       96,   96,   96,  670,  219,  670,  670,  218,  220,  670,
-      670,   96,  670,   96,  670,   96,  222,   96,  670,  670,
-       96,  670,  670,   96,  670,  670,  670,  223,  670,   96,
-      670,   96,  670,   96,   96,   96,   96,   96,  224,  670,
-       96,  225,   96,  670,   96,  670,   96,  670,   96,  670,
+      688,  212,  384,   95,   95,   95,  688,   95,  688,  688,
+       95,  688,  214,  688,   95,  688,   95,   95,   95,   95,
+       95,   95,  688,   95,  688,  215,   95,  688,   95,  688,
+       95,   95,   95,  688,   95,  688,  688,  688,   95,   95,
+       95,   95,   95,   95,   95,   95,  216,   95,  688,  218,
+       95,  688,  688,  688,   95,   95,   95,  688,   95,  688,
+      688,  688,  688,   95,  219,   95,  688,   95,   95,   95,
+      688,  221,  688,  688,  220,  222,  688,  688,   95,  688,
+       95,  688,   95,  224,   95,  688,  688,   95,  688,  688,
+       95,  688,  688,  688,  225,  688,   95,  688,   95,  688,
 
-       96,   96,   96,   96,   96,  229,  227,  670,  226,   96,
-      670,   96,  670,  228,  670,   96,   96,   96,  670,  670,
-       96,  670,  230,  670,  670,  670,   96,   96,   96,   96,
-       96,   96,   96,   96,  670,   96,   96,  670,  670,  670,
-      670,  670,   96,   96,   96,   96,   96,  232,   96,   96,
-      235,  231,   96,  236,  670,  234,  670,  670,   96,   96,
-       96,   96,   96,   96,   96,  670,  670,   96,   96,  670,
-      670,  670,  670,  670,   96,  670,   96,  670,   96,  670,
-      670,  670,  240,   96,  172,  172,  172,  172,  172,  172,
-      172,   96,   96,  670,  247,  670,  670,  670,  670,  670,
+       95,   95,   95,   95,   95,  226,  688,   95,  227,   95,
+      688,   95,  231,   95,  688,   95,  688,   95,   95,   95,
+       95,   95,  688,  229,   95,  228,   95,  688,   95,  688,
+      230,  688,   95,  688,   95,   95,   95,   95,   95,  688,
+      232,   95,  688,   95,  688,   95,  688,   95,  688,   95,
+      688,   95,   95,   95,   95,   95,  688,  688,   95,  688,
+      233,  688,   95,  688,   95,  236,  234,  688,   95,  688,
+       95,   95,   95,   95,   95,  237,  688,   95,  238,  688,
+      688,  688,  688,   95,   95,   95,   95,   95,   95,  688,
+      688,  242,   95,   95,  153,  153,  153,  174,  174,  174,
 
-      670,   96,   96,   96,   96,   96,   96,   96,   96,  670,
-       96,   96,  670,  670,  670,  670,  670,   96,  248,   96,
-       96,   96,   96,   96,  670,  670,   96,   96,  670,  670,
-      670,   96,  670,   96,   96,   96,  249,   96,  250,  670,
-      670,   96,   96,   96,   96,   96,   96,   96,   96,  670,
-       96,  670,  670,   96,  670,   96,  670,   96,  670,   96,
-      670,   96,  670,   96,  251,  252,   96,   96,  670,   96,
-      670,   96,  670,   96,   96,   96,  670,   96,  254,  253,
-      670,   96,   96,   96,   96,   96,  670,  670,  670,  670,
-       96,  670,   96,  670,   96,   96,   96,  670,   96,  670,
+      174,  174,  174,  174,  174,  688,  688,  154,  154,  154,
+      154,  154,  154,  155,  155,  243,  688,  688,  688,  155,
+      155,  155,  155,  155,  155,  155,  155,  244,  688,  688,
+      688,  155,  155,  155,  155,  155,  155,  155,  155,   95,
+       95,  688,  251,  688,  688,  688,  688,  688,  688,   95,
+       95,   95,   95,   95,   95,   95,   95,  688,   95,   95,
+      688,  688,  688,  688,  688,   95,  252,   95,   95,   95,
+       95,   95,  688,  688,   95,   95,  688,  688,  688,   95,
+      688,   95,   95,   95,  253,   95,  254,  688,  688,   95,
+       95,   95,   95,   95,   95,   95,   95,  688,   95,  688,
 
-      670,  255,   96,   96,   96,   96,  256,   96,  670,   96,
-      670,   96,  257,  258,   96,  259,   96,   96,  670,  670,
-      261,  670,  670,  260,  670,  670,   96,   96,   96,   96,
-       96,   96,   96,  670,  670,   96,   96,  670,   96,  670,
-      670,  670,   96,  670,   96,  262,   96,  670,   96,   96,
-       96,   96,   96,  670,  670,   96,  670,   96,  264,   96,
-      263,   96,  670,   96,  670,   96,   96,   96,   96,   96,
-      670,  670,   96,  670,   96,  267,  265,  670,   96,  266,
-       96,  670,   96,   96,   96,   96,   96,  670,  670,  670,
-      670,   96,  670,   96,   96,   96,  670,   96,  670,  670,
+      688,   95,  688,   95,  688,   95,  688,   95,  688,   95,
+      688,   95,  255,  256,   95,   95,  688,   95,  688,   95,
+      688,   95,   95,   95,  688,   95,  258,  257,  688,   95,
+       95,   95,   95,   95,  688,  688,  688,  688,   95,  688,
+       95,  688,   95,   95,   95,  688,   95,  688,  688,  259,
+       95,   95,   95,   95,  260,   95,  688,   95,  688,   95,
+      261,  262,   95,  263,   95,   95,  688,  688,  265,  688,
+      688,  264,  688,  688,   95,   95,   95,   95,   95,   95,
+       95,  688,  688,   95,   95,  688,   95,  688,  688,  688,
+       95,  688,   95,  266,   95,  688,   95,   95,   95,   95,
 
-      268,  670,   96,  670,   96,  269,   96,   96,   96,  670,
-      670,  670,  670,   96,  670,   96,  670,   96,   96,   96,
-      670,   96,  670,  670,  272,   96,   96,  273,  274,   96,
-       96,  275,   96,   96,   96,  670,   96,   96,  670,   96,
-      670,  670,  278,  276,  670,   96,   96,   96,   96,   96,
-       96,   96,   96,   96,  277,   96,  279,   96,   96,  670,
-       96,  670,  670,   96,  670,  670,  670,   96,  670,   96,
-       96,   96,   96,   96,   96,   96,   96,   96,   96,  280,
-      670,   96,   96,  670,  283,  670,  670,  670,  281,  670,
-       96,   96,   96,   96,  670,   96,   96,   96,  670,  284,
+       95,  688,  688,   95,  688,   95,  268,   95,  267,   95,
+      688,   95,  688,   95,   95,   95,   95,   95,  688,  688,
+       95,  688,   95,  271,  269,  688,   95,  270,   95,  688,
+       95,   95,   95,   95,   95,  688,  688,  688,  688,   95,
+      688,   95,   95,   95,  688,   95,  688,  688,  272,  688,
+       95,  688,   95,  273,   95,   95,   95,  688,  688,  688,
+      688,   95,  688,   95,  688,   95,   95,   95,  688,   95,
+      688,  688,  276,   95,   95,  277,  278,   95,   95,  279,
+       95,   95,   95,  688,   95,   95,  688,   95,  688,  688,
+      282,  280,  688,   95,   95,   95,   95,   95,   95,   95,
 
-       96,  670,   96,  670,  670,  670,   96,  670,   96,  285,
-       96,  670,   96,   96,   96,   96,   96,  670,  670,  670,
-      670,   96,  670,   96,   96,   96,  670,   96,  670,  670,
-       96,  287,   96,  670,   96,  670,   96,  670,   96,  670,
-       96,   96,   96,   96,   96,  670,  670,  288,  670,   96,
-      670,   96,   96,   96,  670,   96,  670,  670,  289,  670,
-       96,  670,   96,   96,   96,  670,   96,  670,  293,   96,
-      670,   96,  290,  292,  670,   96,  670,   96,  670,   96,
-       96,   96,   96,   96,  670,  670,   96,  670,   96,  670,
-       96,  670,   96,  670,   96,  670,   96,  670,   96,  294,
+       95,   95,  281,   95,  283,  688,   95,  688,  688,   95,
+      688,  688,   95,  688,  688,   95,  688,  688,  688,   95,
+      688,   95,   95,   95,   95,   95,   95,   95,   95,   95,
+       95,   95,  688,   95,  284,  688,  287,  688,  688,  688,
+      285,  688,   95,   95,   95,   95,  688,   95,   95,   95,
+      688,  288,   95,  688,   95,  688,  688,  688,   95,  688,
+       95,  289,   95,  688,   95,   95,   95,   95,   95,  688,
+      688,  688,  688,   95,  688,   95,   95,   95,  688,   95,
+      688,  688,   95,  291,   95,  688,   95,  688,   95,  688,
+       95,  688,   95,   95,   95,   95,   95,  688,  688,  292,
 
-       96,   96,   96,  670,  295,   96,  670,  670,  670,  296,
-      670,   96,   96,   96,   96,   96,   96,   96,  670,  670,
-       96,   96,  670,  670,  670,  670,  670,   96,   96,   96,
-      670,   96,  670,  670,   96,  297,   96,  670,   96,  670,
-       96,  670,   96,  670,   96,  298,   96,   96,   96,   96,
-      670,  299,  300,   96,  670,   96,  670,  670,  301,   96,
-      670,   96,  670,   96,  670,   96,   96,   96,   96,   96,
-      670,  670,  670,  670,   96,  670,   96,   96,   96,  303,
-       96,  304,  307,  670,  670,   96,  305,   96,   96,   96,
-      670,   96,  670,  670,  670,  306,   96,  670,   96,   96,
+      688,   95,  688,   95,   95,   95,  688,   95,  688,  688,
+      293,  688,   95,  688,   95,   95,   95,  688,   95,  688,
+      297,   95,  688,   95,  294,  296,  688,   95,  688,   95,
+      688,   95,   95,   95,   95,   95,  688,  688,   95,  688,
+       95,  688,   95,  688,   95,  688,   95,  688,   95,  688,
+       95,  298,   95,   95,   95,  688,  299,   95,  688,  688,
+      688,  300,  688,   95,   95,   95,   95,   95,   95,   95,
+      688,  688,   95,   95,  688,  688,  688,  688,  688,   95,
+       95,   95,  688,   95,  688,  688,   95,  301,   95,  688,
+       95,  688,   95,  688,   95,  688,   95,  302,   95,   95,
 
-       96,  670,   96,  670,  670,  311,  670,   96,  670,   96,
-       96,   96,  670,   96,  670,  670,   96,  670,   96,  670,
-       96,  670,  313,  314,   96,  670,   96,   96,   96,   96,
-       96,  670,  670,   96,  670,   96,  670,   96,  315,   96,
-      670,   96,  670,   96,   96,  316,   96,   96,  670,  670,
-       96,  670,   96,  318,   96,  670,   96,  670,   96,  670,
-       96,  670,   96,   96,   96,  319,   96,   96,  320,   96,
-      670,  670,  670,  670,  670,  670,   96,   96,   96,   96,
-       96,   96,   96,  670,  670,   96,   96,  670,  317,  670,
-       96,  670,   96,  670,   96,  670,   96,  670,   96,  321,
+       95,   95,  688,  303,  304,   95,  688,   95,  688,  688,
+      305,   95,  688,   95,  688,   95,  688,   95,   95,   95,
+       95,   95,  688,  688,  688,  688,   95,  688,   95,   95,
+       95,  307,   95,  308,  688,  311,  688,   95,  309,   95,
+      688,   95,   95,   95,  688,   95,  688,  310,   95,  688,
+      688,  315,   95,  688,   95,   95,   95,   95,   95,   95,
+      688,   95,  688,  688,   95,  316,  316,  316,   95,  688,
+      321,  688,   95,  318,  318,  318,  688,   95,  317,  317,
+      317,  317,  317,  317,  317,  317,  319,  319,  319,  319,
+      319,  319,  319,  319,   95,  688,  688,  688,  688,  688,
 
-       96,   96,   96,  322,   96,  670,  670,  670,   96,   96,
-       96,   96,   96,  324,   96,  670,  323,   96,  670,  670,
-      670,   96,   96,   96,   96,   96,   96,  670,   96,  670,
-      325,  670,   96,   96,  326,   96,   96,  327,   96,  670,
-      328,   96,  670,  670,  670,   96,  670,   96,   96,   96,
-       96,  670,   96,   96,   96,  670,  329,   96,  670,   96,
-      670,  670,  670,   96,  670,   96,  670,   96,  670,   96,
-       96,   96,   96,  330,  670,  670,   96,  331,   96,  670,
-       96,  670,   96,  670,   96,  670,   96,   96,   96,   96,
-       96,  670,  332,  670,  670,   96,  670,   96,  670,  333,
+       95,  322,  688,  688,   95,  688,   95,  688,   95,  688,
+       95,  323,   95,   95,   95,   95,   95,  688,  688,   95,
+      688,  688,  688,  688,  688,   95,   95,  324,   95,   95,
+       95,  327,   95,   95,   95,   95,  326,  688,  688,  688,
+      688,  688,   95,   95,   95,   95,   95,   95,  688,   95,
+      328,   95,   95,  688,  688,   95,  688,  688,  688,   95,
+      325,   95,  688,   95,  688,   95,   95,   95,   95,   95,
+      688,  688,  329,  688,   95,  688,   95,   95,   95,  330,
+       95,  688,  688,  688,  688,   95,  688,   95,  688,   95,
+       95,   95,  332,   95,  688,  331,   95,  688,  688,  688,
 
-      670,   96,   96,  334,  670,  335,   96,  670,   96,  670,
-      670,  670,   96,  670,   96,  670,   96,  670,   96,   96,
-       96,   96,   96,  670,  670,   96,  670,   96,  670,   96,
-      670,   96,  670,   96,  670,   96,  670,   96,   96,   96,
-       96,   96,  670,  339,   96,  670,  670,  340,  670,  670,
-       96,   96,   96,   96,   96,   96,   96,  341,  670,   96,
-       96,  343,   96,  338,  670,  670,   96,  670,   96,  670,
-       96,  347,   96,  670,   96,  342,   96,   96,  344,  670,
-       96,   96,  345,  670,  670,  670,  670,   96,   96,   96,
-       96,   96,   96,  346,   96,  670,   96,  670,   96,   96,
+       95,   95,   95,   95,   95,   95,  688,   95,  688,  333,
+      688,   95,   95,  334,   95,   95,  335,   95,  688,  336,
+       95,  688,  688,  688,   95,  688,   95,   95,   95,   95,
+      688,   95,   95,   95,  688,  337,   95,  688,   95,  688,
+      688,  688,   95,  688,   95,  688,   95,  688,   95,   95,
+       95,   95,  338,  688,  688,   95,  339,   95,  688,   95,
+      688,   95,  688,   95,  688,   95,   95,   95,   95,   95,
+      688,  340,  688,  688,   95,  688,   95,  688,  341,  688,
+       95,   95,  342,  688,  343,   95,  688,   95,  688,  688,
+      688,   95,  688,   95,  688,   95,  688,   95,   95,   95,
 
-       96,   96,   96,  670,  670,  348,  670,   96,  670,   96,
-      350,   96,   96,   96,  670,   96,  670,  670,  670,   96,
-       96,   96,   96,   96,   96,   96,   96,  670,   96,  670,
-      351,   96,  670,   96,  355,   96,  354,   96,  352,   96,
-      670,  670,  670,   96,   96,   96,  670,   96,   96,   96,
-      670,  356,   96,  670,  670,  670,  670,  670,   96,   96,
-       96,   96,   96,   96,  357,   96,   96,   96,   96,  670,
-      670,  670,  670,  670,  670,   96,   96,   96,   96,   96,
-       96,   96,  670,  670,   96,   96,  670,  670,  670,  670,
-      670,   96,  670,   96,   96,   96,  670,  360,  670,  359,
+       95,   95,  688,  688,   95,  688,   95,  688,   95,  688,
+       95,  688,   95,  688,   95,  688,   95,   95,   95,   95,
+       95,  688,  347,   95,  688,  688,  348,  688,  688,   95,
+       95,   95,   95,   95,   95,   95,  349,  688,   95,   95,
+      351,   95,  346,  688,  688,   95,  688,   95,  688,   95,
+      688,   95,  688,   95,  350,   95,   95,  352,  688,  355,
+       95,  353,  688,  688,  688,  688,   95,  688,   95,   95,
+       95,  688,  354,  688,  688,   95,  688,   95,  688,   95,
+      688,   95,  688,   95,  688,   95,  688,   95,   95,   95,
+      688,   95,  688,  688,  356,   95,   95,   95,  688,   95,
 
-       96,  670,   96,  670,   96,   96,   96,  670,   96,  670,
-      670,  670,   96,   96,   96,   96,   96,  361,  670,   96,
-       96,   96,  362,   96,   96,  670,   96,  670,  670,  364,
-       96,  670,   96,   96,   96,   96,   96,   96,   96,   96,
-       96,   96,   96,  670,   96,   96,  670,   96,  670,  670,
-      670,   96,  670,   96,   96,   96,   96,   96,   96,  366,
-       96,   96,   96,   96,  363,   96,   96,  670,  368,  670,
-      670,  670,   96,   96,   96,   96,   96,   96,  670,   96,
-      670,  367,  670,   96,   96,   96,   96,   96,  670,  670,
-      670,  670,   96,  670,  670,  670,   96,   96,   96,  670,
+       95,  358,  688,   95,   95,  688,  688,  688,  688,  688,
+       95,  688,   95,   95,   95,   95,   95,   95,  688,   95,
+      688,  359,   95,  363,   95,  688,   95,  362,   95,  360,
+       95,  688,  688,  688,   95,   95,   95,  688,   95,   95,
+      688,  688,   95,   95,  688,  364,  688,  688,  688,   95,
+      688,   95,   95,   95,   95,  688,   95,   95,   95,  365,
+       95,   95,  688,   95,  688,  688,  688,   95,  688,   95,
+       95,   95,   95,   95,   95,   95,   95,   95,  688,   95,
+       95,  367,   95,  368,  688,  688,   95,  688,  688,  688,
+       95,  688,   95,  688,   95,  688,   95,   95,   95,   95,
 
-       96,  670,  670,  370,  670,   96,  670,   96,  369,   96,
-       96,   96,  670,   96,  376,  670,   96,  670,  670,  670,
-       96,  670,   96,   96,   96,   96,  670,   96,  375,   96,
-      377,   96,   96,  670,   96,  670,  379,   96,  670,  670,
-      670,   96,  670,   96,   96,   96,   96,   96,   96,   96,
-       96,   96,  670,   96,   96,  380,   96,   96,  670,  670,
-      381,  670,  670,  670,   96,   96,   96,   96,   96,   96,
-      670,   96,  670,   96,  670,   96,   96,   96,   96,   96,
-      670,  670,  670,  670,   96,  670,   96,  670,   96,  670,
-      382,  670,   96,  670,   96,  670,   96,   96,   96,  670,
+       95,  688,  370,   95,  688,   95,  688,   95,  688,  369,
+      688,   95,  688,   95,   95,   95,   95,   95,  688,  688,
+       95,  372,   95,  688,   95,  688,   95,  688,   95,  688,
+       95,   95,   95,   95,   95,  688,  688,   95,  688,   95,
+      688,   95,  688,   95,  688,   95,  688,   95,  688,   95,
+       95,   95,   95,   95,  688,  688,   95,  688,  371,  688,
+      688,  688,   95,   95,  374,   95,   95,   95,  688,   95,
+       95,   95,  375,  376,  688,  688,  688,  688,  688,   95,
+       95,   95,   95,   95,   95,  688,   95,   95,   95,   95,
+      688,  688,  688,  688,  688,  688,   95,   95,   95,   95,
 
-       96,  384,  383,  670,   96,   96,   96,   96,   96,  670,
-      670,  670,  670,   96,  670,   96,  670,  385,  386,   96,
-      670,   96,  387,  670,  670,   96,   96,   96,   96,   96,
-      388,  670,  670,  670,   96,  670,   96,  670,   96,  389,
-       96,  670,   96,  390,   96,  670,   96,   96,   96,  670,
-       96,  670,   96,  670,   96,   96,   96,  670,   96,  670,
-      391,  670,   96,   96,   96,  670,   96,   96,  393,  670,
-      392,   96,  670,   96,  670,  670,  670,   96,  670,   96,
-      670,   96,  670,   96,   96,   96,   96,   96,  670,  670,
-       96,  394,   96,  670,   96,  670,   96,  670,   96,  670,
+       95,   95,  688,  378,  377,   95,   95,  316,  316,  316,
+      688,  688,  688,  688,  688,  318,  318,  318,  688,  688,
+      317,  317,  317,  317,  317,  317,  317,  317,  319,  319,
+      319,  319,  319,  319,  319,  319,  383,  688,   95,  688,
+      319,  319,  319,  319,  319,  319,  319,  319,   95,  688,
+       95,  688,   95,   95,  387,  688,  386,   95,  388,   95,
+      688,  688,  688,   95,  688,   95,  688,   95,  688,   95,
+       95,   95,   95,   95,  688,  390,   95,  688,   95,  688,
+       95,  688,   95,  688,   95,  688,   95,  688,   95,   95,
+       95,   95,  391,  688,   95,   95,  688,  392,  688,  688,
 
-       96,  395,  396,   96,   96,   96,   96,  670,  670,   96,
-      670,  670,  670,  400,  670,   96,   96,   96,   96,   96,
-       96,  670,  670,   96,   96,   96,   96,  401,  670,  402,
-      670,  670,  670,   96,  670,   96,   96,   96,   96,  670,
-       96,  403,   96,   96,   96,   96,  404,  670,  670,  670,
-      670,  670,  670,   96,   96,  405,   96,   96,   96,   96,
-      670,  670,   96,   96,  670,   96,  670,  670,  407,   96,
-      670,   96,  670,   96,  670,   96,   96,   96,  406,   96,
-      409,  670,  670,  410,   96,  670,   96,   96,   96,  670,
-       96,  670,  670,  408,  670,   96,  670,   96,   96,   96,
+      688,   95,   95,   95,   95,   95,   95,  688,   95,  688,
+       95,  688,   95,   95,   95,   95,   95,  688,  688,  688,
+      688,   95,  688,   95,  688,   95,  688,  393,  688,   95,
+      688,   95,  688,   95,   95,   95,  688,   95,  395,  394,
+      688,   95,   95,   95,   95,   95,  688,  688,  688,  688,
+       95,  688,   95,  688,  396,  397,   95,  688,   95,  398,
+      688,  688,   95,   95,   95,   95,   95,  399,  688,  688,
+      688,   95,  688,   95,  688,   95,  400,   95,  688,   95,
+      401,   95,  688,   95,   95,   95,  688,   95,  688,   95,
+      688,   95,   95,   95,  688,   95,  688,  402,  688,   95,
 
-      670,   96,  670,  670,   96,  670,   96,  670,   96,  670,
-       96,  670,   96,  670,   96,   96,   96,   96,   96,  670,
-      670,   96,  412,   96,  670,   96,  670,   96,  670,   96,
-      670,   96,   96,  413,   96,   96,  670,  670,  670,  670,
-       96,  670,   96,   96,   96,  670,   96,  670,  415,   96,
-      416,   96,  670,   96,  670,   96,  670,   96,  670,   96,
-       96,  417,   96,   96,  670,  670,  670,  670,   96,  670,
-       96,  670,   96,   96,   96,  670,   96,  670,  418,   96,
-      420,  670,  670,   96,   96,   96,   96,   96,  421,  422,
-       96,  670,   96,  670,   96,   96,   96,   96,   96,  670,
+       95,   95,  688,   95,   95,  404,  688,  403,   95,  688,
+       95,  688,  688,  688,   95,  688,   95,  688,   95,  688,
+       95,   95,   95,   95,   95,  688,  688,   95,  405,   95,
+      688,   95,  688,   95,  688,   95,  688,   95,  406,  407,
+       95,   95,   95,   95,  688,  688,   95,  688,  688,  688,
+      411,  688,   95,   95,   95,   95,   95,   95,  688,  688,
+       95,   95,   95,   95,  412,  688,  413,  688,  688,  688,
+       95,  688,   95,   95,   95,   95,  688,   95,  414,   95,
+       95,   95,   95,  415,  688,  688,  688,  688,  688,  688,
+       95,   95,  416,   95,   95,   95,   95,  688,  688,   95,
 
-      670,  670,  670,   96,  670,  670,  670,   96,   96,   96,
-      670,   96,  670,  670,   96,  425,   96,  670,   96,  423,
-       96,  670,   96,  670,   96,  670,   96,   96,   96,   96,
-       96,  670,  427,   96,  670,  670,  670,  670,  670,   96,
-       96,   96,   96,   96,   96,   96,  428,  670,   96,   96,
-      670,   96,  670,  670,  670,   96,  670,   96,  670,   96,
-      670,   96,  670,   96,   96,   96,  435,   96,  670,  670,
-       96,  670,  670,   96,  670,  670,  670,   96,  670,   96,
-      670,   96,  670,   96,   96,   96,   96,   96,  670,  430,
-       96,  436,   96,  670,   96,  670,  438,  670,   96,  670,
+       95,  688,   95,  688,  688,  418,   95,  688,   95,  688,
+       95,  420,   95,   95,   95,  417,   95,  688,  421,   95,
+      688,   95,  688,   95,  688,   95,  688,   95,  688,   95,
+      419,   95,   95,   95,   95,  688,  688,   95,   95,  688,
+       95,  688,  688,  688,   95,  688,   95,   95,   95,   95,
+       95,   95,   95,   95,   95,  423,   95,   95,   95,   95,
+      688,  688,  688,  688,  688,  688,  688,   95,   95,  424,
+       95,   95,   95,   95,  426,  688,   95,   95,  688,   95,
+      427,  688,  688,   95,  688,   95,  688,   95,  688,   95,
+       95,  428,   95,   95,  688,  688,  688,  688,   95,  688,
 
-       96,   96,   96,   96,   96,  670,  670,   96,  439,   96,
-      440,   96,  670,   96,  670,   96,  670,   96,  670,   96,
-       96,   96,  441,   96,   96,  670,   96,  670,  670,  670,
-      670,  670,  670,   96,   96,   96,  442,   96,   96,   96,
-      670,  670,   96,   96,  670,  670,  670,  670,  670,   96,
-       96,   96,  444,   96,  670,  670,   96,  443,   96,  670,
-       96,  670,   96,  670,   96,  670,   96,  670,   96,   96,
-       96,  670,  670,   96,  445,   96,  446,  670,  670,   96,
-      670,  447,  670,   96,  670,   96,  670,   96,  670,   96,
-       96,   96,   96,   96,  670,  449,   96,  670,   96,  670,
+       95,  688,   95,   95,   95,  688,   95,  688,  429,   95,
+      431,  688,  688,   95,   95,   95,   95,   95,  432,  433,
+       95,  688,   95,  688,   95,   95,   95,   95,   95,  688,
+      688,  688,  688,   95,  688,  688,  688,   95,   95,   95,
+      688,   95,  688,  688,   95,  436,   95,  688,   95,  434,
+       95,  688,   95,  688,   95,  688,   95,   95,   95,   95,
+       95,  688,  438,   95,  688,  688,  688,  688,  688,   95,
+       95,   95,   95,   95,   95,   95,  439,  688,   95,   95,
+      688,  688,  445,  445,  445,   95,  688,   95,  688,   95,
+      688,  688,  688,   95,   95,  446,  446,  446,  446,  446,
 
-       96,  670,  448,  670,   96,  670,   96,   96,   96,   96,
-       96,  670,  670,   96,  670,   96,  670,   96,  670,   96,
-      450,   96,  670,   96,   96,   96,   96,   96,  670,  670,
-       96,  670,   96,  670,   96,  670,   96,  452,   96,  670,
-       96,  451,   96,   96,   96,  453,   96,   96,  670,   96,
-      670,  457,  670,  670,  670,  670,   96,   96,   96,   96,
-       96,   96,   96,  670,  670,   96,   96,  670,   96,  458,
-      459,  670,   96,  670,   96,  670,   96,  670,   96,   96,
-       96,   96,   96,  670,  670,   96,  670,   96,  461,   96,
-      670,   96,  670,   96,  670,   96,  460,   96,   96,   96,
+      446,  446,  446,   95,  688,   95,  688,   95,  688,  448,
+       95,  688,   95,   95,  688,  688,   95,  688,  688,  441,
+       95,  688,   95,   95,   95,   95,   95,   95,  451,   95,
+       95,  449,   95,   95,   95,   95,  688,  688,  688,  688,
+      688,  688,  688,   95,   95,   95,   95,   95,   95,  688,
+      688,  452,   95,   95,   95,  688,  688,  453,  688,  454,
+       95,  688,  688,  688,   95,  688,   95,  688,   95,  688,
+       95,   95,   95,   95,   95,  688,  688,   95,  688,   95,
+      688,   95,  688,  455,  688,   95,  688,   95,  688,   95,
+       95,   95,   95,  688,  457,  456,   95,  688,   95,  688,
 
-       96,  462,  670,  670,   96,  670,   96,  463,  670,  670,
-       96,  670,   96,  670,   96,  670,   96,   96,   96,   96,
-       96,  670,  670,  670,  670,   96,  670,   96,  670,   96,
-      670,   96,   96,  464,  670,  465,   96,  670,   96,  670,
-      670,  670,   96,  670,   96,  670,   96,  670,   96,   96,
-       96,   96,   96,  670,  670,  466,  467,   96,  670,   96,
-       96,   96,  670,   96,  670,  469,   96,  670,   96,  670,
-       96,  670,   96,  670,   96,  670,   96,   96,   96,   96,
-       96,  670,  670,   96,  670,   96,  670,   96,  670,  471,
-      670,   96,  670,   96,   96,  472,   96,   96,  670,  670,
+      688,  688,   95,  688,   95,  688,   95,  688,   95,  688,
+       95,   95,   95,  688,  688,   95,  458,   95,  459,  688,
+      688,   95,  688,  460,  688,   95,  688,   95,  688,   95,
+      688,   95,   95,   95,   95,   95,  688,  462,   95,  688,
+       95,  688,   95,  688,  461,  688,   95,  688,   95,   95,
+       95,   95,   95,  688,  688,   95,  688,   95,  688,   95,
+      688,   95,  463,   95,  688,   95,   95,   95,   95,   95,
+      688,  688,   95,  688,   95,  688,   95,  688,   95,  465,
+       95,  688,   95,  464,   95,   95,   95,  466,   95,   95,
+      688,   95,  688,  470,  688,  688,  688,  688,   95,   95,
 
-      670,  670,   96,  670,   96,  670,   96,   96,   96,  670,
-      474,  670,  473,   96,  670,   96,  670,   96,  670,   96,
-      670,   96,  670,  670,  670,   96,   96,   96,  670,   96,
-       96,  477,  670,   96,   96,  476,   96,  670,  670,  670,
-       96,  670,   96,   96,   96,   96,   96,   96,   96,   96,
-       96,   96,   96,  479,   96,   96,  670,   96,  670,  670,
-      670,   96,  670,   96,   96,   96,   96,   96,   96,   96,
-       96,   96,   96,   96,  481,  670,   96,  670,  670,  670,
-      670,  670,   96,  670,   96,   96,   96,  670,   96,  670,
-      488,   96,  489,  670,  670,   96,  670,   96,   96,   96,
+       95,   95,   95,   95,   95,  688,  688,   95,   95,  688,
+       95,  471,  472,  688,   95,  688,   95,  688,   95,  688,
+       95,   95,   95,   95,   95,  688,  688,   95,  688,   95,
+      474,   95,  688,   95,  688,   95,  688,   95,  473,   95,
+       95,   95,   95,  475,  688,  688,   95,  688,   95,  476,
+      688,  688,   95,  688,   95,  688,   95,  688,   95,   95,
+       95,   95,   95,  688,  688,  688,  688,   95,  688,   95,
+      688,   95,  688,   95,   95,  477,  688,  478,   95,  688,
+       95,  688,  688,  688,   95,  688,   95,  688,   95,  688,
+       95,   95,   95,   95,   95,  688,  688,  479,  480,   95,
 
-       96,  670,   96,   96,   96,  670,  491,   96,  670,   96,
-      670,  670,  670,   96,  670,   96,  670,   96,  670,   96,
-       96,  492,   96,   96,  670,  670,   96,  493,   96,  670,
-       96,  670,   96,  494,   96,  670,   96,   96,   96,   96,
-       96,  670,  670,   96,  670,   96,  670,   96,  670,   96,
-      670,   96,  670,   96,   96,   96,   96,   96,  670,  670,
-      670,  495,   96,  670,   96,   96,   96,  496,   96,  670,
-      670,   96,  670,   96,  670,   96,  670,   96,  670,   96,
-      670,   96,   96,   96,   96,   96,  670,  497,   96,  670,
-       96,  670,   96,  670,   96,  670,   96,  670,   96,   96,
+      688,   95,   95,   95,  688,   95,  688,  482,   95,  688,
+       95,  688,   95,  688,   95,  688,   95,  688,   95,   95,
+       95,   95,   95,  688,  688,   95,  688,   95,  688,   95,
+      688,  484,  688,   95,  688,   95,   95,  485,   95,   95,
+      688,  688,  688,  688,   95,  688,   95,  688,   95,   95,
+       95,  688,  487,  688,  486,   95,  688,   95,  688,   95,
+      688,   95,  688,   95,  688,  688,  688,   95,   95,   95,
+      688,   95,   95,  490,  688,   95,   95,  489,   95,  688,
+      688,  688,   95,  688,   95,   95,   95,   95,   95,   95,
+       95,   95,   95,   95,   95,  492,   95,   95,  688,   95,
 
-       96,   96,   96,  670,  670,  670,  498,   96,  670,   96,
-       96,   96,  670,   96,  670,  670,  500,  499,   96,  670,
-       96,  670,   96,  670,   96,  670,   96,   96,   96,   96,
-       96,  670,  670,   96,  670,   96,  670,  501,  670,   96,
-      506,   96,  670,   96,   96,   96,   96,   96,  670,  670,
-      670,  670,   96,  670,   96,   96,   96,  670,   96,  670,
-      670,   96,  507,   96,  670,   96,  670,   96,  670,   96,
-      670,   96,   96,   96,   96,   96,  670,  670,   96,  670,
-       96,  509,   96,  670,   96,  670,   96,  670,   96,  508,
-       96,   96,   96,   96,   96,  670,  670,   96,  670,  670,
+      688,  688,  688,   95,  688,   95,   95,   95,   95,   95,
+       95,   95,   95,   95,  688,   95,  494,  688,   95,  445,
+      445,  445,  688,  688,  688,  688,  688,  688,  688,  688,
+      688,  688,  446,  446,  446,  446,  446,  446,  446,  446,
+      500,  688,   95,  688,  446,  446,  446,  446,  446,  446,
+      446,  446,   95,  688,   95,   95,   95,  688,   95,  688,
+      502,   95,  503,  688,  688,   95,  688,   95,   95,   95,
+       95,  688,   95,   95,   95,  688,  505,   95,  688,   95,
+      688,  688,  688,   95,  688,   95,  688,   95,  688,   95,
+       95,  506,   95,   95,  688,  688,   95,  507,   95,  688,
 
-      670,  670,  670,   96,   96,   96,   96,   96,   96,   96,
-      511,  510,   96,   96,  670,   96,  670,  670,  670,   96,
-      670,   96,  670,   96,  670,   96,   96,   96,   96,   96,
-      670,  670,   96,  670,   96,  670,   96,  670,  513,  670,
-       96,  670,  515,   96,   96,   96,   96,  670,  670,  670,
-      670,   96,  670,   96,   96,   96,  670,   96,  517,  512,
-       96,  670,   96,  670,   96,  670,   96,  670,   96,  670,
-       96,   96,   96,   96,   96,  670,  670,   96,  670,   96,
-      519,   96,  670,   96,  670,   96,  670,   96,  670,   96,
-       96,   96,   96,  670,  670,  520,   96,  670,   96,  670,
+       95,  688,   95,  508,   95,  688,   95,   95,   95,   95,
+       95,  688,  688,   95,  688,   95,  688,   95,  688,   95,
+      688,   95,  688,   95,   95,   95,   95,   95,  688,  688,
+      688,  509,   95,  688,   95,   95,   95,  510,   95,  688,
+      688,   95,  688,   95,  688,   95,  688,   95,  688,   95,
+      688,   95,   95,   95,   95,   95,  688,  511,   95,  688,
+       95,  688,   95,  688,   95,  688,   95,  688,   95,   95,
+       95,   95,   95,  688,  688,  688,  512,   95,  688,   95,
+       95,   95,  688,   95,  688,  688,  514,  513,   95,  688,
+       95,  688,   95,  688,   95,  688,   95,   95,   95,   95,
 
-      670,  522,   96,  670,   96,  670,   96,  670,   96,  670,
-       96,   96,   96,  524,   96,   96,  670,   96,  670,  670,
-      670,  670,  530,  670,   96,   96,   96,   96,   96,   96,
-       96,  531,  670,   96,   96,  670,   96,  670,  670,  670,
-       96,  670,   96,  670,   96,  670,   96,   96,   96,   96,
-       96,  670,  533,  670,  670,   96,  670,   96,   96,   96,
-      670,   96,  670,  670,   96,  534,   96,  670,   96,  670,
-      535,  670,   96,  670,   96,   96,  536,   96,   96,  670,
-      670,   96,  538,   96,  670,   96,  670,   96,  537,   96,
-      670,   96,  670,   96,   96,   96,   96,   96,  670,  539,
+       95,  688,  688,   95,  688,   95,  688,  515,  688,   95,
+      520,   95,  688,   95,   95,   95,   95,   95,  688,  688,
+      688,  688,   95,  688,   95,   95,   95,  688,   95,  688,
+      688,   95,  521,   95,  688,   95,  688,   95,  688,   95,
+      688,   95,   95,   95,   95,   95,  688,  688,   95,  688,
+       95,  523,   95,  688,   95,  688,   95,  688,   95,  522,
+       95,   95,   95,   95,   95,  688,  688,   95,  688,  688,
+      688,  688,  688,   95,   95,   95,   95,   95,   95,   95,
+      525,  524,   95,   95,  688,   95,  688,  688,  688,   95,
+      688,   95,  688,   95,  688,   95,   95,   95,   95,   95,
 
-       96,  670,  670,  670,  670,  670,   96,   96,   96,   96,
-       96,   96,   96,   96,  670,   96,   96,  670,  670,  670,
-      540,  670,   96,   96,   96,   96,   96,   96,   96,  670,
-      670,   96,   96,  670,   96,  670,  670,  545,   96,  670,
-       96,  670,   96,  670,   96,   96,   96,   96,   96,  670,
-      670,   96,  670,   96,  670,   96,  670,   96,  670,   96,
-      670,   96,   96,   96,   96,   96,  670,  670,   96,  670,
-       96,  670,   96,  670,   96,  546,   96,  670,   96,   96,
-       96,   96,   96,  670,  670,  670,  670,   96,  670,   96,
-       96,   96,  670,   96,  549,  670,   96,  547,   96,  670,
+      688,  688,   95,  688,   95,  688,   95,  688,  527,  688,
+       95,  688,  529,   95,   95,   95,   95,  688,  688,  688,
+      688,   95,  688,   95,   95,   95,  688,   95,  531,  526,
+       95,  688,   95,  688,   95,  688,   95,  688,   95,  688,
+       95,   95,   95,   95,   95,  688,  688,   95,  688,   95,
+      533,   95,  688,   95,  688,   95,  688,   95,  688,   95,
+       95,   95,   95,  688,  688,  534,   95,  688,   95,  688,
+      688,  536,   95,  688,   95,  688,   95,  688,   95,  688,
+       95,   95,   95,  538,   95,  688,  688,   95,  688,  688,
+      688,  543,  543,  543,   95,  688,   95,  688,   95,  688,
 
-       96,  670,   96,  554,   96,  670,   96,   96,   96,   96,
-       96,  670,  670,  670,  552,   96,  670,   96,   96,   96,
-      670,   96,  670,  670,   96,  670,   96,  670,   96,  670,
-       96,  670,   96,  670,   96,   96,   96,   96,   96,  670,
-      670,   96,  670,   96,  670,   96,  670,  556,  670,   96,
-      670,  558,   96,   96,   96,   96,  670,  670,   96,  670,
-       96,  670,   96,  670,   96,  564,   96,  670,   96,   96,
-       96,   96,   96,  670,  670,   96,  670,   96,  670,   96,
-      670,   96,  670,   96,  670,   96,  670,   96,   96,   96,
-       96,   96,  565,  566,   96,  670,  567,  670,  670,  670,
+      688,  688,  688,   95,  544,  544,  544,  544,  544,  544,
+      544,  544,   95,   95,  547,  688,  688,  688,  688,  546,
+      688,  688,   95,   95,   95,   95,   95,   95,   95,  688,
+      688,   95,   95,  688,  688,  688,   95,  688,   95,   95,
+       95,  688,   95,  688,  549,  688,   95,   95,   95,   95,
+       95,  551,   95,   95,  550,   95,  688,  688,   95,  688,
+       95,  688,   95,  688,  552,  554,   95,  688,   95,  688,
+       95,   95,   95,  553,   95,  688,  688,  688,   95,   95,
+       95,   95,   95,  688,  688,  688,  688,   95,  688,   95,
+      688,   95,  555,   95,  688,   95,  688,   95,  688,   95,
 
-       96,   96,   96,   96,   96,   96,   96,   96,  569,   96,
-       96,  670,  670,  670,  670,  670,   96,   96,  568,   96,
-       96,   96,   96,   96,  570,   96,   96,  670,  670,  670,
-      670,  670,   96,  571,   96,   96,   96,   96,   96,  670,
-      670,   96,   96,  670,  670,  670,   96,  670,   96,  670,
-       96,  670,   96,  670,  575,  670,   96,   96,   96,  576,
-       96,   96,   96,  670,  670,   96,  670,  670,  577,  579,
-      670,   96,   96,   96,   96,   96,   96,   96,  670,  670,
-       96,   96,  670,  670,  670,   96,  670,   96,  670,  582,
-      670,   96,  670,   96,  670,   96,   96,   96,  584,   96,
+       95,   95,  688,   95,  688,   95,  688,   95,   95,   95,
+      688,   95,  556,   95,  688,   95,   95,   95,  688,   95,
+      688,  688,  688,   95,   95,   95,   95,   95,  688,  561,
+      688,  688,   95,  688,   95,  688,   95,   95,   95,  688,
+       95,  688,  688,  688,   95,   95,   95,   95,   95,   95,
+       95,   95,  688,   95,  688,  688,   95,  688,   95,  688,
+       95,   95,   95,  688,   95,  562,  688,  688,   95,   95,
+       95,   95,   95,   95,   95,   95,  688,   95,  565,  563,
+       95,  688,   95,  688,   95,  688,   95,  570,   95,  688,
+       95,  688,   95,   95,   95,  688,   95,  568,  688,  688,
 
-      670,  670,  670,   96,   96,   96,   96,   96,  670,   96,
-      670,  585,   96,  670,  670,  670,   96,   96,   96,   96,
-       96,  592,  670,   96,  670,   96,  670,   96,   96,   96,
-       96,   96,  593,   96,  670,  670,   96,  670,  670,  670,
-       96,   96,   96,   96,   96,   96,  670,   96,  670,   96,
-      670,   96,   96,   96,   96,   96,  670,  670,  594,  670,
-       96,  670,   96,  670,   96,  670,   96,  595,   96,  670,
-       96,  670,   96,   96,   96,  670,   96,  596,   96,  670,
-       96,   96,   96,  670,   96,  670,   96,  670,   96,   96,
-       96,  670,   96,  670,   96,  670,   96,   96,  600,  670,
+       95,   95,   95,   95,   95,  688,   95,  688,  688,   95,
+      688,  688,  688,   95,   95,   95,   95,   95,   95,  688,
+       95,  688,   95,  688,   95,   95,  572,   95,   95,  688,
+      688,  688,  688,   95,  543,  543,  543,  574,  688,   95,
+      688,   95,  688,  688,  688,   95,   95,  544,  544,  544,
+      544,  544,  544,  544,  544,   95,   95,   95,  582,   95,
+      688,  688,   95,  688,   95,  688,   95,  688,   95,  688,
+       95,  688,   95,   95,   95,   95,   95,  688,  688,   95,
+      688,   95,  584,   95,  688,   95,  688,   95,  688,   95,
+      583,   95,   95,   95,   95,   95,  688,  688,   95,  585,
 
-       96,  670,   96,  670,   96,   96,   96,  601,   96,  670,
-       96,  670,   96,   96,  603,  670,   96,  606,   96,  670,
-       96,   96,   96,  670,   96,  608,   96,  670,   96,   96,
-       96,  670,   96,  609,   96,  670,   96,   96,   96,  670,
-       96,  670,   96,  670,   96,   96,   96,  670,   96,  670,
-       96,  670,   96,   96,   96,  670,   96,  670,   96,  670,
-       96,   96,   96,  670,   96,  670,   96,  670,   96,   96,
-      615,  670,   96,  670,  670,  670,   96,   96,   96,   96,
-       96,  670,  670,  670,  616,   96,  670,   96,  670,   96,
-      670,   96,  670,   96,  670,   96,  620,   96,   96,  621,
+      688,  688,  688,  688,   95,   95,   95,  586,   95,   95,
+       95,  587,  688,   95,   95,  688,   95,  688,  588,  688,
+       95,  688,   95,  688,   95,  688,   95,   95,   95,   95,
+       95,  688,  688,   95,  688,   95,  688,  589,  688,   95,
+      688,   95,  688,   95,   95,   95,   95,   95,  688,  593,
+      688,  688,   95,  688,   95,   95,   95,  594,   95,  688,
+      688,   95,  595,   95,  688,   95,  688,   95,  597,   95,
+      688,   95,   95,   95,   95,   95,  688,  688,  688,  688,
+       95,  688,   95,   95,  600,  688,   95,  688,  688,   95,
+      688,   95,  688,   95,  688,   95,  602,   95,  688,   95,
 
-      670,   96,  623,   96,  670,   96,   96,   96,  670,   96,
-      670,  670,  670,   96,   96,   96,   96,   96,  628,   96,
-      670,  626,   96,  629,  670,  670,   96,   96,   96,   96,
-       96,   96,  670,   96,  670,   96,  670,   96,   96,   96,
-       96,   96,  670,   96,  670,  635,   96,  670,  670,  670,
-       96,  670,   96,   96,   96,   96,   96,   96,  670,   96,
-      670,  670,   96,  636,   96,  670,   96,   96,   96,  670,
-       96,  670,  670,  670,   96,   96,   96,   96,   96,   96,
-      670,   96,  640,   96,   96,   96,   96,  670,  670,  670,
-      643,  670,  645,  670,   96,   96,   96,   96,   96,   96,
+       95,   95,   95,   95,  688,  688,   95,  603,   95,  688,
+       95,  688,   95,  688,   95,  688,   95,   95,  610,   95,
+       95,  688,  688,  688,  688,   95,  688,   95,   95,   95,
+      611,   95,  688,  688,   95,  688,   95,  688,   95,  688,
+       95,  688,   95,  688,   95,   95,   95,   95,   95,  688,
+      688,  688,  688,   95,  688,   95,   95,   95,  688,   95,
+      688,  688,  612,  688,   95,  688,   95,   95,   95,  613,
+       95,  688,  688,   95,  688,   95,  688,   95,  688,   95,
+      614,   95,  688,   95,   95,   95,   95,   95,  688,  688,
+       95,  688,   95,  688,   95,  688,   95,  688,   95,  688,
 
-       96,   96,  670,   96,   96,  670,  670,  670,  670,  670,
-       96,   96,   96,   96,   96,   96,  651,   96,   96,   96,
-       96,  670,  670,  670,  670,  670,  670,   96,   96,   96,
-       96,   96,   96,  670,  670,   96,   96,   96,  656,  670,
-      653,  670,  670,   96,  670,   96,  670,   96,  670,   96,
-      670,   96,  670,   96,   96,   96,  660,   96,  670,   96,
-      670,   96,   96,   96,  670,   96,  670,   96,  670,   96,
-       96,   96,  670,   96,  670,  664,  670,  667,   96,   96,
-       96,   96,  670,   96,  670,  670,   96,  670,  670,  670,
-       96,  670,   96,   96,   96,   96,  670,   96,  670,   96,
+       95,   95,  618,   95,   95,  688,  688,   95,  688,   95,
+      688,   95,  688,   95,  619,   95,  688,   95,   95,  621,
+       95,   95,  688,  688,   95,  624,   95,  688,   95,  688,
+       95,  626,   95,  688,   95,   95,   95,   95,   95,  688,
+      688,   95,  627,   95,  688,   95,  688,   95,  688,   95,
+      688,   95,   95,   95,   95,   95,  688,  688,   95,  688,
+       95,  688,   95,  688,   95,  688,   95,  688,   95,   95,
+       95,   95,   95,  688,  688,   95,  688,   95,  688,   95,
+      688,  633,  688,   95,  688,   95,   95,   95,   95,   95,
+      688,  688,   95,  634,   95,  688,   95,  688,   95,  688,
 
-      670,  670,   96,   53,   53,   53,   53,   53,   53,   53,
-       53,   53,   53,   53,   57,   57,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   61,   61,   61,   61,   61,
-       61,   61,   61,   61,   61,   61,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   73,   73,   73,
-       73,   73,   73,   73,   73,   73,   73,   73,   75,   75,
-       75,   75,   75,   75,   75,   75,   75,   75,   75,   82,
-       82,   82,  670,   82,   82,   82,   82,   82,   82,   82,
-       89,   89,  670,  670,   89,  670,   89,  153,  153,  670,
-      153,  154,  154,  670,  154,  154,  154,  670,  154,  154,
+       95,  688,   95,  638,  639,   95,   95,   95,  688,  688,
+       95,   95,  688,   95,  641,  646,  688,   95,  688,   95,
+       95,   95,   95,   95,   95,   95,   95,   95,  644,   95,
+       95,  688,   95,   95,  647,  688,   95,  688,  688,  688,
+       95,  688,   95,   95,   95,   95,   95,   95,   95,   95,
+       95,  653,   95,   95,   95,   95,  688,  688,  688,  654,
+      688,  688,  688,   95,   95,   95,   95,   95,   95,   95,
+       95,  688,   95,   95,  688,  688,  688,  688,  688,   95,
+       95,   95,   95,   95,   95,   95,  688,  658,   95,   95,
+      688,   95,  688,  661,  688,   95,  688,   95,  663,   95,
 
-      154,  154,  157,  157,  157,  670,  157,  157,  157,  157,
-      157,  157,  157,  159,  159,  159,  159,  159,  159,  159,
-      159,  670,  159,  161,  670,  670,  161,  161,  161,  161,
-      161,  161,  161,  162,  670,  670,  162,  162,  162,  162,
-      162,  162,  162,  164,  670,  670,  164,  670,  164,  164,
-      164,  164,  164,  168,  168,  670,  168,  169,  169,  670,
-      169,  102,  102,  670,  102,   15,  670,  670,  670,  670,
-      670,  670,  670,  670,  670,  670,  670,  670,  670,  670,
-      670,  670,  670,  670,  670,  670,  670,  670,  670,  670,
-      670,  670,  670,  670,  670,  670,  670,  670,  670,  670,
+      688,   95,   95,   95,   95,   95,  688,  688,  688,  688,
+       95,  688,   95,   95,   95,  688,   95,  688,  669,   95,
+      688,   95,  688,   95,  688,   95,  688,   95,  688,   95,
+      688,   95,   95,   95,   95,  688,  688,   95,   95,  688,
+      674,  688,  671,  688,   95,   95,   95,   95,   95,   95,
+      688,   95,  688,   95,  688,   95,   95,   95,  678,   95,
+       95,   95,  688,  688,   95,  688,  688,  688,  688,  688,
+       95,   95,   95,   95,   95,   95,   95,  682,  688,   95,
+       95,  688,   95,  688,  688,  688,  685,  688,   95,  688,
+       95,  688,   95,   95,   95,   95,   95,  688,  688,  688,
 
-      670,  670,  670,  670,  670,  670,  670,  670,  670,  670,
-      670,  670,  670,  670,  670,  670,  670,  670,  670,  670,
-      670,  670,  670,  670,  670,  670,  670,  670,  670,  670,
-      670,  670,  670,  670,  670,  670,  670,  670,  670,  670,
-      670,  670,  670
+      688,   95,  688,   95,  688,   95,  688,   95,  688,  688,
+      688,  688,   95,   52,   52,   52,   52,   52,   52,   52,
+       52,   52,   52,   52,   52,   52,   52,   56,   56,   56,
+       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
+       56,   60,   60,   60,   60,   60,   60,   60,   60,   60,
+       60,   60,   60,   60,   60,   63,   63,   63,   63,   63,
+       63,   63,   63,   63,   63,   63,   63,   63,   63,   72,
+       72,   72,   72,   72,   72,   72,   72,   72,   72,   72,
+       72,   72,   72,   74,   74,   74,   74,   74,   74,   74,
+       74,   74,   74,   74,   74,   74,   74,   81,   81,   81,
+
+      688,   81,   81,   81,   81,   81,   81,   81,   81,   81,
+       81,   88,   88,  688,  688,   88,  688,  688,   88,  688,
+       88,  152,  152,  688,  152,  152,  156,  156,  688,  156,
+      156,  156,  156,  688,  156,  156,  156,  156,  156,  156,
+      159,  159,  159,  688,  159,  159,  159,  159,  159,  159,
+      159,  159,  159,  159,  161,  161,  161,  161,  161,  161,
+      161,  161,  161,  688,  161,  161,  163,  688,  688,  163,
+      163,  163,  163,  163,  163,  163,  163,  163,  164,  688,
+      688,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      166,  688,  688,  166,  688,  166,  166,  166,  166,  166,
+
+      166,  166,  170,  170,  688,  170,  170,  171,  171,  688,
+      171,  171,  101,  101,  688,  101,  101,  317,  317,  688,
+      688,  688,  317,  688,  317,  688,  688,  688,  688,  317,
+      544,  544,  688,  688,  688,  688,  688,  544,  688,  688,
+      688,  688,  544,   15,  688,  688,  688,  688,  688,  688,
+      688,  688,  688,  688,  688,  688,  688,  688,  688,  688,
+      688,  688,  688,  688,  688,  688,  688,  688,  688,  688,
+      688,  688,  688,  688,  688,  688,  688,  688,  688,  688,
+      688,  688,  688,  688,  688,  688,  688,  688,  688,  688,
+      688,  688,  688,  688,  688,  688,  688,  688,  688,  688,
+
+      688,  688,  688,  688,  688,  688,  688,  688,  688,  688,
+      688,  688,  688,  688,  688,  688,  688,  688,  688,  688,
+      688,  688,  688
     } ;
 
-static yyconst short int yy_chk[4344] =
+static yyconst short int yy_chk[4624] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -1227,483 +1265,514 @@
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    3,    3,    4,
-        4,    5,    6,    7,    9,    3,    7,    4,    5,    6,
-        8,    5,    6,    8,   10,   17,   17,   17,   18,   18,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    3,
+        3,    4,    4,    7,    5,    6,    7,    9,    3,  150,
+        4,    5,    6,   10,    8,    5,    6,    8,   17,   17,
 
-       18,   17,    9,  666,   18,    9,   26,  662,   26,   13,
-       13,   13,   10,  151,   13,   10,   86,   22,   22,   22,
-       14,   14,   14,   22,   24,   14,  151,   24,  659,   22,
-       22,   24,   24,   24,   24,   24,   24,   28,   28,   28,
-       28,   28,   28,   28,  657,   34,   86,  454,   34,   76,
-       76,   76,   77,   77,   77,   34,    9,   34,    9,   34,
-       81,   81,   81,  655,   34,  454,   10,  654,   10,   11,
+       17,   26,  150,   26,   17,  172,  684,    9,  246,  246,
+        9,  172,  385,   10,   77,  320,   10,  385,   18,   18,
+       18,   13,   13,   13,   18,  320,   13,   14,   14,   14,
+       77,  680,   14,   22,   22,   22,   75,   75,   75,   22,
+       24,   76,   76,   76,   24,   38,   22,   22,   24,   24,
+       24,   24,   24,   24,   24,   38,  677,   38,  501,   38,
+       77,    9,  675,    9,   38,  501,  673,   10,  672,   10,
        11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
-       11,   11,   13,  652,   13,  163,  163,  650,  170,   11,
-       11,   11,   11,   14,  170,   14,  163,   11,   32,  242,
+       11,   11,   11,   11,   28,   28,   28,   28,   28,   28,
+       28,   28,   11,   11,   11,   11,   13,   85,   13,  670,
 
-      242,   32,  165,  165,  165,   32,  529,  648,   32,   32,
-       32,   32,   32,   38,  312,  647,   33,   32,  644,   11,
-       11,   32,   33,   38,  312,   38,   33,   38,   33,   33,
-       33,  642,   38,  529,  638,   33,   91,   91,   91,   91,
-       91,   91,   91,   11,   11,   11,   12,   12,   12,   12,
-       12,   12,   12,   12,   12,   12,   12,   12,   12,  374,
-      634,   35,  633,   78,  374,  632,   12,   12,   12,   12,
-      631,   35,   35,   35,   12,   35,  630,   78,   36,   36,
-       35,  487,  627,   35,  625,  624,  619,  618,  487,   36,
-      617,   36,  614,   36,   37,   36,   12,   12,   36,   39,
+       11,  545,   14,  467,   14,   32,  668,  666,   32,   80,
+       80,   80,   32,  665,  662,   32,   32,   32,   32,   32,
+       33,  467,   11,   11,   32,  660,   33,   85,   32,  545,
+       33,  656,   33,   33,   33,  167,  167,  167,  652,   33,
+      382,  382,  382,  651,  650,  649,   11,   11,   11,   12,
+       12,   12,   12,   12,   12,   12,   12,   12,   12,   12,
+       12,   12,   12,  648,  165,  165,   34,  645,  643,   34,
+      642,   12,   12,   12,   12,  165,   34,   35,   34,   12,
+       34,  637,  636,  635,  632,   34,  631,   35,   35,   35,
+      630,   35,   36,   36,  629,  628,   35,  625,  623,   35,
 
-       39,  613,   39,  612,   37,  611,   37,   78,   37,  610,
-       39,   39,   39,   37,   39,  607,  605,   39,  604,   39,
-       12,   12,   12,   21,  602,   37,   88,   88,   88,  599,
-      598,  597,   88,  591,  590,  589,   37,   21,   88,   88,
+      622,   12,   12,   36,   37,   36,  620,   36,  617,   36,
+      616,  615,   36,  609,   37,  608,   37,  382,   37,   39,
+       39,  607,   39,   37,  606,   12,   12,   12,   21,  604,
+       39,   39,   39,  601,   39,   37,  599,   39,  598,   39,
+      596,  592,  591,  590,   21,  581,   37,   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,  588,   21,   21,   21,
+       21,   21,   21,  578,   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,
-       31,  586,  583,   31,   31,   31,   31,   31,   31,   31,
+       21,   21,   21,   21,   21,   21,   21,   31,  577,  576,
 
-      581,  580,  578,  574,   31,   31,   31,   31,   31,   31,
+       31,   31,   31,   31,   31,   31,   31,   31,  575,  573,
+      569,  567,   31,   31,   31,   31,   31,   31,   31,   31,
+       31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
+       31,   31,   31,   31,   31,   31,   31,   31,  566,  564,
        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
-      573,  572,   31,   31,   31,   31,   31,   31,   31,   31,
-       31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
-       31,   31,   31,   31,   40,   40,   41,  563,  562,  561,
-      560,  559,   40,  557,  553,   40,   41,   40,   41,   40,
-       41,  551,   42,   42,   40,   41,   42,   43,   43,  550,
-       43,  548,   42,  543,   42,  542,   42,  541,   43,  528,
-       43,   42,   43,   44,   43,  527,   44,   43,  526,   45,
+       31,   31,   40,   40,   41,  559,  558,  544,  544,  544,
+       40,  557,  542,   40,   41,   40,   41,   40,   41,  541,
+       42,   42,   40,   41,   42,   43,   43,  540,   43,  539,
+       42,  537,   42,  535,   42,  532,   43,  530,   43,   42,
 
-       42,   41,   45,   44,  525,   44,   45,   44,   46,   45,
-      523,   45,   44,   45,   46,   46,  521,   45,   45,  518,
-       43,  516,   45,   47,  514,   46,  512,   46,  505,   46,
-      504,   46,  503,   47,   46,   47,  502,   47,   46,   48,
-       49,   47,   47,  490,  486,  485,   46,   49,  484,   48,
-       49,   48,   49,   48,   49,  483,  480,  478,   48,   49,
-      475,  470,   47,   94,   94,   94,   94,   94,   94,   94,
-      468,  456,  455,  437,   48,   73,  434,  433,  432,   73,
-       73,   73,   73,   73,   73,   73,   73,   73,  431,   96,
-       97,  430,  429,  426,  424,   73,   73,   73,   73,   96,
+       43,   44,   43,  528,   44,   43,  526,   45,   42,   41,
+       45,   44,  519,   44,   45,   44,   46,   45,  518,   45,
+       44,   45,  517,   46,   46,   45,   45,   47,   43,  516,
+       45,  579,  579,  579,   46,  504,   46,   47,   46,   47,
+       46,   47,   48,   46,  544,   47,   47,   46,  499,  498,
+       49,  497,   48,  496,   48,   46,   48,   49,  493,  491,
+       49,   48,   49,  488,   49,  483,   47,  481,  469,   49,
+       51,   51,   51,  468,  450,  447,  444,   48,  443,  442,
+      441,  440,  437,   51,   51,   51,   51,   51,   51,   51,
+       51,   72,  435,  430,  425,   72,   72,   72,   72,   72,
 
-       97,   96,   97,   96,   97,   98,  419,   97,   96,   97,
-      414,  411,  399,  398,  397,   98,  378,   98,   99,   98,
-      373,  100,  372,  371,   98,   73,   73,  369,   99,  365,
-       99,  100,   99,  100,  101,  100,  363,   99,  358,  353,
-      100,   99,  349,  338,  101,  337,  101,  336,  101,  317,
-       73,   74,  101,  101,  310,   74,   74,   74,   74,   74,
-       74,   74,   74,   74,  309,  103,  308,  302,  104,  291,
-      103,   74,   74,   74,   74,  103,  286,  103,  104,  103,
-      104,  105,  104,  282,  103,  271,  104,  104,   74,  270,
-      244,  105,  243,  105,  106,  105,  239,  238,  237,  233,
+       72,   72,   72,   72,   72,   87,   87,   87,  579,  422,
+      410,   87,  409,   72,   72,   72,   72,  408,   87,   87,
+       90,   90,   90,   90,   90,   90,   90,   90,   93,   93,
+       93,   93,   93,   93,   93,   93,   95,   96,  389,  381,
+      380,  379,  377,   72,   72,  373,   95,   96,   95,   96,
+       95,   96,   97,   99,   96,   95,   96,  371,  366,  361,
+      357,  346,   97,   99,   97,   99,   97,   99,   72,   73,
+      345,   97,   99,   73,   73,   73,   73,   73,   73,   73,
+       73,   73,   73,  344,  325,  100,   98,  314,  313,  312,
+      306,   73,   73,   73,   73,  100,   98,  100,   98,  100,
 
-      105,   74,   74,  221,  106,  107,  106,  106,  106,  215,
-      211,  200,  199,  106,  171,  107,  167,  107,  162,  107,
-      108,  108,  160,  150,  107,  147,   74,  137,  109,  109,
-      132,  108,  127,  108,  108,  108,  118,  117,   95,  109,
-      108,  109,  110,  109,   92,  111,   89,   84,  109,  111,
-       83,   80,  110,  110,  110,  111,  110,  111,  112,  111,
-       66,  110,   63,   60,  111,   59,   56,   52,  112,   50,
-      112,   29,  112,  113,  113,  113,  115,  112,   25,  114,
-      114,   20,   19,  113,   16,  113,  115,  113,  115,  114,
-      115,  114,  113,  114,  116,  115,   15,  114,  114,    0,
+       98,  102,  295,  100,  100,   98,  102,  290,   73,   98,
+      286,  102,  275,  102,  103,  102,  274,  104,  248,  247,
+      102,   73,   73,  241,  103,  105,  103,  104,  103,  104,
+      240,  104,  103,  103,  239,  105,  104,  105,  105,  105,
+      106,  235,  107,  107,  105,  223,   73,  217,  213,  202,
+      106,  201,  106,  107,  106,  107,  107,  107,  109,  106,
+      108,  108,  107,  173,  169,  164,  162,  149,  109,  109,
+      109,  108,  109,  108,  110,  108,  146,  109,  110,  136,
+      108,  131,  111,  126,  110,  117,  110,  116,  110,   94,
+       91,   88,  111,  110,  111,   83,  111,  112,  112,  112,
 
-        0,  119,    0,    0,  116,    0,  116,  116,  116,  119,
-        0,    0,  120,  116,    0,  120,    0,    0,    0,  119,
-      121,  119,  120,  119,  120,    0,  120,    0,  119,    0,
-      121,  120,  121,    0,  121,  122,  122,    0,    0,  121,
-        0,    0,    0,    0,    0,  122,  123,  122,    0,  122,
-        0,    0,  122,  122,  122,    0,  123,  124,  123,  123,
-      123,    0,    0,  125,    0,  123,    0,  124,    0,  124,
-        0,  124,    0,  125,  126,  125,  124,  125,    0,  124,
-        0,    0,  125,    0,  126,    0,  126,  128,  126,    0,
-      129,    0,    0,  126,    0,  128,    0,  128,    0,  128,
+      114,  111,   82,  113,  113,   79,   65,  112,   62,  112,
+      114,  112,  114,  113,  114,  113,  112,  113,  115,  114,
+      118,  113,  113,   59,   58,  317,  317,  317,  115,  118,
+      115,  115,  115,   55,  317,  119,   29,  115,  119,  118,
+       25,  118,   20,  118,   19,  119,  120,  119,  118,  119,
+       16,   15,  121,  121,  119,    0,  120,    0,  120,    0,
+      120,    0,  121,  122,  121,  120,  121,    0,    0,  121,
+      121,  121,    0,  122,  123,  122,  122,  122,    0,    0,
+      124,    0,  122,    0,  123,    0,  123,    0,  123,    0,
+      124,  125,  124,  123,  124,    0,  123,    0,    0,  124,
 
-      129,  128,  129,  130,  129,    0,  128,    0,  129,  129,
-        0,  131,    0,  130,  133,  130,    0,  130,    0,    0,
-        0,  131,  130,  131,  133,  131,  133,  134,  133,  131,
-      131,    0,  133,  133,    0,    0,    0,  134,  135,  134,
-        0,  134,    0,    0,    0,    0,  134,  134,  135,    0,
-      135,  136,  135,    0,  136,    0,    0,  135,  136,    0,
-        0,  136,    0,  136,    0,  136,  138,  138,    0,    0,
-      136,    0,    0,  139,    0,    0,    0,  138,    0,  138,
-        0,  138,    0,  139,  140,  139,  138,  139,  139,    0,
-      141,  139,  139,    0,  140,    0,  140,    0,  140,    0,
+        0,  125,  317,  125,  127,  125,    0,  128,    0,    0,
+      125,    0,  127,    0,  127,    0,  127,  128,  127,  128,
+      129,  128,    0,  127,    0,  128,  128,    0,  130,    0,
+      129,  132,  129,    0,  129,    0,    0,    0,  130,  129,
+      130,  132,  130,  132,  133,  132,  130,  130,    0,  132,
+      132,    0,    0,    0,  133,  134,  133,    0,  133,    0,
+        0,    0,    0,  133,  133,  134,    0,  134,  135,  134,
+        0,  135,    0,    0,  134,  135,    0,    0,  135,    0,
+      135,    0,  135,  137,  137,    0,    0,  135,    0,    0,
+      138,    0,    0,    0,  137,    0,  137,    0,  137,    0,
 
-      141,  142,  141,  140,  141,  143,  141,    0,  140,  141,
-        0,  142,    0,  142,    0,  142,  143,  144,    0,    0,
-      142,    0,  144,    0,    0,    0,  143,  144,  143,  144,
-      143,  144,  145,  146,    0,  143,  144,    0,    0,    0,
-        0,    0,  145,  146,  145,  146,  145,  146,  148,  149,
-      149,  145,  146,  149,    0,  148,    0,    0,  148,  149,
-      148,  149,  148,  149,  152,    0,    0,  148,  149,    0,
-        0,    0,    0,    0,  152,    0,  152,    0,  152,    0,
-        0,    0,  152,  152,  172,  172,  172,  172,  172,  172,
-      172,  175,  176,    0,  175,    0,    0,    0,    0,    0,
+      138,  139,  138,  137,  138,  138,    0,  140,  138,  138,
+        0,  139,  142,  139,    0,  139,    0,  140,  141,  140,
+      139,  140,    0,  140,  142,  139,  140,    0,  141,    0,
+      141,    0,  141,    0,  142,  143,  142,  141,  142,    0,
+      143,  144,    0,  142,    0,  143,    0,  143,    0,  143,
+        0,  144,  145,  144,  143,  144,    0,    0,  147,    0,
+      144,    0,  145,    0,  145,  147,  145,    0,  147,    0,
+      147,  145,  147,  151,  148,  148,    0,  147,  148,    0,
+        0,    0,    0,  151,  148,  151,  148,  151,  148,    0,
+        0,  151,  151,  148,  153,  153,  153,  174,  174,  174,
 
-        0,  175,  176,  175,  176,  175,  176,  177,  178,    0,
-      175,  176,    0,    0,    0,    0,    0,  177,  178,  177,
-      178,  177,  178,  179,    0,    0,  177,  178,    0,    0,
-        0,  180,    0,  179,  181,  179,  179,  179,  180,    0,
-        0,  180,  179,  180,  181,  180,  181,  182,  181,    0,
-      180,    0,    0,  181,    0,  183,    0,  182,    0,  182,
-        0,  182,    0,  184,  182,  183,  182,  183,    0,  183,
-        0,  185,    0,  184,  183,  184,    0,  184,  185,  184,
-        0,  185,  184,  185,  186,  185,    0,    0,    0,    0,
-      185,    0,  187,    0,  186,  188,  186,    0,  186,    0,
+      174,  174,  174,  174,  174,    0,    0,  153,  153,  153,
+      153,  153,  153,  153,  153,  154,    0,    0,    0,  154,
+      154,  154,  154,  154,  154,  154,  154,  155,    0,    0,
+        0,  155,  155,  155,  155,  155,  155,  155,  155,  177,
+      178,    0,  177,    0,    0,    0,    0,    0,    0,  177,
+      178,  177,  178,  177,  178,  179,  180,    0,  177,  178,
+        0,    0,    0,    0,    0,  179,  180,  179,  180,  179,
+      180,  181,    0,    0,  179,  180,    0,    0,    0,  182,
+        0,  181,  183,  181,  181,  181,  182,    0,    0,  182,
+      181,  182,  183,  182,  183,  184,  183,    0,  182,    0,
 
-        0,  186,  187,  186,  187,  188,  187,  188,    0,  188,
-        0,  187,  188,  188,  188,  189,  189,  190,    0,    0,
-      190,    0,    0,  189,    0,    0,  189,  190,  189,  190,
-      189,  190,  191,    0,    0,  189,  190,    0,  192,    0,
-        0,    0,  191,    0,  191,  191,  191,    0,  192,  193,
-      192,  191,  192,    0,    0,  194,    0,  192,  194,  193,
-      193,  193,    0,  193,    0,  194,  195,  194,  193,  194,
-        0,    0,  196,    0,  194,  196,  195,    0,  195,  195,
-      195,    0,  196,  197,  196,  195,  196,    0,    0,    0,
-        0,  196,    0,  197,  198,  197,    0,  197,    0,    0,
+        0,  183,    0,  185,    0,  184,    0,  184,    0,  184,
+        0,  186,  184,  185,  184,  185,    0,  185,    0,  187,
+        0,  186,  185,  186,    0,  186,  187,  186,    0,  187,
+      186,  187,  188,  187,    0,    0,    0,    0,  187,    0,
+      189,    0,  188,  190,  188,    0,  188,    0,    0,  188,
+      189,  188,  189,  190,  189,  190,    0,  190,    0,  189,
+      190,  190,  190,  191,  191,  192,    0,    0,  192,    0,
+        0,  191,    0,    0,  191,  192,  191,  192,  191,  192,
+      193,    0,    0,  191,  192,    0,  194,    0,    0,    0,
+      193,    0,  193,  193,  193,    0,  194,  195,  194,  193,
 
-      197,    0,  197,    0,  198,  198,  198,  201,  198,    0,
-        0,    0,    0,  198,    0,  202,    0,  201,  203,  201,
-        0,  201,    0,    0,  201,  202,  201,  202,  203,  202,
-      203,  203,  203,  204,  202,    0,  205,  203,    0,  206,
-        0,    0,  206,  204,    0,  204,  205,  204,  205,  206,
-      205,  206,  204,  206,  205,  205,  207,  208,  206,    0,
-      209,    0,    0,  207,    0,    0,    0,  208,    0,  208,
-      209,  208,  209,  207,  209,  207,  208,  207,  210,  209,
-        0,  212,  207,    0,  212,    0,    0,    0,  210,    0,
-      210,  212,  210,  212,    0,  212,  213,  210,    0,  213,
+      194,    0,    0,  196,    0,  194,  196,  195,  195,  195,
+        0,  195,    0,  196,  197,  196,  195,  196,    0,    0,
+      198,    0,  196,  198,  197,    0,  197,  197,  197,    0,
+      198,  199,  198,  197,  198,    0,    0,    0,    0,  198,
+        0,  199,  200,  199,    0,  199,    0,    0,  199,    0,
+      199,    0,  200,  200,  200,  203,  200,    0,    0,    0,
+        0,  200,    0,  204,    0,  203,  205,  203,    0,  203,
+        0,    0,  203,  204,  203,  204,  205,  204,  205,  205,
+      205,  206,  204,    0,  207,  205,    0,  208,    0,    0,
+      208,  206,    0,  206,  207,  206,  207,  208,  207,  208,
 
-      212,    0,  214,    0,    0,    0,  213,    0,  213,  214,
-      213,    0,  214,  216,  214,  213,  214,    0,    0,    0,
-        0,  214,    0,  216,  217,  216,    0,  216,    0,    0,
-      218,  216,  216,    0,  217,    0,  217,    0,  217,    0,
-      218,  219,  218,  217,  218,    0,    0,  218,    0,  218,
-        0,  219,  220,  219,    0,  219,    0,    0,  219,    0,
-      219,    0,  220,  222,  220,    0,  220,    0,  223,  223,
-        0,  220,  220,  222,    0,  222,    0,  222,    0,  223,
-      224,  223,  222,  223,    0,    0,  225,    0,  223,    0,
-      224,    0,  224,    0,  224,    0,  225,    0,  225,  224,
+      206,  208,  207,  207,  209,    0,  208,    0,    0,  210,
+        0,    0,  209,    0,    0,  211,    0,    0,    0,  210,
+        0,  210,  209,  210,  209,  211,  209,  211,  210,  211,
+      212,  209,    0,  214,  211,    0,  214,    0,    0,    0,
+      212,    0,  212,  214,  212,  214,    0,  214,  215,  212,
+        0,  215,  214,    0,  216,    0,    0,    0,  215,    0,
+      215,  216,  215,    0,  216,  218,  216,  215,  216,    0,
+        0,    0,    0,  216,    0,  218,  219,  218,    0,  218,
+        0,    0,  220,  218,  218,    0,  219,    0,  219,    0,
+      219,    0,  220,  221,  220,  219,  220,    0,    0,  220,
 
-      225,  226,  227,    0,  226,  225,    0,    0,    0,  227,
-        0,  226,  227,  226,  227,  226,  227,  228,    0,    0,
-      226,  227,    0,    0,    0,    0,    0,  228,  229,  228,
-        0,  228,    0,    0,  230,  228,  228,    0,  229,    0,
-      229,    0,  229,    0,  230,  229,  230,  229,  230,  231,
-        0,  230,  231,  230,    0,  232,    0,    0,  232,  231,
-        0,  231,    0,  231,    0,  232,  234,  232,  231,  232,
-        0,    0,    0,    0,  232,    0,  234,  235,  234,  234,
-      234,  234,  236,    0,    0,  234,  234,  235,  236,  235,
-        0,  235,    0,    0,    0,  235,  235,    0,  236,  240,
+        0,  220,    0,  221,  222,  221,    0,  221,    0,    0,
+      221,    0,  221,    0,  222,  224,  222,    0,  222,    0,
+      225,  225,    0,  222,  222,  224,    0,  224,    0,  224,
+        0,  225,  226,  225,  224,  225,    0,    0,  227,    0,
+      225,    0,  226,    0,  226,    0,  226,    0,  227,    0,
+      227,  226,  227,  228,  229,    0,  228,  227,    0,    0,
+        0,  229,    0,  228,  229,  228,  229,  228,  229,  230,
+        0,    0,  228,  229,    0,    0,    0,    0,    0,  230,
+      231,  230,    0,  230,    0,    0,  232,  230,  230,    0,
+      231,    0,  231,    0,  231,    0,  232,  231,  232,  231,
 
-      236,    0,  236,    0,    0,  240,    0,  236,    0,  240,
-      247,  240,    0,  240,    0,    0,  248,    0,  240,    0,
-      247,    0,  247,  248,  247,    0,  248,  249,  248,  247,
-      248,    0,    0,  250,    0,  248,    0,  249,  249,  249,
-        0,  249,    0,  250,  251,  250,  249,  250,    0,    0,
-      252,    0,  250,  252,  251,    0,  251,    0,  251,    0,
-      252,    0,  252,  251,  252,  253,  253,  254,  254,  252,
-        0,    0,    0,    0,    0,    0,  253,  254,  253,  254,
-      253,  254,  255,    0,    0,  253,  254,    0,  251,    0,
-      256,    0,  255,    0,  255,    0,  255,    0,  257,  255,
+      232,  233,    0,  232,  233,  232,    0,  234,    0,    0,
+      234,  233,    0,  233,    0,  233,    0,  234,  236,  234,
+      233,  234,    0,    0,    0,    0,  234,    0,  236,  237,
+      236,  236,  236,  236,    0,  238,    0,  236,  236,  237,
+        0,  237,  238,  237,    0,  242,    0,  237,  237,    0,
+        0,  242,  238,    0,  238,  242,  238,  242,  251,  242,
+        0,  238,    0,    0,  242,  243,  243,  243,  251,    0,
+      251,    0,  251,  244,  244,  244,    0,  251,  243,  243,
+      243,  243,  243,  243,  243,  243,  244,  244,  244,  244,
+      244,  244,  244,  244,  252,    0,    0,    0,    0,    0,
 
-      256,  255,  256,  256,  256,    0,    0,    0,  257,  256,
-      257,  259,  257,  258,  258,    0,  257,  257,    0,    0,
-        0,  259,  260,  259,  258,  259,  258,    0,  258,    0,
-      259,    0,  260,  258,  260,  261,  260,  261,  262,    0,
-      262,  260,    0,    0,    0,  261,    0,  261,  262,  261,
-      262,    0,  262,  263,  261,    0,  263,  262,    0,  264,
-        0,    0,    0,  263,    0,  263,    0,  263,    0,  264,
-      265,  264,  263,  264,    0,    0,  266,  265,  264,    0,
-      265,    0,  265,    0,  265,    0,  266,  267,  266,  265,
-      266,    0,  266,    0,    0,  266,    0,  267,    0,  267,
+      253,  252,    0,    0,  252,    0,  252,    0,  252,    0,
+      253,  253,  253,  252,  253,  254,  255,    0,    0,  253,
+        0,    0,    0,    0,    0,  254,  255,  254,  255,  254,
+      255,  257,  257,  256,  254,  255,  256,    0,    0,    0,
+        0,    0,  257,  256,  257,  256,  257,  256,    0,  258,
+      258,  257,  256,    0,    0,  259,    0,    0,    0,  258,
+      255,  258,    0,  258,    0,  259,  260,  259,  258,  259,
+        0,    0,  259,    0,  259,    0,  260,  261,  260,  260,
+      260,    0,    0,    0,    0,  260,    0,  261,    0,  261,
+      263,  261,  262,  262,    0,  261,  261,    0,    0,    0,
 
-        0,  267,  268,  267,    0,  268,  267,    0,  269,    0,
-        0,    0,  268,    0,  268,    0,  268,    0,  269,  272,
-      269,  268,  269,    0,    0,  273,    0,  269,    0,  272,
-        0,  272,    0,  272,    0,  273,    0,  273,  272,  273,
-      274,  275,    0,  273,  273,    0,    0,  274,    0,    0,
-      274,  275,  274,  275,  274,  275,  276,  275,    0,  274,
-      275,  277,  277,  272,    0,    0,  276,    0,  276,    0,
-      276,  279,  277,    0,  277,  276,  277,  278,  277,    0,
-      279,  277,  278,    0,    0,    0,    0,  278,  280,  278,
-      279,  278,  279,  278,  279,    0,  278,    0,  280,  279,
+      263,  264,  263,  262,  263,  262,    0,  262,    0,  263,
+        0,  264,  262,  264,  265,  264,  265,  266,    0,  266,
+      264,    0,    0,    0,  265,    0,  265,  266,  265,  266,
+        0,  266,  267,  265,    0,  267,  266,    0,  268,    0,
+        0,    0,  267,    0,  267,    0,  267,    0,  268,  269,
+      268,  267,  268,    0,    0,  270,  269,  268,    0,  269,
+        0,  269,    0,  269,    0,  270,  271,  270,  269,  270,
+        0,  270,    0,    0,  270,    0,  271,    0,  271,    0,
+      271,  272,  271,    0,  272,  271,    0,  273,    0,    0,
+        0,  272,    0,  272,    0,  272,    0,  273,  276,  273,
 
-      280,  281,  280,    0,    0,  280,    0,  280,    0,  283,
-      283,  281,  284,  281,    0,  281,    0,    0,    0,  283,
-      281,  283,  284,  283,  284,  285,  284,    0,  283,    0,
-      284,  284,    0,  287,  288,  285,  287,  285,  285,  285,
-        0,    0,    0,  287,  285,  287,    0,  287,  289,  288,
-        0,  289,  287,    0,    0,    0,    0,    0,  289,  288,
-      289,  288,  289,  288,  290,  290,  292,  289,  288,    0,
-        0,    0,    0,    0,    0,  290,  292,  290,  292,  290,
-      292,  293,    0,    0,  290,  292,    0,    0,    0,    0,
-        0,  293,    0,  293,  294,  293,    0,  294,    0,  293,
+      272,  273,    0,    0,  277,    0,  273,    0,  276,    0,
+      276,    0,  276,    0,  277,    0,  277,  276,  277,  278,
+      279,    0,  277,  277,    0,    0,  278,    0,    0,  278,
+      279,  278,  279,  278,  279,  280,  279,    0,  278,  279,
+      281,  281,  276,    0,    0,  280,    0,  280,    0,  280,
+        0,  281,    0,  281,  280,  281,  282,  281,    0,  283,
+      281,  282,    0,    0,    0,    0,  282,    0,  282,  283,
+      282,    0,  282,    0,    0,  282,    0,  284,    0,  283,
+        0,  283,    0,  283,    0,  285,    0,  284,  283,  284,
+        0,  284,    0,    0,  284,  285,  284,  285,    0,  285,
 
-      293,    0,  295,    0,  294,  296,  294,    0,  294,    0,
-        0,    0,  295,  294,  295,  296,  295,  296,    0,  296,
-      298,  295,  297,  297,  296,    0,  299,    0,    0,  301,
-      298,    0,  298,  297,  298,  297,  299,  297,  299,  298,
-      299,  300,  297,    0,  301,  299,    0,  303,    0,    0,
-        0,  300,    0,  300,  301,  300,  301,  303,  301,  303,
-      300,  303,  304,  301,  298,  305,  303,    0,  305,    0,
-        0,    0,  304,  306,  304,  305,  304,  305,    0,  305,
-        0,  304,    0,  306,  305,  306,  307,  306,    0,    0,
-        0,    0,  306,    0,    0,    0,  307,  311,  307,    0,
+      287,  287,    0,  288,  285,    0,    0,    0,    0,    0,
+      287,    0,  287,  288,  287,  288,  289,  288,    0,  287,
+        0,  288,  288,  292,  291,    0,  289,  291,  289,  289,
+      289,    0,    0,    0,  291,  289,  291,    0,  291,  292,
+        0,    0,  293,  291,    0,  293,    0,    0,    0,  292,
+        0,  292,  293,  292,  293,    0,  293,  296,  292,  294,
+      294,  293,    0,  297,    0,    0,    0,  296,    0,  296,
+      294,  296,  294,  297,  294,  297,  296,  297,    0,  294,
+      298,  297,  297,  298,    0,    0,  299,    0,    0,    0,
+      298,    0,  298,    0,  298,    0,  299,  300,  299,  298,
 
-      307,    0,    0,  307,    0,  307,    0,  311,  306,  311,
-      313,  311,    0,  314,  314,    0,  311,    0,    0,    0,
-      313,    0,  313,  314,  313,  314,    0,  314,  313,  313,
-      315,  315,  314,    0,  316,    0,  318,  318,    0,    0,
-        0,  315,    0,  315,  316,  315,  316,  318,  316,  318,
-      315,  318,    0,  316,  319,  319,  318,  320,    0,    0,
-      320,    0,    0,    0,  319,  321,  319,  320,  319,  320,
-        0,  320,    0,  319,    0,  321,  320,  321,  322,  321,
-        0,    0,    0,    0,  321,    0,  323,    0,  322,    0,
-      322,    0,  322,    0,  324,    0,  323,  322,  323,    0,
+      299,    0,  301,  301,    0,  299,    0,  300,    0,  300,
+        0,  300,    0,  301,  302,  301,  300,  301,    0,    0,
+      303,  305,  301,    0,  302,    0,  302,    0,  302,    0,
+      303,  304,  303,  302,  303,    0,    0,  305,    0,  303,
+        0,  304,    0,  304,    0,  304,    0,  305,    0,  305,
+      304,  305,  307,  308,    0,    0,  305,    0,  302,    0,
+        0,    0,  307,  308,  307,  308,  307,  308,    0,  310,
+      309,  307,  308,  309,    0,    0,    0,    0,    0,  310,
+      309,  310,  309,  310,  309,    0,  311,  315,  310,  309,
+        0,    0,    0,    0,    0,    0,  311,  315,  311,  315,
 
-      323,  324,  323,    0,  324,  323,  324,  325,  324,    0,
-        0,    0,    0,  324,    0,  326,    0,  325,  326,  325,
-        0,  325,  326,    0,    0,  326,  325,  326,  327,  326,
-      327,    0,    0,    0,  326,    0,  328,    0,  327,  328,
-      327,    0,  327,  328,  329,    0,  328,  327,  328,    0,
-      328,    0,  330,    0,  329,  328,  329,    0,  329,    0,
-      329,    0,  330,  329,  330,    0,  330,  331,  331,    0,
-      330,  330,    0,  332,    0,    0,    0,  331,    0,  331,
-        0,  331,    0,  332,  333,  332,  331,  332,    0,    0,
-      334,  332,  332,    0,  333,    0,  333,    0,  333,    0,
+      311,  315,    0,  311,  310,  311,  315,  316,  316,  316,
+        0,    0,    0,    0,    0,  318,  318,  318,    0,    0,
+      316,  316,  316,  316,  316,  316,  316,  316,  318,  318,
+      318,  318,  318,  318,  318,  318,  319,    0,  321,    0,
+      319,  319,  319,  319,  319,  319,  319,  319,  321,    0,
+      321,    0,  321,  322,  322,    0,  321,  321,  323,  323,
+        0,    0,    0,  322,    0,  322,    0,  322,    0,  323,
+      324,  323,  322,  323,    0,  326,  326,    0,  323,    0,
+      324,    0,  324,    0,  324,    0,  326,    0,  326,  324,
+      326,  327,  327,    0,  328,  326,    0,  328,    0,    0,
 
-      334,  333,  334,  333,  334,  335,  339,    0,    0,  334,
-        0,    0,    0,  339,    0,  335,  339,  335,  339,  335,
-      339,    0,    0,  341,  335,  339,  340,  340,    0,  340,
-        0,    0,    0,  341,    0,  341,  340,  341,  340,    0,
-      340,  341,  341,  343,  342,  340,  342,    0,    0,    0,
-        0,    0,    0,  343,  342,  343,  342,  343,  342,  344,
-        0,    0,  343,  342,    0,  345,    0,    0,  345,  344,
-        0,  344,    0,  344,    0,  345,  346,  345,  344,  345,
-      347,    0,    0,  348,  345,    0,  346,  347,  346,    0,
-      346,    0,    0,  346,    0,  346,    0,  347,  348,  347,
+        0,  327,  329,  327,  328,  327,  328,    0,  328,    0,
+      327,    0,  329,  328,  329,  330,  329,    0,    0,    0,
+        0,  329,    0,  331,    0,  330,    0,  330,    0,  330,
+        0,  332,    0,  331,  330,  331,    0,  331,  332,  331,
+        0,  332,  331,  332,  333,  332,    0,    0,    0,    0,
+      332,    0,  334,    0,  333,  334,  333,    0,  333,  334,
+        0,    0,  334,  333,  334,  335,  334,  335,    0,    0,
+        0,  334,    0,  336,    0,  335,  336,  335,    0,  335,
+      336,  337,    0,  336,  335,  336,    0,  336,    0,  338,
+        0,  337,  336,  337,    0,  337,    0,  337,    0,  338,
 
-        0,  347,    0,    0,  350,    0,  347,    0,  348,    0,
-      348,    0,  348,    0,  350,  351,  350,  348,  350,    0,
-        0,  352,  350,  350,    0,  351,    0,  351,    0,  351,
-        0,  352,  354,  352,  351,  352,    0,    0,    0,    0,
-      352,    0,  354,  355,  354,    0,  354,    0,  354,  356,
-      355,  354,    0,  355,    0,  355,    0,  355,    0,  356,
-      357,  356,  355,  356,    0,    0,    0,    0,  356,    0,
-      357,    0,  357,  359,  357,    0,  360,    0,  357,  357,
-      359,    0,    0,  359,  361,  359,  360,  359,  360,  361,
-      360,    0,  359,    0,  361,  360,  361,  362,  361,    0,
+      337,  338,    0,  338,  339,  339,    0,  338,  338,    0,
+      340,    0,    0,    0,  339,    0,  339,    0,  339,    0,
+      340,  341,  340,  339,  340,    0,    0,  342,  340,  340,
+        0,  341,    0,  341,    0,  341,    0,  342,  341,  342,
+      341,  342,  343,  347,    0,    0,  342,    0,    0,    0,
+      347,    0,  343,  347,  343,  347,  343,  347,    0,    0,
+      349,  343,  347,  348,  348,    0,  348,    0,    0,    0,
+      349,    0,  349,  348,  349,  348,    0,  348,  349,  349,
+      351,  350,  348,  350,    0,    0,    0,    0,    0,    0,
+      351,  350,  351,  350,  351,  350,  352,    0,    0,  351,
 
-        0,    0,    0,  361,    0,    0,    0,  362,  364,  362,
-        0,  362,    0,    0,  366,  364,  362,    0,  364,  362,
-      364,    0,  364,    0,  366,    0,  366,  364,  366,  367,
-      368,    0,  367,  366,    0,    0,    0,    0,    0,  367,
-      368,  367,  368,  367,  368,  370,  368,    0,  367,  368,
-        0,  375,    0,    0,    0,  370,    0,  370,    0,  370,
-        0,  375,    0,  375,  370,  375,  376,  376,    0,    0,
-      375,    0,    0,  377,    0,    0,    0,  376,    0,  376,
-        0,  376,    0,  377,  379,  377,  376,  377,    0,  370,
-      380,  377,  377,    0,  379,    0,  379,    0,  379,    0,
+      350,    0,  353,    0,    0,  353,  352,    0,  352,    0,
+      352,  355,  353,  354,  353,  352,  353,    0,  356,  355,
+        0,  353,    0,  354,    0,  354,    0,  354,    0,  355,
+      354,  355,  354,  355,  356,    0,    0,  358,  355,    0,
+      359,    0,    0,    0,  356,    0,  356,  358,  356,  358,
+      359,  358,  359,  356,  359,  358,  358,  360,  362,  359,
+        0,    0,    0,    0,    0,    0,    0,  360,  362,  360,
+      362,  360,  362,  363,  362,    0,  360,  362,    0,  364,
+      363,    0,    0,  363,    0,  363,    0,  363,    0,  364,
+      365,  364,  363,  364,    0,    0,    0,    0,  364,    0,
 
-      380,  381,  380,  379,  380,    0,    0,  382,  380,  380,
-      382,  381,    0,  381,    0,  381,    0,  382,    0,  382,
-      381,  382,  383,  383,  384,    0,  382,    0,    0,    0,
-        0,    0,    0,  383,  384,  383,  384,  383,  384,  385,
-        0,    0,  383,  384,    0,    0,    0,    0,    0,  385,
-      386,  385,  386,  385,    0,    0,  387,  385,  385,    0,
-      386,    0,  386,    0,  386,    0,  387,    0,  387,  386,
-      387,    0,    0,  388,  387,  387,  388,    0,    0,  389,
-        0,  389,    0,  388,    0,  388,    0,  388,    0,  389,
-      390,  389,  388,  389,    0,  391,  391,    0,  389,    0,
+      365,    0,  365,  367,  365,    0,  368,    0,  365,  365,
+      367,    0,    0,  367,  369,  367,  368,  367,  368,  369,
+      368,    0,  367,    0,  369,  368,  369,  370,  369,    0,
+        0,    0,    0,  369,    0,    0,    0,  370,  372,  370,
+        0,  370,    0,    0,  374,  372,  370,    0,  372,  370,
+      372,    0,  372,    0,  374,    0,  374,  372,  374,  375,
+      376,    0,  375,  374,    0,    0,    0,    0,    0,  375,
+      376,  375,  376,  375,  376,  378,  376,    0,  375,  376,
+        0,    0,  383,  383,  383,  378,    0,  378,    0,  378,
+        0,    0,    0,  386,  378,  383,  383,  383,  383,  383,
 
-      390,    0,  390,    0,  390,    0,  391,  392,  391,  390,
-      391,    0,    0,  393,    0,  391,    0,  392,    0,  392,
-      393,  392,    0,  393,  394,  393,  392,  393,    0,    0,
-      395,    0,  393,    0,  394,    0,  394,  395,  394,    0,
-      395,  394,  395,  394,  395,  396,  396,  400,    0,  395,
-        0,  400,    0,    0,    0,    0,  396,  400,  396,  400,
-      396,  400,  401,    0,    0,  396,  400,    0,  402,  401,
-      402,    0,  401,    0,  401,    0,  401,    0,  402,  403,
-      402,  401,  402,    0,    0,  404,    0,  402,  404,  403,
-        0,  403,    0,  403,    0,  404,  403,  404,  403,  404,
+      383,  383,  383,  386,    0,  386,    0,  386,    0,  387,
+      387,    0,  386,  388,    0,    0,  390,    0,    0,  378,
+      387,    0,  387,  388,  387,  388,  390,  388,  390,  387,
+      390,  388,  388,  391,  392,  390,    0,    0,    0,    0,
+        0,    0,    0,  391,  392,  391,  392,  391,  392,    0,
+        0,  391,  391,  392,  393,    0,    0,  393,    0,  394,
+      394,    0,    0,    0,  393,    0,  393,    0,  393,    0,
+      394,  395,  394,  393,  394,    0,    0,  396,    0,  394,
+        0,  395,    0,  395,    0,  395,    0,  396,    0,  396,
+      395,  396,  397,    0,  397,  396,  396,    0,  398,    0,
 
-      405,  405,    0,    0,  404,    0,  406,  406,    0,    0,
-      405,    0,  405,    0,  405,    0,  406,  407,  406,  405,
-      406,    0,    0,    0,    0,  406,    0,  407,    0,  407,
-        0,  407,  408,  407,    0,  408,  407,    0,  409,    0,
-        0,    0,  408,    0,  408,    0,  408,    0,  409,  410,
-      409,  408,  409,    0,    0,  409,  410,  409,    0,  410,
-      412,  410,    0,  410,    0,  413,  413,    0,  410,    0,
-      412,    0,  412,    0,  412,    0,  413,  415,  413,  412,
-      413,    0,    0,  416,    0,  413,    0,  415,    0,  415,
-        0,  415,    0,  416,  417,  416,  415,  416,    0,    0,
+        0,    0,  397,    0,  397,    0,  397,    0,  398,    0,
+      398,  397,  398,    0,    0,  399,  398,  398,  399,    0,
+        0,  400,    0,  400,    0,  399,    0,  399,    0,  399,
+        0,  400,  401,  400,  399,  400,    0,  402,  402,    0,
+      400,    0,  401,    0,  401,    0,  401,    0,  402,  403,
+      402,  401,  402,    0,    0,  404,    0,  402,    0,  403,
+        0,  403,  404,  403,    0,  404,  405,  404,  403,  404,
+        0,    0,  406,    0,  404,    0,  405,    0,  405,  406,
+      405,    0,  406,  405,  406,  405,  406,  407,  407,  411,
+        0,  406,    0,  411,    0,    0,    0,    0,  407,  411,
 
-        0,    0,  416,    0,  417,    0,  417,  418,  417,    0,
-      418,    0,  417,  417,    0,  420,    0,  418,    0,  418,
-        0,  418,    0,    0,    0,  420,  418,  420,    0,  420,
-      421,  421,    0,  422,  420,  420,  423,    0,    0,    0,
-      421,    0,  421,  422,  421,  422,  423,  422,  423,  421,
-      423,  425,  422,  425,  427,  423,    0,  428,    0,    0,
-        0,  425,    0,  425,  427,  425,  427,  428,  427,  428,
-      425,  428,  435,  427,  428,    0,  428,    0,    0,    0,
-        0,    0,  435,    0,  435,  436,  435,    0,  438,    0,
-      435,  435,  436,    0,    0,  436,    0,  436,  438,  436,
+      407,  411,  407,  411,  412,    0,    0,  407,  411,    0,
+      413,  412,  413,    0,  412,    0,  412,    0,  412,    0,
+      413,  414,  413,  412,  413,    0,    0,  415,    0,  413,
+      415,  414,    0,  414,    0,  414,    0,  415,  414,  415,
+      414,  415,  416,  416,    0,    0,  415,    0,  417,  417,
+        0,    0,  416,    0,  416,    0,  416,    0,  417,  418,
+      417,  416,  417,    0,    0,    0,    0,  417,    0,  418,
+        0,  418,    0,  418,  419,  418,    0,  419,  418,    0,
+      420,    0,    0,    0,  419,    0,  419,    0,  419,    0,
+      420,  421,  420,  419,  420,    0,    0,  420,  421,  420,
 
-      438,    0,  438,  439,  436,    0,  439,  438,    0,  440,
-        0,    0,    0,  439,    0,  439,    0,  439,    0,  440,
-      441,  440,  439,  440,    0,    0,  442,  441,  440,    0,
-      441,    0,  441,  442,  441,    0,  442,  443,  442,  441,
-      442,    0,    0,  444,    0,  442,    0,  443,    0,  443,
-        0,  443,    0,  444,  445,  444,  443,  444,    0,    0,
-        0,  445,  444,    0,  445,  446,  445,  446,  445,    0,
-        0,  447,    0,  445,    0,  446,    0,  446,    0,  446,
-        0,  447,  448,  447,  446,  447,    0,  448,  449,    0,
-      447,    0,  448,    0,  448,    0,  448,    0,  449,  450,
+        0,  421,  423,  421,    0,  421,    0,  424,  424,    0,
+      421,    0,  423,    0,  423,    0,  423,    0,  424,  426,
+      424,  423,  424,    0,    0,  427,    0,  424,    0,  426,
+        0,  426,    0,  426,    0,  427,  428,  427,  426,  427,
+        0,    0,    0,    0,  427,    0,  428,    0,  428,  429,
+      428,    0,  429,    0,  428,  428,    0,  431,    0,  429,
+        0,  429,    0,  429,    0,    0,    0,  431,  429,  431,
+        0,  431,  432,  432,    0,  433,  431,  431,  434,    0,
+        0,    0,  432,    0,  432,  433,  432,  433,  434,  433,
+      434,  432,  434,  436,  433,  436,  438,  434,    0,  439,
 
-      449,  448,  449,    0,    0,    0,  449,  449,    0,  450,
-      451,  450,    0,  450,    0,    0,  452,  450,  450,    0,
-      451,    0,  451,    0,  451,    0,  452,  453,  452,  451,
-      452,    0,    0,  457,    0,  452,    0,  453,    0,  453,
-      457,  453,    0,  457,  458,  457,  453,  457,    0,    0,
-        0,    0,  457,    0,  458,  459,  458,    0,  458,    0,
-        0,  460,  458,  458,    0,  459,    0,  459,    0,  459,
-        0,  460,  461,  460,  459,  460,    0,    0,  462,    0,
-      460,  462,  461,    0,  461,    0,  461,    0,  462,  461,
-      462,  461,  462,  463,  464,    0,    0,  462,    0,    0,
+        0,    0,    0,  436,    0,  436,  438,  436,  438,  439,
+      438,  439,  436,  439,    0,  438,  439,    0,  439,  445,
+      445,  445,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,  445,  445,  445,  445,  445,  445,  445,  445,
+      446,    0,  448,    0,  446,  446,  446,  446,  446,  446,
+      446,  446,  448,    0,  448,  449,  448,    0,  451,    0,
+      448,  448,  449,    0,    0,  449,    0,  449,  451,  449,
+      451,    0,  451,  452,  449,    0,  452,  451,    0,  453,
+        0,    0,    0,  452,    0,  452,    0,  452,    0,  453,
+      454,  453,  452,  453,    0,    0,  455,  454,  453,    0,
 
-        0,    0,    0,  463,  464,  463,  464,  463,  464,  465,
-      465,  463,  463,  464,    0,  466,    0,    0,    0,  465,
-        0,  465,    0,  465,    0,  466,  467,  466,  465,  466,
-        0,    0,  469,    0,  466,    0,  467,    0,  467,    0,
-      467,    0,  469,  471,  469,  467,  469,    0,    0,    0,
-        0,  469,    0,  471,  472,  471,    0,  471,  472,  466,
-      473,    0,  471,    0,  472,    0,  472,    0,  472,    0,
-      473,  474,  473,  472,  473,    0,    0,  476,    0,  473,
-      476,  474,    0,  474,    0,  474,    0,  476,    0,  476,
-      474,  476,  477,    0,    0,  477,  476,    0,  479,    0,
+      454,    0,  454,  455,  454,    0,  455,  456,  455,  454,
+      455,    0,    0,  457,    0,  455,    0,  456,    0,  456,
+        0,  456,    0,  457,  458,  457,  456,  457,    0,    0,
+        0,  458,  457,    0,  458,  459,  458,  459,  458,    0,
+        0,  460,    0,  458,    0,  459,    0,  459,    0,  459,
+        0,  460,  461,  460,  459,  460,    0,  461,  462,    0,
+      460,    0,  461,    0,  461,    0,  461,    0,  462,  463,
+      462,  461,  462,    0,    0,    0,  462,  462,    0,  463,
+      464,  463,    0,  463,    0,    0,  465,  463,  463,    0,
+      464,    0,  464,    0,  464,    0,  465,  466,  465,  464,
 
-        0,  479,  477,    0,  477,    0,  477,    0,  479,    0,
-      479,  477,  479,  481,  481,  488,    0,  479,    0,    0,
-        0,    0,  488,    0,  481,  488,  481,  488,  481,  488,
-      489,  489,    0,  481,  488,    0,  491,    0,    0,    0,
-      489,    0,  489,    0,  489,    0,  491,  492,  491,  489,
-      491,    0,  491,    0,    0,  491,    0,  492,  493,  492,
-        0,  492,    0,    0,  494,  492,  492,    0,  493,    0,
-      493,    0,  493,    0,  494,  495,  494,  493,  494,    0,
-        0,  496,  497,  494,    0,  495,    0,  495,  495,  495,
-        0,  496,    0,  496,  495,  496,  498,  497,    0,  498,
+      465,    0,    0,  470,    0,  465,    0,  466,    0,  466,
+      470,  466,    0,  470,  471,  470,  466,  470,    0,    0,
+        0,    0,  470,    0,  471,  472,  471,    0,  471,    0,
+        0,  473,  471,  471,    0,  472,    0,  472,    0,  472,
+        0,  473,  474,  473,  472,  473,    0,    0,  475,    0,
+      473,  475,  474,    0,  474,    0,  474,    0,  475,  474,
+      475,  474,  475,  476,  477,    0,    0,  475,    0,    0,
+        0,    0,    0,  476,  477,  476,  477,  476,  477,  478,
+      478,  476,  476,  477,    0,  479,    0,    0,    0,  478,
+        0,  478,    0,  478,    0,  479,  480,  479,  478,  479,
 
-      496,    0,    0,    0,    0,    0,  498,  497,  498,  497,
-      498,  497,  499,  500,    0,  498,  497,    0,    0,    0,
-      500,    0,  499,  500,  499,  500,  499,  500,  501,    0,
-        0,  499,  500,    0,  506,    0,    0,  506,  501,    0,
-      501,    0,  501,    0,  506,  507,  506,  501,  506,    0,
-        0,  508,    0,  506,    0,  507,    0,  507,    0,  507,
-        0,  508,  509,  508,  507,  508,    0,    0,  510,    0,
-      508,    0,  509,    0,  509,  510,  509,    0,  510,  511,
-      510,  509,  510,    0,    0,    0,    0,  510,    0,  511,
-      513,  511,    0,  511,  513,    0,  515,  511,  511,    0,
+        0,    0,  482,    0,  479,    0,  480,    0,  480,    0,
+      480,    0,  482,  484,  482,  480,  482,    0,    0,    0,
+        0,  482,    0,  484,  485,  484,    0,  484,  485,  479,
+      486,    0,  484,    0,  485,    0,  485,    0,  485,    0,
+      486,  487,  486,  485,  486,    0,    0,  489,    0,  486,
+      489,  487,    0,  487,    0,  487,    0,  489,    0,  489,
+      487,  489,  490,    0,    0,  490,  489,    0,  492,    0,
+        0,  492,  490,    0,  490,    0,  490,    0,  492,    0,
+      492,  490,  492,  494,  494,    0,    0,  492,    0,    0,
+        0,  500,  500,  500,  494,    0,  494,    0,  494,    0,
 
-      513,    0,  513,  519,  513,    0,  515,  517,  515,  513,
-      515,    0,    0,    0,  517,  515,    0,  517,  519,  517,
-        0,  517,    0,    0,  520,    0,  517,    0,  519,    0,
-      519,    0,  519,    0,  520,  522,  520,  519,  520,    0,
-        0,  524,    0,  520,    0,  522,    0,  522,    0,  522,
-        0,  524,  530,  524,  522,  524,    0,    0,  531,    0,
-      524,    0,  530,    0,  530,  530,  530,    0,  531,  533,
-      531,  530,  531,    0,    0,  534,    0,  531,    0,  533,
-        0,  533,    0,  533,    0,  534,    0,  534,  533,  534,
-      535,  536,  534,  535,  534,    0,  536,    0,    0,    0,
+        0,    0,    0,  494,  500,  500,  500,  500,  500,  500,
+      500,  500,  502,  503,  503,    0,    0,    0,    0,  502,
+        0,    0,  502,  503,  502,  503,  502,  503,  505,    0,
+        0,  502,  503,    0,    0,    0,  506,    0,  505,  507,
+      505,    0,  505,    0,  505,    0,  506,  505,  506,  507,
+      506,  507,  508,  507,  506,  506,    0,    0,  507,    0,
+      509,    0,  508,    0,  508,  511,  508,    0,  510,    0,
+      509,  508,  509,  509,  509,    0,    0,    0,  510,  509,
+      510,  511,  510,    0,    0,    0,    0,  510,    0,  512,
+        0,  511,  512,  511,    0,  511,    0,  513,    0,  512,
 
-      535,  536,  535,  536,  535,  536,  537,  538,  538,  535,
-      536,    0,    0,    0,    0,    0,  537,  538,  537,  538,
-      537,  538,  539,  540,  539,  537,  538,    0,    0,    0,
-        0,    0,  539,  540,  539,  540,  539,  540,  545,    0,
-        0,  539,  540,    0,    0,    0,  546,    0,  545,    0,
-      545,    0,  545,    0,  545,    0,  546,  545,  546,  546,
-      546,  547,  549,    0,    0,  546,    0,    0,  547,  549,
-        0,  547,  549,  547,  549,  547,  549,  552,    0,    0,
-      547,  549,    0,    0,    0,  554,    0,  552,    0,  552,
-        0,  552,    0,  556,    0,  554,  552,  554,  554,  554,
+      511,  512,    0,  512,    0,  514,    0,  513,  512,  513,
+        0,  513,  514,  515,    0,  514,  513,  514,    0,  514,
+        0,    0,    0,  515,  514,  515,  520,  515,    0,  520,
+        0,    0,  515,    0,  521,    0,  520,  522,  520,    0,
+      520,    0,    0,    0,  521,  520,  521,  522,  521,  522,
+      523,  522,    0,  521,    0,    0,  522,    0,  524,    0,
+      523,  525,  523,    0,  523,  524,    0,    0,  524,  523,
+      524,  525,  524,  525,  527,  525,    0,  524,  527,  525,
+      525,    0,  529,    0,  527,    0,  527,  533,  527,    0,
+      531,    0,  529,  527,  529,    0,  529,  531,    0,    0,
 
-        0,    0,    0,  556,  554,  556,  558,  556,    0,  564,
-        0,  556,  556,    0,    0,    0,  558,  565,  558,  564,
-      558,  564,    0,  564,    0,  558,    0,  565,  564,  565,
-      566,  565,  566,  567,    0,    0,  565,    0,    0,    0,
-      566,  568,  566,  567,  566,  567,    0,  567,    0,  566,
-        0,  568,  567,  568,  569,  568,    0,    0,  568,    0,
-      568,    0,  570,    0,  569,    0,  569,  569,  569,    0,
-      571,    0,  570,  569,  570,    0,  570,  571,  575,    0,
-      571,  570,  571,    0,  571,    0,  576,    0,  575,  571,
-      575,    0,  575,    0,  577,    0,  576,  575,  576,    0,
+      531,  529,  531,  533,  531,    0,  534,    0,    0,  531,
+        0,    0,    0,  533,  536,  533,  534,  533,  534,    0,
+      534,    0,  533,    0,  536,  534,  536,  538,  536,    0,
+        0,    0,    0,  536,  543,  543,  543,  538,    0,  538,
+        0,  538,    0,    0,    0,  546,  538,  543,  543,  543,
+      543,  543,  543,  543,  543,  546,  547,  546,  546,  546,
+        0,    0,  549,    0,  546,    0,  547,    0,  547,    0,
+      547,    0,  549,  550,  549,  547,  549,    0,    0,  551,
+        0,  549,  551,  550,    0,  550,    0,  550,    0,  551,
+      550,  551,  550,  551,  552,  553,    0,    0,  551,  552,
 
-      576,    0,  579,    0,  577,  576,  577,  577,  577,    0,
-      582,    0,  579,  577,  579,    0,  579,  582,  584,    0,
-      582,  579,  582,    0,  582,  584,  585,    0,  584,  582,
-      584,    0,  584,  585,  592,    0,  585,  584,  585,    0,
-      585,    0,  593,    0,  592,  585,  592,    0,  592,    0,
-      594,    0,  593,  592,  593,    0,  593,    0,  595,    0,
-      594,  593,  594,    0,  594,    0,  596,    0,  595,  594,
-      595,    0,  595,    0,    0,    0,  596,  595,  596,  600,
-      596,    0,    0,    0,  596,  596,    0,  601,    0,  600,
-        0,  600,    0,  600,    0,  603,  600,  601,  600,  601,
+        0,    0,    0,    0,  552,  553,  552,  553,  552,  553,
+      554,  554,    0,  552,  553,    0,  555,    0,  555,    0,
+      554,    0,  554,    0,  554,    0,  555,  556,  555,  554,
+      555,    0,    0,  561,    0,  555,    0,  556,    0,  556,
+        0,  556,    0,  561,  562,  561,  556,  561,    0,  561,
+        0,    0,  561,    0,  562,  563,  562,  562,  562,    0,
+        0,  565,  563,  562,    0,  563,    0,  563,  565,  563,
+        0,  565,  568,  565,  563,  565,    0,    0,    0,    0,
+      565,    0,  568,  570,  568,    0,  568,    0,    0,  572,
+        0,  568,    0,  570,    0,  570,  570,  570,    0,  572,
 
-        0,  601,  603,  606,    0,  603,  601,  603,    0,  603,
-        0,    0,    0,  606,  603,  606,  608,  606,  608,  609,
-        0,  606,  606,  609,    0,    0,  608,  615,  608,  609,
-      608,  609,    0,  609,    0,  608,    0,  615,  609,  615,
-      616,  615,    0,  620,    0,  615,  615,    0,    0,    0,
-      616,    0,  616,  620,  616,  620,  621,  620,    0,  616,
-        0,    0,  620,  616,  623,    0,  621,  626,  621,    0,
-      621,    0,    0,    0,  623,  621,  623,  626,  623,  626,
-        0,  626,  623,  623,  628,  629,  626,    0,    0,    0,
-      626,    0,  629,    0,  628,  629,  628,  629,  628,  629,
+      574,  572,  570,  572,    0,    0,  582,  572,  572,    0,
+      574,    0,  574,    0,  574,    0,  582,  583,  582,  574,
+      582,    0,    0,    0,    0,  582,    0,  583,  584,  583,
+      584,  583,    0,    0,  585,    0,  583,    0,  584,    0,
+      584,    0,  584,    0,  585,  586,  585,  584,  585,    0,
+        0,    0,    0,  585,    0,  586,  587,  586,    0,  586,
+        0,    0,  586,    0,  586,    0,  587,  588,  587,  587,
+      587,    0,    0,  589,    0,  587,    0,  588,    0,  588,
+      589,  588,    0,  589,  593,  589,  588,  589,    0,    0,
+      594,    0,  589,    0,  593,    0,  593,    0,  593,    0,
 
-      635,  636,    0,  628,  629,    0,    0,    0,    0,    0,
-      635,  636,  635,  636,  635,  636,  635,  640,  643,  635,
-      636,    0,    0,    0,    0,    0,    0,  640,  643,  640,
-      643,  640,  643,    0,    0,  645,  640,  643,  645,    0,
-      640,    0,    0,  651,    0,  645,    0,  645,    0,  645,
-        0,  653,    0,  651,  645,  651,  651,  651,    0,  656,
-        0,  653,  651,  653,    0,  653,    0,  660,    0,  656,
-      653,  656,    0,  656,    0,  656,    0,  660,  656,  660,
-      664,  660,    0,  667,    0,    0,  660,    0,    0,    0,
-      664,    0,  664,  667,  664,  667,    0,  667,    0,  664,
+      594,  595,  594,  593,  594,    0,    0,  597,    0,  594,
+        0,  595,    0,  595,  595,  595,    0,  597,  600,  597,
+      595,  597,    0,    0,  602,  600,  597,    0,  600,    0,
+      600,  602,  600,    0,  602,  603,  602,  600,  602,    0,
+        0,  610,  603,  602,    0,  603,    0,  603,    0,  603,
+        0,  610,  611,  610,  603,  610,    0,    0,  612,    0,
+      610,    0,  611,    0,  611,    0,  611,    0,  612,  613,
+      612,  611,  612,    0,    0,  614,    0,  612,    0,  613,
+        0,  613,    0,  613,    0,  614,  618,  614,  613,  614,
+        0,    0,  619,  614,  614,    0,  618,    0,  618,    0,
 
-        0,    0,  667,  671,  671,  671,  671,  671,  671,  671,
-      671,  671,  671,  671,  672,  672,  672,  672,  672,  672,
-      672,  672,  672,  672,  672,  673,  673,  673,  673,  673,
-      673,  673,  673,  673,  673,  673,  674,  674,  674,  674,
-      674,  674,  674,  674,  674,  674,  674,  675,  675,  675,
-      675,  675,  675,  675,  675,  675,  675,  675,  676,  676,
-      676,  676,  676,  676,  676,  676,  676,  676,  676,  677,
-      677,  677,    0,  677,  677,  677,  677,  677,  677,  677,
-      678,  678,    0,    0,  678,    0,  678,  679,  679,    0,
-      679,  680,  680,    0,  680,  680,  680,    0,  680,  680,
+      618,    0,  619,  618,  619,  618,  619,  621,    0,    0,
+      624,  619,    0,  626,  621,  626,    0,  621,    0,  621,
+      624,  621,  624,  626,  624,  626,  621,  626,  624,  624,
+      627,    0,  626,  633,  627,    0,  634,    0,    0,    0,
+      627,    0,  627,  633,  627,  633,  634,  633,  634,  627,
+      634,  633,  633,  638,  639,  634,    0,    0,    0,  634,
+        0,    0,    0,  638,  639,  638,  639,  638,  639,  641,
+      644,    0,  638,  639,    0,    0,    0,    0,    0,  641,
+      644,  641,  644,  641,  644,  646,    0,  641,  641,  644,
+        0,  647,    0,  644,    0,  646,    0,  646,  647,  646,
 
-      680,  680,  681,  681,  681,    0,  681,  681,  681,  681,
-      681,  681,  681,  682,  682,  682,  682,  682,  682,  682,
-      682,    0,  682,  683,    0,    0,  683,  683,  683,  683,
-      683,  683,  683,  684,    0,    0,  684,  684,  684,  684,
-      684,  684,  684,  685,    0,    0,  685,    0,  685,  685,
-      685,  685,  685,  686,  686,    0,  686,  687,  687,    0,
-      687,  688,  688,    0,  688,  670,  670,  670,  670,  670,
-      670,  670,  670,  670,  670,  670,  670,  670,  670,  670,
-      670,  670,  670,  670,  670,  670,  670,  670,  670,  670,
-      670,  670,  670,  670,  670,  670,  670,  670,  670,  670,
+        0,  647,  653,  647,  646,  647,    0,    0,    0,    0,
+      647,    0,  653,  654,  653,    0,  653,    0,  653,  658,
+        0,  653,    0,  654,    0,  654,    0,  654,    0,  658,
+        0,  658,  654,  658,  661,    0,    0,  663,  658,    0,
+      663,    0,  658,    0,  661,  669,  661,  663,  661,  663,
+        0,  663,    0,  661,    0,  669,  663,  669,  669,  669,
+      671,  674,    0,    0,  669,    0,    0,    0,    0,    0,
+      671,  674,  671,  674,  671,  674,  678,  674,    0,  671,
+      674,    0,  682,    0,    0,    0,  678,    0,  678,    0,
+      678,    0,  682,  685,  682,  678,  682,    0,    0,    0,
 
-      670,  670,  670,  670,  670,  670,  670,  670,  670,  670,
-      670,  670,  670,  670,  670,  670,  670,  670,  670,  670,
-      670,  670,  670,  670,  670,  670,  670,  670,  670,  670,
-      670,  670,  670,  670,  670,  670,  670,  670,  670,  670,
-      670,  670,  670
+        0,  682,    0,  685,    0,  685,    0,  685,    0,    0,
+        0,    0,  685,  689,  689,  689,  689,  689,  689,  689,
+      689,  689,  689,  689,  689,  689,  689,  690,  690,  690,
+      690,  690,  690,  690,  690,  690,  690,  690,  690,  690,
+      690,  691,  691,  691,  691,  691,  691,  691,  691,  691,
+      691,  691,  691,  691,  691,  692,  692,  692,  692,  692,
+      692,  692,  692,  692,  692,  692,  692,  692,  692,  693,
+      693,  693,  693,  693,  693,  693,  693,  693,  693,  693,
+      693,  693,  693,  694,  694,  694,  694,  694,  694,  694,
+      694,  694,  694,  694,  694,  694,  694,  695,  695,  695,
+
+        0,  695,  695,  695,  695,  695,  695,  695,  695,  695,
+      695,  696,  696,    0,    0,  696,    0,    0,  696,    0,
+      696,  697,  697,    0,  697,  697,  698,  698,    0,  698,
+      698,  698,  698,    0,  698,  698,  698,  698,  698,  698,
+      699,  699,  699,    0,  699,  699,  699,  699,  699,  699,
+      699,  699,  699,  699,  700,  700,  700,  700,  700,  700,
+      700,  700,  700,    0,  700,  700,  701,    0,    0,  701,
+      701,  701,  701,  701,  701,  701,  701,  701,  702,    0,
+        0,  702,  702,  702,  702,  702,  702,  702,  702,  702,
+      703,    0,    0,  703,    0,  703,  703,  703,  703,  703,
+
+      703,  703,  704,  704,    0,  704,  704,  705,  705,    0,
+      705,  705,  706,  706,    0,  706,  706,  707,  707,    0,
+        0,    0,  707,    0,  707,    0,    0,    0,    0,  707,
+      708,  708,    0,    0,    0,    0,    0,  708,    0,    0,
+        0,    0,  708,  688,  688,  688,  688,  688,  688,  688,
+      688,  688,  688,  688,  688,  688,  688,  688,  688,  688,
+      688,  688,  688,  688,  688,  688,  688,  688,  688,  688,
+      688,  688,  688,  688,  688,  688,  688,  688,  688,  688,
+      688,  688,  688,  688,  688,  688,  688,  688,  688,  688,
+      688,  688,  688,  688,  688,  688,  688,  688,  688,  688,
+
+      688,  688,  688,  688,  688,  688,  688,  688,  688,  688,
+      688,  688,  688,  688,  688,  688,  688,  688,  688,  688,
+      688,  688,  688
     } ;
 
 extern int yy_flex_debug;
 int yy_flex_debug = 1;
 
-static yyconst short int yy_rule_linenum[129] =
+static yyconst short int yy_rule_linenum[130] =
     {   0,
       103,  106,  108,  109,  110,  113,  115,  116,  117,  129,
       136,  143,  149,  158,  166,  174,  175,  177,  196,  202,
@@ -1718,7 +1787,7 @@
 
       336,  337,  338,  339,  340,  341,  342,  347,  348,  353,
       354,  355,  358,  364,  371,  380,  391,  397,  399,  400,
-      402,  404,  406,  419,  425,  431,  438,  440
+      404,  410,  416,  424,  427,  452,  496,  498,  509
     } ;
 
 static yy_state_type yy_state_buf[YY_BUF_SIZE + 2], *yy_state_ptr;
@@ -1832,7 +1901,7 @@
 
 /* Newline */
 /* White-space */
-#line 1836 "asn1p_l.c"
+#line 1905 "asn1p_l.c"
 
 /* Macros after this point can all be overridden by user definitions in
  * section 1.
@@ -1986,7 +2055,7 @@
 #line 101 "asn1p_l.l"
 
 
-#line 1990 "asn1p_l.c"
+#line 2059 "asn1p_l.c"
 
 	if ( yy_init )
 		{
@@ -2034,14 +2103,14 @@
 			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 >= 671 )
+				if ( yy_current_state >= 689 )
 					yy_c = yy_meta[(unsigned int) yy_c];
 				}
 			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
 			*yy_state_ptr++ = yy_current_state;
 			++yy_cp;
 			}
-		while ( yy_base[yy_current_state] != 4266 );
+		while ( yy_base[yy_current_state] != 4544 );
 
 yy_find_action:
 		yy_current_state = *--yy_state_ptr;
@@ -2078,13 +2147,13 @@
 			{
 			if ( yy_act == 0 )
 				fprintf( stderr, "--scanner backing up\n" );
-			else if ( yy_act < 129 )
+			else if ( yy_act < 130 )
 				fprintf( stderr, "--accepting rule at line %d (\"%s\")\n",
 				         yy_rule_linenum[yy_act], yytext );
-			else if ( yy_act == 129 )
+			else if ( yy_act == 130 )
 				fprintf( stderr, "--accepting default rule (\"%s\")\n",
 				         yytext );
-			else if ( yy_act == 130 )
+			else if ( yy_act == 131 )
 				fprintf( stderr, "--(end of buffer or a NUL)\n" );
 			else
 				fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
@@ -2838,19 +2907,121 @@
 #line 400 "asn1p_l.l"
 return TOK_TwoDots;
 	YY_BREAK
+
 case 121:
 YY_RULE_SETUP
-#line 402 "asn1p_l.l"
-/* Ignore whitespace */
+#line 404 "asn1p_l.l"
+{
+			asn1p_lval.tv_opaque.buf = strdup(yytext);
+			asn1p_lval.tv_opaque.len = yyleng;
+			return TOK_opaque;
+			}
 	YY_BREAK
 case 122:
 YY_RULE_SETUP
-#line 404 "asn1p_l.l"
-return yytext[0];
+#line 410 "asn1p_l.l"
+{
+			asn1p_lval.tv_opaque.buf = strdup(yytext);
+			asn1p_lval.tv_opaque.len = yyleng;
+			return TOK_opaque;
+			}
 	YY_BREAK
 case 123:
 YY_RULE_SETUP
-#line 406 "asn1p_l.l"
+#line 416 "asn1p_l.l"
+{
+				yy_pop_state();
+				return '}';
+			}
+	YY_BREAK
+
+case 124:
+YY_RULE_SETUP
+#line 424 "asn1p_l.l"
+/* Ignore whitespace */
+	YY_BREAK
+case 125:
+YY_RULE_SETUP
+#line 427 "asn1p_l.l"
+{
+		asn1c_integer_t v1 = -1, v2 = -1;
+		char *p;
+		for(p = yytext; *p; p++)
+			if(*p >= '0' && *p <= '9')
+			{ v1 = asn1p_atoi(p); break; }
+		while(*p >= '0' && *p <= '9') p++;	/* Skip digits */
+		for(; *p; p++) if(*p >= '0' && *p <= '9')
+			{ v2 = asn1p_atoi(p); break; }
+		if(v1 < 0 || v1 > 7) {
+			fprintf(stderr, "%s at line %d: X.680:2003, #37.14 "
+				"mandates 0..7 range for Tuple's TableColumn\n",
+				yytext, yylineno);
+			return -1;
+		}
+		if(v2 < 0 || v2 > 15) {
+			fprintf(stderr, "%s at line %d: X.680:2003, #37.14 "
+				"mandates 0..15 range for Tuple's TableRow\n",
+				yytext, yylineno);
+			return -1;
+		}
+		asn1p_lval.a_int = (v1 << 4) + v2;
+		return TOK_tuple;
+	}
+	YY_BREAK
+case 126:
+YY_RULE_SETUP
+#line 452 "asn1p_l.l"
+{
+		asn1c_integer_t v1 = -1, v2 = -1, v3 = -1, v4 = -1;
+		char *p;
+		for(p = yytext; *p; p++)
+			if(*p >= '0' && *p <= '9')
+			{ v1 = asn1p_atoi(p); break; }
+		while(*p >= '0' && *p <= '9') p++;	/* Skip digits */
+		for(; *p; p++) if(*p >= '0' && *p <= '9')
+			{ v2 = asn1p_atoi(p); break; }
+		while(*p >= '0' && *p <= '9') p++;
+		for(; *p; p++) if(*p >= '0' && *p <= '9')
+			{ v3 = asn1p_atoi(p); break; }
+		while(*p >= '0' && *p <= '9') p++;
+		for(; *p; p++) if(*p >= '0' && *p <= '9')
+			{ v4 = asn1p_atoi(p); break; }
+		if(v1 < 0 || v1 > 127) {
+			fprintf(stderr, "%s at line %d: X.680:2003, #37.12 "
+				"mandates 0..127 range for Quadruple's Group\n",
+				yytext, yylineno);
+			return -1;
+		}
+		if(v2 < 0 || v2 > 255) {
+			fprintf(stderr, "%s at line %d: X.680:2003, #37.12 "
+				"mandates 0..255 range for Quadruple's Plane\n",
+				yytext, yylineno);
+			return -1;
+		}
+		if(v3 < 0 || v3 > 255) {
+			fprintf(stderr, "%s at line %d: X.680:2003, #37.12 "
+				"mandates 0..255 range for Quadruple's Row\n",
+				yytext, yylineno);
+			return -1;
+		}
+		if(v4 < 0 || v4 > 255) {
+			fprintf(stderr, "%s at line %d: X.680:2003, #37.12 "
+				"mandates 0..255 range for Quadruple's Cell\n",
+				yytext, yylineno);
+			return -1;
+		}
+		asn1p_lval.a_int = (v1 << 24) | (v2 << 16) | (v3 << 8) | v4;
+		return TOK_quadruple;
+	}
+	YY_BREAK
+case 127:
+YY_RULE_SETUP
+#line 496 "asn1p_l.l"
+return yytext[0];
+	YY_BREAK
+case 128:
+YY_RULE_SETUP
+#line 498 "asn1p_l.l"
 {
 		if(TYPE_LIFETIME(1994, 0))
 			fprintf(stderr, "ERROR: ");
@@ -2862,42 +3033,9 @@
 			return -1;
 	}
 	YY_BREAK
-
-case 124:
+case 129:
 YY_RULE_SETUP
-#line 419 "asn1p_l.l"
-{
-			asn1p_lval.tv_opaque.buf = strdup(yytext);
-			asn1p_lval.tv_opaque.len = yyleng;
-			return TOK_opaque;
-			}
-	YY_BREAK
-case 125:
-YY_RULE_SETUP
-#line 425 "asn1p_l.l"
-{
-			asn1p_lval.tv_opaque.buf = strdup(yytext);
-			asn1p_lval.tv_opaque.len = yyleng;
-			return TOK_opaque;
-			}
-	YY_BREAK
-case 126:
-YY_RULE_SETUP
-#line 431 "asn1p_l.l"
-{
-				yy_pop_state();
-				return '}';
-			}
-	YY_BREAK
-
-case 127:
-YY_RULE_SETUP
-#line 438 "asn1p_l.l"
-return yytext[0];	/* Union, Intersection */
-	YY_BREAK
-case 128:
-YY_RULE_SETUP
-#line 440 "asn1p_l.l"
+#line 509 "asn1p_l.l"
 {
 		fprintf(stderr,
 			"Unexpected token at line %d: \"%s\"\n",
@@ -2918,19 +3056,19 @@
 case YY_STATE_EOF(opaque):
 case YY_STATE_EOF(encoding_control):
 case YY_STATE_EOF(with_syntax):
-#line 453 "asn1p_l.l"
+#line 522 "asn1p_l.l"
 {
 		while(YYSTATE != INITIAL)
 			yy_pop_state();
 		yyterminate();
 	}
 	YY_BREAK
-case 129:
+case 130:
 YY_RULE_SETUP
-#line 460 "asn1p_l.l"
+#line 529 "asn1p_l.l"
 YY_FATAL_ERROR( "flex scanner jammed" );
 	YY_BREAK
-#line 2934 "asn1p_l.c"
+#line 3072 "asn1p_l.c"
 
 	case YY_END_OF_BUFFER:
 		{
@@ -3217,7 +3355,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 >= 671 )
+			if ( yy_current_state >= 689 )
 				yy_c = yy_meta[(unsigned int) yy_c];
 			}
 		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -3247,11 +3385,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 >= 671 )
+		if ( yy_current_state >= 689 )
 			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 == 670);
+	yy_is_jam = (yy_current_state == 688);
 	if ( ! yy_is_jam )
 		*yy_state_ptr++ = yy_current_state;
 
@@ -3812,7 +3950,7 @@
 	return 0;
 	}
 #endif
-#line 460 "asn1p_l.l"
+#line 529 "asn1p_l.l"
 
 
 /*
diff --git a/libasn1parser/asn1p_l.l b/libasn1parser/asn1p_l.l
index 50a786c..458d665 100644
--- a/libasn1parser/asn1p_l.l
+++ b/libasn1parser/asn1p_l.l
@@ -399,21 +399,6 @@
 "..."		return TOK_ThreeDots;
 ".."		return TOK_TwoDots;
 
-{WSP}+	/* Ignore whitespace */
-
-[(){},;:|!.&@\[\]]	return yytext[0];
-
-[^A-Za-z0-9:=,{}<.@()[]'\"|&^*;!-] {
-		if(TYPE_LIFETIME(1994, 0))
-			fprintf(stderr, "ERROR: ");
-		fprintf(stderr,
-		"Symbol '%c' at line %d is prohibited "
-		"by ASN.1:1994 and ASN.1:1997\n",
-			yytext[0], yylineno);
-		if(TYPE_LIFETIME(1994, 0))
-			return -1;
-	}
-
 <with_syntax>{
 
 	[^&{} \t\r\v\f\n]+	{
@@ -435,7 +420,91 @@
 
 }
 
-[|^]	return yytext[0];	/* Union, Intersection */
+
+{WSP}+	/* Ignore whitespace */
+
+
+[{][\t\r\v\f\n ]*[0-7][,][\t\r\v\f\n ]*[0-9]+[\t\r\v\f\n ]*[}]	{
+		asn1c_integer_t v1 = -1, v2 = -1;
+		char *p;
+		for(p = yytext; *p; p++)
+			if(*p >= '0' && *p <= '9')
+			{ v1 = asn1p_atoi(p); break; }
+		while(*p >= '0' && *p <= '9') p++;	/* Skip digits */
+		for(; *p; p++) if(*p >= '0' && *p <= '9')
+			{ v2 = asn1p_atoi(p); break; }
+		if(v1 < 0 || v1 > 7) {
+			fprintf(stderr, "%s at line %d: X.680:2003, #37.14 "
+				"mandates 0..7 range for Tuple's TableColumn\n",
+				yytext, yylineno);
+			return -1;
+		}
+		if(v2 < 0 || v2 > 15) {
+			fprintf(stderr, "%s at line %d: X.680:2003, #37.14 "
+				"mandates 0..15 range for Tuple's TableRow\n",
+				yytext, yylineno);
+			return -1;
+		}
+		asn1p_lval.a_int = (v1 << 4) + v2;
+		return TOK_tuple;
+	}
+
+[{][\t\r\v\f\n ]*[0-9]+[,][\t\r\v\f\n ]*[0-9]+[,][\t\r\v\f\n ]*[0-9]+[,][\t\r\v\f\n ]*[0-9]+[\t\r\v\f\n ]*[}]	{
+		asn1c_integer_t v1 = -1, v2 = -1, v3 = -1, v4 = -1;
+		char *p;
+		for(p = yytext; *p; p++)
+			if(*p >= '0' && *p <= '9')
+			{ v1 = asn1p_atoi(p); break; }
+		while(*p >= '0' && *p <= '9') p++;	/* Skip digits */
+		for(; *p; p++) if(*p >= '0' && *p <= '9')
+			{ v2 = asn1p_atoi(p); break; }
+		while(*p >= '0' && *p <= '9') p++;
+		for(; *p; p++) if(*p >= '0' && *p <= '9')
+			{ v3 = asn1p_atoi(p); break; }
+		while(*p >= '0' && *p <= '9') p++;
+		for(; *p; p++) if(*p >= '0' && *p <= '9')
+			{ v4 = asn1p_atoi(p); break; }
+		if(v1 < 0 || v1 > 127) {
+			fprintf(stderr, "%s at line %d: X.680:2003, #37.12 "
+				"mandates 0..127 range for Quadruple's Group\n",
+				yytext, yylineno);
+			return -1;
+		}
+		if(v2 < 0 || v2 > 255) {
+			fprintf(stderr, "%s at line %d: X.680:2003, #37.12 "
+				"mandates 0..255 range for Quadruple's Plane\n",
+				yytext, yylineno);
+			return -1;
+		}
+		if(v3 < 0 || v3 > 255) {
+			fprintf(stderr, "%s at line %d: X.680:2003, #37.12 "
+				"mandates 0..255 range for Quadruple's Row\n",
+				yytext, yylineno);
+			return -1;
+		}
+		if(v4 < 0 || v4 > 255) {
+			fprintf(stderr, "%s at line %d: X.680:2003, #37.12 "
+				"mandates 0..255 range for Quadruple's Cell\n",
+				yytext, yylineno);
+			return -1;
+		}
+		asn1p_lval.a_int = (v1 << 24) | (v2 << 16) | (v3 << 8) | v4;
+		return TOK_quadruple;
+	}
+
+
+[(){},;:|!.&@\[\]^]	return yytext[0];
+
+[^A-Za-z0-9:=,{}<.@()[]'\"|&^*;!-] {
+		if(TYPE_LIFETIME(1994, 0))
+			fprintf(stderr, "ERROR: ");
+		fprintf(stderr,
+		"Symbol '%c' at line %d is prohibited "
+		"by ASN.1:1994 and ASN.1:1997\n",
+			yytext[0], yylineno);
+		if(TYPE_LIFETIME(1994, 0))
+			return -1;
+	}
 
 <*>.	{
 		fprintf(stderr,
diff --git a/libasn1parser/asn1p_y.c b/libasn1parser/asn1p_y.c
index 353c4fa..1f90ec3 100644
--- a/libasn1parser/asn1p_y.c
+++ b/libasn1parser/asn1p_y.c
@@ -18,97 +18,99 @@
 #define	TOK_hstring	261
 #define	TOK_identifier	262
 #define	TOK_number	263
-#define	TOK_number_negative	264
-#define	TOK_typereference	265
-#define	TOK_capitalreference	266
-#define	TOK_typefieldreference	267
-#define	TOK_valuefieldreference	268
-#define	TOK_ABSENT	269
-#define	TOK_ABSTRACT_SYNTAX	270
-#define	TOK_ALL	271
-#define	TOK_ANY	272
-#define	TOK_APPLICATION	273
-#define	TOK_AUTOMATIC	274
-#define	TOK_BEGIN	275
-#define	TOK_BIT	276
-#define	TOK_BMPString	277
-#define	TOK_BOOLEAN	278
-#define	TOK_BY	279
-#define	TOK_CHARACTER	280
-#define	TOK_CHOICE	281
-#define	TOK_CLASS	282
-#define	TOK_COMPONENT	283
-#define	TOK_COMPONENTS	284
-#define	TOK_CONSTRAINED	285
-#define	TOK_CONTAINING	286
-#define	TOK_DEFAULT	287
-#define	TOK_DEFINITIONS	288
-#define	TOK_DEFINED	289
-#define	TOK_EMBEDDED	290
-#define	TOK_ENCODED	291
-#define	TOK_ENCODING_CONTROL	292
-#define	TOK_END	293
-#define	TOK_ENUMERATED	294
-#define	TOK_EXPLICIT	295
-#define	TOK_EXPORTS	296
-#define	TOK_EXTENSIBILITY	297
-#define	TOK_EXTERNAL	298
-#define	TOK_FALSE	299
-#define	TOK_FROM	300
-#define	TOK_GeneralizedTime	301
-#define	TOK_GeneralString	302
-#define	TOK_GraphicString	303
-#define	TOK_IA5String	304
-#define	TOK_IDENTIFIER	305
-#define	TOK_IMPLICIT	306
-#define	TOK_IMPLIED	307
-#define	TOK_IMPORTS	308
-#define	TOK_INCLUDES	309
-#define	TOK_INSTANCE	310
-#define	TOK_INSTRUCTIONS	311
-#define	TOK_INTEGER	312
-#define	TOK_ISO646String	313
-#define	TOK_MAX	314
-#define	TOK_MIN	315
-#define	TOK_MINUS_INFINITY	316
-#define	TOK_NULL	317
-#define	TOK_NumericString	318
-#define	TOK_OBJECT	319
-#define	TOK_ObjectDescriptor	320
-#define	TOK_OCTET	321
-#define	TOK_OF	322
-#define	TOK_OPTIONAL	323
-#define	TOK_PATTERN	324
-#define	TOK_PDV	325
-#define	TOK_PLUS_INFINITY	326
-#define	TOK_PRESENT	327
-#define	TOK_PrintableString	328
-#define	TOK_PRIVATE	329
-#define	TOK_REAL	330
-#define	TOK_RELATIVE_OID	331
-#define	TOK_SEQUENCE	332
-#define	TOK_SET	333
-#define	TOK_SIZE	334
-#define	TOK_STRING	335
-#define	TOK_SYNTAX	336
-#define	TOK_T61String	337
-#define	TOK_TAGS	338
-#define	TOK_TeletexString	339
-#define	TOK_TRUE	340
-#define	TOK_TYPE_IDENTIFIER	341
-#define	TOK_UNIQUE	342
-#define	TOK_UNIVERSAL	343
-#define	TOK_UniversalString	344
-#define	TOK_UTCTime	345
-#define	TOK_UTF8String	346
-#define	TOK_VideotexString	347
-#define	TOK_VisibleString	348
-#define	TOK_WITH	349
-#define	TOK_EXCEPT	350
-#define	TOK_INTERSECTION	351
-#define	TOK_UNION	352
-#define	TOK_TwoDots	353
-#define	TOK_ThreeDots	354
+#define	TOK_tuple	264
+#define	TOK_quadruple	265
+#define	TOK_number_negative	266
+#define	TOK_typereference	267
+#define	TOK_capitalreference	268
+#define	TOK_typefieldreference	269
+#define	TOK_valuefieldreference	270
+#define	TOK_ABSENT	271
+#define	TOK_ABSTRACT_SYNTAX	272
+#define	TOK_ALL	273
+#define	TOK_ANY	274
+#define	TOK_APPLICATION	275
+#define	TOK_AUTOMATIC	276
+#define	TOK_BEGIN	277
+#define	TOK_BIT	278
+#define	TOK_BMPString	279
+#define	TOK_BOOLEAN	280
+#define	TOK_BY	281
+#define	TOK_CHARACTER	282
+#define	TOK_CHOICE	283
+#define	TOK_CLASS	284
+#define	TOK_COMPONENT	285
+#define	TOK_COMPONENTS	286
+#define	TOK_CONSTRAINED	287
+#define	TOK_CONTAINING	288
+#define	TOK_DEFAULT	289
+#define	TOK_DEFINITIONS	290
+#define	TOK_DEFINED	291
+#define	TOK_EMBEDDED	292
+#define	TOK_ENCODED	293
+#define	TOK_ENCODING_CONTROL	294
+#define	TOK_END	295
+#define	TOK_ENUMERATED	296
+#define	TOK_EXPLICIT	297
+#define	TOK_EXPORTS	298
+#define	TOK_EXTENSIBILITY	299
+#define	TOK_EXTERNAL	300
+#define	TOK_FALSE	301
+#define	TOK_FROM	302
+#define	TOK_GeneralizedTime	303
+#define	TOK_GeneralString	304
+#define	TOK_GraphicString	305
+#define	TOK_IA5String	306
+#define	TOK_IDENTIFIER	307
+#define	TOK_IMPLICIT	308
+#define	TOK_IMPLIED	309
+#define	TOK_IMPORTS	310
+#define	TOK_INCLUDES	311
+#define	TOK_INSTANCE	312
+#define	TOK_INSTRUCTIONS	313
+#define	TOK_INTEGER	314
+#define	TOK_ISO646String	315
+#define	TOK_MAX	316
+#define	TOK_MIN	317
+#define	TOK_MINUS_INFINITY	318
+#define	TOK_NULL	319
+#define	TOK_NumericString	320
+#define	TOK_OBJECT	321
+#define	TOK_ObjectDescriptor	322
+#define	TOK_OCTET	323
+#define	TOK_OF	324
+#define	TOK_OPTIONAL	325
+#define	TOK_PATTERN	326
+#define	TOK_PDV	327
+#define	TOK_PLUS_INFINITY	328
+#define	TOK_PRESENT	329
+#define	TOK_PrintableString	330
+#define	TOK_PRIVATE	331
+#define	TOK_REAL	332
+#define	TOK_RELATIVE_OID	333
+#define	TOK_SEQUENCE	334
+#define	TOK_SET	335
+#define	TOK_SIZE	336
+#define	TOK_STRING	337
+#define	TOK_SYNTAX	338
+#define	TOK_T61String	339
+#define	TOK_TAGS	340
+#define	TOK_TeletexString	341
+#define	TOK_TRUE	342
+#define	TOK_TYPE_IDENTIFIER	343
+#define	TOK_UNIQUE	344
+#define	TOK_UNIVERSAL	345
+#define	TOK_UniversalString	346
+#define	TOK_UTCTime	347
+#define	TOK_UTF8String	348
+#define	TOK_VideotexString	349
+#define	TOK_VisibleString	350
+#define	TOK_WITH	351
+#define	TOK_EXCEPT	352
+#define	TOK_INTERSECTION	353
+#define	TOK_UNION	354
+#define	TOK_TwoDots	355
+#define	TOK_ThreeDots	356
 
 #line 1 "asn1p_y.y"
 
@@ -204,26 +206,26 @@
 
 
 
-#define	YYFINAL		437
+#define	YYFINAL		429
 #define	YYFLAG		-32768
-#define	YYNTBASE	116
+#define	YYNTBASE	118
 
-#define YYTRANSLATE(x) ((unsigned)(x) <= 354 ? yytranslate[x] : 220)
+#define YYTRANSLATE(x) ((unsigned)(x) <= 356 ? yytranslate[x] : 222)
 
 static const char yytranslate[] = {     0,
      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,   110,     2,     2,     2,     2,     2,     2,   105,
-   106,     2,     2,   108,     2,   111,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,   109,   107,   112,
-     2,     2,     2,   113,     2,     2,     2,     2,     2,     2,
+     2,     2,   112,     2,     2,     2,     2,     2,     2,   107,
+   108,     2,     2,   110,     2,   113,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,   111,   109,   114,
+     2,     2,     2,   115,     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,
-   114,     2,   115,    97,     2,     2,     2,     2,     2,     2,
+   116,     2,   117,    99,     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,   103,    99,   104,     2,     2,     2,     2,     2,
+     2,     2,   105,   101,   106,     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,     2,     2,
@@ -246,7 +248,7 @@
     67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
     77,    78,    79,    80,    81,    82,    83,    84,    85,    86,
     87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
-    98,   100,   101,   102
+    97,    98,   100,   102,   103,   104
 };
 
 #if YYDEBUG != 0
@@ -265,136 +267,134 @@
    327,   334,   341,   343,   348,   353,   355,   359,   361,   365,
    369,   373,   375,   379,   381,   385,   387,   389,   391,   393,
    398,   402,   403,   407,   409,   411,   413,   415,   417,   419,
-   421,   423,   425,   429,   431,   437,   447,   449,   452,   454,
-   456,   458,   460,   463,   466,   468,   470,   473,   476,   478,
-   480,   482,   484,   486,   489,   491,   494,   496,   498,   500,
-   502,   504,   506,   508,   510,   512,   514,   516,   518,   520,
-   522,   524,   526,   528,   530,   532,   533,   535,   537,   542,
-   546,   551,   553,   557,   563,   565,   569,   573,   577,   581,
-   586,   590,   592,   594,   598,   602,   606,   610,   612,   614,
-   615,   621,   623,   626,   629,   633,   635,   637,   639,   641,
-   643,   645,   647,   649,   655,   657,   661,   663,   667,   668,
-   670,   672,   674,   676,   678,   680,   684,   689,   691,   695,
-   698,   702,   704,   708,   709,   711,   713,   716,   719,   723,
-   725,   729,   731,   736,   741,   743,   745,   747,   749,   750,
-   752,   755,   760,   761,   763,   765,   767,   768,   770,   772,
-   774,   776,   778,   779,   781
+   421,   423,   425,   429,   431,   433,   435,   437,   440,   442,
+   444,   446,   448,   451,   454,   456,   458,   461,   464,   466,
+   468,   470,   472,   474,   477,   479,   482,   484,   486,   488,
+   490,   492,   494,   496,   498,   500,   502,   504,   506,   508,
+   510,   512,   514,   516,   518,   520,   521,   523,   525,   530,
+   534,   539,   541,   545,   551,   553,   557,   561,   565,   569,
+   574,   578,   580,   582,   586,   590,   594,   598,   600,   602,
+   603,   609,   611,   614,   617,   621,   623,   625,   627,   629,
+   631,   633,   635,   637,   643,   645,   649,   651,   655,   656,
+   658,   660,   662,   664,   666,   668,   672,   677,   679,   683,
+   686,   690,   692,   696,   697,   699,   701,   704,   707,   711,
+   713,   717,   719,   724,   729,   731,   733,   735,   737,   738,
+   740,   743,   748,   749,   751,   753,   755,   756,   758,   760,
+   762,   764,   766,   767,   769
 };
 
-static const short yyrhs[] = {   117,
-     0,   118,     0,   117,   118,     0,   216,   119,    34,   123,
-     3,    21,   126,    39,     0,     0,   120,     0,   103,   121,
-   104,     0,   103,   104,     0,   122,     0,   121,   122,     0,
-   219,     0,   219,   105,     9,   106,     0,     9,     0,     0,
-   124,     0,   125,     0,   124,   125,     0,    41,    84,     0,
-    52,    84,     0,    20,    84,     0,    43,    53,     0,    12,
-    57,     0,     0,   127,     0,   128,     0,   127,   128,     0,
-   130,     0,   135,     0,   143,     0,   170,     0,   138,     0,
-     0,    38,    12,   129,     0,   179,     0,    54,   131,   107,
-     0,    54,    46,     0,   132,     0,   131,   132,     0,   133,
-    46,   216,   119,     0,   134,     0,   133,   108,   134,     0,
-   216,     0,   216,   103,   104,     0,   219,     0,    42,   136,
-   107,     0,    42,    17,   107,     0,    42,   107,     0,   137,
-     0,   136,   108,   137,     0,   216,     0,   216,   103,   104,
-     0,   219,     0,   216,   139,     3,   103,   140,   104,     0,
-   165,     0,   176,     0,     0,   141,     0,   142,     0,   141,
-   108,   142,     0,   102,     0,   187,     0,   216,     3,   211,
-    87,     0,   216,     3,   163,     0,   216,     3,   153,     0,
-   216,   103,   144,   104,     3,   163,     0,   145,     0,   144,
-   108,   145,     0,   216,     0,   216,   109,   219,     0,   216,
-   109,   216,     0,   176,   109,   219,     0,   147,     0,   146,
-   108,   147,     0,   163,     0,   219,     0,     0,   149,     0,
-   150,     0,   149,   108,   150,     0,   219,   163,   205,     0,
-    30,    68,   163,     0,   162,     0,   152,     0,   151,   108,
-   152,     0,   219,   163,     0,   162,     0,    28,   103,   155,
-   104,   157,     0,     0,    88,     0,   156,     0,   155,   108,
-   156,     0,   168,   205,     0,   168,   163,   154,   205,     0,
-   168,   168,   154,   205,     0,     0,   158,     0,     0,    95,
-    82,   103,   159,   160,   104,     0,   161,     0,   160,   161,
-     0,     4,     0,   168,     0,   102,     0,   102,   110,   173,
-     0,   102,   110,   210,     0,   211,   164,   183,     0,   178,
-     0,    27,   103,   151,   104,     0,    78,   103,   148,   104,
-     0,    79,   103,   148,   104,     0,    78,   183,    68,   218,
-   211,   164,     0,    79,   183,    68,   218,   211,   164,     0,
-    18,     0,    18,    35,    25,   219,     0,   216,   103,   146,
-   104,     0,   165,     0,    56,    68,   165,     0,    11,     0,
-    11,   111,   216,     0,   217,   111,   216,     0,    11,   111,
-   219,     0,   217,     0,   217,   111,   166,     0,   167,     0,
-   166,   111,   167,     0,   169,     0,   169,     0,    13,     0,
-    14,     0,   219,   139,     3,   171,     0,   219,   109,   171,
-     0,     0,   103,   172,   175,     0,    63,     0,    45,     0,
-    86,     0,     5,     0,     7,     0,   174,     0,   210,     0,
-   173,     0,   219,     0,   216,   111,   219,     0,     6,     0,
-   103,     9,   108,     9,   104,     0,   103,     9,   108,     9,
-   108,     9,   108,     9,   104,     0,     4,     0,   175,     4,
-     0,    24,     0,    63,     0,    76,     0,   177,     0,    67,
-    81,     0,    65,    51,     0,    77,     0,    44,     0,    36,
-    71,     0,    26,    81,     0,    91,     0,    47,     0,   179,
-     0,    58,     0,    40,     0,    22,    81,     0,   176,     0,
-   177,   207,     0,    23,     0,    48,     0,    49,     0,    50,
-     0,    59,     0,    64,     0,    74,     0,    83,     0,    85,
-     0,    90,     0,    92,     0,    93,     0,    94,     0,    66,
-     0,    99,     0,   100,     0,    97,     0,    98,     0,    96,
-     0,     0,   184,     0,   185,     0,    80,   105,   186,   106,
-     0,   105,   186,   106,     0,   185,   105,   186,   106,     0,
-   187,     0,   187,   108,   102,     0,   187,   108,   102,   108,
-   187,     0,   188,     0,    17,    96,   188,     0,   187,   180,
-   188,     0,   187,   181,   188,     0,   188,   182,   188,     0,
-   191,   105,   186,   106,     0,   105,   186,   106,     0,   192,
-     0,   193,     0,   192,   190,   192,     0,    61,   190,   192,
-     0,   192,   190,    60,     0,    61,   190,    60,     0,   199,
-     0,   194,     0,     0,    31,    25,   103,   189,   175,     0,
-   101,     0,   101,   112,     0,   112,   101,     0,   112,   101,
-   112,     0,    80,     0,    46,     0,    45,     0,    86,     0,
-   210,     0,   174,     0,   219,     0,   216,     0,    95,    30,
-   103,   195,   104,     0,   196,     0,   195,   108,   196,     0,
-   102,     0,   219,   183,   197,     0,     0,   198,     0,    73,
-     0,    15,     0,    69,     0,   200,     0,   201,     0,   103,
-   216,   104,     0,   200,   103,   202,   104,     0,   203,     0,
-   202,   108,   203,     0,   113,   204,     0,   113,   111,   204,
-     0,   219,     0,   204,   111,   219,     0,     0,   206,     0,
-    69,     0,    33,   171,     0,   103,   104,     0,   103,   208,
-   104,     0,   209,     0,   208,   108,   209,     0,   219,     0,
-   219,   105,   210,   106,     0,   219,   105,   173,   106,     0,
-   210,     0,   102,     0,     9,     0,    10,     0,     0,   212,
-     0,   213,   215,     0,   114,   214,     9,   115,     0,     0,
-    89,     0,    19,     0,    75,     0,     0,    52,     0,    41,
-     0,    11,     0,    12,     0,    12,     0,     0,   219,     0,
-     8,     0
+static const short yyrhs[] = {   119,
+     0,   120,     0,   119,   120,     0,   218,   121,    36,   125,
+     3,    23,   128,    41,     0,     0,   122,     0,   105,   123,
+   106,     0,   105,   106,     0,   124,     0,   123,   124,     0,
+   221,     0,   221,   107,     9,   108,     0,     9,     0,     0,
+   126,     0,   127,     0,   126,   127,     0,    43,    86,     0,
+    54,    86,     0,    22,    86,     0,    45,    55,     0,    14,
+    59,     0,     0,   129,     0,   130,     0,   129,   130,     0,
+   132,     0,   137,     0,   145,     0,   172,     0,   140,     0,
+     0,    40,    14,   131,     0,   181,     0,    56,   133,   109,
+     0,    56,    48,     0,   134,     0,   133,   134,     0,   135,
+    48,   218,   121,     0,   136,     0,   135,   110,   136,     0,
+   218,     0,   218,   105,   106,     0,   221,     0,    44,   138,
+   109,     0,    44,    19,   109,     0,    44,   109,     0,   139,
+     0,   138,   110,   139,     0,   218,     0,   218,   105,   106,
+     0,   221,     0,   218,   141,     3,   105,   142,   106,     0,
+   167,     0,   178,     0,     0,   143,     0,   144,     0,   143,
+   110,   144,     0,   104,     0,   189,     0,   218,     3,   213,
+    89,     0,   218,     3,   165,     0,   218,     3,   155,     0,
+   218,   105,   146,   106,     3,   165,     0,   147,     0,   146,
+   110,   147,     0,   218,     0,   218,   111,   221,     0,   218,
+   111,   218,     0,   178,   111,   221,     0,   149,     0,   148,
+   110,   149,     0,   165,     0,   221,     0,     0,   151,     0,
+   152,     0,   151,   110,   152,     0,   221,   165,   207,     0,
+    32,    70,   165,     0,   164,     0,   154,     0,   153,   110,
+   154,     0,   221,   165,     0,   164,     0,    30,   105,   157,
+   106,   159,     0,     0,    90,     0,   158,     0,   157,   110,
+   158,     0,   170,   207,     0,   170,   165,   156,   207,     0,
+   170,   170,   156,   207,     0,     0,   160,     0,     0,    97,
+    84,   105,   161,   162,   106,     0,   163,     0,   162,   163,
+     0,     4,     0,   170,     0,   104,     0,   104,   112,   175,
+     0,   104,   112,   212,     0,   213,   166,   185,     0,   180,
+     0,    29,   105,   153,   106,     0,    80,   105,   150,   106,
+     0,    81,   105,   150,   106,     0,    80,   185,    70,   220,
+   213,   166,     0,    81,   185,    70,   220,   213,   166,     0,
+    20,     0,    20,    37,    27,   221,     0,   218,   105,   148,
+   106,     0,   167,     0,    58,    70,   167,     0,    13,     0,
+    13,   113,   218,     0,   219,   113,   218,     0,    13,   113,
+   221,     0,   219,     0,   219,   113,   168,     0,   169,     0,
+   168,   113,   169,     0,   171,     0,   171,     0,    15,     0,
+    16,     0,   221,   141,     3,   173,     0,   221,   111,   173,
+     0,     0,   105,   174,   177,     0,    65,     0,    47,     0,
+    88,     0,     5,     0,     7,     0,   176,     0,   212,     0,
+   175,     0,   221,     0,   218,   113,   221,     0,     6,     0,
+    10,     0,    11,     0,     4,     0,   177,     4,     0,    26,
+     0,    65,     0,    78,     0,   179,     0,    69,    83,     0,
+    67,    53,     0,    79,     0,    46,     0,    38,    73,     0,
+    28,    83,     0,    93,     0,    49,     0,   181,     0,    60,
+     0,    42,     0,    24,    83,     0,   178,     0,   179,   209,
+     0,    25,     0,    50,     0,    51,     0,    52,     0,    61,
+     0,    66,     0,    76,     0,    85,     0,    87,     0,    92,
+     0,    94,     0,    95,     0,    96,     0,    68,     0,   101,
+     0,   102,     0,    99,     0,   100,     0,    98,     0,     0,
+   186,     0,   187,     0,    82,   107,   188,   108,     0,   107,
+   188,   108,     0,   187,   107,   188,   108,     0,   189,     0,
+   189,   110,   104,     0,   189,   110,   104,   110,   189,     0,
+   190,     0,    19,    98,   190,     0,   189,   182,   190,     0,
+   189,   183,   190,     0,   190,   184,   190,     0,   193,   107,
+   188,   108,     0,   107,   188,   108,     0,   194,     0,   195,
+     0,   194,   192,   194,     0,    63,   192,   194,     0,   194,
+   192,    62,     0,    63,   192,    62,     0,   201,     0,   196,
+     0,     0,    33,    27,   105,   191,   177,     0,   103,     0,
+   103,   114,     0,   114,   103,     0,   114,   103,   114,     0,
+    82,     0,    48,     0,    47,     0,    88,     0,   212,     0,
+   176,     0,   221,     0,   218,     0,    97,    32,   105,   197,
+   106,     0,   198,     0,   197,   110,   198,     0,   104,     0,
+   221,   185,   199,     0,     0,   200,     0,    75,     0,    17,
+     0,    71,     0,   202,     0,   203,     0,   105,   218,   106,
+     0,   202,   105,   204,   106,     0,   205,     0,   204,   110,
+   205,     0,   115,   206,     0,   115,   113,   206,     0,   221,
+     0,   206,   113,   221,     0,     0,   208,     0,    71,     0,
+    35,   173,     0,   105,   106,     0,   105,   210,   106,     0,
+   211,     0,   210,   110,   211,     0,   221,     0,   221,   107,
+   212,   108,     0,   221,   107,   175,   108,     0,   212,     0,
+   104,     0,     9,     0,    12,     0,     0,   214,     0,   215,
+   217,     0,   116,   216,     9,   117,     0,     0,    91,     0,
+    21,     0,    77,     0,     0,    54,     0,    43,     0,    13,
+     0,    14,     0,    14,     0,     0,   221,     0,     8,     0
 };
 
 #endif
 
 #if YYDEBUG != 0
 static const short yyrline[] = { 0,
-   303,   309,   315,   331,   356,   358,   361,   365,   370,   377,
-   385,   390,   394,   403,   405,   413,   417,   425,   429,   432,
-   435,   439,   459,   461,   469,   473,   505,   509,   518,   525,
-   538,   545,   547,   559,   572,   579,   584,   590,   596,   605,
-   611,   617,   624,   630,   638,   642,   645,   652,   658,   664,
-   671,   677,   686,   696,   704,   712,   714,   724,   727,   731,
-   734,   746,   758,   764,   780,   789,   799,   809,   814,   821,
-   828,   838,   844,   850,   854,   877,   879,   881,   887,   893,
-   900,   907,   912,   918,   924,   930,   935,   945,   947,   950,
-   958,   964,   973,   979,   996,   998,  1003,  1007,  1012,  1017,
-  1023,  1027,  1038,  1047,  1056,  1067,  1089,  1093,  1099,  1105,
-  1111,  1121,  1131,  1137,  1151,  1175,  1182,  1196,  1205,  1215,
-  1225,  1235,  1243,  1264,  1273,  1282,  1283,  1285,  1292,  1304,
-  1314,  1322,  1322,  1327,  1332,  1337,  1342,  1346,  1350,  1353,
-  1356,  1361,  1373,  1390,  1395,  1405,  1421,  1431,  1445,  1447,
-  1448,  1449,  1450,  1451,  1452,  1453,  1454,  1455,  1456,  1457,
-  1458,  1464,  1466,  1467,  1470,  1477,  1489,  1491,  1495,  1499,
-  1500,  1501,  1502,  1503,  1507,  1508,  1509,  1510,  1514,  1515,
-  1522,  1522,  1523,  1523,  1524,  1526,  1528,  1533,  1537,  1546,
-  1550,  1555,  1559,  1565,  1575,  1579,  1582,  1585,  1588,  1593,
-  1602,  1610,  1616,  1622,  1629,  1637,  1645,  1654,  1657,  1660,
-  1661,  1671,  1673,  1674,  1675,  1678,  1682,  1687,  1693,  1698,
-  1701,  1704,  1717,  1731,  1737,  1741,  1746,  1752,  1764,  1766,
-  1769,  1773,  1776,  1781,  1785,  1793,  1808,  1814,  1821,  1834,
-  1846,  1861,  1865,  1882,  1887,  1890,  1895,  1917,  1922,  1927,
-  1933,  1939,  1947,  1955,  1963,  1970,  1980,  1985,  2015,  2017,
-  2020,  2027,  2033,  2035,  2036,  2037,  2040,  2042,  2043,  2046,
-  2051,  2058,  2065,  2067,  2071
+   305,   311,   317,   333,   358,   360,   363,   367,   372,   379,
+   387,   392,   396,   405,   407,   415,   419,   427,   431,   434,
+   437,   441,   461,   463,   471,   475,   507,   511,   520,   527,
+   540,   547,   549,   561,   574,   581,   586,   592,   598,   607,
+   613,   619,   626,   632,   640,   644,   647,   654,   660,   666,
+   673,   679,   688,   698,   706,   714,   716,   726,   729,   733,
+   736,   748,   760,   766,   782,   791,   801,   811,   816,   823,
+   830,   840,   846,   852,   856,   879,   881,   883,   889,   895,
+   902,   909,   914,   920,   926,   932,   937,   947,   949,   952,
+   960,   966,   975,   981,   998,  1000,  1005,  1009,  1014,  1019,
+  1025,  1029,  1040,  1049,  1058,  1069,  1091,  1095,  1101,  1107,
+  1113,  1123,  1133,  1139,  1153,  1177,  1184,  1198,  1207,  1217,
+  1227,  1237,  1245,  1266,  1275,  1284,  1285,  1287,  1294,  1306,
+  1316,  1324,  1324,  1329,  1334,  1339,  1344,  1348,  1352,  1355,
+  1358,  1363,  1375,  1392,  1397,  1402,  1435,  1445,  1459,  1461,
+  1462,  1463,  1464,  1465,  1466,  1467,  1468,  1469,  1470,  1471,
+  1472,  1478,  1480,  1481,  1484,  1491,  1503,  1505,  1509,  1513,
+  1514,  1515,  1516,  1517,  1521,  1522,  1523,  1524,  1528,  1529,
+  1536,  1536,  1537,  1537,  1538,  1540,  1542,  1547,  1551,  1560,
+  1564,  1569,  1573,  1579,  1589,  1593,  1596,  1599,  1602,  1607,
+  1616,  1624,  1630,  1636,  1643,  1651,  1659,  1668,  1671,  1674,
+  1675,  1685,  1687,  1688,  1689,  1692,  1696,  1701,  1707,  1712,
+  1715,  1718,  1731,  1745,  1751,  1755,  1760,  1766,  1778,  1780,
+  1783,  1787,  1790,  1795,  1799,  1807,  1822,  1828,  1835,  1848,
+  1860,  1875,  1879,  1896,  1901,  1904,  1909,  1931,  1936,  1941,
+  1947,  1953,  1961,  1969,  1977,  1984,  1994,  1999,  2029,  2031,
+  2034,  2041,  2047,  2049,  2050,  2051,  2054,  2056,  2057,  2060,
+  2065,  2072,  2079,  2081,  2085
 };
 #endif
 
@@ -403,36 +403,36 @@
 
 static const char * const yytname[] = {   "$","error","$undefined.","TOK_PPEQ",
 "TOK_opaque","TOK_bstring","TOK_cstring","TOK_hstring","TOK_identifier","TOK_number",
-"TOK_number_negative","TOK_typereference","TOK_capitalreference","TOK_typefieldreference",
-"TOK_valuefieldreference","TOK_ABSENT","TOK_ABSTRACT_SYNTAX","TOK_ALL","TOK_ANY",
-"TOK_APPLICATION","TOK_AUTOMATIC","TOK_BEGIN","TOK_BIT","TOK_BMPString","TOK_BOOLEAN",
-"TOK_BY","TOK_CHARACTER","TOK_CHOICE","TOK_CLASS","TOK_COMPONENT","TOK_COMPONENTS",
-"TOK_CONSTRAINED","TOK_CONTAINING","TOK_DEFAULT","TOK_DEFINITIONS","TOK_DEFINED",
-"TOK_EMBEDDED","TOK_ENCODED","TOK_ENCODING_CONTROL","TOK_END","TOK_ENUMERATED",
-"TOK_EXPLICIT","TOK_EXPORTS","TOK_EXTENSIBILITY","TOK_EXTERNAL","TOK_FALSE",
-"TOK_FROM","TOK_GeneralizedTime","TOK_GeneralString","TOK_GraphicString","TOK_IA5String",
-"TOK_IDENTIFIER","TOK_IMPLICIT","TOK_IMPLIED","TOK_IMPORTS","TOK_INCLUDES","TOK_INSTANCE",
-"TOK_INSTRUCTIONS","TOK_INTEGER","TOK_ISO646String","TOK_MAX","TOK_MIN","TOK_MINUS_INFINITY",
-"TOK_NULL","TOK_NumericString","TOK_OBJECT","TOK_ObjectDescriptor","TOK_OCTET",
-"TOK_OF","TOK_OPTIONAL","TOK_PATTERN","TOK_PDV","TOK_PLUS_INFINITY","TOK_PRESENT",
-"TOK_PrintableString","TOK_PRIVATE","TOK_REAL","TOK_RELATIVE_OID","TOK_SEQUENCE",
-"TOK_SET","TOK_SIZE","TOK_STRING","TOK_SYNTAX","TOK_T61String","TOK_TAGS","TOK_TeletexString",
-"TOK_TRUE","TOK_TYPE_IDENTIFIER","TOK_UNIQUE","TOK_UNIVERSAL","TOK_UniversalString",
-"TOK_UTCTime","TOK_UTF8String","TOK_VideotexString","TOK_VisibleString","TOK_WITH",
-"TOK_EXCEPT","'^'","TOK_INTERSECTION","'|'","TOK_UNION","TOK_TwoDots","TOK_ThreeDots",
-"'{'","'}'","'('","')'","';'","','","':'","'!'","'.'","'<'","'@'","'['","']'",
-"ParsedGrammar","ModuleList","ModuleSpecification","optObjectIdentifier","ObjectIdentifier",
-"ObjectIdentifierBody","ObjectIdentifierElement","optModuleSpecificationFlags",
-"ModuleSpecificationFlags","ModuleSpecificationFlag","optModuleSpecificationBody",
-"ModuleSpecificationBody","ModuleSpecificationElement","@1","ImportsDefinition",
-"ImportsBundleSet","ImportsBundle","ImportsList","ImportsElement","ExportsDefinition",
-"ExportsBody","ExportsElement","ValueSetDefinition","DefinedTypeRef","optValueSetBody",
-"ValueSetBody","ValueSetElement","DataTypeReference","ParameterArgumentList",
-"ParameterArgumentName","ActualParameterList","ActualParameter","optComponentTypeLists",
-"ComponentTypeLists","ComponentType","AlternativeTypeLists","AlternativeType",
-"ClassDeclaration","optUnique","ClassFieldList","ClassField","optWithSyntax",
-"WithSyntax","@2","WithSyntaxFormat","WithSyntaxFormatToken","ExtensionAndException",
-"Type","TypeDeclaration","ComplexTypeReference","ComplexTypeReferenceAmpList",
+"TOK_tuple","TOK_quadruple","TOK_number_negative","TOK_typereference","TOK_capitalreference",
+"TOK_typefieldreference","TOK_valuefieldreference","TOK_ABSENT","TOK_ABSTRACT_SYNTAX",
+"TOK_ALL","TOK_ANY","TOK_APPLICATION","TOK_AUTOMATIC","TOK_BEGIN","TOK_BIT",
+"TOK_BMPString","TOK_BOOLEAN","TOK_BY","TOK_CHARACTER","TOK_CHOICE","TOK_CLASS",
+"TOK_COMPONENT","TOK_COMPONENTS","TOK_CONSTRAINED","TOK_CONTAINING","TOK_DEFAULT",
+"TOK_DEFINITIONS","TOK_DEFINED","TOK_EMBEDDED","TOK_ENCODED","TOK_ENCODING_CONTROL",
+"TOK_END","TOK_ENUMERATED","TOK_EXPLICIT","TOK_EXPORTS","TOK_EXTENSIBILITY",
+"TOK_EXTERNAL","TOK_FALSE","TOK_FROM","TOK_GeneralizedTime","TOK_GeneralString",
+"TOK_GraphicString","TOK_IA5String","TOK_IDENTIFIER","TOK_IMPLICIT","TOK_IMPLIED",
+"TOK_IMPORTS","TOK_INCLUDES","TOK_INSTANCE","TOK_INSTRUCTIONS","TOK_INTEGER",
+"TOK_ISO646String","TOK_MAX","TOK_MIN","TOK_MINUS_INFINITY","TOK_NULL","TOK_NumericString",
+"TOK_OBJECT","TOK_ObjectDescriptor","TOK_OCTET","TOK_OF","TOK_OPTIONAL","TOK_PATTERN",
+"TOK_PDV","TOK_PLUS_INFINITY","TOK_PRESENT","TOK_PrintableString","TOK_PRIVATE",
+"TOK_REAL","TOK_RELATIVE_OID","TOK_SEQUENCE","TOK_SET","TOK_SIZE","TOK_STRING",
+"TOK_SYNTAX","TOK_T61String","TOK_TAGS","TOK_TeletexString","TOK_TRUE","TOK_TYPE_IDENTIFIER",
+"TOK_UNIQUE","TOK_UNIVERSAL","TOK_UniversalString","TOK_UTCTime","TOK_UTF8String",
+"TOK_VideotexString","TOK_VisibleString","TOK_WITH","TOK_EXCEPT","'^'","TOK_INTERSECTION",
+"'|'","TOK_UNION","TOK_TwoDots","TOK_ThreeDots","'{'","'}'","'('","')'","';'",
+"','","':'","'!'","'.'","'<'","'@'","'['","']'","ParsedGrammar","ModuleList",
+"ModuleSpecification","optObjectIdentifier","ObjectIdentifier","ObjectIdentifierBody",
+"ObjectIdentifierElement","optModuleSpecificationFlags","ModuleSpecificationFlags",
+"ModuleSpecificationFlag","optModuleSpecificationBody","ModuleSpecificationBody",
+"ModuleSpecificationElement","@1","ImportsDefinition","ImportsBundleSet","ImportsBundle",
+"ImportsList","ImportsElement","ExportsDefinition","ExportsBody","ExportsElement",
+"ValueSetDefinition","DefinedTypeRef","optValueSetBody","ValueSetBody","ValueSetElement",
+"DataTypeReference","ParameterArgumentList","ParameterArgumentName","ActualParameterList",
+"ActualParameter","optComponentTypeLists","ComponentTypeLists","ComponentType",
+"AlternativeTypeLists","AlternativeType","ClassDeclaration","optUnique","ClassFieldList",
+"ClassField","optWithSyntax","WithSyntax","@2","WithSyntaxFormat","WithSyntaxFormatToken",
+"ExtensionAndException","Type","TypeDeclaration","ComplexTypeReference","ComplexTypeReferenceAmpList",
 "ComplexTypeReferenceElement","ClassFieldIdentifier","ClassFieldName","ValueDefinition",
 "Value","@3","DefinedValue","RestrictedCharacterStringValue","Opaque","BasicTypeId",
 "BasicTypeId_UniverationCompatible","BasicType","BasicString","Union","Intersection",
@@ -448,34 +448,34 @@
 #endif
 
 static const short yyr1[] = {     0,
-   116,   117,   117,   118,   119,   119,   120,   120,   121,   121,
-   122,   122,   122,   123,   123,   124,   124,   125,   125,   125,
-   125,   125,   126,   126,   127,   127,   128,   128,   128,   128,
-   128,   129,   128,   128,   130,   130,   131,   131,   132,   133,
-   133,   134,   134,   134,   135,   135,   135,   136,   136,   137,
-   137,   137,   138,   139,   139,   140,   140,   141,   141,   142,
-   142,   143,   143,   143,   143,   144,   144,   145,   145,   145,
-   145,   146,   146,   147,   147,   148,   148,   149,   149,   150,
-   150,   150,   151,   151,   152,   152,   153,   154,   154,   155,
-   155,   156,   156,   156,   157,   157,   159,   158,   160,   160,
-   161,   161,   162,   162,   162,   163,   164,   164,   164,   164,
-   164,   164,   164,   164,   164,   164,   164,   165,   165,   165,
-   165,   165,   165,   166,   166,   167,   168,   169,   169,   170,
-   171,   172,   171,   171,   171,   171,   171,   171,   171,   171,
-   171,   173,   173,   174,   174,   174,   175,   175,   176,   176,
-   176,   176,   176,   176,   176,   176,   176,   176,   176,   176,
-   176,   177,   177,   177,   178,   178,   179,   179,   179,   179,
-   179,   179,   179,   179,   179,   179,   179,   179,   179,   179,
-   180,   180,   181,   181,   182,   183,   183,   184,   184,   185,
-   185,   186,   186,   186,   187,   187,   187,   187,   187,   188,
-   188,   188,   188,   188,   188,   188,   188,   188,   188,   189,
-   188,   190,   190,   190,   190,   191,   191,   192,   192,   192,
-   192,   192,   193,   194,   195,   195,   196,   196,   197,   197,
-   198,   198,   198,   199,   199,   200,   201,   202,   202,   203,
-   203,   204,   204,   205,   205,   206,   206,   207,   207,   208,
-   208,   209,   209,   209,   209,   209,   210,   210,   211,   211,
-   212,   213,   214,   214,   214,   214,   215,   215,   215,   216,
-   216,   217,   218,   218,   219
+   118,   119,   119,   120,   121,   121,   122,   122,   123,   123,
+   124,   124,   124,   125,   125,   126,   126,   127,   127,   127,
+   127,   127,   128,   128,   129,   129,   130,   130,   130,   130,
+   130,   131,   130,   130,   132,   132,   133,   133,   134,   135,
+   135,   136,   136,   136,   137,   137,   137,   138,   138,   139,
+   139,   139,   140,   141,   141,   142,   142,   143,   143,   144,
+   144,   145,   145,   145,   145,   146,   146,   147,   147,   147,
+   147,   148,   148,   149,   149,   150,   150,   151,   151,   152,
+   152,   152,   153,   153,   154,   154,   155,   156,   156,   157,
+   157,   158,   158,   158,   159,   159,   161,   160,   162,   162,
+   163,   163,   164,   164,   164,   165,   166,   166,   166,   166,
+   166,   166,   166,   166,   166,   166,   166,   167,   167,   167,
+   167,   167,   167,   168,   168,   169,   170,   171,   171,   172,
+   173,   174,   173,   173,   173,   173,   173,   173,   173,   173,
+   173,   175,   175,   176,   176,   176,   177,   177,   178,   178,
+   178,   178,   178,   178,   178,   178,   178,   178,   178,   178,
+   178,   179,   179,   179,   180,   180,   181,   181,   181,   181,
+   181,   181,   181,   181,   181,   181,   181,   181,   181,   181,
+   182,   182,   183,   183,   184,   185,   185,   186,   186,   187,
+   187,   188,   188,   188,   189,   189,   189,   189,   189,   190,
+   190,   190,   190,   190,   190,   190,   190,   190,   190,   191,
+   190,   192,   192,   192,   192,   193,   193,   194,   194,   194,
+   194,   194,   195,   196,   197,   197,   198,   198,   199,   199,
+   200,   200,   200,   201,   201,   202,   203,   204,   204,   205,
+   205,   206,   206,   207,   207,   208,   208,   209,   209,   210,
+   210,   211,   211,   211,   211,   211,   212,   212,   213,   213,
+   214,   215,   216,   216,   216,   216,   217,   217,   217,   218,
+   218,   219,   220,   220,   221
 };
 
 static const short yyr2[] = {     0,
@@ -493,7 +493,7 @@
      6,     6,     1,     4,     4,     1,     3,     1,     3,     3,
      3,     1,     3,     1,     3,     1,     1,     1,     1,     4,
      3,     0,     3,     1,     1,     1,     1,     1,     1,     1,
-     1,     1,     3,     1,     5,     9,     1,     2,     1,     1,
+     1,     1,     3,     1,     1,     1,     1,     2,     1,     1,
      1,     1,     2,     2,     1,     1,     2,     2,     1,     1,
      1,     1,     1,     2,     1,     2,     1,     1,     1,     1,
      1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
@@ -528,295 +528,299 @@
      0,   186,   186,    62,   186,   116,   165,   152,   107,     0,
    269,   268,   261,   119,   121,     0,     0,     0,     0,    56,
    128,   129,   123,   124,   126,   120,   137,   144,   138,   257,
-   258,   135,   134,   136,   132,   130,   141,   139,   140,     0,
-   142,    39,     0,    90,   259,   127,     0,     0,     0,     0,
-     0,    76,     0,     0,   187,   188,    76,     0,   106,     0,
-   166,   259,   259,    67,    71,    70,    69,     0,     0,   218,
-   217,     0,   216,   219,     0,    60,     0,     0,     0,    57,
-    58,   221,    61,   195,     0,   202,   203,   209,   208,   234,
-   235,   220,   223,   222,     0,     0,     0,     0,     0,    95,
-     0,     0,   246,    88,    88,    92,   245,     0,   262,     0,
-   103,     0,    83,    86,   259,   117,     0,     0,     0,    77,
-    78,    82,   259,     0,   192,   273,     0,     0,   273,   256,
-   248,     0,   250,   255,   252,     0,    72,    74,    75,    65,
-     0,     0,   212,     0,     0,     0,     0,     0,    53,     0,
-   183,   184,   181,   182,     0,     0,   185,     0,     0,     0,
-     0,   125,     0,   147,   133,   143,   131,     0,    87,    96,
+   145,   146,   258,   135,   134,   136,   132,   130,   141,   139,
+   140,     0,   142,    39,     0,    90,   259,   127,     0,     0,
+     0,     0,     0,    76,     0,     0,   187,   188,    76,     0,
+   106,     0,   166,   259,   259,    67,    71,    70,    69,     0,
+     0,   218,   217,     0,   216,   219,     0,    60,     0,     0,
+     0,    57,    58,   221,    61,   195,     0,   202,   203,   209,
+   208,   234,   235,   220,   223,   222,     0,     0,     0,     0,
+    95,     0,     0,   246,    88,    88,    92,   245,     0,   262,
+     0,   103,     0,    83,    86,   259,   117,     0,     0,     0,
+    77,    78,    82,   259,     0,   192,   273,     0,     0,   273,
+   256,   248,     0,   250,   255,   252,     0,    72,    74,    75,
+    65,     0,     0,   212,     0,     0,     0,     0,     0,    53,
+     0,   183,   184,   181,   182,     0,     0,   185,     0,     0,
+     0,     0,   125,   147,   133,   143,   131,     0,    87,    96,
     91,   247,    89,   244,   244,   114,     0,   108,     0,    85,
      0,   259,   109,     0,   244,   190,     0,   259,   274,     0,
    110,   259,   249,     0,     0,   115,   259,   196,   210,   213,
-   214,   207,     0,   205,     0,   236,   201,    59,   197,   198,
-   199,     0,   206,   204,     0,     0,   238,     0,   148,     0,
-    93,    94,   104,   105,   142,    84,   189,    81,    79,    80,
-   193,     0,   191,     0,   251,     0,     0,    73,     0,   215,
-   227,     0,   225,   186,   200,     0,   240,   242,   237,     0,
-   145,     0,    97,     0,   111,   112,   254,   253,   211,   224,
-     0,   229,   241,     0,   239,     0,     0,   194,   226,   232,
-   233,   231,   228,   230,   243,     0,   101,     0,    99,   102,
-     0,    98,   100,   146,     0,     0,     0
+   214,   207,   205,     0,   236,   201,    59,   197,   198,   199,
+     0,   206,   204,     0,     0,   238,   148,     0,    93,    94,
+   104,   105,   142,    84,   189,    81,    79,    80,   193,     0,
+   191,     0,   251,     0,     0,    73,     0,   215,   227,     0,
+   225,   186,   200,     0,   240,   242,   237,     0,    97,     0,
+   111,   112,   254,   253,   211,   224,     0,   229,   241,     0,
+   239,     0,   194,   226,   232,   233,   231,   228,   230,   243,
+   101,     0,    99,   102,    98,   100,     0,     0,     0
 };
 
-static const short yydefgoto[] = {   435,
+static const short yydefgoto[] = {   427,
      3,     4,     8,     9,    13,    14,    25,    26,    27,    55,
     56,    57,   107,    58,    74,    75,    76,    77,    59,    69,
-    70,    60,   100,   229,   230,   231,    61,   130,   131,   286,
-   287,   269,   270,   271,   262,   263,   119,   324,   193,   194,
-   319,   320,   417,   428,   429,   272,   288,   155,   156,   173,
-   174,   195,   196,    62,   186,   247,   187,   232,   315,   157,
-   103,   159,   104,   305,   306,   308,   204,   205,   206,   274,
-   275,   234,   389,   295,   235,   236,   237,   238,   392,   393,
-   423,   424,   239,   240,   241,   366,   367,   397,   256,   257,
-   211,   282,   283,   242,   258,   122,   123,   146,   163,   243,
-   105,   338,   244
+    70,    60,   100,   231,   232,   233,    61,   130,   131,   287,
+   288,   270,   271,   272,   263,   264,   119,   324,   195,   196,
+   319,   320,   412,   422,   423,   273,   289,   155,   156,   173,
+   174,   197,   198,    62,   188,   248,   189,   234,   315,   157,
+   103,   159,   104,   306,   307,   309,   206,   207,   208,   275,
+   276,   236,   387,   296,   237,   238,   239,   240,   390,   391,
+   418,   419,   241,   242,   243,   365,   366,   395,   257,   258,
+   213,   283,   284,   244,   259,   122,   123,   146,   163,   245,
+   105,   338,   246
 };
 
-static const short yypact[] = {   203,
--32768,-32768,   203,-32768,   -62,-32768,    39,    24,-32768,-32768,
--32768,-32768,    43,-32768,   -31,   138,-32768,-32768,    75,    50,
-    30,    38,   112,    87,   170,   138,-32768,    76,-32768,-32768,
--32768,-32768,-32768,   187,-32768,-32768,   490,-32768,   213,     9,
--32768,-32768,-32768,   155,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,   172,   490,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,   361,   719,-32768,   121,-32768,   149,-32768,
-   143,-32768,-32768,    27,-32768,   -22,-32768,   148,-32768,-32768,
--32768,   -10,   123,-32768,   173,-32768,   177,   202,-32768,-32768,
--32768,-32768,-32768,   229,   200,-32768,-32768,-32768,   794,   284,
--32768,-32768,-32768,-32768,   179,   285,-32768,-32768,-32768,   186,
-   198,-32768,-32768,   203,   186,   201,   205,    10,-32768,-32768,
-   567,-32768,    54,   186,-32768,-32768,-32768,-32768,-32768,   -21,
--32768,   194,   195,   206,   272,   460,-32768,-32768,   -62,-32768,
--32768,   247,-32768,-32768,-32768,   297,     8,   207,   276,   210,
-   244,   104,   107,-32768,   -40,-32768,-32768,   212,-32768,   214,
--32768,-32768,-32768,-32768,-32768,   315,   794,   311,   186,   221,
--32768,-32768,   219,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,   312,-32768,-32768,-32768,-32768,   220,
-   216,-32768,   -15,-32768,    31,-32768,   217,   308,     7,   259,
-   230,    58,   283,   266,-32768,   231,    58,   271,-32768,    53,
--32768,     6,   227,-32768,-32768,-32768,-32768,   246,   320,-32768,
--32768,    68,-32768,-32768,   316,-32768,   238,   283,   243,   241,
--32768,-32768,   199,   254,   248,    68,-32768,-32768,-32768,   249,
--32768,-32768,-32768,-32768,   247,   251,   347,   311,   460,   260,
-   247,   460,-32768,   268,   268,-32768,-32768,   644,-32768,   311,
-   250,    -3,-32768,-32768,   227,-32768,   283,   286,   253,   257,
--32768,-32768,   227,   256,    78,   311,   283,   262,   311,-32768,
--32768,    85,-32768,-32768,   263,    98,-32768,-32768,-32768,-32768,
-   450,   264,   258,   270,    67,   273,   275,   269,-32768,   221,
--32768,-32768,-32768,-32768,   450,   450,-32768,   450,   283,    88,
-   261,-32768,   368,-32768,   376,-32768,-32768,   299,-32768,-32768,
--32768,-32768,-32768,     1,     1,-32768,   267,-32768,     7,-32768,
-   287,   227,-32768,    58,     1,-32768,   280,   227,-32768,   288,
--32768,   227,-32768,    70,   267,-32768,     6,-32768,-32768,-32768,
-   278,-32768,   312,-32768,    47,-32768,-32768,-32768,-32768,-32768,
--32768,   289,-32768,-32768,    17,   116,-32768,   131,-32768,   293,
+static const short yypact[] = {   131,
+-32768,-32768,   131,-32768,   -60,-32768,    15,    25,-32768,-32768,
+-32768,-32768,    27,-32768,    -1,   141,-32768,-32768,    88,    79,
+    62,    71,    65,    89,   188,   141,-32768,   101,-32768,-32768,
+-32768,-32768,-32768,   200,-32768,-32768,   517,-32768,   215,    38,
+-32768,-32768,-32768,    61,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,   190,   517,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,   355,   746,-32768,   146,-32768,    72,-32768,
+   152,-32768,-32768,    34,-32768,   -10,-32768,   156,-32768,-32768,
+-32768,    -3,   158,-32768,   182,-32768,   189,   216,-32768,-32768,
+-32768,-32768,-32768,   242,   213,-32768,-32768,-32768,   821,   294,
+-32768,-32768,-32768,-32768,   185,   296,-32768,-32768,-32768,   145,
+   194,-32768,-32768,   131,   145,   196,   198,     5,-32768,-32768,
+   594,-32768,    64,   145,-32768,-32768,-32768,-32768,-32768,   -66,
+-32768,   193,   195,   202,   235,   159,-32768,-32768,   -60,-32768,
+-32768,   237,-32768,-32768,-32768,   299,   -11,   204,   273,   206,
+   243,   -27,   -12,-32768,    -6,-32768,-32768,   207,-32768,   209,
+-32768,-32768,-32768,-32768,-32768,   302,   821,   309,   145,   268,
+-32768,-32768,   205,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-   291,   644,-32768,   644,-32768,   296,   300,-32768,   347,-32768,
--32768,   136,-32768,   -40,-32768,   311,   281,-32768,-32768,   261,
--32768,   382,-32768,   283,-32768,-32768,-32768,-32768,   376,-32768,
-    47,    95,   281,   311,-32768,   295,   209,   199,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,   403,-32768,    55,-32768,-32768,
-   309,-32768,-32768,-32768,   414,   415,-32768
+-32768,   208,   212,-32768,   -19,-32768,     6,-32768,   211,   292,
+    42,   254,   217,     7,   453,   255,-32768,   219,     7,   260,
+-32768,    50,-32768,    12,   218,-32768,-32768,-32768,-32768,   234,
+   306,-32768,-32768,    -4,-32768,-32768,   303,-32768,   131,   453,
+   230,   229,-32768,-32768,   184,   244,   238,    -4,-32768,-32768,
+-32768,   236,-32768,-32768,-32768,-32768,   237,   342,   309,   159,
+   251,   237,   159,-32768,   259,   259,-32768,-32768,   671,-32768,
+   309,   239,    83,-32768,-32768,   218,-32768,   453,   283,   246,
+   245,-32768,-32768,   218,   252,   126,   309,   453,   248,   309,
+-32768,-32768,   102,-32768,-32768,   256,   110,-32768,-32768,-32768,
+-32768,   465,   257,   250,   263,   168,   262,   253,   266,-32768,
+   268,-32768,-32768,-32768,-32768,   465,   465,-32768,   465,   453,
+   282,   261,-32768,-32768,   367,-32768,-32768,   293,-32768,-32768,
+-32768,-32768,-32768,     8,     8,-32768,   225,-32768,    42,-32768,
+   270,   218,-32768,     7,     8,-32768,   278,   218,-32768,   276,
+-32768,   218,-32768,    56,   225,-32768,    12,-32768,-32768,-32768,
+   271,-32768,-32768,    46,-32768,-32768,-32768,-32768,-32768,-32768,
+   280,-32768,-32768,     1,   111,-32768,-32768,   281,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   279,   671,
+-32768,   671,-32768,   284,   286,-32768,   342,-32768,-32768,   134,
+-32768,    -6,-32768,   309,   277,-32768,-32768,   261,-32768,   453,
+-32768,-32768,-32768,-32768,   367,-32768,    46,    17,   277,   309,
+-32768,   183,   184,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,    13,-32768,-32768,-32768,-32768,   391,   395,-32768
 };
 
 static const short yypgoto[] = {-32768,
--32768,   413,   279,-32768,-32768,   404,-32768,-32768,   395,-32768,
--32768,   366,-32768,-32768,-32768,   349,-32768,   314,-32768,-32768,
-   321,-32768,   365,-32768,-32768,   132,-32768,-32768,   274,-32768,
-    86,   232,-32768,   100,-32768,   111,-32768,   181,-32768,   191,
--32768,-32768,-32768,-32768,    15,  -187,   -77,  -228,   -54,-32768,
-   204,  -191,  -122,-32768,  -206,-32768,  -291,  -108,    56,   -42,
-  -120,-32768,    -6,-32768,-32768,-32768,  -146,-32768,-32768,  -196,
-  -168,   -87,-32768,   211,-32768,  -268,-32768,-32768,-32768,    37,
--32768,-32768,-32768,-32768,-32768,-32768,    57,    77,  -233,-32768,
--32768,-32768,   106,  -128,   -79,-32768,-32768,-32768,-32768,    16,
--32768,   184,    -7
+-32768,   396,   269,-32768,-32768,   389,-32768,-32768,   383,-32768,
+-32768,   354,-32768,-32768,-32768,   337,-32768,   297,-32768,-32768,
+   304,-32768,   348,-32768,-32768,   116,-32768,-32768,   258,-32768,
+    80,   210,-32768,    84,-32768,    97,-32768,   172,-32768,   177,
+-32768,-32768,-32768,-32768,    10,  -187,   -74,  -192,   -53,-32768,
+   191,  -190,  -122,-32768,  -169,-32768,  -256,  -118,    43,   -33,
+  -120,-32768,    48,-32768,-32768,-32768,  -151,-32768,-32768,  -205,
+  -165,   -96,-32768,   197,-32768,  -213,-32768,-32768,-32768,    29,
+-32768,-32768,-32768,-32768,-32768,-32768,    39,    45,  -121,-32768,
+-32768,-32768,    99,  -126,   -79,-32768,-32768,-32768,-32768,    16,
+-32768,   161,    -7
 };
 
 
-#define	YYLAST		888
+#define	YYLAST		917
 
 
 static const short yytable[] = {    15,
-   158,   233,   121,   255,   120,    15,   208,   189,   209,   101,
-   101,   264,   175,    10,    10,     5,    10,   117,     5,     1,
-     2,   102,   102,   114,    10,    67,   354,   188,   143,    65,
-    63,   298,    72,   252,    10,   373,    79,     1,     2,   201,
-     7,   364,   317,   171,   172,   322,    10,    11,    65,    63,
-    10,    11,    64,   386,    10,    71,   132,    16,   427,    78,
-    10,   180,   181,   252,   203,    10,    79,   171,   172,   253,
-   331,    64,   178,    19,    10,   180,   181,    10,   180,   181,
-   340,   284,   166,    28,   144,   115,   167,   268,   250,    78,
-   371,   372,   251,   178,   161,    10,   180,   181,   145,   253,
-   328,   380,    72,   118,   329,   162,    29,    79,   261,   420,
-  -270,   220,   362,    30,   133,    68,   165,   254,   124,   118,
-   189,    31,   175,   189,   132,    71,   352,   396,   191,   139,
-    78,   233,   220,   112,  -244,   290,   160,   158,  -244,   164,
-   188,   264,    12,   188,   118,   266,    17,   363,   391,    20,
-   176,   190,   224,   405,   280,   406,   281,    21,   432,   261,
-   215,   217,    10,   421,    32,     1,     2,   422,   293,   353,
-    33,   280,    34,   224,   301,   302,   303,   304,    22,   294,
-    23,    36,   133,   201,   216,   337,   201,   330,   343,    24,
-   353,   265,   344,    10,   273,   335,     1,     2,   374,   273,
-    73,   346,   285,   348,   289,   347,   202,    37,   203,   207,
-    80,   203,   427,     1,     2,   284,   387,   359,   360,   399,
-   361,   171,   172,   400,    66,   430,   178,   108,    10,   180,
-   181,     1,     2,   124,   401,   418,   430,   218,   402,   410,
-   316,   191,   297,   411,   191,   111,   246,   412,     1,     2,
-   116,   219,   326,   125,   378,   109,   110,   126,   382,   171,
-   172,   158,   384,   158,   190,   220,   221,   190,   339,    83,
-    84,   339,   127,   160,    10,   180,   181,     1,     2,   128,
-   129,   222,     1,     2,   171,   172,   134,   136,   178,   135,
-    10,   180,   181,     1,     2,   301,   302,   303,   304,   218,
-   223,   138,   168,   169,   141,   197,   224,   142,   170,  -271,
-   198,   200,   199,   219,   210,   225,   212,   213,    10,   375,
-   246,   265,   226,   227,   249,   228,   273,   220,   221,   245,
-   248,   259,   260,   276,   267,   277,   285,   375,   279,   289,
-   118,   291,   190,   222,   292,   296,   299,   394,   300,   307,
-   314,   311,   309,   332,   318,   323,   333,   398,   313,   327,
-   190,   336,   223,    82,   334,   341,   349,   345,   224,   350,
-   351,    83,    84,   365,   357,   355,   368,   225,   356,   369,
-   370,   381,    85,    38,    86,   227,    87,   228,   398,   390,
-   416,   414,   377,   383,   395,   403,    88,   160,   404,   160,
-    89,   407,   426,   394,    90,   408,   425,    91,    41,    42,
-    43,   431,   434,   436,   437,     6,    18,   192,    92,    45,
-    35,    81,   113,    93,    46,    94,    47,    95,   140,   106,
-   137,   358,   388,   379,    48,   325,    96,    97,   278,   376,
-   214,   321,   433,    49,   409,    50,   310,   419,   312,   385,
-    51,    98,    52,    53,    54,   178,   415,    10,   180,   181,
-     1,     2,   342,    99,   177,   178,   179,    10,   180,   181,
-     1,     2,   413,     0,     0,     0,     0,     0,     0,     0,
-   219,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,   220,   221,     0,    10,     0,     0,
-     1,     2,     0,     0,   182,     0,     0,     0,     0,     0,
-   222,     0,    38,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,   183,     0,     0,     0,     0,    39,     0,   223,
-     0,    40,     0,     0,     0,   224,     0,    41,    42,    43,
-     0,     0,     0,    44,   225,   184,     0,     0,    45,     0,
-     0,     0,   227,    46,   228,    47,     0,     0,     0,     0,
-     0,     0,   185,    48,     0,     0,     0,     0,     0,     0,
-     0,     0,    49,     0,    50,     0,     0,   147,   148,    51,
-     0,    52,    53,    54,   149,     0,     0,     0,    85,    38,
-    86,     0,    87,   150,     0,     0,     0,     0,     0,     0,
-     0,     0,    88,     0,     0,     0,    89,     0,     0,     0,
-    90,     0,     0,    91,    41,    42,    43,     0,     0,     0,
-     0,     0,   151,     0,    92,    45,     0,     0,     0,    93,
-    46,    94,    47,    95,     0,     0,     0,     0,     0,     0,
-    48,     0,    96,    97,   152,   153,     0,     0,     0,    49,
-     0,    50,     0,   154,   147,   148,    51,    98,    52,    53,
-    54,   149,     0,     0,     0,    85,    38,    86,     0,    87,
-   150,     0,     0,     0,     0,     0,     0,     0,     0,    88,
-     0,     0,     0,    89,     0,     0,     0,    90,     0,     0,
-    91,    41,    42,    43,     0,     0,     0,     0,     0,   151,
-     0,    92,    45,     0,     0,     0,    93,    46,    94,    47,
-    95,     0,     0,     0,     0,     0,     0,    48,     0,    96,
-    97,   152,   153,     0,     0,     0,    49,     0,    50,    83,
-    84,     0,     0,    51,    98,    52,    53,    54,     0,     0,
-    85,    38,    86,     0,    87,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,    88,     0,     0,     0,    89,     0,
-     0,     0,    90,     0,     0,    91,    41,    42,    43,     0,
-     0,     0,     0,     0,     0,     0,    92,    45,     0,     0,
-     0,    93,    46,    94,    47,    95,     0,     0,     0,     0,
-     0,     0,    48,     0,    96,    97,     0,     0,     0,     0,
-     0,    49,     0,    50,     1,     2,     0,     0,    51,    98,
-    52,    53,    54,     0,     0,    85,    38,    86,     0,    87,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,    88,
-     0,     0,     0,    89,     0,     0,     0,    90,     0,     0,
-    91,    41,    42,    43,     0,     0,     0,     0,     0,     0,
-     0,    92,    45,     0,     0,     0,    93,    46,    94,    47,
-    95,     0,     0,     0,     0,     0,     0,    48,     0,    96,
-    97,     0,     0,     0,     0,     0,    49,     0,    50,     0,
-     0,     0,     0,    51,    98,    52,    53,    54
+   158,   210,   121,   211,   235,    15,   256,   120,    10,   191,
+   101,   101,   175,   265,    10,     5,   421,   190,     5,    10,
+   171,   172,    10,    11,   299,   143,   117,   171,   172,    65,
+   102,   102,    72,   415,    10,    11,    79,   114,   269,   166,
+   253,    10,   253,   167,     7,    10,     1,     2,    65,    10,
+     1,     2,    64,    10,   203,    71,    67,    10,   180,    78,
+    16,   183,   331,    10,   180,   132,    79,   183,    10,   203,
+   371,    64,   340,     1,     2,   203,   254,   204,   254,   205,
+   317,   144,   353,   322,    63,   285,   251,   416,   384,    78,
+   252,   417,   209,  -270,   205,   145,    28,   363,   294,   115,
+   205,   124,    72,    63,   361,    19,   161,    79,    73,   295,
+   262,  -244,   118,   394,   133,  -244,   165,   162,   425,    32,
+    12,   118,   255,   191,   175,    71,   191,   118,   193,   139,
+    78,   190,    17,   132,   190,   235,   160,    29,   158,   164,
+   291,   265,   112,     1,     2,   262,    68,    30,   267,   389,
+   176,   192,    10,   281,    20,   282,    31,     1,     2,   281,
+   217,   219,    21,   177,   178,   179,    10,   180,   181,   182,
+   183,     1,     2,   178,    33,    10,   180,   181,   182,   183,
+   109,   110,   133,    22,   218,    23,   421,   401,   328,   402,
+    34,   330,   329,   266,    24,   348,   274,   171,   172,   335,
+   372,   274,   369,   370,   286,   184,   290,   343,    36,   358,
+   359,   344,   360,   378,   222,   346,   397,   285,   385,   347,
+   398,   424,    37,   185,   302,   303,   304,   305,    66,   352,
+    80,   424,    10,   180,   413,   337,   183,     1,     2,   406,
+   408,   316,   193,   407,   298,   193,   186,     1,     2,   171,
+   172,   171,   172,   326,   108,   226,   111,   376,   380,   158,
+   116,   158,   382,   187,   125,   192,    83,    84,   192,   339,
+   124,   126,   339,   178,   160,    10,   180,   181,   182,   183,
+     1,     2,   302,   303,   304,   305,   220,   178,   127,    10,
+   180,   181,   182,   183,   128,   129,   134,   135,   136,   138,
+   221,   141,   142,   168,   215,   169,   170,   199,  -271,   200,
+   201,   212,   202,   214,   222,   223,    10,   247,   261,   373,
+   249,   266,   250,   268,   277,   278,   274,   260,   222,   280,
+   224,   292,   293,   118,   297,   300,   286,   373,   301,   290,
+   312,   308,   192,   362,   310,   314,   392,   318,   323,   225,
+   327,   333,   332,   341,   334,   226,   396,    82,   355,   336,
+   192,   349,   345,   350,   227,   351,   354,    83,    84,   226,
+   367,   228,   229,   356,   230,   364,   368,   375,    85,    38,
+    86,   379,    87,   381,   388,   399,   396,   393,   400,   410,
+   428,   403,    88,   404,   429,   160,    89,   160,     6,   392,
+    90,    18,   420,    91,    41,    42,    43,   194,    35,    81,
+   113,   140,   106,   137,    92,    45,   357,   377,   279,    93,
+    46,    94,    47,    95,   216,   374,   386,   325,   321,   405,
+    48,   426,    96,    97,   311,   414,   411,   313,   409,    49,
+   342,    50,   383,     0,     0,     0,    51,    98,    52,    53,
+    54,     0,     0,     0,     0,     0,     0,     0,   178,    99,
+    10,   180,   181,   182,   183,     1,     2,     0,     0,     0,
+   178,   220,    10,   180,   181,   182,   183,     1,     2,     0,
+     0,     0,     0,     0,     0,   221,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,   221,     0,   222,
+   223,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,   222,   223,     0,     0,   224,     0,     0,     0,     0,
+     0,     0,     0,     0,    10,     0,     0,   224,     0,     1,
+     2,     0,     0,     0,   225,     0,     0,     0,     0,     0,
+   226,    38,     0,     0,     0,     0,   225,     0,     0,   227,
+     0,     0,   226,     0,     0,     0,    39,   229,     0,   230,
+    40,   227,     0,     0,     0,     0,    41,    42,    43,   229,
+     0,   230,    44,     0,     0,     0,     0,    45,     0,     0,
+     0,     0,    46,     0,    47,     0,     0,     0,     0,     0,
+     0,     0,    48,     0,     0,     0,     0,     0,     0,     0,
+     0,    49,     0,    50,     0,     0,   147,   148,    51,     0,
+    52,    53,    54,   149,     0,     0,     0,    85,    38,    86,
+     0,    87,   150,     0,     0,     0,     0,     0,     0,     0,
+     0,    88,     0,     0,     0,    89,     0,     0,     0,    90,
+     0,     0,    91,    41,    42,    43,     0,     0,     0,     0,
+     0,   151,     0,    92,    45,     0,     0,     0,    93,    46,
+    94,    47,    95,     0,     0,     0,     0,     0,     0,    48,
+     0,    96,    97,   152,   153,     0,     0,     0,    49,     0,
+    50,     0,   154,   147,   148,    51,    98,    52,    53,    54,
+   149,     0,     0,     0,    85,    38,    86,     0,    87,   150,
+     0,     0,     0,     0,     0,     0,     0,     0,    88,     0,
+     0,     0,    89,     0,     0,     0,    90,     0,     0,    91,
+    41,    42,    43,     0,     0,     0,     0,     0,   151,     0,
+    92,    45,     0,     0,     0,    93,    46,    94,    47,    95,
+     0,     0,     0,     0,     0,     0,    48,     0,    96,    97,
+   152,   153,     0,     0,     0,    49,     0,    50,    83,    84,
+     0,     0,    51,    98,    52,    53,    54,     0,     0,    85,
+    38,    86,     0,    87,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,    88,     0,     0,     0,    89,     0,     0,
+     0,    90,     0,     0,    91,    41,    42,    43,     0,     0,
+     0,     0,     0,     0,     0,    92,    45,     0,     0,     0,
+    93,    46,    94,    47,    95,     0,     0,     0,     0,     0,
+     0,    48,     0,    96,    97,     0,     0,     0,     0,     0,
+    49,     0,    50,     1,     2,     0,     0,    51,    98,    52,
+    53,    54,     0,     0,    85,    38,    86,     0,    87,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,    88,     0,
+     0,     0,    89,     0,     0,     0,    90,     0,     0,    91,
+    41,    42,    43,     0,     0,     0,     0,     0,     0,     0,
+    92,    45,     0,     0,     0,    93,    46,    94,    47,    95,
+     0,     0,     0,     0,     0,     0,    48,     0,    96,    97,
+     0,     0,     0,     0,     0,    49,     0,    50,     0,     0,
+     0,     0,    51,    98,    52,    53,    54
 };
 
 static const short yycheck[] = {     7,
-   121,   170,    82,   195,    82,    13,   153,   136,   155,    64,
-    65,   199,   135,     8,     8,     0,     8,    28,     3,    11,
-    12,    64,    65,    46,     8,    17,   295,   136,    19,    37,
-    37,   228,    40,    33,     8,   327,    44,    11,    12,    80,
-   103,   310,   249,    13,    14,   252,     8,     9,    56,    56,
-     8,     9,    37,   345,     8,    40,    99,    34,     4,    44,
-     8,     9,    10,    33,   105,     8,    74,    13,    14,    69,
-   267,    56,     6,   105,     8,     9,    10,     8,     9,    10,
-   277,   210,   104,     9,    75,   108,   108,    30,   104,    74,
-   324,   325,   108,     6,    41,     8,     9,    10,    89,    69,
-   104,   335,   110,   114,   108,    52,    57,   115,   102,    15,
-   103,    45,   309,    84,    99,   107,   124,   195,   111,   114,
-   249,    84,   245,   252,   167,   110,    60,   111,   136,   114,
-   115,   300,    45,   107,   104,   213,   121,   258,   108,   124,
-   249,   329,   104,   252,   114,   200,   104,    60,   102,    12,
-   135,   136,    86,   382,   102,   384,   104,    20,   104,   102,
-   168,   169,     8,    69,    53,    11,    12,    73,   101,   103,
-    84,   102,     3,    86,    97,    98,    99,   100,    41,   112,
-    43,   106,   167,    80,   169,   108,    80,   265,   104,    52,
-   103,   199,   108,     8,   202,   273,    11,    12,   327,   207,
-    46,   104,   210,   291,   212,   108,   103,    21,   105,   103,
-    39,   105,     4,    11,    12,   344,   345,   305,   306,   104,
-   308,    13,    14,   108,    12,   417,     6,   107,     8,     9,
-    10,    11,    12,   111,   104,   404,   428,    17,   108,   104,
-   248,   249,   227,   108,   252,   103,     9,   394,    11,    12,
-   103,    31,   260,    81,   332,   107,   108,    81,   338,    13,
-    14,   382,   342,   384,   249,    45,    46,   252,   276,    11,
-    12,   279,    71,   258,     8,     9,    10,    11,    12,    51,
-    81,    61,    11,    12,    13,    14,     3,     3,     6,   111,
-     8,     9,    10,    11,    12,    97,    98,    99,   100,    17,
-    80,   104,   109,   109,   104,     9,    86,   103,   103,   103,
-    35,    68,   103,    31,   103,    95,   103,     3,     8,   327,
-     9,   329,   102,   103,   109,   105,   334,    45,    46,   111,
-   111,   115,    25,    68,   105,   105,   344,   345,    68,   347,
-   114,    96,   327,    61,    25,    30,   104,   355,   108,    96,
-     4,   103,   105,    68,    95,    88,   104,   365,   108,   110,
-   345,   106,    80,     3,   108,   104,   103,   105,    86,   112,
-   101,    11,    12,   113,   106,   103,     9,    95,   104,     4,
-    82,   102,    22,    23,    24,   103,    26,   105,   396,   112,
-     9,   111,   106,   106,   106,   103,    36,   382,   108,   384,
-    40,   106,   108,   411,    44,   106,   414,    47,    48,    49,
-    50,     9,   104,     0,     0,     3,    13,   139,    58,    59,
-    26,    56,    74,    63,    64,    65,    66,    67,   115,    65,
-   110,   300,   347,   334,    74,   255,    76,    77,   207,   329,
-   167,   251,   428,    83,   389,    85,   236,   411,   245,   344,
-    90,    91,    92,    93,    94,     6,   400,     8,     9,    10,
-    11,    12,   279,   103,     5,     6,     7,     8,     9,    10,
-    11,    12,   396,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    31,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    45,    46,    -1,     8,    -1,    -1,
-    11,    12,    -1,    -1,    45,    -1,    -1,    -1,    -1,    -1,
-    61,    -1,    23,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    63,    -1,    -1,    -1,    -1,    38,    -1,    80,
-    -1,    42,    -1,    -1,    -1,    86,    -1,    48,    49,    50,
-    -1,    -1,    -1,    54,    95,    86,    -1,    -1,    59,    -1,
-    -1,    -1,   103,    64,   105,    66,    -1,    -1,    -1,    -1,
-    -1,    -1,   103,    74,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    83,    -1,    85,    -1,    -1,    11,    12,    90,
-    -1,    92,    93,    94,    18,    -1,    -1,    -1,    22,    23,
-    24,    -1,    26,    27,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    36,    -1,    -1,    -1,    40,    -1,    -1,    -1,
-    44,    -1,    -1,    47,    48,    49,    50,    -1,    -1,    -1,
-    -1,    -1,    56,    -1,    58,    59,    -1,    -1,    -1,    63,
-    64,    65,    66,    67,    -1,    -1,    -1,    -1,    -1,    -1,
-    74,    -1,    76,    77,    78,    79,    -1,    -1,    -1,    83,
-    -1,    85,    -1,    87,    11,    12,    90,    91,    92,    93,
-    94,    18,    -1,    -1,    -1,    22,    23,    24,    -1,    26,
-    27,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    36,
-    -1,    -1,    -1,    40,    -1,    -1,    -1,    44,    -1,    -1,
-    47,    48,    49,    50,    -1,    -1,    -1,    -1,    -1,    56,
-    -1,    58,    59,    -1,    -1,    -1,    63,    64,    65,    66,
-    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    -1,    76,
-    77,    78,    79,    -1,    -1,    -1,    83,    -1,    85,    11,
-    12,    -1,    -1,    90,    91,    92,    93,    94,    -1,    -1,
-    22,    23,    24,    -1,    26,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    36,    -1,    -1,    -1,    40,    -1,
-    -1,    -1,    44,    -1,    -1,    47,    48,    49,    50,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    58,    59,    -1,    -1,
-    -1,    63,    64,    65,    66,    67,    -1,    -1,    -1,    -1,
-    -1,    -1,    74,    -1,    76,    77,    -1,    -1,    -1,    -1,
-    -1,    83,    -1,    85,    11,    12,    -1,    -1,    90,    91,
-    92,    93,    94,    -1,    -1,    22,    23,    24,    -1,    26,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    36,
-    -1,    -1,    -1,    40,    -1,    -1,    -1,    44,    -1,    -1,
-    47,    48,    49,    50,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    58,    59,    -1,    -1,    -1,    63,    64,    65,    66,
-    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    -1,    76,
-    77,    -1,    -1,    -1,    -1,    -1,    83,    -1,    85,    -1,
-    -1,    -1,    -1,    90,    91,    92,    93,    94
+   121,   153,    82,   155,   170,    13,   197,    82,     8,   136,
+    64,    65,   135,   201,     8,     0,     4,   136,     3,     8,
+    15,    16,     8,     9,   230,    21,    30,    15,    16,    37,
+    64,    65,    40,    17,     8,     9,    44,    48,    32,   106,
+    35,     8,    35,   110,   105,     8,    13,    14,    56,     8,
+    13,    14,    37,     8,    82,    40,    19,     8,     9,    44,
+    36,    12,   268,     8,     9,    99,    74,    12,     8,    82,
+   327,    56,   278,    13,    14,    82,    71,   105,    71,   107,
+   250,    77,   296,   253,    37,   212,   106,    71,   345,    74,
+   110,    75,   105,   105,   107,    91,     9,   311,   103,   110,
+   107,   113,   110,    56,   310,   107,    43,   115,    48,   114,
+   104,   106,   116,   113,    99,   110,   124,    54,   106,    55,
+   106,   116,   197,   250,   247,   110,   253,   116,   136,   114,
+   115,   250,   106,   167,   253,   301,   121,    59,   259,   124,
+   215,   329,   109,    13,    14,   104,   109,    86,   202,   104,
+   135,   136,     8,   104,    14,   106,    86,    13,    14,   104,
+   168,   169,    22,     5,     6,     7,     8,     9,    10,    11,
+    12,    13,    14,     6,    86,     8,     9,    10,    11,    12,
+   109,   110,   167,    43,   169,    45,     4,   380,   106,   382,
+     3,   266,   110,   201,    54,   292,   204,    15,    16,   274,
+   327,   209,   324,   325,   212,    47,   214,   106,   108,   306,
+   307,   110,   309,   335,    47,   106,   106,   344,   345,   110,
+   110,   412,    23,    65,    99,   100,   101,   102,    14,    62,
+    41,   422,     8,     9,   400,   110,    12,    13,    14,   106,
+   392,   249,   250,   110,   229,   253,    88,    13,    14,    15,
+    16,    15,    16,   261,   109,    88,   105,   332,   338,   380,
+   105,   382,   342,   105,    83,   250,    13,    14,   253,   277,
+   113,    83,   280,     6,   259,     8,     9,    10,    11,    12,
+    13,    14,    99,   100,   101,   102,    19,     6,    73,     8,
+     9,    10,    11,    12,    53,    83,     3,   113,     3,   106,
+    33,   106,   105,   111,     3,   111,   105,     9,   105,    37,
+   105,   105,    70,   105,    47,    48,     8,   113,    27,   327,
+   113,   329,   111,   107,    70,   107,   334,   117,    47,    70,
+    63,    98,    27,   116,    32,   106,   344,   345,   110,   347,
+   105,    98,   327,    62,   107,     4,   354,    97,    90,    82,
+   112,   106,    70,   106,   110,    88,   364,     3,   106,   108,
+   345,   105,   107,   114,    97,   103,   105,    13,    14,    88,
+     4,   104,   105,   108,   107,   115,    84,   108,    24,    25,
+    26,   104,    28,   108,   114,   105,   394,   108,   110,   113,
+     0,   108,    38,   108,     0,   380,    42,   382,     3,   407,
+    46,    13,   410,    49,    50,    51,    52,   139,    26,    56,
+    74,   115,    65,   110,    60,    61,   301,   334,   209,    65,
+    66,    67,    68,    69,   167,   329,   347,   256,   252,   387,
+    76,   422,    78,    79,   238,   407,   398,   247,   394,    85,
+   280,    87,   344,    -1,    -1,    -1,    92,    93,    94,    95,
+    96,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     6,   105,
+     8,     9,    10,    11,    12,    13,    14,    -1,    -1,    -1,
+     6,    19,     8,     9,    10,    11,    12,    13,    14,    -1,
+    -1,    -1,    -1,    -1,    -1,    33,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    33,    -1,    47,
+    48,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    47,    48,    -1,    -1,    63,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,     8,    -1,    -1,    63,    -1,    13,
+    14,    -1,    -1,    -1,    82,    -1,    -1,    -1,    -1,    -1,
+    88,    25,    -1,    -1,    -1,    -1,    82,    -1,    -1,    97,
+    -1,    -1,    88,    -1,    -1,    -1,    40,   105,    -1,   107,
+    44,    97,    -1,    -1,    -1,    -1,    50,    51,    52,   105,
+    -1,   107,    56,    -1,    -1,    -1,    -1,    61,    -1,    -1,
+    -1,    -1,    66,    -1,    68,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    85,    -1,    87,    -1,    -1,    13,    14,    92,    -1,
+    94,    95,    96,    20,    -1,    -1,    -1,    24,    25,    26,
+    -1,    28,    29,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    38,    -1,    -1,    -1,    42,    -1,    -1,    -1,    46,
+    -1,    -1,    49,    50,    51,    52,    -1,    -1,    -1,    -1,
+    -1,    58,    -1,    60,    61,    -1,    -1,    -1,    65,    66,
+    67,    68,    69,    -1,    -1,    -1,    -1,    -1,    -1,    76,
+    -1,    78,    79,    80,    81,    -1,    -1,    -1,    85,    -1,
+    87,    -1,    89,    13,    14,    92,    93,    94,    95,    96,
+    20,    -1,    -1,    -1,    24,    25,    26,    -1,    28,    29,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    38,    -1,
+    -1,    -1,    42,    -1,    -1,    -1,    46,    -1,    -1,    49,
+    50,    51,    52,    -1,    -1,    -1,    -1,    -1,    58,    -1,
+    60,    61,    -1,    -1,    -1,    65,    66,    67,    68,    69,
+    -1,    -1,    -1,    -1,    -1,    -1,    76,    -1,    78,    79,
+    80,    81,    -1,    -1,    -1,    85,    -1,    87,    13,    14,
+    -1,    -1,    92,    93,    94,    95,    96,    -1,    -1,    24,
+    25,    26,    -1,    28,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    38,    -1,    -1,    -1,    42,    -1,    -1,
+    -1,    46,    -1,    -1,    49,    50,    51,    52,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    60,    61,    -1,    -1,    -1,
+    65,    66,    67,    68,    69,    -1,    -1,    -1,    -1,    -1,
+    -1,    76,    -1,    78,    79,    -1,    -1,    -1,    -1,    -1,
+    85,    -1,    87,    13,    14,    -1,    -1,    92,    93,    94,
+    95,    96,    -1,    -1,    24,    25,    26,    -1,    28,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    38,    -1,
+    -1,    -1,    42,    -1,    -1,    -1,    46,    -1,    -1,    49,
+    50,    51,    52,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    60,    61,    -1,    -1,    -1,    65,    66,    67,    68,    69,
+    -1,    -1,    -1,    -1,    -1,    -1,    76,    -1,    78,    79,
+    -1,    -1,    -1,    -1,    -1,    85,    -1,    87,    -1,    -1,
+    -1,    -1,    92,    93,    94,    95,    96
 };
 /* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
 #line 3 "/usr/share/bison.simple"
@@ -1362,13 +1366,13 @@
   switch (yyn) {
 
 case 1:
-#line 304 "asn1p_y.y"
+#line 306 "asn1p_y.y"
 {
 		*(void **)param = yyvsp[0].a_grammar;
 	;
     break;}
 case 2:
-#line 310 "asn1p_y.y"
+#line 312 "asn1p_y.y"
 {
 		yyval.a_grammar = asn1p_new();
 		checkmem(yyval.a_grammar);
@@ -1376,14 +1380,14 @@
 	;
     break;}
 case 3:
-#line 315 "asn1p_y.y"
+#line 317 "asn1p_y.y"
 {
 		yyval.a_grammar = yyvsp[-1].a_grammar;
 		TQ_ADD(&(yyval.a_grammar->modules), yyvsp[0].a_module, mod_next);
 	;
     break;}
 case 4:
-#line 336 "asn1p_y.y"
+#line 338 "asn1p_y.y"
 {
 
 		if(yyvsp[-1].a_module) {
@@ -1400,27 +1404,27 @@
 	;
     break;}
 case 5:
-#line 357 "asn1p_y.y"
+#line 359 "asn1p_y.y"
 { yyval.a_oid = 0; ;
     break;}
 case 6:
-#line 358 "asn1p_y.y"
+#line 360 "asn1p_y.y"
 { yyval.a_oid = yyvsp[0].a_oid; ;
     break;}
 case 7:
-#line 362 "asn1p_y.y"
+#line 364 "asn1p_y.y"
 {
 		yyval.a_oid = yyvsp[-1].a_oid;
 	;
     break;}
 case 8:
-#line 365 "asn1p_y.y"
+#line 367 "asn1p_y.y"
 {
 		yyval.a_oid = 0;
 	;
     break;}
 case 9:
-#line 371 "asn1p_y.y"
+#line 373 "asn1p_y.y"
 {
 		yyval.a_oid = asn1p_oid_new();
 		asn1p_oid_add_arc(yyval.a_oid, &yyvsp[0].a_oid_arc);
@@ -1429,7 +1433,7 @@
 	;
     break;}
 case 10:
-#line 377 "asn1p_y.y"
+#line 379 "asn1p_y.y"
 {
 		yyval.a_oid = yyvsp[-1].a_oid;
 		asn1p_oid_add_arc(yyval.a_oid, &yyvsp[0].a_oid_arc);
@@ -1438,74 +1442,74 @@
 	;
     break;}
 case 11:
-#line 386 "asn1p_y.y"
+#line 388 "asn1p_y.y"
 {					/* iso */
 		yyval.a_oid_arc.name = yyvsp[0].tv_str;
 		yyval.a_oid_arc.number = -1;
 	;
     break;}
 case 12:
-#line 390 "asn1p_y.y"
+#line 392 "asn1p_y.y"
 {		/* iso(1) */
 		yyval.a_oid_arc.name = yyvsp[-3].tv_str;
 		yyval.a_oid_arc.number = yyvsp[-1].a_int;
 	;
     break;}
 case 13:
-#line 394 "asn1p_y.y"
+#line 396 "asn1p_y.y"
 {					/* 1 */
 		yyval.a_oid_arc.name = 0;
 		yyval.a_oid_arc.number = yyvsp[0].a_int;
 	;
     break;}
 case 14:
-#line 404 "asn1p_y.y"
+#line 406 "asn1p_y.y"
 { yyval.a_module_flags = MSF_NOFLAGS; ;
     break;}
 case 15:
-#line 405 "asn1p_y.y"
+#line 407 "asn1p_y.y"
 {
 		yyval.a_module_flags = yyvsp[0].a_module_flags;
 	;
     break;}
 case 16:
-#line 414 "asn1p_y.y"
+#line 416 "asn1p_y.y"
 {
 		yyval.a_module_flags = yyvsp[0].a_module_flags;
 	;
     break;}
 case 17:
-#line 417 "asn1p_y.y"
+#line 419 "asn1p_y.y"
 {
 		yyval.a_module_flags = yyvsp[-1].a_module_flags | yyvsp[0].a_module_flags;
 	;
     break;}
 case 18:
-#line 426 "asn1p_y.y"
+#line 428 "asn1p_y.y"
 {
 		yyval.a_module_flags = MSF_EXPLICIT_TAGS;
 	;
     break;}
 case 19:
-#line 429 "asn1p_y.y"
+#line 431 "asn1p_y.y"
 {
 		yyval.a_module_flags = MSF_IMPLICIT_TAGS;
 	;
     break;}
 case 20:
-#line 432 "asn1p_y.y"
+#line 434 "asn1p_y.y"
 {
 		yyval.a_module_flags = MSF_AUTOMATIC_TAGS;
 	;
     break;}
 case 21:
-#line 435 "asn1p_y.y"
+#line 437 "asn1p_y.y"
 {
 		yyval.a_module_flags = MSF_EXTENSIBILITY_IMPLIED;
 	;
     break;}
 case 22:
-#line 439 "asn1p_y.y"
+#line 441 "asn1p_y.y"
 {
 		/* X.680Amd1 specifies TAG and XER */
 		if(strcmp(yyvsp[-1].tv_str, "TAG") == 0) {
@@ -1523,23 +1527,23 @@
 	;
     break;}
 case 23:
-#line 460 "asn1p_y.y"
+#line 462 "asn1p_y.y"
 { yyval.a_module = 0; ;
     break;}
 case 24:
-#line 461 "asn1p_y.y"
+#line 463 "asn1p_y.y"
 {
 		yyval.a_module = yyvsp[0].a_module;
 	;
     break;}
 case 25:
-#line 470 "asn1p_y.y"
+#line 472 "asn1p_y.y"
 {
 		yyval.a_module = yyvsp[0].a_module;
 	;
     break;}
 case 26:
-#line 473 "asn1p_y.y"
+#line 475 "asn1p_y.y"
 {
 		yyval.a_module = yyvsp[-1].a_module;
 
@@ -1569,13 +1573,13 @@
 	;
     break;}
 case 27:
-#line 506 "asn1p_y.y"
+#line 508 "asn1p_y.y"
 {
 		yyval.a_module = yyvsp[0].a_module;
 	;
     break;}
 case 28:
-#line 509 "asn1p_y.y"
+#line 511 "asn1p_y.y"
 {
 		yyval.a_module = asn1p_module_new();
 		checkmem(yyval.a_module);
@@ -1587,7 +1591,7 @@
 	;
     break;}
 case 29:
-#line 518 "asn1p_y.y"
+#line 520 "asn1p_y.y"
 {
 		yyval.a_module = asn1p_module_new();
 		checkmem(yyval.a_module);
@@ -1597,7 +1601,7 @@
 	;
     break;}
 case 30:
-#line 525 "asn1p_y.y"
+#line 527 "asn1p_y.y"
 {
 		yyval.a_module = asn1p_module_new();
 		checkmem(yyval.a_module);
@@ -1607,7 +1611,7 @@
 	;
     break;}
 case 31:
-#line 538 "asn1p_y.y"
+#line 540 "asn1p_y.y"
 {
 		yyval.a_module = asn1p_module_new();
 		checkmem(yyval.a_module);
@@ -1617,11 +1621,11 @@
 	;
     break;}
 case 32:
-#line 546 "asn1p_y.y"
+#line 548 "asn1p_y.y"
 { asn1p_lexer_hack_push_encoding_control(); ;
     break;}
 case 33:
-#line 547 "asn1p_y.y"
+#line 549 "asn1p_y.y"
 {
 		fprintf(stderr,
 			"WARNING: ENCODING-CONTROL %s "
@@ -1632,7 +1636,7 @@
 	;
     break;}
 case 34:
-#line 559 "asn1p_y.y"
+#line 561 "asn1p_y.y"
 {
 		return yyerror(
 			"Attempt to redefine a standard basic type, "
@@ -1641,19 +1645,19 @@
 	;
     break;}
 case 35:
-#line 573 "asn1p_y.y"
+#line 575 "asn1p_y.y"
 {
 		yyval.a_module = yyvsp[-1].a_module;
 	;
     break;}
 case 36:
-#line 579 "asn1p_y.y"
+#line 581 "asn1p_y.y"
 {
 		return yyerror("Empty IMPORTS list");
 	;
     break;}
 case 37:
-#line 585 "asn1p_y.y"
+#line 587 "asn1p_y.y"
 {
 		yyval.a_module = asn1p_module_new();
 		checkmem(yyval.a_module);
@@ -1661,14 +1665,14 @@
 	;
     break;}
 case 38:
-#line 590 "asn1p_y.y"
+#line 592 "asn1p_y.y"
 {
 		yyval.a_module = yyvsp[-1].a_module;
 		TQ_ADD(&(yyval.a_module->imports), yyvsp[0].a_xports, xp_next);
 	;
     break;}
 case 39:
-#line 597 "asn1p_y.y"
+#line 599 "asn1p_y.y"
 {
 		yyval.a_xports = yyvsp[-3].a_xports;
 		yyval.a_xports->from = yyvsp[-1].tv_str;
@@ -1677,7 +1681,7 @@
 	;
     break;}
 case 40:
-#line 606 "asn1p_y.y"
+#line 608 "asn1p_y.y"
 {
 		yyval.a_xports = asn1p_xports_new();
 		checkmem(yyval.a_xports);
@@ -1685,14 +1689,14 @@
 	;
     break;}
 case 41:
-#line 611 "asn1p_y.y"
+#line 613 "asn1p_y.y"
 {
 		yyval.a_xports = yyvsp[-2].a_xports;
 		TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
 	;
     break;}
 case 42:
-#line 618 "asn1p_y.y"
+#line 620 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1701,7 +1705,7 @@
 	;
     break;}
 case 43:
-#line 624 "asn1p_y.y"
+#line 626 "asn1p_y.y"
 {		/* Completely equivalent to above */
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1710,7 +1714,7 @@
 	;
     break;}
 case 44:
-#line 630 "asn1p_y.y"
+#line 632 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1719,19 +1723,19 @@
 	;
     break;}
 case 45:
-#line 639 "asn1p_y.y"
+#line 641 "asn1p_y.y"
 {
 		yyval.a_xports = yyvsp[-1].a_xports;
 	;
     break;}
 case 46:
-#line 642 "asn1p_y.y"
+#line 644 "asn1p_y.y"
 {
 		yyval.a_xports = 0;
 	;
     break;}
 case 47:
-#line 645 "asn1p_y.y"
+#line 647 "asn1p_y.y"
 {
 		/* Empty EXPORTS clause effectively prohibits export. */
 		yyval.a_xports = asn1p_xports_new();
@@ -1739,7 +1743,7 @@
 	;
     break;}
 case 48:
-#line 653 "asn1p_y.y"
+#line 655 "asn1p_y.y"
 {
 		yyval.a_xports = asn1p_xports_new();
 		assert(yyval.a_xports);
@@ -1747,14 +1751,14 @@
 	;
     break;}
 case 49:
-#line 658 "asn1p_y.y"
+#line 660 "asn1p_y.y"
 {
 		yyval.a_xports = yyvsp[-2].a_xports;
 		TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
 	;
     break;}
 case 50:
-#line 665 "asn1p_y.y"
+#line 667 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1763,7 +1767,7 @@
 	;
     break;}
 case 51:
-#line 671 "asn1p_y.y"
+#line 673 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1772,7 +1776,7 @@
 	;
     break;}
 case 52:
-#line 677 "asn1p_y.y"
+#line 679 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1781,7 +1785,7 @@
 	;
     break;}
 case 53:
-#line 687 "asn1p_y.y"
+#line 689 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-4].a_expr;
 		assert(yyval.a_expr->Identifier == 0);
@@ -1791,7 +1795,7 @@
 	;
     break;}
 case 54:
-#line 697 "asn1p_y.y"
+#line 699 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1801,7 +1805,7 @@
 	;
     break;}
 case 55:
-#line 704 "asn1p_y.y"
+#line 706 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1810,36 +1814,36 @@
 	;
     break;}
 case 56:
-#line 713 "asn1p_y.y"
+#line 715 "asn1p_y.y"
 { ;
     break;}
 case 57:
-#line 714 "asn1p_y.y"
+#line 716 "asn1p_y.y"
 {
 	;
     break;}
 case 58:
-#line 725 "asn1p_y.y"
-{
-	;
-    break;}
-case 59:
 #line 727 "asn1p_y.y"
 {
 	;
     break;}
-case 60:
-#line 732 "asn1p_y.y"
+case 59:
+#line 729 "asn1p_y.y"
 {
 	;
     break;}
-case 61:
+case 60:
 #line 734 "asn1p_y.y"
 {
 	;
     break;}
+case 61:
+#line 736 "asn1p_y.y"
+{
+	;
+    break;}
 case 62:
-#line 750 "asn1p_y.y"
+#line 752 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1850,7 +1854,7 @@
 	;
     break;}
 case 63:
-#line 758 "asn1p_y.y"
+#line 760 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 		yyval.a_expr->Identifier = yyvsp[-2].tv_str;
@@ -1859,7 +1863,7 @@
 	;
     break;}
 case 64:
-#line 764 "asn1p_y.y"
+#line 766 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 		yyval.a_expr->Identifier = yyvsp[-2].tv_str;
@@ -1868,7 +1872,7 @@
 	;
     break;}
 case 65:
-#line 780 "asn1p_y.y"
+#line 782 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 		assert(yyval.a_expr->Identifier == 0);
@@ -1878,7 +1882,7 @@
 	;
     break;}
 case 66:
-#line 790 "asn1p_y.y"
+#line 792 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_plist = asn1p_paramlist_new(yylineno);
@@ -1890,7 +1894,7 @@
 	;
     break;}
 case 67:
-#line 799 "asn1p_y.y"
+#line 801 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_plist = yyvsp[-2].a_plist;
@@ -1901,14 +1905,14 @@
 	;
     break;}
 case 68:
-#line 810 "asn1p_y.y"
+#line 812 "asn1p_y.y"
 {
 		yyval.a_parg.governor = NULL;
 		yyval.a_parg.argument = yyvsp[0].tv_str;
 	;
     break;}
 case 69:
-#line 814 "asn1p_y.y"
+#line 816 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_parg.governor = asn1p_ref_new(yylineno);
@@ -1918,7 +1922,7 @@
 	;
     break;}
 case 70:
-#line 821 "asn1p_y.y"
+#line 823 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_parg.governor = asn1p_ref_new(yylineno);
@@ -1928,7 +1932,7 @@
 	;
     break;}
 case 71:
-#line 828 "asn1p_y.y"
+#line 830 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_parg.governor = asn1p_ref_new(yylineno);
@@ -1939,7 +1943,7 @@
 	;
     break;}
 case 72:
-#line 839 "asn1p_y.y"
+#line 841 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1947,20 +1951,20 @@
 	;
     break;}
 case 73:
-#line 844 "asn1p_y.y"
+#line 846 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	;
     break;}
 case 74:
-#line 851 "asn1p_y.y"
+#line 853 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 	;
     break;}
 case 75:
-#line 854 "asn1p_y.y"
+#line 856 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1970,15 +1974,15 @@
 	;
     break;}
 case 76:
-#line 878 "asn1p_y.y"
+#line 880 "asn1p_y.y"
 { yyval.a_expr = asn1p_expr_new(yylineno); ;
     break;}
 case 77:
-#line 879 "asn1p_y.y"
+#line 881 "asn1p_y.y"
 { yyval.a_expr = yyvsp[0].a_expr; ;
     break;}
 case 78:
-#line 882 "asn1p_y.y"
+#line 884 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1986,14 +1990,14 @@
 	;
     break;}
 case 79:
-#line 887 "asn1p_y.y"
+#line 889 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	;
     break;}
 case 80:
-#line 894 "asn1p_y.y"
+#line 896 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-1].a_expr;
 		assert(yyval.a_expr->Identifier == 0);
@@ -2002,7 +2006,7 @@
 	;
     break;}
 case 81:
-#line 900 "asn1p_y.y"
+#line 902 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2012,13 +2016,13 @@
 	;
     break;}
 case 82:
-#line 907 "asn1p_y.y"
+#line 909 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 	;
     break;}
 case 83:
-#line 913 "asn1p_y.y"
+#line 915 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2026,14 +2030,14 @@
 	;
     break;}
 case 84:
-#line 918 "asn1p_y.y"
+#line 920 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	;
     break;}
 case 85:
-#line 925 "asn1p_y.y"
+#line 927 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 		assert(yyval.a_expr->Identifier == 0);
@@ -2041,13 +2045,13 @@
 	;
     break;}
 case 86:
-#line 930 "asn1p_y.y"
+#line 932 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 	;
     break;}
 case 87:
-#line 936 "asn1p_y.y"
+#line 938 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		checkmem(yyval.a_expr);
@@ -2057,15 +2061,15 @@
 	;
     break;}
 case 88:
-#line 946 "asn1p_y.y"
+#line 948 "asn1p_y.y"
 { yyval.a_int = 0; ;
     break;}
 case 89:
-#line 947 "asn1p_y.y"
+#line 949 "asn1p_y.y"
 { yyval.a_int = 1; ;
     break;}
 case 90:
-#line 951 "asn1p_y.y"
+#line 953 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2075,14 +2079,14 @@
 	;
     break;}
 case 91:
-#line 958 "asn1p_y.y"
+#line 960 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	;
     break;}
 case 92:
-#line 965 "asn1p_y.y"
+#line 967 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2093,7 +2097,7 @@
 	;
     break;}
 case 93:
-#line 973 "asn1p_y.y"
+#line 975 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		yyval.a_expr->Identifier = yyvsp[-3].a_refcomp.name;
@@ -2102,7 +2106,7 @@
 	;
     break;}
 case 94:
-#line 979 "asn1p_y.y"
+#line 981 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_expr = asn1p_expr_new(yylineno);
@@ -2120,47 +2124,47 @@
 	;
     break;}
 case 95:
-#line 997 "asn1p_y.y"
+#line 999 "asn1p_y.y"
 { yyval.a_wsynt = 0; ;
     break;}
 case 96:
-#line 998 "asn1p_y.y"
+#line 1000 "asn1p_y.y"
 {
 		yyval.a_wsynt = yyvsp[0].a_wsynt;
 	;
     break;}
 case 97:
-#line 1005 "asn1p_y.y"
+#line 1007 "asn1p_y.y"
 { asn1p_lexer_hack_enable_with_syntax(); ;
     break;}
 case 98:
-#line 1007 "asn1p_y.y"
+#line 1009 "asn1p_y.y"
 {
 		yyval.a_wsynt = yyvsp[-1].a_wsynt;
 	;
     break;}
 case 99:
-#line 1013 "asn1p_y.y"
+#line 1015 "asn1p_y.y"
 {
 		yyval.a_wsynt = asn1p_wsyntx_new();
 		TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next);
 	;
     break;}
 case 100:
-#line 1017 "asn1p_y.y"
+#line 1019 "asn1p_y.y"
 {
 		yyval.a_wsynt = yyvsp[-1].a_wsynt;
 		TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next);
 	;
     break;}
 case 101:
-#line 1024 "asn1p_y.y"
+#line 1026 "asn1p_y.y"
 {
 		yyval.a_wchunk = asn1p_wsyntx_chunk_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
 	;
     break;}
 case 102:
-#line 1027 "asn1p_y.y"
+#line 1029 "asn1p_y.y"
 {
 		asn1p_ref_t *ref;
 		int ret;
@@ -2172,7 +2176,7 @@
 	;
     break;}
 case 103:
-#line 1039 "asn1p_y.y"
+#line 1041 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2183,7 +2187,7 @@
 	;
     break;}
 case 104:
-#line 1047 "asn1p_y.y"
+#line 1049 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2195,7 +2199,7 @@
 	;
     break;}
 case 105:
-#line 1056 "asn1p_y.y"
+#line 1058 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2207,7 +2211,7 @@
 	;
     break;}
 case 106:
-#line 1068 "asn1p_y.y"
+#line 1070 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-1].a_expr;
 		yyval.a_expr->tag = yyvsp[-2].a_tag;
@@ -2229,13 +2233,13 @@
 	;
     break;}
 case 107:
-#line 1090 "asn1p_y.y"
+#line 1092 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 	;
     break;}
 case 108:
-#line 1093 "asn1p_y.y"
+#line 1095 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-1].a_expr;
 		assert(yyval.a_expr->expr_type == A1TC_INVALID);
@@ -2244,7 +2248,7 @@
 	;
     break;}
 case 109:
-#line 1099 "asn1p_y.y"
+#line 1101 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-1].a_expr;
 		assert(yyval.a_expr->expr_type == A1TC_INVALID);
@@ -2253,7 +2257,7 @@
 	;
     break;}
 case 110:
-#line 1105 "asn1p_y.y"
+#line 1107 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-1].a_expr;
 		assert(yyval.a_expr->expr_type == A1TC_INVALID);
@@ -2262,7 +2266,7 @@
 	;
     break;}
 case 111:
-#line 1111 "asn1p_y.y"
+#line 1113 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2275,7 +2279,7 @@
 	;
     break;}
 case 112:
-#line 1121 "asn1p_y.y"
+#line 1123 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2288,7 +2292,7 @@
 	;
     break;}
 case 113:
-#line 1131 "asn1p_y.y"
+#line 1133 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2297,7 +2301,7 @@
 	;
     break;}
 case 114:
-#line 1137 "asn1p_y.y"
+#line 1139 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_expr = asn1p_expr_new(yylineno);
@@ -2311,7 +2315,7 @@
 	;
     break;}
 case 115:
-#line 1151 "asn1p_y.y"
+#line 1153 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_expr = yyvsp[-1].a_expr;
@@ -2328,7 +2332,7 @@
 	;
     break;}
 case 116:
-#line 1175 "asn1p_y.y"
+#line 1177 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2338,7 +2342,7 @@
 	;
     break;}
 case 117:
-#line 1182 "asn1p_y.y"
+#line 1184 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2348,7 +2352,7 @@
 	;
     break;}
 case 118:
-#line 1197 "asn1p_y.y"
+#line 1199 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2359,7 +2363,7 @@
 	;
     break;}
 case 119:
-#line 1205 "asn1p_y.y"
+#line 1207 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2372,7 +2376,7 @@
 	;
     break;}
 case 120:
-#line 1215 "asn1p_y.y"
+#line 1217 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2385,7 +2389,7 @@
 	;
     break;}
 case 121:
-#line 1225 "asn1p_y.y"
+#line 1227 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2398,7 +2402,7 @@
 	;
     break;}
 case 122:
-#line 1235 "asn1p_y.y"
+#line 1237 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2409,7 +2413,7 @@
 	;
     break;}
 case 123:
-#line 1243 "asn1p_y.y"
+#line 1245 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = yyvsp[0].a_ref;
@@ -2431,7 +2435,7 @@
 	;
     break;}
 case 124:
-#line 1265 "asn1p_y.y"
+#line 1267 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2442,7 +2446,7 @@
 	;
     break;}
 case 125:
-#line 1273 "asn1p_y.y"
+#line 1275 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = yyvsp[-2].a_ref;
@@ -2452,21 +2456,21 @@
 	;
     break;}
 case 128:
-#line 1287 "asn1p_y.y"
+#line 1289 "asn1p_y.y"
 {
 		yyval.a_refcomp.lex_type = RLT_AmpUppercase;
 		yyval.a_refcomp.name = yyvsp[0].tv_str;
 	;
     break;}
 case 129:
-#line 1292 "asn1p_y.y"
+#line 1294 "asn1p_y.y"
 {
 		yyval.a_refcomp.lex_type = RLT_Amplowercase;
 		yyval.a_refcomp.name = yyvsp[0].tv_str;
 	;
     break;}
 case 130:
-#line 1305 "asn1p_y.y"
+#line 1307 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		assert(yyval.a_expr->Identifier == NULL);
@@ -2476,7 +2480,7 @@
 	;
     break;}
 case 131:
-#line 1315 "asn1p_y.y"
+#line 1317 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(0);
 		checkmem(yyval.a_value);
@@ -2486,11 +2490,11 @@
 	;
     break;}
 case 132:
-#line 1322 "asn1p_y.y"
-{ asn1p_lexer_hack_push_opaque_state(); ;
+#line 1324 "asn1p_y.y"
+{ printf("push\n"); asn1p_lexer_hack_push_opaque_state(); ;
     break;}
 case 133:
-#line 1322 "asn1p_y.y"
+#line 1324 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
 		checkmem(yyval.a_value);
@@ -2498,7 +2502,7 @@
 	;
     break;}
 case 134:
-#line 1327 "asn1p_y.y"
+#line 1329 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(0);
 		checkmem(yyval.a_value);
@@ -2506,7 +2510,7 @@
 	;
     break;}
 case 135:
-#line 1332 "asn1p_y.y"
+#line 1334 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(0);
 		checkmem(yyval.a_value);
@@ -2514,7 +2518,7 @@
 	;
     break;}
 case 136:
-#line 1337 "asn1p_y.y"
+#line 1339 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(0);
 		checkmem(yyval.a_value);
@@ -2522,39 +2526,39 @@
 	;
     break;}
 case 137:
-#line 1342 "asn1p_y.y"
+#line 1344 "asn1p_y.y"
 {
 		yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'B');
 		checkmem(yyval.a_value);
 	;
     break;}
 case 138:
-#line 1346 "asn1p_y.y"
+#line 1348 "asn1p_y.y"
 {
 		yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'H');
 		checkmem(yyval.a_value);
 	;
     break;}
 case 139:
-#line 1350 "asn1p_y.y"
+#line 1352 "asn1p_y.y"
 {
 		yyval.a_value = yyval.a_value;
 	;
     break;}
 case 140:
-#line 1353 "asn1p_y.y"
+#line 1355 "asn1p_y.y"
 {
 		yyval.a_value = yyvsp[0].a_value;
 	;
     break;}
 case 141:
-#line 1356 "asn1p_y.y"
+#line 1358 "asn1p_y.y"
 {
 		yyval.a_value = yyvsp[0].a_value;
 	;
     break;}
 case 142:
-#line 1362 "asn1p_y.y"
+#line 1364 "asn1p_y.y"
 {
 		asn1p_ref_t *ref;
 		int ret;
@@ -2568,7 +2572,7 @@
 	;
     break;}
 case 143:
-#line 1373 "asn1p_y.y"
+#line 1375 "asn1p_y.y"
 {
 		asn1p_ref_t *ref;
 		int ret;
@@ -2585,44 +2589,30 @@
 	;
     break;}
 case 144:
-#line 1391 "asn1p_y.y"
+#line 1393 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
 		checkmem(yyval.a_value);
 	;
     break;}
 case 145:
-#line 1395 "asn1p_y.y"
+#line 1397 "asn1p_y.y"
 {
-		asn1c_integer_t v = (yyvsp[-3].a_int << 4) + yyvsp[-1].a_int;
-		if(yyvsp[-3].a_int > 7) return yyerror("X.680:2003, #37.14 "
-				"mandates 0..7 range for Tuple's TableColumn");
-		if(yyvsp[-1].a_int > 15) return yyerror("X.680:2003, #37.14 "
-				"mandates 0..15 range for Tuple's TableRow");
-		yyval.a_value = asn1p_value_fromint(v);
+		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
 		checkmem(yyval.a_value);
 		yyval.a_value->type = ATV_TUPLE;
 	;
     break;}
 case 146:
-#line 1405 "asn1p_y.y"
+#line 1402 "asn1p_y.y"
 {
-		asn1c_integer_t v = (yyvsp[-7].a_int << 24) | (yyvsp[-5].a_int << 16) | (yyvsp[-3].a_int << 8) | yyvsp[-1].a_int;
-		if(yyvsp[-7].a_int > 127) return yyerror("X.680:2003, #37.12 "
-				"mandates 0..127 range for Quadruple's Group");
-		if(yyvsp[-5].a_int > 255) return yyerror("X.680:2003, #37.12 "
-				"mandates 0..255 range for Quadruple's Plane");
-		if(yyvsp[-3].a_int > 255) return yyerror("X.680:2003, #37.12 "
-				"mandates 0..255 range for Quadruple's Row");
-		if(yyvsp[-1].a_int > 255) return yyerror("X.680:2003, #37.12 "
-				"mandates 0..255 range for Quadruple's Cell");
-		yyval.a_value = asn1p_value_fromint(v);
+		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
 		checkmem(yyval.a_value);
 		yyval.a_value->type = ATV_QUADRUPLE;
 	;
     break;}
 case 147:
-#line 1422 "asn1p_y.y"
+#line 1436 "asn1p_y.y"
 {
 		yyval.tv_opaque.len = yyvsp[0].tv_opaque.len + 1;
 		yyval.tv_opaque.buf = malloc(yyval.tv_opaque.len + 1);
@@ -2634,7 +2624,7 @@
 	;
     break;}
 case 148:
-#line 1431 "asn1p_y.y"
+#line 1445 "asn1p_y.y"
 {
 		int newsize = yyvsp[-1].tv_opaque.len + yyvsp[0].tv_opaque.len;
 		char *p = malloc(newsize + 1);
@@ -2649,71 +2639,71 @@
 	;
     break;}
 case 149:
-#line 1446 "asn1p_y.y"
+#line 1460 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_BOOLEAN; ;
     break;}
 case 150:
-#line 1447 "asn1p_y.y"
+#line 1461 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_NULL; ;
     break;}
 case 151:
-#line 1448 "asn1p_y.y"
+#line 1462 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_REAL; ;
     break;}
 case 152:
-#line 1449 "asn1p_y.y"
+#line 1463 "asn1p_y.y"
 { yyval.a_type = yyvsp[0].a_type; ;
     break;}
 case 153:
-#line 1450 "asn1p_y.y"
+#line 1464 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_OCTET_STRING; ;
     break;}
 case 154:
-#line 1451 "asn1p_y.y"
+#line 1465 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_OBJECT_IDENTIFIER; ;
     break;}
 case 155:
-#line 1452 "asn1p_y.y"
+#line 1466 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_RELATIVE_OID; ;
     break;}
 case 156:
-#line 1453 "asn1p_y.y"
+#line 1467 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_EXTERNAL; ;
     break;}
 case 157:
-#line 1454 "asn1p_y.y"
+#line 1468 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_EMBEDDED_PDV; ;
     break;}
 case 158:
-#line 1455 "asn1p_y.y"
+#line 1469 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_CHARACTER_STRING; ;
     break;}
 case 159:
-#line 1456 "asn1p_y.y"
+#line 1470 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_UTCTime; ;
     break;}
 case 160:
-#line 1457 "asn1p_y.y"
+#line 1471 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_GeneralizedTime; ;
     break;}
 case 161:
-#line 1458 "asn1p_y.y"
+#line 1472 "asn1p_y.y"
 { yyval.a_type = yyvsp[0].a_type; ;
     break;}
 case 162:
-#line 1465 "asn1p_y.y"
+#line 1479 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_INTEGER; ;
     break;}
 case 163:
-#line 1466 "asn1p_y.y"
+#line 1480 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_ENUMERATED; ;
     break;}
 case 164:
-#line 1467 "asn1p_y.y"
+#line 1481 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_BIT_STRING; ;
     break;}
 case 165:
-#line 1471 "asn1p_y.y"
+#line 1485 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2722,7 +2712,7 @@
 	;
     break;}
 case 166:
-#line 1477 "asn1p_y.y"
+#line 1491 "asn1p_y.y"
 {
 		if(yyvsp[0].a_expr) {
 			yyval.a_expr = yyvsp[0].a_expr;
@@ -2735,91 +2725,91 @@
 	;
     break;}
 case 167:
-#line 1490 "asn1p_y.y"
+#line 1504 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_BMPString; ;
     break;}
 case 168:
-#line 1491 "asn1p_y.y"
+#line 1505 "asn1p_y.y"
 {
 		yyval.a_type = ASN_STRING_GeneralString;
 		fprintf(stderr, "WARNING: GeneralString is not fully supported\n");
 	;
     break;}
 case 169:
-#line 1495 "asn1p_y.y"
+#line 1509 "asn1p_y.y"
 {
 		yyval.a_type = ASN_STRING_GraphicString;
 		fprintf(stderr, "WARNING: GraphicString is not fully supported\n");
 	;
     break;}
 case 170:
-#line 1499 "asn1p_y.y"
+#line 1513 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_IA5String; ;
     break;}
 case 171:
-#line 1500 "asn1p_y.y"
+#line 1514 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_ISO646String; ;
     break;}
 case 172:
-#line 1501 "asn1p_y.y"
+#line 1515 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_NumericString; ;
     break;}
 case 173:
-#line 1502 "asn1p_y.y"
+#line 1516 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_PrintableString; ;
     break;}
 case 174:
-#line 1503 "asn1p_y.y"
+#line 1517 "asn1p_y.y"
 {
 		yyval.a_type = ASN_STRING_T61String;
 		fprintf(stderr, "WARNING: T61String is not fully supported\n");
 	;
     break;}
 case 175:
-#line 1507 "asn1p_y.y"
+#line 1521 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_TeletexString; ;
     break;}
 case 176:
-#line 1508 "asn1p_y.y"
+#line 1522 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_UniversalString; ;
     break;}
 case 177:
-#line 1509 "asn1p_y.y"
+#line 1523 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_UTF8String; ;
     break;}
 case 178:
-#line 1510 "asn1p_y.y"
+#line 1524 "asn1p_y.y"
 {
 		yyval.a_type = ASN_STRING_VideotexString;
 		fprintf(stderr, "WARNING: VideotexString is not fully supported\n");
 	;
     break;}
 case 179:
-#line 1514 "asn1p_y.y"
+#line 1528 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_VisibleString; ;
     break;}
 case 180:
-#line 1515 "asn1p_y.y"
+#line 1529 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_ObjectDescriptor; ;
     break;}
 case 186:
-#line 1527 "asn1p_y.y"
+#line 1541 "asn1p_y.y"
 { yyval.a_constr = 0; ;
     break;}
 case 187:
-#line 1528 "asn1p_y.y"
+#line 1542 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
 case 188:
-#line 1534 "asn1p_y.y"
+#line 1548 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[0].a_constr, 0);
 	;
     break;}
 case 189:
-#line 1537 "asn1p_y.y"
+#line 1551 "asn1p_y.y"
 {
 		/*
 		 * This is a special case, for compatibility purposes.
@@ -2829,25 +2819,25 @@
 	;
     break;}
 case 190:
-#line 1547 "asn1p_y.y"
+#line 1561 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[-1].a_constr;
 	;
     break;}
 case 191:
-#line 1550 "asn1p_y.y"
+#line 1564 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
 	;
     break;}
 case 192:
-#line 1556 "asn1p_y.y"
+#line 1570 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
 case 193:
-#line 1559 "asn1p_y.y"
+#line 1573 "asn1p_y.y"
 {
 		asn1p_constraint_t *ct;
 		ct = asn1p_constraint_new(yylineno);
@@ -2856,7 +2846,7 @@
 	;
     break;}
 case 194:
-#line 1565 "asn1p_y.y"
+#line 1579 "asn1p_y.y"
 {
 		asn1p_constraint_t *ct;
 		ct = asn1p_constraint_new(yylineno);
@@ -2867,37 +2857,37 @@
 	;
     break;}
 case 195:
-#line 1576 "asn1p_y.y"
+#line 1590 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
 case 196:
-#line 1579 "asn1p_y.y"
+#line 1593 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_AEX, yyvsp[0].a_constr, 0);
 	;
     break;}
 case 197:
-#line 1582 "asn1p_y.y"
+#line 1596 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_UNI, yyvsp[-2].a_constr, yyvsp[0].a_constr);
 	;
     break;}
 case 198:
-#line 1585 "asn1p_y.y"
+#line 1599 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_INT, yyvsp[-2].a_constr, yyvsp[0].a_constr);
 	;
     break;}
 case 199:
-#line 1588 "asn1p_y.y"
+#line 1602 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_EXC, yyvsp[-2].a_constr, yyvsp[0].a_constr);
 	;
     break;}
 case 200:
-#line 1594 "asn1p_y.y"
+#line 1608 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_constr = asn1p_constraint_new(yylineno);
@@ -2908,7 +2898,7 @@
 	;
     break;}
 case 201:
-#line 1602 "asn1p_y.y"
+#line 1616 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_constr = asn1p_constraint_new(yylineno);
@@ -2919,7 +2909,7 @@
 	;
     break;}
 case 202:
-#line 1610 "asn1p_y.y"
+#line 1624 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -2928,7 +2918,7 @@
 	;
     break;}
 case 203:
-#line 1616 "asn1p_y.y"
+#line 1630 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -2937,7 +2927,7 @@
 	;
     break;}
 case 204:
-#line 1622 "asn1p_y.y"
+#line 1636 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -2947,7 +2937,7 @@
 	;
     break;}
 case 205:
-#line 1629 "asn1p_y.y"
+#line 1643 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -2958,7 +2948,7 @@
 	;
     break;}
 case 206:
-#line 1637 "asn1p_y.y"
+#line 1651 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -2969,7 +2959,7 @@
 	;
     break;}
 case 207:
-#line 1645 "asn1p_y.y"
+#line 1659 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -2981,23 +2971,23 @@
 	;
     break;}
 case 208:
-#line 1654 "asn1p_y.y"
+#line 1668 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
 case 209:
-#line 1657 "asn1p_y.y"
+#line 1671 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
 case 210:
-#line 1661 "asn1p_y.y"
+#line 1675 "asn1p_y.y"
 { asn1p_lexer_hack_push_opaque_state(); ;
     break;}
 case 211:
-#line 1661 "asn1p_y.y"
+#line 1675 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -3008,35 +2998,35 @@
 	;
     break;}
 case 212:
-#line 1672 "asn1p_y.y"
+#line 1686 "asn1p_y.y"
 { yyval.a_ctype = ACT_EL_RANGE; ;
     break;}
 case 213:
-#line 1673 "asn1p_y.y"
+#line 1687 "asn1p_y.y"
 { yyval.a_ctype = ACT_EL_RLRANGE; ;
     break;}
 case 214:
-#line 1674 "asn1p_y.y"
+#line 1688 "asn1p_y.y"
 { yyval.a_ctype = ACT_EL_LLRANGE; ;
     break;}
 case 215:
-#line 1675 "asn1p_y.y"
+#line 1689 "asn1p_y.y"
 { yyval.a_ctype = ACT_EL_ULRANGE; ;
     break;}
 case 216:
-#line 1679 "asn1p_y.y"
+#line 1693 "asn1p_y.y"
 {
 		yyval.a_ctype = ACT_CT_SIZE;
 	;
     break;}
 case 217:
-#line 1682 "asn1p_y.y"
+#line 1696 "asn1p_y.y"
 {
 		yyval.a_ctype = ACT_CT_FROM;
 	;
     break;}
 case 218:
-#line 1688 "asn1p_y.y"
+#line 1702 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(0);
 		checkmem(yyval.a_value);
@@ -3044,7 +3034,7 @@
 	;
     break;}
 case 219:
-#line 1693 "asn1p_y.y"
+#line 1707 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(1);
 		checkmem(yyval.a_value);
@@ -3052,19 +3042,19 @@
 	;
     break;}
 case 220:
-#line 1698 "asn1p_y.y"
+#line 1712 "asn1p_y.y"
 {
 		yyval.a_value = yyvsp[0].a_value;
 	;
     break;}
 case 221:
-#line 1701 "asn1p_y.y"
+#line 1715 "asn1p_y.y"
 {
 		yyval.a_value = yyvsp[0].a_value;
 	;
     break;}
 case 222:
-#line 1704 "asn1p_y.y"
+#line 1718 "asn1p_y.y"
 {
 		asn1p_ref_t *ref;
 		int ret;
@@ -3078,7 +3068,7 @@
 	;
     break;}
 case 223:
-#line 1718 "asn1p_y.y"
+#line 1732 "asn1p_y.y"
 {
 		asn1p_ref_t *ref;
 		int ret;
@@ -3092,25 +3082,25 @@
 	;
     break;}
 case 224:
-#line 1732 "asn1p_y.y"
+#line 1746 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-1].a_constr, 0);
 	;
     break;}
 case 225:
-#line 1738 "asn1p_y.y"
+#line 1752 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
 case 226:
-#line 1741 "asn1p_y.y"
+#line 1755 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-2].a_constr, yyvsp[0].a_constr);
 	;
     break;}
 case 227:
-#line 1747 "asn1p_y.y"
+#line 1761 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -3118,7 +3108,7 @@
 	;
     break;}
 case 228:
-#line 1752 "asn1p_y.y"
+#line 1766 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -3128,45 +3118,45 @@
 	;
     break;}
 case 229:
-#line 1765 "asn1p_y.y"
+#line 1779 "asn1p_y.y"
 { yyval.a_pres = ACPRES_DEFAULT; ;
     break;}
 case 230:
-#line 1766 "asn1p_y.y"
+#line 1780 "asn1p_y.y"
 { yyval.a_pres = yyvsp[0].a_pres; ;
     break;}
 case 231:
-#line 1770 "asn1p_y.y"
+#line 1784 "asn1p_y.y"
 {
 		yyval.a_pres = ACPRES_PRESENT;
 	;
     break;}
 case 232:
-#line 1773 "asn1p_y.y"
+#line 1787 "asn1p_y.y"
 {
 		yyval.a_pres = ACPRES_ABSENT;
 	;
     break;}
 case 233:
-#line 1776 "asn1p_y.y"
+#line 1790 "asn1p_y.y"
 {
 		yyval.a_pres = ACPRES_OPTIONAL;
 	;
     break;}
 case 234:
-#line 1782 "asn1p_y.y"
+#line 1796 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
 case 235:
-#line 1785 "asn1p_y.y"
+#line 1799 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
 case 236:
-#line 1794 "asn1p_y.y"
+#line 1808 "asn1p_y.y"
 {
 		asn1p_ref_t *ref = asn1p_ref_new(yylineno);
 		asn1p_constraint_t *ct;
@@ -3181,13 +3171,13 @@
 	;
     break;}
 case 237:
-#line 1809 "asn1p_y.y"
+#line 1823 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
 	;
     break;}
 case 238:
-#line 1815 "asn1p_y.y"
+#line 1829 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -3196,7 +3186,7 @@
 	;
     break;}
 case 239:
-#line 1821 "asn1p_y.y"
+#line 1835 "asn1p_y.y"
 {
 		asn1p_constraint_t *ct;
 		ct = asn1p_constraint_new(yylineno);
@@ -3207,7 +3197,7 @@
 	;
     break;}
 case 240:
-#line 1835 "asn1p_y.y"
+#line 1849 "asn1p_y.y"
 {
 		char *p = malloc(strlen(yyvsp[0].tv_str) + 2);
 		int ret;
@@ -3221,7 +3211,7 @@
 	;
     break;}
 case 241:
-#line 1846 "asn1p_y.y"
+#line 1860 "asn1p_y.y"
 {
 		char *p = malloc(strlen(yyvsp[0].tv_str) + 3);
 		int ret;
@@ -3236,13 +3226,13 @@
 	;
     break;}
 case 242:
-#line 1862 "asn1p_y.y"
+#line 1876 "asn1p_y.y"
 {
 		yyval.tv_str = yyvsp[0].tv_str;
 	;
     break;}
 case 243:
-#line 1865 "asn1p_y.y"
+#line 1879 "asn1p_y.y"
 {
 		int l1 = strlen(yyvsp[-2].tv_str);
 		int l3 = strlen(yyvsp[0].tv_str);
@@ -3254,45 +3244,45 @@
 	;
     break;}
 case 244:
-#line 1883 "asn1p_y.y"
+#line 1897 "asn1p_y.y"
 {
 		yyval.a_marker.flags = EM_NOMARK;
 		yyval.a_marker.default_value = 0;
 	;
     break;}
 case 245:
-#line 1887 "asn1p_y.y"
+#line 1901 "asn1p_y.y"
 { yyval.a_marker = yyvsp[0].a_marker; ;
     break;}
 case 246:
-#line 1891 "asn1p_y.y"
+#line 1905 "asn1p_y.y"
 {
 		yyval.a_marker.flags = EM_OPTIONAL;
 		yyval.a_marker.default_value = 0;
 	;
     break;}
 case 247:
-#line 1895 "asn1p_y.y"
+#line 1909 "asn1p_y.y"
 {
 		yyval.a_marker.flags = EM_DEFAULT;
 		yyval.a_marker.default_value = yyvsp[0].a_value;
 	;
     break;}
 case 248:
-#line 1918 "asn1p_y.y"
+#line 1932 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
 	;
     break;}
 case 249:
-#line 1922 "asn1p_y.y"
+#line 1936 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-1].a_expr;
 	;
     break;}
 case 250:
-#line 1928 "asn1p_y.y"
+#line 1942 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -3300,14 +3290,14 @@
 	;
     break;}
 case 251:
-#line 1933 "asn1p_y.y"
+#line 1947 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	;
     break;}
 case 252:
-#line 1940 "asn1p_y.y"
+#line 1954 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -3317,7 +3307,7 @@
 	;
     break;}
 case 253:
-#line 1947 "asn1p_y.y"
+#line 1961 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -3328,7 +3318,7 @@
 	;
     break;}
 case 254:
-#line 1955 "asn1p_y.y"
+#line 1969 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -3339,7 +3329,7 @@
 	;
     break;}
 case 255:
-#line 1963 "asn1p_y.y"
+#line 1977 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -3349,7 +3339,7 @@
 	;
     break;}
 case 256:
-#line 1970 "asn1p_y.y"
+#line 1984 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -3360,102 +3350,102 @@
 	;
     break;}
 case 257:
-#line 1981 "asn1p_y.y"
+#line 1995 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
 		checkmem(yyval.a_value);
 	;
     break;}
 case 258:
-#line 1985 "asn1p_y.y"
+#line 1999 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
 		checkmem(yyval.a_value);
 	;
     break;}
 case 259:
-#line 2016 "asn1p_y.y"
+#line 2030 "asn1p_y.y"
 { memset(&yyval.a_tag, 0, sizeof(yyval.a_tag)); ;
     break;}
 case 260:
-#line 2017 "asn1p_y.y"
+#line 2031 "asn1p_y.y"
 { yyval.a_tag = yyvsp[0].a_tag; ;
     break;}
 case 261:
-#line 2021 "asn1p_y.y"
+#line 2035 "asn1p_y.y"
 {
 		yyval.a_tag = yyvsp[-1].a_tag;
 		yyval.a_tag.tag_mode = yyvsp[0].a_tag.tag_mode;
 	;
     break;}
 case 262:
-#line 2028 "asn1p_y.y"
+#line 2042 "asn1p_y.y"
 {
 		yyval.a_tag = yyvsp[-2].a_tag;
 		yyval.a_tag.tag_value = yyvsp[-1].a_int;
 	;
     break;}
 case 263:
-#line 2034 "asn1p_y.y"
+#line 2048 "asn1p_y.y"
 { yyval.a_tag.tag_class = TC_CONTEXT_SPECIFIC; ;
     break;}
 case 264:
-#line 2035 "asn1p_y.y"
+#line 2049 "asn1p_y.y"
 { yyval.a_tag.tag_class = TC_UNIVERSAL; ;
     break;}
 case 265:
-#line 2036 "asn1p_y.y"
+#line 2050 "asn1p_y.y"
 { yyval.a_tag.tag_class = TC_APPLICATION; ;
     break;}
 case 266:
-#line 2037 "asn1p_y.y"
+#line 2051 "asn1p_y.y"
 { yyval.a_tag.tag_class = TC_PRIVATE; ;
     break;}
 case 267:
-#line 2041 "asn1p_y.y"
+#line 2055 "asn1p_y.y"
 { yyval.a_tag.tag_mode = TM_DEFAULT; ;
     break;}
 case 268:
-#line 2042 "asn1p_y.y"
+#line 2056 "asn1p_y.y"
 { yyval.a_tag.tag_mode = TM_IMPLICIT; ;
     break;}
 case 269:
-#line 2043 "asn1p_y.y"
+#line 2057 "asn1p_y.y"
 { yyval.a_tag.tag_mode = TM_EXPLICIT; ;
     break;}
 case 270:
-#line 2047 "asn1p_y.y"
+#line 2061 "asn1p_y.y"
 {
 		checkmem(yyvsp[0].tv_str);
 		yyval.tv_str = yyvsp[0].tv_str;
 	;
     break;}
 case 271:
-#line 2051 "asn1p_y.y"
+#line 2065 "asn1p_y.y"
 {
 		checkmem(yyvsp[0].tv_str);
 		yyval.tv_str = yyvsp[0].tv_str;
 	;
     break;}
 case 272:
-#line 2059 "asn1p_y.y"
+#line 2073 "asn1p_y.y"
 {
 		checkmem(yyvsp[0].tv_str);
 		yyval.tv_str = yyvsp[0].tv_str;
 	;
     break;}
 case 273:
-#line 2066 "asn1p_y.y"
+#line 2080 "asn1p_y.y"
 { yyval.tv_str = 0; ;
     break;}
 case 274:
-#line 2067 "asn1p_y.y"
+#line 2081 "asn1p_y.y"
 {
 		yyval.tv_str = yyvsp[0].tv_str;
 	;
     break;}
 case 275:
-#line 2072 "asn1p_y.y"
+#line 2086 "asn1p_y.y"
 {
 		checkmem(yyvsp[0].tv_str);
 		yyval.tv_str = yyvsp[0].tv_str;
@@ -3683,7 +3673,7 @@
     }
   return 1;
 }
-#line 2078 "asn1p_y.y"
+#line 2092 "asn1p_y.y"
 
 
 
diff --git a/libasn1parser/asn1p_y.h b/libasn1parser/asn1p_y.h
index 3b8d86d..71417b3 100644
--- a/libasn1parser/asn1p_y.h
+++ b/libasn1parser/asn1p_y.h
@@ -37,97 +37,99 @@
 #define	TOK_hstring	261
 #define	TOK_identifier	262
 #define	TOK_number	263
-#define	TOK_number_negative	264
-#define	TOK_typereference	265
-#define	TOK_capitalreference	266
-#define	TOK_typefieldreference	267
-#define	TOK_valuefieldreference	268
-#define	TOK_ABSENT	269
-#define	TOK_ABSTRACT_SYNTAX	270
-#define	TOK_ALL	271
-#define	TOK_ANY	272
-#define	TOK_APPLICATION	273
-#define	TOK_AUTOMATIC	274
-#define	TOK_BEGIN	275
-#define	TOK_BIT	276
-#define	TOK_BMPString	277
-#define	TOK_BOOLEAN	278
-#define	TOK_BY	279
-#define	TOK_CHARACTER	280
-#define	TOK_CHOICE	281
-#define	TOK_CLASS	282
-#define	TOK_COMPONENT	283
-#define	TOK_COMPONENTS	284
-#define	TOK_CONSTRAINED	285
-#define	TOK_CONTAINING	286
-#define	TOK_DEFAULT	287
-#define	TOK_DEFINITIONS	288
-#define	TOK_DEFINED	289
-#define	TOK_EMBEDDED	290
-#define	TOK_ENCODED	291
-#define	TOK_ENCODING_CONTROL	292
-#define	TOK_END	293
-#define	TOK_ENUMERATED	294
-#define	TOK_EXPLICIT	295
-#define	TOK_EXPORTS	296
-#define	TOK_EXTENSIBILITY	297
-#define	TOK_EXTERNAL	298
-#define	TOK_FALSE	299
-#define	TOK_FROM	300
-#define	TOK_GeneralizedTime	301
-#define	TOK_GeneralString	302
-#define	TOK_GraphicString	303
-#define	TOK_IA5String	304
-#define	TOK_IDENTIFIER	305
-#define	TOK_IMPLICIT	306
-#define	TOK_IMPLIED	307
-#define	TOK_IMPORTS	308
-#define	TOK_INCLUDES	309
-#define	TOK_INSTANCE	310
-#define	TOK_INSTRUCTIONS	311
-#define	TOK_INTEGER	312
-#define	TOK_ISO646String	313
-#define	TOK_MAX	314
-#define	TOK_MIN	315
-#define	TOK_MINUS_INFINITY	316
-#define	TOK_NULL	317
-#define	TOK_NumericString	318
-#define	TOK_OBJECT	319
-#define	TOK_ObjectDescriptor	320
-#define	TOK_OCTET	321
-#define	TOK_OF	322
-#define	TOK_OPTIONAL	323
-#define	TOK_PATTERN	324
-#define	TOK_PDV	325
-#define	TOK_PLUS_INFINITY	326
-#define	TOK_PRESENT	327
-#define	TOK_PrintableString	328
-#define	TOK_PRIVATE	329
-#define	TOK_REAL	330
-#define	TOK_RELATIVE_OID	331
-#define	TOK_SEQUENCE	332
-#define	TOK_SET	333
-#define	TOK_SIZE	334
-#define	TOK_STRING	335
-#define	TOK_SYNTAX	336
-#define	TOK_T61String	337
-#define	TOK_TAGS	338
-#define	TOK_TeletexString	339
-#define	TOK_TRUE	340
-#define	TOK_TYPE_IDENTIFIER	341
-#define	TOK_UNIQUE	342
-#define	TOK_UNIVERSAL	343
-#define	TOK_UniversalString	344
-#define	TOK_UTCTime	345
-#define	TOK_UTF8String	346
-#define	TOK_VideotexString	347
-#define	TOK_VisibleString	348
-#define	TOK_WITH	349
-#define	TOK_EXCEPT	350
-#define	TOK_INTERSECTION	351
-#define	TOK_UNION	352
-#define	TOK_TwoDots	353
-#define	TOK_ThreeDots	354
+#define	TOK_tuple	264
+#define	TOK_quadruple	265
+#define	TOK_number_negative	266
+#define	TOK_typereference	267
+#define	TOK_capitalreference	268
+#define	TOK_typefieldreference	269
+#define	TOK_valuefieldreference	270
+#define	TOK_ABSENT	271
+#define	TOK_ABSTRACT_SYNTAX	272
+#define	TOK_ALL	273
+#define	TOK_ANY	274
+#define	TOK_APPLICATION	275
+#define	TOK_AUTOMATIC	276
+#define	TOK_BEGIN	277
+#define	TOK_BIT	278
+#define	TOK_BMPString	279
+#define	TOK_BOOLEAN	280
+#define	TOK_BY	281
+#define	TOK_CHARACTER	282
+#define	TOK_CHOICE	283
+#define	TOK_CLASS	284
+#define	TOK_COMPONENT	285
+#define	TOK_COMPONENTS	286
+#define	TOK_CONSTRAINED	287
+#define	TOK_CONTAINING	288
+#define	TOK_DEFAULT	289
+#define	TOK_DEFINITIONS	290
+#define	TOK_DEFINED	291
+#define	TOK_EMBEDDED	292
+#define	TOK_ENCODED	293
+#define	TOK_ENCODING_CONTROL	294
+#define	TOK_END	295
+#define	TOK_ENUMERATED	296
+#define	TOK_EXPLICIT	297
+#define	TOK_EXPORTS	298
+#define	TOK_EXTENSIBILITY	299
+#define	TOK_EXTERNAL	300
+#define	TOK_FALSE	301
+#define	TOK_FROM	302
+#define	TOK_GeneralizedTime	303
+#define	TOK_GeneralString	304
+#define	TOK_GraphicString	305
+#define	TOK_IA5String	306
+#define	TOK_IDENTIFIER	307
+#define	TOK_IMPLICIT	308
+#define	TOK_IMPLIED	309
+#define	TOK_IMPORTS	310
+#define	TOK_INCLUDES	311
+#define	TOK_INSTANCE	312
+#define	TOK_INSTRUCTIONS	313
+#define	TOK_INTEGER	314
+#define	TOK_ISO646String	315
+#define	TOK_MAX	316
+#define	TOK_MIN	317
+#define	TOK_MINUS_INFINITY	318
+#define	TOK_NULL	319
+#define	TOK_NumericString	320
+#define	TOK_OBJECT	321
+#define	TOK_ObjectDescriptor	322
+#define	TOK_OCTET	323
+#define	TOK_OF	324
+#define	TOK_OPTIONAL	325
+#define	TOK_PATTERN	326
+#define	TOK_PDV	327
+#define	TOK_PLUS_INFINITY	328
+#define	TOK_PRESENT	329
+#define	TOK_PrintableString	330
+#define	TOK_PRIVATE	331
+#define	TOK_REAL	332
+#define	TOK_RELATIVE_OID	333
+#define	TOK_SEQUENCE	334
+#define	TOK_SET	335
+#define	TOK_SIZE	336
+#define	TOK_STRING	337
+#define	TOK_SYNTAX	338
+#define	TOK_T61String	339
+#define	TOK_TAGS	340
+#define	TOK_TeletexString	341
+#define	TOK_TRUE	342
+#define	TOK_TYPE_IDENTIFIER	343
+#define	TOK_UNIQUE	344
+#define	TOK_UNIVERSAL	345
+#define	TOK_UniversalString	346
+#define	TOK_UTCTime	347
+#define	TOK_UTF8String	348
+#define	TOK_VideotexString	349
+#define	TOK_VisibleString	350
+#define	TOK_WITH	351
+#define	TOK_EXCEPT	352
+#define	TOK_INTERSECTION	353
+#define	TOK_UNION	354
+#define	TOK_TwoDots	355
+#define	TOK_ThreeDots	356
 
 
 extern YYSTYPE asn1p_lval;
diff --git a/libasn1parser/asn1p_y.y b/libasn1parser/asn1p_y.y
index b6be6f6..01e842f 100644
--- a/libasn1parser/asn1p_y.y
+++ b/libasn1parser/asn1p_y.y
@@ -98,6 +98,8 @@
 %token	<tv_str>	TOK_hstring
 %token	<tv_str>	TOK_identifier
 %token	<a_int>		TOK_number
+%token	<a_int>		TOK_tuple
+%token	<a_int>		TOK_quadruple
 %token	<a_int>		TOK_number_negative
 %token	<tv_str>	TOK_typereference
 %token	<tv_str>	TOK_capitalreference		/* "CLASS1" */
@@ -1319,7 +1321,7 @@
 		$$->value.choice_identifier.identifier = $1;
 		$$->value.choice_identifier.value = $3;
 	}
-	| '{' { asn1p_lexer_hack_push_opaque_state(); } Opaque /* '}' */ {
+	| '{' { printf("push\n"); asn1p_lexer_hack_push_opaque_state(); } Opaque /* '}' */ {
 		$$ = asn1p_value_frombuf($3.buf, $3.len, 0);
 		checkmem($$);
 		$$->type = ATV_UNPARSED;
@@ -1392,6 +1394,17 @@
 		$$ = asn1p_value_frombuf($1.buf, $1.len, 0);
 		checkmem($$);
 	}
+	| TOK_tuple {
+		$$ = asn1p_value_fromint($1);
+		checkmem($$);
+		$$->type = ATV_TUPLE;
+	}
+	| TOK_quadruple {
+		$$ = asn1p_value_fromint($1);
+		checkmem($$);
+		$$->type = ATV_QUADRUPLE;
+	}
+	/*
 	| '{' TOK_number ',' TOK_number '}' {
 		asn1c_integer_t v = ($2 << 4) + $4;
 		if($2 > 7) return yyerror("X.680:2003, #37.14 "
@@ -1416,6 +1429,7 @@
 		checkmem($$);
 		$$->type = ATV_QUADRUPLE;
 	}
+	*/
 	;
 
 Opaque: