NamedType support


git-svn-id: https://asn1c.svn.sourceforge.net/svnroot/asn1c/trunk@363 59561ff5-6e30-0410-9f3c-9617f08c8826
diff --git a/libasn1parser/asn1p_y.c b/libasn1parser/asn1p_y.c
index 4cbd21f..9d621e2 100644
--- a/libasn1parser/asn1p_y.c
+++ b/libasn1parser/asn1p_y.c
@@ -205,11 +205,11 @@
 
 
 
-#define	YYFINAL		399
+#define	YYFINAL		402
 #define	YYFLAG		-32768
 #define	YYNTBASE	115
 
-#define YYTRANSLATE(x) ((unsigned)(x) <= 355 ? yytranslate[x] : 211)
+#define YYTRANSLATE(x) ((unsigned)(x) <= 355 ? yytranslate[x] : 212)
 
 static const char yytranslate[] = {     0,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -262,29 +262,29 @@
    202,   204,   206,   208,   212,   216,   220,   222,   224,   228,
    231,   233,   239,   240,   242,   244,   248,   251,   256,   261,
    262,   264,   265,   272,   274,   277,   279,   281,   283,   287,
-   291,   295,   297,   299,   304,   309,   314,   320,   326,   328,
-   333,   338,   340,   344,   346,   350,   354,   358,   360,   364,
-   366,   370,   372,   374,   376,   378,   383,   387,   388,   392,
-   394,   396,   398,   400,   402,   404,   406,   408,   410,   414,
-   416,   419,   421,   423,   425,   427,   430,   433,   435,   437,
-   440,   443,   445,   447,   449,   451,   454,   456,   459,   461,
-   463,   465,   467,   469,   471,   473,   475,   477,   479,   481,
-   483,   485,   487,   489,   491,   493,   495,   497,   498,   500,
-   502,   507,   511,   516,   518,   522,   528,   530,   534,   538,
-   542,   547,   551,   553,   557,   561,   565,   569,   571,   573,
-   575,   578,   581,   585,   587,   589,   591,   593,   595,   597,
-   599,   605,   607,   611,   613,   617,   618,   620,   622,   624,
-   626,   628,   630,   634,   639,   641,   645,   648,   652,   654,
-   658,   659,   661,   663,   666,   669,   673,   675,   679,   681,
-   686,   691,   693,   695,   697,   699,   700,   702,   704,   707,
-   710,   712,   714,   716
+   291,   295,   297,   299,   304,   309,   314,   321,   328,   330,
+   335,   340,   342,   346,   348,   352,   356,   360,   362,   366,
+   368,   372,   374,   376,   378,   380,   385,   389,   390,   394,
+   396,   398,   400,   402,   404,   406,   408,   410,   412,   416,
+   418,   421,   423,   425,   427,   429,   432,   435,   437,   439,
+   442,   445,   447,   449,   451,   453,   456,   458,   461,   463,
+   465,   467,   469,   471,   473,   475,   477,   479,   481,   483,
+   485,   487,   489,   491,   493,   495,   497,   499,   500,   502,
+   504,   509,   513,   518,   520,   524,   530,   532,   536,   540,
+   544,   549,   553,   555,   559,   563,   567,   571,   573,   575,
+   577,   580,   583,   587,   589,   591,   593,   595,   597,   599,
+   601,   607,   609,   613,   615,   619,   620,   622,   624,   626,
+   628,   630,   632,   636,   641,   643,   647,   650,   654,   656,
+   660,   661,   663,   665,   668,   671,   675,   677,   681,   683,
+   688,   693,   695,   697,   699,   701,   702,   704,   706,   709,
+   712,   714,   716,   718,   719,   721
 };
 
 static const short yyrhs[] = {   116,
      0,   117,     0,   116,   117,     0,   208,   118,    34,   122,
      3,    21,   125,    39,     0,     0,   119,     0,   104,   120,
    105,     0,   104,   105,     0,   121,     0,   120,   121,     0,
-   210,     0,   210,   106,     9,   107,     0,     9,     0,     0,
+   211,     0,   211,   106,     9,   107,     0,     9,     0,     0,
    123,     0,   124,     0,   123,   124,     0,    41,    84,     0,
     52,    84,     0,    20,    84,     0,    43,    53,     0,    12,
     57,     0,     0,   126,     0,   127,     0,   126,   127,     0,
@@ -292,18 +292,18 @@
      0,    38,    12,   128,     0,   176,     0,    54,   130,   108,
      0,    54,    46,     0,   131,     0,   130,   131,     0,   132,
     46,   208,   118,     0,   133,     0,   132,   109,   133,     0,
-   208,     0,   210,     0,    42,   135,   108,     0,    42,    17,
+   208,     0,   211,     0,    42,   135,   108,     0,    42,    17,
    108,     0,    42,   108,     0,   136,     0,   135,   109,   136,
-     0,   208,     0,   210,     0,   208,   138,     3,   104,   139,
+     0,   208,     0,   211,     0,   208,   138,     3,   104,   139,
    105,     0,   163,     0,   173,     0,     0,   140,     0,   141,
      0,   140,   109,   141,     0,   102,     0,   184,     0,   208,
      3,   206,    87,     0,   208,     3,   161,     0,   208,     3,
    151,     0,   208,   104,   143,   105,     3,   161,     0,   144,
-     0,   143,   109,   144,     0,   208,     0,   208,   110,   210,
-     0,   173,   110,   210,     0,   146,     0,   145,   109,   146,
-     0,   161,     0,   210,     0,   148,     0,   147,   109,   148,
-     0,   210,   161,   200,     0,    30,    68,   161,     0,   160,
-     0,   150,     0,   149,   109,   150,     0,   210,   161,     0,
+     0,   143,   109,   144,     0,   208,     0,   208,   110,   211,
+     0,   173,   110,   211,     0,   146,     0,   145,   109,   146,
+     0,   161,     0,   211,     0,   148,     0,   147,   109,   148,
+     0,   211,   161,   200,     0,    30,    68,   161,     0,   160,
+     0,   150,     0,   149,   109,   150,     0,   211,   161,     0,
    160,     0,    28,   104,   153,   105,   155,     0,     0,    88,
      0,   154,     0,   153,   109,   154,     0,   166,   200,     0,
    166,   161,   200,   152,     0,   166,   166,   200,   152,     0,
@@ -312,79 +312,80 @@
    102,     0,   102,   111,   171,     0,   102,   111,   205,     0,
    206,   162,   180,     0,   175,     0,   176,     0,    27,   104,
    149,   105,     0,    78,   104,   147,   105,     0,    79,   104,
-   147,   105,     0,    78,   180,    68,   206,   162,     0,    79,
-   180,    68,   206,   162,     0,    18,     0,    18,    35,    25,
-   210,     0,   208,   104,   145,   105,     0,   163,     0,    56,
-    68,   163,     0,    11,     0,    11,   112,   208,     0,   209,
-   112,   208,     0,    11,   112,   210,     0,   209,     0,   209,
-   112,   164,     0,   165,     0,   164,   112,   165,     0,   167,
-     0,   167,     0,    13,     0,    14,     0,   210,   138,     3,
-   169,     0,   210,   110,   169,     0,     0,   104,   170,   172,
-     0,    63,     0,    45,     0,    86,     0,     5,     0,     7,
-     0,     6,     0,   205,     0,   171,     0,   210,     0,   208,
-   112,   210,     0,     4,     0,   172,     4,     0,    24,     0,
-    63,     0,    76,     0,   174,     0,    67,    81,     0,    65,
-    51,     0,    77,     0,    44,     0,    36,    71,     0,    26,
-    81,     0,    91,     0,    47,     0,    58,     0,    40,     0,
-    22,    81,     0,   173,     0,   174,   202,     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,   181,     0,   182,
-     0,    80,   106,   183,   107,     0,   106,   183,   107,     0,
-   182,   106,   183,   107,     0,   184,     0,   184,   109,   102,
-     0,   184,   109,   102,   109,   184,     0,   185,     0,   184,
-   177,   185,     0,   184,   178,   185,     0,   185,   179,   185,
-     0,   187,   106,   183,   107,     0,   106,   183,   107,     0,
-   188,     0,   188,   186,   188,     0,    61,   186,   188,     0,
-   188,   186,    60,     0,    61,   186,    60,     0,   194,     0,
-   189,     0,   101,     0,   101,   113,     0,   113,   101,     0,
-   113,   101,   113,     0,    80,     0,    46,     0,   205,     0,
-   210,     0,     6,     0,    45,     0,    86,     0,    95,    30,
-   104,   190,   105,     0,   191,     0,   190,   109,   191,     0,
-   102,     0,   210,   180,   192,     0,     0,   193,     0,    73,
-     0,    15,     0,    69,     0,   195,     0,   196,     0,   104,
-   208,   105,     0,   195,   104,   197,   105,     0,   198,     0,
-   197,   109,   198,     0,   114,   199,     0,   114,   112,   199,
-     0,   210,     0,   199,   112,   210,     0,     0,   201,     0,
-    69,     0,    33,   169,     0,   104,   105,     0,   104,   203,
-   105,     0,   204,     0,   203,   109,   204,     0,   210,     0,
-   210,   106,   205,   107,     0,   210,   106,   171,   107,     0,
-   205,     0,   102,     0,     9,     0,    10,     0,     0,   207,
-     0,   103,     0,   103,    52,     0,   103,    41,     0,    11,
-     0,    12,     0,    12,     0,     8,     0
+   147,   105,     0,    78,   180,    68,   210,   206,   162,     0,
+    79,   180,    68,   210,   206,   162,     0,    18,     0,    18,
+    35,    25,   211,     0,   208,   104,   145,   105,     0,   163,
+     0,    56,    68,   163,     0,    11,     0,    11,   112,   208,
+     0,   209,   112,   208,     0,    11,   112,   211,     0,   209,
+     0,   209,   112,   164,     0,   165,     0,   164,   112,   165,
+     0,   167,     0,   167,     0,    13,     0,    14,     0,   211,
+   138,     3,   169,     0,   211,   110,   169,     0,     0,   104,
+   170,   172,     0,    63,     0,    45,     0,    86,     0,     5,
+     0,     7,     0,     6,     0,   205,     0,   171,     0,   211,
+     0,   208,   112,   211,     0,     4,     0,   172,     4,     0,
+    24,     0,    63,     0,    76,     0,   174,     0,    67,    81,
+     0,    65,    51,     0,    77,     0,    44,     0,    36,    71,
+     0,    26,    81,     0,    91,     0,    47,     0,    58,     0,
+    40,     0,    22,    81,     0,   173,     0,   174,   202,     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,   181,
+     0,   182,     0,    80,   106,   183,   107,     0,   106,   183,
+   107,     0,   182,   106,   183,   107,     0,   184,     0,   184,
+   109,   102,     0,   184,   109,   102,   109,   184,     0,   185,
+     0,   184,   177,   185,     0,   184,   178,   185,     0,   185,
+   179,   185,     0,   187,   106,   183,   107,     0,   106,   183,
+   107,     0,   188,     0,   188,   186,   188,     0,    61,   186,
+   188,     0,   188,   186,    60,     0,    61,   186,    60,     0,
+   194,     0,   189,     0,   101,     0,   101,   113,     0,   113,
+   101,     0,   113,   101,   113,     0,    80,     0,    46,     0,
+   205,     0,   211,     0,     6,     0,    45,     0,    86,     0,
+    95,    30,   104,   190,   105,     0,   191,     0,   190,   109,
+   191,     0,   102,     0,   211,   180,   192,     0,     0,   193,
+     0,    73,     0,    15,     0,    69,     0,   195,     0,   196,
+     0,   104,   208,   105,     0,   195,   104,   197,   105,     0,
+   198,     0,   197,   109,   198,     0,   114,   199,     0,   114,
+   112,   199,     0,   211,     0,   199,   112,   211,     0,     0,
+   201,     0,    69,     0,    33,   169,     0,   104,   105,     0,
+   104,   203,   105,     0,   204,     0,   203,   109,   204,     0,
+   211,     0,   211,   106,   205,   107,     0,   211,   106,   171,
+   107,     0,   205,     0,   102,     0,     9,     0,    10,     0,
+     0,   207,     0,   103,     0,   103,    52,     0,   103,    41,
+     0,    11,     0,    12,     0,    12,     0,     0,   211,     0,
+     8,     0
 };
 
 #endif
 
 #if YYDEBUG != 0
 static const short yyrline[] = { 0,
-   299,   305,   311,   327,   352,   354,   357,   361,   366,   373,
-   381,   386,   390,   399,   401,   409,   413,   421,   425,   428,
-   431,   435,   455,   457,   465,   469,   501,   505,   514,   521,
-   534,   541,   543,   555,   568,   575,   580,   586,   592,   601,
-   607,   613,   620,   628,   632,   635,   642,   648,   654,   661,
-   670,   680,   688,   696,   698,   708,   711,   715,   718,   730,
-   742,   748,   764,   773,   783,   793,   798,   805,   815,   821,
-   827,   831,   843,   849,   855,   862,   869,   874,   880,   886,
-   892,   897,   907,   909,   912,   920,   926,   935,   941,   958,
-   960,   965,   969,   974,   979,   985,   989,  1000,  1009,  1018,
-  1029,  1051,  1055,  1061,  1067,  1073,  1079,  1088,  1097,  1103,
-  1117,  1141,  1148,  1162,  1171,  1181,  1191,  1201,  1209,  1230,
-  1239,  1248,  1249,  1251,  1258,  1270,  1280,  1288,  1288,  1293,
-  1298,  1303,  1308,  1312,  1316,  1320,  1323,  1328,  1340,  1356,
-  1367,  1381,  1383,  1384,  1385,  1386,  1387,  1388,  1389,  1390,
-  1391,  1392,  1393,  1399,  1401,  1402,  1405,  1412,  1424,  1426,
-  1430,  1434,  1435,  1436,  1437,  1438,  1442,  1443,  1444,  1445,
-  1449,  1450,  1457,  1457,  1458,  1458,  1459,  1461,  1463,  1468,
-  1472,  1481,  1485,  1490,  1494,  1500,  1510,  1514,  1517,  1520,
-  1525,  1534,  1542,  1548,  1555,  1563,  1571,  1580,  1583,  1588,
-  1590,  1591,  1592,  1595,  1599,  1604,  1608,  1619,  1623,  1628,
-  1635,  1641,  1645,  1650,  1656,  1668,  1670,  1673,  1677,  1680,
-  1685,  1689,  1697,  1712,  1718,  1725,  1738,  1750,  1765,  1769,
-  1786,  1791,  1794,  1799,  1821,  1826,  1831,  1837,  1843,  1851,
-  1859,  1867,  1874,  1884,  1889,  1919,  1921,  1924,  1929,  1933,
-  1939,  1944,  1951,  1958
+   300,   306,   312,   328,   353,   355,   358,   362,   367,   374,
+   382,   387,   391,   400,   402,   410,   414,   422,   426,   429,
+   432,   436,   456,   458,   466,   470,   502,   506,   515,   522,
+   535,   542,   544,   556,   569,   576,   581,   587,   593,   602,
+   608,   614,   621,   629,   633,   636,   643,   649,   655,   662,
+   671,   681,   689,   697,   699,   709,   712,   716,   719,   731,
+   743,   749,   765,   774,   784,   794,   799,   806,   816,   822,
+   828,   832,   844,   850,   856,   863,   870,   875,   881,   887,
+   893,   898,   908,   910,   913,   921,   927,   936,   942,   959,
+   961,   966,   970,   975,   980,   986,   990,  1001,  1010,  1019,
+  1030,  1052,  1056,  1062,  1068,  1074,  1080,  1090,  1100,  1106,
+  1120,  1144,  1151,  1165,  1174,  1184,  1194,  1204,  1212,  1233,
+  1242,  1251,  1252,  1254,  1261,  1273,  1283,  1291,  1291,  1296,
+  1301,  1306,  1311,  1315,  1319,  1323,  1326,  1331,  1343,  1359,
+  1370,  1384,  1386,  1387,  1388,  1389,  1390,  1391,  1392,  1393,
+  1394,  1395,  1396,  1402,  1404,  1405,  1408,  1415,  1427,  1429,
+  1433,  1437,  1438,  1439,  1440,  1441,  1445,  1446,  1447,  1448,
+  1452,  1453,  1460,  1460,  1461,  1461,  1462,  1464,  1466,  1471,
+  1475,  1484,  1488,  1493,  1497,  1503,  1513,  1517,  1520,  1523,
+  1528,  1537,  1545,  1551,  1558,  1566,  1574,  1583,  1586,  1591,
+  1593,  1594,  1595,  1598,  1602,  1607,  1611,  1622,  1626,  1631,
+  1638,  1644,  1648,  1653,  1659,  1671,  1673,  1676,  1680,  1683,
+  1688,  1692,  1700,  1715,  1721,  1728,  1741,  1753,  1768,  1772,
+  1789,  1794,  1797,  1802,  1824,  1829,  1834,  1840,  1846,  1854,
+  1862,  1870,  1877,  1887,  1892,  1922,  1924,  1927,  1932,  1936,
+  1942,  1947,  1954,  1961,  1963,  1967
 };
 #endif
 
@@ -431,7 +432,8 @@
 "optPresenceConstraint","PresenceConstraint","TableConstraint","SimpleTableConstraint",
 "ComponentRelationConstraint","AtNotationList","AtNotationElement","ComponentIdList",
 "optMarker","Marker","UniverationDefinition","UniverationList","UniverationElement",
-"SignedNumber","optTag","Tag","TypeRefName","ObjectClassReference","Identifier", NULL
+"SignedNumber","optTag","Tag","TypeRefName","ObjectClassReference","optIdentifier",
+"Identifier", NULL
 };
 #endif
 
@@ -461,7 +463,7 @@
    194,   194,   195,   196,   197,   197,   198,   198,   199,   199,
    200,   200,   201,   201,   202,   202,   203,   203,   204,   204,
    204,   204,   204,   205,   205,   206,   206,   207,   207,   207,
-   208,   208,   209,   210
+   208,   208,   209,   210,   210,   211
 };
 
 static const short yyr2[] = {     0,
@@ -475,7 +477,7 @@
      1,     1,     1,     3,     3,     3,     1,     1,     3,     2,
      1,     5,     0,     1,     1,     3,     2,     4,     4,     0,
      1,     0,     6,     1,     2,     1,     1,     1,     3,     3,
-     3,     1,     1,     4,     4,     4,     5,     5,     1,     4,
+     3,     1,     1,     4,     4,     4,     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,
@@ -490,11 +492,11 @@
      1,     1,     3,     4,     1,     3,     2,     3,     1,     3,
      0,     1,     1,     2,     2,     3,     1,     3,     1,     4,
      4,     1,     1,     1,     1,     0,     1,     1,     2,     2,
-     1,     1,     1,     1
+     1,     1,     1,     0,     1,     1
 };
 
 static const short yydefact[] = {     0,
-   251,   252,     1,     2,     5,     3,     0,     0,     6,   254,
+   251,   252,     1,     2,     5,     3,     0,     0,     6,   256,
     13,     8,     0,     9,    11,    14,     7,    10,     0,     0,
      0,     0,     0,     0,     0,    15,    16,     0,    22,    20,
     18,    21,    19,     0,    17,    12,    23,   159,     0,     0,
@@ -519,228 +521,230 @@
    193,   199,   198,   221,   222,   206,   207,     0,     0,     0,
      0,    90,     0,     0,   233,   231,   231,    87,   232,     0,
      0,    98,     0,    78,    81,   246,   113,     0,     0,     0,
-    73,    77,   246,     0,   184,   246,     0,     0,   246,   243,
+    73,    77,   246,     0,   184,   254,     0,     0,   254,   243,
    235,     0,   237,   242,   239,     0,    69,    71,    72,    63,
    200,     0,     0,     0,     0,     0,    51,     0,   175,   176,
    173,   174,     0,     0,   177,     0,     0,     0,     0,   121,
    140,   129,   139,   127,     0,    82,    91,    86,   234,    83,
     83,   110,     0,   104,     0,    80,     0,   246,   105,     0,
-   231,   182,     0,     0,     0,   106,     0,   236,     0,     0,
-   111,   246,   201,   202,   197,   195,     0,   223,   192,    57,
-   188,   189,   190,     0,   196,   194,     0,     0,   225,   141,
-     0,    84,    88,    89,    99,   100,   138,    79,   181,    76,
-    74,    75,   185,   107,   183,   108,   238,     0,     0,    70,
-   203,   214,     0,   212,   178,   191,     0,   227,   229,   224,
-     0,    92,     0,   241,   240,   211,     0,   216,   228,     0,
-   226,     0,   186,   213,   219,   220,   218,   215,   217,   230,
-    96,     0,    94,    97,    93,    95,     0,     0,     0
+   231,   182,     0,   246,   255,     0,   106,   246,   236,     0,
+     0,   111,   246,   201,   202,   197,   195,     0,   223,   192,
+    57,   188,   189,   190,     0,   196,   194,     0,     0,   225,
+   141,     0,    84,    88,    89,    99,   100,   138,    79,   181,
+    76,    74,    75,   185,     0,   183,     0,   238,     0,     0,
+    70,   203,   214,     0,   212,   178,   191,     0,   227,   229,
+   224,     0,    92,     0,   107,   108,   241,   240,   211,     0,
+   216,   228,     0,   226,     0,   186,   213,   219,   220,   218,
+   215,   217,   230,    96,     0,    94,    97,    93,    95,     0,
+     0,     0
 };
 
-static const short yydefgoto[] = {   397,
+static const short yydefgoto[] = {   400,
      3,     4,     8,     9,    13,    14,    25,    26,    27,    55,
     56,    57,   106,    58,    74,    75,    76,    77,    59,    69,
     70,    60,   100,   215,   216,   217,    61,   126,   127,   266,
-   267,   250,   251,   243,   244,   116,   343,   182,   183,   296,
-   297,   382,   392,   393,   252,   268,   147,   148,   163,   164,
+   267,   250,   251,   243,   244,   116,   344,   182,   183,   296,
+   297,   385,   395,   396,   252,   268,   147,   148,   163,   164,
    184,   185,    62,   176,   229,   177,   292,   149,   103,   151,
    152,   283,   284,   286,   192,   193,   194,   254,   255,   219,
-   273,   220,   221,   222,   363,   364,   388,   389,   223,   224,
-   225,   338,   339,   368,   238,   239,   199,   262,   263,   226,
-   240,   119,   179,   104,   227
+   273,   220,   221,   222,   364,   365,   391,   392,   223,   224,
+   225,   339,   340,   369,   238,   239,   199,   262,   263,   226,
+   240,   119,   179,   104,   314,   227
 };
 
-static const short yypact[] = {    42,
--32768,-32768,    42,-32768,    -6,-32768,    72,   111,-32768,-32768,
--32768,-32768,    74,-32768,    -1,   162,-32768,-32768,   138,    99,
-    83,    91,   123,    97,   222,   162,-32768,   121,-32768,-32768,
--32768,-32768,-32768,   209,-32768,-32768,   313,-32768,   219,    33,
--32768,-32768,-32768,    96,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,   210,   313,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,    12,   527,-32768,   185,-32768,   -18,-32768,
--32768,-32768,-32768,    49,-32768,   -25,-32768,-32768,-32768,-32768,
--32768,    -3,   145,-32768,   186,-32768,   202,   229,-32768,-32768,
--32768,-32768,-32768,   250,   223,-32768,-32768,-32768,   544,   302,
--32768,-32768,-32768,   194,   311,-32768,-32768,-32768,   158,-32768,
--32768,    42,   158,   214,   102,-32768,-32768,   390,-32768,   158,
--32768,-32768,-32768,-32768,-32768,    87,-32768,   213,   216,   225,
-   297,   254,-32768,    -6,-32768,   124,-32768,-32768,   -57,   231,
-   292,   233,   270,   -12,   149,-32768,   -37,-32768,-32768,   235,
--32768,-32768,   237,-32768,-32768,   339,   544,   335,   335,   152,
--32768,-32768,   232,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   238,   236,
--32768,    90,-32768,   176,-32768,   320,     8,   207,   241,    32,
-   140,   281,-32768,   246,    32,   285,-32768,    63,-32768,    20,
-   251,-32768,-32768,-32768,-32768,-32768,-32768,   -16,-32768,-32768,
-   326,-32768,    42,   140,   252,   255,-32768,   234,   263,   259,
-   -16,-32768,-32768,   264,-32768,-32768,-32768,   124,   362,   335,
-   254,   274,   124,   254,-32768,    18,    18,-32768,-32768,   467,
-   335,   260,   101,-32768,-32768,   251,-32768,   140,   306,   131,
--32768,-32768,   251,   268,   177,   251,   140,   132,   251,-32768,
--32768,   134,-32768,-32768,   272,   164,-32768,-32768,-32768,-32768,
-   267,   275,   242,   277,   278,   279,-32768,   152,-32768,-32768,
--32768,-32768,   140,   140,-32768,   140,   140,   262,   271,-32768,
--32768,   378,-32768,-32768,   307,-32768,-32768,-32768,-32768,   296,
-   296,-32768,   280,-32768,     8,-32768,   283,   251,-32768,    32,
-    18,-32768,   286,   467,   284,-32768,   467,-32768,    10,   280,
--32768,    20,-32768,   282,-32768,-32768,    27,-32768,-32768,-32768,
--32768,-32768,-32768,   287,-32768,-32768,     5,   173,-32768,-32768,
-   288,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,   290,-32768,-32768,-32768,-32768,   293,   303,-32768,
--32768,-32768,   175,-32768,   -37,-32768,   335,   299,-32768,-32768,
-   271,-32768,   140,-32768,-32768,-32768,    27,    71,   299,   335,
--32768,   159,   234,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,    13,-32768,-32768,-32768,-32768,   393,   397,-32768
+static const short yypact[] = {    93,
+-32768,-32768,    93,-32768,    65,-32768,    23,    78,-32768,-32768,
+-32768,-32768,    52,-32768,    68,   224,-32768,-32768,   118,   122,
+    51,    59,   139,   113,   203,   224,-32768,   109,-32768,-32768,
+-32768,-32768,-32768,   201,-32768,-32768,   318,-32768,   220,     9,
+-32768,-32768,-32768,   173,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,   198,   318,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,    12,   532,-32768,   135,-32768,    46,-32768,
+-32768,-32768,-32768,    32,-32768,   -11,-32768,-32768,-32768,-32768,
+-32768,    -6,   149,-32768,   196,-32768,   207,   226,-32768,-32768,
+-32768,-32768,-32768,   223,   214,-32768,-32768,-32768,   549,   305,
+-32768,-32768,-32768,   200,   307,-32768,-32768,-32768,   252,-32768,
+-32768,    93,   252,   211,    30,-32768,-32768,   395,-32768,   252,
+-32768,-32768,-32768,-32768,-32768,   -25,-32768,   208,   209,   216,
+   293,   155,-32768,    65,-32768,   217,-32768,-32768,    -5,   229,
+   292,   231,   268,   -23,    64,-32768,   -55,-32768,-32768,   233,
+-32768,-32768,   234,-32768,-32768,   336,   549,   332,   332,   167,
+-32768,-32768,   230,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   232,   235,
+-32768,    77,-32768,   181,-32768,   321,     8,   280,   241,    39,
+   248,   281,-32768,   242,    39,   282,-32768,    45,-32768,    21,
+   250,-32768,-32768,-32768,-32768,-32768,-32768,    29,-32768,-32768,
+   325,-32768,    93,   248,   246,   253,-32768,   225,   267,   258,
+    29,-32768,-32768,   261,-32768,-32768,-32768,   217,   365,   332,
+   155,   275,   217,   155,-32768,    17,    17,-32768,-32768,   472,
+   332,   260,   112,-32768,-32768,   250,-32768,   248,   306,   146,
+-32768,-32768,   250,   271,   202,   332,   248,   161,   332,-32768,
+-32768,   163,-32768,-32768,   269,   170,-32768,-32768,-32768,-32768,
+   266,   279,    86,   277,   278,   283,-32768,   167,-32768,-32768,
+-32768,-32768,   248,   248,-32768,   248,   248,   272,   273,-32768,
+-32768,   381,-32768,-32768,   304,-32768,-32768,-32768,-32768,   300,
+   300,-32768,   193,-32768,     8,-32768,   284,   250,-32768,    39,
+    17,-32768,   287,   250,-32768,   286,-32768,   250,-32768,    54,
+   193,-32768,    21,-32768,   285,-32768,-32768,    37,-32768,-32768,
+-32768,-32768,-32768,-32768,   288,-32768,-32768,    -4,   178,-32768,
+-32768,   290,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,   291,   472,-32768,   472,-32768,   289,   295,
+-32768,-32768,-32768,   180,-32768,   -55,-32768,   332,   297,-32768,
+-32768,   273,-32768,   248,-32768,-32768,-32768,-32768,-32768,    37,
+    76,   297,   332,-32768,   185,   225,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,    14,-32768,-32768,-32768,-32768,   397,
+   399,-32768
 };
 
 static const short yypgoto[] = {-32768,
--32768,   401,   289,-32768,-32768,   396,-32768,-32768,   389,-32768,
--32768,   363,-32768,-32768,-32768,   344,-32768,   308,-32768,-32768,
-   315,-32768,   355,-32768,-32768,   144,-32768,-32768,   276,-32768,
-   103,   240,   117,-32768,   126,-32768,   127,-32768,   196,-32768,
--32768,-32768,-32768,    40,  -173,   -75,  -218,   -53,-32768,   208,
-  -180,  -109,-32768,   -23,-32768,  -167,-32768,   -33,  -110,-32768,
-    37,-32768,-32768,-32768,  -144,-32768,-32768,   -93,  -151,    11,
-   220,-32768,  -210,-32768,-32768,    65,-32768,-32768,-32768,-32768,
--32768,-32768,    73,    76,  -172,-32768,-32768,-32768,   128,  -103,
-   -72,-32768,     2,-32768,    -7
+-32768,   401,   294,-32768,-32768,   392,-32768,-32768,   388,-32768,
+-32768,   359,-32768,-32768,-32768,   342,-32768,   310,-32768,-32768,
+   311,-32768,   360,-32768,-32768,   148,-32768,-32768,   270,-32768,
+   101,   237,   119,-32768,   125,-32768,   132,-32768,   204,-32768,
+-32768,-32768,-32768,    41,  -173,   -75,  -146,   -52,-32768,   206,
+  -175,   -90,-32768,   -97,-32768,  -231,-32768,     1,  -117,-32768,
+    31,-32768,-32768,-32768,  -137,-32768,-32768,   -61,  -149,   -38,
+   219,-32768,  -195,-32768,-32768,    58,-32768,-32768,-32768,-32768,
+-32768,-32768,    69,    79,  -163,-32768,-32768,-32768,   126,  -113,
+   -79,-32768,     2,-32768,   189,    -7
 };
 
 
-#define	YYLAST		635
+#define	YYLAST		640
 
 
 static const short yytable[] = {    15,
-   196,     5,   197,   237,     5,    15,   117,   150,   218,   118,
-   101,   101,    10,   245,    82,    10,   391,    10,   170,   171,
-   112,   165,    83,    84,   114,   161,   162,    10,   178,    65,
-   102,   102,    72,    85,    10,    86,    79,    87,    64,    10,
-    10,    71,   189,     1,     2,    78,  -251,    88,    65,    67,
-   234,    89,     1,     2,   120,    90,    10,    64,    91,     1,
-     2,   249,   326,   300,   301,   128,    79,   189,   191,    92,
-    10,   170,   171,    63,    93,    78,    94,   336,    95,    10,
-    11,    10,    11,   113,   271,   385,   235,    96,    97,   108,
-   109,   190,    63,   191,   264,   354,   272,     7,   356,   115,
-   129,    72,    98,    10,    19,    79,     1,     2,   236,   242,
-    71,   260,   155,   134,    78,    99,   367,   395,   165,   153,
-   276,   154,   115,   128,   180,   270,   218,   178,   362,   150,
-   178,   245,   166,   242,   247,   345,   161,   162,   352,   386,
-    68,    73,   137,   387,    16,   205,    28,    10,   170,   171,
-   203,   204,   358,   138,   307,    29,   110,   205,   129,    10,
-   170,   171,   391,   315,   260,    10,    30,   261,     1,     2,
-   306,   161,   162,    20,    31,    32,    12,   311,    17,   246,
-    33,    21,   253,   314,   206,   207,   317,   253,   161,   162,
-   265,   156,   269,   334,   232,   157,   206,   207,   233,   346,
-   208,   394,    22,   150,    23,   304,   150,   294,   234,   305,
-   299,   394,   208,    24,   275,   264,   359,    83,    84,   209,
-   378,   383,   293,   180,    34,   210,   180,    36,   189,    37,
-    66,   209,   350,   302,   211,   309,   316,   210,   318,   310,
-   310,   153,   319,   213,   235,   214,   211,   205,    80,    10,
-   170,   171,   195,   212,   191,   213,   120,   214,   167,   168,
-   169,    10,   170,   171,     1,     2,   121,   205,   321,    10,
-   170,   171,   322,   279,   280,   281,   282,   370,   115,   376,
-  -231,   371,   122,   377,  -231,   313,   206,    10,   170,   171,
-     1,     2,   107,   331,   332,   347,   333,   246,   172,   123,
-   124,   325,   253,   125,   130,   131,   206,     1,     2,   161,
-   162,   265,   347,   132,   269,   153,   173,   136,   153,   365,
-    10,   335,   158,     1,     2,   159,   186,   210,   160,   369,
-   279,   280,   281,   282,  -252,    38,   187,   188,   198,   174,
-   200,   201,    10,   228,   241,   231,   248,   210,   256,   230,
-    39,   257,   259,   115,    40,   274,   277,   175,   285,   369,
-    41,    42,    43,   278,   287,   291,    44,   289,   295,   365,
-   303,    45,   390,   308,   312,   324,    46,   320,    47,   323,
-   327,   340,   328,   342,   337,   329,    48,   353,   341,   349,
-   355,   372,   398,   366,   361,    49,   399,    50,   373,   374,
-   139,   140,    51,     6,    52,    53,    54,   141,    18,   375,
-   380,    85,    38,    86,    35,    87,   142,   111,    81,   105,
-   135,   330,   181,   133,   360,    88,   351,   344,   298,    89,
-   348,   396,   202,    90,   258,   290,    91,    41,    42,    43,
-   288,   384,   379,   381,     0,   143,   357,    92,    45,     0,
-     0,     0,    93,    46,    94,    47,    95,     0,     0,     0,
-     0,     0,     0,    48,     0,    96,    97,   144,   145,     0,
-     0,     0,    49,     0,    50,     0,   146,   139,   140,    51,
-    98,    52,    53,    54,   141,     0,     0,     0,    85,    38,
-    86,     0,    87,   142,     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,   143,     0,    92,    45,     0,     0,     0,    93,
-    46,    94,    47,    95,     0,     0,     0,    83,    84,     0,
-    48,     0,    96,    97,   144,   145,     0,     0,    85,    49,
-    86,    50,    87,     0,     1,     2,    51,    98,    52,    53,
-    54,     0,    88,     0,     0,    85,    89,    86,     0,    87,
-    90,     0,     0,    91,     0,     0,     0,     0,     0,    88,
-     0,     0,     0,    89,    92,     0,     0,    90,     0,    93,
-    91,    94,     0,    95,     0,     0,     0,     0,     0,     0,
-     0,    92,    96,    97,     0,     0,    93,     0,    94,     0,
-    95,     0,     0,     0,     0,     0,     0,    98,     0,    96,
-    97,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,    98
+   150,     5,   118,    10,     5,    15,   117,   196,   237,   197,
+   218,   101,   101,   245,    82,    10,    10,   394,   178,     1,
+     2,   114,    83,    84,   189,    67,   161,   162,    10,    65,
+    10,    11,    72,    85,   112,    86,    79,    87,    64,    10,
+   165,    71,     1,     2,    10,    78,    10,    88,    65,   234,
+   191,    89,    10,   170,   171,    90,   189,    64,    91,    10,
+    11,    10,   170,   171,   102,   102,    79,    63,   249,    92,
+   137,   346,   300,   301,    93,    78,    94,   327,    95,   156,
+   190,   138,   191,   157,   264,   235,    63,    96,    97,   359,
+   388,   205,   337,    10,   170,   171,   115,   113,  -251,   128,
+   129,    72,    98,     1,     2,    79,   120,   368,   236,   242,
+    71,    16,   155,   134,    78,    99,    68,   178,   398,   153,
+   178,   154,   150,   115,   180,   270,    28,    12,   218,   271,
+   206,   245,   166,   294,    30,   247,   299,   165,   363,   110,
+   242,   272,    31,   189,   389,   326,   260,   353,   390,   261,
+   203,   204,   276,   108,   109,   260,    17,   128,   129,   167,
+   168,   169,    10,   170,   171,     1,     2,   195,     7,   191,
+   306,   210,   205,    19,    10,   170,   171,   311,    29,   246,
+    10,   232,   253,     1,     2,   233,   307,   253,   394,   347,
+   265,    32,   269,   161,   162,   316,    33,   161,   162,   172,
+    10,   170,   171,     1,     2,    34,   264,   360,   375,   397,
+   376,   206,   207,   234,   275,    36,   304,   173,    73,   397,
+   305,    37,   293,   180,   386,   335,   180,   208,   381,   161,
+   162,    66,   351,   302,   355,    20,    80,   150,   357,   150,
+   174,   153,   107,    21,   332,   333,   209,   334,   315,   235,
+   309,   315,   210,   205,   310,    10,   170,   171,   175,    10,
+   120,   211,     1,     2,    22,   317,    23,   319,   212,   310,
+   213,   320,   214,   124,   322,    24,   121,   205,   323,    10,
+   170,   171,   371,   115,   379,  -231,   372,   122,   380,  -231,
+    83,    84,   206,   207,   125,   348,   123,   246,   279,   280,
+   281,   282,   253,     1,     2,   161,   162,   130,   208,   132,
+   313,   131,   265,   348,   136,   269,   206,   158,   159,   160,
+   366,   279,   280,   281,   282,    10,   186,   209,     1,     2,
+   370,   336,  -252,   210,   187,   188,   198,   200,   201,    10,
+    38,   228,   211,   230,   231,   241,   248,   257,   256,   259,
+   277,   213,   115,   214,   274,    39,   153,   210,   153,    40,
+   370,   278,   285,   287,   289,    41,    42,    43,   291,   295,
+   303,    44,   366,   308,   321,   393,    45,   312,   324,   325,
+   328,    46,   329,    47,   341,   342,   338,   343,   354,   330,
+   350,    48,   356,   373,   367,   377,   401,   362,   402,   374,
+    49,   378,    50,     6,    18,   139,   140,    51,   383,    52,
+    53,    54,   141,    35,    81,   111,    85,    38,    86,   133,
+    87,   142,   135,   361,   105,   331,   202,   181,   352,   349,
+    88,   258,   345,   290,    89,   399,   298,   387,    90,   288,
+   384,    91,    41,    42,    43,   358,   382,   318,     0,     0,
+   143,     0,    92,    45,     0,     0,     0,    93,    46,    94,
+    47,    95,     0,     0,     0,     0,     0,     0,    48,     0,
+    96,    97,   144,   145,     0,     0,     0,    49,     0,    50,
+     0,   146,   139,   140,    51,    98,    52,    53,    54,   141,
+     0,     0,     0,    85,    38,    86,     0,    87,   142,     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,   143,     0,    92,
+    45,     0,     0,     0,    93,    46,    94,    47,    95,     0,
+     0,     0,    83,    84,     0,    48,     0,    96,    97,   144,
+   145,     0,     0,    85,    49,    86,    50,    87,     0,     1,
+     2,    51,    98,    52,    53,    54,     0,    88,     0,     0,
+    85,    89,    86,     0,    87,    90,     0,     0,    91,     0,
+     0,     0,     0,     0,    88,     0,     0,     0,    89,    92,
+     0,     0,    90,     0,    93,    91,    94,     0,    95,     0,
+     0,     0,     0,     0,     0,     0,    92,    96,    97,     0,
+     0,    93,     0,    94,     0,    95,     0,     0,     0,     0,
+     0,     0,    98,     0,    96,    97,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,    98
 };
 
 static const short yycheck[] = {     7,
-   145,     0,   147,   184,     3,    13,    82,   118,   160,    82,
-    64,    65,     8,   187,     3,     8,     4,     8,     9,    10,
-    46,   131,    11,    12,    28,    13,    14,     8,   132,    37,
-    64,    65,    40,    22,     8,    24,    44,    26,    37,     8,
-     8,    40,    80,    11,    12,    44,   104,    36,    56,    17,
-    33,    40,    11,    12,   112,    44,     8,    56,    47,    11,
-    12,    30,   273,   236,   237,    99,    74,    80,   106,    58,
-     8,     9,    10,    37,    63,    74,    65,   288,    67,     8,
-     9,     8,     9,   109,   101,    15,    69,    76,    77,   108,
-   109,   104,    56,   106,   198,   314,   113,   104,   317,   103,
-    99,   109,    91,     8,   106,   113,    11,    12,   184,   102,
-   109,   102,   120,   112,   113,   104,   112,   105,   228,   118,
-   214,   120,   103,   157,   132,   201,   278,   231,   102,   240,
-   234,   305,   131,   102,   188,   303,    13,    14,   311,    69,
-   108,    46,    41,    73,    34,     6,     9,     8,     9,    10,
-   158,   159,   320,    52,   248,    57,   108,     6,   157,     8,
-     9,    10,     4,   257,   102,     8,    84,   105,    11,    12,
-   246,    13,    14,    12,    84,    53,   105,   253,   105,   187,
-    84,    20,   190,   256,    45,    46,   259,   195,    13,    14,
-   198,   105,   200,   287,   105,   109,    45,    46,   109,   303,
-    61,   382,    41,   314,    43,   105,   317,   231,    33,   109,
-   234,   392,    61,    52,   213,   319,   320,    11,    12,    80,
-   365,   373,   230,   231,     3,    86,   234,   107,    80,    21,
-    12,    80,   308,   241,    95,   105,   105,    86,   105,   109,
-   109,   240,   109,   104,    69,   106,    95,     6,    39,     8,
-     9,    10,   104,   102,   106,   104,   112,   106,     5,     6,
-     7,     8,     9,    10,    11,    12,    81,     6,   105,     8,
-     9,    10,   109,    97,    98,    99,   100,   105,   103,   105,
-   105,   109,    81,   109,   109,   109,    45,     8,     9,    10,
-    11,    12,   108,   283,   284,   303,   286,   305,    45,    71,
-    51,    60,   310,    81,     3,   112,    45,    11,    12,    13,
-    14,   319,   320,     3,   322,   314,    63,   104,   317,   327,
-     8,    60,   110,    11,    12,   110,    35,    86,   104,   337,
-    97,    98,    99,   100,   104,    23,   104,    68,   104,    86,
-   104,     3,     8,   112,    25,   110,   106,    86,    68,   112,
-    38,   106,    68,   103,    42,    30,   105,   104,    96,   367,
-    48,    49,    50,   109,   106,     4,    54,   104,    95,   377,
-   111,    59,   380,    68,   107,   101,    64,   106,    66,   113,
-   104,     4,   105,    88,   114,   107,    74,   102,    82,   107,
-   107,   104,     0,   107,   113,    83,     0,    85,   109,   107,
-    11,    12,    90,     3,    92,    93,    94,    18,    13,   107,
-   112,    22,    23,    24,    26,    26,    27,    74,    56,    65,
-   113,   278,   134,   109,   322,    36,   310,   301,   233,    40,
-   305,   392,   157,    44,   195,   228,    47,    48,    49,    50,
-   221,   377,   367,   371,    -1,    56,   319,    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,    11,    12,    -1,
-    74,    -1,    76,    77,    78,    79,    -1,    -1,    22,    83,
-    24,    85,    26,    -1,    11,    12,    90,    91,    92,    93,
-    94,    -1,    36,    -1,    -1,    22,    40,    24,    -1,    26,
-    44,    -1,    -1,    47,    -1,    -1,    -1,    -1,    -1,    36,
-    -1,    -1,    -1,    40,    58,    -1,    -1,    44,    -1,    63,
-    47,    65,    -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    58,    76,    77,    -1,    -1,    63,    -1,    65,    -1,
-    67,    -1,    -1,    -1,    -1,    -1,    -1,    91,    -1,    76,
-    77,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    91
+   118,     0,    82,     8,     3,    13,    82,   145,   184,   147,
+   160,    64,    65,   187,     3,     8,     8,     4,   132,    11,
+    12,    28,    11,    12,    80,    17,    13,    14,     8,    37,
+     8,     9,    40,    22,    46,    24,    44,    26,    37,     8,
+   131,    40,    11,    12,     8,    44,     8,    36,    56,    33,
+   106,    40,     8,     9,    10,    44,    80,    56,    47,     8,
+     9,     8,     9,    10,    64,    65,    74,    37,    30,    58,
+    41,   303,   236,   237,    63,    74,    65,   273,    67,   105,
+   104,    52,   106,   109,   198,    69,    56,    76,    77,   321,
+    15,     6,   288,     8,     9,    10,   103,   109,   104,    99,
+    99,   109,    91,    11,    12,   113,   112,   112,   184,   102,
+   109,    34,   120,   112,   113,   104,   108,   231,   105,   118,
+   234,   120,   240,   103,   132,   201,     9,   105,   278,   101,
+    45,   305,   131,   231,    84,   188,   234,   228,   102,   108,
+   102,   113,    84,    80,    69,    60,   102,   311,    73,   105,
+   158,   159,   214,   108,   109,   102,   105,   157,   157,     5,
+     6,     7,     8,     9,    10,    11,    12,   104,   104,   106,
+   246,    86,     6,   106,     8,     9,    10,   253,    57,   187,
+     8,   105,   190,    11,    12,   109,   248,   195,     4,   303,
+   198,    53,   200,    13,    14,   257,    84,    13,    14,    45,
+     8,     9,    10,    11,    12,     3,   320,   321,   355,   385,
+   357,    45,    46,    33,   213,   107,   105,    63,    46,   395,
+   109,    21,   230,   231,   374,   287,   234,    61,   366,    13,
+    14,    12,   308,   241,   314,    12,    39,   355,   318,   357,
+    86,   240,   108,    20,   283,   284,    80,   286,   256,    69,
+   105,   259,    86,     6,   109,     8,     9,    10,   104,     8,
+   112,    95,    11,    12,    41,   105,    43,   105,   102,   109,
+   104,   109,   106,    51,   105,    52,    81,     6,   109,     8,
+     9,    10,   105,   103,   105,   105,   109,    81,   109,   109,
+    11,    12,    45,    46,    81,   303,    71,   305,    97,    98,
+    99,   100,   310,    11,    12,    13,    14,     3,    61,     3,
+   109,   112,   320,   321,   104,   323,    45,   110,   110,   104,
+   328,    97,    98,    99,   100,     8,    35,    80,    11,    12,
+   338,    60,   104,    86,   104,    68,   104,   104,     3,     8,
+    23,   112,    95,   112,   110,    25,   106,   106,    68,    68,
+   105,   104,   103,   106,    30,    38,   355,    86,   357,    42,
+   368,   109,    96,   106,   104,    48,    49,    50,     4,    95,
+   111,    54,   380,    68,   106,   383,    59,   107,   113,   101,
+   104,    64,   105,    66,     4,    82,   114,    88,   102,   107,
+   107,    74,   107,   104,   107,   107,     0,   113,     0,   109,
+    83,   107,    85,     3,    13,    11,    12,    90,   112,    92,
+    93,    94,    18,    26,    56,    74,    22,    23,    24,   109,
+    26,    27,   113,   323,    65,   278,   157,   134,   310,   305,
+    36,   195,   301,   228,    40,   395,   233,   380,    44,   221,
+   372,    47,    48,    49,    50,   320,   368,   259,    -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,    11,    12,    -1,    74,    -1,    76,    77,    78,
+    79,    -1,    -1,    22,    83,    24,    85,    26,    -1,    11,
+    12,    90,    91,    92,    93,    94,    -1,    36,    -1,    -1,
+    22,    40,    24,    -1,    26,    44,    -1,    -1,    47,    -1,
+    -1,    -1,    -1,    -1,    36,    -1,    -1,    -1,    40,    58,
+    -1,    -1,    44,    -1,    63,    47,    65,    -1,    67,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    58,    76,    77,    -1,
+    -1,    63,    -1,    65,    -1,    67,    -1,    -1,    -1,    -1,
+    -1,    -1,    91,    -1,    76,    77,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    91
 };
 /* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
 #line 3 "/usr/share/bison.simple"
@@ -1286,13 +1290,13 @@
   switch (yyn) {
 
 case 1:
-#line 300 "asn1p_y.y"
+#line 301 "asn1p_y.y"
 {
 		*(void **)param = yyvsp[0].a_grammar;
 	;
     break;}
 case 2:
-#line 306 "asn1p_y.y"
+#line 307 "asn1p_y.y"
 {
 		yyval.a_grammar = asn1p_new();
 		checkmem(yyval.a_grammar);
@@ -1300,14 +1304,14 @@
 	;
     break;}
 case 3:
-#line 311 "asn1p_y.y"
+#line 312 "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 332 "asn1p_y.y"
+#line 333 "asn1p_y.y"
 {
 
 		if(yyvsp[-1].a_module) {
@@ -1324,27 +1328,27 @@
 	;
     break;}
 case 5:
-#line 353 "asn1p_y.y"
+#line 354 "asn1p_y.y"
 { yyval.a_oid = 0; ;
     break;}
 case 6:
-#line 354 "asn1p_y.y"
+#line 355 "asn1p_y.y"
 { yyval.a_oid = yyvsp[0].a_oid; ;
     break;}
 case 7:
-#line 358 "asn1p_y.y"
+#line 359 "asn1p_y.y"
 {
 		yyval.a_oid = yyvsp[-1].a_oid;
 	;
     break;}
 case 8:
-#line 361 "asn1p_y.y"
+#line 362 "asn1p_y.y"
 {
 		yyval.a_oid = 0;
 	;
     break;}
 case 9:
-#line 367 "asn1p_y.y"
+#line 368 "asn1p_y.y"
 {
 		yyval.a_oid = asn1p_oid_new();
 		asn1p_oid_add_arc(yyval.a_oid, &yyvsp[0].a_oid_arc);
@@ -1353,7 +1357,7 @@
 	;
     break;}
 case 10:
-#line 373 "asn1p_y.y"
+#line 374 "asn1p_y.y"
 {
 		yyval.a_oid = yyvsp[-1].a_oid;
 		asn1p_oid_add_arc(yyval.a_oid, &yyvsp[0].a_oid_arc);
@@ -1362,74 +1366,74 @@
 	;
     break;}
 case 11:
-#line 382 "asn1p_y.y"
+#line 383 "asn1p_y.y"
 {					/* iso */
 		yyval.a_oid_arc.name = yyvsp[0].tv_str;
 		yyval.a_oid_arc.number = -1;
 	;
     break;}
 case 12:
-#line 386 "asn1p_y.y"
+#line 387 "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 390 "asn1p_y.y"
+#line 391 "asn1p_y.y"
 {					/* 1 */
 		yyval.a_oid_arc.name = 0;
 		yyval.a_oid_arc.number = yyvsp[0].a_int;
 	;
     break;}
 case 14:
-#line 400 "asn1p_y.y"
+#line 401 "asn1p_y.y"
 { yyval.a_module_flags = MSF_NOFLAGS; ;
     break;}
 case 15:
-#line 401 "asn1p_y.y"
+#line 402 "asn1p_y.y"
 {
 		yyval.a_module_flags = yyvsp[0].a_module_flags;
 	;
     break;}
 case 16:
-#line 410 "asn1p_y.y"
+#line 411 "asn1p_y.y"
 {
 		yyval.a_module_flags = yyvsp[0].a_module_flags;
 	;
     break;}
 case 17:
-#line 413 "asn1p_y.y"
+#line 414 "asn1p_y.y"
 {
 		yyval.a_module_flags = yyvsp[-1].a_module_flags | yyvsp[0].a_module_flags;
 	;
     break;}
 case 18:
-#line 422 "asn1p_y.y"
+#line 423 "asn1p_y.y"
 {
 		yyval.a_module_flags = MSF_EXPLICIT_TAGS;
 	;
     break;}
 case 19:
-#line 425 "asn1p_y.y"
+#line 426 "asn1p_y.y"
 {
 		yyval.a_module_flags = MSF_IMPLICIT_TAGS;
 	;
     break;}
 case 20:
-#line 428 "asn1p_y.y"
+#line 429 "asn1p_y.y"
 {
 		yyval.a_module_flags = MSF_AUTOMATIC_TAGS;
 	;
     break;}
 case 21:
-#line 431 "asn1p_y.y"
+#line 432 "asn1p_y.y"
 {
 		yyval.a_module_flags = MSF_EXTENSIBILITY_IMPLIED;
 	;
     break;}
 case 22:
-#line 435 "asn1p_y.y"
+#line 436 "asn1p_y.y"
 {
 		/* X.680Amd1 specifies TAG and XER */
 		if(strcmp(yyvsp[-1].tv_str, "TAG") == 0) {
@@ -1447,23 +1451,23 @@
 	;
     break;}
 case 23:
-#line 456 "asn1p_y.y"
+#line 457 "asn1p_y.y"
 { yyval.a_module = 0; ;
     break;}
 case 24:
-#line 457 "asn1p_y.y"
+#line 458 "asn1p_y.y"
 {
 		yyval.a_module = yyvsp[0].a_module;
 	;
     break;}
 case 25:
-#line 466 "asn1p_y.y"
+#line 467 "asn1p_y.y"
 {
 		yyval.a_module = yyvsp[0].a_module;
 	;
     break;}
 case 26:
-#line 469 "asn1p_y.y"
+#line 470 "asn1p_y.y"
 {
 		yyval.a_module = yyvsp[-1].a_module;
 
@@ -1493,13 +1497,13 @@
 	;
     break;}
 case 27:
-#line 502 "asn1p_y.y"
+#line 503 "asn1p_y.y"
 {
 		yyval.a_module = yyvsp[0].a_module;
 	;
     break;}
 case 28:
-#line 505 "asn1p_y.y"
+#line 506 "asn1p_y.y"
 {
 		yyval.a_module = asn1p_module_new();
 		checkmem(yyval.a_module);
@@ -1511,7 +1515,7 @@
 	;
     break;}
 case 29:
-#line 514 "asn1p_y.y"
+#line 515 "asn1p_y.y"
 {
 		yyval.a_module = asn1p_module_new();
 		checkmem(yyval.a_module);
@@ -1521,7 +1525,7 @@
 	;
     break;}
 case 30:
-#line 521 "asn1p_y.y"
+#line 522 "asn1p_y.y"
 {
 		yyval.a_module = asn1p_module_new();
 		checkmem(yyval.a_module);
@@ -1531,7 +1535,7 @@
 	;
     break;}
 case 31:
-#line 534 "asn1p_y.y"
+#line 535 "asn1p_y.y"
 {
 		yyval.a_module = asn1p_module_new();
 		checkmem(yyval.a_module);
@@ -1541,11 +1545,11 @@
 	;
     break;}
 case 32:
-#line 542 "asn1p_y.y"
+#line 543 "asn1p_y.y"
 { asn1p_lexer_hack_push_encoding_control(); ;
     break;}
 case 33:
-#line 543 "asn1p_y.y"
+#line 544 "asn1p_y.y"
 {
 		fprintf(stderr,
 			"WARNING: ENCODING-CONTROL %s "
@@ -1556,7 +1560,7 @@
 	;
     break;}
 case 34:
-#line 555 "asn1p_y.y"
+#line 556 "asn1p_y.y"
 {
 		return yyerror(
 			"Attempt to redefine a standard basic type, "
@@ -1565,19 +1569,19 @@
 	;
     break;}
 case 35:
-#line 569 "asn1p_y.y"
+#line 570 "asn1p_y.y"
 {
 		yyval.a_module = yyvsp[-1].a_module;
 	;
     break;}
 case 36:
-#line 575 "asn1p_y.y"
+#line 576 "asn1p_y.y"
 {
 		return yyerror("Empty IMPORTS list");
 	;
     break;}
 case 37:
-#line 581 "asn1p_y.y"
+#line 582 "asn1p_y.y"
 {
 		yyval.a_module = asn1p_module_new();
 		checkmem(yyval.a_module);
@@ -1585,14 +1589,14 @@
 	;
     break;}
 case 38:
-#line 586 "asn1p_y.y"
+#line 587 "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 593 "asn1p_y.y"
+#line 594 "asn1p_y.y"
 {
 		yyval.a_xports = yyvsp[-3].a_xports;
 		yyval.a_xports->from = yyvsp[-1].tv_str;
@@ -1601,7 +1605,7 @@
 	;
     break;}
 case 40:
-#line 602 "asn1p_y.y"
+#line 603 "asn1p_y.y"
 {
 		yyval.a_xports = asn1p_xports_new();
 		checkmem(yyval.a_xports);
@@ -1609,14 +1613,14 @@
 	;
     break;}
 case 41:
-#line 607 "asn1p_y.y"
+#line 608 "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 614 "asn1p_y.y"
+#line 615 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1625,7 +1629,7 @@
 	;
     break;}
 case 43:
-#line 620 "asn1p_y.y"
+#line 621 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1634,19 +1638,19 @@
 	;
     break;}
 case 44:
-#line 629 "asn1p_y.y"
+#line 630 "asn1p_y.y"
 {
 		yyval.a_xports = yyvsp[-1].a_xports;
 	;
     break;}
 case 45:
-#line 632 "asn1p_y.y"
+#line 633 "asn1p_y.y"
 {
 		yyval.a_xports = 0;
 	;
     break;}
 case 46:
-#line 635 "asn1p_y.y"
+#line 636 "asn1p_y.y"
 {
 		/* Empty EXPORTS clause effectively prohibits export. */
 		yyval.a_xports = asn1p_xports_new();
@@ -1654,7 +1658,7 @@
 	;
     break;}
 case 47:
-#line 643 "asn1p_y.y"
+#line 644 "asn1p_y.y"
 {
 		yyval.a_xports = asn1p_xports_new();
 		assert(yyval.a_xports);
@@ -1662,14 +1666,14 @@
 	;
     break;}
 case 48:
-#line 648 "asn1p_y.y"
+#line 649 "asn1p_y.y"
 {
 		yyval.a_xports = yyvsp[-2].a_xports;
 		TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
 	;
     break;}
 case 49:
-#line 655 "asn1p_y.y"
+#line 656 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1678,7 +1682,7 @@
 	;
     break;}
 case 50:
-#line 661 "asn1p_y.y"
+#line 662 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1687,7 +1691,7 @@
 	;
     break;}
 case 51:
-#line 671 "asn1p_y.y"
+#line 672 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-4].a_expr;
 		assert(yyval.a_expr->Identifier == 0);
@@ -1697,7 +1701,7 @@
 	;
     break;}
 case 52:
-#line 681 "asn1p_y.y"
+#line 682 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1707,7 +1711,7 @@
 	;
     break;}
 case 53:
-#line 688 "asn1p_y.y"
+#line 689 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1716,36 +1720,36 @@
 	;
     break;}
 case 54:
-#line 697 "asn1p_y.y"
+#line 698 "asn1p_y.y"
 { ;
     break;}
 case 55:
-#line 698 "asn1p_y.y"
+#line 699 "asn1p_y.y"
 {
 	;
     break;}
 case 56:
-#line 709 "asn1p_y.y"
+#line 710 "asn1p_y.y"
 {
 	;
     break;}
 case 57:
-#line 711 "asn1p_y.y"
+#line 712 "asn1p_y.y"
 {
 	;
     break;}
 case 58:
-#line 716 "asn1p_y.y"
+#line 717 "asn1p_y.y"
 {
 	;
     break;}
 case 59:
-#line 718 "asn1p_y.y"
+#line 719 "asn1p_y.y"
 {
 	;
     break;}
 case 60:
-#line 734 "asn1p_y.y"
+#line 735 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1756,7 +1760,7 @@
 	;
     break;}
 case 61:
-#line 742 "asn1p_y.y"
+#line 743 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 		yyval.a_expr->Identifier = yyvsp[-2].tv_str;
@@ -1765,7 +1769,7 @@
 	;
     break;}
 case 62:
-#line 748 "asn1p_y.y"
+#line 749 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 		yyval.a_expr->Identifier = yyvsp[-2].tv_str;
@@ -1774,7 +1778,7 @@
 	;
     break;}
 case 63:
-#line 764 "asn1p_y.y"
+#line 765 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 		assert(yyval.a_expr->Identifier == 0);
@@ -1784,7 +1788,7 @@
 	;
     break;}
 case 64:
-#line 774 "asn1p_y.y"
+#line 775 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_plist = asn1p_paramlist_new(yylineno);
@@ -1796,7 +1800,7 @@
 	;
     break;}
 case 65:
-#line 783 "asn1p_y.y"
+#line 784 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_plist = yyvsp[-2].a_plist;
@@ -1807,14 +1811,14 @@
 	;
     break;}
 case 66:
-#line 794 "asn1p_y.y"
+#line 795 "asn1p_y.y"
 {
 		yyval.a_parg.governor = NULL;
 		yyval.a_parg.argument = yyvsp[0].tv_str;
 	;
     break;}
 case 67:
-#line 798 "asn1p_y.y"
+#line 799 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_parg.governor = asn1p_ref_new(yylineno);
@@ -1824,7 +1828,7 @@
 	;
     break;}
 case 68:
-#line 805 "asn1p_y.y"
+#line 806 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_parg.governor = asn1p_ref_new(yylineno);
@@ -1835,7 +1839,7 @@
 	;
     break;}
 case 69:
-#line 816 "asn1p_y.y"
+#line 817 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1843,20 +1847,20 @@
 	;
     break;}
 case 70:
-#line 821 "asn1p_y.y"
+#line 822 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	;
     break;}
 case 71:
-#line 828 "asn1p_y.y"
+#line 829 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 	;
     break;}
 case 72:
-#line 831 "asn1p_y.y"
+#line 832 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1866,7 +1870,7 @@
 	;
     break;}
 case 73:
-#line 844 "asn1p_y.y"
+#line 845 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1874,14 +1878,14 @@
 	;
     break;}
 case 74:
-#line 849 "asn1p_y.y"
+#line 850 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	;
     break;}
 case 75:
-#line 856 "asn1p_y.y"
+#line 857 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-1].a_expr;
 		assert(yyval.a_expr->Identifier == 0);
@@ -1890,7 +1894,7 @@
 	;
     break;}
 case 76:
-#line 862 "asn1p_y.y"
+#line 863 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1900,13 +1904,13 @@
 	;
     break;}
 case 77:
-#line 869 "asn1p_y.y"
+#line 870 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 	;
     break;}
 case 78:
-#line 875 "asn1p_y.y"
+#line 876 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1914,14 +1918,14 @@
 	;
     break;}
 case 79:
-#line 880 "asn1p_y.y"
+#line 881 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	;
     break;}
 case 80:
-#line 887 "asn1p_y.y"
+#line 888 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 		assert(yyval.a_expr->Identifier == 0);
@@ -1929,13 +1933,13 @@
 	;
     break;}
 case 81:
-#line 892 "asn1p_y.y"
+#line 893 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 	;
     break;}
 case 82:
-#line 898 "asn1p_y.y"
+#line 899 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		checkmem(yyval.a_expr);
@@ -1945,15 +1949,15 @@
 	;
     break;}
 case 83:
-#line 908 "asn1p_y.y"
+#line 909 "asn1p_y.y"
 { yyval.a_int = 0; ;
     break;}
 case 84:
-#line 909 "asn1p_y.y"
+#line 910 "asn1p_y.y"
 { yyval.a_int = 1; ;
     break;}
 case 85:
-#line 913 "asn1p_y.y"
+#line 914 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1963,14 +1967,14 @@
 	;
     break;}
 case 86:
-#line 920 "asn1p_y.y"
+#line 921 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	;
     break;}
 case 87:
-#line 927 "asn1p_y.y"
+#line 928 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1981,7 +1985,7 @@
 	;
     break;}
 case 88:
-#line 935 "asn1p_y.y"
+#line 936 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		yyval.a_expr->Identifier = yyvsp[-3].a_refcomp.name;
@@ -1990,7 +1994,7 @@
 	;
     break;}
 case 89:
-#line 941 "asn1p_y.y"
+#line 942 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_expr = asn1p_expr_new(yylineno);
@@ -2008,47 +2012,47 @@
 	;
     break;}
 case 90:
-#line 959 "asn1p_y.y"
+#line 960 "asn1p_y.y"
 { yyval.a_wsynt = 0; ;
     break;}
 case 91:
-#line 960 "asn1p_y.y"
+#line 961 "asn1p_y.y"
 {
 		yyval.a_wsynt = yyvsp[0].a_wsynt;
 	;
     break;}
 case 92:
-#line 967 "asn1p_y.y"
+#line 968 "asn1p_y.y"
 { asn1p_lexer_hack_enable_with_syntax(); ;
     break;}
 case 93:
-#line 969 "asn1p_y.y"
+#line 970 "asn1p_y.y"
 {
 		yyval.a_wsynt = yyvsp[-1].a_wsynt;
 	;
     break;}
 case 94:
-#line 975 "asn1p_y.y"
+#line 976 "asn1p_y.y"
 {
 		yyval.a_wsynt = asn1p_wsyntx_new();
 		TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next);
 	;
     break;}
 case 95:
-#line 979 "asn1p_y.y"
+#line 980 "asn1p_y.y"
 {
 		yyval.a_wsynt = yyvsp[-1].a_wsynt;
 		TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next);
 	;
     break;}
 case 96:
-#line 986 "asn1p_y.y"
+#line 987 "asn1p_y.y"
 {
 		yyval.a_wchunk = asn1p_wsyntx_chunk_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
 	;
     break;}
 case 97:
-#line 989 "asn1p_y.y"
+#line 990 "asn1p_y.y"
 {
 		asn1p_ref_t *ref;
 		int ret;
@@ -2060,7 +2064,7 @@
 	;
     break;}
 case 98:
-#line 1001 "asn1p_y.y"
+#line 1002 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2071,7 +2075,7 @@
 	;
     break;}
 case 99:
-#line 1009 "asn1p_y.y"
+#line 1010 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2083,7 +2087,7 @@
 	;
     break;}
 case 100:
-#line 1018 "asn1p_y.y"
+#line 1019 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2095,7 +2099,7 @@
 	;
     break;}
 case 101:
-#line 1030 "asn1p_y.y"
+#line 1031 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-1].a_expr;
 		yyval.a_expr->tag = yyvsp[-2].a_tag;
@@ -2117,13 +2121,13 @@
 	;
     break;}
 case 102:
-#line 1052 "asn1p_y.y"
+#line 1053 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 	;
     break;}
 case 103:
-#line 1055 "asn1p_y.y"
+#line 1056 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2132,7 +2136,7 @@
 	;
     break;}
 case 104:
-#line 1061 "asn1p_y.y"
+#line 1062 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-1].a_expr;
 		assert(yyval.a_expr->expr_type == A1TC_INVALID);
@@ -2141,7 +2145,7 @@
 	;
     break;}
 case 105:
-#line 1067 "asn1p_y.y"
+#line 1068 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-1].a_expr;
 		assert(yyval.a_expr->expr_type == A1TC_INVALID);
@@ -2150,7 +2154,7 @@
 	;
     break;}
 case 106:
-#line 1073 "asn1p_y.y"
+#line 1074 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-1].a_expr;
 		assert(yyval.a_expr->expr_type == A1TC_INVALID);
@@ -2159,31 +2163,33 @@
 	;
     break;}
 case 107:
-#line 1079 "asn1p_y.y"
+#line 1080 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
-		yyval.a_expr->constraints = yyvsp[-3].a_constr;
+		yyval.a_expr->constraints = yyvsp[-4].a_constr;
 		yyval.a_expr->expr_type = ASN_CONSTR_SEQUENCE_OF;
 		yyval.a_expr->meta_type = AMT_TYPE;
+		yyvsp[0].a_expr->Identifier = yyvsp[-2].tv_str;
 		yyvsp[0].a_expr->tag = yyvsp[-1].a_tag;
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	;
     break;}
 case 108:
-#line 1088 "asn1p_y.y"
+#line 1090 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
-		yyval.a_expr->constraints = yyvsp[-3].a_constr;
+		yyval.a_expr->constraints = yyvsp[-4].a_constr;
 		yyval.a_expr->expr_type = ASN_CONSTR_SET_OF;
 		yyval.a_expr->meta_type = AMT_TYPE;
+		yyvsp[0].a_expr->Identifier = yyvsp[-2].tv_str;
 		yyvsp[0].a_expr->tag = yyvsp[-1].a_tag;
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	;
     break;}
 case 109:
-#line 1097 "asn1p_y.y"
+#line 1100 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2192,7 +2198,7 @@
 	;
     break;}
 case 110:
-#line 1103 "asn1p_y.y"
+#line 1106 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_expr = asn1p_expr_new(yylineno);
@@ -2206,7 +2212,7 @@
 	;
     break;}
 case 111:
-#line 1117 "asn1p_y.y"
+#line 1120 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_expr = yyvsp[-1].a_expr;
@@ -2223,7 +2229,7 @@
 	;
     break;}
 case 112:
-#line 1141 "asn1p_y.y"
+#line 1144 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2233,7 +2239,7 @@
 	;
     break;}
 case 113:
-#line 1148 "asn1p_y.y"
+#line 1151 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2243,7 +2249,7 @@
 	;
     break;}
 case 114:
-#line 1163 "asn1p_y.y"
+#line 1166 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2254,7 +2260,7 @@
 	;
     break;}
 case 115:
-#line 1171 "asn1p_y.y"
+#line 1174 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2267,7 +2273,7 @@
 	;
     break;}
 case 116:
-#line 1181 "asn1p_y.y"
+#line 1184 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2280,7 +2286,7 @@
 	;
     break;}
 case 117:
-#line 1191 "asn1p_y.y"
+#line 1194 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2293,7 +2299,7 @@
 	;
     break;}
 case 118:
-#line 1201 "asn1p_y.y"
+#line 1204 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2304,7 +2310,7 @@
 	;
     break;}
 case 119:
-#line 1209 "asn1p_y.y"
+#line 1212 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = yyvsp[0].a_ref;
@@ -2326,7 +2332,7 @@
 	;
     break;}
 case 120:
-#line 1231 "asn1p_y.y"
+#line 1234 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2337,7 +2343,7 @@
 	;
     break;}
 case 121:
-#line 1239 "asn1p_y.y"
+#line 1242 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = yyvsp[-2].a_ref;
@@ -2347,21 +2353,21 @@
 	;
     break;}
 case 124:
-#line 1253 "asn1p_y.y"
+#line 1256 "asn1p_y.y"
 {
 		yyval.a_refcomp.lex_type = RLT_AmpUppercase;
 		yyval.a_refcomp.name = yyvsp[0].tv_str;
 	;
     break;}
 case 125:
-#line 1258 "asn1p_y.y"
+#line 1261 "asn1p_y.y"
 {
 		yyval.a_refcomp.lex_type = RLT_Amplowercase;
 		yyval.a_refcomp.name = yyvsp[0].tv_str;
 	;
     break;}
 case 126:
-#line 1271 "asn1p_y.y"
+#line 1274 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		assert(yyval.a_expr->Identifier == NULL);
@@ -2371,7 +2377,7 @@
 	;
     break;}
 case 127:
-#line 1281 "asn1p_y.y"
+#line 1284 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(0);
 		checkmem(yyval.a_value);
@@ -2381,11 +2387,11 @@
 	;
     break;}
 case 128:
-#line 1288 "asn1p_y.y"
+#line 1291 "asn1p_y.y"
 { asn1p_lexer_hack_push_opaque_state(); ;
     break;}
 case 129:
-#line 1288 "asn1p_y.y"
+#line 1291 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
 		checkmem(yyval.a_value);
@@ -2393,7 +2399,7 @@
 	;
     break;}
 case 130:
-#line 1293 "asn1p_y.y"
+#line 1296 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(0);
 		checkmem(yyval.a_value);
@@ -2401,7 +2407,7 @@
 	;
     break;}
 case 131:
-#line 1298 "asn1p_y.y"
+#line 1301 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(0);
 		checkmem(yyval.a_value);
@@ -2409,7 +2415,7 @@
 	;
     break;}
 case 132:
-#line 1303 "asn1p_y.y"
+#line 1306 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(0);
 		checkmem(yyval.a_value);
@@ -2417,40 +2423,40 @@
 	;
     break;}
 case 133:
-#line 1308 "asn1p_y.y"
+#line 1311 "asn1p_y.y"
 {
 		yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'B');
 		checkmem(yyval.a_value);
 	;
     break;}
 case 134:
-#line 1312 "asn1p_y.y"
+#line 1315 "asn1p_y.y"
 {
 		yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'H');
 		checkmem(yyval.a_value);
 	;
     break;}
 case 135:
-#line 1316 "asn1p_y.y"
+#line 1319 "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 136:
-#line 1320 "asn1p_y.y"
-{
-		yyval.a_value = yyvsp[0].a_value;
-	;
-    break;}
-case 137:
 #line 1323 "asn1p_y.y"
 {
 		yyval.a_value = yyvsp[0].a_value;
 	;
     break;}
+case 137:
+#line 1326 "asn1p_y.y"
+{
+		yyval.a_value = yyvsp[0].a_value;
+	;
+    break;}
 case 138:
-#line 1329 "asn1p_y.y"
+#line 1332 "asn1p_y.y"
 {
 		asn1p_ref_t *ref;
 		int ret;
@@ -2464,7 +2470,7 @@
 	;
     break;}
 case 139:
-#line 1340 "asn1p_y.y"
+#line 1343 "asn1p_y.y"
 {
 		asn1p_ref_t *ref;
 		int ret;
@@ -2481,7 +2487,7 @@
 	;
     break;}
 case 140:
-#line 1357 "asn1p_y.y"
+#line 1360 "asn1p_y.y"
 {
 		yyval.tv_opaque.len = yyvsp[0].tv_opaque.len + 2;
 		yyval.tv_opaque.buf = malloc(yyval.tv_opaque.len + 1);
@@ -2494,7 +2500,7 @@
 	;
     break;}
 case 141:
-#line 1367 "asn1p_y.y"
+#line 1370 "asn1p_y.y"
 {
 		int newsize = yyvsp[-1].tv_opaque.len + yyvsp[0].tv_opaque.len;
 		char *p = malloc(newsize + 1);
@@ -2509,67 +2515,67 @@
 	;
     break;}
 case 142:
-#line 1382 "asn1p_y.y"
+#line 1385 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_BOOLEAN; ;
     break;}
 case 143:
-#line 1383 "asn1p_y.y"
+#line 1386 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_NULL; ;
     break;}
 case 144:
-#line 1384 "asn1p_y.y"
+#line 1387 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_REAL; ;
     break;}
 case 145:
-#line 1385 "asn1p_y.y"
+#line 1388 "asn1p_y.y"
 { yyval.a_type = yyvsp[0].a_type; ;
     break;}
 case 146:
-#line 1386 "asn1p_y.y"
+#line 1389 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_OCTET_STRING; ;
     break;}
 case 147:
-#line 1387 "asn1p_y.y"
+#line 1390 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_OBJECT_IDENTIFIER; ;
     break;}
 case 148:
-#line 1388 "asn1p_y.y"
+#line 1391 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_RELATIVE_OID; ;
     break;}
 case 149:
-#line 1389 "asn1p_y.y"
+#line 1392 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_EXTERNAL; ;
     break;}
 case 150:
-#line 1390 "asn1p_y.y"
+#line 1393 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_EMBEDDED_PDV; ;
     break;}
 case 151:
-#line 1391 "asn1p_y.y"
+#line 1394 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_CHARACTER_STRING; ;
     break;}
 case 152:
-#line 1392 "asn1p_y.y"
+#line 1395 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_UTCTime; ;
     break;}
 case 153:
-#line 1393 "asn1p_y.y"
+#line 1396 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_GeneralizedTime; ;
     break;}
 case 154:
-#line 1400 "asn1p_y.y"
+#line 1403 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_INTEGER; ;
     break;}
 case 155:
-#line 1401 "asn1p_y.y"
+#line 1404 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_ENUMERATED; ;
     break;}
 case 156:
-#line 1402 "asn1p_y.y"
+#line 1405 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_BIT_STRING; ;
     break;}
 case 157:
-#line 1406 "asn1p_y.y"
+#line 1409 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2578,7 +2584,7 @@
 	;
     break;}
 case 158:
-#line 1412 "asn1p_y.y"
+#line 1415 "asn1p_y.y"
 {
 		if(yyvsp[0].a_expr) {
 			yyval.a_expr = yyvsp[0].a_expr;
@@ -2591,91 +2597,91 @@
 	;
     break;}
 case 159:
-#line 1425 "asn1p_y.y"
+#line 1428 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_BMPString; ;
     break;}
 case 160:
-#line 1426 "asn1p_y.y"
+#line 1429 "asn1p_y.y"
 {
 		yyval.a_type = ASN_STRING_GeneralString;
 		fprintf(stderr, "WARNING: GeneralString is not fully supported\n");
 	;
     break;}
 case 161:
-#line 1430 "asn1p_y.y"
+#line 1433 "asn1p_y.y"
 {
 		yyval.a_type = ASN_STRING_GraphicString;
 		fprintf(stderr, "WARNING: GraphicString is not fully supported\n");
 	;
     break;}
 case 162:
-#line 1434 "asn1p_y.y"
+#line 1437 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_IA5String; ;
     break;}
 case 163:
-#line 1435 "asn1p_y.y"
+#line 1438 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_ISO646String; ;
     break;}
 case 164:
-#line 1436 "asn1p_y.y"
+#line 1439 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_NumericString; ;
     break;}
 case 165:
-#line 1437 "asn1p_y.y"
+#line 1440 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_PrintableString; ;
     break;}
 case 166:
-#line 1438 "asn1p_y.y"
+#line 1441 "asn1p_y.y"
 {
 		yyval.a_type = ASN_STRING_T61String;
 		fprintf(stderr, "WARNING: T61String is not fully supported\n");
 	;
     break;}
 case 167:
-#line 1442 "asn1p_y.y"
+#line 1445 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_TeletexString; ;
     break;}
 case 168:
-#line 1443 "asn1p_y.y"
+#line 1446 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_UniversalString; ;
     break;}
 case 169:
-#line 1444 "asn1p_y.y"
+#line 1447 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_UTF8String; ;
     break;}
 case 170:
-#line 1445 "asn1p_y.y"
+#line 1448 "asn1p_y.y"
 {
 		yyval.a_type = ASN_STRING_VideotexString;
 		fprintf(stderr, "WARNING: VideotexString is not fully supported\n");
 	;
     break;}
 case 171:
-#line 1449 "asn1p_y.y"
+#line 1452 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_VisibleString; ;
     break;}
 case 172:
-#line 1450 "asn1p_y.y"
+#line 1453 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_ObjectDescriptor; ;
     break;}
 case 178:
-#line 1462 "asn1p_y.y"
+#line 1465 "asn1p_y.y"
 { yyval.a_constr = 0; ;
     break;}
 case 179:
-#line 1463 "asn1p_y.y"
+#line 1466 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
 case 180:
-#line 1469 "asn1p_y.y"
+#line 1472 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[0].a_constr, 0);
 	;
     break;}
 case 181:
-#line 1472 "asn1p_y.y"
+#line 1475 "asn1p_y.y"
 {
 		/*
 		 * This is a special case, for compatibility purposes.
@@ -2685,25 +2691,25 @@
 	;
     break;}
 case 182:
-#line 1482 "asn1p_y.y"
+#line 1485 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[-1].a_constr;
 	;
     break;}
 case 183:
-#line 1485 "asn1p_y.y"
+#line 1488 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
 	;
     break;}
 case 184:
-#line 1491 "asn1p_y.y"
+#line 1494 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
 case 185:
-#line 1494 "asn1p_y.y"
+#line 1497 "asn1p_y.y"
 {
 		asn1p_constraint_t *ct;
 		ct = asn1p_constraint_new(yylineno);
@@ -2712,7 +2718,7 @@
 	;
     break;}
 case 186:
-#line 1500 "asn1p_y.y"
+#line 1503 "asn1p_y.y"
 {
 		asn1p_constraint_t *ct;
 		ct = asn1p_constraint_new(yylineno);
@@ -2723,31 +2729,31 @@
 	;
     break;}
 case 187:
-#line 1511 "asn1p_y.y"
+#line 1514 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
 case 188:
-#line 1514 "asn1p_y.y"
+#line 1517 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_UNI, yyvsp[-2].a_constr, yyvsp[0].a_constr);
 	;
     break;}
 case 189:
-#line 1517 "asn1p_y.y"
+#line 1520 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_INT, yyvsp[-2].a_constr, yyvsp[0].a_constr);
 	;
     break;}
 case 190:
-#line 1520 "asn1p_y.y"
+#line 1523 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_EXC, yyvsp[-2].a_constr, yyvsp[0].a_constr);
 	;
     break;}
 case 191:
-#line 1526 "asn1p_y.y"
+#line 1529 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_constr = asn1p_constraint_new(yylineno);
@@ -2758,7 +2764,7 @@
 	;
     break;}
 case 192:
-#line 1534 "asn1p_y.y"
+#line 1537 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_constr = asn1p_constraint_new(yylineno);
@@ -2769,7 +2775,7 @@
 	;
     break;}
 case 193:
-#line 1542 "asn1p_y.y"
+#line 1545 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -2778,7 +2784,7 @@
 	;
     break;}
 case 194:
-#line 1548 "asn1p_y.y"
+#line 1551 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -2788,7 +2794,7 @@
 	;
     break;}
 case 195:
-#line 1555 "asn1p_y.y"
+#line 1558 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -2799,7 +2805,7 @@
 	;
     break;}
 case 196:
-#line 1563 "asn1p_y.y"
+#line 1566 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -2810,7 +2816,7 @@
 	;
     break;}
 case 197:
-#line 1571 "asn1p_y.y"
+#line 1574 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -2822,53 +2828,53 @@
 	;
     break;}
 case 198:
-#line 1580 "asn1p_y.y"
-{
-		yyval.a_constr = yyvsp[0].a_constr;
-	;
-    break;}
-case 199:
 #line 1583 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
+case 199:
+#line 1586 "asn1p_y.y"
+{
+		yyval.a_constr = yyvsp[0].a_constr;
+	;
+    break;}
 case 200:
-#line 1589 "asn1p_y.y"
+#line 1592 "asn1p_y.y"
 { yyval.a_ctype = ACT_EL_RANGE; ;
     break;}
 case 201:
-#line 1590 "asn1p_y.y"
+#line 1593 "asn1p_y.y"
 { yyval.a_ctype = ACT_EL_RLRANGE; ;
     break;}
 case 202:
-#line 1591 "asn1p_y.y"
+#line 1594 "asn1p_y.y"
 { yyval.a_ctype = ACT_EL_LLRANGE; ;
     break;}
 case 203:
-#line 1592 "asn1p_y.y"
+#line 1595 "asn1p_y.y"
 { yyval.a_ctype = ACT_EL_ULRANGE; ;
     break;}
 case 204:
-#line 1596 "asn1p_y.y"
+#line 1599 "asn1p_y.y"
 {
 		yyval.a_ctype = ACT_CT_SIZE;
 	;
     break;}
 case 205:
-#line 1599 "asn1p_y.y"
+#line 1602 "asn1p_y.y"
 {
 		yyval.a_ctype = ACT_CT_FROM;
 	;
     break;}
 case 206:
-#line 1605 "asn1p_y.y"
+#line 1608 "asn1p_y.y"
 {
 		yyval.a_value = yyvsp[0].a_value;
 	;
     break;}
 case 207:
-#line 1608 "asn1p_y.y"
+#line 1611 "asn1p_y.y"
 {
 		asn1p_ref_t *ref;
 		int ret;
@@ -2882,14 +2888,14 @@
 	;
     break;}
 case 208:
-#line 1619 "asn1p_y.y"
+#line 1622 "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 209:
-#line 1623 "asn1p_y.y"
+#line 1626 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(0);
 		checkmem(yyval.a_value);
@@ -2897,7 +2903,7 @@
 	;
     break;}
 case 210:
-#line 1628 "asn1p_y.y"
+#line 1631 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(1);
 		checkmem(yyval.a_value);
@@ -2905,25 +2911,25 @@
 	;
     break;}
 case 211:
-#line 1636 "asn1p_y.y"
+#line 1639 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-1].a_constr, 0);
 	;
     break;}
 case 212:
-#line 1642 "asn1p_y.y"
+#line 1645 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
 case 213:
-#line 1645 "asn1p_y.y"
+#line 1648 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-2].a_constr, yyvsp[0].a_constr);
 	;
     break;}
 case 214:
-#line 1651 "asn1p_y.y"
+#line 1654 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -2931,7 +2937,7 @@
 	;
     break;}
 case 215:
-#line 1656 "asn1p_y.y"
+#line 1659 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -2941,45 +2947,45 @@
 	;
     break;}
 case 216:
-#line 1669 "asn1p_y.y"
+#line 1672 "asn1p_y.y"
 { yyval.a_pres = ACPRES_DEFAULT; ;
     break;}
 case 217:
-#line 1670 "asn1p_y.y"
+#line 1673 "asn1p_y.y"
 { yyval.a_pres = yyvsp[0].a_pres; ;
     break;}
 case 218:
-#line 1674 "asn1p_y.y"
+#line 1677 "asn1p_y.y"
 {
 		yyval.a_pres = ACPRES_PRESENT;
 	;
     break;}
 case 219:
-#line 1677 "asn1p_y.y"
+#line 1680 "asn1p_y.y"
 {
 		yyval.a_pres = ACPRES_ABSENT;
 	;
     break;}
 case 220:
-#line 1680 "asn1p_y.y"
+#line 1683 "asn1p_y.y"
 {
 		yyval.a_pres = ACPRES_OPTIONAL;
 	;
     break;}
 case 221:
-#line 1686 "asn1p_y.y"
-{
-		yyval.a_constr = yyvsp[0].a_constr;
-	;
-    break;}
-case 222:
 #line 1689 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
+case 222:
+#line 1692 "asn1p_y.y"
+{
+		yyval.a_constr = yyvsp[0].a_constr;
+	;
+    break;}
 case 223:
-#line 1698 "asn1p_y.y"
+#line 1701 "asn1p_y.y"
 {
 		asn1p_ref_t *ref = asn1p_ref_new(yylineno);
 		asn1p_constraint_t *ct;
@@ -2994,13 +3000,13 @@
 	;
     break;}
 case 224:
-#line 1713 "asn1p_y.y"
+#line 1716 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
 	;
     break;}
 case 225:
-#line 1719 "asn1p_y.y"
+#line 1722 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -3009,7 +3015,7 @@
 	;
     break;}
 case 226:
-#line 1725 "asn1p_y.y"
+#line 1728 "asn1p_y.y"
 {
 		asn1p_constraint_t *ct;
 		ct = asn1p_constraint_new(yylineno);
@@ -3020,7 +3026,7 @@
 	;
     break;}
 case 227:
-#line 1739 "asn1p_y.y"
+#line 1742 "asn1p_y.y"
 {
 		char *p = malloc(strlen(yyvsp[0].tv_str) + 2);
 		int ret;
@@ -3034,7 +3040,7 @@
 	;
     break;}
 case 228:
-#line 1750 "asn1p_y.y"
+#line 1753 "asn1p_y.y"
 {
 		char *p = malloc(strlen(yyvsp[0].tv_str) + 3);
 		int ret;
@@ -3049,13 +3055,13 @@
 	;
     break;}
 case 229:
-#line 1766 "asn1p_y.y"
+#line 1769 "asn1p_y.y"
 {
 		yyval.tv_str = yyvsp[0].tv_str;
 	;
     break;}
 case 230:
-#line 1769 "asn1p_y.y"
+#line 1772 "asn1p_y.y"
 {
 		int l1 = strlen(yyvsp[-2].tv_str);
 		int l3 = strlen(yyvsp[0].tv_str);
@@ -3067,45 +3073,45 @@
 	;
     break;}
 case 231:
-#line 1787 "asn1p_y.y"
+#line 1790 "asn1p_y.y"
 {
 		yyval.a_marker.flags = EM_NOMARK;
 		yyval.a_marker.default_value = 0;
 	;
     break;}
 case 232:
-#line 1791 "asn1p_y.y"
+#line 1794 "asn1p_y.y"
 { yyval.a_marker = yyvsp[0].a_marker; ;
     break;}
 case 233:
-#line 1795 "asn1p_y.y"
+#line 1798 "asn1p_y.y"
 {
 		yyval.a_marker.flags = EM_OPTIONAL;
 		yyval.a_marker.default_value = 0;
 	;
     break;}
 case 234:
-#line 1799 "asn1p_y.y"
+#line 1802 "asn1p_y.y"
 {
 		yyval.a_marker.flags = EM_DEFAULT;
 		yyval.a_marker.default_value = yyvsp[0].a_value;
 	;
     break;}
 case 235:
-#line 1822 "asn1p_y.y"
+#line 1825 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
 	;
     break;}
 case 236:
-#line 1826 "asn1p_y.y"
+#line 1829 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-1].a_expr;
 	;
     break;}
 case 237:
-#line 1832 "asn1p_y.y"
+#line 1835 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -3113,14 +3119,14 @@
 	;
     break;}
 case 238:
-#line 1837 "asn1p_y.y"
+#line 1840 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	;
     break;}
 case 239:
-#line 1844 "asn1p_y.y"
+#line 1847 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -3130,7 +3136,7 @@
 	;
     break;}
 case 240:
-#line 1851 "asn1p_y.y"
+#line 1854 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -3141,7 +3147,7 @@
 	;
     break;}
 case 241:
-#line 1859 "asn1p_y.y"
+#line 1862 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -3152,7 +3158,7 @@
 	;
     break;}
 case 242:
-#line 1867 "asn1p_y.y"
+#line 1870 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -3162,7 +3168,7 @@
 	;
     break;}
 case 243:
-#line 1874 "asn1p_y.y"
+#line 1877 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -3173,71 +3179,81 @@
 	;
     break;}
 case 244:
-#line 1885 "asn1p_y.y"
+#line 1888 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
 		checkmem(yyval.a_value);
 	;
     break;}
 case 245:
-#line 1889 "asn1p_y.y"
+#line 1892 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
 		checkmem(yyval.a_value);
 	;
     break;}
 case 246:
-#line 1920 "asn1p_y.y"
+#line 1923 "asn1p_y.y"
 { memset(&yyval.a_tag, 0, sizeof(yyval.a_tag)); ;
     break;}
 case 247:
-#line 1921 "asn1p_y.y"
+#line 1924 "asn1p_y.y"
 { yyval.a_tag = yyvsp[0].a_tag; ;
     break;}
 case 248:
-#line 1925 "asn1p_y.y"
+#line 1928 "asn1p_y.y"
 {
 		yyval.a_tag = yyvsp[0].a_tag;
 		yyval.a_tag.tag_mode = TM_DEFAULT;
 	;
     break;}
 case 249:
-#line 1929 "asn1p_y.y"
+#line 1932 "asn1p_y.y"
 {
 		yyval.a_tag = yyvsp[-1].a_tag;
 		yyval.a_tag.tag_mode = TM_IMPLICIT;
 	;
     break;}
 case 250:
-#line 1933 "asn1p_y.y"
+#line 1936 "asn1p_y.y"
 {
 		yyval.a_tag = yyvsp[-1].a_tag;
 		yyval.a_tag.tag_mode = TM_EXPLICIT;
 	;
     break;}
 case 251:
-#line 1940 "asn1p_y.y"
+#line 1943 "asn1p_y.y"
 {
 		checkmem(yyvsp[0].tv_str);
 		yyval.tv_str = yyvsp[0].tv_str;
 	;
     break;}
 case 252:
-#line 1944 "asn1p_y.y"
+#line 1947 "asn1p_y.y"
 {
 		checkmem(yyvsp[0].tv_str);
 		yyval.tv_str = yyvsp[0].tv_str;
 	;
     break;}
 case 253:
-#line 1952 "asn1p_y.y"
+#line 1955 "asn1p_y.y"
 {
 		checkmem(yyvsp[0].tv_str);
 		yyval.tv_str = yyvsp[0].tv_str;
 	;
     break;}
 case 254:
-#line 1959 "asn1p_y.y"
+#line 1962 "asn1p_y.y"
+{ yyval.tv_str = 0; ;
+    break;}
+case 255:
+#line 1963 "asn1p_y.y"
+{
+		yyval.tv_str = yyvsp[0].tv_str;
+	;
+    break;}
+case 256:
+#line 1968 "asn1p_y.y"
 {
 		checkmem(yyvsp[0].tv_str);
 		yyval.tv_str = yyvsp[0].tv_str;
@@ -3465,7 +3481,7 @@
     }
   return 1;
 }
-#line 1965 "asn1p_y.y"
+#line 1974 "asn1p_y.y"