]> granicus.if.org Git - sudo/commitdiff
regen
authorTodd C. Miller <Todd.Miller@courtesan.com>
Fri, 24 Sep 2004 18:11:19 +0000 (18:11 +0000)
committerTodd C. Miller <Todd.Miller@courtesan.com>
Fri, 24 Sep 2004 18:11:19 +0000 (18:11 +0000)
lex.yy.c
sudo.tab.c
sudo.tab.h

index 6ebb3ec25e7d99dc26f41dd4f698aaa3b5022157..a93ae2195b69cb2d622716c5bccfb93a209b6216 100644 (file)
--- a/lex.yy.c
+++ b/lex.yy.c
@@ -285,47 +285,49 @@ static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
        *yy_cp = '\0'; \
        yy_c_buf_p = yy_cp;
 
-#define YY_NUM_RULES 39
-#define YY_END_OF_BUFFER 40
-static yyconst short int yy_accept[336] =
+#define YY_NUM_RULES 41
+#define YY_END_OF_BUFFER 42
+static yyconst short int yy_accept[360] =
     {   0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   40,   29,   35,   34,   33,   38,   29,   23,
-       38,   29,   30,   29,   29,   29,   29,   32,   31,   24,
-       24,   24,   24,   38,   29,   24,   24,   24,   24,   24,
-       25,   38,   25,   26,   25,   25,   25,   25,   25,   24,
-       24,   24,   24,   38,   25,    1,   12,   11,   12,   11,
-       11,   38,   38,    2,    8,    8,    8,    3,    8,    4,
-       38,   29,    0,   35,   33,    0,   37,   20,    0,   19,
-        0,   28,   28,    0,   29,   29,   29,   29,   29,   24,
-       24,   24,   24,   29,   36,   29,   29,   29,   29,   29,
-
-       29,   25,    0,   25,   20,    0,   19,    0,   25,    0,
-       25,   25,   25,   25,   25,   24,   24,   24,   24,   25,
-       25,    1,   12,   12,   10,    9,   10,    0,    2,    8,
-        0,    8,    0,    0,    5,    6,    8,    8,    0,   29,
-       29,   29,   24,   24,   24,   24,   29,   29,   29,   29,
-       29,   29,   25,   25,   25,   24,   24,   24,   24,   25,
-        7,    7,    0,    7,    8,   29,   29,   29,   29,   29,
-       24,   24,   24,   24,   29,   29,   29,   29,   25,   25,
-       25,   25,   25,   24,   24,   24,   24,   25,    7,   29,
-       29,   29,    0,   18,   24,   24,   24,   29,   29,   29,
-
-       25,   25,   25,   24,   24,   24,   25,   29,   29,   29,
-       29,   29,   24,   24,   24,   29,   29,   29,   25,   25,
-       25,   25,   25,   24,   24,   24,   25,   21,   21,   21,
-        0,   17,   24,    0,   16,   29,   29,   29,   21,   21,
-       21,   24,   25,   29,   21,   21,   21,   21,   24,   27,
-       29,   13,   25,   21,   21,   21,   21,   24,   25,   29,
-       22,   22,   22,    0,   15,   29,   13,   25,   22,   22,
-       22,   29,   29,   22,   22,   22,   22,   22,   14,   25,
-       25,   22,   22,   22,   22,   22,   29,   29,   29,   22,
-       22,   25,   25,   25,   22,   22,   29,   29,   29,   29,
-
-       29,   25,   25,   25,   25,   25,   29,   29,   29,   25,
-       25,   25,   29,   29,   29,   29,   29,   25,   25,   25,
-       25,   25,   21,   21,   21,   21,   21,   21,   21,   21,
-       21,   21,   21,   21,    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
     } ;
 
 static yyconst int yy_ec[256] =
@@ -338,12 +340,12 @@ static yyconst int yy_ec[256] =
        19,   20,   21,   22,   22,   22,   22,   23,    1,    1,
        24,   25,   10,   25,   26,   27,   28,   29,   30,   27,
        27,   31,   27,   27,   27,   27,   27,   32,   33,   34,
-       27,   35,   36,   27,   37,   27,   38,   39,   27,   27,
-       10,   40,   10,    1,   41,    1,   42,   43,   43,   44,
+       27,   35,   36,   37,   38,   27,   39,   40,   27,   27,
+       10,   41,   10,    1,   42,    1,   43,   44,   44,   45,
 
-       45,   46,   43,   43,   47,   43,   43,   48,   49,   50,
-       51,   43,   43,   52,   53,   54,   55,   43,   43,   43,
-       43,   43,    1,    1,    1,    1,    1,    1,    1,    1,
+       46,   47,   44,   44,   48,   44,   44,   49,   50,   51,
+       52,   44,   44,   53,   54,   55,   56,   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,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -360,496 +362,784 @@ static yyconst int yy_ec[256] =
         1,    1,    1,    1,    1
     } ;
 
-static yyconst int yy_meta[56] =
+static yyconst int yy_meta[57] =
     {   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,    6,
-        7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
-        7,    7,    7,    7,    7
+        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
     } ;
 
-static yyconst short int yy_base[355] =
+static yyconst short int yy_base[379] =
     {   0,
-        0,   28,   65,    0,   56,  119,  120,  127,  166,  220,
-      274,  313, 1244, 1195, 1224, 1708, 1211, 1211, 1166, 1708,
-     1708, 1157, 1708,  133,  340,  158,  136, 1708, 1708,  380,
-     1153, 1150, 1148,  434,   94, 1116, 1111, 1096, 1074, 1065,
-     1077,  168, 1073, 1708, 1064,  157,  446,  182,  175,  486,
-     1049, 1046, 1044,  540,  107, 1059,    0, 1708, 1048,    0,
-     1708,  564,   58,    0,  992,  287,  124, 1708,  201, 1708,
-      133,  982,  603, 1016, 1003,  989, 1708,  951,  627,  935,
-      651,  296,  924,  675,  211,  131,    0,    0,  928,    0,
-      904,  129,  873,  241, 1708,  194,   88,  100,  195,  196,
-
-      197,  853,  699,  236,  844,  723,  835,  747,  298,  771,
-      312,  268,    0,    0,  844,    0,  827,  254,  812,  307,
-      251,  837,    0,  810,  237, 1708, 1708,  294,    0,  758,
-      339,  364,  254,  337, 1708, 1708,  753,  310,  449,  460,
-      537,  561,  764,  742,  752,  738,  295,  299,  205,  324,
-      261,  331,  575,  600,  624,  729,  699,  711,  700,  304,
-      694, 1708,  344,  666,  690,  699,  308,  744,  768,  783,
-      363,  703,  677,  671,  328,  334,  399,  339,  790,  430,
-      799,  815,  824,  380,  674,  652,  647,  405,  443,  833,
-      842,  851,  467, 1708,  652,  594,  571,  409,  445,  444,
-
-      860,  869,  878,  544,  514,  466,  412,  885,  531,  894,
-      910,  919,  486,  456,  487,  522,  550,  507,  926,  546,
-      935,  951,  960,  583,  437,  600,  561,  968,  806,  724,
-      601, 1708,  418,  611, 1708,  607,  585,  458,  994,  901,
-      942,  412,  608,  977,  649,    0,    0,  383,  635,  349,
-      614,  642,  984,  651,    0,    0,  350,  647,  280, 1009,
-     1019, 1028, 1037,  671, 1708,  657, 1708, 1046, 1055, 1064,
-     1073, 1080,  559, 1089, 1105, 1114, 1123, 1098,  243, 1132,
-      570, 1141, 1150, 1159, 1168, 1177, 1182, 1191, 1202, 1211,
-      751, 1220, 1229, 1238, 1247, 1003, 1254,  672, 1263, 1279,
-
-     1288, 1295,  712, 1304, 1320, 1329, 1338, 1347, 1356, 1365,
-     1374, 1383, 1392,  714, 1401, 1410, 1419, 1428,  736, 1437,
-     1446, 1455, 1464, 1473, 1482, 1491, 1500, 1509,  210, 1516,
-     1523,  165, 1529, 1541, 1708, 1581, 1588, 1595, 1602, 1609,
-     1616, 1623, 1630, 1637, 1644, 1651, 1658, 1665,  176, 1672,
-     1679, 1686, 1693, 1700
+        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
     } ;
 
-static yyconst short int yy_def[355] =
+static yyconst short int yy_def[379] =
     {   0,
-      335,    1,  335,    3,    1,    1,  336,  336,  337,  337,
-      338,  338,  335,  339,  335,  335,  335,  340,  341,  335,
-      335,  342,  335,  343,  339,   25,   25,  335,  335,  335,
-       30,   30,   30,  339,  339,   30,   30,   30,   30,   30,
-      344,  335,  345,  335,  346,  347,  344,   47,   47,  335,
-       50,   50,   50,  344,  344,  335,  348,  335,  348,  348,
-      335,  335,  335,  349,  350,  351,  350,  335,  350,  335,
-      352,  339,  339,  335,  335,  340,  335,  341,  341,  342,
-      342,  343,  353,  339,  339,  339,   25,   25,   25,   30,
-       30,   30,   30,  339,  335,  339,  339,  339,  339,  339,
-
-      339,  344,  344,  335,  345,  345,  346,  346,  347,  344,
-      344,  344,   47,   47,   47,   50,   50,   50,   50,  344,
-      344,  335,  348,  348,  335,  335,  335,  335,  349,  350,
-      350,  351,  354,  351,  335,  335,  350,  350,  335,   25,
-       25,   25,   30,   30,   30,   30,  339,  339,  339,  339,
-      339,  339,   47,   47,   47,   50,   50,   50,   50,  344,
-      350,  335,  354,  351,  351,  339,  339,   25,   25,   25,
-       30,   30,   30,   30,  339,  339,  339,  339,  344,  344,
-       47,   47,   47,   50,   50,   50,   50,  344,  354,   25,
-       25,   25,  335,  335,   30,   30,   30,  339,  339,  339,
-
-       47,   47,   47,   50,   50,   50,  344,  339,  339,   25,
-       25,   25,   30,   30,   30,  339,  339,  339,  344,  344,
-       47,   47,   47,   50,   50,   50,  344,  339,  228,  228,
-      335,  335,   30,  335,  335,  339,  339,  339,  344,  239,
-      239,   50,  344,  339,  339,  228,  228,  228,   30,  339,
-      339,  339,  344,  344,  239,  239,  239,   50,  344,   25,
-       25,   25,   25,  335,  335,  339,  335,   47,   47,   47,
-       47,  339,  339,   25,   25,   25,   25,  339,  339,   47,
-      344,   47,   47,   47,   47,  344,   25,   25,   25,   25,
-      339,   47,   47,   47,   47,  344,  339,  339,   25,   25,
-
-       25,  344,  344,   47,   47,   47,   25,   25,   25,   47,
-       47,   47,   25,  339,   25,   25,   25,   47,  344,   47,
-       47,   47,   25,   25,   25,   47,   47,   47,  339,  339,
-      339,  344,  344,  344,    0,  335,  335,  335,  335,  335,
-      335,  335,  335,  335,  335,  335,  335,  335,  335,  335,
-      335,  335,  335,  335
+      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
     } ;
 
-static yyconst short int yy_nxt[1764] =
+static yyconst short int yy_nxt[3055] =
     {   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,   30,   30,   30,   34,
-       14,   14,   14,   14,   14,   14,   14,   14,   14,   14,
-       14,   14,   35,   14,   14,   36,   37,   56,   38,  128,
-       95,   21,   39,   21,   40,   41,   15,   16,   17,   41,
-       42,   43,   21,   44,   41,   45,   23,   41,   41,   46,
-       47,   48,   49,   47,   47,   47,   47,   28,   29,   21,
-       50,   50,   50,   50,   51,   50,   52,   50,   53,   50,
-
-       50,   50,   50,   50,   54,   41,   41,   41,   41,   41,
-       41,   41,   41,   41,   41,   41,   41,   55,   41,   41,
-       56,   15,   58,   59,   21,   60,   21,   73,   15,   58,
-       59,   61,   60,   73,  138,   95,   83,  148,   61,   73,
-       83,   83,   61,   60,   85,  149,  103,  135,   96,   61,
-       60,   88,   88,   88,   88,   88,   89,   83,  144,   62,
-       83,  121,  145,  131,   83,   83,   62,   15,   16,   17,
-       73,   18,   84,   87,   87,   87,   87,   87,   87,   87,
-      104,   83,  129,  104,  104,  104,  104,  104,  104,  104,
-      114,  114,  114,  114,  114,  115,  110,  113,  113,  113,
-
-      113,  113,  113,  113,  103,   63,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   15,   16,   17,  136,   18,  140,  141,  142,  140,
-      140,  140,  140,   73,   73,   73,   73,  147,  128,   95,
-      131,  152,  128,   95,   73,  151,  177,  150,  104,   73,
-       73,  104,  104,  104,  104,  104,  104,  104,  162,   63,
-       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   15,   16,   17,   66,   18,
-       73,  111,   73,  157,   67,   68,   69,  158,  133,  133,
-      103,  130,  133,  163,  160,  128,   95,   70,  133,   83,
-
-       73,   83,  178,   83,   83,   83,   83,  103,  128,   95,
-      133,  128,   95,   71,   15,   16,   17,   66,   18,  103,
-       83,  166,   83,   67,   68,   69,  134,  153,  154,  155,
-      153,  153,  153,  153,   73,   84,   70,  110,   73,  133,
-      130,  164,  176,  103,  130,  175,  103,   73,  189,  131,
-      130,  103,   71,   85,  188,   86,   86,   86,   86,   86,
-       86,   86,  130,   73,  193,  133,  133,   73,  161,  133,
-       73,  102,  198,   73,  199,  133,  165,  176,   73,   73,
-       72,  193,  176,  163,   72,  194,   72,  133,   73,   72,
-       72,  176,   72,   72,   72,   90,   90,   90,   90,   90,
-
-       90,   90,  194,  134,   72,   90,   90,   90,   90,   90,
-       90,   90,   90,   90,   90,   90,   90,   90,   90,   73,
-       90,   72,   72,   72,   72,   72,   72,   72,   72,   72,
-       72,   72,   72,   72,   72,   94,   95,   72,   73,   72,
-      258,   72,   72,  179,  103,   72,  249,  162,   73,  207,
-       83,  103,  216,  200,   83,  227,   72,   72,   72,  111,
-       83,  112,  112,  112,  112,  112,  112,  112,  193,  103,
-      217,   83,   83,  166,  242,  167,  167,  167,  167,  167,
-      167,  167,  163,   73,   73,  103,  102,  231,  234,  194,
-      102,  218,  102,  233,  226,  102,  102,   73,  102,  102,
-
-      102,  116,  116,  116,  116,  116,  116,  116,  232,  235,
-      252,  116,  116,  116,  116,  116,  116,  116,  116,  116,
-      116,  116,  116,  116,  116,  103,  116,  102,  102,  102,
-      102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
-      102,  120,   95,  102,  208,  102,   73,  102,  102,  225,
-      166,  102,  168,  168,  168,  168,  168,  168,  168,  219,
-      238,   73,  102,  102,  102,  125,   95,  126,  236,  127,
-       73,  224,  272,  126,  166,  127,  169,  169,  169,  169,
-      169,  170,  167,  280,  231,  103,  127,  127,  179,   73,
-      180,  180,  180,  180,  180,  180,  180,  237,   73,  215,
-
-      103,  234,  231,  127,   72,  232,   72,  243,   72,  103,
-       72,   72,  234,  179,   72,  181,  181,  181,  181,  181,
-      181,  181,  235,  232,   73,   72,   72,   72,   78,  214,
-       78,  251,   78,  235,   78,   78,  264,  179,   78,  182,
-      182,  182,  182,  182,  183,  180,   73,  103,  264,   78,
-       78,   78,   80,   73,   80,  266,   80,  265,   80,   80,
-      250,  259,   80,  244,  267,  253,  267,  133,  133,  265,
-      161,  133,  264,   80,   80,   80,   82,  133,   72,  213,
-       82,   73,   72,   72,  206,  297,   82,  205,   73,  133,
-      103,  133,  133,  265,  164,  133,   73,   82,   82,   72,
-
-      102,  133,  102,  204,  102,  134,  102,  102,  197,  279,
-      102,   73,  196,  133,  190,  191,  192,  190,  190,  190,
-      190,  102,  102,  102,  105,  302,  105,  313,  105,  134,
-      105,  105,  195,  131,  105,  187,  186,  185,   73,  247,
-      247,  247,  247,  247,  248,  105,  105,  105,  107,  318,
-      107,  103,  107,   73,  107,  107,  184,  166,  107,  167,
-      167,  167,  167,  167,  167,  167,  291,  291,  291,  107,
-      107,  107,  109,  174,  102,  103,  109,  173,  102,  102,
-      172,  166,  109,  167,  167,  167,  167,  167,  167,  167,
-       73,  171,  131,  109,  109,  102,  166,  131,  167,  167,
-
-      167,  167,  167,  167,   72,  201,  202,  203,  201,  201,
-      201,  201,  179,  124,  180,  180,  180,  180,  180,  180,
-      180,  246,  246,  246,  246,  246,  246,  246,  179,  103,
-      180,  180,  180,  180,  180,  180,  180,  179,  122,  180,
-      180,  180,  180,  180,  180,  102,  208,  159,  209,  209,
-      209,  209,  209,  209,  209,  208,  156,  210,  210,  210,
-      210,  210,  210,  210,  208,  102,  211,  211,  211,  211,
-      211,  212,  209,  219,  108,  220,  220,  220,  220,  220,
-      220,  220,  219,  106,  221,  221,  221,  221,  221,  221,
-      221,  219,  103,  222,  222,  222,  222,  222,  223,  220,
-
-      228,  229,  230,  228,  228,  228,  228,  208,  146,  209,
-      209,  209,  209,  209,  209,  209,  255,  255,  255,  255,
-      255,  255,  255,  208,   73,  209,  209,  209,  209,  209,
-      209,  209,  208,  143,  209,  209,  209,  209,  209,  209,
-       72,  239,  240,  241,  239,  239,  239,  239,  219,   72,
-      220,  220,  220,  220,  220,  220,  220,  256,  256,  256,
-      256,  256,  257,  139,  219,  103,  220,  220,  220,  220,
-      220,  220,  220,  219,   81,  220,  220,  220,  220,  220,
-      220,  102,  244,  245,  245,  245,  245,  245,  245,  245,
-       79,   77,  260,  261,  262,  263,  260,  260,  260,  268,
-
-      269,  270,  271,  268,  268,  268,   75,   73,  253,  254,
-      254,  254,  254,  254,  254,  254,   73,   74,  296,  296,
-      296,   73,  272,  103,  273,  273,  273,  273,  273,  273,
-      273,  131,  272,  103,  274,  274,  274,  274,  274,  274,
-      274,  272,  103,  275,  275,  275,  275,  275,  276,  277,
-      272,  124,  278,  278,  278,  273,  273,  273,  273,  280,
-      122,  281,  281,  281,  281,  281,  281,  281,  280,  119,
-      282,  282,  282,  282,  282,  282,  282,  280,  118,  283,
-      283,  283,  283,  283,  284,  285,  280,  117,  286,  286,
-      286,  281,  281,  281,  281,  287,  288,  289,  287,  287,
-
-      287,  287,  272,  108,  277,  277,  277,  277,  277,  277,
-      277,  272,  106,  291,  291,  291,  103,  101,  272,   73,
-      277,  277,  277,  277,  277,  277,  277,  272,  100,  277,
-      277,  277,  277,  277,  277,  290,  272,   73,  290,  290,
-      290,  290,  290,  290,  290,  102,   99,  292,  293,  294,
-      292,  292,  292,  292,  280,   98,  285,  285,  285,  285,
-      285,  285,  285,  280,   97,  285,  285,  285,  285,  285,
-      285,  285,  280,   93,  285,  285,  285,  285,  285,  285,
-      295,  280,   92,  295,  295,  295,  295,  295,  295,  295,
-      280,   91,  296,  296,  296,  297,   81,  298,  298,  298,
-
-      298,  298,  298,  298,  297,   79,  299,  299,  299,  299,
-      299,  299,  299,   77,   75,  297,  103,  300,  300,  300,
-      300,  300,  301,  298,   72,   74,  290,  290,  290,  290,
-      290,  290,  290,  302,   73,  303,  303,  303,  303,  303,
-      303,  303,  302,  335,  304,  304,  304,  304,  304,  304,
-      304,  302,  335,  305,  305,  305,  305,  305,  306,  303,
-      102,  335,  295,  295,  295,  295,  295,  295,  295,  307,
-      308,  309,  307,  307,  307,  307,  297,  335,  298,  298,
-      298,  298,  298,  298,  298,  335,  335,  335,  335,  335,
-      335,  335,  297,   73,  298,  298,  298,  298,  298,  298,
-
-      298,  297,  335,  298,  298,  298,  298,  298,  298,   72,
-      310,  311,  312,  310,  310,  310,  310,  302,  335,  303,
-      303,  303,  303,  303,  303,  303,  335,  335,  335,  335,
-      335,  335,  335,  302,  103,  303,  303,  303,  303,  303,
-      303,  303,  302,  335,  303,  303,  303,  303,  303,  303,
-      102,  313,  335,  314,  314,  314,  314,  314,  314,  314,
-      313,  335,  315,  315,  315,  315,  315,  315,  315,  313,
-      335,  316,  316,  316,  316,  316,  317,  314,  318,  335,
-      319,  319,  319,  319,  319,  319,  319,  318,  335,  320,
-      320,  320,  320,  320,  320,  320,  318,  335,  321,  321,
-
-      321,  321,  321,  322,  319,   72,  335,  323,  324,  325,
-      323,  323,  323,  323,  313,  335,  314,  314,  314,  314,
-      314,  314,  314,  313,  335,  314,  314,  314,  314,  314,
-      314,  314,  313,  335,  314,  314,  314,  314,  314,  314,
-       72,  102,  335,  326,  327,  328,  326,  326,  326,  326,
-      318,  335,  319,  319,  319,  319,  319,  319,  319,  318,
-      335,  319,  319,  319,  319,  319,  319,  319,  318,  335,
-      319,  319,  319,  319,  319,  319,  102,   72,  335,  329,
-      329,  329,  329,  329,  329,  329,   72,  335,  323,  323,
-      323,  323,  323,  323,  323,   72,  335,  330,  330,  330,
-
-      330,  330,  331,  329,  102,  335,  332,  332,  332,  332,
-      332,  332,  332,  102,  335,  326,  326,  326,  326,  326,
-      326,  326,  102,  335,  333,  333,  333,  333,  333,  334,
-      332,  329,  329,  329,  329,  329,  329,  329,  329,  329,
-      329,  329,  329,  329,  332,  332,  332,  332,  332,  332,
-      332,  335,  335,  335,  335,   73,  332,  332,  332,  332,
-      332,  332,   73,  335,  335,  335,  335,  335,  103,  335,
-      335,  335,  335,  335,  335,  335,  335,  335,  335,  335,
-      103,   57,   57,   57,   57,   57,   57,   57,   21,   21,
-       21,   21,   21,   21,   21,   65,   65,   65,   65,   65,
-
-       65,   65,   72,  335,  335,  335,  335,   72,   72,   76,
-       76,   76,   76,   76,   76,   76,   78,  335,  335,  335,
-      335,   78,   78,   80,  335,  335,  335,  335,   80,   80,
-       82,  335,   82,  335,  335,   82,   82,  102,  335,  335,
-      335,  335,  102,  102,  105,  335,  335,  335,  335,  105,
-      105,  107,  335,  335,  335,  335,  107,  107,  109,  335,
-      109,  335,  335,  109,  109,  123,  335,  123,  123,  335,
-      335,  123,  130,  335,  130,  335,  130,  130,  130,  132,
-      132,  132,  132,  132,  132,  132,  137,  137,  137,  137,
-      137,  137,  137,   83,  335,   83,  335,  335,   83,   83,
-
-      133,  133,  133,  133,  133,  133,  133,   13,  335,  335,
-      335,  335,  335,  335,  335,  335,  335,  335,  335,  335,
-      335,  335,  335,  335,  335,  335,  335,  335,  335,  335,
-      335,  335,  335,  335,  335,  335,  335,  335,  335,  335,
-      335,  335,  335,  335,  335,  335,  335,  335,  335,  335,
-      335,  335,  335,  335,  335,  335,  335,  335,  335,  335,
-      335,  335,  335
+       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
     } ;
 
-static yyconst short int yy_chk[1764] =
+static yyconst short int yy_chk[3055] =
     {   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,    2,    2,    5,    2,   63,
-       63,    5,    2,    5,    2,    3,    3,    3,    3,    3,
+        1,    1,    1,    1,    1,    1,    2,    2,    5,    2,
+       65,   65,    5,    2,    5,  373,    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,   97,    8,    8,
-        8,    7,    8,   35,   71,   71,   24,   97,    8,   98,
-       24,   24,    7,    7,   86,   98,   55,   67,   35,    8,
-        8,   27,   27,   27,   27,   27,   27,   24,   92,    7,
-       46,   55,   92,   67,   46,   46,    8,    9,    9,    9,
-       86,    9,   24,   26,   26,   26,   26,   26,   26,   26,
-       42,   46,  349,   42,   42,   42,   42,   42,   42,   42,
-       49,   49,   49,   49,   49,   49,   46,   48,   48,   48,
-
-       48,   48,   48,   48,  332,    9,    9,    9,    9,    9,
+        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,   10,   10,   10,   69,   10,   85,   85,   85,   85,
-       85,   85,   85,   96,   99,  100,  101,   96,  125,  125,
-       69,  101,   94,   94,  149,  100,  149,   99,  104,  329,
-       85,  104,  104,  104,  104,  104,  104,  104,  133,   10,
+        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,
        10,   10,   10,   10,   10,   10,   10,   10,   10,   10,
-       10,   10,   10,   10,   10,   11,   11,   11,   11,   11,
-       94,  112,  279,  118,   11,   11,   11,  118,   66,   66,
-      121,   66,   66,  133,  121,  128,  128,   11,   66,   82,
-
-      151,  109,  151,   82,   82,  109,  109,  112,  120,  120,
-       66,  138,  138,   11,   12,   12,   12,   12,   12,  259,
-       82,  167,  109,   12,   12,   12,   66,  111,  111,  111,
-      111,  111,  111,  111,  147,   82,   12,  109,  148,  134,
-      131,  134,  148,  160,  131,  147,  120,  167,  163,  138,
-      131,  111,   12,   25,  160,   25,   25,   25,   25,   25,
-       25,   25,  131,  150,  171,  132,  132,  175,  132,  132,
-      152,  257,  175,  176,  176,  132,  134,  150,  178,   25,
-       30,  184,  152,  163,   30,  171,   30,  132,  250,   30,
-       30,  178,   30,   30,   30,   30,   30,   30,   30,   30,
-
-       30,   30,  184,  132,  248,   30,   30,   30,   30,   30,
+       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,
+       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,   30,   30,
-       30,   30,   30,   30,   30,   34,   34,   34,  177,   34,
-      242,   34,   34,  180,  188,   34,  233,  189,  198,  188,
-      139,  207,  198,  177,  139,  207,   34,   34,   34,   47,
-      139,   47,   47,   47,   47,   47,   47,   47,  193,  180,
-      199,  139,  139,  140,  225,  140,  140,  140,  140,  140,
-      140,  140,  189,  200,  199,   47,   50,  213,  215,  193,
-       50,  200,   50,  214,  206,   50,   50,  238,   50,   50,
-
-       50,   50,   50,   50,   50,   50,   50,   50,  213,  215,
-      238,   50,   50,   50,   50,   50,   50,   50,   50,   50,
-       50,   50,   50,   50,   50,   50,   50,   50,   50,   50,
-       50,   50,   50,   50,   50,   50,   50,   50,   50,   50,
-       50,   54,   54,   54,  209,   54,  218,   54,   54,  205,
-      141,   54,  141,  141,  141,  141,  141,  141,  141,  220,
-      218,  216,   54,   54,   54,   62,   62,   62,  216,   62,
-      209,  204,  273,   62,  142,   62,  142,  142,  142,  142,
-      142,  142,  142,  281,  224,  220,   62,   62,  153,  217,
-      153,  153,  153,  153,  153,  153,  153,  217,  273,  197,
-
-      227,  226,  231,   62,   73,  224,   73,  227,   73,  281,
-       73,   73,  234,  154,   73,  154,  154,  154,  154,  154,
-      154,  154,  226,  231,  237,   73,   73,   73,   79,  196,
-       79,  237,   79,  234,   79,   79,  249,  155,   79,  155,
-      155,  155,  155,  155,  155,  155,  236,  243,  258,   79,
-       79,   79,   81,  251,   81,  251,   81,  249,   81,   81,
-      236,  243,   81,  245,  252,  254,  252,  164,  164,  258,
-      164,  164,  264,   81,   81,   81,   84,  164,   84,  195,
-       84,  252,   84,   84,  187,  298,   84,  186,  245,  164,
-      254,  165,  165,  264,  165,  165,  266,   84,   84,   84,
-
-      103,  165,  103,  185,  103,  164,  103,  103,  174,  266,
-      103,  298,  173,  165,  166,  166,  166,  166,  166,  166,
-      166,  103,  103,  103,  106,  303,  106,  314,  106,  165,
-      106,  106,  172,  161,  106,  159,  158,  157,  166,  230,
-      230,  230,  230,  230,  230,  106,  106,  106,  108,  319,
-      108,  303,  108,  314,  108,  108,  156,  168,  108,  168,
-      168,  168,  168,  168,  168,  168,  291,  291,  291,  108,
-      108,  108,  110,  146,  110,  319,  110,  145,  110,  110,
-      144,  169,  110,  169,  169,  169,  169,  169,  169,  169,
-      291,  143,  137,  110,  110,  110,  170,  130,  170,  170,
-
-      170,  170,  170,  170,  170,  179,  179,  179,  179,  179,
-      179,  179,  181,  124,  181,  181,  181,  181,  181,  181,
-      181,  229,  229,  229,  229,  229,  229,  229,  182,  179,
-      182,  182,  182,  182,  182,  182,  182,  183,  122,  183,
-      183,  183,  183,  183,  183,  183,  190,  119,  190,  190,
-      190,  190,  190,  190,  190,  191,  117,  191,  191,  191,
-      191,  191,  191,  191,  192,  115,  192,  192,  192,  192,
-      192,  192,  192,  201,  107,  201,  201,  201,  201,  201,
-      201,  201,  202,  105,  202,  202,  202,  202,  202,  202,
-      202,  203,  102,  203,  203,  203,  203,  203,  203,  203,
-
-      208,  208,  208,  208,  208,  208,  208,  210,   93,  210,
-      210,  210,  210,  210,  210,  210,  240,  240,  240,  240,
-      240,  240,  240,  211,  208,  211,  211,  211,  211,  211,
-      211,  211,  212,   91,  212,  212,  212,  212,  212,  212,
-      212,  219,  219,  219,  219,  219,  219,  219,  221,   89,
-      221,  221,  221,  221,  221,  221,  221,  241,  241,  241,
-      241,  241,  241,   83,  222,  219,  222,  222,  222,  222,
-      222,  222,  222,  223,   80,  223,  223,  223,  223,  223,
-      223,  223,  228,  228,  228,  228,  228,  228,  228,  228,
-       78,   76,  244,  244,  244,  244,  244,  244,  244,  253,
-
-      253,  253,  253,  253,  253,  253,   75,  228,  239,  239,
-      239,  239,  239,  239,  239,  239,  244,   74,  296,  296,
-      296,   72,  260,  253,  260,  260,  260,  260,  260,  260,
-      260,   65,  261,  239,  261,  261,  261,  261,  261,  261,
-      261,  262,  296,  262,  262,  262,  262,  262,  262,  262,
-      263,   59,  263,  263,  263,  263,  263,  263,  263,  268,
-       56,  268,  268,  268,  268,  268,  268,  268,  269,   53,
-      269,  269,  269,  269,  269,  269,  269,  270,   52,  270,
-      270,  270,  270,  270,  270,  270,  271,   51,  271,  271,
-      271,  271,  271,  271,  271,  272,  272,  272,  272,  272,
-
-      272,  272,  274,   45,  274,  274,  274,  274,  274,  274,
-      274,  278,   43,  278,  278,  278,   41,   40,  275,  272,
-      275,  275,  275,  275,  275,  275,  275,  276,   39,  276,
-      276,  276,  276,  276,  276,  276,  277,  278,  277,  277,
-      277,  277,  277,  277,  277,  280,   38,  280,  280,  280,
-      280,  280,  280,  280,  282,   37,  282,  282,  282,  282,
-      282,  282,  282,  283,   36,  283,  283,  283,  283,  283,
-      283,  283,  284,   33,  284,  284,  284,  284,  284,  284,
-      284,  285,   32,  285,  285,  285,  285,  285,  285,  285,
-      286,   31,  286,  286,  286,  287,   22,  287,  287,  287,
-
-      287,  287,  287,  287,  288,   19,  288,  288,  288,  288,
-      288,  288,  288,   18,   17,  289,  286,  289,  289,  289,
-      289,  289,  289,  289,  290,   15,  290,  290,  290,  290,
-      290,  290,  290,  292,   14,  292,  292,  292,  292,  292,
-      292,  292,  293,   13,  293,  293,  293,  293,  293,  293,
+
+       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,
+        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,    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,    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,    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,
+
+      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,    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,    0,    0,    0,    0,    0,    0,
+
+      260,  261,  261,  261,  261,  261,  261,  261,  261,    0,
+        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,    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,    0,    0,    0,    0,    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,  279,
+      279,  279,  279,  279,  279,  279,  279,    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,    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,
+        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,    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,    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,    0,    0,    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,
       293,  294,    0,  294,  294,  294,  294,  294,  294,  294,
-      295,    0,  295,  295,  295,  295,  295,  295,  295,  297,
-      297,  297,  297,  297,  297,  297,  299,    0,  299,  299,
-      299,  299,  299,  299,  299,    0,    0,    0,    0,    0,
-        0,    0,  300,  297,  300,  300,  300,  300,  300,  300,
+        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,  298,    0,  298,
+      298,  298,  298,  298,  298,  298,    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,    0,    0,    0,    0,    0,    0,    0,    0,    0,
       300,  301,    0,  301,  301,  301,  301,  301,  301,  301,
-      302,  302,  302,  302,  302,  302,  302,  304,    0,  304,
-      304,  304,  304,  304,  304,  304,    0,    0,    0,    0,
-        0,    0,    0,  305,  302,  305,  305,  305,  305,  305,
-      305,  305,  306,    0,  306,  306,  306,  306,  306,  306,
-      306,  307,    0,  307,  307,  307,  307,  307,  307,  307,
-      308,    0,  308,  308,  308,  308,  308,  308,  308,  309,
-        0,  309,  309,  309,  309,  309,  309,  309,  310,    0,
-      310,  310,  310,  310,  310,  310,  310,  311,    0,  311,
-      311,  311,  311,  311,  311,  311,  312,    0,  312,  312,
-
-      312,  312,  312,  312,  312,  313,    0,  313,  313,  313,
-      313,  313,  313,  313,  315,    0,  315,  315,  315,  315,
-      315,  315,  315,  316,    0,  316,  316,  316,  316,  316,
-      316,  316,  317,    0,  317,  317,  317,  317,  317,  317,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,  301,  306,
+
+        0,  306,  306,  306,  306,  306,  306,  306,    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,    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,    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,
+      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,    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,
+
+      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,
-      320,    0,  320,  320,  320,  320,  320,  320,  320,  321,
-        0,  321,  321,  321,  321,  321,  321,  321,  322,    0,
-      322,  322,  322,  322,  322,  322,  322,  323,    0,  323,
-      323,  323,  323,  323,  323,  323,  324,    0,  324,  324,
-      324,  324,  324,  324,  324,  325,    0,  325,  325,  325,
-
-      325,  325,  325,  325,  326,    0,  326,  326,  326,  326,
-      326,  326,  326,  327,    0,  327,  327,  327,  327,  327,
-      327,  327,  328,    0,  328,  328,  328,  328,  328,  328,
-      328,  330,  330,  330,  330,  330,  330,  330,  331,  331,
-      331,  331,  331,  331,  333,  333,  333,  333,  333,  333,
-      333,    0,    0,    0,    0,  330,  334,  334,  334,  334,
-      334,  334,  331,    0,    0,    0,    0,    0,  333,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      334,  336,  336,  336,  336,  336,  336,  336,  337,  337,
-      337,  337,  337,  337,  337,  338,  338,  338,  338,  338,
-
-      338,  338,  339,    0,    0,    0,    0,  339,  339,  340,
-      340,  340,  340,  340,  340,  340,  341,    0,    0,    0,
-        0,  341,  341,  342,    0,    0,    0,    0,  342,  342,
-      343,    0,  343,    0,    0,  343,  343,  344,    0,    0,
-        0,    0,  344,  344,  345,    0,    0,    0,    0,  345,
-      345,  346,    0,    0,    0,    0,  346,  346,  347,    0,
-      347,    0,    0,  347,  347,  348,    0,  348,  348,    0,
-        0,  348,  350,    0,  350,    0,  350,  350,  350,  351,
-      351,  351,  351,  351,  351,  351,  352,  352,  352,  352,
-      352,  352,  352,  353,    0,  353,    0,    0,  353,  353,
-
-      354,  354,  354,  354,  354,  354,  354,  335,  335,  335,
-      335,  335,  335,  335,  335,  335,  335,  335,  335,  335,
-      335,  335,  335,  335,  335,  335,  335,  335,  335,  335,
-      335,  335,  335,  335,  335,  335,  335,  335,  335,  335,
-      335,  335,  335,  335,  335,  335,  335,  335,  335,  335,
-      335,  335,  335,  335,  335,  335,  335,  335,  335,  335,
-      335,  335,  335
+        0,    0,    0,    0,    0,    0,    0,    0,  318,  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,  324,    0,  324,
+      324,  324,  324,  324,  324,  324,    0,    0,    0,    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,    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,    0,    0,    0,    0,    0,
+      329,  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,  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,    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,    0,    0,    0,
+
+        0,    0,  334,  335,    0,  335,  335,  335,  335,  335,
+      335,  335,    0,    0,    0,    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,    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,    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,    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,    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,    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
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -958,7 +1248,7 @@ extern void yyerror                __P((char *));
 
 #define INDEFS 5
 
-#line 962 "lex.yy.c"
+#line 1252 "lex.yy.c"
 
 /* Macros after this point can all be overridden by user definitions in
  * section 1.
@@ -1114,7 +1404,7 @@ YY_DECL
 
 #line 99 "parse.lex"
 
-#line 1118 "lex.yy.c"
+#line 1408 "lex.yy.c"
 
        if ( yy_init )
                {
@@ -1166,13 +1456,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 >= 336 )
+                               if ( yy_current_state >= 360 )
                                        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] != 1708 );
+               while ( yy_base[yy_current_state] != 2998 );
 
 yy_find_action:
                yy_act = yy_accept[yy_current_state];
@@ -1386,6 +1676,22 @@ YY_RULE_SETUP
 case 19:
 YY_RULE_SETUP
 #line 231 "parse.lex"
+{
+                               LEXTRACE("NOTRACE ");
+                               return(NOTRACE);
+                       }
+       YY_BREAK
+case 20:
+YY_RULE_SETUP
+#line 236 "parse.lex"
+{
+                               LEXTRACE("TRACE ");
+                               return(TRACE);
+                       }
+       YY_BREAK
+case 21:
+YY_RULE_SETUP
+#line 241 "parse.lex"
 {
                            /* netgroup */
                            fill(yytext, yyleng);
@@ -1393,9 +1699,9 @@ YY_RULE_SETUP
                            return(NETGROUP);
                        }
        YY_BREAK
-case 20:
+case 22:
 YY_RULE_SETUP
-#line 238 "parse.lex"
+#line 248 "parse.lex"
 {
                            /* UN*X group */
                            fill(yytext, yyleng);
@@ -1403,36 +1709,36 @@ YY_RULE_SETUP
                            return(USERGROUP);
                        }
        YY_BREAK
-case 21:
+case 23:
 YY_RULE_SETUP
-#line 245 "parse.lex"
+#line 255 "parse.lex"
 {
                            fill(yytext, yyleng);
                            LEXTRACE("NTWKADDR ");
                            return(NTWKADDR);
                        }
        YY_BREAK
-case 22:
+case 24:
 YY_RULE_SETUP
-#line 251 "parse.lex"
+#line 261 "parse.lex"
 {
                            fill(yytext, yyleng);
                            LEXTRACE("NTWKADDR ");
                            return(NTWKADDR);
                        }
        YY_BREAK
-case 23:
+case 25:
 YY_RULE_SETUP
-#line 257 "parse.lex"
+#line 267 "parse.lex"
 {
                                BEGIN GOTRUNAS;
                                LEXTRACE("RUNAS ");
                                return (RUNAS);
                        }
        YY_BREAK
-case 24:
+case 26:
 YY_RULE_SETUP
-#line 263 "parse.lex"
+#line 273 "parse.lex"
 {
                            if (strcmp(yytext, "ALL") == 0) {
                                LEXTRACE("ALL ");
@@ -1444,9 +1750,9 @@ YY_RULE_SETUP
                            }
                        }
        YY_BREAK
-case 25:
+case 27:
 YY_RULE_SETUP
-#line 274 "parse.lex"
+#line 284 "parse.lex"
 {
                            /* username/uid that user can run command as */
                            fill(yytext, yyleng);
@@ -1454,25 +1760,25 @@ YY_RULE_SETUP
                            return(WORD);
                        }
        YY_BREAK
-case 26:
+case 28:
 YY_RULE_SETUP
-#line 281 "parse.lex"
+#line 291 "parse.lex"
 {
                            BEGIN INITIAL;
                        }
        YY_BREAK
-case 27:
+case 29:
 YY_RULE_SETUP
-#line 285 "parse.lex"
+#line 295 "parse.lex"
 {
                            BEGIN GOTCMND;
                            LEXTRACE("COMMAND ");
                            fill_cmnd(yytext, yyleng);
                        }                       /* sudo -e */
        YY_BREAK
-case 28:
+case 30:
 YY_RULE_SETUP
-#line 291 "parse.lex"
+#line 301 "parse.lex"
 {
                            /* directories can't have args... */
                            if (yytext[yyleng - 1] == '/') {
@@ -1486,9 +1792,9 @@ YY_RULE_SETUP
                            }
                        }                       /* a pathname */
        YY_BREAK
-case 29:
+case 31:
 YY_RULE_SETUP
-#line 304 "parse.lex"
+#line 314 "parse.lex"
 {
                            /* a word */
                            fill(yytext, yyleng);
@@ -1496,41 +1802,41 @@ YY_RULE_SETUP
                            return(WORD);
                        }
        YY_BREAK
-case 30:
+case 32:
 YY_RULE_SETUP
-#line 311 "parse.lex"
+#line 321 "parse.lex"
 {
                            LEXTRACE(", ");
                            return(',');
                        }                       /* return ',' */
        YY_BREAK
-case 31:
+case 33:
 YY_RULE_SETUP
-#line 316 "parse.lex"
+#line 326 "parse.lex"
 {
                            LEXTRACE("= ");
                            return('=');
                        }                       /* return '=' */
        YY_BREAK
-case 32:
+case 34:
 YY_RULE_SETUP
-#line 321 "parse.lex"
+#line 331 "parse.lex"
 {
                            LEXTRACE(": ");
                            return(':');
                        }                       /* return ':' */
        YY_BREAK
-case 33:
+case 35:
 YY_RULE_SETUP
-#line 326 "parse.lex"
+#line 336 "parse.lex"
 {
                            if (yyleng % 2 == 1)
                                return('!');    /* return '!' */
                        }
        YY_BREAK
-case 34:
+case 36:
 YY_RULE_SETUP
-#line 331 "parse.lex"
+#line 341 "parse.lex"
 {
                            BEGIN INITIAL;
                            ++sudolineno;
@@ -1538,25 +1844,25 @@ YY_RULE_SETUP
                            return(COMMENT);
                        }                       /* return newline */
        YY_BREAK
-case 35:
+case 37:
 YY_RULE_SETUP
-#line 338 "parse.lex"
+#line 348 "parse.lex"
 {                      /* throw away space/tabs */
                            sawspace = TRUE;    /* but remember for fill_args */
                        }
        YY_BREAK
-case 36:
+case 38:
 YY_RULE_SETUP
-#line 342 "parse.lex"
+#line 352 "parse.lex"
 {
                            sawspace = TRUE;    /* remember for fill_args */
                            ++sudolineno;
                            LEXTRACE("\n\t");
                        }                       /* throw away EOL after \ */
        YY_BREAK
-case 37:
+case 39:
 YY_RULE_SETUP
-#line 348 "parse.lex"
+#line 358 "parse.lex"
 {
                            BEGIN INITIAL;
                            ++sudolineno;
@@ -1564,9 +1870,9 @@ YY_RULE_SETUP
                            return(COMMENT);
                        }                       /* return comments */
        YY_BREAK
-case 38:
+case 40:
 YY_RULE_SETUP
-#line 355 "parse.lex"
+#line 365 "parse.lex"
 {
                            LEXTRACE("ERROR ");
                            return(ERROR);
@@ -1578,7 +1884,7 @@ case YY_STATE_EOF(GOTDEFS):
 case YY_STATE_EOF(GOTCMND):
 case YY_STATE_EOF(STARTDEFS):
 case YY_STATE_EOF(INDEFS):
-#line 360 "parse.lex"
+#line 370 "parse.lex"
 {
                            if (YY_START != INITIAL) {
                                BEGIN INITIAL;
@@ -1588,12 +1894,12 @@ case YY_STATE_EOF(INDEFS):
                            yyterminate();
                        }
        YY_BREAK
-case 39:
+case 41:
 YY_RULE_SETUP
-#line 369 "parse.lex"
+#line 379 "parse.lex"
 ECHO;
        YY_BREAK
-#line 1597 "lex.yy.c"
+#line 1903 "lex.yy.c"
 
        case YY_END_OF_BUFFER:
                {
@@ -1884,7 +2190,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 >= 336 )
+                       if ( yy_current_state >= 360 )
                                yy_c = yy_meta[(unsigned int) yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -1919,11 +2225,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 >= 336 )
+               if ( yy_current_state >= 360 )
                        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 == 335);
+       yy_is_jam = (yy_current_state == 359);
 
        return yy_is_jam ? 0 : yy_current_state;
        }
@@ -2482,7 +2788,7 @@ int main()
        return 0;
        }
 #endif
-#line 369 "parse.lex"
+#line 379 "parse.lex"
 
 static void
 fill(s, len)
index 3334fc86cb285a8a634cb5f3c6b32d9b1f4e1d01..ef863f37c9be88ab530b2bb639698c25c21910d7 100644 (file)
@@ -142,6 +142,7 @@ int top = 0, stacksize = 0;
        match[top].runas  = UNSPEC; \
        match[top].nopass = def_authenticate ? UNSPEC : TRUE; \
        match[top].noexec = def_noexec ? TRUE : UNSPEC; \
+       match[top].trace  = def_trace ? TRUE : UNSPEC; \
        top++; \
     } while (0)
 
@@ -157,6 +158,7 @@ int top = 0, stacksize = 0;
        match[top].runas  = match[top-1].runas; \
        match[top].nopass = match[top-1].nopass; \
        match[top].noexec = match[top-1].noexec; \
+       match[top].trace  = match[top-1].trace; \
        top++; \
     } while (0)
 
@@ -234,7 +236,7 @@ yyerror(s)
     }
     parse_error = TRUE;
 }
-#line 221 "parse.yacc"
+#line 223 "parse.yacc"
 #ifndef YYSTYPE_DEFINED
 #define YYSTYPE_DEFINED
 typedef union {
@@ -244,7 +246,7 @@ typedef union {
     int tok;
 } YYSTYPE;
 #endif /* YYSTYPE_DEFINED */
-#line 248 "sudo.tab.c"
+#line 250 "sudo.tab.c"
 #define COMMAND 257
 #define ALIAS 258
 #define DEFVAR 259
@@ -261,13 +263,15 @@ typedef union {
 #define PASSWD 270
 #define NOEXEC 271
 #define EXEC 272
-#define ALL 273
-#define COMMENT 274
-#define HOSTALIAS 275
-#define CMNDALIAS 276
-#define USERALIAS 277
-#define RUNASALIAS 278
-#define ERROR 279
+#define TRACE 273
+#define NOTRACE 274
+#define ALL 275
+#define COMMENT 276
+#define HOSTALIAS 277
+#define CMNDALIAS 278
+#define USERALIAS 279
+#define RUNASALIAS 280
+#define ERROR 281
 #define YYERRCODE 256
 #if defined(__cplusplus) || defined(__STDC__)
 const short yylhs[] =
@@ -280,11 +284,11 @@ short yylhs[] =
    17,   22,   22,   22,   22,   22,   10,   10,   23,   25,
    25,    2,    2,    2,    2,    2,   24,   24,   26,   29,
    30,   29,   27,   27,    5,    5,    4,   31,    4,    3,
-    3,    3,    3,    3,   28,   28,   28,   28,   28,    1,
-    1,    1,   12,   12,   33,   32,   20,   20,   13,   13,
-   35,   34,   36,   36,   14,   14,   38,   37,   11,   11,
-   40,   39,    8,    8,   41,   41,    6,    6,    6,    6,
-    6,
+    3,    3,    3,    3,   28,   28,   28,   28,   28,   28,
+   28,    1,    1,    1,   12,   12,   33,   32,   20,   20,
+   13,   13,   35,   34,   36,   36,   14,   14,   38,   37,
+   11,   11,   40,   39,    8,    8,   41,   41,    6,    6,
+    6,    6,    6,
 };
 #if defined(__cplusplus) || defined(__STDC__)
 const short yylen[] =
@@ -297,11 +301,11 @@ short yylen[] =
     3,    1,    2,    3,    3,    3,    1,    3,    3,    1,
     2,    1,    1,    1,    1,    1,    1,    3,    3,    1,
     0,    3,    0,    2,    1,    3,    1,    0,    3,    1,
-    1,    1,    1,    1,    0,    2,    2,    2,    2,    1,
-    1,    1,    1,    3,    0,    4,    1,    3,    1,    3,
-    0,    4,    1,    3,    1,    3,    0,    4,    1,    3,
-    0,    4,    1,    3,    1,    2,    1,    1,    1,    1,
-    1,
+    1,    1,    1,    1,    0,    2,    2,    2,    2,    2,
+    2,    1,    1,    1,    1,    3,    0,    4,    1,    3,
+    1,    3,    0,    4,    1,    3,    1,    3,    0,    4,
+    1,    3,    0,    4,    1,    3,    1,    2,    1,    1,
+    1,    1,    1,
 };
 #if defined(__cplusplus) || defined(__STDC__)
 const short yydefred[] =
@@ -310,19 +314,19 @@ short yydefred[] =
 #endif
        {                                      0,
     0,   13,   18,   14,   16,    3,    0,    0,    0,    0,
-    0,    1,    0,   11,    0,    4,    0,    0,    0,   65,
-    0,   63,   71,    0,   69,   81,    0,   79,   77,    0,
-   75,    2,   90,   89,   88,   87,   91,    0,   85,    0,
-   83,    0,    0,   12,    0,   36,   33,   34,   35,   32,
-    0,   30,    0,   67,    0,   53,   52,   51,   50,   54,
+    0,    1,    0,   11,    0,    4,    0,    0,    0,   67,
+    0,   65,   73,    0,   71,   83,    0,   81,   79,    0,
+   77,    2,   92,   91,   90,   89,   93,    0,   87,    0,
+   85,    0,    0,   12,    0,   36,   33,   34,   35,   32,
+    0,   30,    0,   69,    0,   53,   52,   51,   50,   54,
    48,   47,   45,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,   86,    0,    0,    0,   27,    0,    0,    0,
-   23,    0,   31,    0,    0,    0,    0,   64,    0,   70,
-    0,   80,    0,   76,   84,    0,    0,   24,   25,   26,
-   21,   68,   49,   46,    0,   62,   61,   60,   41,   40,
-   73,    0,    0,    0,   28,    0,    0,   37,   55,    0,
-    0,    0,    0,    0,   42,   74,   38,   56,   57,   58,
-   59,   39,
+    0,    0,   88,    0,    0,    0,   27,    0,    0,    0,
+   23,    0,   31,    0,    0,    0,    0,   66,    0,   72,
+    0,   82,    0,   78,   86,    0,    0,   24,   25,   26,
+   21,   70,   49,   46,    0,   64,   63,   62,   41,   40,
+   75,    0,    0,    0,   28,    0,    0,   37,   55,    0,
+    0,    0,    0,    0,   42,   76,   38,   56,   57,   58,
+   59,   60,   61,   39,
 };
 #if defined(__cplusplus) || defined(__STDC__)
 const short yydgoto[] =
@@ -341,122 +345,118 @@ const short yysindex[] =
 #else
 short yysindex[] =
 #endif
-       {                                   -239,
- -264,    0,    0,    0,    0,    0, -247, -240, -236, -235,
- -239,    0,  307,    0,  -31,    0,  328,  307,  320,    0,
-   -9,    0,    0,   -8,    0,    0,   -4,    0,    0,    2,
-    0,    0,    0,    0,    0,    0,    0, -242,    0,  294,
-    0,   -3, -226,    0,   11,    0,    0,    0,    0,    0,
- -217,    0,   17,    0,   20,    0,    0,    0,    0,    0,
-    0,    0,    0,   21,    5, -247,    6, -240,    7, -236,
-    8, -235,    0,  307,   13,  -32,    0, -191, -190, -189,
-    0,  -31,    0,  328, -210,  320,  328,    0,  -33,    0,
-  307,    0,  320,    0,    0,  328, -192,    0,    0,    0,
-    0,    0,    0,    0,   17,    0,    0,    0,    0,    0,
-    0,   34,   20,   21,    0,  320,   35,    0,    0, -243,
-  -33,   21, -192,  -27,    0,    0,    0,    0,    0,    0,
-    0,    0,};
+       {                                   -229,
+ -256,    0,    0,    0,    0,    0, -237, -234, -226, -225,
+ -229,    0,   62,    0,  -33,    0,   88,   62,  114,    0,
+  -15,    0,    0,  -12,    0,    0,   -5,    0,    0,   -4,
+    0,    0,    0,    0,    0,    0,    0, -244,    0,  -28,
+    0,  -36, -204,    0,   14,    0,    0,    0,    0,    0,
+ -219,    0,   19,    0,   20,    0,    0,    0,    0,    0,
+    0,    0,    0,   21,    5, -237,    6, -234,    7, -226,
+    8, -225,    0,   62,   12,  -21,    0, -192, -191, -187,
+    0,  -33,    0,   88, -201,  114,   88,    0,  276,    0,
+   62,    0,  114,    0,    0,   88, -189,    0,    0,    0,
+    0,    0,    0,    0,   19,    0,    0,    0,    0,    0,
+    0,   33,   20,   21,    0,  114,   36,    0,    0, -247,
+  276,   21, -189,  -29,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,};
 #if defined(__cplusplus) || defined(__STDC__)
 const short yyrindex[] =
 #else
 short yyrindex[] =
 #endif
-       {                                    342,
+       {                                    140,
     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-  342,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-  139,    0,    0,  162,    0,    0,  185,    0,    0,  208,
+  140,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+  156,    0,    0,  181,    0,    0,  206,    0,    0,  236,
     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    1,    0,    0,  236,    0,    0,    0,    0,    0,
-    0,    0,  -30,    0,  -26,    0,    0,    0,    0,    0,
-    0,    0,    0,  -25,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,  260,    0,    0,    0,    0,    0,
+    0,    1,    0,    0,  261,    0,    0,    0,    0,    0,
+    0,    0,  -25,    0,  -11,    0,    0,    0,    0,    0,
+    0,    0,    0,   -3,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,  300,    0,    0,    0,    0,    0,
     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     0,    0,    0,    0,    0,    0,  -20,    0,    0,    0,
-    0,    0,    0,    0,   24,    0,    0,    0,    0,    0,
-    0,   47,   70,   93,    0,    0,  116,    0,    0,    0,
-    0,  271,  -20,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,};
+    0,    0,    0,    0,   26,    0,    0,    0,    0,    0,
+    0,   52,   78,  104,    0,    0,  130,    0,    0,    0,
+    0,  274,  -20,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,};
 #if defined(__cplusplus) || defined(__STDC__)
 const short yygindex[] =
 #else
 short yygindex[] =
 #endif
        {                                      0,
-  -39,   32,   -1,    3,  -84,   48,   74,  -14,    0,    0,
-    0,    0,    0,    0,    0,    0,    9,    0,    0,  -12,
-    0,    0,   -6,    0,    4,  -36,    0,    0,  -62,    0,
-    0,   26,    0,   27,    0,    0,   22,    0,   28,    0,
-   23,
+  -39,   31,   -2,    2,  -87,   48,   76,  -16,    0,    0,
+    0,    0,    0,    0,    0,    0,    9,    0,    0,  -14,
+    0,    0,   -7,    0,   10,  -31,    0,    0, -109,    0,
+    0,   24,    0,   25,    0,    0,   27,    0,   28,    0,
+   22,
 };
-#define YYTABLESIZE 615
+#define YYTABLESIZE 580
 #if defined(__cplusplus) || defined(__STDC__)
 const short yytable[] =
 #else
 short yytable[] =
 #endif
-       {                                     109,
-   22,   43,   19,   55,   53,  109,   15,   17,  114,   16,
-   20,   84,   43,  106,  107,   33,    1,   23,   34,   35,
-   36,   26,   29,   66,    2,    3,    4,    5,   97,  108,
-   37,  122,   81,   22,    6,    7,    8,    9,   10,   79,
-   46,   80,   47,   48,   22,   49,   72,   56,   66,   68,
-   57,   58,   59,   70,   82,   50,   66,   78,  126,   72,
-   84,  132,   60,   74,   86,   87,   89,   91,   93,   82,
-   96,   98,   99,  100,  105,  116,  113,  121,  123,   72,
-  125,   66,   83,  103,   32,   73,  127,  102,  104,  115,
-  101,   88,   78,   94,   90,    0,   95,   92,    0,    0,
-    0,    0,   82,    0,   72,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,   29,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,   78,    0,   82,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    8,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,   29,    0,
-   78,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    9,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    8,    0,   29,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    7,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    9,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,   10,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    7,    0,    0,
-    0,    0,    0,  106,  107,    0,    0,   42,   19,  106,
-  107,    0,   15,   17,    0,   20,   43,   43,    0,  108,
-   10,  128,  129,  130,  131,  108,    0,    0,   43,   43,
-   43,   43,   43,    0,    0,    0,   22,    0,   22,    6,
-    0,   22,   22,   22,   22,   22,   22,   22,   20,    0,
-    0,    0,    0,   22,   22,   22,   22,   22,   22,   66,
-    0,   66,    0,    0,   66,   66,   66,   66,   66,   66,
-   66,    0,    6,    0,    0,    0,   66,   66,   66,   66,
-   66,   66,   72,   44,   72,    0,    0,   72,   72,   72,
-   72,   72,   72,   72,    0,    0,    0,    0,    0,   72,
-   72,   72,   72,   72,   72,   82,   51,   82,    0,    0,
-   82,   82,   82,   82,   82,   82,   82,   74,    0,   38,
-    0,    0,   82,   82,   82,   82,   82,   82,   78,    0,
-   78,    0,   61,   78,   78,   78,   78,   78,   78,   78,
-   51,    0,    0,    0,    0,   78,   78,   78,   78,   78,
-   78,   29,    0,   29,    5,    0,   29,   29,   29,   29,
-   29,   29,   29,    0,    0,    0,    0,    0,   29,   29,
-   29,   29,   29,   29,    8,    0,    8,    0,    0,    8,
-    8,    8,    8,    8,    8,    8,    0,    0,    0,    0,
-    0,    8,    8,    8,    8,    8,    8,    9,    0,    9,
-    0,    0,    9,    9,    9,    9,    9,    9,    9,    0,
-    0,    0,    0,    0,    9,    9,    9,    9,    9,    9,
-    7,    0,    7,    0,    0,    7,    7,    7,    7,    7,
-    7,    7,    0,    0,    0,    0,    0,    7,    7,    7,
-    7,    7,    7,   10,    0,   10,    0,    0,   10,   10,
-   10,   10,   10,   10,   10,    0,    0,    0,    0,    0,
-   10,   10,   10,   10,   10,   10,    0,    0,    0,    0,
-    0,   20,    0,   20,    0,    0,   20,   20,   20,   20,
-   20,   20,   20,    0,    0,    0,    0,    0,   20,   20,
-   20,   20,   20,   20,    0,    6,    0,    6,    0,    0,
-    6,    6,    6,    6,    6,    6,    6,   44,   44,    0,
-    0,    0,    6,    6,    6,    6,    6,    6,    0,   44,
-   44,   44,   44,   44,    0,    0,    0,    0,    0,    0,
-    0,   46,    0,   47,   48,    0,   49,    0,    0,    0,
-    0,    0,    0,    0,   33,    0,   50,   34,   35,   36,
-    0,    0,    0,    0,    0,    0,    0,   56,    0,   37,
-   57,   58,   59,    0,    0,   46,    0,   47,   48,    0,
-   49,    0,   60,    0,    0,    0,    0,    0,    0,    5,
-   50,    0,    5,    5,    5,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    5,
+       {                                      43,
+   22,   55,   53,  109,   51,  114,   79,   19,   80,  106,
+  107,  126,   43,   33,  134,   74,   34,   35,   36,   16,
+   20,   15,   84,   23,   78,   68,    1,  108,  122,   17,
+   37,   26,   29,   22,    2,    3,    4,    5,   46,   97,
+   47,   48,   66,   49,   22,   68,    6,    7,    8,    9,
+   10,   74,   70,   72,   81,   50,   56,   82,   68,   57,
+   58,   59,   84,   74,   86,   87,   89,   91,   93,   96,
+   98,   99,  105,   60,  113,  100,  121,   84,  116,  123,
+  125,   83,  103,   68,   74,   73,   32,  104,  115,   88,
+  101,  127,   90,  102,   38,   95,    0,   92,   94,    0,
+    0,    0,    0,   80,    0,    0,    0,    0,    0,   74,
+   84,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+   51,    0,    0,    0,    0,    0,    0,    0,    0,   29,
+    0,    0,    0,    0,    0,   84,   80,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,   61,    0,    0,    0,
+    0,    0,    0,    0,    0,    8,    0,    0,    0,    0,
+    0,   80,   29,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    5,    0,    0,    0,    0,    0,    0,    0,
+    9,    0,    0,    0,    0,    0,    0,   29,    8,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    7,    0,    0,    0,    0,
+    0,    0,    0,    9,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,   42,    0,  106,  107,   46,
+    0,   47,   48,   19,   49,   10,   43,   43,    7,  128,
+  129,  130,  131,  132,  133,  108,   50,   15,   43,   43,
+   43,   43,   43,   43,   43,   17,   22,    0,   22,    0,
+   20,   22,   22,   22,   22,   22,   22,   22,   10,    0,
+    0,    0,    0,    0,    0,   22,   22,   22,   22,   22,
+   22,   68,    0,   68,    0,    0,   68,   68,   68,   68,
+   68,   68,   68,   20,    0,    0,    0,    0,    0,    6,
+   68,   68,   68,   68,   68,   68,   44,   74,  109,   74,
+    0,    0,   74,   74,   74,   74,   74,   74,   74,   33,
+    0,    0,   34,   35,   36,    0,   74,   74,   74,   74,
+   74,   74,    6,   84,    0,   84,   37,    0,   84,   84,
+   84,   84,   84,   84,   84,   46,    0,   47,   48,    0,
+   49,    0,   84,   84,   84,   84,   84,   84,    0,   80,
+    0,   80,   50,    0,   80,   80,   80,   80,   80,   80,
+   80,   56,    0,    0,   57,   58,   59,    0,   80,   80,
+   80,   80,   80,   80,    0,   29,    0,   29,   60,    0,
+   29,   29,   29,   29,   29,   29,   29,    5,    0,    0,
+    5,    5,    5,    0,   29,   29,   29,   29,   29,   29,
+    0,    8,    0,    8,    5,    0,    8,    8,    8,    8,
+    8,    8,    8,    0,    0,    0,    0,    0,    0,    0,
+    8,    8,    8,    8,    8,    8,    9,    0,    9,    0,
+    0,    9,    9,    9,    9,    9,    9,    9,    0,    0,
+    0,    0,    0,    0,    0,    9,    9,    9,    9,    9,
+    9,    7,    0,    7,    0,    0,    7,    7,    7,    7,
+    7,    7,    7,    0,    0,    0,    0,    0,    0,    0,
+    7,    7,    7,    7,    7,    7,    0,    0,    0,    0,
+    0,   10,    0,   10,    0,    0,   10,   10,   10,   10,
+   10,   10,   10,    0,    0,    0,    0,    0,    0,    0,
+   10,   10,   10,   10,   10,   10,   20,    0,   20,    0,
+    0,   20,   20,   20,   20,   20,   20,   20,    0,    0,
+   44,   44,  106,  107,    0,   20,   20,   20,   20,   20,
+   20,    0,   44,   44,   44,   44,   44,   44,   44,    0,
+  108,    0,    0,    0,    0,    6,    0,    6,    0,    0,
+    6,    6,    6,    6,    6,    6,    6,    0,    0,    0,
+    0,    0,    0,    0,    6,    6,    6,    6,    6,    6,
 };
 #if defined(__cplusplus) || defined(__STDC__)
 const short yycheck[] =
@@ -464,74 +464,70 @@ const short yycheck[] =
 short yycheck[] =
 #endif
        {                                      33,
-    0,   33,   33,   18,   17,   33,   33,   33,   93,  274,
-  258,   44,   33,  257,  258,  258,  256,  258,  261,  262,
-  263,  258,  258,    0,  264,  265,  266,  267,   61,  273,
-  273,  116,  259,   33,  274,  275,  276,  277,  278,   43,
-  258,   45,  260,  261,   44,  263,    0,  258,   58,   58,
-  261,  262,  263,   58,   44,  273,   33,   61,  121,   58,
-   44,  124,  273,   44,   44,   61,   61,   61,   61,    0,
-   58,  263,  263,  263,   87,  268,   91,   44,   44,   33,
-  120,   58,   51,   85,   11,   38,  123,   84,   86,   96,
-   82,   66,    0,   72,   68,   -1,   74,   70,   -1,   -1,
-   -1,   -1,   33,   -1,   58,   -1,   -1,   -1,   -1,   -1,
+    0,   18,   17,   33,   33,   93,   43,   33,   45,  257,
+  258,  121,   33,  258,  124,   44,  261,  262,  263,  276,
+  258,   33,   44,  258,   61,    0,  256,  275,  116,   33,
+  275,  258,  258,   33,  264,  265,  266,  267,  258,   61,
+  260,  261,   58,  263,   44,   58,  276,  277,  278,  279,
+  280,    0,   58,   58,  259,  275,  258,   44,   33,  261,
+  262,  263,   44,   44,   44,   61,   61,   61,   61,   58,
+  263,  263,   87,  275,   91,  263,   44,    0,  268,   44,
+  120,   51,   85,   58,   33,   38,   11,   86,   96,   66,
+   82,  123,   68,   84,   33,   74,   -1,   70,   72,   -1,
+   -1,   -1,   -1,    0,   -1,   -1,   -1,   -1,   -1,   58,
+   33,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   33,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,    0,
+   -1,   -1,   -1,   -1,   -1,   58,   33,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   33,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,    0,   -1,   -1,   -1,   -1,
+   -1,   58,   33,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   33,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+    0,   -1,   -1,   -1,   -1,   -1,   -1,   58,   33,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    -1,   -1,   -1,   -1,   -1,    0,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   33,   -1,   58,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,    0,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   33,   -1,
-   58,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,    0,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   33,   -1,   58,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,    0,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   33,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,    0,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   33,   -1,   -1,
-   -1,   -1,   -1,  257,  258,   -1,   -1,  259,  259,  257,
-  258,   -1,  259,  259,   -1,    0,  257,  258,   -1,  273,
-   33,  269,  270,  271,  272,  273,   -1,   -1,  269,  270,
-  271,  272,  273,   -1,   -1,   -1,  256,   -1,  258,    0,
-   -1,  261,  262,  263,  264,  265,  266,  267,   33,   -1,
-   -1,   -1,   -1,  273,  274,  275,  276,  277,  278,  256,
-   -1,  258,   -1,   -1,  261,  262,  263,  264,  265,  266,
-  267,   -1,   33,   -1,   -1,   -1,  273,  274,  275,  276,
-  277,  278,  256,   33,  258,   -1,   -1,  261,  262,  263,
-  264,  265,  266,  267,   -1,   -1,   -1,   -1,   -1,  273,
-  274,  275,  276,  277,  278,  256,   33,  258,   -1,   -1,
-  261,  262,  263,  264,  265,  266,  267,   44,   -1,   33,
-   -1,   -1,  273,  274,  275,  276,  277,  278,  256,   -1,
-  258,   -1,   33,  261,  262,  263,  264,  265,  266,  267,
-   33,   -1,   -1,   -1,   -1,  273,  274,  275,  276,  277,
-  278,  256,   -1,  258,   33,   -1,  261,  262,  263,  264,
-  265,  266,  267,   -1,   -1,   -1,   -1,   -1,  273,  274,
-  275,  276,  277,  278,  256,   -1,  258,   -1,   -1,  261,
-  262,  263,  264,  265,  266,  267,   -1,   -1,   -1,   -1,
-   -1,  273,  274,  275,  276,  277,  278,  256,   -1,  258,
-   -1,   -1,  261,  262,  263,  264,  265,  266,  267,   -1,
-   -1,   -1,   -1,   -1,  273,  274,  275,  276,  277,  278,
-  256,   -1,  258,   -1,   -1,  261,  262,  263,  264,  265,
-  266,  267,   -1,   -1,   -1,   -1,   -1,  273,  274,  275,
-  276,  277,  278,  256,   -1,  258,   -1,   -1,  261,  262,
-  263,  264,  265,  266,  267,   -1,   -1,   -1,   -1,   -1,
-  273,  274,  275,  276,  277,  278,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   33,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,  259,   -1,  257,  258,  258,
+   -1,  260,  261,  259,  263,    0,  257,  258,   33,  269,
+  270,  271,  272,  273,  274,  275,  275,  259,  269,  270,
+  271,  272,  273,  274,  275,  259,  256,   -1,  258,   -1,
+    0,  261,  262,  263,  264,  265,  266,  267,   33,   -1,
+   -1,   -1,   -1,   -1,   -1,  275,  276,  277,  278,  279,
+  280,  256,   -1,  258,   -1,   -1,  261,  262,  263,  264,
+  265,  266,  267,   33,   -1,   -1,   -1,   -1,   -1,    0,
+  275,  276,  277,  278,  279,  280,   33,  256,   33,  258,
+   -1,   -1,  261,  262,  263,  264,  265,  266,  267,  258,
+   -1,   -1,  261,  262,  263,   -1,  275,  276,  277,  278,
+  279,  280,   33,  256,   -1,  258,  275,   -1,  261,  262,
+  263,  264,  265,  266,  267,  258,   -1,  260,  261,   -1,
+  263,   -1,  275,  276,  277,  278,  279,  280,   -1,  256,
+   -1,  258,  275,   -1,  261,  262,  263,  264,  265,  266,
+  267,  258,   -1,   -1,  261,  262,  263,   -1,  275,  276,
+  277,  278,  279,  280,   -1,  256,   -1,  258,  275,   -1,
+  261,  262,  263,  264,  265,  266,  267,  258,   -1,   -1,
+  261,  262,  263,   -1,  275,  276,  277,  278,  279,  280,
+   -1,  256,   -1,  258,  275,   -1,  261,  262,  263,  264,
+  265,  266,  267,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+  275,  276,  277,  278,  279,  280,  256,   -1,  258,   -1,
+   -1,  261,  262,  263,  264,  265,  266,  267,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,  275,  276,  277,  278,  279,
+  280,  256,   -1,  258,   -1,   -1,  261,  262,  263,  264,
+  265,  266,  267,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+  275,  276,  277,  278,  279,  280,   -1,   -1,   -1,   -1,
    -1,  256,   -1,  258,   -1,   -1,  261,  262,  263,  264,
-  265,  266,  267,   -1,   -1,   -1,   -1,   -1,  273,  274,
-  275,  276,  277,  278,   -1,  256,   -1,  258,   -1,   -1,
-  261,  262,  263,  264,  265,  266,  267,  257,  258,   -1,
-   -1,   -1,  273,  274,  275,  276,  277,  278,   -1,  269,
-  270,  271,  272,  273,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,  258,   -1,  260,  261,   -1,  263,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,  258,   -1,  273,  261,  262,  263,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,  258,   -1,  273,
-  261,  262,  263,   -1,   -1,  258,   -1,  260,  261,   -1,
-  263,   -1,  273,   -1,   -1,   -1,   -1,   -1,   -1,  258,
-  273,   -1,  261,  262,  263,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,  273,
+  265,  266,  267,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+  275,  276,  277,  278,  279,  280,  256,   -1,  258,   -1,
+   -1,  261,  262,  263,  264,  265,  266,  267,   -1,   -1,
+  257,  258,  257,  258,   -1,  275,  276,  277,  278,  279,
+  280,   -1,  269,  270,  271,  272,  273,  274,  275,   -1,
+  275,   -1,   -1,   -1,   -1,  256,   -1,  258,   -1,   -1,
+  261,  262,  263,  264,  265,  266,  267,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,  275,  276,  277,  278,  279,  280,
 };
 #define YYFINAL 11
 #ifndef YYDEBUG
 #define YYDEBUG 0
 #endif
-#define YYMAXTOKEN 279
+#define YYMAXTOKEN 281
 #if YYDEBUG
 #if defined(__cplusplus) || defined(__STDC__)
 const char * const yyname[] =
@@ -548,8 +544,8 @@ char *yyname[] =
 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,0,0,0,0,0,0,0,0,0,0,0,0,0,
 "COMMAND","ALIAS","DEFVAR","NTWKADDR","NETGROUP","USERGROUP","WORD","DEFAULTS",
 "DEFAULTS_HOST","DEFAULTS_USER","DEFAULTS_RUNAS","RUNAS","NOPASSWD","PASSWD",
-"NOEXEC","EXEC","ALL","COMMENT","HOSTALIAS","CMNDALIAS","USERALIAS",
-"RUNASALIAS","ERROR",
+"NOEXEC","EXEC","TRACE","NOTRACE","ALL","COMMENT","HOSTALIAS","CMNDALIAS",
+"USERALIAS","RUNASALIAS","ERROR",
 };
 #if defined(__cplusplus) || defined(__STDC__)
 const char * const yyrule[] =
@@ -616,6 +612,8 @@ char *yyrule[] =
 "cmndtag : cmndtag PASSWD",
 "cmndtag : cmndtag NOEXEC",
 "cmndtag : cmndtag EXEC",
+"cmndtag : cmndtag TRACE",
+"cmndtag : cmndtag NOTRACE",
 "cmnd : ALL",
 "cmnd : ALIAS",
 "cmnd : COMMAND",
@@ -674,7 +672,7 @@ short *yyss;
 short *yysslim;
 YYSTYPE *yyvs;
 int yystacksize;
-#line 890 "parse.yacc"
+#line 911 "parse.yacc"
 
 #define MOREALIASES (32)
 aliasinfo *aliases = NULL;
@@ -870,6 +868,12 @@ list_matches()
        else if (cm_list[count].noexecve == FALSE && def_noexec)
            (void) fputs("EXEC: ", stdout);
 
+       /* Is tracing enabled? */
+       if (cm_list[count].trace == TRUE && !def_trace)
+           (void) fputs("TRACE: ", stdout);
+       else if (cm_list[count].trace == FALSE && def_trace)
+           (void) fputs("NOTRACE: ", stdout);
+
        /* Is a password required? */
        if (cm_list[count].nopasswd == TRUE && def_authenticate)
            (void) fputs("NOPASSWD: ", stdout);
@@ -1003,6 +1007,7 @@ expand_match_list()
     cm_list[cm_list_len].runas = cm_list[cm_list_len].cmnd = NULL;
     cm_list[cm_list_len].nopasswd = FALSE;
     cm_list[cm_list_len].noexecve = FALSE;
+    cm_list[cm_list_len].trace    = FALSE;
 }
 
 /*
@@ -1032,7 +1037,7 @@ init_parser()
     if (printmatches == TRUE)
        expand_match_list();
 }
-#line 984 "sudo.tab.c"
+#line 989 "sudo.tab.c"
 /* allocate initial stack or double stack size, up to YYMAXDEPTH */
 #if defined(__cplusplus) || defined(__STDC__)
 static int yygrowstack(void)
@@ -1226,85 +1231,85 @@ yyreduce:
     switch (yyn)
     {
 case 3:
-#line 275 "parse.yacc"
+#line 279 "parse.yacc"
 { ; }
 break;
 case 4:
-#line 277 "parse.yacc"
+#line 281 "parse.yacc"
 { yyerrok; }
 break;
 case 5:
-#line 278 "parse.yacc"
+#line 282 "parse.yacc"
 { push; }
 break;
 case 6:
-#line 278 "parse.yacc"
+#line 282 "parse.yacc"
 {
                            while (top && user_matches != TRUE)
                                pop;
                        }
 break;
 case 7:
-#line 283 "parse.yacc"
+#line 287 "parse.yacc"
 { ; }
 break;
 case 8:
-#line 285 "parse.yacc"
+#line 289 "parse.yacc"
 { ; }
 break;
 case 9:
-#line 287 "parse.yacc"
+#line 291 "parse.yacc"
 { ; }
 break;
 case 10:
-#line 289 "parse.yacc"
+#line 293 "parse.yacc"
 { ; }
 break;
 case 11:
-#line 291 "parse.yacc"
+#line 295 "parse.yacc"
 { ; }
 break;
 case 13:
-#line 297 "parse.yacc"
+#line 301 "parse.yacc"
 {
                            defaults_matches = TRUE;
                        }
 break;
 case 14:
-#line 300 "parse.yacc"
+#line 304 "parse.yacc"
 { push; }
 break;
 case 15:
-#line 300 "parse.yacc"
+#line 304 "parse.yacc"
 {
                            defaults_matches = user_matches;
                            pop;
                        }
 break;
 case 16:
-#line 304 "parse.yacc"
+#line 308 "parse.yacc"
 { push; }
 break;
 case 17:
-#line 304 "parse.yacc"
+#line 308 "parse.yacc"
 {
                            defaults_matches = yyvsp[0].BOOLEAN == TRUE;
                            pop;
                        }
 break;
 case 18:
-#line 308 "parse.yacc"
+#line 312 "parse.yacc"
 { push; }
 break;
 case 19:
-#line 308 "parse.yacc"
+#line 312 "parse.yacc"
 {
                            defaults_matches = host_matches;
                            pop;
                        }
 break;
 case 22:
-#line 318 "parse.yacc"
+#line 322 "parse.yacc"
 {
                            if (defaults_matches == TRUE &&
                                !set_default(yyvsp[0].string, NULL, TRUE)) {
@@ -1315,7 +1320,7 @@ case 22:
                        }
 break;
 case 23:
-#line 326 "parse.yacc"
+#line 330 "parse.yacc"
 {
                            if (defaults_matches == TRUE &&
                                !set_default(yyvsp[0].string, NULL, FALSE)) {
@@ -1326,7 +1331,7 @@ case 23:
                        }
 break;
 case 24:
-#line 334 "parse.yacc"
+#line 338 "parse.yacc"
 {
                            if (defaults_matches == TRUE &&
                                !set_default(yyvsp[-2].string, yyvsp[0].string, TRUE)) {
@@ -1338,7 +1343,7 @@ case 24:
                        }
 break;
 case 25:
-#line 343 "parse.yacc"
+#line 347 "parse.yacc"
 {
                            if (defaults_matches == TRUE &&
                                !set_default(yyvsp[-2].string, yyvsp[0].string, '+')) {
@@ -1350,7 +1355,7 @@ case 25:
                        }
 break;
 case 26:
-#line 352 "parse.yacc"
+#line 356 "parse.yacc"
 {
                            if (defaults_matches == TRUE &&
                                !set_default(yyvsp[-2].string, yyvsp[0].string, '-')) {
@@ -1362,7 +1367,7 @@ case 26:
                        }
 break;
 case 29:
-#line 367 "parse.yacc"
+#line 371 "parse.yacc"
 {
                            /*
                             * We already did a push if necessary in
@@ -1373,28 +1378,29 @@ case 29:
                            runas_matches = UNSPEC;
                            no_passwd = def_authenticate ? UNSPEC : TRUE;
                            no_execve = def_noexec ? TRUE : UNSPEC;
+                           trace_cmnd = def_trace ? TRUE : UNSPEC;
                        }
 break;
 case 30:
-#line 380 "parse.yacc"
+#line 385 "parse.yacc"
 {
                            SETMATCH(host_matches, yyvsp[0].BOOLEAN);
                        }
 break;
 case 31:
-#line 383 "parse.yacc"
+#line 388 "parse.yacc"
 {
                            SETNMATCH(host_matches, yyvsp[0].BOOLEAN);
                        }
 break;
 case 32:
-#line 388 "parse.yacc"
+#line 393 "parse.yacc"
 {
                            yyval.BOOLEAN = TRUE;
                        }
 break;
 case 33:
-#line 391 "parse.yacc"
+#line 396 "parse.yacc"
 {
                            if (addr_matches(yyvsp[0].string))
                                yyval.BOOLEAN = TRUE;
@@ -1404,7 +1410,7 @@ case 33:
                        }
 break;
 case 34:
-#line 398 "parse.yacc"
+#line 403 "parse.yacc"
 {
                            if (netgr_matches(yyvsp[0].string, user_host, user_shost, NULL))
                                yyval.BOOLEAN = TRUE;
@@ -1414,7 +1420,7 @@ case 34:
                        }
 break;
 case 35:
-#line 405 "parse.yacc"
+#line 410 "parse.yacc"
 {
                            if (hostname_matches(user_shost, user_host, yyvsp[0].string) == 0)
                                yyval.BOOLEAN = TRUE;
@@ -1424,7 +1430,7 @@ case 35:
                        }
 break;
 case 36:
-#line 412 "parse.yacc"
+#line 417 "parse.yacc"
 {
                            aliasinfo *aip = find_alias(yyvsp[0].string, HOST_ALIAS);
 
@@ -1449,7 +1455,7 @@ case 36:
                        }
 break;
 case 39:
-#line 440 "parse.yacc"
+#line 445 "parse.yacc"
 {
                            /*
                             * Push the entry onto the stack if it is worth
@@ -1479,13 +1485,13 @@ case 39:
                        }
 break;
 case 40:
-#line 469 "parse.yacc"
+#line 474 "parse.yacc"
 {
                            SETMATCH(cmnd_matches, yyvsp[0].BOOLEAN);
                        }
 break;
 case 41:
-#line 472 "parse.yacc"
+#line 477 "parse.yacc"
 {
                            if (printmatches == TRUE) {
                                if (in_alias == TRUE)
@@ -1497,13 +1503,13 @@ case 41:
                        }
 break;
 case 42:
-#line 480 "parse.yacc"
+#line 485 "parse.yacc"
 {
                            SETNMATCH(cmnd_matches, yyvsp[0].BOOLEAN);
                        }
 break;
 case 43:
-#line 485 "parse.yacc"
+#line 490 "parse.yacc"
 {
                            if (printmatches == TRUE && host_matches == TRUE &&
                                user_matches == TRUE) {
@@ -1531,17 +1537,17 @@ case 43:
                        }
 break;
 case 44:
-#line 510 "parse.yacc"
+#line 515 "parse.yacc"
 {
                            runas_matches = yyvsp[0].BOOLEAN;
                        }
 break;
 case 45:
-#line 515 "parse.yacc"
+#line 520 "parse.yacc"
 { ; }
 break;
 case 46:
-#line 516 "parse.yacc"
+#line 521 "parse.yacc"
 {
                            /* Later entries override earlier ones. */
                            if (yyvsp[0].BOOLEAN != NOMATCH)
@@ -1551,11 +1557,11 @@ case 46:
                        }
 break;
 case 47:
-#line 525 "parse.yacc"
+#line 530 "parse.yacc"
 { ; }
 break;
 case 48:
-#line 526 "parse.yacc"
+#line 531 "parse.yacc"
 {
                            if (printmatches == TRUE) {
                                if (in_alias == TRUE)
@@ -1567,14 +1573,14 @@ case 48:
                        }
 break;
 case 49:
-#line 534 "parse.yacc"
+#line 539 "parse.yacc"
 {
                            /* Set $$ to the negation of runasuser */
                            yyval.BOOLEAN = (yyvsp[0].BOOLEAN == NOMATCH ? NOMATCH : ! yyvsp[0].BOOLEAN);
                        }
 break;
 case 50:
-#line 540 "parse.yacc"
+#line 545 "parse.yacc"
 {
                            if (printmatches == TRUE) {
                                if (in_alias == TRUE)
@@ -1592,7 +1598,7 @@ case 50:
                        }
 break;
 case 51:
-#line 555 "parse.yacc"
+#line 560 "parse.yacc"
 {
                            if (printmatches == TRUE) {
                                if (in_alias == TRUE)
@@ -1610,7 +1616,7 @@ case 51:
                        }
 break;
 case 52:
-#line 570 "parse.yacc"
+#line 575 "parse.yacc"
 {
                            if (printmatches == TRUE) {
                                if (in_alias == TRUE)
@@ -1628,7 +1634,7 @@ case 52:
                        }
 break;
 case 53:
-#line 585 "parse.yacc"
+#line 590 "parse.yacc"
 {
                            aliasinfo *aip = find_alias(yyvsp[0].string, RUNAS_ALIAS);
 
@@ -1661,7 +1667,7 @@ case 53:
                        }
 break;
 case 54:
-#line 615 "parse.yacc"
+#line 620 "parse.yacc"
 {
                            if (printmatches == TRUE) {
                                if (in_alias == TRUE)
@@ -1674,9 +1680,9 @@ case 54:
                        }
 break;
 case 55:
-#line 627 "parse.yacc"
+#line 632 "parse.yacc"
 {
-                           /* Inherit {NOPASSWD,PASSWD,NOEXEC,EXEC} status. */
+                           /* Inherit tags. */
                            if (printmatches == TRUE && host_matches == TRUE &&
                                user_matches == TRUE) {
                                if (no_passwd == TRUE)
@@ -1687,11 +1693,15 @@ case 55:
                                    cm_list[cm_list_len].noexecve = TRUE;
                                else
                                    cm_list[cm_list_len].noexecve = FALSE;
+                               if (trace_cmnd == TRUE)
+                                   cm_list[cm_list_len].trace = TRUE;
+                               else
+                                   cm_list[cm_list_len].trace = FALSE;
                            }
                        }
 break;
 case 56:
-#line 641 "parse.yacc"
+#line 650 "parse.yacc"
 {
                            no_passwd = TRUE;
                            if (printmatches == TRUE && host_matches == TRUE &&
@@ -1700,7 +1710,7 @@ case 56:
                        }
 break;
 case 57:
-#line 647 "parse.yacc"
+#line 656 "parse.yacc"
 {
                            no_passwd = FALSE;
                            if (printmatches == TRUE && host_matches == TRUE &&
@@ -1709,7 +1719,7 @@ case 57:
                        }
 break;
 case 58:
-#line 653 "parse.yacc"
+#line 662 "parse.yacc"
 {
                            no_execve = TRUE;
                            if (printmatches == TRUE && host_matches == TRUE &&
@@ -1718,7 +1728,7 @@ case 58:
                        }
 break;
 case 59:
-#line 659 "parse.yacc"
+#line 668 "parse.yacc"
 {
                            no_execve = FALSE;
                            if (printmatches == TRUE && host_matches == TRUE &&
@@ -1727,7 +1737,25 @@ case 59:
                        }
 break;
 case 60:
-#line 667 "parse.yacc"
+#line 674 "parse.yacc"
+{
+                           trace_cmnd = TRUE;
+                           if (printmatches == TRUE && host_matches == TRUE &&
+                               user_matches == TRUE)
+                               cm_list[cm_list_len].trace = TRUE;
+                       }
+break;
+case 61:
+#line 680 "parse.yacc"
+{
+                           trace_cmnd = FALSE;
+                           if (printmatches == TRUE && host_matches == TRUE &&
+                               user_matches == TRUE)
+                               cm_list[cm_list_len].trace = FALSE;
+                       }
+break;
+case 62:
+#line 688 "parse.yacc"
 {
                            if (printmatches == TRUE) {
                                if (in_alias == TRUE)
@@ -1746,8 +1774,8 @@ case 60:
                            safe_cmnd = estrdup(user_cmnd);
                        }
 break;
-case 61:
-#line 684 "parse.yacc"
+case 63:
+#line 705 "parse.yacc"
 {
                            aliasinfo *aip;
 
@@ -1778,8 +1806,8 @@ case 61:
                            free(yyvsp[0].string);
                        }
 break;
-case 62:
-#line 713 "parse.yacc"
+case 64:
+#line 734 "parse.yacc"
 {
                            if (printmatches == TRUE) {
                                if (in_alias == TRUE) {
@@ -1806,12 +1834,12 @@ case 62:
                                free(yyvsp[0].command.args);
                        }
 break;
-case 65:
-#line 744 "parse.yacc"
+case 67:
+#line 765 "parse.yacc"
 { push; }
 break;
-case 66:
-#line 744 "parse.yacc"
+case 68:
+#line 765 "parse.yacc"
 {
                            if ((MATCHED(host_matches) || pedantic) &&
                                !add_alias(yyvsp[-3].string, HOST_ALIAS, host_matches)) {
@@ -1821,8 +1849,8 @@ case 66:
                            pop;
                        }
 break;
-case 71:
-#line 762 "parse.yacc"
+case 73:
+#line 783 "parse.yacc"
 {
                            push;
                            if (printmatches == TRUE) {
@@ -1834,8 +1862,8 @@ case 71:
                             }
                        }
 break;
-case 72:
-#line 771 "parse.yacc"
+case 74:
+#line 792 "parse.yacc"
 {
                            if ((MATCHED(cmnd_matches) || pedantic) &&
                                !add_alias(yyvsp[-3].string, CMND_ALIAS, cmnd_matches)) {
@@ -1849,12 +1877,12 @@ case 72:
                                in_alias = FALSE;
                        }
 break;
-case 73:
-#line 785 "parse.yacc"
+case 75:
+#line 806 "parse.yacc"
 { ; }
 break;
-case 77:
-#line 793 "parse.yacc"
+case 79:
+#line 814 "parse.yacc"
 {
                            if (printmatches == TRUE) {
                                in_alias = TRUE;
@@ -1865,8 +1893,8 @@ case 77:
                            }
                        }
 break;
-case 78:
-#line 801 "parse.yacc"
+case 80:
+#line 822 "parse.yacc"
 {
                            if ((yyvsp[0].BOOLEAN != NOMATCH || pedantic) &&
                                !add_alias(yyvsp[-3].string, RUNAS_ALIAS, yyvsp[0].BOOLEAN)) {
@@ -1879,12 +1907,12 @@ case 78:
                                in_alias = FALSE;
                        }
 break;
-case 81:
-#line 818 "parse.yacc"
+case 83:
+#line 839 "parse.yacc"
 { push; }
 break;
-case 82:
-#line 818 "parse.yacc"
+case 84:
+#line 839 "parse.yacc"
 {
                            if ((MATCHED(user_matches) || pedantic) &&
                                !add_alias(yyvsp[-3].string, USER_ALIAS, user_matches)) {
@@ -1895,20 +1923,20 @@ case 82:
                            free(yyvsp[-3].string);
                        }
 break;
-case 85:
-#line 833 "parse.yacc"
+case 87:
+#line 854 "parse.yacc"
 {
                            SETMATCH(user_matches, yyvsp[0].BOOLEAN);
                        }
 break;
-case 86:
-#line 836 "parse.yacc"
+case 88:
+#line 857 "parse.yacc"
 {
                            SETNMATCH(user_matches, yyvsp[0].BOOLEAN);
                        }
 break;
-case 87:
-#line 841 "parse.yacc"
+case 89:
+#line 862 "parse.yacc"
 {
                            if (userpw_matches(yyvsp[0].string, user_name, sudo_user.pw))
                                yyval.BOOLEAN = TRUE;
@@ -1917,8 +1945,8 @@ case 87:
                            free(yyvsp[0].string);
                        }
 break;
-case 88:
-#line 848 "parse.yacc"
+case 90:
+#line 869 "parse.yacc"
 {
                            if (usergr_matches(yyvsp[0].string, user_name, sudo_user.pw))
                                yyval.BOOLEAN = TRUE;
@@ -1927,8 +1955,8 @@ case 88:
                            free(yyvsp[0].string);
                        }
 break;
-case 89:
-#line 855 "parse.yacc"
+case 91:
+#line 876 "parse.yacc"
 {
                            if (netgr_matches(yyvsp[0].string, NULL, NULL, user_name))
                                yyval.BOOLEAN = TRUE;
@@ -1937,8 +1965,8 @@ case 89:
                            free(yyvsp[0].string);
                        }
 break;
-case 90:
-#line 862 "parse.yacc"
+case 92:
+#line 883 "parse.yacc"
 {
                            aliasinfo *aip = find_alias(yyvsp[0].string, USER_ALIAS);
 
@@ -1962,13 +1990,13 @@ case 90:
                            free(yyvsp[0].string);
                        }
 break;
-case 91:
-#line 884 "parse.yacc"
+case 93:
+#line 905 "parse.yacc"
 {
                            yyval.BOOLEAN = TRUE;
                        }
 break;
-#line 1920 "sudo.tab.c"
+#line 1948 "sudo.tab.c"
     }
     yyssp -= yym;
     yystate = *yyssp;
index 9a0cce10ef482a69a31eff73eed2d6bfdbb27a0a..d94a9234e5f5a28bda9a097b441369a0308c885d 100644 (file)
 #define PASSWD 270
 #define NOEXEC 271
 #define EXEC 272
-#define ALL 273
-#define COMMENT 274
-#define HOSTALIAS 275
-#define CMNDALIAS 276
-#define USERALIAS 277
-#define RUNASALIAS 278
-#define ERROR 279
+#define TRACE 273
+#define NOTRACE 274
+#define ALL 275
+#define COMMENT 276
+#define HOSTALIAS 277
+#define CMNDALIAS 278
+#define USERALIAS 279
+#define RUNASALIAS 280
+#define ERROR 281
 #ifndef YYSTYPE_DEFINED
 #define YYSTYPE_DEFINED
 typedef union {