]> granicus.if.org Git - sudo/commitdiff
Fully qualified hosts w/ wildcards were not matching the FQHOST token type.
authorTodd C. Miller <Todd.Miller@courtesan.com>
Thu, 23 Mar 2000 04:38:20 +0000 (04:38 +0000)
committerTodd C. Miller <Todd.Miller@courtesan.com>
Thu, 23 Mar 2000 04:38:20 +0000 (04:38 +0000)
There's really no need for a separate token for fully-qualified vs.
unqualified anymore so FQHOST is now history and hostname_matches
now decides which hostname (short or long) to check based on whether
or not the pattern contains a '.'.

lex.yy.c
parse.c
parse.lex
parse.yacc

index d034fcaa45f45092ed98a1b6d0c81f1eefd9c356..4e9ff8260254a15c030acaf8d27c77de82598591 100644 (file)
--- a/lex.yy.c
+++ b/lex.yy.c
@@ -284,63 +284,62 @@ static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
        *yy_cp = '\0'; \
        yy_c_buf_p = yy_cp;
 
-#define YY_NUM_RULES 32
-#define YY_END_OF_BUFFER 33
-static yyconst short int yy_accept[488] =
+#define YY_NUM_RULES 31
+#define YY_END_OF_BUFFER 32
+static yyconst short int yy_accept[472] =
     {   0,
-        0,    0,    0,    0,    0,    0,    0,    0,   33,   30,
-        1,    7,   11,   30,   30,   21,   31,   30,   10,   30,
-       30,   30,   30,   13,   12,   25,   25,   25,   31,   30,
-       25,   25,   25,   25,   25,    9,    6,    9,    9,    9,
-        6,    9,    9,    9,    9,    6,    6,    9,    9,    9,
-       31,    9,   23,   23,   23,   24,   23,   23,   23,   23,
-       23,   22,   22,   22,   31,   23,   26,    5,   26,   26,
-       26,   26,   26,   26,   26,   26,   25,   25,   25,   31,
-       26,   30,    0,    1,   11,   30,    0,    8,    0,   17,
-        0,   16,    0,   29,   29,   30,   30,   30,   30,   30,
-
-       30,   30,   25,   25,   25,   30,    2,   30,   30,   30,
-       30,   30,    9,    9,    9,    0,    9,    0,    9,    9,
-        9,    9,    9,    9,    9,    9,    9,    9,    9,    3,
-        3,   23,    0,   17,    0,   16,    0,   23,   23,   23,
-       23,   23,   23,   23,   23,   22,   22,   22,   23,   26,
-        0,   26,    0,    0,   26,    0,    5,    0,   17,    0,
-       16,    0,   26,   26,   26,   26,   26,   26,   26,   26,
-       25,   25,   25,   26,   30,   30,   30,   20,   25,   25,
-        0,   30,   30,   30,   30,   30,   17,   16,    9,    9,
-        9,    9,    9,    9,   23,   23,   23,   20,   22,   22,
-
-        4,    4,    0,    4,   26,   26,   26,   26,   20,   25,
-       25,   30,   30,   30,   30,   30,   25,   25,   30,   30,
-       30,    9,    9,    9,    9,    9,    9,    9,   23,   23,
-       23,   23,   23,   22,   22,    4,   26,   26,   26,   26,
-       26,   25,   25,   30,   30,   30,   25,   25,   30,   30,
-        9,    9,    9,    9,    9,   23,   23,   23,   22,   22,
-       26,   26,   26,   25,   25,   30,   30,   30,   30,   30,
-       25,   25,   30,   30,    9,    9,    9,    9,    9,    9,
-        9,   23,   23,   23,   23,   23,   22,   22,   26,   26,
-       26,   26,   26,   25,   25,   18,   18,   18,   25,    0,
-
-       15,   30,   30,    9,    9,    9,    9,   18,   18,   18,
-       22,   18,   18,   18,   25,   30,   18,   18,   18,   18,
-       25,   30,   27,    9,    9,    9,    9,    9,    9,   23,
-       18,   18,   18,   18,   22,   26,   18,   18,   18,   18,
-       25,   30,   19,   19,   19,    0,   14,   30,   27,    9,
-        9,    9,    9,   23,   19,   19,   19,   26,   19,   19,
-       19,   30,   30,   19,   19,   19,   19,   19,   28,    9,
-        9,    9,    9,    9,    9,    9,   23,   23,   19,   19,
-       19,   19,   19,   26,   26,   19,   19,   19,   19,   19,
-       30,   30,   30,   19,   19,    9,    9,    9,    9,    9,
-
-       23,   23,   23,   19,   19,   26,   26,   26,   19,   19,
-       30,   30,   30,   30,   30,    9,    9,    9,    9,    9,
-       23,   23,   23,   23,   23,   26,   26,   26,   26,   26,
-       30,   30,   30,    9,    9,    9,   23,   23,   23,   26,
-       26,   26,   30,   30,   30,   30,   30,    9,    9,    9,
-        9,    9,   23,   23,   23,   23,   23,   26,   26,   26,
-       26,   26,   18,   18,   18,    9,    9,    9,   18,   18,
-       18,   18,   18,   18,   18,   18,   18,    9,    9,    9,
-       18,   18,   18,   18,   18,   18,    0
+        0,    0,    0,    0,    0,    0,    0,    0,   32,   29,
+        1,    7,   11,   29,   29,   20,   30,   29,   10,   29,
+       29,   29,   29,   13,   12,   24,   24,   24,   30,   24,
+       24,   24,   24,   24,    9,    6,    9,    9,    9,    6,
+        9,    9,    9,    9,    6,    6,    9,    9,    9,   30,
+       22,   22,   22,   23,   22,   22,   22,   22,   22,   21,
+       21,   21,   30,   25,    5,   25,   25,   25,   25,   25,
+       25,   25,   25,   24,   24,   24,   30,   29,    0,    1,
+       11,   29,    0,    8,    0,   17,    0,   16,    0,   28,
+       28,   29,   29,   29,   29,   29,   24,   24,   24,   29,
+
+        2,   29,   29,   29,   29,   29,    9,    9,    9,    0,
+        9,    0,    9,    9,    9,    9,    9,    9,    9,    9,
+        9,    3,    3,   22,    0,   17,    0,   16,    0,   22,
+       22,   22,   22,   22,   22,   21,   21,   21,   22,   25,
+        0,   25,    0,    0,   25,    0,    5,    0,   17,    0,
+       16,    0,   25,   25,   25,   25,   25,   25,   24,   24,
+       24,   25,   29,   29,   29,   24,   24,    0,   29,   29,
+       29,   29,   29,   17,   16,    9,    9,    9,    9,    9,
+       22,   22,   22,   21,   21,    4,    4,    0,    4,   25,
+       25,   25,   25,   24,   24,   29,   29,   29,   29,   29,
+
+       24,   24,   29,   29,   29,    9,    9,    9,    9,    9,
+        9,    9,   22,   22,   22,   22,   22,   21,   21,    4,
+       25,   25,   25,   25,   25,   24,   24,   29,   29,   29,
+       24,   24,   29,   29,    9,    9,    9,    9,    9,   22,
+       22,   22,   21,   21,   25,   25,   25,   24,   24,   29,
+       29,   29,   29,   29,   24,   24,   29,   29,    9,    9,
+        9,    9,    9,    9,    9,   22,   22,   22,   22,   22,
+       21,   21,   25,   25,   25,   25,   25,   24,   24,   18,
+       18,   18,   24,    0,   15,   29,   29,    9,    9,    9,
+        9,   18,   18,   18,   21,   18,   18,   18,   24,   29,
+
+       18,   18,   18,   18,   24,   29,   26,    9,    9,    9,
+        9,    9,    9,   22,   18,   18,   18,   18,   21,   25,
+       18,   18,   18,   18,   24,   29,   19,   19,   19,    0,
+       14,   29,   26,    9,    9,    9,    9,   22,   19,   19,
+       19,   25,   19,   19,   19,   29,   29,   19,   19,   19,
+       19,   19,   27,    9,    9,    9,    9,    9,    9,    9,
+       22,   22,   19,   19,   19,   19,   19,   25,   25,   19,
+       19,   19,   19,   19,   29,   29,   29,   19,   19,    9,
+        9,    9,    9,    9,   22,   22,   22,   19,   19,   25,
+       25,   25,   19,   19,   29,   29,   29,   29,   29,    9,
+
+        9,    9,    9,    9,   22,   22,   22,   22,   22,   25,
+       25,   25,   25,   25,   29,   29,   29,    9,    9,    9,
+       22,   22,   22,   25,   25,   25,   29,   29,   29,   29,
+       29,    9,    9,    9,    9,    9,   22,   22,   22,   22,
+       22,   25,   25,   25,   25,   25,   18,   18,   18,    9,
+        9,    9,   18,   18,   18,   18,   18,   18,   18,   18,
+       18,    9,    9,    9,   18,   18,   18,   18,   18,   18,
+        0
     } ;
 
 static yyconst int yy_ec[256] =
@@ -349,16 +348,16 @@ static yyconst int yy_ec[256] =
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    2,    4,    5,    6,    1,    7,    1,    1,    8,
-        9,    1,   10,   11,   12,   13,   14,   15,   16,   17,
-       18,   19,   20,   21,   21,   21,   21,   22,    1,    1,
-       23,    1,    1,   24,   25,   26,   27,   28,   26,   26,
-       26,   29,   26,   26,   26,   26,   26,   30,   31,   32,
-       26,   33,   34,   26,   35,   26,   36,   26,   26,   26,
-        1,   37,    1,    1,   38,    1,   39,   40,   40,   41,
-
-       42,   43,   40,   40,   44,   40,   40,   45,   46,   47,
-       48,   40,   40,   49,   50,   51,   52,   40,   40,   40,
-       40,   40,    1,    1,    1,    1,    1,    1,    1,    1,
+        9,    1,   10,   11,    1,   12,   13,   14,   15,   16,
+       17,   18,   19,   20,   20,   20,   20,   21,    1,    1,
+       22,    1,    1,   23,   24,   25,   26,   27,   25,   25,
+       25,   28,   25,   25,   25,   25,   25,   29,   30,   31,
+       25,   32,   33,   25,   34,   25,   35,   25,   25,   25,
+        1,   36,    1,    1,   37,    1,   38,    1,    1,   39,
+
+       40,   41,    1,    1,   42,    1,    1,   43,   44,   45,
+       46,    1,    1,   47,   48,   49,   50,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -375,932 +374,807 @@ static yyconst int yy_ec[256] =
         1,    1,    1,    1,    1
     } ;
 
-static yyconst int yy_meta[53] =
+static yyconst int yy_meta[51] =
     {   0,
         1,    2,    3,    4,    1,    5,    1,    4,    4,    1,
         2,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    2,    6,    4,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    7,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1
+        2,    6,    4,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    7,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1
     } ;
 
-static yyconst short int yy_base[522] =
+static yyconst short int yy_base[497] =
     {   0,
-        0,   26,   61,    0,  113,    0,  165,    0, 1144, 1106,
-     1132, 3524, 1127,  216, 1093, 3524, 3524, 1092, 3524,  222,
-      247,  254,  217, 3524, 3524,  284, 1096, 1097,  335,  345,
-     1075, 1078, 1071, 1066, 1066,    0, 3524, 1111,  345,  380,
-     3524,  235,  405,  414,  423, 3524,    0,  444, 1083, 1088,
-      391,  482, 1074, 1071, 1070, 3524, 1069,  515,  540,  261,
-      232,  577, 1073, 1074,  628,  638, 1061, 3524,  675,  711,
-     1055, 1054,  525,  736,  380,  390,  773, 1059, 1063,  824,
-      834, 1048,  871, 1082, 1079,  894, 1078, 3524, 1074, 1039,
-      930, 1038,  953,  539,    0,  963,  208,    0,    0, 1050,
-
-        0, 1000,    0, 1035, 1032,  220, 3524, 1011, 1014,  998,
-      992,  994,    0, 1008,  542,    0,  638,    0,  238,  552,
-      998, 1025, 1034,  672,    0, 1055,    0,  977,  974,   54,
-     3524,  967, 1078,  966, 1101,  965, 1124,  699, 1134,  270,
-        0,    0,  978,    0, 1171,    0,  966,  940,  348,  926,
-     1207, 1230,  249,  303, 1266,  956, 3524,  955,  919, 1302,
-      903, 1325,  721, 1335,  354, 1360,    0,  916, 1397, 1434,
-     1471,  901,  870,  353, 1511, 1520, 1529, 1550,  874,  858,
-      240,  850,  851,  838,  835,  822, 1586, 1622, 1647, 1656,
-     1665, 1686,  820,  810, 1698, 1707, 1716, 1737,  818,  800,
-
-      794, 3524,  250,    0,  825, 1762, 1771, 1780, 1801,  804,
-      762, 1826,  374, 1835, 1844, 1853,  761,  746,  743,  698,
-      697,  722,  733, 1862, 1871,  746,  710,  696, 1880,  379,
-     1889, 1898, 1907,  694,  682,  251, 1916,  468, 1925, 1934,
-     1943,  676,  673, 1952, 1961, 1970,  662,  667,  624,  603,
-     1979, 1988, 1997,  604,  607, 2006, 2015, 2024,  600,  605,
-     2033, 2042, 2051,  554,  558, 2060,  491, 2069, 2078, 2087,
-      549,  444,  529,  493,  821,  528, 2096, 2105,  868,  502,
-      504, 2114,  517, 2123, 2132, 2141,  496,  520, 2150,  527,
-     2159, 2168, 2177,  491,  578, 2186,  891,  752,  497,  579,
-
-     3524,  411,  397, 2194, 2202, 2210,  409, 2219,  904,  927,
-      391, 2228,  950,  970,  387, 2236,  667,    0,    0,  391,
-      638,  347,   36,  976,  338, 2244, 2252, 1001,  680, 2260,
-      679,    0,    0,  327,  699, 2268,  680,    0,    0,  326,
-      704, 2277, 2286, 2295, 2304,  709, 3524,  295, 3524, 2313,
-     2322, 2331, 2340, 2349, 2358, 2367, 2376, 2385, 2394, 2403,
-     2412, 2421,  562, 2430, 2439, 2448, 2457,  913,    0, 1007,
-      329, 2466, 2475, 2484, 2493,  628, 2502,  687, 2511, 2520,
-     2529, 2538, 1057, 2547,  747, 2556, 2565, 2574, 2583, 1080,
-     2592, 2601, 2610, 2619,  760, 2628, 2637, 2646, 1014,  520,
-
-     2655, 2664, 2673, 2682,  841, 2691, 2700, 2709, 2718,  898,
-     2725,  863, 2750, 2759, 2768, 1121,  328, 2777, 2786, 1143,
-     2793,  864, 2818, 2827, 2836, 2843,  914, 2868, 2877, 2886,
-     2895, 2904, 2913, 2922, 2931, 2940, 2949, 2958, 2967, 2976,
-     2985, 2994, 3003,  923, 3012, 3021, 3030, 1149,  282, 3039,
-     3048, 1173, 3057,  935, 3066, 3075, 3084, 3093,  936, 3102,
-     3111, 3120, 3129, 3138, 3147, 1179, 1186, 1204, 3156, 3165,
-     3174, 3183, 3192, 3201,  256, 3208, 1227,    0, 1240, 1263,
-      255, 3231, 1277,  192, 3254, 1300, 3524, 3291, 3298, 3305,
-     3312, 3319, 3326, 3332, 3339, 3346, 3352, 3359, 3366, 3373,
-
-     3380, 3387, 3394, 3401, 3408, 3415, 3422, 3429, 3433, 3440,
-     3447, 3454, 3460, 3467, 3474, 3481, 3488, 3495, 3502, 3509,
-     3516
+        0,   25,   59,    0,  109,    0,  159,    0, 1170, 1133,
+     1166, 2983, 1163,  208, 1130, 2983, 2983, 1123, 2983,  214,
+      239,  246,  224, 2983, 2983,  275, 1125, 1130,  324, 1101,
+     1102, 1095, 1090, 1090,    0, 2983, 1125,  330,  332, 2983,
+      226,  357,  366,  375, 2983,    0,  382, 1090, 1087,  418,
+     1072, 1047, 1046, 2983, 1045,  419,  444,  253,  342,  480,
+     1040, 1045,  529, 1032, 2983,  551,  586, 1030, 1025,  429,
+      611,  429,  452,  647, 1030, 1027,  696, 1012,  718, 1045,
+     1042,  740, 1041, 2983, 1038, 1004,  775, 1003,  797,  535,
+        0,  807,  209,    0,    0, 1018,    0, 1006,  993,  211,
+
+     2983,  179,  192,  198,  190,   18,    0, 1021,  557,    0,
+      560,    0,  230,  458, 1001,  832,  841,  586,    0,  975,
+      958,   53, 2983,  954,  860,  949,  882,  948,  904,  609,
+      914,  213,    0,    0,  957,    0,  925,  922,  294,  916,
+      949,  971,  293,  400, 1006,  946, 2983,  920,  878, 1041,
+      875, 1063,  632, 1073,  331,    0,    0,  890,    0,  876,
+      869,  448, 1098, 1107, 1116,  877,  859,  275,  247,  306,
+      301,  313,  394, 1135, 1170, 1195, 1204, 1213,  856,  846,
+     1222, 1231, 1240,  846,  821,  809, 2983,  326,    0,  837,
+     1249, 1258, 1267,  792,  782, 1274,  352, 1299, 1308, 1317,
+
+      774,  769,  395,  329,  386,  694,  791, 1326, 1335,  716,
+      767,  760, 1344,  467, 1353, 1362, 1371,  761,  750,  421,
+     1380,  534, 1389, 1398, 1407,  742,  738, 1416, 1425, 1434,
+      739,  738,  465,  327, 1443, 1452, 1461,  726,  719, 1470,
+     1479, 1488,  712,  711, 1497, 1506, 1515,  704,  689, 1522,
+      545, 1547, 1556, 1565,  614,  481,  499,  498,  738,  634,
+     1574, 1583,  752,  576,  546, 1592,  563, 1601, 1610, 1619,
+      571,  589, 1628,  580, 1637, 1646, 1655,  550,  612, 1663,
+      773,  795,  557,  618, 2983,  382,  576, 1687, 1695, 1703,
+      550, 1712,  814,  821,  522, 1721,  858,  880,  518, 1728,
+
+      550,    0,    0,  516,  635,  540,  598,  902,  478, 1752,
+     1760,  922,  648, 1768,  622,    0,    0,  468,  649, 1776,
+      688,    0,    0,  462,  700, 1785, 1794, 1803, 1812,  704,
+     2983,  667, 2983, 1821, 1830, 1839, 1848, 1857, 1866, 1875,
+     1884, 1893, 1902, 1911, 1920, 1927,  711, 1952, 1961, 1970,
+     1979,  766,  417,  928,  392, 1988, 1997, 2006, 2015,  851,
+     2024,  724, 2033, 2042, 2051, 2060,  873, 2069,  738, 2078,
+     2087, 2096, 2105,  947, 2114, 2123, 2132, 2141,  950, 2150,
+     2159, 2168,  981,  628, 2177, 2186, 2195, 2204,  953, 2213,
+     2222, 2231, 2240,  988, 2247,  805, 2272, 2281, 2290, 1016,
+
+      336, 2299, 2308, 1004, 2315,  888, 2340, 2349, 2358, 2365,
+      942, 2390, 2399, 2408, 2417, 2426, 2435, 2444, 2453, 2462,
+     2471, 2480, 2489, 2498, 2507, 2516, 2525,  969, 2534, 2543,
+     2552, 1039,  272, 2561, 2570, 1061, 2579,  975, 2588, 2597,
+     2606, 2615,  976, 2624, 2633, 2642, 2651, 2660, 2669, 1080,
+     1087, 1133, 2678, 2687, 2696, 2705, 2714, 2723,  243, 2730,
+     1146,    0, 1169, 1180,  238, 2753, 1285,  191, 2776, 1533,
+     2983, 2812, 2819, 2826, 2833, 2840, 2847, 2853, 2860, 2867,
+     2873, 2880, 2887, 2894, 2901, 2908, 2915, 2922, 2929, 2936,
+     2943, 2950, 2954, 2961, 2968, 2975
+
     } ;
 
-static yyconst short int yy_def[522] =
+static yyconst short int yy_def[497] =
     {   0,
-      487,    1,  487,    3,  487,    5,  487,    7,  487,  488,
-      487,  487,  487,  489,  490,  487,  487,  491,  487,  492,
-      488,   21,   21,  487,  487,  487,   26,   26,  488,   26,
-       26,   26,   26,   26,   26,  493,  487,  493,  494,  495,
-      487,  496,  493,  493,  493,  487,  493,  487,   48,   48,
-      487,   48,  497,  497,  498,  487,  499,  500,  497,   59,
-       59,  487,   62,   62,  497,   62,  501,  487,  502,  503,
-      504,  505,  506,  501,   74,   74,  487,   77,   77,  501,
-       77,  488,  488,  487,  487,  489,  507,  487,  489,  490,
-      490,  491,  491,  492,  508,  488,  488,   21,   21,   21,
-
-       30,  509,   26,   26,   26,  488,  487,   30,   30,   30,
-       30,   30,  493,  493,  494,  510,  495,  511,  496,  493,
-      493,  493,  493,  493,   52,  512,   48,   48,   48,  487,
-      487,  497,  497,  498,  498,  499,  499,  500,  497,  497,
-       59,   59,   59,   66,  513,   62,   62,   62,  497,  501,
-      501,  502,  514,  502,  515,  516,  487,  515,  517,  517,
-      518,  518,  519,  501,  501,  501,  166,  166,  520,  521,
-      487,  171,  171,  501,   21,   21,   21,  509,   26,   26,
-      487,   30,   30,   30,   30,   30,  510,  511,  493,  493,
-      493,  512,   48,   48,   59,   59,   59,  513,   62,   62,
-
-      501,  487,  514,  152,  152,  166,  166,  166,  521,  171,
-      171,   21,  488,   21,   21,   21,   26,   26,   30,   30,
-       30,  493,  493,  493,  493,  493,   48,   48,   59,  497,
-       59,   59,   59,   62,   62,  514,  166,  501,  166,  166,
-      166,  171,  171,   21,   21,   21,   26,   26,   30,   30,
-      493,  493,  493,   48,   48,   59,   59,   59,   62,   62,
-      166,  166,  166,  171,  171,   21,  488,   21,   21,   21,
-       26,   26,   30,   30,  493,  493,  493,  493,  493,   48,
-       48,   59,  497,   59,   59,   59,   62,   62,  166,  501,
-      166,  166,  166,  171,  171,   21,  296,  296,   26,  487,
-
-      487,   30,   30,  493,  493,  493,   48,   59,  308,  308,
-       62,  166,  312,  312,  171,  296,  488,  296,  296,  296,
-       26,   30,   30,  493,  493,  493,  493,  493,   48,  308,
-      497,  308,  308,  308,   62,  312,  501,  312,  312,  312,
-      171,   21,   21,   21,   21,  487,  487,   30,  487,  493,
-      493,  493,  493,   59,   59,   59,   59,  166,  166,  166,
-      166,   21,  488,   21,   21,   21,   21,  488,   30,  493,
-      493,  493,  493,  493,  493,  493,   59,  497,   59,   59,
-       59,   59,  497,  166,  501,  166,  166,  166,  166,  501,
-       21,   21,   21,   21,  488,  493,  493,  493,  493,  493,
-
-       59,   59,   59,   59,  497,  166,  166,  166,  166,  501,
-      488,  488,   21,   21,   21,  493,  493,  493,  493,  493,
-      497,  497,   59,   59,   59,  501,  501,  166,  166,  166,
-       21,   21,   21,  493,  493,  493,   59,   59,   59,  166,
-      166,  166,   21,  488,   21,   21,   21,  493,  493,  493,
-      493,  493,   59,  497,   59,   59,   59,  166,  501,  166,
-      166,  166,   21,   21,   21,  493,  493,  493,   59,   59,
-       59,  166,  166,  166,  488,  488,  488,  493,  493,  493,
-      497,  497,  497,  501,  501,  501,    0,  487,  487,  487,
-      487,  487,  487,  487,  487,  487,  487,  487,  487,  487,
-
-      487,  487,  487,  487,  487,  487,  487,  487,  487,  487,
-      487,  487,  487,  487,  487,  487,  487,  487,  487,  487,
-      487
+      471,    1,  471,    3,  471,    5,  471,    7,  471,  472,
+      471,  471,  471,  473,  474,  471,  471,  475,  471,  476,
+      472,   21,   21,  471,  471,  471,   26,   26,  472,   26,
+       26,   26,   26,   26,  477,  471,  477,  478,  479,  471,
+      480,  477,  477,  477,  471,  477,  477,   47,   47,  471,
+      481,  481,  482,  471,  483,  484,  481,   57,   57,  471,
+       60,   60,  481,  485,  471,  486,  487,  488,  489,  490,
+      485,   71,   71,  471,   74,   74,  485,  472,  472,  471,
+      471,  473,  491,  471,  473,  474,  474,  475,  475,  476,
+      492,  472,  472,   21,   21,   21,   26,   26,   26,  472,
+
+      471,  472,  472,  472,  472,  472,  477,  477,  478,  493,
+      479,  494,  480,  477,  477,  477,  477,  477,   47,   47,
+       47,  471,  471,  481,  481,  482,  482,  483,  483,  484,
+      481,  481,   57,   57,   57,   60,   60,   60,  481,  485,
+      485,  486,  495,  486,  487,  496,  471,  487,  488,  488,
+      489,  489,  490,  485,  485,   71,   71,   71,   74,   74,
+       74,  485,   21,   21,   21,   26,   26,  471,  472,  472,
+      472,  472,  472,  493,  494,  477,  477,  477,   47,   47,
+       57,   57,   57,   60,   60,  485,  471,  495,  142,  142,
+       71,   71,   71,   74,   74,  472,  472,   21,   21,   21,
+
+       26,   26,  472,  472,  472,  477,  477,  477,  477,  477,
+       47,   47,   57,  481,   57,   57,   57,   60,   60,  495,
+       71,  485,   71,   71,   71,   74,   74,   21,   21,   21,
+       26,   26,  472,  472,  477,  477,  477,   47,   47,   57,
+       57,   57,   60,   60,   71,   71,   71,   74,   74,  472,
+      472,   21,   21,   21,   26,   26,  472,  472,  477,  477,
+      477,  477,  477,   47,   47,   57,  481,   57,   57,   57,
+       60,   60,   71,  485,   71,   71,   71,   74,   74,  472,
+      280,  280,   26,  471,  471,  472,  472,  477,  477,  477,
+       47,   57,  292,  292,   60,   71,  296,  296,   74,  472,
+
+      472,  280,  280,  280,   26,  472,  472,  477,  477,  477,
+      477,  477,   47,  292,  481,  292,  292,  292,   60,  296,
+      485,  296,  296,  296,   74,   21,   21,   21,   21,  471,
+      471,  472,  471,  477,  477,  477,  477,   57,   57,   57,
+       57,   71,   71,   71,   71,  472,  472,   21,   21,   21,
+       21,  472,  472,  477,  477,  477,  477,  477,  477,  477,
+       57,  481,   57,   57,   57,   57,  481,   71,  485,   71,
+       71,   71,   71,  485,   21,   21,   21,   21,  472,  477,
+      477,  477,  477,  477,   57,   57,   57,   57,  481,   71,
+       71,   71,   71,  485,  472,  472,   21,   21,   21,  477,
+
+      477,  477,  477,  477,  481,  481,   57,   57,   57,  485,
+      485,   71,   71,   71,   21,   21,   21,  477,  477,  477,
+       57,   57,   57,   71,   71,   71,   21,  472,   21,   21,
+       21,  477,  477,  477,  477,  477,   57,  481,   57,   57,
+       57,   71,  485,   71,   71,   71,   21,   21,   21,  477,
+      477,  477,   57,   57,   57,   71,   71,   71,  472,  472,
+      472,  477,  477,  477,  481,  481,  481,  485,  485,  485,
+        0,  471,  471,  471,  471,  471,  471,  471,  471,  471,
+      471,  471,  471,  471,  471,  471,  471,  471,  471,  471,
+      471,  471,  471,  471,  471,  471
+
     } ;
 
-static yyconst short int yy_nxt[3577] =
+static yyconst short int yy_nxt[3034] =
     {   0,
        10,   11,   12,   13,   10,   14,   15,   16,   17,   18,
-       19,   10,   10,   20,   21,   22,   23,   21,   21,   21,
-       21,   24,   25,   17,   26,   26,   26,   26,   26,   27,
-       26,   28,   26,   26,   26,   26,   29,   10,   30,   30,
-       30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
-       30,   30,   31,   32,   33,  181,  107,  349,   34,  349,
-       35,   36,   11,   37,   38,   36,   36,   39,   36,   36,
-       40,   41,   36,   36,   42,   43,   44,   45,   43,   43,
-       43,   43,   46,   47,   36,   48,   48,   48,   48,   48,
-       49,   48,   50,   48,   48,   48,   48,   51,   36,   52,
-
-       52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
-       52,   52,   52,   53,   11,   12,   13,   53,   54,   55,
-       17,   56,   57,   19,   53,   53,   58,   59,   60,   61,
-       59,   59,   59,   59,   24,   25,   17,   62,   62,   62,
-       62,   62,   63,   62,   64,   62,   62,   62,   62,   65,
-       53,   66,   66,   66,   66,   66,   66,   66,   66,   66,
-       66,   66,   66,   66,   66,   67,   11,   68,   13,   69,
-       70,   71,   17,   17,   72,   19,   67,   67,   73,   74,
-       75,   76,   74,   74,   74,   74,   24,   25,   17,   77,
-       77,   77,   77,   77,   78,   77,   79,   77,   77,   77,
-
-       77,   80,   67,   81,   81,   81,   81,   81,   81,   81,
-       81,   81,   81,   81,   81,   81,   81,   87,   88,   87,
-       96,  181,  107,   87,   87,   95,   87,   82,  151,   95,
-       95,   99,   99,   99,   99,   99,  100,   87,   87,   87,
-      113,  181,  107,  113,   83,   95,  142,  142,  142,  142,
-      142,  143,   89,  202,  236,  202,   83,  113,   83,   96,
-      113,   97,   97,   97,   97,   97,   97,   97,   98,   98,
-       98,   98,   98,   98,   98,  141,  141,  141,  141,  141,
-      141,  141,  139,   83,   82,  203,  203,  203,   82,   82,
-       82,  133,   83,   82,  448,  101,  102,   82,  103,  103,
-
-      103,  103,  103,  103,  103,  153,  133,  204,  103,  103,
-      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
-       83,  103,  101,  101,  101,  101,  101,  101,  101,  101,
-      101,  101,  101,  101,  101,  101,  106,  107,   82,  205,
-      416,  370,   82,   82,  369,   82,  150,  132,  113,  181,
-      107,  324,  113,  113,  181,  107,   82,   82,   82,  101,
-      101,  101,  101,  101,  101,  101,  164,  113,  113,  101,
-      101,  101,  101,  101,  101,  101,  101,  101,  101,  101,
-      101,  116,  101,  113,  133,  348,  212,  113,  113,  151,
-      151,  229,  130,  107,  166,  166,  166,  166,  166,  166,
-
-      166,  131,  113,  113,  167,  167,  167,  167,  167,  168,
-       83,   82,  131,  131,  341,  133,  118,  120,  335,  121,
-      121,  121,  121,  121,  121,  121,  120,  131,  122,  122,
-      122,  122,  122,  122,  122,  120,  329,  123,  123,  123,
-      123,  123,  124,  121,  113,  300,  323,  113,  113,  113,
-      113,  113,  113,  113,  322,  125,  126,  113,  127,  127,
-      127,  127,  127,  127,  127,  301,  113,  113,  127,  127,
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-      237,  127,  125,  125,  125,  125,  125,  125,  125,  125,
-      125,  125,  125,  125,  125,  125,  125,  125,  125,  125,
-
-      125,  125,  125,  266,  151,  300,  125,  125,  125,  125,
-      125,  125,  125,  125,  125,  125,  125,  125,   95,  125,
-      132,  300,   95,   95,  321,  301,  315,   83,   95,  282,
-      150,  311,   95,   95,  400,  400,  400,  307,   95,  289,
-      275,  301,   95,  303,   82,  113,   95,   95,   95,  113,
-      113,  133,  139,  133,  140,  140,  140,  140,  140,  140,
-      140,  151,   95,  151,  113,  113,  189,  190,  191,  189,
-      189,  189,  189,  302,  362,   83,  133,  132,  116,  300,
-      300,  132,  132,  132,  299,  295,  132,  294,  144,  145,
-      132,  146,  146,  146,  146,  146,  146,  146,   83,  301,
-
-      301,  146,  146,  146,  146,  146,  146,  146,  146,  146,
-      146,  146,  146,  133,  146,  144,  144,  144,  144,  144,
-      144,  144,  144,  144,  144,  144,  144,  144,  144,  149,
-      107,  132,  288,  287,  281,  132,  132,  280,  132,  346,
-      370,  113,  400,  400,  400,  113,  113,  274,  273,  132,
-      132,  132,  144,  144,  144,  144,  144,  144,  144,  347,
-      113,  113,  144,  144,  144,  144,  144,  144,  144,  144,
-      144,  144,  144,  144,  118,  144,  153,  153,  153,  150,
-      316,  346,  153,  153,  120,  153,  121,  121,  121,  121,
-      121,  121,  330,  336,  272,  271,  153,  153,  153,  377,
-
-      346,  347,   95,   83,  132,  346,   95,   95,  265,  264,
-      346,  154,  156,  157,  156,  133,  151,  260,  156,  156,
-      347,  156,   95,  133,   95,  347,  150,  259,   95,   95,
-      347,  255,  156,  156,  156,  133,  251,  252,  253,  251,
-      251,  251,  251,  254,   95,  222,  219,  158,  164,  250,
-      165,  165,  165,  165,  165,  165,  165,  151,  222,  384,
-      223,  223,  223,  223,  223,  223,  319,  319,  319,  319,
-      319,  320,  151,  150,  395,  395,  395,  150,  150,  150,
-      249,  248,  150,  151,  169,  170,  150,  171,  171,  171,
-      171,  171,  171,  171,  247,  243,   83,  171,  171,  171,
-
-      171,  171,  171,  171,  171,  171,  171,  171,  171,  151,
-      171,  169,  169,  169,  169,  169,  169,  169,  169,  169,
-      169,  169,  169,  169,  169,  174,  107,  150,  242,  204,
-      151,  150,  150,  235,  150,  304,  305,  306,  304,  304,
-      304,  304,  234,  228,  227,  150,  150,  150,  169,  169,
-      169,  169,  169,  169,  169,  405,  405,  405,  169,  169,
-      169,  169,  169,  169,  169,  169,  169,  169,  169,  169,
-      219,  169,   82,  221,   82,  411,  421,  133,   82,   82,
-      275,   82,  276,  276,  276,  276,  276,  276,  219,  220,
-      219,  218,   82,   82,   82,   87,   88,   87,  217,   83,
-
-      133,   87,   87,  211,   87,  318,  318,  318,  318,  318,
-      318,  318,  410,  410,  410,   87,   87,   87,  332,  332,
-      332,  332,  332,  332,  332,  362,  426,  395,  395,  395,
-       89,   90,  210,   90,  151,  443,  150,   90,   90,  162,
-       90,  333,  333,  333,  333,  333,  334,  453,  458,   83,
-      151,   90,   90,   90,   92,  160,   92,  157,  157,   83,
-       92,   92,  151,   92,  338,  338,  338,  338,  338,  338,
-      338,  133,  151,  200,   92,   92,   92,  175,  176,  177,
-      175,  175,  175,  175,  339,  339,  339,  339,  339,  340,
-      350,  351,  352,  353,  350,  350,  350,  199,  132,   83,
-
-       82,  137,  135,  133,   82,   82,   82,  194,  193,   82,
-      120,  114,   82,   82,  324,  325,  325,  325,  325,  325,
-      325,  396,  397,  398,  396,  396,  396,  396,  399,  399,
-      399,  399,  399,  399,  399,  186,   83,  120,  185,  121,
-      121,  121,  121,  121,  121,  121,  120,  184,  121,  121,
-      121,  121,  121,  121,  121,  113,  183,  182,  113,  113,
-      113,  113,  113,  113,  113,  180,  179,  113,  113,  377,
-       82,  405,  405,  405,   93,   91,   88,  113,  113,  132,
-       88,  132,   85,   84,   83,  132,  132,  173,  132,  172,
-      162,  160,  384,  133,  410,  410,  410,  151,  148,  132,
-
-      132,  132,  134,  147,  134,  137,  135,  133,  134,  134,
-      133,  134,  129,  128,  114,  112,  151,  111,  110,  109,
-      108,  105,  134,  134,  134,  136,  104,  136,   93,   91,
-       85,  136,  136,   84,  136,  434,  435,  436,  434,  434,
-      434,  434,   83,  487,  487,  136,  136,  136,  195,  196,
-      197,  195,  195,  195,  195,  416,  487,  417,  417,  417,
-      417,  417,  417,  466,  467,  468,  466,  466,  466,  466,
-      133,  132,  487,  487,  487,  132,  132,  132,  487,  487,
-      132,  487,  487,  132,  132,  448,  487,  449,  449,  449,
-      449,  449,  449,  478,  478,  478,  478,  478,  478,  478,
-
-      466,  466,  466,  466,  466,  466,  466,  133,  150,  487,
-      150,  487,  487,  487,  150,  150,  487,  150,  479,  479,
-      479,  479,  479,  480,  478,  487,  487,  487,  150,  150,
-      150,  153,  153,  153,  201,  487,  487,  153,  153,  487,
-      153,  475,  475,  475,  475,  475,  475,  487,  487,  487,
-      487,  153,  153,  153,  478,  478,  478,  478,  478,  478,
-      478,  487,  487,   83,  487,  487,  154,  156,  157,  156,
-      487,  487,  487,  156,  156,  487,  156,  478,  478,  478,
-      478,  478,  478,  487,  487,  487,  487,  156,  156,  156,
-      487,  481,  481,  481,  481,  481,  481,  487,  487,  487,
-
-      487,  487,  158,  159,  487,  159,  487,  487,  487,  159,
-      159,  487,  159,  133,  484,  484,  484,  484,  484,  484,
-      487,  487,  487,  159,  159,  159,  161,  487,  161,  487,
-      487,  487,  161,  161,  487,  161,  151,  487,  487,  487,
-      487,  487,  487,  487,  487,  487,  161,  161,  161,  206,
-      207,  208,  206,  206,  206,  206,  487,  487,  487,  487,
-      487,  487,  487,  487,  487,  487,  487,  487,  487,  487,
-      487,  151,  164,  487,  165,  165,  165,  165,  165,  165,
-      165,  487,  487,  487,  487,  487,  487,  487,  487,  487,
-      487,  487,  487,  487,  487,  487,  151,  150,  487,  487,
-
-      487,  150,  150,  150,  487,  487,  150,  487,  487,  170,
-      150,  487,  487,  487,  487,  487,  487,  487,  487,  487,
-      487,  487,  487,  487,  487,  487,  487,  487,  487,  487,
-      487,  487,  487,  151,  150,  487,  487,  487,  150,  150,
-      150,  487,  487,  150,  487,  487,  150,  150,  487,  487,
-      487,  487,  487,  487,  487,  487,  487,  487,  487,  487,
-      487,  487,  487,  487,  487,  487,  487,  487,  487,  487,
-      151,  150,  487,  487,  487,  150,  150,  150,  487,  487,
-      150,  487,  169,  170,  150,  171,  171,  171,  171,  171,
-      171,  171,  487,  487,  487,  171,  171,  171,  171,  171,
-
-      171,  171,  171,  171,  171,  171,  171,  151,  171,  169,
-      169,  169,  169,  169,  169,  169,  169,  169,  169,  169,
-      169,  169,  169,  212,  487,  213,  213,  213,  213,  213,
-      213,  213,  212,  487,  214,  214,  214,  214,  214,  214,
-      214,  212,  487,  215,  215,  215,  215,  215,  216,  213,
-       82,  487,  487,  487,   82,   82,   82,  487,  487,   82,
-      487,  487,  102,   82,  487,  487,  487,  487,  487,  487,
-      487,  487,  487,  487,  487,  487,  487,  487,  487,  487,
-      487,  487,  487,  487,  487,  487,   83,  487,  487,  487,
-      487,  487,  487,  487,  487,  487,  487,  487,  487,  487,
-
-      487,  487,  487,  487,  487,  487,  487,  487,  487,  487,
-      487,  487,  487,  487,  487,  487,  487,  487,  487,  487,
-      487,  487,  116,  487,  487,  487,  487,  487,  487,  487,
-      487,  487,  487,  487,  487,  487,  487,  487,  487,  487,
-      487,  487,  487,  487,  487,  487,  487,  487,  487,  487,
-      487,  487,  487,  487,  487,  487,  487,  487,  118,  222,
-      487,  223,  223,  223,  223,  223,  223,  223,  222,  487,
-      224,  224,  224,  224,  224,  224,  224,  222,  487,  225,
-      225,  225,  225,  225,  226,  223,  113,  487,  487,  113,
-      113,  113,  113,  113,  113,  113,  487,  487,  126,  113,
-
-      487,  487,  487,  487,  487,  487,  487,  487,  113,  113,
-      229,  487,  230,  230,  230,  230,  230,  230,  230,  229,
-      487,  231,  231,  231,  231,  231,  231,  231,  229,  487,
-      232,  232,  232,  232,  232,  233,  230,  132,  487,  487,
-      487,  132,  132,  132,  487,  487,  132,  487,  487,  145,
-      132,  487,  487,  487,  487,  487,  487,  487,  487,  487,
-      487,  487,  487,  487,  487,  487,  487,  487,  487,  487,
-      487,  487,  487,  133,  237,  487,  238,  238,  238,  238,
-      238,  238,  238,  237,  487,  239,  239,  239,  239,  239,
-      239,  239,  237,  487,  240,  240,  240,  240,  240,  241,
-
-      238,  150,  487,  487,  487,  150,  150,  150,  487,  487,
-      150,  487,  487,  170,  150,  487,  487,  487,  487,  487,
-      487,  487,  487,  487,  487,  487,  487,  487,  487,  487,
-      487,  487,  487,  487,  487,  487,  487,  151,   82,  487,
-      244,  245,  246,  244,  244,  244,  244,  212,  487,  213,
-      213,  213,  213,  213,  213,  213,  212,  487,  213,  213,
-      213,  213,  213,  213,  213,  212,  487,  213,  213,  213,
-      213,  213,  213,   82,  222,  487,  223,  223,  223,  223,
-      223,  223,  223,  222,  487,  223,  223,  223,  223,  223,
-      223,  223,  132,  487,  256,  257,  258,  256,  256,  256,
-
-      256,  229,  487,  230,  230,  230,  230,  230,  230,  230,
-      229,  487,  230,  230,  230,  230,  230,  230,  230,  229,
-      487,  230,  230,  230,  230,  230,  230,  132,  150,  487,
-      261,  262,  263,  261,  261,  261,  261,  237,  487,  238,
-      238,  238,  238,  238,  238,  238,  237,  487,  238,  238,
-      238,  238,  238,  238,  238,  237,  487,  238,  238,  238,
-      238,  238,  238,  150,  266,  487,  267,  267,  267,  267,
-      267,  267,  267,  266,  487,  268,  268,  268,  268,  268,
-      268,  268,  266,  487,  269,  269,  269,  269,  269,  270,
-      267,  275,  487,  276,  276,  276,  276,  276,  276,  276,
-
-      275,  487,  277,  277,  277,  277,  277,  277,  277,  275,
-      487,  278,  278,  278,  278,  278,  279,  276,  282,  487,
-      283,  283,  283,  283,  283,  283,  283,  282,  487,  284,
-      284,  284,  284,  284,  284,  284,  282,  487,  285,  285,
-      285,  285,  285,  286,  283,  289,  487,  290,  290,  290,
-      290,  290,  290,  290,  289,  487,  291,  291,  291,  291,
-      291,  291,  291,  289,  487,  292,  292,  292,  292,  292,
-      293,  290,   82,  487,  296,  297,  298,  296,  296,  296,
-      296,  266,  487,  267,  267,  267,  267,  267,  267,  267,
-      266,  487,  267,  267,  267,  267,  267,  267,  267,  266,
-
-      487,  267,  267,  267,  267,  267,  267,   82,  275,  487,
-      276,  276,  276,  276,  276,  276,  276,  275,  487,  276,
-      276,  276,  276,  276,  276,  276,  132,  487,  308,  309,
-      310,  308,  308,  308,  308,  282,  487,  283,  283,  283,
-      283,  283,  283,  283,  282,  487,  283,  283,  283,  283,
-      283,  283,  283,  282,  487,  283,  283,  283,  283,  283,
-      283,  132,  150,  487,  312,  313,  314,  312,  312,  312,
-      312,  289,  487,  290,  290,  290,  290,  290,  290,  290,
-      289,  487,  290,  290,  290,  290,  290,  290,  290,  289,
-      487,  290,  290,  290,  290,  290,  290,  150,   82,  316,
-
-      317,  317,  317,  317,  317,  317,  317,  324,  325,  325,
-      325,  325,  325,  325,  325,  324,  326,  326,  326,  326,
-      326,  326,  326,  324,  327,  327,  327,  327,  327,  328,
-      325,  132,  330,  331,  331,  331,  331,  331,  331,  331,
-      150,  336,  337,  337,  337,  337,  337,  337,  337,   82,
-      342,  343,  344,  345,  342,  342,  342,  324,  325,  325,
-      325,  325,  325,  325,  325,  324,  325,  325,  325,  325,
-      325,  325,  325,  132,  354,  355,  356,  357,  354,  354,
-      354,  150,  358,  359,  360,  361,  358,  358,  358,  362,
-      487,  363,  363,  363,  363,  363,  363,  363,  362,  487,
-
-      364,  364,  364,  364,  364,  364,  364,  362,  487,  365,
-      365,  365,  365,  365,  366,  367,  362,  487,  368,  368,
-      368,  363,  363,  363,  363,  370,  487,  371,  371,  371,
-      371,  371,  371,  371,  370,  487,  372,  372,  372,  372,
-      372,  372,  372,  370,  487,  373,  373,  373,  373,  373,
-      374,  375,  370,  487,  376,  376,  376,  371,  371,  371,
-      371,  377,  487,  378,  378,  378,  378,  378,  378,  378,
-      377,  487,  379,  379,  379,  379,  379,  379,  379,  377,
-      487,  380,  380,  380,  380,  380,  381,  382,  377,  487,
-      383,  383,  383,  378,  378,  378,  378,  384,  487,  385,
-
-      385,  385,  385,  385,  385,  385,  384,  487,  386,  386,
-      386,  386,  386,  386,  386,  384,  487,  387,  387,  387,
-      387,  387,  388,  389,  384,  487,  390,  390,  390,  385,
-      385,  385,  385,   82,  487,  391,  392,  393,  391,  391,
-      391,  391,  362,  487,  367,  367,  367,  367,  367,  367,
-      367,  362,  487,  367,  367,  367,  367,  367,  367,  367,
-      362,  487,  367,  367,  367,  367,  367,  367,  394,  362,
-      487,  394,  394,  394,  394,  394,  394,  394,  370,  487,
-      375,  375,  375,  375,  375,  375,  375,  370,  487,  375,
-      375,  375,  375,  375,  375,  375,  370,  487,  375,  375,
-
-      375,  375,  375,  375,  399,  370,  487,  399,  399,  399,
-      399,  399,  399,  399,  132,  487,  401,  402,  403,  401,
-      401,  401,  401,  377,  487,  382,  382,  382,  382,  382,
-      382,  382,  377,  487,  382,  382,  382,  382,  382,  382,
-      382,  377,  487,  382,  382,  382,  382,  382,  382,  404,
-      377,  487,  404,  404,  404,  404,  404,  404,  404,  150,
-      487,  406,  407,  408,  406,  406,  406,  406,  384,  487,
-      389,  389,  389,  389,  389,  389,  389,  384,  487,  389,
-      389,  389,  389,  389,  389,  389,  384,  487,  389,  389,
-      389,  389,  389,  389,  409,  384,  487,  409,  409,  409,
-
-      409,  409,  409,  409,  411,  487,  412,  412,  412,  412,
-      412,  412,  412,  411,  487,  413,  413,  413,  413,  413,
-      413,  413,  411,  487,  414,  414,  414,  414,  414,  415,
-      412,   82,  487,  394,  394,  394,  394,  394,  394,  394,
-      416,  487,  417,  417,  417,  417,  417,  417,  417,  416,
-      487,  418,  418,  418,  418,  418,  418,  418,  416,  487,
-      419,  419,  419,  419,  419,  420,  417,  421,  487,  422,
-      422,  422,  422,  422,  422,  422,  421,  487,  423,  423,
-      423,  423,  423,  423,  423,  421,  487,  424,  424,  424,
-      424,  424,  425,  422,  132,  487,  404,  404,  404,  404,
-
-      404,  404,  404,  426,  487,  427,  427,  427,  427,  427,
-      427,  427,  426,  487,  428,  428,  428,  428,  428,  428,
-      428,  426,  487,  429,  429,  429,  429,  429,  430,  427,
-      150,  487,  409,  409,  409,  409,  409,  409,  409,  431,
-      432,  433,  431,  431,  431,  431,  487,  487,  487,  487,
-      487,  487,  487,  487,  487,  487,  487,  487,  487,  487,
-      487,   83,  411,  487,  412,  412,  412,  412,  412,  412,
-      412,  411,  487,  412,  412,  412,  412,  412,  412,  412,
-      411,  487,  412,  412,  412,  412,  412,  412,   82,  416,
-      487,  417,  417,  417,  417,  417,  417,  417,  416,  487,
-
-      417,  417,  417,  417,  417,  417,  417,  437,  438,  439,
-      437,  437,  437,  437,  487,  487,  487,  487,  487,  487,
-      487,  487,  487,  487,  487,  487,  487,  487,  487,  133,
-      421,  487,  422,  422,  422,  422,  422,  422,  422,  421,
-      487,  422,  422,  422,  422,  422,  422,  422,  421,  487,
-      422,  422,  422,  422,  422,  422,  132,  440,  441,  442,
-      440,  440,  440,  440,  487,  487,  487,  487,  487,  487,
-      487,  487,  487,  487,  487,  487,  487,  487,  487,  151,
-      426,  487,  427,  427,  427,  427,  427,  427,  427,  426,
-      487,  427,  427,  427,  427,  427,  427,  427,  426,  487,
-
-      427,  427,  427,  427,  427,  427,  150,  443,  487,  444,
-      444,  444,  444,  444,  444,  444,  443,  487,  445,  445,
-      445,  445,  445,  445,  445,  443,  487,  446,  446,  446,
-      446,  446,  447,  444,  448,  487,  449,  449,  449,  449,
-      449,  449,  449,  448,  487,  450,  450,  450,  450,  450,
-      450,  450,  448,  487,  451,  451,  451,  451,  451,  452,
-      449,  453,  487,  454,  454,  454,  454,  454,  454,  454,
-      453,  487,  455,  455,  455,  455,  455,  455,  455,  453,
-      487,  456,  456,  456,  456,  456,  457,  454,  458,  487,
-      459,  459,  459,  459,  459,  459,  459,  458,  487,  460,
-
-      460,  460,  460,  460,  460,  460,  458,  487,  461,  461,
-      461,  461,  461,  462,  459,   82,  487,  463,  464,  465,
-      463,  463,  463,  463,  443,  487,  444,  444,  444,  444,
-      444,  444,  444,  443,  487,  444,  444,  444,  444,  444,
-      444,  444,  443,  487,  444,  444,  444,  444,  444,  444,
-       82,  448,  487,  449,  449,  449,  449,  449,  449,  449,
-      448,  487,  449,  449,  449,  449,  449,  449,  449,  132,
-      487,  469,  470,  471,  469,  469,  469,  469,  453,  487,
-      454,  454,  454,  454,  454,  454,  454,  453,  487,  454,
-      454,  454,  454,  454,  454,  454,  453,  487,  454,  454,
-
-      454,  454,  454,  454,  132,  150,  487,  472,  473,  474,
-      472,  472,  472,  472,  458,  487,  459,  459,  459,  459,
-      459,  459,  459,  458,  487,  459,  459,  459,  459,  459,
-      459,  459,  458,  487,  459,  459,  459,  459,  459,  459,
-      150,   82,  487,  475,  475,  475,  475,  475,  475,  475,
-       82,  487,  463,  463,  463,  463,  463,  463,  463,   82,
-      487,  476,  476,  476,  476,  476,  477,  475,  132,  487,
-      481,  481,  481,  481,  481,  481,  481,  132,  487,  469,
-      469,  469,  469,  469,  469,  469,  132,  487,  482,  482,
-      482,  482,  482,  483,  481,  150,  487,  484,  484,  484,
-
-      484,  484,  484,  484,  150,  487,  472,  472,  472,  472,
-      472,  472,  472,  150,  487,  485,  485,  485,  485,  485,
-      486,  484,  475,  475,  475,  475,  475,  475,  475,  487,
-      487,  487,  487,  487,  487,  487,  487,  487,  487,  487,
-      487,  487,  487,  487,   83,  481,  481,  481,  481,  481,
-      481,  481,  487,  487,  487,  487,  487,  487,  487,  487,
-      487,  487,  487,  487,  487,  487,  487,  133,  484,  484,
-      484,  484,  484,  484,  484,  487,  487,  487,  487,  487,
-      487,  487,  487,  487,  487,  487,  487,  487,  487,  487,
-      151,   82,  487,  487,  487,   82,  487,   82,   86,   86,
-
-       86,   86,   86,   86,   86,   90,  487,  487,  487,   90,
-      487,   90,   92,  487,  487,  487,   92,  487,   92,   94,
-      487,  487,   94,   94,  487,   94,  113,  487,  487,  113,
-      113,  113,  115,  487,  487,  115,  115,  115,  115,  117,
-      487,  487,  117,  117,  117,  117,  119,  487,  487,  119,
-      119,  119,  132,  487,  487,  487,  132,  487,  132,  134,
-      487,  487,  487,  134,  487,  134,  136,  487,  487,  487,
-      136,  487,  136,  138,  487,  487,  138,  138,  487,  138,
-      150,  487,  487,  487,  150,  487,  150,  152,  152,  152,
-      152,  152,  152,  152,  155,  155,  155,  155,  155,  155,
-
-      155,  159,  487,  487,  487,  159,  487,  159,  161,  487,
-      487,  487,  161,  487,  161,  163,  487,  487,  163,  163,
-      487,  163,   87,   87,   87,   87,   87,   87,   87,   95,
-      487,  487,   95,  178,  487,  487,  487,  178,  487,  178,
-      187,  187,  487,  187,  187,  187,  187,  188,  188,  487,
-      188,  188,  188,  188,  192,  487,  487,  192,  192,  192,
-      198,  487,  487,  487,  198,  487,  198,  153,  153,  153,
-      153,  153,  153,  153,  155,  155,  155,  155,  155,  155,
-      155,  156,  156,  156,  156,  156,  156,  156,  159,  487,
-      487,  487,  159,  487,  159,  161,  487,  487,  487,  161,
-
-      487,  161,  163,  487,  487,  163,  163,  487,  163,  169,
-      487,  487,  487,  169,  487,  169,  209,  487,  487,  487,
-      209,  487,  209,    9,  487,  487,  487,  487,  487,  487,
-      487,  487,  487,  487,  487,  487,  487,  487,  487,  487,
-      487,  487,  487,  487,  487,  487,  487,  487,  487,  487,
-      487,  487,  487,  487,  487,  487,  487,  487,  487,  487,
-      487,  487,  487,  487,  487,  487,  487,  487,  487,  487,
-      487,  487,  487,  487,  487,  487
+       19,   10,   20,   21,   22,   23,   21,   21,   21,   21,
+       24,   25,   17,   26,   26,   26,   26,   26,   27,   26,
+       28,   26,   26,   26,   26,   29,   10,   10,   10,   10,
+       10,   10,   10,   10,   10,   10,   10,   10,   10,   10,
+       30,   31,   32,   79,  168,  101,   33,  173,   34,   35,
+       11,   36,   37,   35,   35,   38,   35,   35,   39,   40,
+       35,   41,   42,   43,   44,   42,   42,   42,   42,   45,
+       46,   35,   47,   47,   47,   47,   47,   48,   47,   49,
+       47,   47,   47,   47,   50,   35,   35,   35,   35,   35,
+
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   51,
+       11,   12,   13,   51,   52,   53,   17,   54,   55,   19,
+       51,   56,   57,   58,   59,   57,   57,   57,   57,   24,
+       25,   17,   60,   60,   60,   60,   60,   61,   60,   62,
+       60,   60,   60,   60,   63,   51,   51,   51,   51,   51,
+       51,   51,   51,   51,   51,   51,   51,   51,   51,   64,
+       11,   65,   13,   66,   67,   68,   17,   17,   69,   19,
+       64,   70,   71,   72,   73,   71,   71,   71,   71,   24,
+       25,   17,   74,   74,   74,   74,   74,   75,   74,   76,
+       74,   74,   74,   74,   77,   64,   64,   64,   64,   64,
+
+       64,   64,   64,   64,   64,   64,   64,   64,   64,   83,
+       84,   83,  168,  101,   79,   83,   83,   91,   83,   78,
+       92,   91,   91,  169,  131,   79,  141,   79,   83,   83,
+       83,  107,  170,   79,  172,  107,   91,   95,   95,   95,
+       95,   95,   96,   85,   79,  171,   79,  107,  125,   79,
+       92,  107,   93,   93,   93,   93,   93,   93,   93,   94,
+       94,   94,   94,   94,   94,   94,  133,  133,  133,  133,
+      133,  133,  133,  125,   79,   78,  168,  101,   79,   78,
+       78,   78,   79,  432,   78,  203,   78,   78,   97,   97,
+       97,   97,   97,   97,   97,  168,  101,  187,   97,   97,
+
+       97,   97,   97,   97,   97,   97,   97,   97,   97,   97,
+       79,   97,   78,   78,   78,   78,   78,   78,   78,   78,
+       78,   78,   78,   78,   78,  100,  101,   78,  188,  125,
+      220,   78,   78,  107,   78,  107,   79,  107,  107,  107,
+      107,   79,  154,  204,   78,   78,   78,  400,   79,  203,
+      205,  107,  107,  107,  107,  134,  134,  134,  134,  134,
+      135,  188,   79,  196,   79,  110,  141,  112,  114,  258,
+      115,  115,  115,  115,  115,  115,  115,  114,  234,  116,
+      116,  116,  116,  116,  116,  116,  114,   79,  117,  117,
+      117,  117,  117,  118,  115,  119,  119,  119,  119,  119,
+
+      119,  119,  143,  354,  189,  119,  119,  119,  119,  119,
+      119,  119,  119,  119,  119,  119,  119,   79,  119,  122,
+      101,   79,   91,  306,  124,  187,   91,   91,  123,   79,
+       79,  233,   91,  203,  140,  190,   91,   91,  123,  123,
+      203,   91,  156,  156,  156,  156,  156,  156,  156,  168,
+      101,   91,   79,  123,  125,  131,  188,  132,  132,  132,
+      132,  132,  132,  132,  141,  157,  157,  157,  157,  157,
+      158,  176,  177,  178,  176,  176,  176,  176,  213,  125,
+      124,  140,  284,  141,  124,  124,  124,  124,  257,  124,
+      308,  124,  124,  136,  136,  136,  136,  136,  136,  136,
+
+       79,  285,  125,  136,  136,  136,  136,  136,  136,  136,
+      136,  136,  136,  136,  136,  125,  136,  124,  124,  124,
+      124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
+      139,  101,  124,   79,   79,   78,  124,  124,   91,  124,
+       78,  286,   91,   91,  325,  221,  287,  284,  319,  124,
+      124,  124,  143,  143,  143,  140,  250,   91,  143,  143,
+      107,  143,  300,  107,  107,  107,  285,  107,  107,  141,
+       79,  143,  143,  143,  266,   79,  313,  332,  107,  107,
+       79,  107,  107,  305,  299,   79,  144,  146,  147,  146,
+      284,  273,  110,  146,  146,  112,  146,  114,  125,  115,
+
+      115,  115,  115,  115,  115,  295,  146,  146,  146,  285,
+      291,   79,   91,  284,  124,  141,   91,   91,  333,  284,
+      333,  148,  154,  307,  155,  155,  155,  155,  155,  155,
+      155,   91,  285,   79,  314,   91,  330,  140,  285,   91,
+       91,  384,  384,  384,  125,  259,  141,  140,  283,  330,
+      330,  140,  140,  140,   91,  331,  140,  125,  140,  140,
+      159,  159,  159,  159,  159,  159,  159,  141,  331,  331,
+      159,  159,  159,  159,  159,  159,  159,  159,  159,  159,
+      159,  159,  141,  159,  140,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,  140,  140,  140,  162,  101,  140,
+
+      320,  330,   79,  140,  140,  330,  140,  235,  236,  237,
+      235,  235,  235,  235,  353,  279,  140,  140,  140,   78,
+      331,   78,  346,  141,  331,   78,   78,  206,   78,  207,
+      207,  207,  207,  207,  207,  361,  278,  272,   78,   78,
+       78,   83,   84,   83,  271,  265,   79,   83,   83,  368,
+       83,  288,  289,  290,  288,  288,  288,  288,  264,  125,
+       83,   83,   83,  259,  256,  260,  260,  260,  260,  260,
+      260,  255,  249,  141,  248,   85,   86,  346,   86,  379,
+      379,  379,   86,   86,  244,   86,  302,  302,  302,  302,
+      302,  302,  302,  243,  239,   86,   86,   86,   88,  238,
+
+       88,   79,  206,  232,   88,   88,  231,   88,  303,  303,
+      303,  303,  303,  304,  227,  226,  395,   88,   88,   88,
+      163,  164,  165,  163,  163,  163,  163,  316,  316,  316,
+      316,  316,  316,  316,  317,  317,  317,  317,  317,  318,
+       79,  189,   79,  114,  141,  115,  115,  115,  115,  115,
+      115,  115,  114,  219,  115,  115,  115,  115,  115,  115,
+      115,  124,  354,  124,  384,  384,  384,  124,  124,  218,
+      124,  322,  322,  322,  322,  322,  322,  322,  212,  211,
+      124,  124,  124,  126,  361,  126,  389,  389,  389,  126,
+      126,  202,  126,  323,  323,  323,  323,  323,  324,  405,
+
+      201,  195,  126,  126,  126,  128,  194,  128,  125,  140,
+      152,  128,  128,  150,  128,  334,  335,  336,  337,  334,
+      334,  334,  147,  125,  128,  128,  128,  181,  182,  183,
+      181,  181,  181,  181,  308,  309,  309,  309,  309,  309,
+      309,  380,  381,  382,  380,  380,  380,  380,  147,  125,
+      140,  141,  140,  410,  185,  184,  140,  140,  368,  140,
+      394,  394,  394,  379,  379,  379,  389,  389,  389,  140,
+      140,  140,  143,  143,  143,  186,  124,  141,  143,  143,
+      427,  143,  141,  129,  127,   79,  437,  442,  125,  125,
+      180,  143,  143,  143,  383,  383,  383,  383,  383,  383,
+
+      383,  394,  394,  394,   79,  179,  144,  146,  147,  146,
+      125,  141,  114,  146,  146,  400,  146,  401,  401,  401,
+      401,  401,  401,  141,  108,  167,  146,  146,  146,  418,
+      419,  420,  418,  418,  418,  418,  166,   78,   89,   87,
+       84,  148,  149,   84,  149,   81,   80,   79,  149,  149,
+      161,  149,  450,  451,  452,  450,  450,  450,  450,  160,
+      152,  149,  149,  149,  151,  150,  151,  141,  138,  137,
+      151,  151,  432,  151,  433,  433,  433,  433,  433,  433,
+      129,  127,  125,  151,  151,  151,  191,  192,  193,  191,
+      191,  191,  191,  462,  462,  462,  462,  462,  462,  462,
+
+      450,  450,  450,  450,  450,  450,  450,  125,  141,  196,
+      121,  197,  197,  197,  197,  197,  197,  197,  196,  120,
+      198,  198,  198,  198,  198,  198,  198,  196,  108,  199,
+      199,  199,  199,  199,  200,  197,  471,  106,  471,  105,
+      104,  103,  471,  471,  102,  471,  463,  463,  463,  463,
+      463,  464,  462,   99,   98,  471,  471,  471,   89,  459,
+      459,  459,  459,  459,  459,   87,   81,   80,   79,  471,
+      110,  471,  471,  471,  471,  471,  471,  471,  471,  471,
+      471,   79,  462,  462,  462,  462,  462,  462,  462,  471,
+      471,  471,  471,  462,  462,  462,  462,  462,  462,  471,
+
+      471,  471,  471,  471,  471,  112,  206,  471,  207,  207,
+      207,  207,  207,  207,  207,  206,  471,  208,  208,  208,
+      208,  208,  208,  208,  206,  471,  209,  209,  209,  209,
+      209,  210,  207,  213,  471,  214,  214,  214,  214,  214,
+      214,  214,  213,  471,  215,  215,  215,  215,  215,  215,
+      215,  213,  471,  216,  216,  216,  216,  216,  217,  214,
+      221,  471,  222,  222,  222,  222,  222,  222,  222,  221,
+      471,  223,  223,  223,  223,  223,  223,  223,  221,  471,
+      224,  224,  224,  224,  224,  225,  222,  228,  229,  230,
+      228,  228,  228,  228,  471,  471,  471,  471,  465,  465,
+
+      465,  465,  465,  465,  471,  471,  471,  471,  471,   79,
+      196,  471,  197,  197,  197,  197,  197,  197,  197,  196,
+      125,  197,  197,  197,  197,  197,  197,  197,  196,  471,
+      197,  197,  197,  197,  197,  197,   78,  206,  471,  207,
+      207,  207,  207,  207,  207,  207,  206,  471,  207,  207,
+      207,  207,  207,  207,  207,  124,  471,  240,  241,  242,
+      240,  240,  240,  240,  213,  471,  214,  214,  214,  214,
+      214,  214,  214,  213,  471,  214,  214,  214,  214,  214,
+      214,  214,  213,  471,  214,  214,  214,  214,  214,  214,
+      124,  140,  471,  245,  246,  247,  245,  245,  245,  245,
+
+      221,  471,  222,  222,  222,  222,  222,  222,  222,  221,
+      471,  222,  222,  222,  222,  222,  222,  222,  221,  471,
+      222,  222,  222,  222,  222,  222,  140,  250,  471,  251,
+      251,  251,  251,  251,  251,  251,  250,  471,  252,  252,
+      252,  252,  252,  252,  252,  250,  471,  253,  253,  253,
+      253,  253,  254,  251,  259,  471,  260,  260,  260,  260,
+      260,  260,  260,  259,  471,  261,  261,  261,  261,  261,
+      261,  261,  259,  471,  262,  262,  262,  262,  262,  263,
+      260,  266,  471,  267,  267,  267,  267,  267,  267,  267,
+      266,  471,  268,  268,  268,  268,  268,  268,  268,  266,
+
+      471,  269,  269,  269,  269,  269,  270,  267,  273,  471,
+      274,  274,  274,  274,  274,  274,  274,  273,  471,  275,
+      275,  275,  275,  275,  275,  275,  273,  471,  276,  276,
+      276,  276,  276,  277,  274,  280,  281,  282,  280,  280,
+      280,  280,  471,  471,  471,  471,  468,  468,  468,  468,
+      468,  468,  471,  471,  471,  471,  471,   79,  250,  471,
+      251,  251,  251,  251,  251,  251,  251,  250,  141,  251,
+      251,  251,  251,  251,  251,  251,  250,  471,  251,  251,
+      251,  251,  251,  251,   78,  259,  471,  260,  260,  260,
+      260,  260,  260,  260,  259,  471,  260,  260,  260,  260,
+
+      260,  260,  260,  124,  471,  292,  293,  294,  292,  292,
+      292,  292,  266,  471,  267,  267,  267,  267,  267,  267,
+      267,  266,  471,  267,  267,  267,  267,  267,  267,  267,
+      266,  471,  267,  267,  267,  267,  267,  267,  124,  140,
+      471,  296,  297,  298,  296,  296,  296,  296,  273,  471,
+      274,  274,  274,  274,  274,  274,  274,  273,  471,  274,
+      274,  274,  274,  274,  274,  274,  273,  471,  274,  274,
+      274,  274,  274,  274,  140,  300,  301,  301,  301,  301,
+      301,  301,  301,  471,  471,  471,  471,  471,  471,  471,
+      471,  471,  471,  471,  471,  471,  471,  471,   79,  308,
+
+      309,  309,  309,  309,  309,  309,  309,  308,  310,  310,
+      310,  310,  310,  310,  310,  308,  311,  311,  311,  311,
+      311,  312,  309,  124,  314,  315,  315,  315,  315,  315,
+      315,  315,  140,  320,  321,  321,  321,  321,  321,  321,
+      321,  326,  327,  328,  329,  326,  326,  326,  471,  471,
+      471,  471,  471,  471,  471,  471,  471,  471,  471,  471,
+      471,  471,  471,   79,  308,  309,  309,  309,  309,  309,
+      309,  309,  308,  309,  309,  309,  309,  309,  309,  309,
+      124,  338,  339,  340,  341,  338,  338,  338,  140,  342,
+      343,  344,  345,  342,  342,  342,  346,  471,  347,  347,
+
+      347,  347,  347,  347,  347,  346,  471,  348,  348,  348,
+      348,  348,  348,  348,  346,  471,  349,  349,  349,  349,
+      349,  350,  351,  346,  471,  352,  352,  352,  347,  347,
+      347,  347,  354,  471,  355,  355,  355,  355,  355,  355,
+      355,  354,  471,  356,  356,  356,  356,  356,  356,  356,
+      354,  471,  357,  357,  357,  357,  357,  358,  359,  354,
+      471,  360,  360,  360,  355,  355,  355,  355,  361,  471,
+      362,  362,  362,  362,  362,  362,  362,  361,  471,  363,
+      363,  363,  363,  363,  363,  363,  361,  471,  364,  364,
+      364,  364,  364,  365,  366,  361,  471,  367,  367,  367,
+
+      362,  362,  362,  362,  368,  471,  369,  369,  369,  369,
+      369,  369,  369,  368,  471,  370,  370,  370,  370,  370,
+      370,  370,  368,  471,  371,  371,  371,  371,  371,  372,
+      373,  368,  471,  374,  374,  374,  369,  369,  369,  369,
+      375,  376,  377,  375,  375,  375,  375,  471,  471,  471,
+      471,  471,  471,  471,  471,  471,  471,  471,  471,  471,
+      471,  471,   79,  346,  471,  351,  351,  351,  351,  351,
+      351,  351,  346,  471,  351,  351,  351,  351,  351,  351,
+      351,  346,  471,  351,  351,  351,  351,  351,  351,  378,
+      346,  471,  378,  378,  378,  378,  378,  378,  378,  354,
+
+      471,  359,  359,  359,  359,  359,  359,  359,  354,  471,
+      359,  359,  359,  359,  359,  359,  359,  354,  471,  359,
+      359,  359,  359,  359,  359,  383,  354,  471,  383,  383,
+      383,  383,  383,  383,  383,  124,  471,  385,  386,  387,
+      385,  385,  385,  385,  361,  471,  366,  366,  366,  366,
+      366,  366,  366,  361,  471,  366,  366,  366,  366,  366,
+      366,  366,  361,  471,  366,  366,  366,  366,  366,  366,
+      388,  361,  471,  388,  388,  388,  388,  388,  388,  388,
+      140,  471,  390,  391,  392,  390,  390,  390,  390,  368,
+      471,  373,  373,  373,  373,  373,  373,  373,  368,  471,
+
+      373,  373,  373,  373,  373,  373,  373,  368,  471,  373,
+      373,  373,  373,  373,  373,  393,  368,  471,  393,  393,
+      393,  393,  393,  393,  393,  395,  471,  396,  396,  396,
+      396,  396,  396,  396,  395,  471,  397,  397,  397,  397,
+      397,  397,  397,  395,  471,  398,  398,  398,  398,  398,
+      399,  396,   78,  471,  378,  378,  378,  378,  378,  378,
+      378,  400,  471,  401,  401,  401,  401,  401,  401,  401,
+      400,  471,  402,  402,  402,  402,  402,  402,  402,  400,
+      471,  403,  403,  403,  403,  403,  404,  401,  405,  471,
+      406,  406,  406,  406,  406,  406,  406,  405,  471,  407,
+
+      407,  407,  407,  407,  407,  407,  405,  471,  408,  408,
+      408,  408,  408,  409,  406,  124,  471,  388,  388,  388,
+      388,  388,  388,  388,  410,  471,  411,  411,  411,  411,
+      411,  411,  411,  410,  471,  412,  412,  412,  412,  412,
+      412,  412,  410,  471,  413,  413,  413,  413,  413,  414,
+      411,  140,  471,  393,  393,  393,  393,  393,  393,  393,
+      415,  416,  417,  415,  415,  415,  415,  471,  471,  471,
+      471,  471,  471,  471,  471,  471,  471,  471,  471,  471,
+      471,  471,   79,  395,  471,  396,  396,  396,  396,  396,
+      396,  396,  395,  471,  396,  396,  396,  396,  396,  396,
+
+      396,  395,  471,  396,  396,  396,  396,  396,  396,   78,
+      400,  471,  401,  401,  401,  401,  401,  401,  401,  400,
+      471,  401,  401,  401,  401,  401,  401,  401,  421,  422,
+      423,  421,  421,  421,  421,  471,  471,  471,  471,  471,
+      471,  471,  471,  471,  471,  471,  471,  471,  471,  471,
+      125,  405,  471,  406,  406,  406,  406,  406,  406,  406,
+      405,  471,  406,  406,  406,  406,  406,  406,  406,  405,
+      471,  406,  406,  406,  406,  406,  406,  124,  424,  425,
+      426,  424,  424,  424,  424,  471,  471,  471,  471,  471,
+      471,  471,  471,  471,  471,  471,  471,  471,  471,  471,
+
+      141,  410,  471,  411,  411,  411,  411,  411,  411,  411,
+      410,  471,  411,  411,  411,  411,  411,  411,  411,  410,
+      471,  411,  411,  411,  411,  411,  411,  140,  427,  471,
+      428,  428,  428,  428,  428,  428,  428,  427,  471,  429,
+      429,  429,  429,  429,  429,  429,  427,  471,  430,  430,
+      430,  430,  430,  431,  428,  432,  471,  433,  433,  433,
+      433,  433,  433,  433,  432,  471,  434,  434,  434,  434,
+      434,  434,  434,  432,  471,  435,  435,  435,  435,  435,
+      436,  433,  437,  471,  438,  438,  438,  438,  438,  438,
+      438,  437,  471,  439,  439,  439,  439,  439,  439,  439,
+
+      437,  471,  440,  440,  440,  440,  440,  441,  438,  442,
+      471,  443,  443,  443,  443,  443,  443,  443,  442,  471,
+      444,  444,  444,  444,  444,  444,  444,  442,  471,  445,
+      445,  445,  445,  445,  446,  443,   78,  471,  447,  448,
+      449,  447,  447,  447,  447,  427,  471,  428,  428,  428,
+      428,  428,  428,  428,  427,  471,  428,  428,  428,  428,
+      428,  428,  428,  427,  471,  428,  428,  428,  428,  428,
+      428,   78,  432,  471,  433,  433,  433,  433,  433,  433,
+      433,  432,  471,  433,  433,  433,  433,  433,  433,  433,
+      124,  471,  453,  454,  455,  453,  453,  453,  453,  437,
+
+      471,  438,  438,  438,  438,  438,  438,  438,  437,  471,
+      438,  438,  438,  438,  438,  438,  438,  437,  471,  438,
+      438,  438,  438,  438,  438,  124,  140,  471,  456,  457,
+      458,  456,  456,  456,  456,  442,  471,  443,  443,  443,
+      443,  443,  443,  443,  442,  471,  443,  443,  443,  443,
+      443,  443,  443,  442,  471,  443,  443,  443,  443,  443,
+      443,  140,   78,  471,  459,  459,  459,  459,  459,  459,
+      459,   78,  471,  447,  447,  447,  447,  447,  447,  447,
+       78,  471,  460,  460,  460,  460,  460,  461,  459,  124,
+      471,  465,  465,  465,  465,  465,  465,  465,  124,  471,
+
+      453,  453,  453,  453,  453,  453,  453,  124,  471,  466,
+      466,  466,  466,  466,  467,  465,  140,  471,  468,  468,
+      468,  468,  468,  468,  468,  140,  471,  456,  456,  456,
+      456,  456,  456,  456,  140,  471,  469,  469,  469,  469,
+      469,  470,  468,  459,  459,  459,  459,  459,  459,  459,
+      471,  471,  471,  471,  471,  471,  471,  471,  471,  471,
+      471,  471,  471,  471,  471,   79,  465,  465,  465,  465,
+      465,  465,  465,  471,  471,  471,  471,  471,  471,  471,
+      471,  471,  471,  471,  471,  471,  471,  471,  125,  468,
+      468,  468,  468,  468,  468,  468,  471,  471,  471,  471,
+
+      471,  471,  471,  471,  471,  471,  471,  471,  471,  471,
+      471,  141,   78,  471,  471,  471,   78,  471,   78,   82,
+       82,   82,   82,   82,   82,   82,   86,  471,  471,  471,
+       86,  471,   86,   88,  471,  471,  471,   88,  471,   88,
+       90,  471,  471,   90,   90,  471,   90,  107,  471,  471,
+      107,  107,  107,  109,  471,  471,  109,  109,  109,  109,
+      111,  471,  471,  111,  111,  111,  111,  113,  471,  471,
+      113,  113,  113,  124,  471,  471,  471,  124,  471,  124,
+      126,  471,  471,  471,  126,  471,  126,  128,  471,  471,
+      471,  128,  471,  128,  130,  471,  471,  130,  130,  471,
+
+      130,  140,  471,  471,  471,  140,  471,  140,  142,  142,
+      142,  142,  142,  142,  142,  145,  145,  145,  145,  145,
+      145,  145,  149,  471,  471,  471,  149,  471,  149,  151,
+      471,  471,  471,  151,  471,  151,  153,  471,  471,  153,
+      153,  471,  153,   83,   83,   83,   83,   83,   83,   83,
+       91,  471,  471,   91,  174,  174,  471,  174,  174,  174,
+      174,  175,  175,  471,  175,  175,  175,  175,  143,  143,
+      143,  143,  143,  143,  143,  146,  146,  146,  146,  146,
+      146,  146,    9,  471,  471,  471,  471,  471,  471,  471,
+      471,  471,  471,  471,  471,  471,  471,  471,  471,  471,
+
+      471,  471,  471,  471,  471,  471,  471,  471,  471,  471,
+      471,  471,  471,  471,  471,  471,  471,  471,  471,  471,
+      471,  471,  471,  471,  471,  471,  471,  471,  471,  471,
+      471,  471,  471
     } ;
 
-static yyconst short int yy_chk[3577] =
+static yyconst short int yy_chk[3034] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    2,    2,    2,  130,  130,  323,    2,  323,
-        2,    3,    3,    3,    3,    3,    3,    3,    3,    3,
+        2,    2,    2,  106,  122,  122,    2,  106,    2,    3,
         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
-
         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
-        3,    3,    3,    5,    5,    5,    5,    5,    5,    5,
+
+        3,    3,    3,    3,    3,    3,    3,    3,    3,    5,
         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
-        5,    5,    5,    5,    5,    7,    7,    7,    7,    7,
+        5,    5,    5,    5,    5,    5,    5,    5,    5,    7,
         7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
         7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
         7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
-
         7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
-        7,    7,    7,    7,    7,    7,    7,   14,   14,   14,
-       97,  106,  106,   14,   14,   20,   14,   20,  484,   20,
-       20,   23,   23,   23,   23,   23,   23,   14,   14,   14,
-       42,  181,  181,  119,   97,   20,   61,   61,   61,   61,
-       61,   61,   14,  153,  203,  236,  106,   42,   20,   21,
-      119,   21,   21,   21,   21,   21,   21,   21,   22,   22,
-       22,   22,   22,   22,   22,   60,   60,   60,   60,   60,
-       60,   60,  140,   21,   26,  153,  203,  236,   26,   26,
-       26,  481,  475,   26,  449,   26,   26,   26,   26,   26,
-
-       26,   26,   26,   26,   26,  154,  140,  154,   26,   26,
+
+        7,    7,    7,    7,    7,    7,    7,    7,    7,   14,
+       14,   14,  100,  100,  102,   14,   14,   20,   14,   20,
+       93,   20,   20,  102,  132,  105,  468,  103,   14,   14,
+       14,   41,  103,  104,  105,  113,   20,   23,   23,   23,
+       23,   23,   23,   14,   93,  104,  100,   41,  132,   20,
+       21,  113,   21,   21,   21,   21,   21,   21,   21,   22,
+       22,   22,   22,   22,   22,   22,   58,   58,   58,   58,
+       58,   58,   58,  465,   21,   26,  168,  168,  459,   26,
+       26,   26,  169,  433,   26,  169,   26,   26,   26,   26,
+       26,   26,   26,   26,   26,  139,  139,  143,   26,   26,
+
        26,   26,   26,   26,   26,   26,   26,   26,   26,   26,
        26,   26,   26,   26,   26,   26,   26,   26,   26,   26,
-       26,   26,   26,   26,   26,   26,   29,   29,   29,  154,
-      417,  371,   29,   29,  348,   29,  340,  334,   39,  149,
-      149,  325,   39,   39,  174,  174,   29,   29,   29,   30,
-       30,   30,   30,   30,   30,   30,  165,   39,   39,   30,
-       30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
-       30,   39,   30,   40,  149,  322,  213,   40,   40,  174,
-      165,  230,   51,   51,   75,   75,   75,   75,   75,   75,
-
-       75,   51,   40,   40,   76,   76,   76,   76,   76,   76,
-      213,  320,   51,   51,  315,  230,   40,   43,  311,   43,
-       43,   43,   43,   43,   43,   43,   44,   51,   44,   44,
-       44,   44,   44,   44,   44,   45,  307,   45,   45,   45,
-       45,   45,   45,   45,   48,  272,  303,   48,   48,   48,
-       48,   48,   48,   48,  302,   48,   48,   48,   48,   48,
-       48,   48,   48,   48,   48,  272,   48,   48,   48,   48,
-       48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
-      238,   48,   48,   48,   48,   48,   48,   48,   48,   48,
-       48,   48,   48,   48,   48,   48,   52,   52,   52,   52,
-
-       52,   52,   52,  267,  238,  281,   52,   52,   52,   52,
-       52,   52,   52,   52,   52,   52,   52,   52,   58,   52,
-       58,  288,   58,   58,  299,  281,  294,  267,   73,  283,
-       73,  287,   73,   73,  400,  400,  400,  280,   58,  290,
-      276,  288,   94,  274,   94,  115,   94,   94,   73,  115,
-      115,   58,   59,  283,   59,   59,   59,   59,   59,   59,
-       59,   73,   94,  290,  115,  115,  120,  120,  120,  120,
-      120,  120,  120,  273,  363,   94,   59,   62,  115,  295,
-      300,   62,   62,   62,  271,  265,   62,  264,   62,   62,
-       62,   62,   62,   62,   62,   62,   62,   62,  363,  295,
-
-      300,   62,   62,   62,   62,   62,   62,   62,   62,   62,
-       62,   62,   62,   62,   62,   62,   62,   62,   62,   62,
-       62,   62,   62,   62,   62,   62,   62,   62,   62,   65,
-       65,   65,  260,  259,  255,   65,   65,  254,   65,  321,
-      376,  117,  376,  376,  376,  117,  117,  250,  249,   65,
-       65,   65,   66,   66,   66,   66,   66,   66,   66,  321,
-      117,  117,   66,   66,   66,   66,   66,   66,   66,   66,
-       66,   66,   66,   66,  117,   66,   69,   69,   69,   69,
-      317,  329,   69,   69,  124,   69,  124,  124,  124,  124,
-      124,  124,  331,  337,  248,  247,   69,   69,   69,  378,
-
-      335,  329,  138,  317,  138,  341,  138,  138,  243,  242,
-      346,   69,   70,   70,   70,  331,  337,  235,   70,   70,
-      335,   70,  138,  378,  163,  341,  163,  234,  163,  163,
-      346,  228,   70,   70,   70,  138,  222,  222,  222,  222,
-      222,  222,  222,  227,  163,  223,  221,   70,   74,  220,
-       74,   74,   74,   74,   74,   74,   74,  163,  226,  385,
-      226,  226,  226,  226,  226,  226,  298,  298,  298,  298,
-      298,  298,   74,   77,  395,  395,  395,   77,   77,   77,
-      219,  218,   77,  385,   77,   77,   77,   77,   77,   77,
-       77,   77,   77,   77,  217,  211,  395,   77,   77,   77,
-
-       77,   77,   77,   77,   77,   77,   77,   77,   77,   77,
-       77,   77,   77,   77,   77,   77,   77,   77,   77,   77,
-       77,   77,   77,   77,   77,   80,   80,   80,  210,  205,
-      201,   80,   80,  200,   80,  275,  275,  275,  275,  275,
-      275,  275,  199,  194,  193,   80,   80,   80,   81,   81,
-       81,   81,   81,   81,   81,  405,  405,  405,   81,   81,
-       81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
-      186,   81,   83,  185,   83,  412,  422,  405,   83,   83,
-      279,   83,  279,  279,  279,  279,  279,  279,  184,  183,
-      182,  180,   83,   83,   83,   86,   86,   86,  179,  412,
-
-      422,   86,   86,  173,   86,  297,  297,  297,  297,  297,
-      297,  297,  410,  410,  410,   86,   86,   86,  309,  309,
-      309,  309,  309,  309,  309,  368,  427,  368,  368,  368,
-       86,   91,  172,   91,  410,  444,  168,   91,   91,  161,
-       91,  310,  310,  310,  310,  310,  310,  454,  459,  368,
-      427,   91,   91,   91,   93,  159,   93,  158,  156,  444,
-       93,   93,  150,   93,  313,  313,  313,  313,  313,  313,
-      313,  454,  459,  148,   93,   93,   93,   96,   96,   96,
-       96,   96,   96,   96,  314,  314,  314,  314,  314,  314,
-      324,  324,  324,  324,  324,  324,  324,  147,  143,   96,
-
-      102,  136,  134,  132,  102,  102,  102,  129,  128,  102,
-      121,  114,  102,  102,  328,  328,  328,  328,  328,  328,
-      328,  370,  370,  370,  370,  370,  370,  370,  399,  399,
-      399,  399,  399,  399,  399,  112,  102,  122,  111,  122,
-      122,  122,  122,  122,  122,  122,  123,  110,  123,  123,
-      123,  123,  123,  123,  123,  126,  109,  108,  126,  126,
-      126,  126,  126,  126,  126,  105,  104,  126,  126,  383,
-      100,  383,  383,  383,   92,   90,   89,  126,  126,  133,
-       87,  133,   85,   84,   82,  133,  133,   79,  133,   78,
-       72,   71,  390,  383,  390,  390,  390,   67,   64,  133,
-
-      133,  133,  135,   63,  135,   57,   55,   54,  135,  135,
-       53,  135,   50,   49,   38,   35,  390,   34,   33,   32,
-       31,   28,  135,  135,  135,  137,   27,  137,   18,   15,
-       13,  137,  137,   11,  137,  416,  416,  416,  416,  416,
-      416,  416,   10,    9,    0,  137,  137,  137,  139,  139,
-      139,  139,  139,  139,  139,  420,    0,  420,  420,  420,
-      420,  420,  420,  448,  448,  448,  448,  448,  448,  448,
-      139,  145,    0,    0,    0,  145,  145,  145,    0,    0,
-      145,    0,    0,  145,  145,  452,    0,  452,  452,  452,
-      452,  452,  452,  466,  466,  466,  466,  466,  466,  466,
-
-      467,  467,  467,  467,  467,  467,  467,  145,  151,    0,
-      151,    0,    0,    0,  151,  151,    0,  151,  468,  468,
-      468,  468,  468,  468,  468,    0,    0,    0,  151,  151,
-      151,  152,  152,  152,  152,    0,    0,  152,  152,    0,
-      152,  477,  477,  477,  477,  477,  477,    0,    0,    0,
-        0,  152,  152,  152,  479,  479,  479,  479,  479,  479,
-      479,    0,    0,  477,    0,    0,  152,  155,  155,  155,
-        0,    0,    0,  155,  155,    0,  155,  480,  480,  480,
-      480,  480,  480,    0,    0,    0,    0,  155,  155,  155,
-        0,  483,  483,  483,  483,  483,  483,    0,    0,    0,
-
-        0,    0,  155,  160,    0,  160,    0,    0,    0,  160,
-      160,    0,  160,  483,  486,  486,  486,  486,  486,  486,
-        0,    0,    0,  160,  160,  160,  162,    0,  162,    0,
-        0,    0,  162,  162,    0,  162,  486,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  162,  162,  162,  164,
-      164,  164,  164,  164,  164,  164,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  164,  166,    0,  166,  166,  166,  166,  166,  166,
-      166,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  166,  169,    0,    0,
+       26,   26,   26,   26,   26,   29,   29,   29,  143,  139,
+      188,   29,   29,   38,   29,   39,  171,   38,   38,   39,
+       39,  170,  155,  170,   29,   29,   29,  401,  172,  171,
+      172,   38,   38,   39,   39,   59,   59,   59,   59,   59,
+       59,  188,  234,  197,  204,   38,  155,   39,   42,  234,
+       42,   42,   42,   42,   42,   42,   42,   43,  204,   43,
+       43,   43,   43,   43,   43,   43,   44,  197,   44,   44,
+       44,   44,   44,   44,   44,   47,   47,   47,   47,   47,
+
+       47,   47,  144,  355,  144,   47,   47,   47,   47,   47,
+       47,   47,   47,   47,   47,   47,   47,  286,   47,   50,
+       50,  205,   56,  286,   56,  220,   56,   56,   50,  173,
+      203,  203,   70,  205,   70,  144,   70,   70,   50,   50,
+      173,   56,   72,   72,   72,   72,   72,   72,   72,  162,
+      162,   70,  353,   50,   56,   57,  220,   57,   57,   57,
+       57,   57,   57,   57,   70,   73,   73,   73,   73,   73,
+       73,  114,  114,  114,  114,  114,  114,  114,  214,   57,
+       60,  324,  256,  162,   60,   60,   60,  318,  233,   60,
+      309,   60,   60,   60,   60,   60,   60,   60,   60,   60,
+
+      233,  256,  214,   60,   60,   60,   60,   60,   60,   60,
+       60,   60,   60,   60,   60,   60,   60,   60,   60,   60,
+       60,   60,   60,   60,   60,   60,   60,   60,   60,   60,
+       63,   63,   63,  258,  257,  304,   63,   63,   90,   63,
+       90,  257,   90,   90,  299,  222,  258,  265,  295,   63,
+       63,   63,   66,   66,   66,   66,  251,   90,   66,   66,
+      109,   66,  301,  111,  109,  109,  265,  111,  111,  222,
+       90,   66,   66,   66,  267,  306,  291,  306,  109,  109,
+      251,  111,  111,  283,  278,  301,   66,   67,   67,   67,
+      272,  274,  109,   67,   67,  111,   67,  118,  267,  118,
+
+      118,  118,  118,  118,  118,  271,   67,   67,   67,  272,
+      264,  287,  130,  279,  130,  274,  130,  130,  307,  284,
+      307,   67,   71,  287,   71,   71,   71,   71,   71,   71,
+       71,  130,  279,  307,  315,  153,  305,  153,  284,  153,
+      153,  384,  384,  384,  130,  260,   71,   74,  255,  313,
+      319,   74,   74,   74,  153,  305,   74,  315,   74,   74,
+       74,   74,   74,   74,   74,   74,   74,  153,  313,  319,
+       74,   74,   74,   74,   74,   74,   74,   74,   74,   74,
+       74,   74,   74,   74,   74,   74,   74,   74,   74,   74,
+       74,   74,   74,   74,   74,   74,   74,   77,   77,   77,
+
+      321,  325,  332,   77,   77,  330,   77,  206,  206,  206,
+      206,  206,  206,  206,  332,  249,   77,   77,   77,   79,
+      325,   79,  347,  321,  330,   79,   79,  210,   79,  210,
+      210,  210,  210,  210,  210,  362,  248,  244,   79,   79,
+       79,   82,   82,   82,  243,  239,  347,   82,   82,  369,
+       82,  259,  259,  259,  259,  259,  259,  259,  238,  362,
+       82,   82,   82,  263,  232,  263,  263,  263,  263,  263,
+      263,  231,  227,  369,  226,   82,   87,  352,   87,  352,
+      352,  352,   87,   87,  219,   87,  281,  281,  281,  281,
+      281,  281,  281,  218,  212,   87,   87,   87,   89,  211,
+
+       89,  352,  207,  202,   89,   89,  201,   89,  282,  282,
+      282,  282,  282,  282,  195,  194,  396,   89,   89,   89,
+       92,   92,   92,   92,   92,   92,   92,  293,  293,  293,
+      293,  293,  293,  293,  294,  294,  294,  294,  294,  294,
+      396,  190,   92,  116,  186,  116,  116,  116,  116,  116,
+      116,  116,  117,  185,  117,  117,  117,  117,  117,  117,
+      117,  125,  360,  125,  360,  360,  360,  125,  125,  184,
+      125,  297,  297,  297,  297,  297,  297,  297,  180,  179,
+      125,  125,  125,  127,  367,  127,  367,  367,  367,  127,
+      127,  167,  127,  298,  298,  298,  298,  298,  298,  406,
+
+      166,  161,  127,  127,  127,  129,  160,  129,  367,  158,
+      151,  129,  129,  149,  129,  308,  308,  308,  308,  308,
+      308,  308,  148,  406,  129,  129,  129,  131,  131,  131,
+      131,  131,  131,  131,  312,  312,  312,  312,  312,  312,
+      312,  354,  354,  354,  354,  354,  354,  354,  146,  131,
+      141,  140,  141,  411,  138,  137,  141,  141,  374,  141,
+      374,  374,  374,  379,  379,  379,  389,  389,  389,  141,
+      141,  141,  142,  142,  142,  142,  135,  411,  142,  142,
+      428,  142,  374,  128,  126,  379,  438,  443,  389,  124,
+      121,  142,  142,  142,  383,  383,  383,  383,  383,  383,
+
+      383,  394,  394,  394,  428,  120,  142,  145,  145,  145,
+      438,  443,  115,  145,  145,  404,  145,  404,  404,  404,
+      404,  404,  404,  394,  108,   99,  145,  145,  145,  400,
+      400,  400,  400,  400,  400,  400,   98,   96,   88,   86,
+       85,  145,  150,   83,  150,   81,   80,   78,  150,  150,
+       76,  150,  432,  432,  432,  432,  432,  432,  432,   75,
+       69,  150,  150,  150,  152,   68,  152,   64,   62,   61,
+      152,  152,  436,  152,  436,  436,  436,  436,  436,  436,
+       55,   53,   52,  152,  152,  152,  154,  154,  154,  154,
+      154,  154,  154,  450,  450,  450,  450,  450,  450,  450,
+
+      451,  451,  451,  451,  451,  451,  451,   51,  154,  163,
+       49,  163,  163,  163,  163,  163,  163,  163,  164,   48,
+      164,  164,  164,  164,  164,  164,  164,  165,   37,  165,
+      165,  165,  165,  165,  165,  165,  174,   34,  174,   33,
+       32,   31,  174,  174,   30,  174,  452,  452,  452,  452,
+      452,  452,  452,   28,   27,  174,  174,  174,   18,  461,
+      461,  461,  461,  461,  461,   15,   13,   11,   10,    9,
+      174,  175,    0,  175,    0,    0,    0,  175,  175,    0,
+      175,  461,  463,  463,  463,  463,  463,  463,  463,    0,
+      175,  175,  175,  464,  464,  464,  464,  464,  464,    0,
+
+        0,    0,    0,    0,    0,  175,  176,    0,  176,  176,
+      176,  176,  176,  176,  176,  177,    0,  177,  177,  177,
+      177,  177,  177,  177,  178,    0,  178,  178,  178,  178,
+      178,  178,  178,  181,    0,  181,  181,  181,  181,  181,
+      181,  181,  182,    0,  182,  182,  182,  182,  182,  182,
+      182,  183,    0,  183,  183,  183,  183,  183,  183,  183,
+      191,    0,  191,  191,  191,  191,  191,  191,  191,  192,
+        0,  192,  192,  192,  192,  192,  192,  192,  193,    0,
+      193,  193,  193,  193,  193,  193,  193,  196,  196,  196,
+      196,  196,  196,  196,    0,    0,    0,    0,  467,  467,
+
+      467,  467,  467,  467,    0,    0,    0,    0,    0,  196,
+      198,    0,  198,  198,  198,  198,  198,  198,  198,  199,
+      467,  199,  199,  199,  199,  199,  199,  199,  200,    0,
+      200,  200,  200,  200,  200,  200,  200,  208,    0,  208,
+      208,  208,  208,  208,  208,  208,  209,    0,  209,  209,
+      209,  209,  209,  209,  209,  213,    0,  213,  213,  213,
+      213,  213,  213,  213,  215,    0,  215,  215,  215,  215,
+      215,  215,  215,  216,    0,  216,  216,  216,  216,  216,
+      216,  216,  217,    0,  217,  217,  217,  217,  217,  217,
+      217,  221,    0,  221,  221,  221,  221,  221,  221,  221,
+
+      223,    0,  223,  223,  223,  223,  223,  223,  223,  224,
+        0,  224,  224,  224,  224,  224,  224,  224,  225,    0,
+      225,  225,  225,  225,  225,  225,  225,  228,    0,  228,
+      228,  228,  228,  228,  228,  228,  229,    0,  229,  229,
+      229,  229,  229,  229,  229,  230,    0,  230,  230,  230,
+      230,  230,  230,  230,  235,    0,  235,  235,  235,  235,
+      235,  235,  235,  236,    0,  236,  236,  236,  236,  236,
+      236,  236,  237,    0,  237,  237,  237,  237,  237,  237,
+      237,  240,    0,  240,  240,  240,  240,  240,  240,  240,
+      241,    0,  241,  241,  241,  241,  241,  241,  241,  242,
+
+        0,  242,  242,  242,  242,  242,  242,  242,  245,    0,
+      245,  245,  245,  245,  245,  245,  245,  246,    0,  246,
+      246,  246,  246,  246,  246,  246,  247,    0,  247,  247,
+      247,  247,  247,  247,  247,  250,  250,  250,  250,  250,
+      250,  250,    0,    0,    0,    0,  470,  470,  470,  470,
+      470,  470,    0,    0,    0,    0,    0,  250,  252,    0,
+      252,  252,  252,  252,  252,  252,  252,  253,  470,  253,
+      253,  253,  253,  253,  253,  253,  254,    0,  254,  254,
+      254,  254,  254,  254,  254,  261,    0,  261,  261,  261,
+      261,  261,  261,  261,  262,    0,  262,  262,  262,  262,
 
-        0,  169,  169,  169,    0,    0,  169,    0,    0,  169,
-      169,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      262,  262,  262,  266,    0,  266,  266,  266,  266,  266,
+      266,  266,  268,    0,  268,  268,  268,  268,  268,  268,
+      268,  269,    0,  269,  269,  269,  269,  269,  269,  269,
+      270,    0,  270,  270,  270,  270,  270,  270,  270,  273,
+        0,  273,  273,  273,  273,  273,  273,  273,  275,    0,
+      275,  275,  275,  275,  275,  275,  275,  276,    0,  276,
+      276,  276,  276,  276,  276,  276,  277,    0,  277,  277,
+      277,  277,  277,  277,  277,  280,  280,  280,  280,  280,
+      280,  280,  280,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,  280,  288,
+
+      288,  288,  288,  288,  288,  288,  288,  289,  289,  289,
+      289,  289,  289,  289,  289,  290,  290,  290,  290,  290,
+      290,  290,  290,  292,  292,  292,  292,  292,  292,  292,
+      292,  292,  296,  296,  296,  296,  296,  296,  296,  296,
+      296,  300,  300,  300,  300,  300,  300,  300,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  169,  170,    0,    0,    0,  170,  170,
-      170,    0,    0,  170,    0,    0,  170,  170,    0,    0,
+        0,    0,    0,  300,  310,  310,  310,  310,  310,  310,
+      310,  310,  311,  311,  311,  311,  311,  311,  311,  311,
+      314,  314,  314,  314,  314,  314,  314,  314,  320,  320,
+      320,  320,  320,  320,  320,  320,  326,    0,  326,  326,
+
+      326,  326,  326,  326,  326,  327,    0,  327,  327,  327,
+      327,  327,  327,  327,  328,    0,  328,  328,  328,  328,
+      328,  328,  328,  329,    0,  329,  329,  329,  329,  329,
+      329,  329,  334,    0,  334,  334,  334,  334,  334,  334,
+      334,  335,    0,  335,  335,  335,  335,  335,  335,  335,
+      336,    0,  336,  336,  336,  336,  336,  336,  336,  337,
+        0,  337,  337,  337,  337,  337,  337,  337,  338,    0,
+      338,  338,  338,  338,  338,  338,  338,  339,    0,  339,
+      339,  339,  339,  339,  339,  339,  340,    0,  340,  340,
+      340,  340,  340,  340,  340,  341,    0,  341,  341,  341,
+
+      341,  341,  341,  341,  342,    0,  342,  342,  342,  342,
+      342,  342,  342,  343,    0,  343,  343,  343,  343,  343,
+      343,  343,  344,    0,  344,  344,  344,  344,  344,  344,
+      344,  345,    0,  345,  345,  345,  345,  345,  345,  345,
+      346,  346,  346,  346,  346,  346,  346,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,  346,  348,    0,  348,  348,  348,  348,  348,
+      348,  348,  349,    0,  349,  349,  349,  349,  349,  349,
+      349,  350,    0,  350,  350,  350,  350,  350,  350,  350,
+      351,    0,  351,  351,  351,  351,  351,  351,  351,  356,
+
+        0,  356,  356,  356,  356,  356,  356,  356,  357,    0,
+      357,  357,  357,  357,  357,  357,  357,  358,    0,  358,
+      358,  358,  358,  358,  358,  358,  359,    0,  359,  359,
+      359,  359,  359,  359,  359,  361,    0,  361,  361,  361,
+      361,  361,  361,  361,  363,    0,  363,  363,  363,  363,
+      363,  363,  363,  364,    0,  364,  364,  364,  364,  364,
+      364,  364,  365,    0,  365,  365,  365,  365,  365,  365,
+      365,  366,    0,  366,  366,  366,  366,  366,  366,  366,
+      368,    0,  368,  368,  368,  368,  368,  368,  368,  370,
+        0,  370,  370,  370,  370,  370,  370,  370,  371,    0,
+
+      371,  371,  371,  371,  371,  371,  371,  372,    0,  372,
+      372,  372,  372,  372,  372,  372,  373,    0,  373,  373,
+      373,  373,  373,  373,  373,  375,    0,  375,  375,  375,
+      375,  375,  375,  375,  376,    0,  376,  376,  376,  376,
+      376,  376,  376,  377,    0,  377,  377,  377,  377,  377,
+      377,  377,  378,    0,  378,  378,  378,  378,  378,  378,
+      378,  380,    0,  380,  380,  380,  380,  380,  380,  380,
+      381,    0,  381,  381,  381,  381,  381,  381,  381,  382,
+        0,  382,  382,  382,  382,  382,  382,  382,  385,    0,
+      385,  385,  385,  385,  385,  385,  385,  386,    0,  386,
+
+      386,  386,  386,  386,  386,  386,  387,    0,  387,  387,
+      387,  387,  387,  387,  387,  388,    0,  388,  388,  388,
+      388,  388,  388,  388,  390,    0,  390,  390,  390,  390,
+      390,  390,  390,  391,    0,  391,  391,  391,  391,  391,
+      391,  391,  392,    0,  392,  392,  392,  392,  392,  392,
+      392,  393,    0,  393,  393,  393,  393,  393,  393,  393,
+      395,  395,  395,  395,  395,  395,  395,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      170,  171,    0,    0,    0,  171,  171,  171,    0,    0,
-      171,    0,  171,  171,  171,  171,  171,  171,  171,  171,
-      171,  171,    0,    0,    0,  171,  171,  171,  171,  171,
-
-      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
-      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
-      171,  171,  171,  175,    0,  175,  175,  175,  175,  175,
-      175,  175,  176,    0,  176,  176,  176,  176,  176,  176,
-      176,  177,    0,  177,  177,  177,  177,  177,  177,  177,
-      178,    0,    0,    0,  178,  178,  178,    0,    0,  178,
-        0,    0,  178,  178,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  178,  187,    0,  187,
-        0,    0,    0,  187,  187,    0,  187,    0,    0,    0,
+        0,    0,  395,  397,    0,  397,  397,  397,  397,  397,
+      397,  397,  398,    0,  398,  398,  398,  398,  398,  398,
 
-        0,    0,    0,    0,    0,    0,    0,  187,  187,  187,
+      398,  399,    0,  399,  399,  399,  399,  399,  399,  399,
+      402,    0,  402,  402,  402,  402,  402,  402,  402,  403,
+        0,  403,  403,  403,  403,  403,  403,  403,  405,  405,
+      405,  405,  405,  405,  405,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  187,  188,    0,  188,    0,    0,    0,  188,
-      188,    0,  188,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  188,  188,  188,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  188,  189,
-        0,  189,  189,  189,  189,  189,  189,  189,  190,    0,
-      190,  190,  190,  190,  190,  190,  190,  191,    0,  191,
-      191,  191,  191,  191,  191,  191,  192,    0,    0,  192,
-      192,  192,  192,  192,  192,  192,    0,    0,  192,  192,
-
-        0,    0,    0,    0,    0,    0,    0,    0,  192,  192,
-      195,    0,  195,  195,  195,  195,  195,  195,  195,  196,
-        0,  196,  196,  196,  196,  196,  196,  196,  197,    0,
-      197,  197,  197,  197,  197,  197,  197,  198,    0,    0,
-        0,  198,  198,  198,    0,    0,  198,    0,    0,  198,
-      198,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      405,  407,    0,  407,  407,  407,  407,  407,  407,  407,
+      408,    0,  408,  408,  408,  408,  408,  408,  408,  409,
+        0,  409,  409,  409,  409,  409,  409,  409,  410,  410,
+      410,  410,  410,  410,  410,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  198,  206,    0,  206,  206,  206,  206,
-      206,  206,  206,  207,    0,  207,  207,  207,  207,  207,
-      207,  207,  208,    0,  208,  208,  208,  208,  208,  208,
 
-      208,  209,    0,    0,    0,  209,  209,  209,    0,    0,
-      209,    0,    0,  209,  209,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,  209,  212,    0,
-      212,  212,  212,  212,  212,  212,  212,  214,    0,  214,
-      214,  214,  214,  214,  214,  214,  215,    0,  215,  215,
-      215,  215,  215,  215,  215,  216,    0,  216,  216,  216,
-      216,  216,  216,  216,  224,    0,  224,  224,  224,  224,
-      224,  224,  224,  225,    0,  225,  225,  225,  225,  225,
-      225,  225,  229,    0,  229,  229,  229,  229,  229,  229,
-
-      229,  231,    0,  231,  231,  231,  231,  231,  231,  231,
-      232,    0,  232,  232,  232,  232,  232,  232,  232,  233,
-        0,  233,  233,  233,  233,  233,  233,  233,  237,    0,
-      237,  237,  237,  237,  237,  237,  237,  239,    0,  239,
-      239,  239,  239,  239,  239,  239,  240,    0,  240,  240,
-      240,  240,  240,  240,  240,  241,    0,  241,  241,  241,
-      241,  241,  241,  241,  244,    0,  244,  244,  244,  244,
-      244,  244,  244,  245,    0,  245,  245,  245,  245,  245,
-      245,  245,  246,    0,  246,  246,  246,  246,  246,  246,
-      246,  251,    0,  251,  251,  251,  251,  251,  251,  251,
-
-      252,    0,  252,  252,  252,  252,  252,  252,  252,  253,
-        0,  253,  253,  253,  253,  253,  253,  253,  256,    0,
-      256,  256,  256,  256,  256,  256,  256,  257,    0,  257,
-      257,  257,  257,  257,  257,  257,  258,    0,  258,  258,
-      258,  258,  258,  258,  258,  261,    0,  261,  261,  261,
-      261,  261,  261,  261,  262,    0,  262,  262,  262,  262,
-      262,  262,  262,  263,    0,  263,  263,  263,  263,  263,
-      263,  263,  266,    0,  266,  266,  266,  266,  266,  266,
-      266,  268,    0,  268,  268,  268,  268,  268,  268,  268,
-      269,    0,  269,  269,  269,  269,  269,  269,  269,  270,
-
-        0,  270,  270,  270,  270,  270,  270,  270,  277,    0,
-      277,  277,  277,  277,  277,  277,  277,  278,    0,  278,
-      278,  278,  278,  278,  278,  278,  282,    0,  282,  282,
-      282,  282,  282,  282,  282,  284,    0,  284,  284,  284,
-      284,  284,  284,  284,  285,    0,  285,  285,  285,  285,
-      285,  285,  285,  286,    0,  286,  286,  286,  286,  286,
-      286,  286,  289,    0,  289,  289,  289,  289,  289,  289,
-      289,  291,    0,  291,  291,  291,  291,  291,  291,  291,
-      292,    0,  292,  292,  292,  292,  292,  292,  292,  293,
-        0,  293,  293,  293,  293,  293,  293,  293,  296,  296,
-
-      296,  296,  296,  296,  296,  296,  296,  304,  304,  304,
-      304,  304,  304,  304,  304,  305,  305,  305,  305,  305,
-      305,  305,  305,  306,  306,  306,  306,  306,  306,  306,
-      306,  308,  308,  308,  308,  308,  308,  308,  308,  308,
-      312,  312,  312,  312,  312,  312,  312,  312,  312,  316,
-      316,  316,  316,  316,  316,  316,  316,  326,  326,  326,
-      326,  326,  326,  326,  326,  327,  327,  327,  327,  327,
-      327,  327,  327,  330,  330,  330,  330,  330,  330,  330,
-      330,  336,  336,  336,  336,  336,  336,  336,  336,  342,
-        0,  342,  342,  342,  342,  342,  342,  342,  343,    0,
-
-      343,  343,  343,  343,  343,  343,  343,  344,    0,  344,
-      344,  344,  344,  344,  344,  344,  345,    0,  345,  345,
-      345,  345,  345,  345,  345,  350,    0,  350,  350,  350,
-      350,  350,  350,  350,  351,    0,  351,  351,  351,  351,
-      351,  351,  351,  352,    0,  352,  352,  352,  352,  352,
-      352,  352,  353,    0,  353,  353,  353,  353,  353,  353,
-      353,  354,    0,  354,  354,  354,  354,  354,  354,  354,
-      355,    0,  355,  355,  355,  355,  355,  355,  355,  356,
-        0,  356,  356,  356,  356,  356,  356,  356,  357,    0,
-      357,  357,  357,  357,  357,  357,  357,  358,    0,  358,
+      410,  412,    0,  412,  412,  412,  412,  412,  412,  412,
+      413,    0,  413,  413,  413,  413,  413,  413,  413,  414,
+        0,  414,  414,  414,  414,  414,  414,  414,  415,    0,
+      415,  415,  415,  415,  415,  415,  415,  416,    0,  416,
+      416,  416,  416,  416,  416,  416,  417,    0,  417,  417,
+      417,  417,  417,  417,  417,  418,    0,  418,  418,  418,
+      418,  418,  418,  418,  419,    0,  419,  419,  419,  419,
+      419,  419,  419,  420,    0,  420,  420,  420,  420,  420,
+      420,  420,  421,    0,  421,  421,  421,  421,  421,  421,
+      421,  422,    0,  422,  422,  422,  422,  422,  422,  422,
 
-      358,  358,  358,  358,  358,  358,  359,    0,  359,  359,
-      359,  359,  359,  359,  359,  360,    0,  360,  360,  360,
-      360,  360,  360,  360,  361,    0,  361,  361,  361,  361,
-      361,  361,  361,  362,    0,  362,  362,  362,  362,  362,
-      362,  362,  364,    0,  364,  364,  364,  364,  364,  364,
-      364,  365,    0,  365,  365,  365,  365,  365,  365,  365,
-      366,    0,  366,  366,  366,  366,  366,  366,  366,  367,
-        0,  367,  367,  367,  367,  367,  367,  367,  372,    0,
-      372,  372,  372,  372,  372,  372,  372,  373,    0,  373,
-      373,  373,  373,  373,  373,  373,  374,    0,  374,  374,
-
-      374,  374,  374,  374,  374,  375,    0,  375,  375,  375,
-      375,  375,  375,  375,  377,    0,  377,  377,  377,  377,
-      377,  377,  377,  379,    0,  379,  379,  379,  379,  379,
-      379,  379,  380,    0,  380,  380,  380,  380,  380,  380,
-      380,  381,    0,  381,  381,  381,  381,  381,  381,  381,
-      382,    0,  382,  382,  382,  382,  382,  382,  382,  384,
-        0,  384,  384,  384,  384,  384,  384,  384,  386,    0,
-      386,  386,  386,  386,  386,  386,  386,  387,    0,  387,
-      387,  387,  387,  387,  387,  387,  388,    0,  388,  388,
-      388,  388,  388,  388,  388,  389,    0,  389,  389,  389,
-
-      389,  389,  389,  389,  391,    0,  391,  391,  391,  391,
-      391,  391,  391,  392,    0,  392,  392,  392,  392,  392,
-      392,  392,  393,    0,  393,  393,  393,  393,  393,  393,
-      393,  394,    0,  394,  394,  394,  394,  394,  394,  394,
-      396,    0,  396,  396,  396,  396,  396,  396,  396,  397,
-        0,  397,  397,  397,  397,  397,  397,  397,  398,    0,
-      398,  398,  398,  398,  398,  398,  398,  401,    0,  401,
-      401,  401,  401,  401,  401,  401,  402,    0,  402,  402,
-      402,  402,  402,  402,  402,  403,    0,  403,  403,  403,
-      403,  403,  403,  403,  404,    0,  404,  404,  404,  404,
-
-      404,  404,  404,  406,    0,  406,  406,  406,  406,  406,
-      406,  406,  407,    0,  407,  407,  407,  407,  407,  407,
-      407,  408,    0,  408,  408,  408,  408,  408,  408,  408,
-      409,    0,  409,  409,  409,  409,  409,  409,  409,  411,
-      411,  411,  411,  411,  411,  411,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  411,  413,    0,  413,  413,  413,  413,  413,  413,
-      413,  414,    0,  414,  414,  414,  414,  414,  414,  414,
-      415,    0,  415,  415,  415,  415,  415,  415,  415,  418,
-        0,  418,  418,  418,  418,  418,  418,  418,  419,    0,
-
-      419,  419,  419,  419,  419,  419,  419,  421,  421,  421,
-      421,  421,  421,  421,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  421,
       423,    0,  423,  423,  423,  423,  423,  423,  423,  424,
         0,  424,  424,  424,  424,  424,  424,  424,  425,    0,
-      425,  425,  425,  425,  425,  425,  425,  426,  426,  426,
-      426,  426,  426,  426,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  426,
-      428,    0,  428,  428,  428,  428,  428,  428,  428,  429,
-        0,  429,  429,  429,  429,  429,  429,  429,  430,    0,
-
-      430,  430,  430,  430,  430,  430,  430,  431,    0,  431,
-      431,  431,  431,  431,  431,  431,  432,    0,  432,  432,
-      432,  432,  432,  432,  432,  433,    0,  433,  433,  433,
-      433,  433,  433,  433,  434,    0,  434,  434,  434,  434,
-      434,  434,  434,  435,    0,  435,  435,  435,  435,  435,
-      435,  435,  436,    0,  436,  436,  436,  436,  436,  436,
-      436,  437,    0,  437,  437,  437,  437,  437,  437,  437,
-      438,    0,  438,  438,  438,  438,  438,  438,  438,  439,
+      425,  425,  425,  425,  425,  425,  425,  426,    0,  426,
+      426,  426,  426,  426,  426,  426,  427,    0,  427,  427,
+      427,  427,  427,  427,  427,  429,    0,  429,  429,  429,
+      429,  429,  429,  429,  430,    0,  430,  430,  430,  430,
+      430,  430,  430,  431,    0,  431,  431,  431,  431,  431,
+      431,  431,  434,    0,  434,  434,  434,  434,  434,  434,
+      434,  435,    0,  435,  435,  435,  435,  435,  435,  435,
+      437,    0,  437,  437,  437,  437,  437,  437,  437,  439,
+
         0,  439,  439,  439,  439,  439,  439,  439,  440,    0,
       440,  440,  440,  440,  440,  440,  440,  441,    0,  441,
-
       441,  441,  441,  441,  441,  441,  442,    0,  442,  442,
-      442,  442,  442,  442,  442,  443,    0,  443,  443,  443,
-      443,  443,  443,  443,  445,    0,  445,  445,  445,  445,
+      442,  442,  442,  442,  442,  444,    0,  444,  444,  444,
+      444,  444,  444,  444,  445,    0,  445,  445,  445,  445,
       445,  445,  445,  446,    0,  446,  446,  446,  446,  446,
       446,  446,  447,    0,  447,  447,  447,  447,  447,  447,
-      447,  450,    0,  450,  450,  450,  450,  450,  450,  450,
-      451,    0,  451,  451,  451,  451,  451,  451,  451,  453,
-        0,  453,  453,  453,  453,  453,  453,  453,  455,    0,
-      455,  455,  455,  455,  455,  455,  455,  456,    0,  456,
-      456,  456,  456,  456,  456,  456,  457,    0,  457,  457,
-
-      457,  457,  457,  457,  457,  458,    0,  458,  458,  458,
-      458,  458,  458,  458,  460,    0,  460,  460,  460,  460,
-      460,  460,  460,  461,    0,  461,  461,  461,  461,  461,
-      461,  461,  462,    0,  462,  462,  462,  462,  462,  462,
-      462,  463,    0,  463,  463,  463,  463,  463,  463,  463,
-      464,    0,  464,  464,  464,  464,  464,  464,  464,  465,
-        0,  465,  465,  465,  465,  465,  465,  465,  469,    0,
-      469,  469,  469,  469,  469,  469,  469,  470,    0,  470,
-      470,  470,  470,  470,  470,  470,  471,    0,  471,  471,
-      471,  471,  471,  471,  471,  472,    0,  472,  472,  472,
-
-      472,  472,  472,  472,  473,    0,  473,  473,  473,  473,
-      473,  473,  473,  474,    0,  474,  474,  474,  474,  474,
-      474,  474,  476,  476,  476,  476,  476,  476,  476,    0,
+      447,  448,    0,  448,  448,  448,  448,  448,  448,  448,
+      449,    0,  449,  449,  449,  449,  449,  449,  449,  453,
+        0,  453,  453,  453,  453,  453,  453,  453,  454,    0,
+
+      454,  454,  454,  454,  454,  454,  454,  455,    0,  455,
+      455,  455,  455,  455,  455,  455,  456,    0,  456,  456,
+      456,  456,  456,  456,  456,  457,    0,  457,  457,  457,
+      457,  457,  457,  457,  458,    0,  458,  458,  458,  458,
+      458,  458,  458,  460,  460,  460,  460,  460,  460,  460,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  476,  482,  482,  482,  482,  482,
-      482,  482,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,  482,  485,  485,
-      485,  485,  485,  485,  485,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  460,  466,  466,  466,  466,
+      466,  466,  466,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,  466,  469,
+      469,  469,  469,  469,  469,  469,    0,    0,    0,    0,
+
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      485,  488,    0,    0,    0,  488,    0,  488,  489,  489,
-
-      489,  489,  489,  489,  489,  490,    0,    0,    0,  490,
-        0,  490,  491,    0,    0,    0,  491,    0,  491,  492,
-        0,    0,  492,  492,    0,  492,  493,    0,    0,  493,
-      493,  493,  494,    0,    0,  494,  494,  494,  494,  495,
-        0,    0,  495,  495,  495,  495,  496,    0,    0,  496,
-      496,  496,  497,    0,    0,    0,  497,    0,  497,  498,
-        0,    0,    0,  498,    0,  498,  499,    0,    0,    0,
-      499,    0,  499,  500,    0,    0,  500,  500,    0,  500,
-      501,    0,    0,    0,  501,    0,  501,  502,  502,  502,
-      502,  502,  502,  502,  503,  503,  503,  503,  503,  503,
-
-      503,  504,    0,    0,    0,  504,    0,  504,  505,    0,
-        0,    0,  505,    0,  505,  506,    0,    0,  506,  506,
-        0,  506,  507,  507,  507,  507,  507,  507,  507,  508,
-        0,    0,  508,  509,    0,    0,    0,  509,    0,  509,
-      510,  510,    0,  510,  510,  510,  510,  511,  511,    0,
-      511,  511,  511,  511,  512,    0,    0,  512,  512,  512,
-      513,    0,    0,    0,  513,    0,  513,  514,  514,  514,
-      514,  514,  514,  514,  515,  515,  515,  515,  515,  515,
-      515,  516,  516,  516,  516,  516,  516,  516,  517,    0,
-        0,    0,  517,    0,  517,  518,    0,    0,    0,  518,
-
-        0,  518,  519,    0,    0,  519,  519,    0,  519,  520,
-        0,    0,    0,  520,    0,  520,  521,    0,    0,    0,
-      521,    0,  521,  487,  487,  487,  487,  487,  487,  487,
-      487,  487,  487,  487,  487,  487,  487,  487,  487,  487,
-      487,  487,  487,  487,  487,  487,  487,  487,  487,  487,
-      487,  487,  487,  487,  487,  487,  487,  487,  487,  487,
-      487,  487,  487,  487,  487,  487,  487,  487,  487,  487,
-      487,  487,  487,  487,  487,  487
+        0,  469,  472,    0,    0,    0,  472,    0,  472,  473,
+      473,  473,  473,  473,  473,  473,  474,    0,    0,    0,
+      474,    0,  474,  475,    0,    0,    0,  475,    0,  475,
+      476,    0,    0,  476,  476,    0,  476,  477,    0,    0,
+      477,  477,  477,  478,    0,    0,  478,  478,  478,  478,
+      479,    0,    0,  479,  479,  479,  479,  480,    0,    0,
+      480,  480,  480,  481,    0,    0,    0,  481,    0,  481,
+      482,    0,    0,    0,  482,    0,  482,  483,    0,    0,
+        0,  483,    0,  483,  484,    0,    0,  484,  484,    0,
+
+      484,  485,    0,    0,    0,  485,    0,  485,  486,  486,
+      486,  486,  486,  486,  486,  487,  487,  487,  487,  487,
+      487,  487,  488,    0,    0,    0,  488,    0,  488,  489,
+        0,    0,    0,  489,    0,  489,  490,    0,    0,  490,
+      490,    0,  490,  491,  491,  491,  491,  491,  491,  491,
+      492,    0,    0,  492,  493,  493,    0,  493,  493,  493,
+      493,  494,  494,    0,  494,  494,  494,  494,  495,  495,
+      495,  495,  495,  495,  495,  496,  496,  496,  496,  496,
+      496,  496,  471,  471,  471,  471,  471,  471,  471,  471,
+      471,  471,  471,  471,  471,  471,  471,  471,  471,  471,
+
+      471,  471,  471,  471,  471,  471,  471,  471,  471,  471,
+      471,  471,  471,  471,  471,  471,  471,  471,  471,  471,
+      471,  471,  471,  471,  471,  471,  471,  471,  471,  471,
+      471,  471,  471
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -1412,7 +1286,7 @@ extern void yyerror               __P((char *));
 
 #define GOTDEFS 3
 
-#line 1416 "lex.yy.c"
+#line 1290 "lex.yy.c"
 
 /* Macros after this point can all be overridden by user definitions in
  * section 1.
@@ -1568,7 +1442,7 @@ YY_DECL
 
 #line 102 "parse.lex"
 
-#line 1572 "lex.yy.c"
+#line 1446 "lex.yy.c"
 
        if ( yy_init )
                {
@@ -1620,13 +1494,13 @@ 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 >= 488 )
+                               if ( yy_current_state >= 472 )
                                        yy_c = yy_meta[(unsigned int) yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
                        ++yy_cp;
                        }
-               while ( yy_base[yy_current_state] != 3524 );
+               while ( yy_base[yy_current_state] != 2983 );
 
 yy_find_action:
                yy_act = yy_accept[yy_current_state];
@@ -1824,24 +1698,15 @@ YY_RULE_SETUP
 case 20:
 YY_RULE_SETUP
 #line 215 "parse.lex"
-{
-                           fill(yytext, yyleng);
-                           LEXTRACE("FQHOST ");
-                           return(FQHOST);
-                       }
-       YY_BREAK
-case 21:
-YY_RULE_SETUP
-#line 221 "parse.lex"
 {
                                BEGIN GOTRUNAS;
                                LEXTRACE("RUNAS ");
                                return (RUNAS);
                        }
        YY_BREAK
-case 22:
+case 21:
 YY_RULE_SETUP
-#line 227 "parse.lex"
+#line 221 "parse.lex"
 {
                            /* Runas_Alias user can run command as or ALL */
                            if (strcmp(yytext, "ALL") == 0) {
@@ -1854,9 +1719,9 @@ YY_RULE_SETUP
                            }
                        }
        YY_BREAK
-case 23:
+case 22:
 YY_RULE_SETUP
-#line 239 "parse.lex"
+#line 233 "parse.lex"
 {
                            /* username/uid that user can run command as */
                            fill(yytext, yyleng);
@@ -1864,16 +1729,16 @@ YY_RULE_SETUP
                            return(WORD);
                        }
        YY_BREAK
-case 24:
+case 23:
 YY_RULE_SETUP
-#line 246 "parse.lex"
+#line 240 "parse.lex"
 {
                            BEGIN INITIAL;
                        }
        YY_BREAK
-case 25:
+case 24:
 YY_RULE_SETUP
-#line 250 "parse.lex"
+#line 244 "parse.lex"
 {
                            if (strcmp(yytext, "ALL") == 0) {
                                LEXTRACE("ALL ");
@@ -1885,18 +1750,18 @@ YY_RULE_SETUP
                            }
                        }
        YY_BREAK
-case 26:
+case 25:
 YY_RULE_SETUP
-#line 261 "parse.lex"
+#line 255 "parse.lex"
 {
                            LEXTRACE("WORD(3) ");
                            fill(yytext, yyleng);
                            return(WORD);
                        }
        YY_BREAK
-case 27:
+case 26:
 YY_RULE_SETUP
-#line 267 "parse.lex"
+#line 261 "parse.lex"
 {
                            BEGIN GOTDEFS;
                            if (yyleng == 9) {
@@ -1914,9 +1779,9 @@ YY_RULE_SETUP
                            }
                        }
        YY_BREAK
-case 28:
+case 27:
 YY_RULE_SETUP
-#line 284 "parse.lex"
+#line 278 "parse.lex"
 {
                            fill(yytext, yyleng);
                            if (*yytext == 'H') {
@@ -1938,9 +1803,9 @@ YY_RULE_SETUP
                            }
                        }
        YY_BREAK
-case 29:
+case 28:
 YY_RULE_SETUP
-#line 305 "parse.lex"
+#line 299 "parse.lex"
 {
                            /* directories can't have args... */
                            if (yytext[yyleng - 1] == '/') {
@@ -1954,9 +1819,9 @@ YY_RULE_SETUP
                            }
                        }                       /* a pathname */
        YY_BREAK
-case 30:
+case 29:
 YY_RULE_SETUP
-#line 318 "parse.lex"
+#line 312 "parse.lex"
 {
                            /* a word */
                            fill(yytext, yyleng);
@@ -1964,20 +1829,20 @@ YY_RULE_SETUP
                            return(WORD);
                        }
        YY_BREAK
-case 31:
+case 30:
 YY_RULE_SETUP
-#line 325 "parse.lex"
+#line 319 "parse.lex"
 {
                            LEXTRACE("ERROR ");
                            return(ERROR);
                        }       /* parse error */
        YY_BREAK
-case 32:
+case 31:
 YY_RULE_SETUP
-#line 330 "parse.lex"
+#line 324 "parse.lex"
 ECHO;
        YY_BREAK
-#line 1981 "lex.yy.c"
+#line 1846 "lex.yy.c"
 case YY_STATE_EOF(INITIAL):
 case YY_STATE_EOF(GOTCMND):
 case YY_STATE_EOF(GOTRUNAS):
@@ -2273,7 +2138,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 >= 488 )
+                       if ( yy_current_state >= 472 )
                                yy_c = yy_meta[(unsigned int) yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -2308,11 +2173,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 >= 488 )
+               if ( yy_current_state >= 472 )
                        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 == 487);
+       yy_is_jam = (yy_current_state == 471);
 
        return yy_is_jam ? 0 : yy_current_state;
        }
@@ -2868,7 +2733,7 @@ int main()
        return 0;
        }
 #endif
-#line 330 "parse.lex"
+#line 324 "parse.lex"
 
 static void
 fill(s, len)
diff --git a/parse.c b/parse.c
index 915ca2c34f8e0c79d62f1f52a3ab141f7fc03980..c1e0e39617616e4377eea6a4d2923fd113423f98 100644 (file)
--- a/parse.c
+++ b/parse.c
@@ -389,15 +389,22 @@ addr_matches(n)
  * Returns 0 if the hostname matches the pattern and non-zero otherwise.
  */
 int
-hostname_matches(host, pattern)
-    char *host;
+hostname_matches(shost, lhost, pattern)
+    char *shost;
+    char *lhost;
     char *pattern;
 {
-
-    if (has_meta(pattern))
-       return(fnmatch(pattern, host, FNM_CASEFOLD));
-    else
-       return(strcasecmp(host, pattern));
+    if (has_meta(pattern)) {
+       if (strchr(pattern, '.'))
+           return(fnmatch(pattern, lhost, FNM_CASEFOLD));
+       else
+           return(fnmatch(pattern, shost, FNM_CASEFOLD));
+    } else {
+       if (strchr(pattern, '.'))
+           return(strcasecmp(lhost, pattern));
+       else
+           return(strcasecmp(shost, pattern));
+    }
 }
 
 /*
index 15d440e315a9bad230d8fbd9d070c36f53a86bac..2768805f44ada91e69e2f495428c005dfcede84c 100644 (file)
--- a/parse.lex
+++ b/parse.lex
@@ -212,12 +212,6 @@ PASSWD[[:blank:]]*:        {
                            return(NTWKADDR);
                        }
 
-[[:alpha:]][[:alnum:]_-]*(\.{HOSTNAME})+ {
-                           fill(yytext, yyleng);
-                           LEXTRACE("FQHOST ");
-                           return(FQHOST);
-                       }
-
 <INITIAL>\(            {
                                BEGIN GOTRUNAS;
                                LEXTRACE("RUNAS ");
index 4d756bdf463755c485dbf19fb80c34c465c53dfe..ff1ed06bac306d3a38bd43270a3cd79b27e5d0ae 100644 (file)
@@ -215,7 +215,6 @@ yyerror(s)
 %token <command> COMMAND               /* absolute pathname w/ optional args */
 %token <string>  ALIAS                 /* an UPPERCASE alias name */
 %token <string>  NTWKADDR              /* w.x.y.z */
-%token <string>  FQHOST                        /* foo.bar.com */
 %token <string>  NETGROUP              /* a netgroup (+NAME) */
 %token <string>  USERGROUP             /* a usergroup (%NAME) */
 %token <string>  WORD                  /* a word */
@@ -361,14 +360,7 @@ host               :       ALL {
                            free($1);
                        }
                |       WORD {
-                           if (hostname_matches(user_shost, $1) == 0)
-                               $$ = TRUE;
-                           else
-                               $$ = -1;
-                           free($1);
-                       }
-               |       FQHOST {
-                           if (hostname_matches(user_host, $1) == 0)
+                           if (hostname_matches(user_shost, user_host, $1) == 0)
                                $$ = TRUE;
                            else
                                $$ = -1;
@@ -380,7 +372,7 @@ host                :       ALL {
                            /* could be an all-caps hostname */
                            if (aip)
                                $$ = aip->val;
-                           else if (hostname_matches(user_shost, $1) == 0)
+                           else if (strcasecmp(user_shost, $1) == 0)
                                $$ = TRUE;
                            else {
                                if (pedantic) {