]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#1304] regen files
authorFrancis Dupont <fdupont@isc.org>
Sat, 12 Sep 2020 16:17:16 +0000 (16:17 +0000)
committerFrancis Dupont <fdupont@isc.org>
Sat, 12 Sep 2020 16:17:16 +0000 (16:17 +0000)
src/bin/agent/agent_lexer.cc
src/bin/agent/agent_parser.cc
src/bin/agent/agent_parser.h
src/bin/agent/location.hh
src/bin/agent/position.hh
src/bin/agent/stack.hh

index d052cc765c3abdd02bbe1cac2febbd85c7dfe1d2..07d4b7ddcec83531699477c01b7b698e241624b8 100644 (file)
@@ -691,8 +691,8 @@ static void yynoreturn yy_fatal_error ( const char* msg  );
 /* %% [3.0] code to copy yytext_ptr to yytext[] goes here, if %array \ */\
        (yy_c_buf_p) = yy_cp;
 /* %% [4.0] data tables for the DFA and the user's section 1 definitions go here */
-#define YY_NUM_RULES 59
-#define YY_END_OF_BUFFER 60
+#define YY_NUM_RULES 62
+#define YY_END_OF_BUFFER 63
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -700,45 +700,46 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static const flex_int16_t yy_accept[342] =
+static const flex_int16_t yy_accept[352] =
     {   0,
-       52,   52,    0,    0,    0,    0,    0,    0,    0,    0,
-       60,   58,   10,   11,   58,    1,   52,   49,   52,   52,
-       58,   51,   50,   58,   58,   58,   58,   58,   45,   46,
-       58,   58,   58,   47,   48,    5,    5,    5,   58,   58,
-       58,   10,   11,    0,    0,   41,    0,    0,    0,    0,
+       55,   55,    0,    0,    0,    0,    0,    0,    0,    0,
+       63,   61,   10,   11,   61,    1,   55,   52,   55,   55,
+       61,   54,   53,   61,   61,   61,   61,   61,   48,   49,
+       61,   61,   61,   50,   51,    5,    5,    5,   61,   61,
+       61,   10,   11,    0,    0,   44,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        1,   52,   52,    0,   51,   52,    3,    2,    6,    0,
-       52,    0,    0,    0,    0,    0,    0,    4,    0,    0,
-        9,    0,   42,    0,    0,    0,   44,    0,    0,    0,
+        0,    0,    0,    1,   55,   55,    0,   54,   55,    3,
+        2,    6,    0,   55,    0,    0,    0,    0,    0,    0,
+        4,    0,    0,    9,    0,   45,    0,    0,    0,   47,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,    0,    0,    0,    0,    0,    2,    0,    0,    0,
-        0,    0,    0,    0,    8,    0,    0,    0,   43,    0,
-        0,    0,    0,   21,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   57,   55,    0,   54,   53,    0,    0,    0,
+        0,    0,    0,    2,    0,    0,    0,    0,    0,    0,
+        0,    8,    0,    0,    0,   46,    0,    0,    0,    0,
+        0,    0,   27,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   60,   58,    0,   57,   56,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   56,   53,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   29,    0,    0,    0,    0,    0,    0,   24,   39,
-
-        0,    0,    0,    0,    0,    0,    0,    0,   19,   20,
-       32,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    7,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   34,   31,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   17,    0,
-        0,    0,    0,    0,   26,   28,   33,    0,    0,    0,
-       35,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   40,   37,    0,    0,    0,    0,
-        0,    0,    0,    0,   13,   14,    0,    0,    0,    0,
-        0,    0,    0,    0,   36,    0,    0,   27,    0,    0,
-
-        0,    0,    0,    0,    0,    0,   22,   23,    0,    0,
-        0,    0,    0,    0,   16,   12,    0,    0,    0,    0,
-        0,    0,    0,   30,    0,   18,   25,    0,    0,    0,
-        0,    0,    0,    0,   38,    0,    0,    0,    0,   15,
+        0,    0,    0,    0,    0,    0,    0,   59,   56,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+
+        0,    0,    0,    0,    0,    0,    0,    0,   35,    0,
+        0,    0,    0,    0,    0,    0,   18,   30,   22,    0,
+        0,    0,    0,    0,   19,    0,    0,    0,    0,   25,
+       26,   38,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   20,    0,    0,    0,    7,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+       40,   37,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,   21,   16,    0,    0,    0,    0,    0,   32,   34,
+       39,    0,    0,    0,   41,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   23,   43,
+
+        0,    0,    0,    0,    0,    0,    0,    0,   13,   14,
+        0,    0,    0,    0,    0,    0,    0,    0,   42,    0,
+        0,   33,    0,    0,    0,    0,    0,    0,    0,    0,
+       28,   29,    0,    0,    0,    0,    0,    0,   15,   12,
+        0,    0,    0,    0,   17,    0,    0,   36,   24,   31,
         0
     } ;
 
@@ -785,93 +786,95 @@ static const YY_CHAR yy_meta[63] =
         3,    3
     } ;
 
-static const flex_int16_t yy_base[354] =
+static const flex_int16_t yy_base[364] =
     {   0,
         0,    0,   61,   64,   67,    0,   65,   69,   49,   66,
-      317, 2235,   86,  312,  129,    0,  108, 2235,  125,  129,
-       83,  171, 2235,  291,   90,   81,   81,   86, 2235, 2235,
-       97,  119,  123, 2235, 2235, 2235,  153,  288,  251,    0,
-      278,  154,  294,   83,  158, 2235,  188,  159,  197,  203,
-      214,  222,  238,  244,  259,  265,  273,  279,  302,  308,
-        0,  304,  310,  323,  348,  333, 2235,    0, 2235,  339,
-      352,  100,  180,  163,  183,  205,  187, 2235,  256,  285,
-     2235,  215, 2235,  364,  377,  281,  389,  413,  406,  398,
-      442,  455,  461,  467,  476,  482,  496,  503,  511,  517,
-
-      526,  537,  547,  553,  560,  572,    0,  206,  216,  210,
-      224,  237,  232,  236, 2235,    0,  582,  227, 2235,  623,
-      596,  608,  616, 2235,  623,  652,  665,  671,  678,  686,
-      692,  705,  713,  721,  730,  739,  747,  768,  774,  781,
-      788,  245, 2235, 2235,  265, 2235, 2235,  171,    0,  794,
-      833,  804,  810,  828,  862,  875,  881,  887,  896,  910,
-      916,  925,  931,  940,  950,  960,  975,  984,  990,  996,
-     1009, 1020, 2235, 2235,  162,    0, 1032, 1069, 1038, 1054,
-     1062, 1068, 1044, 1098, 1115, 1122, 1128, 1134, 1140, 1149,
-     1163, 2235, 1157, 1179, 1187, 1193, 1199, 1216, 2235, 2235,
-
-     1222,  140,    0, 1228, 1237, 1245, 1251, 1262, 2235, 2235,
-     2235, 1275, 1281, 1287, 1299, 1310, 1323, 1317, 1333, 1339,
-     1346, 1353, 1369, 1375, 1382, 2235, 1388, 1394, 1404, 1418,
-     1411, 1424, 1434, 1440, 1454, 1460, 1469, 2235, 2235, 1475,
-     1483, 1494, 1504, 1510, 1517, 1529, 1539, 1546, 2235, 1552,
-     1558, 1581, 1587, 1595, 2235, 2235, 2235, 1601, 1608, 1621,
-     2235, 1630, 1637, 1644, 1655, 1664, 1674, 1680, 1689, 1698,
-     1709, 1718, 1725, 1732, 2235, 2235, 1738, 1754, 1761, 1767,
-     1775, 1781, 1788, 1797, 2235, 2235, 1811, 1823, 1834, 1840,
-     1846, 1852, 1858, 1864, 2235, 1881, 1887, 2235, 1893, 1910,
-
-     1916, 1922, 1928, 1937, 1945, 1951, 2235, 2235, 1957, 1963,
-     1971, 1986, 1992, 2000, 2235, 2235, 2007, 2016, 2022, 2029,
-     2036, 2042, 2056, 2235, 2065, 2235, 2235, 2076, 2082, 2090,
-     2100, 2106, 2112, 2125, 2235, 2135, 2141, 2148, 2159, 2235,
-     2235, 2196, 2201, 2206, 2211, 2216, 2221, 2226, 2229,  157,
-      143,  121,   92
+      327, 2297,   86,  320,  129,    0,  108, 2297,  129,  123,
+       83,  173, 2297,  297,   90,   81,   81,   90, 2297, 2297,
+      125,   95,  105, 2297, 2297, 2297,  113,  302,  244,    0,
+      272,  154,  278,  159,  193, 2297,  199,  198,  207,  214,
+      220,  254,  262,  270,  276,  288,  299,  305,  311,  328,
+      340,  348,  355,    0,  350,  371,  228,  385,  378, 2297,
+        0, 2297,  214,  269,  125,  128,  119,  159,  165,  203,
+     2297,  241,  219, 2297,  185, 2297,  400,  414,  218,  422,
+      450,  444,  478,  493,  434,  499,  505,  512,  518,  534,
+
+      547,  553,  559,  569,  576,  594,  603,  610,  616,  628,
+      637,  657,  663,    0,  208,  219,  193,  244,  272,  234,
+      160, 2297,    0,  672,  197, 2297,  713,  678,  697,  684,
+      713,  742, 2297,  707,  757,  763,  769,  776,  783,  798,
+      792,  817,  827,  836,  851,  861,  873,  880,  888,  895,
+      907,  922,  262, 2297, 2297,  291, 2297, 2297,  142,    0,
+      929,  968,  936,  965,  946,  995, 1010, 1016, 1022, 1029,
+     1040, 1046,  952, 1063, 1069, 1075, 1052, 1081, 1089, 1099,
+     1105, 1116, 1123, 1129, 1139, 1146, 1165, 2297, 2297,  121,
+        0, 1152, 1189, 1159, 1176, 1182, 1188, 1217, 1232, 1238,
+
+     1244, 1251, 1257, 1268, 1274, 1280, 1286, 1293, 2297, 1303,
+     1315, 1327, 1333, 1341, 1349, 1357, 2297, 2297, 2297, 1363,
+      119,    0, 1370, 1378, 2297, 1386, 1397, 1407, 1421, 2297,
+     2297, 2297, 1413, 1427, 1434, 1442, 1463, 1469, 1477, 1484,
+     1490, 1503, 1511, 2297, 1520, 1527, 1533, 2297, 1545, 1556,
+     1562, 1569, 1575, 1586, 1592, 1604, 1610, 1616, 1622, 1629,
+     2297, 2297, 1645, 1652, 1658, 1665, 1671, 1679, 1688, 1701,
+     1708, 2297, 2297, 1714, 1723, 1738, 1748, 1757, 2297, 2297,
+     2297, 1767, 1778, 1786, 2297, 1792, 1802, 1813, 1821, 1831,
+     1839, 1847, 1855, 1861, 1876, 1882, 1890, 1897, 2297, 2297,
+
+     1903, 1919, 1926, 1932, 1940, 1946, 1953, 1962, 2297, 2297,
+     1975, 1987, 1999, 2005, 2011, 2021, 2028, 2041, 2297, 2047,
+     2055, 2297, 2062, 2076, 2082, 2089, 2100, 2106, 2112, 2118,
+     2297, 2297, 2124, 2136, 2153, 2159, 2170, 2176, 2297, 2297,
+     2182, 2188, 2194, 2206, 2297, 2217, 2224, 2297, 2297, 2297,
+     2297, 2258, 2263, 2268, 2273, 2278, 2283, 2288, 2291,  154,
+      121,   92,   84
     } ;
 
-static const flex_int16_t yy_def[354] =
+static const flex_int16_t yy_def[364] =
     {   0,
-      341,    1,  342,  342,    1,    5,    5,    5,    5,    5,
-      341,  341,  341,  341,  343,  344,  341,  341,  341,  341,
-      341,  341,  341,  341,  341,  341,  341,  341,  341,  341,
-      341,  341,  341,  341,  341,  341,  341,  341,  341,  345,
-      341,  341,  341,  346,  343,  341,  343,  347,  343,  343,
-      343,  343,  343,  343,  343,  343,  343,  343,  343,  343,
-      344,  341,  341,  341,  341,  341,  341,  348,  341,  341,
-      341,  341,  341,  341,  341,  341,  341,  341,  341,  345,
-      341,  346,  341,  341,  343,  349,  343,  347,  343,  343,
-      343,  343,  343,  343,  343,  343,  343,  343,  343,  343,
-
-      343,  343,  343,  343,  343,  343,  348,  341,  341,  341,
-      341,  341,  341,  341,  341,  350,  343,  349,  341,  347,
-      343,  343,  343,  341,  343,  343,  343,  343,  343,  343,
-      343,  343,  343,  343,  343,  343,  343,  343,  343,  343,
-      343,  341,  341,  341,  341,  341,  341,  341,  351,  343,
-      347,  343,  343,  343,  343,  343,  343,  343,  343,  343,
-      343,  343,  343,  343,  343,  343,  343,  343,  343,  343,
-      343,  343,  341,  341,  341,  352,  343,  347,  343,  343,
-      343,  343,  343,  343,  343,  343,  343,  343,  343,  343,
-      343,  341,  343,  343,  343,  343,  343,  343,  341,  341,
-
-      343,  341,  353,  343,  343,  343,  343,  343,  341,  341,
-      341,  343,  343,  343,  343,  343,  343,  343,  343,  343,
-      343,  343,  343,  343,  343,  341,  343,  343,  343,  343,
-      343,  343,  343,  343,  343,  343,  343,  341,  341,  343,
-      343,  343,  343,  343,  343,  343,  343,  343,  341,  343,
-      343,  343,  343,  343,  341,  341,  341,  343,  343,  343,
-      341,  343,  343,  343,  343,  343,  343,  343,  343,  343,
-      343,  343,  343,  343,  341,  341,  343,  343,  343,  343,
-      343,  343,  343,  343,  341,  341,  343,  343,  343,  343,
-      343,  343,  343,  343,  341,  343,  343,  341,  343,  343,
-
-      343,  343,  343,  343,  343,  343,  341,  341,  343,  343,
-      343,  343,  343,  343,  341,  341,  343,  343,  343,  343,
-      343,  343,  343,  341,  343,  341,  341,  343,  343,  343,
-      343,  343,  343,  343,  341,  343,  343,  343,  343,  341,
-        0,  341,  341,  341,  341,  341,  341,  341,  341,  341,
-      341,  341,  341
+      351,    1,  352,  352,    1,    5,    5,    5,    5,    5,
+      351,  351,  351,  351,  353,  354,  351,  351,  351,  351,
+      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
+      351,  351,  351,  351,  351,  351,  351,  351,  351,  355,
+      351,  351,  351,  356,  353,  351,  353,  357,  353,  353,
+      353,  353,  353,  353,  353,  353,  353,  353,  353,  353,
+      353,  353,  353,  354,  351,  351,  351,  351,  351,  351,
+      358,  351,  351,  351,  351,  351,  351,  351,  351,  351,
+      351,  351,  355,  351,  356,  351,  351,  353,  359,  353,
+      357,  353,  353,  353,  353,  353,  353,  353,  353,  353,
+
+      353,  353,  353,  353,  353,  353,  353,  353,  353,  353,
+      353,  353,  353,  358,  351,  351,  351,  351,  351,  351,
+      351,  351,  360,  353,  359,  351,  357,  353,  353,  353,
+      353,  353,  351,  353,  353,  353,  353,  353,  353,  353,
+      353,  353,  353,  353,  353,  353,  353,  353,  353,  353,
+      353,  353,  351,  351,  351,  351,  351,  351,  351,  361,
+      353,  357,  353,  353,  353,  353,  353,  353,  353,  353,
+      353,  353,  353,  353,  353,  353,  353,  353,  353,  353,
+      353,  353,  353,  353,  353,  353,  353,  351,  351,  351,
+      362,  353,  357,  353,  353,  353,  353,  353,  353,  353,
+
+      353,  353,  353,  353,  353,  353,  353,  353,  351,  353,
+      353,  353,  353,  353,  353,  353,  351,  351,  351,  353,
+      351,  363,  353,  353,  351,  353,  353,  353,  353,  351,
+      351,  351,  353,  353,  353,  353,  353,  353,  353,  353,
+      353,  353,  353,  351,  353,  353,  353,  351,  353,  353,
+      353,  353,  353,  353,  353,  353,  353,  353,  353,  353,
+      351,  351,  353,  353,  353,  353,  353,  353,  353,  353,
+      353,  351,  351,  353,  353,  353,  353,  353,  351,  351,
+      351,  353,  353,  353,  351,  353,  353,  353,  353,  353,
+      353,  353,  353,  353,  353,  353,  353,  353,  351,  351,
+
+      353,  353,  353,  353,  353,  353,  353,  353,  351,  351,
+      353,  353,  353,  353,  353,  353,  353,  353,  351,  353,
+      353,  351,  353,  353,  353,  353,  353,  353,  353,  353,
+      351,  351,  353,  353,  353,  353,  353,  353,  351,  351,
+      353,  353,  353,  353,  351,  353,  353,  351,  351,  351,
+        0,  351,  351,  351,  351,  351,  351,  351,  351,  351,
+      351,  351,  351
     } ;
 
-static const flex_int16_t yy_nxt[2298] =
+static const flex_int16_t yy_nxt[2360] =
     {   0,
        12,   13,   14,   13,   12,   15,   16,   12,   17,   18,
        19,   20,   21,   22,   22,   22,   22,   23,   24,   12,
@@ -881,254 +884,260 @@ static const flex_int16_t yy_nxt[2298] =
        12,   12,   12,   33,   12,   12,   12,   12,   12,   12,
        34,   35,   37,   14,   37,   37,   14,   37,   38,   41,
        40,   38,   12,   12,   40,   12,   12,   12,   12,   12,
-       12,   12,   12,   12,   12,   12,   41,   42,   83,   42,
-       67,   12,   12,   12,   12,   68,   82,   12,   70,   12,
-
-       70,   12,   72,   71,   71,   71,   71,   12,   12,   12,
-       12,   39,   73,   12,   74,   12,   84,   72,   72,   62,
-       12,   63,   63,   63,   63,  203,  108,   12,   12,   44,
-       44,   44,   64,   75,   46,   73,   62,   74,   65,   65,
-       65,   65,   66,   66,   66,   66,  108,  176,   64,   64,
-       73,   74,   47,   64,   42,   42,   42,   42,   44,   44,
-       44,  149,   48,   46,   87,   64,   49,   50,   51,   64,
-       52,   45,   53,   76,   77,   54,   55,   56,   57,   58,
-      226,   59,   62,   60,   65,   65,   65,   65,   44,   44,
-       44,   48,   45,   46,  110,   64,   45,   44,   44,   44,
-
-       45,  202,   46,   44,   44,   44,  109,   45,   46,  108,
-       45,   64,   45,   88,   44,   44,   44,  110,  110,   46,
-       83,   48,   44,   44,   44,  175,  109,   46,   91,  111,
-       48,  109,  119,   89,  144,  142,   48,   85,   44,   44,
-       44,  113,  143,   46,   44,   44,   44,   48,   84,   46,
-      144,  112,   90,  142,   92,   48,  144,   93,  142,   44,
-       44,   44,  143,  143,   46,   44,   44,   44,   94,  173,
-       46,   48,  147,   44,   44,   44,  145,   48,   46,   44,
-       44,   44,  148,  146,   46,  173,  119,   95,   97,  173,
-      115,   96,   48,   98,  114,   99,   43,   81,   48,   79,
-
-       78,  100,   44,   44,   44,  174,   48,   46,   44,   44,
-       44,   69,   48,   46,   43,  102,  341,   66,   66,   66,
-       66,   62,  341,   63,   63,   63,   63,  101,   64,  341,
-      341,   70,  341,   70,   64,   48,   71,   71,   71,   71,
-      341,   48,  103,  341,   64,  341,   66,   66,   66,   66,
-       64,  104,   71,   71,   71,   71,  105,   64,  341,   62,
-      106,   65,   65,   65,   65,   71,   71,   71,   71,   82,
-      341,  341,   64,   64,  341,  341,   82,   44,   44,   44,
-      341,  341,   46,  341,  341,  341,  341,  341,   64,   44,
-       44,   44,  341,  341,   46,  341,  341,   82,   44,   44,
-
-       44,   82,  341,   46,  341,   82,   44,   44,   44,  341,
-       48,   46,   82,  341,  341,   82,  341,   82,  116,  341,
-      341,  341,   48,  341,  341,  117,  120,  120,  120,  120,
-      341,   48,  341,  341,  120,  120,  120,  120,  120,   48,
-      341,  341,   44,   44,   44,  122,  123,  124,  341,  120,
-      120,  120,  120,  120,  120,   44,   44,   44,  121,  341,
-       46,   44,   44,   44,  341,  341,   46,   44,   44,   44,
-      341,  341,   46,  341,  341,   48,   44,   44,   44,  341,
-      341,   46,   44,   44,   44,  341,  341,   46,   48,  341,
-      341,  341,  125,  341,   48,  341,   44,   44,   44,  126,
-
-       48,   46,  341,   44,   44,   44,  341,  341,   46,   48,
-      341,   44,   44,   44,  341,   48,   46,   44,   44,   44,
-      341,  127,   46,  341,  341,  128,   44,   44,   44,   48,
-      341,   46,  341,  130,  341,  129,   48,   44,   44,   44,
-      341,  341,   46,  341,   48,  131,  341,   44,   44,   44,
-       48,  341,   46,   44,   44,   44,  341,  341,   46,   48,
-       44,   44,   44,  341,  133,   46,  341,  341,  132,  341,
-       48,  341,   44,   44,   44,  341,  341,   46,  341,  134,
-       48,  341,   44,   44,   44,  341,   48,   46,  135,  136,
-      137,  139,  341,   48,  341,  341,   44,   44,   44,  341,
-
-      341,   46,  138,  341,  140,   48,  341,  341,   44,   44,
-       44,  341,  141,   46,  341,   48,   44,   44,   44,  341,
-      341,   46,  341,   44,   44,   44,  341,  341,   46,   48,
-      341,  341,  341,  341,  341,  150,  151,  151,  151,  151,
-      152,   48,  341,  341,  151,  151,  151,  151,  151,   48,
-      341,  341,   44,   44,   44,  153,   48,   46,  341,  151,
-      151,  151,  151,  151,  151,   44,   44,   44,  341,  154,
-       46,   44,   44,   44,  341,  341,   46,  155,   44,   44,
-       44,  341,  341,   46,  341,   48,   44,   44,   44,  341,
-      341,   46,   44,   44,   44,  341,  341,   46,   48,  341,
-
-      341,  341,  156,  341,   48,   44,   44,   44,  341,  341,
-       46,   48,  341,   44,   44,   44,  158,  157,   46,   48,
-      341,   44,   44,   44,  341,   48,   46,  341,  159,  341,
-       44,   44,   44,  341,  161,   46,  341,  160,   48,   44,
-       44,   44,  341,  341,   46,  341,   48,   44,   44,   44,
-      341,  341,   46,  164,   48,  341,  341,  162,  341,  341,
-      163,  341,  341,   48,  341,  341,  166,  341,   44,   44,
-       44,  165,   48,   46,   44,   44,   44,  341,  341,   46,
-       48,   44,   44,   44,  341,  341,   46,  341,   44,   44,
-       44,  167,  341,   46,   44,   44,   44,  341,  341,   46,
-
-      168,   48,  341,  341,   44,   44,   44,   48,  169,   46,
-       44,   44,   44,  341,   48,   46,  341,  341,  341,  170,
-      341,   48,  341,  341,  341,  341,  341,   48,   44,   44,
-       44,  341,  341,   46,  341,  341,  341,   48,  171,  172,
-      341,  341,  179,   48,  341,  177,  178,  178,  178,  178,
-      180,  341,  341,  341,  178,  178,  178,  178,  178,  341,
-      341,   48,   44,   44,   44,  341,  341,   46,  341,  178,
-      178,  178,  178,  178,  178,   44,   44,   44,  341,  181,
-       46,   44,   44,   44,  341,  341,   46,   44,   44,   44,
-      183,  184,   46,  341,  341,   48,   44,   44,   44,  341,
-
-      341,   46,  341,  341,  182,  341,  187,  341,   48,  341,
-       44,   44,   44,  341,   48,   46,   44,   44,   44,  341,
-       48,   46,  341,  341,  185,   44,   44,   44,  341,   48,
-       46,   44,   44,   44,  341,  341,   46,  341,  341,  186,
-       44,   44,   44,   48,  341,  192,  188,  341,  341,   48,
-       44,   44,   44,  341,  341,   46,  189,  341,   48,  341,
-       44,   44,   44,  341,   48,   46,  341,  341,  341,  190,
-      341,  191,  341,   48,  341,   44,   44,   44,  341,  341,
-       46,  341,  341,   48,   44,   44,   44,  341,  341,   46,
-       44,   44,   44,   48,  341,   46,   44,   44,   44,  341,
-
-      341,   46,  341,  341,  193,  341,  341,  194,   48,   44,
-       44,   44,  341,  341,  199,  341,  341,   48,  341,  341,
-       44,   44,   44,   48,  196,  200,  341,  341,  341,   48,
-      201,  195,   44,   44,   44,  341,  198,   46,   44,   44,
-       44,  197,   48,   46,   44,   44,   44,  341,  205,  209,
-      341,  341,  341,   48,   44,   44,   44,  341,  341,   46,
-      341,  341,   44,   44,   44,   48,  341,   46,   44,   44,
-       44,   48,  341,   46,  341,  341,  341,   48,  341,  341,
-      341,  204,   45,   45,   45,   45,  341,   48,  341,  341,
-       45,   45,   45,   45,   45,   48,  341,  341,   44,   44,
-
-       44,   48,  206,  210,  341,   45,   45,   45,   45,   45,
-       45,  207,  341,  341,  208,   44,   44,   44,  341,  341,
-      211,  341,   44,   44,   44,  341,  341,   46,   44,   44,
-       44,   48,  212,   46,   44,   44,   44,  341,  341,   46,
-       44,   44,   44,  341,  341,   46,  341,  341,   48,   44,
-       44,   44,  341,  341,   46,   48,  341,   44,   44,   44,
-      341,   48,   46,   44,   44,   44,  341,   48,   46,  341,
-      341,  213,  341,   48,  341,  341,  341,  341,  214,   44,
-       44,   44,   48,  341,   46,  215,  341,   44,   44,   44,
-       48,  216,   46,   44,   44,   44,   48,  341,   46,   44,
-
-       44,   44,  341,  341,   46,  341,  341,  341,  217,  341,
-      219,  341,   48,  341,  218,  341,   44,   44,   44,  220,
-       48,   46,   44,   44,   44,  341,   48,   46,   44,   44,
-       44,  341,   48,   46,  341,  341,  221,   44,   44,   44,
-      341,  341,   46,  223,  222,   44,   44,   44,  341,   48,
-       46,   44,   44,   44,  341,   48,   46,  341,  341,  341,
-      225,   48,   44,   44,   44,  341,  341,   46,  341,  224,
-       48,  341,  341,  228,  227,   44,   44,   44,   48,  341,
-       46,   44,   44,   44,   48,  341,   46,   44,   44,   44,
-      341,  341,   46,  341,  341,   48,  341,  230,  229,   44,
-
-       44,   44,  231,  341,   46,  341,  341,  341,   48,  341,
-       44,   44,   44,  341,   48,   46,  341,   44,   44,   44,
-       48,  232,  238,   44,   44,   44,  341,  341,   46,  341,
-      233,  341,   48,   44,   44,   44,  234,  341,  239,   44,
-       44,   44,  341,   48,   46,  341,   44,   44,   44,  341,
-       48,   46,  341,   44,   44,   44,   48,  235,   46,  341,
-      341,  341,  236,  237,  341,  341,   48,  341,  240,   44,
-       44,   44,   48,  341,   46,   44,   44,   44,  341,   48,
-       46,  341,   44,   44,   44,  245,   48,   46,   44,   44,
-       44,  341,  241,   46,   44,   44,   44,  242,  247,   46,
-
-      341,  243,   48,  341,   44,   44,   44,  341,   48,  249,
-      341,   44,   44,   44,  341,   48,   46,  341,   44,   44,
-       44,   48,  244,   46,   44,   44,   44,   48,  250,   46,
-      341,  246,  341,  341,   44,   44,   44,   48,  341,   46,
-       44,   44,   44,  341,   48,   46,  341,  341,  248,  341,
-      341,   48,  341,  341,   44,   44,   44,   48,  341,  255,
-       44,   44,   44,  341,  341,  256,  251,   48,  252,   44,
-       44,   44,  341,   48,  257,   44,   44,   44,  341,  341,
-       46,  341,  341,   44,   44,   44,  253,   48,   46,  341,
-      341,  254,  341,   48,   44,   44,   44,  341,  341,   46,
-
-      341,  341,   48,  341,   44,   44,   44,  341,   48,  261,
-       44,   44,   44,  341,  341,   46,   48,   44,   44,   44,
-      341,  341,   46,  259,  258,  341,  341,   48,  341,   44,
-       44,   44,  341,  260,   46,  341,  341,   48,  341,   44,
-       44,   44,  341,   48,   46,  341,   44,   44,   44,  341,
-       48,   46,   44,   44,   44,  341,  341,   46,   44,   44,
-       44,  341,   48,   46,  341,  263,  341,  341,  262,  341,
-      264,  341,   48,  341,  341,  266,  341,  265,  341,   48,
-      341,   44,   44,   44,  341,   48,   46,   44,   44,   44,
-      341,   48,   46,  341,  341,   44,   44,   44,  269,  267,
-
-       46,   44,   44,   44,  268,  341,   46,  341,   44,   44,
-       44,  341,  341,   46,   48,  341,  341,  341,  270,  341,
-       48,   44,   44,   44,  341,  341,  275,  341,   48,  341,
-       44,   44,   44,  341,   48,  276,  341,   44,   44,   44,
-      271,   48,   46,  341,   44,   44,   44,  341,  272,   46,
-      341,  273,  341,  341,   48,   44,   44,   44,  341,  274,
-       46,  341,  341,   48,   44,   44,   44,  341,  341,   46,
-       48,  341,  341,  277,   44,   44,   44,   48,  341,   46,
-       44,   44,   44,  341,  341,   46,  341,  341,   48,   44,
-       44,   44,  341,  341,   46,  341,  341,   48,   44,   44,
-
-       44,  341,  278,   46,  341,  341,  280,   48,  279,   44,
-       44,   44,  341,   48,  285,  341,  341,  281,   44,   44,
-       44,  341,   48,  286,  341,   44,   44,   44,  341,  282,
-       46,   48,   44,   44,   44,  283,  341,   46,   44,   44,
-       44,  341,   48,   46,  341,  341,  341,  341,  341,  284,
-      341,   48,  341,  341,   44,   44,   44,  341,   48,   46,
-      341,   44,   44,   44,  341,   48,   46,   44,   44,   44,
-      341,   48,   46,  341,  341,   44,   44,   44,  287,  341,
-       46,   44,   44,   44,  288,  289,   46,   48,   44,   44,
-       44,  341,  341,  295,   48,  341,  341,   44,   44,   44,
-
-       48,  291,   46,  341,  290,  341,  341,  292,   48,  341,
-      341,   44,   44,   44,   48,  293,   46,  341,  341,  294,
-      341,   48,  341,   44,   44,   44,  341,  341,  298,  341,
-       48,  341,  341,  296,   44,   44,   44,  341,  341,   46,
-       44,   44,   44,  341,   48,   46,   44,   44,   44,  341,
-      341,   46,   44,   44,   44,  297,   48,   46,   44,   44,
-       44,  341,  341,   46,   44,   44,   44,   48,  341,   46,
-      341,  341,  341,   48,  299,  341,  341,  341,  341,   48,
-      300,   44,   44,   44,  341,   48,   46,   44,   44,   44,
-      341,   48,   46,   44,   44,   44,  341,   48,  307,  341,
-
-      302,  341,  341,  301,  341,  341,  303,  341,  341,  304,
-       44,   44,   44,  341,   48,  308,   44,   44,   44,  341,
-       48,   46,   44,   44,   44,  341,   48,   46,   44,   44,
-       44,  341,  305,   46,  341,  341,  306,   44,   44,   44,
-      341,  341,   46,   48,  341,   44,   44,   44,  341,   48,
-       46,   44,   44,   44,  341,   48,   46,   44,   44,   44,
-      341,   48,  315,   44,   44,   44,  341,  341,  316,  309,
-       48,   44,   44,   44,  341,  310,   46,  312,   48,  341,
-      341,  311,  341,  341,   48,  341,   44,   44,   44,  313,
-       48,   46,   44,   44,   44,  341,   48,   46,  341,  314,
-
-       44,   44,   44,  341,   48,   46,  341,   44,   44,   44,
-      341,  341,   46,  341,  341,  317,   44,   44,   44,   48,
-      341,   46,   44,   44,   44,   48,  341,   46,  341,   44,
-       44,   44,  319,   48,  324,  341,   44,   44,   44,  318,
-       48,   46,   44,   44,   44,  321,  341,  326,  341,   48,
-      341,  341,  320,  341,  341,   48,   44,   44,   44,  341,
-      341,  327,   48,  341,  341,   44,   44,   44,  322,   48,
-       46,  341,  325,  341,  323,   48,   44,   44,   44,  341,
-      341,   46,   44,   44,   44,  341,  341,   46,  341,   48,
-       44,   44,   44,  341,  341,   46,  341,  341,   48,  341,
-
-       44,   44,   44,  341,  341,   46,   44,   44,   44,   48,
-      332,   46,   44,   44,   44,   48,  341,  335,  328,  341,
-      329,  341,  341,   48,  341,   44,   44,   44,  341,  341,
-       46,  330,  341,   48,  341,   44,   44,   44,  331,   48,
-       46,   44,   44,   44,  341,   48,   46,  341,   44,   44,
-       44,  341,  333,   46,  341,  341,  341,  334,   48,   44,
-       44,   44,  341,  341,  340,  336,  341,  341,   48,  341,
-      341,  337,  341,  341,   48,  341,  341,  341,  341,  341,
-      341,   48,  341,  341,  341,  341,  341,  338,  341,  341,
-      341,  341,   48,  341,  341,  339,   36,   36,   36,   36,
-
-       36,   45,   45,   45,   45,   45,   61,  341,   61,   61,
-       61,   80,  341,   80,  341,   80,   82,   82,   82,   82,
-       82,   86,   86,   86,   86,   86,  107,  341,  107,  107,
-      107,  118,  118,  118,   11,  341,  341,  341,  341,  341,
-      341,  341,  341,  341,  341,  341,  341,  341,  341,  341,
-      341,  341,  341,  341,  341,  341,  341,  341,  341,  341,
-      341,  341,  341,  341,  341,  341,  341,  341,  341,  341,
-      341,  341,  341,  341,  341,  341,  341,  341,  341,  341,
-      341,  341,  341,  341,  341,  341,  341,  341,  341,  341,
-      341,  341,  341,  341,  341,  341,  341
-
+       12,   12,   12,   12,   12,   12,   41,   42,   85,   42,
+       70,   12,   12,   12,   12,   71,  222,   12,   73,   12,
+
+       73,   12,   75,   74,   74,   74,   74,   12,   12,   12,
+       12,   39,   76,   12,   42,   12,   42,   75,   77,   65,
+       12,   66,   66,   66,   66,  191,   76,   12,   12,   44,
+       44,   44,   67,   77,   46,   76,   69,   69,   69,   69,
+       65,   77,   68,   68,   68,   68,   75,   67,   67,   79,
+      117,  115,   47,   67,  116,   42,   80,   42,  160,  248,
+      221,   78,   48,   67,   86,   49,   50,   51,   52,   67,
+       53,  115,   54,  117,  116,   55,   56,   57,   58,   59,
+       60,   61,   62,   63,   65,  115,   68,   68,   68,   68,
+       86,  116,   87,   44,   44,   44,  190,   67,   46,   44,
+
+       44,   44,  126,   90,   46,  118,  159,   44,   44,   44,
+       45,  119,   46,   67,   44,   44,   44,  155,   87,   46,
+       44,   44,   44,  126,  122,   46,   48,   74,   74,   74,
+       74,   45,   48,  155,  117,   45,   73,  153,   73,   45,
+       48,   74,   74,   74,   74,  154,   45,   48,   88,   45,
+       93,   45,   91,   48,   44,   44,   44,  120,  155,   46,
+      153,   92,   44,   44,   44,  154,   94,   46,   96,   95,
+       44,   44,   44,  153,  158,   46,   44,   44,   44,  121,
+       43,   46,   74,   74,   74,   74,  188,   48,   44,   44,
+       44,   84,   82,   46,   97,   48,  156,   98,  154,   44,
+
+       44,   44,  188,   48,   46,   44,   44,   44,   99,   48,
+       46,   44,   44,   44,   81,  188,   46,   72,  157,  100,
+      102,   48,   43,  101,  104,  103,  351,  351,   44,   44,
+       44,  189,   48,   46,  351,  105,  351,  351,   48,  351,
+       44,   44,   44,  351,   48,   46,  351,  107,   44,   44,
+       44,  351,  351,   46,  351,   44,   44,   44,  351,  106,
+       46,   48,  351,   69,   69,   69,   69,  351,  108,  351,
+      351,  351,  351,   48,   67,  351,  351,  351,  351,  351,
+      109,   48,   65,  351,   66,   66,   66,   66,   48,  110,
+       67,   69,   69,   69,   69,   67,   65,  351,   68,   68,
+
+       68,   68,   67,  112,  351,   85,  111,  113,  351,   67,
+      351,   67,   85,  351,   44,   44,   44,  351,   67,   46,
+      351,  351,   44,   44,   44,   67,  351,   46,  351,  351,
+      351,  351,  351,   85,   44,   44,   44,   85,  351,   46,
+      351,   85,  351,  351,   44,   44,   44,   48,   85,   46,
+      351,   85,  351,   85,  123,   48,  351,  351,  351,  351,
+      351,  351,  124,  127,  127,  127,  127,   48,  351,  351,
+      351,  127,  127,  127,  127,  127,  351,   48,   44,   44,
+       44,  131,  132,   46,  351,  351,  127,  127,  127,  127,
+      127,  127,  351,   44,   44,   44,  351,  128,   46,   44,
+
+       44,   44,  351,  351,  133,   44,   44,   44,  351,  351,
+       46,   48,   44,   44,   44,  351,  351,   46,   44,   44,
+       44,  351,  351,   46,  351,  351,   48,  351,  351,  351,
+      129,  351,   48,  351,   44,   44,   44,  130,   48,   46,
+      351,  351,  134,  351,  351,   48,  351,   44,   44,   44,
+      135,   48,   46,   44,   44,   44,  351,  351,   46,   44,
+       44,   44,  351,  351,   46,  351,  351,   48,  351,   44,
+       44,   44,  136,  351,   46,  351,   44,   44,   44,  351,
+       48,   46,  351,  137,  351,  351,   48,  351,  351,  351,
+      139,  351,   48,  351,   44,   44,   44,  351,  351,   46,
+
+      138,  140,   48,   44,   44,   44,  351,  351,   46,   48,
+       44,   44,   44,  351,  351,   46,   44,   44,   44,  351,
+      351,   46,  351,  142,  351,  351,  141,   48,   44,   44,
+       44,  351,  351,   46,  351,  351,   48,   44,   44,   44,
+      351,  351,   46,   48,  351,  351,  147,  143,  351,   48,
+      351,  351,  351,  351,  144,  145,  146,   44,   44,   44,
+      351,   48,   46,   44,   44,   44,  149,  351,   46,  351,
+       48,  148,   44,   44,   44,  351,  351,   46,   44,   44,
+       44,  351,  351,   46,   44,   44,   44,  150,  351,   46,
+       48,  351,  351,  351,  351,  351,   48,   44,   44,   44,
+
+      351,  151,   46,  152,  351,   48,  351,   44,   44,   44,
+      351,   48,   46,   44,   44,   44,  351,   48,   46,  351,
+      351,  163,  351,  351,  165,  161,  162,  162,  162,  162,
+       48,  351,  351,  351,  162,  162,  162,  162,  162,  351,
+       48,  164,   44,   44,   44,  351,   48,   46,  351,  162,
+      162,  162,  162,  162,  162,  351,  351,   44,   44,   44,
+      166,  168,   46,   44,   44,   44,  351,  351,   46,   44,
+       44,   44,  351,  351,   46,   48,   44,   44,   44,  351,
+      351,   46,  351,   44,   44,   44,  351,  351,   46,  351,
+       48,  351,   44,   44,   44,  167,   48,   46,   44,   44,
+
+       44,  351,   48,   46,  351,  351,  351,  169,  351,   48,
+      351,  351,  351,  351,  171,  170,   48,   44,   44,   44,
+      351,  351,   46,  351,  351,   48,  172,   44,   44,   44,
+      351,   48,   46,  351,  173,  351,   44,   44,   44,  351,
+      174,   46,  351,  351,  175,  351,  351,  176,  351,  351,
+       48,   44,   44,   44,  351,  351,   46,  177,  351,  351,
+       48,   44,   44,   44,  351,  351,   46,  351,  351,   48,
+      351,  351,  179,   44,   44,   44,  351,  178,   46,  351,
+       44,   44,   44,  351,   48,   46,  351,  351,   44,   44,
+       44,  351,  351,   46,   48,   44,   44,   44,  351,  351,
+
+       46,  351,  351,  180,  351,  351,   48,   44,   44,   44,
+      351,  351,   46,   48,  181,  351,  351,  351,  351,  182,
+      183,   48,   44,   44,   44,  351,  351,   46,   48,   44,
+       44,   44,  351,  184,   46,  185,   44,   44,   44,  351,
+       48,   46,  351,  351,  351,  351,   44,   44,   44,  351,
+      351,   46,   44,   44,   44,   48,  351,   46,  351,  351,
+      351,  351,   48,  351,  186,   44,   44,   44,  351,   48,
+       46,  351,  351,  187,  351,  351,  194,  351,  351,   48,
+      192,  193,  193,  193,  193,   48,  351,  351,  205,  193,
+      193,  193,  193,  193,  196,   44,   44,   44,   48,  351,
+
+       46,  351,  351,  195,  193,  193,  193,  193,  193,  193,
+       44,   44,   44,  351,  351,   46,   44,   44,   44,  351,
+      351,   46,   44,   44,   44,  351,  351,   46,   48,   44,
+       44,   44,  351,  351,   46,  197,  351,  200,  201,  351,
+       44,   44,   44,   48,  351,   46,   44,   44,   44,   48,
+      351,   46,   44,   44,   44,   48,  204,  209,  199,  351,
+      351,  198,   48,   44,   44,   44,  351,  351,   46,   44,
+       44,   44,  202,   48,   46,   44,   44,   44,  351,   48,
+       46,   44,   44,   44,  351,   48,   46,  351,  351,   44,
+       44,   44,  203,  351,   46,  351,   48,  351,  351,   44,
+
+       44,   44,   48,  206,   46,   44,   44,   44,   48,  351,
+       46,  351,  351,  207,   48,  208,   44,   44,   44,  351,
+      351,   46,   48,   44,   44,   44,  351,  351,   46,   44,
+       44,   44,   48,  351,   46,  210,  211,  351,   48,   44,
+       44,   44,  351,  351,  217,  213,   44,   44,   44,   48,
+      351,  218,   44,   44,   44,  212,   48,   46,  351,   44,
+       44,   44,   48,  214,   46,   44,   44,   44,  351,  216,
+      219,  351,   48,  351,  215,  220,   44,   44,   44,   48,
+      351,  225,   44,   44,   44,   48,  351,   46,   44,   44,
+       44,  351,   48,   46,  351,  351,  351,  351,   48,  351,
+
+      351,  223,   45,   45,   45,   45,  351,  224,  351,   48,
+       45,   45,   45,   45,   45,   48,  351,   44,   44,   44,
+      351,   48,   46,  351,  351,   45,   45,   45,   45,   45,
+       45,  351,   44,   44,   44,  226,  227,   46,   44,   44,
+       44,  351,  351,  230,   44,   44,   44,  351,  351,  231,
+       48,   44,   44,   44,  351,  351,  232,   44,   44,   44,
+      351,  351,   46,  351,  351,   48,  228,  233,   44,   44,
+       44,   48,  351,   46,   44,   44,   44,   48,  229,   46,
+       44,   44,   44,  351,   48,   46,   44,   44,   44,  351,
+       48,   46,  351,   44,   44,   44,  351,  351,   46,  351,
+
+      351,   48,  351,   44,   44,   44,  351,   48,   46,  351,
+      351,  234,  351,   48,  351,   44,   44,   44,  235,   48,
+       46,  351,  351,  351,  351,  236,   48,   44,   44,   44,
+      351,  237,   46,   44,   44,   44,   48,  351,   46,  351,
+      351,   44,   44,   44,  239,  238,  244,  351,   48,   44,
+       44,   44,  351,  351,   46,  241,  240,   44,   44,   44,
+       48,  351,   46,   44,   44,   44,   48,  351,   46,  351,
+       44,   44,   44,  351,   48,   46,  242,  351,   44,   44,
+       44,  351,   48,   46,  243,  351,   44,   44,   44,  351,
+       48,   46,  351,  245,  351,  351,   48,   44,   44,   44,
+
+      351,  247,   46,   48,  351,  351,  351,   44,   44,   44,
+      246,   48,   46,   44,   44,   44,  249,  351,   46,   48,
+      351,   44,   44,   44,  351,  351,   46,   44,   44,   44,
+       48,  250,   46,  351,   44,   44,   44,  351,  251,   46,
+       48,  351,   44,   44,   44,  351,   48,   46,  351,  351,
+      252,  351,  351,  253,   48,  351,  351,  351,  351,  255,
+       48,  254,  351,   44,   44,   44,  351,   48,   46,   44,
+       44,   44,  351,  351,   46,   48,  256,   44,   44,   44,
+      351,  351,  261,  257,   44,   44,   44,  351,  351,  262,
+       44,   44,   44,  351,  351,   46,   48,  351,  351,  351,
+
+      258,  351,   48,   44,   44,   44,  351,  351,   46,  260,
+       48,   44,   44,   44,  351,  259,   46,   48,  351,  263,
+       44,   44,   44,   48,  351,   46,  351,   44,   44,   44,
+      351,  351,   46,   44,   44,   44,   48,  268,   46,  351,
+      351,  351,  351,  264,   48,   44,   44,   44,  351,  351,
+       46,  351,  351,   48,  265,  270,   44,   44,   44,  266,
+       48,   46,   44,   44,   44,  351,   48,  272,  351,   44,
+       44,   44,  351,  267,  273,   44,   44,   44,   48,  351,
+       46,  351,  269,  351,  351,  274,   44,   44,   44,   48,
+      351,   46,   44,   44,   44,   48,  351,   46,  351,  351,
+
+      271,  351,   48,  351,   44,   44,   44,  351,   48,   46,
+       44,   44,   44,  351,  351,   46,   44,   44,   44,   48,
+      351,  279,   44,   44,   44,   48,  351,  280,  351,   44,
+       44,   44,  351,  351,  281,  351,  276,   48,  351,  351,
+      351,  275,  351,   48,  351,   44,   44,   44,  351,   48,
+       46,  351,   44,   44,   44,   48,  277,   46,   44,   44,
+       44,  278,   48,   46,  351,   44,   44,   44,  351,  351,
+      285,   44,   44,   44,  351,  351,   46,  351,   48,   44,
+       44,   44,  351,  351,   46,   48,  351,  351,   44,   44,
+       44,   48,  283,   46,  282,  351,  351,  284,   48,  351,
+
+      351,   44,   44,   44,   48,  351,   46,  351,   44,   44,
+       44,  351,   48,   46,   44,   44,   44,  351,  351,   46,
+      351,   48,  351,   44,   44,   44,  351,  287,   46,  286,
+      351,  351,  288,  351,   48,  351,  289,  290,   44,   44,
+       44,   48,  351,   46,  351,  351,  291,   48,   44,   44,
+       44,  351,  351,   46,  351,  351,   48,   44,   44,   44,
+      351,  351,   46,  293,  351,  351,  292,   44,   44,   44,
+      351,   48,   46,  351,  351,  294,  351,  351,   44,   44,
+       44,   48,  351,   46,  351,  351,   44,   44,   44,  351,
+       48,  299,   44,   44,   44,  351,  351,  300,  351,  351,
+
+       48,  295,   44,   44,   44,  351,  351,   46,  351,  351,
+      296,   48,  351,   44,   44,   44,  351,  297,   46,   48,
+      351,   44,   44,   44,  351,   48,   46,  351,  351,  298,
+      351,   44,   44,   44,  351,   48,   46,  351,  301,   44,
+       44,   44,  351,  351,   46,  351,   48,   44,   44,   44,
+      351,  351,   46,  351,   48,   44,   44,   44,  351,  351,
+       46,   44,   44,   44,   48,  351,   46,  351,  351,  351,
+      351,  302,   48,  304,  303,  305,   44,   44,   44,  351,
+       48,  309,   44,   44,   44,  351,  351,  310,   48,  351,
+       44,   44,   44,  351,   48,   46,  306,   44,   44,   44,
+
+      351,  307,   46,   44,   44,   44,  351,  351,   46,   48,
+      351,  351,  308,  351,  351,   48,  351,  351,  351,   44,
+       44,   44,  351,   48,   46,  351,   44,   44,   44,  351,
+       48,   46,   44,   44,   44,  351,   48,   46,  351,  351,
+       44,   44,   44,  311,  351,   46,   44,   44,   44,  312,
+      313,   46,   48,   44,   44,   44,  351,  351,  319,   48,
+      351,  351,   44,   44,   44,   48,  315,   46,  351,  314,
+      351,  351,  316,   48,  351,   44,   44,   44,  351,   48,
+       46,  351,  351,  351,  318,  351,   48,   44,   44,   44,
+      351,  351,  322,  317,  351,   48,  351,  351,  320,   44,
+
+       44,   44,  351,  351,   46,   44,   44,   44,   48,  351,
+       46,   44,   44,   44,  351,  351,   46,  351,  351,  321,
+       48,   44,   44,   44,  351,  351,   46,  351,   44,   44,
+       44,  351,   48,   46,  351,  351,  351,  351,   48,  323,
+      351,   44,   44,   44,   48,  324,   46,   44,   44,   44,
+      351,  351,   46,  351,   48,   44,   44,   44,  351,  351,
+       46,   48,   44,   44,   44,  351,  351,  331,  325,  326,
+      351,  351,  327,  351,   48,  351,   44,   44,   44,  351,
+       48,  332,   44,   44,   44,  351,  328,   46,   48,   44,
+       44,   44,  351,  351,   46,   48,  351,  351,  329,  351,
+
+       44,   44,   44,  351,  330,   46,   44,   44,   44,   48,
+      351,   46,   44,   44,   44,   48,  351,   46,   44,   44,
+       44,  351,   48,   46,   44,   44,   44,  351,  351,  339,
+      351,  351,  351,   48,  351,  333,   44,   44,   44,   48,
+      351,  340,  334,  351,  351,   48,  336,  351,  351,  335,
+      351,   48,  351,   44,   44,   44,  337,   48,   46,   44,
+       44,   44,  351,  351,   46,  351,  338,  351,  351,   48,
+       44,   44,   44,  351,  351,   46,   44,   44,   44,  351,
+      351,   46,   44,   44,   44,  351,   48,  345,   44,   44,
+       44,  351,   48,   46,   44,   44,   44,  351,  351,   46,
+
+      351,  341,  351,   48,  351,  351,   44,   44,   44,   48,
+      343,  348,  342,  351,  351,   48,  351,   44,   44,   44,
+      351,   48,  349,  351,   44,   44,   44,   48,  344,  350,
+      351,  351,  351,  351,  351,  351,  351,  351,  351,   48,
+      346,  351,  351,  351,  351,  351,  347,  351,  351,  351,
+       48,  351,  351,  351,  351,  351,  351,   48,   36,   36,
+       36,   36,   36,   45,   45,   45,   45,   45,   64,  351,
+       64,   64,   64,   83,  351,   83,  351,   83,   85,   85,
+       85,   85,   85,   89,   89,   89,   89,   89,  114,  351,
+      114,  114,  114,  125,  125,  125,   11,  351,  351,  351,
+
+      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
+      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
+      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
+      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
+      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
+      351,  351,  351,  351,  351,  351,  351,  351,  351
     } ;
 
-static const flex_int16_t yy_chk[2298] =
+static const flex_int16_t yy_chk[2360] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -1138,251 +1147,257 @@ static const flex_int16_t yy_chk[2298] =
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    3,    3,    3,    4,    4,    4,    3,    9,
         7,    4,    5,    5,    8,    5,    5,    5,    5,    5,
-        5,    5,    5,    5,    5,    5,   10,   13,   44,   13,
-       21,    5,    5,    9,    5,   21,  353,    5,   25,    5,
+        5,    5,    5,    5,    5,    5,   10,   13,  363,   13,
+       21,    5,    5,    9,    5,   21,  362,    5,   25,    5,
 
        25,    5,   26,   25,   25,   25,   25,    5,    5,    7,
-       10,    5,   27,    8,   28,    5,   44,   26,   31,   17,
-        5,   17,   17,   17,   17,  352,   72,    5,    5,   15,
-       15,   15,   17,   31,   15,   27,   19,   28,   19,   19,
-       19,   19,   20,   20,   20,   20,   72,  351,   17,   19,
-       32,   33,   15,   20,   37,   42,   37,   42,   45,   45,
-       45,  350,   15,   45,   48,   19,   15,   15,   15,   20,
-       15,   48,   15,   32,   33,   15,   15,   15,   15,   15,
-      202,   15,   22,   15,   22,   22,   22,   22,   47,   47,
-       47,   45,   48,   47,   74,   22,   48,   49,   49,   49,
-
-       48,  175,   49,   50,   50,   50,   73,   48,   50,   75,
-       48,   22,   48,   48,   51,   51,   51,   74,   77,   51,
-       82,   47,   52,   52,   52,  148,   73,   52,   51,   75,
-       49,   76,  118,   49,  110,  108,   50,   47,   53,   53,
-       53,   77,  109,   53,   54,   54,   54,   51,   82,   54,
-      110,   76,   50,  111,   51,   52,  113,   51,  108,   55,
-       55,   55,  109,  112,   55,   56,   56,   56,   52,  142,
-       56,   53,  113,   57,   57,   57,  111,   54,   57,   58,
-       58,   58,  114,  112,   58,  142,   86,   53,   54,  145,
-       80,   53,   55,   54,   79,   55,   43,   41,   56,   39,
-
-       38,   56,   59,   59,   59,  145,   57,   59,   60,   60,
-       60,   24,   58,   60,   14,   58,   11,   62,   62,   62,
-       62,   63,    0,   63,   63,   63,   63,   57,   62,    0,
-        0,   64,    0,   64,   63,   59,   64,   64,   64,   64,
-        0,   60,   59,    0,   62,    0,   66,   66,   66,   66,
-       63,   59,   70,   70,   70,   70,   60,   66,    0,   65,
-       60,   65,   65,   65,   65,   71,   71,   71,   71,   84,
-        0,    0,   65,   66,    0,    0,   84,   85,   85,   85,
-        0,    0,   85,    0,    0,    0,    0,    0,   65,   87,
-       87,   87,    0,    0,   87,    0,    0,   84,   90,   90,
-
-       90,   84,    0,   90,    0,   84,   89,   89,   89,    0,
-       85,   89,   84,    0,    0,   84,    0,   84,   84,    0,
-        0,    0,   87,    0,    0,   85,   88,   88,   88,   88,
-        0,   90,    0,    0,   88,   88,   88,   88,   88,   89,
-        0,    0,   91,   91,   91,   90,   90,   91,    0,   88,
-       88,   88,   88,   88,   88,   92,   92,   92,   89,    0,
-       92,   93,   93,   93,    0,    0,   93,   94,   94,   94,
-        0,    0,   94,    0,    0,   91,   95,   95,   95,    0,
-        0,   95,   96,   96,   96,    0,    0,   96,   92,    0,
-        0,    0,   92,    0,   93,    0,   97,   97,   97,   93,
-
-       94,   97,    0,   98,   98,   98,    0,    0,   98,   95,
-        0,   99,   99,   99,    0,   96,   99,  100,  100,  100,
-        0,   94,  100,    0,    0,   95,  101,  101,  101,   97,
-        0,  101,    0,   97,    0,   96,   98,  102,  102,  102,
-        0,    0,  102,    0,   99,   98,    0,  103,  103,  103,
-      100,    0,  103,  104,  104,  104,    0,    0,  104,  101,
-      105,  105,  105,    0,  100,  105,    0,    0,   99,    0,
-      102,    0,  106,  106,  106,    0,    0,  106,    0,  101,
-      103,    0,  117,  117,  117,    0,  104,  117,  102,  102,
-      102,  104,    0,  105,    0,    0,  121,  121,  121,    0,
-
-        0,  121,  103,    0,  105,  106,    0,    0,  122,  122,
-      122,    0,  106,  122,    0,  117,  123,  123,  123,    0,
-        0,  123,    0,  125,  125,  125,    0,    0,  125,  121,
-        0,    0,    0,    0,    0,  117,  120,  120,  120,  120,
-      121,  122,    0,    0,  120,  120,  120,  120,  120,  123,
-        0,    0,  126,  126,  126,  122,  125,  126,    0,  120,
-      120,  120,  120,  120,  120,  127,  127,  127,    0,  123,
-      127,  128,  128,  128,    0,    0,  128,  125,  129,  129,
-      129,    0,    0,  129,    0,  126,  130,  130,  130,    0,
-        0,  130,  131,  131,  131,    0,    0,  131,  127,    0,
-
-        0,    0,  126,    0,  128,  132,  132,  132,    0,    0,
-      132,  129,    0,  133,  133,  133,  128,  127,  133,  130,
-        0,  134,  134,  134,    0,  131,  134,    0,  129,    0,
-      135,  135,  135,    0,  131,  135,    0,  130,  132,  136,
-      136,  136,    0,    0,  136,    0,  133,  137,  137,  137,
-        0,    0,  137,  133,  134,    0,    0,  132,    0,    0,
-      132,    0,    0,  135,    0,    0,  135,    0,  138,  138,
-      138,  134,  136,  138,  139,  139,  139,    0,    0,  139,
-      137,  140,  140,  140,    0,    0,  140,    0,  141,  141,
-      141,  136,    0,  141,  150,  150,  150,    0,    0,  150,
-
-      137,  138,    0,    0,  152,  152,  152,  139,  138,  152,
-      153,  153,  153,    0,  140,  153,    0,    0,    0,  139,
-        0,  141,    0,    0,    0,    0,    0,  150,  154,  154,
-      154,    0,    0,  154,    0,    0,    0,  152,  140,  141,
-        0,    0,  152,  153,    0,  150,  151,  151,  151,  151,
-      153,    0,    0,    0,  151,  151,  151,  151,  151,    0,
-        0,  154,  155,  155,  155,    0,    0,  155,    0,  151,
-      151,  151,  151,  151,  151,  156,  156,  156,    0,  154,
-      156,  157,  157,  157,    0,    0,  157,  158,  158,  158,
-      156,  156,  158,    0,    0,  155,  159,  159,  159,    0,
-
-        0,  159,    0,    0,  155,    0,  159,    0,  156,    0,
-      160,  160,  160,    0,  157,  160,  161,  161,  161,    0,
-      158,  161,    0,    0,  157,  162,  162,  162,    0,  159,
-      162,  163,  163,  163,    0,    0,  163,    0,    0,  158,
-      164,  164,  164,  160,    0,  164,  160,    0,    0,  161,
-      165,  165,  165,    0,    0,  165,  161,    0,  162,    0,
-      166,  166,  166,    0,  163,  166,    0,    0,    0,  162,
-        0,  163,    0,  164,    0,  167,  167,  167,    0,    0,
-      167,    0,    0,  165,  168,  168,  168,    0,    0,  168,
-      169,  169,  169,  166,    0,  169,  170,  170,  170,    0,
-
-        0,  170,    0,    0,  165,    0,    0,  166,  167,  171,
-      171,  171,    0,    0,  171,    0,    0,  168,    0,    0,
-      172,  172,  172,  169,  168,  172,    0,    0,    0,  170,
-      172,  167,  177,  177,  177,    0,  170,  177,  179,  179,
-      179,  169,  171,  179,  183,  183,  183,    0,  179,  183,
-        0,    0,    0,  172,  180,  180,  180,    0,    0,  180,
-        0,    0,  181,  181,  181,  177,    0,  181,  182,  182,
-      182,  179,    0,  182,    0,    0,    0,  183,    0,    0,
-        0,  177,  178,  178,  178,  178,    0,  180,    0,    0,
-      178,  178,  178,  178,  178,  181,    0,    0,  184,  184,
-
-      184,  182,  180,  184,    0,  178,  178,  178,  178,  178,
-      178,  181,    0,    0,  182,  185,  185,  185,    0,    0,
-      185,    0,  186,  186,  186,    0,    0,  186,  187,  187,
-      187,  184,  186,  187,  188,  188,  188,    0,    0,  188,
-      189,  189,  189,    0,    0,  189,    0,    0,  185,  190,
-      190,  190,    0,    0,  190,  186,    0,  193,  193,  193,
-        0,  187,  193,  191,  191,  191,    0,  188,  191,    0,
-        0,  187,    0,  189,    0,    0,    0,    0,  187,  194,
-      194,  194,  190,    0,  194,  188,    0,  195,  195,  195,
-      193,  189,  195,  196,  196,  196,  191,    0,  196,  197,
-
-      197,  197,    0,    0,  197,    0,    0,    0,  190,    0,
-      193,    0,  194,    0,  191,    0,  198,  198,  198,  194,
-      195,  198,  201,  201,  201,    0,  196,  201,  204,  204,
-      204,    0,  197,  204,    0,    0,  195,  205,  205,  205,
-        0,    0,  205,  197,  196,  206,  206,  206,    0,  198,
-      206,  207,  207,  207,    0,  201,  207,    0,    0,    0,
-      201,  204,  208,  208,  208,    0,    0,  208,    0,  198,
-      205,    0,    0,  205,  204,  212,  212,  212,  206,    0,
-      212,  213,  213,  213,  207,    0,  213,  214,  214,  214,
-        0,    0,  214,    0,    0,  208,    0,  207,  206,  215,
-
-      215,  215,  208,    0,  215,    0,    0,    0,  212,    0,
-      216,  216,  216,    0,  213,  216,    0,  218,  218,  218,
-      214,  212,  218,  217,  217,  217,    0,    0,  217,    0,
-      213,    0,  215,  219,  219,  219,  214,    0,  219,  220,
-      220,  220,    0,  216,  220,    0,  221,  221,  221,    0,
-      218,  221,    0,  222,  222,  222,  217,  215,  222,    0,
-        0,    0,  216,  217,    0,    0,  219,    0,  219,  223,
-      223,  223,  220,    0,  223,  224,  224,  224,    0,  221,
-      224,    0,  225,  225,  225,  224,  222,  225,  227,  227,
-      227,    0,  220,  227,  228,  228,  228,  221,  227,  228,
-
-        0,  222,  223,    0,  229,  229,  229,    0,  224,  229,
-        0,  231,  231,  231,    0,  225,  231,    0,  230,  230,
-      230,  227,  223,  230,  232,  232,  232,  228,  230,  232,
-        0,  225,    0,    0,  233,  233,  233,  229,    0,  233,
-      234,  234,  234,    0,  231,  234,    0,    0,  228,    0,
-        0,  230,    0,    0,  235,  235,  235,  232,    0,  235,
-      236,  236,  236,    0,    0,  236,  231,  233,  232,  237,
-      237,  237,    0,  234,  237,  240,  240,  240,    0,    0,
-      240,    0,    0,  241,  241,  241,  233,  235,  241,    0,
-        0,  234,    0,  236,  242,  242,  242,    0,    0,  242,
-
-        0,    0,  237,    0,  243,  243,  243,    0,  240,  243,
-      244,  244,  244,    0,    0,  244,  241,  245,  245,  245,
-        0,    0,  245,  241,  240,    0,    0,  242,    0,  246,
-      246,  246,    0,  242,  246,    0,    0,  243,    0,  247,
-      247,  247,    0,  244,  247,    0,  248,  248,  248,    0,
-      245,  248,  250,  250,  250,    0,    0,  250,  251,  251,
-      251,    0,  246,  251,    0,  245,    0,    0,  244,    0,
-      245,    0,  247,    0,    0,  247,    0,  246,    0,  248,
-        0,  252,  252,  252,    0,  250,  252,  253,  253,  253,
-        0,  251,  253,    0,    0,  254,  254,  254,  251,  248,
-
-      254,  258,  258,  258,  250,    0,  258,    0,  259,  259,
-      259,    0,    0,  259,  252,    0,    0,    0,  252,    0,
-      253,  260,  260,  260,    0,    0,  260,    0,  254,    0,
-      262,  262,  262,    0,  258,  262,    0,  263,  263,  263,
-      253,  259,  263,    0,  264,  264,  264,    0,  254,  264,
-        0,  258,    0,    0,  260,  265,  265,  265,    0,  259,
-      265,    0,    0,  262,  266,  266,  266,    0,    0,  266,
-      263,    0,    0,  263,  267,  267,  267,  264,    0,  267,
-      268,  268,  268,    0,    0,  268,    0,    0,  265,  269,
-      269,  269,    0,    0,  269,    0,    0,  266,  270,  270,
-
-      270,    0,  264,  270,    0,    0,  266,  267,  265,  271,
-      271,  271,    0,  268,  271,    0,    0,  267,  272,  272,
-      272,    0,  269,  272,    0,  273,  273,  273,    0,  268,
-      273,  270,  274,  274,  274,  269,    0,  274,  277,  277,
-      277,    0,  271,  277,    0,    0,    0,    0,    0,  270,
-        0,  272,    0,    0,  278,  278,  278,    0,  273,  278,
-        0,  279,  279,  279,    0,  274,  279,  280,  280,  280,
-        0,  277,  280,    0,    0,  281,  281,  281,  273,    0,
-      281,  282,  282,  282,  274,  277,  282,  278,  283,  283,
-      283,    0,    0,  283,  279,    0,    0,  284,  284,  284,
-
-      280,  279,  284,    0,  278,    0,    0,  280,  281,    0,
-        0,  287,  287,  287,  282,  281,  287,    0,    0,  282,
-        0,  283,    0,  288,  288,  288,    0,    0,  288,    0,
-      284,    0,    0,  284,  289,  289,  289,    0,    0,  289,
-      290,  290,  290,    0,  287,  290,  291,  291,  291,    0,
-        0,  291,  292,  292,  292,  287,  288,  292,  293,  293,
-      293,    0,    0,  293,  294,  294,  294,  289,    0,  294,
-        0,    0,    0,  290,  289,    0,    0,    0,    0,  291,
-      290,  296,  296,  296,    0,  292,  296,  297,  297,  297,
-        0,  293,  297,  299,  299,  299,    0,  294,  299,    0,
-
-      292,    0,    0,  291,    0,    0,  293,    0,    0,  294,
-      300,  300,  300,    0,  296,  300,  301,  301,  301,    0,
-      297,  301,  302,  302,  302,    0,  299,  302,  303,  303,
-      303,    0,  296,  303,    0,    0,  297,  304,  304,  304,
-        0,    0,  304,  300,    0,  305,  305,  305,    0,  301,
-      305,  306,  306,  306,    0,  302,  306,  309,  309,  309,
-        0,  303,  309,  310,  310,  310,    0,    0,  310,  301,
-      304,  311,  311,  311,    0,  302,  311,  304,  305,    0,
-        0,  303,    0,    0,  306,    0,  312,  312,  312,  305,
-      309,  312,  313,  313,  313,    0,  310,  313,    0,  306,
-
-      314,  314,  314,    0,  311,  314,    0,  317,  317,  317,
-        0,    0,  317,    0,    0,  311,  318,  318,  318,  312,
-        0,  318,  319,  319,  319,  313,    0,  319,    0,  320,
-      320,  320,  313,  314,  320,    0,  321,  321,  321,  312,
-      317,  321,  322,  322,  322,  317,    0,  322,    0,  318,
-        0,    0,  314,    0,    0,  319,  323,  323,  323,    0,
-        0,  323,  320,    0,    0,  325,  325,  325,  318,  321,
-      325,    0,  321,    0,  319,  322,  328,  328,  328,    0,
-        0,  328,  329,  329,  329,    0,    0,  329,    0,  323,
-      330,  330,  330,    0,    0,  330,    0,    0,  325,    0,
-
-      331,  331,  331,    0,    0,  331,  332,  332,  332,  328,
-      331,  332,  333,  333,  333,  329,    0,  333,  325,    0,
-      328,    0,    0,  330,    0,  334,  334,  334,    0,    0,
-      334,  329,    0,  331,    0,  336,  336,  336,  330,  332,
-      336,  337,  337,  337,    0,  333,  337,    0,  338,  338,
-      338,    0,  331,  338,    0,    0,    0,  332,  334,  339,
-      339,  339,    0,    0,  339,  334,    0,    0,  336,    0,
-        0,  336,    0,    0,  337,    0,    0,    0,    0,    0,
-        0,  338,    0,    0,    0,    0,    0,  337,    0,    0,
-        0,    0,  339,    0,    0,  338,  342,  342,  342,  342,
-
-      342,  343,  343,  343,  343,  343,  344,    0,  344,  344,
-      344,  345,    0,  345,    0,  345,  346,  346,  346,  346,
-      346,  347,  347,  347,  347,  347,  348,    0,  348,  348,
-      348,  349,  349,  349,  341,  341,  341,  341,  341,  341,
-      341,  341,  341,  341,  341,  341,  341,  341,  341,  341,
-      341,  341,  341,  341,  341,  341,  341,  341,  341,  341,
-      341,  341,  341,  341,  341,  341,  341,  341,  341,  341,
-      341,  341,  341,  341,  341,  341,  341,  341,  341,  341,
-      341,  341,  341,  341,  341,  341,  341,  341,  341,  341,
-      341,  341,  341,  341,  341,  341,  341
-
+       10,    5,   27,    8,   37,    5,   37,   26,   28,   17,
+        5,   17,   17,   17,   17,  361,   32,    5,    5,   15,
+       15,   15,   17,   33,   15,   27,   20,   20,   20,   20,
+       19,   28,   19,   19,   19,   19,   31,   20,   17,   32,
+       77,   75,   15,   19,   76,   42,   33,   42,  360,  221,
+      190,   31,   15,   20,   44,   15,   15,   15,   15,   19,
+       15,   75,   15,   77,   76,   15,   15,   15,   15,   15,
+       15,   15,   15,   15,   22,   78,   22,   22,   22,   22,
+       85,   79,   44,   45,   45,   45,  159,   22,   45,   47,
+
+       47,   47,  125,   48,   47,   78,  121,   49,   49,   49,
+       48,   79,   49,   22,   50,   50,   50,  117,   85,   50,
+       51,   51,   51,   89,   83,   51,   45,   73,   73,   73,
+       73,   48,   47,  117,   80,   48,   67,  115,   67,   48,
+       49,   67,   67,   67,   67,  116,   48,   50,   47,   48,
+       50,   48,   48,   51,   52,   52,   52,   80,  120,   52,
+      115,   49,   53,   53,   53,  116,   51,   53,   52,   51,
+       54,   54,   54,  118,  120,   54,   55,   55,   55,   82,
+       43,   55,   74,   74,   74,   74,  153,   52,   56,   56,
+       56,   41,   39,   56,   52,   53,  118,   52,  119,   57,
+
+       57,   57,  153,   54,   57,   58,   58,   58,   53,   55,
+       58,   59,   59,   59,   38,  156,   59,   24,  119,   54,
+       55,   56,   14,   54,   56,   55,   11,    0,   60,   60,
+       60,  156,   57,   60,    0,   57,    0,    0,   58,    0,
+       61,   61,   61,    0,   59,   61,    0,   59,   62,   62,
+       62,    0,    0,   62,    0,   63,   63,   63,    0,   58,
+       63,   60,    0,   65,   65,   65,   65,    0,   60,    0,
+        0,    0,    0,   61,   65,    0,    0,    0,    0,    0,
+       61,   62,   66,    0,   66,   66,   66,   66,   63,   61,
+       65,   69,   69,   69,   69,   66,   68,    0,   68,   68,
+
+       68,   68,   69,   63,    0,   87,   62,   63,    0,   68,
+        0,   66,   87,    0,   88,   88,   88,    0,   69,   88,
+        0,    0,   90,   90,   90,   68,    0,   90,    0,    0,
+        0,    0,    0,   87,   95,   95,   95,   87,    0,   95,
+        0,   87,    0,    0,   92,   92,   92,   88,   87,   92,
+        0,   87,    0,   87,   87,   90,    0,    0,    0,    0,
+        0,    0,   88,   91,   91,   91,   91,   95,    0,    0,
+        0,   91,   91,   91,   91,   91,    0,   92,   93,   93,
+       93,   95,   95,   93,    0,    0,   91,   91,   91,   91,
+       91,   91,    0,   94,   94,   94,    0,   92,   94,   96,
+
+       96,   96,    0,    0,   96,   97,   97,   97,    0,    0,
+       97,   93,   98,   98,   98,    0,    0,   98,   99,   99,
+       99,    0,    0,   99,    0,    0,   94,    0,    0,    0,
+       93,    0,   96,    0,  100,  100,  100,   94,   97,  100,
+        0,    0,   97,    0,    0,   98,    0,  101,  101,  101,
+       98,   99,  101,  102,  102,  102,    0,    0,  102,  103,
+      103,  103,    0,    0,  103,    0,    0,  100,    0,  104,
+      104,  104,   99,    0,  104,    0,  105,  105,  105,    0,
+      101,  105,    0,  100,    0,    0,  102,    0,    0,    0,
+      102,    0,  103,    0,  106,  106,  106,    0,    0,  106,
+
+      101,  103,  104,  107,  107,  107,    0,    0,  107,  105,
+      108,  108,  108,    0,    0,  108,  109,  109,  109,    0,
+        0,  109,    0,  105,    0,    0,  104,  106,  110,  110,
+      110,    0,    0,  110,    0,    0,  107,  111,  111,  111,
+        0,    0,  111,  108,    0,    0,  108,  106,    0,  109,
+        0,    0,    0,    0,  107,  107,  107,  112,  112,  112,
+        0,  110,  112,  113,  113,  113,  110,    0,  113,    0,
+      111,  109,  124,  124,  124,    0,    0,  124,  128,  128,
+      128,    0,    0,  128,  130,  130,  130,  111,    0,  130,
+      112,    0,    0,    0,    0,    0,  113,  129,  129,  129,
+
+        0,  112,  129,  113,    0,  124,    0,  134,  134,  134,
+        0,  128,  134,  131,  131,  131,    0,  130,  131,    0,
+        0,  128,    0,    0,  130,  124,  127,  127,  127,  127,
+      129,    0,    0,    0,  127,  127,  127,  127,  127,    0,
+      134,  129,  132,  132,  132,    0,  131,  132,    0,  127,
+      127,  127,  127,  127,  127,    0,    0,  135,  135,  135,
+      131,  134,  135,  136,  136,  136,    0,    0,  136,  137,
+      137,  137,    0,    0,  137,  132,  138,  138,  138,    0,
+        0,  138,    0,  139,  139,  139,    0,    0,  139,    0,
+      135,    0,  141,  141,  141,  132,  136,  141,  140,  140,
+
+      140,    0,  137,  140,    0,    0,    0,  135,    0,  138,
+        0,    0,    0,    0,  137,  136,  139,  142,  142,  142,
+        0,    0,  142,    0,    0,  141,  138,  143,  143,  143,
+        0,  140,  143,    0,  139,    0,  144,  144,  144,    0,
+      140,  144,    0,    0,  141,    0,    0,  141,    0,    0,
+      142,  145,  145,  145,    0,    0,  145,  142,    0,    0,
+      143,  146,  146,  146,    0,    0,  146,    0,    0,  144,
+        0,    0,  144,  147,  147,  147,    0,  143,  147,    0,
+      148,  148,  148,    0,  145,  148,    0,    0,  149,  149,
+      149,    0,    0,  149,  146,  150,  150,  150,    0,    0,
+
+      150,    0,    0,  145,    0,    0,  147,  151,  151,  151,
+        0,    0,  151,  148,  146,    0,    0,    0,    0,  147,
+      148,  149,  152,  152,  152,    0,    0,  152,  150,  161,
+      161,  161,    0,  149,  161,  150,  163,  163,  163,    0,
+      151,  163,    0,    0,    0,    0,  165,  165,  165,    0,
+        0,  165,  173,  173,  173,  152,    0,  173,    0,    0,
+        0,    0,  161,    0,  151,  164,  164,  164,    0,  163,
+      164,    0,    0,  152,    0,    0,  163,    0,    0,  165,
+      161,  162,  162,  162,  162,  173,    0,    0,  173,  162,
+      162,  162,  162,  162,  165,  166,  166,  166,  164,    0,
+
+      166,    0,    0,  164,  162,  162,  162,  162,  162,  162,
+      167,  167,  167,    0,    0,  167,  168,  168,  168,    0,
+        0,  168,  169,  169,  169,    0,    0,  169,  166,  170,
+      170,  170,    0,    0,  170,  166,    0,  169,  169,    0,
+      171,  171,  171,  167,    0,  171,  172,  172,  172,  168,
+        0,  172,  177,  177,  177,  169,  172,  177,  168,    0,
+        0,  167,  170,  174,  174,  174,    0,    0,  174,  175,
+      175,  175,  170,  171,  175,  176,  176,  176,    0,  172,
+      176,  178,  178,  178,    0,  177,  178,    0,    0,  179,
+      179,  179,  171,    0,  179,    0,  174,    0,    0,  180,
+
+      180,  180,  175,  174,  180,  181,  181,  181,  176,    0,
+      181,    0,    0,  175,  178,  176,  182,  182,  182,    0,
+        0,  182,  179,  183,  183,  183,    0,    0,  183,  184,
+      184,  184,  180,    0,  184,  178,  179,    0,  181,  185,
+      185,  185,    0,    0,  185,  181,  186,  186,  186,  182,
+        0,  186,  192,  192,  192,  180,  183,  192,    0,  194,
+      194,  194,  184,  182,  194,  187,  187,  187,    0,  184,
+      187,    0,  185,    0,  183,  187,  195,  195,  195,  186,
+        0,  195,  196,  196,  196,  192,    0,  196,  197,  197,
+      197,    0,  194,  197,    0,    0,    0,    0,  187,    0,
+
+        0,  192,  193,  193,  193,  193,    0,  194,    0,  195,
+      193,  193,  193,  193,  193,  196,    0,  198,  198,  198,
+        0,  197,  198,    0,    0,  193,  193,  193,  193,  193,
+      193,    0,  199,  199,  199,  196,  197,  199,  200,  200,
+      200,    0,    0,  200,  201,  201,  201,    0,    0,  201,
+      198,  202,  202,  202,    0,    0,  202,  203,  203,  203,
+        0,    0,  203,    0,    0,  199,  198,  203,  204,  204,
+      204,  200,    0,  204,  205,  205,  205,  201,  199,  205,
+      206,  206,  206,    0,  202,  206,  207,  207,  207,    0,
+      203,  207,    0,  208,  208,  208,    0,    0,  208,    0,
+
+        0,  204,    0,  210,  210,  210,    0,  205,  210,    0,
+        0,  204,    0,  206,    0,  211,  211,  211,  204,  207,
+      211,    0,    0,    0,    0,  205,  208,  212,  212,  212,
+        0,  206,  212,  213,  213,  213,  210,    0,  213,    0,
+        0,  214,  214,  214,  208,  207,  214,    0,  211,  215,
+      215,  215,    0,    0,  215,  211,  210,  216,  216,  216,
+      212,    0,  216,  220,  220,  220,  213,    0,  220,    0,
+      223,  223,  223,    0,  214,  223,  212,    0,  224,  224,
+      224,    0,  215,  224,  213,    0,  226,  226,  226,    0,
+      216,  226,    0,  215,    0,    0,  220,  227,  227,  227,
+
+        0,  220,  227,  223,    0,    0,    0,  228,  228,  228,
+      216,  224,  228,  233,  233,  233,  223,    0,  233,  226,
+        0,  229,  229,  229,    0,    0,  229,  234,  234,  234,
+      227,  224,  234,    0,  235,  235,  235,    0,  226,  235,
+      228,    0,  236,  236,  236,    0,  233,  236,    0,    0,
+      227,    0,    0,  228,  229,    0,    0,    0,    0,  233,
+      234,  229,    0,  237,  237,  237,    0,  235,  237,  238,
+      238,  238,    0,    0,  238,  236,  234,  239,  239,  239,
+        0,    0,  239,  235,  240,  240,  240,    0,    0,  240,
+      241,  241,  241,    0,    0,  241,  237,    0,    0,    0,
+
+      236,    0,  238,  242,  242,  242,    0,    0,  242,  238,
+      239,  243,  243,  243,    0,  237,  243,  240,    0,  240,
+      245,  245,  245,  241,    0,  245,    0,  246,  246,  246,
+        0,    0,  246,  247,  247,  247,  242,  246,  247,    0,
+        0,    0,    0,  241,  243,  249,  249,  249,    0,    0,
+      249,    0,    0,  245,  242,  249,  250,  250,  250,  243,
+      246,  250,  251,  251,  251,    0,  247,  251,    0,  252,
+      252,  252,    0,  245,  252,  253,  253,  253,  249,    0,
+      253,    0,  247,    0,    0,  253,  254,  254,  254,  250,
+        0,  254,  255,  255,  255,  251,    0,  255,    0,    0,
+
+      250,    0,  252,    0,  256,  256,  256,    0,  253,  256,
+      257,  257,  257,    0,    0,  257,  258,  258,  258,  254,
+        0,  258,  259,  259,  259,  255,    0,  259,    0,  260,
+      260,  260,    0,    0,  260,    0,  255,  256,    0,    0,
+        0,  254,    0,  257,    0,  263,  263,  263,    0,  258,
+      263,    0,  264,  264,  264,  259,  256,  264,  265,  265,
+      265,  257,  260,  265,    0,  266,  266,  266,    0,    0,
+      266,  267,  267,  267,    0,    0,  267,    0,  263,  268,
+      268,  268,    0,    0,  268,  264,    0,    0,  269,  269,
+      269,  265,  264,  269,  263,    0,    0,  265,  266,    0,
+
+        0,  270,  270,  270,  267,    0,  270,    0,  271,  271,
+      271,    0,  268,  271,  274,  274,  274,    0,    0,  274,
+        0,  269,    0,  275,  275,  275,    0,  268,  275,  267,
+        0,    0,  268,    0,  270,    0,  269,  270,  276,  276,
+      276,  271,    0,  276,    0,    0,  271,  274,  277,  277,
+      277,    0,    0,  277,    0,    0,  275,  278,  278,  278,
+        0,    0,  278,  275,    0,    0,  274,  282,  282,  282,
+        0,  276,  282,    0,    0,  276,    0,    0,  283,  283,
+      283,  277,    0,  283,    0,    0,  284,  284,  284,    0,
+      278,  284,  286,  286,  286,    0,    0,  286,    0,    0,
+
+      282,  277,  287,  287,  287,    0,    0,  287,    0,    0,
+      278,  283,    0,  288,  288,  288,    0,  282,  288,  284,
+        0,  289,  289,  289,    0,  286,  289,    0,    0,  283,
+        0,  290,  290,  290,    0,  287,  290,    0,  287,  291,
+      291,  291,    0,    0,  291,    0,  288,  292,  292,  292,
+        0,    0,  292,    0,  289,  293,  293,  293,    0,    0,
+      293,  294,  294,  294,  290,    0,  294,    0,    0,    0,
+        0,  288,  291,  290,  289,  291,  295,  295,  295,    0,
+      292,  295,  296,  296,  296,    0,    0,  296,  293,    0,
+      297,  297,  297,    0,  294,  297,  292,  298,  298,  298,
+
+        0,  293,  298,  301,  301,  301,    0,    0,  301,  295,
+        0,    0,  294,    0,    0,  296,    0,    0,    0,  302,
+      302,  302,    0,  297,  302,    0,  303,  303,  303,    0,
+      298,  303,  304,  304,  304,    0,  301,  304,    0,    0,
+      305,  305,  305,  297,    0,  305,  306,  306,  306,  298,
+      301,  306,  302,  307,  307,  307,    0,    0,  307,  303,
+        0,    0,  308,  308,  308,  304,  303,  308,    0,  302,
+        0,    0,  304,  305,    0,  311,  311,  311,    0,  306,
+      311,    0,    0,    0,  306,    0,  307,  312,  312,  312,
+        0,    0,  312,  305,    0,  308,    0,    0,  308,  313,
+
+      313,  313,    0,    0,  313,  314,  314,  314,  311,    0,
+      314,  315,  315,  315,    0,    0,  315,    0,    0,  311,
+      312,  316,  316,  316,    0,    0,  316,    0,  317,  317,
+      317,    0,  313,  317,    0,    0,    0,    0,  314,  313,
+        0,  318,  318,  318,  315,  314,  318,  320,  320,  320,
+        0,    0,  320,    0,  316,  321,  321,  321,    0,    0,
+      321,  317,  323,  323,  323,    0,    0,  323,  315,  316,
+        0,    0,  317,    0,  318,    0,  324,  324,  324,    0,
+      320,  324,  325,  325,  325,    0,  318,  325,  321,  326,
+      326,  326,    0,    0,  326,  323,    0,    0,  320,    0,
+
+      327,  327,  327,    0,  321,  327,  328,  328,  328,  324,
+        0,  328,  329,  329,  329,  325,    0,  329,  330,  330,
+      330,    0,  326,  330,  333,  333,  333,    0,    0,  333,
+        0,    0,    0,  327,    0,  325,  334,  334,  334,  328,
+        0,  334,  326,    0,    0,  329,  328,    0,    0,  327,
+        0,  330,    0,  335,  335,  335,  329,  333,  335,  336,
+      336,  336,    0,    0,  336,    0,  330,    0,    0,  334,
+      337,  337,  337,    0,    0,  337,  338,  338,  338,    0,
+        0,  338,  341,  341,  341,    0,  335,  341,  342,  342,
+      342,    0,  336,  342,  343,  343,  343,    0,    0,  343,
+
+        0,  335,    0,  337,    0,    0,  344,  344,  344,  338,
+      337,  344,  336,    0,    0,  341,    0,  346,  346,  346,
+        0,  342,  346,    0,  347,  347,  347,  343,  338,  347,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  344,
+      342,    0,    0,    0,    0,    0,  343,    0,    0,    0,
+      346,    0,    0,    0,    0,    0,    0,  347,  352,  352,
+      352,  352,  352,  353,  353,  353,  353,  353,  354,    0,
+      354,  354,  354,  355,    0,  355,    0,  355,  356,  356,
+      356,  356,  356,  357,  357,  357,  357,  357,  358,    0,
+      358,  358,  358,  359,  359,  359,  351,  351,  351,  351,
+
+      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
+      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
+      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
+      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
+      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
+      351,  351,  351,  351,  351,  351,  351,  351,  351
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -1391,14 +1406,15 @@ static char *yy_last_accepting_cpos;
 extern int yy_flex_debug;
 int yy_flex_debug = 1;
 
-static const flex_int16_t yy_rule_linenum[59] =
+static const flex_int16_t yy_rule_linenum[62] =
     {   0,
       133,  135,  137,  142,  143,  148,  149,  150,  162,  165,
-      170,  177,  186,  195,  204,  213,  225,  237,  246,  255,
+      170,  177,  186,  195,  204,  216,  228,  237,  246,  255,
       264,  273,  282,  291,  300,  309,  318,  327,  336,  345,
       354,  363,  372,  381,  390,  399,  408,  417,  426,  435,
-      444,  543,  548,  553,  558,  559,  560,  561,  562,  563,
-      565,  583,  596,  601,  605,  607,  609,  611
+      444,  453,  462,  471,  570,  575,  580,  585,  586,  587,
+      588,  589,  590,  592,  610,  623,  628,  632,  634,  636,
+      638
     } ;
 
 /* The intent behind this definition is that it'll catch
@@ -1453,7 +1469,7 @@ using isc::agent::AgentParser;
 
 /* To avoid the call to exit... oops! */
 #define YY_FATAL_ERROR(msg) isc::agent::ParserContext::fatal(msg)
-#line 1456 "agent_lexer.cc"
+#line 1472 "agent_lexer.cc"
 /* noyywrap disables automatic rewinding for the next file to parse. Since we
    always parse only a single string, there's no need to do any wraps. And
    using yywrap requires linking with -lfl, which provides the default yywrap
@@ -1479,8 +1495,8 @@ using isc::agent::AgentParser;
    by moving it ahead by yyleng bytes. yyleng specifies the length of the
    currently matched token. */
 #define YY_USER_ACTION  driver.loc_.columns(yyleng);
-#line 1482 "agent_lexer.cc"
-#line 1483 "agent_lexer.cc"
+#line 1498 "agent_lexer.cc"
+#line 1499 "agent_lexer.cc"
 
 #define INITIAL 0
 #define COMMENT 1
@@ -1794,7 +1810,7 @@ YY_DECL
     }
 
 
-#line 1797 "agent_lexer.cc"
+#line 1813 "agent_lexer.cc"
 
        while ( /*CONSTCOND*/1 )                /* loops until end-of-file is reached */
                {
@@ -1823,13 +1839,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 >= 342 )
+                               if ( yy_current_state >= 352 )
                                        yy_c = yy_meta[yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
                        ++yy_cp;
                        }
-               while ( yy_current_state != 341 );
+               while ( yy_current_state != 351 );
                yy_cp = (yy_last_accepting_cpos);
                yy_current_state = (yy_last_accepting_state);
 
@@ -1848,13 +1864,13 @@ do_action:      /* This label is used only to access EOF actions. */
                        {
                        if ( yy_act == 0 )
                                fprintf( stderr, "--scanner backing up\n" );
-                       else if ( yy_act < 59 )
+                       else if ( yy_act < 62 )
                                fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
                                         (long)yy_rule_linenum[yy_act], yytext );
-                       else if ( yy_act == 59 )
+                       else if ( yy_act == 62 )
                                fprintf( stderr, "--accepting default rule (\"%s\")\n",
                                         yytext );
-                       else if ( yy_act == 60 )
+                       else if ( yy_act == 63 )
                                fprintf( stderr, "--(end of buffer or a NUL)\n" );
                        else
                                fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
@@ -2000,39 +2016,39 @@ YY_RULE_SETUP
 {
     switch(driver.ctx_) {
     case ParserContext::AGENT:
-        return AgentParser::make_BASIC_AUTHENTICATION_REALM(driver.loc_);
+    case ParserContext::SERVER:
+    case ParserContext::LOGGERS:
+    case ParserContext::CLIENTS:
+        return AgentParser::make_USER_CONTEXT(driver.loc_);
     default:
-        return AgentParser::make_STRING("basic-authentication-realm", driver.loc_);
+        return AgentParser::make_STRING("user-context", driver.loc_);
     }
 }
        YY_BREAK
 case 16:
 YY_RULE_SETUP
-#line 213 "agent_lexer.ll"
+#line 216 "agent_lexer.ll"
 {
     switch(driver.ctx_) {
     case ParserContext::AGENT:
     case ParserContext::SERVER:
     case ParserContext::LOGGERS:
-    case ParserContext::BASIC_AUTHENTICATIONS:
-        return AgentParser::make_USER_CONTEXT(driver.loc_);
+    case ParserContext::CLIENTS:
+        return AgentParser::make_COMMENT(driver.loc_);
     default:
-        return AgentParser::make_STRING("user-context", driver.loc_);
+        return AgentParser::make_STRING("comment", driver.loc_);
     }
 }
        YY_BREAK
 case 17:
 YY_RULE_SETUP
-#line 225 "agent_lexer.ll"
+#line 228 "agent_lexer.ll"
 {
     switch(driver.ctx_) {
     case ParserContext::AGENT:
-    case ParserContext::SERVER:
-    case ParserContext::LOGGERS:
-    case ParserContext::BASIC_AUTHENTICATIONS:
-        return AgentParser::make_COMMENT(driver.loc_);
+        return AgentParser::make_AUTHENTICATION(driver.loc_);
     default:
-        return AgentParser::make_STRING("comment", driver.loc_);
+        return AgentParser::make_STRING("authentication", driver.loc_);
     }
 }
        YY_BREAK
@@ -2041,10 +2057,10 @@ YY_RULE_SETUP
 #line 237 "agent_lexer.ll"
 {
     switch(driver.ctx_) {
-    case ParserContext::AGENT:
-        return AgentParser::make_CONTROL_SOCKETS(driver.loc_);
+    case ParserContext::AUTHENTICATION:
+        return AgentParser::make_TYPE(driver.loc_);
     default:
-        return AgentParser::make_STRING("control-sockets", driver.loc_);
+        return AgentParser::make_STRING("type", driver.loc_);
     }
 }
        YY_BREAK
@@ -2053,10 +2069,10 @@ YY_RULE_SETUP
 #line 246 "agent_lexer.ll"
 {
     switch(driver.ctx_) {
-    case ParserContext::CONTROL_SOCKETS:
-        return AgentParser::make_DHCP4_SERVER(driver.loc_);
+    case ParserContext::AUTH_TYPE:
+        return AgentParser::make_BASIC(driver.loc_);
     default:
-        return AgentParser::make_STRING("dhcp4", driver.loc_);
+        return AgentParser::make_STRING("basic", driver.loc_);
     }
 }
        YY_BREAK
@@ -2065,10 +2081,10 @@ YY_RULE_SETUP
 #line 255 "agent_lexer.ll"
 {
     switch(driver.ctx_) {
-    case ParserContext::CONTROL_SOCKETS:
-        return AgentParser::make_DHCP6_SERVER(driver.loc_);
+    case ParserContext::AUTHENTICATION:
+        return AgentParser::make_REALM(driver.loc_);
     default:
-        return AgentParser::make_STRING("dhcp6", driver.loc_);
+        return AgentParser::make_STRING("authentication", driver.loc_);
     }
 }
        YY_BREAK
@@ -2077,10 +2093,10 @@ YY_RULE_SETUP
 #line 264 "agent_lexer.ll"
 {
     switch(driver.ctx_) {
-    case ParserContext::CONTROL_SOCKETS:
-        return AgentParser::make_D2_SERVER(driver.loc_);
+    case ParserContext::AUTHENTICATION:
+        return AgentParser::make_CLIENTS(driver.loc_);
     default:
-        return AgentParser::make_STRING("d2", driver.loc_);
+        return AgentParser::make_STRING("clients", driver.loc_);
     }
 }
        YY_BREAK
@@ -2089,10 +2105,10 @@ YY_RULE_SETUP
 #line 273 "agent_lexer.ll"
 {
     switch(driver.ctx_) {
-    case ParserContext::SERVER:
-        return AgentParser::make_SOCKET_NAME(driver.loc_);
+    case ParserContext::CLIENTS:
+        return AgentParser::make_USER(driver.loc_);
     default:
-        return AgentParser::make_STRING("socket-name", driver.loc_);
+        return AgentParser::make_STRING("user", driver.loc_);
     }
 }
        YY_BREAK
@@ -2101,10 +2117,10 @@ YY_RULE_SETUP
 #line 282 "agent_lexer.ll"
 {
     switch(driver.ctx_) {
-    case ParserContext::SERVER:
-        return AgentParser::make_SOCKET_TYPE(driver.loc_);
+    case ParserContext::CLIENTS:
+        return AgentParser::make_PASSWORD(driver.loc_);
     default:
-        return AgentParser::make_STRING("socket-type", driver.loc_);
+        return AgentParser::make_STRING("password", driver.loc_);
     }
 }
        YY_BREAK
@@ -2113,10 +2129,10 @@ YY_RULE_SETUP
 #line 291 "agent_lexer.ll"
 {
     switch(driver.ctx_) {
-    case ParserContext::SOCKET_TYPE:
-        return AgentParser::make_UNIX(driver.loc_);
+    case ParserContext::AGENT:
+        return AgentParser::make_CONTROL_SOCKETS(driver.loc_);
     default:
-        return AgentParser::make_STRING("unix", driver.loc_);
+        return AgentParser::make_STRING("control-sockets", driver.loc_);
     }
 }
        YY_BREAK
@@ -2125,10 +2141,10 @@ YY_RULE_SETUP
 #line 300 "agent_lexer.ll"
 {
     switch(driver.ctx_) {
-    case ParserContext::AGENT:
-        return AgentParser::make_HOOKS_LIBRARIES(driver.loc_);
+    case ParserContext::CONTROL_SOCKETS:
+        return AgentParser::make_DHCP4_SERVER(driver.loc_);
     default:
-        return AgentParser::make_STRING("hooks-libraries", driver.loc_);
+        return AgentParser::make_STRING("dhcp4", driver.loc_);
     }
 }
        YY_BREAK
@@ -2137,10 +2153,10 @@ YY_RULE_SETUP
 #line 309 "agent_lexer.ll"
 {
     switch(driver.ctx_) {
-    case ParserContext::HOOKS_LIBRARIES:
-        return AgentParser::make_LIBRARY(driver.loc_);
+    case ParserContext::CONTROL_SOCKETS:
+        return AgentParser::make_DHCP6_SERVER(driver.loc_);
     default:
-        return AgentParser::make_STRING("library", driver.loc_);
+        return AgentParser::make_STRING("dhcp6", driver.loc_);
     }
 }
        YY_BREAK
@@ -2149,10 +2165,10 @@ YY_RULE_SETUP
 #line 318 "agent_lexer.ll"
 {
     switch(driver.ctx_) {
-    case ParserContext::HOOKS_LIBRARIES:
-        return AgentParser::make_PARAMETERS(driver.loc_);
+    case ParserContext::CONTROL_SOCKETS:
+        return AgentParser::make_D2_SERVER(driver.loc_);
     default:
-        return AgentParser::make_STRING("parameters", driver.loc_);
+        return AgentParser::make_STRING("d2", driver.loc_);
     }
 }
        YY_BREAK
@@ -2161,10 +2177,10 @@ YY_RULE_SETUP
 #line 327 "agent_lexer.ll"
 {
     switch(driver.ctx_) {
-    case ParserContext::AGENT:
-        return AgentParser::make_LOGGERS(driver.loc_);
+    case ParserContext::SERVER:
+        return AgentParser::make_SOCKET_NAME(driver.loc_);
     default:
-        return AgentParser::make_STRING("loggers", driver.loc_);
+        return AgentParser::make_STRING("socket-name", driver.loc_);
     }
 }
        YY_BREAK
@@ -2173,10 +2189,10 @@ YY_RULE_SETUP
 #line 336 "agent_lexer.ll"
 {
     switch(driver.ctx_) {
-    case ParserContext::LOGGERS:
-        return AgentParser::make_NAME(driver.loc_);
+    case ParserContext::SERVER:
+        return AgentParser::make_SOCKET_TYPE(driver.loc_);
     default:
-        return AgentParser::make_STRING("name", driver.loc_);
+        return AgentParser::make_STRING("socket-type", driver.loc_);
     }
 }
        YY_BREAK
@@ -2185,10 +2201,10 @@ YY_RULE_SETUP
 #line 345 "agent_lexer.ll"
 {
     switch(driver.ctx_) {
-    case ParserContext::LOGGERS:
-        return AgentParser::make_OUTPUT_OPTIONS(driver.loc_);
+    case ParserContext::SOCKET_TYPE:
+        return AgentParser::make_UNIX(driver.loc_);
     default:
-        return AgentParser::make_STRING("output_options", driver.loc_);
+        return AgentParser::make_STRING("unix", driver.loc_);
     }
 }
        YY_BREAK
@@ -2197,10 +2213,10 @@ YY_RULE_SETUP
 #line 354 "agent_lexer.ll"
 {
     switch(driver.ctx_) {
-    case ParserContext::OUTPUT_OPTIONS:
-        return AgentParser::make_OUTPUT(driver.loc_);
+    case ParserContext::AGENT:
+        return AgentParser::make_HOOKS_LIBRARIES(driver.loc_);
     default:
-        return AgentParser::make_STRING("output", driver.loc_);
+        return AgentParser::make_STRING("hooks-libraries", driver.loc_);
     }
 }
        YY_BREAK
@@ -2209,10 +2225,10 @@ YY_RULE_SETUP
 #line 363 "agent_lexer.ll"
 {
     switch(driver.ctx_) {
-    case ParserContext::OUTPUT_OPTIONS:
-        return AgentParser::make_FLUSH(driver.loc_);
+    case ParserContext::HOOKS_LIBRARIES:
+        return AgentParser::make_LIBRARY(driver.loc_);
     default:
-        return AgentParser::make_STRING("flush", driver.loc_);
+        return AgentParser::make_STRING("library", driver.loc_);
     }
 }
        YY_BREAK
@@ -2221,10 +2237,10 @@ YY_RULE_SETUP
 #line 372 "agent_lexer.ll"
 {
     switch(driver.ctx_) {
-    case ParserContext::OUTPUT_OPTIONS:
-        return AgentParser::make_MAXSIZE(driver.loc_);
+    case ParserContext::HOOKS_LIBRARIES:
+        return AgentParser::make_PARAMETERS(driver.loc_);
     default:
-        return AgentParser::make_STRING("maxsize", driver.loc_);
+        return AgentParser::make_STRING("parameters", driver.loc_);
     }
 }
        YY_BREAK
@@ -2233,10 +2249,10 @@ YY_RULE_SETUP
 #line 381 "agent_lexer.ll"
 {
     switch(driver.ctx_) {
-    case ParserContext::OUTPUT_OPTIONS:
-        return AgentParser::make_MAXVER(driver.loc_);
+    case ParserContext::AGENT:
+        return AgentParser::make_LOGGERS(driver.loc_);
     default:
-        return AgentParser::make_STRING("maxver", driver.loc_);
+        return AgentParser::make_STRING("loggers", driver.loc_);
     }
 }
        YY_BREAK
@@ -2245,10 +2261,10 @@ YY_RULE_SETUP
 #line 390 "agent_lexer.ll"
 {
     switch(driver.ctx_) {
-    case ParserContext::OUTPUT_OPTIONS:
-        return AgentParser::make_PATTERN(driver.loc_);
+    case ParserContext::LOGGERS:
+        return AgentParser::make_NAME(driver.loc_);
     default:
-        return AgentParser::make_STRING("pattern", driver.loc_);
+        return AgentParser::make_STRING("name", driver.loc_);
     }
 }
        YY_BREAK
@@ -2258,9 +2274,9 @@ YY_RULE_SETUP
 {
     switch(driver.ctx_) {
     case ParserContext::LOGGERS:
-        return AgentParser::make_DEBUGLEVEL(driver.loc_);
+        return AgentParser::make_OUTPUT_OPTIONS(driver.loc_);
     default:
-        return AgentParser::make_STRING("debuglevel", driver.loc_);
+        return AgentParser::make_STRING("output_options", driver.loc_);
     }
 }
        YY_BREAK
@@ -2269,10 +2285,10 @@ YY_RULE_SETUP
 #line 408 "agent_lexer.ll"
 {
     switch(driver.ctx_) {
-    case ParserContext::LOGGERS:
-        return AgentParser::make_SEVERITY(driver.loc_);
+    case ParserContext::OUTPUT_OPTIONS:
+        return AgentParser::make_OUTPUT(driver.loc_);
     default:
-        return AgentParser::make_STRING("severity", driver.loc_);
+        return AgentParser::make_STRING("output", driver.loc_);
     }
 }
        YY_BREAK
@@ -2281,10 +2297,10 @@ YY_RULE_SETUP
 #line 417 "agent_lexer.ll"
 {
     switch(driver.ctx_) {
-    case ParserContext::AGENT:
-        return AgentParser::make_BASIC_AUTHENTICATIONS(driver.loc_);
+    case ParserContext::OUTPUT_OPTIONS:
+        return AgentParser::make_FLUSH(driver.loc_);
     default:
-        return AgentParser::make_STRING("basic-authentications", driver.loc_);
+        return AgentParser::make_STRING("flush", driver.loc_);
     }
 }
        YY_BREAK
@@ -2293,10 +2309,10 @@ YY_RULE_SETUP
 #line 426 "agent_lexer.ll"
 {
     switch(driver.ctx_) {
-    case ParserContext::BASIC_AUTHENTICATIONS:
-        return AgentParser::make_USER(driver.loc_);
+    case ParserContext::OUTPUT_OPTIONS:
+        return AgentParser::make_MAXSIZE(driver.loc_);
     default:
-        return AgentParser::make_STRING("user", driver.loc_);
+        return AgentParser::make_STRING("maxsize", driver.loc_);
     }
 }
        YY_BREAK
@@ -2305,16 +2321,52 @@ YY_RULE_SETUP
 #line 435 "agent_lexer.ll"
 {
     switch(driver.ctx_) {
-    case ParserContext::BASIC_AUTHENTICATIONS:
-        return AgentParser::make_PASSWORD(driver.loc_);
+    case ParserContext::OUTPUT_OPTIONS:
+        return AgentParser::make_MAXVER(driver.loc_);
     default:
-        return AgentParser::make_STRING("password", driver.loc_);
+        return AgentParser::make_STRING("maxver", driver.loc_);
     }
 }
        YY_BREAK
 case 41:
 YY_RULE_SETUP
 #line 444 "agent_lexer.ll"
+{
+    switch(driver.ctx_) {
+    case ParserContext::OUTPUT_OPTIONS:
+        return AgentParser::make_PATTERN(driver.loc_);
+    default:
+        return AgentParser::make_STRING("pattern", driver.loc_);
+    }
+}
+       YY_BREAK
+case 42:
+YY_RULE_SETUP
+#line 453 "agent_lexer.ll"
+{
+    switch(driver.ctx_) {
+    case ParserContext::LOGGERS:
+        return AgentParser::make_DEBUGLEVEL(driver.loc_);
+    default:
+        return AgentParser::make_STRING("debuglevel", driver.loc_);
+    }
+}
+       YY_BREAK
+case 43:
+YY_RULE_SETUP
+#line 462 "agent_lexer.ll"
+{
+    switch(driver.ctx_) {
+    case ParserContext::LOGGERS:
+        return AgentParser::make_SEVERITY(driver.loc_);
+    default:
+        return AgentParser::make_STRING("severity", driver.loc_);
+    }
+}
+       YY_BREAK
+case 44:
+YY_RULE_SETUP
+#line 471 "agent_lexer.ll"
 {
     /* A string has been matched. It contains the actual string and single quotes.
        We need to get those quotes out of the way and just use its content, e.g.
@@ -2414,65 +2466,65 @@ YY_RULE_SETUP
     return AgentParser::make_STRING(decoded, driver.loc_);
 }
        YY_BREAK
-case 42:
-/* rule 42 can match eol */
+case 45:
+/* rule 45 can match eol */
 YY_RULE_SETUP
-#line 543 "agent_lexer.ll"
+#line 570 "agent_lexer.ll"
 {
     /* Bad string with a forbidden control character inside */
     driver.error(driver.loc_, "Invalid control in " + std::string(yytext));
 }
        YY_BREAK
-case 43:
-/* rule 43 can match eol */
+case 46:
+/* rule 46 can match eol */
 YY_RULE_SETUP
-#line 548 "agent_lexer.ll"
+#line 575 "agent_lexer.ll"
 {
     /* Bad string with a bad escape inside */
     driver.error(driver.loc_, "Bad escape in " + std::string(yytext));
 }
        YY_BREAK
-case 44:
+case 47:
 YY_RULE_SETUP
-#line 553 "agent_lexer.ll"
+#line 580 "agent_lexer.ll"
 {
     /* Bad string with an open escape at the end */
     driver.error(driver.loc_, "Overflow escape in " + std::string(yytext));
 }
        YY_BREAK
-case 45:
+case 48:
 YY_RULE_SETUP
-#line 558 "agent_lexer.ll"
+#line 585 "agent_lexer.ll"
 { return AgentParser::make_LSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 46:
+case 49:
 YY_RULE_SETUP
-#line 559 "agent_lexer.ll"
+#line 586 "agent_lexer.ll"
 { return AgentParser::make_RSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 47:
+case 50:
 YY_RULE_SETUP
-#line 560 "agent_lexer.ll"
+#line 587 "agent_lexer.ll"
 { return AgentParser::make_LCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 48:
+case 51:
 YY_RULE_SETUP
-#line 561 "agent_lexer.ll"
+#line 588 "agent_lexer.ll"
 { return AgentParser::make_RCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 49:
+case 52:
 YY_RULE_SETUP
-#line 562 "agent_lexer.ll"
+#line 589 "agent_lexer.ll"
 { return AgentParser::make_COMMA(driver.loc_); }
        YY_BREAK
-case 50:
+case 53:
 YY_RULE_SETUP
-#line 563 "agent_lexer.ll"
+#line 590 "agent_lexer.ll"
 { return AgentParser::make_COLON(driver.loc_); }
        YY_BREAK
-case 51:
+case 54:
 YY_RULE_SETUP
-#line 565 "agent_lexer.ll"
+#line 592 "agent_lexer.ll"
 {
     /* An integer was found. */
     std::string tmp(yytext);
@@ -2491,9 +2543,9 @@ YY_RULE_SETUP
     return AgentParser::make_INTEGER(integer, driver.loc_);
 }
        YY_BREAK
-case 52:
+case 55:
 YY_RULE_SETUP
-#line 583 "agent_lexer.ll"
+#line 610 "agent_lexer.ll"
 {
     /* A floating point was found. */
     std::string tmp(yytext);
@@ -2507,43 +2559,43 @@ YY_RULE_SETUP
     return AgentParser::make_FLOAT(fp, driver.loc_);
 }
        YY_BREAK
-case 53:
+case 56:
 YY_RULE_SETUP
-#line 596 "agent_lexer.ll"
+#line 623 "agent_lexer.ll"
 {
     string tmp(yytext);
     return AgentParser::make_BOOLEAN(tmp == "true", driver.loc_);
 }
        YY_BREAK
-case 54:
+case 57:
 YY_RULE_SETUP
-#line 601 "agent_lexer.ll"
+#line 628 "agent_lexer.ll"
 {
    return AgentParser::make_NULL_TYPE(driver.loc_);
 }
        YY_BREAK
-case 55:
+case 58:
 YY_RULE_SETUP
-#line 605 "agent_lexer.ll"
+#line 632 "agent_lexer.ll"
 driver.error (driver.loc_, "JSON true reserved keyword is lower case only");
        YY_BREAK
-case 56:
+case 59:
 YY_RULE_SETUP
-#line 607 "agent_lexer.ll"
+#line 634 "agent_lexer.ll"
 driver.error (driver.loc_, "JSON false reserved keyword is lower case only");
        YY_BREAK
-case 57:
+case 60:
 YY_RULE_SETUP
-#line 609 "agent_lexer.ll"
+#line 636 "agent_lexer.ll"
 driver.error (driver.loc_, "JSON null reserved keyword is lower case only");
        YY_BREAK
-case 58:
+case 61:
 YY_RULE_SETUP
-#line 611 "agent_lexer.ll"
+#line 638 "agent_lexer.ll"
 driver.error (driver.loc_, "Invalid character: " + std::string(yytext));
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
-#line 613 "agent_lexer.ll"
+#line 640 "agent_lexer.ll"
 {
     if (driver.states_.empty()) {
         return AgentParser::make_END(driver.loc_);
@@ -2567,12 +2619,12 @@ case YY_STATE_EOF(INITIAL):
     BEGIN(DIR_EXIT);
 }
        YY_BREAK
-case 59:
+case 62:
 YY_RULE_SETUP
-#line 636 "agent_lexer.ll"
+#line 663 "agent_lexer.ll"
 ECHO;
        YY_BREAK
-#line 2575 "agent_lexer.cc"
+#line 2627 "agent_lexer.cc"
 
        case YY_END_OF_BUFFER:
                {
@@ -2891,7 +2943,7 @@ static int yy_get_next_buffer (void)
                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 >= 342 )
+                       if ( yy_current_state >= 352 )
                                yy_c = yy_meta[yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
@@ -2924,11 +2976,11 @@ static int yy_get_next_buffer (void)
        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 >= 342 )
+               if ( yy_current_state >= 352 )
                        yy_c = yy_meta[yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
-       yy_is_jam = (yy_current_state == 341);
+       yy_is_jam = (yy_current_state == 351);
 
                return yy_is_jam ? 0 : yy_current_state;
 }
@@ -3677,7 +3729,7 @@ void yyfree (void * ptr )
 
 /* %ok-for-header */
 
-#line 636 "agent_lexer.ll"
+#line 663 "agent_lexer.ll"
 
 
 using namespace isc::dhcp;
index 44a2f86c7a38358f277637511724e7e217158781..afc20206897feedca3cc9fd8c075c50f700e3bbd 100644 (file)
@@ -212,6 +212,7 @@ namespace isc { namespace agent {
       case symbol_kind::S_value: // value
       case symbol_kind::S_map_value: // map_value
       case symbol_kind::S_socket_type_value: // socket_type_value
+      case symbol_kind::S_auth_type_value: // auth_type_value
         value.YY_MOVE_OR_COPY< ElementPtr > (YY_MOVE (that.value));
         break;
 
@@ -249,6 +250,7 @@ namespace isc { namespace agent {
       case symbol_kind::S_value: // value
       case symbol_kind::S_map_value: // map_value
       case symbol_kind::S_socket_type_value: // socket_type_value
+      case symbol_kind::S_auth_type_value: // auth_type_value
         value.move< ElementPtr > (YY_MOVE (that.value));
         break;
 
@@ -286,6 +288,7 @@ namespace isc { namespace agent {
       case symbol_kind::S_value: // value
       case symbol_kind::S_map_value: // map_value
       case symbol_kind::S_socket_type_value: // socket_type_value
+      case symbol_kind::S_auth_type_value: // auth_type_value
         value.copy< ElementPtr > (that.value);
         break;
 
@@ -322,6 +325,7 @@ namespace isc { namespace agent {
       case symbol_kind::S_value: // value
       case symbol_kind::S_map_value: // map_value
       case symbol_kind::S_socket_type_value: // socket_type_value
+      case symbol_kind::S_auth_type_value: // auth_type_value
         value.move< ElementPtr > (that.value);
         break;
 
@@ -378,45 +382,51 @@ namespace isc { namespace agent {
         switch (yykind)
     {
       case symbol_kind::S_STRING: // "constant string"
-#line 104 "agent_parser.yy"
+#line 108 "agent_parser.yy"
                  { yyoutput << yysym.value.template as < std::string > (); }
-#line 384 "agent_parser.cc"
+#line 388 "agent_parser.cc"
         break;
 
       case symbol_kind::S_INTEGER: // "integer"
-#line 104 "agent_parser.yy"
+#line 108 "agent_parser.yy"
                  { yyoutput << yysym.value.template as < int64_t > (); }
-#line 390 "agent_parser.cc"
+#line 394 "agent_parser.cc"
         break;
 
       case symbol_kind::S_FLOAT: // "floating point"
-#line 104 "agent_parser.yy"
+#line 108 "agent_parser.yy"
                  { yyoutput << yysym.value.template as < double > (); }
-#line 396 "agent_parser.cc"
+#line 400 "agent_parser.cc"
         break;
 
       case symbol_kind::S_BOOLEAN: // "boolean"
-#line 104 "agent_parser.yy"
+#line 108 "agent_parser.yy"
                  { yyoutput << yysym.value.template as < bool > (); }
-#line 402 "agent_parser.cc"
+#line 406 "agent_parser.cc"
         break;
 
       case symbol_kind::S_value: // value
-#line 104 "agent_parser.yy"
+#line 108 "agent_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
-#line 408 "agent_parser.cc"
+#line 412 "agent_parser.cc"
         break;
 
       case symbol_kind::S_map_value: // map_value
-#line 104 "agent_parser.yy"
+#line 108 "agent_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
-#line 414 "agent_parser.cc"
+#line 418 "agent_parser.cc"
         break;
 
       case symbol_kind::S_socket_type_value: // socket_type_value
-#line 104 "agent_parser.yy"
+#line 108 "agent_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
-#line 420 "agent_parser.cc"
+#line 424 "agent_parser.cc"
+        break;
+
+      case symbol_kind::S_auth_type_value: // auth_type_value
+#line 108 "agent_parser.yy"
+                 { yyoutput << yysym.value.template as < ElementPtr > (); }
+#line 430 "agent_parser.cc"
         break;
 
       default:
@@ -649,6 +659,7 @@ namespace isc { namespace agent {
       case symbol_kind::S_value: // value
       case symbol_kind::S_map_value: // map_value
       case symbol_kind::S_socket_type_value: // socket_type_value
+      case symbol_kind::S_auth_type_value: // auth_type_value
         yylhs.value.emplace< ElementPtr > ();
         break;
 
@@ -689,206 +700,206 @@ namespace isc { namespace agent {
           switch (yyn)
             {
   case 2: // $@1: %empty
-#line 115 "agent_parser.yy"
+#line 119 "agent_parser.yy"
                        { ctx.ctx_ = ctx.NO_KEYWORDS; }
-#line 695 "agent_parser.cc"
+#line 706 "agent_parser.cc"
     break;
 
   case 4: // $@2: %empty
-#line 116 "agent_parser.yy"
+#line 120 "agent_parser.yy"
                        { ctx.ctx_ = ctx.CONFIG; }
-#line 701 "agent_parser.cc"
+#line 712 "agent_parser.cc"
     break;
 
   case 6: // $@3: %empty
-#line 117 "agent_parser.yy"
+#line 121 "agent_parser.yy"
                        { ctx.ctx_ = ctx.AGENT; }
-#line 707 "agent_parser.cc"
+#line 718 "agent_parser.cc"
     break;
 
   case 8: // $@4: %empty
-#line 125 "agent_parser.yy"
+#line 129 "agent_parser.yy"
                           {
     // Parse the Control-agent map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 717 "agent_parser.cc"
+#line 728 "agent_parser.cc"
     break;
 
   case 9: // sub_agent: "{" $@4 global_params "}"
-#line 129 "agent_parser.yy"
+#line 133 "agent_parser.yy"
                                {
     // parsing completed
 }
-#line 725 "agent_parser.cc"
+#line 736 "agent_parser.cc"
     break;
 
   case 10: // json: value
-#line 136 "agent_parser.yy"
+#line 140 "agent_parser.yy"
             {
     // Push back the JSON value on the stack
     ctx.stack_.push_back(yystack_[0].value.as < ElementPtr > ());
 }
-#line 734 "agent_parser.cc"
+#line 745 "agent_parser.cc"
     break;
 
   case 11: // value: "integer"
-#line 142 "agent_parser.yy"
+#line 146 "agent_parser.yy"
                { yylhs.value.as < ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); }
-#line 740 "agent_parser.cc"
+#line 751 "agent_parser.cc"
     break;
 
   case 12: // value: "floating point"
-#line 143 "agent_parser.yy"
+#line 147 "agent_parser.yy"
              { yylhs.value.as < ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); }
-#line 746 "agent_parser.cc"
+#line 757 "agent_parser.cc"
     break;
 
   case 13: // value: "boolean"
-#line 144 "agent_parser.yy"
+#line 148 "agent_parser.yy"
                { yylhs.value.as < ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); }
-#line 752 "agent_parser.cc"
+#line 763 "agent_parser.cc"
     break;
 
   case 14: // value: "constant string"
-#line 145 "agent_parser.yy"
+#line 149 "agent_parser.yy"
               { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); }
-#line 758 "agent_parser.cc"
+#line 769 "agent_parser.cc"
     break;
 
   case 15: // value: "null"
-#line 146 "agent_parser.yy"
+#line 150 "agent_parser.yy"
                  { yylhs.value.as < ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
-#line 764 "agent_parser.cc"
+#line 775 "agent_parser.cc"
     break;
 
   case 16: // value: map
-#line 147 "agent_parser.yy"
+#line 151 "agent_parser.yy"
            { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
-#line 770 "agent_parser.cc"
+#line 781 "agent_parser.cc"
     break;
 
   case 17: // value: list_generic
-#line 148 "agent_parser.yy"
+#line 152 "agent_parser.yy"
                     { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
-#line 776 "agent_parser.cc"
+#line 787 "agent_parser.cc"
     break;
 
   case 18: // $@5: %empty
-#line 152 "agent_parser.yy"
+#line 156 "agent_parser.yy"
                     {
     // This code is executed when we're about to start parsing
     // the content of the map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 787 "agent_parser.cc"
+#line 798 "agent_parser.cc"
     break;
 
   case 19: // map: "{" $@5 map_content "}"
-#line 157 "agent_parser.yy"
+#line 161 "agent_parser.yy"
                              {
     // map parsing completed. If we ever want to do any wrap up
     // (maybe some sanity checking), this would be the best place
     // for it.
 }
-#line 797 "agent_parser.cc"
+#line 808 "agent_parser.cc"
     break;
 
   case 20: // map_value: map
-#line 163 "agent_parser.yy"
+#line 167 "agent_parser.yy"
                { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
-#line 803 "agent_parser.cc"
+#line 814 "agent_parser.cc"
     break;
 
   case 23: // not_empty_map: "constant string" ":" value
-#line 177 "agent_parser.yy"
+#line 181 "agent_parser.yy"
                                   {
                   // map containing a single entry
                   ctx.stack_.back()->set(yystack_[2].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ());
                   }
-#line 812 "agent_parser.cc"
+#line 823 "agent_parser.cc"
     break;
 
   case 24: // not_empty_map: not_empty_map "," "constant string" ":" value
-#line 181 "agent_parser.yy"
+#line 185 "agent_parser.yy"
                                                       {
                   // map consisting of a shorter map followed by
                   // comma and string:value
                   ctx.stack_.back()->set(yystack_[2].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ());
                   }
-#line 822 "agent_parser.cc"
+#line 833 "agent_parser.cc"
     break;
 
   case 25: // $@6: %empty
-#line 188 "agent_parser.yy"
+#line 192 "agent_parser.yy"
                               {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(l);
 }
-#line 831 "agent_parser.cc"
+#line 842 "agent_parser.cc"
     break;
 
   case 26: // list_generic: "[" $@6 list_content "]"
-#line 191 "agent_parser.yy"
+#line 195 "agent_parser.yy"
                                {
 }
-#line 838 "agent_parser.cc"
+#line 849 "agent_parser.cc"
     break;
 
   case 29: // not_empty_list: value
-#line 198 "agent_parser.yy"
+#line 202 "agent_parser.yy"
                       {
                   // List consisting of a single element.
                   ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ());
                   }
-#line 847 "agent_parser.cc"
+#line 858 "agent_parser.cc"
     break;
 
   case 30: // not_empty_list: not_empty_list "," value
-#line 202 "agent_parser.yy"
+#line 206 "agent_parser.yy"
                                            {
                   // List ending with , and a value.
                   ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ());
                   }
-#line 856 "agent_parser.cc"
+#line 867 "agent_parser.cc"
     break;
 
   case 31: // unknown_map_entry: "constant string" ":"
-#line 215 "agent_parser.yy"
+#line 219 "agent_parser.yy"
                                 {
     const std::string& where = ctx.contextName();
     const std::string& keyword = yystack_[1].value.as < std::string > ();
     error(yystack_[1].location,
           "got unexpected keyword \"" + keyword + "\" in " + where + " map.");
 }
-#line 867 "agent_parser.cc"
+#line 878 "agent_parser.cc"
     break;
 
   case 32: // $@7: %empty
-#line 223 "agent_parser.yy"
+#line 227 "agent_parser.yy"
                                  {
     // This code is executed when we're about to start parsing
     // the content of the map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 878 "agent_parser.cc"
+#line 889 "agent_parser.cc"
     break;
 
   case 33: // agent_syntax_map: "{" $@7 global_objects "}"
-#line 228 "agent_parser.yy"
+#line 232 "agent_parser.yy"
                                 {
     // map parsing completed. If we ever want to do any wrap up
     // (maybe some sanity checking), this would be the best place
     // for it.
 }
-#line 888 "agent_parser.cc"
+#line 899 "agent_parser.cc"
     break;
 
   case 36: // $@8: %empty
-#line 243 "agent_parser.yy"
+#line 247 "agent_parser.yy"
                             {
 
     // Let's create a MapElement that will represent it, add it to the
@@ -900,75 +911,57 @@ namespace isc { namespace agent {
     ctx.stack_.push_back(m);
     ctx.enter(ctx.AGENT);
 }
-#line 904 "agent_parser.cc"
+#line 915 "agent_parser.cc"
     break;
 
   case 37: // agent_object: "Control-agent" $@8 ":" "{" global_params "}"
-#line 253 "agent_parser.yy"
+#line 257 "agent_parser.yy"
                                                     {
     // Ok, we're done with parsing control-agent. Let's take the map
     // off the stack.
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 915 "agent_parser.cc"
+#line 926 "agent_parser.cc"
     break;
 
-  case 50: // $@9: %empty
-#line 278 "agent_parser.yy"
+  case 49: // $@9: %empty
+#line 281 "agent_parser.yy"
                      {
     ctx.enter(ctx.NO_KEYWORDS);
 }
-#line 923 "agent_parser.cc"
+#line 934 "agent_parser.cc"
     break;
 
-  case 51: // http_host: "http-host" $@9 ":" "constant string"
-#line 280 "agent_parser.yy"
+  case 50: // http_host: "http-host" $@9 ":" "constant string"
+#line 283 "agent_parser.yy"
                {
     ElementPtr host(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("http-host", host);
     ctx.leave();
 }
-#line 933 "agent_parser.cc"
+#line 944 "agent_parser.cc"
     break;
 
-  case 52: // http_port: "http-port" ":" "integer"
-#line 286 "agent_parser.yy"
+  case 51: // http_port: "http-port" ":" "integer"
+#line 289 "agent_parser.yy"
                                    {
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("http-port", prf);
 }
-#line 942 "agent_parser.cc"
-    break;
-
-  case 53: // $@10: %empty
-#line 291 "agent_parser.yy"
-                                                       {
-    ctx.enter(ctx.NO_KEYWORDS);
-}
-#line 950 "agent_parser.cc"
-    break;
-
-  case 54: // basic_authentication_realm: "basic-authentication-realm" $@10 ":" "constant string"
-#line 293 "agent_parser.yy"
-               {
-    ElementPtr realm(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
-    ctx.stack_.back()->set("basic-authentication-realm", realm);
-    ctx.leave();
-}
-#line 960 "agent_parser.cc"
+#line 953 "agent_parser.cc"
     break;
 
-  case 55: // $@11: %empty
-#line 299 "agent_parser.yy"
+  case 52: // $@10: %empty
+#line 294 "agent_parser.yy"
                            {
     ctx.enter(ctx.NO_KEYWORDS);
 }
-#line 968 "agent_parser.cc"
+#line 961 "agent_parser.cc"
     break;
 
-  case 56: // user_context: "user-context" $@11 ":" map_value
-#line 301 "agent_parser.yy"
+  case 53: // user_context: "user-context" $@10 ":" map_value
+#line 296 "agent_parser.yy"
                   {
     ElementPtr parent = ctx.stack_.back();
     ElementPtr user_context = yystack_[0].value.as < ElementPtr > ();
@@ -991,19 +984,19 @@ namespace isc { namespace agent {
     parent->set("user-context", user_context);
     ctx.leave();
 }
-#line 995 "agent_parser.cc"
+#line 988 "agent_parser.cc"
     break;
 
-  case 57: // $@12: %empty
-#line 324 "agent_parser.yy"
+  case 54: // $@11: %empty
+#line 319 "agent_parser.yy"
                  {
     ctx.enter(ctx.NO_KEYWORDS);
 }
-#line 1003 "agent_parser.cc"
+#line 996 "agent_parser.cc"
     break;
 
-  case 58: // comment: "comment" $@12 ":" "constant string"
-#line 326 "agent_parser.yy"
+  case 55: // comment: "comment" $@11 ":" "constant string"
+#line 321 "agent_parser.yy"
                {
     ElementPtr parent = ctx.stack_.back();
     ElementPtr user_context(new MapElement(ctx.loc2pos(yystack_[3].location)));
@@ -1028,463 +1021,530 @@ namespace isc { namespace agent {
     parent->set("user-context", user_context);
     ctx.leave();
 }
-#line 1032 "agent_parser.cc"
+#line 1025 "agent_parser.cc"
     break;
 
-  case 59: // $@13: %empty
-#line 352 "agent_parser.yy"
+  case 56: // $@12: %empty
+#line 347 "agent_parser.yy"
                                  {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hooks-libraries", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.HOOKS_LIBRARIES);
 }
-#line 1043 "agent_parser.cc"
+#line 1036 "agent_parser.cc"
     break;
 
-  case 60: // hooks_libraries: "hooks-libraries" $@13 ":" "[" hooks_libraries_list "]"
-#line 357 "agent_parser.yy"
+  case 57: // hooks_libraries: "hooks-libraries" $@12 ":" "[" hooks_libraries_list "]"
+#line 352 "agent_parser.yy"
                                                              {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1052 "agent_parser.cc"
+#line 1045 "agent_parser.cc"
     break;
 
-  case 65: // $@14: %empty
-#line 370 "agent_parser.yy"
+  case 62: // $@13: %empty
+#line 365 "agent_parser.yy"
                               {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 1062 "agent_parser.cc"
+#line 1055 "agent_parser.cc"
     break;
 
-  case 66: // hooks_library: "{" $@14 hooks_params "}"
-#line 374 "agent_parser.yy"
+  case 63: // hooks_library: "{" $@13 hooks_params "}"
+#line 369 "agent_parser.yy"
                               {
     ctx.stack_.pop_back();
 }
-#line 1070 "agent_parser.cc"
+#line 1063 "agent_parser.cc"
     break;
 
-  case 72: // $@15: %empty
-#line 387 "agent_parser.yy"
+  case 69: // $@14: %empty
+#line 382 "agent_parser.yy"
                  {
     ctx.enter(ctx.NO_KEYWORDS);
 }
-#line 1078 "agent_parser.cc"
+#line 1071 "agent_parser.cc"
     break;
 
-  case 73: // library: "library" $@15 ":" "constant string"
-#line 389 "agent_parser.yy"
+  case 70: // library: "library" $@14 ":" "constant string"
+#line 384 "agent_parser.yy"
                {
     ElementPtr lib(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("library", lib);
     ctx.leave();
 }
-#line 1088 "agent_parser.cc"
+#line 1081 "agent_parser.cc"
     break;
 
-  case 74: // $@16: %empty
-#line 395 "agent_parser.yy"
+  case 71: // $@15: %empty
+#line 390 "agent_parser.yy"
                        {
     ctx.enter(ctx.NO_KEYWORDS);
 }
-#line 1096 "agent_parser.cc"
+#line 1089 "agent_parser.cc"
     break;
 
-  case 75: // parameters: "parameters" $@16 ":" map_value
-#line 397 "agent_parser.yy"
+  case 72: // parameters: "parameters" $@15 ":" map_value
+#line 392 "agent_parser.yy"
                   {
     ctx.stack_.back()->set("parameters", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 1105 "agent_parser.cc"
+#line 1098 "agent_parser.cc"
     break;
 
-  case 76: // $@17: %empty
-#line 405 "agent_parser.yy"
+  case 73: // $@16: %empty
+#line 400 "agent_parser.yy"
                                                       {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[2].location)));
     ctx.stack_.back()->set("control-sockets", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.CONTROL_SOCKETS);
 }
-#line 1116 "agent_parser.cc"
+#line 1109 "agent_parser.cc"
     break;
 
-  case 77: // control_sockets: "control-sockets" ":" "{" $@17 control_sockets_params "}"
-#line 410 "agent_parser.yy"
+  case 74: // control_sockets: "control-sockets" ":" "{" $@16 control_sockets_params "}"
+#line 405 "agent_parser.yy"
                                         {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1125 "agent_parser.cc"
+#line 1118 "agent_parser.cc"
     break;
 
-  case 84: // $@18: %empty
-#line 431 "agent_parser.yy"
+  case 81: // $@17: %empty
+#line 426 "agent_parser.yy"
                                   {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("dhcp4", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.SERVER);
 }
-#line 1136 "agent_parser.cc"
+#line 1129 "agent_parser.cc"
     break;
 
-  case 85: // dhcp4_server_socket: "dhcp4" $@18 ":" "{" control_socket_params "}"
-#line 436 "agent_parser.yy"
+  case 82: // dhcp4_server_socket: "dhcp4" $@17 ":" "{" control_socket_params "}"
+#line 431 "agent_parser.yy"
                                                             {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1145 "agent_parser.cc"
+#line 1138 "agent_parser.cc"
     break;
 
-  case 86: // $@19: %empty
-#line 442 "agent_parser.yy"
+  case 83: // $@18: %empty
+#line 437 "agent_parser.yy"
                                   {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("dhcp6", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.SERVER);
 }
-#line 1156 "agent_parser.cc"
+#line 1149 "agent_parser.cc"
     break;
 
-  case 87: // dhcp6_server_socket: "dhcp6" $@19 ":" "{" control_socket_params "}"
-#line 447 "agent_parser.yy"
+  case 84: // dhcp6_server_socket: "dhcp6" $@18 ":" "{" control_socket_params "}"
+#line 442 "agent_parser.yy"
                                                             {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1165 "agent_parser.cc"
+#line 1158 "agent_parser.cc"
     break;
 
-  case 88: // $@20: %empty
-#line 453 "agent_parser.yy"
+  case 85: // $@19: %empty
+#line 448 "agent_parser.yy"
                             {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("d2", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.SERVER);
 }
-#line 1176 "agent_parser.cc"
+#line 1169 "agent_parser.cc"
     break;
 
-  case 89: // d2_server_socket: "d2" $@20 ":" "{" control_socket_params "}"
-#line 458 "agent_parser.yy"
+  case 86: // d2_server_socket: "d2" $@19 ":" "{" control_socket_params "}"
+#line 453 "agent_parser.yy"
                                                             {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1185 "agent_parser.cc"
+#line 1178 "agent_parser.cc"
     break;
 
-  case 97: // $@21: %empty
-#line 477 "agent_parser.yy"
+  case 94: // $@20: %empty
+#line 472 "agent_parser.yy"
                          {
     ctx.enter(ctx.NO_KEYWORDS);
 }
-#line 1193 "agent_parser.cc"
+#line 1186 "agent_parser.cc"
     break;
 
-  case 98: // socket_name: "socket-name" $@21 ":" "constant string"
-#line 479 "agent_parser.yy"
+  case 95: // socket_name: "socket-name" $@20 ":" "constant string"
+#line 474 "agent_parser.yy"
                {
     ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("socket-name", name);
     ctx.leave();
 }
-#line 1203 "agent_parser.cc"
+#line 1196 "agent_parser.cc"
     break;
 
-  case 99: // $@22: %empty
-#line 486 "agent_parser.yy"
+  case 96: // $@21: %empty
+#line 481 "agent_parser.yy"
                          {
     ctx.enter(ctx.SOCKET_TYPE);
 }
-#line 1211 "agent_parser.cc"
+#line 1204 "agent_parser.cc"
     break;
 
-  case 100: // socket_type: "socket-type" $@22 ":" socket_type_value
-#line 488 "agent_parser.yy"
+  case 97: // socket_type: "socket-type" $@21 ":" socket_type_value
+#line 483 "agent_parser.yy"
                           {
     ctx.stack_.back()->set("socket-type", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 1220 "agent_parser.cc"
+#line 1213 "agent_parser.cc"
     break;
 
-  case 101: // socket_type_value: "unix"
-#line 494 "agent_parser.yy"
+  case 98: // socket_type_value: "unix"
+#line 489 "agent_parser.yy"
                          { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("unix", ctx.loc2pos(yystack_[0].location))); }
-#line 1226 "agent_parser.cc"
+#line 1219 "agent_parser.cc"
+    break;
+
+  case 99: // $@22: %empty
+#line 496 "agent_parser.yy"
+                               {
+    // Add unique here
+    ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("authentication", m);
+    ctx.stack_.push_back(m);
+    ctx.enter(ctx.AUTHENTICATION);
+}
+#line 1231 "agent_parser.cc"
+    break;
+
+  case 100: // authentication: "authentication" $@22 ":" "{" auth_params "}"
+#line 502 "agent_parser.yy"
+                                                  {
+    // The type parameter is required
+    ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
+    ctx.stack_.pop_back();
+    ctx.leave();
+}
+#line 1242 "agent_parser.cc"
+    break;
+
+  case 106: // $@23: %empty
+#line 518 "agent_parser.yy"
+                {
+    // Add unique here
+    ctx.enter(ctx.AUTH_TYPE);
+}
+#line 1251 "agent_parser.cc"
     break;
 
-  case 102: // $@23: %empty
-#line 501 "agent_parser.yy"
-                                             {
+  case 107: // auth_type: "type" $@23 ":" auth_type_value
+#line 521 "agent_parser.yy"
+                        {
+    ctx.stack_.back()->set("type", yystack_[0].value.as < ElementPtr > ());
+    ctx.leave();
+}
+#line 1260 "agent_parser.cc"
+    break;
+
+  case 108: // auth_type_value: "basic"
+#line 526 "agent_parser.yy"
+                       { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("basic", ctx.loc2pos(yystack_[0].location))); }
+#line 1266 "agent_parser.cc"
+    break;
+
+  case 109: // $@24: %empty
+#line 529 "agent_parser.yy"
+             {
+    // Add unique here
+    ctx.enter(ctx.NO_KEYWORD);
+}
+#line 1275 "agent_parser.cc"
+    break;
+
+  case 110: // realm: "realm" $@24 ":" "constant string"
+#line 532 "agent_parser.yy"
+               {
+    ElementPtr realm(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("realm", realm);
+    ctx.leave();
+}
+#line 1285 "agent_parser.cc"
+    break;
+
+  case 111: // $@25: %empty
+#line 538 "agent_parser.yy"
+                 {
+    // Add unique here
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
-    ctx.stack_.back()->set("basic-authentications", l);
+    ctx.stack_.back()->set("clients", l);
     ctx.stack_.push_back(l);
-    ctx.enter(ctx.BASIC_AUTHENTICATIONS);
+    ctx.enter(ctx.CLIENTS);
 }
-#line 1237 "agent_parser.cc"
+#line 1297 "agent_parser.cc"
     break;
 
-  case 103: // basic_authentications: "basic-authentications" $@23 ":" "[" basic_auth_list "]"
-#line 506 "agent_parser.yy"
-                                                        {
+  case 112: // clients: "clients" $@25 ":" "[" clients_list "]"
+#line 544 "agent_parser.yy"
+                                                     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1246 "agent_parser.cc"
+#line 1306 "agent_parser.cc"
     break;
 
-  case 108: // $@24: %empty
-#line 519 "agent_parser.yy"
+  case 117: // $@26: %empty
+#line 557 "agent_parser.yy"
                            {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 1256 "agent_parser.cc"
+#line 1316 "agent_parser.cc"
     break;
 
-  case 109: // basic_auth: "{" $@24 basic_auth_params "}"
-#line 523 "agent_parser.yy"
-                                   {
+  case 118: // basic_auth: "{" $@26 clients_params "}"
+#line 561 "agent_parser.yy"
+                                {
     ctx.stack_.pop_back();
 }
-#line 1264 "agent_parser.cc"
+#line 1324 "agent_parser.cc"
     break;
 
-  case 117: // $@25: %empty
-#line 538 "agent_parser.yy"
+  case 126: // $@27: %empty
+#line 576 "agent_parser.yy"
            {
     ctx.enter(ctx.NO_KEYWORDS);
 }
-#line 1272 "agent_parser.cc"
+#line 1332 "agent_parser.cc"
     break;
 
-  case 118: // user: "user" $@25 ":" "constant string"
-#line 540 "agent_parser.yy"
+  case 127: // user: "user" $@27 ":" "constant string"
+#line 578 "agent_parser.yy"
                {
     ElementPtr user(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("user", user);
     ctx.leave();
 }
-#line 1282 "agent_parser.cc"
+#line 1342 "agent_parser.cc"
     break;
 
-  case 119: // $@26: %empty
-#line 546 "agent_parser.yy"
+  case 128: // $@28: %empty
+#line 584 "agent_parser.yy"
                    {
     ctx.enter(ctx.NO_KEYWORDS);
 }
-#line 1290 "agent_parser.cc"
+#line 1350 "agent_parser.cc"
     break;
 
-  case 120: // password: "password" $@26 ":" "constant string"
-#line 548 "agent_parser.yy"
+  case 129: // password: "password" $@28 ":" "constant string"
+#line 586 "agent_parser.yy"
                {
     ElementPtr password(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("password", password);
     ctx.leave();
 }
-#line 1300 "agent_parser.cc"
+#line 1360 "agent_parser.cc"
     break;
 
-  case 121: // $@27: %empty
-#line 558 "agent_parser.yy"
+  case 130: // $@29: %empty
+#line 596 "agent_parser.yy"
                  {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("loggers", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.LOGGERS);
 }
-#line 1311 "agent_parser.cc"
+#line 1371 "agent_parser.cc"
     break;
 
-  case 122: // loggers: "loggers" $@27 ":" "[" loggers_entries "]"
-#line 563 "agent_parser.yy"
+  case 131: // loggers: "loggers" $@29 ":" "[" loggers_entries "]"
+#line 601 "agent_parser.yy"
                                                          {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1320 "agent_parser.cc"
+#line 1380 "agent_parser.cc"
     break;
 
-  case 125: // $@28: %empty
-#line 575 "agent_parser.yy"
+  case 134: // $@30: %empty
+#line 613 "agent_parser.yy"
                              {
     ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(l);
     ctx.stack_.push_back(l);
 }
-#line 1330 "agent_parser.cc"
+#line 1390 "agent_parser.cc"
     break;
 
-  case 126: // logger_entry: "{" $@28 logger_params "}"
-#line 579 "agent_parser.yy"
+  case 135: // logger_entry: "{" $@30 logger_params "}"
+#line 617 "agent_parser.yy"
                                {
     ctx.stack_.pop_back();
 }
-#line 1338 "agent_parser.cc"
+#line 1398 "agent_parser.cc"
     break;
 
-  case 136: // $@29: %empty
-#line 596 "agent_parser.yy"
+  case 145: // $@31: %empty
+#line 634 "agent_parser.yy"
            {
     ctx.enter(ctx.NO_KEYWORDS);
 }
-#line 1346 "agent_parser.cc"
+#line 1406 "agent_parser.cc"
     break;
 
-  case 137: // name: "name" $@29 ":" "constant string"
-#line 598 "agent_parser.yy"
+  case 146: // name: "name" $@31 ":" "constant string"
+#line 636 "agent_parser.yy"
                {
     ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("name", name);
     ctx.leave();
 }
-#line 1356 "agent_parser.cc"
+#line 1416 "agent_parser.cc"
     break;
 
-  case 138: // debuglevel: "debuglevel" ":" "integer"
-#line 604 "agent_parser.yy"
+  case 147: // debuglevel: "debuglevel" ":" "integer"
+#line 642 "agent_parser.yy"
                                      {
     ElementPtr dl(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("debuglevel", dl);
 }
-#line 1365 "agent_parser.cc"
+#line 1425 "agent_parser.cc"
     break;
 
-  case 139: // $@30: %empty
-#line 609 "agent_parser.yy"
+  case 148: // $@32: %empty
+#line 647 "agent_parser.yy"
                    {
     ctx.enter(ctx.NO_KEYWORDS);
 }
-#line 1373 "agent_parser.cc"
+#line 1433 "agent_parser.cc"
     break;
 
-  case 140: // severity: "severity" $@30 ":" "constant string"
-#line 611 "agent_parser.yy"
+  case 149: // severity: "severity" $@32 ":" "constant string"
+#line 649 "agent_parser.yy"
                {
     ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("severity", sev);
     ctx.leave();
 }
-#line 1383 "agent_parser.cc"
+#line 1443 "agent_parser.cc"
     break;
 
-  case 141: // $@31: %empty
-#line 617 "agent_parser.yy"
+  case 150: // $@33: %empty
+#line 655 "agent_parser.yy"
                                     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("output_options", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.OUTPUT_OPTIONS);
 }
-#line 1394 "agent_parser.cc"
+#line 1454 "agent_parser.cc"
     break;
 
-  case 142: // output_options_list: "output_options" $@31 ":" "[" output_options_list_content "]"
-#line 622 "agent_parser.yy"
+  case 151: // output_options_list: "output_options" $@33 ":" "[" output_options_list_content "]"
+#line 660 "agent_parser.yy"
                                                                     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1403 "agent_parser.cc"
+#line 1463 "agent_parser.cc"
     break;
 
-  case 145: // $@32: %empty
-#line 631 "agent_parser.yy"
+  case 154: // $@34: %empty
+#line 669 "agent_parser.yy"
                              {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 1413 "agent_parser.cc"
+#line 1473 "agent_parser.cc"
     break;
 
-  case 146: // output_entry: "{" $@32 output_params_list "}"
-#line 635 "agent_parser.yy"
+  case 155: // output_entry: "{" $@34 output_params_list "}"
+#line 673 "agent_parser.yy"
                                     {
     ctx.stack_.pop_back();
 }
-#line 1421 "agent_parser.cc"
+#line 1481 "agent_parser.cc"
     break;
 
-  case 154: // $@33: %empty
-#line 650 "agent_parser.yy"
+  case 163: // $@35: %empty
+#line 688 "agent_parser.yy"
                {
     ctx.enter(ctx.NO_KEYWORDS);
 }
-#line 1429 "agent_parser.cc"
+#line 1489 "agent_parser.cc"
     break;
 
-  case 155: // output: "output" $@33 ":" "constant string"
-#line 652 "agent_parser.yy"
+  case 164: // output: "output" $@35 ":" "constant string"
+#line 690 "agent_parser.yy"
                {
     ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("output", sev);
     ctx.leave();
 }
-#line 1439 "agent_parser.cc"
+#line 1499 "agent_parser.cc"
     break;
 
-  case 156: // flush: "flush" ":" "boolean"
-#line 658 "agent_parser.yy"
+  case 165: // flush: "flush" ":" "boolean"
+#line 696 "agent_parser.yy"
                            {
     ElementPtr flush(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("flush", flush);
 }
-#line 1448 "agent_parser.cc"
+#line 1508 "agent_parser.cc"
     break;
 
-  case 157: // maxsize: "maxsize" ":" "integer"
-#line 663 "agent_parser.yy"
+  case 166: // maxsize: "maxsize" ":" "integer"
+#line 701 "agent_parser.yy"
                                {
     ElementPtr maxsize(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("maxsize", maxsize);
 }
-#line 1457 "agent_parser.cc"
+#line 1517 "agent_parser.cc"
     break;
 
-  case 158: // maxver: "maxver" ":" "integer"
-#line 668 "agent_parser.yy"
+  case 167: // maxver: "maxver" ":" "integer"
+#line 706 "agent_parser.yy"
                              {
     ElementPtr maxver(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("maxver", maxver);
 }
-#line 1466 "agent_parser.cc"
+#line 1526 "agent_parser.cc"
     break;
 
-  case 159: // $@34: %empty
-#line 673 "agent_parser.yy"
+  case 168: // $@36: %empty
+#line 711 "agent_parser.yy"
                  {
     ctx.enter(ctx.NO_KEYWORDS);
 }
-#line 1474 "agent_parser.cc"
+#line 1534 "agent_parser.cc"
     break;
 
-  case 160: // pattern: "pattern" $@34 ":" "constant string"
-#line 675 "agent_parser.yy"
+  case 169: // pattern: "pattern" $@36 ":" "constant string"
+#line 713 "agent_parser.yy"
                {
     ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("pattern", sev);
     ctx.leave();
 }
-#line 1484 "agent_parser.cc"
+#line 1544 "agent_parser.cc"
     break;
 
 
-#line 1488 "agent_parser.cc"
+#line 1548 "agent_parser.cc"
 
             default:
               break;
@@ -1833,40 +1893,42 @@ namespace isc { namespace agent {
   }
 
 
-  const short AgentParser::yypact_ninf_ = -140;
+  const short AgentParser::yypact_ninf_ = -133;
 
   const signed char AgentParser::yytable_ninf_ = -1;
 
   const short
   AgentParser::yypact_[] =
   {
-      75,  -140,  -140,  -140,     4,     2,     1,     3,  -140,  -140,
-    -140,  -140,  -140,  -140,  -140,  -140,  -140,  -140,  -140,  -140,
-    -140,  -140,  -140,  -140,     2,   -36,    39,     6,  -140,    56,
-       9,    59,    62,    61,  -140,    63,  -140,  -140,  -140,    98,
-    -140,  -140,  -140,   100,  -140,  -140,  -140,   105,  -140,    28,
-    -140,  -140,  -140,  -140,  -140,  -140,  -140,  -140,  -140,  -140,
-    -140,     2,     2,  -140,    50,   106,  -140,   113,    80,   114,
-     115,   116,    92,   117,   118,   120,  -140,     6,  -140,  -140,
-    -140,   121,   122,    89,  -140,    90,   123,    91,  -140,   129,
-     130,   131,  -140,     2,     6,  -140,  -140,  -140,  -140,  -140,
-      41,   132,   133,   134,  -140,    58,  -140,  -140,  -140,  -140,
-      76,  -140,  -140,  -140,  -140,  -140,   136,   124,  -140,  -140,
-     137,   125,  -140,  -140,    94,  -140,  -140,   140,   141,   142,
-      41,  -140,    -1,  -140,   132,   -12,  -140,   133,    23,   134,
-    -140,   143,   144,   145,  -140,  -140,  -140,  -140,  -140,  -140,
-      77,  -140,  -140,  -140,  -140,  -140,  -140,  -140,    78,  -140,
-    -140,  -140,  -140,  -140,  -140,   149,  -140,  -140,  -140,  -140,
-      79,  -140,  -140,  -140,  -140,  -140,  -140,    13,    13,    13,
-     150,   154,    -1,  -140,   155,   156,    -2,  -140,   157,   158,
-     104,   159,    23,  -140,  -140,  -140,  -140,  -140,  -140,    85,
-    -140,  -140,  -140,    86,    87,    96,   107,  -140,   126,   123,
-    -140,   127,   165,  -140,   135,  -140,   160,   167,    13,  -140,
-    -140,  -140,  -140,  -140,  -140,  -140,  -140,   166,  -140,   138,
-     152,  -140,  -140,    95,  -140,  -140,  -140,  -140,    40,   166,
-    -140,  -140,   168,   171,   172,  -140,    88,  -140,  -140,  -140,
-    -140,  -140,  -140,  -140,   174,   103,   139,   146,   175,    40,
-    -140,   148,  -140,  -140,  -140,   151,  -140,  -140,  -140
+      59,  -133,  -133,  -133,     8,     5,     6,    13,  -133,  -133,
+    -133,  -133,  -133,  -133,  -133,  -133,  -133,  -133,  -133,  -133,
+    -133,  -133,  -133,  -133,     5,   -34,    18,    10,  -133,    48,
+      83,    58,    96,   102,  -133,    98,  -133,  -133,  -133,   104,
+    -133,  -133,  -133,   106,  -133,  -133,   107,  -133,     1,  -133,
+    -133,  -133,  -133,  -133,  -133,  -133,  -133,  -133,  -133,     5,
+       5,  -133,    70,   112,  -133,   113,    72,   115,   116,   117,
+     118,   119,   120,  -133,    10,  -133,  -133,  -133,   123,   121,
+      88,  -133,   122,    89,   124,  -133,   125,   127,  -133,     5,
+      10,  -133,  -133,  -133,  -133,    80,    -8,   128,   129,  -133,
+      28,  -133,  -133,  -133,    73,  -133,  -133,  -133,  -133,  -133,
+    -133,  -133,  -133,    74,  -133,  -133,  -133,  -133,  -133,   131,
+     135,  -133,  -133,    55,  -133,  -133,   136,   137,   138,    80,
+    -133,   139,   140,   141,    -8,  -133,   -12,  -133,   128,    -7,
+     129,  -133,   105,   101,   134,  -133,   142,   143,   144,  -133,
+    -133,  -133,  -133,    75,  -133,  -133,  -133,  -133,  -133,  -133,
+     148,  -133,  -133,  -133,  -133,    76,  -133,  -133,  -133,  -133,
+    -133,  -133,  -133,  -133,  -133,   146,    30,    30,    30,   150,
+     151,     4,  -133,   152,   153,   126,   154,    -7,  -133,  -133,
+     157,   145,  -133,  -133,  -133,  -133,  -133,  -133,    77,  -133,
+    -133,  -133,    84,    85,   114,   122,  -133,   130,   159,  -133,
+     132,  -133,    46,  -133,   146,   161,   162,    30,  -133,  -133,
+    -133,  -133,  -133,  -133,   160,  -133,  -133,  -133,  -133,  -133,
+    -133,    86,  -133,  -133,  -133,  -133,   133,   155,  -133,  -133,
+      94,  -133,   164,   165,    46,  -133,  -133,  -133,  -133,    33,
+     160,  -133,   147,   149,  -133,  -133,   166,   167,   169,  -133,
+      87,  -133,  -133,  -133,  -133,  -133,  -133,  -133,  -133,  -133,
+     170,    99,   156,   158,   172,    33,  -133,   163,  -133,  -133,
+    -133,   168,  -133,  -133,  -133
   };
 
   const unsigned char
@@ -1875,166 +1937,174 @@ namespace isc { namespace agent {
        0,     2,     4,     6,     0,     0,     0,     0,     1,    25,
       18,    15,    14,    11,    12,    13,     3,    10,    16,    17,
       32,     5,     8,     7,    27,    21,     0,     0,    29,     0,
-      28,     0,     0,    22,    36,     0,    34,    35,    50,     0,
-      53,    55,    57,     0,   102,    59,   121,     0,    49,     0,
-      38,    40,    41,    42,    47,    48,    45,    43,    44,    46,
-      26,     0,     0,    19,     0,     0,    33,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    31,     0,     9,    30,
-      23,     0,     0,     0,    52,     0,     0,     0,    76,     0,
-       0,     0,    39,     0,     0,    51,    54,    20,    56,    58,
-       0,   104,    61,     0,    24,     0,    84,    86,    88,    83,
-       0,    78,    80,    81,    82,   108,     0,   105,   106,    65,
-       0,    62,    63,   125,     0,   123,    37,     0,     0,     0,
-       0,    77,     0,   103,     0,     0,    60,     0,     0,     0,
-     122,     0,     0,     0,    79,   117,   119,   116,   114,   115,
-       0,   110,   112,   113,   107,    72,    74,    69,     0,    67,
-      70,    71,    64,   136,   141,     0,   139,   135,   133,   134,
-       0,   127,   129,   131,   132,   130,   124,     0,     0,     0,
-       0,     0,     0,   109,     0,     0,     0,    66,     0,     0,
-       0,     0,     0,   126,    97,    99,    96,    94,    95,     0,
-      90,    92,    93,     0,     0,     0,     0,   111,     0,     0,
-      68,     0,     0,   138,     0,   128,     0,     0,     0,    85,
-      87,    89,   118,   120,    73,    75,   137,     0,   140,     0,
-       0,    91,   145,     0,   143,    98,   101,   100,     0,     0,
-     142,   154,     0,     0,     0,   159,     0,   147,   149,   150,
-     151,   152,   153,   144,     0,     0,     0,     0,     0,     0,
-     146,     0,   156,   157,   158,     0,   148,   155,   160
+      28,     0,     0,    22,    36,     0,    34,    35,    49,     0,
+      52,    54,    99,     0,    56,   130,     0,    48,     0,    38,
+      40,    41,    46,    47,    44,    43,    42,    45,    26,     0,
+       0,    19,     0,     0,    33,     0,     0,     0,     0,     0,
+       0,     0,     0,    31,     0,     9,    30,    23,     0,     0,
+       0,    51,     0,     0,     0,    73,     0,     0,    39,     0,
+       0,    50,    20,    53,    55,     0,     0,    58,     0,    24,
+       0,   106,   109,   111,     0,   101,   103,   104,   105,    81,
+      83,    85,    80,     0,    75,    77,    78,    79,    62,     0,
+      59,    60,   134,     0,   132,    37,     0,     0,     0,     0,
+     100,     0,     0,     0,     0,    74,     0,    57,     0,     0,
+       0,   131,     0,     0,     0,   102,     0,     0,     0,    76,
+      69,    71,    66,     0,    64,    67,    68,    61,   145,   150,
+       0,   148,   144,   142,   143,     0,   136,   138,   140,   141,
+     139,   133,   108,   107,   110,   113,     0,     0,     0,     0,
+       0,     0,    63,     0,     0,     0,     0,     0,   135,   117,
+       0,   114,   115,    94,    96,    93,    91,    92,     0,    87,
+      89,    90,     0,     0,     0,     0,    65,     0,     0,   147,
+       0,   137,     0,   112,     0,     0,     0,     0,    82,    84,
+      86,    70,    72,   146,     0,   149,   126,   128,   125,   123,
+     124,     0,   119,   121,   122,   116,     0,     0,    88,   154,
+       0,   152,     0,     0,     0,   118,    95,    98,    97,     0,
+       0,   151,     0,     0,   120,   163,     0,     0,     0,   168,
+       0,   156,   158,   159,   160,   161,   162,   153,   127,   129,
+       0,     0,     0,     0,     0,     0,   155,     0,   165,   166,
+     167,     0,   157,   164,   169
   };
 
   const short
   AgentParser::yypgoto_[] =
   {
-    -140,  -140,  -140,  -140,  -140,  -140,  -140,  -140,   -19,   -83,
-    -140,   -72,  -140,  -140,  -140,  -140,  -140,  -140,   -27,  -140,
-    -140,  -140,  -140,  -140,  -140,    93,   108,  -140,  -140,  -140,
-    -140,  -140,   -26,  -140,   -25,  -140,  -140,  -140,  -140,  -140,
-      44,  -140,  -140,    -3,  -140,  -140,  -140,  -140,  -140,  -140,
-    -140,    54,  -140,  -140,  -140,  -140,  -140,  -140,  -139,   -32,
-    -140,  -140,  -140,  -140,  -140,  -140,  -140,  -140,  -140,    57,
-    -140,  -140,    10,  -140,  -140,  -140,  -140,  -140,  -140,  -140,
-      49,  -140,  -140,     5,  -140,  -140,  -140,  -140,  -140,  -140,
-    -140,  -140,   -45,  -140,  -140,   -64,  -140,  -140,  -140,  -140,
-    -140,  -140,  -140
+    -133,  -133,  -133,  -133,  -133,  -133,  -133,  -133,   -19,   -79,
+    -133,   -24,  -133,  -133,  -133,  -133,  -133,  -133,   -27,  -133,
+    -133,  -133,  -133,  -133,  -133,    90,   108,  -133,  -133,  -133,
+     -26,  -133,   -25,  -133,  -133,  -133,  -133,  -133,    41,  -133,
+    -133,     3,  -133,  -133,  -133,  -133,  -133,  -133,  -133,    54,
+    -133,  -133,  -133,  -133,  -133,  -133,  -132,   -28,  -133,  -133,
+    -133,  -133,  -133,  -133,  -133,  -133,    61,  -133,  -133,  -133,
+    -133,  -133,  -133,  -133,  -133,  -133,   -23,  -133,  -133,   -51,
+    -133,  -133,  -133,  -133,  -133,  -133,  -133,    56,  -133,  -133,
+      11,  -133,  -133,  -133,  -133,  -133,  -133,  -133,  -133,   -55,
+    -133,  -133,   -78,  -133,  -133,  -133,  -133,  -133,  -133,  -133
   };
 
   const short
   AgentParser::yydefgoto_[] =
   {
       -1,     4,     5,     6,     7,    23,    27,    16,    17,    18,
-      25,    98,    32,    33,    19,    24,    29,    30,   196,    21,
-      26,    35,    36,    37,    65,    49,    50,    51,    67,    52,
-      53,    69,   197,    70,   198,    71,    56,    74,   120,   121,
-     122,   135,   158,   159,   160,   184,   161,   185,    57,   100,
-     110,   111,   112,   127,   113,   128,   114,   129,   199,   200,
-     201,   216,   202,   217,   237,    58,    73,   116,   117,   118,
-     132,   150,   151,   152,   180,   153,   181,    59,    75,   124,
-     125,   138,   170,   171,   172,   188,   173,   174,   191,   175,
-     189,   233,   234,   238,   246,   247,   248,   254,   249,   250,
-     251,   252,   258
+      25,    93,    32,    33,    19,    24,    29,    30,   195,    21,
+      26,    35,    36,    37,    63,    48,    49,    50,    65,    51,
+     196,    67,   197,    68,    54,    71,   119,   120,   121,   136,
+     153,   154,   155,   179,   156,   180,    55,    96,   113,   114,
+     115,   131,   116,   132,   117,   133,   198,   199,   200,   215,
+     201,   216,   248,    56,    69,   104,   105,   106,   126,   173,
+     107,   127,   108,   128,   190,   191,   192,   212,   231,   232,
+     233,   242,   234,   243,    57,    72,   123,   124,   139,   165,
+     166,   167,   183,   168,   169,   186,   170,   184,   240,   241,
+     249,   260,   261,   262,   270,   263,   264,   265,   266,   274
   };
 
   const short
   AgentParser::yytable_[] =
   {
-      48,    54,    55,    97,     8,    28,    31,     9,    20,    10,
-      22,    11,    61,    41,    42,   155,   156,    38,    39,    40,
-      41,    42,    43,   145,   146,   155,   156,    41,    42,    44,
-      47,    77,    45,   194,   195,    46,    78,    41,    42,   203,
-     204,    47,    79,    80,    12,    13,    14,    15,    47,    34,
-      48,    54,    55,   163,   164,    47,   165,   166,   106,   107,
-     108,    77,    60,    62,    64,    47,   126,    48,    54,    55,
-      63,    66,   241,   109,   104,   242,   243,   244,   245,   130,
-     182,   186,   192,    47,   131,   183,   187,   193,   218,   218,
-     218,   259,    81,   219,   220,   221,   260,   139,   239,    88,
-     140,   240,    68,   109,    72,   147,   148,   149,   157,    76,
-      82,   167,   168,   169,     1,     2,     3,    83,    85,    86,
-      87,    89,    90,    84,    91,    93,    97,   134,   137,    94,
-      10,    95,    96,    99,   101,   102,   103,   225,   222,   115,
-     119,   123,   133,   136,   141,   142,   143,   213,   262,   223,
-     177,   178,   179,   190,   205,   147,   148,   149,   206,   208,
-     209,   211,   212,   214,   229,   167,   168,   169,   224,   226,
-     227,   230,   255,   232,   236,   256,   257,   228,   261,   265,
-     235,   162,   263,   210,   144,    92,   231,   105,   176,   264,
-     267,   154,   207,   268,   253,   266,     0,   215
+      47,    52,    53,    92,    74,    28,    40,    41,     8,    75,
+       9,    31,    10,    20,    11,   109,   110,   111,   150,   151,
+      22,    38,    39,    40,    41,    42,   158,   159,    34,   160,
+     161,    74,    43,    46,   150,   151,   125,    46,    46,    44,
+      76,    77,    45,    40,    41,   202,   203,    47,    52,    53,
+      12,    13,    14,    15,    58,    46,   193,   194,   140,    40,
+      41,   141,    60,    47,    52,    53,   226,   227,   255,   112,
+      99,   256,   257,   258,   259,    46,   129,   134,   181,   187,
+     217,   130,   135,   182,   188,   218,    59,   217,   217,   244,
+     275,    46,   219,   220,   245,   276,   101,   250,   102,   103,
+     251,     1,     2,     3,    61,    62,    64,   112,    66,   152,
+      70,    73,   162,   163,   164,    78,    79,    80,    81,    82,
+      83,    84,   172,    86,    87,    85,    92,    89,    90,    10,
+      97,    95,    98,    91,    94,   118,   122,   137,   138,   175,
+     142,   143,   144,   146,   147,   148,   174,   278,   214,   176,
+     177,   178,   185,   189,   204,   205,   207,   208,   210,   221,
+     162,   163,   164,   213,   224,   236,   237,   239,   252,   253,
+     271,   272,   209,   273,   277,   223,   281,   225,   246,   157,
+     100,   222,    88,   247,   206,   228,   229,   230,   149,   238,
+     145,   235,   268,   254,   269,   267,   171,   282,   211,     0,
+       0,     0,   279,     0,   280,     0,     0,     0,   283,     0,
+       0,     0,     0,   284,     0,     0,     0,   228,   229,   230
   };
 
   const short
   AgentParser::yycheck_[] =
   {
-      27,    27,    27,    86,     0,    24,    42,     5,     7,     7,
-       7,     9,     3,    14,    15,    27,    28,    11,    12,    13,
-      14,    15,    16,    24,    25,    27,    28,    14,    15,    23,
-      42,     3,    26,    20,    21,    29,     8,    14,    15,   178,
-     179,    42,    61,    62,    42,    43,    44,    45,    42,    10,
-      77,    77,    77,    30,    31,    42,    33,    34,    17,    18,
-      19,     3,     6,     4,     3,    42,     8,    94,    94,    94,
-       8,     8,    32,   100,    93,    35,    36,    37,    38,     3,
-       3,     3,     3,    42,     8,     8,     8,     8,     3,     3,
-       3,     3,    42,     8,     8,     8,     8,     3,     3,     7,
-       6,     6,     4,   130,     4,   132,   132,   132,   135,     4,
-       4,   138,   138,   138,    39,    40,    41,     4,     4,     4,
-       4,     4,     4,    43,     4,     4,   209,     3,     3,     7,
-       7,    42,    42,    42,     5,     5,     5,   209,    42,     7,
-       7,     7,     6,     6,     4,     4,     4,    43,    45,    42,
-       7,     7,     7,     4,     4,   182,   182,   182,     4,     4,
-       4,     4,     4,     4,     4,   192,   192,   192,    42,    42,
-       5,     4,     4,     7,    22,     4,     4,    42,     4,     4,
-      42,   137,    43,   186,   130,    77,   218,    94,   139,    43,
-      42,   134,   182,    42,   239,   259,    -1,   192
+      27,    27,    27,    82,     3,    24,    13,    14,     0,     8,
+       5,    45,     7,     7,     9,    23,    24,    25,    30,    31,
+       7,    11,    12,    13,    14,    15,    33,    34,    10,    36,
+      37,     3,    22,    45,    30,    31,     8,    45,    45,    29,
+      59,    60,    32,    13,    14,   177,   178,    74,    74,    74,
+      45,    46,    47,    48,     6,    45,    26,    27,     3,    13,
+      14,     6,     4,    90,    90,    90,    20,    21,    35,    96,
+      89,    38,    39,    40,    41,    45,     3,     3,     3,     3,
+       3,     8,     8,     8,     8,     8,     3,     3,     3,     3,
+       3,    45,     8,     8,     8,     8,    16,     3,    18,    19,
+       6,    42,    43,    44,     8,     3,     8,   134,     4,   136,
+       4,     4,   139,   139,   139,    45,     4,     4,    46,     4,
+       4,     4,    17,     4,     4,     7,   205,     4,     7,     7,
+       5,     7,     5,    45,    45,     7,     7,     6,     3,     5,
+       4,     4,     4,     4,     4,     4,    45,    48,     3,     7,
+       7,     7,     4,     7,     4,     4,     4,     4,     4,    45,
+     187,   187,   187,     6,     5,     4,     4,     7,     4,     4,
+       4,     4,    46,     4,     4,    45,     4,    45,    45,   138,
+      90,   205,    74,    28,   181,   212,   212,   212,   134,   217,
+     129,   214,    45,   244,    45,   250,   140,   275,   187,    -1,
+      -1,    -1,    46,    -1,    46,    -1,    -1,    -1,    45,    -1,
+      -1,    -1,    -1,    45,    -1,    -1,    -1,   244,   244,   244
   };
 
   const unsigned char
   AgentParser::yystos_[] =
   {
-       0,    39,    40,    41,    47,    48,    49,    50,     0,     5,
-       7,     9,    42,    43,    44,    45,    53,    54,    55,    60,
-       7,    65,     7,    51,    61,    56,    66,    52,    54,    62,
-      63,    42,    58,    59,    10,    67,    68,    69,    11,    12,
-      13,    14,    15,    16,    23,    26,    29,    42,    64,    71,
-      72,    73,    75,    76,    78,    80,    82,    94,   111,   123,
-       6,     3,     4,     8,     3,    70,     8,    74,     4,    77,
-      79,    81,     4,   112,    83,   124,     4,     3,     8,    54,
-      54,    42,     4,     4,    43,     4,     4,     4,     7,     4,
-       4,     4,    72,     4,     7,    42,    42,    55,    57,    42,
-      95,     5,     5,     5,    54,    71,    17,    18,    19,    64,
-      96,    97,    98,   100,   102,     7,   113,   114,   115,     7,
-      84,    85,    86,     7,   125,   126,     8,    99,   101,   103,
-       3,     8,   116,     6,     3,    87,     6,     3,   127,     3,
-       6,     4,     4,     4,    97,    24,    25,    64,    78,    80,
-     117,   118,   119,   121,   115,    27,    28,    64,    88,    89,
-      90,    92,    86,    30,    31,    33,    34,    64,    78,    80,
-     128,   129,   130,   132,   133,   135,   126,     7,     7,     7,
-     120,   122,     3,     8,    91,    93,     3,     8,   131,   136,
-       4,   134,     3,     8,    20,    21,    64,    78,    80,   104,
-     105,   106,   108,   104,   104,     4,     4,   118,     4,     4,
-      89,     4,     4,    43,     4,   129,   107,   109,     3,     8,
-       8,     8,    42,    42,    42,    57,    42,     5,    42,     4,
-       4,   105,     7,   137,   138,    42,    22,   110,   139,     3,
-       6,    32,    35,    36,    37,    38,   140,   141,   142,   144,
-     145,   146,   147,   138,   143,     4,     4,     4,   148,     3,
-       8,     4,    45,    43,    43,     4,   141,    42,    42
+       0,    42,    43,    44,    50,    51,    52,    53,     0,     5,
+       7,     9,    45,    46,    47,    48,    56,    57,    58,    63,
+       7,    68,     7,    54,    64,    59,    69,    55,    57,    65,
+      66,    45,    61,    62,    10,    70,    71,    72,    11,    12,
+      13,    14,    15,    22,    29,    32,    45,    67,    74,    75,
+      76,    78,    79,    81,    83,    95,   112,   133,     6,     3,
+       4,     8,     3,    73,     8,    77,     4,    80,    82,   113,
+       4,    84,   134,     4,     3,     8,    57,    57,    45,     4,
+       4,    46,     4,     4,     4,     7,     4,     4,    75,     4,
+       7,    45,    58,    60,    45,     7,    96,     5,     5,    57,
+      74,    16,    18,    19,   114,   115,   116,   119,   121,    23,
+      24,    25,    67,    97,    98,    99,   101,   103,     7,    85,
+      86,    87,     7,   135,   136,     8,   117,   120,   122,     3,
+       8,   100,   102,   104,     3,     8,    88,     6,     3,   137,
+       3,     6,     4,     4,     4,   115,     4,     4,     4,    98,
+      30,    31,    67,    89,    90,    91,    93,    87,    33,    34,
+      36,    37,    67,    79,    81,   138,   139,   140,   142,   143,
+     145,   136,    17,   118,    45,     5,     7,     7,     7,    92,
+      94,     3,     8,   141,   146,     4,   144,     3,     8,     7,
+     123,   124,   125,    26,    27,    67,    79,    81,   105,   106,
+     107,   109,   105,   105,     4,     4,    90,     4,     4,    46,
+       4,   139,   126,     6,     3,   108,   110,     3,     8,     8,
+       8,    45,    60,    45,     5,    45,    20,    21,    67,    79,
+      81,   127,   128,   129,   131,   125,     4,     4,   106,     7,
+     147,   148,   130,   132,     3,     8,    45,    28,   111,   149,
+       3,     6,     4,     4,   128,    35,    38,    39,    40,    41,
+     150,   151,   152,   154,   155,   156,   157,   148,    45,    45,
+     153,     4,     4,     4,   158,     3,     8,     4,    48,    46,
+      46,     4,   151,    45,    45
   };
 
   const unsigned char
   AgentParser::yyr1_[] =
   {
-       0,    46,    48,    47,    49,    47,    50,    47,    52,    51,
-      53,    54,    54,    54,    54,    54,    54,    54,    56,    55,
-      57,    58,    58,    59,    59,    61,    60,    62,    62,    63,
-      63,    64,    66,    65,    67,    68,    70,    69,    71,    71,
-      72,    72,    72,    72,    72,    72,    72,    72,    72,    72,
-      74,    73,    75,    77,    76,    79,    78,    81,    80,    83,
-      82,    84,    84,    85,    85,    87,    86,    88,    88,    88,
-      89,    89,    91,    90,    93,    92,    95,    94,    96,    96,
-      97,    97,    97,    97,    99,    98,   101,   100,   103,   102,
-     104,   104,   105,   105,   105,   105,   105,   107,   106,   109,
-     108,   110,   112,   111,   113,   113,   114,   114,   116,   115,
-     117,   117,   118,   118,   118,   118,   118,   120,   119,   122,
-     121,   124,   123,   125,   125,   127,   126,   128,   128,   129,
-     129,   129,   129,   129,   129,   129,   131,   130,   132,   134,
-     133,   136,   135,   137,   137,   139,   138,   140,   140,   141,
-     141,   141,   141,   141,   143,   142,   144,   145,   146,   148,
-     147
+       0,    49,    51,    50,    52,    50,    53,    50,    55,    54,
+      56,    57,    57,    57,    57,    57,    57,    57,    59,    58,
+      60,    61,    61,    62,    62,    64,    63,    65,    65,    66,
+      66,    67,    69,    68,    70,    71,    73,    72,    74,    74,
+      75,    75,    75,    75,    75,    75,    75,    75,    75,    77,
+      76,    78,    80,    79,    82,    81,    84,    83,    85,    85,
+      86,    86,    88,    87,    89,    89,    89,    90,    90,    92,
+      91,    94,    93,    96,    95,    97,    97,    98,    98,    98,
+      98,   100,    99,   102,   101,   104,   103,   105,   105,   106,
+     106,   106,   106,   106,   108,   107,   110,   109,   111,   113,
+     112,   114,   114,   115,   115,   115,   117,   116,   118,   120,
+     119,   122,   121,   123,   123,   124,   124,   126,   125,   127,
+     127,   128,   128,   128,   128,   128,   130,   129,   132,   131,
+     134,   133,   135,   135,   137,   136,   138,   138,   139,   139,
+     139,   139,   139,   139,   139,   141,   140,   142,   144,   143,
+     146,   145,   147,   147,   149,   148,   150,   150,   151,   151,
+     151,   151,   151,   153,   152,   154,   155,   156,   158,   157
   };
 
   const signed char
@@ -2044,19 +2114,19 @@ namespace isc { namespace agent {
        1,     1,     1,     1,     1,     1,     1,     1,     0,     4,
        1,     0,     1,     3,     5,     0,     4,     0,     1,     1,
        3,     2,     0,     4,     1,     1,     0,     6,     1,     3,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       0,     4,     3,     0,     4,     0,     4,     0,     4,     0,
-       6,     0,     1,     1,     3,     0,     4,     1,     3,     1,
-       1,     1,     0,     4,     0,     4,     0,     6,     1,     3,
-       1,     1,     1,     1,     0,     6,     0,     6,     0,     6,
-       1,     3,     1,     1,     1,     1,     1,     0,     4,     0,
-       4,     1,     0,     6,     0,     1,     1,     3,     0,     4,
-       1,     3,     1,     1,     1,     1,     1,     0,     4,     0,
-       4,     0,     6,     1,     3,     0,     4,     1,     3,     1,
-       1,     1,     1,     1,     1,     1,     0,     4,     3,     0,
-       4,     0,     6,     1,     3,     0,     4,     1,     3,     1,
-       1,     1,     1,     1,     0,     4,     3,     3,     3,     0,
-       4
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     0,
+       4,     3,     0,     4,     0,     4,     0,     6,     0,     1,
+       1,     3,     0,     4,     1,     3,     1,     1,     1,     0,
+       4,     0,     4,     0,     6,     1,     3,     1,     1,     1,
+       1,     0,     6,     0,     6,     0,     6,     1,     3,     1,
+       1,     1,     1,     1,     0,     4,     0,     4,     1,     0,
+       6,     1,     3,     1,     1,     1,     0,     4,     1,     0,
+       4,     0,     6,     0,     1,     1,     3,     0,     4,     1,
+       3,     1,     1,     1,     1,     1,     0,     4,     0,     4,
+       0,     6,     1,     3,     0,     4,     1,     3,     1,     1,
+       1,     1,     1,     1,     1,     0,     4,     3,     0,     4,
+       0,     6,     1,     3,     0,     4,     1,     3,     1,     1,
+       1,     1,     1,     0,     4,     3,     3,     3,     0,     4
   };
 
 
@@ -2068,37 +2138,38 @@ namespace isc { namespace agent {
   {
   "\"end of file\"", "error", "\"invalid token\"", "\",\"", "\":\"",
   "\"[\"", "\"]\"", "\"{\"", "\"}\"", "\"null\"", "\"Control-agent\"",
-  "\"http-host\"", "\"http-port\"", "\"basic-authentication-realm\"",
-  "\"user-context\"", "\"comment\"", "\"control-sockets\"", "\"dhcp4\"",
-  "\"dhcp6\"", "\"d2\"", "\"socket-name\"", "\"socket-type\"", "\"unix\"",
-  "\"basic-authentications\"", "\"user\"", "\"password\"",
-  "\"hooks-libraries\"", "\"library\"", "\"parameters\"", "\"loggers\"",
-  "\"name\"", "\"output_options\"", "\"output\"", "\"debuglevel\"",
-  "\"severity\"", "\"flush\"", "\"maxsize\"", "\"maxver\"", "\"pattern\"",
-  "START_JSON", "START_AGENT", "START_SUB_AGENT", "\"constant string\"",
-  "\"integer\"", "\"floating point\"", "\"boolean\"", "$accept", "start",
-  "$@1", "$@2", "$@3", "sub_agent", "$@4", "json", "value", "map", "$@5",
-  "map_value", "map_content", "not_empty_map", "list_generic", "$@6",
-  "list_content", "not_empty_list", "unknown_map_entry",
-  "agent_syntax_map", "$@7", "global_objects", "global_object",
-  "agent_object", "$@8", "global_params", "global_param", "http_host",
-  "$@9", "http_port", "basic_authentication_realm", "$@10", "user_context",
-  "$@11", "comment", "$@12", "hooks_libraries", "$@13",
+  "\"http-host\"", "\"http-port\"", "\"user-context\"", "\"comment\"",
+  "\"authentication\"", "\"type\"", "\"basic\"", "\"realm\"",
+  "\"clients\"", "\"user\"", "\"password\"", "\"control-sockets\"",
+  "\"dhcp4\"", "\"dhcp6\"", "\"d2\"", "\"socket-name\"", "\"socket-type\"",
+  "\"unix\"", "\"hooks-libraries\"", "\"library\"", "\"parameters\"",
+  "\"loggers\"", "\"name\"", "\"output_options\"", "\"output\"",
+  "\"debuglevel\"", "\"severity\"", "\"flush\"", "\"maxsize\"",
+  "\"maxver\"", "\"pattern\"", "START_JSON", "START_AGENT",
+  "START_SUB_AGENT", "\"constant string\"", "\"integer\"",
+  "\"floating point\"", "\"boolean\"", "$accept", "start", "$@1", "$@2",
+  "$@3", "sub_agent", "$@4", "json", "value", "map", "$@5", "map_value",
+  "map_content", "not_empty_map", "list_generic", "$@6", "list_content",
+  "not_empty_list", "unknown_map_entry", "agent_syntax_map", "$@7",
+  "global_objects", "global_object", "agent_object", "$@8",
+  "global_params", "global_param", "http_host", "$@9", "http_port",
+  "user_context", "$@10", "comment", "$@11", "hooks_libraries", "$@12",
   "hooks_libraries_list", "not_empty_hooks_libraries_list",
-  "hooks_library", "$@14", "hooks_params", "hooks_param", "library",
-  "$@15", "parameters", "$@16", "control_sockets", "$@17",
+  "hooks_library", "$@13", "hooks_params", "hooks_param", "library",
+  "$@14", "parameters", "$@15", "control_sockets", "$@16",
   "control_sockets_params", "control_socket", "dhcp4_server_socket",
-  "$@18", "dhcp6_server_socket", "$@19", "d2_server_socket", "$@20",
-  "control_socket_params", "control_socket_param", "socket_name", "$@21",
-  "socket_type", "$@22", "socket_type_value", "basic_authentications",
-  "$@23", "basic_auth_list", "not_empty_basic_auth_list", "basic_auth",
-  "$@24", "basic_auth_params", "basic_auth_param", "user", "$@25",
-  "password", "$@26", "loggers", "$@27", "loggers_entries", "logger_entry",
-  "$@28", "logger_params", "logger_param", "name", "$@29", "debuglevel",
-  "severity", "$@30", "output_options_list", "$@31",
-  "output_options_list_content", "output_entry", "$@32",
-  "output_params_list", "output_params", "output", "$@33", "flush",
-  "maxsize", "maxver", "pattern", "$@34", YY_NULLPTR
+  "$@17", "dhcp6_server_socket", "$@18", "d2_server_socket", "$@19",
+  "control_socket_params", "control_socket_param", "socket_name", "$@20",
+  "socket_type", "$@21", "socket_type_value", "authentication", "$@22",
+  "auth_params", "auth_param", "auth_type", "$@23", "auth_type_value",
+  "realm", "$@24", "clients", "$@25", "clients_list",
+  "not_empty_clients_list", "basic_auth", "$@26", "clients_params",
+  "clients_param", "user", "$@27", "password", "$@28", "loggers", "$@29",
+  "loggers_entries", "logger_entry", "$@30", "logger_params",
+  "logger_param", "name", "$@31", "debuglevel", "severity", "$@32",
+  "output_options_list", "$@33", "output_options_list_content",
+  "output_entry", "$@34", "output_params_list", "output_params", "output",
+  "$@35", "flush", "maxsize", "maxver", "pattern", "$@36", YY_NULLPTR
   };
 #endif
 
@@ -2107,23 +2178,23 @@ namespace isc { namespace agent {
   const short
   AgentParser::yyrline_[] =
   {
-       0,   115,   115,   115,   116,   116,   117,   117,   125,   125,
-     136,   142,   143,   144,   145,   146,   147,   148,   152,   152,
-     163,   168,   169,   177,   181,   188,   188,   194,   195,   198,
-     202,   215,   223,   223,   235,   239,   243,   243,   260,   261,
-     266,   267,   268,   269,   270,   271,   272,   273,   274,   275,
-     278,   278,   286,   291,   291,   299,   299,   324,   324,   352,
-     352,   362,   363,   366,   367,   370,   370,   378,   379,   380,
-     383,   384,   387,   387,   395,   395,   405,   405,   418,   419,
-     424,   425,   426,   427,   431,   431,   442,   442,   453,   453,
-     464,   465,   469,   470,   471,   472,   473,   477,   477,   486,
-     486,   494,   501,   501,   511,   512,   515,   516,   519,   519,
-     527,   528,   531,   532,   533,   534,   535,   538,   538,   546,
-     546,   558,   558,   570,   571,   575,   575,   583,   584,   587,
-     588,   589,   590,   591,   592,   593,   596,   596,   604,   609,
-     609,   617,   617,   627,   628,   631,   631,   639,   640,   643,
-     644,   645,   646,   647,   650,   650,   658,   663,   668,   673,
-     673
+       0,   119,   119,   119,   120,   120,   121,   121,   129,   129,
+     140,   146,   147,   148,   149,   150,   151,   152,   156,   156,
+     167,   172,   173,   181,   185,   192,   192,   198,   199,   202,
+     206,   219,   227,   227,   239,   243,   247,   247,   264,   265,
+     270,   271,   272,   273,   274,   275,   276,   277,   278,   281,
+     281,   289,   294,   294,   319,   319,   347,   347,   357,   358,
+     361,   362,   365,   365,   373,   374,   375,   378,   379,   382,
+     382,   390,   390,   400,   400,   413,   414,   419,   420,   421,
+     422,   426,   426,   437,   437,   448,   448,   459,   460,   464,
+     465,   466,   467,   468,   472,   472,   481,   481,   489,   496,
+     496,   509,   510,   513,   514,   515,   518,   518,   526,   529,
+     529,   538,   538,   549,   550,   553,   554,   557,   557,   565,
+     566,   569,   570,   571,   572,   573,   576,   576,   584,   584,
+     596,   596,   608,   609,   613,   613,   621,   622,   625,   626,
+     627,   628,   629,   630,   631,   634,   634,   642,   647,   647,
+     655,   655,   665,   666,   669,   669,   677,   678,   681,   682,
+     683,   684,   685,   688,   688,   696,   701,   706,   711,   711
   };
 
   void
@@ -2156,9 +2227,9 @@ namespace isc { namespace agent {
 
 #line 14 "agent_parser.yy"
 } } // isc::agent
-#line 2160 "agent_parser.cc"
+#line 2231 "agent_parser.cc"
 
-#line 681 "agent_parser.yy"
+#line 719 "agent_parser.yy"
 
 
 void
index 0668130a64b3634029602b55b82fa7ae9ea1d460..074d7fa5d5f1ab965da095fdb6c0b74efebc40ec 100644 (file)
@@ -416,6 +416,7 @@ namespace isc { namespace agent {
       // value
       // map_value
       // socket_type_value
+      // auth_type_value
       char dummy1[sizeof (ElementPtr)];
 
       // "boolean"
@@ -490,39 +491,42 @@ namespace isc { namespace agent {
     TOKEN_CONTROL_AGENT = 265,     // "Control-agent"
     TOKEN_HTTP_HOST = 266,         // "http-host"
     TOKEN_HTTP_PORT = 267,         // "http-port"
-    TOKEN_BASIC_AUTHENTICATION_REALM = 268, // "basic-authentication-realm"
-    TOKEN_USER_CONTEXT = 269,      // "user-context"
-    TOKEN_COMMENT = 270,           // "comment"
-    TOKEN_CONTROL_SOCKETS = 271,   // "control-sockets"
-    TOKEN_DHCP4_SERVER = 272,      // "dhcp4"
-    TOKEN_DHCP6_SERVER = 273,      // "dhcp6"
-    TOKEN_D2_SERVER = 274,         // "d2"
-    TOKEN_SOCKET_NAME = 275,       // "socket-name"
-    TOKEN_SOCKET_TYPE = 276,       // "socket-type"
-    TOKEN_UNIX = 277,              // "unix"
-    TOKEN_BASIC_AUTHENTICATIONS = 278, // "basic-authentications"
-    TOKEN_USER = 279,              // "user"
-    TOKEN_PASSWORD = 280,          // "password"
-    TOKEN_HOOKS_LIBRARIES = 281,   // "hooks-libraries"
-    TOKEN_LIBRARY = 282,           // "library"
-    TOKEN_PARAMETERS = 283,        // "parameters"
-    TOKEN_LOGGERS = 284,           // "loggers"
-    TOKEN_NAME = 285,              // "name"
-    TOKEN_OUTPUT_OPTIONS = 286,    // "output_options"
-    TOKEN_OUTPUT = 287,            // "output"
-    TOKEN_DEBUGLEVEL = 288,        // "debuglevel"
-    TOKEN_SEVERITY = 289,          // "severity"
-    TOKEN_FLUSH = 290,             // "flush"
-    TOKEN_MAXSIZE = 291,           // "maxsize"
-    TOKEN_MAXVER = 292,            // "maxver"
-    TOKEN_PATTERN = 293,           // "pattern"
-    TOKEN_START_JSON = 294,        // START_JSON
-    TOKEN_START_AGENT = 295,       // START_AGENT
-    TOKEN_START_SUB_AGENT = 296,   // START_SUB_AGENT
-    TOKEN_STRING = 297,            // "constant string"
-    TOKEN_INTEGER = 298,           // "integer"
-    TOKEN_FLOAT = 299,             // "floating point"
-    TOKEN_BOOLEAN = 300            // "boolean"
+    TOKEN_USER_CONTEXT = 268,      // "user-context"
+    TOKEN_COMMENT = 269,           // "comment"
+    TOKEN_AUTHENTICATION = 270,    // "authentication"
+    TOKEN_TYPE = 271,              // "type"
+    TOKEN_BASIC = 272,             // "basic"
+    TOKEN_REALM = 273,             // "realm"
+    TOKEN_CLIENTS = 274,           // "clients"
+    TOKEN_USER = 275,              // "user"
+    TOKEN_PASSWORD = 276,          // "password"
+    TOKEN_CONTROL_SOCKETS = 277,   // "control-sockets"
+    TOKEN_DHCP4_SERVER = 278,      // "dhcp4"
+    TOKEN_DHCP6_SERVER = 279,      // "dhcp6"
+    TOKEN_D2_SERVER = 280,         // "d2"
+    TOKEN_SOCKET_NAME = 281,       // "socket-name"
+    TOKEN_SOCKET_TYPE = 282,       // "socket-type"
+    TOKEN_UNIX = 283,              // "unix"
+    TOKEN_HOOKS_LIBRARIES = 284,   // "hooks-libraries"
+    TOKEN_LIBRARY = 285,           // "library"
+    TOKEN_PARAMETERS = 286,        // "parameters"
+    TOKEN_LOGGERS = 287,           // "loggers"
+    TOKEN_NAME = 288,              // "name"
+    TOKEN_OUTPUT_OPTIONS = 289,    // "output_options"
+    TOKEN_OUTPUT = 290,            // "output"
+    TOKEN_DEBUGLEVEL = 291,        // "debuglevel"
+    TOKEN_SEVERITY = 292,          // "severity"
+    TOKEN_FLUSH = 293,             // "flush"
+    TOKEN_MAXSIZE = 294,           // "maxsize"
+    TOKEN_MAXVER = 295,            // "maxver"
+    TOKEN_PATTERN = 296,           // "pattern"
+    TOKEN_START_JSON = 297,        // START_JSON
+    TOKEN_START_AGENT = 298,       // START_AGENT
+    TOKEN_START_SUB_AGENT = 299,   // START_SUB_AGENT
+    TOKEN_STRING = 300,            // "constant string"
+    TOKEN_INTEGER = 301,           // "integer"
+    TOKEN_FLOAT = 302,             // "floating point"
+    TOKEN_BOOLEAN = 303            // "boolean"
       };
       /// Backward compatibility alias (Bison 3.6).
       typedef token_kind_type yytokentype;
@@ -539,7 +543,7 @@ namespace isc { namespace agent {
     {
       enum symbol_kind_type
       {
-        YYNTOKENS = 46, ///< Number of tokens.
+        YYNTOKENS = 49, ///< Number of tokens.
         S_YYEMPTY = -2,
         S_YYEOF = 0,                             // "end of file"
         S_YYerror = 1,                           // error
@@ -554,142 +558,152 @@ namespace isc { namespace agent {
         S_CONTROL_AGENT = 10,                    // "Control-agent"
         S_HTTP_HOST = 11,                        // "http-host"
         S_HTTP_PORT = 12,                        // "http-port"
-        S_BASIC_AUTHENTICATION_REALM = 13,       // "basic-authentication-realm"
-        S_USER_CONTEXT = 14,                     // "user-context"
-        S_COMMENT = 15,                          // "comment"
-        S_CONTROL_SOCKETS = 16,                  // "control-sockets"
-        S_DHCP4_SERVER = 17,                     // "dhcp4"
-        S_DHCP6_SERVER = 18,                     // "dhcp6"
-        S_D2_SERVER = 19,                        // "d2"
-        S_SOCKET_NAME = 20,                      // "socket-name"
-        S_SOCKET_TYPE = 21,                      // "socket-type"
-        S_UNIX = 22,                             // "unix"
-        S_BASIC_AUTHENTICATIONS = 23,            // "basic-authentications"
-        S_USER = 24,                             // "user"
-        S_PASSWORD = 25,                         // "password"
-        S_HOOKS_LIBRARIES = 26,                  // "hooks-libraries"
-        S_LIBRARY = 27,                          // "library"
-        S_PARAMETERS = 28,                       // "parameters"
-        S_LOGGERS = 29,                          // "loggers"
-        S_NAME = 30,                             // "name"
-        S_OUTPUT_OPTIONS = 31,                   // "output_options"
-        S_OUTPUT = 32,                           // "output"
-        S_DEBUGLEVEL = 33,                       // "debuglevel"
-        S_SEVERITY = 34,                         // "severity"
-        S_FLUSH = 35,                            // "flush"
-        S_MAXSIZE = 36,                          // "maxsize"
-        S_MAXVER = 37,                           // "maxver"
-        S_PATTERN = 38,                          // "pattern"
-        S_START_JSON = 39,                       // START_JSON
-        S_START_AGENT = 40,                      // START_AGENT
-        S_START_SUB_AGENT = 41,                  // START_SUB_AGENT
-        S_STRING = 42,                           // "constant string"
-        S_INTEGER = 43,                          // "integer"
-        S_FLOAT = 44,                            // "floating point"
-        S_BOOLEAN = 45,                          // "boolean"
-        S_YYACCEPT = 46,                         // $accept
-        S_start = 47,                            // start
-        S_48_1 = 48,                             // $@1
-        S_49_2 = 49,                             // $@2
-        S_50_3 = 50,                             // $@3
-        S_sub_agent = 51,                        // sub_agent
-        S_52_4 = 52,                             // $@4
-        S_json = 53,                             // json
-        S_value = 54,                            // value
-        S_map = 55,                              // map
-        S_56_5 = 56,                             // $@5
-        S_map_value = 57,                        // map_value
-        S_map_content = 58,                      // map_content
-        S_not_empty_map = 59,                    // not_empty_map
-        S_list_generic = 60,                     // list_generic
-        S_61_6 = 61,                             // $@6
-        S_list_content = 62,                     // list_content
-        S_not_empty_list = 63,                   // not_empty_list
-        S_unknown_map_entry = 64,                // unknown_map_entry
-        S_agent_syntax_map = 65,                 // agent_syntax_map
-        S_66_7 = 66,                             // $@7
-        S_global_objects = 67,                   // global_objects
-        S_global_object = 68,                    // global_object
-        S_agent_object = 69,                     // agent_object
-        S_70_8 = 70,                             // $@8
-        S_global_params = 71,                    // global_params
-        S_global_param = 72,                     // global_param
-        S_http_host = 73,                        // http_host
-        S_74_9 = 74,                             // $@9
-        S_http_port = 75,                        // http_port
-        S_basic_authentication_realm = 76,       // basic_authentication_realm
-        S_77_10 = 77,                            // $@10
-        S_user_context = 78,                     // user_context
-        S_79_11 = 79,                            // $@11
-        S_comment = 80,                          // comment
-        S_81_12 = 81,                            // $@12
-        S_hooks_libraries = 82,                  // hooks_libraries
-        S_83_13 = 83,                            // $@13
-        S_hooks_libraries_list = 84,             // hooks_libraries_list
-        S_not_empty_hooks_libraries_list = 85,   // not_empty_hooks_libraries_list
-        S_hooks_library = 86,                    // hooks_library
-        S_87_14 = 87,                            // $@14
-        S_hooks_params = 88,                     // hooks_params
-        S_hooks_param = 89,                      // hooks_param
-        S_library = 90,                          // library
-        S_91_15 = 91,                            // $@15
-        S_parameters = 92,                       // parameters
-        S_93_16 = 93,                            // $@16
-        S_control_sockets = 94,                  // control_sockets
-        S_95_17 = 95,                            // $@17
-        S_control_sockets_params = 96,           // control_sockets_params
-        S_control_socket = 97,                   // control_socket
-        S_dhcp4_server_socket = 98,              // dhcp4_server_socket
-        S_99_18 = 99,                            // $@18
-        S_dhcp6_server_socket = 100,             // dhcp6_server_socket
-        S_101_19 = 101,                          // $@19
-        S_d2_server_socket = 102,                // d2_server_socket
-        S_103_20 = 103,                          // $@20
-        S_control_socket_params = 104,           // control_socket_params
-        S_control_socket_param = 105,            // control_socket_param
-        S_socket_name = 106,                     // socket_name
-        S_107_21 = 107,                          // $@21
-        S_socket_type = 108,                     // socket_type
-        S_109_22 = 109,                          // $@22
-        S_socket_type_value = 110,               // socket_type_value
-        S_basic_authentications = 111,           // basic_authentications
-        S_112_23 = 112,                          // $@23
-        S_basic_auth_list = 113,                 // basic_auth_list
-        S_not_empty_basic_auth_list = 114,       // not_empty_basic_auth_list
-        S_basic_auth = 115,                      // basic_auth
-        S_116_24 = 116,                          // $@24
-        S_basic_auth_params = 117,               // basic_auth_params
-        S_basic_auth_param = 118,                // basic_auth_param
-        S_user = 119,                            // user
-        S_120_25 = 120,                          // $@25
-        S_password = 121,                        // password
-        S_122_26 = 122,                          // $@26
-        S_loggers = 123,                         // loggers
-        S_124_27 = 124,                          // $@27
-        S_loggers_entries = 125,                 // loggers_entries
-        S_logger_entry = 126,                    // logger_entry
-        S_127_28 = 127,                          // $@28
-        S_logger_params = 128,                   // logger_params
-        S_logger_param = 129,                    // logger_param
-        S_name = 130,                            // name
-        S_131_29 = 131,                          // $@29
-        S_debuglevel = 132,                      // debuglevel
-        S_severity = 133,                        // severity
-        S_134_30 = 134,                          // $@30
-        S_output_options_list = 135,             // output_options_list
-        S_136_31 = 136,                          // $@31
-        S_output_options_list_content = 137,     // output_options_list_content
-        S_output_entry = 138,                    // output_entry
-        S_139_32 = 139,                          // $@32
-        S_output_params_list = 140,              // output_params_list
-        S_output_params = 141,                   // output_params
-        S_output = 142,                          // output
-        S_143_33 = 143,                          // $@33
-        S_flush = 144,                           // flush
-        S_maxsize = 145,                         // maxsize
-        S_maxver = 146,                          // maxver
-        S_pattern = 147,                         // pattern
-        S_148_34 = 148                           // $@34
+        S_USER_CONTEXT = 13,                     // "user-context"
+        S_COMMENT = 14,                          // "comment"
+        S_AUTHENTICATION = 15,                   // "authentication"
+        S_TYPE = 16,                             // "type"
+        S_BASIC = 17,                            // "basic"
+        S_REALM = 18,                            // "realm"
+        S_CLIENTS = 19,                          // "clients"
+        S_USER = 20,                             // "user"
+        S_PASSWORD = 21,                         // "password"
+        S_CONTROL_SOCKETS = 22,                  // "control-sockets"
+        S_DHCP4_SERVER = 23,                     // "dhcp4"
+        S_DHCP6_SERVER = 24,                     // "dhcp6"
+        S_D2_SERVER = 25,                        // "d2"
+        S_SOCKET_NAME = 26,                      // "socket-name"
+        S_SOCKET_TYPE = 27,                      // "socket-type"
+        S_UNIX = 28,                             // "unix"
+        S_HOOKS_LIBRARIES = 29,                  // "hooks-libraries"
+        S_LIBRARY = 30,                          // "library"
+        S_PARAMETERS = 31,                       // "parameters"
+        S_LOGGERS = 32,                          // "loggers"
+        S_NAME = 33,                             // "name"
+        S_OUTPUT_OPTIONS = 34,                   // "output_options"
+        S_OUTPUT = 35,                           // "output"
+        S_DEBUGLEVEL = 36,                       // "debuglevel"
+        S_SEVERITY = 37,                         // "severity"
+        S_FLUSH = 38,                            // "flush"
+        S_MAXSIZE = 39,                          // "maxsize"
+        S_MAXVER = 40,                           // "maxver"
+        S_PATTERN = 41,                          // "pattern"
+        S_START_JSON = 42,                       // START_JSON
+        S_START_AGENT = 43,                      // START_AGENT
+        S_START_SUB_AGENT = 44,                  // START_SUB_AGENT
+        S_STRING = 45,                           // "constant string"
+        S_INTEGER = 46,                          // "integer"
+        S_FLOAT = 47,                            // "floating point"
+        S_BOOLEAN = 48,                          // "boolean"
+        S_YYACCEPT = 49,                         // $accept
+        S_start = 50,                            // start
+        S_51_1 = 51,                             // $@1
+        S_52_2 = 52,                             // $@2
+        S_53_3 = 53,                             // $@3
+        S_sub_agent = 54,                        // sub_agent
+        S_55_4 = 55,                             // $@4
+        S_json = 56,                             // json
+        S_value = 57,                            // value
+        S_map = 58,                              // map
+        S_59_5 = 59,                             // $@5
+        S_map_value = 60,                        // map_value
+        S_map_content = 61,                      // map_content
+        S_not_empty_map = 62,                    // not_empty_map
+        S_list_generic = 63,                     // list_generic
+        S_64_6 = 64,                             // $@6
+        S_list_content = 65,                     // list_content
+        S_not_empty_list = 66,                   // not_empty_list
+        S_unknown_map_entry = 67,                // unknown_map_entry
+        S_agent_syntax_map = 68,                 // agent_syntax_map
+        S_69_7 = 69,                             // $@7
+        S_global_objects = 70,                   // global_objects
+        S_global_object = 71,                    // global_object
+        S_agent_object = 72,                     // agent_object
+        S_73_8 = 73,                             // $@8
+        S_global_params = 74,                    // global_params
+        S_global_param = 75,                     // global_param
+        S_http_host = 76,                        // http_host
+        S_77_9 = 77,                             // $@9
+        S_http_port = 78,                        // http_port
+        S_user_context = 79,                     // user_context
+        S_80_10 = 80,                            // $@10
+        S_comment = 81,                          // comment
+        S_82_11 = 82,                            // $@11
+        S_hooks_libraries = 83,                  // hooks_libraries
+        S_84_12 = 84,                            // $@12
+        S_hooks_libraries_list = 85,             // hooks_libraries_list
+        S_not_empty_hooks_libraries_list = 86,   // not_empty_hooks_libraries_list
+        S_hooks_library = 87,                    // hooks_library
+        S_88_13 = 88,                            // $@13
+        S_hooks_params = 89,                     // hooks_params
+        S_hooks_param = 90,                      // hooks_param
+        S_library = 91,                          // library
+        S_92_14 = 92,                            // $@14
+        S_parameters = 93,                       // parameters
+        S_94_15 = 94,                            // $@15
+        S_control_sockets = 95,                  // control_sockets
+        S_96_16 = 96,                            // $@16
+        S_control_sockets_params = 97,           // control_sockets_params
+        S_control_socket = 98,                   // control_socket
+        S_dhcp4_server_socket = 99,              // dhcp4_server_socket
+        S_100_17 = 100,                          // $@17
+        S_dhcp6_server_socket = 101,             // dhcp6_server_socket
+        S_102_18 = 102,                          // $@18
+        S_d2_server_socket = 103,                // d2_server_socket
+        S_104_19 = 104,                          // $@19
+        S_control_socket_params = 105,           // control_socket_params
+        S_control_socket_param = 106,            // control_socket_param
+        S_socket_name = 107,                     // socket_name
+        S_108_20 = 108,                          // $@20
+        S_socket_type = 109,                     // socket_type
+        S_110_21 = 110,                          // $@21
+        S_socket_type_value = 111,               // socket_type_value
+        S_authentication = 112,                  // authentication
+        S_113_22 = 113,                          // $@22
+        S_auth_params = 114,                     // auth_params
+        S_auth_param = 115,                      // auth_param
+        S_auth_type = 116,                       // auth_type
+        S_117_23 = 117,                          // $@23
+        S_auth_type_value = 118,                 // auth_type_value
+        S_realm = 119,                           // realm
+        S_120_24 = 120,                          // $@24
+        S_clients = 121,                         // clients
+        S_122_25 = 122,                          // $@25
+        S_clients_list = 123,                    // clients_list
+        S_not_empty_clients_list = 124,          // not_empty_clients_list
+        S_basic_auth = 125,                      // basic_auth
+        S_126_26 = 126,                          // $@26
+        S_clients_params = 127,                  // clients_params
+        S_clients_param = 128,                   // clients_param
+        S_user = 129,                            // user
+        S_130_27 = 130,                          // $@27
+        S_password = 131,                        // password
+        S_132_28 = 132,                          // $@28
+        S_loggers = 133,                         // loggers
+        S_134_29 = 134,                          // $@29
+        S_loggers_entries = 135,                 // loggers_entries
+        S_logger_entry = 136,                    // logger_entry
+        S_137_30 = 137,                          // $@30
+        S_logger_params = 138,                   // logger_params
+        S_logger_param = 139,                    // logger_param
+        S_name = 140,                            // name
+        S_141_31 = 141,                          // $@31
+        S_debuglevel = 142,                      // debuglevel
+        S_severity = 143,                        // severity
+        S_144_32 = 144,                          // $@32
+        S_output_options_list = 145,             // output_options_list
+        S_146_33 = 146,                          // $@33
+        S_output_options_list_content = 147,     // output_options_list_content
+        S_output_entry = 148,                    // output_entry
+        S_149_34 = 149,                          // $@34
+        S_output_params_list = 150,              // output_params_list
+        S_output_params = 151,                   // output_params
+        S_output = 152,                          // output
+        S_153_35 = 153,                          // $@35
+        S_flush = 154,                           // flush
+        S_maxsize = 155,                         // maxsize
+        S_maxver = 156,                          // maxver
+        S_pattern = 157,                         // pattern
+        S_158_36 = 158                           // $@36
       };
     };
 
@@ -729,6 +743,7 @@ namespace isc { namespace agent {
       case symbol_kind::S_value: // value
       case symbol_kind::S_map_value: // map_value
       case symbol_kind::S_socket_type_value: // socket_type_value
+      case symbol_kind::S_auth_type_value: // auth_type_value
         value.move< ElementPtr > (std::move (that.value));
         break;
 
@@ -861,6 +876,7 @@ switch (yykind)
       case symbol_kind::S_value: // value
       case symbol_kind::S_map_value: // map_value
       case symbol_kind::S_socket_type_value: // socket_type_value
+      case symbol_kind::S_auth_type_value: // auth_type_value
         value.template destroy< ElementPtr > ();
         break;
 
@@ -970,13 +986,13 @@ switch (yykind)
       symbol_type (int tok, location_type l)
         : super_type(token_type (tok), std::move (l))
       {
-        YY_ASSERT (tok == token::TOKEN_END || tok == token::TOKEN_AGENT_error || tok == token::TOKEN_AGENT_UNDEF || tok == token::TOKEN_COMMA || tok == token::TOKEN_COLON || tok == token::TOKEN_LSQUARE_BRACKET || tok == token::TOKEN_RSQUARE_BRACKET || tok == token::TOKEN_LCURLY_BRACKET || tok == token::TOKEN_RCURLY_BRACKET || tok == token::TOKEN_NULL_TYPE || tok == token::TOKEN_CONTROL_AGENT || tok == token::TOKEN_HTTP_HOST || tok == token::TOKEN_HTTP_PORT || tok == token::TOKEN_BASIC_AUTHENTICATION_REALM || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_CONTROL_SOCKETS || tok == token::TOKEN_DHCP4_SERVER || tok == token::TOKEN_DHCP6_SERVER || tok == token::TOKEN_D2_SERVER || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_UNIX || tok == token::TOKEN_BASIC_AUTHENTICATIONS || tok == token::TOKEN_USER || tok == token::TOKEN_PASSWORD || tok == token::TOKEN_HOOKS_LIBRARIES || tok == token::TOKEN_LIBRARY || tok == token::TOKEN_PARAMETERS || tok == token::TOKEN_LOGGERS || tok == token::TOKEN_NAME || tok == token::TOKEN_OUTPUT_OPTIONS || tok == token::TOKEN_OUTPUT || tok == token::TOKEN_DEBUGLEVEL || tok == token::TOKEN_SEVERITY || tok == token::TOKEN_FLUSH || tok == token::TOKEN_MAXSIZE || tok == token::TOKEN_MAXVER || tok == token::TOKEN_PATTERN || tok == token::TOKEN_START_JSON || tok == token::TOKEN_START_AGENT || tok == token::TOKEN_START_SUB_AGENT);
+        YY_ASSERT (tok == token::TOKEN_END || tok == token::TOKEN_AGENT_error || tok == token::TOKEN_AGENT_UNDEF || tok == token::TOKEN_COMMA || tok == token::TOKEN_COLON || tok == token::TOKEN_LSQUARE_BRACKET || tok == token::TOKEN_RSQUARE_BRACKET || tok == token::TOKEN_LCURLY_BRACKET || tok == token::TOKEN_RCURLY_BRACKET || tok == token::TOKEN_NULL_TYPE || tok == token::TOKEN_CONTROL_AGENT || tok == token::TOKEN_HTTP_HOST || tok == token::TOKEN_HTTP_PORT || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_AUTHENTICATION || tok == token::TOKEN_TYPE || tok == token::TOKEN_BASIC || tok == token::TOKEN_REALM || tok == token::TOKEN_CLIENTS || tok == token::TOKEN_USER || tok == token::TOKEN_PASSWORD || tok == token::TOKEN_CONTROL_SOCKETS || tok == token::TOKEN_DHCP4_SERVER || tok == token::TOKEN_DHCP6_SERVER || tok == token::TOKEN_D2_SERVER || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_UNIX || tok == token::TOKEN_HOOKS_LIBRARIES || tok == token::TOKEN_LIBRARY || tok == token::TOKEN_PARAMETERS || tok == token::TOKEN_LOGGERS || tok == token::TOKEN_NAME || tok == token::TOKEN_OUTPUT_OPTIONS || tok == token::TOKEN_OUTPUT || tok == token::TOKEN_DEBUGLEVEL || tok == token::TOKEN_SEVERITY || tok == token::TOKEN_FLUSH || tok == token::TOKEN_MAXSIZE || tok == token::TOKEN_MAXVER || tok == token::TOKEN_PATTERN || tok == token::TOKEN_START_JSON || tok == token::TOKEN_START_AGENT || tok == token::TOKEN_START_SUB_AGENT);
       }
 #else
       symbol_type (int tok, const location_type& l)
         : super_type(token_type (tok), l)
       {
-        YY_ASSERT (tok == token::TOKEN_END || tok == token::TOKEN_AGENT_error || tok == token::TOKEN_AGENT_UNDEF || tok == token::TOKEN_COMMA || tok == token::TOKEN_COLON || tok == token::TOKEN_LSQUARE_BRACKET || tok == token::TOKEN_RSQUARE_BRACKET || tok == token::TOKEN_LCURLY_BRACKET || tok == token::TOKEN_RCURLY_BRACKET || tok == token::TOKEN_NULL_TYPE || tok == token::TOKEN_CONTROL_AGENT || tok == token::TOKEN_HTTP_HOST || tok == token::TOKEN_HTTP_PORT || tok == token::TOKEN_BASIC_AUTHENTICATION_REALM || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_CONTROL_SOCKETS || tok == token::TOKEN_DHCP4_SERVER || tok == token::TOKEN_DHCP6_SERVER || tok == token::TOKEN_D2_SERVER || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_UNIX || tok == token::TOKEN_BASIC_AUTHENTICATIONS || tok == token::TOKEN_USER || tok == token::TOKEN_PASSWORD || tok == token::TOKEN_HOOKS_LIBRARIES || tok == token::TOKEN_LIBRARY || tok == token::TOKEN_PARAMETERS || tok == token::TOKEN_LOGGERS || tok == token::TOKEN_NAME || tok == token::TOKEN_OUTPUT_OPTIONS || tok == token::TOKEN_OUTPUT || tok == token::TOKEN_DEBUGLEVEL || tok == token::TOKEN_SEVERITY || tok == token::TOKEN_FLUSH || tok == token::TOKEN_MAXSIZE || tok == token::TOKEN_MAXVER || tok == token::TOKEN_PATTERN || tok == token::TOKEN_START_JSON || tok == token::TOKEN_START_AGENT || tok == token::TOKEN_START_SUB_AGENT);
+        YY_ASSERT (tok == token::TOKEN_END || tok == token::TOKEN_AGENT_error || tok == token::TOKEN_AGENT_UNDEF || tok == token::TOKEN_COMMA || tok == token::TOKEN_COLON || tok == token::TOKEN_LSQUARE_BRACKET || tok == token::TOKEN_RSQUARE_BRACKET || tok == token::TOKEN_LCURLY_BRACKET || tok == token::TOKEN_RCURLY_BRACKET || tok == token::TOKEN_NULL_TYPE || tok == token::TOKEN_CONTROL_AGENT || tok == token::TOKEN_HTTP_HOST || tok == token::TOKEN_HTTP_PORT || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_AUTHENTICATION || tok == token::TOKEN_TYPE || tok == token::TOKEN_BASIC || tok == token::TOKEN_REALM || tok == token::TOKEN_CLIENTS || tok == token::TOKEN_USER || tok == token::TOKEN_PASSWORD || tok == token::TOKEN_CONTROL_SOCKETS || tok == token::TOKEN_DHCP4_SERVER || tok == token::TOKEN_DHCP6_SERVER || tok == token::TOKEN_D2_SERVER || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_UNIX || tok == token::TOKEN_HOOKS_LIBRARIES || tok == token::TOKEN_LIBRARY || tok == token::TOKEN_PARAMETERS || tok == token::TOKEN_LOGGERS || tok == token::TOKEN_NAME || tok == token::TOKEN_OUTPUT_OPTIONS || tok == token::TOKEN_OUTPUT || tok == token::TOKEN_DEBUGLEVEL || tok == token::TOKEN_SEVERITY || tok == token::TOKEN_FLUSH || tok == token::TOKEN_MAXSIZE || tok == token::TOKEN_MAXVER || tok == token::TOKEN_PATTERN || tok == token::TOKEN_START_JSON || tok == token::TOKEN_START_AGENT || tok == token::TOKEN_START_SUB_AGENT);
       }
 #endif
 #if 201103L <= YY_CPLUSPLUS
@@ -1277,196 +1293,241 @@ switch (yykind)
 #if 201103L <= YY_CPLUSPLUS
       static
       symbol_type
-      make_BASIC_AUTHENTICATION_REALM (location_type l)
+      make_USER_CONTEXT (location_type l)
       {
-        return symbol_type (token::TOKEN_BASIC_AUTHENTICATION_REALM, std::move (l));
+        return symbol_type (token::TOKEN_USER_CONTEXT, std::move (l));
       }
 #else
       static
       symbol_type
-      make_BASIC_AUTHENTICATION_REALM (const location_type& l)
+      make_USER_CONTEXT (const location_type& l)
       {
-        return symbol_type (token::TOKEN_BASIC_AUTHENTICATION_REALM, l);
+        return symbol_type (token::TOKEN_USER_CONTEXT, l);
       }
 #endif
 #if 201103L <= YY_CPLUSPLUS
       static
       symbol_type
-      make_USER_CONTEXT (location_type l)
+      make_COMMENT (location_type l)
       {
-        return symbol_type (token::TOKEN_USER_CONTEXT, std::move (l));
+        return symbol_type (token::TOKEN_COMMENT, std::move (l));
       }
 #else
       static
       symbol_type
-      make_USER_CONTEXT (const location_type& l)
+      make_COMMENT (const location_type& l)
       {
-        return symbol_type (token::TOKEN_USER_CONTEXT, l);
+        return symbol_type (token::TOKEN_COMMENT, l);
       }
 #endif
 #if 201103L <= YY_CPLUSPLUS
       static
       symbol_type
-      make_COMMENT (location_type l)
+      make_AUTHENTICATION (location_type l)
       {
-        return symbol_type (token::TOKEN_COMMENT, std::move (l));
+        return symbol_type (token::TOKEN_AUTHENTICATION, std::move (l));
       }
 #else
       static
       symbol_type
-      make_COMMENT (const location_type& l)
+      make_AUTHENTICATION (const location_type& l)
       {
-        return symbol_type (token::TOKEN_COMMENT, l);
+        return symbol_type (token::TOKEN_AUTHENTICATION, l);
       }
 #endif
 #if 201103L <= YY_CPLUSPLUS
       static
       symbol_type
-      make_CONTROL_SOCKETS (location_type l)
+      make_TYPE (location_type l)
       {
-        return symbol_type (token::TOKEN_CONTROL_SOCKETS, std::move (l));
+        return symbol_type (token::TOKEN_TYPE, std::move (l));
       }
 #else
       static
       symbol_type
-      make_CONTROL_SOCKETS (const location_type& l)
+      make_TYPE (const location_type& l)
       {
-        return symbol_type (token::TOKEN_CONTROL_SOCKETS, l);
+        return symbol_type (token::TOKEN_TYPE, l);
       }
 #endif
 #if 201103L <= YY_CPLUSPLUS
       static
       symbol_type
-      make_DHCP4_SERVER (location_type l)
+      make_BASIC (location_type l)
       {
-        return symbol_type (token::TOKEN_DHCP4_SERVER, std::move (l));
+        return symbol_type (token::TOKEN_BASIC, std::move (l));
       }
 #else
       static
       symbol_type
-      make_DHCP4_SERVER (const location_type& l)
+      make_BASIC (const location_type& l)
       {
-        return symbol_type (token::TOKEN_DHCP4_SERVER, l);
+        return symbol_type (token::TOKEN_BASIC, l);
       }
 #endif
 #if 201103L <= YY_CPLUSPLUS
       static
       symbol_type
-      make_DHCP6_SERVER (location_type l)
+      make_REALM (location_type l)
       {
-        return symbol_type (token::TOKEN_DHCP6_SERVER, std::move (l));
+        return symbol_type (token::TOKEN_REALM, std::move (l));
       }
 #else
       static
       symbol_type
-      make_DHCP6_SERVER (const location_type& l)
+      make_REALM (const location_type& l)
       {
-        return symbol_type (token::TOKEN_DHCP6_SERVER, l);
+        return symbol_type (token::TOKEN_REALM, l);
       }
 #endif
 #if 201103L <= YY_CPLUSPLUS
       static
       symbol_type
-      make_D2_SERVER (location_type l)
+      make_CLIENTS (location_type l)
       {
-        return symbol_type (token::TOKEN_D2_SERVER, std::move (l));
+        return symbol_type (token::TOKEN_CLIENTS, std::move (l));
       }
 #else
       static
       symbol_type
-      make_D2_SERVER (const location_type& l)
+      make_CLIENTS (const location_type& l)
       {
-        return symbol_type (token::TOKEN_D2_SERVER, l);
+        return symbol_type (token::TOKEN_CLIENTS, l);
       }
 #endif
 #if 201103L <= YY_CPLUSPLUS
       static
       symbol_type
-      make_SOCKET_NAME (location_type l)
+      make_USER (location_type l)
       {
-        return symbol_type (token::TOKEN_SOCKET_NAME, std::move (l));
+        return symbol_type (token::TOKEN_USER, std::move (l));
       }
 #else
       static
       symbol_type
-      make_SOCKET_NAME (const location_type& l)
+      make_USER (const location_type& l)
       {
-        return symbol_type (token::TOKEN_SOCKET_NAME, l);
+        return symbol_type (token::TOKEN_USER, l);
       }
 #endif
 #if 201103L <= YY_CPLUSPLUS
       static
       symbol_type
-      make_SOCKET_TYPE (location_type l)
+      make_PASSWORD (location_type l)
       {
-        return symbol_type (token::TOKEN_SOCKET_TYPE, std::move (l));
+        return symbol_type (token::TOKEN_PASSWORD, std::move (l));
       }
 #else
       static
       symbol_type
-      make_SOCKET_TYPE (const location_type& l)
+      make_PASSWORD (const location_type& l)
       {
-        return symbol_type (token::TOKEN_SOCKET_TYPE, l);
+        return symbol_type (token::TOKEN_PASSWORD, l);
       }
 #endif
 #if 201103L <= YY_CPLUSPLUS
       static
       symbol_type
-      make_UNIX (location_type l)
+      make_CONTROL_SOCKETS (location_type l)
       {
-        return symbol_type (token::TOKEN_UNIX, std::move (l));
+        return symbol_type (token::TOKEN_CONTROL_SOCKETS, std::move (l));
       }
 #else
       static
       symbol_type
-      make_UNIX (const location_type& l)
+      make_CONTROL_SOCKETS (const location_type& l)
       {
-        return symbol_type (token::TOKEN_UNIX, l);
+        return symbol_type (token::TOKEN_CONTROL_SOCKETS, l);
       }
 #endif
 #if 201103L <= YY_CPLUSPLUS
       static
       symbol_type
-      make_BASIC_AUTHENTICATIONS (location_type l)
+      make_DHCP4_SERVER (location_type l)
       {
-        return symbol_type (token::TOKEN_BASIC_AUTHENTICATIONS, std::move (l));
+        return symbol_type (token::TOKEN_DHCP4_SERVER, std::move (l));
       }
 #else
       static
       symbol_type
-      make_BASIC_AUTHENTICATIONS (const location_type& l)
+      make_DHCP4_SERVER (const location_type& l)
       {
-        return symbol_type (token::TOKEN_BASIC_AUTHENTICATIONS, l);
+        return symbol_type (token::TOKEN_DHCP4_SERVER, l);
       }
 #endif
 #if 201103L <= YY_CPLUSPLUS
       static
       symbol_type
-      make_USER (location_type l)
+      make_DHCP6_SERVER (location_type l)
       {
-        return symbol_type (token::TOKEN_USER, std::move (l));
+        return symbol_type (token::TOKEN_DHCP6_SERVER, std::move (l));
       }
 #else
       static
       symbol_type
-      make_USER (const location_type& l)
+      make_DHCP6_SERVER (const location_type& l)
       {
-        return symbol_type (token::TOKEN_USER, l);
+        return symbol_type (token::TOKEN_DHCP6_SERVER, l);
       }
 #endif
 #if 201103L <= YY_CPLUSPLUS
       static
       symbol_type
-      make_PASSWORD (location_type l)
+      make_D2_SERVER (location_type l)
       {
-        return symbol_type (token::TOKEN_PASSWORD, std::move (l));
+        return symbol_type (token::TOKEN_D2_SERVER, std::move (l));
       }
 #else
       static
       symbol_type
-      make_PASSWORD (const location_type& l)
+      make_D2_SERVER (const location_type& l)
       {
-        return symbol_type (token::TOKEN_PASSWORD, l);
+        return symbol_type (token::TOKEN_D2_SERVER, l);
+      }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+      static
+      symbol_type
+      make_SOCKET_NAME (location_type l)
+      {
+        return symbol_type (token::TOKEN_SOCKET_NAME, std::move (l));
+      }
+#else
+      static
+      symbol_type
+      make_SOCKET_NAME (const location_type& l)
+      {
+        return symbol_type (token::TOKEN_SOCKET_NAME, l);
+      }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+      static
+      symbol_type
+      make_SOCKET_TYPE (location_type l)
+      {
+        return symbol_type (token::TOKEN_SOCKET_TYPE, std::move (l));
+      }
+#else
+      static
+      symbol_type
+      make_SOCKET_TYPE (const location_type& l)
+      {
+        return symbol_type (token::TOKEN_SOCKET_TYPE, l);
+      }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+      static
+      symbol_type
+      make_UNIX (location_type l)
+      {
+        return symbol_type (token::TOKEN_UNIX, std::move (l));
+      }
+#else
+      static
+      symbol_type
+      make_UNIX (const location_type& l)
+      {
+        return symbol_type (token::TOKEN_UNIX, l);
       }
 #endif
 #if 201103L <= YY_CPLUSPLUS
@@ -2099,8 +2160,8 @@ switch (yykind)
     /// Constants.
     enum
     {
-      yylast_ = 197,     ///< Last index in yytable_.
-      yynnts_ = 103,  ///< Number of nonterminal symbols.
+      yylast_ = 219,     ///< Last index in yytable_.
+      yynnts_ = 110,  ///< Number of nonterminal symbols.
       yyfinal_ = 8 ///< Termination state number.
     };
 
@@ -2150,10 +2211,10 @@ switch (yykind)
       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
       35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
-      45
+      45,    46,    47,    48
     };
     // Last valid token kind.
-    const int code_max = 300;
+    const int code_max = 303;
 
     if (t <= 0)
       return symbol_kind::S_YYEOF;
@@ -2175,6 +2236,7 @@ switch (yykind)
       case symbol_kind::S_value: // value
       case symbol_kind::S_map_value: // map_value
       case symbol_kind::S_socket_type_value: // socket_type_value
+      case symbol_kind::S_auth_type_value: // auth_type_value
         value.copy< ElementPtr > (YY_MOVE (that.value));
         break;
 
@@ -2226,6 +2288,7 @@ switch (yykind)
       case symbol_kind::S_value: // value
       case symbol_kind::S_map_value: // map_value
       case symbol_kind::S_socket_type_value: // socket_type_value
+      case symbol_kind::S_auth_type_value: // auth_type_value
         value.move< ElementPtr > (YY_MOVE (s.value));
         break;
 
@@ -2308,7 +2371,7 @@ switch (yykind)
 
 #line 14 "agent_parser.yy"
 } } // isc::agent
-#line 2312 "agent_parser.h"
+#line 2375 "agent_parser.h"
 
 
 
index c440be17dbab61263db8d97769f9595e68e381d4..8d99d97acba77de341bc1e94d0cbc88c5f4e9b1b 100644 (file)
@@ -1,4 +1,4 @@
-// Generated 202009120852
+// Generated 202009121616
 // A Bison parser, made by GNU Bison 3.7.2.
 
 // Locations for Bison parsers in C++
index fb813a89c60467ca18931b145a36d13e3fdeceb1..b9faa8db692edacaf19fafcc82717b58fc465a39 100644 (file)
@@ -1,4 +1,4 @@
-// Generated 202009120852
+// Generated 202009121616
 // A Bison parser, made by GNU Bison 3.7.2.
 
 // Starting with Bison 3.2, this file is useless: the structure it
index ddc4320848383825ccaf7b40480b76b63b8ee760..430d2020d9520200ee5e677871c35df3045780d4 100644 (file)
@@ -1,4 +1,4 @@
-// Generated 202009120852
+// Generated 202009121616
 // A Bison parser, made by GNU Bison 3.7.2.
 
 // Starting with Bison 3.2, this file is useless: the structure it