From c94e28fa0a1c2d3bf19ec011001857c680fb0c10 Mon Sep 17 00:00:00 2001 From: vlm Date: Wed, 15 Sep 2004 11:59:51 +0000 Subject: [PATCH] DEFAULT type support git-svn-id: https://asn1c.svn.sourceforge.net/svnroot/asn1c/trunk@349 59561ff5-6e30-0410-9f3c-9617f08c8826 --- libasn1parser/asn1p_l.c | 2736 +++++++++++++++++------------------ libasn1parser/asn1p_l.l | 9 +- libasn1parser/asn1p_value.c | 37 +- libasn1parser/asn1p_value.h | 12 +- libasn1parser/asn1p_y.c | 1427 +++++++++--------- libasn1parser/asn1p_y.h | 2 +- libasn1parser/asn1p_y.y | 75 +- 7 files changed, 2175 insertions(+), 2123 deletions(-) diff --git a/libasn1parser/asn1p_l.c b/libasn1parser/asn1p_l.c index f40f7a38..2d0c3075 100644 --- a/libasn1parser/asn1p_l.c +++ b/libasn1parser/asn1p_l.c @@ -312,154 +312,152 @@ static void yy_fatal_error YY_PROTO(( yyconst char msg[] )); *yy_cp = '\0'; \ yy_c_buf_p = yy_cp; -#define YY_NUM_RULES 132 -#define YY_END_OF_BUFFER 133 -static yyconst short int yy_acclist[1291] = +#define YY_NUM_RULES 131 +#define YY_END_OF_BUFFER 132 +static yyconst short int yy_acclist[1266] = { 0, - 133, 131, 132, 125, 131, 132, 125, 132, 124, 131, - 132, 15, 131, 132, 124, 131, 132, 131, 132, 124, - 131, 132, 131, 132, 124, 131, 132, 131, 132, 29, - 131, 132, 28, 131, 132, 124, 131, 132, 131, 132, - 119, 120, 131, 132, 119, 120, 131, 132, 119, 120, - 131, 132, 119, 120, 131, 132, 119, 120, 131, 132, - 119, 120, 131, 132, 119, 120, 131, 132, 119, 120, - 131, 132, 119, 120, 131, 132, 119, 120, 131, 132, - 119, 120, 131, 132, 119, 120, 131, 132, 119, 120, - 131, 132, 119, 120, 131, 132, 119, 120, 131, 132, + 132, 130, 131, 124, 130, 131, 124, 131, 123, 130, + 131, 15, 130, 131, 123, 130, 131, 130, 131, 123, + 130, 131, 130, 131, 123, 130, 131, 130, 131, 29, + 130, 131, 28, 130, 131, 123, 130, 131, 130, 131, + 118, 119, 130, 131, 118, 119, 130, 131, 118, 119, + 130, 131, 118, 119, 130, 131, 118, 119, 130, 131, + 118, 119, 130, 131, 118, 119, 130, 131, 118, 119, + 130, 131, 118, 119, 130, 131, 118, 119, 130, 131, + 118, 119, 130, 131, 118, 119, 130, 131, 118, 119, + 130, 131, 118, 119, 130, 131, 118, 119, 130, 131, - 119, 120, 131, 132, 119, 120, 131, 132, 119, 120, - 131, 132, 119, 120, 131, 132, 124, 131, 132, 130, - 131, 132, 118, 131, 132, 124, 130, 131, 132, 5, - 131, 132, 2, 132, 2, 131, 132, 4, 131, 132, - 7, 9, 131, 132, 7, 132, 9, 131, 132, 9, - 131, 132, 17, 131, 132, 17, 132, 18, 131, 132, - 12, 131, 132, 12, 132, 14, 131, 132, 14, 131, - 132, 10, 131, 132, 11, 131, 132, 21, 23, 131, - 132, 23, 131, 132, 24, 132, 21, 22, 23, 131, - 132, 21, 22, 23, 131, 132, 127, 131, 132, 128, + 118, 119, 130, 131, 118, 119, 130, 131, 118, 119, + 130, 131, 118, 119, 130, 131, 123, 130, 131, 129, + 130, 131, 117, 130, 131, 123, 129, 130, 131, 5, + 130, 131, 2, 131, 2, 130, 131, 4, 130, 131, + 7, 9, 130, 131, 7, 131, 9, 130, 131, 9, + 130, 131, 17, 130, 131, 17, 131, 18, 130, 131, + 12, 130, 131, 12, 131, 14, 130, 131, 14, 130, + 131, 10, 130, 131, 11, 130, 131, 21, 23, 130, + 131, 23, 130, 131, 24, 131, 21, 22, 23, 130, + 131, 21, 22, 23, 130, 131, 126, 130, 131, 127, - 131, 132, 128, 132, 131, 132, 129, 131, 132, 125, - 15, 15, 116, 117, 1, 27, 123, 6, 28, 119, - 120, 119, 120, 119, 120, 119, 120, 119, 120, 119, - 120, 120, 119, 120, 119, 120, 119, 120, 119, 120, - 42, 119, 120, 119, 120, 119, 120, 119, 120, 119, - 120, 119, 120, 119, 120, 119, 120, 119, 120, 119, - 120, 120, 120, 119, 120, 119, 120, 119, 120, 119, - 120, 119, 120, 119, 120, 119, 120, 119, 120, 120, - 119, 120, 119, 120, 87, 119, 120, 119, 120, 120, - 119, 120, 119, 120, 119, 120, 119, 120, 120, 119, + 130, 131, 127, 131, 130, 131, 128, 130, 131, 124, + 15, 15, 115, 116, 1, 27, 122, 6, 28, 118, + 119, 118, 119, 118, 119, 118, 119, 118, 119, 118, + 119, 119, 118, 119, 118, 119, 118, 119, 118, 119, + 41, 118, 119, 118, 119, 118, 119, 118, 119, 118, + 119, 118, 119, 118, 119, 118, 119, 118, 119, 118, + 119, 119, 119, 118, 119, 118, 119, 118, 119, 118, + 119, 118, 119, 118, 119, 118, 119, 118, 119, 119, + 118, 119, 118, 119, 86, 118, 119, 118, 119, 119, + 118, 119, 118, 119, 118, 119, 118, 119, 119, 118, - 120, 119, 120, 119, 120, 119, 120, 119, 120, 119, - 120, 119, 120, 119, 120, 119, 120, 120, 119, 120, - 119, 120, 120, 120, 119, 120, 118, 5, 3, 8, - 17, 16, 12, 21, 21, 22, 21, 22, 127, 128, - 126, 116, 117, 27, 122, 121, 119, 120, 34, 119, - 120, 35, 119, 120, 119, 120, 119, 120, 119, 120, - 39, 119, 120, 119, 120, 119, 120, 119, 120, 119, - 120, 119, 120, 119, 120, 119, 120, 119, 120, 119, - 120, 119, 120, 56, 119, 120, 119, 120, 119, 120, - 119, 120, 119, 120, 119, 120, 119, 120, 120, 120, + 119, 118, 119, 118, 119, 118, 119, 118, 119, 118, + 119, 118, 119, 118, 119, 118, 119, 119, 118, 119, + 118, 119, 119, 119, 118, 119, 117, 5, 3, 8, + 17, 16, 12, 21, 21, 22, 21, 22, 126, 127, + 125, 115, 116, 27, 121, 120, 118, 119, 33, 118, + 119, 34, 118, 119, 118, 119, 118, 119, 118, 119, + 38, 118, 119, 118, 119, 118, 119, 118, 119, 118, + 119, 118, 119, 118, 119, 118, 119, 118, 119, 118, + 119, 118, 119, 55, 118, 119, 118, 119, 118, 119, + 118, 119, 118, 119, 118, 119, 118, 119, 119, 119, - 119, 120, 119, 120, 119, 120, 119, 120, 119, 120, - 119, 120, 119, 120, 79, 119, 120, 80, 119, 120, - 119, 120, 120, 119, 120, 119, 120, 119, 120, 120, - 119, 120, 90, 119, 120, 119, 120, 119, 120, 119, - 120, 120, 119, 120, 119, 120, 119, 120, 98, 119, - 120, 119, 120, 119, 120, 119, 120, 119, 120, 119, - 120, 119, 120, 119, 120, 120, 119, 120, 119, 120, - 119, 120, 120, 120, 120, 119, 120, 30, 13, 21, - 22, 20, 21, 22, 26, 25, 119, 120, 119, 120, - 119, 120, 119, 120, 119, 120, 119, 120, 119, 120, + 118, 119, 118, 119, 118, 119, 118, 119, 118, 119, + 118, 119, 118, 119, 78, 118, 119, 79, 118, 119, + 118, 119, 119, 118, 119, 118, 119, 118, 119, 119, + 118, 119, 89, 118, 119, 118, 119, 118, 119, 118, + 119, 119, 118, 119, 118, 119, 118, 119, 97, 118, + 119, 118, 119, 118, 119, 118, 119, 118, 119, 118, + 119, 118, 119, 118, 119, 119, 118, 119, 118, 119, + 118, 119, 119, 119, 119, 118, 119, 30, 13, 21, + 22, 20, 21, 22, 26, 25, 118, 119, 118, 119, + 118, 119, 118, 119, 118, 119, 118, 119, 118, 119, - 119, 120, 119, 120, 119, 120, 119, 120, 119, 120, - 119, 120, 119, 120, 119, 120, 119, 120, 119, 120, - 119, 120, 119, 120, 119, 120, 119, 120, 119, 120, - 119, 120, 64, 119, 120, 120, 120, 119, 120, 119, - 120, 119, 120, 119, 120, 119, 120, 119, 120, 119, - 120, 119, 120, 119, 120, 82, 119, 120, 120, 119, - 120, 119, 120, 119, 120, 120, 119, 120, 119, 120, - 119, 120, 119, 120, 120, 95, 119, 120, 119, 120, - 119, 120, 99, 119, 120, 119, 120, 119, 120, 119, - 120, 103, 119, 120, 105, 119, 120, 119, 120, 120, + 118, 119, 118, 119, 118, 119, 118, 119, 118, 119, + 118, 119, 118, 119, 118, 119, 118, 119, 118, 119, + 118, 119, 118, 119, 118, 119, 118, 119, 118, 119, + 63, 118, 119, 119, 119, 118, 119, 118, 119, 118, + 119, 118, 119, 118, 119, 118, 119, 118, 119, 118, + 119, 118, 119, 81, 118, 119, 119, 118, 119, 118, + 119, 118, 119, 119, 118, 119, 118, 119, 118, 119, + 118, 119, 119, 94, 118, 119, 118, 119, 118, 119, + 98, 118, 119, 118, 119, 118, 119, 118, 119, 102, + 118, 119, 104, 118, 119, 118, 119, 119, 118, 119, - 119, 120, 119, 120, 119, 120, 119, 120, 119, 120, - 120, 120, 120, 115, 119, 120, 21, 22, 119, 120, - 119, 120, 119, 120, 119, 120, 38, 119, 120, 120, - 119, 120, 119, 120, 119, 120, 45, 119, 120, 119, - 120, 119, 120, 119, 120, 119, 120, 119, 120, 119, - 120, 119, 120, 119, 120, 119, 120, 119, 120, 119, - 120, 119, 120, 119, 120, 63, 119, 120, 120, 120, - 120, 119, 120, 119, 120, 119, 120, 119, 120, 119, - 120, 119, 120, 119, 120, 119, 120, 119, 120, 119, - 120, 120, 119, 120, 86, 119, 120, 119, 120, 120, + 118, 119, 118, 119, 118, 119, 118, 119, 119, 119, + 119, 114, 118, 119, 21, 22, 118, 119, 118, 119, + 118, 119, 37, 118, 119, 119, 118, 119, 118, 119, + 118, 119, 44, 118, 119, 118, 119, 118, 119, 118, + 119, 118, 119, 118, 119, 118, 119, 118, 119, 118, + 119, 118, 119, 118, 119, 118, 119, 118, 119, 118, + 119, 62, 118, 119, 119, 119, 119, 118, 119, 118, + 119, 118, 119, 118, 119, 118, 119, 118, 119, 118, + 119, 118, 119, 118, 119, 118, 119, 119, 118, 119, + 85, 118, 119, 118, 119, 119, 118, 119, 118, 119, - 119, 120, 119, 120, 119, 120, 119, 120, 120, 119, - 120, 119, 120, 119, 120, 119, 120, 120, 119, 120, - 120, 107, 119, 120, 119, 120, 119, 120, 120, 119, - 120, 120, 120, 120, 31, 21, 22, 32, 119, 120, - 119, 120, 119, 120, 119, 120, 120, 119, 120, 119, - 120, 44, 119, 120, 119, 120, 119, 120, 119, 120, - 119, 120, 119, 120, 119, 120, 119, 120, 119, 120, - 119, 120, 119, 120, 58, 119, 120, 119, 120, 119, - 120, 119, 120, 119, 120, 120, 120, 120, 119, 120, - 119, 120, 119, 120, 119, 120, 119, 120, 119, 120, + 118, 119, 118, 119, 119, 118, 119, 118, 119, 118, + 119, 118, 119, 119, 118, 119, 119, 106, 118, 119, + 118, 119, 118, 119, 119, 118, 119, 119, 119, 119, + 31, 21, 22, 32, 118, 119, 118, 119, 118, 119, + 119, 118, 119, 118, 119, 43, 118, 119, 118, 119, + 118, 119, 118, 119, 118, 119, 118, 119, 118, 119, + 118, 119, 118, 119, 118, 119, 118, 119, 57, 118, + 119, 118, 119, 118, 119, 118, 119, 118, 119, 119, + 119, 119, 118, 119, 118, 119, 118, 119, 118, 119, + 118, 119, 118, 119, 118, 119, 118, 119, 118, 119, - 119, 120, 119, 120, 119, 120, 119, 120, 119, 120, - 120, 84, 119, 120, 119, 120, 120, 119, 120, 119, - 120, 119, 120, 119, 120, 120, 119, 120, 119, 120, - 100, 119, 120, 101, 119, 120, 120, 119, 120, 120, - 108, 119, 120, 119, 120, 120, 120, 120, 120, 120, - 21, 22, 119, 120, 119, 120, 119, 120, 120, 41, - 119, 120, 119, 120, 119, 120, 119, 120, 119, 120, - 50, 119, 120, 51, 119, 120, 119, 120, 119, 120, - 54, 119, 120, 119, 120, 119, 120, 119, 120, 60, - 119, 120, 119, 120, 119, 120, 120, 120, 120, 119, + 118, 119, 118, 119, 119, 83, 118, 119, 118, 119, + 119, 118, 119, 118, 119, 118, 119, 118, 119, 119, + 118, 119, 118, 119, 99, 118, 119, 100, 118, 119, + 119, 118, 119, 119, 107, 118, 119, 118, 119, 119, + 119, 119, 119, 119, 21, 22, 118, 119, 118, 119, + 119, 40, 118, 119, 118, 119, 118, 119, 118, 119, + 118, 119, 49, 118, 119, 50, 118, 119, 118, 119, + 118, 119, 53, 118, 119, 118, 119, 118, 119, 118, + 119, 59, 118, 119, 118, 119, 118, 119, 119, 119, + 119, 118, 119, 118, 119, 70, 118, 119, 71, 118, - 120, 119, 120, 71, 119, 120, 72, 119, 120, 119, - 120, 119, 120, 119, 120, 76, 119, 120, 119, 120, - 119, 120, 119, 120, 120, 119, 120, 120, 89, 119, - 120, 119, 120, 92, 119, 120, 94, 119, 120, 120, - 119, 120, 119, 120, 120, 119, 120, 120, 119, 120, - 111, 120, 120, 120, 120, 120, 21, 22, 119, 120, - 119, 120, 119, 120, 120, 119, 120, 119, 120, 119, - 120, 119, 120, 119, 120, 53, 119, 120, 119, 120, - 119, 120, 59, 119, 120, 119, 120, 62, 119, 120, - 120, 120, 120, 120, 119, 120, 70, 119, 120, 73, + 119, 118, 119, 118, 119, 118, 119, 75, 118, 119, + 118, 119, 118, 119, 118, 119, 119, 118, 119, 119, + 88, 118, 119, 118, 119, 91, 118, 119, 93, 118, + 119, 119, 118, 119, 118, 119, 119, 118, 119, 119, + 118, 119, 110, 119, 119, 119, 119, 119, 21, 22, + 118, 119, 118, 119, 119, 118, 119, 118, 119, 118, + 119, 118, 119, 118, 119, 52, 118, 119, 118, 119, + 118, 119, 58, 118, 119, 118, 119, 61, 118, 119, + 119, 119, 119, 119, 118, 119, 69, 118, 119, 72, + 118, 119, 73, 118, 119, 118, 119, 118, 119, 119, - 119, 120, 74, 119, 120, 119, 120, 119, 120, 120, - 119, 120, 120, 88, 119, 120, 120, 119, 120, 120, - 119, 120, 97, 119, 120, 120, 119, 120, 120, 119, - 120, 120, 120, 120, 120, 21, 22, 119, 120, 119, - 120, 37, 119, 120, 40, 120, 43, 119, 120, 46, - 119, 120, 119, 120, 119, 120, 119, 120, 119, 120, - 119, 120, 119, 120, 120, 120, 120, 68, 120, 119, - 120, 119, 120, 119, 120, 120, 119, 120, 120, 120, - 119, 120, 120, 119, 120, 102, 120, 119, 120, 120, - 109, 119, 120, 120, 120, 120, 120, 21, 119, 120, + 118, 119, 119, 87, 118, 119, 119, 118, 119, 119, + 118, 119, 96, 118, 119, 119, 118, 119, 119, 118, + 119, 119, 119, 119, 119, 21, 22, 118, 119, 36, + 118, 119, 39, 119, 42, 118, 119, 45, 118, 119, + 118, 119, 118, 119, 118, 119, 118, 119, 118, 119, + 118, 119, 119, 119, 119, 67, 119, 118, 119, 118, + 119, 118, 119, 119, 118, 119, 119, 119, 118, 119, + 119, 118, 119, 101, 119, 118, 119, 119, 108, 118, + 119, 119, 119, 119, 119, 21, 118, 119, 46, 118, + 119, 47, 118, 119, 48, 118, 119, 118, 119, 118, - 119, 120, 47, 119, 120, 48, 119, 120, 49, 119, - 120, 119, 120, 119, 120, 57, 119, 120, 119, 120, - 120, 120, 120, 69, 119, 120, 119, 120, 119, 120, - 120, 119, 120, 120, 120, 119, 120, 120, 119, 120, - 119, 120, 120, 112, 120, 120, 120, 120, 21, 119, - 120, 36, 119, 120, 52, 119, 120, 119, 120, 119, - 120, 120, 120, 120, 119, 120, 119, 120, 120, 119, - 120, 120, 120, 119, 120, 120, 119, 120, 119, 120, - 120, 120, 120, 120, 30, 31, 21, 119, 120, 119, - 120, 119, 120, 120, 120, 120, 75, 119, 120, 77, + 119, 56, 118, 119, 118, 119, 119, 119, 119, 68, + 118, 119, 118, 119, 118, 119, 119, 118, 119, 119, + 119, 118, 119, 119, 118, 119, 118, 119, 119, 111, + 119, 119, 119, 119, 21, 35, 118, 119, 51, 118, + 119, 118, 119, 118, 119, 119, 119, 119, 118, 119, + 118, 119, 119, 118, 119, 119, 119, 118, 119, 119, + 118, 119, 118, 119, 119, 119, 119, 119, 30, 31, + 21, 118, 119, 118, 119, 119, 119, 119, 74, 118, + 119, 76, 118, 119, 77, 119, 118, 119, 119, 119, + 118, 119, 119, 95, 118, 119, 118, 119, 119, 119, - 119, 120, 78, 120, 119, 120, 120, 120, 119, 120, - 120, 96, 119, 120, 119, 120, 120, 120, 120, 120, - 21, 119, 120, 119, 120, 61, 119, 120, 66, 120, - 120, 67, 120, 119, 120, 83, 120, 120, 91, 119, - 120, 120, 119, 120, 104, 120, 120, 120, 114, 120, - 21, 119, 120, 119, 120, 120, 81, 119, 120, 120, - 120, 119, 120, 120, 113, 120, 21, 33, 119, 120, - 119, 120, 65, 120, 120, 93, 120, 106, 119, 120, - 110, 120, 21, 55, 119, 120, 85, 120, 19, 21 + 119, 119, 21, 118, 119, 60, 118, 119, 65, 119, + 119, 66, 119, 118, 119, 82, 119, 119, 90, 118, + 119, 119, 118, 119, 103, 119, 119, 119, 113, 119, + 21, 118, 119, 119, 80, 118, 119, 119, 119, 118, + 119, 119, 112, 119, 21, 118, 119, 64, 119, 119, + 92, 119, 105, 118, 119, 109, 119, 21, 54, 118, + 119, 84, 119, 19, 21 } ; -static yyconst short int yy_accept[722] = +static yyconst short int yy_accept[710] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 4, 7, 9, 12, @@ -491,56 +489,54 @@ static yyconst short int yy_accept[722] = 479, 479, 480, 482, 485, 485, 486, 487, 489, 491, 493, 495, 497, 499, 501, 503, 505, 507, 509, 511, 513, 515, 517, 519, 521, 523, 525, 527, 529, 531, - 533, 536, 537, 538, 540, 542, 544, 546, 548, 550, - 552, 554, 556, 559, 560, 562, 564, 566, 567, 569, + 534, 535, 536, 538, 540, 542, 544, 546, 548, 550, + 552, 554, 557, 558, 560, 562, 564, 565, 567, 569, - 571, 573, 575, 576, 579, 581, 583, 586, 588, 590, - 592, 595, 598, 600, 601, 603, 605, 607, 609, 611, - 612, 613, 614, 617, 617, 617, 617, 617, 619, 621, - 623, 625, 627, 630, 631, 633, 635, 637, 640, 642, + 571, 573, 574, 577, 579, 581, 584, 586, 588, 590, + 593, 596, 598, 599, 601, 603, 605, 607, 609, 610, + 611, 612, 615, 615, 615, 615, 615, 617, 619, 621, + 623, 626, 627, 629, 631, 633, 636, 638, 640, 642, 644, 646, 648, 650, 652, 654, 656, 658, 660, 662, - 664, 666, 669, 670, 671, 672, 674, 676, 678, 680, - 682, 684, 686, 688, 690, 692, 693, 695, 698, 700, - 701, 703, 705, 707, 709, 710, 712, 714, 716, 718, - 719, 721, 722, 725, 727, 729, 730, 732, 733, 734, - 735, 736, 736, 736, 736, 738, 741, 743, 745, 747, + 665, 666, 667, 668, 670, 672, 674, 676, 678, 680, + 682, 684, 686, 688, 689, 691, 694, 696, 697, 699, + 701, 703, 705, 706, 708, 710, 712, 714, 715, 717, + 718, 721, 723, 725, 726, 728, 729, 730, 731, 732, + 732, 732, 732, 734, 737, 739, 741, 742, 744, 746, - 748, 750, 752, 755, 757, 759, 761, 763, 765, 767, - 769, 771, 773, 775, 778, 780, 782, 784, 786, 787, - 788, 789, 791, 793, 795, 797, 799, 801, 803, 805, - 807, 809, 811, 812, 815, 817, 818, 820, 822, 824, - 826, 827, 829, 831, 834, 837, 838, 840, 841, 844, - 846, 847, 848, 849, 850, 851, 851, 851, 851, 853, - 855, 857, 859, 860, 863, 865, 867, 869, 871, 874, - 877, 879, 881, 884, 886, 888, 890, 893, 895, 897, - 898, 899, 900, 902, 904, 907, 910, 912, 914, 916, - 919, 921, 923, 925, 926, 928, 929, 932, 934, 937, + 749, 751, 753, 755, 757, 759, 761, 763, 765, 767, + 769, 772, 774, 776, 778, 780, 781, 782, 783, 785, + 787, 789, 791, 793, 795, 797, 799, 801, 803, 805, + 806, 809, 811, 812, 814, 816, 818, 820, 821, 823, + 825, 828, 831, 832, 834, 835, 838, 840, 841, 842, + 843, 844, 845, 845, 845, 845, 847, 849, 851, 852, + 855, 857, 859, 861, 863, 866, 869, 871, 873, 876, + 878, 880, 882, 885, 887, 889, 890, 891, 892, 894, + 896, 899, 902, 904, 906, 908, 911, 913, 915, 917, + 918, 920, 921, 924, 926, 929, 932, 933, 935, 937, - 940, 941, 943, 945, 946, 948, 949, 951, 953, 954, - 955, 956, 957, 957, 957, 957, 959, 961, 963, 965, - 966, 968, 970, 972, 974, 976, 979, 981, 983, 986, - 988, 991, 992, 993, 994, 995, 997, 1000, 1003, 1006, - 1008, 1010, 1011, 1013, 1014, 1017, 1018, 1020, 1021, 1023, - 1026, 1027, 1029, 1030, 1032, 1033, 1034, 1035, 1036, 1036, - 1036, 1036, 1038, 1040, 1042, 1045, 1047, 1050, 1053, 1055, - 1057, 1059, 1061, 1063, 1065, 1066, 1067, 1068, 1070, 1072, - 1074, 1076, 1077, 1079, 1080, 1081, 1083, 1084, 1086, 1088, - 1090, 1091, 1094, 1095, 1096, 1097, 1098, 1098, 1098, 1098, + 938, 940, 941, 943, 945, 946, 947, 948, 949, 949, + 949, 949, 951, 953, 955, 956, 958, 960, 962, 964, + 966, 969, 971, 973, 976, 978, 981, 982, 983, 984, + 985, 987, 990, 993, 996, 998, 1000, 1001, 1003, 1004, + 1007, 1008, 1010, 1011, 1013, 1016, 1017, 1019, 1020, 1022, + 1023, 1024, 1025, 1026, 1026, 1026, 1026, 1028, 1030, 1033, + 1035, 1038, 1041, 1043, 1045, 1047, 1049, 1051, 1053, 1054, + 1055, 1056, 1058, 1060, 1062, 1064, 1065, 1067, 1068, 1069, + 1071, 1072, 1074, 1076, 1078, 1079, 1082, 1083, 1084, 1085, + 1086, 1086, 1086, 1086, 1087, 1089, 1092, 1095, 1098, 1100, - 1099, 1101, 1103, 1106, 1109, 1112, 1114, 1116, 1119, 1121, - 1122, 1123, 1124, 1127, 1129, 1131, 1132, 1134, 1135, 1136, - 1138, 1139, 1141, 1143, 1144, 1146, 1147, 1148, 1149, 1149, - 1149, 1149, 1150, 1152, 1155, 1158, 1160, 1162, 1163, 1164, - 1165, 1167, 1169, 1170, 1172, 1173, 1174, 1176, 1177, 1179, - 1181, 1182, 1183, 1184, 1185, 1185, 1187, 1187, 1188, 1190, - 1192, 1194, 1195, 1196, 1197, 1200, 1203, 1205, 1207, 1208, - 1209, 1211, 1212, 1215, 1217, 1218, 1219, 1220, 1221, 1221, - 1222, 1224, 1226, 1229, 1231, 1232, 1234, 1236, 1238, 1239, - 1242, 1243, 1245, 1247, 1248, 1249, 1251, 1251, 1252, 1254, + 1102, 1105, 1107, 1108, 1109, 1110, 1113, 1115, 1117, 1118, + 1120, 1121, 1122, 1124, 1125, 1127, 1129, 1130, 1132, 1133, + 1134, 1135, 1135, 1135, 1135, 1136, 1139, 1142, 1144, 1146, + 1147, 1148, 1149, 1151, 1153, 1154, 1156, 1157, 1158, 1160, + 1161, 1163, 1165, 1166, 1167, 1168, 1169, 1169, 1171, 1171, + 1172, 1174, 1176, 1177, 1178, 1179, 1182, 1185, 1187, 1189, + 1190, 1191, 1193, 1194, 1197, 1199, 1200, 1201, 1202, 1203, + 1203, 1204, 1206, 1209, 1211, 1212, 1214, 1216, 1218, 1219, + 1222, 1223, 1225, 1227, 1228, 1229, 1231, 1231, 1232, 1234, + 1235, 1238, 1239, 1240, 1242, 1243, 1245, 1246, 1248, 1250, - 1256, 1257, 1260, 1261, 1262, 1264, 1265, 1267, 1268, 1271, - 1273, 1275, 1276, 1278, 1281, 1283, 1284, 1287, 1289, 1291, - 1291 + 1251, 1253, 1256, 1258, 1259, 1262, 1264, 1266, 1266 } ; static yyconst int yy_ec[256] = @@ -587,18 +583,18 @@ static yyconst int yy_meta[79] = 11, 11, 11, 11, 11, 12, 1, 12 } ; -static yyconst short int yy_base[740] = +static yyconst short int yy_base[728] = { 0, 0, 0, 76, 78, 80, 81, 82, 89, 83, 93, 171, 249, 109, 120, 961, 952, 95, 98, 951, 948, - 320, 117, 4484, 118, 933, 100, 4484, 125, 923, 4484, + 320, 117, 4405, 118, 933, 100, 4405, 125, 923, 4405, 385, 176, 194, 120, 239, 267, 435, 163, 293, 441, 191, 259, 463, 471, 484, 500, 508, 270, 521, 553, - 935, 0, 933, 0, 4484, 4484, 926, 4484, 4484, 922, - 922, 0, 0, 924, 0, 0, 902, 4484, 4484, 4484, - 0, 4484, 4484, 598, 675, 0, 148, 151, 182, 4484, + 935, 0, 933, 0, 4405, 4405, 926, 4405, 4405, 922, + 922, 0, 0, 924, 0, 0, 902, 4405, 4405, 4405, + 0, 4405, 4405, 598, 675, 0, 148, 151, 182, 4405, 915, 160, 0, 913, 912, 0, 135, 0, 573, 908, - 4484, 226, 902, 4484, 598, 886, 556, 597, 598, 618, + 4405, 226, 902, 4405, 598, 886, 556, 597, 598, 618, 619, 634, 0, 664, 667, 680, 693, 704, 720, 728, 741, 744, 757, 772, 778, 775, 793, 842, 852, 808, @@ -606,158 +602,156 @@ static yyconst short int yy_base[740] = 902, 910, 840, 913, 926, 937, 950, 835, 966, 972, 983, 989, 1000, 1015, 1016, 1031, 1032, 831, 1047, 1048, 831, 48, 1063, 1095, 1102, 851, 88, 128, 0, 0, - 4484, 4484, 0, 4484, 0, 865, 0, 849, 253, 0, - 264, 4484, 875, 0, 0, 83, 848, 611, 4484, 4484, - 1099, 1100, 1115, 1123, 1126, 1141, 1144, 1147, 1162, 1168, - 1179, 1185, 1196, 1207, 1223, 1229, 1240, 1246, 1257, 1263, + 4405, 4405, 0, 4405, 0, 865, 0, 849, 253, 0, + 264, 4405, 875, 0, 0, 83, 848, 611, 4405, 4405, + 1098, 1099, 1114, 1115, 1130, 1138, 1141, 1154, 1162, 1170, + 1178, 1191, 1199, 1202, 1223, 1224, 1239, 1245, 1256, 1262, - 1274, 1280, 1291, 1302, 818, 807, 1315, 1323, 1326, 1341, - 1344, 1347, 1371, 1365, 1368, 1386, 815, 1389, 1404, 1410, - 811, 1421, 1432, 1438, 1449, 1460, 802, 1471, 1477, 1488, - 1494, 1509, 1510, 1525, 1536, 1542, 1557, 1563, 809, 1574, - 1585, 1596, 793, 807, 801, 1607, 4484, 1646, 822, 178, - 250, 4484, 109, 820, 802, 4484, 4484, 1631, 1632, 1647, - 1653, 1668, 1669, 1686, 1685, 1701, 1707, 1718, 1729, 1747, - 1744, 1750, 1765, 1768, 1771, 1786, 1792, 1803, 1814, 1829, - 1835, 783, 789, 1846, 1852, 1867, 1868, 1883, 1889, 1904, - 1907, 1915, 1928, 774, 1936, 1939, 1952, 786, 1960, 1976, + 1273, 1279, 1290, 1301, 818, 807, 1314, 1322, 1325, 1340, + 1343, 1346, 1370, 1364, 1367, 1385, 815, 1388, 1403, 1409, + 811, 1420, 1431, 1437, 1448, 1459, 802, 1470, 1476, 1487, + 1493, 1508, 1509, 1524, 1535, 1541, 1556, 1562, 809, 1573, + 1584, 1595, 793, 807, 801, 1606, 4405, 1645, 822, 178, + 250, 4405, 109, 820, 802, 4405, 4405, 1630, 1641, 1647, + 1662, 1663, 1680, 1679, 1695, 1701, 1712, 1723, 1741, 1738, + 1744, 1759, 1762, 1765, 1780, 1786, 1797, 1808, 1823, 1829, + 783, 789, 1840, 1846, 1861, 1862, 1877, 1883, 1898, 1901, + 1909, 1922, 774, 1930, 1933, 1946, 786, 1954, 1970, 1969, - 1975, 1992, 770, 1993, 2008, 2021, 2029, 2032, 2050, 2047, - 2053, 2068, 2071, 768, 2074, 2089, 2095, 2106, 2112, 778, - 768, 775, 2127, 2159, 170, 151, 242, 200, 2144, 2160, - 2168, 2176, 2184, 759, 2192, 2200, 2213, 2221, 2224, 2242, - 2239, 2245, 2260, 2266, 2281, 2282, 2297, 2312, 2318, 2329, - 2335, 2350, 773, 763, 755, 2351, 2371, 2368, 2389, 2388, - 2404, 2410, 2421, 2432, 2443, 759, 2449, 2460, 2466, 738, - 2477, 2488, 2494, 2505, 753, 2518, 2521, 2529, 2542, 737, - 2553, 745, 2559, 2574, 2575, 731, 2590, 725, 721, 727, - 4484, 280, 297, 294, 231, 2596, 2611, 2614, 2622, 728, + 1986, 770, 1987, 2002, 2015, 2023, 2026, 2044, 2041, 2047, + 2062, 2065, 768, 2068, 2083, 2089, 2100, 2106, 778, 768, + 775, 2121, 2153, 170, 151, 242, 200, 2138, 2153, 2159, + 2170, 759, 2176, 2191, 2194, 2202, 2215, 2218, 2226, 2239, + 2247, 2260, 2268, 2276, 2284, 2299, 2305, 2316, 2322, 2337, + 773, 763, 755, 2338, 2358, 2355, 2376, 2375, 2391, 2397, + 2408, 2419, 2430, 759, 2436, 2447, 2453, 738, 2464, 2475, + 2481, 2492, 753, 2505, 2508, 2516, 2529, 737, 2540, 745, + 2546, 2561, 2562, 731, 2577, 725, 721, 727, 4405, 280, + 297, 294, 231, 2583, 2599, 2605, 728, 2616, 2627, 2638, - 2637, 2643, 2654, 2660, 2671, 2677, 2688, 2699, 2705, 2722, - 2728, 2739, 2745, 2756, 2762, 2773, 2779, 2795, 724, 731, - 723, 2796, 2811, 2817, 2828, 2834, 2849, 2855, 2866, 2881, - 2887, 2898, 720, 2909, 2915, 747, 2926, 2932, 2943, 2956, - 716, 2964, 2979, 2982, 2985, 707, 3000, 689, 3003, 3006, - 704, 692, 687, 697, 693, 271, 295, 301, 712, 3021, - 3024, 3037, 682, 3045, 3058, 3066, 3069, 3082, 3090, 3093, - 3106, 3117, 3114, 3130, 3138, 3141, 3154, 3162, 3165, 124, - 704, 677, 3178, 3186, 3189, 3202, 3210, 3223, 3231, 3234, - 3251, 3254, 3257, 698, 3272, 681, 3275, 3288, 3296, 3304, + 2644, 2655, 2661, 2672, 2683, 2689, 2706, 2712, 2723, 2729, + 2740, 2746, 2757, 2763, 2779, 724, 731, 723, 2780, 2795, + 2801, 2812, 2818, 2833, 2839, 2850, 2865, 2871, 2882, 720, + 2893, 2899, 747, 2910, 2916, 2927, 2940, 716, 2948, 2963, + 2966, 2969, 707, 2984, 689, 2987, 2990, 704, 692, 687, + 697, 693, 271, 295, 301, 712, 3005, 3018, 682, 3021, + 3036, 3042, 3053, 3059, 3070, 3076, 3087, 3098, 3104, 3115, + 3121, 3132, 3143, 3149, 3160, 124, 704, 677, 3166, 3177, + 3188, 3194, 3205, 3211, 3226, 3227, 3242, 3248, 3259, 698, + 3265, 681, 3276, 3287, 3298, 3304, 673, 3319, 3325, 658, - 673, 3317, 3325, 658, 3338, 680, 3346, 0, 660, 667, - 643, 672, 438, 368, 366, 286, 3349, 3362, 3370, 654, - 3378, 3386, 3399, 3407, 3410, 3425, 3431, 3446, 3428, 3452, - 3463, 639, 633, 630, 634, 3469, 3480, 3486, 3497, 3503, - 3514, 623, 3525, 620, 3531, 619, 3542, 619, 3553, 3559, - 613, 3570, 600, 3576, 603, 604, 623, 594, 300, 466, - 447, 360, 3587, 3598, 3609, 0, 3615, 3626, 3637, 3648, - 3654, 3669, 3672, 3675, 593, 603, 584, 0, 3690, 3698, - 3713, 590, 3714, 579, 591, 3729, 603, 3737, 0, 3745, - 572, 3758, 579, 589, 531, 528, 443, 3797, 454, 568, + 3340, 680, 3346, 0, 660, 667, 643, 672, 438, 368, + 366, 286, 3357, 3372, 654, 3378, 3389, 3402, 3410, 3413, + 3428, 3434, 3449, 3431, 3455, 3466, 639, 633, 630, 634, + 3472, 3483, 3489, 3500, 3506, 3517, 623, 3528, 620, 3534, + 619, 3545, 619, 3556, 3562, 613, 3573, 600, 3579, 603, + 604, 623, 594, 300, 466, 447, 360, 3590, 3596, 0, + 3607, 3613, 3629, 3628, 3644, 3645, 3660, 3661, 593, 603, + 584, 0, 3676, 3684, 3699, 590, 3700, 579, 591, 3715, + 603, 3723, 0, 3731, 572, 3744, 579, 589, 531, 528, + 443, 3783, 454, 568, 3768, 3769, 3784, 3785, 3800, 3808, - 3782, 3783, 3798, 3799, 3814, 3815, 3830, 3836, 3847, 529, - 533, 527, 3853, 3864, 3875, 520, 3881, 523, 515, 3892, - 512, 3898, 3909, 518, 0, 508, 496, 498, 397, 3941, - 560, 517, 3926, 3927, 3942, 3943, 3958, 489, 507, 484, - 3969, 3975, 483, 3990, 475, 477, 3993, 468, 3996, 4013, - 469, 462, 468, 461, 424, 4484, 4052, 485, 4037, 4048, - 4059, 461, 456, 455, 4065, 4076, 0, 4087, 454, 444, - 4098, 440, 4104, 4115, 438, 434, 429, 432, 732, 441, - 4131, 4128, 4139, 0, 419, 0, 4152, 0, 411, 4155, - 399, 4170, 0, 372, 347, 0, 4209, 330, 4194, 4205, + 3816, 3824, 529, 533, 527, 3832, 3840, 3848, 520, 3856, + 523, 515, 3864, 512, 3872, 3880, 518, 0, 508, 496, + 498, 397, 3912, 560, 517, 3897, 3898, 3913, 3921, 489, + 507, 484, 3934, 3942, 483, 3950, 475, 477, 3958, 468, + 3971, 3974, 469, 462, 468, 461, 424, 4405, 4018, 485, + 4003, 4004, 461, 456, 455, 4019, 4020, 0, 4035, 454, + 444, 4036, 440, 4051, 4057, 438, 434, 429, 432, 732, + 441, 4068, 4079, 0, 419, 0, 4085, 0, 411, 4100, + 399, 4103, 0, 372, 347, 0, 4147, 330, 4132, 258, + 4143, 227, 214, 4149, 177, 0, 180, 4160, 0, 138, - 258, 4211, 227, 214, 4222, 177, 0, 180, 4233, 4239, - 0, 138, 0, 4250, 0, 134, 4256, 0, 0, 4484, - 4301, 4313, 4325, 4337, 4349, 4361, 4373, 4384, 4385, 4389, - 4400, 4412, 4424, 4435, 4446, 4457, 4462, 4467, 4472 + 0, 4166, 0, 134, 4177, 0, 0, 4405, 4222, 4234, + 4246, 4258, 4270, 4282, 4294, 4305, 4306, 4310, 4321, 4333, + 4345, 4356, 4367, 4378, 4383, 4388, 4393 } ; -static yyconst short int yy_def[740] = +static yyconst short int yy_def[728] = { 0, - 720, 1, 721, 721, 722, 722, 723, 723, 724, 724, - 725, 725, 726, 726, 720, 720, 720, 720, 720, 727, - 720, 728, 720, 720, 720, 720, 720, 720, 720, 720, - 720, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 31, 729, - 720, 730, 720, 731, 720, 720, 720, 720, 720, 720, - 720, 732, 732, 720, 733, 733, 720, 720, 720, 720, - 734, 720, 720, 735, 735, 736, 720, 720, 21, 720, - 720, 720, 727, 727, 720, 737, 720, 738, 728, 728, - 720, 720, 720, 720, 720, 720, 31, 31, 31, 31, + 708, 1, 709, 709, 710, 710, 711, 711, 712, 712, + 713, 713, 714, 714, 708, 708, 708, 708, 708, 715, + 708, 716, 708, 708, 708, 708, 708, 708, 708, 708, + 708, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, 31, 717, + 708, 718, 708, 719, 708, 708, 708, 708, 708, 708, + 708, 720, 720, 708, 721, 721, 708, 708, 708, 708, + 722, 708, 708, 723, 723, 724, 708, 708, 21, 708, + 708, 708, 715, 715, 708, 725, 708, 726, 716, 716, + 708, 708, 708, 708, 708, 708, 31, 31, 31, 31, - 31, 31, 739, 31, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 739, 739, 31, - 31, 31, 31, 31, 31, 31, 31, 739, 31, 31, - 31, 31, 739, 31, 31, 31, 31, 739, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 739, 31, 31, - 739, 739, 31, 720, 729, 155, 155, 155, 730, 731, - 720, 720, 732, 720, 733, 720, 734, 75, 75, 736, - 720, 720, 720, 737, 738, 720, 720, 720, 720, 720, + 31, 31, 727, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 727, 727, 31, + 31, 31, 31, 31, 31, 31, 31, 727, 31, 31, + 31, 31, 727, 31, 31, 31, 31, 727, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 727, 31, 31, + 727, 727, 31, 708, 717, 155, 155, 155, 718, 719, + 708, 708, 720, 708, 721, 708, 722, 75, 75, 724, + 708, 708, 708, 725, 726, 708, 708, 708, 708, 708, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 739, 739, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 739, 31, 31, 31, - 739, 31, 31, 31, 31, 31, 739, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 739, 31, - 31, 31, 739, 739, 739, 31, 720, 720, 155, 155, - 155, 720, 75, 75, 720, 720, 720, 31, 31, 31, + 31, 31, 31, 31, 727, 727, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 727, 31, 31, 31, + 727, 31, 31, 31, 31, 31, 727, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, 727, 31, + 31, 31, 727, 727, 727, 31, 708, 708, 155, 155, + 155, 708, 75, 75, 708, 708, 708, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 739, 739, 31, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 739, 31, 31, 31, 739, 31, 31, + 727, 727, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 727, 31, 31, 31, 727, 31, 31, 31, - 31, 31, 739, 31, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 739, 31, 31, 31, 31, 31, 739, - 739, 739, 31, 720, 155, 155, 155, 75, 31, 31, - 31, 31, 31, 739, 31, 31, 31, 31, 31, 31, + 31, 727, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 727, 31, 31, 31, 31, 31, 727, 727, + 727, 31, 708, 155, 155, 155, 75, 31, 31, 31, + 31, 727, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 31, 739, 739, 739, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 739, 31, 31, 31, 739, - 31, 31, 31, 31, 739, 31, 31, 31, 31, 739, - 31, 739, 31, 31, 31, 739, 31, 739, 739, 739, - 720, 155, 155, 155, 75, 31, 31, 31, 31, 739, + 727, 727, 727, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 727, 31, 31, 31, 727, 31, 31, + 31, 31, 727, 31, 31, 31, 31, 727, 31, 727, + 31, 31, 31, 727, 31, 727, 727, 727, 708, 155, + 155, 155, 75, 31, 31, 31, 727, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 739, 739, - 739, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 31, 739, 31, 31, 739, 31, 31, 31, 31, - 739, 31, 31, 31, 31, 739, 31, 739, 31, 31, - 739, 739, 739, 739, 739, 155, 155, 155, 75, 31, - 31, 31, 739, 31, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 31, 739, - 739, 739, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 739, 31, 739, 31, 31, 31, 31, - - 739, 31, 31, 739, 31, 739, 31, 739, 739, 739, - 739, 739, 155, 155, 155, 75, 31, 31, 31, 739, + 31, 31, 31, 31, 31, 727, 727, 727, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, 31, 727, + 31, 31, 727, 31, 31, 31, 31, 727, 31, 31, + 31, 31, 727, 31, 727, 31, 31, 727, 727, 727, + 727, 727, 155, 155, 155, 75, 31, 31, 727, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 739, 739, 739, 739, 31, 31, 31, 31, 31, - 31, 739, 31, 739, 31, 739, 31, 739, 31, 31, - 739, 31, 739, 31, 739, 739, 739, 739, 155, 155, - 155, 75, 31, 31, 31, 739, 31, 31, 31, 31, - 31, 31, 31, 31, 739, 739, 739, 739, 31, 31, - 31, 739, 31, 739, 739, 31, 739, 31, 739, 31, - 739, 31, 739, 739, 739, 739, 155, 720, 155, 734, + 31, 31, 31, 31, 31, 727, 727, 727, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, 31, 727, + 31, 727, 31, 31, 31, 31, 727, 31, 31, 727, - 31, 31, 31, 31, 31, 31, 31, 31, 31, 739, - 739, 739, 31, 31, 31, 739, 31, 739, 739, 31, - 739, 31, 31, 739, 739, 739, 739, 739, 155, 720, - 155, 734, 31, 31, 31, 31, 31, 739, 739, 739, - 31, 31, 739, 31, 739, 739, 31, 739, 31, 31, - 739, 739, 739, 739, 155, 720, 720, 734, 31, 31, - 31, 739, 739, 739, 31, 31, 739, 31, 739, 739, - 31, 739, 31, 31, 739, 739, 739, 739, 155, 734, - 31, 31, 31, 739, 739, 739, 31, 739, 739, 31, - 739, 31, 739, 739, 739, 739, 720, 734, 31, 31, + 31, 727, 31, 727, 727, 727, 727, 727, 155, 155, + 155, 75, 31, 31, 727, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 727, 727, 727, 727, + 31, 31, 31, 31, 31, 31, 727, 31, 727, 31, + 727, 31, 727, 31, 31, 727, 31, 727, 31, 727, + 727, 727, 727, 155, 155, 155, 75, 31, 31, 727, + 31, 31, 31, 31, 31, 31, 31, 31, 727, 727, + 727, 727, 31, 31, 31, 727, 31, 727, 727, 31, + 727, 31, 727, 31, 727, 31, 727, 727, 727, 727, + 155, 708, 155, 722, 31, 31, 31, 31, 31, 31, - 739, 31, 739, 739, 31, 739, 739, 734, 31, 31, - 739, 739, 739, 31, 739, 734, 31, 739, 734, 0, - 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, - 720, 720, 720, 720, 720, 720, 720, 720, 720 + 31, 31, 727, 727, 727, 31, 31, 31, 727, 31, + 727, 727, 31, 727, 31, 31, 727, 727, 727, 727, + 727, 155, 708, 155, 722, 31, 31, 31, 31, 727, + 727, 727, 31, 31, 727, 31, 727, 727, 31, 727, + 31, 31, 727, 727, 727, 727, 155, 708, 708, 722, + 31, 31, 727, 727, 727, 31, 31, 727, 31, 727, + 727, 31, 727, 31, 31, 727, 727, 727, 727, 155, + 722, 31, 31, 727, 727, 727, 31, 727, 727, 31, + 727, 31, 727, 727, 727, 727, 708, 722, 31, 727, + 31, 727, 727, 31, 727, 727, 722, 31, 727, 727, + + 727, 31, 727, 722, 31, 727, 722, 0, 708, 708, + 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, + 708, 708, 708, 708, 708, 708, 708 } ; -static yyconst short int yy_nxt[4563] = +static yyconst short int yy_nxt[4484] = { 0, 16, 17, 18, 17, 19, 20, 21, 22, 23, 16, 24, 25, 26, 27, 28, 28, 28, 28, 28, 28, @@ -774,87 +768,87 @@ static yyconst short int yy_nxt[4563] = 77, 78, 77, 67, 257, 79, 68, 245, 89, 89, 89, 77, 78, 77, 81, 81, 79, 156, 91, 250, 89, 89, 92, 92, 92, 92, 92, 92, 95, 95, - 95, 95, 95, 95, 95, 97, 168, 328, 112, 171, + 95, 95, 95, 95, 95, 97, 168, 327, 112, 171, 171, 171, 171, 171, 171, 97, 85, 97, 69, 97, - 70, 82, 82, 82, 97, 251, 532, 156, 69, 719, + 70, 82, 82, 82, 97, 251, 527, 156, 69, 707, 70, 71, 72, 73, 72, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 30, 533, 80, 87, 97, 720, - 156, 71, 71, 71, 71, 30, 393, 80, 97, 75, + 71, 71, 71, 71, 30, 528, 80, 87, 97, 708, + 156, 71, 71, 71, 71, 30, 391, 80, 97, 75, - 97, 97, 97, 720, 104, 392, 718, 97, 105, 156, - 326, 97, 106, 97, 107, 97, 97, 156, 716, 97, - 97, 71, 71, 71, 108, 109, 97, 395, 97, 110, - 97, 97, 111, 97, 720, 127, 715, 168, 97, 178, + 97, 97, 97, 708, 104, 390, 706, 97, 105, 156, + 325, 97, 106, 97, 107, 97, 97, 156, 704, 97, + 97, 71, 71, 71, 108, 109, 97, 393, 97, 110, + 97, 97, 111, 97, 708, 127, 703, 168, 97, 178, 178, 178, 178, 178, 178, 178, 72, 71, 72, 71, 72, 73, 72, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 128, 459, 97, 171, 171, 171, 168, 71, - 71, 71, 71, 713, 97, 113, 114, 75, 97, 253, - 254, 156, 327, 97, 129, 130, 115, 394, 131, 156, - 168, 116, 97, 712, 97, 97, 97, 513, 132, 71, + 71, 71, 128, 456, 97, 171, 171, 171, 168, 71, + 71, 71, 71, 701, 97, 113, 114, 75, 97, 253, + 254, 156, 326, 97, 129, 130, 115, 392, 131, 156, + 168, 116, 97, 700, 97, 97, 97, 509, 132, 71, 71, 71, 97, 97, 97, 97, 97, 97, 117, 97, - 156, 97, 456, 133, 97, 711, 562, 120, 97, 156, - 121, 457, 458, 168, 72, 71, 72, 81, 97, 122, - 123, 152, 97, 156, 156, 124, 156, 97, 514, 156, - 156, 85, 515, 597, 86, 86, 86, 86, 86, 86, + 156, 97, 453, 133, 97, 699, 557, 120, 97, 156, + 121, 454, 455, 168, 72, 71, 72, 81, 97, 122, + 123, 152, 97, 156, 156, 124, 156, 97, 510, 156, + 156, 85, 511, 591, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, - 600, 708, 87, 88, 88, 88, 88, 88, 88, 88, + 594, 697, 87, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, - 88, 88, 88, 88, 88, 97, 560, 168, 97, 97, + 88, 88, 88, 88, 88, 97, 555, 168, 97, 97, - 97, 97, 97, 97, 97, 156, 707, 156, 561, 97, + 97, 97, 97, 97, 97, 156, 696, 156, 556, 97, 98, 97, 97, 97, 97, 97, 97, 97, 97, 97, 99, 97, 100, 97, 101, 97, 97, 97, 97, 102, - 97, 97, 97, 97, 97, 655, 156, 706, 103, 103, + 97, 97, 97, 97, 97, 647, 156, 695, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, - 97, 679, 559, 156, 704, 125, 97, 598, 598, 598, - 97, 599, 97, 126, 97, 629, 97, 156, 97, 97, - 97, 703, 156, 701, 698, 97, 156, 134, 97, 631, - 135, 696, 118, 156, 695, 694, 97, 693, 136, 139, + 97, 670, 554, 156, 693, 125, 97, 592, 592, 592, + 97, 593, 97, 126, 97, 622, 97, 156, 97, 97, + 97, 692, 156, 690, 688, 97, 156, 134, 97, 624, + 135, 686, 118, 156, 685, 684, 97, 683, 136, 139, - 97, 691, 97, 119, 137, 156, 97, 97, 97, 97, - 97, 689, 140, 688, 686, 97, 141, 685, 144, 97, - 684, 97, 680, 97, 145, 97, 678, 142, 97, 677, - 676, 138, 143, 97, 675, 97, 672, 97, 670, 97, - 669, 146, 667, 97, 97, 149, 97, 97, 147, 664, - 663, 150, 97, 153, 662, 658, 97, 148, 97, 654, - 97, 657, 657, 657, 653, 97, 154, 154, 154, 154, - 154, 154, 154, 151, 89, 89, 89, 155, 652, 651, - 176, 97, 648, 646, 645, 643, 89, 89, 640, 639, - 638, 97, 157, 97, 632, 97, 628, 158, 167, 156, + 97, 681, 97, 119, 137, 156, 97, 97, 97, 97, + 97, 679, 140, 678, 676, 97, 141, 675, 144, 97, + 674, 97, 671, 97, 145, 97, 669, 142, 97, 668, + 667, 138, 143, 97, 666, 97, 663, 97, 661, 97, + 660, 146, 658, 97, 97, 149, 97, 97, 147, 655, + 654, 150, 97, 153, 653, 650, 97, 148, 97, 646, + 97, 649, 649, 649, 645, 97, 154, 154, 154, 154, + 154, 154, 154, 151, 89, 89, 89, 155, 644, 643, + 176, 97, 640, 638, 637, 635, 89, 89, 632, 631, + 630, 97, 157, 97, 625, 97, 621, 158, 167, 156, - 97, 627, 167, 167, 167, 167, 167, 167, 167, 167, + 97, 620, 167, 167, 167, 167, 167, 167, 167, 167, 167, 95, 95, 95, 95, 95, 95, 95, 167, 167, 167, 167, 97, 97, 178, 178, 178, 178, 178, 178, - 178, 626, 97, 182, 97, 97, 97, 97, 625, 181, - 624, 97, 97, 97, 97, 621, 619, 618, 167, 167, - 167, 616, 612, 97, 97, 97, 97, 97, 184, 97, - 611, 610, 97, 97, 596, 595, 183, 594, 593, 97, - 591, 97, 589, 97, 167, 167, 587, 185, 97, 167, - 167, 167, 167, 167, 167, 167, 167, 167, 585, 97, - 584, 582, 97, 578, 186, 167, 167, 167, 167, 97, + 178, 619, 97, 182, 97, 97, 97, 97, 618, 181, + 617, 97, 97, 97, 97, 614, 612, 611, 167, 167, + 167, 609, 605, 97, 97, 97, 97, 97, 184, 97, + 604, 603, 97, 97, 590, 589, 183, 588, 587, 97, + 585, 97, 583, 97, 167, 167, 581, 185, 97, 167, + 167, 167, 167, 167, 167, 167, 167, 167, 579, 97, + 578, 576, 97, 572, 186, 167, 167, 167, 167, 97, - 577, 97, 97, 97, 97, 97, 97, 576, 97, 575, - 187, 97, 169, 566, 558, 97, 557, 97, 97, 188, - 556, 555, 553, 551, 97, 167, 167, 167, 97, 97, - 97, 189, 97, 697, 697, 697, 548, 97, 546, 97, - 544, 97, 535, 97, 190, 97, 534, 520, 97, 516, - 512, 167, 192, 97, 511, 97, 510, 97, 191, 97, - 509, 508, 506, 97, 97, 97, 97, 97, 504, 97, - 501, 156, 97, 195, 496, 494, 97, 193, 194, 97, - 97, 97, 196, 97, 482, 97, 481, 480, 97, 463, - 455, 454, 97, 453, 97, 451, 97, 97, 197, 198, + 571, 97, 97, 97, 97, 97, 97, 570, 97, 569, + 187, 97, 169, 560, 553, 97, 552, 97, 97, 188, + 551, 550, 548, 546, 97, 167, 167, 167, 97, 97, + 97, 189, 97, 687, 687, 687, 543, 97, 541, 97, + 539, 97, 530, 97, 190, 97, 529, 515, 97, 512, + 508, 167, 192, 97, 507, 97, 506, 97, 191, 97, + 505, 504, 502, 97, 97, 97, 97, 97, 500, 97, + 497, 156, 97, 195, 492, 490, 97, 193, 194, 97, + 97, 97, 196, 97, 478, 97, 477, 476, 97, 459, + 452, 451, 97, 450, 97, 448, 97, 97, 197, 198, - 97, 97, 448, 97, 200, 446, 441, 97, 436, 97, + 97, 97, 445, 97, 200, 443, 438, 97, 433, 97, 203, 97, 97, 97, 97, 97, 199, 201, 97, 97, - 433, 202, 97, 421, 420, 207, 419, 400, 97, 390, - 97, 204, 97, 97, 389, 388, 97, 97, 382, 208, - 375, 370, 366, 97, 97, 97, 97, 97, 97, 354, - 97, 353, 97, 172, 97, 97, 97, 168, 209, 97, - 210, 325, 322, 97, 321, 320, 314, 303, 298, 97, - 97, 97, 294, 97, 283, 282, 211, 212, 97, 257, + 430, 202, 97, 418, 417, 207, 416, 397, 97, 388, + 97, 204, 97, 97, 387, 386, 97, 97, 380, 208, + 373, 368, 364, 97, 97, 97, 97, 97, 97, 352, + 97, 351, 97, 172, 97, 97, 97, 168, 209, 97, + 210, 324, 321, 97, 320, 319, 313, 302, 297, 97, + 97, 97, 293, 97, 282, 281, 211, 212, 97, 257, 97, 97, 97, 213, 97, 255, 168, 97, 252, 97, 156, 97, 243, 97, 239, 97, 227, 97, 97, 215, @@ -864,406 +858,397 @@ static yyconst short int yy_nxt[4563] = 97, 94, 219, 97, 162, 97, 161, 97, 97, 97, 81, 97, 81, 96, 93, 97, 97, 97, 97, 97, 97, 97, 97, 220, 97, 84, 222, 97, 81, 81, - 720, 97, 97, 97, 720, 97, 720, 720, 720, 720, - 97, 223, 97, 720, 97, 97, 97, 720, 225, 720, - 720, 224, 226, 720, 720, 97, 720, 97, 720, 97, - 228, 97, 720, 720, 97, 720, 720, 97, 720, 720, + 708, 97, 97, 97, 708, 97, 708, 708, 708, 708, + 97, 223, 97, 708, 97, 97, 97, 708, 225, 708, + 708, 224, 226, 708, 708, 97, 708, 97, 708, 97, + 228, 97, 708, 708, 97, 708, 708, 97, 708, 708, - 720, 229, 720, 97, 720, 97, 720, 97, 97, 97, - 97, 97, 230, 720, 97, 231, 97, 720, 97, 720, - 97, 720, 97, 720, 97, 97, 97, 97, 97, 235, - 233, 720, 232, 97, 720, 97, 720, 234, 720, 97, - 97, 97, 720, 720, 97, 720, 236, 720, 720, 720, - 97, 97, 97, 97, 97, 97, 97, 97, 720, 97, - 97, 720, 720, 720, 720, 720, 97, 97, 97, 97, - 97, 238, 97, 97, 241, 237, 97, 242, 720, 240, - 720, 720, 97, 97, 97, 97, 97, 97, 97, 720, - 720, 97, 97, 720, 720, 720, 720, 720, 97, 720, + 708, 229, 708, 97, 708, 97, 708, 97, 97, 97, + 97, 97, 230, 708, 97, 231, 97, 708, 97, 708, + 97, 708, 97, 708, 97, 97, 97, 97, 97, 235, + 233, 708, 232, 97, 708, 97, 708, 234, 708, 97, + 97, 97, 708, 708, 97, 708, 236, 708, 708, 708, + 97, 97, 97, 97, 97, 97, 97, 97, 708, 97, + 97, 708, 708, 708, 708, 708, 97, 97, 97, 97, + 97, 238, 97, 97, 241, 237, 97, 242, 708, 240, + 708, 708, 97, 97, 97, 97, 97, 97, 97, 708, + 708, 97, 97, 708, 708, 708, 708, 708, 97, 708, - 97, 720, 97, 248, 248, 248, 246, 97, 154, 154, - 154, 154, 154, 154, 154, 720, 720, 720, 720, 720, - 720, 720, 720, 720, 97, 97, 720, 258, 720, 720, - 720, 720, 720, 720, 97, 97, 97, 97, 97, 97, - 97, 249, 259, 97, 97, 720, 247, 720, 97, 720, - 97, 97, 97, 720, 97, 720, 720, 720, 260, 97, - 97, 97, 97, 97, 261, 97, 97, 97, 720, 97, - 97, 720, 97, 262, 720, 720, 97, 720, 97, 97, - 97, 97, 97, 97, 97, 97, 97, 97, 97, 263, - 720, 97, 720, 97, 720, 720, 720, 264, 720, 97, + 97, 708, 97, 248, 248, 248, 246, 97, 154, 154, + 154, 154, 154, 154, 154, 708, 708, 708, 708, 708, + 708, 708, 708, 97, 97, 708, 258, 708, 708, 708, + 708, 708, 708, 97, 97, 97, 97, 97, 97, 97, + 97, 249, 97, 97, 708, 708, 247, 708, 708, 97, + 259, 97, 97, 97, 97, 97, 708, 708, 97, 97, + 708, 708, 708, 97, 708, 97, 97, 97, 260, 97, + 261, 708, 708, 97, 97, 97, 97, 97, 97, 97, + 97, 708, 97, 708, 708, 97, 708, 97, 708, 97, + 708, 97, 708, 97, 708, 97, 262, 263, 97, 97, - 720, 97, 720, 97, 97, 97, 97, 97, 720, 265, - 97, 266, 97, 720, 97, 720, 97, 720, 97, 720, - 97, 97, 97, 97, 97, 720, 720, 267, 720, 97, - 720, 97, 97, 97, 720, 268, 720, 720, 720, 720, - 97, 720, 97, 720, 97, 720, 97, 271, 97, 269, - 270, 97, 720, 720, 97, 272, 720, 273, 97, 720, - 97, 720, 97, 720, 97, 97, 97, 97, 97, 720, - 720, 97, 720, 97, 720, 97, 720, 97, 274, 97, - 720, 97, 97, 97, 97, 97, 720, 720, 97, 720, - 97, 276, 97, 275, 97, 720, 97, 720, 97, 97, + 708, 97, 708, 97, 708, 97, 97, 97, 708, 97, + 265, 264, 708, 97, 97, 97, 97, 97, 708, 708, + 708, 708, 97, 708, 97, 708, 97, 97, 97, 708, + 97, 708, 708, 266, 97, 97, 97, 97, 267, 97, + 708, 97, 708, 97, 268, 269, 97, 270, 97, 97, + 708, 708, 272, 708, 708, 271, 708, 708, 97, 97, + 97, 97, 97, 97, 97, 708, 708, 97, 97, 708, + 97, 708, 708, 708, 97, 708, 97, 273, 97, 708, + 97, 97, 97, 97, 97, 708, 708, 97, 708, 97, + 275, 97, 274, 97, 708, 97, 708, 97, 97, 97, - 97, 97, 97, 720, 720, 97, 720, 97, 279, 277, - 720, 97, 278, 97, 720, 97, 97, 97, 97, 97, - 720, 720, 720, 720, 97, 720, 97, 97, 97, 720, - 97, 720, 720, 280, 720, 97, 720, 97, 281, 97, - 97, 97, 720, 720, 720, 720, 97, 720, 97, 720, - 97, 97, 97, 720, 97, 720, 720, 284, 97, 97, - 285, 286, 97, 97, 287, 97, 97, 97, 720, 97, - 97, 720, 97, 720, 720, 290, 288, 720, 97, 97, - 97, 97, 97, 97, 97, 97, 97, 289, 97, 291, - 97, 97, 720, 97, 720, 720, 97, 720, 720, 720, + 97, 97, 708, 708, 97, 708, 97, 278, 276, 708, + 97, 277, 97, 708, 97, 97, 97, 97, 97, 708, + 708, 708, 708, 97, 708, 97, 97, 97, 708, 97, + 708, 708, 279, 708, 97, 708, 97, 280, 97, 97, + 97, 708, 708, 708, 708, 97, 708, 97, 708, 97, + 97, 97, 708, 97, 708, 708, 283, 97, 97, 284, + 285, 97, 97, 286, 97, 97, 97, 708, 97, 97, + 708, 97, 708, 708, 289, 287, 708, 97, 97, 97, + 97, 97, 97, 97, 97, 97, 288, 97, 290, 97, + 97, 708, 97, 708, 708, 97, 708, 708, 708, 97, - 97, 720, 97, 97, 97, 97, 97, 97, 97, 97, - 97, 97, 292, 720, 97, 97, 720, 295, 720, 720, - 720, 293, 720, 97, 97, 97, 97, 720, 97, 97, - 97, 720, 296, 97, 720, 97, 720, 720, 720, 97, - 720, 97, 297, 97, 720, 97, 97, 97, 97, 97, - 720, 720, 720, 720, 97, 720, 97, 97, 97, 720, - 97, 720, 720, 97, 299, 97, 720, 97, 720, 97, - 720, 97, 720, 97, 97, 97, 97, 97, 720, 720, - 300, 720, 97, 720, 97, 97, 97, 720, 97, 720, - 720, 301, 720, 97, 720, 97, 97, 97, 720, 97, + 708, 97, 97, 97, 97, 97, 97, 97, 97, 97, + 97, 291, 708, 97, 97, 708, 294, 708, 708, 708, + 292, 708, 97, 97, 97, 97, 708, 97, 97, 97, + 708, 295, 97, 708, 97, 708, 708, 708, 97, 708, + 97, 296, 97, 708, 97, 97, 97, 97, 97, 708, + 708, 708, 708, 97, 708, 97, 97, 97, 708, 97, + 708, 708, 97, 298, 97, 708, 97, 708, 97, 708, + 97, 708, 97, 97, 97, 97, 97, 708, 708, 299, + 708, 97, 708, 97, 97, 97, 708, 97, 708, 708, + 300, 708, 97, 708, 97, 97, 97, 708, 97, 708, - 720, 305, 97, 720, 97, 302, 304, 720, 97, 720, - 97, 720, 97, 97, 97, 97, 97, 720, 720, 97, - 720, 97, 720, 97, 720, 97, 720, 97, 720, 97, - 720, 97, 306, 97, 97, 97, 720, 307, 97, 720, - 720, 720, 308, 720, 97, 97, 97, 97, 97, 97, - 97, 720, 720, 97, 97, 720, 720, 720, 720, 720, - 97, 97, 97, 720, 97, 720, 720, 97, 309, 97, - 720, 97, 720, 97, 720, 97, 720, 97, 310, 97, - 97, 97, 97, 720, 311, 312, 97, 720, 97, 720, - 720, 313, 97, 720, 97, 720, 97, 720, 97, 97, + 304, 97, 708, 97, 301, 303, 708, 97, 708, 97, + 708, 97, 97, 97, 97, 97, 708, 708, 97, 708, + 97, 708, 97, 708, 97, 708, 97, 708, 97, 708, + 97, 305, 97, 97, 97, 708, 306, 97, 708, 708, + 708, 307, 708, 97, 97, 97, 97, 97, 97, 97, + 708, 708, 97, 97, 708, 708, 708, 708, 708, 97, + 97, 97, 708, 97, 708, 708, 97, 308, 97, 708, + 97, 708, 97, 708, 97, 708, 97, 309, 97, 97, + 97, 97, 708, 310, 311, 97, 708, 97, 708, 708, + 312, 97, 708, 97, 708, 97, 708, 97, 97, 97, - 97, 97, 97, 720, 720, 720, 720, 97, 720, 97, - 97, 97, 315, 97, 316, 319, 720, 720, 97, 317, - 97, 97, 97, 720, 97, 720, 720, 720, 318, 97, - 720, 97, 97, 97, 720, 97, 720, 720, 323, 720, - 97, 720, 97, 720, 97, 720, 97, 248, 248, 248, - 720, 97, 720, 720, 720, 720, 97, 97, 720, 324, - 324, 324, 324, 324, 324, 324, 97, 97, 329, 97, - 97, 97, 97, 330, 720, 97, 97, 720, 97, 331, - 720, 720, 97, 720, 97, 720, 97, 720, 97, 332, - 97, 97, 97, 97, 97, 720, 720, 97, 720, 720, + 97, 97, 708, 708, 708, 708, 97, 708, 97, 97, + 97, 314, 97, 315, 318, 708, 708, 97, 316, 97, + 97, 97, 708, 97, 708, 708, 708, 317, 97, 708, + 97, 97, 97, 708, 97, 708, 708, 322, 708, 97, + 708, 97, 708, 97, 708, 97, 248, 248, 248, 708, + 97, 708, 708, 708, 708, 97, 708, 708, 323, 323, + 323, 323, 323, 323, 323, 97, 97, 328, 708, 97, + 708, 708, 97, 329, 97, 708, 97, 708, 97, 708, + 97, 708, 97, 330, 97, 97, 97, 97, 97, 708, + 708, 97, 708, 708, 708, 708, 708, 97, 97, 331, - 720, 720, 720, 97, 97, 333, 97, 97, 97, 336, - 97, 97, 97, 97, 335, 720, 720, 720, 720, 720, - 97, 97, 97, 97, 97, 97, 97, 337, 720, 97, - 97, 720, 97, 720, 720, 720, 97, 720, 97, 334, - 97, 720, 97, 97, 97, 97, 97, 720, 720, 338, - 720, 97, 720, 97, 97, 97, 339, 97, 720, 720, - 720, 720, 97, 720, 97, 720, 97, 720, 97, 97, - 340, 341, 97, 97, 720, 97, 720, 720, 720, 97, - 720, 97, 97, 97, 97, 97, 97, 343, 342, 97, - 97, 97, 344, 97, 97, 345, 97, 720, 720, 346, + 97, 97, 97, 334, 97, 97, 97, 97, 333, 708, + 708, 708, 708, 708, 97, 97, 97, 97, 97, 97, + 97, 335, 708, 97, 97, 708, 97, 708, 708, 708, + 97, 708, 97, 332, 97, 708, 97, 97, 97, 97, + 97, 708, 708, 336, 708, 97, 708, 97, 97, 97, + 337, 97, 708, 708, 708, 708, 97, 708, 97, 708, + 97, 708, 97, 97, 338, 339, 97, 97, 708, 97, + 708, 708, 708, 97, 708, 97, 97, 97, 97, 97, + 97, 341, 340, 97, 97, 97, 342, 97, 97, 343, + 97, 708, 708, 344, 97, 708, 97, 97, 97, 97, - 97, 720, 97, 97, 97, 97, 97, 97, 97, 97, - 97, 97, 97, 720, 720, 97, 720, 97, 720, 720, - 720, 97, 720, 97, 348, 347, 720, 97, 97, 97, - 97, 97, 720, 720, 720, 720, 97, 720, 97, 97, - 97, 720, 97, 720, 349, 720, 720, 97, 720, 97, - 720, 350, 720, 97, 97, 351, 720, 352, 97, 720, - 97, 720, 720, 720, 97, 720, 97, 720, 97, 720, - 97, 97, 97, 97, 97, 720, 720, 97, 720, 97, - 720, 97, 720, 97, 720, 97, 720, 97, 720, 97, - 97, 97, 97, 97, 720, 356, 97, 720, 720, 357, + 97, 97, 97, 97, 97, 97, 97, 708, 708, 97, + 708, 97, 708, 708, 708, 97, 708, 97, 346, 345, + 708, 97, 97, 97, 97, 97, 708, 708, 708, 708, + 97, 708, 97, 97, 97, 708, 97, 708, 347, 708, + 708, 97, 708, 97, 708, 348, 708, 97, 97, 349, + 708, 350, 97, 708, 97, 708, 708, 708, 97, 708, + 97, 708, 97, 708, 97, 97, 97, 97, 97, 708, + 708, 97, 708, 97, 708, 97, 708, 97, 708, 97, + 708, 97, 708, 97, 97, 97, 97, 97, 708, 354, + 97, 708, 708, 355, 708, 708, 97, 97, 97, 97, - 720, 720, 97, 97, 97, 97, 97, 97, 97, 358, - 720, 97, 97, 360, 97, 720, 355, 720, 97, 720, - 97, 720, 97, 364, 97, 720, 97, 359, 97, 97, - 361, 720, 97, 97, 362, 720, 720, 720, 720, 97, - 97, 97, 97, 97, 97, 363, 97, 720, 97, 720, - 97, 97, 97, 97, 97, 720, 720, 365, 720, 97, - 720, 97, 367, 97, 97, 97, 720, 97, 720, 720, - 720, 97, 97, 97, 97, 97, 97, 97, 97, 720, - 97, 720, 368, 97, 720, 97, 372, 97, 371, 97, - 369, 97, 720, 720, 720, 97, 97, 97, 720, 97, + 97, 97, 97, 356, 708, 97, 97, 358, 97, 708, + 353, 708, 97, 708, 97, 708, 97, 362, 97, 708, + 97, 357, 97, 97, 359, 708, 97, 97, 360, 708, + 708, 708, 708, 97, 97, 97, 97, 97, 97, 361, + 97, 708, 97, 708, 97, 97, 97, 97, 97, 708, + 708, 363, 708, 97, 708, 97, 365, 97, 97, 97, + 708, 97, 708, 708, 708, 97, 97, 97, 97, 97, + 97, 97, 97, 708, 97, 708, 366, 97, 708, 97, + 370, 97, 369, 97, 367, 97, 708, 708, 708, 97, + 97, 97, 708, 97, 97, 97, 708, 371, 97, 708, - 97, 97, 720, 373, 97, 720, 720, 720, 720, 720, - 97, 97, 97, 97, 97, 97, 374, 97, 97, 97, - 97, 720, 720, 720, 720, 720, 720, 97, 97, 97, - 97, 97, 97, 97, 720, 720, 97, 97, 720, 720, - 720, 720, 720, 97, 720, 97, 97, 97, 720, 377, - 720, 376, 97, 720, 97, 720, 97, 97, 97, 720, - 97, 720, 720, 720, 97, 97, 97, 97, 97, 378, - 720, 97, 97, 97, 379, 97, 97, 720, 97, 720, - 720, 381, 97, 720, 97, 97, 97, 97, 97, 97, - 97, 97, 97, 97, 97, 720, 97, 97, 720, 97, + 708, 708, 708, 708, 97, 97, 97, 97, 97, 97, + 372, 97, 97, 97, 97, 708, 708, 708, 708, 708, + 708, 97, 97, 97, 97, 97, 97, 97, 708, 708, + 97, 97, 708, 708, 708, 708, 708, 97, 708, 97, + 97, 97, 708, 375, 708, 374, 97, 708, 97, 708, + 97, 97, 97, 708, 97, 708, 708, 708, 97, 97, + 97, 97, 97, 376, 708, 97, 97, 97, 377, 97, + 97, 708, 97, 708, 708, 379, 97, 708, 97, 97, + 97, 97, 97, 97, 97, 97, 97, 97, 97, 708, + 97, 97, 708, 97, 708, 708, 708, 97, 708, 97, - 720, 720, 720, 97, 720, 97, 97, 97, 97, 97, - 97, 383, 97, 97, 97, 97, 720, 380, 97, 720, - 97, 720, 720, 385, 97, 720, 97, 720, 97, 720, - 97, 97, 97, 384, 97, 720, 720, 97, 720, 97, - 720, 97, 720, 97, 720, 97, 720, 97, 720, 97, - 97, 97, 97, 720, 387, 720, 97, 720, 720, 720, - 720, 720, 97, 720, 97, 720, 97, 386, 720, 97, - 720, 97, 324, 324, 324, 324, 324, 324, 324, 97, - 720, 97, 720, 97, 397, 97, 720, 396, 97, 720, - 720, 720, 720, 97, 398, 97, 720, 97, 720, 97, + 97, 97, 97, 97, 97, 381, 97, 97, 97, 97, + 708, 378, 97, 708, 97, 708, 708, 383, 97, 708, + 97, 708, 97, 708, 97, 97, 97, 382, 97, 708, + 708, 97, 708, 97, 708, 97, 708, 97, 708, 97, + 708, 97, 708, 97, 97, 97, 97, 708, 385, 708, + 97, 708, 708, 708, 708, 708, 97, 708, 97, 708, + 97, 384, 708, 97, 708, 97, 323, 323, 323, 323, + 323, 323, 323, 97, 708, 97, 708, 97, 97, 395, + 708, 394, 97, 396, 97, 708, 708, 708, 97, 708, + 97, 708, 97, 708, 97, 97, 97, 97, 97, 708, - 399, 97, 720, 97, 97, 97, 720, 97, 720, 97, - 391, 97, 97, 97, 720, 97, 401, 97, 720, 97, - 97, 97, 720, 97, 720, 97, 402, 97, 97, 97, - 720, 97, 720, 720, 720, 97, 97, 97, 97, 97, - 720, 403, 720, 720, 97, 720, 97, 720, 97, 97, - 97, 720, 97, 720, 720, 720, 97, 97, 97, 97, - 97, 404, 720, 97, 97, 97, 405, 97, 97, 720, - 97, 406, 720, 720, 97, 720, 97, 97, 97, 97, - 407, 97, 97, 97, 97, 97, 97, 720, 408, 97, - 720, 97, 409, 410, 720, 97, 720, 97, 720, 97, + 398, 97, 708, 97, 389, 97, 708, 97, 708, 97, + 708, 97, 708, 97, 97, 97, 97, 399, 708, 97, + 97, 708, 400, 708, 708, 708, 97, 97, 97, 97, + 97, 97, 708, 97, 708, 97, 708, 97, 97, 97, + 97, 97, 402, 97, 708, 708, 97, 708, 708, 708, + 97, 97, 401, 97, 97, 97, 708, 97, 403, 97, + 708, 97, 97, 97, 97, 97, 708, 708, 708, 708, + 97, 708, 97, 708, 404, 405, 97, 708, 97, 406, + 708, 708, 97, 97, 97, 97, 97, 407, 708, 708, + 708, 97, 708, 97, 708, 97, 408, 97, 708, 97, - 720, 97, 720, 97, 97, 97, 97, 97, 720, 411, - 97, 720, 720, 412, 720, 720, 97, 97, 97, 97, - 97, 97, 97, 413, 720, 97, 97, 720, 720, 720, - 720, 720, 97, 720, 97, 720, 97, 97, 415, 720, - 414, 97, 720, 97, 720, 720, 720, 97, 720, 97, - 720, 97, 720, 97, 97, 97, 97, 97, 720, 720, - 97, 416, 97, 720, 97, 720, 97, 720, 97, 720, - 97, 417, 418, 97, 97, 97, 97, 720, 720, 97, - 720, 720, 720, 422, 720, 97, 97, 97, 97, 97, - 97, 720, 720, 97, 97, 97, 97, 423, 720, 424, + 409, 97, 708, 97, 97, 97, 708, 97, 708, 97, + 708, 97, 97, 97, 708, 97, 708, 410, 708, 97, + 97, 97, 708, 97, 97, 412, 708, 411, 97, 708, + 97, 708, 708, 708, 97, 708, 97, 708, 97, 708, + 97, 97, 97, 97, 97, 708, 708, 97, 413, 97, + 708, 97, 708, 97, 708, 97, 708, 97, 414, 415, + 97, 97, 97, 97, 708, 708, 97, 708, 708, 708, + 419, 708, 97, 97, 97, 97, 97, 97, 708, 708, + 97, 97, 97, 97, 420, 708, 421, 708, 708, 708, + 97, 708, 97, 97, 97, 97, 708, 97, 422, 97, - 720, 720, 720, 97, 720, 97, 97, 97, 97, 720, - 97, 425, 97, 97, 97, 97, 426, 720, 720, 720, - 720, 720, 720, 97, 97, 427, 97, 97, 97, 97, - 720, 720, 97, 97, 720, 97, 720, 720, 429, 97, - 720, 97, 720, 97, 720, 97, 97, 97, 428, 97, - 431, 720, 720, 432, 97, 720, 97, 97, 97, 720, - 97, 720, 720, 430, 720, 97, 720, 97, 97, 97, - 720, 97, 720, 720, 97, 720, 97, 720, 97, 720, - 97, 720, 97, 720, 97, 97, 97, 97, 97, 720, - 720, 97, 434, 97, 720, 97, 720, 97, 720, 97, + 97, 97, 97, 423, 708, 708, 708, 708, 708, 708, + 97, 97, 424, 97, 97, 97, 97, 708, 708, 97, + 97, 708, 97, 708, 708, 426, 97, 708, 97, 708, + 97, 708, 97, 97, 97, 425, 97, 428, 708, 708, + 429, 97, 708, 97, 97, 97, 708, 97, 708, 708, + 427, 708, 97, 708, 97, 97, 97, 708, 97, 708, + 708, 97, 708, 97, 708, 97, 708, 97, 708, 97, + 708, 97, 97, 97, 97, 97, 708, 708, 97, 431, + 97, 708, 97, 708, 97, 708, 97, 708, 97, 97, + 432, 97, 97, 708, 708, 708, 708, 97, 708, 97, - 720, 97, 97, 435, 97, 97, 720, 720, 720, 720, - 97, 720, 97, 97, 97, 720, 97, 720, 437, 97, - 438, 97, 720, 97, 720, 97, 720, 97, 720, 97, - 97, 439, 97, 97, 720, 720, 720, 720, 97, 720, - 97, 720, 97, 97, 97, 720, 97, 720, 440, 97, - 442, 720, 720, 97, 97, 97, 97, 97, 443, 444, - 97, 720, 97, 720, 97, 97, 97, 97, 97, 720, - 720, 720, 720, 97, 720, 720, 720, 97, 97, 97, - 720, 97, 720, 720, 97, 447, 97, 720, 97, 445, - 97, 720, 97, 720, 97, 720, 97, 97, 97, 97, + 97, 97, 708, 97, 708, 434, 97, 435, 97, 708, + 97, 708, 97, 708, 97, 708, 97, 97, 436, 97, + 97, 708, 708, 708, 708, 97, 708, 97, 708, 97, + 97, 97, 708, 97, 708, 437, 97, 439, 708, 708, + 97, 97, 97, 97, 97, 440, 441, 97, 708, 97, + 708, 97, 97, 97, 97, 97, 708, 708, 708, 708, + 97, 708, 708, 708, 97, 97, 97, 708, 97, 708, + 708, 97, 444, 97, 708, 97, 442, 97, 708, 97, + 708, 97, 708, 97, 97, 97, 97, 97, 708, 446, + 97, 708, 708, 708, 708, 708, 97, 97, 97, 97, - 97, 720, 449, 97, 720, 720, 720, 720, 720, 97, - 97, 97, 97, 97, 97, 97, 450, 720, 97, 97, - 720, 97, 720, 720, 720, 97, 720, 97, 720, 97, - 720, 97, 720, 97, 97, 97, 97, 460, 461, 97, - 97, 720, 720, 720, 720, 720, 97, 97, 97, 97, - 97, 97, 720, 97, 720, 97, 720, 97, 97, 97, - 452, 97, 97, 720, 720, 462, 97, 720, 97, 720, - 720, 720, 97, 720, 464, 720, 97, 720, 97, 97, - 97, 97, 97, 720, 720, 97, 465, 97, 466, 97, - 720, 97, 720, 97, 720, 97, 97, 97, 97, 97, + 97, 97, 97, 447, 708, 97, 97, 708, 97, 708, + 708, 708, 97, 708, 97, 708, 97, 708, 97, 708, + 97, 97, 97, 457, 97, 708, 708, 97, 708, 708, + 97, 708, 708, 708, 97, 708, 97, 708, 97, 708, + 97, 97, 97, 97, 97, 708, 708, 449, 458, 97, + 708, 97, 97, 460, 708, 97, 708, 708, 708, 708, + 97, 708, 97, 97, 97, 708, 97, 708, 708, 97, + 461, 97, 462, 97, 708, 97, 708, 97, 708, 97, + 97, 97, 97, 97, 708, 708, 97, 463, 97, 708, + 97, 708, 97, 708, 97, 708, 97, 97, 464, 97, - 720, 720, 97, 467, 97, 720, 97, 720, 97, 720, - 97, 720, 97, 97, 468, 97, 97, 720, 720, 720, - 720, 97, 720, 97, 97, 97, 470, 97, 720, 720, - 97, 469, 97, 720, 97, 720, 97, 720, 97, 720, - 97, 720, 97, 97, 97, 720, 720, 97, 471, 97, - 472, 720, 720, 97, 720, 473, 720, 97, 720, 97, - 720, 97, 720, 97, 97, 97, 97, 97, 720, 475, - 97, 720, 97, 720, 97, 720, 474, 720, 97, 720, - 97, 97, 97, 97, 97, 720, 720, 97, 720, 97, - 720, 97, 720, 97, 476, 97, 720, 97, 97, 97, + 97, 708, 708, 708, 708, 97, 708, 97, 97, 97, + 466, 97, 708, 708, 97, 465, 97, 708, 97, 708, + 97, 708, 97, 708, 97, 708, 97, 97, 97, 708, + 708, 97, 467, 97, 468, 708, 708, 97, 708, 469, + 708, 97, 708, 97, 708, 97, 708, 97, 97, 97, + 97, 97, 708, 471, 97, 708, 97, 708, 97, 708, + 470, 708, 97, 708, 97, 97, 97, 97, 97, 708, + 708, 97, 708, 97, 708, 97, 708, 97, 472, 97, + 708, 97, 97, 97, 97, 97, 708, 708, 97, 708, + 97, 708, 97, 708, 97, 474, 97, 708, 97, 473, - 97, 97, 720, 720, 97, 720, 97, 720, 97, 720, - 97, 478, 97, 720, 97, 477, 97, 97, 97, 479, - 97, 97, 720, 97, 720, 483, 720, 720, 720, 720, - 97, 97, 97, 97, 97, 97, 97, 720, 720, 97, - 97, 720, 97, 484, 485, 720, 97, 720, 97, 720, - 97, 720, 97, 97, 97, 97, 97, 720, 720, 97, - 720, 97, 487, 97, 720, 97, 720, 97, 720, 97, - 486, 97, 97, 97, 97, 488, 720, 720, 97, 720, - 97, 489, 720, 720, 97, 720, 97, 720, 97, 720, - 97, 97, 97, 97, 97, 720, 720, 720, 720, 97, + 97, 97, 97, 475, 97, 97, 708, 97, 708, 479, + 708, 708, 708, 708, 97, 97, 97, 97, 97, 97, + 97, 708, 708, 97, 97, 708, 97, 480, 481, 708, + 97, 708, 97, 708, 97, 708, 97, 97, 97, 97, + 97, 708, 708, 97, 708, 97, 483, 97, 708, 97, + 708, 97, 708, 97, 482, 97, 97, 97, 97, 484, + 708, 708, 97, 708, 97, 485, 708, 708, 97, 708, + 97, 708, 97, 708, 97, 97, 97, 97, 97, 708, + 708, 708, 708, 97, 708, 97, 708, 97, 708, 97, + 97, 486, 708, 487, 97, 708, 97, 708, 708, 708, - 720, 97, 720, 97, 720, 97, 97, 490, 720, 491, - 97, 720, 97, 720, 720, 720, 97, 720, 97, 720, - 97, 720, 97, 97, 97, 97, 97, 720, 720, 492, - 493, 97, 720, 97, 97, 97, 720, 97, 720, 495, - 97, 720, 97, 720, 97, 720, 97, 720, 97, 720, - 97, 97, 97, 97, 97, 720, 720, 97, 720, 97, - 720, 97, 720, 497, 720, 97, 720, 97, 97, 498, - 97, 97, 720, 720, 720, 720, 97, 720, 97, 720, - 97, 97, 97, 720, 500, 720, 499, 97, 720, 97, - 720, 97, 720, 97, 720, 97, 720, 720, 720, 97, + 97, 708, 97, 708, 97, 708, 97, 97, 97, 97, + 97, 708, 708, 488, 489, 97, 708, 97, 97, 97, + 708, 97, 708, 491, 97, 708, 97, 708, 97, 708, + 97, 708, 97, 708, 97, 97, 97, 97, 97, 708, + 708, 97, 708, 97, 708, 97, 708, 493, 708, 97, + 708, 97, 97, 494, 97, 97, 708, 708, 708, 708, + 97, 708, 97, 708, 97, 97, 97, 708, 496, 708, + 495, 97, 708, 97, 708, 97, 708, 97, 708, 97, + 708, 708, 708, 97, 97, 97, 708, 97, 97, 499, + 708, 97, 97, 498, 97, 708, 708, 708, 97, 708, - 97, 97, 720, 97, 97, 503, 720, 97, 97, 502, - 97, 720, 720, 720, 97, 720, 97, 97, 97, 97, - 97, 97, 97, 97, 97, 97, 97, 505, 97, 97, - 720, 97, 720, 720, 720, 97, 720, 97, 97, 97, - 97, 97, 97, 97, 97, 97, 97, 97, 507, 97, - 97, 720, 720, 720, 720, 720, 97, 720, 97, 97, - 97, 97, 97, 97, 517, 97, 720, 518, 97, 519, - 97, 720, 97, 720, 97, 720, 97, 720, 720, 720, - 97, 97, 97, 97, 97, 720, 521, 720, 720, 97, - 720, 97, 720, 97, 97, 97, 720, 97, 720, 720, + 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + 97, 501, 97, 97, 708, 97, 708, 708, 708, 97, + 708, 97, 97, 97, 97, 97, 97, 97, 97, 97, + 97, 97, 503, 708, 97, 708, 708, 708, 708, 708, + 97, 708, 97, 97, 97, 708, 97, 708, 513, 97, + 514, 708, 708, 97, 708, 97, 97, 97, 97, 708, + 97, 97, 97, 708, 516, 97, 708, 97, 708, 708, + 708, 97, 708, 97, 708, 97, 708, 97, 97, 517, + 97, 97, 708, 708, 97, 708, 97, 708, 97, 708, + 518, 519, 97, 708, 97, 97, 97, 97, 97, 708, - 720, 97, 97, 522, 97, 97, 523, 97, 97, 720, - 97, 720, 720, 97, 524, 97, 720, 97, 97, 97, - 720, 97, 720, 720, 720, 97, 97, 97, 97, 97, - 97, 97, 97, 720, 97, 720, 720, 97, 525, 97, - 720, 97, 97, 97, 526, 97, 720, 720, 720, 97, - 97, 97, 97, 97, 97, 97, 97, 720, 97, 720, - 527, 97, 720, 97, 720, 97, 97, 97, 720, 97, - 720, 720, 720, 97, 97, 97, 97, 97, 97, 97, - 97, 528, 97, 720, 529, 97, 720, 530, 720, 97, - 97, 97, 720, 97, 720, 720, 720, 97, 97, 97, + 708, 97, 708, 97, 708, 97, 708, 97, 708, 97, + 708, 97, 97, 97, 97, 97, 708, 708, 708, 520, + 97, 708, 97, 97, 97, 521, 97, 708, 708, 97, + 708, 97, 708, 97, 708, 97, 708, 97, 708, 97, + 97, 97, 97, 97, 708, 522, 97, 708, 97, 708, + 97, 708, 97, 708, 97, 708, 97, 97, 97, 97, + 97, 708, 708, 708, 523, 97, 708, 97, 97, 97, + 708, 97, 708, 708, 525, 524, 97, 708, 97, 708, + 97, 708, 97, 708, 97, 97, 97, 97, 97, 708, + 708, 97, 708, 97, 708, 526, 708, 97, 531, 97, - 531, 97, 97, 97, 97, 720, 97, 720, 720, 97, - 536, 97, 720, 97, 97, 97, 720, 97, 720, 720, - 720, 97, 97, 97, 97, 97, 97, 97, 97, 537, - 97, 720, 720, 97, 720, 97, 720, 97, 720, 97, - 720, 97, 720, 720, 720, 97, 97, 97, 97, 97, - 720, 539, 538, 720, 97, 720, 97, 720, 97, 97, - 97, 720, 97, 720, 720, 720, 97, 97, 97, 97, - 97, 97, 720, 97, 540, 97, 97, 541, 97, 97, - 720, 720, 97, 720, 720, 720, 97, 720, 97, 97, - 97, 97, 97, 97, 543, 97, 97, 97, 97, 720, + 708, 97, 97, 97, 97, 97, 708, 708, 708, 708, + 97, 708, 97, 97, 97, 708, 97, 708, 708, 97, + 532, 97, 708, 97, 708, 97, 708, 97, 708, 97, + 97, 97, 97, 97, 708, 708, 97, 708, 97, 534, + 97, 708, 97, 708, 97, 708, 97, 533, 97, 97, + 97, 97, 97, 708, 708, 97, 708, 708, 708, 708, + 708, 97, 97, 97, 97, 97, 97, 97, 536, 535, + 97, 97, 708, 97, 708, 708, 708, 97, 708, 97, + 708, 97, 708, 97, 97, 97, 97, 97, 708, 708, + 97, 708, 97, 708, 97, 708, 538, 708, 97, 708, - 97, 97, 720, 720, 720, 720, 720, 545, 720, 97, - 97, 97, 97, 97, 97, 720, 97, 547, 720, 97, - 720, 97, 720, 97, 542, 97, 720, 97, 720, 97, - 720, 97, 97, 97, 720, 97, 720, 720, 720, 97, - 97, 97, 97, 97, 720, 549, 720, 720, 97, 720, - 97, 720, 97, 550, 97, 720, 97, 720, 720, 563, - 97, 97, 97, 97, 97, 720, 552, 720, 720, 97, - 554, 97, 720, 97, 97, 97, 720, 97, 720, 720, - 720, 97, 97, 97, 97, 97, 97, 97, 97, 720, - 97, 720, 720, 97, 564, 97, 565, 97, 720, 97, + 540, 97, 97, 97, 97, 708, 708, 708, 708, 97, + 708, 97, 97, 97, 708, 97, 542, 708, 537, 708, + 97, 708, 97, 97, 97, 708, 97, 708, 708, 97, + 708, 97, 708, 97, 708, 97, 708, 97, 708, 97, + 708, 97, 97, 97, 97, 708, 708, 544, 97, 708, + 97, 708, 708, 545, 97, 708, 97, 708, 97, 708, + 97, 708, 97, 97, 97, 97, 708, 708, 547, 97, + 549, 97, 708, 708, 708, 97, 708, 97, 708, 97, + 708, 97, 97, 97, 97, 97, 708, 708, 708, 558, + 97, 708, 97, 708, 97, 708, 97, 97, 559, 708, - 720, 97, 720, 97, 720, 97, 97, 97, 720, 97, - 720, 97, 720, 97, 97, 97, 720, 97, 720, 567, - 720, 97, 97, 97, 97, 97, 720, 569, 720, 568, - 97, 720, 97, 720, 97, 97, 97, 720, 97, 720, - 720, 572, 97, 97, 570, 97, 97, 97, 571, 97, - 97, 97, 720, 97, 97, 720, 97, 720, 720, 720, - 97, 720, 97, 97, 97, 97, 97, 97, 97, 97, - 97, 97, 97, 720, 573, 97, 720, 97, 720, 720, - 720, 97, 720, 97, 574, 97, 720, 97, 97, 97, - 97, 97, 720, 720, 97, 720, 97, 579, 97, 720, + 708, 97, 708, 97, 708, 708, 708, 97, 708, 97, + 708, 97, 708, 97, 97, 97, 97, 97, 708, 561, + 708, 708, 97, 708, 97, 708, 97, 97, 97, 708, + 563, 708, 562, 97, 708, 97, 708, 97, 97, 97, + 708, 97, 708, 708, 566, 97, 97, 564, 97, 97, + 97, 565, 97, 97, 97, 708, 97, 97, 708, 97, + 708, 708, 708, 97, 708, 97, 97, 97, 97, 97, + 97, 97, 97, 97, 97, 97, 708, 567, 97, 708, + 97, 708, 708, 708, 97, 708, 97, 568, 97, 708, + 97, 97, 97, 97, 97, 708, 708, 97, 708, 97, - 97, 720, 97, 720, 97, 97, 97, 97, 97, 720, - 720, 97, 720, 97, 720, 97, 720, 97, 720, 97, - 720, 97, 97, 97, 97, 97, 720, 720, 97, 720, - 97, 720, 97, 720, 97, 580, 97, 720, 97, 97, - 97, 97, 97, 720, 720, 720, 720, 97, 720, 97, - 97, 97, 720, 97, 583, 720, 97, 581, 97, 720, - 97, 720, 97, 588, 97, 720, 97, 97, 97, 97, - 97, 720, 720, 720, 586, 97, 720, 97, 97, 97, - 720, 97, 720, 720, 97, 720, 97, 720, 97, 720, - 97, 720, 97, 720, 97, 97, 97, 97, 97, 720, + 573, 97, 708, 97, 708, 97, 708, 97, 97, 97, + 97, 97, 708, 708, 97, 708, 97, 708, 97, 708, + 97, 708, 97, 708, 97, 97, 97, 97, 97, 708, + 708, 97, 708, 97, 708, 97, 708, 97, 574, 97, + 708, 97, 97, 97, 97, 97, 708, 708, 708, 708, + 97, 708, 97, 97, 97, 708, 97, 577, 708, 97, + 575, 97, 708, 97, 708, 97, 582, 97, 708, 97, + 97, 97, 97, 97, 708, 708, 708, 580, 97, 708, + 97, 97, 97, 708, 97, 708, 708, 97, 708, 97, + 708, 97, 708, 97, 708, 97, 708, 97, 97, 97, - 720, 97, 720, 97, 720, 97, 720, 590, 720, 97, - 720, 592, 97, 97, 97, 97, 720, 720, 720, 720, - 97, 720, 97, 97, 97, 720, 97, 720, 720, 601, - 720, 97, 720, 97, 97, 97, 602, 97, 720, 720, - 97, 720, 97, 720, 97, 720, 97, 720, 97, 720, - 97, 97, 97, 97, 97, 720, 720, 720, 720, 97, - 720, 97, 97, 97, 604, 97, 720, 720, 603, 720, - 97, 720, 97, 97, 97, 720, 97, 720, 605, 97, - 720, 97, 720, 97, 720, 97, 720, 97, 720, 97, - 720, 606, 97, 97, 97, 607, 720, 97, 97, 608, + 97, 97, 708, 708, 97, 708, 97, 708, 97, 708, + 584, 708, 97, 708, 586, 97, 97, 97, 97, 708, + 708, 97, 708, 97, 708, 97, 708, 97, 595, 97, + 708, 97, 97, 97, 97, 97, 708, 708, 97, 708, + 97, 708, 97, 708, 97, 708, 97, 708, 97, 708, + 97, 97, 97, 97, 97, 596, 597, 97, 598, 708, + 708, 708, 708, 97, 97, 97, 97, 97, 97, 97, + 97, 600, 97, 97, 708, 708, 708, 708, 708, 97, + 97, 599, 97, 97, 97, 97, 97, 601, 97, 97, + 708, 708, 708, 708, 708, 97, 602, 97, 97, 97, - 97, 720, 720, 720, 97, 720, 97, 97, 97, 97, - 609, 97, 97, 97, 97, 97, 97, 720, 720, 97, - 720, 720, 720, 97, 720, 97, 720, 97, 720, 97, - 720, 613, 720, 97, 97, 97, 614, 97, 97, 97, - 720, 720, 97, 720, 720, 615, 617, 720, 97, 97, - 97, 97, 97, 97, 97, 720, 720, 97, 97, 720, - 720, 720, 97, 720, 97, 720, 620, 720, 97, 720, - 97, 720, 97, 97, 97, 622, 97, 720, 720, 720, - 97, 97, 97, 97, 97, 720, 720, 720, 623, 97, - 720, 720, 720, 97, 720, 97, 720, 97, 598, 598, + 97, 97, 708, 708, 97, 97, 708, 708, 708, 97, + 708, 97, 708, 97, 708, 97, 708, 606, 708, 97, + 97, 97, 607, 97, 97, 97, 708, 708, 97, 708, + 708, 608, 610, 708, 97, 97, 97, 97, 97, 97, + 97, 708, 708, 97, 97, 708, 708, 708, 97, 708, + 97, 708, 613, 708, 97, 708, 97, 708, 97, 97, + 97, 615, 97, 708, 708, 708, 97, 97, 97, 97, + 97, 708, 708, 708, 616, 97, 708, 708, 708, 97, + 708, 97, 708, 97, 592, 592, 592, 708, 97, 708, + 708, 708, 708, 97, 97, 708, 623, 623, 623, 623, - 598, 720, 97, 720, 720, 720, 720, 97, 97, 720, - 630, 630, 630, 630, 630, 630, 630, 97, 97, 97, - 634, 97, 97, 97, 97, 720, 97, 97, 720, 720, - 633, 720, 720, 97, 97, 97, 97, 97, 97, 97, - 97, 720, 97, 97, 720, 720, 720, 720, 720, 97, - 97, 97, 97, 97, 97, 97, 720, 635, 97, 97, - 720, 97, 720, 720, 720, 97, 720, 97, 636, 97, - 720, 97, 97, 97, 97, 97, 720, 720, 97, 637, - 97, 720, 97, 720, 97, 720, 97, 720, 97, 97, - 97, 97, 97, 720, 720, 720, 720, 97, 720, 97, + 623, 623, 623, 97, 97, 626, 97, 97, 97, 97, + 97, 708, 97, 97, 708, 708, 708, 708, 708, 97, + 97, 97, 97, 97, 97, 97, 708, 708, 97, 97, + 708, 708, 708, 97, 708, 97, 708, 97, 708, 97, + 708, 97, 627, 97, 97, 97, 628, 97, 708, 97, + 708, 97, 97, 97, 708, 97, 629, 97, 708, 97, + 97, 97, 708, 97, 708, 97, 708, 97, 97, 97, + 708, 97, 708, 97, 708, 97, 97, 633, 708, 97, + 708, 97, 708, 97, 97, 97, 634, 97, 708, 97, + 708, 97, 97, 636, 708, 97, 639, 97, 708, 97, - 97, 641, 720, 97, 720, 720, 97, 720, 97, 720, - 97, 720, 97, 642, 97, 720, 97, 97, 644, 97, - 97, 720, 720, 97, 647, 97, 720, 97, 720, 97, - 649, 97, 720, 97, 97, 97, 97, 97, 720, 720, - 720, 650, 97, 720, 97, 720, 97, 720, 97, 720, - 720, 97, 97, 97, 630, 630, 630, 630, 630, 630, - 630, 97, 97, 659, 97, 97, 97, 97, 97, 720, - 97, 97, 720, 720, 720, 720, 720, 97, 97, 97, - 660, 97, 97, 97, 720, 720, 97, 97, 720, 720, - 720, 720, 656, 97, 97, 97, 720, 97, 720, 720, + 97, 97, 708, 97, 641, 97, 708, 97, 97, 97, + 708, 97, 642, 708, 708, 97, 97, 97, 708, 97, + 708, 708, 97, 97, 97, 623, 623, 623, 623, 623, + 623, 623, 97, 97, 97, 97, 97, 97, 97, 708, + 708, 97, 97, 708, 708, 708, 97, 708, 97, 708, + 651, 708, 97, 708, 708, 708, 97, 97, 97, 97, + 97, 708, 708, 648, 652, 97, 708, 97, 708, 97, + 708, 97, 708, 97, 708, 97, 656, 97, 97, 657, + 708, 97, 659, 97, 708, 97, 97, 97, 708, 97, + 708, 708, 708, 97, 97, 97, 97, 97, 664, 97, - 97, 661, 97, 720, 97, 720, 97, 720, 97, 720, - 97, 665, 666, 97, 97, 97, 720, 720, 97, 97, - 720, 97, 668, 673, 720, 97, 720, 97, 97, 97, - 97, 97, 97, 97, 97, 97, 671, 97, 97, 720, - 97, 720, 674, 720, 720, 720, 720, 720, 97, 720, - 97, 720, 97, 657, 657, 657, 720, 97, 720, 720, - 720, 720, 97, 720, 720, 630, 630, 630, 630, 630, - 630, 630, 97, 97, 97, 720, 97, 720, 720, 720, - 681, 97, 720, 97, 97, 97, 720, 97, 720, 720, - 97, 682, 97, 720, 97, 720, 97, 720, 97, 720, + 708, 662, 97, 665, 708, 708, 97, 708, 97, 97, + 97, 97, 708, 97, 708, 97, 708, 708, 97, 649, + 649, 649, 708, 708, 708, 708, 708, 708, 97, 97, + 708, 623, 623, 623, 623, 623, 623, 623, 97, 97, + 97, 97, 97, 97, 97, 97, 672, 97, 97, 708, + 708, 708, 673, 708, 97, 97, 97, 97, 97, 97, + 97, 97, 708, 97, 97, 708, 708, 708, 708, 708, + 97, 97, 97, 97, 97, 97, 97, 708, 677, 97, + 97, 708, 97, 708, 680, 708, 97, 708, 97, 682, + 97, 708, 97, 97, 97, 97, 97, 708, 708, 708, - 97, 97, 97, 97, 97, 720, 720, 683, 720, 97, - 720, 97, 97, 97, 720, 97, 720, 720, 720, 720, - 97, 720, 97, 97, 97, 720, 97, 720, 720, 97, - 687, 97, 720, 97, 720, 97, 720, 97, 720, 97, - 97, 97, 97, 97, 720, 720, 690, 692, 97, 720, - 97, 720, 97, 97, 97, 699, 97, 720, 720, 97, - 720, 720, 720, 97, 97, 97, 97, 97, 97, 700, - 97, 720, 97, 720, 97, 97, 97, 97, 97, 720, - 97, 720, 720, 97, 720, 720, 720, 97, 720, 97, - 97, 97, 97, 720, 97, 97, 97, 720, 705, 97, + 708, 97, 708, 97, 97, 97, 708, 97, 708, 689, + 97, 708, 97, 708, 97, 708, 97, 708, 97, 708, + 97, 708, 97, 97, 97, 97, 708, 708, 97, 97, + 708, 694, 708, 691, 708, 97, 708, 97, 97, 97, + 97, 708, 97, 708, 97, 708, 708, 97, 687, 687, + 687, 708, 708, 708, 708, 708, 708, 97, 708, 708, + 623, 623, 623, 623, 623, 623, 623, 97, 97, 97, + 698, 97, 708, 708, 97, 708, 97, 708, 97, 708, + 97, 708, 97, 708, 97, 97, 97, 97, 97, 708, + 702, 97, 708, 97, 708, 705, 708, 97, 708, 97, - 702, 720, 720, 720, 720, 97, 720, 97, 720, 97, - 697, 697, 697, 720, 97, 720, 720, 720, 720, 97, - 720, 720, 630, 630, 630, 630, 630, 630, 630, 97, - 97, 97, 720, 97, 720, 720, 97, 720, 97, 720, - 97, 709, 97, 710, 97, 720, 97, 97, 97, 97, - 97, 720, 720, 720, 720, 97, 720, 97, 97, 97, - 720, 97, 720, 714, 97, 720, 97, 720, 97, 720, - 97, 720, 97, 720, 717, 97, 97, 97, 97, 720, - 720, 97, 720, 97, 720, 97, 720, 97, 720, 97, - 720, 97, 720, 97, 97, 97, 720, 720, 720, 720, - - 97, 54, 54, 54, 54, 54, 54, 54, 54, 54, - 54, 54, 54, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 74, + 708, 97, 97, 97, 97, 97, 708, 708, 708, 708, + 97, 708, 97, 708, 97, 708, 97, 708, 708, 708, + 708, 97, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, 65, 65, + 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 83, 83, 83, 720, 83, 83, 83, - 83, 83, 83, 83, 83, 90, 90, 720, 720, 90, - 720, 90, 156, 720, 156, 159, 159, 720, 159, 159, + 74, 74, 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 83, 83, 83, 708, 83, 83, - 160, 160, 720, 160, 160, 160, 720, 160, 160, 160, - 160, 160, 163, 163, 163, 720, 163, 163, 163, 163, - 163, 163, 163, 163, 165, 165, 165, 165, 165, 165, - 165, 165, 720, 165, 165, 167, 720, 720, 167, 167, - 167, 167, 167, 167, 167, 167, 168, 720, 720, 168, - 168, 168, 168, 168, 168, 168, 168, 170, 720, 720, - 170, 720, 170, 170, 170, 170, 170, 170, 174, 174, - 720, 174, 174, 175, 175, 720, 175, 175, 103, 103, - 720, 103, 103, 15, 720, 720, 720, 720, 720, 720, - 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, + 83, 83, 83, 83, 83, 83, 90, 90, 708, 708, + 90, 708, 90, 156, 708, 156, 159, 159, 708, 159, + 159, 160, 160, 708, 160, 160, 160, 708, 160, 160, + 160, 160, 160, 163, 163, 163, 708, 163, 163, 163, + 163, 163, 163, 163, 163, 165, 165, 165, 165, 165, + 165, 165, 165, 708, 165, 165, 167, 708, 708, 167, + 167, 167, 167, 167, 167, 167, 167, 168, 708, 708, + 168, 168, 168, 168, 168, 168, 168, 168, 170, 708, + 708, 170, 708, 170, 170, 170, 170, 170, 170, 174, + 174, 708, 174, 174, 175, 175, 708, 175, 175, 103, - 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, - 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, - 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, - 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, - 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, - 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, - 720, 720 + 103, 708, 103, 103, 15, 708, 708, 708, 708, 708, + 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, + 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, + 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, + 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, + 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, + 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, + 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, + 708, 708, 708 } ; -static yyconst short int yy_chk[4563] = +static yyconst short int yy_chk[4484] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -1282,83 +1267,83 @@ static yyconst short int yy_chk[4563] = 22, 22, 24, 24, 24, 24, 24, 24, 28, 28, 28, 28, 28, 28, 28, 34, 253, 253, 34, 77, 77, 77, 78, 78, 78, 34, 87, 34, 9, 34, - 9, 82, 82, 82, 34, 158, 480, 158, 10, 716, + 9, 82, 82, 82, 34, 158, 476, 158, 10, 704, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, - 11, 11, 11, 11, 13, 480, 13, 87, 38, 79, - 326, 11, 11, 11, 11, 14, 326, 14, 38, 11, + 11, 11, 11, 11, 13, 476, 13, 87, 38, 79, + 325, 11, 11, 11, 11, 14, 325, 14, 38, 11, - 38, 32, 38, 79, 32, 325, 712, 38, 32, 325, - 250, 32, 32, 32, 32, 32, 41, 250, 708, 33, - 32, 11, 11, 11, 32, 33, 41, 328, 41, 33, - 41, 33, 33, 33, 79, 41, 706, 328, 33, 92, + 38, 32, 38, 79, 32, 324, 700, 38, 32, 324, + 250, 32, 32, 32, 32, 32, 41, 250, 697, 33, + 32, 11, 11, 11, 32, 33, 41, 327, 41, 33, + 41, 33, 33, 33, 79, 41, 695, 327, 33, 92, 92, 92, 92, 92, 92, 92, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 41, 395, 35, 171, 171, 171, 395, 12, - 12, 12, 12, 704, 35, 35, 35, 12, 35, 169, - 169, 327, 251, 35, 42, 42, 35, 327, 42, 251, - 169, 36, 36, 703, 42, 48, 42, 456, 42, 12, + 12, 12, 41, 393, 35, 171, 171, 171, 393, 12, + 12, 12, 12, 693, 35, 35, 35, 12, 35, 169, + 169, 326, 251, 35, 42, 42, 35, 326, 42, 251, + 169, 36, 36, 692, 42, 48, 42, 453, 42, 12, 12, 12, 36, 42, 36, 48, 36, 48, 36, 48, - 456, 36, 392, 42, 48, 701, 516, 39, 39, 392, - 39, 393, 394, 516, 12, 12, 12, 21, 39, 39, - 39, 48, 39, 394, 457, 39, 393, 39, 457, 559, - 458, 21, 458, 559, 21, 21, 21, 21, 21, 21, + 453, 36, 390, 42, 48, 690, 512, 39, 39, 390, + 39, 391, 392, 512, 12, 12, 12, 21, 39, 39, + 39, 48, 39, 392, 454, 39, 391, 39, 454, 554, + 455, 21, 455, 554, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 562, 698, 21, 21, 21, 21, 21, 21, 21, 21, + 557, 688, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 31, 514, 562, 31, 31, + 21, 21, 21, 21, 21, 31, 510, 557, 31, 31, - 31, 31, 31, 31, 31, 515, 695, 514, 515, 31, + 31, 31, 31, 31, 31, 511, 685, 510, 511, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 629, 629, 694, 31, 31, + 31, 31, 31, 31, 31, 622, 622, 684, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 37, 655, 513, 655, 691, 40, 40, 560, 560, 560, - 37, 561, 37, 40, 37, 597, 40, 513, 40, 37, - 40, 689, 597, 685, 680, 40, 561, 43, 43, 599, - 43, 678, 37, 599, 677, 676, 44, 675, 43, 44, + 37, 647, 509, 647, 681, 40, 40, 555, 555, 555, + 37, 556, 37, 40, 37, 591, 40, 509, 40, 37, + 40, 679, 591, 675, 671, 40, 556, 43, 43, 593, + 43, 669, 37, 593, 668, 667, 44, 666, 43, 44, - 43, 672, 43, 37, 43, 560, 44, 43, 44, 45, - 44, 670, 45, 669, 664, 44, 45, 663, 46, 45, - 662, 45, 658, 45, 46, 46, 654, 45, 45, 653, - 652, 43, 45, 47, 651, 46, 648, 46, 646, 46, - 645, 46, 643, 47, 46, 47, 49, 47, 46, 640, - 639, 47, 47, 49, 638, 632, 49, 46, 49, 628, - 49, 631, 631, 631, 627, 49, 50, 50, 50, 50, - 50, 50, 50, 47, 89, 89, 89, 50, 626, 624, - 89, 97, 621, 619, 618, 616, 89, 89, 612, 611, - 610, 97, 50, 97, 600, 97, 596, 50, 74, 631, + 43, 663, 43, 37, 43, 555, 44, 43, 44, 45, + 44, 661, 45, 660, 655, 44, 45, 654, 46, 45, + 653, 45, 650, 45, 46, 46, 646, 45, 45, 645, + 644, 43, 45, 47, 643, 46, 640, 46, 638, 46, + 637, 46, 635, 47, 46, 47, 49, 47, 46, 632, + 631, 47, 47, 49, 630, 625, 49, 46, 49, 621, + 49, 624, 624, 624, 620, 49, 50, 50, 50, 50, + 50, 50, 50, 47, 89, 89, 89, 50, 619, 617, + 89, 97, 614, 612, 611, 609, 89, 89, 605, 604, + 603, 97, 50, 97, 594, 97, 590, 50, 74, 624, - 97, 595, 74, 74, 74, 74, 74, 74, 74, 74, + 97, 589, 74, 74, 74, 74, 74, 74, 74, 74, 74, 95, 95, 95, 95, 95, 95, 95, 74, 74, 74, 74, 98, 99, 178, 178, 178, 178, 178, 178, - 178, 594, 98, 99, 98, 99, 98, 99, 593, 98, - 591, 98, 99, 100, 101, 587, 585, 584, 74, 74, - 74, 582, 577, 100, 101, 100, 101, 100, 101, 102, - 576, 575, 100, 101, 558, 557, 100, 556, 555, 102, - 553, 102, 551, 102, 74, 75, 548, 102, 102, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 546, 104, - 544, 542, 105, 535, 104, 75, 75, 75, 75, 104, + 178, 588, 98, 99, 98, 99, 98, 99, 587, 98, + 585, 98, 99, 100, 101, 581, 579, 578, 74, 74, + 74, 576, 571, 100, 101, 100, 101, 100, 101, 102, + 570, 569, 100, 101, 553, 552, 100, 551, 550, 102, + 548, 102, 546, 102, 74, 75, 543, 102, 102, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 541, 104, + 539, 537, 105, 530, 104, 75, 75, 75, 75, 104, - 534, 104, 105, 104, 105, 106, 105, 533, 104, 532, - 105, 105, 75, 520, 512, 106, 511, 106, 107, 106, - 510, 509, 506, 504, 106, 75, 75, 75, 107, 108, - 107, 107, 107, 679, 679, 679, 501, 107, 496, 108, - 494, 108, 482, 108, 109, 109, 481, 463, 108, 459, - 455, 75, 110, 110, 454, 109, 453, 109, 109, 109, - 452, 451, 448, 110, 109, 110, 111, 110, 446, 112, - 441, 679, 110, 112, 436, 433, 111, 111, 111, 112, - 111, 112, 113, 112, 421, 111, 420, 419, 112, 400, - 390, 389, 113, 388, 113, 386, 113, 114, 114, 114, + 529, 104, 105, 104, 105, 106, 105, 528, 104, 527, + 105, 105, 75, 515, 508, 106, 507, 106, 107, 106, + 506, 505, 502, 500, 106, 75, 75, 75, 107, 108, + 107, 107, 107, 670, 670, 670, 497, 107, 492, 108, + 490, 108, 478, 108, 109, 109, 477, 459, 108, 456, + 452, 75, 110, 110, 451, 109, 450, 109, 109, 109, + 449, 448, 445, 110, 109, 110, 111, 110, 443, 112, + 438, 670, 110, 112, 433, 430, 111, 111, 111, 112, + 111, 112, 113, 112, 418, 111, 417, 416, 112, 397, + 388, 387, 113, 386, 113, 384, 113, 114, 114, 114, - 116, 113, 382, 115, 115, 380, 375, 114, 370, 114, + 116, 113, 380, 115, 115, 378, 373, 114, 368, 114, 116, 114, 116, 115, 116, 115, 114, 115, 117, 116, - 366, 115, 115, 355, 354, 120, 353, 334, 117, 322, - 117, 117, 117, 120, 321, 320, 121, 117, 314, 121, - 303, 298, 294, 120, 122, 120, 121, 120, 121, 283, - 121, 282, 120, 255, 122, 121, 122, 254, 122, 123, + 364, 115, 115, 353, 352, 120, 351, 332, 117, 321, + 117, 117, 117, 120, 320, 319, 121, 117, 313, 121, + 302, 297, 293, 120, 122, 120, 121, 120, 121, 282, + 121, 281, 120, 255, 122, 121, 122, 254, 122, 123, 123, 249, 245, 122, 244, 243, 239, 227, 221, 123, 124, 123, 217, 123, 206, 205, 123, 123, 123, 177, 124, 125, 124, 124, 124, 173, 168, 126, 166, 124, @@ -1388,407 +1373,397 @@ static yyconst short int yy_chk[4563] = 153, 0, 153, 155, 155, 155, 153, 153, 154, 154, 154, 154, 154, 154, 154, 155, 155, 155, 155, 155, - 155, 155, 0, 0, 181, 182, 0, 181, 0, 0, - 0, 0, 0, 0, 181, 182, 181, 182, 181, 182, - 183, 155, 181, 181, 182, 0, 154, 0, 184, 0, - 183, 185, 183, 0, 183, 0, 0, 0, 184, 183, - 184, 185, 184, 185, 185, 185, 186, 184, 0, 187, - 185, 0, 188, 186, 0, 0, 186, 0, 186, 187, - 186, 187, 188, 187, 188, 186, 188, 189, 187, 188, - 0, 188, 0, 190, 0, 0, 0, 189, 0, 189, + 155, 155, 0, 181, 182, 0, 181, 0, 0, 0, + 0, 0, 0, 181, 182, 181, 182, 181, 182, 183, + 184, 155, 181, 182, 0, 0, 154, 0, 0, 183, + 184, 183, 184, 183, 184, 185, 0, 0, 183, 184, + 0, 0, 0, 186, 0, 185, 187, 185, 185, 185, + 186, 0, 0, 186, 185, 186, 187, 186, 187, 188, + 187, 0, 186, 0, 0, 187, 0, 189, 0, 188, + 0, 188, 0, 188, 0, 190, 188, 189, 188, 189, - 0, 189, 0, 190, 191, 190, 189, 190, 0, 190, - 192, 191, 190, 0, 191, 0, 191, 0, 191, 0, - 192, 193, 192, 191, 192, 0, 0, 192, 0, 192, - 0, 193, 194, 193, 0, 193, 0, 0, 0, 0, - 193, 0, 194, 0, 194, 0, 194, 195, 195, 194, - 194, 194, 0, 0, 196, 195, 0, 196, 195, 0, - 195, 0, 195, 0, 196, 197, 196, 195, 196, 0, - 0, 198, 0, 196, 0, 197, 0, 197, 197, 197, - 0, 198, 199, 198, 197, 198, 0, 0, 200, 0, - 198, 200, 199, 199, 199, 0, 199, 0, 200, 201, + 0, 189, 0, 191, 0, 190, 189, 190, 0, 190, + 191, 190, 0, 191, 190, 191, 192, 191, 0, 0, + 0, 0, 191, 0, 193, 0, 192, 194, 192, 0, + 192, 0, 0, 192, 193, 192, 193, 194, 193, 194, + 0, 194, 0, 193, 194, 194, 194, 195, 195, 196, + 0, 0, 196, 0, 0, 195, 0, 0, 195, 196, + 195, 196, 195, 196, 197, 0, 0, 195, 196, 0, + 198, 0, 0, 0, 197, 0, 197, 197, 197, 0, + 198, 199, 198, 197, 198, 0, 0, 200, 0, 198, + 200, 199, 199, 199, 0, 199, 0, 200, 201, 200, - 200, 199, 200, 0, 0, 202, 0, 200, 202, 201, - 0, 201, 201, 201, 0, 202, 203, 202, 201, 202, - 0, 0, 0, 0, 202, 0, 203, 204, 203, 0, - 203, 0, 0, 203, 0, 203, 0, 204, 204, 204, - 207, 204, 0, 0, 0, 0, 204, 0, 208, 0, - 207, 209, 207, 0, 207, 0, 0, 207, 208, 207, - 208, 209, 208, 209, 209, 209, 210, 208, 0, 211, - 209, 0, 212, 0, 0, 212, 210, 0, 210, 211, - 210, 211, 212, 211, 212, 210, 212, 211, 211, 213, - 214, 212, 0, 215, 0, 0, 213, 0, 0, 0, + 199, 200, 0, 0, 202, 0, 200, 202, 201, 0, + 201, 201, 201, 0, 202, 203, 202, 201, 202, 0, + 0, 0, 0, 202, 0, 203, 204, 203, 0, 203, + 0, 0, 203, 0, 203, 0, 204, 204, 204, 207, + 204, 0, 0, 0, 0, 204, 0, 208, 0, 207, + 209, 207, 0, 207, 0, 0, 207, 208, 207, 208, + 209, 208, 209, 209, 209, 210, 208, 0, 211, 209, + 0, 212, 0, 0, 212, 210, 0, 210, 211, 210, + 211, 212, 211, 212, 210, 212, 211, 211, 213, 214, + 212, 0, 215, 0, 0, 213, 0, 0, 0, 214, - 214, 0, 214, 215, 214, 215, 213, 215, 213, 214, - 213, 216, 215, 0, 218, 213, 0, 218, 0, 0, - 0, 216, 0, 216, 218, 216, 218, 0, 218, 219, - 216, 0, 219, 218, 0, 220, 0, 0, 0, 219, - 0, 219, 220, 219, 0, 220, 222, 220, 219, 220, - 0, 0, 0, 0, 220, 0, 222, 223, 222, 0, - 222, 0, 0, 224, 222, 222, 0, 223, 0, 223, - 0, 223, 0, 224, 225, 224, 223, 224, 0, 0, - 224, 0, 224, 0, 225, 226, 225, 0, 225, 0, - 0, 225, 0, 225, 0, 226, 228, 226, 0, 226, + 0, 214, 215, 214, 215, 213, 215, 213, 214, 213, + 216, 215, 0, 218, 213, 0, 218, 0, 0, 0, + 216, 0, 216, 218, 216, 218, 0, 218, 219, 216, + 0, 219, 218, 0, 220, 0, 0, 0, 219, 0, + 219, 220, 219, 0, 220, 222, 220, 219, 220, 0, + 0, 0, 0, 220, 0, 222, 223, 222, 0, 222, + 0, 0, 224, 222, 222, 0, 223, 0, 223, 0, + 223, 0, 224, 225, 224, 223, 224, 0, 0, 224, + 0, 224, 0, 225, 226, 225, 0, 225, 0, 0, + 225, 0, 225, 0, 226, 228, 226, 0, 226, 0, - 0, 229, 229, 0, 226, 226, 228, 0, 228, 0, - 228, 0, 229, 230, 229, 228, 229, 0, 0, 231, - 0, 229, 0, 230, 0, 230, 0, 230, 0, 231, - 0, 231, 230, 231, 232, 233, 0, 232, 231, 0, - 0, 0, 233, 0, 232, 233, 232, 233, 232, 233, - 234, 0, 0, 232, 233, 0, 0, 0, 0, 0, - 234, 235, 234, 0, 234, 0, 0, 236, 234, 234, - 0, 235, 0, 235, 0, 235, 0, 236, 235, 236, - 235, 236, 237, 0, 236, 237, 236, 0, 238, 0, - 0, 238, 237, 0, 237, 0, 237, 0, 238, 240, + 229, 229, 0, 226, 226, 228, 0, 228, 0, 228, + 0, 229, 230, 229, 228, 229, 0, 0, 231, 0, + 229, 0, 230, 0, 230, 0, 230, 0, 231, 0, + 231, 230, 231, 232, 233, 0, 232, 231, 0, 0, + 0, 233, 0, 232, 233, 232, 233, 232, 233, 234, + 0, 0, 232, 233, 0, 0, 0, 0, 0, 234, + 235, 234, 0, 234, 0, 0, 236, 234, 234, 0, + 235, 0, 235, 0, 235, 0, 236, 235, 236, 235, + 236, 237, 0, 236, 237, 236, 0, 238, 0, 0, + 238, 237, 0, 237, 0, 237, 0, 238, 240, 238, - 238, 237, 238, 0, 0, 0, 0, 238, 0, 240, - 241, 240, 240, 240, 240, 242, 0, 0, 240, 240, - 241, 242, 241, 0, 241, 0, 0, 0, 241, 241, - 0, 242, 246, 242, 0, 242, 0, 0, 246, 0, - 242, 0, 246, 0, 246, 0, 246, 248, 248, 248, - 0, 246, 0, 0, 0, 0, 258, 259, 0, 248, - 248, 248, 248, 248, 248, 248, 258, 259, 258, 259, - 258, 259, 260, 259, 0, 258, 259, 0, 261, 260, - 0, 0, 260, 0, 260, 0, 260, 0, 261, 261, - 261, 260, 261, 262, 263, 0, 0, 261, 0, 0, + 237, 238, 0, 0, 0, 0, 238, 0, 240, 241, + 240, 240, 240, 240, 242, 0, 0, 240, 240, 241, + 242, 241, 0, 241, 0, 0, 0, 241, 241, 0, + 242, 246, 242, 0, 242, 0, 0, 246, 0, 242, + 0, 246, 0, 246, 0, 246, 248, 248, 248, 0, + 246, 0, 0, 0, 0, 258, 0, 0, 248, 248, + 248, 248, 248, 248, 248, 258, 259, 258, 0, 258, + 0, 0, 260, 259, 258, 0, 259, 0, 259, 0, + 259, 0, 260, 260, 260, 259, 260, 261, 262, 0, + 0, 260, 0, 0, 0, 0, 0, 261, 262, 261, - 0, 0, 0, 262, 263, 262, 263, 262, 263, 265, - 265, 264, 262, 263, 264, 0, 0, 0, 0, 0, - 265, 264, 265, 264, 265, 264, 266, 266, 0, 265, - 264, 0, 267, 0, 0, 0, 266, 0, 266, 263, - 266, 0, 267, 268, 267, 266, 267, 0, 0, 267, - 0, 267, 0, 268, 269, 268, 268, 268, 0, 0, - 0, 0, 268, 0, 269, 0, 269, 0, 269, 271, - 269, 270, 270, 269, 0, 272, 0, 0, 0, 271, - 0, 271, 270, 271, 270, 272, 270, 272, 271, 272, - 273, 270, 273, 274, 272, 274, 275, 0, 0, 275, + 262, 261, 262, 264, 264, 263, 261, 262, 263, 0, + 0, 0, 0, 0, 264, 263, 264, 263, 264, 263, + 265, 265, 0, 264, 263, 0, 266, 0, 0, 0, + 265, 0, 265, 262, 265, 0, 266, 267, 266, 265, + 266, 0, 0, 266, 0, 266, 0, 267, 268, 267, + 267, 267, 0, 0, 0, 0, 267, 0, 268, 0, + 268, 0, 268, 270, 268, 269, 269, 268, 0, 271, + 0, 0, 0, 270, 0, 270, 269, 270, 269, 271, + 269, 271, 270, 271, 272, 269, 272, 273, 271, 273, + 274, 0, 0, 274, 272, 0, 272, 273, 272, 273, - 273, 0, 273, 274, 273, 274, 275, 274, 275, 273, - 275, 276, 274, 0, 0, 275, 0, 277, 0, 0, - 0, 276, 0, 276, 277, 276, 0, 277, 278, 277, - 276, 277, 0, 0, 0, 0, 277, 0, 278, 279, - 278, 0, 278, 0, 278, 0, 0, 278, 0, 279, - 0, 279, 0, 279, 280, 279, 0, 280, 279, 0, - 281, 0, 0, 0, 280, 0, 280, 0, 280, 0, - 281, 284, 281, 280, 281, 0, 0, 285, 0, 281, - 0, 284, 0, 284, 0, 284, 0, 285, 0, 285, - 284, 285, 286, 287, 0, 285, 285, 0, 0, 286, + 274, 273, 274, 272, 274, 275, 273, 0, 0, 274, + 0, 276, 0, 0, 0, 275, 0, 275, 276, 275, + 0, 276, 277, 276, 275, 276, 0, 0, 0, 0, + 276, 0, 277, 278, 277, 0, 277, 0, 277, 0, + 0, 277, 0, 278, 0, 278, 0, 278, 279, 278, + 0, 279, 278, 0, 280, 0, 0, 0, 279, 0, + 279, 0, 279, 0, 280, 283, 280, 279, 280, 0, + 0, 284, 0, 280, 0, 283, 0, 283, 0, 283, + 0, 284, 0, 284, 283, 284, 285, 286, 0, 284, + 284, 0, 0, 285, 0, 0, 285, 286, 285, 286, - 0, 0, 286, 287, 286, 287, 286, 287, 288, 287, - 0, 286, 287, 289, 289, 0, 284, 0, 288, 0, - 288, 0, 288, 291, 289, 0, 289, 288, 289, 290, - 289, 0, 291, 289, 290, 0, 0, 0, 0, 290, - 292, 290, 291, 290, 291, 290, 291, 0, 290, 0, - 292, 291, 292, 293, 292, 0, 0, 292, 0, 292, - 0, 295, 295, 293, 296, 293, 0, 293, 0, 0, - 0, 295, 293, 295, 296, 295, 296, 297, 296, 0, - 295, 0, 296, 296, 0, 299, 300, 297, 299, 297, - 297, 297, 0, 0, 0, 299, 297, 299, 0, 299, + 285, 286, 287, 286, 0, 285, 286, 288, 288, 0, + 283, 0, 287, 0, 287, 0, 287, 290, 288, 0, + 288, 287, 288, 289, 288, 0, 290, 288, 289, 0, + 0, 0, 0, 289, 291, 289, 290, 289, 290, 289, + 290, 0, 289, 0, 291, 290, 291, 292, 291, 0, + 0, 291, 0, 291, 0, 294, 294, 292, 295, 292, + 0, 292, 0, 0, 0, 294, 292, 294, 295, 294, + 295, 296, 295, 0, 294, 0, 295, 295, 0, 298, + 299, 296, 298, 296, 296, 296, 0, 0, 0, 298, + 296, 298, 0, 298, 300, 299, 0, 300, 298, 0, - 301, 300, 0, 301, 299, 0, 0, 0, 0, 0, - 301, 300, 301, 300, 301, 300, 302, 302, 304, 301, - 300, 0, 0, 0, 0, 0, 0, 302, 304, 302, - 304, 302, 304, 305, 0, 0, 302, 304, 0, 0, - 0, 0, 0, 305, 0, 305, 306, 305, 0, 306, - 0, 305, 305, 0, 307, 0, 306, 308, 306, 0, - 306, 0, 0, 0, 307, 306, 307, 308, 307, 308, - 0, 308, 310, 307, 309, 309, 308, 0, 311, 0, - 0, 313, 310, 0, 310, 309, 310, 309, 311, 309, - 311, 310, 311, 312, 309, 0, 313, 311, 0, 315, + 0, 0, 0, 0, 300, 299, 300, 299, 300, 299, + 301, 301, 303, 300, 299, 0, 0, 0, 0, 0, + 0, 301, 303, 301, 303, 301, 303, 304, 0, 0, + 301, 303, 0, 0, 0, 0, 0, 304, 0, 304, + 305, 304, 0, 305, 0, 304, 304, 0, 306, 0, + 305, 307, 305, 0, 305, 0, 0, 0, 306, 305, + 306, 307, 306, 307, 0, 307, 309, 306, 308, 308, + 307, 0, 310, 0, 0, 312, 309, 0, 309, 308, + 309, 308, 310, 308, 310, 309, 310, 311, 308, 0, + 312, 310, 0, 314, 0, 0, 0, 311, 0, 311, - 0, 0, 0, 312, 0, 312, 313, 312, 313, 315, - 313, 315, 312, 315, 316, 313, 0, 310, 315, 0, - 317, 0, 0, 317, 316, 0, 316, 0, 316, 0, - 317, 318, 317, 316, 317, 0, 0, 319, 0, 317, - 0, 318, 0, 318, 0, 318, 0, 319, 0, 319, - 318, 319, 323, 0, 319, 0, 319, 0, 0, 0, - 0, 0, 323, 0, 323, 0, 323, 318, 0, 329, - 0, 323, 324, 324, 324, 324, 324, 324, 324, 329, - 0, 329, 0, 329, 330, 330, 0, 329, 329, 0, - 0, 0, 0, 331, 331, 330, 0, 330, 0, 330, + 312, 311, 312, 314, 312, 314, 311, 314, 315, 312, + 0, 309, 314, 0, 316, 0, 0, 316, 315, 0, + 315, 0, 315, 0, 316, 317, 316, 315, 316, 0, + 0, 318, 0, 316, 0, 317, 0, 317, 0, 317, + 0, 318, 0, 318, 317, 318, 322, 0, 318, 0, + 318, 0, 0, 0, 0, 0, 322, 0, 322, 0, + 322, 317, 0, 328, 0, 322, 323, 323, 323, 323, + 323, 323, 323, 328, 0, 328, 0, 328, 329, 329, + 0, 328, 328, 330, 330, 0, 0, 0, 329, 0, + 329, 0, 329, 0, 330, 331, 330, 329, 330, 0, - 332, 332, 0, 331, 330, 331, 0, 331, 0, 333, - 324, 332, 331, 332, 0, 332, 335, 335, 0, 333, - 332, 333, 0, 333, 0, 336, 336, 335, 333, 335, - 0, 335, 0, 0, 0, 336, 335, 336, 337, 336, - 0, 337, 0, 0, 336, 0, 338, 0, 337, 339, - 337, 0, 337, 0, 0, 0, 338, 337, 338, 339, - 338, 339, 0, 339, 341, 338, 340, 340, 339, 0, - 342, 341, 0, 0, 341, 0, 341, 340, 341, 340, - 342, 340, 342, 341, 342, 343, 340, 0, 343, 342, - 0, 344, 343, 344, 0, 343, 0, 343, 0, 343, + 333, 333, 0, 330, 323, 331, 0, 331, 0, 331, + 0, 333, 0, 333, 331, 333, 334, 334, 0, 335, + 333, 0, 335, 0, 0, 0, 334, 336, 334, 335, + 334, 335, 0, 335, 0, 334, 0, 336, 335, 336, + 337, 336, 338, 338, 0, 0, 336, 0, 0, 0, + 337, 339, 337, 338, 337, 338, 0, 338, 339, 337, + 0, 339, 338, 339, 340, 339, 0, 0, 0, 0, + 339, 0, 341, 0, 340, 341, 340, 0, 340, 341, + 0, 0, 341, 340, 341, 342, 341, 342, 0, 0, + 0, 341, 0, 343, 0, 342, 343, 342, 0, 342, - 0, 344, 0, 344, 343, 344, 345, 346, 0, 345, - 344, 0, 0, 345, 0, 0, 345, 346, 345, 346, - 345, 346, 347, 346, 0, 345, 346, 0, 0, 0, - 0, 0, 347, 0, 347, 0, 347, 348, 348, 0, - 347, 347, 0, 349, 0, 0, 0, 348, 0, 348, - 0, 348, 0, 349, 350, 349, 348, 349, 0, 0, - 351, 349, 349, 0, 350, 0, 350, 0, 350, 0, - 351, 350, 351, 350, 351, 352, 356, 0, 0, 351, - 0, 0, 0, 356, 0, 352, 356, 352, 356, 352, - 356, 0, 0, 358, 352, 356, 357, 357, 0, 357, + 343, 344, 0, 343, 342, 343, 0, 343, 0, 345, + 0, 344, 343, 344, 0, 344, 0, 344, 0, 345, + 344, 345, 0, 345, 346, 346, 0, 345, 345, 0, + 347, 0, 0, 0, 346, 0, 346, 0, 346, 0, + 347, 348, 347, 346, 347, 0, 0, 349, 347, 347, + 0, 348, 0, 348, 0, 348, 0, 349, 348, 349, + 348, 349, 350, 354, 0, 0, 349, 0, 0, 0, + 354, 0, 350, 354, 350, 354, 350, 354, 0, 0, + 356, 350, 354, 355, 355, 0, 355, 0, 0, 0, + 356, 0, 356, 355, 356, 355, 0, 355, 356, 356, - 0, 0, 0, 358, 0, 358, 357, 358, 357, 0, - 357, 358, 358, 360, 359, 357, 359, 0, 0, 0, - 0, 0, 0, 360, 359, 360, 359, 360, 359, 361, - 0, 0, 360, 359, 0, 362, 0, 0, 362, 361, - 0, 361, 0, 361, 0, 362, 363, 362, 361, 362, - 364, 0, 0, 365, 362, 0, 363, 364, 363, 0, - 363, 0, 0, 363, 0, 363, 0, 364, 365, 364, - 0, 364, 0, 0, 367, 0, 364, 0, 365, 0, - 365, 0, 365, 0, 367, 368, 367, 365, 367, 0, - 0, 369, 367, 367, 0, 368, 0, 368, 0, 368, + 358, 357, 355, 357, 0, 0, 0, 0, 0, 0, + 358, 357, 358, 357, 358, 357, 359, 0, 0, 358, + 357, 0, 360, 0, 0, 360, 359, 0, 359, 0, + 359, 0, 360, 361, 360, 359, 360, 362, 0, 0, + 363, 360, 0, 361, 362, 361, 0, 361, 0, 0, + 361, 0, 361, 0, 362, 363, 362, 0, 362, 0, + 0, 365, 0, 362, 0, 363, 0, 363, 0, 363, + 0, 365, 366, 365, 363, 365, 0, 0, 367, 365, + 365, 0, 366, 0, 366, 0, 366, 0, 367, 369, + 367, 366, 367, 0, 0, 0, 0, 367, 0, 369, - 0, 369, 371, 369, 368, 369, 0, 0, 0, 0, - 369, 0, 371, 372, 371, 0, 371, 0, 371, 373, - 372, 371, 0, 372, 0, 372, 0, 372, 0, 373, - 374, 373, 372, 373, 0, 0, 0, 0, 373, 0, - 374, 0, 374, 376, 374, 0, 377, 0, 374, 374, - 376, 0, 0, 376, 378, 376, 377, 376, 377, 378, - 377, 0, 376, 0, 378, 377, 378, 379, 378, 0, - 0, 0, 0, 378, 0, 0, 0, 379, 381, 379, - 0, 379, 0, 0, 383, 381, 379, 0, 381, 379, - 381, 0, 381, 0, 383, 0, 383, 381, 383, 384, + 370, 369, 0, 369, 0, 369, 371, 370, 369, 0, + 370, 0, 370, 0, 370, 0, 371, 372, 371, 370, + 371, 0, 0, 0, 0, 371, 0, 372, 0, 372, + 374, 372, 0, 375, 0, 372, 372, 374, 0, 0, + 374, 376, 374, 375, 374, 375, 376, 375, 0, 374, + 0, 376, 375, 376, 377, 376, 0, 0, 0, 0, + 376, 0, 0, 0, 377, 379, 377, 0, 377, 0, + 0, 381, 379, 377, 0, 379, 377, 379, 0, 379, + 0, 381, 0, 381, 379, 381, 382, 383, 0, 382, + 381, 0, 0, 0, 0, 0, 382, 383, 382, 383, - 385, 0, 384, 383, 0, 0, 0, 0, 0, 384, - 385, 384, 385, 384, 385, 387, 385, 0, 384, 385, - 0, 396, 0, 0, 0, 387, 0, 387, 0, 387, - 0, 396, 0, 396, 387, 396, 397, 397, 398, 398, - 396, 0, 0, 0, 0, 0, 397, 399, 397, 398, - 397, 398, 0, 398, 0, 397, 0, 399, 398, 399, - 387, 399, 401, 0, 0, 399, 399, 0, 402, 0, - 0, 0, 401, 0, 401, 0, 401, 0, 402, 403, - 402, 401, 402, 0, 0, 404, 402, 402, 404, 403, - 0, 403, 0, 403, 0, 404, 405, 404, 403, 404, + 382, 383, 385, 383, 0, 382, 383, 0, 394, 0, + 0, 0, 385, 0, 385, 0, 385, 0, 394, 0, + 394, 385, 394, 395, 395, 0, 0, 394, 0, 0, + 396, 0, 0, 0, 395, 0, 395, 0, 395, 0, + 396, 398, 396, 395, 396, 0, 0, 385, 396, 396, + 0, 398, 399, 398, 0, 398, 0, 0, 0, 0, + 398, 0, 399, 400, 399, 0, 399, 0, 0, 401, + 399, 399, 401, 400, 0, 400, 0, 400, 0, 401, + 402, 401, 400, 401, 0, 0, 403, 402, 401, 0, + 402, 0, 402, 0, 402, 0, 403, 404, 403, 402, - 0, 0, 406, 405, 404, 0, 405, 0, 405, 0, - 405, 0, 406, 407, 406, 405, 406, 0, 0, 0, - 0, 406, 0, 407, 408, 407, 408, 407, 0, 0, - 409, 407, 407, 0, 408, 0, 408, 0, 408, 0, - 409, 0, 409, 408, 409, 0, 0, 410, 409, 409, - 410, 0, 0, 411, 0, 411, 0, 410, 0, 410, - 0, 410, 0, 411, 412, 411, 410, 411, 0, 413, - 413, 0, 411, 0, 412, 0, 412, 0, 412, 0, - 413, 414, 413, 412, 413, 0, 0, 415, 0, 413, - 0, 414, 0, 414, 415, 414, 0, 415, 416, 415, + 403, 0, 0, 0, 0, 403, 0, 404, 405, 404, + 405, 404, 0, 0, 406, 404, 404, 0, 405, 0, + 405, 0, 405, 0, 406, 0, 406, 405, 406, 0, + 0, 407, 406, 406, 407, 0, 0, 408, 0, 408, + 0, 407, 0, 407, 0, 407, 0, 408, 409, 408, + 407, 408, 0, 410, 410, 0, 408, 0, 409, 0, + 409, 0, 409, 0, 410, 411, 410, 409, 410, 0, + 0, 412, 0, 410, 0, 411, 0, 411, 412, 411, + 0, 412, 413, 412, 411, 412, 0, 0, 414, 0, + 412, 0, 413, 0, 413, 414, 413, 0, 414, 413, - 414, 415, 0, 0, 417, 0, 415, 0, 416, 0, - 416, 417, 416, 0, 417, 416, 417, 416, 417, 418, - 418, 422, 0, 417, 0, 422, 0, 0, 0, 0, - 418, 422, 418, 422, 418, 422, 423, 0, 0, 418, - 422, 0, 424, 423, 424, 0, 423, 0, 423, 0, - 423, 0, 424, 425, 424, 423, 424, 0, 0, 426, - 0, 424, 426, 425, 0, 425, 0, 425, 0, 426, - 425, 426, 425, 426, 427, 427, 0, 0, 426, 0, - 428, 428, 0, 0, 427, 0, 427, 0, 427, 0, - 428, 429, 428, 427, 428, 0, 0, 0, 0, 428, + 414, 413, 414, 415, 415, 419, 0, 414, 0, 419, + 0, 0, 0, 0, 415, 419, 415, 419, 415, 419, + 420, 0, 0, 415, 419, 0, 421, 420, 421, 0, + 420, 0, 420, 0, 420, 0, 421, 422, 421, 420, + 421, 0, 0, 423, 0, 421, 423, 422, 0, 422, + 0, 422, 0, 423, 422, 423, 422, 423, 424, 424, + 0, 0, 423, 0, 425, 425, 0, 0, 424, 0, + 424, 0, 424, 0, 425, 426, 425, 424, 425, 0, + 0, 0, 0, 425, 0, 426, 0, 426, 0, 426, + 427, 426, 0, 427, 426, 0, 428, 0, 0, 0, - 0, 429, 0, 429, 0, 429, 430, 429, 0, 430, - 429, 0, 431, 0, 0, 0, 430, 0, 430, 0, - 430, 0, 431, 432, 431, 430, 431, 0, 0, 431, - 432, 431, 0, 432, 434, 432, 0, 432, 0, 435, - 435, 0, 432, 0, 434, 0, 434, 0, 434, 0, - 435, 437, 435, 434, 435, 0, 0, 438, 0, 435, - 0, 437, 0, 437, 0, 437, 0, 438, 439, 438, - 437, 438, 0, 0, 0, 0, 438, 0, 439, 0, - 439, 440, 439, 0, 440, 0, 439, 439, 0, 442, - 0, 440, 0, 440, 0, 440, 0, 0, 0, 442, + 427, 0, 427, 0, 427, 0, 428, 429, 428, 427, + 428, 0, 0, 428, 429, 428, 0, 429, 431, 429, + 0, 429, 0, 432, 432, 0, 429, 0, 431, 0, + 431, 0, 431, 0, 432, 434, 432, 431, 432, 0, + 0, 435, 0, 432, 0, 434, 0, 434, 0, 434, + 0, 435, 436, 435, 434, 435, 0, 0, 0, 0, + 435, 0, 436, 0, 436, 437, 436, 0, 437, 0, + 436, 436, 0, 439, 0, 437, 0, 437, 0, 437, + 0, 0, 0, 439, 437, 439, 0, 439, 440, 440, + 0, 441, 439, 439, 442, 0, 0, 0, 440, 0, - 440, 442, 0, 442, 443, 443, 0, 444, 442, 442, - 445, 0, 0, 0, 443, 0, 443, 444, 443, 444, - 445, 444, 445, 443, 445, 447, 444, 447, 449, 445, - 0, 450, 0, 0, 0, 447, 0, 447, 449, 447, - 449, 450, 449, 450, 447, 450, 460, 449, 450, 461, - 450, 0, 0, 0, 0, 0, 460, 0, 460, 461, - 460, 461, 462, 461, 460, 460, 0, 461, 461, 462, - 464, 0, 462, 0, 462, 0, 462, 0, 0, 0, - 464, 462, 464, 465, 464, 0, 465, 0, 0, 464, - 0, 466, 0, 465, 467, 465, 0, 465, 0, 0, + 440, 441, 440, 441, 442, 441, 442, 440, 442, 444, + 441, 444, 446, 442, 0, 447, 0, 0, 0, 444, + 0, 444, 446, 444, 446, 447, 446, 447, 444, 447, + 457, 446, 447, 0, 447, 0, 0, 0, 0, 0, + 457, 0, 457, 458, 457, 0, 460, 0, 457, 457, + 458, 0, 0, 458, 0, 458, 460, 458, 460, 0, + 460, 461, 458, 0, 461, 460, 0, 462, 0, 0, + 0, 461, 0, 461, 0, 461, 0, 462, 463, 462, + 461, 462, 0, 0, 464, 0, 462, 0, 463, 0, + 463, 464, 463, 0, 464, 465, 464, 463, 464, 0, - 0, 466, 465, 466, 467, 466, 467, 468, 467, 0, - 466, 0, 0, 467, 468, 469, 0, 468, 470, 468, - 0, 468, 0, 0, 0, 469, 468, 469, 470, 469, - 470, 471, 470, 0, 469, 0, 0, 470, 471, 473, - 0, 471, 472, 471, 472, 471, 0, 0, 0, 473, - 471, 473, 472, 473, 472, 474, 472, 0, 473, 0, - 474, 472, 0, 475, 0, 474, 476, 474, 0, 474, - 0, 0, 0, 475, 474, 475, 476, 475, 476, 477, - 476, 475, 475, 0, 476, 476, 0, 478, 0, 477, - 479, 477, 0, 477, 0, 0, 0, 478, 477, 478, + 0, 466, 0, 464, 0, 465, 0, 465, 0, 465, + 0, 466, 467, 466, 465, 466, 0, 0, 0, 467, + 466, 0, 467, 468, 467, 468, 467, 0, 0, 469, + 0, 467, 0, 468, 0, 468, 0, 468, 0, 469, + 470, 469, 468, 469, 0, 470, 471, 0, 469, 0, + 470, 0, 470, 0, 470, 0, 471, 472, 471, 470, + 471, 0, 0, 0, 471, 471, 0, 472, 473, 472, + 0, 472, 0, 0, 474, 472, 472, 0, 473, 0, + 473, 0, 473, 0, 474, 475, 474, 473, 474, 0, + 0, 479, 0, 474, 0, 475, 0, 475, 479, 475, - 479, 478, 479, 483, 479, 0, 478, 0, 0, 479, - 483, 484, 0, 483, 485, 483, 0, 483, 0, 0, - 0, 484, 483, 484, 485, 484, 485, 486, 485, 484, - 484, 0, 0, 485, 0, 487, 0, 486, 0, 486, - 0, 486, 0, 0, 0, 487, 486, 487, 488, 487, - 0, 488, 487, 0, 487, 0, 489, 0, 488, 490, - 488, 0, 488, 0, 0, 0, 489, 488, 489, 490, - 489, 490, 0, 490, 489, 489, 491, 491, 490, 492, - 0, 0, 493, 0, 0, 0, 491, 0, 491, 492, - 491, 492, 493, 492, 493, 491, 493, 495, 492, 0, + 0, 479, 480, 479, 475, 479, 0, 0, 0, 0, + 479, 0, 480, 481, 480, 0, 480, 0, 0, 482, + 480, 480, 0, 481, 0, 481, 0, 481, 0, 482, + 483, 482, 481, 482, 0, 0, 484, 0, 482, 484, + 483, 0, 483, 0, 483, 0, 484, 483, 484, 483, + 484, 485, 486, 0, 0, 484, 0, 0, 0, 0, + 0, 485, 486, 485, 486, 485, 486, 487, 487, 485, + 485, 486, 0, 488, 0, 0, 0, 487, 0, 487, + 0, 487, 0, 488, 489, 488, 487, 488, 0, 0, + 491, 0, 488, 0, 489, 0, 489, 0, 489, 0, - 497, 493, 0, 0, 0, 0, 0, 495, 0, 495, - 497, 495, 497, 498, 497, 0, 495, 498, 0, 497, - 0, 499, 0, 498, 492, 498, 0, 498, 0, 500, - 0, 499, 498, 499, 0, 499, 0, 0, 0, 500, - 499, 500, 502, 500, 0, 502, 0, 0, 500, 0, - 503, 0, 502, 503, 502, 0, 502, 0, 0, 517, - 503, 502, 503, 505, 503, 0, 505, 0, 0, 503, - 507, 507, 0, 505, 517, 505, 0, 505, 0, 0, - 0, 507, 505, 507, 517, 507, 517, 518, 517, 0, - 507, 0, 0, 517, 518, 519, 519, 518, 0, 518, + 491, 493, 491, 489, 491, 0, 0, 0, 0, 491, + 0, 493, 494, 493, 0, 493, 494, 0, 488, 0, + 493, 0, 494, 495, 494, 0, 494, 0, 0, 496, + 0, 494, 0, 495, 0, 495, 0, 495, 0, 496, + 0, 496, 495, 496, 498, 0, 0, 498, 496, 0, + 499, 0, 0, 499, 498, 0, 498, 0, 498, 0, + 499, 0, 499, 498, 499, 501, 0, 0, 501, 499, + 503, 503, 0, 0, 0, 501, 0, 501, 0, 501, + 0, 503, 513, 503, 501, 503, 0, 0, 0, 513, + 503, 0, 513, 0, 513, 0, 513, 514, 514, 0, - 0, 518, 0, 521, 0, 519, 518, 519, 0, 519, - 0, 522, 0, 521, 519, 521, 0, 521, 0, 521, - 0, 522, 521, 522, 523, 522, 0, 523, 0, 522, - 522, 0, 524, 0, 523, 525, 523, 0, 523, 0, - 0, 527, 524, 523, 524, 525, 524, 525, 525, 525, - 526, 524, 0, 529, 525, 0, 527, 0, 0, 0, - 526, 0, 526, 529, 526, 529, 527, 529, 527, 526, - 527, 528, 529, 0, 528, 527, 0, 530, 0, 0, - 0, 528, 0, 528, 530, 528, 0, 530, 531, 530, - 528, 530, 0, 0, 536, 0, 530, 536, 531, 0, + 0, 513, 0, 516, 0, 0, 0, 514, 0, 514, + 0, 514, 0, 516, 517, 516, 514, 516, 0, 516, + 0, 0, 516, 0, 517, 0, 517, 518, 517, 0, + 518, 0, 517, 517, 0, 519, 0, 518, 520, 518, + 0, 518, 0, 0, 522, 519, 518, 519, 520, 519, + 520, 520, 520, 521, 519, 0, 524, 520, 0, 522, + 0, 0, 0, 521, 0, 521, 524, 521, 524, 522, + 524, 522, 521, 522, 523, 524, 0, 523, 522, 0, + 525, 0, 0, 0, 523, 0, 523, 525, 523, 0, + 525, 526, 525, 523, 525, 0, 0, 531, 0, 525, - 531, 0, 531, 0, 536, 537, 536, 531, 536, 0, - 0, 538, 0, 536, 0, 537, 0, 537, 0, 537, - 0, 538, 539, 538, 537, 538, 0, 0, 540, 0, - 538, 0, 539, 0, 539, 540, 539, 0, 540, 541, - 540, 539, 540, 0, 0, 0, 0, 540, 0, 541, - 543, 541, 0, 541, 543, 0, 545, 541, 541, 0, - 543, 0, 543, 549, 543, 0, 545, 547, 545, 543, - 545, 0, 0, 0, 547, 545, 0, 547, 549, 547, - 0, 547, 0, 0, 550, 0, 547, 0, 549, 0, - 549, 0, 549, 0, 550, 552, 550, 549, 550, 0, + 531, 526, 0, 526, 0, 526, 0, 531, 532, 531, + 526, 531, 0, 0, 533, 0, 531, 0, 532, 0, + 532, 0, 532, 0, 533, 534, 533, 532, 533, 0, + 0, 535, 0, 533, 0, 534, 0, 534, 535, 534, + 0, 535, 536, 535, 534, 535, 0, 0, 0, 0, + 535, 0, 536, 538, 536, 0, 536, 538, 0, 540, + 536, 536, 0, 538, 0, 538, 544, 538, 0, 540, + 542, 540, 538, 540, 0, 0, 0, 542, 540, 0, + 542, 544, 542, 0, 542, 0, 0, 545, 0, 542, + 0, 544, 0, 544, 0, 544, 0, 545, 547, 545, - 0, 554, 0, 550, 0, 552, 0, 552, 0, 552, - 0, 554, 563, 554, 552, 554, 0, 0, 0, 0, - 554, 0, 563, 564, 563, 0, 563, 0, 0, 563, - 0, 563, 0, 564, 565, 564, 564, 564, 0, 0, - 567, 0, 564, 0, 565, 0, 565, 0, 565, 0, - 567, 568, 567, 565, 567, 0, 0, 0, 0, 567, - 0, 568, 569, 568, 569, 568, 0, 0, 568, 0, - 568, 0, 569, 570, 569, 0, 569, 0, 570, 571, - 0, 569, 0, 570, 0, 570, 0, 570, 0, 571, - 0, 571, 570, 571, 572, 572, 0, 573, 571, 573, + 544, 545, 0, 0, 549, 0, 545, 0, 547, 0, + 547, 0, 547, 0, 549, 558, 549, 547, 549, 0, + 0, 559, 0, 549, 0, 558, 0, 558, 558, 558, + 0, 559, 561, 559, 558, 559, 0, 0, 562, 0, + 559, 0, 561, 0, 561, 0, 561, 0, 562, 0, + 562, 561, 562, 564, 563, 562, 563, 562, 564, 0, + 0, 0, 0, 564, 563, 564, 563, 564, 563, 565, + 566, 566, 564, 563, 0, 0, 0, 0, 0, 565, + 566, 565, 566, 565, 566, 567, 568, 567, 565, 566, + 0, 0, 0, 0, 0, 567, 568, 567, 568, 567, - 574, 0, 0, 0, 572, 0, 572, 573, 572, 573, - 574, 573, 574, 572, 574, 579, 573, 0, 0, 574, - 0, 0, 0, 580, 0, 579, 0, 579, 0, 579, - 0, 579, 0, 580, 579, 580, 580, 580, 581, 583, - 0, 0, 580, 0, 0, 581, 583, 0, 581, 583, - 581, 583, 581, 583, 586, 0, 0, 581, 583, 0, - 0, 0, 588, 0, 586, 0, 586, 0, 586, 0, - 590, 0, 588, 586, 588, 588, 588, 0, 0, 0, - 590, 588, 590, 592, 590, 0, 0, 0, 590, 590, - 0, 0, 0, 592, 0, 592, 0, 592, 598, 598, + 568, 573, 0, 0, 567, 568, 0, 0, 0, 574, + 0, 573, 0, 573, 0, 573, 0, 573, 0, 574, + 573, 574, 574, 574, 575, 577, 0, 0, 574, 0, + 0, 575, 577, 0, 575, 577, 575, 577, 575, 577, + 580, 0, 0, 575, 577, 0, 0, 0, 582, 0, + 580, 0, 580, 0, 580, 0, 584, 0, 582, 580, + 582, 582, 582, 0, 0, 0, 584, 582, 584, 586, + 584, 0, 0, 0, 584, 584, 0, 0, 0, 586, + 0, 586, 0, 586, 592, 592, 592, 0, 586, 0, + 0, 0, 0, 595, 596, 0, 592, 592, 592, 592, - 598, 0, 592, 0, 0, 0, 0, 601, 602, 0, - 598, 598, 598, 598, 598, 598, 598, 601, 602, 601, - 602, 601, 602, 603, 604, 0, 601, 602, 0, 0, - 601, 0, 0, 603, 604, 603, 604, 603, 604, 605, - 606, 0, 603, 604, 0, 0, 0, 0, 0, 605, - 606, 605, 606, 605, 606, 607, 0, 606, 605, 606, - 0, 608, 0, 0, 0, 607, 0, 607, 607, 607, - 0, 608, 609, 608, 607, 608, 0, 0, 613, 609, - 608, 0, 609, 0, 609, 0, 609, 0, 613, 614, - 613, 609, 613, 0, 0, 0, 0, 613, 0, 614, + 592, 592, 592, 595, 596, 595, 596, 595, 596, 597, + 598, 0, 595, 596, 0, 0, 0, 0, 0, 597, + 598, 597, 598, 597, 598, 599, 0, 0, 597, 598, + 0, 0, 0, 600, 0, 599, 0, 599, 0, 599, + 0, 601, 599, 600, 599, 600, 600, 600, 0, 602, + 0, 601, 600, 601, 0, 601, 602, 606, 0, 602, + 601, 602, 0, 602, 0, 607, 0, 606, 602, 606, + 0, 606, 0, 608, 0, 607, 606, 607, 0, 607, + 0, 610, 0, 608, 607, 608, 608, 608, 0, 613, + 0, 610, 608, 610, 0, 610, 613, 615, 0, 613, - 615, 614, 0, 614, 0, 0, 617, 0, 614, 0, - 615, 0, 615, 615, 615, 0, 617, 620, 617, 615, - 617, 0, 0, 622, 620, 617, 0, 620, 0, 620, - 622, 620, 0, 622, 623, 622, 620, 622, 0, 0, - 0, 623, 622, 0, 623, 0, 623, 0, 623, 0, - 0, 633, 634, 623, 630, 630, 630, 630, 630, 630, - 630, 633, 634, 633, 634, 633, 634, 635, 636, 0, - 633, 634, 0, 0, 0, 0, 0, 635, 636, 635, - 636, 635, 636, 637, 0, 0, 635, 636, 0, 0, - 0, 0, 630, 637, 641, 637, 0, 637, 0, 0, + 610, 613, 0, 613, 615, 616, 0, 615, 613, 615, + 0, 615, 616, 0, 0, 616, 615, 616, 0, 616, + 0, 0, 626, 627, 616, 623, 623, 623, 623, 623, + 623, 623, 626, 627, 626, 627, 626, 627, 628, 0, + 0, 626, 627, 0, 0, 0, 629, 0, 628, 0, + 628, 0, 628, 0, 0, 0, 629, 628, 629, 633, + 629, 0, 0, 623, 629, 629, 0, 634, 0, 633, + 0, 633, 0, 633, 0, 636, 633, 634, 633, 634, + 0, 634, 636, 639, 0, 636, 634, 636, 0, 636, + 0, 0, 0, 639, 636, 639, 641, 639, 641, 642, - 642, 637, 637, 0, 641, 0, 641, 0, 641, 0, - 642, 641, 642, 641, 642, 644, 0, 0, 647, 642, - 0, 649, 644, 649, 0, 644, 0, 644, 647, 644, - 647, 649, 647, 649, 644, 649, 647, 647, 650, 0, - 649, 0, 650, 0, 0, 0, 0, 0, 650, 0, - 650, 0, 650, 657, 657, 657, 0, 650, 0, 0, - 0, 0, 659, 0, 0, 657, 657, 657, 657, 657, - 657, 657, 659, 660, 659, 0, 659, 0, 0, 0, - 659, 659, 0, 660, 661, 660, 0, 660, 0, 0, - 665, 660, 660, 0, 661, 0, 661, 0, 661, 0, + 0, 639, 639, 642, 0, 0, 641, 0, 641, 642, + 641, 642, 0, 642, 0, 641, 0, 0, 642, 649, + 649, 649, 0, 0, 0, 0, 0, 0, 651, 652, + 0, 649, 649, 649, 649, 649, 649, 649, 651, 652, + 651, 652, 651, 652, 656, 657, 651, 651, 652, 0, + 0, 0, 652, 0, 656, 657, 656, 657, 656, 657, + 659, 662, 0, 656, 657, 0, 0, 0, 0, 0, + 659, 662, 659, 662, 659, 662, 664, 0, 659, 659, + 662, 0, 665, 0, 662, 0, 664, 0, 664, 665, + 664, 0, 665, 672, 665, 664, 665, 0, 0, 0, - 665, 666, 665, 661, 665, 0, 0, 661, 0, 665, - 0, 666, 668, 666, 0, 666, 0, 0, 0, 0, - 666, 0, 668, 671, 668, 0, 668, 0, 0, 673, - 668, 668, 0, 671, 0, 671, 0, 671, 0, 673, - 674, 673, 671, 673, 0, 0, 671, 674, 673, 0, - 674, 0, 674, 682, 674, 681, 681, 0, 0, 674, - 0, 0, 0, 682, 683, 682, 681, 682, 681, 682, - 681, 0, 682, 0, 683, 681, 683, 687, 683, 0, - 690, 0, 0, 683, 0, 0, 0, 687, 0, 687, - 690, 687, 690, 0, 690, 692, 687, 0, 692, 690, + 0, 665, 0, 672, 673, 672, 0, 672, 0, 672, + 677, 0, 672, 0, 673, 0, 673, 0, 673, 0, + 677, 0, 677, 673, 677, 680, 0, 0, 682, 677, + 0, 682, 0, 677, 0, 680, 0, 680, 682, 680, + 682, 0, 682, 0, 680, 0, 0, 682, 687, 687, + 687, 0, 0, 0, 0, 0, 0, 689, 0, 0, + 687, 687, 687, 687, 687, 687, 687, 689, 691, 689, + 689, 689, 0, 0, 694, 0, 689, 0, 691, 0, + 691, 0, 691, 0, 694, 698, 694, 691, 694, 0, + 694, 702, 0, 694, 0, 698, 0, 698, 0, 698, - 687, 0, 0, 0, 0, 692, 0, 692, 0, 692, - 697, 697, 697, 0, 692, 0, 0, 0, 0, 699, - 0, 0, 697, 697, 697, 697, 697, 697, 697, 699, - 700, 699, 0, 699, 0, 0, 702, 0, 699, 0, - 700, 699, 700, 700, 700, 0, 702, 705, 702, 700, - 702, 0, 0, 0, 0, 702, 0, 705, 709, 705, - 0, 705, 0, 705, 710, 0, 705, 0, 709, 0, - 709, 0, 709, 0, 710, 714, 710, 709, 710, 0, - 0, 717, 0, 710, 0, 714, 0, 714, 0, 714, - 0, 717, 0, 717, 714, 717, 0, 0, 0, 0, + 0, 702, 705, 702, 698, 702, 0, 0, 0, 0, + 702, 0, 705, 0, 705, 0, 705, 0, 0, 0, + 0, 705, 709, 709, 709, 709, 709, 709, 709, 709, + 709, 709, 709, 709, 710, 710, 710, 710, 710, 710, + 710, 710, 710, 710, 710, 710, 711, 711, 711, 711, + 711, 711, 711, 711, 711, 711, 711, 711, 712, 712, + 712, 712, 712, 712, 712, 712, 712, 712, 712, 712, + 713, 713, 713, 713, 713, 713, 713, 713, 713, 713, + 713, 713, 714, 714, 714, 714, 714, 714, 714, 714, + 714, 714, 714, 714, 715, 715, 715, 0, 715, 715, - 717, 721, 721, 721, 721, 721, 721, 721, 721, 721, - 721, 721, 721, 722, 722, 722, 722, 722, 722, 722, - 722, 722, 722, 722, 722, 723, 723, 723, 723, 723, - 723, 723, 723, 723, 723, 723, 723, 724, 724, 724, - 724, 724, 724, 724, 724, 724, 724, 724, 724, 725, - 725, 725, 725, 725, 725, 725, 725, 725, 725, 725, - 725, 726, 726, 726, 726, 726, 726, 726, 726, 726, - 726, 726, 726, 727, 727, 727, 0, 727, 727, 727, - 727, 727, 727, 727, 727, 728, 728, 0, 0, 728, - 0, 728, 729, 0, 729, 730, 730, 0, 730, 730, + 715, 715, 715, 715, 715, 715, 716, 716, 0, 0, + 716, 0, 716, 717, 0, 717, 718, 718, 0, 718, + 718, 719, 719, 0, 719, 719, 719, 0, 719, 719, + 719, 719, 719, 720, 720, 720, 0, 720, 720, 720, + 720, 720, 720, 720, 720, 721, 721, 721, 721, 721, + 721, 721, 721, 0, 721, 721, 722, 0, 0, 722, + 722, 722, 722, 722, 722, 722, 722, 723, 0, 0, + 723, 723, 723, 723, 723, 723, 723, 723, 724, 0, + 0, 724, 0, 724, 724, 724, 724, 724, 724, 725, + 725, 0, 725, 725, 726, 726, 0, 726, 726, 727, - 731, 731, 0, 731, 731, 731, 0, 731, 731, 731, - 731, 731, 732, 732, 732, 0, 732, 732, 732, 732, - 732, 732, 732, 732, 733, 733, 733, 733, 733, 733, - 733, 733, 0, 733, 733, 734, 0, 0, 734, 734, - 734, 734, 734, 734, 734, 734, 735, 0, 0, 735, - 735, 735, 735, 735, 735, 735, 735, 736, 0, 0, - 736, 0, 736, 736, 736, 736, 736, 736, 737, 737, - 0, 737, 737, 738, 738, 0, 738, 738, 739, 739, - 0, 739, 739, 720, 720, 720, 720, 720, 720, 720, - 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, - - 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, - 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, - 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, - 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, - 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, - 720, 720, 720, 720, 720, 720, 720, 720, 720, 720, - 720, 720 + 727, 0, 727, 727, 708, 708, 708, 708, 708, 708, + 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, + 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, + 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, + 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, + 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, + 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, + 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, + 708, 708, 708 } ; extern int yy_flex_debug; int yy_flex_debug = 1; -static yyconst short int yy_rule_linenum[132] = +static yyconst short int yy_rule_linenum[131] = { 0, 103, 106, 108, 109, 110, 113, 115, 116, 117, 129, 136, 143, 149, 158, 166, 174, 175, 177, 196, 202, 203, 204, 205, 206, 209, 215, 222, 229, 236, 246, - 280, 287, 288, 289, 290, 298, 299, 300, 301, 302, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 326, 327, 328, 329, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, - 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, + 280, 287, 291, 292, 300, 301, 302, 303, 304, 309, + 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, + 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, + 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, + 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, + 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, + 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 389, 390, 395, 396, 397, 400, 406, 413, 422, 433, - 439, 441, 442, 444, 446, 448, 461, 467, 473, 480, - 482 + 378, 379, 380, 381, 382, 383, 384, 385, 386, 391, + 392, 397, 398, 399, 402, 408, 415, 424, 435, 441, + 443, 444, 446, 448, 450, 463, 469, 475, 482, 484 } ; static yy_state_type yy_state_buf[YY_BUF_SIZE + 2], *yy_state_ptr; @@ -1902,7 +1877,7 @@ static asn1_integer_t asn1p_atoi(char *ptr); /* errno is either 0 or ERANGE */ /* Newline */ /* White-space */ -#line 1906 "asn1p_l.c" +#line 1881 "asn1p_l.c" /* Macros after this point can all be overridden by user definitions in * section 1. @@ -2056,7 +2031,7 @@ YY_DECL #line 101 "asn1p_l.l" -#line 2060 "asn1p_l.c" +#line 2035 "asn1p_l.c" if ( yy_init ) { @@ -2104,14 +2079,14 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 721 ) + if ( yy_current_state >= 709 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; *yy_state_ptr++ = yy_current_state; ++yy_cp; } - while ( yy_base[yy_current_state] != 4484 ); + while ( yy_base[yy_current_state] != 4405 ); yy_find_action: yy_current_state = *--yy_state_ptr; @@ -2148,13 +2123,13 @@ do_action: /* This label is used only to access EOF actions. */ { if ( yy_act == 0 ) fprintf( stderr, "--scanner backing up\n" ); - else if ( yy_act < 132 ) + else if ( yy_act < 131 ) fprintf( stderr, "--accepting rule at line %d (\"%s\")\n", yy_rule_linenum[yy_act], yytext ); - else if ( yy_act == 132 ) + else if ( yy_act == 131 ) fprintf( stderr, "--accepting default rule (\"%s\")\n", yytext ); - else if ( yy_act == 133 ) + else if ( yy_act == 132 ) fprintf( stderr, "--(end of buffer or a NUL)\n" ); else fprintf( stderr, "--EOF (start condition %d)\n", YY_START ); @@ -2450,19 +2425,17 @@ YY_RULE_SETUP #line 287 "asn1p_l.l" return TOK_ABSENT; YY_BREAK +/* +ABSTRACT-SYNTAX return TOK_ABSTRACT_SYNTAX; + */ case 33: YY_RULE_SETUP -#line 288 "asn1p_l.l" -return TOK_ABSTRACT_SYNTAX; +#line 291 "asn1p_l.l" +return TOK_ALL; YY_BREAK case 34: YY_RULE_SETUP -#line 289 "asn1p_l.l" -return TOK_ALL; - YY_BREAK -case 35: -YY_RULE_SETUP -#line 290 "asn1p_l.l" +#line 292 "asn1p_l.l" { /* Appeared in 1990, removed in 1997 */ if(TYPE_LIFETIME(1990, 1997)) @@ -2472,88 +2445,88 @@ YY_RULE_SETUP REJECT; } YY_BREAK +case 35: +YY_RULE_SETUP +#line 300 "asn1p_l.l" +return TOK_APPLICATION; + YY_BREAK case 36: YY_RULE_SETUP -#line 298 "asn1p_l.l" -return TOK_APPLICATION; +#line 301 "asn1p_l.l" +return TOK_AUTOMATIC; YY_BREAK case 37: YY_RULE_SETUP -#line 299 "asn1p_l.l" -return TOK_AUTOMATIC; +#line 302 "asn1p_l.l" +return TOK_BEGIN; YY_BREAK case 38: YY_RULE_SETUP -#line 300 "asn1p_l.l" -return TOK_BEGIN; +#line 303 "asn1p_l.l" +return TOK_BIT; YY_BREAK case 39: YY_RULE_SETUP -#line 301 "asn1p_l.l" -return TOK_BIT; - YY_BREAK -case 40: -YY_RULE_SETUP -#line 302 "asn1p_l.l" +#line 304 "asn1p_l.l" { if(TYPE_LIFETIME(1994, 0)) return TOK_BMPString; REJECT; } YY_BREAK +case 40: +YY_RULE_SETUP +#line 309 "asn1p_l.l" +return TOK_BOOLEAN; + YY_BREAK case 41: YY_RULE_SETUP -#line 307 "asn1p_l.l" -return TOK_BOOLEAN; +#line 310 "asn1p_l.l" +return TOK_BY; YY_BREAK case 42: YY_RULE_SETUP -#line 308 "asn1p_l.l" -return TOK_BY; +#line 311 "asn1p_l.l" +return TOK_CHARACTER; YY_BREAK case 43: YY_RULE_SETUP -#line 309 "asn1p_l.l" -return TOK_CHARACTER; +#line 312 "asn1p_l.l" +return TOK_CHOICE; YY_BREAK case 44: YY_RULE_SETUP -#line 310 "asn1p_l.l" -return TOK_CHOICE; +#line 313 "asn1p_l.l" +return TOK_CLASS; YY_BREAK case 45: YY_RULE_SETUP -#line 311 "asn1p_l.l" -return TOK_CLASS; +#line 314 "asn1p_l.l" +return TOK_COMPONENT; YY_BREAK case 46: YY_RULE_SETUP -#line 312 "asn1p_l.l" -return TOK_COMPONENT; +#line 315 "asn1p_l.l" +return TOK_COMPONENTS; YY_BREAK case 47: YY_RULE_SETUP -#line 313 "asn1p_l.l" -return TOK_COMPONENTS; +#line 316 "asn1p_l.l" +return TOK_CONSTRAINED; YY_BREAK case 48: YY_RULE_SETUP -#line 314 "asn1p_l.l" -return TOK_CONSTRAINED; +#line 317 "asn1p_l.l" +return TOK_CONTAINING; YY_BREAK case 49: YY_RULE_SETUP -#line 315 "asn1p_l.l" -return TOK_CONTAINING; +#line 318 "asn1p_l.l" +return TOK_DEFAULT; YY_BREAK case 50: YY_RULE_SETUP -#line 316 "asn1p_l.l" -return TOK_DEFAULT; - YY_BREAK -case 51: -YY_RULE_SETUP -#line 317 "asn1p_l.l" +#line 319 "asn1p_l.l" { /* Appeared in 1990, removed in 1997 */ if(TYPE_LIFETIME(1990, 1997)) @@ -2564,355 +2537,355 @@ YY_RULE_SETUP REJECT; } YY_BREAK +case 51: +YY_RULE_SETUP +#line 328 "asn1p_l.l" +return TOK_DEFINITIONS; + YY_BREAK case 52: YY_RULE_SETUP -#line 326 "asn1p_l.l" -return TOK_DEFINITIONS; +#line 329 "asn1p_l.l" +return TOK_EMBEDDED; YY_BREAK case 53: YY_RULE_SETUP -#line 327 "asn1p_l.l" -return TOK_EMBEDDED; +#line 330 "asn1p_l.l" +return TOK_ENCODED; YY_BREAK case 54: YY_RULE_SETUP -#line 328 "asn1p_l.l" -return TOK_ENCODED; +#line 331 "asn1p_l.l" +return TOK_ENCODING_CONTROL; YY_BREAK case 55: YY_RULE_SETUP -#line 329 "asn1p_l.l" -return TOK_ENCODING_CONTROL; +#line 332 "asn1p_l.l" +return TOK_END; YY_BREAK case 56: YY_RULE_SETUP -#line 330 "asn1p_l.l" -return TOK_END; +#line 333 "asn1p_l.l" +return TOK_ENUMERATED; YY_BREAK case 57: YY_RULE_SETUP -#line 331 "asn1p_l.l" -return TOK_ENUMERATED; +#line 334 "asn1p_l.l" +return TOK_EXCEPT; YY_BREAK case 58: YY_RULE_SETUP -#line 332 "asn1p_l.l" -return TOK_EXCEPT; +#line 335 "asn1p_l.l" +return TOK_EXPLICIT; YY_BREAK case 59: YY_RULE_SETUP -#line 333 "asn1p_l.l" -return TOK_EXPLICIT; +#line 336 "asn1p_l.l" +return TOK_EXPORTS; YY_BREAK case 60: YY_RULE_SETUP -#line 334 "asn1p_l.l" -return TOK_EXPORTS; +#line 337 "asn1p_l.l" +return TOK_EXTENSIBILITY; YY_BREAK case 61: YY_RULE_SETUP -#line 335 "asn1p_l.l" -return TOK_EXTENSIBILITY; +#line 338 "asn1p_l.l" +return TOK_EXTERNAL; YY_BREAK case 62: YY_RULE_SETUP -#line 336 "asn1p_l.l" -return TOK_EXTERNAL; +#line 339 "asn1p_l.l" +return TOK_FALSE; YY_BREAK case 63: YY_RULE_SETUP -#line 337 "asn1p_l.l" -return TOK_FALSE; +#line 340 "asn1p_l.l" +return TOK_FROM; YY_BREAK case 64: YY_RULE_SETUP -#line 338 "asn1p_l.l" -return TOK_FROM; +#line 341 "asn1p_l.l" +return TOK_GeneralizedTime; YY_BREAK case 65: YY_RULE_SETUP -#line 339 "asn1p_l.l" -return TOK_GeneralizedTime; +#line 342 "asn1p_l.l" +return TOK_GeneralString; YY_BREAK case 66: YY_RULE_SETUP -#line 340 "asn1p_l.l" -return TOK_GeneralString; +#line 343 "asn1p_l.l" +return TOK_GraphicString; YY_BREAK case 67: YY_RULE_SETUP -#line 341 "asn1p_l.l" -return TOK_GraphicString; +#line 344 "asn1p_l.l" +return TOK_IA5String; YY_BREAK case 68: YY_RULE_SETUP -#line 342 "asn1p_l.l" -return TOK_IA5String; +#line 345 "asn1p_l.l" +return TOK_IDENTIFIER; YY_BREAK case 69: YY_RULE_SETUP -#line 343 "asn1p_l.l" -return TOK_IDENTIFIER; +#line 346 "asn1p_l.l" +return TOK_IMPLICIT; YY_BREAK case 70: YY_RULE_SETUP -#line 344 "asn1p_l.l" -return TOK_IMPLICIT; +#line 347 "asn1p_l.l" +return TOK_IMPLIED; YY_BREAK case 71: YY_RULE_SETUP -#line 345 "asn1p_l.l" -return TOK_IMPLIED; +#line 348 "asn1p_l.l" +return TOK_IMPORTS; YY_BREAK case 72: YY_RULE_SETUP -#line 346 "asn1p_l.l" -return TOK_IMPORTS; +#line 349 "asn1p_l.l" +return TOK_INCLUDES; YY_BREAK case 73: YY_RULE_SETUP -#line 347 "asn1p_l.l" -return TOK_INCLUDES; +#line 350 "asn1p_l.l" +return TOK_INSTANCE; YY_BREAK case 74: YY_RULE_SETUP -#line 348 "asn1p_l.l" -return TOK_INSTANCE; +#line 351 "asn1p_l.l" +return TOK_INSTRUCTIONS; YY_BREAK case 75: YY_RULE_SETUP -#line 349 "asn1p_l.l" -return TOK_INSTRUCTIONS; +#line 352 "asn1p_l.l" +return TOK_INTEGER; YY_BREAK case 76: YY_RULE_SETUP -#line 350 "asn1p_l.l" -return TOK_INTEGER; +#line 353 "asn1p_l.l" +return TOK_INTERSECTION; YY_BREAK case 77: YY_RULE_SETUP -#line 351 "asn1p_l.l" -return TOK_INTERSECTION; +#line 354 "asn1p_l.l" +return TOK_ISO646String; YY_BREAK case 78: YY_RULE_SETUP -#line 352 "asn1p_l.l" -return TOK_ISO646String; +#line 355 "asn1p_l.l" +return TOK_MAX; YY_BREAK case 79: YY_RULE_SETUP -#line 353 "asn1p_l.l" -return TOK_MAX; +#line 356 "asn1p_l.l" +return TOK_MIN; YY_BREAK case 80: YY_RULE_SETUP -#line 354 "asn1p_l.l" -return TOK_MIN; +#line 357 "asn1p_l.l" +return TOK_MINUS_INFINITY; YY_BREAK case 81: YY_RULE_SETUP -#line 355 "asn1p_l.l" -return TOK_MINUS_INFINITY; +#line 358 "asn1p_l.l" +return TOK_NULL; YY_BREAK case 82: YY_RULE_SETUP -#line 356 "asn1p_l.l" -return TOK_NULL; +#line 359 "asn1p_l.l" +return TOK_NumericString; YY_BREAK case 83: YY_RULE_SETUP -#line 357 "asn1p_l.l" -return TOK_NumericString; +#line 360 "asn1p_l.l" +return TOK_OBJECT; YY_BREAK case 84: YY_RULE_SETUP -#line 358 "asn1p_l.l" -return TOK_OBJECT; +#line 361 "asn1p_l.l" +return TOK_ObjectDescriptor; YY_BREAK case 85: YY_RULE_SETUP -#line 359 "asn1p_l.l" -return TOK_ObjectDescriptor; +#line 362 "asn1p_l.l" +return TOK_OCTET; YY_BREAK case 86: YY_RULE_SETUP -#line 360 "asn1p_l.l" -return TOK_OCTET; +#line 363 "asn1p_l.l" +return TOK_OF; YY_BREAK case 87: YY_RULE_SETUP -#line 361 "asn1p_l.l" -return TOK_OF; +#line 364 "asn1p_l.l" +return TOK_OPTIONAL; YY_BREAK case 88: YY_RULE_SETUP -#line 362 "asn1p_l.l" -return TOK_OPTIONAL; +#line 365 "asn1p_l.l" +return TOK_PATTERN; YY_BREAK case 89: YY_RULE_SETUP -#line 363 "asn1p_l.l" -return TOK_PATTERN; +#line 366 "asn1p_l.l" +return TOK_PDV; YY_BREAK case 90: YY_RULE_SETUP -#line 364 "asn1p_l.l" -return TOK_PDV; +#line 367 "asn1p_l.l" +return TOK_PLUS_INFINITY; YY_BREAK case 91: YY_RULE_SETUP -#line 365 "asn1p_l.l" -return TOK_PLUS_INFINITY; +#line 368 "asn1p_l.l" +return TOK_PRESENT; YY_BREAK case 92: YY_RULE_SETUP -#line 366 "asn1p_l.l" -return TOK_PRESENT; +#line 369 "asn1p_l.l" +return TOK_PrintableString; YY_BREAK case 93: YY_RULE_SETUP -#line 367 "asn1p_l.l" -return TOK_PrintableString; +#line 370 "asn1p_l.l" +return TOK_PRIVATE; YY_BREAK case 94: YY_RULE_SETUP -#line 368 "asn1p_l.l" -return TOK_PRIVATE; +#line 371 "asn1p_l.l" +return TOK_REAL; YY_BREAK case 95: YY_RULE_SETUP -#line 369 "asn1p_l.l" -return TOK_REAL; +#line 372 "asn1p_l.l" +return TOK_RELATIVE_OID; YY_BREAK case 96: YY_RULE_SETUP -#line 370 "asn1p_l.l" -return TOK_RELATIVE_OID; +#line 373 "asn1p_l.l" +return TOK_SEQUENCE; YY_BREAK case 97: YY_RULE_SETUP -#line 371 "asn1p_l.l" -return TOK_SEQUENCE; +#line 374 "asn1p_l.l" +return TOK_SET; YY_BREAK case 98: YY_RULE_SETUP -#line 372 "asn1p_l.l" -return TOK_SET; +#line 375 "asn1p_l.l" +return TOK_SIZE; YY_BREAK case 99: YY_RULE_SETUP -#line 373 "asn1p_l.l" -return TOK_SIZE; +#line 376 "asn1p_l.l" +return TOK_STRING; YY_BREAK case 100: YY_RULE_SETUP -#line 374 "asn1p_l.l" -return TOK_STRING; +#line 377 "asn1p_l.l" +return TOK_SYNTAX; YY_BREAK case 101: YY_RULE_SETUP -#line 375 "asn1p_l.l" -return TOK_SYNTAX; +#line 378 "asn1p_l.l" +return TOK_T61String; YY_BREAK case 102: YY_RULE_SETUP -#line 376 "asn1p_l.l" -return TOK_T61String; +#line 379 "asn1p_l.l" +return TOK_TAGS; YY_BREAK case 103: YY_RULE_SETUP -#line 377 "asn1p_l.l" -return TOK_TAGS; +#line 380 "asn1p_l.l" +return TOK_TeletexString; YY_BREAK case 104: YY_RULE_SETUP -#line 378 "asn1p_l.l" -return TOK_TeletexString; +#line 381 "asn1p_l.l" +return TOK_TRUE; YY_BREAK case 105: YY_RULE_SETUP -#line 379 "asn1p_l.l" -return TOK_TRUE; +#line 382 "asn1p_l.l" +return TOK_TYPE_IDENTIFIER; YY_BREAK case 106: YY_RULE_SETUP -#line 380 "asn1p_l.l" -return TOK_TYPE_IDENTIFIER; +#line 383 "asn1p_l.l" +return TOK_UNION; YY_BREAK case 107: YY_RULE_SETUP -#line 381 "asn1p_l.l" -return TOK_UNION; +#line 384 "asn1p_l.l" +return TOK_UNIQUE; YY_BREAK case 108: YY_RULE_SETUP -#line 382 "asn1p_l.l" -return TOK_UNIQUE; +#line 385 "asn1p_l.l" +return TOK_UNIVERSAL; YY_BREAK case 109: YY_RULE_SETUP -#line 383 "asn1p_l.l" -return TOK_UNIVERSAL; - YY_BREAK -case 110: -YY_RULE_SETUP -#line 384 "asn1p_l.l" +#line 386 "asn1p_l.l" { if(TYPE_LIFETIME(1994, 0)) return TOK_UniversalString; REJECT; } YY_BREAK -case 111: +case 110: YY_RULE_SETUP -#line 389 "asn1p_l.l" +#line 391 "asn1p_l.l" return TOK_UTCTime; YY_BREAK -case 112: +case 111: YY_RULE_SETUP -#line 390 "asn1p_l.l" +#line 392 "asn1p_l.l" { if(TYPE_LIFETIME(1994, 0)) return TOK_UTF8String; REJECT; } YY_BREAK +case 112: +YY_RULE_SETUP +#line 397 "asn1p_l.l" +return TOK_VideotexString; + YY_BREAK case 113: YY_RULE_SETUP -#line 395 "asn1p_l.l" -return TOK_VideotexString; +#line 398 "asn1p_l.l" +return TOK_VisibleString; YY_BREAK case 114: YY_RULE_SETUP -#line 396 "asn1p_l.l" -return TOK_VisibleString; +#line 399 "asn1p_l.l" +return TOK_WITH; YY_BREAK case 115: YY_RULE_SETUP -#line 397 "asn1p_l.l" -return TOK_WITH; - YY_BREAK -case 116: -YY_RULE_SETUP -#line 400 "asn1p_l.l" +#line 402 "asn1p_l.l" { CHECK_DASHES; asn1p_lval.tv_str = strdup(yytext); return TOK_typefieldreference; } YY_BREAK -case 117: +case 116: YY_RULE_SETUP -#line 406 "asn1p_l.l" +#line 408 "asn1p_l.l" { CHECK_DASHES; asn1p_lval.tv_str = strdup(yytext); return TOK_valuefieldreference; } YY_BREAK -case 118: +case 117: YY_RULE_SETUP -#line 413 "asn1p_l.l" +#line 415 "asn1p_l.l" { CHECK_DASHES; asn1p_lval.tv_str = strdup(yytext); @@ -2922,9 +2895,9 @@ YY_RULE_SETUP /* * objectclassreference */ -case 119: +case 118: YY_RULE_SETUP -#line 422 "asn1p_l.l" +#line 424 "asn1p_l.l" { CHECK_DASHES; asn1p_lval.tv_str = strdup(yytext); @@ -2936,43 +2909,43 @@ YY_RULE_SETUP * NOTE: TOK_objectclassreference must be combined * with this token to produce true typereference. */ -case 120: +case 119: YY_RULE_SETUP -#line 433 "asn1p_l.l" +#line 435 "asn1p_l.l" { CHECK_DASHES; asn1p_lval.tv_str = strdup(yytext); return TOK_typereference; } YY_BREAK +case 120: +YY_RULE_SETUP +#line 441 "asn1p_l.l" +return TOK_PPEQ; + YY_BREAK case 121: YY_RULE_SETUP -#line 439 "asn1p_l.l" -return TOK_PPEQ; +#line 443 "asn1p_l.l" +return TOK_ThreeDots; YY_BREAK case 122: YY_RULE_SETUP -#line 441 "asn1p_l.l" -return TOK_ThreeDots; +#line 444 "asn1p_l.l" +return TOK_TwoDots; YY_BREAK case 123: YY_RULE_SETUP -#line 442 "asn1p_l.l" -return TOK_TwoDots; +#line 446 "asn1p_l.l" +return yytext[0]; YY_BREAK case 124: YY_RULE_SETUP -#line 444 "asn1p_l.l" -return yytext[0]; +#line 448 "asn1p_l.l" +/* Ignore whitespace */ YY_BREAK case 125: YY_RULE_SETUP -#line 446 "asn1p_l.l" -/* Ignore whitespace */ - YY_BREAK -case 126: -YY_RULE_SETUP -#line 448 "asn1p_l.l" +#line 450 "asn1p_l.l" { if(TYPE_LIFETIME(1994, 0)) fprintf(stderr, "ERROR: "); @@ -2985,9 +2958,18 @@ YY_RULE_SETUP } YY_BREAK +case 126: +YY_RULE_SETUP +#line 463 "asn1p_l.l" +{ + asn1p_lval.tv_opaque.buf = strdup(yytext); + asn1p_lval.tv_opaque.len = yyleng; + return TOK_opaque; + } + YY_BREAK case 127: YY_RULE_SETUP -#line 461 "asn1p_l.l" +#line 469 "asn1p_l.l" { asn1p_lval.tv_opaque.buf = strdup(yytext); asn1p_lval.tv_opaque.len = yyleng; @@ -2996,39 +2978,31 @@ YY_RULE_SETUP YY_BREAK case 128: YY_RULE_SETUP -#line 467 "asn1p_l.l" -{ - asn1p_lval.tv_opaque.buf = strdup(yytext); - asn1p_lval.tv_opaque.len = yyleng; - return TOK_opaque; - } - YY_BREAK -case 129: -YY_RULE_SETUP -#line 473 "asn1p_l.l" +#line 475 "asn1p_l.l" { yy_pop_state(); return '}'; } YY_BREAK -case 130: -YY_RULE_SETUP -#line 480 "asn1p_l.l" -return yytext[0]; /* Union, Intersection */ - YY_BREAK -case 131: +case 129: YY_RULE_SETUP #line 482 "asn1p_l.l" +return yytext[0]; /* Union, Intersection */ + YY_BREAK +case 130: +YY_RULE_SETUP +#line 484 "asn1p_l.l" { fprintf(stderr, "Unexpected token at line %d: \"%s\"\n", yylineno, yytext); while(YYSTATE != INITIAL) yy_pop_state(); - yy_top_state(); /* Just to use this function. */ - yyterminate(); - yy_fatal_error("Unexpected token"); + if(0) { + yy_top_state(); /* Just to use this function. */ + yy_fatal_error("Parse error"); + } return -1; } YY_BREAK @@ -3039,19 +3013,19 @@ case YY_STATE_EOF(quoted): case YY_STATE_EOF(opaque): case YY_STATE_EOF(encoding_control): case YY_STATE_EOF(with_syntax): -#line 494 "asn1p_l.l" +#line 497 "asn1p_l.l" { while(YYSTATE != INITIAL) yy_pop_state(); yyterminate(); } YY_BREAK -case 132: +case 131: YY_RULE_SETUP -#line 501 "asn1p_l.l" +#line 504 "asn1p_l.l" YY_FATAL_ERROR( "flex scanner jammed" ); YY_BREAK -#line 3055 "asn1p_l.c" +#line 3029 "asn1p_l.c" case YY_END_OF_BUFFER: { @@ -3338,7 +3312,7 @@ static yy_state_type yy_get_previous_state() while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 721 ) + if ( yy_current_state >= 709 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -3368,11 +3342,11 @@ yy_state_type yy_current_state; while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 721 ) + if ( yy_current_state >= 709 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 720); + yy_is_jam = (yy_current_state == 708); if ( ! yy_is_jam ) *yy_state_ptr++ = yy_current_state; @@ -3933,7 +3907,7 @@ int main() return 0; } #endif -#line 501 "asn1p_l.l" +#line 504 "asn1p_l.l" /* diff --git a/libasn1parser/asn1p_l.l b/libasn1parser/asn1p_l.l index 6a2a0cc7..efa4c1a1 100644 --- a/libasn1parser/asn1p_l.l +++ b/libasn1parser/asn1p_l.l @@ -285,7 +285,9 @@ WSP [\t\r\v\f\n ] } ABSENT return TOK_ABSENT; + /* ABSTRACT-SYNTAX return TOK_ABSTRACT_SYNTAX; + */ ALL return TOK_ALL; ANY { /* Appeared in 1990, removed in 1997 */ @@ -485,9 +487,10 @@ WITH return TOK_WITH; yylineno, yytext); while(YYSTATE != INITIAL) yy_pop_state(); - yy_top_state(); /* Just to use this function. */ - yyterminate(); - yy_fatal_error("Unexpected token"); + if(0) { + yy_top_state(); /* Just to use this function. */ + yy_fatal_error("Parse error"); + } return -1; } diff --git a/libasn1parser/asn1p_value.c b/libasn1parser/asn1p_value.c index fb3a9453..b3824097 100644 --- a/libasn1parser/asn1p_value.c +++ b/libasn1parser/asn1p_value.c @@ -110,13 +110,12 @@ asn1p_value_fromint(asn1_integer_t i) { asn1p_value_t * asn1p_value_clone(asn1p_value_t *v) { - asn1p_value_t *clone; + asn1p_value_t *clone = NULL; if(v) { switch(v->type) { case ATV_NOVALUE: - return calloc(1, sizeof(*v)); - case ATV_REFERENCED: - return asn1p_value_fromref(v->value.reference, 1); + case ATV_NULL: + return calloc(1, sizeof(*clone)); case ATV_REAL: return asn1p_value_fromdouble(v->value.v_double); case ATV_INTEGER: @@ -140,7 +139,24 @@ asn1p_value_clone(asn1p_value_t *v) { case ATV_BITVECTOR: return asn1p_value_frombuf(v->value.binary_vector.bits, v->value.binary_vector.size_in_bits, 1); + case ATV_REFERENCED: + return asn1p_value_fromref(v->value.reference, 1); + case ATV_CHOICE_IDENTIFIER: { + char *id = v->value.choice_identifier.identifier; + clone = calloc(1, sizeof(*clone)); + if(!clone) return NULL; + clone->type = v->type; + id = strdup(id); + if(!id) { asn1p_value_free(clone); return NULL; } + clone->value.choice_identifier.identifier = id; + v = asn1p_value_clone(v->value.choice_identifier.value); + if(!v) { asn1p_value_free(clone); return NULL; } + clone->value.choice_identifier.value = v; + return clone; + } } + + assert(!"UNREACHABLE"); } return v; } @@ -150,16 +166,14 @@ asn1p_value_free(asn1p_value_t *v) { if(v) { switch(v->type) { case ATV_NOVALUE: + case ATV_NULL: break; - case ATV_REFERENCED: - asn1p_ref_free(v->value.reference); - break; + case ATV_REAL: case ATV_INTEGER: case ATV_MIN: case ATV_MAX: case ATV_FALSE: case ATV_TRUE: - case ATV_REAL: /* No freeing necessary */ break; case ATV_STRING: @@ -171,6 +185,13 @@ asn1p_value_free(asn1p_value_t *v) { assert(v->value.binary_vector.bits); free(v->value.binary_vector.bits); break; + case ATV_REFERENCED: + asn1p_ref_free(v->value.reference); + break; + case ATV_CHOICE_IDENTIFIER: + free(v->value.choice_identifier.identifier); + asn1p_value_free(v->value.choice_identifier.value); + break; } free(v); } diff --git a/libasn1parser/asn1p_value.h b/libasn1parser/asn1p_value.h index 087521b1..5310b01f 100644 --- a/libasn1parser/asn1p_value.h +++ b/libasn1parser/asn1p_value.h @@ -13,9 +13,9 @@ typedef struct asn1p_value_s { */ enum { ATV_NOVALUE, - ATV_REFERENCED, - ATV_INTEGER, - ATV_REAL, + ATV_NULL, /* A "NULL" value of type NULL. */ + ATV_REAL, /* A constant floating-point value */ + ATV_INTEGER, /* An integer constant */ ATV_MAX, ATV_MIN, ATV_TRUE, @@ -23,6 +23,8 @@ typedef struct asn1p_value_s { ATV_STRING, ATV_UNPARSED, ATV_BITVECTOR, + ATV_REFERENCED, /* Reference to a value defined elsewhere */ + ATV_CHOICE_IDENTIFIER, /* ChoiceIdentifier value */ } type; /* Value type and location */ union { @@ -40,6 +42,10 @@ typedef struct asn1p_value_s { uint8_t *bits; int size_in_bits; } binary_vector; + struct { + char *identifier; + struct asn1p_value_s *value; + } choice_identifier; } value; } asn1p_value_t; diff --git a/libasn1parser/asn1p_y.c b/libasn1parser/asn1p_y.c index 7d927e97..4cbd21fe 100644 --- a/libasn1parser/asn1p_y.c +++ b/libasn1parser/asn1p_y.c @@ -182,7 +182,7 @@ typedef union { 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 @@ typedef union { -#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 @@ static const short yyprhs[] = { 0, 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 @@ static const short yyrline[] = { 0, 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 @@ static const char * const yytname[] = { "$","error","$undefined.","TOK_PPEQ", "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 @@ static const short yyr1[] = { 0, 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 @@ static const short yyr2[] = { 0, 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,13 +2274,26 @@ case 116: 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); ; break;} case 117: #line 1191 "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[-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); @@ -2299,8 +2303,8 @@ case 117: 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 @@ case 118: } ; 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 @@ case 119: 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 @@ case 120: 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 @@ case 125: 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 @@ case 133: 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 @@ case 134: 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 @@ case 135: 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 @@ case 136: 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 @@ case 152: 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 @@ case 153: 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 @@ case 176: 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 @@ case 180: 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 @@ case 181: 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 @@ case 186: 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 @@ case 187: 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 @@ case 188: 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 @@ case 202: 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 @@ case 210: 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 @@ case 218: 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 @@ case 220: 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 @@ case 221: 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 @@ case 222: 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 @@ case 223: 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 @@ case 225: 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 @@ case 238: 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 @@ case 240: ; 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 @@ case 241: 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 @@ case 242: 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 @@ yyerrhandle: } return 1; } -#line 1940 "asn1p_y.y" +#line 1965 "asn1p_y.y" diff --git a/libasn1parser/asn1p_y.h b/libasn1parser/asn1p_y.h index 375b845f..788f2d9e 100644 --- a/libasn1parser/asn1p_y.h +++ b/libasn1parser/asn1p_y.h @@ -17,7 +17,7 @@ typedef union { 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; diff --git a/libasn1parser/asn1p_y.y b/libasn1parser/asn1p_y.y index bc195222..ae63090e 100644 --- a/libasn1parser/asn1p_y.y +++ b/libasn1parser/asn1p_y.y @@ -74,7 +74,7 @@ static asn1p_value_t * 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; @@ -236,7 +236,7 @@ static asn1p_value_t * %type optValueSetBody %type ValueSetBody %type ValueSetElement -%type InlineOrDefinedValue +%type Value %type DefinedValue %type SignedNumber %type ComponentTypeLists @@ -1178,6 +1178,16 @@ ComplexTypeReference: checkmem(ret == 0); free($1); } + | ObjectClassReference '.' TypeRefName { + int ret; + $$ = asn1p_ref_new(yylineno); + checkmem($$); + ret = asn1p_ref_add_component($$, $1, RLT_UNKNOWN); + checkmem(ret == 0); + ret = asn1p_ref_add_component($$, $3, RLT_UNKNOWN); + checkmem(ret == 0); + free($1); + } | TOK_typereference '.' Identifier { int ret; $$ = asn1p_ref_new(yylineno); @@ -1258,7 +1268,7 @@ ClassFieldName: * === EOF === */ ValueDefinition: - Identifier DefinedTypeRef TOK_PPEQ InlineOrDefinedValue { + Identifier DefinedTypeRef TOK_PPEQ Value { $$ = $2; assert($$->Identifier == NULL); $$->Identifier = $1; @@ -1267,13 +1277,34 @@ ValueDefinition: } ; -InlineOrDefinedValue: - '{' { asn1p_lexer_hack_push_opaque_state(); } - Opaque /* '}' */ { +Value: + Identifier ':' Value { + $$ = asn1p_value_fromint(0); + checkmem($$); + $$->type = ATV_CHOICE_IDENTIFIER; + $$->value.choice_identifier.identifier = $1; + $$->value.choice_identifier.value = $3; + } + | '{' { asn1p_lexer_hack_push_opaque_state(); } Opaque /* '}' */ { $$ = asn1p_value_frombuf($3.buf, $3.len, 0); checkmem($$); $$->type = ATV_UNPARSED; } + | TOK_NULL { + $$ = asn1p_value_fromint(0); + checkmem($$); + $$->type = ATV_NULL; + } + | TOK_FALSE { + $$ = asn1p_value_fromint(0); + checkmem($$); + $$->type = ATV_FALSE; + } + | TOK_TRUE { + $$ = asn1p_value_fromint(0); + checkmem($$); + $$->type = ATV_TRUE; + } | TOK_bstring { $$ = _convert_bitstring2binary($1, 'B'); checkmem($$); @@ -1394,11 +1425,11 @@ BasicString: TOK_BMPString { $$ = ASN_STRING_BMPString; } | TOK_GeneralString { $$ = ASN_STRING_GeneralString; - fprintf(stderr, "WARNING: GeneralString is not fully supported"); + fprintf(stderr, "WARNING: GeneralString is not fully supported\n"); } | TOK_GraphicString { $$ = ASN_STRING_GraphicString; - fprintf(stderr, "WARNING: GraphicString is not fully supported"); + fprintf(stderr, "WARNING: GraphicString is not fully supported\n"); } | TOK_IA5String { $$ = ASN_STRING_IA5String; } | TOK_ISO646String { $$ = ASN_STRING_ISO646String; } @@ -1406,14 +1437,14 @@ BasicString: | TOK_PrintableString { $$ = ASN_STRING_PrintableString; } | TOK_T61String { $$ = ASN_STRING_T61String; - fprintf(stderr, "WARNING: T61String is not fully supported"); + fprintf(stderr, "WARNING: T61String is not fully supported\n"); } | TOK_TeletexString { $$ = ASN_STRING_TeletexString; } | TOK_UniversalString { $$ = ASN_STRING_UniversalString; } | TOK_UTF8String { $$ = ASN_STRING_UTF8String; } | TOK_VideotexString { $$ = ASN_STRING_VideotexString; - fprintf(stderr, "WARNING: VideotexString is not fully supported"); + fprintf(stderr, "WARNING: VideotexString is not fully supported\n"); } | TOK_VisibleString { $$ = ASN_STRING_VisibleString; } | TOK_ObjectDescriptor { $$ = ASN_STRING_ObjectDescriptor; } @@ -1589,7 +1620,6 @@ ConstraintValue: $$ = asn1p_value_frombuf($1.buf, $1.len, 0); checkmem($$); } - | TOK_FALSE { $$ = asn1p_value_fromint(0); checkmem($$); @@ -1754,26 +1784,21 @@ ComponentIdList: */ optMarker: - { $$ = EM_NOMARK; } + { + $$.flags = EM_NOMARK; + $$.default_value = 0; + } | Marker { $$ = $1; } ; Marker: TOK_OPTIONAL { - $$ = EM_OPTIONAL; + $$.flags = EM_OPTIONAL; + $$.default_value = 0; } - | TOK_DEFAULT DefaultValue { - $$ = EM_DEFAULT; - /* FIXME: store DefaultValue somewhere */ - } - ; - -DefaultValue: - ConstraintValue { - } - | BasicTypeId { - } - | '{' { asn1p_lexer_hack_push_opaque_state(); } Opaque /* '}' */ { + | TOK_DEFAULT Value { + $$.flags = EM_DEFAULT; + $$.default_value = $2; } ;