DEFAULT type support

diff --git a/libasn1parser/asn1p_y.c b/libasn1parser/asn1p_y.c
index 7d927e9..4cbd21f 100644
--- a/libasn1parser/asn1p_y.c
+++ b/libasn1parser/asn1p_y.c
@@ -182,7 +182,7 @@
 	asn1p_value_t		*a_value;	/* Number, DefinedValue, etc */
 	struct asn1p_param_s	 a_parg;	/* A parameter argument */
 	asn1p_paramlist_t	*a_plist;	/* A pargs list */
-	enum asn1p_expr_marker_e a_marker;	/* OPTIONAL/DEFAULT */
+	struct asn1p_expr_marker_s a_marker;	/* OPTIONAL/DEFAULT */
 	enum asn1p_constr_pres_e a_pres;	/* PRESENT/ABSENT/OPTIONAL */
 	asn1_integer_t		 a_int;
 	char	*tv_str;
@@ -205,11 +205,11 @@
 
 
 
-#define	YYFINAL		397
+#define	YYFINAL		399
 #define	YYFLAG		-32768
 #define	YYNTBASE	115
 
-#define YYTRANSLATE(x) ((unsigned)(x) <= 355 ? yytranslate[x] : 213)
+#define YYTRANSLATE(x) ((unsigned)(x) <= 355 ? yytranslate[x] : 211)
 
 static const char yytranslate[] = {     0,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -263,96 +263,96 @@
    231,   233,   239,   240,   242,   244,   248,   251,   256,   261,
    262,   264,   265,   272,   274,   277,   279,   281,   283,   287,
    291,   295,   297,   299,   304,   309,   314,   320,   326,   328,
-   333,   338,   340,   344,   346,   350,   354,   356,   360,   362,
-   366,   368,   370,   372,   374,   379,   380,   384,   386,   388,
-   390,   392,   394,   396,   400,   402,   405,   407,   409,   411,
-   413,   416,   419,   421,   423,   426,   429,   431,   433,   435,
-   437,   440,   442,   445,   447,   449,   451,   453,   455,   457,
-   459,   461,   463,   465,   467,   469,   471,   473,   475,   477,
-   479,   481,   483,   484,   486,   488,   493,   497,   502,   504,
-   508,   514,   516,   520,   524,   528,   533,   537,   539,   543,
-   547,   551,   555,   557,   559,   561,   564,   567,   571,   573,
-   575,   577,   579,   581,   583,   585,   591,   593,   597,   599,
-   603,   604,   606,   608,   610,   612,   614,   616,   620,   625,
-   627,   631,   634,   638,   640,   644,   645,   647,   649,   652,
-   654,   656,   657,   661,   664,   668,   670,   674,   676,   681,
-   686,   688,   690,   692,   694,   695,   697,   699,   702,   705,
-   707,   709,   711
+   333,   338,   340,   344,   346,   350,   354,   358,   360,   364,
+   366,   370,   372,   374,   376,   378,   383,   387,   388,   392,
+   394,   396,   398,   400,   402,   404,   406,   408,   410,   414,
+   416,   419,   421,   423,   425,   427,   430,   433,   435,   437,
+   440,   443,   445,   447,   449,   451,   454,   456,   459,   461,
+   463,   465,   467,   469,   471,   473,   475,   477,   479,   481,
+   483,   485,   487,   489,   491,   493,   495,   497,   498,   500,
+   502,   507,   511,   516,   518,   522,   528,   530,   534,   538,
+   542,   547,   551,   553,   557,   561,   565,   569,   571,   573,
+   575,   578,   581,   585,   587,   589,   591,   593,   595,   597,
+   599,   605,   607,   611,   613,   617,   618,   620,   622,   624,
+   626,   628,   630,   634,   639,   641,   645,   648,   652,   654,
+   658,   659,   661,   663,   666,   669,   673,   675,   679,   681,
+   686,   691,   693,   695,   697,   699,   700,   702,   704,   707,
+   710,   712,   714,   716
 };
 
 static const short yyrhs[] = {   116,
-     0,   117,     0,   116,   117,     0,   210,   118,    34,   122,
+     0,   117,     0,   116,   117,     0,   208,   118,    34,   122,
      3,    21,   125,    39,     0,     0,   119,     0,   104,   120,
    105,     0,   104,   105,     0,   121,     0,   120,   121,     0,
-   212,     0,   212,   106,     9,   107,     0,     9,     0,     0,
+   210,     0,   210,   106,     9,   107,     0,     9,     0,     0,
    123,     0,   124,     0,   123,   124,     0,    41,    84,     0,
     52,    84,     0,    20,    84,     0,    43,    53,     0,    12,
     57,     0,     0,   126,     0,   127,     0,   126,   127,     0,
    129,     0,   134,     0,   142,     0,   168,     0,   137,     0,
      0,    38,    12,   128,     0,   176,     0,    54,   130,   108,
      0,    54,    46,     0,   131,     0,   130,   131,     0,   132,
-    46,   210,   118,     0,   133,     0,   132,   109,   133,     0,
-   210,     0,   212,     0,    42,   135,   108,     0,    42,    17,
+    46,   208,   118,     0,   133,     0,   132,   109,   133,     0,
+   208,     0,   210,     0,    42,   135,   108,     0,    42,    17,
    108,     0,    42,   108,     0,   136,     0,   135,   109,   136,
-     0,   210,     0,   212,     0,   210,   138,     3,   104,   139,
+     0,   208,     0,   210,     0,   208,   138,     3,   104,   139,
    105,     0,   163,     0,   173,     0,     0,   140,     0,   141,
-     0,   140,   109,   141,     0,   102,     0,   184,     0,   210,
-     3,   208,    87,     0,   210,     3,   161,     0,   210,     3,
-   151,     0,   210,   104,   143,   105,     3,   161,     0,   144,
-     0,   143,   109,   144,     0,   210,     0,   210,   110,   212,
-     0,   173,   110,   212,     0,   146,     0,   145,   109,   146,
-     0,   161,     0,   212,     0,   148,     0,   147,   109,   148,
-     0,   212,   161,   200,     0,    30,    68,   161,     0,   160,
-     0,   150,     0,   149,   109,   150,     0,   212,   161,     0,
+     0,   140,   109,   141,     0,   102,     0,   184,     0,   208,
+     3,   206,    87,     0,   208,     3,   161,     0,   208,     3,
+   151,     0,   208,   104,   143,   105,     3,   161,     0,   144,
+     0,   143,   109,   144,     0,   208,     0,   208,   110,   210,
+     0,   173,   110,   210,     0,   146,     0,   145,   109,   146,
+     0,   161,     0,   210,     0,   148,     0,   147,   109,   148,
+     0,   210,   161,   200,     0,    30,    68,   161,     0,   160,
+     0,   150,     0,   149,   109,   150,     0,   210,   161,     0,
    160,     0,    28,   104,   153,   105,   155,     0,     0,    88,
      0,   154,     0,   153,   109,   154,     0,   166,   200,     0,
    166,   161,   200,   152,     0,   166,   166,   200,   152,     0,
      0,   156,     0,     0,    95,    82,   104,   157,   158,   105,
      0,   159,     0,   158,   159,     0,     4,     0,   166,     0,
-   102,     0,   102,   111,   171,     0,   102,   111,   207,     0,
-   208,   162,   180,     0,   175,     0,   176,     0,    27,   104,
+   102,     0,   102,   111,   171,     0,   102,   111,   205,     0,
+   206,   162,   180,     0,   175,     0,   176,     0,    27,   104,
    149,   105,     0,    78,   104,   147,   105,     0,    79,   104,
-   147,   105,     0,    78,   180,    68,   208,   162,     0,    79,
-   180,    68,   208,   162,     0,    18,     0,    18,    35,    25,
-   212,     0,   210,   104,   145,   105,     0,   163,     0,    56,
-    68,   163,     0,    11,     0,    11,   112,   210,     0,    11,
-   112,   212,     0,   211,     0,   211,   112,   164,     0,   165,
-     0,   164,   112,   165,     0,   167,     0,   167,     0,    13,
-     0,    14,     0,   212,   138,     3,   169,     0,     0,   104,
-   170,   172,     0,     5,     0,     7,     0,     6,     0,   207,
-     0,   171,     0,   212,     0,   210,   112,   212,     0,     4,
-     0,   172,     4,     0,    24,     0,    63,     0,    76,     0,
-   174,     0,    67,    81,     0,    65,    51,     0,    77,     0,
-    44,     0,    36,    71,     0,    26,    81,     0,    91,     0,
-    47,     0,    58,     0,    40,     0,    22,    81,     0,   173,
-     0,   174,   204,     0,    23,     0,    48,     0,    49,     0,
-    50,     0,    59,     0,    64,     0,    74,     0,    83,     0,
-    85,     0,    90,     0,    92,     0,    93,     0,    94,     0,
-    66,     0,    99,     0,   100,     0,    97,     0,    98,     0,
-    96,     0,     0,   181,     0,   182,     0,    80,   106,   183,
-   107,     0,   106,   183,   107,     0,   182,   106,   183,   107,
-     0,   184,     0,   184,   109,   102,     0,   184,   109,   102,
-   109,   184,     0,   185,     0,   184,   177,   185,     0,   184,
-   178,   185,     0,   185,   179,   185,     0,   187,   106,   183,
-   107,     0,   106,   183,   107,     0,   188,     0,   188,   186,
-   188,     0,    61,   186,   188,     0,   188,   186,    60,     0,
-    61,   186,    60,     0,   194,     0,   189,     0,   101,     0,
-   101,   113,     0,   113,   101,     0,   113,   101,   113,     0,
-    80,     0,    46,     0,   207,     0,   212,     0,     6,     0,
-    45,     0,    86,     0,    95,    30,   104,   190,   105,     0,
-   191,     0,   190,   109,   191,     0,   102,     0,   212,   180,
-   192,     0,     0,   193,     0,    73,     0,    15,     0,    69,
-     0,   195,     0,   196,     0,   104,   210,   105,     0,   195,
-   104,   197,   105,     0,   198,     0,   197,   109,   198,     0,
-   114,   199,     0,   114,   112,   199,     0,   212,     0,   199,
-   112,   212,     0,     0,   201,     0,    69,     0,    33,   202,
-     0,   188,     0,   173,     0,     0,   104,   203,   172,     0,
-   104,   105,     0,   104,   205,   105,     0,   206,     0,   205,
-   109,   206,     0,   212,     0,   212,   106,   207,   107,     0,
-   212,   106,   171,   107,     0,   207,     0,   102,     0,     9,
-     0,    10,     0,     0,   209,     0,   103,     0,   103,    52,
-     0,   103,    41,     0,    11,     0,    12,     0,    12,     0,
-     8,     0
+   147,   105,     0,    78,   180,    68,   206,   162,     0,    79,
+   180,    68,   206,   162,     0,    18,     0,    18,    35,    25,
+   210,     0,   208,   104,   145,   105,     0,   163,     0,    56,
+    68,   163,     0,    11,     0,    11,   112,   208,     0,   209,
+   112,   208,     0,    11,   112,   210,     0,   209,     0,   209,
+   112,   164,     0,   165,     0,   164,   112,   165,     0,   167,
+     0,   167,     0,    13,     0,    14,     0,   210,   138,     3,
+   169,     0,   210,   110,   169,     0,     0,   104,   170,   172,
+     0,    63,     0,    45,     0,    86,     0,     5,     0,     7,
+     0,     6,     0,   205,     0,   171,     0,   210,     0,   208,
+   112,   210,     0,     4,     0,   172,     4,     0,    24,     0,
+    63,     0,    76,     0,   174,     0,    67,    81,     0,    65,
+    51,     0,    77,     0,    44,     0,    36,    71,     0,    26,
+    81,     0,    91,     0,    47,     0,    58,     0,    40,     0,
+    22,    81,     0,   173,     0,   174,   202,     0,    23,     0,
+    48,     0,    49,     0,    50,     0,    59,     0,    64,     0,
+    74,     0,    83,     0,    85,     0,    90,     0,    92,     0,
+    93,     0,    94,     0,    66,     0,    99,     0,   100,     0,
+    97,     0,    98,     0,    96,     0,     0,   181,     0,   182,
+     0,    80,   106,   183,   107,     0,   106,   183,   107,     0,
+   182,   106,   183,   107,     0,   184,     0,   184,   109,   102,
+     0,   184,   109,   102,   109,   184,     0,   185,     0,   184,
+   177,   185,     0,   184,   178,   185,     0,   185,   179,   185,
+     0,   187,   106,   183,   107,     0,   106,   183,   107,     0,
+   188,     0,   188,   186,   188,     0,    61,   186,   188,     0,
+   188,   186,    60,     0,    61,   186,    60,     0,   194,     0,
+   189,     0,   101,     0,   101,   113,     0,   113,   101,     0,
+   113,   101,   113,     0,    80,     0,    46,     0,   205,     0,
+   210,     0,     6,     0,    45,     0,    86,     0,    95,    30,
+   104,   190,   105,     0,   191,     0,   190,   109,   191,     0,
+   102,     0,   210,   180,   192,     0,     0,   193,     0,    73,
+     0,    15,     0,    69,     0,   195,     0,   196,     0,   104,
+   208,   105,     0,   195,   104,   197,   105,     0,   198,     0,
+   197,   109,   198,     0,   114,   199,     0,   114,   112,   199,
+     0,   210,     0,   199,   112,   210,     0,     0,   201,     0,
+    69,     0,    33,   169,     0,   104,   105,     0,   104,   203,
+   105,     0,   204,     0,   203,   109,   204,     0,   210,     0,
+   210,   106,   205,   107,     0,   210,   106,   171,   107,     0,
+   205,     0,   102,     0,     9,     0,    10,     0,     0,   207,
+     0,   103,     0,   103,    52,     0,   103,    41,     0,    11,
+     0,    12,     0,    12,     0,     8,     0
 };
 
 #endif
@@ -370,21 +370,21 @@
    892,   897,   907,   909,   912,   920,   926,   935,   941,   958,
    960,   965,   969,   974,   979,   985,   989,  1000,  1009,  1018,
   1029,  1051,  1055,  1061,  1067,  1073,  1079,  1088,  1097,  1103,
-  1117,  1141,  1148,  1162,  1171,  1181,  1191,  1199,  1220,  1229,
-  1238,  1239,  1241,  1248,  1260,  1270,  1272,  1277,  1281,  1285,
-  1289,  1292,  1297,  1309,  1325,  1336,  1350,  1352,  1353,  1354,
-  1355,  1356,  1357,  1358,  1359,  1360,  1361,  1362,  1368,  1370,
-  1371,  1374,  1381,  1393,  1395,  1399,  1403,  1404,  1405,  1406,
-  1407,  1411,  1412,  1413,  1414,  1418,  1419,  1426,  1426,  1427,
-  1427,  1428,  1430,  1432,  1437,  1441,  1450,  1454,  1459,  1463,
-  1469,  1479,  1483,  1486,  1489,  1494,  1503,  1511,  1517,  1524,
-  1532,  1540,  1549,  1552,  1557,  1559,  1560,  1561,  1564,  1568,
-  1573,  1577,  1588,  1593,  1598,  1605,  1611,  1615,  1620,  1626,
-  1638,  1640,  1643,  1647,  1650,  1655,  1659,  1667,  1682,  1688,
-  1695,  1708,  1720,  1735,  1739,  1756,  1758,  1761,  1765,  1771,
-  1774,  1776,  1776,  1796,  1801,  1806,  1812,  1818,  1826,  1834,
-  1842,  1849,  1859,  1864,  1894,  1896,  1899,  1904,  1908,  1914,
-  1919,  1926,  1933
+  1117,  1141,  1148,  1162,  1171,  1181,  1191,  1201,  1209,  1230,
+  1239,  1248,  1249,  1251,  1258,  1270,  1280,  1288,  1288,  1293,
+  1298,  1303,  1308,  1312,  1316,  1320,  1323,  1328,  1340,  1356,
+  1367,  1381,  1383,  1384,  1385,  1386,  1387,  1388,  1389,  1390,
+  1391,  1392,  1393,  1399,  1401,  1402,  1405,  1412,  1424,  1426,
+  1430,  1434,  1435,  1436,  1437,  1438,  1442,  1443,  1444,  1445,
+  1449,  1450,  1457,  1457,  1458,  1458,  1459,  1461,  1463,  1468,
+  1472,  1481,  1485,  1490,  1494,  1500,  1510,  1514,  1517,  1520,
+  1525,  1534,  1542,  1548,  1555,  1563,  1571,  1580,  1583,  1588,
+  1590,  1591,  1592,  1595,  1599,  1604,  1608,  1619,  1623,  1628,
+  1635,  1641,  1645,  1650,  1656,  1668,  1670,  1673,  1677,  1680,
+  1685,  1689,  1697,  1712,  1718,  1725,  1738,  1750,  1765,  1769,
+  1786,  1791,  1794,  1799,  1821,  1826,  1831,  1837,  1843,  1851,
+  1859,  1867,  1874,  1884,  1889,  1919,  1921,  1924,  1929,  1933,
+  1939,  1944,  1951,  1958
 };
 #endif
 
@@ -423,16 +423,15 @@
 "optUnique","ClassFieldList","ClassField","optWithSyntax","WithSyntax","@2",
 "WithSyntaxFormat","WithSyntaxFormatToken","ExtensionAndException","Type","TypeDeclaration",
 "ComplexTypeReference","ComplexTypeReferenceAmpList","ComplexTypeReferenceElement",
-"ClassFieldIdentifier","ClassFieldName","ValueDefinition","InlineOrDefinedValue",
-"@3","DefinedValue","Opaque","BasicTypeId","BasicTypeId_UniverationCompatible",
-"BasicType","BasicString","Union","Intersection","Except","optConstraints","Constraints",
-"SetOfConstraints","ElementSetSpecs","ElementSetSpec","ConstraintSubtypeElement",
-"ConstraintRangeSpec","ConstraintSpec","ConstraintValue","WithComponents","WithComponentsList",
-"WithComponentsElement","optPresenceConstraint","PresenceConstraint","TableConstraint",
-"SimpleTableConstraint","ComponentRelationConstraint","AtNotationList","AtNotationElement",
-"ComponentIdList","optMarker","Marker","DefaultValue","@4","UniverationDefinition",
-"UniverationList","UniverationElement","SignedNumber","optTag","Tag","TypeRefName",
-"ObjectClassReference","Identifier", NULL
+"ClassFieldIdentifier","ClassFieldName","ValueDefinition","Value","@3","DefinedValue",
+"Opaque","BasicTypeId","BasicTypeId_UniverationCompatible","BasicType","BasicString",
+"Union","Intersection","Except","optConstraints","Constraints","SetOfConstraints",
+"ElementSetSpecs","ElementSetSpec","ConstraintSubtypeElement","ConstraintRangeSpec",
+"ConstraintSpec","ConstraintValue","WithComponents","WithComponentsList","WithComponentsElement",
+"optPresenceConstraint","PresenceConstraint","TableConstraint","SimpleTableConstraint",
+"ComponentRelationConstraint","AtNotationList","AtNotationElement","ComponentIdList",
+"optMarker","Marker","UniverationDefinition","UniverationList","UniverationElement",
+"SignedNumber","optTag","Tag","TypeRefName","ObjectClassReference","Identifier", NULL
 };
 #endif
 
@@ -448,21 +447,21 @@
    150,   151,   152,   152,   153,   153,   154,   154,   154,   155,
    155,   157,   156,   158,   158,   159,   159,   160,   160,   160,
    161,   162,   162,   162,   162,   162,   162,   162,   162,   162,
-   162,   162,   162,   163,   163,   163,   163,   163,   164,   164,
-   165,   166,   167,   167,   168,   170,   169,   169,   169,   169,
-   169,   169,   171,   171,   172,   172,   173,   173,   173,   173,
-   173,   173,   173,   173,   173,   173,   173,   173,   174,   174,
-   174,   175,   175,   176,   176,   176,   176,   176,   176,   176,
-   176,   176,   176,   176,   176,   176,   176,   177,   177,   178,
-   178,   179,   180,   180,   181,   181,   182,   182,   183,   183,
-   183,   184,   184,   184,   184,   185,   185,   185,   185,   185,
-   185,   185,   185,   185,   186,   186,   186,   186,   187,   187,
-   188,   188,   188,   188,   188,   189,   190,   190,   191,   191,
-   192,   192,   193,   193,   193,   194,   194,   195,   196,   197,
-   197,   198,   198,   199,   199,   200,   200,   201,   201,   202,
-   202,   203,   202,   204,   204,   205,   205,   206,   206,   206,
-   206,   206,   207,   207,   208,   208,   209,   209,   209,   210,
-   210,   211,   212
+   162,   162,   162,   163,   163,   163,   163,   163,   163,   164,
+   164,   165,   166,   167,   167,   168,   169,   170,   169,   169,
+   169,   169,   169,   169,   169,   169,   169,   171,   171,   172,
+   172,   173,   173,   173,   173,   173,   173,   173,   173,   173,
+   173,   173,   173,   174,   174,   174,   175,   175,   176,   176,
+   176,   176,   176,   176,   176,   176,   176,   176,   176,   176,
+   176,   176,   177,   177,   178,   178,   179,   180,   180,   181,
+   181,   182,   182,   183,   183,   183,   184,   184,   184,   184,
+   185,   185,   185,   185,   185,   185,   185,   185,   185,   186,
+   186,   186,   186,   187,   187,   188,   188,   188,   188,   188,
+   189,   190,   190,   191,   191,   192,   192,   193,   193,   193,
+   194,   194,   195,   196,   197,   197,   198,   198,   199,   199,
+   200,   200,   201,   201,   202,   202,   203,   203,   204,   204,
+   204,   204,   204,   205,   205,   206,   206,   207,   207,   207,
+   208,   208,   209,   210
 };
 
 static const short yyr2[] = {     0,
@@ -477,279 +476,271 @@
      1,     5,     0,     1,     1,     3,     2,     4,     4,     0,
      1,     0,     6,     1,     2,     1,     1,     1,     3,     3,
      3,     1,     1,     4,     4,     4,     5,     5,     1,     4,
-     4,     1,     3,     1,     3,     3,     1,     3,     1,     3,
-     1,     1,     1,     1,     4,     0,     3,     1,     1,     1,
-     1,     1,     1,     3,     1,     2,     1,     1,     1,     1,
-     2,     2,     1,     1,     2,     2,     1,     1,     1,     1,
-     2,     1,     2,     1,     1,     1,     1,     1,     1,     1,
+     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,
+     2,     1,     1,     1,     1,     2,     2,     1,     1,     2,
+     2,     1,     1,     1,     1,     2,     1,     2,     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,     4,     3,     1,     3,     3,
-     3,     3,     1,     1,     1,     2,     2,     3,     1,     1,
-     1,     1,     1,     1,     1,     5,     1,     3,     1,     3,
-     0,     1,     1,     1,     1,     1,     1,     3,     4,     1,
-     3,     2,     3,     1,     3,     0,     1,     1,     2,     1,
-     1,     0,     3,     2,     3,     1,     3,     1,     4,     4,
-     1,     1,     1,     1,     0,     1,     1,     2,     2,     1,
-     1,     1,     1
+     1,     1,     1,     1,     1,     1,     1,     0,     1,     1,
+     4,     3,     4,     1,     3,     5,     1,     3,     3,     3,
+     4,     3,     1,     3,     3,     3,     3,     1,     1,     1,
+     2,     2,     3,     1,     1,     1,     1,     1,     1,     1,
+     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,     1,     2,     2,
+     1,     1,     1,     1
 };
 
 static const short yydefact[] = {     0,
-   250,   251,     1,     2,     5,     3,     0,     0,     6,   253,
+   251,   252,     1,     2,     5,     3,     0,     0,     6,   254,
     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,   154,     0,     0,
-   155,   156,   157,     0,   158,   159,   167,   160,   161,   162,
-   163,   164,   165,   166,     0,    24,    25,    27,    28,    31,
+    18,    21,    19,     0,    17,    12,    23,   159,     0,     0,
+   160,   161,   162,     0,   163,   164,   172,   165,   166,   167,
+   168,   169,   170,   171,     0,    24,    25,    27,    28,    31,
     29,    30,    34,     0,     0,    32,     0,    46,     0,    47,
     49,    50,    36,     0,    37,     0,    40,    42,    43,     4,
-    26,   245,   114,   252,     0,   137,     0,     0,   150,   144,
-   148,   149,   138,     0,     0,   139,   143,   147,     0,     0,
-    52,    53,   140,   117,     0,    33,    45,    44,     0,    35,
-    38,     0,     0,     0,   247,    62,    61,     0,   246,     0,
-   151,   146,   145,   142,   141,     0,    64,     0,    66,     0,
-     0,     0,    48,     5,    41,     0,   249,   248,   114,   252,
-   109,     0,     0,   173,   173,    60,   173,   112,   152,   140,
-   102,   103,     0,   115,   116,     0,     0,     0,     0,    54,
-   123,   124,   118,   119,   121,   128,   130,   129,   243,   244,
-   126,   125,   132,   131,     0,   133,    39,     0,    85,   245,
-   122,     0,     0,     0,     0,     0,     0,     0,   174,   175,
-     0,     0,   101,     0,   153,   245,   245,    65,    68,    67,
-   203,   204,   200,     0,   199,   205,     0,    58,     0,     0,
-     0,    55,    56,    59,   182,     0,   188,   194,   193,   216,
-   217,   201,   202,     0,     0,     0,    90,     0,     0,   228,
-   226,   226,    87,   227,     0,     0,    98,     0,    78,    81,
-   245,   113,     0,     0,     0,    73,    77,   245,     0,   179,
-   245,     0,     0,   245,   242,   234,     0,   236,   241,   238,
-     0,    69,    71,    72,    63,   195,     0,     0,     0,     0,
-     0,    51,     0,   170,   171,   168,   169,     0,     0,   172,
-     0,     0,     0,     0,   120,   135,   127,   134,     0,    82,
-    91,    86,   232,   231,   230,   229,    83,    83,   110,     0,
-   104,     0,    80,     0,   245,   105,     0,   226,   177,     0,
-     0,     0,   106,     0,   235,     0,     0,   111,   245,   196,
-   197,   192,   190,     0,   218,   187,    57,   183,   184,   185,
-     0,   191,   189,     0,     0,   220,   136,     0,     0,    84,
-    88,    89,    99,   100,    79,   176,    76,    74,    75,   180,
-   107,   178,   108,   237,     0,     0,    70,   198,   209,     0,
-   207,   173,   186,     0,   222,   224,   219,     0,    92,   233,
-     0,   240,   239,   206,     0,   211,   223,     0,   221,     0,
-   181,   208,   214,   215,   213,   210,   212,   225,    96,     0,
-    94,    97,    93,    95,     0,     0,     0
+    26,   246,   114,   253,     0,   142,     0,     0,   155,   149,
+   153,   154,   143,     0,     0,   144,   148,   152,     0,     0,
+    52,    53,   145,   118,     0,    33,    45,    44,     0,    35,
+    38,     0,     0,     0,   248,    62,    61,     0,   247,     0,
+   156,   151,   150,   147,   146,     0,    64,     0,    66,     0,
+     0,     0,    48,     5,    41,     0,   250,   249,   114,   253,
+   109,     0,     0,   178,   178,    60,   178,   112,   157,   145,
+   102,   103,     0,   115,   117,     0,     0,     0,     0,    54,
+   124,   125,   119,   120,   122,   116,   133,   135,   134,   244,
+   245,   131,   130,   132,   128,   126,   137,   136,     0,   138,
+    39,     0,    85,   246,   123,     0,     0,     0,     0,     0,
+     0,     0,   179,   180,     0,     0,   101,     0,   158,   246,
+   246,    65,    68,    67,   208,   209,   205,     0,   204,   210,
+     0,    58,     0,     0,     0,    55,    56,    59,   187,     0,
+   193,   199,   198,   221,   222,   206,   207,     0,     0,     0,
+     0,    90,     0,     0,   233,   231,   231,    87,   232,     0,
+     0,    98,     0,    78,    81,   246,   113,     0,     0,     0,
+    73,    77,   246,     0,   184,   246,     0,     0,   246,   243,
+   235,     0,   237,   242,   239,     0,    69,    71,    72,    63,
+   200,     0,     0,     0,     0,     0,    51,     0,   175,   176,
+   173,   174,     0,     0,   177,     0,     0,     0,     0,   121,
+   140,   129,   139,   127,     0,    82,    91,    86,   234,    83,
+    83,   110,     0,   104,     0,    80,     0,   246,   105,     0,
+   231,   182,     0,     0,     0,   106,     0,   236,     0,     0,
+   111,   246,   201,   202,   197,   195,     0,   223,   192,    57,
+   188,   189,   190,     0,   196,   194,     0,     0,   225,   141,
+     0,    84,    88,    89,    99,   100,   138,    79,   181,    76,
+    74,    75,   185,   107,   183,   108,   238,     0,     0,    70,
+   203,   214,     0,   212,   178,   191,     0,   227,   229,   224,
+     0,    92,     0,   241,   240,   211,     0,   216,   228,     0,
+   226,     0,   186,   213,   219,   220,   218,   215,   217,   230,
+    96,     0,    94,    97,    93,    95,     0,     0,     0
 };
 
-static const short yydefgoto[] = {   395,
+static const short yydefgoto[] = {   397,
      3,     4,     8,     9,    13,    14,    25,    26,    27,    55,
     56,    57,   106,    58,    74,    75,    76,    77,    59,    69,
-    70,    60,   100,   211,   212,   213,    61,   126,   127,   261,
-   262,   245,   246,   238,   239,   116,   341,   178,   179,   290,
-   291,   380,   390,   391,   247,   263,   147,   148,   163,   164,
-   180,   181,    62,   172,   225,   173,   287,   149,   103,   151,
-   152,   278,   279,   281,   188,   189,   190,   249,   250,   215,
-   268,   216,   217,   218,   360,   361,   386,   387,   219,   220,
-   221,   335,   336,   365,   233,   234,   296,   339,   195,   257,
-   258,   222,   235,   119,   153,   104,   223
+    70,    60,   100,   215,   216,   217,    61,   126,   127,   266,
+   267,   250,   251,   243,   244,   116,   343,   182,   183,   296,
+   297,   382,   392,   393,   252,   268,   147,   148,   163,   164,
+   184,   185,    62,   176,   229,   177,   292,   149,   103,   151,
+   152,   283,   284,   286,   192,   193,   194,   254,   255,   219,
+   273,   220,   221,   222,   363,   364,   388,   389,   223,   224,
+   225,   338,   339,   368,   238,   239,   199,   262,   263,   226,
+   240,   119,   179,   104,   227
 };
 
-static const short yypact[] = {   254,
--32768,-32768,   254,-32768,   -79,-32768,    13,     7,-32768,-32768,
--32768,-32768,    35,-32768,   -51,   202,-32768,-32768,    61,    20,
-    11,    19,    57,    44,    90,   202,-32768,    23,-32768,-32768,
--32768,-32768,-32768,   115,-32768,-32768,   351,-32768,   176,    12,
--32768,-32768,-32768,   174,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,   151,   351,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,   220,   565,-32768,    99,-32768,   199,-32768,
--32768,-32768,-32768,    24,-32768,   -20,-32768,-32768,-32768,-32768,
--32768,    -9,   106,-32768,   140,-32768,   145,   163,-32768,-32768,
--32768,-32768,-32768,   186,   182,-32768,-32768,-32768,   582,   249,
--32768,-32768,-32768,   143,   278,-32768,-32768,-32768,   228,-32768,
--32768,   254,   228,   180,   129,-32768,-32768,   428,-32768,   228,
--32768,-32768,-32768,-32768,-32768,   101,-32768,   147,   191,   195,
-   300,    74,-32768,   -79,-32768,   300,-32768,-32768,   105,   214,
-   285,   217,   255,    89,   124,-32768,   -40,-32768,-32768,   218,
--32768,-32768,   221,-32768,-32768,   328,   582,   324,   324,    51,
--32768,-32768,   222,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,   223,-32768,-32768,   142,-32768,    40,
--32768,   308,    37,   304,   230,    48,   155,   269,-32768,   232,
-    48,   271,-32768,    42,-32768,    26,   237,-32768,-32768,-32768,
--32768,-32768,-32768,   -26,-32768,-32768,   311,-32768,   254,   155,
-   238,   236,-32768,   206,   251,   242,   -26,-32768,-32768,   245,
--32768,-32768,-32768,   300,   346,   324,   256,   300,   320,-32768,
-     5,     5,-32768,-32768,   505,   324,   241,   144,-32768,-32768,
-   237,-32768,   155,   286,   153,-32768,-32768,   237,   246,   171,
-   237,   155,   167,   237,-32768,-32768,   168,-32768,-32768,   252,
-   170,-32768,-32768,-32768,-32768,   248,   265,    82,   266,   250,
-   262,-32768,    51,-32768,-32768,-32768,-32768,   155,   155,-32768,
-   155,   155,   188,   258,-32768,-32768,   369,-32768,   293,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,   288,   288,-32768,   280,
--32768,    37,-32768,   270,   237,-32768,    48,     5,-32768,   277,
-   505,   273,-32768,   505,-32768,    54,   280,-32768,    26,-32768,
-   268,-32768,-32768,    60,-32768,-32768,-32768,-32768,-32768,-32768,
-   275,-32768,-32768,     9,   177,-32768,-32768,   282,   346,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   279,
--32768,-32768,-32768,-32768,   283,   284,-32768,-32768,-32768,   189,
--32768,   -40,-32768,   324,   272,-32768,-32768,   258,-32768,   369,
-   155,-32768,-32768,-32768,    60,    85,   272,   324,-32768,    94,
-   206,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,    14,
--32768,-32768,-32768,-32768,   392,   394,-32768
+static const short yypact[] = {    42,
+-32768,-32768,    42,-32768,    -6,-32768,    72,   111,-32768,-32768,
+-32768,-32768,    74,-32768,    -1,   162,-32768,-32768,   138,    99,
+    83,    91,   123,    97,   222,   162,-32768,   121,-32768,-32768,
+-32768,-32768,-32768,   209,-32768,-32768,   313,-32768,   219,    33,
+-32768,-32768,-32768,    96,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,   210,   313,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,    12,   527,-32768,   185,-32768,   -18,-32768,
+-32768,-32768,-32768,    49,-32768,   -25,-32768,-32768,-32768,-32768,
+-32768,    -3,   145,-32768,   186,-32768,   202,   229,-32768,-32768,
+-32768,-32768,-32768,   250,   223,-32768,-32768,-32768,   544,   302,
+-32768,-32768,-32768,   194,   311,-32768,-32768,-32768,   158,-32768,
+-32768,    42,   158,   214,   102,-32768,-32768,   390,-32768,   158,
+-32768,-32768,-32768,-32768,-32768,    87,-32768,   213,   216,   225,
+   297,   254,-32768,    -6,-32768,   124,-32768,-32768,   -57,   231,
+   292,   233,   270,   -12,   149,-32768,   -37,-32768,-32768,   235,
+-32768,-32768,   237,-32768,-32768,   339,   544,   335,   335,   152,
+-32768,-32768,   232,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   238,   236,
+-32768,    90,-32768,   176,-32768,   320,     8,   207,   241,    32,
+   140,   281,-32768,   246,    32,   285,-32768,    63,-32768,    20,
+   251,-32768,-32768,-32768,-32768,-32768,-32768,   -16,-32768,-32768,
+   326,-32768,    42,   140,   252,   255,-32768,   234,   263,   259,
+   -16,-32768,-32768,   264,-32768,-32768,-32768,   124,   362,   335,
+   254,   274,   124,   254,-32768,    18,    18,-32768,-32768,   467,
+   335,   260,   101,-32768,-32768,   251,-32768,   140,   306,   131,
+-32768,-32768,   251,   268,   177,   251,   140,   132,   251,-32768,
+-32768,   134,-32768,-32768,   272,   164,-32768,-32768,-32768,-32768,
+   267,   275,   242,   277,   278,   279,-32768,   152,-32768,-32768,
+-32768,-32768,   140,   140,-32768,   140,   140,   262,   271,-32768,
+-32768,   378,-32768,-32768,   307,-32768,-32768,-32768,-32768,   296,
+   296,-32768,   280,-32768,     8,-32768,   283,   251,-32768,    32,
+    18,-32768,   286,   467,   284,-32768,   467,-32768,    10,   280,
+-32768,    20,-32768,   282,-32768,-32768,    27,-32768,-32768,-32768,
+-32768,-32768,-32768,   287,-32768,-32768,     5,   173,-32768,-32768,
+   288,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,   290,-32768,-32768,-32768,-32768,   293,   303,-32768,
+-32768,-32768,   175,-32768,   -37,-32768,   335,   299,-32768,-32768,
+   271,-32768,   140,-32768,-32768,-32768,    27,    71,   299,   335,
+-32768,   159,   234,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,    13,-32768,-32768,-32768,-32768,   393,   397,-32768
 };
 
 static const short yypgoto[] = {-32768,
--32768,   395,   261,-32768,-32768,   389,-32768,-32768,   377,-32768,
--32768,   348,-32768,-32768,-32768,   333,-32768,   295,-32768,-32768,
-   303,-32768,   344,-32768,-32768,   141,-32768,-32768,   259,-32768,
-   100,   227,   113,-32768,   111,-32768,   123,-32768,   194,-32768,
--32768,-32768,-32768,    33,  -169,   -81,  -173,   -49,-32768,   203,
-  -177,  -100,-32768,-32768,-32768,  -252,    87,   -52,  -109,-32768,
-    67,-32768,-32768,-32768,  -137,-32768,-32768,   -44,  -156,  -107,
-   211,-32768,   -56,-32768,-32768,    55,-32768,-32768,-32768,-32768,
--32768,-32768,    63,    65,  -160,-32768,-32768,-32768,-32768,-32768,
-   116,  -125,   -71,-32768,     2,-32768,    -7
+-32768,   401,   289,-32768,-32768,   396,-32768,-32768,   389,-32768,
+-32768,   363,-32768,-32768,-32768,   344,-32768,   308,-32768,-32768,
+   315,-32768,   355,-32768,-32768,   144,-32768,-32768,   276,-32768,
+   103,   240,   117,-32768,   126,-32768,   127,-32768,   196,-32768,
+-32768,-32768,-32768,    40,  -173,   -75,  -218,   -53,-32768,   208,
+  -180,  -109,-32768,   -23,-32768,  -167,-32768,   -33,  -110,-32768,
+    37,-32768,-32768,-32768,  -144,-32768,-32768,   -93,  -151,    11,
+   220,-32768,  -210,-32768,-32768,    65,-32768,-32768,-32768,-32768,
+-32768,-32768,    73,    76,  -172,-32768,-32768,-32768,   128,  -103,
+   -72,-32768,     2,-32768,    -7
 };
 
 
-#define	YYLAST		673
+#define	YYLAST		635
 
 
 static const short yytable[] = {    15,
-   117,     5,   232,   214,     5,    15,   174,   192,   150,   193,
-   118,   102,   102,   240,   101,   101,    10,   389,   114,    10,
-    10,    11,     1,     2,     7,   112,   161,   162,    67,    65,
-   165,    10,    72,    10,     1,     2,    79,   229,    64,   185,
-    16,    71,    10,    11,    10,    78,   128,   343,    65,    10,
-   169,   170,   161,   162,    19,    10,   201,    64,    10,   169,
-   170,    10,   169,   170,   355,   187,    79,    10,   259,    28,
-   297,   298,   229,   230,   266,    78,    29,   244,   166,   167,
-   168,    10,   169,   170,     1,     2,   267,   201,   113,    10,
-   169,   170,    34,   115,    30,   202,   203,   389,   231,   383,
-   129,    72,    31,    63,   128,    79,   161,   162,   230,    32,
-    71,   204,   155,   134,    78,   265,   214,    12,   393,    68,
-   364,   154,    63,   165,   176,   150,   202,    33,   115,    36,
-   205,   110,   240,   175,   242,    37,   206,   351,   237,    17,
-   353,   322,   115,   255,  -226,   207,   256,   349,  -226,   237,
-   199,   200,   208,   384,   209,   255,   210,   385,   129,   303,
-   201,   359,    10,   169,   170,   271,   308,   206,   185,   137,
-   328,   329,   295,   330,   344,   241,   294,   171,   248,   311,
-   138,    10,   314,   248,     1,     2,   260,    66,   264,    80,
-   259,   356,   186,   201,   187,    10,   169,   170,   304,   202,
-   203,   150,   392,   185,   150,   156,   107,   312,  -250,   157,
-   270,   323,   392,    20,   381,   204,   120,   120,   288,    73,
-   121,    21,    82,   347,   376,   122,   333,   191,   299,   187,
-    83,    84,   202,   123,   205,    10,   124,   331,     1,     2,
-   206,    85,    22,    86,    23,    87,   227,   332,   301,   207,
-   228,   130,   302,    24,   131,    88,   158,   306,   209,    89,
-   210,   307,   125,    90,     1,     2,    91,   274,   275,   276,
-   277,   313,   315,   206,   318,   307,   316,    92,   319,   310,
-   132,   367,    93,   136,    94,   368,    95,    10,   169,   170,
-     1,     2,   176,   374,   241,    96,    97,   375,   160,   248,
-   159,   175,   274,   275,   276,   277,   108,   109,   260,   176,
-    98,   264,   161,   162,    83,    84,   362,  -251,   175,   182,
-   183,   194,   184,    99,   196,   201,   366,    10,   169,   170,
-   197,    10,   236,   224,   226,   243,   251,   252,   254,   115,
-   269,    85,   272,    86,   273,    87,   280,   282,   284,   286,
-   289,   300,   309,   305,   325,    88,   366,   317,    10,    89,
-   320,     1,     2,    90,   202,   321,    91,   362,   326,   324,
-   388,   334,   337,    38,   338,   340,   346,    92,   350,   352,
-   358,   363,    93,   378,    94,   369,    95,   371,    39,   372,
-   373,   396,    40,   397,   177,    96,    97,     6,    41,    42,
-    43,    18,    35,    81,    44,   206,   111,   135,   105,    45,
-    98,   133,   345,   327,    46,   198,    47,   253,   357,   348,
-   342,   292,   394,   293,    48,   370,   285,   283,   377,   382,
-   379,   354,     0,    49,     0,    50,     0,     0,   139,   140,
-    51,     0,    52,    53,    54,   141,     0,     0,     0,    85,
-    38,    86,     0,    87,   142,     0,     0,     0,     0,     0,
-     0,     0,     0,    88,     0,     0,     0,    89,     0,     0,
-     0,    90,     0,     0,    91,    41,    42,    43,     0,     0,
-     0,     0,     0,   143,     0,    92,    45,     0,     0,     0,
-    93,    46,    94,    47,    95,     0,     0,     0,     0,     0,
-     0,    48,     0,    96,    97,   144,   145,     0,     0,     0,
-    49,     0,    50,     0,   146,   139,   140,    51,    98,    52,
-    53,    54,   141,     0,     0,     0,    85,    38,    86,     0,
-    87,   142,     0,     0,     0,     0,     0,     0,     0,     0,
-    88,     0,     0,     0,    89,     0,     0,     0,    90,     0,
-     0,    91,    41,    42,    43,     0,     0,     0,     0,     0,
-   143,     0,    92,    45,     0,     0,     0,    93,    46,    94,
-    47,    95,     0,     0,     0,    83,    84,     0,    48,     0,
-    96,    97,   144,   145,     0,     0,    85,    49,    86,    50,
-    87,     0,     1,     2,    51,    98,    52,    53,    54,     0,
-    88,     0,     0,    85,    89,    86,     0,    87,    90,     0,
-     0,    91,     0,     0,     0,     0,     0,    88,     0,     0,
-     0,    89,    92,     0,     0,    90,     0,    93,    91,    94,
-     0,    95,     0,     0,     0,     0,     0,     0,     0,    92,
-    96,    97,     0,     0,    93,     0,    94,     0,    95,     0,
-     0,     0,     0,     0,     0,    98,     0,    96,    97,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,    98
+   196,     5,   197,   237,     5,    15,   117,   150,   218,   118,
+   101,   101,    10,   245,    82,    10,   391,    10,   170,   171,
+   112,   165,    83,    84,   114,   161,   162,    10,   178,    65,
+   102,   102,    72,    85,    10,    86,    79,    87,    64,    10,
+    10,    71,   189,     1,     2,    78,  -251,    88,    65,    67,
+   234,    89,     1,     2,   120,    90,    10,    64,    91,     1,
+     2,   249,   326,   300,   301,   128,    79,   189,   191,    92,
+    10,   170,   171,    63,    93,    78,    94,   336,    95,    10,
+    11,    10,    11,   113,   271,   385,   235,    96,    97,   108,
+   109,   190,    63,   191,   264,   354,   272,     7,   356,   115,
+   129,    72,    98,    10,    19,    79,     1,     2,   236,   242,
+    71,   260,   155,   134,    78,    99,   367,   395,   165,   153,
+   276,   154,   115,   128,   180,   270,   218,   178,   362,   150,
+   178,   245,   166,   242,   247,   345,   161,   162,   352,   386,
+    68,    73,   137,   387,    16,   205,    28,    10,   170,   171,
+   203,   204,   358,   138,   307,    29,   110,   205,   129,    10,
+   170,   171,   391,   315,   260,    10,    30,   261,     1,     2,
+   306,   161,   162,    20,    31,    32,    12,   311,    17,   246,
+    33,    21,   253,   314,   206,   207,   317,   253,   161,   162,
+   265,   156,   269,   334,   232,   157,   206,   207,   233,   346,
+   208,   394,    22,   150,    23,   304,   150,   294,   234,   305,
+   299,   394,   208,    24,   275,   264,   359,    83,    84,   209,
+   378,   383,   293,   180,    34,   210,   180,    36,   189,    37,
+    66,   209,   350,   302,   211,   309,   316,   210,   318,   310,
+   310,   153,   319,   213,   235,   214,   211,   205,    80,    10,
+   170,   171,   195,   212,   191,   213,   120,   214,   167,   168,
+   169,    10,   170,   171,     1,     2,   121,   205,   321,    10,
+   170,   171,   322,   279,   280,   281,   282,   370,   115,   376,
+  -231,   371,   122,   377,  -231,   313,   206,    10,   170,   171,
+     1,     2,   107,   331,   332,   347,   333,   246,   172,   123,
+   124,   325,   253,   125,   130,   131,   206,     1,     2,   161,
+   162,   265,   347,   132,   269,   153,   173,   136,   153,   365,
+    10,   335,   158,     1,     2,   159,   186,   210,   160,   369,
+   279,   280,   281,   282,  -252,    38,   187,   188,   198,   174,
+   200,   201,    10,   228,   241,   231,   248,   210,   256,   230,
+    39,   257,   259,   115,    40,   274,   277,   175,   285,   369,
+    41,    42,    43,   278,   287,   291,    44,   289,   295,   365,
+   303,    45,   390,   308,   312,   324,    46,   320,    47,   323,
+   327,   340,   328,   342,   337,   329,    48,   353,   341,   349,
+   355,   372,   398,   366,   361,    49,   399,    50,   373,   374,
+   139,   140,    51,     6,    52,    53,    54,   141,    18,   375,
+   380,    85,    38,    86,    35,    87,   142,   111,    81,   105,
+   135,   330,   181,   133,   360,    88,   351,   344,   298,    89,
+   348,   396,   202,    90,   258,   290,    91,    41,    42,    43,
+   288,   384,   379,   381,     0,   143,   357,    92,    45,     0,
+     0,     0,    93,    46,    94,    47,    95,     0,     0,     0,
+     0,     0,     0,    48,     0,    96,    97,   144,   145,     0,
+     0,     0,    49,     0,    50,     0,   146,   139,   140,    51,
+    98,    52,    53,    54,   141,     0,     0,     0,    85,    38,
+    86,     0,    87,   142,     0,     0,     0,     0,     0,     0,
+     0,     0,    88,     0,     0,     0,    89,     0,     0,     0,
+    90,     0,     0,    91,    41,    42,    43,     0,     0,     0,
+     0,     0,   143,     0,    92,    45,     0,     0,     0,    93,
+    46,    94,    47,    95,     0,     0,     0,    83,    84,     0,
+    48,     0,    96,    97,   144,   145,     0,     0,    85,    49,
+    86,    50,    87,     0,     1,     2,    51,    98,    52,    53,
+    54,     0,    88,     0,     0,    85,    89,    86,     0,    87,
+    90,     0,     0,    91,     0,     0,     0,     0,     0,    88,
+     0,     0,     0,    89,    92,     0,     0,    90,     0,    93,
+    91,    94,     0,    95,     0,     0,     0,     0,     0,     0,
+     0,    92,    96,    97,     0,     0,    93,     0,    94,     0,
+    95,     0,     0,     0,     0,     0,     0,    98,     0,    96,
+    97,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,    98
 };
 
 static const short yycheck[] = {     7,
-    82,     0,   180,   160,     3,    13,   132,   145,   118,   147,
-    82,    64,    65,   183,    64,    65,     8,     4,    28,     8,
-     8,     9,    11,    12,   104,    46,    13,    14,    17,    37,
-   131,     8,    40,     8,    11,    12,    44,    33,    37,    80,
-    34,    40,     8,     9,     8,    44,    99,   300,    56,     8,
-     9,    10,    13,    14,   106,     8,     6,    56,     8,     9,
-    10,     8,     9,    10,   317,   106,    74,     8,   194,     9,
-   231,   232,    33,    69,   101,    74,    57,    30,     5,     6,
-     7,     8,     9,    10,    11,    12,   113,     6,   109,     8,
-     9,    10,     3,   103,    84,    45,    46,     4,   180,    15,
-    99,   109,    84,    37,   157,   113,    13,    14,    69,    53,
-   109,    61,   120,   112,   113,   197,   273,   105,   105,   108,
-   112,   120,    56,   224,   132,   235,    45,    84,   103,   107,
-    80,   108,   302,   132,   184,    21,    86,   311,   102,   105,
-   314,    60,   103,   102,   105,    95,   105,   308,   109,   102,
-   158,   159,   102,    69,   104,   102,   106,    73,   157,   241,
-     6,   102,     8,     9,    10,   210,   248,    86,    80,    41,
-   278,   279,   229,   281,   300,   183,   229,   104,   186,   251,
-    52,     8,   254,   191,    11,    12,   194,    12,   196,    39,
-   316,   317,   104,     6,   106,     8,     9,    10,   243,    45,
-    46,   311,   380,    80,   314,   105,   108,   252,   104,   109,
-   209,   268,   390,    12,   371,    61,   112,   112,   226,    46,
-    81,    20,     3,   305,   362,    81,   283,   104,   236,   106,
-    11,    12,    45,    71,    80,     8,    51,   282,    11,    12,
-    86,    22,    41,    24,    43,    26,   105,    60,   105,    95,
-   109,     3,   109,    52,   112,    36,   110,   105,   104,    40,
-   106,   109,    81,    44,    11,    12,    47,    97,    98,    99,
-   100,   105,   105,    86,   105,   109,   109,    58,   109,   109,
-     3,   105,    63,   104,    65,   109,    67,     8,     9,    10,
-    11,    12,   300,   105,   302,    76,    77,   109,   104,   307,
-   110,   300,    97,    98,    99,   100,   108,   109,   316,   317,
-    91,   319,    13,    14,    11,    12,   324,   104,   317,    35,
-   104,   104,    68,   104,   104,     6,   334,     8,     9,    10,
-     3,     8,    25,   112,   112,   106,    68,   106,    68,   103,
-    30,    22,   105,    24,   109,    26,    96,   106,   104,     4,
-    95,   111,   107,    68,   105,    36,   364,   106,     8,    40,
-   113,    11,    12,    44,    45,   101,    47,   375,   107,   104,
-   378,   114,     4,    23,    82,    88,   107,    58,   102,   107,
-   113,   107,    63,   112,    65,   104,    67,   109,    38,   107,
-   107,     0,    42,     0,   134,    76,    77,     3,    48,    49,
-    50,    13,    26,    56,    54,    86,    74,   113,    65,    59,
-    91,   109,   302,   273,    64,   157,    66,   191,   319,   307,
-   298,   228,   390,   104,    74,   339,   224,   217,   364,   375,
-   368,   316,    -1,    83,    -1,    85,    -1,    -1,    11,    12,
-    90,    -1,    92,    93,    94,    18,    -1,    -1,    -1,    22,
-    23,    24,    -1,    26,    27,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    36,    -1,    -1,    -1,    40,    -1,    -1,
-    -1,    44,    -1,    -1,    47,    48,    49,    50,    -1,    -1,
-    -1,    -1,    -1,    56,    -1,    58,    59,    -1,    -1,    -1,
-    63,    64,    65,    66,    67,    -1,    -1,    -1,    -1,    -1,
-    -1,    74,    -1,    76,    77,    78,    79,    -1,    -1,    -1,
-    83,    -1,    85,    -1,    87,    11,    12,    90,    91,    92,
-    93,    94,    18,    -1,    -1,    -1,    22,    23,    24,    -1,
-    26,    27,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    36,    -1,    -1,    -1,    40,    -1,    -1,    -1,    44,    -1,
-    -1,    47,    48,    49,    50,    -1,    -1,    -1,    -1,    -1,
-    56,    -1,    58,    59,    -1,    -1,    -1,    63,    64,    65,
-    66,    67,    -1,    -1,    -1,    11,    12,    -1,    74,    -1,
-    76,    77,    78,    79,    -1,    -1,    22,    83,    24,    85,
-    26,    -1,    11,    12,    90,    91,    92,    93,    94,    -1,
-    36,    -1,    -1,    22,    40,    24,    -1,    26,    44,    -1,
-    -1,    47,    -1,    -1,    -1,    -1,    -1,    36,    -1,    -1,
-    -1,    40,    58,    -1,    -1,    44,    -1,    63,    47,    65,
-    -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    58,
-    76,    77,    -1,    -1,    63,    -1,    65,    -1,    67,    -1,
-    -1,    -1,    -1,    -1,    -1,    91,    -1,    76,    77,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    91
+   145,     0,   147,   184,     3,    13,    82,   118,   160,    82,
+    64,    65,     8,   187,     3,     8,     4,     8,     9,    10,
+    46,   131,    11,    12,    28,    13,    14,     8,   132,    37,
+    64,    65,    40,    22,     8,    24,    44,    26,    37,     8,
+     8,    40,    80,    11,    12,    44,   104,    36,    56,    17,
+    33,    40,    11,    12,   112,    44,     8,    56,    47,    11,
+    12,    30,   273,   236,   237,    99,    74,    80,   106,    58,
+     8,     9,    10,    37,    63,    74,    65,   288,    67,     8,
+     9,     8,     9,   109,   101,    15,    69,    76,    77,   108,
+   109,   104,    56,   106,   198,   314,   113,   104,   317,   103,
+    99,   109,    91,     8,   106,   113,    11,    12,   184,   102,
+   109,   102,   120,   112,   113,   104,   112,   105,   228,   118,
+   214,   120,   103,   157,   132,   201,   278,   231,   102,   240,
+   234,   305,   131,   102,   188,   303,    13,    14,   311,    69,
+   108,    46,    41,    73,    34,     6,     9,     8,     9,    10,
+   158,   159,   320,    52,   248,    57,   108,     6,   157,     8,
+     9,    10,     4,   257,   102,     8,    84,   105,    11,    12,
+   246,    13,    14,    12,    84,    53,   105,   253,   105,   187,
+    84,    20,   190,   256,    45,    46,   259,   195,    13,    14,
+   198,   105,   200,   287,   105,   109,    45,    46,   109,   303,
+    61,   382,    41,   314,    43,   105,   317,   231,    33,   109,
+   234,   392,    61,    52,   213,   319,   320,    11,    12,    80,
+   365,   373,   230,   231,     3,    86,   234,   107,    80,    21,
+    12,    80,   308,   241,    95,   105,   105,    86,   105,   109,
+   109,   240,   109,   104,    69,   106,    95,     6,    39,     8,
+     9,    10,   104,   102,   106,   104,   112,   106,     5,     6,
+     7,     8,     9,    10,    11,    12,    81,     6,   105,     8,
+     9,    10,   109,    97,    98,    99,   100,   105,   103,   105,
+   105,   109,    81,   109,   109,   109,    45,     8,     9,    10,
+    11,    12,   108,   283,   284,   303,   286,   305,    45,    71,
+    51,    60,   310,    81,     3,   112,    45,    11,    12,    13,
+    14,   319,   320,     3,   322,   314,    63,   104,   317,   327,
+     8,    60,   110,    11,    12,   110,    35,    86,   104,   337,
+    97,    98,    99,   100,   104,    23,   104,    68,   104,    86,
+   104,     3,     8,   112,    25,   110,   106,    86,    68,   112,
+    38,   106,    68,   103,    42,    30,   105,   104,    96,   367,
+    48,    49,    50,   109,   106,     4,    54,   104,    95,   377,
+   111,    59,   380,    68,   107,   101,    64,   106,    66,   113,
+   104,     4,   105,    88,   114,   107,    74,   102,    82,   107,
+   107,   104,     0,   107,   113,    83,     0,    85,   109,   107,
+    11,    12,    90,     3,    92,    93,    94,    18,    13,   107,
+   112,    22,    23,    24,    26,    26,    27,    74,    56,    65,
+   113,   278,   134,   109,   322,    36,   310,   301,   233,    40,
+   305,   392,   157,    44,   195,   228,    47,    48,    49,    50,
+   221,   377,   367,   371,    -1,    56,   319,    58,    59,    -1,
+    -1,    -1,    63,    64,    65,    66,    67,    -1,    -1,    -1,
+    -1,    -1,    -1,    74,    -1,    76,    77,    78,    79,    -1,
+    -1,    -1,    83,    -1,    85,    -1,    87,    11,    12,    90,
+    91,    92,    93,    94,    18,    -1,    -1,    -1,    22,    23,
+    24,    -1,    26,    27,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    36,    -1,    -1,    -1,    40,    -1,    -1,    -1,
+    44,    -1,    -1,    47,    48,    49,    50,    -1,    -1,    -1,
+    -1,    -1,    56,    -1,    58,    59,    -1,    -1,    -1,    63,
+    64,    65,    66,    67,    -1,    -1,    -1,    11,    12,    -1,
+    74,    -1,    76,    77,    78,    79,    -1,    -1,    22,    83,
+    24,    85,    26,    -1,    11,    12,    90,    91,    92,    93,
+    94,    -1,    36,    -1,    -1,    22,    40,    24,    -1,    26,
+    44,    -1,    -1,    47,    -1,    -1,    -1,    -1,    -1,    36,
+    -1,    -1,    -1,    40,    58,    -1,    -1,    44,    -1,    63,
+    47,    65,    -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    58,    76,    77,    -1,    -1,    63,    -1,    65,    -1,
+    67,    -1,    -1,    -1,    -1,    -1,    -1,    91,    -1,    76,
+    77,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    91
 };
 /* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
 #line 3 "/usr/share/bison.simple"
@@ -2283,7 +2274,7 @@
 		checkmem(yyval.a_ref);
 		ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[-2].tv_str, RLT_UNKNOWN);
 		checkmem(ret == 0);
-		ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_lowercase);
+		ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_UNKNOWN);
 		checkmem(ret == 0);
 		free(yyvsp[-2].tv_str);
 	;
@@ -2294,13 +2285,26 @@
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
 		checkmem(yyval.a_ref);
+		ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[-2].tv_str, RLT_UNKNOWN);
+		checkmem(ret == 0);
+		ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_lowercase);
+		checkmem(ret == 0);
+		free(yyvsp[-2].tv_str);
+	;
+    break;}
+case 118:
+#line 1201 "asn1p_y.y"
+{
+		int ret;
+		yyval.a_ref = asn1p_ref_new(yylineno);
+		checkmem(yyval.a_ref);
 		ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_CAPITALS);
 		free(yyvsp[0].tv_str);
 		checkmem(ret == 0);
 	;
     break;}
-case 118:
-#line 1199 "asn1p_y.y"
+case 119:
+#line 1209 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = yyvsp[0].a_ref;
@@ -2321,8 +2325,8 @@
 		}
 	;
     break;}
-case 119:
-#line 1221 "asn1p_y.y"
+case 120:
+#line 1231 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2332,8 +2336,8 @@
 		checkmem(ret == 0);
 	;
     break;}
-case 120:
-#line 1229 "asn1p_y.y"
+case 121:
+#line 1239 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = yyvsp[-2].a_ref;
@@ -2342,22 +2346,22 @@
 		checkmem(ret == 0);
 	;
     break;}
-case 123:
-#line 1243 "asn1p_y.y"
+case 124:
+#line 1253 "asn1p_y.y"
 {
 		yyval.a_refcomp.lex_type = RLT_AmpUppercase;
 		yyval.a_refcomp.name = yyvsp[0].tv_str;
 	;
     break;}
-case 124:
-#line 1248 "asn1p_y.y"
+case 125:
+#line 1258 "asn1p_y.y"
 {
 		yyval.a_refcomp.lex_type = RLT_Amplowercase;
 		yyval.a_refcomp.name = yyvsp[0].tv_str;
 	;
     break;}
-case 125:
-#line 1261 "asn1p_y.y"
+case 126:
+#line 1271 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		assert(yyval.a_expr->Identifier == NULL);
@@ -2366,53 +2370,87 @@
 		yyval.a_expr->value = yyvsp[0].a_value;
 	;
     break;}
-case 126:
-#line 1271 "asn1p_y.y"
+case 127:
+#line 1281 "asn1p_y.y"
+{
+		yyval.a_value = asn1p_value_fromint(0);
+		checkmem(yyval.a_value);
+		yyval.a_value->type = ATV_CHOICE_IDENTIFIER;
+		yyval.a_value->value.choice_identifier.identifier = yyvsp[-2].tv_str;
+		yyval.a_value->value.choice_identifier.value = yyvsp[0].a_value;
+	;
+    break;}
+case 128:
+#line 1288 "asn1p_y.y"
 { asn1p_lexer_hack_push_opaque_state(); ;
     break;}
-case 127:
-#line 1272 "asn1p_y.y"
+case 129:
+#line 1288 "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 128:
-#line 1277 "asn1p_y.y"
+case 130:
+#line 1293 "asn1p_y.y"
+{
+		yyval.a_value = asn1p_value_fromint(0);
+		checkmem(yyval.a_value);
+		yyval.a_value->type = ATV_NULL;
+	;
+    break;}
+case 131:
+#line 1298 "asn1p_y.y"
+{
+		yyval.a_value = asn1p_value_fromint(0);
+		checkmem(yyval.a_value);
+		yyval.a_value->type = ATV_FALSE;
+	;
+    break;}
+case 132:
+#line 1303 "asn1p_y.y"
+{
+		yyval.a_value = asn1p_value_fromint(0);
+		checkmem(yyval.a_value);
+		yyval.a_value->type = ATV_TRUE;
+	;
+    break;}
+case 133:
+#line 1308 "asn1p_y.y"
 {
 		yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'B');
 		checkmem(yyval.a_value);
 	;
     break;}
-case 129:
-#line 1281 "asn1p_y.y"
+case 134:
+#line 1312 "asn1p_y.y"
 {
 		yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'H');
 		checkmem(yyval.a_value);
 	;
     break;}
-case 130:
-#line 1285 "asn1p_y.y"
+case 135:
+#line 1316 "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 131:
-#line 1289 "asn1p_y.y"
+case 136:
+#line 1320 "asn1p_y.y"
 {
 		yyval.a_value = yyvsp[0].a_value;
 	;
     break;}
-case 132:
-#line 1292 "asn1p_y.y"
+case 137:
+#line 1323 "asn1p_y.y"
 {
 		yyval.a_value = yyvsp[0].a_value;
 	;
     break;}
-case 133:
-#line 1298 "asn1p_y.y"
+case 138:
+#line 1329 "asn1p_y.y"
 {
 		asn1p_ref_t *ref;
 		int ret;
@@ -2425,8 +2463,8 @@
 		free(yyvsp[0].tv_str);
 	;
     break;}
-case 134:
-#line 1309 "asn1p_y.y"
+case 139:
+#line 1340 "asn1p_y.y"
 {
 		asn1p_ref_t *ref;
 		int ret;
@@ -2442,8 +2480,8 @@
 		free(yyvsp[0].tv_str);
 	;
     break;}
-case 135:
-#line 1326 "asn1p_y.y"
+case 140:
+#line 1357 "asn1p_y.y"
 {
 		yyval.tv_opaque.len = yyvsp[0].tv_opaque.len + 2;
 		yyval.tv_opaque.buf = malloc(yyval.tv_opaque.len + 1);
@@ -2455,8 +2493,8 @@
 		free(yyvsp[0].tv_opaque.buf);
 	;
     break;}
-case 136:
-#line 1336 "asn1p_y.y"
+case 141:
+#line 1367 "asn1p_y.y"
 {
 		int newsize = yyvsp[-1].tv_opaque.len + yyvsp[0].tv_opaque.len;
 		char *p = malloc(newsize + 1);
@@ -2470,68 +2508,68 @@
 		yyval.tv_opaque.len = newsize;
 	;
     break;}
-case 137:
-#line 1351 "asn1p_y.y"
+case 142:
+#line 1382 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_BOOLEAN; ;
     break;}
-case 138:
-#line 1352 "asn1p_y.y"
+case 143:
+#line 1383 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_NULL; ;
     break;}
-case 139:
-#line 1353 "asn1p_y.y"
+case 144:
+#line 1384 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_REAL; ;
     break;}
-case 140:
-#line 1354 "asn1p_y.y"
+case 145:
+#line 1385 "asn1p_y.y"
 { yyval.a_type = yyvsp[0].a_type; ;
     break;}
-case 141:
-#line 1355 "asn1p_y.y"
+case 146:
+#line 1386 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_OCTET_STRING; ;
     break;}
-case 142:
-#line 1356 "asn1p_y.y"
+case 147:
+#line 1387 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_OBJECT_IDENTIFIER; ;
     break;}
-case 143:
-#line 1357 "asn1p_y.y"
+case 148:
+#line 1388 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_RELATIVE_OID; ;
     break;}
-case 144:
-#line 1358 "asn1p_y.y"
+case 149:
+#line 1389 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_EXTERNAL; ;
     break;}
-case 145:
-#line 1359 "asn1p_y.y"
+case 150:
+#line 1390 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_EMBEDDED_PDV; ;
     break;}
-case 146:
-#line 1360 "asn1p_y.y"
+case 151:
+#line 1391 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_CHARACTER_STRING; ;
     break;}
-case 147:
-#line 1361 "asn1p_y.y"
+case 152:
+#line 1392 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_UTCTime; ;
     break;}
-case 148:
-#line 1362 "asn1p_y.y"
+case 153:
+#line 1393 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_GeneralizedTime; ;
     break;}
-case 149:
-#line 1369 "asn1p_y.y"
+case 154:
+#line 1400 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_INTEGER; ;
     break;}
-case 150:
-#line 1370 "asn1p_y.y"
+case 155:
+#line 1401 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_ENUMERATED; ;
     break;}
-case 151:
-#line 1371 "asn1p_y.y"
+case 156:
+#line 1402 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_BIT_STRING; ;
     break;}
-case 152:
-#line 1375 "asn1p_y.y"
+case 157:
+#line 1406 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2539,8 +2577,8 @@
 		yyval.a_expr->meta_type = AMT_TYPE;
 	;
     break;}
-case 153:
-#line 1381 "asn1p_y.y"
+case 158:
+#line 1412 "asn1p_y.y"
 {
 		if(yyvsp[0].a_expr) {
 			yyval.a_expr = yyvsp[0].a_expr;
@@ -2552,92 +2590,92 @@
 		yyval.a_expr->meta_type = AMT_TYPE;
 	;
     break;}
-case 154:
-#line 1394 "asn1p_y.y"
+case 159:
+#line 1425 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_BMPString; ;
     break;}
-case 155:
-#line 1395 "asn1p_y.y"
+case 160:
+#line 1426 "asn1p_y.y"
 {
 		yyval.a_type = ASN_STRING_GeneralString;
-		fprintf(stderr, "WARNING: GeneralString is not fully supported");
+		fprintf(stderr, "WARNING: GeneralString is not fully supported\n");
 	;
     break;}
-case 156:
-#line 1399 "asn1p_y.y"
-{
-		yyval.a_type = ASN_STRING_GraphicString;
-		fprintf(stderr, "WARNING: GraphicString is not fully supported");
-	;
-    break;}
-case 157:
-#line 1403 "asn1p_y.y"
-{ yyval.a_type = ASN_STRING_IA5String; ;
-    break;}
-case 158:
-#line 1404 "asn1p_y.y"
-{ yyval.a_type = ASN_STRING_ISO646String; ;
-    break;}
-case 159:
-#line 1405 "asn1p_y.y"
-{ yyval.a_type = ASN_STRING_NumericString; ;
-    break;}
-case 160:
-#line 1406 "asn1p_y.y"
-{ yyval.a_type = ASN_STRING_PrintableString; ;
-    break;}
 case 161:
-#line 1407 "asn1p_y.y"
+#line 1430 "asn1p_y.y"
 {
-		yyval.a_type = ASN_STRING_T61String;
-		fprintf(stderr, "WARNING: T61String is not fully supported");
+		yyval.a_type = ASN_STRING_GraphicString;
+		fprintf(stderr, "WARNING: GraphicString is not fully supported\n");
 	;
     break;}
 case 162:
-#line 1411 "asn1p_y.y"
-{ yyval.a_type = ASN_STRING_TeletexString; ;
+#line 1434 "asn1p_y.y"
+{ yyval.a_type = ASN_STRING_IA5String; ;
     break;}
 case 163:
-#line 1412 "asn1p_y.y"
-{ yyval.a_type = ASN_STRING_UniversalString; ;
+#line 1435 "asn1p_y.y"
+{ yyval.a_type = ASN_STRING_ISO646String; ;
     break;}
 case 164:
-#line 1413 "asn1p_y.y"
-{ yyval.a_type = ASN_STRING_UTF8String; ;
+#line 1436 "asn1p_y.y"
+{ yyval.a_type = ASN_STRING_NumericString; ;
     break;}
 case 165:
-#line 1414 "asn1p_y.y"
-{
-		yyval.a_type = ASN_STRING_VideotexString;
-		fprintf(stderr, "WARNING: VideotexString is not fully supported");
-	;
+#line 1437 "asn1p_y.y"
+{ yyval.a_type = ASN_STRING_PrintableString; ;
     break;}
 case 166:
-#line 1418 "asn1p_y.y"
-{ yyval.a_type = ASN_STRING_VisibleString; ;
+#line 1438 "asn1p_y.y"
+{
+		yyval.a_type = ASN_STRING_T61String;
+		fprintf(stderr, "WARNING: T61String is not fully supported\n");
+	;
     break;}
 case 167:
-#line 1419 "asn1p_y.y"
+#line 1442 "asn1p_y.y"
+{ yyval.a_type = ASN_STRING_TeletexString; ;
+    break;}
+case 168:
+#line 1443 "asn1p_y.y"
+{ yyval.a_type = ASN_STRING_UniversalString; ;
+    break;}
+case 169:
+#line 1444 "asn1p_y.y"
+{ yyval.a_type = ASN_STRING_UTF8String; ;
+    break;}
+case 170:
+#line 1445 "asn1p_y.y"
+{
+		yyval.a_type = ASN_STRING_VideotexString;
+		fprintf(stderr, "WARNING: VideotexString is not fully supported\n");
+	;
+    break;}
+case 171:
+#line 1449 "asn1p_y.y"
+{ yyval.a_type = ASN_STRING_VisibleString; ;
+    break;}
+case 172:
+#line 1450 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_ObjectDescriptor; ;
     break;}
-case 173:
-#line 1431 "asn1p_y.y"
+case 178:
+#line 1462 "asn1p_y.y"
 { yyval.a_constr = 0; ;
     break;}
-case 174:
-#line 1432 "asn1p_y.y"
+case 179:
+#line 1463 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
-case 175:
-#line 1438 "asn1p_y.y"
+case 180:
+#line 1469 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[0].a_constr, 0);
 	;
     break;}
-case 176:
-#line 1441 "asn1p_y.y"
+case 181:
+#line 1472 "asn1p_y.y"
 {
 		/*
 		 * This is a special case, for compatibility purposes.
@@ -2646,26 +2684,26 @@
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_SIZE, yyvsp[-1].a_constr, 0);
 	;
     break;}
-case 177:
-#line 1451 "asn1p_y.y"
+case 182:
+#line 1482 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[-1].a_constr;
 	;
     break;}
-case 178:
-#line 1454 "asn1p_y.y"
+case 183:
+#line 1485 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
 	;
     break;}
-case 179:
-#line 1460 "asn1p_y.y"
+case 184:
+#line 1491 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
-case 180:
-#line 1463 "asn1p_y.y"
+case 185:
+#line 1494 "asn1p_y.y"
 {
 		asn1p_constraint_t *ct;
 		ct = asn1p_constraint_new(yylineno);
@@ -2673,8 +2711,8 @@
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, yyvsp[-2].a_constr, ct);
 	;
     break;}
-case 181:
-#line 1469 "asn1p_y.y"
+case 186:
+#line 1500 "asn1p_y.y"
 {
 		asn1p_constraint_t *ct;
 		ct = asn1p_constraint_new(yylineno);
@@ -2684,32 +2722,32 @@
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, ct, yyvsp[0].a_constr);
 	;
     break;}
-case 182:
-#line 1480 "asn1p_y.y"
+case 187:
+#line 1511 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
-case 183:
-#line 1483 "asn1p_y.y"
+case 188:
+#line 1514 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_UNI, yyvsp[-2].a_constr, yyvsp[0].a_constr);
 	;
     break;}
-case 184:
-#line 1486 "asn1p_y.y"
+case 189:
+#line 1517 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_INT, yyvsp[-2].a_constr, yyvsp[0].a_constr);
 	;
     break;}
-case 185:
-#line 1489 "asn1p_y.y"
+case 190:
+#line 1520 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_EXC, yyvsp[-2].a_constr, yyvsp[0].a_constr);
 	;
     break;}
-case 186:
-#line 1495 "asn1p_y.y"
+case 191:
+#line 1526 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_constr = asn1p_constraint_new(yylineno);
@@ -2719,8 +2757,8 @@
 		checkmem(ret == 0);
 	;
     break;}
-case 187:
-#line 1503 "asn1p_y.y"
+case 192:
+#line 1534 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_constr = asn1p_constraint_new(yylineno);
@@ -2730,8 +2768,8 @@
 		checkmem(ret == 0);
 	;
     break;}
-case 188:
-#line 1511 "asn1p_y.y"
+case 193:
+#line 1542 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -2739,98 +2777,98 @@
 		yyval.a_constr->value = yyvsp[0].a_value;
 	;
     break;}
-case 189:
-#line 1517 "asn1p_y.y"
-{
-		yyval.a_constr = asn1p_constraint_new(yylineno);
-		checkmem(yyval.a_constr);
-		yyval.a_constr->type = yyvsp[-1].a_ctype;
-		yyval.a_constr->range_start = yyvsp[-2].a_value;
-		yyval.a_constr->range_stop = yyvsp[0].a_value;
-	;
-    break;}
-case 190:
-#line 1524 "asn1p_y.y"
-{
-		yyval.a_constr = asn1p_constraint_new(yylineno);
-		checkmem(yyval.a_constr);
-		yyval.a_constr->type = yyvsp[-1].a_ctype;
-		yyval.a_constr->range_start = asn1p_value_fromint(-123);
-		yyval.a_constr->range_stop = yyvsp[0].a_value;
-		yyval.a_constr->range_start->type = ATV_MIN;
-	;
-    break;}
-case 191:
-#line 1532 "asn1p_y.y"
-{
-		yyval.a_constr = asn1p_constraint_new(yylineno);
-		checkmem(yyval.a_constr);
-		yyval.a_constr->type = yyvsp[-1].a_ctype;
-		yyval.a_constr->range_start = yyvsp[-2].a_value;
-		yyval.a_constr->range_stop = asn1p_value_fromint(321);
-		yyval.a_constr->range_stop->type = ATV_MAX;
-	;
-    break;}
-case 192:
-#line 1540 "asn1p_y.y"
-{
-		yyval.a_constr = asn1p_constraint_new(yylineno);
-		checkmem(yyval.a_constr);
-		yyval.a_constr->type = yyvsp[-1].a_ctype;
-		yyval.a_constr->range_start = asn1p_value_fromint(-123);
-		yyval.a_constr->range_stop = asn1p_value_fromint(321);
-		yyval.a_constr->range_start->type = ATV_MIN;
-		yyval.a_constr->range_stop->type = ATV_MAX;
-	;
-    break;}
-case 193:
-#line 1549 "asn1p_y.y"
-{
-		yyval.a_constr = yyvsp[0].a_constr;
-	;
-    break;}
 case 194:
-#line 1552 "asn1p_y.y"
+#line 1548 "asn1p_y.y"
 {
-		yyval.a_constr = yyvsp[0].a_constr;
+		yyval.a_constr = asn1p_constraint_new(yylineno);
+		checkmem(yyval.a_constr);
+		yyval.a_constr->type = yyvsp[-1].a_ctype;
+		yyval.a_constr->range_start = yyvsp[-2].a_value;
+		yyval.a_constr->range_stop = yyvsp[0].a_value;
 	;
     break;}
 case 195:
-#line 1558 "asn1p_y.y"
-{ yyval.a_ctype = ACT_EL_RANGE; ;
+#line 1555 "asn1p_y.y"
+{
+		yyval.a_constr = asn1p_constraint_new(yylineno);
+		checkmem(yyval.a_constr);
+		yyval.a_constr->type = yyvsp[-1].a_ctype;
+		yyval.a_constr->range_start = asn1p_value_fromint(-123);
+		yyval.a_constr->range_stop = yyvsp[0].a_value;
+		yyval.a_constr->range_start->type = ATV_MIN;
+	;
     break;}
 case 196:
-#line 1559 "asn1p_y.y"
-{ yyval.a_ctype = ACT_EL_RLRANGE; ;
+#line 1563 "asn1p_y.y"
+{
+		yyval.a_constr = asn1p_constraint_new(yylineno);
+		checkmem(yyval.a_constr);
+		yyval.a_constr->type = yyvsp[-1].a_ctype;
+		yyval.a_constr->range_start = yyvsp[-2].a_value;
+		yyval.a_constr->range_stop = asn1p_value_fromint(321);
+		yyval.a_constr->range_stop->type = ATV_MAX;
+	;
     break;}
 case 197:
-#line 1560 "asn1p_y.y"
-{ yyval.a_ctype = ACT_EL_LLRANGE; ;
+#line 1571 "asn1p_y.y"
+{
+		yyval.a_constr = asn1p_constraint_new(yylineno);
+		checkmem(yyval.a_constr);
+		yyval.a_constr->type = yyvsp[-1].a_ctype;
+		yyval.a_constr->range_start = asn1p_value_fromint(-123);
+		yyval.a_constr->range_stop = asn1p_value_fromint(321);
+		yyval.a_constr->range_start->type = ATV_MIN;
+		yyval.a_constr->range_stop->type = ATV_MAX;
+	;
     break;}
 case 198:
-#line 1561 "asn1p_y.y"
-{ yyval.a_ctype = ACT_EL_ULRANGE; ;
+#line 1580 "asn1p_y.y"
+{
+		yyval.a_constr = yyvsp[0].a_constr;
+	;
     break;}
 case 199:
-#line 1565 "asn1p_y.y"
+#line 1583 "asn1p_y.y"
+{
+		yyval.a_constr = yyvsp[0].a_constr;
+	;
+    break;}
+case 200:
+#line 1589 "asn1p_y.y"
+{ yyval.a_ctype = ACT_EL_RANGE; ;
+    break;}
+case 201:
+#line 1590 "asn1p_y.y"
+{ yyval.a_ctype = ACT_EL_RLRANGE; ;
+    break;}
+case 202:
+#line 1591 "asn1p_y.y"
+{ yyval.a_ctype = ACT_EL_LLRANGE; ;
+    break;}
+case 203:
+#line 1592 "asn1p_y.y"
+{ yyval.a_ctype = ACT_EL_ULRANGE; ;
+    break;}
+case 204:
+#line 1596 "asn1p_y.y"
 {
 		yyval.a_ctype = ACT_CT_SIZE;
 	;
     break;}
-case 200:
-#line 1568 "asn1p_y.y"
+case 205:
+#line 1599 "asn1p_y.y"
 {
 		yyval.a_ctype = ACT_CT_FROM;
 	;
     break;}
-case 201:
-#line 1574 "asn1p_y.y"
+case 206:
+#line 1605 "asn1p_y.y"
 {
 		yyval.a_value = yyvsp[0].a_value;
 	;
     break;}
-case 202:
-#line 1577 "asn1p_y.y"
+case 207:
+#line 1608 "asn1p_y.y"
 {
 		asn1p_ref_t *ref;
 		int ret;
@@ -2843,57 +2881,57 @@
 		free(yyvsp[0].tv_str);
 	;
     break;}
-case 203:
-#line 1588 "asn1p_y.y"
+case 208:
+#line 1619 "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 204:
-#line 1593 "asn1p_y.y"
+case 209:
+#line 1623 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(0);
 		checkmem(yyval.a_value);
 		yyval.a_value->type = ATV_FALSE;
 	;
     break;}
-case 205:
-#line 1598 "asn1p_y.y"
+case 210:
+#line 1628 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(1);
 		checkmem(yyval.a_value);
 		yyval.a_value->type = ATV_TRUE;
 	;
     break;}
-case 206:
-#line 1606 "asn1p_y.y"
+case 211:
+#line 1636 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-1].a_constr, 0);
 	;
     break;}
-case 207:
-#line 1612 "asn1p_y.y"
+case 212:
+#line 1642 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
-case 208:
-#line 1615 "asn1p_y.y"
+case 213:
+#line 1645 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-2].a_constr, yyvsp[0].a_constr);
 	;
     break;}
-case 209:
-#line 1621 "asn1p_y.y"
+case 214:
+#line 1651 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
 		yyval.a_constr->type = ACT_EL_EXT;
 	;
     break;}
-case 210:
-#line 1626 "asn1p_y.y"
+case 215:
+#line 1656 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -2902,46 +2940,46 @@
 		yyval.a_constr->presence = yyvsp[0].a_pres;
 	;
     break;}
-case 211:
-#line 1639 "asn1p_y.y"
+case 216:
+#line 1669 "asn1p_y.y"
 { yyval.a_pres = ACPRES_DEFAULT; ;
     break;}
-case 212:
-#line 1640 "asn1p_y.y"
+case 217:
+#line 1670 "asn1p_y.y"
 { yyval.a_pres = yyvsp[0].a_pres; ;
     break;}
-case 213:
-#line 1644 "asn1p_y.y"
+case 218:
+#line 1674 "asn1p_y.y"
 {
 		yyval.a_pres = ACPRES_PRESENT;
 	;
     break;}
-case 214:
-#line 1647 "asn1p_y.y"
+case 219:
+#line 1677 "asn1p_y.y"
 {
 		yyval.a_pres = ACPRES_ABSENT;
 	;
     break;}
-case 215:
-#line 1650 "asn1p_y.y"
+case 220:
+#line 1680 "asn1p_y.y"
 {
 		yyval.a_pres = ACPRES_OPTIONAL;
 	;
     break;}
-case 216:
-#line 1656 "asn1p_y.y"
+case 221:
+#line 1686 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
-case 217:
-#line 1659 "asn1p_y.y"
+case 222:
+#line 1689 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
-case 218:
-#line 1668 "asn1p_y.y"
+case 223:
+#line 1698 "asn1p_y.y"
 {
 		asn1p_ref_t *ref = asn1p_ref_new(yylineno);
 		asn1p_constraint_t *ct;
@@ -2955,14 +2993,14 @@
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, ct, 0);
 	;
     break;}
-case 219:
-#line 1683 "asn1p_y.y"
+case 224:
+#line 1713 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
 	;
     break;}
-case 220:
-#line 1689 "asn1p_y.y"
+case 225:
+#line 1719 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -2970,8 +3008,8 @@
 		yyval.a_constr->value = asn1p_value_fromref(yyvsp[0].a_ref, 0);
 	;
     break;}
-case 221:
-#line 1695 "asn1p_y.y"
+case 226:
+#line 1725 "asn1p_y.y"
 {
 		asn1p_constraint_t *ct;
 		ct = asn1p_constraint_new(yylineno);
@@ -2981,8 +3019,8 @@
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, yyvsp[-2].a_constr, ct);
 	;
     break;}
-case 222:
-#line 1709 "asn1p_y.y"
+case 227:
+#line 1739 "asn1p_y.y"
 {
 		char *p = malloc(strlen(yyvsp[0].tv_str) + 2);
 		int ret;
@@ -2995,8 +3033,8 @@
 		free(yyvsp[0].tv_str);
 	;
     break;}
-case 223:
-#line 1720 "asn1p_y.y"
+case 228:
+#line 1750 "asn1p_y.y"
 {
 		char *p = malloc(strlen(yyvsp[0].tv_str) + 3);
 		int ret;
@@ -3010,14 +3048,14 @@
 		free(yyvsp[0].tv_str);
 	;
     break;}
-case 224:
-#line 1736 "asn1p_y.y"
+case 229:
+#line 1766 "asn1p_y.y"
 {
 		yyval.tv_str = yyvsp[0].tv_str;
 	;
     break;}
-case 225:
-#line 1739 "asn1p_y.y"
+case 230:
+#line 1769 "asn1p_y.y"
 {
 		int l1 = strlen(yyvsp[-2].tv_str);
 		int l3 = strlen(yyvsp[0].tv_str);
@@ -3028,76 +3066,61 @@
 		yyval.tv_str[l1 + 1 + l3] = '\0';
 	;
     break;}
-case 226:
-#line 1757 "asn1p_y.y"
-{ yyval.a_marker = EM_NOMARK; ;
-    break;}
-case 227:
-#line 1758 "asn1p_y.y"
-{ yyval.a_marker = yyvsp[0].a_marker; ;
-    break;}
-case 228:
-#line 1762 "asn1p_y.y"
-{
-		yyval.a_marker = EM_OPTIONAL;
-	;
-    break;}
-case 229:
-#line 1765 "asn1p_y.y"
-{
-		yyval.a_marker = EM_DEFAULT;
-		/* FIXME: store DefaultValue somewhere */
-	;
-    break;}
-case 230:
-#line 1772 "asn1p_y.y"
-{
-	;
-    break;}
 case 231:
-#line 1774 "asn1p_y.y"
+#line 1787 "asn1p_y.y"
 {
+		yyval.a_marker.flags = EM_NOMARK;
+		yyval.a_marker.default_value = 0;
 	;
     break;}
 case 232:
-#line 1776 "asn1p_y.y"
-{ asn1p_lexer_hack_push_opaque_state(); ;
+#line 1791 "asn1p_y.y"
+{ yyval.a_marker = yyvsp[0].a_marker; ;
     break;}
 case 233:
-#line 1776 "asn1p_y.y"
+#line 1795 "asn1p_y.y"
 {
+		yyval.a_marker.flags = EM_OPTIONAL;
+		yyval.a_marker.default_value = 0;
 	;
     break;}
 case 234:
-#line 1797 "asn1p_y.y"
+#line 1799 "asn1p_y.y"
+{
+		yyval.a_marker.flags = EM_DEFAULT;
+		yyval.a_marker.default_value = yyvsp[0].a_value;
+	;
+    break;}
+case 235:
+#line 1822 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
 	;
     break;}
-case 235:
-#line 1801 "asn1p_y.y"
+case 236:
+#line 1826 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-1].a_expr;
 	;
     break;}
-case 236:
-#line 1807 "asn1p_y.y"
+case 237:
+#line 1832 "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 237:
-#line 1812 "asn1p_y.y"
+case 238:
+#line 1837 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	;
     break;}
-case 238:
-#line 1819 "asn1p_y.y"
+case 239:
+#line 1844 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -3106,19 +3129,8 @@
 		yyval.a_expr->Identifier = yyvsp[0].tv_str;
 	;
     break;}
-case 239:
-#line 1826 "asn1p_y.y"
-{
-		yyval.a_expr = asn1p_expr_new(yylineno);
-		checkmem(yyval.a_expr);
-		yyval.a_expr->expr_type = A1TC_UNIVERVAL;
-		yyval.a_expr->meta_type = AMT_VALUE;
-		yyval.a_expr->Identifier = yyvsp[-3].tv_str;
-		yyval.a_expr->value = yyvsp[-1].a_value;
-	;
-    break;}
 case 240:
-#line 1834 "asn1p_y.y"
+#line 1851 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -3129,7 +3141,18 @@
 	;
     break;}
 case 241:
-#line 1842 "asn1p_y.y"
+#line 1859 "asn1p_y.y"
+{
+		yyval.a_expr = asn1p_expr_new(yylineno);
+		checkmem(yyval.a_expr);
+		yyval.a_expr->expr_type = A1TC_UNIVERVAL;
+		yyval.a_expr->meta_type = AMT_VALUE;
+		yyval.a_expr->Identifier = yyvsp[-3].tv_str;
+		yyval.a_expr->value = yyvsp[-1].a_value;
+	;
+    break;}
+case 242:
+#line 1867 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -3138,8 +3161,8 @@
 		yyval.a_expr->value = yyvsp[0].a_value;
 	;
     break;}
-case 242:
-#line 1849 "asn1p_y.y"
+case 243:
+#line 1874 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -3149,72 +3172,72 @@
 		yyval.a_expr->meta_type = AMT_VALUE;
 	;
     break;}
-case 243:
-#line 1860 "asn1p_y.y"
-{
-		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
-		checkmem(yyval.a_value);
-	;
-    break;}
 case 244:
-#line 1864 "asn1p_y.y"
+#line 1885 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
 		checkmem(yyval.a_value);
 	;
     break;}
 case 245:
-#line 1895 "asn1p_y.y"
-{ memset(&yyval.a_tag, 0, sizeof(yyval.a_tag)); ;
+#line 1889 "asn1p_y.y"
+{
+		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
+		checkmem(yyval.a_value);
+	;
     break;}
 case 246:
-#line 1896 "asn1p_y.y"
-{ yyval.a_tag = yyvsp[0].a_tag; ;
+#line 1920 "asn1p_y.y"
+{ memset(&yyval.a_tag, 0, sizeof(yyval.a_tag)); ;
     break;}
 case 247:
-#line 1900 "asn1p_y.y"
+#line 1921 "asn1p_y.y"
+{ yyval.a_tag = yyvsp[0].a_tag; ;
+    break;}
+case 248:
+#line 1925 "asn1p_y.y"
 {
 		yyval.a_tag = yyvsp[0].a_tag;
 		yyval.a_tag.tag_mode = TM_DEFAULT;
 	;
     break;}
-case 248:
-#line 1904 "asn1p_y.y"
+case 249:
+#line 1929 "asn1p_y.y"
 {
 		yyval.a_tag = yyvsp[-1].a_tag;
 		yyval.a_tag.tag_mode = TM_IMPLICIT;
 	;
     break;}
-case 249:
-#line 1908 "asn1p_y.y"
+case 250:
+#line 1933 "asn1p_y.y"
 {
 		yyval.a_tag = yyvsp[-1].a_tag;
 		yyval.a_tag.tag_mode = TM_EXPLICIT;
 	;
     break;}
-case 250:
-#line 1915 "asn1p_y.y"
-{
-		checkmem(yyvsp[0].tv_str);
-		yyval.tv_str = yyvsp[0].tv_str;
-	;
-    break;}
 case 251:
-#line 1919 "asn1p_y.y"
+#line 1940 "asn1p_y.y"
 {
 		checkmem(yyvsp[0].tv_str);
 		yyval.tv_str = yyvsp[0].tv_str;
 	;
     break;}
 case 252:
-#line 1927 "asn1p_y.y"
+#line 1944 "asn1p_y.y"
 {
 		checkmem(yyvsp[0].tv_str);
 		yyval.tv_str = yyvsp[0].tv_str;
 	;
     break;}
 case 253:
-#line 1934 "asn1p_y.y"
+#line 1952 "asn1p_y.y"
+{
+		checkmem(yyvsp[0].tv_str);
+		yyval.tv_str = yyvsp[0].tv_str;
+	;
+    break;}
+case 254:
+#line 1959 "asn1p_y.y"
 {
 		checkmem(yyvsp[0].tv_str);
 		yyval.tv_str = yyvsp[0].tv_str;
@@ -3442,7 +3465,7 @@
     }
   return 1;
 }
-#line 1940 "asn1p_y.y"
+#line 1965 "asn1p_y.y"