]> granicus.if.org Git - sudo/commitdiff
regen
authorTodd C. Miller <Todd.Miller@courtesan.com>
Mon, 27 Sep 2004 16:08:18 +0000 (16:08 +0000)
committerTodd C. Miller <Todd.Miller@courtesan.com>
Mon, 27 Sep 2004 16:08:18 +0000 (16:08 +0000)
lex.yy.c
sudo.tab.c

index a93ae2195b69cb2d622716c5bccfb93a209b6216..a599605395f40c282b9cfa42117c79713e54c598 100644 (file)
--- a/lex.yy.c
+++ b/lex.yy.c
@@ -285,49 +285,51 @@ static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
        *yy_cp = '\0'; \
        yy_c_buf_p = yy_cp;
 
-#define YY_NUM_RULES 41
-#define YY_END_OF_BUFFER 42
-static yyconst short int yy_accept[360] =
+#define YY_NUM_RULES 42
+#define YY_END_OF_BUFFER 43
+static yyconst short int yy_accept[374] =
     {   0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   42,   31,   37,   36,   35,   40,   31,   25,
-       40,   31,   32,   31,   31,   31,   31,   34,   33,   26,
-       26,   26,   26,   26,   40,   31,   26,   26,   26,   26,
-       26,   27,   40,   27,   28,   27,   27,   27,   27,   27,
-       26,   26,   26,   26,   26,   40,   27,    1,   12,   11,
-       12,   11,   11,   40,   40,    2,    8,    8,    8,    3,
-        8,    4,   40,   31,    0,   37,   35,    0,   39,   22,
-        0,   21,    0,   30,   30,    0,   31,   31,   31,   31,
-       31,   26,   26,   26,   26,   26,   31,   38,   31,   31,
-
-       31,   31,   31,   31,   27,    0,   27,   22,    0,   21,
-        0,   27,    0,   27,   27,   27,   27,   27,   26,   26,
-       26,   26,   26,   27,   27,    1,   12,   12,   10,    9,
-       10,    0,    2,    8,    0,    8,    0,    0,    5,    6,
-        8,    8,    0,   31,   31,   31,   26,   26,   26,   26,
-       26,   26,   31,   31,   31,   31,   31,   31,   27,   27,
-       27,   26,   26,   26,   26,   26,   26,   27,    7,    7,
-        0,    7,    8,   31,   31,   31,   31,   31,   26,   26,
-       26,   26,   26,   26,   31,   31,   31,   31,   27,   27,
-       27,   27,   27,   26,   26,   26,   26,   26,   26,   27,
-
-        7,   31,   31,   31,    0,   18,   26,   26,   26,   26,
-       26,   31,   31,   31,   27,   27,   27,   26,   26,   26,
-       26,   26,   27,   31,   31,   31,   31,   31,   26,   26,
-       26,   26,    0,   20,   31,   31,   31,   27,   27,   27,
-       27,   27,   26,   26,   26,   26,   27,   23,   23,   23,
-        0,   17,   26,   26,    0,   16,   31,   31,   31,   23,
-       23,   23,   26,   26,   27,   31,   23,   23,   23,   23,
-       26,    0,   19,   29,   31,   13,   27,   23,   23,   23,
-       23,   26,   27,   31,   24,   24,   24,    0,   15,   31,
-       13,   27,   24,   24,   24,   31,   31,   24,   24,   24,
-
-       24,   24,   14,   27,   27,   24,   24,   24,   24,   24,
-       31,   31,   31,   24,   24,   27,   27,   27,   24,   24,
-       31,   31,   31,   31,   31,   27,   27,   27,   27,   27,
-       31,   31,   31,   27,   27,   27,   31,   31,   31,   31,
-       31,   27,   27,   27,   27,   27,   23,   23,   23,   23,
-       23,   23,   23,   23,   23,   23,   23,   23,    0
+        0,    0,   43,   32,   38,   37,   36,   41,   32,   26,
+       41,   32,   33,   32,   32,   32,   32,   35,   34,   27,
+       27,   27,   27,   27,   41,   32,   41,   27,   27,   27,
+       27,   27,   28,   41,   28,   29,   28,   28,   28,   28,
+       28,   27,   27,   27,   27,   27,   41,   28,    1,   12,
+       11,   12,   11,   11,   41,   41,    2,    8,    8,    8,
+        3,    8,    4,   41,   32,    0,   38,   36,    0,   40,
+       23,    0,   22,    0,   31,   31,    0,   32,   32,   32,
+       32,   32,   27,   27,   27,   27,   27,   32,   39,   32,
+
+        0,   32,   32,   32,   32,   32,   28,    0,   28,   23,
+        0,   22,    0,   28,    0,   28,   28,   28,   28,   28,
+       27,   27,   27,   27,   27,   28,   28,    1,   12,   12,
+       10,    9,   10,    0,    2,    8,    0,    8,    0,    0,
+        5,    6,    8,    8,    0,   32,   32,   32,   27,   27,
+       27,   27,   27,   27,   32,    0,   32,   32,   32,   32,
+       32,   28,   28,   28,   27,   27,   27,   27,   27,   27,
+       28,    7,    7,    0,    7,    8,   32,   32,   32,   32,
+       32,   27,   27,   27,   27,   27,   27,   32,    0,   32,
+       32,   32,   28,   28,   28,   28,   28,   27,   27,   27,
+
+       27,   27,   27,   28,    7,   32,   32,   32,    0,   19,
+       27,   27,   27,   27,   27,   32,    0,   32,   32,   28,
+       28,   28,   27,   27,   27,   27,   27,   28,   32,   32,
+       32,   32,   32,   27,   27,   27,   27,    0,   21,   32,
+        0,   32,   32,   28,   28,   28,   28,   28,   27,   27,
+       27,   27,   28,   24,   24,   24,    0,   18,   27,   27,
+        0,   17,   32,    0,   32,   32,   24,   24,   24,   27,
+       27,   28,   32,   24,   24,   24,   24,   27,    0,   20,
+       30,    0,   32,   14,   28,   24,   24,   24,   24,   27,
+       28,   32,   25,   25,   25,    0,   16,    0,   32,    0,
+
+       28,   25,   25,   25,   32,   32,   25,   25,   25,   25,
+       25,    0,    0,   13,   15,   14,    0,   28,   28,   25,
+       25,   25,   25,   25,   32,   32,   32,   25,   25,   28,
+       28,   28,   25,   25,   32,   32,   32,   32,   32,   28,
+       28,   28,   28,   28,   32,   32,   32,   28,   28,   28,
+       32,   32,   32,   32,   32,   28,   28,   28,   28,   28,
+       24,   24,   24,   24,   24,   24,   24,   24,   24,   24,
+       24,   24,    0
     } ;
 
 static yyconst int yy_ec[256] =
@@ -341,10 +343,10 @@ static yyconst int yy_ec[256] =
        24,   25,   10,   25,   26,   27,   28,   29,   30,   27,
        27,   31,   27,   27,   27,   27,   27,   32,   33,   34,
        27,   35,   36,   37,   38,   27,   39,   40,   27,   27,
-       10,   41,   10,    1,   42,    1,   43,   44,   44,   45,
+       10,   41,   10,    1,   42,    1,   43,   44,   45,   46,
 
-       46,   47,   44,   44,   48,   44,   44,   49,   50,   51,
-       52,   44,   44,   53,   54,   55,   56,   44,   44,   44,
+       47,   48,   44,   44,   49,   44,   44,   50,   51,   52,
+       53,   44,   44,   54,   55,   56,   57,   44,   44,   44,
        44,   44,    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,
@@ -362,784 +364,804 @@ static yyconst int yy_ec[256] =
         1,    1,    1,    1,    1
     } ;
 
-static yyconst int yy_meta[57] =
+static yyconst int yy_meta[58] =
     {   0,
         1,    2,    2,    3,    1,    4,    1,    3,    3,    1,
         1,    2,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    5,    4,    3,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         6,    7,    7,    7,    7,    7,    7,    7,    7,    7,
-        7,    7,    7,    7,    7,    7
+        7,    7,    7,    7,    7,    7,    7
     } ;
 
-static yyconst short int yy_base[379] =
+static yyconst short int yy_base[395] =
     {   0,
-        0,   29,   67,    0,   57,  122,  123,  130,  170,  225,
-      280,  320,  965,  922,  960, 2998,  955,  954,  914, 2998,
-     2998,  909, 2998,  136,  348,  376,  404, 2998, 2998,  445,
-      901,  906,  912,  900,  500,   96,  883,  885,  874,  869,
-      861,  873,  162,  870, 2998,  868,  161,  512,  540,  568,
-      609,  867,  869,  872,  861,  664,  100,  893,    0, 2998,
-      890,    0, 2998,  688,   59,    0,  852,  293,  107, 2998,
-      114, 2998,  147,  849,  728,  885,  881,  880, 2998,  839,
-      752,  838,  776,  302,  829,  800,  216,  125,  812,  840,
-      189,    0,  839,  155,  829,  829,  155, 2998,  118,  146,
-
-      121,  147,  149,  152,  811,  880,  226,  796,  904,  795,
-      928,  304,  952,  319,  153,  964,  992,  332,    0,  805,
-      219,  791,  796,  248,  150,  819,    0,  816,  238, 2998,
-     2998,  252,    0,  778,  295,  375,  247,  259, 2998, 2998,
-      777,  313,  407, 1020, 1048, 1076,  788,  775,  788,  778,
-      775,  779,  262,  218,  217,  287,  277,  249, 1104, 1132,
-     1160,  777,  763,  772,  754,  751,  753,  306,  738, 2998,
-      289,  539,  567,  386,  341, 1188, 1216,  497,  361,  744,
-      727,  731,  716,  714,  158,  315,  318,  331,  416,  369,
-     1244, 1272,  580,  377,  713,  706,  715,  700,  703,  330,
-
-      370, 1300, 1328, 1356,  389, 2998,  693,  663,  669,  664,
-      426,  220,  360,  102, 1384, 1412, 1440,  643,  633,  590,
-      588,  445,  398,  661,  374, 1468, 1496,  687,  446,  576,
-      573,  517,  520, 2998,  403,  486,  399,  697,  400, 1524,
-     1552,  706,  544,  525,  519,  545,  507, 1579, 1606, 1633,
-      548, 2998,  491,  572,  581, 2998,  466,  564,  388, 1660,
-     1687, 1714,  476,  590,  511,  749,  495, 1741, 1768,  776,
-      609,  672, 2998,  429,  496,  552,  822,  561, 1795, 1822,
-      830,  673,  412, 1850, 1878, 1906, 1934,  708, 2998,  524,
-     2998, 1962, 1990, 2018, 2046,  856,  592, 2074, 2102, 2130,
-
-     2158,  732,  268,  901,  593, 2186, 2214, 2242, 2270,  850,
-     2298, 2326, 2354,  927,  668, 2382, 2410, 2438,  974,  883,
-      981,  721, 2466, 2494, 1007, 1033,  731, 2522, 2550, 1059,
-     2578, 2606, 2634, 2662, 2690, 2718, 1065,  745, 2746, 2774,
-     1091, 1117,  769, 2802, 2830, 1143, 1149, 1175, 1201, 1227,
-     1234, 1260,  246, 1286, 1312,  119, 1318, 1344, 2998, 2871,
-     2878, 2885, 2892, 2899, 2906, 2913, 2920, 2927, 2934, 2941,
-     2948, 2955,   59, 2962, 2969, 2976, 2983, 2990
+        0,   52,   90,    0,   57,   58,  146,  151,  191,  247,
+      303,  343,  991,  949,  986, 3061,  983,  981,  941, 3061,
+     3061,  939, 3061,  157,  371,  399,  427, 3061, 3061,  468,
+      935,  933,  938,  928,  524,   20,  153,  909,  911,  903,
+      894,  895,  899,   54,  898, 3061,  895,  163,  536,  564,
+      592,  633,  894,  899,  901,  888,  689,   21,  919,    0,
+     3061,  916,    0, 3061,  713,   66,    0,  878,  316,  127,
+     3061,  135, 3061,   82,  877,  753,  913,  908,  907, 3061,
+      867,  777,  864,  801,  175,  863,  825,  189,  148,  837,
+      865,  238,    0,  865,   52,  858,  864,  178, 3061,  132,
+
+      161,  144,  173,  136,  149,  171,  839,  905,  207,  836,
+      929,  821,  953,  325,  977,  244,  269,  989, 1017,  354,
+        0,  831,  237,  824,  826,  270,  176,  845,    0,  842,
+      266, 3061, 3061,  273,    0,  804,  311,  357,  279,  336,
+     3061, 3061,  803,  284,  399, 1045, 1073, 1101,  815,  801,
+      814,  803,  800,  804,  162,  267,  236,  237,  295,  283,
+      145, 1129, 1157, 1185,  802,  788,  797,  779,  770,  776,
+      289,  758, 3061,  338,  426,  450,  521,  317, 1213, 1241,
+      547,  330,  758,  746,  754,  730,  738,  335,  349,  296,
+      323,  342,  553,  386, 1269, 1297,  579,  363,  737,  730,
+
+      738,  719,  726,  355,  373, 1325, 1353, 1381,  401, 3061,
+      718,  699,  706,  695,  402,  389,  403,  368,   38, 1409,
+     1437, 1465,  690,  675,  681,  671,  431,  393,  686,  396,
+     1493, 1521,  712,  434,  655,  602,  440,  449, 3061,  417,
+      489,  420,  424,  722,  546, 1549, 1577,  731,  599,  591,
+      562,  600,  510, 1604, 1631, 1658,  601, 3061,  550,  602,
+      605, 3061,  488,  542,  577,  535, 1685, 1712, 1739,  505,
+      613,  490,  774,  576, 1766, 1793,  801,  614,  619, 3061,
+      452,  405,  586,  616,  847,  604, 1820, 1847,  855,  633,
+      430, 1875, 1903, 1931, 1959,  697, 3061,  474,  655,  423,
+
+     1987, 2015, 2043, 2071,  881,  617, 2099, 2127, 2155, 2183,
+      757,  456,  719, 3061,  385,  320, 2223,  926,  746, 2235,
+     2263, 2291, 2319,  875, 2347, 2375, 2403,  952,  908, 2431,
+     2459, 2487,  999,  981, 1007,  756, 2515, 2543, 1033, 1059,
+      770, 2571, 2599, 1085, 2627, 2655, 2683, 2711, 2739, 2767,
+     1091,  794, 2795, 2823, 1117, 1143,  798, 2851, 2879, 1169,
+     1175, 1201, 1227, 1253, 1279, 1286,  240, 1312, 1338,  190,
+     1364, 1371, 3061, 2920, 2927, 2934, 2941, 2948, 2955, 2962,
+     2969, 2976, 2983, 2990, 2997, 3004,  153, 3011, 3018, 3025,
+     3032, 3039, 3046, 3053
+
     } ;
 
-static yyconst short int yy_def[379] =
+static yyconst short int yy_def[395] =
     {   0,
-      359,    1,  359,    3,    1,    1,  360,  360,  361,  361,
-      362,  362,  359,  363,  359,  359,  359,  364,  365,  359,
-      359,  366,  359,  367,  363,  363,  363,  359,  359,  359,
-       30,   30,   30,   30,  363,  363,   30,   30,   30,   30,
-       30,  368,  359,  369,  359,  370,  371,  368,  368,  368,
-      359,   51,   51,   51,   51,  368,  368,  359,  372,  359,
-      372,  372,  359,  359,  359,  373,  374,  375,  374,  359,
-      374,  359,  376,  363,  363,  359,  359,  364,  359,  365,
-      365,  366,  366,  367,  377,  363,  363,  363,  363,  363,
-      363,   30,   30,   30,   30,   30,  363,  359,  363,  363,
-
-      363,  363,  363,  363,  368,  368,  359,  369,  369,  370,
-      370,  371,  368,  368,  368,  368,  368,  368,   51,   51,
-       51,   51,   51,  368,  368,  359,  372,  372,  359,  359,
-      359,  359,  373,  374,  374,  375,  378,  375,  359,  359,
-      374,  374,  359,  363,  363,  363,   30,   30,   30,   30,
-       30,   30,  363,  363,  363,  363,  363,  363,  368,  368,
-      368,   51,   51,   51,   51,   51,   51,  368,  374,  359,
-      378,  375,  375,  363,  363,  363,  363,  363,   30,   30,
-       30,   30,   30,   30,  363,  363,  363,  363,  368,  368,
-      368,  368,  368,   51,   51,   51,   51,   51,   51,  368,
-
-      378,  363,  363,  363,  359,  359,   30,   30,   30,   30,
-       30,  363,  363,  363,  368,  368,  368,   51,   51,   51,
-       51,   51,  368,  363,  363,  363,  363,  363,   30,   30,
-       30,   30,  359,  359,  363,  363,  363,  368,  368,  368,
-      368,  368,   51,   51,   51,   51,  368,  363,  363,  363,
-      359,  359,   30,   30,  359,  359,  363,  363,  363,  368,
-      368,  368,   51,   51,  368,  363,  363,  363,  363,  363,
-       30,  359,  359,  363,  363,  363,  368,  368,  368,  368,
-      368,   51,  368,  363,  363,  363,  363,  359,  359,  363,
-      359,  368,  368,  368,  368,  363,  363,  363,  363,  363,
-
-      363,  363,  363,  368,  368,  368,  368,  368,  368,  368,
-      363,  363,  363,  363,  363,  368,  368,  368,  368,  368,
-      363,  363,  363,  363,  363,  368,  368,  368,  368,  368,
-      363,  363,  363,  368,  368,  368,  363,  363,  363,  363,
-      363,  368,  368,  368,  368,  368,  363,  363,  363,  368,
-      368,  368,  363,  363,  363,  368,  368,  368,    0,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359
+      373,    1,  373,    3,    1,    1,  374,  374,  375,  375,
+      376,  376,  373,  377,  373,  373,  373,  378,  379,  373,
+      373,  380,  373,  381,  377,  377,  377,  373,  373,  373,
+       30,   30,   30,   30,  377,  377,  378,   30,   30,   30,
+       30,   30,  382,  373,  383,  373,  384,  385,  382,  382,
+      382,  373,   52,   52,   52,   52,  382,  382,  373,  386,
+      373,  386,  386,  373,  373,  373,  387,  388,  389,  388,
+      373,  388,  373,  390,  377,  377,  373,  373,  378,  373,
+      379,  379,  380,  380,  381,  391,  377,  377,  377,  377,
+      377,  377,   30,   30,   30,   30,   30,  377,  373,  377,
+
+      378,  377,  377,  377,  377,  377,  382,  382,  373,  383,
+      383,  384,  384,  385,  382,  382,  382,  382,  382,  382,
+       52,   52,   52,   52,   52,  382,  382,  373,  386,  386,
+      373,  373,  373,  373,  387,  388,  388,  389,  392,  389,
+      373,  373,  388,  388,  373,  377,  377,  377,   30,   30,
+       30,   30,   30,   30,  377,  378,  377,  377,  377,  377,
+      377,  382,  382,  382,   52,   52,   52,   52,   52,   52,
+      382,  388,  373,  392,  389,  389,  377,  377,  377,  377,
+      377,   30,   30,   30,   30,   30,   30,  377,  378,  377,
+      377,  377,  382,  382,  382,  382,  382,   52,   52,   52,
+
+       52,   52,   52,  382,  392,  377,  377,  377,  373,  373,
+       30,   30,   30,   30,   30,  377,  378,  377,  377,  382,
+      382,  382,   52,   52,   52,   52,   52,  382,  377,  377,
+      377,  377,  377,   30,   30,   30,   30,  373,  373,  377,
+      378,  377,  377,  382,  382,  382,  382,  382,   52,   52,
+       52,   52,  382,  377,  377,  377,  373,  373,   30,   30,
+      373,  373,  377,  378,  377,  377,  382,  382,  382,   52,
+       52,  382,  377,  377,  377,  377,  377,   30,  373,  373,
+      377,  378,  377,  377,  382,  382,  382,  382,  382,   52,
+      382,  377,  377,  377,  377,  373,  373,  393,  377,  394,
+
+      382,  382,  382,  382,  377,  377,  377,  377,  377,  377,
+      377,  393,  393,  373,  377,  394,  394,  382,  382,  382,
+      382,  382,  382,  382,  377,  377,  377,  377,  377,  382,
+      382,  382,  382,  382,  377,  377,  377,  377,  377,  382,
+      382,  382,  382,  382,  377,  377,  377,  382,  382,  382,
+      377,  377,  377,  377,  377,  382,  382,  382,  382,  382,
+      377,  377,  377,  382,  382,  382,  377,  377,  377,  382,
+      382,  382,    0,  373,  373,  373,  373,  373,  373,  373,
+      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
+      373,  373,  373,  373
+
     } ;
 
-static yyconst short int yy_nxt[3055] =
+static yyconst short int yy_nxt[3119] =
     {   0,
        14,   15,   16,   17,   14,   18,   19,   20,   21,   14,
        22,   23,   14,   14,   24,   25,   26,   27,   25,   25,
        25,   25,   28,   29,   21,   30,   30,   30,   30,   31,
        30,   32,   30,   33,   30,   30,   34,   30,   30,   30,
        35,   14,   14,   14,   14,   14,   14,   14,   14,   14,
-       14,   14,   14,   36,   14,   14,   37,   38,   58,   39,
-      132,   98,   21,   40,   21,  133,   41,   42,   15,   16,
-       17,   42,   43,   44,   21,   45,   42,   46,   23,   42,
-       42,   47,   48,   49,   50,   48,   48,   48,   48,   28,
-       29,   21,   51,   51,   51,   51,   52,   51,   53,   51,
-
-       54,   51,   51,   55,   51,   51,   51,   56,   42,   42,
-       42,   42,   42,   42,   42,   42,   42,   42,   42,   42,
-       57,   42,   42,   58,   15,   60,   61,   21,   62,   21,
-      139,   15,   60,   61,   63,   62,   75,  140,   87,   85,
-      106,   63,   75,   85,   85,   63,   62,  135,  142,   98,
-      237,   99,   63,   62,  135,  125,  132,   98,   75,  106,
-       85,   75,  153,   64,   85,   75,  114,  155,   85,   85,
-       64,   15,   16,   17,  107,   18,   86,  107,  107,  107,
-      107,  107,  107,  107,  148,   85,   75,   75,  149,   75,
-      106,  150,   75,  106,  168,   75,  154,  158,   75,  157,
-
-      156,  113,   87,  212,   88,   88,   88,   88,   88,   88,
-       65,   66,   66,   66,   66,   66,   66,   66,   66,   66,
-       66,   66,   66,   66,   66,   66,   15,   16,   17,   75,
-       18,  144,  145,  146,  144,  144,  144,  144,  107,  132,
-       98,  107,  107,  107,  107,  107,  107,  107,  163,  132,
-       98,  170,  164,  132,   98,  165,   75,   75,   75,  187,
-       75,  137,  186,  172,  235,   65,   66,   66,   66,   66,
-       66,   66,   66,   66,   66,   66,   66,   66,   66,   66,
-       66,   15,   16,   17,   68,   18,   75,  171,  106,   75,
-       69,   70,   71,  201,  137,  137,  134,  134,  137,  173,
-
-      134,  186,   75,   72,  137,   85,  134,   85,   75,   85,
-       85,   85,   85,  185,  132,   98,  137,   75,  134,  188,
-       73,   15,   16,   17,   68,   18,   85,   75,   85,  171,
-       69,   70,   71,  138,  159,  160,  161,  159,  159,  159,
-      159,  186,   86,   72,  113,  114,  106,  115,  115,  115,
-      115,  115,  115,  135,  174,   75,  213,  200,   75,  106,
-       73,   87,  205,   88,   88,   88,   88,   88,   88,   88,
-      106,   75,  106,  214,  170,  223,  137,  137,  205,  169,
-      137,   75,  189,  206,  186,  236,  137,  224,   75,   87,
-      205,   89,   89,   89,   89,   89,   89,   89,  137,  206,
-
-       75,  202,  203,  204,  202,  202,  202,  202,   85,  106,
-      171,  206,   85,  238,   75,  138,   75,   87,   85,   90,
-       90,   90,   90,   90,   91,   88,   75,  233,   75,   85,
-       85,  215,  216,  217,  215,  215,  215,  215,  106,   75,
-      106,  276,  247,   75,   75,   74,  233,  251,  234,   74,
-      257,   74,  106,  259,   74,   74,  106,   74,   74,   74,
-       92,   92,   92,   92,   92,   92,   92,  234,  252,   75,
-       92,   92,   92,   92,   92,   92,   92,   92,   92,   92,
-       92,   92,   92,   92,   92,   75,   92,   74,   74,   74,
-       74,   74,   74,   74,   74,   74,   74,   74,   74,   74,
-
-       74,   97,   98,   74,  282,   74,   75,   74,   74,  266,
-      174,   74,  175,  175,  175,  175,  175,  175,  255,  271,
-      274,  233,   74,   74,   74,  114,   75,  115,  115,  115,
-      115,  115,  115,  115,  258,   75,   75,   75,  290,  256,
-      137,  137,  234,  169,  137,  251,  255,  106,  264,  251,
-      137,  106,  106,  114,  265,  116,  116,  116,  116,  116,
-      116,  116,  137,  263,   75,  283,  252,  256,  137,  137,
-      252,  172,  137,  272,  291,  277,  291,  303,  137,  138,
-      106,  114,  255,  117,  117,  117,  117,  117,  118,  115,
-      137,  272,   75,  189,  273,  190,  190,  190,  190,  190,
-
-      190,  106,  254,  256,   75,  296,  304,  138,  106,  105,
-      288,  275,  273,  105,  253,  105,  246,  245,  105,  105,
-      106,  105,  105,  105,  119,  119,  119,  119,  119,  119,
-      119,  289,   75,  106,  119,  119,  119,  119,  119,  119,
-      119,  119,  119,  119,  119,  119,  119,  119,  119,  106,
-      119,  105,  105,  105,  105,  105,  105,  105,  105,  105,
-      105,  105,  105,  105,  105,  124,   98,  105,  244,  105,
-      243,  105,  105,  272,  288,  105,  248,  249,  250,  248,
-      248,  248,  248,  315,  315,  315,  105,  105,  105,  129,
-       98,  130,  232,  131,  273,  289,  231,  130,  230,  131,
-
-      224,   75,  225,  225,  225,  225,  225,  225,   75,  288,
-      131,  131,  260,  261,  262,  260,  260,  260,  260,  238,
-      229,  239,  239,  239,  239,  239,  239,   75,  131,   74,
-      289,   74,  222,   74,  321,   74,   74,  106,  221,   74,
-      220,  219,  218,  211,  326,  296,  106,  315,  315,  315,
-       74,   74,   74,   80,  210,   80,  209,   80,  337,   80,
-       80,   75,  208,   80,  284,  285,  286,  287,  284,  284,
-      284,  106,   75,  207,   80,   80,   80,   82,  135,   82,
-      199,   82,  342,   82,   82,   75,  198,   82,  197,   75,
-      266,  267,  267,  267,  267,  267,  267,  196,   82,   82,
-
-       82,   84,  195,   74,  194,   84,  184,   74,   74,  106,
-      183,   84,  182,  181,  180,  179,   75,  135,  135,  128,
-      126,  167,   84,   84,   74,   87,  166,   88,   88,   88,
-       88,   88,   88,   88,  162,  111,  109,  292,  293,  294,
-      295,  292,  292,  292,  277,  278,  278,  278,  278,  278,
-      278,  106,   75,   87,  152,   88,   88,   88,   88,   88,
-       88,   88,  106,  304,  151,  320,  320,  320,  147,  143,
-      106,  311,  312,  313,  311,  311,  311,  311,   83,   81,
-       75,  105,   79,  105,   77,  105,   76,  105,  105,   75,
-      106,  105,  135,  128,  126,  123,   75,  122,  320,  320,
-
-      320,  121,  105,  105,  105,  108,  120,  108,  111,  108,
-      109,  108,  108,  106,  104,  108,  316,  317,  318,  316,
-      316,  316,  316,  106,  103,  102,  108,  108,  108,  110,
-      101,  110,  100,  110,   96,  110,  110,   95,   94,  110,
-       93,  106,  314,  314,  314,  314,  314,  314,  314,   83,
-      110,  110,  110,  112,   81,  105,   79,  112,   77,  105,
-      105,   76,   75,  112,  359,  359,  359,   75,  359,  359,
-      359,  359,  359,  359,  112,  112,  105,  114,  359,  115,
-      115,  115,  115,  115,  115,  115,  359,  359,  359,  319,
-      319,  319,  319,  319,  319,  319,  331,  332,  333,  331,
-
-      331,  331,  331,  359,  106,  114,  359,  115,  115,  115,
-      115,  115,  115,  115,  106,  359,  359,  359,  359,  359,
-      321,   75,  322,  322,  322,  322,  322,  322,  359,  359,
-      359,  359,  106,  174,  359,  175,  175,  175,  175,  175,
-      175,  175,  359,  359,  359,  359,  359,   75,  334,  335,
-      336,  334,  334,  334,  334,  359,  359,  359,  359,  359,
-       75,  174,  359,  176,  176,  176,  176,  176,  176,  176,
-      359,  359,  326,  106,  327,  327,  327,  327,  327,  327,
-      347,  348,  349,  347,  347,  347,  347,  359,   75,  174,
-      359,  177,  177,  177,  177,  177,  178,  175,  359,  106,
-
-      359,  359,  359,  359,  337,   75,  338,  338,  338,  338,
-      338,  338,  359,  359,  359,  359,   75,  189,  359,  190,
-      190,  190,  190,  190,  190,  190,  359,  359,  359,  359,
-      359,   75,  350,  351,  352,  350,  350,  350,  350,  359,
-      359,  359,  359,  359,  106,  189,  359,  191,  191,  191,
-      191,  191,  191,  191,  359,  359,  342,  106,  343,  343,
-      343,  343,  343,  343,  353,  353,  353,  353,  353,  353,
-      353,  359,  106,  189,  359,  192,  192,  192,  192,  192,
-      193,  190,  359,  106,  359,  359,  359,  359,  359,   75,
-      347,  347,  347,  347,  347,  347,  347,  359,  359,  359,
-
-      106,  174,  359,  175,  175,  175,  175,  175,  175,  175,
-      359,  359,  359,  359,  359,   75,  354,  354,  354,  354,
-      354,  355,  353,  359,  359,  359,  359,  359,   75,  174,
-      359,  175,  175,  175,  175,  175,  175,  175,  359,  359,
-      359,   75,  356,  356,  356,  356,  356,  356,  356,  350,
-      350,  350,  350,  350,  350,  350,   75,  189,  359,  190,
-      190,  190,  190,  190,  190,  190,  359,  106,  359,  359,
-      359,  359,  359,  359,  106,  357,  357,  357,  357,  357,
-      358,  356,  359,  359,  106,  189,  359,  190,  190,  190,
-      190,  190,  190,  190,  359,  359,  359,  359,  359,  359,
-
-      106,  353,  353,  353,  353,  353,  353,  353,  359,  359,
-      359,  359,  106,  224,  359,  225,  225,  225,  225,  225,
-      225,  225,  359,  359,  359,  359,   75,  353,  353,  353,
-      353,  353,  353,  356,  356,  356,  356,  356,  356,  356,
-       75,  224,  359,  226,  226,  226,  226,  226,  226,  226,
-      359,  359,   75,  359,  359,  359,  359,  359,  106,  356,
-      356,  356,  356,  356,  356,  359,  359,  359,   75,  224,
-      359,  227,  227,  227,  227,  227,  228,  225,  359,  359,
-      359,  359,  359,  359,  106,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,   75,  238,  359,  239,
-
-      239,  239,  239,  239,  239,  239,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  106,  238,  359,  240,  240,  240,
-      240,  240,  240,  240,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  106,  238,  359,  241,  241,  241,  241,  241,
-      242,  239,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      106,  224,  359,  225,  225,  225,  225,  225,  225,  225,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-
-      359,  359,  359,  359,  359,  359,  359,  359,   75,  224,
-      359,  225,  225,  225,  225,  225,  225,  225,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,   75,  238,  359,  239,
-      239,  239,  239,  239,  239,  239,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  106,  238,  359,  239,  239,  239,
-      239,  239,  239,  239,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  106,  266,  267,  267,  267,  267,  267,  267,
-
-      267,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,   75,
-      266,  268,  268,  268,  268,  268,  268,  268,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,   75,  266,  269,  269,
-      269,  269,  269,  270,  267,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,   75,  277,  278,  278,  278,  278,  278,
-      278,  278,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-
-      106,  277,  279,  279,  279,  279,  279,  279,  279,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  106,  277,  280,
-      280,  280,  280,  280,  281,  278,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  106,  266,  267,  267,  267,  267,
-      267,  267,  267,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,   75,  266,  267,  267,  267,  267,  267,  267,  267,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-
-      359,  359,  359,  359,  359,  359,  359,  359,   75,  277,
-      278,  278,  278,  278,  278,  278,  278,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  106,  277,  278,  278,  278,
-      278,  278,  278,  278,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  106,  296,  359,  297,  297,  297,  297,  297,
-      297,  297,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-       75,  296,  359,  298,  298,  298,  298,  298,  298,  298,
-
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,   75,  296,
-      359,  299,  299,  299,  299,  299,  300,  301,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,   75,  296,  359,  302,
-      302,  302,  297,  297,  297,  297,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,   75,  304,  359,  305,  305,  305,
-      305,  305,  305,  305,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-
-      359,  359,  106,  304,  359,  306,  306,  306,  306,  306,
-      306,  306,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      106,  304,  359,  307,  307,  307,  307,  307,  308,  309,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  106,  304,
-      359,  310,  310,  310,  305,  305,  305,  305,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  106,  296,  359,  301,
-      301,  301,  301,  301,  301,  301,  359,  359,  359,  359,
-
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,   75,  296,  359,  301,  301,  301,
-      301,  301,  301,  301,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,   75,  296,  359,  301,  301,  301,  301,  301,
-      301,  314,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-       75,  296,  359,  314,  314,  314,  314,  314,  314,  314,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,   75,  304,
-
-      359,  309,  309,  309,  309,  309,  309,  309,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  106,  304,  359,  309,
-      309,  309,  309,  309,  309,  309,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  106,  304,  359,  309,  309,  309,
-      309,  309,  309,  319,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  106,  304,  359,  319,  319,  319,  319,  319,
-      319,  319,  359,  359,  359,  359,  359,  359,  359,  359,
-
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      106,  321,  359,  322,  322,  322,  322,  322,  322,  322,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,   75,  321,
-      359,  323,  323,  323,  323,  323,  323,  323,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,   75,  321,  359,  324,
-      324,  324,  324,  324,  325,  322,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,   75,  326,  359,  327,  327,  327,
-
-      327,  327,  327,  327,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  106,  326,  359,  328,  328,  328,  328,  328,
-      328,  328,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      106,  326,  359,  329,  329,  329,  329,  329,  330,  327,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  106,  321,
-      359,  322,  322,  322,  322,  322,  322,  322,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-
-      359,  359,  359,  359,  359,  359,   75,  321,  359,  322,
-      322,  322,  322,  322,  322,  322,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,   75,  326,  359,  327,  327,  327,
-      327,  327,  327,  327,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  106,  326,  359,  327,  327,  327,  327,  327,
-      327,  327,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      106,  337,  359,  338,  338,  338,  338,  338,  338,  338,
-
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,   75,  337,
-      359,  339,  339,  339,  339,  339,  339,  339,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,   75,  337,  359,  340,
-      340,  340,  340,  340,  341,  338,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,   75,  342,  359,  343,  343,  343,
-      343,  343,  343,  343,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-
-      359,  359,  106,  342,  359,  344,  344,  344,  344,  344,
-      344,  344,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      106,  342,  359,  345,  345,  345,  345,  345,  346,  343,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  106,  337,
-      359,  338,  338,  338,  338,  338,  338,  338,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,   75,  337,  359,  338,
-      338,  338,  338,  338,  338,  338,  359,  359,  359,  359,
-
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,   75,  342,  359,  343,  343,  343,
-      343,  343,  343,  343,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  106,  342,  359,  343,  343,  343,  343,  343,
-      343,  343,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      106,   59,   59,   59,   59,   59,   59,   59,   21,   21,
-       21,   21,   21,   21,   21,   67,   67,   67,   67,   67,
-       67,   67,   74,  359,  359,  359,  359,   74,   74,   78,
-
-       78,   78,   78,   78,   78,   78,   80,  359,  359,  359,
-      359,   80,   80,   82,  359,  359,  359,  359,   82,   82,
-       84,  359,   84,  359,  359,   84,   84,  105,  359,  359,
-      359,  359,  105,  105,  108,  359,  359,  359,  359,  108,
-      108,  110,  359,  359,  359,  359,  110,  110,  112,  359,
-      112,  359,  359,  112,  112,  127,  359,  127,  127,  359,
-      359,  127,  134,  359,  134,  359,  134,  134,  134,  136,
-      136,  136,  136,  136,  136,  136,  141,  141,  141,  141,
-      141,  141,  141,   85,  359,   85,  359,  359,   85,   85,
-      137,  137,  137,  137,  137,  137,  137,   13,  359,  359,
-
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359
+       14,   14,   14,   14,   36,   14,   14,   37,   59,   59,
+       76,  108,   21,   21,   21,   21,  109,  134,   99,  109,
+      109,  109,  109,  109,  109,  109,  100,  127,   76,   38,
+       39,  150,   40,  144,   99,  151,   41,  243,  152,   42,
+       43,   15,   16,   17,   43,   44,   45,   21,   46,   43,
+
+       47,   23,   43,   43,   48,   49,   50,   51,   49,   49,
+       49,   49,   28,   29,   21,   52,   52,   52,   52,   53,
+       52,   54,   52,   55,   52,   52,   56,   52,   52,   52,
+       57,   43,   43,   43,   43,   43,   43,   43,   43,   43,
+       43,   43,   43,   43,   58,   43,   43,   15,   61,   62,
+      141,   63,   15,   61,   62,   80,   63,   64,  142,  135,
+       86,   88,   64,   80,   86,   86,   86,  137,   64,   63,
+       86,   86,   76,   64,   63,  137,   76,  155,   86,  134,
+       99,   86,   86,   86,   76,   76,   65,   86,   76,   76,
+      159,   65,   15,   16,   17,  157,   18,   87,  190,   86,
+
+      160,  101,   76,  115,  146,  147,  148,  146,  146,  146,
+      146,   76,  156,   76,  188,   87,  108,  161,   76,  109,
+      158,  171,  109,  109,  109,  109,  109,  109,  109,   76,
+      108,   66,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   15,   16,
+       17,   88,   18,   89,   89,   89,   89,   89,   89,  162,
+      163,  164,  162,  162,  162,  162,  166,  134,   99,   80,
+      167,  134,   99,  168,  134,   99,   76,   76,   76,  191,
+       76,  190,  116,  173,  108,  134,   99,   66,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+
+       67,   67,   67,   67,   15,   16,   17,   69,   18,  108,
+      108,  189,  136,   70,   71,   72,  136,  139,  139,  174,
+      136,  139,  136,   76,  137,  192,   73,  139,   86,  108,
+      177,  209,   86,   86,  136,   76,   76,  218,  139,  139,
+      175,  204,  205,   74,   15,   16,   17,   69,   18,   86,
+      190,   80,  210,   70,   71,   72,  140,   76,  139,  139,
+      317,  172,  139,   76,  209,  115,   73,  116,  139,  117,
+      117,  117,  117,  117,  117,   76,  176,  173,  174,  219,
+      139,  216,   76,   74,   88,  210,   89,   89,   89,   89,
+       89,   89,   89,  242,  108,  108,  190,  140,  217,  193,
+
+       86,  228,  209,  238,   86,   80,  298,   80,   76,  229,
+       86,   76,   88,  174,   90,   90,   90,   90,   90,   90,
+       90,   86,   86,  210,  239,   76,  108,  139,  139,   76,
+      172,  139,  238,  108,  240,  257,   76,  139,  253,   76,
+       88,  261,   91,   91,   91,   91,   91,   92,   89,  139,
+      238,  139,  139,  239,  175,  139,  258,   76,  314,  241,
+       76,  139,  262,  317,   76,  263,  140,   76,   75,  265,
+      108,  239,   75,  139,   75,  313,  314,   75,   75,  266,
+       75,   75,   75,   93,   93,   93,   93,   93,   93,   93,
+      140,   80,   76,   93,   93,   93,   93,   93,   93,   93,
+
+       93,   93,   93,   93,   93,   93,   93,   93,   76,   93,
+       75,   75,   75,   75,   75,   75,   75,   75,   75,   75,
+       75,   75,   75,   75,   75,   98,   99,   75,   76,   75,
+      108,   75,   75,  290,  264,   75,  206,  207,  208,  206,
+      206,  206,  206,  281,   80,  291,   75,   75,   75,  116,
+      108,  117,  117,  117,  117,  117,  117,  117,  272,  244,
+      177,   76,  178,  178,  178,  178,  178,  178,  220,  221,
+      222,  220,  220,  220,  220,   76,  108,  116,  278,  118,
+      118,  118,  118,  118,  118,  118,  108,   76,  282,  284,
+      273,  271,  193,  108,  194,  194,  194,  194,  194,  194,
+
+      257,  261,  257,  279,  108,  116,  261,  119,  119,  119,
+      119,  119,  120,  117,  279,  296,   76,   76,  285,  108,
+      279,  258,  262,  258,  280,  283,   76,  262,  299,  270,
+      305,  260,  108,  107,  296,  280,  297,  107,  300,  107,
+      300,  280,  107,  107,  108,  107,  107,  107,  121,  121,
+      121,  121,  121,  121,  121,  297,   76,   76,  121,  121,
+      121,  121,  121,  121,  121,  121,  121,  121,  121,  121,
+      121,  121,  121,  108,  121,  107,  107,  107,  107,  107,
+      107,  107,  107,  107,  107,  107,  107,  107,  107,  107,
+      126,   99,  107,  259,  107,   76,  107,  107,  296,  252,
+
+      107,  254,  255,  256,  254,  254,  254,  254,  251,  315,
+      250,  107,  107,  107,  131,   99,  132,  249,  133,  297,
+      313,  314,  132,  237,  133,  229,   76,  230,  230,  230,
+      230,  230,  230,  236,  235,  133,  133,  267,  268,  269,
+      267,  267,  267,  267,  244,  234,  245,  245,  245,  245,
+      245,  245,   76,  133,   75,  227,   75,  226,   75,  318,
+       75,   75,  108,  225,   75,  224,  223,  215,  214,  335,
+      305,  108,  329,  329,  329,   75,   75,   75,   81,  213,
+       81,  212,   81,  340,   81,   81,  108,  211,   81,  292,
+      293,  294,  295,  292,  292,  292,   76,   76,  137,   81,
+
+       81,   81,   83,  203,   83,  202,   83,  351,   83,   83,
+      108,  356,   83,  201,   76,  273,  274,  274,  274,  274,
+      274,  274,  200,   83,   83,   83,   85,  199,   75,  198,
+       85,  187,   75,   75,   76,  186,   85,  185,  108,  184,
+      183,   76,  182,  137,  137,  130,  128,   85,   85,   75,
+       88,  170,   89,   89,   89,   89,   89,   89,   89,  169,
+      165,  113,  301,  302,  303,  304,  301,  301,  301,  285,
+      286,  286,  286,  286,  286,  286,  111,   76,   88,  108,
+       89,   89,   89,   89,   89,   89,   89,  108,  318,  154,
+      334,  334,  334,  153,  149,  108,  325,  326,  327,  325,
+
+      325,  325,  325,  145,   84,   76,  107,   82,  107,   80,
+      107,   78,  107,  107,   77,  108,  107,   76,  137,  130,
+      128,   76,  125,  329,  329,  329,  124,  107,  107,  107,
+      110,  123,  110,  122,  110,  113,  110,  110,  111,  108,
+      110,  330,  331,  332,  330,  330,  330,  330,   76,  106,
+      105,  110,  110,  110,  112,  104,  112,  103,  112,  102,
+      112,  112,   97,   96,  112,   95,  108,  328,  328,  328,
+      328,  328,  328,  328,   94,  112,  112,  112,  114,   84,
+      107,   82,  114,   80,  107,  107,   78,   77,  114,   76,
+      373,  373,   76,  373,  373,  373,  334,  334,  334,  114,
+
+      114,  107,  116,  373,  117,  117,  117,  117,  117,  117,
+      117,  373,  373,  373,  333,  333,  333,  333,  333,  333,
+      333,  108,  345,  346,  347,  345,  345,  345,  345,  108,
+      116,  373,  117,  117,  117,  117,  117,  117,  117,  108,
+      373,  373,  373,  373,  373,  373,  335,   76,  336,  336,
+      336,  336,  336,  336,  373,  373,  373,  108,  177,  373,
+      178,  178,  178,  178,  178,  178,  178,  373,  373,  373,
+      373,  373,  373,   76,  348,  349,  350,  348,  348,  348,
+      348,  373,  373,  373,  373,   76,  177,  373,  179,  179,
+      179,  179,  179,  179,  179,  373,  373,  373,  340,  108,
+
+      341,  341,  341,  341,  341,  341,  361,  362,  363,  361,
+      361,  361,  361,   76,  177,  373,  180,  180,  180,  180,
+      180,  181,  178,  373,  373,  108,  373,  373,  373,  373,
+      351,   76,  352,  352,  352,  352,  352,  352,  373,  373,
+      373,   76,  193,  373,  194,  194,  194,  194,  194,  194,
+      194,  373,  373,  373,  373,  373,  373,   76,  364,  365,
+      366,  364,  364,  364,  364,  373,  373,  373,  373,  108,
+      193,  373,  195,  195,  195,  195,  195,  195,  195,  373,
+      373,  373,  356,  108,  357,  357,  357,  357,  357,  357,
+      367,  367,  367,  367,  367,  367,  367,  108,  193,  373,
+
+      196,  196,  196,  196,  196,  197,  194,  373,  373,  108,
+      373,  373,  373,  373,  373,   76,  361,  361,  361,  361,
+      361,  361,  361,  373,  373,  108,  177,  373,  178,  178,
+      178,  178,  178,  178,  178,  373,  373,  373,  373,  373,
+      373,   76,  368,  368,  368,  368,  368,  369,  367,  373,
+      373,  373,  373,   76,  177,  373,  178,  178,  178,  178,
+      178,  178,  178,  373,  373,  373,  373,   76,  370,  370,
+      370,  370,  370,  370,  370,  373,  373,  373,  373,  373,
+      373,   76,  193,  373,  194,  194,  194,  194,  194,  194,
+      194,  373,  373,  108,  364,  364,  364,  364,  364,  364,
+
+      364,  371,  371,  371,  371,  371,  372,  370,  373,  108,
+      193,  373,  194,  194,  194,  194,  194,  194,  194,  108,
+      373,  373,  373,  373,  373,  373,  108,  367,  367,  367,
+      367,  367,  367,  367,  373,  373,  373,  108,  229,  373,
+      230,  230,  230,  230,  230,  230,  230,  373,  373,  373,
+      373,  373,   76,  367,  367,  367,  367,  367,  367,  373,
+      373,  373,  373,  373,  373,   76,  229,  373,  231,  231,
+      231,  231,  231,  231,  231,  373,  373,  373,   76,  370,
+      370,  370,  370,  370,  370,  370,  370,  370,  370,  370,
+      370,  370,  373,   76,  229,  373,  232,  232,  232,  232,
+
+      232,  233,  230,  373,  108,  373,  373,  373,  373,  373,
+      373,  108,  373,  373,  373,  373,  373,  373,  373,  373,
+      373,   76,  244,  373,  245,  245,  245,  245,  245,  245,
+      245,  373,  373,  373,  373,  373,  373,  373,  373,  373,
+      373,  373,  373,  373,  373,  373,  373,  373,  373,  108,
+      244,  373,  246,  246,  246,  246,  246,  246,  246,  373,
+      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
+      373,  373,  373,  373,  373,  373,  373,  108,  244,  373,
+      247,  247,  247,  247,  247,  248,  245,  373,  373,  373,
+      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
+
+      373,  373,  373,  373,  373,  108,  229,  373,  230,  230,
+      230,  230,  230,  230,  230,  373,  373,  373,  373,  373,
+      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
+      373,  373,  373,   76,  229,  373,  230,  230,  230,  230,
+      230,  230,  230,  373,  373,  373,  373,  373,  373,  373,
+      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
+      373,   76,  244,  373,  245,  245,  245,  245,  245,  245,
+      245,  373,  373,  373,  373,  373,  373,  373,  373,  373,
+      373,  373,  373,  373,  373,  373,  373,  373,  373,  108,
+      244,  373,  245,  245,  245,  245,  245,  245,  245,  373,
+
+      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
+      373,  373,  373,  373,  373,  373,  373,  108,  273,  274,
+      274,  274,  274,  274,  274,  274,  373,  373,  373,  373,
+      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
+      373,  373,  373,  373,   76,  273,  275,  275,  275,  275,
+      275,  275,  275,  373,  373,  373,  373,  373,  373,  373,
+      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
+      373,   76,  273,  276,  276,  276,  276,  276,  277,  274,
+      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
+      373,  373,  373,  373,  373,  373,  373,  373,   76,  285,
+
+      286,  286,  286,  286,  286,  286,  286,  373,  373,  373,
+      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
+      373,  373,  373,  373,  373,  108,  285,  287,  287,  287,
+      287,  287,  287,  287,  373,  373,  373,  373,  373,  373,
+      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
+      373,  373,  108,  285,  288,  288,  288,  288,  288,  289,
+      286,  373,  373,  373,  373,  373,  373,  373,  373,  373,
+      373,  373,  373,  373,  373,  373,  373,  373,  373,  108,
+      273,  274,  274,  274,  274,  274,  274,  274,  373,  373,
+      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
+
+      373,  373,  373,  373,  373,  373,   76,  273,  274,  274,
+      274,  274,  274,  274,  274,  373,  373,  373,  373,  373,
+      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
+      373,  373,  373,   76,  285,  286,  286,  286,  286,  286,
+      286,  286,  373,  373,  373,  373,  373,  373,  373,  373,
+      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
+      108,  285,  286,  286,  286,  286,  286,  286,  286,  373,
+      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
+      373,  373,  373,  373,  373,  373,  373,  108,  305,  373,
+      306,  306,  306,  306,  306,  306,  306,  373,  373,  373,
+
+      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
+      373,  373,  373,  373,  373,   76,  305,  373,  307,  307,
+      307,  307,  307,  307,  307,  373,  373,  373,  373,  373,
+      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
+      373,  373,  373,   76,  305,  373,  308,  308,  308,  308,
+      308,  309,  310,  373,  373,  373,  373,  373,  373,  373,
+      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
+      373,   76,  305,  373,  311,  311,  311,  306,  306,  306,
+      306,  373,  373,  373,  373,  373,  373,  373,  373,  373,
+      373,  373,  373,  373,  373,  373,  373,  373,  373,   76,
+
+      318,  373,  319,  319,  319,  319,  319,  319,  319,  373,
+      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
+      373,  373,  373,  373,  373,  373,  373,  108,  318,  373,
+      320,  320,  320,  320,  320,  320,  320,  373,  373,  373,
+      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
+      373,  373,  373,  373,  373,  108,  318,  373,  321,  321,
+      321,  321,  321,  322,  323,  373,  373,  373,  373,  373,
+      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
+      373,  373,  373,  108,  318,  373,  324,  324,  324,  319,
+      319,  319,  319,  373,  373,  373,  373,  373,  373,  373,
+
+      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
+      373,  108,  305,  373,  310,  310,  310,  310,  310,  310,
+      310,  373,  373,  373,  373,  373,  373,  373,  373,  373,
+      373,  373,  373,  373,  373,  373,  373,  373,  373,   76,
+      305,  373,  310,  310,  310,  310,  310,  310,  310,  373,
+      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
+      373,  373,  373,  373,  373,  373,  373,   76,  305,  373,
+      310,  310,  310,  310,  310,  310,  328,  373,  373,  373,
+      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
+      373,  373,  373,  373,  373,   76,  305,  373,  328,  328,
+
+      328,  328,  328,  328,  328,  373,  373,  373,  373,  373,
+      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
+      373,  373,  373,   76,  316,  373,  316,  373,  316,  373,
+      316,  316,  373,  373,  316,  373,  373,  373,  373,  373,
+      373,  373,  373,  373,  373,  316,  316,  316,  318,  373,
+      323,  323,  323,  323,  323,  323,  323,  373,  373,  373,
+      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
+      373,  373,  373,  373,  373,  108,  318,  373,  323,  323,
+      323,  323,  323,  323,  323,  373,  373,  373,  373,  373,
+      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
+
+      373,  373,  373,  108,  318,  373,  323,  323,  323,  323,
+      323,  323,  333,  373,  373,  373,  373,  373,  373,  373,
+      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
+      373,  108,  318,  373,  333,  333,  333,  333,  333,  333,
+      333,  373,  373,  373,  373,  373,  373,  373,  373,  373,
+      373,  373,  373,  373,  373,  373,  373,  373,  373,  108,
+      335,  373,  336,  336,  336,  336,  336,  336,  336,  373,
+      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
+      373,  373,  373,  373,  373,  373,  373,   76,  335,  373,
+      337,  337,  337,  337,  337,  337,  337,  373,  373,  373,
+
+      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
+      373,  373,  373,  373,  373,   76,  335,  373,  338,  338,
+      338,  338,  338,  339,  336,  373,  373,  373,  373,  373,
+      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
+      373,  373,  373,   76,  340,  373,  341,  341,  341,  341,
+      341,  341,  341,  373,  373,  373,  373,  373,  373,  373,
+      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
+      373,  108,  340,  373,  342,  342,  342,  342,  342,  342,
+      342,  373,  373,  373,  373,  373,  373,  373,  373,  373,
+      373,  373,  373,  373,  373,  373,  373,  373,  373,  108,
+
+      340,  373,  343,  343,  343,  343,  343,  344,  341,  373,
+      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
+      373,  373,  373,  373,  373,  373,  373,  108,  335,  373,
+      336,  336,  336,  336,  336,  336,  336,  373,  373,  373,
+      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
+      373,  373,  373,  373,  373,   76,  335,  373,  336,  336,
+      336,  336,  336,  336,  336,  373,  373,  373,  373,  373,
+      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
+      373,  373,  373,   76,  340,  373,  341,  341,  341,  341,
+      341,  341,  341,  373,  373,  373,  373,  373,  373,  373,
+
+      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
+      373,  108,  340,  373,  341,  341,  341,  341,  341,  341,
+      341,  373,  373,  373,  373,  373,  373,  373,  373,  373,
+      373,  373,  373,  373,  373,  373,  373,  373,  373,  108,
+      351,  373,  352,  352,  352,  352,  352,  352,  352,  373,
+      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
+      373,  373,  373,  373,  373,  373,  373,   76,  351,  373,
+      353,  353,  353,  353,  353,  353,  353,  373,  373,  373,
+      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
+      373,  373,  373,  373,  373,   76,  351,  373,  354,  354,
+
+      354,  354,  354,  355,  352,  373,  373,  373,  373,  373,
+      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
+      373,  373,  373,   76,  356,  373,  357,  357,  357,  357,
+      357,  357,  357,  373,  373,  373,  373,  373,  373,  373,
+      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
+      373,  108,  356,  373,  358,  358,  358,  358,  358,  358,
+      358,  373,  373,  373,  373,  373,  373,  373,  373,  373,
+      373,  373,  373,  373,  373,  373,  373,  373,  373,  108,
+      356,  373,  359,  359,  359,  359,  359,  360,  357,  373,
+      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
+
+      373,  373,  373,  373,  373,  373,  373,  108,  351,  373,
+      352,  352,  352,  352,  352,  352,  352,  373,  373,  373,
+      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
+      373,  373,  373,  373,  373,   76,  351,  373,  352,  352,
+      352,  352,  352,  352,  352,  373,  373,  373,  373,  373,
+      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
+      373,  373,  373,   76,  356,  373,  357,  357,  357,  357,
+      357,  357,  357,  373,  373,  373,  373,  373,  373,  373,
+      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
+      373,  108,  356,  373,  357,  357,  357,  357,  357,  357,
+
+      357,  373,  373,  373,  373,  373,  373,  373,  373,  373,
+      373,  373,  373,  373,  373,  373,  373,  373,  373,  108,
+       60,   60,   60,   60,   60,   60,   60,   21,   21,   21,
+       21,   21,   21,   21,   68,   68,   68,   68,   68,   68,
+       68,   75,  373,  373,  373,  373,   75,   75,   79,   79,
+       79,   79,   79,   79,   79,   81,  373,  373,  373,  373,
+       81,   81,   83,  373,  373,  373,  373,   83,   83,   85,
+      373,   85,  373,  373,   85,   85,  107,  373,  373,  373,
+      373,  107,  107,  110,  373,  373,  373,  373,  110,  110,
+      112,  373,  373,  373,  373,  112,  112,  114,  373,  114,
+
+      373,  373,  114,  114,  129,  373,  129,  129,  373,  373,
+      129,  136,  373,  136,  373,  136,  136,  136,  138,  138,
+      138,  138,  138,  138,  138,  143,  143,  143,  143,  143,
+      143,  143,   86,  373,   86,  373,  373,   86,   86,  139,
+      139,  139,  139,  139,  139,  139,  312,  312,  312,  312,
+      312,  312,  312,  316,  373,  373,  373,  373,  316,  316,
+       13,  373,  373,  373,  373,  373,  373,  373,  373,  373,
+      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
+      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
+      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
+
+      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
+      373,  373,  373,  373,  373,  373,  373,  373
     } ;
 
-static yyconst short int yy_chk[3055] =
+static yyconst short int yy_chk[3119] =
     {   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,    1,    1,    1,    1,    2,    2,    5,    2,
-       65,   65,    5,    2,    5,  373,    2,    3,    3,    3,
+        1,    1,    1,    1,    1,    1,    1,    2,    5,    6,
+       36,   58,    5,    6,    5,    6,   44,   66,   66,   44,
+       44,   44,   44,   44,   44,   44,   36,   58,  219,    2,
+        2,   95,    2,   74,   74,   95,    2,  219,   95,    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,    3,    3,    3,    3,    3,    3,
-        3,    3,    3,    6,    7,    7,    7,    6,    7,    6,
-       69,    8,    8,    8,    7,    8,   36,   71,   88,   24,
-       57,    8,  214,   24,   24,    7,    7,   69,   73,   73,
-      214,   36,    8,    8,   71,   57,   97,   97,   99,  356,
-       24,  101,   99,    7,   47,   88,  115,  101,   47,   47,
-        8,    9,    9,    9,   43,    9,   24,   43,   43,   43,
-       43,   43,   43,   43,   94,   47,  100,  102,   94,  103,
-      125,   94,  104,  115,  125,   97,  100,  104,  185,  103,
-
-      102,   47,   91,  185,   91,   91,   91,   91,   91,   91,
-        9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
-        9,    9,    9,    9,    9,    9,   10,   10,   10,   91,
-       10,   87,   87,   87,   87,   87,   87,   87,  107,  129,
-      129,  107,  107,  107,  107,  107,  107,  107,  121,  124,
-      124,  137,  121,  132,  132,  121,   87,  155,  154,  155,
-      212,  138,  154,  138,  212,   10,   10,   10,   10,   10,
+        3,    3,    3,    3,    3,    3,    3,    7,    7,    7,
+       70,    7,    8,    8,    8,   37,    8,    7,   72,  387,
+       24,   89,    8,  101,   24,   24,   48,   70,    7,    7,
+       48,   48,  100,    8,    8,   72,  104,  100,   85,   98,
+       98,   24,   85,   85,  102,  161,    7,   48,   89,  105,
+      104,    8,    9,    9,    9,  102,    9,   24,  161,   85,
+
+      105,   37,  155,   48,   88,   88,   88,   88,   88,   88,
+       88,  106,  101,  103,  155,   85,  127,  106,   98,  109,
+      103,  127,  109,  109,  109,  109,  109,  109,  109,   88,
+      370,    9,    9,    9,    9,    9,    9,    9,    9,    9,
+        9,    9,    9,    9,    9,    9,    9,    9,   10,   10,
+       10,   92,   10,   92,   92,   92,   92,   92,   92,  116,
+      116,  116,  116,  116,  116,  116,  123,  131,  131,  156,
+      123,  126,  126,  123,  134,  134,  157,  158,   92,  158,
+      367,  157,  117,  139,  116,  144,  144,   10,   10,   10,
        10,   10,   10,   10,   10,   10,   10,   10,   10,   10,
-       10,   11,   11,   11,   11,   11,  353,  137,  124,  158,
-       11,   11,   11,  171,   68,   68,  135,   68,   68,  138,
-
-      135,  158,  153,   11,   68,   84,  135,  112,  303,   84,
-       84,  112,  112,  153,  142,  142,   68,  157,  135,  157,
-       11,   12,   12,   12,   12,   12,   84,  156,  112,  171,
-       12,   12,   12,   68,  114,  114,  114,  114,  114,  114,
-      114,  156,   84,   12,  112,  118,  168,  118,  118,  118,
-      118,  118,  118,  142,  175,  186,  186,  168,  187,  114,
-       12,   25,  179,   25,   25,   25,   25,   25,   25,   25,
-      200,  188,  118,  187,  201,  200,  136,  136,  194,  136,
-      136,  175,  190,  179,  188,  213,  136,  225,   25,   26,
-      205,   26,   26,   26,   26,   26,   26,   26,  136,  194,
-
-      213,  174,  174,  174,  174,  174,  174,  174,  143,  190,
-      201,  205,  143,  239,  225,  136,   26,   27,  143,   27,
-       27,   27,   27,   27,   27,   27,  174,  211,  259,  143,
-      143,  189,  189,  189,  189,  189,  189,  189,  223,  237,
-      239,  259,  223,  235,   27,   30,  222,  229,  211,   30,
-      235,   30,  283,  237,   30,   30,  189,   30,   30,   30,
-       30,   30,   30,   30,   30,   30,   30,  222,  229,  274,
+
+       10,   10,   10,   10,   11,   11,   11,   11,   11,  117,
+      126,  156,  137,   11,   11,   11,  137,   69,   69,  139,
+       69,   69,  137,  160,  144,  160,   11,   69,  114,  171,
+      178,  182,  114,  114,  137,  159,  190,  190,  140,   69,
+      140,  171,  174,   11,   12,   12,   12,   12,   12,  114,
+      159,  189,  182,   12,   12,   12,   69,  178,  138,  138,
+      316,  138,  138,  191,  198,  114,   12,  120,  138,  120,
+      120,  120,  120,  120,  120,  188,  140,  205,  174,  191,
+      138,  188,  192,   12,   25,  198,   25,   25,   25,   25,
+       25,   25,   25,  218,  120,  204,  192,  138,  189,  194,
+
+      145,  204,  209,  215,  145,  217,  282,  282,  218,  230,
+      145,   25,   26,  205,   26,   26,   26,   26,   26,   26,
+       26,  145,  145,  209,  215,  315,  194,  175,  175,  216,
+      175,  175,  227,  228,  216,  234,  230,  175,  228,   26,
+       27,  237,   27,   27,   27,   27,   27,   27,   27,  175,
+      238,  176,  176,  227,  176,  176,  234,  240,  312,  217,
+      242,  176,  237,  300,  243,  240,  175,   27,   30,  242,
+      291,  238,   30,  176,   30,  298,  298,   30,   30,  243,
        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
+      176,  241,  281,   30,   30,   30,   30,   30,   30,   30,
+
        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
-
-       30,   35,   35,   35,  263,   35,  257,   35,   35,  267,
-      178,   35,  178,  178,  178,  178,  178,  178,  232,  253,
-      257,  233,   35,   35,   35,   48,  236,   48,   48,   48,
-       48,   48,   48,   48,  236,  267,  275,  178,  275,  232,
-      172,  172,  233,  172,  172,  243,  246,  247,  245,  251,
-      172,  265,   48,   49,  247,   49,   49,   49,   49,   49,
-       49,   49,  172,  244,  290,  265,  243,  246,  173,  173,
-      251,  173,  173,  254,  276,  278,  276,  290,  173,  172,
-       49,   50,  255,   50,   50,   50,   50,   50,   50,   50,
-      173,  264,  276,  193,  254,  193,  193,  193,  193,  193,
-
-      193,  278,  231,  255,  258,  297,  305,  173,   50,   51,
-      271,  258,  264,   51,  230,   51,  221,  220,   51,   51,
-      193,   51,   51,   51,   51,   51,   51,   51,   51,   51,
-       51,  271,  297,  305,   51,   51,   51,   51,   51,   51,
-       51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
-       51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
-       51,   51,   51,   51,   51,   56,   56,   56,  219,   56,
-      218,   56,   56,  272,  282,   56,  224,  224,  224,  224,
-      224,  224,  224,  315,  315,  315,   56,   56,   56,   64,
-       64,   64,  210,   64,  272,  282,  209,   64,  208,   64,
-
-      228,  224,  228,  228,  228,  228,  228,  228,  315,  288,
-       64,   64,  238,  238,  238,  238,  238,  238,  238,  242,
-      207,  242,  242,  242,  242,  242,  242,  228,   64,   75,
-      288,   75,  199,   75,  322,   75,   75,  238,  198,   75,
-      197,  196,  195,  184,  327,  302,  242,  302,  302,  302,
-       75,   75,   75,   81,  183,   81,  182,   81,  338,   81,
-       81,  322,  181,   81,  266,  266,  266,  266,  266,  266,
-      266,  327,  302,  180,   81,   81,   81,   83,  169,   83,
-      167,   83,  343,   83,   83,  338,  166,   83,  165,  266,
-      270,  270,  270,  270,  270,  270,  270,  164,   83,   83,
-
-       83,   86,  163,   86,  162,   86,  152,   86,   86,  343,
-      151,   86,  150,  149,  148,  147,  270,  141,  134,  128,
-      126,  123,   86,   86,   86,   89,  122,   89,   89,   89,
-       89,   89,   89,   89,  120,  110,  108,  277,  277,  277,
-      277,  277,  277,  277,  281,  281,  281,  281,  281,  281,
-      281,  105,   89,   90,   96,   90,   90,   90,   90,   90,
-       90,   90,  277,  310,   95,  310,  310,  310,   93,   85,
-      281,  296,  296,  296,  296,  296,  296,  296,   82,   80,
-       90,  106,   78,  106,   77,  106,   76,  106,  106,   74,
-      310,  106,   67,   61,   58,   55,  296,   54,  320,  320,
-
-      320,   53,  106,  106,  106,  109,   52,  109,   46,  109,
-       44,  109,  109,   42,   41,  109,  304,  304,  304,  304,
-      304,  304,  304,  320,   40,   39,  109,  109,  109,  111,
-       38,  111,   37,  111,   34,  111,  111,   33,   32,  111,
-       31,  304,  314,  314,  314,  314,  314,  314,  314,   22,
-      111,  111,  111,  113,   19,  113,   18,  113,   17,  113,
-      113,   15,   14,  113,   13,    0,    0,  314,    0,    0,
-        0,    0,    0,    0,  113,  113,  113,  116,    0,  116,
-      116,  116,  116,  116,  116,  116,    0,    0,    0,  319,
-      319,  319,  319,  319,  319,  319,  321,  321,  321,  321,
-
-      321,  321,  321,    0,  116,  117,    0,  117,  117,  117,
-      117,  117,  117,  117,  319,    0,    0,    0,    0,    0,
-      325,  321,  325,  325,  325,  325,  325,  325,    0,    0,
-        0,    0,  117,  144,    0,  144,  144,  144,  144,  144,
-      144,  144,    0,    0,    0,    0,    0,  325,  326,  326,
-      326,  326,  326,  326,  326,    0,    0,    0,    0,    0,
-      144,  145,    0,  145,  145,  145,  145,  145,  145,  145,
-        0,    0,  330,  326,  330,  330,  330,  330,  330,  330,
-      337,  337,  337,  337,  337,  337,  337,    0,  145,  146,
-        0,  146,  146,  146,  146,  146,  146,  146,    0,  330,
-
-        0,    0,    0,    0,  341,  337,  341,  341,  341,  341,
-      341,  341,    0,    0,    0,    0,  146,  159,    0,  159,
-      159,  159,  159,  159,  159,  159,    0,    0,    0,    0,
-        0,  341,  342,  342,  342,  342,  342,  342,  342,    0,
-        0,    0,    0,    0,  159,  160,    0,  160,  160,  160,
-      160,  160,  160,  160,    0,    0,  346,  342,  346,  346,
-      346,  346,  346,  346,  347,  347,  347,  347,  347,  347,
-      347,    0,  160,  161,    0,  161,  161,  161,  161,  161,
-      161,  161,    0,  346,    0,    0,    0,    0,    0,  347,
-      348,  348,  348,  348,  348,  348,  348,    0,    0,    0,
-
-      161,  176,    0,  176,  176,  176,  176,  176,  176,  176,
-        0,    0,    0,    0,    0,  348,  349,  349,  349,  349,
-      349,  349,  349,    0,    0,    0,    0,    0,  176,  177,
-        0,  177,  177,  177,  177,  177,  177,  177,    0,    0,
-        0,  349,  350,  350,  350,  350,  350,  350,  350,  351,
-      351,  351,  351,  351,  351,  351,  177,  191,    0,  191,
-      191,  191,  191,  191,  191,  191,    0,  350,    0,    0,
-        0,    0,    0,    0,  351,  352,  352,  352,  352,  352,
-      352,  352,    0,    0,  191,  192,    0,  192,  192,  192,
-      192,  192,  192,  192,    0,    0,    0,    0,    0,    0,
-
-      352,  354,  354,  354,  354,  354,  354,  354,    0,    0,
-        0,    0,  192,  202,    0,  202,  202,  202,  202,  202,
-      202,  202,    0,    0,    0,    0,  354,  355,  355,  355,
-      355,  355,  355,  357,  357,  357,  357,  357,  357,  357,
-      202,  203,    0,  203,  203,  203,  203,  203,  203,  203,
-        0,    0,  355,    0,    0,    0,    0,    0,  357,  358,
-      358,  358,  358,  358,  358,    0,    0,    0,  203,  204,
-        0,  204,  204,  204,  204,  204,  204,  204,    0,    0,
-        0,    0,    0,    0,  358,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  204,  215,    0,  215,
-
-      215,  215,  215,  215,  215,  215,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  215,  216,    0,  216,  216,  216,
-      216,  216,  216,  216,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  216,  217,    0,  217,  217,  217,  217,  217,
-      217,  217,    0,    0,    0,    0,    0,    0,    0,    0,
+       30,   30,   30,   30,   30,   35,   35,   35,  263,   35,
+      272,   35,   35,  270,  241,   35,  177,  177,  177,  177,
+      177,  177,  177,  263,  264,  272,   35,   35,   35,   49,
+      253,   49,   49,   49,   49,   49,   49,   49,  253,  245,
+      181,  177,  181,  181,  181,  181,  181,  181,  193,  193,
+      193,  193,  193,  193,  193,  266,   49,   50,  259,   50,
+       50,   50,   50,   50,   50,   50,  245,  181,  264,  266,
+      274,  251,  197,  193,  197,  197,  197,  197,  197,  197,
+
+      249,  252,  257,  260,   50,   51,  261,   51,   51,   51,
+       51,   51,   51,   51,  271,  278,  274,  265,  286,  197,
+      279,  249,  252,  257,  260,  265,  283,  261,  283,  250,
+      306,  236,   51,   52,  290,  271,  278,   52,  284,   52,
+      284,  279,   52,   52,  286,   52,   52,   52,   52,   52,
+       52,   52,   52,   52,   52,  290,  284,  306,   52,   52,
+       52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
+       52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
+       52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
+       57,   57,   57,  235,   57,  299,   57,   57,  296,  226,
+
+       57,  229,  229,  229,  229,  229,  229,  229,  225,  299,
+      224,   57,   57,   57,   65,   65,   65,  223,   65,  296,
+      313,  313,   65,  214,   65,  233,  229,  233,  233,  233,
+      233,  233,  233,  213,  212,   65,   65,  244,  244,  244,
+      244,  244,  244,  244,  248,  211,  248,  248,  248,  248,
+      248,  248,  233,   65,   76,  203,   76,  202,   76,  319,
+       76,   76,  244,  201,   76,  200,  199,  187,  186,  336,
+      311,  248,  311,  311,  311,   76,   76,   76,   82,  185,
+       82,  184,   82,  341,   82,   82,  319,  183,   82,  273,
+      273,  273,  273,  273,  273,  273,  336,  311,  172,   82,
+
+       82,   82,   84,  170,   84,  169,   84,  352,   84,   84,
+      341,  357,   84,  168,  273,  277,  277,  277,  277,  277,
+      277,  277,  167,   84,   84,   84,   87,  166,   87,  165,
+       87,  154,   87,   87,  352,  153,   87,  152,  357,  151,
+      150,  277,  149,  143,  136,  130,  128,   87,   87,   87,
+       90,  125,   90,   90,   90,   90,   90,   90,   90,  124,
+      122,  112,  285,  285,  285,  285,  285,  285,  285,  289,
+      289,  289,  289,  289,  289,  289,  110,   90,   91,  107,
+       91,   91,   91,   91,   91,   91,   91,  285,  324,   97,
+      324,  324,  324,   96,   94,  289,  305,  305,  305,  305,
+
+      305,  305,  305,   86,   83,   91,  108,   81,  108,   79,
+      108,   78,  108,  108,   77,  324,  108,   75,   68,   62,
+       59,  305,   56,  329,  329,  329,   55,  108,  108,  108,
+      111,   54,  111,   53,  111,   47,  111,  111,   45,   43,
+      111,  318,  318,  318,  318,  318,  318,  318,  329,   42,
+       41,  111,  111,  111,  113,   40,  113,   39,  113,   38,
+      113,  113,   34,   33,  113,   32,  318,  328,  328,  328,
+      328,  328,  328,  328,   31,  113,  113,  113,  115,   22,
+      115,   19,  115,   18,  115,  115,   17,   15,  115,   14,
+       13,    0,  328,    0,    0,    0,  334,  334,  334,  115,
+
+      115,  115,  118,    0,  118,  118,  118,  118,  118,  118,
+      118,    0,    0,    0,  333,  333,  333,  333,  333,  333,
+      333,  334,  335,  335,  335,  335,  335,  335,  335,  118,
+      119,    0,  119,  119,  119,  119,  119,  119,  119,  333,
+        0,    0,    0,    0,    0,    0,  339,  335,  339,  339,
+      339,  339,  339,  339,    0,    0,    0,  119,  146,    0,
+      146,  146,  146,  146,  146,  146,  146,    0,    0,    0,
+        0,    0,    0,  339,  340,  340,  340,  340,  340,  340,
+      340,    0,    0,    0,    0,  146,  147,    0,  147,  147,
+      147,  147,  147,  147,  147,    0,    0,    0,  344,  340,
+
+      344,  344,  344,  344,  344,  344,  351,  351,  351,  351,
+      351,  351,  351,  147,  148,    0,  148,  148,  148,  148,
+      148,  148,  148,    0,    0,  344,    0,    0,    0,    0,
+      355,  351,  355,  355,  355,  355,  355,  355,    0,    0,
+        0,  148,  162,    0,  162,  162,  162,  162,  162,  162,
+      162,    0,    0,    0,    0,    0,    0,  355,  356,  356,
+      356,  356,  356,  356,  356,    0,    0,    0,    0,  162,
+      163,    0,  163,  163,  163,  163,  163,  163,  163,    0,
+        0,    0,  360,  356,  360,  360,  360,  360,  360,  360,
+      361,  361,  361,  361,  361,  361,  361,  163,  164,    0,
+
+      164,  164,  164,  164,  164,  164,  164,    0,    0,  360,
+        0,    0,    0,    0,    0,  361,  362,  362,  362,  362,
+      362,  362,  362,    0,    0,  164,  179,    0,  179,  179,
+      179,  179,  179,  179,  179,    0,    0,    0,    0,    0,
+        0,  362,  363,  363,  363,  363,  363,  363,  363,    0,
+        0,    0,    0,  179,  180,    0,  180,  180,  180,  180,
+      180,  180,  180,    0,    0,    0,    0,  363,  364,  364,
+      364,  364,  364,  364,  364,    0,    0,    0,    0,    0,
+        0,  180,  195,    0,  195,  195,  195,  195,  195,  195,
+      195,    0,    0,  364,  365,  365,  365,  365,  365,  365,
+
+      365,  366,  366,  366,  366,  366,  366,  366,    0,  195,
+      196,    0,  196,  196,  196,  196,  196,  196,  196,  365,
+        0,    0,    0,    0,    0,    0,  366,  368,  368,  368,
+      368,  368,  368,  368,    0,    0,    0,  196,  206,    0,
+      206,  206,  206,  206,  206,  206,  206,    0,    0,    0,
+        0,    0,  368,  369,  369,  369,  369,  369,  369,    0,
+        0,    0,    0,    0,    0,  206,  207,    0,  207,  207,
+      207,  207,  207,  207,  207,    0,    0,    0,  369,  371,
+      371,  371,  371,  371,  371,  371,  372,  372,  372,  372,
+      372,  372,    0,  207,  208,    0,  208,  208,  208,  208,
+
+      208,  208,  208,    0,  371,    0,    0,    0,    0,    0,
+        0,  372,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,  208,  220,    0,  220,  220,  220,  220,  220,  220,
+      220,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  220,
+      221,    0,  221,  221,  221,  221,  221,  221,  221,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      217,  226,    0,  226,  226,  226,  226,  226,  226,  226,
+        0,    0,    0,    0,    0,    0,    0,  221,  222,    0,
+      222,  222,  222,  222,  222,  222,  222,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,    0,    0,    0,    0,    0,    0,    0,  226,  227,
-        0,  227,  227,  227,  227,  227,  227,  227,    0,    0,
+        0,    0,    0,    0,    0,  222,  231,    0,  231,  231,
+      231,  231,  231,  231,  231,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  227,  240,    0,  240,
-      240,  240,  240,  240,  240,  240,    0,    0,    0,    0,
+        0,    0,    0,  231,  232,    0,  232,  232,  232,  232,
+      232,  232,  232,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  240,  241,    0,  241,  241,  241,
-      241,  241,  241,  241,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  241,  248,  248,  248,  248,  248,  248,  248,
+        0,  232,  246,    0,  246,  246,  246,  246,  246,  246,
+      246,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  246,
+      247,    0,  247,  247,  247,  247,  247,  247,  247,    0,
 
-      248,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  248,
-      249,  249,  249,  249,  249,  249,  249,  249,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  249,  250,  250,  250,
-      250,  250,  250,  250,  250,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  247,  254,  254,
+      254,  254,  254,  254,  254,  254,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  250,  260,  260,  260,  260,  260,  260,
-      260,  260,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  254,  255,  255,  255,  255,  255,
+      255,  255,  255,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-
-      260,  261,  261,  261,  261,  261,  261,  261,  261,    0,
+        0,  255,  256,  256,  256,  256,  256,  256,  256,  256,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,  261,  262,  262,
-      262,  262,  262,  262,  262,  262,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,  256,  267,
+
+      267,  267,  267,  267,  267,  267,  267,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  262,  268,  268,  268,  268,  268,
-      268,  268,  268,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  267,  268,  268,  268,  268,
+      268,  268,  268,  268,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  268,  269,  269,  269,  269,  269,  269,  269,  269,
+        0,    0,  268,  269,  269,  269,  269,  269,  269,  269,
+      269,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  269,
+      275,  275,  275,  275,  275,  275,  275,  275,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,    0,    0,    0,    0,    0,    0,    0,  269,  279,
-      279,  279,  279,  279,  279,  279,  279,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  275,  276,  276,  276,
+      276,  276,  276,  276,  276,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  279,  280,  280,  280,  280,
-      280,  280,  280,  280,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  276,  287,  287,  287,  287,  287,  287,
+      287,  287,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  280,  284,    0,  284,  284,  284,  284,  284,
-      284,  284,    0,    0,    0,    0,    0,    0,    0,    0,
+      287,  288,  288,  288,  288,  288,  288,  288,  288,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      284,  285,    0,  285,  285,  285,  285,  285,  285,  285,
+        0,    0,    0,    0,    0,    0,    0,  288,  292,    0,
+      292,  292,  292,  292,  292,  292,  292,    0,    0,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  285,  286,
-        0,  286,  286,  286,  286,  286,  286,  286,    0,    0,
+        0,    0,    0,    0,    0,  292,  293,    0,  293,  293,
+      293,  293,  293,  293,  293,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  286,  287,    0,  287,
-      287,  287,  287,  287,  287,  287,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  287,  292,    0,  292,  292,  292,
-      292,  292,  292,  292,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  293,  294,    0,  294,  294,  294,  294,
+      294,  294,  294,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,  294,  295,    0,  295,  295,  295,  295,  295,  295,
+      295,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  295,
 
-        0,    0,  292,  293,    0,  293,  293,  293,  293,  293,
-      293,  293,    0,    0,    0,    0,    0,    0,    0,    0,
+      301,    0,  301,  301,  301,  301,  301,  301,  301,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      293,  294,    0,  294,  294,  294,  294,  294,  294,  294,
+        0,    0,    0,    0,    0,    0,    0,  301,  302,    0,
+      302,  302,  302,  302,  302,  302,  302,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  294,  295,
-        0,  295,  295,  295,  295,  295,  295,  295,    0,    0,
+        0,    0,    0,    0,    0,  302,  303,    0,  303,  303,
+      303,  303,  303,  303,  303,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  295,  298,    0,  298,
-      298,  298,  298,  298,  298,  298,    0,    0,    0,    0,
+        0,    0,    0,  303,  304,    0,  304,  304,  304,  304,
+      304,  304,  304,    0,    0,    0,    0,    0,    0,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  298,  299,    0,  299,  299,  299,
-      299,  299,  299,  299,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  299,  300,    0,  300,  300,  300,  300,  300,
-      300,  300,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,  304,  307,    0,  307,  307,  307,  307,  307,  307,
+      307,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  307,
+      308,    0,  308,  308,  308,  308,  308,  308,  308,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      300,  301,    0,  301,  301,  301,  301,  301,  301,  301,
+        0,    0,    0,    0,    0,    0,    0,  308,  309,    0,
+      309,  309,  309,  309,  309,  309,  309,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  301,  306,
+        0,    0,    0,    0,    0,  309,  310,    0,  310,  310,
 
-        0,  306,  306,  306,  306,  306,  306,  306,    0,    0,
+      310,  310,  310,  310,  310,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  306,  307,    0,  307,
-      307,  307,  307,  307,  307,  307,    0,    0,    0,    0,
+        0,    0,    0,  310,  317,    0,  317,    0,  317,    0,
+      317,  317,    0,    0,  317,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  317,  317,  317,  320,    0,
+      320,  320,  320,  320,  320,  320,  320,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  307,  308,    0,  308,  308,  308,
-      308,  308,  308,  308,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  320,  321,    0,  321,  321,
+      321,  321,  321,  321,  321,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  308,  309,    0,  309,  309,  309,  309,  309,
-      309,  309,    0,    0,    0,    0,    0,    0,    0,    0,
 
+        0,    0,    0,  321,  322,    0,  322,  322,  322,  322,
+      322,  322,  322,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      309,  311,    0,  311,  311,  311,  311,  311,  311,  311,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  311,  312,
-        0,  312,  312,  312,  312,  312,  312,  312,    0,    0,
+        0,  322,  323,    0,  323,  323,  323,  323,  323,  323,
+      323,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  323,
+      325,    0,  325,  325,  325,  325,  325,  325,  325,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  312,  313,    0,  313,
-      313,  313,  313,  313,  313,  313,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  313,  316,    0,  316,  316,  316,
+        0,    0,    0,    0,    0,    0,    0,  325,  326,    0,
+      326,  326,  326,  326,  326,  326,  326,    0,    0,    0,
 
-      316,  316,  316,  316,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  316,  317,    0,  317,  317,  317,  317,  317,
-      317,  317,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      317,  318,    0,  318,  318,  318,  318,  318,  318,  318,
+        0,    0,    0,    0,    0,  326,  327,    0,  327,  327,
+      327,  327,  327,  327,  327,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  318,  323,
-        0,  323,  323,  323,  323,  323,  323,  323,    0,    0,
+        0,    0,    0,  327,  330,    0,  330,  330,  330,  330,
+      330,  330,  330,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,  330,  331,    0,  331,  331,  331,  331,  331,  331,
+      331,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  331,
 
-        0,    0,    0,    0,    0,    0,  323,  324,    0,  324,
-      324,  324,  324,  324,  324,  324,    0,    0,    0,    0,
+      332,    0,  332,  332,  332,  332,  332,  332,  332,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  324,  328,    0,  328,  328,  328,
-      328,  328,  328,  328,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  332,  337,    0,
+      337,  337,  337,  337,  337,  337,  337,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  328,  329,    0,  329,  329,  329,  329,  329,
-      329,  329,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  337,  338,    0,  338,  338,
+      338,  338,  338,  338,  338,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      329,  331,    0,  331,  331,  331,  331,  331,  331,  331,
+        0,    0,    0,  338,  342,    0,  342,  342,  342,  342,
+      342,  342,  342,    0,    0,    0,    0,    0,    0,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  331,  332,
-        0,  332,  332,  332,  332,  332,  332,  332,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  332,  333,    0,  333,
-      333,  333,  333,  333,  333,  333,    0,    0,    0,    0,
+        0,  342,  343,    0,  343,  343,  343,  343,  343,  343,
+      343,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  343,
+      345,    0,  345,  345,  345,  345,  345,  345,  345,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  333,  334,    0,  334,  334,  334,
-      334,  334,  334,  334,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  345,  346,    0,
+      346,  346,  346,  346,  346,  346,  346,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  346,  347,    0,  347,  347,
 
-        0,    0,  334,  335,    0,  335,  335,  335,  335,  335,
-      335,  335,    0,    0,    0,    0,    0,    0,    0,    0,
+      347,  347,  347,  347,  347,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      335,  336,    0,  336,  336,  336,  336,  336,  336,  336,
+        0,    0,    0,  347,  348,    0,  348,  348,  348,  348,
+      348,  348,  348,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  336,  339,
-        0,  339,  339,  339,  339,  339,  339,  339,    0,    0,
+        0,  348,  349,    0,  349,  349,  349,  349,  349,  349,
+      349,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  349,
+      350,    0,  350,  350,  350,  350,  350,  350,  350,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  339,  340,    0,  340,
-      340,  340,  340,  340,  340,  340,    0,    0,    0,    0,
 
+        0,    0,    0,    0,    0,    0,    0,  350,  353,    0,
+      353,  353,  353,  353,  353,  353,  353,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  340,  344,    0,  344,  344,  344,
-      344,  344,  344,  344,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  353,  354,    0,  354,  354,
+      354,  354,  354,  354,  354,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  344,  345,    0,  345,  345,  345,  345,  345,
-      345,  345,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  354,  358,    0,  358,  358,  358,  358,
+      358,  358,  358,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      345,  360,  360,  360,  360,  360,  360,  360,  361,  361,
-      361,  361,  361,  361,  361,  362,  362,  362,  362,  362,
-      362,  362,  363,    0,    0,    0,    0,  363,  363,  364,
-
-      364,  364,  364,  364,  364,  364,  365,    0,    0,    0,
-        0,  365,  365,  366,    0,    0,    0,    0,  366,  366,
-      367,    0,  367,    0,    0,  367,  367,  368,    0,    0,
-        0,    0,  368,  368,  369,    0,    0,    0,    0,  369,
-      369,  370,    0,    0,    0,    0,  370,  370,  371,    0,
-      371,    0,    0,  371,  371,  372,    0,  372,  372,    0,
-        0,  372,  374,    0,  374,    0,  374,  374,  374,  375,
-      375,  375,  375,  375,  375,  375,  376,  376,  376,  376,
-      376,  376,  376,  377,    0,  377,    0,    0,  377,  377,
-      378,  378,  378,  378,  378,  378,  378,  359,  359,  359,
-
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359
+        0,  358,  359,    0,  359,  359,  359,  359,  359,  359,
+
+      359,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  359,
+      374,  374,  374,  374,  374,  374,  374,  375,  375,  375,
+      375,  375,  375,  375,  376,  376,  376,  376,  376,  376,
+      376,  377,    0,    0,    0,    0,  377,  377,  378,  378,
+      378,  378,  378,  378,  378,  379,    0,    0,    0,    0,
+      379,  379,  380,    0,    0,    0,    0,  380,  380,  381,
+        0,  381,    0,    0,  381,  381,  382,    0,    0,    0,
+        0,  382,  382,  383,    0,    0,    0,    0,  383,  383,
+      384,    0,    0,    0,    0,  384,  384,  385,    0,  385,
+
+        0,    0,  385,  385,  386,    0,  386,  386,    0,    0,
+      386,  388,    0,  388,    0,  388,  388,  388,  389,  389,
+      389,  389,  389,  389,  389,  390,  390,  390,  390,  390,
+      390,  390,  391,    0,  391,    0,    0,  391,  391,  392,
+      392,  392,  392,  392,  392,  392,  393,  393,  393,  393,
+      393,  393,  393,  394,    0,    0,    0,    0,  394,  394,
+      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
+      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
+      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
+      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
+
+      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
+      373,  373,  373,  373,  373,  373,  373,  373
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -1226,8 +1248,12 @@ static int arg_size = 0;
 static void fill               __P((char *, int));
 static void fill_cmnd          __P((char *, int));
 static void fill_args          __P((char *, int, int));
+static int buffer_frob         __P((const char *));
 extern void reset_aliases      __P((void));
-extern void yyerror            __P((char *));
+extern void yyerror            __P((const char *));
+
+#define        push_include(_p)        (buffer_frob((_p)))
+#define        pop_include()           (buffer_frob(NULL))
 
 /* realloc() to size + COMMANDARGINC to make room for command args */
 #define COMMANDARGINC  64
@@ -1248,7 +1274,7 @@ extern void yyerror               __P((char *));
 
 #define INDEFS 5
 
-#line 1252 "lex.yy.c"
+#line 1278 "lex.yy.c"
 
 /* Macros after this point can all be overridden by user definitions in
  * section 1.
@@ -1402,9 +1428,9 @@ YY_DECL
        register char *yy_cp, *yy_bp;
        register int yy_act;
 
-#line 99 "parse.lex"
+#line 103 "parse.lex"
 
-#line 1408 "lex.yy.c"
+#line 1434 "lex.yy.c"
 
        if ( yy_init )
                {
@@ -1456,13 +1482,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 >= 360 )
+                               if ( yy_current_state >= 374 )
                                        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] != 2998 );
+               while ( yy_base[yy_current_state] != 3061 );
 
 yy_find_action:
                yy_act = yy_accept[yy_current_state];
@@ -1490,12 +1516,12 @@ do_action:      /* This label is used only to access EOF actions. */
 
 case 1:
 YY_RULE_SETUP
-#line 100 "parse.lex"
+#line 104 "parse.lex"
 BEGIN STARTDEFS;
        YY_BREAK
 case 2:
 YY_RULE_SETUP
-#line 102 "parse.lex"
+#line 106 "parse.lex"
 {
                            BEGIN INDEFS;
                            LEXTRACE("DEFVAR ");
@@ -1506,7 +1532,7 @@ YY_RULE_SETUP
 
 case 3:
 YY_RULE_SETUP
-#line 110 "parse.lex"
+#line 114 "parse.lex"
 {
                            BEGIN STARTDEFS;
                            LEXTRACE(", ");
@@ -1515,7 +1541,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 4:
 YY_RULE_SETUP
-#line 116 "parse.lex"
+#line 120 "parse.lex"
 {
                            LEXTRACE("= ");
                            return('=');
@@ -1523,7 +1549,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 5:
 YY_RULE_SETUP
-#line 121 "parse.lex"
+#line 125 "parse.lex"
 {
                            LEXTRACE("+= ");
                            return('+');
@@ -1531,7 +1557,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 6:
 YY_RULE_SETUP
-#line 126 "parse.lex"
+#line 130 "parse.lex"
 {
                            LEXTRACE("-= ");
                            return('-');
@@ -1539,7 +1565,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 7:
 YY_RULE_SETUP
-#line 131 "parse.lex"
+#line 135 "parse.lex"
 {
                            LEXTRACE("WORD(1) ");
                            fill(yytext + 1, yyleng - 2);
@@ -1548,7 +1574,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 8:
 YY_RULE_SETUP
-#line 137 "parse.lex"
+#line 141 "parse.lex"
 {
                            LEXTRACE("WORD(2) ");
                            fill(yytext, yyleng);
@@ -1559,7 +1585,7 @@ YY_RULE_SETUP
 
 case 9:
 YY_RULE_SETUP
-#line 145 "parse.lex"
+#line 149 "parse.lex"
 {
                            /* quoted fnmatch glob char, pass verbatim */
                            LEXTRACE("QUOTEDCHAR ");
@@ -1569,7 +1595,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 10:
 YY_RULE_SETUP
-#line 152 "parse.lex"
+#line 156 "parse.lex"
 {
                            /* quoted sudoers special char, strip backslash */
                            LEXTRACE("QUOTEDCHAR ");
@@ -1579,7 +1605,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 11:
 YY_RULE_SETUP
-#line 159 "parse.lex"
+#line 163 "parse.lex"
 {
                            BEGIN INITIAL;
                            unput(*yytext);
@@ -1588,7 +1614,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 12:
 YY_RULE_SETUP
-#line 165 "parse.lex"
+#line 169 "parse.lex"
 {
                            LEXTRACE("ARG ");
                            fill_args(yytext, yyleng, sawspace);
@@ -1598,17 +1624,37 @@ YY_RULE_SETUP
 
 case 13:
 YY_RULE_SETUP
-#line 172 "parse.lex"
+#line 176 "parse.lex"
+{
+                           char *cp, *ep;
+                           /* pull out path from #include line */
+                           for (cp = yytext + 9; isspace(*cp); cp++)
+                               continue;
+                           for (ep = cp; *ep != '\0' && !isspace(*ep); ep++)
+                               continue;
+                           *ep = '\0';
+                           /* push current buffer and switch to include file */
+                           push_include(cp);
+                           LEXTRACE("INCLUDE\n");
+                           BEGIN INITIAL;
+                       }
+       YY_BREAK
+case 14:
+YY_RULE_SETUP
+#line 190 "parse.lex"
 {
                            BEGIN GOTDEFS;
                            switch (yytext[8]) {
                                case ':':
+                                   yyless(9);
                                    LEXTRACE("DEFAULTS_USER ");
                                    return(DEFAULTS_USER);
                                case '>':
+                                   yyless(9);
                                    LEXTRACE("DEFAULTS_RUNAS ");
                                    return(DEFAULTS_RUNAS);
                                case '@':
+                                   yyless(9);
                                    LEXTRACE("DEFAULTS_HOST ");
                                    return(DEFAULTS_HOST);
                                default:
@@ -1617,9 +1663,9 @@ YY_RULE_SETUP
                            }
                        }
        YY_BREAK
-case 14:
+case 15:
 YY_RULE_SETUP
-#line 190 "parse.lex"
+#line 211 "parse.lex"
 {
                            fill(yytext, yyleng);
                            switch (*yytext) {
@@ -1639,59 +1685,59 @@ YY_RULE_SETUP
                            }
                        }
        YY_BREAK
-case 15:
+case 16:
 YY_RULE_SETUP
-#line 209 "parse.lex"
+#line 230 "parse.lex"
 {
                                /* cmnd does not require passwd for this user */
                                LEXTRACE("NOPASSWD ");
                                return(NOPASSWD);
                        }
        YY_BREAK
-case 16:
+case 17:
 YY_RULE_SETUP
-#line 215 "parse.lex"
+#line 236 "parse.lex"
 {
                                /* cmnd requires passwd for this user */
                                LEXTRACE("PASSWD ");
                                return(PASSWD);
                        }
        YY_BREAK
-case 17:
+case 18:
 YY_RULE_SETUP
-#line 221 "parse.lex"
+#line 242 "parse.lex"
 {
                                LEXTRACE("NOEXEC ");
                                return(NOEXEC);
                        }
        YY_BREAK
-case 18:
+case 19:
 YY_RULE_SETUP
-#line 226 "parse.lex"
+#line 247 "parse.lex"
 {
                                LEXTRACE("EXEC ");
                                return(EXEC);
                        }
        YY_BREAK
-case 19:
+case 20:
 YY_RULE_SETUP
-#line 231 "parse.lex"
+#line 252 "parse.lex"
 {
                                LEXTRACE("NOTRACE ");
                                return(NOTRACE);
                        }
        YY_BREAK
-case 20:
+case 21:
 YY_RULE_SETUP
-#line 236 "parse.lex"
+#line 257 "parse.lex"
 {
                                LEXTRACE("TRACE ");
                                return(TRACE);
                        }
        YY_BREAK
-case 21:
+case 22:
 YY_RULE_SETUP
-#line 241 "parse.lex"
+#line 262 "parse.lex"
 {
                            /* netgroup */
                            fill(yytext, yyleng);
@@ -1699,9 +1745,9 @@ YY_RULE_SETUP
                            return(NETGROUP);
                        }
        YY_BREAK
-case 22:
+case 23:
 YY_RULE_SETUP
-#line 248 "parse.lex"
+#line 269 "parse.lex"
 {
                            /* UN*X group */
                            fill(yytext, yyleng);
@@ -1709,36 +1755,36 @@ YY_RULE_SETUP
                            return(USERGROUP);
                        }
        YY_BREAK
-case 23:
+case 24:
 YY_RULE_SETUP
-#line 255 "parse.lex"
+#line 276 "parse.lex"
 {
                            fill(yytext, yyleng);
                            LEXTRACE("NTWKADDR ");
                            return(NTWKADDR);
                        }
        YY_BREAK
-case 24:
+case 25:
 YY_RULE_SETUP
-#line 261 "parse.lex"
+#line 282 "parse.lex"
 {
                            fill(yytext, yyleng);
                            LEXTRACE("NTWKADDR ");
                            return(NTWKADDR);
                        }
        YY_BREAK
-case 25:
+case 26:
 YY_RULE_SETUP
-#line 267 "parse.lex"
+#line 288 "parse.lex"
 {
                                BEGIN GOTRUNAS;
                                LEXTRACE("RUNAS ");
                                return (RUNAS);
                        }
        YY_BREAK
-case 26:
+case 27:
 YY_RULE_SETUP
-#line 273 "parse.lex"
+#line 294 "parse.lex"
 {
                            if (strcmp(yytext, "ALL") == 0) {
                                LEXTRACE("ALL ");
@@ -1750,9 +1796,9 @@ YY_RULE_SETUP
                            }
                        }
        YY_BREAK
-case 27:
+case 28:
 YY_RULE_SETUP
-#line 284 "parse.lex"
+#line 305 "parse.lex"
 {
                            /* username/uid that user can run command as */
                            fill(yytext, yyleng);
@@ -1760,25 +1806,25 @@ YY_RULE_SETUP
                            return(WORD);
                        }
        YY_BREAK
-case 28:
+case 29:
 YY_RULE_SETUP
-#line 291 "parse.lex"
+#line 312 "parse.lex"
 {
                            BEGIN INITIAL;
                        }
        YY_BREAK
-case 29:
+case 30:
 YY_RULE_SETUP
-#line 295 "parse.lex"
+#line 316 "parse.lex"
 {
                            BEGIN GOTCMND;
                            LEXTRACE("COMMAND ");
                            fill_cmnd(yytext, yyleng);
                        }                       /* sudo -e */
        YY_BREAK
-case 30:
+case 31:
 YY_RULE_SETUP
-#line 301 "parse.lex"
+#line 322 "parse.lex"
 {
                            /* directories can't have args... */
                            if (yytext[yyleng - 1] == '/') {
@@ -1792,9 +1838,9 @@ YY_RULE_SETUP
                            }
                        }                       /* a pathname */
        YY_BREAK
-case 31:
+case 32:
 YY_RULE_SETUP
-#line 314 "parse.lex"
+#line 335 "parse.lex"
 {
                            /* a word */
                            fill(yytext, yyleng);
@@ -1802,41 +1848,41 @@ YY_RULE_SETUP
                            return(WORD);
                        }
        YY_BREAK
-case 32:
+case 33:
 YY_RULE_SETUP
-#line 321 "parse.lex"
+#line 342 "parse.lex"
 {
                            LEXTRACE(", ");
                            return(',');
                        }                       /* return ',' */
        YY_BREAK
-case 33:
+case 34:
 YY_RULE_SETUP
-#line 326 "parse.lex"
+#line 347 "parse.lex"
 {
                            LEXTRACE("= ");
                            return('=');
                        }                       /* return '=' */
        YY_BREAK
-case 34:
+case 35:
 YY_RULE_SETUP
-#line 331 "parse.lex"
+#line 352 "parse.lex"
 {
                            LEXTRACE(": ");
                            return(':');
                        }                       /* return ':' */
        YY_BREAK
-case 35:
+case 36:
 YY_RULE_SETUP
-#line 336 "parse.lex"
+#line 357 "parse.lex"
 {
                            if (yyleng % 2 == 1)
                                return('!');    /* return '!' */
                        }
        YY_BREAK
-case 36:
+case 37:
 YY_RULE_SETUP
-#line 341 "parse.lex"
+#line 362 "parse.lex"
 {
                            BEGIN INITIAL;
                            ++sudolineno;
@@ -1844,25 +1890,25 @@ YY_RULE_SETUP
                            return(COMMENT);
                        }                       /* return newline */
        YY_BREAK
-case 37:
+case 38:
 YY_RULE_SETUP
-#line 348 "parse.lex"
+#line 369 "parse.lex"
 {                      /* throw away space/tabs */
                            sawspace = TRUE;    /* but remember for fill_args */
                        }
        YY_BREAK
-case 38:
+case 39:
 YY_RULE_SETUP
-#line 352 "parse.lex"
+#line 373 "parse.lex"
 {
                            sawspace = TRUE;    /* remember for fill_args */
                            ++sudolineno;
                            LEXTRACE("\n\t");
                        }                       /* throw away EOL after \ */
        YY_BREAK
-case 39:
+case 40:
 YY_RULE_SETUP
-#line 358 "parse.lex"
+#line 379 "parse.lex"
 {
                            BEGIN INITIAL;
                            ++sudolineno;
@@ -1870,9 +1916,9 @@ YY_RULE_SETUP
                            return(COMMENT);
                        }                       /* return comments */
        YY_BREAK
-case 40:
+case 41:
 YY_RULE_SETUP
-#line 365 "parse.lex"
+#line 386 "parse.lex"
 {
                            LEXTRACE("ERROR ");
                            return(ERROR);
@@ -1884,22 +1930,23 @@ case YY_STATE_EOF(GOTDEFS):
 case YY_STATE_EOF(GOTCMND):
 case YY_STATE_EOF(STARTDEFS):
 case YY_STATE_EOF(INDEFS):
-#line 370 "parse.lex"
+#line 391 "parse.lex"
 {
                            if (YY_START != INITIAL) {
                                BEGIN INITIAL;
                                LEXTRACE("ERROR ");
                                return(ERROR);
                            }
-                           yyterminate();
+                           if (!pop_include())
+                               yyterminate();
                        }
        YY_BREAK
-case 41:
+case 42:
 YY_RULE_SETUP
-#line 379 "parse.lex"
+#line 401 "parse.lex"
 ECHO;
        YY_BREAK
-#line 1903 "lex.yy.c"
+#line 1950 "lex.yy.c"
 
        case YY_END_OF_BUFFER:
                {
@@ -2190,7 +2237,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 >= 360 )
+                       if ( yy_current_state >= 374 )
                                yy_c = yy_meta[(unsigned int) yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -2225,11 +2272,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 >= 360 )
+               if ( yy_current_state >= 374 )
                        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 == 359);
+       yy_is_jam = (yy_current_state == 373);
 
        return yy_is_jam ? 0 : yy_current_state;
        }
@@ -2788,7 +2835,7 @@ int main()
        return 0;
        }
 #endif
-#line 379 "parse.lex"
+#line 401 "parse.lex"
 
 static void
 fill(s, len)
@@ -2873,6 +2920,37 @@ fill_args(s, len, addspace)
     arg_len = new_len;
 }
 
+int
+buffer_frob(path)
+    const char *path;
+{
+    static size_t maxbuf, nbuf;
+    static YY_BUFFER_STATE *bufstack;
+    FILE *fp;
+
+    if (path != NULL) {
+       /* XXX - have maxdepth */
+       /* push */
+       if (nbuf >= maxbuf) {
+           maxbuf += 16;
+           if ((bufstack = realloc(bufstack, maxbuf)) == NULL)
+               yyerror("unable to allocate memory");
+       }
+       if ((fp = open_sudoers(path)) == NULL)
+           yyerror(path);
+       bufstack[nbuf++] = YY_CURRENT_BUFFER;
+       yy_switch_to_buffer(yy_create_buffer(fp, YY_BUF_SIZE));
+    } else {
+       /* pop */
+       if (nbuf == 0)
+           return(FALSE);
+       fclose(YY_CURRENT_BUFFER->yy_input_file);
+       yy_delete_buffer(YY_CURRENT_BUFFER);
+       yy_switch_to_buffer(bufstack[--nbuf]);
+    }
+    return(TRUE);
+}
+
 int
 yywrap()
 {
index ef863f37c9be88ab530b2bb639698c25c21910d7..6f2aeb49435eaa87f2f03f3be61dfa0b4d1a67fd 100644 (file)
@@ -217,11 +217,11 @@ static void expand_match_list     __P((void));
 static aliasinfo *find_alias   __P((char *, int));
 static int  more_aliases       __P((void));
        void init_parser                __P((void));
-       void yyerror            __P((char *));
+       void yyerror            __P((const char *));
 
 void
 yyerror(s)
-    char *s;
+    const char *s;
 {
     /* Save the line the first error occurred on. */
     if (errorlineno == -1)