parsing object classes more properly


git-svn-id: https://asn1c.svn.sourceforge.net/svnroot/asn1c/trunk@1062 59561ff5-6e30-0410-9f3c-9617f08c8826
diff --git a/libasn1parser/asn1p_y.c b/libasn1parser/asn1p_y.c
index 058a7c8..024f520 100644
--- a/libasn1parser/asn1p_y.c
+++ b/libasn1parser/asn1p_y.c
@@ -221,11 +221,11 @@
 
 
 
-#define	YYFINAL		431
+#define	YYFINAL		445
 #define	YYFLAG		-32768
 #define	YYNTBASE	118
 
-#define YYTRANSLATE(x) ((unsigned)(x) <= 356 ? yytranslate[x] : 223)
+#define YYTRANSLATE(x) ((unsigned)(x) <= 356 ? yytranslate[x] : 225)
 
 static const char yytranslate[] = {     0,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -273,144 +273,148 @@
     57,    60,    63,    64,    66,    68,    71,    73,    75,    77,
     79,    81,    82,    86,    88,    92,    95,    97,   100,   101,
    103,   108,   110,   114,   116,   120,   122,   126,   130,   133,
-   135,   139,   141,   145,   147,   148,   155,   157,   159,   164,
-   168,   172,   179,   181,   185,   187,   191,   195,   199,   201,
-   205,   207,   209,   210,   212,   214,   218,   222,   225,   229,
-   231,   233,   237,   240,   242,   244,   250,   251,   253,   255,
-   259,   262,   267,   272,   273,   275,   276,   283,   285,   288,
-   290,   292,   294,   298,   302,   306,   307,   310,   312,   317,
-   322,   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,   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,   641,   647,   649,   653,   655,
-   659,   660,   662,   664,   666,   668,   670,   672,   676,   681,
-   683,   687,   690,   694,   696,   700,   701,   703,   705,   708,
-   711,   715,   717,   721,   723,   728,   733,   735,   737,   739,
-   741,   742,   744,   747,   752,   753,   755,   757,   759,   760,
-   762,   764,   766,   768,   770,   771,   773
+   135,   139,   141,   145,   147,   148,   155,   157,   159,   163,
+   167,   174,   176,   180,   182,   186,   190,   194,   196,   200,
+   202,   204,   205,   207,   209,   213,   217,   220,   224,   226,
+   228,   232,   235,   237,   239,   245,   246,   248,   250,   254,
+   257,   262,   266,   270,   274,   278,   282,   283,   285,   286,
+   293,   295,   298,   300,   302,   304,   308,   312,   316,   317,
+   320,   322,   327,   332,   337,   344,   351,   353,   358,   363,
+   365,   369,   371,   375,   379,   383,   385,   389,   391,   395,
+   397,   399,   401,   403,   405,   409,   413,   415,   419,   424,
+   428,   429,   433,   435,   437,   439,   441,   443,   445,   447,
+   449,   451,   455,   457,   459,   461,   463,   466,   468,   470,
+   472,   474,   477,   480,   482,   484,   487,   490,   492,   494,
+   496,   498,   500,   503,   505,   508,   510,   512,   514,   516,
+   518,   520,   522,   524,   526,   528,   530,   532,   534,   536,
+   538,   540,   542,   544,   546,   547,   549,   551,   556,   560,
+   565,   567,   571,   577,   579,   583,   587,   591,   595,   600,
+   604,   606,   608,   612,   616,   620,   624,   626,   628,   629,
+   635,   637,   640,   643,   647,   649,   651,   653,   655,   657,
+   659,   661,   663,   667,   673,   675,   679,   681,   685,   686,
+   688,   690,   692,   694,   696,   698,   702,   707,   709,   713,
+   716,   720,   722,   726,   727,   729,   731,   734,   737,   741,
+   743,   747,   749,   754,   759,   761,   763,   765,   767,   768,
+   770,   773,   778,   779,   781,   783,   785,   786,   788,   790,
+   792,   794,   796,   797,   799
 };
 
 static const short yyrhs[] = {   119,
-     0,   120,     0,   119,   120,     0,   219,   121,    36,   125,
+     0,   120,     0,   119,   120,     0,   221,   121,    36,   125,
      3,    23,   128,    41,     0,     0,   122,     0,   105,   123,
    106,     0,   105,   106,     0,   124,     0,   123,   124,     0,
-   222,     0,   222,   107,     9,   108,     0,     9,     0,     0,
+   224,     0,   224,   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,   138,     0,   144,     0,   173,     0,   141,     0,
-     0,    40,    14,   131,     0,   182,     0,    56,   133,   109,
+   132,     0,   138,     0,   144,     0,   175,     0,   141,     0,
+     0,    40,    14,   131,     0,   184,     0,    56,   133,   109,
      0,    56,    48,     0,   135,     0,   133,   135,     0,     0,
-   122,     0,   136,    48,   219,   134,     0,   137,     0,   136,
-   110,   137,     0,   219,     0,   219,   105,   106,     0,   222,
+   122,     0,   136,    48,   221,   134,     0,   137,     0,   136,
+   110,   137,     0,   221,     0,   221,   105,   106,     0,   224,
      0,    44,   139,   109,     0,    44,    19,   109,     0,    44,
-   109,     0,   140,     0,   139,   110,   140,     0,   219,     0,
-   219,   105,   106,     0,   222,     0,     0,   219,   143,     3,
-   105,   142,   178,     0,   168,     0,   179,     0,   219,     3,
-   214,    89,     0,   219,     3,   164,     0,   219,     3,   154,
-     0,   219,   105,   145,   106,     3,   164,     0,   146,     0,
-   145,   110,   146,     0,   219,     0,   219,   111,   222,     0,
-   219,   111,   219,     0,   179,   111,   222,     0,   148,     0,
-   147,   110,   148,     0,   164,     0,   222,     0,     0,   150,
-     0,   151,     0,   150,   110,   151,     0,   222,   164,   208,
-     0,   164,   208,     0,    32,    70,   164,     0,   163,     0,
-   153,     0,   152,   110,   153,     0,   222,   164,     0,   163,
-     0,   164,     0,    30,   105,   156,   106,   158,     0,     0,
-    90,     0,   157,     0,   156,   110,   157,     0,   171,   208,
-     0,   171,   164,   155,   208,     0,   171,   171,   155,   208,
+   109,     0,   140,     0,   139,   110,   140,     0,   221,     0,
+   221,   105,   106,     0,   224,     0,     0,   221,   143,     3,
+   105,   142,   180,     0,   168,     0,   181,     0,   221,     3,
+   164,     0,   221,     3,   154,     0,   221,   105,   145,   106,
+     3,   164,     0,   146,     0,   145,   110,   146,     0,   221,
+     0,   221,   111,   224,     0,   221,   111,   221,     0,   181,
+   111,   224,     0,   148,     0,   147,   110,   148,     0,   164,
+     0,   224,     0,     0,   150,     0,   151,     0,   150,   110,
+   151,     0,   224,   164,   210,     0,   164,   210,     0,    32,
+    70,   164,     0,   163,     0,   153,     0,   152,   110,   153,
+     0,   224,   164,     0,   163,     0,   164,     0,    30,   105,
+   156,   106,   158,     0,     0,    90,     0,   157,     0,   156,
+   110,   157,     0,    15,   210,     0,    16,   164,   155,   210,
+     0,    16,   173,   210,     0,    15,   173,   210,     0,    16,
+   174,   210,     0,    15,   174,   210,     0,    15,   164,   210,
      0,     0,   159,     0,     0,    97,    84,   105,   160,   161,
    106,     0,   162,     0,   161,   162,     0,     4,     0,   171,
-     0,   104,     0,   104,   112,   176,     0,   104,   112,   213,
-     0,   214,   166,   186,     0,     0,   165,   167,     0,   181,
+     0,   104,     0,   104,   112,   178,     0,   104,   112,   215,
+     0,   216,   166,   188,     0,     0,   165,   167,     0,   183,
      0,    29,   105,   152,   106,     0,    80,   105,   149,   106,
-     0,    81,   105,   149,   106,     0,    80,   186,    70,   221,
-   214,   166,     0,    81,   186,    70,   221,   214,   166,     0,
-    20,     0,    20,    37,    27,   222,     0,   219,   105,   147,
+     0,    81,   105,   149,   106,     0,    80,   188,    70,   223,
+   216,   166,     0,    81,   188,    70,   223,   216,   166,     0,
+    20,     0,    20,    37,    27,   224,     0,   221,   105,   147,
    106,     0,   168,     0,    58,    70,   168,     0,    13,     0,
-    13,   113,   219,     0,   220,   113,   219,     0,    13,   113,
-   222,     0,   220,     0,   220,   113,   169,     0,   170,     0,
+    13,   113,   221,     0,   222,   113,   221,     0,    13,   113,
+   224,     0,   222,     0,   222,   113,   169,     0,   170,     0,
    169,   113,   170,     0,   172,     0,   172,     0,    15,     0,
-    16,     0,   222,   143,     3,   174,     0,   222,   111,   174,
-     0,     0,   105,   175,   178,     0,    65,     0,    47,     0,
-    88,     0,     5,     0,     7,     0,   177,     0,   213,     0,
-   176,     0,   222,     0,   219,   113,   222,     0,     6,     0,
-    10,     0,    11,     0,     4,     0,   178,     4,     0,    26,
-     0,    65,     0,    78,     0,   180,     0,    69,    83,     0,
-    67,    53,     0,    79,     0,    46,     0,    38,    73,     0,
-    28,    83,     0,    93,     0,    49,     0,   182,     0,    60,
-     0,    42,     0,    24,    83,     0,   179,     0,   180,   210,
-     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,
-   187,     0,   188,     0,    82,   107,   189,   108,     0,   107,
-   189,   108,     0,   188,   107,   189,   108,     0,   190,     0,
-   190,   110,   104,     0,   190,   110,   104,   110,   190,     0,
-   191,     0,    19,    98,   191,     0,   190,   183,   191,     0,
-   190,   184,   191,     0,   191,   185,   191,     0,   194,   107,
-   189,   108,     0,   107,   189,   108,     0,   195,     0,   196,
-     0,   195,   193,   195,     0,    63,   193,   195,     0,   195,
-   193,    62,     0,    63,   193,    62,     0,   202,     0,   197,
-     0,     0,    33,    27,   105,   192,   178,     0,   103,     0,
-   103,   114,     0,   114,   103,     0,   114,   103,   114,     0,
-    82,     0,    48,     0,    47,     0,    88,     0,   213,     0,
-   177,     0,   222,     0,   219,     0,    97,    31,   188,     0,
-    97,    32,   105,   198,   106,     0,   199,     0,   198,   110,
-   199,     0,   104,     0,   222,   186,   200,     0,     0,   201,
-     0,    75,     0,    17,     0,    71,     0,   203,     0,   204,
-     0,   105,   219,   106,     0,   203,   105,   205,   106,     0,
-   206,     0,   205,   110,   206,     0,   115,   207,     0,   115,
-   113,   207,     0,   222,     0,   207,   113,   222,     0,     0,
-   209,     0,    71,     0,    35,   174,     0,   105,   106,     0,
-   105,   211,   106,     0,   212,     0,   211,   110,   212,     0,
-   222,     0,   222,   107,   213,   108,     0,   222,   107,   176,
-   108,     0,   213,     0,   104,     0,     9,     0,    12,     0,
-     0,   215,     0,   216,   218,     0,   116,   217,     9,   117,
-     0,     0,    91,     0,    21,     0,    77,     0,     0,    54,
-     0,    43,     0,    13,     0,    14,     0,    14,     0,     0,
-   222,     0,     8,     0
+    16,     0,    15,     0,   173,   113,    15,     0,   173,   113,
+    16,     0,    14,     0,   221,   113,    14,     0,   224,   143,
+     3,   176,     0,   224,   111,   176,     0,     0,   105,   177,
+   180,     0,    65,     0,    47,     0,    88,     0,     5,     0,
+     7,     0,   179,     0,   215,     0,   178,     0,   224,     0,
+   221,   113,   224,     0,     6,     0,    10,     0,    11,     0,
+     4,     0,   180,     4,     0,    26,     0,    65,     0,    78,
+     0,   182,     0,    69,    83,     0,    67,    53,     0,    79,
+     0,    46,     0,    38,    73,     0,    28,    83,     0,    93,
+     0,    49,     0,   184,     0,    60,     0,    42,     0,    24,
+    83,     0,   181,     0,   182,   212,     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,   189,     0,   190,     0,
+    82,   107,   191,   108,     0,   107,   191,   108,     0,   190,
+   107,   191,   108,     0,   192,     0,   192,   110,   104,     0,
+   192,   110,   104,   110,   192,     0,   193,     0,    19,    98,
+   193,     0,   192,   185,   193,     0,   192,   186,   193,     0,
+   193,   187,   193,     0,   196,   107,   191,   108,     0,   107,
+   191,   108,     0,   197,     0,   198,     0,   197,   195,   197,
+     0,    63,   195,   197,     0,   197,   195,    62,     0,    63,
+   195,    62,     0,   204,     0,   199,     0,     0,    33,    27,
+   105,   194,   180,     0,   103,     0,   103,   114,     0,   114,
+   103,     0,   114,   103,   114,     0,    82,     0,    48,     0,
+    47,     0,    88,     0,   215,     0,   179,     0,   224,     0,
+   221,     0,    97,    31,   190,     0,    97,    32,   105,   200,
+   106,     0,   201,     0,   200,   110,   201,     0,   104,     0,
+   224,   188,   202,     0,     0,   203,     0,    75,     0,    17,
+     0,    71,     0,   205,     0,   206,     0,   105,   221,   106,
+     0,   205,   105,   207,   106,     0,   208,     0,   207,   110,
+   208,     0,   115,   209,     0,   115,   113,   209,     0,   224,
+     0,   209,   113,   224,     0,     0,   211,     0,    71,     0,
+    35,   176,     0,   105,   106,     0,   105,   213,   106,     0,
+   214,     0,   213,   110,   214,     0,   224,     0,   224,   107,
+   215,   108,     0,   224,   107,   178,   108,     0,   215,     0,
+   104,     0,     9,     0,    12,     0,     0,   217,     0,   218,
+   220,     0,   116,   219,     9,   117,     0,     0,    91,     0,
+    21,     0,    77,     0,     0,    54,     0,    43,     0,    13,
+     0,    14,     0,    14,     0,     0,   224,     0,     8,     0
 };
 
 #endif
 
 #if YYDEBUG != 0
 static const short yyrline[] = { 0,
-   320,   326,   332,   348,   373,   375,   378,   382,   387,   394,
-   402,   407,   411,   420,   422,   430,   434,   442,   446,   449,
-   452,   456,   476,   478,   486,   490,   522,   526,   535,   542,
-   555,   562,   564,   576,   588,   599,   604,   610,   616,   618,
-   621,   632,   638,   644,   651,   657,   665,   669,   672,   679,
-   685,   691,   698,   704,   713,   715,   724,   732,   746,   758,
-   764,   780,   789,   799,   809,   814,   821,   828,   838,   844,
-   850,   854,   877,   879,   881,   887,   893,   901,   907,   914,
-   919,   925,   931,   937,   940,   946,   956,   958,   961,   969,
-   975,   984,   990,  1007,  1009,  1014,  1018,  1023,  1028,  1034,
-  1038,  1049,  1058,  1067,  1078,  1100,  1107,  1126,  1130,  1136,
-  1142,  1148,  1158,  1168,  1174,  1188,  1212,  1219,  1233,  1242,
-  1252,  1262,  1272,  1280,  1301,  1310,  1319,  1320,  1322,  1329,
-  1341,  1351,  1359,  1359,  1364,  1369,  1374,  1379,  1383,  1387,
-  1390,  1393,  1398,  1410,  1427,  1432,  1437,  1470,  1480,  1494,
-  1496,  1497,  1498,  1499,  1500,  1501,  1502,  1503,  1504,  1505,
-  1506,  1507,  1513,  1515,  1516,  1519,  1526,  1538,  1540,  1544,
-  1548,  1549,  1550,  1551,  1552,  1556,  1557,  1558,  1559,  1563,
-  1564,  1571,  1571,  1572,  1572,  1573,  1575,  1577,  1582,  1586,
-  1595,  1599,  1604,  1608,  1614,  1624,  1628,  1631,  1634,  1637,
-  1642,  1651,  1659,  1665,  1671,  1678,  1686,  1694,  1703,  1706,
-  1709,  1710,  1720,  1722,  1723,  1724,  1727,  1731,  1736,  1742,
-  1747,  1750,  1753,  1766,  1780,  1784,  1789,  1793,  1798,  1805,
-  1818,  1820,  1823,  1827,  1830,  1835,  1839,  1847,  1862,  1868,
-  1875,  1888,  1900,  1915,  1919,  1936,  1941,  1944,  1949,  1971,
-  1976,  1981,  1987,  1993,  2001,  2009,  2017,  2024,  2034,  2039,
-  2069,  2071,  2074,  2081,  2087,  2089,  2090,  2091,  2094,  2096,
-  2097,  2100,  2105,  2112,  2119,  2121,  2126
+   322,   328,   334,   350,   375,   377,   380,   384,   389,   396,
+   404,   409,   413,   422,   424,   432,   436,   444,   448,   451,
+   454,   458,   478,   480,   488,   492,   524,   528,   537,   544,
+   557,   564,   566,   578,   590,   601,   606,   612,   618,   620,
+   623,   634,   640,   646,   653,   659,   667,   671,   674,   681,
+   687,   693,   700,   706,   715,   717,   726,   734,   748,   758,
+   774,   783,   793,   803,   808,   815,   822,   832,   838,   844,
+   848,   871,   873,   875,   881,   887,   895,   901,   908,   913,
+   919,   925,   931,   934,   940,   950,   952,   955,   963,   970,
+   983,   994,  1004,  1014,  1025,  1036,  1062,  1064,  1069,  1073,
+  1078,  1083,  1089,  1093,  1104,  1113,  1122,  1133,  1155,  1162,
+  1181,  1185,  1191,  1197,  1203,  1213,  1223,  1229,  1243,  1267,
+  1274,  1288,  1297,  1307,  1317,  1327,  1335,  1356,  1365,  1374,
+  1375,  1377,  1384,  1391,  1397,  1401,  1407,  1412,  1425,  1435,
+  1443,  1443,  1448,  1453,  1458,  1463,  1467,  1471,  1474,  1477,
+  1482,  1494,  1511,  1516,  1521,  1554,  1564,  1578,  1580,  1581,
+  1582,  1583,  1584,  1585,  1586,  1587,  1588,  1589,  1590,  1591,
+  1597,  1599,  1600,  1603,  1610,  1622,  1624,  1628,  1632,  1633,
+  1634,  1635,  1636,  1640,  1641,  1642,  1643,  1647,  1648,  1655,
+  1655,  1656,  1656,  1657,  1659,  1661,  1666,  1670,  1679,  1683,
+  1688,  1692,  1698,  1708,  1712,  1715,  1718,  1721,  1726,  1735,
+  1743,  1749,  1755,  1762,  1770,  1778,  1787,  1790,  1793,  1794,
+  1804,  1806,  1807,  1808,  1811,  1815,  1820,  1826,  1831,  1834,
+  1837,  1850,  1864,  1868,  1873,  1877,  1882,  1889,  1902,  1904,
+  1907,  1911,  1914,  1919,  1923,  1931,  1946,  1952,  1959,  1972,
+  1984,  1999,  2003,  2020,  2025,  2028,  2033,  2055,  2060,  2065,
+  2071,  2077,  2085,  2093,  2101,  2108,  2118,  2123,  2153,  2155,
+  2158,  2165,  2171,  2173,  2174,  2175,  2178,  2180,  2181,  2184,
+  2189,  2196,  2203,  2205,  2210
 };
 #endif
 
@@ -446,21 +450,21 @@
 "ExportsElement","ValueSetDefinition","@2","DefinedTypeRef","DataTypeReference",
 "ParameterArgumentList","ParameterArgumentName","ActualParameterList","ActualParameter",
 "optComponentTypeLists","ComponentTypeLists","ComponentType","AlternativeTypeLists",
-"AlternativeType","ClassDeclaration","optUnique","ClassFieldList","ClassField",
-"optWithSyntax","WithSyntax","@3","WithSyntaxFormat","WithSyntaxFormatToken",
-"ExtensionAndException","Type","NSTD_IndirectMarker","TypeDeclaration","TypeDeclarationSet",
-"ComplexTypeReference","ComplexTypeReferenceAmpList","ComplexTypeReferenceElement",
-"ClassFieldIdentifier","ClassFieldName","ValueDefinition","Value","@4","DefinedValue",
-"RestrictedCharacterStringValue","Opaque","BasicTypeId","BasicTypeId_UniverationCompatible",
-"BasicType","BasicString","Union","Intersection","Except","optConstraints","Constraints",
-"SetOfConstraints","ElementSetSpecs","ElementSetSpec","ConstraintSubtypeElement",
-"@5","ConstraintRangeSpec","ConstraintSpec","SingleValue","ContainedSubtype",
-"InnerTypeConstraint","WithComponentsList","WithComponentsElement","optPresenceConstraint",
-"PresenceConstraint","TableConstraint","SimpleTableConstraint","ComponentRelationConstraint",
-"AtNotationList","AtNotationElement","ComponentIdList","optMarker","Marker",
-"UniverationDefinition","UniverationList","UniverationElement","SignedNumber",
-"optTag","Tag","TagTypeValue","TagClass","TagPlicit","TypeRefName","ObjectClassReference",
-"optIdentifier","Identifier", NULL
+"AlternativeType","ObjectClass","optUnique","FieldSpec","ClassField","optWithSyntax",
+"WithSyntax","@3","WithSyntaxFormat","WithSyntaxFormatToken","ExtensionAndException",
+"Type","NSTD_IndirectMarker","TypeDeclaration","TypeDeclarationSet","ComplexTypeReference",
+"ComplexTypeReferenceAmpList","ComplexTypeReferenceElement","ClassFieldIdentifier",
+"ClassFieldName","FieldName","DefinedObjectClass","ValueDefinition","Value",
+"@4","DefinedValue","RestrictedCharacterStringValue","Opaque","BasicTypeId",
+"BasicTypeId_UniverationCompatible","BasicType","BasicString","Union","Intersection",
+"Except","optConstraints","Constraints","SetOfConstraints","ElementSetSpecs",
+"ElementSetSpec","ConstraintSubtypeElement","@5","ConstraintRangeSpec","ConstraintSpec",
+"SingleValue","ContainedSubtype","InnerTypeConstraint","WithComponentsList",
+"WithComponentsElement","optPresenceConstraint","PresenceConstraint","TableConstraint",
+"SimpleTableConstraint","ComponentRelationConstraint","AtNotationList","AtNotationElement",
+"ComponentIdList","optMarker","Marker","UniverationDefinition","UniverationList",
+"UniverationElement","SignedNumber","optTag","Tag","TagTypeValue","TagClass",
+"TagPlicit","TypeRefName","ObjectClassReference","optIdentifier","Identifier", NULL
 };
 #endif
 
@@ -471,28 +475,29 @@
    130,   131,   130,   130,   132,   132,   133,   133,   134,   134,
    135,   136,   136,   137,   137,   137,   138,   138,   138,   139,
    139,   140,   140,   140,   142,   141,   143,   143,   144,   144,
-   144,   144,   145,   145,   146,   146,   146,   146,   147,   147,
-   148,   148,   149,   149,   150,   150,   151,   151,   151,   151,
-   152,   152,   153,   153,   153,   154,   155,   155,   156,   156,
-   157,   157,   157,   158,   158,   160,   159,   161,   161,   162,
-   162,   163,   163,   163,   164,   165,   166,   167,   167,   167,
-   167,   167,   167,   167,   167,   167,   167,   167,   168,   168,
-   168,   168,   168,   168,   169,   169,   170,   171,   172,   172,
-   173,   174,   175,   174,   174,   174,   174,   174,   174,   174,
-   174,   174,   176,   176,   177,   177,   177,   178,   178,   179,
-   179,   179,   179,   179,   179,   179,   179,   179,   179,   179,
-   179,   179,   180,   180,   180,   181,   181,   182,   182,   182,
-   182,   182,   182,   182,   182,   182,   182,   182,   182,   182,
-   182,   183,   183,   184,   184,   185,   186,   186,   187,   187,
-   188,   188,   189,   189,   189,   190,   190,   190,   190,   190,
-   191,   191,   191,   191,   191,   191,   191,   191,   191,   191,
-   192,   191,   193,   193,   193,   193,   194,   194,   195,   195,
-   195,   195,   195,   196,   197,   197,   198,   198,   199,   199,
-   200,   200,   201,   201,   201,   202,   202,   203,   204,   205,
-   205,   206,   206,   207,   207,   208,   208,   209,   209,   210,
-   210,   211,   211,   212,   212,   212,   212,   212,   213,   213,
-   214,   214,   215,   216,   217,   217,   217,   217,   218,   218,
-   218,   219,   219,   220,   221,   221,   222
+   144,   145,   145,   146,   146,   146,   146,   147,   147,   148,
+   148,   149,   149,   150,   150,   151,   151,   151,   151,   152,
+   152,   153,   153,   153,   154,   155,   155,   156,   156,   157,
+   157,   157,   157,   157,   157,   157,   158,   158,   160,   159,
+   161,   161,   162,   162,   163,   163,   163,   164,   165,   166,
+   167,   167,   167,   167,   167,   167,   167,   167,   167,   167,
+   167,   168,   168,   168,   168,   168,   168,   169,   169,   170,
+   171,   172,   172,   173,   173,   173,   174,   174,   175,   176,
+   177,   176,   176,   176,   176,   176,   176,   176,   176,   176,
+   178,   178,   179,   179,   179,   180,   180,   181,   181,   181,
+   181,   181,   181,   181,   181,   181,   181,   181,   181,   181,
+   182,   182,   182,   183,   183,   184,   184,   184,   184,   184,
+   184,   184,   184,   184,   184,   184,   184,   184,   184,   185,
+   185,   186,   186,   187,   188,   188,   189,   189,   190,   190,
+   191,   191,   191,   192,   192,   192,   192,   192,   193,   193,
+   193,   193,   193,   193,   193,   193,   193,   193,   194,   193,
+   195,   195,   195,   195,   196,   196,   197,   197,   197,   197,
+   197,   198,   199,   199,   200,   200,   201,   201,   202,   202,
+   203,   203,   203,   204,   204,   205,   206,   207,   207,   208,
+   208,   209,   209,   210,   210,   211,   211,   212,   212,   213,
+   213,   214,   214,   214,   214,   214,   215,   215,   216,   216,
+   217,   218,   219,   219,   219,   219,   220,   220,   220,   221,
+   221,   222,   223,   223,   224
 };
 
 static const short yyr2[] = {     0,
@@ -501,216 +506,221 @@
      2,     2,     0,     1,     1,     2,     1,     1,     1,     1,
      1,     0,     3,     1,     3,     2,     1,     2,     0,     1,
      4,     1,     3,     1,     3,     1,     3,     3,     2,     1,
-     3,     1,     3,     1,     0,     6,     1,     1,     4,     3,
-     3,     6,     1,     3,     1,     3,     3,     3,     1,     3,
-     1,     1,     0,     1,     1,     3,     3,     2,     3,     1,
-     1,     3,     2,     1,     1,     5,     0,     1,     1,     3,
-     2,     4,     4,     0,     1,     0,     6,     1,     2,     1,
-     1,     1,     3,     3,     3,     0,     2,     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,     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,
+     3,     1,     3,     1,     0,     6,     1,     1,     3,     3,
+     6,     1,     3,     1,     3,     3,     3,     1,     3,     1,
+     1,     0,     1,     1,     3,     3,     2,     3,     1,     1,
+     3,     2,     1,     1,     5,     0,     1,     1,     3,     2,
+     4,     3,     3,     3,     3,     3,     0,     1,     0,     6,
+     1,     2,     1,     1,     1,     3,     3,     3,     0,     2,
+     1,     4,     4,     4,     6,     6,     1,     4,     4,     1,
+     3,     1,     3,     3,     3,     1,     3,     1,     3,     1,
+     1,     1,     1,     1,     3,     3,     1,     3,     4,     3,
+     0,     3,     1,     1,     1,     1,     1,     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,     1,
-     1,     1,     1,     1,     1,     1,     0,     1,     1,     4,
-     3,     4,     1,     3,     5,     1,     3,     3,     3,     3,
-     4,     3,     1,     1,     3,     3,     3,     3,     1,     1,
-     0,     5,     1,     2,     2,     3,     1,     1,     1,     1,
-     1,     1,     1,     1,     3,     5,     1,     3,     1,     3,
-     0,     1,     1,     1,     1,     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,     2,     4,     0,     1,     1,     1,     0,     1,
-     1,     1,     1,     1,     0,     1,     1
+     1,     1,     1,     1,     0,     1,     1,     4,     3,     4,
+     1,     3,     5,     1,     3,     3,     3,     3,     4,     3,
+     1,     1,     3,     3,     3,     3,     1,     1,     0,     5,
+     1,     2,     2,     3,     1,     1,     1,     1,     1,     1,
+     1,     1,     3,     5,     1,     3,     1,     3,     0,     1,
+     1,     1,     1,     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,
+     2,     4,     0,     1,     1,     1,     0,     1,     1,     1,
+     1,     1,     0,     1,     1
 };
 
 static const short yydefact[] = {     0,
-   272,   273,     1,     2,     5,     3,     0,     0,     6,   277,
+   280,   281,     1,     2,     5,     3,     0,     0,     6,   285,
     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,   168,     0,     0,
-   169,   170,   171,     0,   172,   173,   181,   174,   175,   176,
-   177,   178,   179,   180,     0,    24,    25,    27,    28,    31,
+    18,    21,    19,     0,    17,    12,    23,   176,     0,     0,
+   177,   178,   179,     0,   180,   181,   189,   182,   183,   184,
+   185,   186,   187,   188,     0,    24,    25,    27,    28,    31,
     29,    30,    34,     0,     0,    32,     0,    49,     0,    50,
     52,    54,    36,     0,    37,     0,    42,    44,    46,     4,
-    26,   261,   119,   274,     0,   150,     0,     0,   164,   157,
-   161,   163,   151,     0,     0,   152,   156,   160,     0,     0,
-    57,    58,   153,   162,   123,     0,    33,    48,    47,     0,
-     0,    35,    38,     0,     0,     0,     0,   265,    61,    60,
-   106,   262,   269,     0,   165,   159,   158,   155,   154,     0,
-    63,     0,    65,     0,     0,     0,    51,    53,    39,    43,
-    45,     0,   267,   268,   266,     0,    59,     0,   187,   271,
-   270,   263,   120,   122,     0,     0,     0,     0,    55,   129,
-   130,   124,   125,   127,   121,   138,   145,   139,   259,   146,
-   147,   260,   136,   135,   137,   133,   131,   142,   140,   141,
-     0,   143,    40,    41,     0,    89,   261,   128,     0,   119,
-   274,   114,     0,     0,   187,   187,   107,   117,   166,   153,
-   108,     0,     0,     0,   105,   188,   189,   261,    64,    68,
-    67,    66,     0,     0,     0,     0,     0,    94,     0,     0,
-   248,    87,    87,    91,   247,   106,   264,     0,   261,     0,
-   261,     0,   261,     0,     0,   167,   261,     0,     0,     0,
-   219,   218,     0,   217,   220,     0,     0,     0,   222,     0,
-   193,   196,     0,   203,   204,   210,   209,   236,   237,   221,
-   224,   223,     0,    62,   148,    56,   126,   134,   144,   132,
-     0,    86,    95,    90,   249,    88,   246,   246,     0,   102,
-     0,    81,    84,    85,   261,   118,     0,     0,    74,    75,
-    80,   246,   261,   275,     0,   275,   258,   250,     0,   252,
-   257,   254,     0,    69,    71,    72,     0,     0,     0,   213,
-     0,     0,     0,     0,     0,     0,   191,   184,   185,   182,
-   183,     0,     0,     0,   186,     0,     0,     0,     0,     0,
-   149,     0,    92,    93,   115,     0,   109,   261,    83,   261,
-   110,   261,    78,   246,   261,   276,   111,   261,   251,     0,
-     0,   116,   261,   190,   197,   211,   214,   215,   208,   206,
-   225,     0,   238,   202,   194,   198,   199,   200,     0,   207,
-   205,     0,     0,   240,   192,    96,   103,   104,   143,    82,
-    79,    76,    77,   106,   106,   253,     0,     0,    70,     0,
-   216,   229,     0,   227,   187,     0,   201,     0,   242,   244,
-   239,     0,     0,   112,   113,   256,   255,   212,   226,     0,
-   231,   195,   243,     0,   241,   100,     0,    98,   101,   228,
-   234,   235,   233,   230,   232,   245,    97,    99,     0,     0,
-     0
+    26,   269,   122,   282,     0,   158,     0,     0,   172,   165,
+   169,   171,   159,     0,     0,   160,   164,   168,     0,     0,
+    57,    58,   161,   170,   126,     0,    33,    48,    47,     0,
+     0,    35,    38,     0,     0,     0,     0,   273,    60,    59,
+   109,   270,   277,     0,   173,   167,   166,   163,   162,     0,
+    62,     0,    64,     0,     0,     0,    51,    53,    39,    43,
+    45,     0,   275,   276,   274,     0,     0,   195,   279,   278,
+   271,   123,   125,     0,     0,     0,     0,    55,   132,   133,
+   127,   128,   130,   124,   146,   153,   147,   267,   154,   155,
+   268,   144,   143,   145,   141,   139,   150,   148,   149,     0,
+   151,    40,    41,   269,   269,     0,    88,     0,   122,   282,
+   117,     0,     0,   195,   195,   110,   120,   174,   161,   111,
+     0,     0,     0,   108,   196,   197,   269,    63,    67,    66,
+    65,     0,     0,     0,     0,     0,   137,   134,     0,   256,
+   254,   254,   254,    90,   255,     0,    86,   254,   254,    97,
+     0,   272,     0,   269,     0,   269,     0,   269,     0,     0,
+   175,   269,     0,     0,     0,   227,   226,     0,   225,   228,
+     0,     0,     0,   230,     0,   201,   204,     0,   211,   212,
+   218,   217,   244,   245,   229,   232,   231,     0,    61,   156,
+    56,   129,   142,   152,   140,   257,    96,     0,    93,    95,
+     0,    87,   254,    92,    94,     0,    85,    98,    89,     0,
+   105,     0,    80,    83,    84,   269,   121,     0,     0,    73,
+    74,    79,   254,   269,   283,     0,   283,   266,   258,     0,
+   260,   265,   262,     0,    68,    70,    71,     0,     0,     0,
+   221,     0,     0,     0,     0,     0,     0,   199,   192,   193,
+   190,   191,     0,     0,     0,   194,     0,     0,     0,     0,
+     0,   157,   135,   136,   138,    91,     0,   118,     0,   112,
+   269,    82,   269,   113,   269,    77,   254,   269,   284,   114,
+   269,   259,     0,     0,   119,   269,   198,   205,   219,   222,
+   223,   216,   214,   233,     0,   246,   210,   202,   206,   207,
+   208,     0,   215,   213,     0,     0,   248,   200,    99,   106,
+   107,   151,    81,    78,    75,    76,   109,   109,   261,     0,
+     0,    69,     0,   224,   237,     0,   235,   195,     0,   209,
+     0,   250,   252,   247,     0,     0,   115,   116,   264,   263,
+   220,   234,     0,   239,   203,   251,     0,   249,   103,     0,
+   101,   104,   131,   236,   242,   243,   241,   238,   240,   253,
+   100,   102,     0,     0,     0
 };
 
-static const short yydefgoto[] = {   429,
+static const short yydefgoto[] = {   443,
      3,     4,     8,     9,    13,    14,    25,    26,    27,    55,
-    56,    57,   107,    58,    74,   184,    75,    76,    77,    59,
-    69,    70,    60,   213,   100,    61,   130,   131,   303,   304,
-   288,   289,   290,   281,   282,   119,   277,   185,   186,   272,
-   273,   403,   417,   418,   291,   292,   148,   149,   197,   101,
-   162,   163,   187,   188,    62,   177,   215,   178,   249,   266,
-   102,   103,   201,   104,   323,   324,   326,   205,   206,   207,
-   250,   251,   252,   390,   312,   253,   254,   255,   256,   393,
-   394,   424,   425,   257,   258,   259,   373,   374,   399,   224,
-   225,   236,   299,   300,   260,   226,   122,   123,   146,   152,
-   261,   105,   345,   262
+    56,    57,   107,    58,    74,   183,    75,    76,    77,    59,
+    69,    70,    60,   212,   100,    61,   130,   131,   314,   315,
+   299,   300,   301,   292,   293,   119,   283,   186,   187,   287,
+   288,   416,   430,   431,   302,   303,   147,   148,   196,   101,
+   161,   162,   432,   163,   222,   223,    62,   176,   214,   177,
+   254,   271,   102,   103,   200,   104,   334,   335,   337,   204,
+   205,   206,   255,   256,   257,   403,   323,   258,   259,   260,
+   261,   406,   407,   438,   439,   262,   263,   264,   386,   387,
+   412,   224,   225,   241,   310,   311,   265,   121,   122,   123,
+   146,   151,   266,   105,   358,   267
 };
 
-static const short yypact[] = {     9,
--32768,-32768,     9,-32768,   -76,-32768,    47,    15,-32768,-32768,
--32768,-32768,    55,-32768,   -24,   158,-32768,-32768,   130,    95,
-    81,    97,   162,   128,   228,   158,-32768,   141,-32768,-32768,
--32768,-32768,-32768,   213,-32768,-32768,   419,-32768,   224,    39,
--32768,-32768,-32768,   157,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,   211,   419,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,   344,   571,-32768,   151,-32768,    79,-32768,
-   164,-32768,-32768,    46,-32768,   -36,-32768,   183,-32768,-32768,
--32768,   -11,   173,-32768,   229,-32768,   235,   249,-32768,-32768,
--32768,-32768,-32768,   270,   241,-32768,-32768,-32768,   646,   322,
--32768,-32768,-32768,-32768,   214,   323,-32768,-32768,-32768,   168,
-   226,-32768,-32768,     9,   168,   234,   225,     4,-32768,-32768,
-   250,-32768,   -22,   168,-32768,-32768,-32768,-32768,-32768,    96,
--32768,   230,   237,   240,   295,   185,-32768,-32768,   -76,-32768,
--32768,   269,-32768,-32768,-32768,   333,-32768,   496,     0,-32768,
--32768,-32768,-32768,-32768,   347,   646,   343,   168,-32768,-32768,
--32768,   243,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+static const short yypact[] = {   200,
+-32768,-32768,   200,-32768,   -83,-32768,    60,    10,-32768,-32768,
+-32768,-32768,    62,-32768,   -48,   157,-32768,-32768,    20,    48,
+    23,    44,    98,    89,   212,   157,-32768,   117,-32768,-32768,
+-32768,-32768,-32768,   207,-32768,-32768,   431,-32768,   226,    42,
+-32768,-32768,-32768,   126,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,   208,   431,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,   242,   591,-32768,   148,-32768,    94,-32768,
+   146,-32768,-32768,    52,-32768,   -24,-32768,   160,-32768,-32768,
+-32768,     5,   156,-32768,   196,-32768,   202,   214,-32768,-32768,
+-32768,-32768,-32768,   244,   216,-32768,-32768,-32768,   666,   298,
+-32768,-32768,-32768,-32768,   193,   309,-32768,-32768,-32768,   233,
+   213,-32768,-32768,   200,   233,   218,   220,    11,-32768,-32768,
+-32768,-32768,   -15,   233,-32768,-32768,-32768,-32768,-32768,   -25,
+-32768,   219,   221,   228,   248,   423,-32768,-32768,   -83,-32768,
+-32768,   243,-32768,-32768,-32768,   317,   516,    53,-32768,-32768,
+-32768,-32768,-32768,   328,   666,   331,   233,-32768,-32768,-32768,
+   227,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   232,
+   235,-32768,-32768,    49,    12,   -19,-32768,   224,   105,   238,
+   312,   246,   282,    82,    88,-32768,-32768,-32768,   250,-32768,
+   253,   254,   361,-32768,-32768,   255,   237,-32768,-32768,-32768,
+-32768,   356,   274,   356,   331,   423,   251,-32768,   423,-32768,
+    19,   -18,    19,-32768,-32768,   263,   273,   -18,    19,   269,
+   243,-32768,   350,    15,   268,     8,   311,     8,   313,    39,
+-32768,     7,   361,   281,   355,-32768,-32768,    87,-32768,-32768,
+   264,   200,   361,-32768,   276,    97,   288,   290,    87,-32768,
+-32768,-32768,   291,-32768,-32768,-32768,-32768,   361,-32768,-32768,
+   391,-32768,   391,-32768,-32768,-32768,-32768,   289,-32768,-32768,
+   384,-32768,    19,-32768,-32768,   315,-32768,-32768,-32768,   331,
+   293,    36,-32768,-32768,-32768,   237,-32768,   330,   295,   292,
+-32768,-32768,    19,   237,   331,   297,   331,-32768,-32768,    63,
+-32768,-32768,   299,   122,-32768,-32768,-32768,   302,   379,   306,
+   300,   304,   172,   308,   314,   307,   310,-32768,-32768,-32768,
+-32768,-32768,   318,   379,   379,-32768,   379,   361,   266,   323,
+   332,-32768,-32768,-32768,-32768,-32768,   316,-32768,   230,-32768,
+    15,-32768,   237,-32768,     2,-32768,    19,   237,-32768,-32768,
+   237,-32768,    68,   230,-32768,     7,-32768,-32768,-32768,-32768,
+   303,-32768,-32768,   255,     6,-32768,-32768,   336,-32768,-32768,
+-32768,   333,-32768,-32768,    13,   142,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   339,
+   340,-32768,   356,-32768,-32768,   144,-32768,    53,   361,-32768,
+   331,   337,-32768,-32768,   323,   190,-32768,-32768,-32768,-32768,
+   391,-32768,     6,     3,   215,   337,   331,-32768,-32768,    27,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-   246,   242,-32768,-32768,   105,-32768,    63,-32768,   244,    73,
-   255,   317,   257,   293,   -34,    51,-32768,-32768,-32768,   259,
--32768,   261,   260,    80,-32768,-32768,   264,   258,-32768,-32768,
--32768,-32768,   369,   269,   369,   343,   185,   279,   269,   185,
--32768,   288,   288,-32768,-32768,-32768,-32768,   350,     5,   233,
-     8,   309,     8,   310,    34,-32768,     6,    80,   283,   356,
--32768,-32768,    27,-32768,-32768,   271,     9,    80,-32768,   276,
-   181,   289,   278,    27,-32768,-32768,-32768,   284,-32768,-32768,
--32768,-32768,    80,-32768,-32768,   384,-32768,   384,-32768,-32768,
-   308,-32768,-32768,-32768,-32768,-32768,    -9,    -9,   343,   285,
-   117,-32768,-32768,-32768,   258,-32768,   328,   294,   291,-32768,
--32768,    -9,   258,   343,   296,   343,-32768,-32768,   119,-32768,
--32768,   299,   152,-32768,-32768,-32768,   300,   231,   311,   301,
-   314,   245,   307,   313,   315,   316,-32768,-32768,-32768,-32768,
--32768,   321,   231,   231,-32768,   231,    80,   287,   304,   318,
--32768,   325,-32768,-32768,-32768,   292,-32768,     5,-32768,   258,
--32768,     2,-32768,    -9,   258,-32768,-32768,   258,-32768,    60,
-   292,-32768,     6,-32768,-32768,-32768,-32768,   320,-32768,-32768,
-   264,    31,-32768,-32768,   331,-32768,-32768,-32768,   327,-32768,
--32768,    10,   160,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,   334,   335,-32768,   369,
--32768,-32768,   161,-32768,     0,    80,-32768,   343,   286,-32768,
--32768,   304,   159,-32768,-32768,-32768,-32768,   384,-32768,    31,
-   129,   215,   286,   343,-32768,-32768,    20,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   428,   445,
--32768
+-32768,-32768,   425,   451,-32768
 };
 
 static const short yypgoto[] = {-32768,
--32768,   443,-32768,   312,-32768,   434,-32768,-32768,   422,-32768,
--32768,   394,-32768,-32768,-32768,-32768,   378,-32768,   338,-32768,
--32768,   345,-32768,-32768,   389,-32768,-32768,   302,-32768,   103,
-   227,-32768,   115,-32768,   123,-32768,   239,-32768,   247,-32768,
--32768,-32768,-32768,    48,  -218,   -77,-32768,   -64,-32768,  -133,
--32768,   253,  -184,  -118,-32768,   -73,-32768,  -266,   -75,  -206,
-   -72,   324,-32768,    -6,-32768,-32768,-32768,  -188,-32768,   155,
-  -161,    68,   -49,-32768,   219,-32768,  -284,-32768,-32768,-32768,
-    64,-32768,-32768,-32768,-32768,-32768,-32768,    74,    83,  -212,
--32768,-32768,-32768,   127,  -116,   -80,-32768,-32768,-32768,-32768,
-     1,-32768,   182,    -7
+-32768,   420,-32768,   320,-32768,   439,-32768,-32768,   427,-32768,
+-32768,   398,-32768,-32768,-32768,-32768,   381,-32768,   342,-32768,
+-32768,   352,-32768,-32768,   395,-32768,-32768,   319,-32768,    99,
+   225,-32768,   109,-32768,   118,-32768,-32768,-32768,   241,-32768,
+-32768,-32768,-32768,    43,  -229,   -80,-32768,   -75,-32768,  -103,
+-32768,   265,-32768,  -253,   294,   305,-32768,   -28,-32768,  -270,
+   -78,  -211,    -3,   338,-32768,   120,-32768,-32768,-32768,  -187,
+-32768,   153,  -171,    71,  -236,-32768,   234,-32768,  -287,-32768,
+-32768,-32768,    66,-32768,-32768,-32768,-32768,-32768,-32768,    76,
+    83,  -210,-32768,-32768,-32768,   132,  -127,  -135,-32768,-32768,
+-32768,-32768,     1,-32768,   189,    -7
 };
 
 
-#define	YYLAST		742
+#define	YYLAST		762
 
 
 static const short yytable[] = {    15,
-     5,   121,   223,     5,   120,    15,   232,   234,   268,    10,
-   283,   114,    10,    10,   198,    10,   164,    10,   117,   180,
-   150,     1,     2,   416,   143,   220,   132,   360,     7,    65,
-    63,   151,    72,   287,   160,   161,    79,    64,    10,   287,
-    71,    10,   169,   371,    78,   172,    10,   203,    65,    63,
-    16,     1,     2,    10,    10,    11,    64,    67,     1,     2,
-   179,   221,    10,    11,   333,   334,    79,    10,   169,   377,
-   231,   172,   204,   115,    78,   199,   307,   160,   161,   343,
-   144,   203,    19,   132,   387,   167,   316,    10,   169,   170,
-   171,   172,     1,     2,   145,   164,   286,   220,   239,   133,
-   180,   330,    72,   180,   118,   280,   204,    79,   280,   222,
-    71,   280,   240,   -73,   139,    78,   154,   118,   301,   283,
-   118,   118,   398,   118,   153,   427,   241,   242,   182,   310,
-   264,   383,   203,   221,   392,   165,   181,   297,    28,   298,
-   311,   179,   243,   270,   179,   421,   275,    68,   202,   210,
-   212,   284,    12,    29,   112,   233,   133,   204,   211,   305,
-    17,   244,   416,   297,    10,   369,    30,   245,  -246,     1,
-     2,    20,  -246,   160,   161,    10,   246,  -272,   118,    21,
-     1,     2,    31,   408,   247,   124,   248,   109,   110,   166,
-   167,   168,    10,   169,   170,   171,   172,     1,     2,   422,
-    22,   155,    23,   423,    73,   156,   411,   339,   269,   182,
-   218,    24,   182,    33,   219,   344,    32,   181,   419,   378,
-   181,   285,   337,   293,   349,   293,   338,   302,   350,   306,
-    34,   173,   419,   301,   388,    37,   167,    66,    10,   169,
-   170,   171,   172,     1,     2,    83,    84,   315,    36,   174,
-   167,    80,    10,   169,   170,   171,   172,   352,   355,   108,
-   284,   353,   381,   240,   384,   401,   409,   385,   111,   402,
-   410,   335,   175,   366,   367,   305,   368,   241,   242,   318,
-   319,   320,   321,   160,   161,   124,   346,   116,   346,   176,
-   322,   241,   167,   243,    10,   169,   170,   171,   172,    10,
-   169,   313,   314,   172,     1,     2,   359,     1,     2,   160,
-   161,   125,   244,   318,   319,   320,   321,   126,   245,   404,
-   405,   127,   128,   129,   134,   136,   135,   246,   379,   142,
-   285,   138,   245,   241,   293,   247,   181,   248,   147,   141,
-   157,   189,   302,   379,   159,   306,    82,   158,   370,   208,
-    10,   181,   217,   228,   395,   214,    83,    84,   216,  -273,
-   227,   229,   230,   235,   400,   237,   238,    85,    38,    86,
-   263,    87,   265,   118,   245,   271,   279,   276,   294,   296,
-   308,    88,   309,   317,   327,    89,   325,   331,   329,    90,
-   400,   332,    91,    41,    42,    43,   336,   340,   414,   341,
-   342,   347,   395,    92,    45,   351,   426,   354,    93,    46,
-    94,    47,    95,   204,   357,   356,   358,   362,   372,    48,
-   363,    96,    97,   364,   365,   375,    10,   430,    49,   376,
-    50,     1,     2,   391,   397,    51,    98,    52,    53,    54,
-   396,   406,   407,    38,   431,     6,    18,    35,    99,    81,
-   183,   113,   140,   106,   137,   389,   382,   209,    39,   295,
-   380,   278,    40,   412,   428,   274,   267,   361,    41,    42,
-    43,   200,   328,   420,    44,   415,   386,   348,     0,    45,
-   413,     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,   190,   191,
-    51,     0,    52,    53,    54,   192,     0,     0,     0,    85,
-    38,    86,     0,    87,   193,     0,     0,     0,     0,     0,
+     5,   120,   273,     5,   294,    15,   237,   239,   179,    10,
+   277,   279,   280,    10,    10,    10,   219,   284,   285,   435,
+    10,     7,    10,   114,     1,   217,   218,   149,    28,    65,
+   429,   143,    72,   298,   117,   373,    79,    64,   150,   298,
+    71,   159,   160,   197,    78,    16,    10,   168,    65,    10,
+   171,   384,   220,   219,     1,     2,    64,   178,    19,    10,
+    67,     1,   217,   218,     1,     2,    79,    10,    11,    10,
+    11,   318,   346,   436,    78,    10,   168,   437,   390,   171,
+   154,   327,   368,   219,   155,   115,   230,   144,   179,   220,
+   231,   179,   356,   400,   278,   132,   341,   379,   380,   133,
+   381,   145,    72,   221,   227,   291,    29,    79,    30,   405,
+    71,   291,   312,   -72,   139,    78,   153,   118,   291,   220,
+   118,   294,   118,   118,   152,   411,   269,   118,   181,    31,
+   118,   297,   441,    10,   202,   164,   180,   178,     1,     2,
+   178,   350,   308,   198,   309,   351,   396,   201,   209,   211,
+    68,   132,    32,   295,  -254,   133,    63,   210,  -254,   203,
+   112,   316,   433,   202,   118,    12,   382,    17,   362,   202,
+    20,   308,   363,    73,    33,    63,   433,   166,    21,    10,
+   168,   169,   170,   171,   226,   226,   236,   275,   203,   321,
+   276,   421,   238,   429,   203,   329,   330,   331,   332,    22,
+   322,    23,   109,   110,   159,   160,   333,   274,   181,  -280,
+    24,   181,     1,     2,    34,   352,   180,   124,   246,   180,
+   424,   391,   397,   357,    36,   398,   296,   365,   304,    37,
+   304,   366,   313,   372,   317,   312,   401,    10,   168,    66,
+    10,   171,     1,     2,    82,     1,     2,   414,    80,   422,
+   111,   415,   326,   423,    83,    84,   108,   184,   185,   250,
+     1,     2,   159,   160,   116,    85,    38,    86,   124,    87,
+   295,   166,   394,    10,   168,   169,   170,   171,   125,    88,
+    83,    84,   348,    89,   126,   316,   127,    90,   159,   160,
+    91,    41,    42,    43,   324,   325,   128,   359,   129,   359,
+   134,    92,    45,   343,   344,   135,    93,    46,    94,    47,
+    95,   136,   246,   329,   330,   331,   332,    48,   138,    96,
+    97,   417,   418,   141,   142,   188,    49,   383,    50,   156,
+   207,   157,   158,    51,    98,    52,    53,    54,    10,   213,
+   232,   392,  -281,   296,   215,   216,    99,   304,   233,   180,
+   234,   235,   118,   250,   240,   313,   392,   242,   317,   270,
+   243,   268,   282,  -281,   180,   286,   166,   408,    10,   168,
+   169,   170,   171,     1,     2,   281,   290,   413,   319,   244,
+   305,   320,   307,   328,   166,   336,    10,   168,   169,   170,
+   171,     1,     2,   245,   342,   340,   338,   345,   347,   353,
+   354,   355,   360,   413,   349,   364,   371,   246,   247,   367,
+   369,   245,   376,   370,   203,   408,   404,   377,   375,   440,
+   389,   378,     6,   248,   444,   246,   247,   165,   166,   167,
+    10,   168,   169,   170,   171,     1,     2,   385,    10,   388,
+   410,   248,   249,     1,     2,   409,   419,   420,   250,   427,
+   445,    18,    35,    81,   113,    38,   140,   251,   182,   106,
+   249,   137,   306,   395,   402,   252,   250,   253,   393,   172,
+    39,   289,   442,   208,    40,   251,   374,   272,   228,   425,
+    41,    42,    43,   252,   199,   253,    44,   173,   434,   229,
+   428,    45,   339,   426,   399,   361,    46,     0,    47,     0,
+     0,     0,     0,     0,     0,     0,    48,     0,     0,     0,
+   174,     0,     0,     0,     0,    49,     0,    50,     0,     0,
+     0,     0,    51,     0,    52,    53,    54,   175,   189,   190,
+     0,     0,     0,     0,     0,   191,     0,     0,     0,    85,
+    38,    86,     0,    87,   192,     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,   194,     0,    92,    45,     0,     0,     0,
+     0,     0,     0,   193,     0,    92,    45,     0,     0,     0,
     93,    46,    94,    47,    95,     0,     0,     0,     0,     0,
-     0,    48,     0,    96,    97,   195,   196,     0,     0,     0,
+     0,    48,     0,    96,    97,   194,   195,     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,
@@ -731,58 +741,60 @@
 };
 
 static const short yycheck[] = {     7,
-     0,    82,   187,     3,    82,    13,   195,   196,   215,     8,
-   229,    48,     8,     8,   148,     8,   135,     8,    30,   136,
-    43,    13,    14,     4,    21,    35,    99,   312,   105,    37,
-    37,    54,    40,    32,    15,    16,    44,    37,     8,    32,
-    40,     8,     9,   328,    44,    12,     8,    82,    56,    56,
-    36,    13,    14,     8,     8,     9,    56,    19,    13,    14,
-   136,    71,     8,     9,   277,   278,    74,     8,     9,   336,
-   105,    12,   107,   110,    74,   148,   238,    15,    16,   292,
-    77,    82,   107,   156,   351,     6,   248,     8,     9,    10,
-    11,    12,    13,    14,    91,   214,   230,    35,    19,    99,
-   217,   263,   110,   220,   116,   104,   107,   115,   104,   187,
-   110,   104,    33,   106,   114,   115,   124,   116,   235,   338,
-   116,   116,   113,   116,   124,   106,    47,    48,   136,   103,
-   208,   344,    82,    71,   104,   135,   136,   104,     9,   106,
-   114,   217,    63,   217,   220,    17,   220,   109,   148,   157,
-   158,   229,   106,    59,   109,   105,   156,   107,   158,   237,
-   106,    82,     4,   104,     8,   327,    86,    88,   106,    13,
-    14,    14,   110,    15,    16,     8,    97,   105,   116,    22,
-    13,    14,    86,   390,   105,   113,   107,   109,   110,     5,
-     6,     7,     8,     9,    10,    11,    12,    13,    14,    71,
-    43,   106,    45,    75,    48,   110,   395,   285,   216,   217,
-   106,    54,   220,    86,   110,   293,    55,   217,   403,   336,
-   220,   229,   106,   231,   106,   233,   110,   235,   110,   237,
-     3,    47,   417,   350,   351,    23,     6,    14,     8,     9,
-    10,    11,    12,    13,    14,    13,    14,   247,   108,    65,
-     6,    41,     8,     9,    10,    11,    12,   106,   308,   109,
-   338,   110,   340,    33,   345,   106,   106,   348,   105,   110,
-   110,   279,    88,   323,   324,   353,   326,    47,    48,    99,
-   100,   101,   102,    15,    16,   113,   294,   105,   296,   105,
-   110,    47,     6,    63,     8,     9,    10,    11,    12,     8,
-     9,    31,    32,    12,    13,    14,    62,    13,    14,    15,
-    16,    83,    82,    99,   100,   101,   102,    83,    88,   384,
-   385,    73,    53,    83,     3,     3,   113,    97,   336,   105,
-   338,   106,    88,    47,   342,   105,   336,   107,    89,   106,
-   111,     9,   350,   351,   105,   353,     3,   111,    62,     3,
-     8,   351,   111,    37,   362,   113,    13,    14,   113,   105,
-   117,   105,    70,   105,   372,   105,   107,    24,    25,    26,
-   107,    28,     4,   116,    88,    97,    27,    90,    70,    70,
-    98,    38,    27,   108,   107,    42,    98,     4,   105,    46,
-   398,    84,    49,    50,    51,    52,   112,    70,   113,   106,
-   110,   106,   410,    60,    61,   107,   414,   108,    65,    66,
-    67,    68,    69,   107,   114,   105,   103,   105,   115,    76,
-   106,    78,    79,   108,   104,   108,     8,     0,    85,   105,
-    87,    13,    14,   114,   108,    92,    93,    94,    95,    96,
-   110,   108,   108,    25,     0,     3,    13,    26,   105,    56,
-   139,    74,   115,    65,   110,   353,   342,   156,    40,   233,
-   338,   223,    44,   396,   417,   219,   214,   313,    50,    51,
-    52,   148,   254,   410,    56,   402,   350,   296,    -1,    61,
-   398,    -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,
+     0,    82,   214,     3,   234,    13,   194,   195,   136,     8,
+   221,   222,   223,     8,     8,     8,    35,   228,   229,    17,
+     8,   105,     8,    48,    13,    14,    15,    43,     9,    37,
+     4,    21,    40,    32,    30,   323,    44,    37,    54,    32,
+    40,    15,    16,   147,    44,    36,     8,     9,    56,     8,
+    12,   339,    71,    35,    13,    14,    56,   136,   107,     8,
+    19,    13,    14,    15,    13,    14,    74,     8,     9,     8,
+     9,   243,   283,    71,    74,     8,     9,    75,   349,    12,
+   106,   253,   319,    35,   110,   110,   106,    77,   216,    71,
+   110,   219,   303,   364,   113,    99,   268,   334,   335,    99,
+   337,    91,   110,   184,   185,   104,    59,   115,    86,   104,
+   110,   104,   240,   106,   114,   115,   124,   116,   104,    71,
+   116,   351,   116,   116,   124,   113,   207,   116,   136,    86,
+   116,   235,   106,     8,    82,   135,   136,   216,    13,    14,
+   219,   106,   104,   147,   106,   110,   357,   147,   156,   157,
+   109,   155,    55,   234,   106,   155,    37,   157,   110,   107,
+   109,   242,   416,    82,   116,   106,   338,   106,   106,    82,
+    14,   104,   110,    48,    86,    56,   430,     6,    22,     8,
+     9,    10,    11,    12,   184,   185,   105,   216,   107,   103,
+   219,   403,   105,     4,   107,    99,   100,   101,   102,    43,
+   114,    45,   109,   110,    15,    16,   110,   215,   216,   105,
+    54,   219,    13,    14,     3,   296,   216,   113,    47,   219,
+   408,   349,   358,   304,   108,   361,   234,   106,   236,    23,
+   238,   110,   240,    62,   242,   363,   364,     8,     9,    14,
+     8,    12,    13,    14,     3,    13,    14,   106,    41,   106,
+   105,   110,   252,   110,    13,    14,   109,    15,    16,    88,
+    13,    14,    15,    16,   105,    24,    25,    26,   113,    28,
+   351,     6,   353,     8,     9,    10,    11,    12,    83,    38,
+    13,    14,   290,    42,    83,   366,    73,    46,    15,    16,
+    49,    50,    51,    52,    31,    32,    53,   305,    83,   307,
+     3,    60,    61,    15,    16,   113,    65,    66,    67,    68,
+    69,     3,    47,    99,   100,   101,   102,    76,   106,    78,
+    79,   397,   398,   106,   105,     9,    85,    62,    87,   111,
+     3,   111,   105,    92,    93,    94,    95,    96,     8,   113,
+   117,   349,   105,   351,   113,   111,   105,   355,    37,   349,
+   105,    70,   116,    88,   105,   363,   364,   105,   366,     4,
+   107,   107,    90,   113,   364,    97,     6,   375,     8,     9,
+    10,    11,    12,    13,    14,   113,    27,   385,    98,    19,
+    70,    27,    70,   108,     6,    98,     8,     9,    10,    11,
+    12,    13,    14,    33,     4,   105,   107,    14,    84,    70,
+   106,   110,   106,   411,   112,   107,   103,    47,    48,   108,
+   105,    33,   106,   114,   107,   423,   114,   108,   105,   427,
+   105,   104,     3,    63,     0,    47,    48,     5,     6,     7,
+     8,     9,    10,    11,    12,    13,    14,   115,     8,   108,
+   108,    63,    82,    13,    14,   110,   108,   108,    88,   113,
+     0,    13,    26,    56,    74,    25,   115,    97,   139,    65,
+    82,   110,   238,   355,   366,   105,    88,   107,   351,    47,
+    40,   231,   430,   155,    44,    97,   324,   213,   185,   409,
+    50,    51,    52,   105,   147,   107,    56,    65,   423,   185,
+   415,    61,   259,   411,   363,   307,    66,    -1,    68,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    76,    -1,    -1,    -1,
+    88,    -1,    -1,    -1,    -1,    85,    -1,    87,    -1,    -1,
+    -1,    -1,    92,    -1,    94,    95,    96,   105,    13,    14,
+    -1,    -1,    -1,    -1,    -1,    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,
@@ -1351,13 +1363,13 @@
   switch (yyn) {
 
 case 1:
-#line 321 "asn1p_y.y"
+#line 323 "asn1p_y.y"
 {
 		*(void **)param = yyvsp[0].a_grammar;
 	;
     break;}
 case 2:
-#line 327 "asn1p_y.y"
+#line 329 "asn1p_y.y"
 {
 		yyval.a_grammar = asn1p_new();
 		checkmem(yyval.a_grammar);
@@ -1365,14 +1377,14 @@
 	;
     break;}
 case 3:
-#line 332 "asn1p_y.y"
+#line 334 "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 353 "asn1p_y.y"
+#line 355 "asn1p_y.y"
 {
 
 		if(yyvsp[-1].a_module) {
@@ -1389,27 +1401,27 @@
 	;
     break;}
 case 5:
-#line 374 "asn1p_y.y"
+#line 376 "asn1p_y.y"
 { yyval.a_oid = 0; ;
     break;}
 case 6:
-#line 375 "asn1p_y.y"
+#line 377 "asn1p_y.y"
 { yyval.a_oid = yyvsp[0].a_oid; ;
     break;}
 case 7:
-#line 379 "asn1p_y.y"
+#line 381 "asn1p_y.y"
 {
 		yyval.a_oid = yyvsp[-1].a_oid;
 	;
     break;}
 case 8:
-#line 382 "asn1p_y.y"
+#line 384 "asn1p_y.y"
 {
 		yyval.a_oid = 0;
 	;
     break;}
 case 9:
-#line 388 "asn1p_y.y"
+#line 390 "asn1p_y.y"
 {
 		yyval.a_oid = asn1p_oid_new();
 		asn1p_oid_add_arc(yyval.a_oid, &yyvsp[0].a_oid_arc);
@@ -1418,7 +1430,7 @@
 	;
     break;}
 case 10:
-#line 394 "asn1p_y.y"
+#line 396 "asn1p_y.y"
 {
 		yyval.a_oid = yyvsp[-1].a_oid;
 		asn1p_oid_add_arc(yyval.a_oid, &yyvsp[0].a_oid_arc);
@@ -1427,74 +1439,74 @@
 	;
     break;}
 case 11:
-#line 403 "asn1p_y.y"
+#line 405 "asn1p_y.y"
 {					/* iso */
 		yyval.a_oid_arc.name = yyvsp[0].tv_str;
 		yyval.a_oid_arc.number = -1;
 	;
     break;}
 case 12:
-#line 407 "asn1p_y.y"
+#line 409 "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 411 "asn1p_y.y"
+#line 413 "asn1p_y.y"
 {					/* 1 */
 		yyval.a_oid_arc.name = 0;
 		yyval.a_oid_arc.number = yyvsp[0].a_int;
 	;
     break;}
 case 14:
-#line 421 "asn1p_y.y"
+#line 423 "asn1p_y.y"
 { yyval.a_module_flags = MSF_NOFLAGS; ;
     break;}
 case 15:
-#line 422 "asn1p_y.y"
+#line 424 "asn1p_y.y"
 {
 		yyval.a_module_flags = yyvsp[0].a_module_flags;
 	;
     break;}
 case 16:
-#line 431 "asn1p_y.y"
+#line 433 "asn1p_y.y"
 {
 		yyval.a_module_flags = yyvsp[0].a_module_flags;
 	;
     break;}
 case 17:
-#line 434 "asn1p_y.y"
+#line 436 "asn1p_y.y"
 {
 		yyval.a_module_flags = yyvsp[-1].a_module_flags | yyvsp[0].a_module_flags;
 	;
     break;}
 case 18:
-#line 443 "asn1p_y.y"
+#line 445 "asn1p_y.y"
 {
 		yyval.a_module_flags = MSF_EXPLICIT_TAGS;
 	;
     break;}
 case 19:
-#line 446 "asn1p_y.y"
+#line 448 "asn1p_y.y"
 {
 		yyval.a_module_flags = MSF_IMPLICIT_TAGS;
 	;
     break;}
 case 20:
-#line 449 "asn1p_y.y"
+#line 451 "asn1p_y.y"
 {
 		yyval.a_module_flags = MSF_AUTOMATIC_TAGS;
 	;
     break;}
 case 21:
-#line 452 "asn1p_y.y"
+#line 454 "asn1p_y.y"
 {
 		yyval.a_module_flags = MSF_EXTENSIBILITY_IMPLIED;
 	;
     break;}
 case 22:
-#line 456 "asn1p_y.y"
+#line 458 "asn1p_y.y"
 {
 		/* X.680Amd1 specifies TAG and XER */
 		if(strcmp(yyvsp[-1].tv_str, "TAG") == 0) {
@@ -1512,23 +1524,23 @@
 	;
     break;}
 case 23:
-#line 477 "asn1p_y.y"
+#line 479 "asn1p_y.y"
 { yyval.a_module = 0; ;
     break;}
 case 24:
-#line 478 "asn1p_y.y"
+#line 480 "asn1p_y.y"
 {
 		yyval.a_module = yyvsp[0].a_module;
 	;
     break;}
 case 25:
-#line 487 "asn1p_y.y"
+#line 489 "asn1p_y.y"
 {
 		yyval.a_module = yyvsp[0].a_module;
 	;
     break;}
 case 26:
-#line 490 "asn1p_y.y"
+#line 492 "asn1p_y.y"
 {
 		yyval.a_module = yyvsp[-1].a_module;
 
@@ -1558,13 +1570,13 @@
 	;
     break;}
 case 27:
-#line 523 "asn1p_y.y"
+#line 525 "asn1p_y.y"
 {
 		yyval.a_module = yyvsp[0].a_module;
 	;
     break;}
 case 28:
-#line 526 "asn1p_y.y"
+#line 528 "asn1p_y.y"
 {
 		yyval.a_module = asn1p_module_new();
 		checkmem(yyval.a_module);
@@ -1576,7 +1588,7 @@
 	;
     break;}
 case 29:
-#line 535 "asn1p_y.y"
+#line 537 "asn1p_y.y"
 {
 		yyval.a_module = asn1p_module_new();
 		checkmem(yyval.a_module);
@@ -1586,7 +1598,7 @@
 	;
     break;}
 case 30:
-#line 542 "asn1p_y.y"
+#line 544 "asn1p_y.y"
 {
 		yyval.a_module = asn1p_module_new();
 		checkmem(yyval.a_module);
@@ -1596,7 +1608,7 @@
 	;
     break;}
 case 31:
-#line 555 "asn1p_y.y"
+#line 557 "asn1p_y.y"
 {
 		yyval.a_module = asn1p_module_new();
 		checkmem(yyval.a_module);
@@ -1606,11 +1618,11 @@
 	;
     break;}
 case 32:
-#line 563 "asn1p_y.y"
+#line 565 "asn1p_y.y"
 { asn1p_lexer_hack_push_encoding_control(); ;
     break;}
 case 33:
-#line 564 "asn1p_y.y"
+#line 566 "asn1p_y.y"
 {
 		fprintf(stderr,
 			"WARNING: ENCODING-CONTROL %s "
@@ -1621,7 +1633,7 @@
 	;
     break;}
 case 34:
-#line 576 "asn1p_y.y"
+#line 578 "asn1p_y.y"
 {
 		return yyerror(
 			"Attempt to redefine a standard basic string type, "
@@ -1629,7 +1641,7 @@
 	;
     break;}
 case 35:
-#line 589 "asn1p_y.y"
+#line 591 "asn1p_y.y"
 {
 		if(!saved_aid && 0)
 			return yyerror("Unterminated IMPORTS FROM, "
@@ -1639,13 +1651,13 @@
 	;
     break;}
 case 36:
-#line 599 "asn1p_y.y"
+#line 601 "asn1p_y.y"
 {
 		return yyerror("Empty IMPORTS list");
 	;
     break;}
 case 37:
-#line 605 "asn1p_y.y"
+#line 607 "asn1p_y.y"
 {
 		yyval.a_module = asn1p_module_new();
 		checkmem(yyval.a_module);
@@ -1653,22 +1665,22 @@
 	;
     break;}
 case 38:
-#line 610 "asn1p_y.y"
+#line 612 "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 617 "asn1p_y.y"
+#line 619 "asn1p_y.y"
 { memset(&yyval.a_aid, 0, sizeof(yyval.a_aid)); ;
     break;}
 case 40:
-#line 618 "asn1p_y.y"
+#line 620 "asn1p_y.y"
 { yyval.a_aid.oid = yyvsp[0].a_oid; ;
     break;}
 case 41:
-#line 622 "asn1p_y.y"
+#line 624 "asn1p_y.y"
 {
 		yyval.a_xports = yyvsp[-3].a_xports;
 		yyval.a_xports->fromModuleName = yyvsp[-1].tv_str;
@@ -1679,7 +1691,7 @@
 	;
     break;}
 case 42:
-#line 633 "asn1p_y.y"
+#line 635 "asn1p_y.y"
 {
 		yyval.a_xports = asn1p_xports_new();
 		checkmem(yyval.a_xports);
@@ -1687,14 +1699,14 @@
 	;
     break;}
 case 43:
-#line 638 "asn1p_y.y"
+#line 640 "asn1p_y.y"
 {
 		yyval.a_xports = yyvsp[-2].a_xports;
 		TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
 	;
     break;}
 case 44:
-#line 645 "asn1p_y.y"
+#line 647 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1703,7 +1715,7 @@
 	;
     break;}
 case 45:
-#line 651 "asn1p_y.y"
+#line 653 "asn1p_y.y"
 {		/* Completely equivalent to above */
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1712,7 +1724,7 @@
 	;
     break;}
 case 46:
-#line 657 "asn1p_y.y"
+#line 659 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1721,19 +1733,19 @@
 	;
     break;}
 case 47:
-#line 666 "asn1p_y.y"
+#line 668 "asn1p_y.y"
 {
 		yyval.a_xports = yyvsp[-1].a_xports;
 	;
     break;}
 case 48:
-#line 669 "asn1p_y.y"
+#line 671 "asn1p_y.y"
 {
 		yyval.a_xports = 0;
 	;
     break;}
 case 49:
-#line 672 "asn1p_y.y"
+#line 674 "asn1p_y.y"
 {
 		/* Empty EXPORTS clause effectively prohibits export. */
 		yyval.a_xports = asn1p_xports_new();
@@ -1741,7 +1753,7 @@
 	;
     break;}
 case 50:
-#line 680 "asn1p_y.y"
+#line 682 "asn1p_y.y"
 {
 		yyval.a_xports = asn1p_xports_new();
 		assert(yyval.a_xports);
@@ -1749,14 +1761,14 @@
 	;
     break;}
 case 51:
-#line 685 "asn1p_y.y"
+#line 687 "asn1p_y.y"
 {
 		yyval.a_xports = yyvsp[-2].a_xports;
 		TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
 	;
     break;}
 case 52:
-#line 692 "asn1p_y.y"
+#line 694 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1765,7 +1777,7 @@
 	;
     break;}
 case 53:
-#line 698 "asn1p_y.y"
+#line 700 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1774,7 +1786,7 @@
 	;
     break;}
 case 54:
-#line 704 "asn1p_y.y"
+#line 706 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1783,11 +1795,11 @@
 	;
     break;}
 case 55:
-#line 715 "asn1p_y.y"
+#line 717 "asn1p_y.y"
 { asn1p_lexer_hack_push_opaque_state(); ;
     break;}
 case 56:
-#line 715 "asn1p_y.y"
+#line 717 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-4].a_expr;
 		assert(yyval.a_expr->Identifier == 0);
@@ -1797,7 +1809,7 @@
 	;
     break;}
 case 57:
-#line 725 "asn1p_y.y"
+#line 727 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1807,7 +1819,7 @@
 	;
     break;}
 case 58:
-#line 732 "asn1p_y.y"
+#line 734 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1816,18 +1828,7 @@
 	;
     break;}
 case 59:
-#line 750 "asn1p_y.y"
-{
-		yyval.a_expr = asn1p_expr_new(yylineno);
-		checkmem(yyval.a_expr);
-		yyval.a_expr->Identifier = yyvsp[-3].tv_str;
-		yyval.a_expr->tag = yyvsp[-1].a_tag;
-		yyval.a_expr->expr_type = A1TC_TYPEID;
-		yyval.a_expr->meta_type = AMT_TYPE;
-	;
-    break;}
-case 60:
-#line 758 "asn1p_y.y"
+#line 752 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 		yyval.a_expr->Identifier = yyvsp[-2].tv_str;
@@ -1835,17 +1836,17 @@
 		assert(yyval.a_expr->meta_type);
 	;
     break;}
-case 61:
-#line 764 "asn1p_y.y"
+case 60:
+#line 758 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 		yyval.a_expr->Identifier = yyvsp[-2].tv_str;
 		assert(yyval.a_expr->expr_type == A1TC_CLASSDEF);
-		assert(yyval.a_expr->meta_type == AMT_OBJECT);
+		assert(yyval.a_expr->meta_type == AMT_OBJECTCLASS);
 	;
     break;}
-case 62:
-#line 780 "asn1p_y.y"
+case 61:
+#line 774 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 		assert(yyval.a_expr->Identifier == 0);
@@ -1854,8 +1855,8 @@
 		yyval.a_expr->meta_type = AMT_PARAMTYPE;
 	;
     break;}
-case 63:
-#line 790 "asn1p_y.y"
+case 62:
+#line 784 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_plist = asn1p_paramlist_new(yylineno);
@@ -1866,8 +1867,8 @@
 		if(yyvsp[0].a_parg.argument) free(yyvsp[0].a_parg.argument);
 	;
     break;}
-case 64:
-#line 799 "asn1p_y.y"
+case 63:
+#line 793 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_plist = yyvsp[-2].a_plist;
@@ -1877,15 +1878,25 @@
 		if(yyvsp[0].a_parg.argument) free(yyvsp[0].a_parg.argument);
 	;
     break;}
-case 65:
-#line 810 "asn1p_y.y"
+case 64:
+#line 804 "asn1p_y.y"
 {
 		yyval.a_parg.governor = NULL;
 		yyval.a_parg.argument = yyvsp[0].tv_str;
 	;
     break;}
+case 65:
+#line 808 "asn1p_y.y"
+{
+		int ret;
+		yyval.a_parg.governor = asn1p_ref_new(yylineno);
+		ret = asn1p_ref_add_component(yyval.a_parg.governor, yyvsp[-2].tv_str, 0);
+		checkmem(ret == 0);
+		yyval.a_parg.argument = yyvsp[0].tv_str;
+	;
+    break;}
 case 66:
-#line 814 "asn1p_y.y"
+#line 815 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_parg.governor = asn1p_ref_new(yylineno);
@@ -1895,17 +1906,7 @@
 	;
     break;}
 case 67:
-#line 821 "asn1p_y.y"
-{
-		int ret;
-		yyval.a_parg.governor = asn1p_ref_new(yylineno);
-		ret = asn1p_ref_add_component(yyval.a_parg.governor, yyvsp[-2].tv_str, 0);
-		checkmem(ret == 0);
-		yyval.a_parg.argument = yyvsp[0].tv_str;
-	;
-    break;}
-case 68:
-#line 828 "asn1p_y.y"
+#line 822 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_parg.governor = asn1p_ref_new(yylineno);
@@ -1915,29 +1916,29 @@
 		yyval.a_parg.argument = yyvsp[0].tv_str;
 	;
     break;}
-case 69:
-#line 839 "asn1p_y.y"
+case 68:
+#line 833 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	;
     break;}
-case 70:
-#line 844 "asn1p_y.y"
+case 69:
+#line 838 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	;
     break;}
-case 71:
-#line 851 "asn1p_y.y"
+case 70:
+#line 845 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 	;
     break;}
-case 72:
-#line 854 "asn1p_y.y"
+case 71:
+#line 848 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1946,31 +1947,31 @@
 		yyval.a_expr->meta_type = AMT_VALUE;
 	;
     break;}
-case 73:
-#line 878 "asn1p_y.y"
+case 72:
+#line 872 "asn1p_y.y"
 { yyval.a_expr = asn1p_expr_new(yylineno); ;
     break;}
-case 74:
-#line 879 "asn1p_y.y"
+case 73:
+#line 873 "asn1p_y.y"
 { yyval.a_expr = yyvsp[0].a_expr; ;
     break;}
-case 75:
-#line 882 "asn1p_y.y"
+case 74:
+#line 876 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	;
     break;}
-case 76:
-#line 887 "asn1p_y.y"
+case 75:
+#line 881 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	;
     break;}
-case 77:
-#line 894 "asn1p_y.y"
+case 76:
+#line 888 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-1].a_expr;
 		assert(yyval.a_expr->Identifier == 0);
@@ -1979,8 +1980,8 @@
 		yyval.a_expr->marker = yyvsp[0].a_marker;
 	;
     break;}
-case 78:
-#line 901 "asn1p_y.y"
+case 77:
+#line 895 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-1].a_expr;
 		yyvsp[0].a_marker.flags |= yyval.a_expr->marker.flags;
@@ -1988,8 +1989,8 @@
 		_fixup_anonymous_identifier(yyval.a_expr);
 	;
     break;}
-case 79:
-#line 907 "asn1p_y.y"
+case 78:
+#line 901 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1998,163 +1999,206 @@
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	;
     break;}
-case 80:
-#line 914 "asn1p_y.y"
+case 79:
+#line 908 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 	;
     break;}
-case 81:
-#line 920 "asn1p_y.y"
+case 80:
+#line 914 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	;
     break;}
-case 82:
-#line 925 "asn1p_y.y"
+case 81:
+#line 919 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	;
     break;}
-case 83:
-#line 932 "asn1p_y.y"
+case 82:
+#line 926 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 		assert(yyval.a_expr->Identifier == 0);
 		yyval.a_expr->Identifier = yyvsp[-1].tv_str;
 	;
     break;}
-case 84:
-#line 937 "asn1p_y.y"
+case 83:
+#line 931 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 	;
     break;}
-case 85:
-#line 940 "asn1p_y.y"
+case 84:
+#line 934 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 		_fixup_anonymous_identifier(yyval.a_expr);
 	;
     break;}
-case 86:
-#line 947 "asn1p_y.y"
+case 85:
+#line 941 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		checkmem(yyval.a_expr);
 		yyval.a_expr->with_syntax = yyvsp[0].a_wsynt;
 		assert(yyval.a_expr->expr_type == A1TC_CLASSDEF);
-		assert(yyval.a_expr->meta_type == AMT_OBJECT);
+		assert(yyval.a_expr->meta_type == AMT_OBJECTCLASS);
 	;
     break;}
-case 87:
-#line 957 "asn1p_y.y"
+case 86:
+#line 951 "asn1p_y.y"
 { yyval.a_int = 0; ;
     break;}
-case 88:
-#line 958 "asn1p_y.y"
+case 87:
+#line 952 "asn1p_y.y"
 { yyval.a_int = 1; ;
     break;}
-case 89:
-#line 962 "asn1p_y.y"
+case 88:
+#line 956 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
 		yyval.a_expr->expr_type = A1TC_CLASSDEF;
-		yyval.a_expr->meta_type = AMT_OBJECT;
+		yyval.a_expr->meta_type = AMT_OBJECTCLASS;
+		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
+	;
+    break;}
+case 89:
+#line 963 "asn1p_y.y"
+{
+		yyval.a_expr = yyvsp[-2].a_expr;
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	;
     break;}
 case 90:
-#line 969 "asn1p_y.y"
+#line 973 "asn1p_y.y"
 {
-		yyval.a_expr = yyvsp[-2].a_expr;
-		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
+		yyval.a_expr = asn1p_expr_new(yylineno);
+		checkmem(yyval.a_expr);
+		yyval.a_expr->Identifier = yyvsp[-1].tv_str;
+		yyval.a_expr->meta_type = AMT_OBJECTFIELD;
+		yyval.a_expr->expr_type = A1TC_CLASSFIELD_TFS;	/* TypeFieldSpec */
+		yyval.a_expr->marker = yyvsp[0].a_marker;
 	;
     break;}
 case 91:
-#line 976 "asn1p_y.y"
+#line 983 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
-		checkmem(yyval.a_expr);
-		yyval.a_expr->Identifier = yyvsp[-1].a_refcomp.name;
-		yyval.a_expr->expr_type = A1TC_CLASSFIELD;
+		yyval.a_expr->Identifier = yyvsp[-3].tv_str;
 		yyval.a_expr->meta_type = AMT_OBJECTFIELD;
+		yyval.a_expr->expr_type = A1TC_CLASSFIELD_FTVFS;	/* FixedTypeValueFieldSpec */
+		yyval.a_expr->unique = yyvsp[-1].a_int;
 		yyval.a_expr->marker = yyvsp[0].a_marker;
+		asn1p_expr_add(yyval.a_expr, yyvsp[-2].a_expr);
 	;
     break;}
 case 92:
-#line 984 "asn1p_y.y"
+#line 994 "asn1p_y.y"
 {
-		yyval.a_expr = yyvsp[-2].a_expr;
-		yyval.a_expr->Identifier = yyvsp[-3].a_refcomp.name;
+		yyval.a_expr = asn1p_expr_new(yylineno);
+		yyval.a_expr->Identifier = yyvsp[-2].tv_str;
+		yyval.a_expr->meta_type = AMT_OBJECTFIELD;
+		yyval.a_expr->expr_type = A1TC_CLASSFIELD_VTVFS;
+		yyval.a_expr->reference = yyvsp[-1].a_ref;
 		yyval.a_expr->marker = yyvsp[0].a_marker;
-		yyval.a_expr->unique = yyvsp[-1].a_int;
 	;
     break;}
 case 93:
-#line 990 "asn1p_y.y"
+#line 1004 "asn1p_y.y"
 {
-		int ret;
 		yyval.a_expr = asn1p_expr_new(yylineno);
-		checkmem(yyval.a_expr);
-		yyval.a_expr->Identifier = yyvsp[-3].a_refcomp.name;
-		yyval.a_expr->reference = asn1p_ref_new(yylineno);
-		checkmem(yyval.a_expr->reference);
-		ret = asn1p_ref_add_component(yyval.a_expr->reference,
-				yyvsp[-2].a_refcomp.name, yyvsp[-2].a_refcomp.lex_type);
-		checkmem(ret == 0);
-		yyval.a_expr->expr_type = A1TC_CLASSFIELD;
+		yyval.a_expr->Identifier = yyvsp[-2].tv_str;
 		yyval.a_expr->meta_type = AMT_OBJECTFIELD;
+		yyval.a_expr->expr_type = A1TC_CLASSFIELD_VTVSFS;
+		yyval.a_expr->reference = yyvsp[-1].a_ref;
 		yyval.a_expr->marker = yyvsp[0].a_marker;
-		yyval.a_expr->unique = yyvsp[-1].a_int;
 	;
     break;}
 case 94:
-#line 1008 "asn1p_y.y"
-{ yyval.a_wsynt = 0; ;
+#line 1014 "asn1p_y.y"
+{
+		yyval.a_expr = asn1p_expr_new(yylineno);
+		checkmem(yyval.a_expr);
+		yyval.a_expr->Identifier = yyvsp[-2].tv_str;
+		yyval.a_expr->reference = yyvsp[-1].a_ref;
+		yyval.a_expr->meta_type = AMT_OBJECTFIELD;
+		yyval.a_expr->expr_type = A1TC_CLASSFIELD_OFS;
+		yyval.a_expr->marker = yyvsp[0].a_marker;
+	;
     break;}
 case 95:
-#line 1009 "asn1p_y.y"
+#line 1025 "asn1p_y.y"
+{
+		yyval.a_expr = asn1p_expr_new(yylineno);
+		checkmem(yyval.a_expr);
+		yyval.a_expr->Identifier = yyvsp[-2].tv_str;
+		yyval.a_expr->reference = yyvsp[-1].a_ref;
+		yyval.a_expr->meta_type = AMT_OBJECTFIELD;
+		yyval.a_expr->expr_type = A1TC_CLASSFIELD_OSFS;
+		yyval.a_expr->marker = yyvsp[0].a_marker;
+	;
+    break;}
+case 96:
+#line 1036 "asn1p_y.y"
+{
+		yyval.a_expr = asn1p_expr_new(yylineno);
+		checkmem(yyval.a_expr);
+		yyval.a_expr->Identifier = yyvsp[-2].tv_str;
+		yyval.a_expr->meta_type = AMT_OBJECTFIELD;
+		yyval.a_expr->expr_type = A1TC_CLASSFIELD_FTVSFS;
+		asn1p_expr_add(yyval.a_expr, yyvsp[-1].a_expr);
+		yyval.a_expr->marker = yyvsp[0].a_marker;
+	;
+    break;}
+case 97:
+#line 1063 "asn1p_y.y"
+{ yyval.a_wsynt = 0; ;
+    break;}
+case 98:
+#line 1064 "asn1p_y.y"
 {
 		yyval.a_wsynt = yyvsp[0].a_wsynt;
 	;
     break;}
-case 96:
-#line 1016 "asn1p_y.y"
+case 99:
+#line 1071 "asn1p_y.y"
 { asn1p_lexer_hack_enable_with_syntax(); ;
     break;}
-case 97:
-#line 1018 "asn1p_y.y"
+case 100:
+#line 1073 "asn1p_y.y"
 {
 		yyval.a_wsynt = yyvsp[-1].a_wsynt;
 	;
     break;}
-case 98:
-#line 1024 "asn1p_y.y"
+case 101:
+#line 1079 "asn1p_y.y"
 {
 		yyval.a_wsynt = asn1p_wsyntx_new();
 		TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next);
 	;
     break;}
-case 99:
-#line 1028 "asn1p_y.y"
+case 102:
+#line 1083 "asn1p_y.y"
 {
 		yyval.a_wsynt = yyvsp[-1].a_wsynt;
 		TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next);
 	;
     break;}
-case 100:
-#line 1035 "asn1p_y.y"
+case 103:
+#line 1090 "asn1p_y.y"
 {
 		yyval.a_wchunk = asn1p_wsyntx_chunk_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
 	;
     break;}
-case 101:
-#line 1038 "asn1p_y.y"
+case 104:
+#line 1093 "asn1p_y.y"
 {
 		asn1p_ref_t *ref;
 		int ret;
@@ -2165,43 +2209,43 @@
 		yyval.a_wchunk = asn1p_wsyntx_chunk_fromref(ref, 0);
 	;
     break;}
-case 102:
-#line 1050 "asn1p_y.y"
-{
-		yyval.a_expr = asn1p_expr_new(yylineno);
-		checkmem(yyval.a_expr);
-		yyval.a_expr->Identifier = strdup("...");
-		checkmem(yyval.a_expr->Identifier);
-		yyval.a_expr->expr_type = A1TC_EXTENSIBLE;
-		yyval.a_expr->meta_type = AMT_TYPE;
-	;
-    break;}
-case 103:
-#line 1058 "asn1p_y.y"
-{
-		yyval.a_expr = asn1p_expr_new(yylineno);
-		checkmem(yyval.a_expr);
-		yyval.a_expr->Identifier = strdup("...");
-		checkmem(yyval.a_expr->Identifier);
-		yyval.a_expr->value = yyvsp[0].a_value;
-		yyval.a_expr->expr_type = A1TC_EXTENSIBLE;
-		yyval.a_expr->meta_type = AMT_TYPE;
-	;
-    break;}
-case 104:
-#line 1067 "asn1p_y.y"
-{
-		yyval.a_expr = asn1p_expr_new(yylineno);
-		checkmem(yyval.a_expr);
-		yyval.a_expr->Identifier = strdup("...");
-		yyval.a_expr->value = yyvsp[0].a_value;
-		checkmem(yyval.a_expr->Identifier);
-		yyval.a_expr->expr_type = A1TC_EXTENSIBLE;
-		yyval.a_expr->meta_type = AMT_TYPE;
-	;
-    break;}
 case 105:
-#line 1079 "asn1p_y.y"
+#line 1105 "asn1p_y.y"
+{
+		yyval.a_expr = asn1p_expr_new(yylineno);
+		checkmem(yyval.a_expr);
+		yyval.a_expr->Identifier = strdup("...");
+		checkmem(yyval.a_expr->Identifier);
+		yyval.a_expr->expr_type = A1TC_EXTENSIBLE;
+		yyval.a_expr->meta_type = AMT_TYPE;
+	;
+    break;}
+case 106:
+#line 1113 "asn1p_y.y"
+{
+		yyval.a_expr = asn1p_expr_new(yylineno);
+		checkmem(yyval.a_expr);
+		yyval.a_expr->Identifier = strdup("...");
+		checkmem(yyval.a_expr->Identifier);
+		yyval.a_expr->value = yyvsp[0].a_value;
+		yyval.a_expr->expr_type = A1TC_EXTENSIBLE;
+		yyval.a_expr->meta_type = AMT_TYPE;
+	;
+    break;}
+case 107:
+#line 1122 "asn1p_y.y"
+{
+		yyval.a_expr = asn1p_expr_new(yylineno);
+		checkmem(yyval.a_expr);
+		yyval.a_expr->Identifier = strdup("...");
+		yyval.a_expr->value = yyvsp[0].a_value;
+		checkmem(yyval.a_expr->Identifier);
+		yyval.a_expr->expr_type = A1TC_EXTENSIBLE;
+		yyval.a_expr->meta_type = AMT_TYPE;
+	;
+    break;}
+case 108:
+#line 1134 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-1].a_expr;
 		yyval.a_expr->tag = yyvsp[-2].a_tag;
@@ -2222,15 +2266,15 @@
 		}
 	;
     break;}
-case 106:
-#line 1101 "asn1p_y.y"
+case 109:
+#line 1156 "asn1p_y.y"
 {
 		yyval.a_int = asn1p_as_pointer ? EM_INDIRECT : 0;
 		asn1p_as_pointer = 0;
 	;
     break;}
-case 107:
-#line 1108 "asn1p_y.y"
+case 110:
+#line 1163 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 		yyval.a_expr->marker.flags |= yyvsp[-1].a_int;
@@ -2248,14 +2292,14 @@
 		}
 	;
     break;}
-case 108:
-#line 1127 "asn1p_y.y"
+case 111:
+#line 1182 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 	;
     break;}
-case 109:
-#line 1130 "asn1p_y.y"
+case 112:
+#line 1185 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-1].a_expr;
 		assert(yyval.a_expr->expr_type == A1TC_INVALID);
@@ -2263,8 +2307,8 @@
 		yyval.a_expr->meta_type = AMT_TYPE;
 	;
     break;}
-case 110:
-#line 1136 "asn1p_y.y"
+case 113:
+#line 1191 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-1].a_expr;
 		assert(yyval.a_expr->expr_type == A1TC_INVALID);
@@ -2272,8 +2316,8 @@
 		yyval.a_expr->meta_type = AMT_TYPE;
 	;
     break;}
-case 111:
-#line 1142 "asn1p_y.y"
+case 114:
+#line 1197 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-1].a_expr;
 		assert(yyval.a_expr->expr_type == A1TC_INVALID);
@@ -2281,8 +2325,8 @@
 		yyval.a_expr->meta_type = AMT_TYPE;
 	;
     break;}
-case 112:
-#line 1148 "asn1p_y.y"
+case 115:
+#line 1203 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2294,8 +2338,8 @@
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	;
     break;}
-case 113:
-#line 1158 "asn1p_y.y"
+case 116:
+#line 1213 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2307,8 +2351,8 @@
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	;
     break;}
-case 114:
-#line 1168 "asn1p_y.y"
+case 117:
+#line 1223 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2316,8 +2360,8 @@
 		yyval.a_expr->meta_type = AMT_TYPE;
 	;
     break;}
-case 115:
-#line 1174 "asn1p_y.y"
+case 118:
+#line 1229 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_expr = asn1p_expr_new(yylineno);
@@ -2330,8 +2374,8 @@
 		yyval.a_expr->meta_type = AMT_TYPE;
 	;
     break;}
-case 116:
-#line 1188 "asn1p_y.y"
+case 119:
+#line 1243 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_expr = yyvsp[-1].a_expr;
@@ -2347,8 +2391,8 @@
 		yyval.a_expr->meta_type = AMT_TYPE;
 	;
     break;}
-case 117:
-#line 1212 "asn1p_y.y"
+case 120:
+#line 1267 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2357,8 +2401,8 @@
 		yyval.a_expr->meta_type = AMT_TYPEREF;
 	;
     break;}
-case 118:
-#line 1219 "asn1p_y.y"
+case 121:
+#line 1274 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2367,8 +2411,8 @@
 		yyval.a_expr->meta_type = AMT_TYPE;
 	;
     break;}
-case 119:
-#line 1234 "asn1p_y.y"
+case 122:
+#line 1289 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2378,8 +2422,8 @@
 		free(yyvsp[0].tv_str);
 	;
     break;}
-case 120:
-#line 1242 "asn1p_y.y"
+case 123:
+#line 1297 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2391,8 +2435,8 @@
 		free(yyvsp[-2].tv_str);
 	;
     break;}
-case 121:
-#line 1252 "asn1p_y.y"
+case 124:
+#line 1307 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2404,8 +2448,8 @@
 		free(yyvsp[-2].tv_str);
 	;
     break;}
-case 122:
-#line 1262 "asn1p_y.y"
+case 125:
+#line 1317 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2417,8 +2461,8 @@
 		free(yyvsp[-2].tv_str);
 	;
     break;}
-case 123:
-#line 1272 "asn1p_y.y"
+case 126:
+#line 1327 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2428,8 +2472,8 @@
 		checkmem(ret == 0);
 	;
     break;}
-case 124:
-#line 1280 "asn1p_y.y"
+case 127:
+#line 1335 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = yyvsp[0].a_ref;
@@ -2450,8 +2494,8 @@
 		}
 	;
     break;}
-case 125:
-#line 1302 "asn1p_y.y"
+case 128:
+#line 1357 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2461,8 +2505,8 @@
 		checkmem(ret == 0);
 	;
     break;}
-case 126:
-#line 1310 "asn1p_y.y"
+case 129:
+#line 1365 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = yyvsp[-2].a_ref;
@@ -2471,22 +2515,58 @@
 		checkmem(ret == 0);
 	;
     break;}
-case 129:
-#line 1324 "asn1p_y.y"
+case 132:
+#line 1379 "asn1p_y.y"
 {
 		yyval.a_refcomp.lex_type = RLT_AmpUppercase;
 		yyval.a_refcomp.name = yyvsp[0].tv_str;
 	;
     break;}
-case 130:
-#line 1329 "asn1p_y.y"
+case 133:
+#line 1384 "asn1p_y.y"
 {
 		yyval.a_refcomp.lex_type = RLT_Amplowercase;
 		yyval.a_refcomp.name = yyvsp[0].tv_str;
 	;
     break;}
-case 131:
-#line 1342 "asn1p_y.y"
+case 134:
+#line 1393 "asn1p_y.y"
+{
+		yyval.a_ref = asn1p_ref_new(yylineno);
+		asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_AmpUppercase);
+	;
+    break;}
+case 135:
+#line 1397 "asn1p_y.y"
+{
+		yyval.a_ref = yyval.a_ref;
+		asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_AmpUppercase);
+	;
+    break;}
+case 136:
+#line 1401 "asn1p_y.y"
+{
+		yyval.a_ref = yyval.a_ref;
+		asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_Amplowercase);
+	;
+    break;}
+case 137:
+#line 1408 "asn1p_y.y"
+{
+		yyval.a_ref = asn1p_ref_new(yylineno);
+		asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_CAPITALS);
+	;
+    break;}
+case 138:
+#line 1412 "asn1p_y.y"
+{
+		yyval.a_ref = asn1p_ref_new(yylineno);
+		asn1p_ref_add_component(yyval.a_ref, yyvsp[-2].tv_str, RLT_AmpUppercase);
+		asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_CAPITALS);
+	;
+    break;}
+case 139:
+#line 1426 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		assert(yyval.a_expr->Identifier == NULL);
@@ -2495,8 +2575,8 @@
 		yyval.a_expr->value = yyvsp[0].a_value;
 	;
     break;}
-case 132:
-#line 1352 "asn1p_y.y"
+case 140:
+#line 1436 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(0);
 		checkmem(yyval.a_value);
@@ -2505,76 +2585,76 @@
 		yyval.a_value->value.choice_identifier.value = yyvsp[0].a_value;
 	;
     break;}
-case 133:
-#line 1359 "asn1p_y.y"
+case 141:
+#line 1443 "asn1p_y.y"
 { asn1p_lexer_hack_push_opaque_state(); ;
     break;}
-case 134:
-#line 1359 "asn1p_y.y"
+case 142:
+#line 1443 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
 		checkmem(yyval.a_value);
 		yyval.a_value->type = ATV_UNPARSED;
 	;
     break;}
-case 135:
-#line 1364 "asn1p_y.y"
+case 143:
+#line 1448 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(0);
 		checkmem(yyval.a_value);
 		yyval.a_value->type = ATV_NULL;
 	;
     break;}
-case 136:
-#line 1369 "asn1p_y.y"
+case 144:
+#line 1453 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(0);
 		checkmem(yyval.a_value);
 		yyval.a_value->type = ATV_FALSE;
 	;
     break;}
-case 137:
-#line 1374 "asn1p_y.y"
+case 145:
+#line 1458 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(0);
 		checkmem(yyval.a_value);
 		yyval.a_value->type = ATV_TRUE;
 	;
     break;}
-case 138:
-#line 1379 "asn1p_y.y"
+case 146:
+#line 1463 "asn1p_y.y"
 {
 		yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'B');
 		checkmem(yyval.a_value);
 	;
     break;}
-case 139:
-#line 1383 "asn1p_y.y"
+case 147:
+#line 1467 "asn1p_y.y"
 {
 		yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'H');
 		checkmem(yyval.a_value);
 	;
     break;}
-case 140:
-#line 1387 "asn1p_y.y"
+case 148:
+#line 1471 "asn1p_y.y"
 {
 		yyval.a_value = yyval.a_value;
 	;
     break;}
-case 141:
-#line 1390 "asn1p_y.y"
+case 149:
+#line 1474 "asn1p_y.y"
 {
 		yyval.a_value = yyvsp[0].a_value;
 	;
     break;}
-case 142:
-#line 1393 "asn1p_y.y"
+case 150:
+#line 1477 "asn1p_y.y"
 {
 		yyval.a_value = yyvsp[0].a_value;
 	;
     break;}
-case 143:
-#line 1399 "asn1p_y.y"
+case 151:
+#line 1483 "asn1p_y.y"
 {
 		asn1p_ref_t *ref;
 		int ret;
@@ -2587,8 +2667,8 @@
 		free(yyvsp[0].tv_str);
 	;
     break;}
-case 144:
-#line 1410 "asn1p_y.y"
+case 152:
+#line 1494 "asn1p_y.y"
 {
 		asn1p_ref_t *ref;
 		int ret;
@@ -2604,31 +2684,31 @@
 		free(yyvsp[0].tv_str);
 	;
     break;}
-case 145:
-#line 1428 "asn1p_y.y"
+case 153:
+#line 1512 "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 146:
-#line 1432 "asn1p_y.y"
+case 154:
+#line 1516 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
 		checkmem(yyval.a_value);
 		yyval.a_value->type = ATV_TUPLE;
 	;
     break;}
-case 147:
-#line 1437 "asn1p_y.y"
+case 155:
+#line 1521 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
 		checkmem(yyval.a_value);
 		yyval.a_value->type = ATV_QUADRUPLE;
 	;
     break;}
-case 148:
-#line 1471 "asn1p_y.y"
+case 156:
+#line 1555 "asn1p_y.y"
 {
 		yyval.tv_opaque.len = yyvsp[0].tv_opaque.len + 1;
 		yyval.tv_opaque.buf = malloc(yyval.tv_opaque.len + 1);
@@ -2639,8 +2719,8 @@
 		free(yyvsp[0].tv_opaque.buf);
 	;
     break;}
-case 149:
-#line 1480 "asn1p_y.y"
+case 157:
+#line 1564 "asn1p_y.y"
 {
 		int newsize = yyvsp[-1].tv_opaque.len + yyvsp[0].tv_opaque.len;
 		char *p = malloc(newsize + 1);
@@ -2654,72 +2734,72 @@
 		yyval.tv_opaque.len = newsize;
 	;
     break;}
-case 150:
-#line 1495 "asn1p_y.y"
+case 158:
+#line 1579 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_BOOLEAN; ;
     break;}
-case 151:
-#line 1496 "asn1p_y.y"
+case 159:
+#line 1580 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_NULL; ;
     break;}
-case 152:
-#line 1497 "asn1p_y.y"
+case 160:
+#line 1581 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_REAL; ;
     break;}
-case 153:
-#line 1498 "asn1p_y.y"
-{ yyval.a_type = yyvsp[0].a_type; ;
-    break;}
-case 154:
-#line 1499 "asn1p_y.y"
-{ yyval.a_type = ASN_BASIC_OCTET_STRING; ;
-    break;}
-case 155:
-#line 1500 "asn1p_y.y"
-{ yyval.a_type = ASN_BASIC_OBJECT_IDENTIFIER; ;
-    break;}
-case 156:
-#line 1501 "asn1p_y.y"
-{ yyval.a_type = ASN_BASIC_RELATIVE_OID; ;
-    break;}
-case 157:
-#line 1502 "asn1p_y.y"
-{ yyval.a_type = ASN_BASIC_EXTERNAL; ;
-    break;}
-case 158:
-#line 1503 "asn1p_y.y"
-{ yyval.a_type = ASN_BASIC_EMBEDDED_PDV; ;
-    break;}
-case 159:
-#line 1504 "asn1p_y.y"
-{ yyval.a_type = ASN_BASIC_CHARACTER_STRING; ;
-    break;}
-case 160:
-#line 1505 "asn1p_y.y"
-{ yyval.a_type = ASN_BASIC_UTCTime; ;
-    break;}
 case 161:
-#line 1506 "asn1p_y.y"
-{ yyval.a_type = ASN_BASIC_GeneralizedTime; ;
+#line 1582 "asn1p_y.y"
+{ yyval.a_type = yyvsp[0].a_type; ;
     break;}
 case 162:
-#line 1507 "asn1p_y.y"
-{ yyval.a_type = yyvsp[0].a_type; ;
+#line 1583 "asn1p_y.y"
+{ yyval.a_type = ASN_BASIC_OCTET_STRING; ;
     break;}
 case 163:
-#line 1514 "asn1p_y.y"
-{ yyval.a_type = ASN_BASIC_INTEGER; ;
+#line 1584 "asn1p_y.y"
+{ yyval.a_type = ASN_BASIC_OBJECT_IDENTIFIER; ;
     break;}
 case 164:
-#line 1515 "asn1p_y.y"
-{ yyval.a_type = ASN_BASIC_ENUMERATED; ;
+#line 1585 "asn1p_y.y"
+{ yyval.a_type = ASN_BASIC_RELATIVE_OID; ;
     break;}
 case 165:
-#line 1516 "asn1p_y.y"
-{ yyval.a_type = ASN_BASIC_BIT_STRING; ;
+#line 1586 "asn1p_y.y"
+{ yyval.a_type = ASN_BASIC_EXTERNAL; ;
     break;}
 case 166:
-#line 1520 "asn1p_y.y"
+#line 1587 "asn1p_y.y"
+{ yyval.a_type = ASN_BASIC_EMBEDDED_PDV; ;
+    break;}
+case 167:
+#line 1588 "asn1p_y.y"
+{ yyval.a_type = ASN_BASIC_CHARACTER_STRING; ;
+    break;}
+case 168:
+#line 1589 "asn1p_y.y"
+{ yyval.a_type = ASN_BASIC_UTCTime; ;
+    break;}
+case 169:
+#line 1590 "asn1p_y.y"
+{ yyval.a_type = ASN_BASIC_GeneralizedTime; ;
+    break;}
+case 170:
+#line 1591 "asn1p_y.y"
+{ yyval.a_type = yyvsp[0].a_type; ;
+    break;}
+case 171:
+#line 1598 "asn1p_y.y"
+{ yyval.a_type = ASN_BASIC_INTEGER; ;
+    break;}
+case 172:
+#line 1599 "asn1p_y.y"
+{ yyval.a_type = ASN_BASIC_ENUMERATED; ;
+    break;}
+case 173:
+#line 1600 "asn1p_y.y"
+{ yyval.a_type = ASN_BASIC_BIT_STRING; ;
+    break;}
+case 174:
+#line 1604 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2727,8 +2807,8 @@
 		yyval.a_expr->meta_type = AMT_TYPE;
 	;
     break;}
-case 167:
-#line 1526 "asn1p_y.y"
+case 175:
+#line 1610 "asn1p_y.y"
 {
 		if(yyvsp[0].a_expr) {
 			yyval.a_expr = yyvsp[0].a_expr;
@@ -2740,92 +2820,92 @@
 		yyval.a_expr->meta_type = AMT_TYPE;
 	;
     break;}
-case 168:
-#line 1539 "asn1p_y.y"
+case 176:
+#line 1623 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_BMPString; ;
     break;}
-case 169:
-#line 1540 "asn1p_y.y"
+case 177:
+#line 1624 "asn1p_y.y"
 {
 		yyval.a_type = ASN_STRING_GeneralString;
 		fprintf(stderr, "WARNING: GeneralString is not fully supported\n");
 	;
     break;}
-case 170:
-#line 1544 "asn1p_y.y"
+case 178:
+#line 1628 "asn1p_y.y"
 {
 		yyval.a_type = ASN_STRING_GraphicString;
 		fprintf(stderr, "WARNING: GraphicString is not fully supported\n");
 	;
     break;}
-case 171:
-#line 1548 "asn1p_y.y"
+case 179:
+#line 1632 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_IA5String; ;
     break;}
-case 172:
-#line 1549 "asn1p_y.y"
+case 180:
+#line 1633 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_ISO646String; ;
     break;}
-case 173:
-#line 1550 "asn1p_y.y"
+case 181:
+#line 1634 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_NumericString; ;
     break;}
-case 174:
-#line 1551 "asn1p_y.y"
+case 182:
+#line 1635 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_PrintableString; ;
     break;}
-case 175:
-#line 1552 "asn1p_y.y"
+case 183:
+#line 1636 "asn1p_y.y"
 {
 		yyval.a_type = ASN_STRING_T61String;
 		fprintf(stderr, "WARNING: T61String is not fully supported\n");
 	;
     break;}
-case 176:
-#line 1556 "asn1p_y.y"
+case 184:
+#line 1640 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_TeletexString; ;
     break;}
-case 177:
-#line 1557 "asn1p_y.y"
+case 185:
+#line 1641 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_UniversalString; ;
     break;}
-case 178:
-#line 1558 "asn1p_y.y"
+case 186:
+#line 1642 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_UTF8String; ;
     break;}
-case 179:
-#line 1559 "asn1p_y.y"
+case 187:
+#line 1643 "asn1p_y.y"
 {
 		yyval.a_type = ASN_STRING_VideotexString;
 		fprintf(stderr, "WARNING: VideotexString is not fully supported\n");
 	;
     break;}
-case 180:
-#line 1563 "asn1p_y.y"
+case 188:
+#line 1647 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_VisibleString; ;
     break;}
-case 181:
-#line 1564 "asn1p_y.y"
+case 189:
+#line 1648 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_ObjectDescriptor; ;
     break;}
-case 187:
-#line 1576 "asn1p_y.y"
+case 195:
+#line 1660 "asn1p_y.y"
 { yyval.a_constr = 0; ;
     break;}
-case 188:
-#line 1577 "asn1p_y.y"
+case 196:
+#line 1661 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
-case 189:
-#line 1583 "asn1p_y.y"
+case 197:
+#line 1667 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[0].a_constr, 0);
 	;
     break;}
-case 190:
-#line 1586 "asn1p_y.y"
+case 198:
+#line 1670 "asn1p_y.y"
 {
 		/*
 		 * This is a special case, for compatibility purposes.
@@ -2834,26 +2914,26 @@
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_SIZE, yyvsp[-1].a_constr, 0);
 	;
     break;}
-case 191:
-#line 1596 "asn1p_y.y"
+case 199:
+#line 1680 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[-1].a_constr;
 	;
     break;}
-case 192:
-#line 1599 "asn1p_y.y"
+case 200:
+#line 1683 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
 	;
     break;}
-case 193:
-#line 1605 "asn1p_y.y"
+case 201:
+#line 1689 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
-case 194:
-#line 1608 "asn1p_y.y"
+case 202:
+#line 1692 "asn1p_y.y"
 {
 		asn1p_constraint_t *ct;
 		ct = asn1p_constraint_new(yylineno);
@@ -2861,8 +2941,8 @@
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, yyvsp[-2].a_constr, ct);
 	;
     break;}
-case 195:
-#line 1614 "asn1p_y.y"
+case 203:
+#line 1698 "asn1p_y.y"
 {
 		asn1p_constraint_t *ct;
 		ct = asn1p_constraint_new(yylineno);
@@ -2872,38 +2952,38 @@
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, ct, yyvsp[0].a_constr);
 	;
     break;}
-case 196:
-#line 1625 "asn1p_y.y"
+case 204:
+#line 1709 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
-case 197:
-#line 1628 "asn1p_y.y"
+case 205:
+#line 1712 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_AEX, yyvsp[0].a_constr, 0);
 	;
     break;}
-case 198:
-#line 1631 "asn1p_y.y"
+case 206:
+#line 1715 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_UNI, yyvsp[-2].a_constr, yyvsp[0].a_constr);
 	;
     break;}
-case 199:
-#line 1634 "asn1p_y.y"
+case 207:
+#line 1718 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_INT, yyvsp[-2].a_constr, yyvsp[0].a_constr);
 	;
     break;}
-case 200:
-#line 1637 "asn1p_y.y"
+case 208:
+#line 1721 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_EXC, yyvsp[-2].a_constr, yyvsp[0].a_constr);
 	;
     break;}
-case 201:
-#line 1643 "asn1p_y.y"
+case 209:
+#line 1727 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_constr = asn1p_constraint_new(yylineno);
@@ -2913,8 +2993,8 @@
 		checkmem(ret == 0);
 	;
     break;}
-case 202:
-#line 1651 "asn1p_y.y"
+case 210:
+#line 1735 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_constr = asn1p_constraint_new(yylineno);
@@ -2924,8 +3004,8 @@
 		checkmem(ret == 0);
 	;
     break;}
-case 203:
-#line 1659 "asn1p_y.y"
+case 211:
+#line 1743 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -2933,8 +3013,8 @@
 		yyval.a_constr->value = yyvsp[0].a_value;
 	;
     break;}
-case 204:
-#line 1665 "asn1p_y.y"
+case 212:
+#line 1749 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -2942,8 +3022,8 @@
 		yyval.a_constr->containedSubtype = yyvsp[0].a_value;
 	;
     break;}
-case 205:
-#line 1671 "asn1p_y.y"
+case 213:
+#line 1755 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -2952,8 +3032,8 @@
 		yyval.a_constr->range_stop = yyvsp[0].a_value;
 	;
     break;}
-case 206:
-#line 1678 "asn1p_y.y"
+case 214:
+#line 1762 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -2963,8 +3043,8 @@
 		yyval.a_constr->range_start->type = ATV_MIN;
 	;
     break;}
-case 207:
-#line 1686 "asn1p_y.y"
+case 215:
+#line 1770 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -2974,8 +3054,8 @@
 		yyval.a_constr->range_stop->type = ATV_MAX;
 	;
     break;}
-case 208:
-#line 1694 "asn1p_y.y"
+case 216:
+#line 1778 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -2986,24 +3066,24 @@
 		yyval.a_constr->range_stop->type = ATV_MAX;
 	;
     break;}
-case 209:
-#line 1703 "asn1p_y.y"
+case 217:
+#line 1787 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
-case 210:
-#line 1706 "asn1p_y.y"
+case 218:
+#line 1790 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
-case 211:
-#line 1710 "asn1p_y.y"
+case 219:
+#line 1794 "asn1p_y.y"
 { asn1p_lexer_hack_push_opaque_state(); ;
     break;}
-case 212:
-#line 1710 "asn1p_y.y"
+case 220:
+#line 1794 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -3013,64 +3093,64 @@
 		yyval.a_constr->value->type = ATV_UNPARSED;
 	;
     break;}
-case 213:
-#line 1721 "asn1p_y.y"
+case 221:
+#line 1805 "asn1p_y.y"
 { yyval.a_ctype = ACT_EL_RANGE; ;
     break;}
-case 214:
-#line 1722 "asn1p_y.y"
+case 222:
+#line 1806 "asn1p_y.y"
 { yyval.a_ctype = ACT_EL_RLRANGE; ;
     break;}
-case 215:
-#line 1723 "asn1p_y.y"
+case 223:
+#line 1807 "asn1p_y.y"
 { yyval.a_ctype = ACT_EL_LLRANGE; ;
     break;}
-case 216:
-#line 1724 "asn1p_y.y"
+case 224:
+#line 1808 "asn1p_y.y"
 { yyval.a_ctype = ACT_EL_ULRANGE; ;
     break;}
-case 217:
-#line 1728 "asn1p_y.y"
+case 225:
+#line 1812 "asn1p_y.y"
 {
 		yyval.a_ctype = ACT_CT_SIZE;
 	;
     break;}
-case 218:
-#line 1731 "asn1p_y.y"
+case 226:
+#line 1815 "asn1p_y.y"
 {
 		yyval.a_ctype = ACT_CT_FROM;
 	;
     break;}
-case 219:
-#line 1737 "asn1p_y.y"
+case 227:
+#line 1821 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(0);
 		checkmem(yyval.a_value);
 		yyval.a_value->type = ATV_FALSE;
 	;
     break;}
-case 220:
-#line 1742 "asn1p_y.y"
+case 228:
+#line 1826 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(1);
 		checkmem(yyval.a_value);
 		yyval.a_value->type = ATV_TRUE;
 	;
     break;}
-case 221:
-#line 1747 "asn1p_y.y"
+case 229:
+#line 1831 "asn1p_y.y"
 {
 		yyval.a_value = yyvsp[0].a_value;
 	;
     break;}
-case 222:
-#line 1750 "asn1p_y.y"
+case 230:
+#line 1834 "asn1p_y.y"
 {
 		yyval.a_value = yyvsp[0].a_value;
 	;
     break;}
-case 223:
-#line 1753 "asn1p_y.y"
+case 231:
+#line 1837 "asn1p_y.y"
 {
 		asn1p_ref_t *ref;
 		int ret;
@@ -3083,8 +3163,8 @@
 		free(yyvsp[0].tv_str);
 	;
     break;}
-case 224:
-#line 1767 "asn1p_y.y"
+case 232:
+#line 1851 "asn1p_y.y"
 {
 		asn1p_ref_t *ref;
 		int ret;
@@ -3097,32 +3177,32 @@
 		free(yyvsp[0].tv_str);
 	;
     break;}
-case 225:
-#line 1781 "asn1p_y.y"
+case 233:
+#line 1865 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMP, yyvsp[0].a_constr, 0);
 	;
     break;}
-case 226:
-#line 1784 "asn1p_y.y"
+case 234:
+#line 1868 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-1].a_constr, 0);
 	;
     break;}
-case 227:
-#line 1790 "asn1p_y.y"
+case 235:
+#line 1874 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
-case 228:
-#line 1793 "asn1p_y.y"
+case 236:
+#line 1877 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-2].a_constr, yyvsp[0].a_constr);
 	;
     break;}
-case 229:
-#line 1799 "asn1p_y.y"
+case 237:
+#line 1883 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -3130,8 +3210,8 @@
 		yyval.a_constr->value = asn1p_value_frombuf("...", 3, 0);
 	;
     break;}
-case 230:
-#line 1805 "asn1p_y.y"
+case 238:
+#line 1889 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -3141,46 +3221,46 @@
 		if(yyvsp[-1].a_constr) asn1p_constraint_insert(yyval.a_constr, yyvsp[-1].a_constr);
 	;
     break;}
-case 231:
-#line 1819 "asn1p_y.y"
+case 239:
+#line 1903 "asn1p_y.y"
 { yyval.a_pres = ACPRES_DEFAULT; ;
     break;}
-case 232:
-#line 1820 "asn1p_y.y"
+case 240:
+#line 1904 "asn1p_y.y"
 { yyval.a_pres = yyvsp[0].a_pres; ;
     break;}
-case 233:
-#line 1824 "asn1p_y.y"
+case 241:
+#line 1908 "asn1p_y.y"
 {
 		yyval.a_pres = ACPRES_PRESENT;
 	;
     break;}
-case 234:
-#line 1827 "asn1p_y.y"
+case 242:
+#line 1911 "asn1p_y.y"
 {
 		yyval.a_pres = ACPRES_ABSENT;
 	;
     break;}
-case 235:
-#line 1830 "asn1p_y.y"
+case 243:
+#line 1914 "asn1p_y.y"
 {
 		yyval.a_pres = ACPRES_OPTIONAL;
 	;
     break;}
-case 236:
-#line 1836 "asn1p_y.y"
+case 244:
+#line 1920 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
-case 237:
-#line 1839 "asn1p_y.y"
+case 245:
+#line 1923 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
-case 238:
-#line 1848 "asn1p_y.y"
+case 246:
+#line 1932 "asn1p_y.y"
 {
 		asn1p_ref_t *ref = asn1p_ref_new(yylineno);
 		asn1p_constraint_t *ct;
@@ -3194,14 +3274,14 @@
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, ct, 0);
 	;
     break;}
-case 239:
-#line 1863 "asn1p_y.y"
+case 247:
+#line 1947 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
 	;
     break;}
-case 240:
-#line 1869 "asn1p_y.y"
+case 248:
+#line 1953 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -3209,8 +3289,8 @@
 		yyval.a_constr->value = asn1p_value_fromref(yyvsp[0].a_ref, 0);
 	;
     break;}
-case 241:
-#line 1875 "asn1p_y.y"
+case 249:
+#line 1959 "asn1p_y.y"
 {
 		asn1p_constraint_t *ct;
 		ct = asn1p_constraint_new(yylineno);
@@ -3220,8 +3300,8 @@
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, yyvsp[-2].a_constr, ct);
 	;
     break;}
-case 242:
-#line 1889 "asn1p_y.y"
+case 250:
+#line 1973 "asn1p_y.y"
 {
 		char *p = malloc(strlen(yyvsp[0].tv_str) + 2);
 		int ret;
@@ -3234,8 +3314,8 @@
 		free(yyvsp[0].tv_str);
 	;
     break;}
-case 243:
-#line 1900 "asn1p_y.y"
+case 251:
+#line 1984 "asn1p_y.y"
 {
 		char *p = malloc(strlen(yyvsp[0].tv_str) + 3);
 		int ret;
@@ -3249,14 +3329,14 @@
 		free(yyvsp[0].tv_str);
 	;
     break;}
-case 244:
-#line 1916 "asn1p_y.y"
+case 252:
+#line 2000 "asn1p_y.y"
 {
 		yyval.tv_str = yyvsp[0].tv_str;
 	;
     break;}
-case 245:
-#line 1919 "asn1p_y.y"
+case 253:
+#line 2003 "asn1p_y.y"
 {
 		int l1 = strlen(yyvsp[-2].tv_str);
 		int l3 = strlen(yyvsp[0].tv_str);
@@ -3267,61 +3347,61 @@
 		yyval.tv_str[l1 + 1 + l3] = '\0';
 	;
     break;}
-case 246:
-#line 1937 "asn1p_y.y"
+case 254:
+#line 2021 "asn1p_y.y"
 {
 		yyval.a_marker.flags = EM_NOMARK;
 		yyval.a_marker.default_value = 0;
 	;
     break;}
-case 247:
-#line 1941 "asn1p_y.y"
+case 255:
+#line 2025 "asn1p_y.y"
 { yyval.a_marker = yyvsp[0].a_marker; ;
     break;}
-case 248:
-#line 1945 "asn1p_y.y"
+case 256:
+#line 2029 "asn1p_y.y"
 {
 		yyval.a_marker.flags = EM_OPTIONAL | EM_INDIRECT;
 		yyval.a_marker.default_value = 0;
 	;
     break;}
-case 249:
-#line 1949 "asn1p_y.y"
+case 257:
+#line 2033 "asn1p_y.y"
 {
 		yyval.a_marker.flags = EM_DEFAULT;
 		yyval.a_marker.default_value = yyvsp[0].a_value;
 	;
     break;}
-case 250:
-#line 1972 "asn1p_y.y"
+case 258:
+#line 2056 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
 	;
     break;}
-case 251:
-#line 1976 "asn1p_y.y"
+case 259:
+#line 2060 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-1].a_expr;
 	;
     break;}
-case 252:
-#line 1982 "asn1p_y.y"
+case 260:
+#line 2066 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	;
     break;}
-case 253:
-#line 1987 "asn1p_y.y"
+case 261:
+#line 2071 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	;
     break;}
-case 254:
-#line 1994 "asn1p_y.y"
+case 262:
+#line 2078 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -3330,8 +3410,8 @@
 		yyval.a_expr->Identifier = yyvsp[0].tv_str;
 	;
     break;}
-case 255:
-#line 2001 "asn1p_y.y"
+case 263:
+#line 2085 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -3341,8 +3421,8 @@
 		yyval.a_expr->value = yyvsp[-1].a_value;
 	;
     break;}
-case 256:
-#line 2009 "asn1p_y.y"
+case 264:
+#line 2093 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -3352,8 +3432,8 @@
 		yyval.a_expr->value = yyvsp[-1].a_value;
 	;
     break;}
-case 257:
-#line 2017 "asn1p_y.y"
+case 265:
+#line 2101 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -3362,8 +3442,8 @@
 		yyval.a_expr->value = yyvsp[0].a_value;
 	;
     break;}
-case 258:
-#line 2024 "asn1p_y.y"
+case 266:
+#line 2108 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -3373,103 +3453,103 @@
 		yyval.a_expr->meta_type = AMT_VALUE;
 	;
     break;}
-case 259:
-#line 2035 "asn1p_y.y"
+case 267:
+#line 2119 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
 		checkmem(yyval.a_value);
 	;
     break;}
-case 260:
-#line 2039 "asn1p_y.y"
+case 268:
+#line 2123 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
 		checkmem(yyval.a_value);
 	;
     break;}
-case 261:
-#line 2070 "asn1p_y.y"
+case 269:
+#line 2154 "asn1p_y.y"
 { memset(&yyval.a_tag, 0, sizeof(yyval.a_tag)); ;
     break;}
-case 262:
-#line 2071 "asn1p_y.y"
+case 270:
+#line 2155 "asn1p_y.y"
 { yyval.a_tag = yyvsp[0].a_tag; ;
     break;}
-case 263:
-#line 2075 "asn1p_y.y"
+case 271:
+#line 2159 "asn1p_y.y"
 {
 		yyval.a_tag = yyvsp[-1].a_tag;
 		yyval.a_tag.tag_mode = yyvsp[0].a_tag.tag_mode;
 	;
     break;}
-case 264:
-#line 2082 "asn1p_y.y"
+case 272:
+#line 2166 "asn1p_y.y"
 {
 		yyval.a_tag = yyvsp[-2].a_tag;
 		yyval.a_tag.tag_value = yyvsp[-1].a_int;
 	;
     break;}
-case 265:
-#line 2088 "asn1p_y.y"
+case 273:
+#line 2172 "asn1p_y.y"
 { yyval.a_tag.tag_class = TC_CONTEXT_SPECIFIC; ;
     break;}
-case 266:
-#line 2089 "asn1p_y.y"
+case 274:
+#line 2173 "asn1p_y.y"
 { yyval.a_tag.tag_class = TC_UNIVERSAL; ;
     break;}
-case 267:
-#line 2090 "asn1p_y.y"
+case 275:
+#line 2174 "asn1p_y.y"
 { yyval.a_tag.tag_class = TC_APPLICATION; ;
     break;}
-case 268:
-#line 2091 "asn1p_y.y"
+case 276:
+#line 2175 "asn1p_y.y"
 { yyval.a_tag.tag_class = TC_PRIVATE; ;
     break;}
-case 269:
-#line 2095 "asn1p_y.y"
+case 277:
+#line 2179 "asn1p_y.y"
 { yyval.a_tag.tag_mode = TM_DEFAULT; ;
     break;}
-case 270:
-#line 2096 "asn1p_y.y"
+case 278:
+#line 2180 "asn1p_y.y"
 { yyval.a_tag.tag_mode = TM_IMPLICIT; ;
     break;}
-case 271:
-#line 2097 "asn1p_y.y"
+case 279:
+#line 2181 "asn1p_y.y"
 { yyval.a_tag.tag_mode = TM_EXPLICIT; ;
     break;}
-case 272:
-#line 2101 "asn1p_y.y"
+case 280:
+#line 2185 "asn1p_y.y"
 {
 		checkmem(yyvsp[0].tv_str);
 		yyval.tv_str = yyvsp[0].tv_str;
 	;
     break;}
-case 273:
-#line 2105 "asn1p_y.y"
+case 281:
+#line 2189 "asn1p_y.y"
 {
 		checkmem(yyvsp[0].tv_str);
 		yyval.tv_str = yyvsp[0].tv_str;
 	;
     break;}
-case 274:
-#line 2113 "asn1p_y.y"
+case 282:
+#line 2197 "asn1p_y.y"
 {
 		checkmem(yyvsp[0].tv_str);
 		yyval.tv_str = yyvsp[0].tv_str;
 	;
     break;}
-case 275:
-#line 2120 "asn1p_y.y"
+case 283:
+#line 2204 "asn1p_y.y"
 { yyval.tv_str = 0; ;
     break;}
-case 276:
-#line 2121 "asn1p_y.y"
+case 284:
+#line 2205 "asn1p_y.y"
 {
 		yyval.tv_str = yyvsp[0].tv_str;
 	;
     break;}
-case 277:
-#line 2127 "asn1p_y.y"
+case 285:
+#line 2211 "asn1p_y.y"
 {
 		checkmem(yyvsp[0].tv_str);
 		yyval.tv_str = yyvsp[0].tv_str;
@@ -3697,7 +3777,7 @@
     }
   return 1;
 }
-#line 2133 "asn1p_y.y"
+#line 2217 "asn1p_y.y"