]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#1418] Regen flex/bison
authorFrancis Dupont <fdupont@isc.org>
Fri, 25 Sep 2020 14:49:21 +0000 (14:49 +0000)
committerFrancis Dupont <fdupont@isc.org>
Fri, 2 Oct 2020 14:50:45 +0000 (16:50 +0200)
src/bin/dhcp4/dhcp4_lexer.cc
src/bin/dhcp4/dhcp4_parser.cc
src/bin/dhcp4/dhcp4_parser.h
src/bin/dhcp6/dhcp6_lexer.cc
src/bin/dhcp6/dhcp6_parser.cc
src/bin/dhcp6/dhcp6_parser.h

index ca6d6055e901b1b67b8b52c9eb7cf56a7abf3b20..27df6f06bc672132cba877fa832be06373a8afb3 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 197
-#define YY_END_OF_BUFFER 198
+#define YY_NUM_RULES 199
+#define YY_END_OF_BUFFER 200
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -700,21 +700,21 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static const flex_int16_t yy_accept[1810] =
+static const flex_int16_t yy_accept[1828] =
     {   0,
-      190,  190,    0,    0,    0,    0,    0,    0,    0,    0,
-      198,  196,   10,   11,  196,    1,  190,  187,  190,  190,
-      196,  189,  188,  196,  196,  196,  196,  196,  183,  184,
-      196,  196,  196,  185,  186,    5,    5,    5,  196,  196,
-      196,   10,   11,    0,    0,  179,    0,    0,    0,    0,
+      192,  192,    0,    0,    0,    0,    0,    0,    0,    0,
+      200,  198,   10,   11,  198,    1,  192,  189,  192,  192,
+      198,  191,  190,  198,  198,  198,  198,  198,  185,  186,
+      198,  198,  198,  187,  188,    5,    5,    5,  198,  198,
+      198,   10,   11,    0,    0,  181,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    1,  190,  190,
-        0,  189,  190,    3,    2,    6,    0,  190,    0,    0,
-        0,    0,    0,    0,    4,    0,    0,    9,    0,  180,
+        0,    0,    0,    0,    0,    0,    0,    1,  192,  192,
+        0,  191,  192,    3,    2,    6,    0,  192,    0,    0,
+        0,    0,    0,    0,    4,    0,    0,    9,    0,  182,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  182,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,  184,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
@@ -724,10 +724,10 @@ static const flex_int16_t yy_accept[1810] =
         0,    0,    2,    0,    0,    0,    0,    0,    0,    0,
         8,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,    0,    0,  181,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  183,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   82,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   82,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
@@ -735,172 +735,174 @@ static const flex_int16_t yy_accept[1810] =
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,    0,  195,  193,    0,  192,  191,    0,    0,    0,
-        0,    0,    0,    0,    0,  162,    0,  161,    0,    0,
-       88,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,   35,    0,    0,    0,    0,
+        0,    0,    0,  197,  195,    0,  194,  193,    0,    0,
+        0,    0,    0,    0,    0,    0,  164,    0,  163,    0,
+        0,   88,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   35,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   85,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   85,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   17,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   17,    0,    0,    0,    0,    0,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       18,    0,    0,    0,    0,  194,  191,    0,    0,    0,
-        0,    0,    0,    0,  163,    0,  165,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   89,    0,    0,
-        0,    0,    0,    0,    0,   74,    0,    0,    0,    0,
-        0,    0,  109,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   38,    0,    0,    0,    0,    0,    0,
+        0,    0,   18,    0,    0,    0,    0,  196,  193,    0,
+        0,    0,    0,    0,    0,    0,  165,    0,  167,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,   73,    0,    0,    0,    0,
+       89,    0,    0,    0,    0,    0,    0,    0,   74,    0,
+        0,    0,    0,    0,    0,  111,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   38,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   73,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       77,    0,   39,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   77,    0,   39,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  106,    0,   31,    0,    0,   36,
-        0,    0,    0,    0,    0,    0,    0,   12,  167,  166,
-        0,    0,    0,  119,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  108,    0,   31,
+        0,    0,   36,    0,    0,    0,    0,    0,    0,    0,
+       12,  169,  168,    0,    0,    0,  121,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   98,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,  100,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   33,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   76,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  120,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      115,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    7,    0,    0,  168,    0,    0,    0,
+        0,    0,    0,    0,    0,   33,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+       76,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      122,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  117,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    7,    0,    0,
+      170,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   87,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   87,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  100,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   96,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  102,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+       98,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   80,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   79,
+        0,    0,   80,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
+        0,    0,    0,    0,    0,    0,    0,   79,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  113,    0,    0,    0,
+        0,    0,    0,    0,  115,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  127,
+       96,    0,    0,    0,    0,    0,    0,  101,   32,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  125,   94,    0,    0,    0,    0,    0,    0,   99,
-       32,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  101,   40,    0,    0,    0,
+        0,    0,    0,  103,   40,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   68,    0,    0,    0,
 
+        0,    0,    0,    0,   68,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  144,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  146,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,   84,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  114,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  116,
         0,    0,    0,    0,    0,   43,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,   37,
         0,    0,    0,    0,   30,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,    0,    0,  102,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  111,    0,
+        0,    0,    0,  104,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  145,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,   95,    0,    0,    0,    0,
+      113,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  147,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   81,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   81,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   23,    0,    0,    0,    0,    0,    0,    0,
 
-        0,    0,    0,    0,  150,    0,    0,    0,  148,    0,
+        0,    0,    0,    0,   23,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  152,    0,    0,    0,
+      150,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,  174,    0,
+        0,    0,    0,    0,    0,    0,  114,    0,    0,    0,
+        0,    0,    0,    0,    0,  118,    0,    0,    0,    0,
+        0,   99,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  112,
+       22,    0,  123,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  156,    0,    0,    0,    0,
+
+       71,    0,    0,    0,    0,    0,    0,  126,   34,    0,
+      145,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   59,    0,    0,    0,
+        0,    0,   92,   93,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   75,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   44,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  172,    0,    0,    0,
-        0,    0,    0,  112,    0,    0,    0,    0,    0,    0,
-        0,    0,  116,    0,    0,    0,    0,    0,   97,    0,
+      120,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  110,   22,    0,  121,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  154,    0,    0,    0,    0,   71,    0,    0,
-        0,    0,    0,    0,  124,   34,    0,  143,    0,    0,
+        0,    0,    0,  178,    0,   72,   86,    0,    0,    0,
 
+        0,    0,    0,    0,    0,    0,    0,   56,    0,    0,
+        0,    0,    0,    0,    0,  153,    0,    0,  151,    0,
+      142,  141,    0,    0,    0,   49,    0,    0,   21,    0,
+        0,    0,    0,  166,    0,    0,    0,    0,  107,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   59,    0,    0,    0,    0,    0,   92,
-       93,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   75,    0,    0,    0,    0,    0,    0,    0,    0,
-       44,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  118,    0,    0,    0,
+        0,    0,    0,    0,  135,    0,    0,  144,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,  124,   15,
+        0,   41,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,  155,    0,    0,    0,    0,    0,    0,    0,   57,
+        0,    0,  119,    0,    0,    0,    0,  110,    0,    0,
+
+        0,    0,    0,    0,    0,    0,    0,    0,   78,    0,
+      172,    0,    0,  177,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  176,
-        0,   72,   86,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   56,    0,    0,    0,    0,    0,    0,
-
-        0,  151,    0,    0,  149,    0,  140,  139,    0,    0,
-        0,   49,    0,    0,   21,    0,    0,    0,    0,  164,
-        0,    0,    0,  105,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  133,
-        0,    0,  142,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  122,   15,    0,   41,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  153,    0,    0,    0,
-        0,    0,    0,    0,   57,    0,    0,  117,    0,    0,
-        0,    0,  108,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   78,    0,  170,    0,    0,  175,    0,
-
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   14,    0,
+        0,    0,    0,    0,   48,    0,    0,    0,    0,    0,
+      180,    0,    0,  105,   27,    0,    0,    0,   50,  140,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  175,
+
+        0,  148,    0,    0,    0,    0,    0,    0,    0,    0,
+       25,    0,    0,   24,    0,  154,    0,    0,    0,   52,
+        0,    0,    0,    0,    0,   97,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   53,    0,    0,   94,    0,    0,
+        0,   42,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  125,    0,    0,    0,
+       26,    0,  176,    0,    0,    0,    0,    0,  136,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   47,    0,
+        0,   20,    0,  179,   70,    0,    0,    0,    0,  173,
+
+      171,    0,   28,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   16,    0,    0,    0,  160,    0,    0,    0,
+        0,    0,    0,  133,    0,    0,    0,  109,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   83,    0,    0,
+        0,  138,    0,    0,    0,    0,    0,    0,    0,    0,
+       62,    0,    0,    0,    0,    0,    0,    0,    0,  161,
+       13,    0,    0,    0,    0,    0,    0,    0,  139,  149,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   14,    0,    0,    0,    0,    0,   48,    0,
-        0,    0,    0,    0,  178,    0,  103,   27,    0,    0,
-        0,   50,  138,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  173,    0,  146,    0,    0,    0,    0,    0,
-        0,    0,    0,   25,    0,    0,   24,    0,  152,    0,
+        0,    0,    0,    0,    0,    0,  143,    0,    0,    0,
+        0,    0,    0,  132,    0,   55,   54,   19,    0,  157,
 
-        0,    0,   52,    0,    0,    0,    0,    0,   95,    0,
+        0,    0,    0,    0,   45,    0,    0,    0,   91,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  131,
+        0,    0,   51,    0,    0,   46,  159,    0,    0,   69,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   53,    0,    0,
-        0,    0,    0,   42,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  123,    0,
-        0,    0,   26,    0,  174,    0,    0,    0,    0,    0,
-      134,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       47,    0,    0,   20,    0,  177,   70,    0,    0,    0,
-        0,  171,  169,    0,   28,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   16,    0,    0,    0,  158,    0,
-
-        0,    0,    0,    0,    0,  131,    0,    0,    0,  107,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   83,
-        0,    0,    0,  136,    0,    0,    0,    0,    0,    0,
-        0,    0,   62,    0,    0,    0,    0,    0,    0,    0,
-        0,  159,   13,    0,    0,    0,    0,    0,    0,    0,
-      137,  147,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  141,    0,
-        0,    0,    0,    0,    0,  130,    0,   55,   54,   19,
-        0,  155,    0,    0,    0,    0,   45,    0,    0,    0,
-       91,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-
-        0,  129,    0,    0,   51,    0,    0,   46,  157,    0,
-        0,   69,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   66,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   66,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   29,    0,    0,
-       67,    0,    0,  135,    0,    0,    0,    0,  156,    0,
-      104,    0,    0,    0,   63,    0,    0,    0,    0,    0,
-        0,  127,    0,  132,    0,   65,   58,    0,    0,    0,
-        0,    0,    0,  126,    0,    0,  160,    0,    0,    0,
-        0,    0,    0,    0,   64,    0,    0,    0,    0,    0,
-
-       90,   61,    0,    0,    0,    0,   60,  128,    0
+        0,    0,    0,    0,    0,   29,    0,    0,   67,    0,
+        0,  137,    0,    0,    0,    0,  158,    0,  106,    0,
+        0,    0,   63,    0,    0,    0,    0,    0,    0,  129,
+        0,  134,    0,   65,   58,    0,    0,    0,    0,    0,
+
+        0,  128,    0,    0,  162,    0,    0,    0,    0,    0,
+        0,    0,   64,    0,    0,    0,    0,    0,   90,   61,
+        0,    0,    0,    0,   60,  130,    0
     } ;
 
 static const YY_CHAR yy_ec[256] =
@@ -947,239 +949,240 @@ static const YY_CHAR yy_meta[74] =
         3,    3,    3
     } ;
 
-static const flex_int16_t yy_base[1822] =
+static const flex_int16_t yy_base[1840] =
     {   0,
         0,   72,   21,   31,   43,   51,   54,   60,   91,   99,
-     2210, 2211,   34, 2206,  145,    0,  207, 2211,  214,  221,
-       13,  228, 2211, 2186,  118,   25,    2,    6, 2211, 2211,
-       73,   11,   17, 2211, 2211, 2211,  104, 2194, 2147,    0,
-     2184,  108, 2201,   24,  262, 2211, 2143,   67, 2149,   84,
-       75,   88,  224,   91,   89,  290,  220, 2141,  206,  285,
-      206,  204,  212,   60,  232, 2150,  247,  294,  315,  307,
-      286, 2133,  230,  325,  354,  328, 2152,    0,  366,  382,
-      397,  411,  404, 2211,    0, 2211,  419,  425,  216,  225,
-      229,  227,  319,  329, 2211, 2149, 2190, 2211,  300, 2211,
-
-      438, 2177,  390, 2146,  331,   10,  406,  311,  408,  414,
-      420, 2187,    0,  491,  409, 2129, 2126, 2130,  344, 2126,
-     2134,  401, 2130, 2119, 2120, 2125,   78, 2135, 2118, 2127,
-     2127,   95, 2118,  239, 2119, 2117,  405, 2165, 2169, 2109,
-     2162, 2102, 2125, 2122, 2122, 2116,  387, 2109, 2107, 2108,
-     2100, 2105, 2099,  424, 2110, 2103, 2094, 2093, 2107,  419,
-     2093,  408,  407, 2087,  465,  420,  427, 2108, 2105, 2106,
-      442, 2104, 2139, 2138,  462, 2084, 2084, 2085,  464, 2077,
-     2094, 2086,    0,  428,  464,  460,  464,  489,  503, 2085,
-     2211,    0, 2130,  508, 2079,  496,  502,  506, 2133,  508,
-
-     2132,  504, 2131, 2211,  550, 2130,  524, 2089, 2081, 2068,
-     2084, 2085, 2082, 2079, 2078, 2069,  520, 2120, 2114, 2078,
-     2059, 2056, 2064, 2059, 2073, 2069, 2057, 2069, 2069, 2060,
-     2044, 2048, 2061, 2063, 2060, 2052, 2042, 2060, 2211, 2055,
-     2058, 2039, 2038, 2090, 2037, 2047, 2050,  488, 2046, 2085,
-     2030, 2032, 2043, 2081, 2026, 2084, 2019, 2034,  533, 2024,
-     2030, 2039, 2020, 2018, 2018, 2024, 2015, 2014, 2021, 2011,
-     2070, 2026, 2025, 2019,  488, 2026, 2021, 2013, 2003, 2018,
-     2017, 2012, 2016,  166, 2014, 2000, 2006, 2013, 1995, 1996,
-     1999, 1996, 1995,  341, 1990, 2004, 2003, 2046, 2005,  392,
-
-     1996,  522, 2211, 2211,  532, 2211, 2211, 1983,    0,  527,
-      516, 2031,  542, 2041,  527, 2211, 2040, 2211, 2034,  588,
-     2211,  547, 1974, 1983, 2031, 1975, 1992, 1973, 1979, 2031,
-     1986, 1981, 1984, 1979,  547, 2211, 1981, 2025, 2019, 1977,
-     1974,  572, 1980, 2020, 2014, 1967, 1962, 1959, 2010, 1967,
-     1956, 1972, 2006, 1952,  612, 1966, 1951, 1964, 1951, 1961,
-     1956, 1963, 1958, 1954,  557, 1952, 1955, 1950, 1936, 1948,
-     1944, 1994,  570, 1988, 2211, 1987, 1937, 1936, 1935, 1928,
-     1930, 1942, 1933, 1922, 1939, 1934,  544, 1981, 1934, 1931,
-     1934, 2211, 1933, 1922, 1922, 1934,  563, 1909, 1910, 1931,
-
-      575, 1913, 1964, 1909, 1923, 1926, 1921, 1907, 1919, 1918,
-     1917, 1912, 1915, 1914, 1913, 1912,  571, 1955, 1914, 1953,
-     2211, 1895, 1894,  622, 1907, 2211, 2211, 1906,    0, 1895,
-     1887,  596, 1946, 1945, 2211, 1944, 2211,  608,  663,  608,
-     1943, 1885, 1896, 1889, 1891, 1890, 1878, 2211, 1883, 1889,
-     1892, 1875, 1890, 1877, 1876, 2211,  589, 1878, 1875,  594,
-     1873, 1875, 2211, 1883, 1880, 1865, 1878, 1873,  639, 1880,
-     1868, 1861, 1912, 2211, 1859, 1875, 1909, 1870, 1867, 1868,
-     1870, 1904, 1855, 1850, 1849, 1900, 1844,  597, 1863, 1837,
-     1844, 1849, 1859, 1893, 1897, 2211, 1842, 1838, 1836, 1845,
-
-     1839, 1846, 1830, 1830, 1840, 1828, 1842, 1831, 1827, 1825,
-     2211, 1882, 2211, 1824, 1835, 1874, 1819, 1824, 1833, 1827,
-     1821, 1830, 1872, 1866, 1828, 1811, 1811, 1806, 1826, 1801,
-     1807, 1812, 1805, 1813, 1817, 1800, 1858, 1799, 1851, 1796,
-     1797, 1796, 1808, 1797, 2211, 1807, 2211, 1796, 1794, 2211,
-     1805, 1841, 1801,    0, 1785, 1802, 1842, 2211, 2211, 2211,
-      613,  619,  653, 2211, 1793, 1792, 1799, 1779, 1778, 1831,
-     1776, 1829, 1774, 1773, 1772, 1779, 1772, 1784, 1766, 1766,
-     1781, 1780, 1779, 1778, 1778, 1760, 1765, 1806, 1773, 1765,
-     1810, 1754, 1770, 1769, 2211, 1754, 1751, 1809, 1764, 1756,
-
-     1762, 1753, 1761, 1746, 1762, 1744, 1758,  613, 1740, 1734,
-     1739, 1754, 1751, 1752, 1731, 1741, 1747, 1790, 1745, 1737,
-     1728, 2211, 1729, 1731, 1740, 1738, 1777, 1776, 1727,   16,
-     1736, 1773, 1718, 1719, 1722, 1715, 2211, 1729, 1708, 1712,
-     1726, 1718, 1763, 1715, 1722, 1760, 2211, 1705, 1719, 1703,
-     1717, 1720, 1701, 1753, 1752, 1751, 1750, 1695, 1748, 1747,
-     2211, 1692, 1706,  649, 1707, 1706, 1703, 1703, 1740, 1700,
-     1683, 1688, 1690, 2211, 1696, 1686, 2211,  628,  647, 1680,
-     1678, 1685, 1676, 1670, 1728,  644, 1732,  651, 1726, 1686,
-     1724, 1723, 1675, 1673, 1681, 1684, 1668, 1669, 1660, 1715,
-
-     1666, 1674, 1675, 1711, 1672, 1666,  657, 1662, 1707, 1711,
-     1666, 1665, 2211, 1666, 1659, 1648,  203,  228,  254,  309,
-      309,  360,  427,  497,  501,  581,  589,  550,  543,  644,
-      637,  609,  662, 2211,  664,  621,  630,  626,  620,  631,
-      684,  647,  642,  656, 2211,  646,  657,  646,  666,  668,
-      712,  714,  657,  668,  654,  677,  656,  662,  717,  681,
-      665,  677,  721,  722,  723,  670,  725,  689,  684,  691,
-      687,  672,  684,  685,  692,  678, 2211,  743,  701,  703,
-      693,  705,  695,  708,  693,  700,  706,  698,  712,  752,
-      728,  715,  720,  717,  718,  763,  716,  714,  723, 2211,
-
-      713,  728,  725,  711,  718,  717,  715,  734,  731,  719,
-      726,  727,  736,  736,  726,  724,  723,  734,  730,  787,
-      744,  729,  730,  736,  752,  742, 2211,  752,  752,  745,
-      756,  754,  799,  741,  743,  758,  745,  805,  762,  748,
-      751, 2211, 2211,  761,  766,  771,  759,  769,  771, 2211,
-     2211,  772,  759,  777,  764,  758,  763,  781,  768,  818,
-      769,  821,  767,  771,  829, 2211, 2211,  774,  778,  777,
-      774,  834,  787,  777,  778,  774,  787,  798,  782,  800,
-      795,  796,  798,  791,  793,  794,  795,  795,  797,  812,
-      853,  810,  815,  792,  815,  799, 2211,  806,  807,  821,
-
-      811,  809,  859,  817,  807,  822,  823,  810,  842,  850,
-      819,  814,  869,  870, 2211,  833,  837,  878,  826,  821,
-      822,  834,  841,  830,  831,  827,  830,  831,  841,  850,
-      886,  841,  836,  895,  852,  854,  845, 2211,  847,  850,
-      858,  860,  845,  861,  855,  902,  868,  852,  853, 2211,
-      869,  872,  855,  914,  857, 2211,  874,  877,  857,  875,
-      915,  873,  869,  866,  919,  920,  882,  868,  886,  885,
-      886,  872,  887,  879,  886,  876,  894,  893,  880, 2211,
-      888,  894,  897,  942, 2211,  891,  896,  940,  891,  904,
-      898,  902,  900,  898,  900,  910,  955,  899,  904,  900,
-
-      959,  903,  915, 2211,  903,  911,  909,  960,  922,  908,
-      909,  918,  930,  917,  916,  921,  931,  932,  937,  978,
-      950,  955,  937,  934,  930,  925,  985,  928, 2211,  928,
-      948,  947,  938,  927,  944,  951,  994,  955,  948,  952,
-      956,  939, 1000,  947, 2211,  997,  944,  947,  946,  947,
-      949,  970,  967,  972,  973,  959,  967,  976,  956,  971,
-      978, 1020, 2211, 1021, 1022,  973,  983,  985,  974,  970,
-      977,  986,  974,  981,  982,  994, 1035,  982,  980,  982,
-      999, 1040,  990,  989,  995,  993,  991,  986, 1047, 1048,
-     1044, 1050, 2211, 1007, 1000,  991, 1010,  998, 1008, 1005,
-
-     1010, 1006, 1019, 1019, 2211, 1003, 1005, 1005, 2211, 1006,
-     1067, 1006, 1025, 1026, 1028, 1019, 1073, 1074, 1027, 1012,
-     1026, 1034, 1033, 1017, 1022, 1040, 2211, 1062, 1053, 1085,
-     1025, 1047, 1044, 2211, 1031, 1033, 1050, 1045, 1049, 1094,
-     1042, 1046, 2211, 1038, 1055, 1035, 1056, 1046, 2211, 1061,
-     1061, 1099, 1046, 1102, 1060, 1065, 1051, 1111, 1055, 1066,
-     1058, 1064, 1060, 1078, 1079, 1080, 2211, 2211, 1079, 2211,
-     1064, 1065, 1084, 1074, 1067, 1079, 1123, 1087, 1076, 1083,
-     1084, 1090, 2211, 1083, 1135, 1076, 1137, 2211, 1138, 1080,
-     1086, 1093, 1137, 1099, 2211, 2211, 1086, 2211, 1088, 1102,
-
-     1107, 1090, 1149, 1106, 1107, 1108, 1148, 1100, 1105, 1156,
-     1109, 1105, 1159, 2211, 1106, 1161, 1162, 1119, 1121, 2211,
-     2211, 1104, 1166, 1162, 1126, 1169, 1111, 1123, 1128, 1143,
-     1174, 2211, 1131, 1124, 1133, 1178, 1125, 1140, 1176, 1128,
-     2211, 1124, 1140, 1141, 1142, 1139, 1183, 1146, 1150, 1137,
-     1133, 1193, 1146, 1190, 1196, 1153, 2211, 1154, 1147, 1156,
-     1158, 1155, 1145, 1148, 1149, 1154, 1209, 1210, 1153, 1212,
-     1208, 1149, 1164, 1157, 1160, 1173, 1174, 1172, 1221, 2211,
-     1176, 2211, 2211, 1181, 1173, 1183, 1168, 1224, 1170, 1231,
-     1175, 1185, 1234, 2211, 1182, 1182, 1184, 1186, 1239, 1180,
-
-     1183, 2211, 1184, 1203, 2211, 1187, 2211, 2211, 1200, 1202,
-     1203, 2211, 1190, 1198, 2211, 1250, 1199, 1252, 1232, 2211,
-     1254, 1211, 1251, 2211, 1200, 1208, 1202, 1199, 1202, 1205,
-     1205, 1222, 1261, 1214, 1226, 1229, 1211, 1218, 1208, 2211,
-     1230, 1215, 2211, 1217, 1219, 1234, 1234, 1237, 1237, 1234,
-     1278, 1240, 1232, 2211, 2211, 1242, 2211, 1239, 1244, 1245,
-     1242, 1286, 1234, 1249, 1250, 1242, 2211, 1239, 1240, 1240,
-     1246, 1245, 1243, 1257, 2211, 1298, 1245, 2211, 1246, 1246,
-     1248, 1254, 2211, 1256, 1310, 1252, 1260, 1263, 1274, 1272,
-     1316, 1269, 1278, 2211, 1275, 2211, 1272, 1295, 2211, 1322,
-
-     1264, 1324, 1325, 1282, 1287, 1269, 1329, 1330, 1326, 1290,
-     1287, 1283, 1276, 1288, 1278, 1283, 1339, 1293, 1341, 1337,
-     1301, 1297, 1341, 1289, 1295, 1293, 1352, 1308, 1354, 1312,
-     1356, 1317, 1306, 1300, 1360, 1302, 1303, 1317, 1320, 1320,
-     1366, 1308, 1325, 1321, 1325, 1309, 1367, 1368, 1315, 1370,
-     1333, 1334, 2211, 1334, 1335, 1322, 1321, 1377, 2211, 1318,
-     1336, 1385, 1343, 1356, 2211, 1340, 2211, 2211, 1331, 1342,
-     1391, 2211, 2211, 1337, 1342, 1340, 1390, 1348, 1353, 1344,
-     1342, 1356, 2211, 1344, 2211, 1347, 1398, 1341, 1346, 1406,
-     1354, 1364, 1365, 2211, 1411, 1364, 2211, 1413, 2211, 1356,
-
-     1372, 1360, 2211, 1370, 1371, 1420, 1378, 1382, 2211, 1418,
-     1384, 1360, 1378, 1387, 1369, 1376, 1430, 1389, 1388, 1433,
-     1381, 1435, 1436, 1386, 1390, 1395, 1388, 2211, 1441, 1442,
-     1391, 1444, 1386, 2211, 1389, 1399, 1443, 1391, 1406, 1393,
-     1399, 1399, 1454, 1411, 1399, 1398, 1458, 1411, 2211, 1455,
-     1406, 1403, 2211, 1417, 2211, 1420, 1465, 1418, 1415, 1416,
-     2211, 1469, 1428, 1411, 1413, 1429, 1411, 1427, 1428, 1437,
-     2211, 1427, 1479, 2211, 1438, 2211, 2211, 1422, 1429, 1483,
-     1479, 2211, 2211, 1441, 2211, 1481, 1443, 1444, 1429, 1430,
-     1438, 1492, 1488, 1443, 2211, 1455, 1442, 1449, 2211, 1446,
-
-     1451, 1449, 1501, 1502, 1445, 2211, 1460, 1461, 1462, 2211,
-     1463, 1453, 1465, 1510, 1511, 1453, 1461, 1462, 1475, 2211,
-     1452, 1512, 1473, 2211, 1477, 1462, 1462, 1477, 1470, 1469,
-     1480, 1467, 2211, 1472, 1528, 1486, 1488, 1479, 1488, 1490,
-     1494, 2211, 2211, 1535, 1478, 1537, 1538, 1539, 1497, 1541,
-     2211, 2211, 1537, 1499, 1500, 1487, 1546, 1489, 1494, 1485,
-     1550, 1503, 1504, 1494, 1511, 1510, 1551, 1513, 2211, 1510,
-     1515, 1516, 1561, 1518, 1521, 2211, 1564, 2211, 2211, 2211,
-     1525, 2211, 1507, 1567, 1568, 1511, 2211, 1530, 1571, 1530,
-     2211, 1521, 1511, 1570, 1536, 1529, 1525, 1522, 1527, 1523,
-
-     1525, 2211, 1530, 1540, 2211, 1526, 1538, 2211, 2211, 1543,
-     1536, 2211, 1538, 1546, 1591, 1532, 1534, 1531, 1555, 1548,
-     1551, 1540, 1594, 1541, 1549, 1558, 1551, 1546, 1550, 1562,
-     1607, 2211, 1553, 1565, 1610, 1559, 1558, 1613, 1566, 1553,
-     1568, 1573, 1618, 1575, 1620, 1570, 1564, 2211, 1580, 1624,
-     2211, 1581, 1583, 2211, 1574, 1588, 1584, 1577, 2211, 1631,
-     2211, 1588, 1633, 1594, 2211, 1635, 1636, 1591, 1590, 1591,
-     1581, 2211, 1636, 2211, 1583, 2211, 2211, 1643, 1585, 1601,
-     1646, 1607, 1604, 2211, 1645, 1594, 2211, 1606, 1599, 1654,
-     1596, 1598, 1613, 1598, 2211, 1611, 1660, 1661, 1609, 1611,
-
-     2211, 2211, 1605, 1621, 1666, 1667, 2211, 2211, 2211, 1673,
-     1678, 1683, 1688, 1693, 1698, 1703, 1706, 1680, 1685, 1687,
-     1700
+     2228, 2229,   34, 2224,  145,    0,  207, 2229,  214,  221,
+       13,  228, 2229, 2204,  118,   25,    2,    6, 2229, 2229,
+       73,   11,   17, 2229, 2229, 2229,  104, 2212, 2165,    0,
+     2202,  108, 2219,   24,  262, 2229, 2161,   67, 2167,   84,
+       75,   88,  224,   91,   89,  290,  220, 2159,  206,  285,
+      206,  204,  212,   60,  232, 2168,  247,  294,  315,  307,
+      286, 2151,  230,  325,  354,  328, 2170,    0,  366,  382,
+      397,  411,  404, 2229,    0, 2229,  419,  425,  216,  225,
+      229,  227,  319,  329, 2229, 2167, 2208, 2229,  300, 2229,
+
+      438, 2195,  390, 2164,  331,   10,  406,  311,  408,  414,
+      420, 2205,    0,  491,  409, 2147, 2144, 2148,  402, 2144,
+     2152,  406, 2148, 2137, 2138, 2143,   78, 2153, 2136, 2145,
+     2145,   95, 2136,  239, 2137, 2135,  396, 2183, 2187, 2127,
+     2180, 2120, 2143, 2140, 2140, 2134,  336, 2127, 2125, 2126,
+     2118, 2123, 2117,  413, 2128, 2121, 2112, 2111, 2125,  423,
+     2111,  430,  422, 2105,  465,  420,  432, 2126, 2123, 2124,
+      423, 2122, 2157, 2156,  423, 2102, 2102, 2103,  462, 2095,
+     2112, 2104,    0,  456,  471,  471,  489,  479,  504, 2103,
+     2229,    0, 2148,  509, 2097,  494,  501,  507, 2151,  516,
+
+     2150,  503, 2149, 2229,  553, 2148,  526, 2107, 2099, 2086,
+     2097, 2101, 2102, 2099, 2096, 2095, 2086,  500, 2137, 2131,
+     2095, 2076, 2073, 2081, 2076, 2090, 2086, 2074, 2086, 2086,
+     2077, 2061, 2065, 2078, 2080, 2077, 2069, 2059, 2077, 2229,
+     2072, 2075, 2056, 2055, 2107, 2054, 2064, 2067,  541, 2063,
+     2102, 2047, 2049, 2060, 2098, 2043, 2101, 2036, 2051,  535,
+     2041, 2047, 2056, 2037, 2035, 2035, 2041, 2032, 2031, 2038,
+     2028, 2087, 2043, 2042, 2036,  487, 2043, 2038, 2030, 2020,
+     2035, 2034, 2029, 2033,  166, 2031, 2017, 2023, 2030, 2012,
+     2013, 2016, 2013, 2012,  341, 2007, 2021, 2020, 2063, 2022,
+
+      399, 2013,  523, 2229, 2229,  534, 2229, 2229, 2000,    0,
+      521,  504, 2048,  536, 2058,  548, 2229, 2057, 2229, 2051,
+      598, 2229,  547, 1991, 2000, 2048, 2008, 1991, 2008, 1989,
+     1995, 2047, 2002, 1997, 2000, 1995,  543, 2229, 1997, 2041,
+     2035, 1993, 1990,  576, 1996, 2036, 2030, 1983, 1978, 1975,
+     2026, 1983, 1972, 1988, 2022, 1968,  621, 1982, 1967, 1980,
+     1967, 1977, 1972, 1979, 1974, 1970,  528, 1968, 1971, 1966,
+     1952, 1964, 1960, 2010,  546, 2004, 2229, 2003, 1953, 1952,
+     1951, 1944, 1946, 1958, 1949, 1938, 1955, 1950,  586, 1997,
+     1950, 1947, 1950, 2229, 1949, 1938, 1938, 1950,  535, 1925,
+
+     1926, 1947,  579, 1929, 1980, 1925, 1939, 1942, 1937, 1923,
+     1935, 1934, 1933, 1928, 1931, 1930, 1929, 1928,  572, 1971,
+     1930, 1969, 2229, 1911, 1910,  624, 1923, 2229, 2229, 1922,
+        0, 1911, 1903,  573, 1962, 1961, 2229, 1960, 2229,  602,
+      672,  574, 1959, 1901, 1912, 1951, 1904, 1906, 1905, 1893,
+     2229, 1898, 1904, 1907, 1890, 1905, 1892, 1891, 2229,  591,
+     1893, 1890,  603, 1888, 1890, 2229, 1898, 1895, 1880, 1893,
+     1888,  651, 1895, 1883, 1876, 1927, 2229, 1874, 1890, 1924,
+     1885, 1882, 1883, 1885, 1919, 1870, 1865, 1864, 1915, 1859,
+      606, 1878, 1852, 1859, 1864, 1874, 1908, 1912, 2229, 1857,
+
+     1853, 1851, 1860, 1854, 1861, 1845, 1845, 1855, 1843, 1857,
+     1846, 1842, 1840, 2229, 1897, 2229, 1839, 1850, 1889, 1834,
+     1839, 1848, 1842, 1836, 1845, 1887, 1881, 1843, 1826, 1826,
+     1821, 1841, 1816, 1822, 1827, 1820, 1828, 1832, 1815, 1873,
+     1814, 1866, 1811, 1812, 1811, 1823, 1812, 2229, 1822, 2229,
+     1811, 1809, 2229, 1820, 1856, 1816,    0, 1800, 1817, 1857,
+     2229, 2229, 2229,  608,  607,  653, 2229, 1808, 1807,  611,
+     1814, 1794, 1793, 1846, 1791, 1844, 1789, 1788, 1787, 1794,
+     1787, 1799, 1781, 1781, 1796, 1795, 1794, 1793, 1793, 1775,
+     1780, 1821, 1788, 1780, 1825, 1769, 1785, 1784, 2229, 1769,
+
+     1766, 1824, 1779, 1771, 1777, 1768, 1776, 1761, 1777, 1759,
+     1773,  570, 1755, 1749, 1754, 1769, 1766, 1767, 1746, 1756,
+     1762, 1805, 1760, 1752, 1743, 2229, 1744, 1746, 1755, 1753,
+     1792, 1791, 1742,   16, 1751, 1788, 1733, 1734, 1737, 1730,
+     2229, 1744, 1723, 1727, 1741, 1733, 1778, 1730, 1737, 1775,
+     2229, 1720, 1734, 1718, 1732, 1735, 1716, 1768, 1767, 1766,
+     1765, 1710, 1763, 1762, 2229, 1707, 1721,  654, 1722, 1721,
+     1718, 1718, 1755, 1715, 1698, 1703, 1705, 2229, 1711, 1701,
+     2229,  636,  631, 1695, 1693, 1700, 1710, 1702, 1689, 1683,
+     1741,  624, 1745,  626, 1739, 1699, 1737, 1736, 1688, 1686,
+
+     1694, 1697, 1681, 1682, 1673, 1728, 1679, 1687, 1688, 1724,
+     1685, 1679,  644, 1675, 1720, 1724,  203,  224, 2229,  256,
+      303,  295,  353,  421,  450,  500,  506,  570,  586,  594,
+      629,  676,  677,  627,  625,  647,  681,  639,  688, 2229,
+      697,  651,  655,  651,  646,  649,  702,  665,  654,  667,
+     2229,  657,  674,  663,  676,  678,  722,  723,  666,  677,
+      662,  685,  664,  670,  725,  689,  673,  685,  729,  730,
+      731,  678,  733,  697,  692,  699,  695,  680,  692,  693,
+      700,  686, 2229,  751,  709,  711,  701,  713,  703,  716,
+      701,  708,  714,  706,  720,  760,  736,  723,  728,  725,
+
+      707,  714,  728,  773,  726,  724,  733, 2229,  723,  738,
+      735,  721,  728,  727,  725,  744,  741,  729,  736,  737,
+      746,  746,  736,  734,  733,  745,  741,  797,  754,  739,
+      740,  746,  762,  752, 2229,  762,  762,  755,  766,  764,
+      809,  751,  753,  768,  755,  815,  772,  758,  761, 2229,
+     2229,  771,  776,  781,  769,  779,  781, 2229, 2229,  782,
+      769,  787,  774,  768,  773,  791,  778,  828,  779,  831,
+      777,  781,  839, 2229, 2229,  784,  788,  787,  784,  844,
+      797,  787,  788,  784,  797,  808,  792,  810,  805,  806,
+      808,  801,  803,  804,  805,  805,  807,  822,  863,  820,
+
+      825,  802,  825,  809, 2229,  816,  817,  831,  821,  819,
+      869,  827,  817,  832,  833,  820,  852,  860,  829,  824,
+      879,  885,  842,  882, 2229,  845,  849,  890,  838,  833,
+      834,  846,  853,  842,  843,  839,  842,  843,  853,  862,
+      898,  854,  849,  908,  865,  866,  857, 2229,  859,  862,
+      870,  872,  857,  873,  867,  914,  880,  864,  865, 2229,
+      881,  884,  867,  926,  869, 2229,  886,  889,  869,  887,
+      927,  885,  881,  878,  931,  932,  894,  880,  898,  897,
+      898,  884,  899,  891,  898,  888,  906,  905,  892, 2229,
+      900,  906,  909,  954, 2229,  903,  908,  952,  903,  916,
+
+      910,  914,  912,  910,  912,  922,  967,  911,  916,  912,
+      971,  915,  927, 2229,  915,  923,  921,  972,  934,  920,
+      921,  930,  942,  929,  928,  933,  943,  944,  949,  990,
+      962,  967,  949,  946,  942, 2229,  938,  938,  998,  941,
+     2229,  941,  961,  960,  951,  940,  957,  964, 1007,  968,
+      961,  965,  969,  952, 1013,  960, 2229, 1010,  957,  960,
+      959,  962,  962,  983,  980,  985,  986,  972,  980,  989,
+      969,  984,  991, 1033, 2229, 1034, 1035,  986,  996,  998,
+      987,  983,  990,  999,  987,  994,  995, 1007, 1048,  995,
+      993,  995, 1012, 1053, 1003, 1002, 1008, 1006, 1004,  999,
+
+     1060, 1061, 1057, 1063, 2229, 1020, 1013, 1004, 1023, 1011,
+     1021, 1018, 1023, 1019, 1032, 1032, 2229, 1016, 1018, 1018,
+     2229, 1019, 1080, 1019, 1038, 1039, 1041, 1032, 1086, 1087,
+     1040, 1025, 1039, 1047, 1046, 1030, 1035, 1053, 2229, 1075,
+     1066, 1098, 1038, 1060, 1054, 1058, 2229, 1045, 1047, 1064,
+     1059, 1063, 1108, 1056, 1060, 2229, 1052, 1069, 1049, 1070,
+     1060, 2229, 1075, 1075, 1113, 1061, 1116, 1074, 1079, 1065,
+     1126, 1069, 1080, 1072, 1078, 1074, 1092, 1093, 1094, 2229,
+     2229, 1093, 2229, 1078, 1079, 1098, 1088, 1081, 1093, 1137,
+     1101, 1090, 1097, 1098, 1104, 2229, 1097, 1149, 1090, 1151,
+
+     2229, 1152, 1094, 1100, 1107, 1151, 1113, 2229, 2229, 1100,
+     2229, 1102, 1116, 1121, 1104, 1163, 1120, 1121, 1122, 1162,
+     1114, 1119, 1170, 1123, 1119, 1173, 2229, 1120, 1175, 1176,
+     1133, 1135, 2229, 2229, 1118, 1180, 1176, 1140, 1183, 1125,
+     1137, 1142, 1157, 1188, 2229, 1145, 1138, 1137, 1148, 1193,
+     1140, 1155, 1191, 1143, 2229, 1139, 1155, 1156, 1157, 1154,
+     1198, 1161, 1165, 1152, 1148, 1208, 1161, 1205, 1211, 1168,
+     2229, 1169, 1162, 1172, 1173, 1170, 1160, 1164, 1164, 1169,
+     1224, 1225, 1168, 1227, 1223, 1164, 1179, 1172, 1175, 1188,
+     1189, 1187, 1236, 2229, 1191, 2229, 2229, 1196, 1188, 1198,
+
+     1183, 1239, 1185, 1246, 1190, 1200, 1249, 2229, 1197, 1197,
+     1199, 1201, 1254, 1195, 1198, 2229, 1199, 1218, 2229, 1202,
+     2229, 2229, 1215, 1217, 1218, 2229, 1205, 1213, 2229, 1265,
+     1214, 1267, 1247, 2229, 1269, 1226, 1220, 1268, 2229, 1216,
+     1224, 1218, 1215, 1218, 1221, 1221, 1238, 1277, 1230, 1242,
+     1245, 1227, 1234, 1224, 2229, 1246, 1231, 2229, 1234, 1235,
+     1250, 1250, 1253, 1253, 1250, 1294, 1256, 1248, 2229, 2229,
+     1258, 2229, 1255, 1260, 1261, 1258, 1302, 1250, 1265, 1266,
+     1258, 2229, 1255, 1256, 1256, 1262, 1261, 1259, 1273, 2229,
+     1314, 1261, 2229, 1262, 1262, 1264, 1270, 2229, 1272, 1326,
+
+     1268, 1276, 1279, 1290, 1288, 1332, 1285, 1294, 2229, 1291,
+     2229, 1288, 1311, 2229, 1338, 1296, 1281, 1341, 1342, 1299,
+     1304, 1286, 1346, 1347, 1343, 1307, 1304, 1300, 1293, 1305,
+     1295, 1300, 1356, 1310, 1358, 1354, 1318, 1314, 1358, 1307,
+     1312, 1310, 1369, 1325, 1371, 1329, 1373, 1334, 1323, 1317,
+     1377, 1319, 1320, 1334, 1337, 1337, 1383, 1325, 1342, 1338,
+     1342, 1326, 1384, 1385, 1332, 1387, 1350, 1351, 2229, 1351,
+     1352, 1339, 1338, 1394, 2229, 1335, 1353, 1402, 1360, 1373,
+     2229, 1405, 1358, 2229, 2229, 1349, 1360, 1409, 2229, 2229,
+     1355, 1360, 1358, 1408, 1366, 1371, 1362, 1360, 1374, 2229,
+
+     1362, 2229, 1365, 1416, 1359, 1364, 1424, 1372, 1382, 1384,
+     2229, 1429, 1382, 2229, 1431, 2229, 1375, 1390, 1378, 2229,
+     1388, 1389, 1438, 1396, 1400, 2229, 1436, 1402, 1378, 1396,
+     1405, 1387, 1394, 1448, 1407, 1406, 1451, 1399, 1453, 1454,
+     1404, 1408, 1413, 1406, 2229, 1459, 1460, 2229, 1409, 1462,
+     1404, 2229, 1407, 1417, 1461, 1409, 1424, 1411, 1417, 1417,
+     1472, 1429, 1417, 1416, 1476, 1429, 2229, 1473, 1424, 1421,
+     2229, 1435, 2229, 1438, 1483, 1436, 1433, 1434, 2229, 1487,
+     1446, 1429, 1431, 1447, 1429, 1445, 1446, 1455, 2229, 1445,
+     1497, 2229, 1456, 2229, 2229, 1440, 1447, 1501, 1497, 2229,
+
+     2229, 1459, 2229, 1499, 1461, 1462, 1447, 1448, 1456, 1510,
+     1506, 1461, 2229, 1473, 1460, 1467, 2229, 1464, 1469, 1467,
+     1519, 1520, 1463, 2229, 1478, 1479, 1480, 2229, 1481, 1471,
+     1483, 1528, 1529, 1471, 1479, 1480, 1493, 2229, 1470, 1530,
+     1491, 2229, 1495, 1480, 1480, 1495, 1488, 1487, 1498, 1485,
+     2229, 1490, 1546, 1504, 1506, 1497, 1506, 1508, 1512, 2229,
+     2229, 1553, 1496, 1555, 1556, 1557, 1515, 1559, 2229, 2229,
+     1555, 1517, 1518, 1505, 1564, 1507, 1512, 1503, 1568, 1521,
+     1522, 1512, 1529, 1528, 1569, 1531, 2229, 1528, 1533, 1534,
+     1579, 1536, 1539, 2229, 1582, 2229, 2229, 2229, 1543, 2229,
+
+     1525, 1585, 1586, 1529, 2229, 1548, 1589, 1548, 2229, 1539,
+     1529, 1588, 1554, 1547, 1543, 1540, 1545, 1541, 1543, 2229,
+     1548, 1558, 2229, 1544, 1556, 2229, 2229, 1561, 1554, 2229,
+     1556, 1564, 1609, 1550, 1552, 1549, 1573, 1566, 1569, 1558,
+     1612, 1559, 1567, 1576, 1569, 1564, 1568, 1580, 1625, 2229,
+     1571, 1583, 1628, 1577, 1576, 1631, 1584, 1571, 1586, 1591,
+     1636, 1593, 1638, 1588, 1582, 2229, 1598, 1642, 2229, 1599,
+     1601, 2229, 1592, 1606, 1602, 1595, 2229, 1649, 2229, 1606,
+     1651, 1612, 2229, 1653, 1654, 1609, 1608, 1609, 1599, 2229,
+     1654, 2229, 1601, 2229, 2229, 1661, 1603, 1619, 1664, 1625,
+
+     1622, 2229, 1663, 1612, 2229, 1624, 1617, 1672, 1614, 1616,
+     1631, 1616, 2229, 1629, 1678, 1679, 1627, 1629, 2229, 2229,
+     1623, 1639, 1684, 1685, 2229, 2229, 2229, 1691, 1696, 1701,
+     1706, 1711, 1716, 1721, 1724, 1698, 1703, 1705, 1718
     } ;
 
-static const flex_int16_t yy_def[1822] =
+static const flex_int16_t yy_def[1840] =
     {   0,
-     1810, 1810, 1811, 1811, 1810, 1810, 1810, 1810, 1810, 1810,
-     1809, 1809, 1809, 1809, 1809, 1812, 1809, 1809, 1809, 1809,
-     1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809,
-     1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1813,
-     1809, 1809, 1809, 1814,   15, 1809,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1815,   45,   45,   45,   45,
+     1828, 1828, 1829, 1829, 1828, 1828, 1828, 1828, 1828, 1828,
+     1827, 1827, 1827, 1827, 1827, 1830, 1827, 1827, 1827, 1827,
+     1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827,
+     1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1831,
+     1827, 1827, 1827, 1832,   15, 1827,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1833,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1812, 1809, 1809,
-     1809, 1809, 1809, 1809, 1816, 1809, 1809, 1809, 1809, 1809,
-     1809, 1809, 1809, 1809, 1809, 1809, 1813, 1809, 1814, 1809,
+       45,   45,   45,   45,   45,   45,   45, 1830, 1827, 1827,
+     1827, 1827, 1827, 1827, 1834, 1827, 1827, 1827, 1827, 1827,
+     1827, 1827, 1827, 1827, 1827, 1827, 1831, 1827, 1832, 1827,
 
-     1809,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1817,   45, 1815,   45,   45,   45,   45,   45,   45,
+     1827,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1835,   45, 1833,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1816, 1809, 1809, 1809, 1809, 1809, 1809, 1809,
-     1809, 1818,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1834, 1827, 1827, 1827, 1827, 1827, 1827, 1827,
+     1827, 1836,   45,   45,   45,   45,   45,   45,   45,   45,
 
-       45,   45, 1817, 1809, 1815,   45,   45,   45,   45,   45,
+       45,   45, 1835, 1827, 1833,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1809,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1827,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
@@ -1187,194 +1190,195 @@ static const flex_int16_t yy_def[1822] =
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
-       45, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1819,   45,
-       45,   45,   45,   45,   45, 1809,   45, 1809,   45, 1815,
-     1809,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1809,   45,   45,   45,   45,
+       45,   45, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1837,
+       45,   45,   45,   45,   45,   45, 1827,   45, 1827,   45,
+     1833, 1827,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1827,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1809,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1827,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1809,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1827,   45,   45,   45,   45,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1809,   45,   45,   45,   45, 1809, 1809, 1809, 1820,   45,
-       45,   45,   45,   45, 1809,   45, 1809,   45, 1815,   45,
-       45,   45,   45,   45,   45,   45,   45, 1809,   45,   45,
-       45,   45,   45,   45,   45, 1809,   45,   45,   45,   45,
-       45,   45, 1809,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1809,   45,   45,   45,   45,   45,   45,
+       45,   45, 1827,   45,   45,   45,   45, 1827, 1827, 1827,
+     1838,   45,   45,   45,   45,   45, 1827,   45, 1827,   45,
+     1833,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+     1827,   45,   45,   45,   45,   45,   45,   45, 1827,   45,
+       45,   45,   45,   45,   45, 1827,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1827,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1809,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1827,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1809,   45, 1809,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1827,   45, 1827,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1809,   45, 1809,   45,   45, 1809,
-       45,   45, 1809, 1821,   45,   45,   45, 1809, 1809, 1809,
-       45,   45,   45, 1809,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1827,   45, 1827,
+       45,   45, 1827,   45,   45, 1827, 1839,   45,   45,   45,
+     1827, 1827, 1827,   45,   45,   45, 1827,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1809,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1827,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1809,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1809,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1809,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1809,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1809,   45,   45, 1809,   45,   45,   45,
+       45,   45,   45,   45,   45, 1827,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+     1827,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+     1827,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1827,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1827,   45,   45,
+     1827,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1809,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1827,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1827,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1809,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1809,   45,   45,   45,   45,   45,
+     1827,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1809,   45,   45,   45,
+       45,   45, 1827,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1809,
 
+       45,   45,   45,   45,   45,   45,   45, 1827,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1809,   45,   45,   45,
+       45,   45,   45,   45, 1827,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1827,
+     1827,   45,   45,   45,   45,   45,   45, 1827, 1827,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1809, 1809,   45,   45,   45,   45,   45,   45, 1809,
-     1809,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1809, 1809,   45,   45,   45,
+       45,   45,   45, 1827, 1827,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1809,   45,   45,   45,
 
+       45,   45,   45,   45, 1827,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1809,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1827,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1809,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1809,
-       45,   45,   45,   45,   45, 1809,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1809,
-       45,   45,   45,   45, 1809,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1827,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1827,
+       45,   45,   45,   45,   45, 1827,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1827,
+       45,   45,   45,   45, 1827,   45,   45,   45,   45,   45,
 
-       45,   45,   45, 1809,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1809,   45,
+       45,   45,   45, 1827,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1809,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1827,   45,   45,   45,   45,
+     1827,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1827,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1809,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1827,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1809,   45,   45,   45,   45,   45,   45,   45,
 
-       45,   45,   45,   45, 1809,   45,   45,   45, 1809,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1809,   45,   45,   45,
-       45,   45,   45, 1809,   45,   45,   45,   45,   45,   45,
-       45,   45, 1809,   45,   45,   45,   45,   45, 1809,   45,
+       45,   45,   45,   45, 1827,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1827,   45,   45,   45,
+     1827,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1827,   45,
+       45,   45,   45,   45,   45,   45, 1827,   45,   45,   45,
+       45,   45,   45,   45,   45, 1827,   45,   45,   45,   45,
+       45, 1827,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1827,
+     1827,   45, 1827,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1827,   45,   45,   45,   45,
+
+     1827,   45,   45,   45,   45,   45,   45, 1827, 1827,   45,
+     1827,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1827,   45,   45,   45,
+       45,   45, 1827, 1827,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1827,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1827,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1809, 1809,   45, 1809,
+     1827,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1809,   45,   45,   45,   45, 1809,   45,   45,
-       45,   45,   45,   45, 1809, 1809,   45, 1809,   45,   45,
+       45,   45,   45, 1827,   45, 1827, 1827,   45,   45,   45,
 
+       45,   45,   45,   45,   45,   45,   45, 1827,   45,   45,
+       45,   45,   45,   45,   45, 1827,   45,   45, 1827,   45,
+     1827, 1827,   45,   45,   45, 1827,   45,   45, 1827,   45,
+       45,   45,   45, 1827,   45,   45,   45,   45, 1827,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1809,   45,   45,   45,   45,   45, 1809,
-     1809,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1809,   45,   45,   45,   45,   45,   45,   45,   45,
-     1809,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1809,   45,   45,   45,
+       45,   45,   45,   45, 1827,   45,   45, 1827,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1827, 1827,
+       45, 1827,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1827,   45,   45,   45,   45,   45,   45,   45, 1827,
+       45,   45, 1827,   45,   45,   45,   45, 1827,   45,   45,
+
+       45,   45,   45,   45,   45,   45,   45,   45, 1827,   45,
+     1827,   45,   45, 1827,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1809,
-       45, 1809, 1809,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1809,   45,   45,   45,   45,   45,   45,
-
-       45, 1809,   45,   45, 1809,   45, 1809, 1809,   45,   45,
-       45, 1809,   45,   45, 1809,   45,   45,   45,   45, 1809,
-       45,   45,   45, 1809,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1809,
-       45,   45, 1809,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1809, 1809,   45, 1809,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1809,   45,   45,   45,
-       45,   45,   45,   45, 1809,   45,   45, 1809,   45,   45,
-       45,   45, 1809,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1809,   45, 1809,   45,   45, 1809,   45,
-
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1827,   45,
+       45,   45,   45,   45, 1827,   45,   45,   45,   45,   45,
+     1827,   45,   45, 1827, 1827,   45,   45,   45, 1827, 1827,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1827,
+
+       45, 1827,   45,   45,   45,   45,   45,   45,   45,   45,
+     1827,   45,   45, 1827,   45, 1827,   45,   45,   45, 1827,
+       45,   45,   45,   45,   45, 1827,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1827,   45,   45, 1827,   45,   45,
+       45, 1827,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1827,   45,   45,   45,
+     1827,   45, 1827,   45,   45,   45,   45,   45, 1827,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1827,   45,
+       45, 1827,   45, 1827, 1827,   45,   45,   45,   45, 1827,
+
+     1827,   45, 1827,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1827,   45,   45,   45, 1827,   45,   45,   45,
+       45,   45,   45, 1827,   45,   45,   45, 1827,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1827,   45,   45,
+       45, 1827,   45,   45,   45,   45,   45,   45,   45,   45,
+     1827,   45,   45,   45,   45,   45,   45,   45,   45, 1827,
+     1827,   45,   45,   45,   45,   45,   45,   45, 1827, 1827,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1809,   45,   45,   45,   45,   45, 1809,   45,
-       45,   45,   45,   45, 1809,   45, 1809, 1809,   45,   45,
-       45, 1809, 1809,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1809,   45, 1809,   45,   45,   45,   45,   45,
-       45,   45,   45, 1809,   45,   45, 1809,   45, 1809,   45,
+       45,   45,   45,   45,   45,   45, 1827,   45,   45,   45,
+       45,   45,   45, 1827,   45, 1827, 1827, 1827,   45, 1827,
 
-       45,   45, 1809,   45,   45,   45,   45,   45, 1809,   45,
+       45,   45,   45,   45, 1827,   45,   45,   45, 1827,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1827,
+       45,   45, 1827,   45,   45, 1827, 1827,   45,   45, 1827,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1809,   45,   45,
-       45,   45,   45, 1809,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1809,   45,
-       45,   45, 1809,   45, 1809,   45,   45,   45,   45,   45,
-     1809,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1809,   45,   45, 1809,   45, 1809, 1809,   45,   45,   45,
-       45, 1809, 1809,   45, 1809,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1809,   45,   45,   45, 1809,   45,
-
-       45,   45,   45,   45,   45, 1809,   45,   45,   45, 1809,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1809,
-       45,   45,   45, 1809,   45,   45,   45,   45,   45,   45,
-       45,   45, 1809,   45,   45,   45,   45,   45,   45,   45,
-       45, 1809, 1809,   45,   45,   45,   45,   45,   45,   45,
-     1809, 1809,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1809,   45,
-       45,   45,   45,   45,   45, 1809,   45, 1809, 1809, 1809,
-       45, 1809,   45,   45,   45,   45, 1809,   45,   45,   45,
-     1809,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-
-       45, 1809,   45,   45, 1809,   45,   45, 1809, 1809,   45,
-       45, 1809,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1827,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1809,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1809,   45,   45,
-     1809,   45,   45, 1809,   45,   45,   45,   45, 1809,   45,
-     1809,   45,   45,   45, 1809,   45,   45,   45,   45,   45,
-       45, 1809,   45, 1809,   45, 1809, 1809,   45,   45,   45,
-       45,   45,   45, 1809,   45,   45, 1809,   45,   45,   45,
-       45,   45,   45,   45, 1809,   45,   45,   45,   45,   45,
-
-     1809, 1809,   45,   45,   45,   45, 1809, 1809,    0, 1809,
-     1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809,
-     1809
+       45,   45,   45,   45,   45, 1827,   45,   45, 1827,   45,
+       45, 1827,   45,   45,   45,   45, 1827,   45, 1827,   45,
+       45,   45, 1827,   45,   45,   45,   45,   45,   45, 1827,
+       45, 1827,   45, 1827, 1827,   45,   45,   45,   45,   45,
+
+       45, 1827,   45,   45, 1827,   45,   45,   45,   45,   45,
+       45,   45, 1827,   45,   45,   45,   45,   45, 1827, 1827,
+       45,   45,   45,   45, 1827, 1827,    0, 1827, 1827, 1827,
+     1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827
     } ;
 
-static const flex_int16_t yy_nxt[2285] =
+static const flex_int16_t yy_nxt[2303] =
     {   0,
-     1809,   13,   14,   13, 1809,   15,   16, 1809,   17,   18,
+     1827,   13,   14,   13, 1827,   15,   16, 1827,   17,   18,
        19,   20,   21,   22,   22,   22,   22,   22,   23,   24,
-       84,  745,   37,   14,   37,   85,   25,   26,   38,  100,
-     1809,   27,   37,   14,   37,   42,   28,   42,   38,   90,
+       84,  751,   37,   14,   37,   85,   25,   26,   38,  100,
+     1827,   27,   37,   14,   37,   42,   28,   42,   38,   90,
        91,   29,  197,   30,   13,   14,   13,   89,   90,   25,
        31,   91,   13,   14,   13,   13,   14,   13,   32,   40,
-      746,   13,   14,   13,   33,   40,  101,   90,   91,  197,
+      752,   13,   14,   13,   33,   40,  101,   90,   91,  197,
        89,   34,   35,   13,   14,   13,   93,   15,   16,   94,
        17,   18,   19,   20,   21,   22,   22,   22,   22,   22,
        23,   24,   13,   14,   13,   89,   39,  103,   25,   26,
 
        13,   14,   13,   27,   39,   42,  105,   42,   28,   42,
       106,   42,   41,   29,  107,   30,  110,  111,   92,  137,
-       41,   25,   31,  103,  222,  223,   87,  138,   87,  105,
+       41,   25,   31,  103,  223,  224,   87,  138,   87,  105,
        32,   88,   88,   88,   88,   88,   33,  107,  106,  110,
-      228,  111,  229,   34,   35,   44,   44,   44,   45,   45,
+      229,  111,  230,   34,   35,   44,   44,   44,   45,   45,
        46,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   47,   45,   45,   45,   45,   45,   48,   45,   45,
        49,   45,   50,   45,   51,   45,   52,   45,   45,   45,
@@ -1382,141 +1386,141 @@ static const flex_int16_t yy_nxt[2285] =
        57,   58,   59,   60,   61,   62,   63,   64,   65,   51,
 
        66,   67,   68,   69,   70,   71,   72,   73,   74,   75,
-       76,   77,   55,   45,   45,   45,   45,   45,   79,  406,
+       76,   77,   55,   45,   45,   45,   45,   45,   79,  408,
        80,   80,   80,   80,   80,   79,  105,   82,   82,   82,
-       82,   82,  407,   81,   83,   83,   83,   83,   83,   79,
+       82,   82,  409,   81,   83,   83,   83,   83,   83,   79,
        81,   82,   82,   82,   82,   82,  184,   81,  108,  105,
-      103,  119,  833,  131,   81,  185,   81,  184,  109,  120,
+      103,  119,  836,  131,   81,  185,   81,  184,  109,  120,
       134,  135,  121,   81,  132,  122,  186,  123,  136,  124,
-       81,  108,  184,  834,  133,  164,  115,   81,   45,  165,
-      139,  185,  116,  187,   45,  117,  109,   45,  231,   45,
+       81,  108,  184,  837,  133,  164,  115,   81,   45,  165,
+      139,  185,  116,  187,   45,  117,  109,   45,  232,   45,
       140,   45,  141,   45,  186,  113,  143,  144,   45,   45,
 
-      145,   45,   45,  835,  232,  100,  146,   45,   45,   45,
+      145,   45,   45,  838,  233,  100,  146,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
       125,  160,   45,  126,  127,  161,   45,  128,  129,  147,
-       45,  107,  101,  148,  199,  162,  316,  149,   45,  185,
-      130,  417,   45,  110,   45,  114,  836,  155,  837,  150,
+       45,  107,  101,  148,  199,  162,  317,  149,   45,  185,
+      130,  419,   45,  110,   45,  114,  839,  155,  840,  150,
       152,  196,  153,  151,  154,  156,  186,  157,  173,  174,
       166,  199,  158,  159,  167,  188,  179,  168,  108,   83,
        83,   83,   83,   83,  169,  170,  180,  196,  109,  171,
       172,  181,   81,   79,  189,   80,   80,   80,   80,   80,
 
-      211,  175,  423,  176,  212,   87,  177,   87,   81,  838,
+      248,  175,  841,  176,  249,   87,  177,   87,   81,  425,
        88,   88,   88,   88,   88,   81,  109,   83,   83,   83,
        83,   83,   79,  178,   82,   82,   82,   82,   82,  194,
        81,   81,   88,   88,   88,   88,   88,   81,   88,   88,
-       88,   88,   88,   99,  198,  200,  202,  201,  194,  215,
-       99,  247,  269,   81,  424,  248,  270,  194,  216,  217,
-       81,  235,  198,  302,  236,  206,  261,  266,  237,  202,
-      267,  268,  198,  200,  201,  272,  207,  281,  282,  839,
-       99,  262,  263,  264,   99,  283,  304,  289,   99,  284,
-      198,  302,  255,  285,  303,  199,   99,  201,  365,  302,
-
-       99,  290,   99,  192,  205,  205,  205,  205,  205,  304,
-      273,  274,  275,  205,  205,  205,  205,  205,  205,  303,
-      303,  276,  294,  277,  298,  278,  279,  305,  280,  304,
-      311,  313,  315,  314,  317,  319,  205,  205,  205,  205,
-      205,  205,  840,  378,  396,  306,  311,  397,  426,  511,
-      841,  366,  307,  311,  367,  315,  432,  317,  426,  313,
-      314,  436,  319,  320,  320,  320,  320,  320,  434,  322,
-      332,  426,  320,  320,  320,  320,  320,  320,  333,  379,
-      430,  427,  460,  334,  335,  432,  842,  432,  461,  436,
-      431,  434,  453,  380,  843,  320,  320,  320,  320,  320,
-
-      320,  439,  439,  439,  439,  439,  844,  512,  845,  454,
-      439,  439,  439,  439,  439,  439,  440,  474,  487,  488,
-      497,  521,  475,  489,  526,  522,  543,  550,  527,  544,
-      498,  557,  551,  439,  439,  439,  439,  439,  439,  561,
-      578,  562,  585,  557,  595,  678,  614,  848,  579,  596,
-      580,  581,  582,  679,  777,  586,  615,  587,  677,  557,
-      723,  724,  849,  680,  790,  778,  561,  850,  562,  851,
-      476,  563,  678,  791,  852,  477,   45,   45,   45,   45,
-       45,  679,  853,  854,  855,   45,   45,   45,   45,   45,
-       45,  798,  790,  856,  857,  858,  791,  799,  801,  802,
-
-      846,  803,  859,  847,  860,  861,  862,  863,   45,   45,
-       45,   45,   45,   45,  822,  864,  865,  866,  823,  867,
-      868,  869,  824,  870,  871,  872,  873,  874,  875,  876,
-      877,  878,  879,  880,  881,  882,  883,  884,  886,  887,
-      888,  891,  892,  893,  885,  895,  896,  889,  897,  894,
-      898,  890,  899,  900,  901,  902,  903,  904,  905,  906,
+       88,   88,   88,   99,  198,  200,  202,  201,  194,  211,
+       99,  198,  236,   81,  216,  237,  199,  194,  212,  238,
+       81,  426,  213,  217,  218,  206,  842,  270,  290,  202,
+      262,  271,  198,  200,  201,  273,  207,  282,  283,  198,
+       99,  256,  291,  295,   99,  263,  264,  265,   99,  267,
+      284,  303,  268,  269,  285,  201,   99,  305,  286,  843,
+
+       99,  304,   99,  192,  205,  205,  205,  205,  205,  304,
+      274,  275,  276,  205,  205,  205,  205,  205,  205,  303,
+      305,  277,  299,  278,  303,  279,  280,  304,  281,  314,
+      305,  312,  315,  316,  320,  307,  205,  205,  205,  205,
+      205,  205,  318,  398,  434,  380,  399,  844,  312,  428,
+      334,  367,  306,  308,  312,  845,  316,  314,  335,  315,
+      428,  320,  436,  336,  337,  318,  321,  321,  321,  321,
+      321,  323,  428,  434,  432,  321,  321,  321,  321,  321,
+      321,  381,  438,  429,  433,  436,  463,  434,  456,  490,
+      491,  514,  464,  524,  492,  382,  500,  525,  321,  321,
+
+      321,  321,  321,  321,  368,  457,  501,  369,  560,  560,
+      438,  441,  441,  441,  441,  441,  442,  729,  730,  846,
+      441,  441,  441,  441,  441,  441,  477,  546,  529,  553,
+      547,  478,  530,  564,  554,  565,  560,  566,  847,  848,
+      682,  683,  582,  441,  441,  441,  441,  441,  441,  515,
+      583,  589,  584,  585,  586,  618,  599,  797,  681,  783,
+      564,  600,  565,  684,  590,  619,  591,  682,  687,  683,
+      784,  806,  796,  809,  810,  688,  811,  807,  849,  479,
+      797,  850,  851,  852,  480,   45,   45,   45,   45,   45,
+      853,  856,  857,  858,   45,   45,   45,   45,   45,   45,
+
+      796,  830,  859,  854,  860,  831,  855,  861,  862,  832,
+      863,  864,  865,  866,  867,  868,  869,   45,   45,   45,
+       45,   45,   45,  870,  871,  872,  873,  874,  875,  876,
+      877,  878,  879,  880,  881,  882,  883,  884,  885,  886,
+      887,  888,  889,  890,  891,  892,  894,  895,  896,  899,
+      900,  901,  893,  903,  904,  897,  905,  902,  906,  898,
       907,  908,  909,  910,  911,  912,  913,  914,  915,  916,
       917,  918,  919,  920,  921,  922,  923,  924,  925,  926,
       927,  928,  929,  930,  931,  932,  933,  934,  935,  936,
-      937,  910,  938,  939,  940,  941,  942,  943,  944,  945,
+      937,  938,  939,  940,  941,  942,  943,  944,  945,  918,
 
-      946,  947,  948,  949,  950,  952,  953,  954,  955,  951,
-      956,  957,  958,  959,  960,  961,  962,  963,  964,  965,
-      966,  967,  968,  969,  970,  971,  972,  974,  975,  976,
-      973,  977,  978,  979,  980,  981,  982,  983,  984,  985,
-      986,  987,  988,  989,  990,  991,  992,  993,  994,  995,
+      946,  947,  948,  949,  950,  951,  952,  953,  954,  955,
+      956,  957,  958,  959,  960,  962,  963,  964,  965,  961,
+      966,  967,  968,  969,  970,  971,  972,  973,  974,  975,
+      976,  977,  978,  979,  980,  981,  982,  984,  985,  986,
+      983,  987,  988,  989,  990,  991,  992,  993,  994,  995,
       996,  997,  998,  999, 1000, 1001, 1002, 1003, 1004, 1005,
      1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015,
      1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025,
      1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035,
-     1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1022,
-
-     1045, 1046, 1021, 1047, 1048, 1049, 1050, 1051, 1052, 1053,
-     1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063,
-     1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074,
-     1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084,
-     1085, 1086, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095,
-     1096, 1097, 1087, 1098, 1099, 1100, 1101, 1102, 1103, 1104,
-     1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114,
-     1115, 1116, 1117, 1118, 1119, 1120, 1121, 1064, 1122, 1123,
-     1124, 1125, 1126, 1127, 1128, 1130, 1129, 1131, 1132, 1133,
-     1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143,
+     1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045,
+
+     1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1032,
+     1055, 1056, 1031, 1057, 1058, 1059, 1060, 1061, 1062, 1063,
+     1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073,
+     1074, 1075, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084,
+     1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094,
+     1095, 1096, 1097, 1098, 1100, 1101, 1102, 1103, 1104, 1105,
+     1106, 1107, 1108, 1109, 1099, 1110, 1111, 1112, 1113, 1114,
+     1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1124,
+     1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1076,
+     1134, 1135, 1136, 1137, 1138, 1139, 1140, 1142, 1141, 1143,
 
      1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153,
-     1154, 1155, 1128, 1129, 1156, 1157, 1158, 1159, 1160, 1161,
-     1162, 1163, 1164, 1165, 1166, 1167, 1168, 1170, 1172, 1173,
-     1174, 1169, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182,
-     1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192,
+     1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163,
+     1164, 1165, 1166, 1167, 1140, 1141, 1168, 1169, 1170, 1171,
+     1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181,
+     1183, 1185, 1186, 1187, 1182, 1188, 1189, 1190, 1191, 1192,
      1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202,
      1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212,
-     1213, 1171, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221,
-     1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231,
+     1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222,
+     1223, 1224, 1225, 1226, 1184, 1227, 1228, 1229, 1230, 1231,
      1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241,
 
      1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251,
-     1252, 1230, 1253, 1254, 1255, 1256, 1257, 1231, 1258, 1259,
-     1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268, 1269,
-     1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279,
+     1252, 1253, 1254, 1255, 1256, 1257, 1258, 1259, 1260, 1261,
+     1262, 1263, 1264, 1265, 1243, 1266, 1267, 1268, 1269, 1270,
+     1244, 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279,
      1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1289,
-     1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297, 1298, 1300,
-     1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310,
-     1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320,
-     1321, 1322, 1323, 1324, 1326, 1327, 1328, 1329, 1330, 1331,
-     1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341,
-
-     1342, 1343, 1344, 1345, 1346, 1347, 1319, 1348, 1349, 1350,
-     1351, 1299, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359,
-     1360, 1362, 1363, 1364, 1365, 1366, 1367, 1325, 1361, 1368,
-     1369, 1370, 1371, 1372, 1373, 1374, 1375, 1376, 1377, 1378,
-     1379, 1380, 1381, 1382, 1383, 1384, 1385, 1386, 1387, 1388,
-     1389, 1390, 1391, 1392, 1393, 1394, 1395, 1396, 1398, 1399,
-     1400, 1401, 1397, 1402, 1403, 1404, 1405, 1406, 1407, 1408,
-     1409, 1410, 1411, 1412, 1413, 1414, 1415, 1416, 1417, 1418,
-     1419, 1398, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427,
-     1428, 1429, 1430, 1431, 1432, 1433, 1434, 1435, 1436, 1437,
+     1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297, 1298, 1299,
+     1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309,
+     1310, 1311, 1312, 1314, 1315, 1316, 1317, 1318, 1319, 1320,
+     1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330,
+     1331, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1341,
+
+     1342, 1343, 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351,
+     1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361,
+     1333, 1362, 1363, 1364, 1365, 1313, 1366, 1367, 1368, 1369,
+     1370, 1371, 1372, 1373, 1374, 1375, 1377, 1378, 1379, 1380,
+     1381, 1382, 1340, 1376, 1383, 1384, 1385, 1386, 1387, 1388,
+     1389, 1390, 1391, 1392, 1393, 1394, 1395, 1396, 1397, 1398,
+     1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1408,
+     1409, 1410, 1411, 1413, 1414, 1415, 1416, 1412, 1417, 1418,
+     1419, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427, 1428,
+     1429, 1430, 1431, 1432, 1433, 1434, 1413, 1435, 1436, 1437,
 
      1438, 1439, 1440, 1441, 1442, 1443, 1444, 1445, 1446, 1447,
      1448, 1449, 1450, 1451, 1452, 1453, 1454, 1455, 1456, 1457,
      1458, 1459, 1460, 1461, 1462, 1463, 1464, 1465, 1466, 1467,
-     1468, 1469, 1470, 1471, 1472, 1473, 1474, 1475, 1477, 1478,
-     1479, 1480, 1481, 1482, 1483, 1484, 1485, 1486, 1476, 1487,
-     1488, 1489, 1490, 1464, 1491, 1492, 1493, 1494, 1496, 1497,
-     1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1506, 1507,
-     1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517,
+     1468, 1469, 1470, 1471, 1472, 1473, 1474, 1475, 1476, 1477,
+     1478, 1479, 1480, 1481, 1482, 1483, 1484, 1485, 1486, 1487,
+     1488, 1489, 1490, 1491, 1492, 1494, 1495, 1496, 1497, 1498,
+     1499, 1500, 1501, 1502, 1503, 1493, 1504, 1505, 1506, 1480,
+     1507, 1508, 1509, 1510, 1511, 1513, 1514, 1515, 1516, 1517,
      1518, 1519, 1520, 1521, 1522, 1523, 1524, 1525, 1526, 1527,
      1528, 1529, 1530, 1531, 1532, 1533, 1534, 1535, 1536, 1537,
 
      1538, 1539, 1540, 1541, 1542, 1543, 1544, 1545, 1546, 1547,
-     1548, 1549, 1550, 1551, 1552, 1495, 1553, 1554, 1555, 1556,
-     1530, 1557, 1558, 1559, 1560, 1561, 1562, 1563, 1564, 1565,
-     1566, 1567, 1568, 1569, 1570, 1571, 1572, 1573, 1574, 1575,
+     1548, 1549, 1550, 1551, 1552, 1553, 1554, 1555, 1556, 1557,
+     1558, 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1566, 1567,
+     1568, 1569, 1512, 1570, 1571, 1572, 1573, 1547, 1574, 1575,
      1576, 1577, 1578, 1579, 1580, 1581, 1582, 1583, 1584, 1585,
      1586, 1587, 1588, 1589, 1590, 1591, 1592, 1593, 1594, 1595,
      1596, 1597, 1598, 1599, 1600, 1601, 1602, 1603, 1604, 1605,
@@ -1540,87 +1544,90 @@ static const flex_int16_t yy_nxt[2285] =
      1756, 1757, 1758, 1759, 1760, 1761, 1762, 1763, 1764, 1765,
      1766, 1767, 1768, 1769, 1770, 1771, 1772, 1773, 1774, 1775,
      1776, 1777, 1778, 1779, 1780, 1781, 1782, 1783, 1784, 1785,
-     1786, 1787, 1788, 1790, 1789, 1791, 1792, 1793, 1794, 1795,
+     1786, 1787, 1788, 1789, 1790, 1791, 1792, 1793, 1794, 1795,
      1796, 1797, 1798, 1799, 1800, 1801, 1802, 1803, 1804, 1805,
-     1806, 1807, 1808,   12,   12,   12,   12,   12,   36,   36,
-       36,   36,   36,   78,  309,   78,   78,   78,   97,  429,
-       97,  554,   97,   99,   99,   99,   99,   99,  112,  112,
-
-      112,  112,  112,  183,   99,  183,  183,  183,  203,  203,
-      203,  832,  831,  830,  829,  828,  827,  826,  825,  821,
-      820,  819,  818,  817,  816,  815,  814,  813,  812,  811,
-      810,  809,  808,  807,  806,  805,  804,  800,  797,  796,
-      795,  794,  793,  792,  789,  788,  787,  786,  785,  784,
-      783,  782,  781,  780,  779,  776,  775,  774,  773,  772,
-      771,  770,  769,  768,  767,  766,  765,  764,  763,  762,
-      761,  760,  759,  758,  757,  756,  755,  754,  753,  752,
-      751,  750,  749,  748,  747,  744,  743,  742,  741,  740,
-      739,  738,  737,  736,  735,  734,  733,  732,  731,  730,
-
-      729,  728,  727,  726,  725,  722,  721,  720,  719,  718,
-      717,  716,  715,  714,  713,  712,  711,  710,  709,  708,
-      707,  706,  705,  704,  703,  702,  701,  700,  699,  698,
-      697,  696,  695,  694,  693,  692,  691,  690,  689,  688,
-      687,  686,  685,  684,  683,  682,  681,  677,  676,  675,
-      674,  673,  672,  671,  670,  669,  668,  667,  666,  665,
-      664,  663,  662,  661,  660,  659,  658,  657,  656,  655,
-      654,  653,  652,  651,  650,  649,  648,  647,  646,  645,
-      644,  643,  642,  641,  640,  639,  638,  637,  636,  635,
-      634,  633,  632,  631,  630,  629,  628,  627,  626,  625,
-
-      624,  623,  622,  621,  620,  619,  618,  617,  616,  613,
-      612,  611,  610,  609,  608,  607,  606,  605,  604,  603,
-      602,  601,  600,  599,  598,  597,  594,  593,  592,  591,
-      590,  589,  588,  584,  583,  577,  576,  575,  574,  573,
-      572,  571,  570,  569,  568,  567,  566,  565,  564,  560,
-      559,  558,  556,  555,  553,  552,  549,  548,  547,  546,
-      545,  542,  541,  540,  539,  538,  537,  536,  535,  534,
-      533,  532,  531,  530,  529,  528,  525,  524,  523,  520,
-      519,  518,  517,  516,  515,  514,  513,  510,  509,  508,
-      507,  506,  505,  504,  503,  502,  501,  500,  499,  496,
-
-      495,  494,  493,  492,  491,  490,  486,  485,  484,  483,
-      482,  481,  480,  479,  478,  473,  472,  471,  470,  469,
-      468,  467,  466,  465,  464,  463,  462,  459,  458,  457,
-      456,  455,  452,  451,  450,  449,  448,  447,  446,  445,
-      444,  443,  442,  441,  438,  437,  435,  433,  428,  425,
-      422,  421,  420,  419,  418,  416,  415,  414,  413,  412,
-      411,  410,  409,  408,  405,  404,  403,  402,  401,  400,
-      399,  398,  395,  394,  393,  392,  391,  390,  389,  388,
-      387,  386,  385,  384,  383,  382,  381,  377,  376,  375,
-      374,  373,  372,  371,  370,  369,  368,  364,  363,  362,
-
-      361,  360,  359,  358,  357,  356,  355,  354,  353,  352,
-      351,  350,  349,  348,  347,  346,  345,  344,  343,  342,
-      341,  340,  339,  338,  337,  336,  331,  330,  329,  328,
-      327,  326,  325,  324,  323,  321,  204,  318,  316,  312,
-      310,  308,  301,  300,  299,  297,  296,  295,  293,  292,
-      291,  288,  287,  286,  271,  265,  260,  259,  258,  257,
-      256,  254,  253,  252,  251,  250,  249,  246,  245,  244,
-      243,  242,  241,  240,  239,  238,  234,  233,  230,  227,
-      226,  225,  224,  221,  220,  219,  218,  214,  213,  210,
-      209,  208,  204,  195,  193,  191,  190,  182,  163,  142,
-
-      118,  104,  102,   43,   98,   96,   95,   86,   43, 1809,
-       11, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809,
-     1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809,
-     1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809,
-     1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809,
-     1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809,
-     1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809,
-     1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809,
-     1809, 1809, 1809, 1809
+     1806, 1808, 1807, 1809, 1810, 1811, 1812, 1813, 1814, 1815,
+     1816, 1817, 1818, 1819, 1820, 1821, 1822, 1823, 1824, 1825,
+     1826,   12,   12,   12,   12,   12,   36,   36,   36,   36,
+
+       36,   78,  310,   78,   78,   78,   97,  431,   97,  557,
+       97,   99,   99,   99,   99,   99,  112,  112,  112,  112,
+      112,  183,   99,  183,  183,  183,  203,  203,  203,  835,
+      834,  833,  829,  828,  827,  826,  825,  824,  823,  822,
+      821,  820,  819,  818,  817,  816,  815,  814,  813,  812,
+      808,  805,  804,  803,  802,  801,  800,  799,  798,  795,
+      794,  793,  792,  791,  790,  789,  788,  787,  786,  785,
+      782,  781,  780,  779,  778,  777,  776,  775,  774,  773,
+      772,  771,  770,  769,  768,  767,  766,  765,  764,  763,
+      762,  761,  760,  759,  758,  757,  756,  755,  754,  753,
+
+      750,  749,  748,  747,  746,  745,  744,  743,  742,  741,
+      740,  739,  738,  737,  736,  735,  734,  733,  732,  731,
+      728,  727,  726,  725,  724,  723,  722,  721,  720,  719,
+      718,  717,  716,  715,  714,  713,  712,  711,  710,  709,
+      708,  707,  706,  705,  704,  703,  702,  701,  700,  699,
+      698,  697,  696,  695,  694,  693,  692,  691,  690,  689,
+      686,  685,  681,  680,  679,  678,  677,  676,  675,  674,
+      673,  672,  671,  670,  669,  668,  667,  666,  665,  664,
+      663,  662,  661,  660,  659,  658,  657,  656,  655,  654,
+      653,  652,  651,  650,  649,  648,  647,  646,  645,  644,
+
+      643,  642,  641,  640,  639,  638,  637,  636,  635,  634,
+      633,  632,  631,  630,  629,  628,  627,  626,  625,  624,
+      623,  622,  621,  620,  617,  616,  615,  614,  613,  612,
+      611,  610,  609,  608,  607,  606,  605,  604,  603,  602,
+      601,  598,  597,  596,  595,  594,  593,  592,  588,  587,
+      581,  580,  579,  578,  577,  576,  575,  574,  573,  572,
+      571,  570,  569,  568,  567,  563,  562,  561,  559,  558,
+      556,  555,  552,  551,  550,  549,  548,  545,  544,  543,
+      542,  541,  540,  539,  538,  537,  536,  535,  534,  533,
+      532,  531,  528,  527,  526,  523,  522,  521,  520,  519,
+
+      518,  517,  516,  513,  512,  511,  510,  509,  508,  507,
+      506,  505,  504,  503,  502,  499,  498,  497,  496,  495,
+      494,  493,  489,  488,  487,  486,  485,  484,  483,  482,
+      481,  476,  475,  474,  473,  472,  471,  470,  469,  468,
+      467,  466,  465,  462,  461,  460,  459,  458,  455,  454,
+      453,  452,  451,  450,  449,  448,  447,  446,  445,  444,
+      443,  440,  439,  437,  435,  430,  427,  424,  423,  422,
+      421,  420,  418,  417,  416,  415,  414,  413,  412,  411,
+      410,  407,  406,  405,  404,  403,  402,  401,  400,  397,
+      396,  395,  394,  393,  392,  391,  390,  389,  388,  387,
+
+      386,  385,  384,  383,  379,  378,  377,  376,  375,  374,
+      373,  372,  371,  370,  366,  365,  364,  363,  362,  361,
+      360,  359,  358,  357,  356,  355,  354,  353,  352,  351,
+      350,  349,  348,  347,  346,  345,  344,  343,  342,  341,
+      340,  339,  338,  333,  332,  331,  330,  329,  328,  327,
+      326,  325,  324,  322,  204,  319,  317,  313,  311,  309,
+      302,  301,  300,  298,  297,  296,  294,  293,  292,  289,
+      288,  287,  272,  266,  261,  260,  259,  258,  257,  255,
+      254,  253,  252,  251,  250,  247,  246,  245,  244,  243,
+      242,  241,  240,  239,  235,  234,  231,  228,  227,  226,
+
+      225,  222,  221,  220,  219,  215,  214,  210,  209,  208,
+      204,  195,  193,  191,  190,  182,  163,  142,  118,  104,
+      102,   43,   98,   96,   95,   86,   43, 1827,   11, 1827,
+     1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827,
+     1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827,
+     1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827,
+     1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827,
+     1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827,
+     1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827,
+     1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827,
+
+     1827, 1827
     } ;
 
-static const flex_int16_t yy_chk[2285] =
+static const flex_int16_t yy_chk[2303] =
     {   0,
         0,    1,    1,    1,    0,    1,    1,    0,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-       21,  630,    3,    3,    3,   21,    1,    1,    3,   44,
+       21,  634,    3,    3,    3,   21,    1,    1,    3,   44,
         0,    1,    4,    4,    4,   13,    1,   13,    4,   27,
        28,    1,  106,    1,    5,    5,    5,   26,   32,    1,
         1,   33,    6,    6,    6,    7,    7,    7,    1,    7,
-      630,    8,    8,    8,    1,    8,   44,   27,   28,  106,
+      634,    8,    8,    8,    1,    8,   44,   27,   28,  106,
        26,    1,    1,    2,    2,    2,   32,    2,    2,   33,
         2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
         2,    2,    9,    9,    9,   31,    5,   48,    2,    2,
@@ -1637,9 +1644,9 @@ static const flex_int16_t yy_chk[2285] =
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
 
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
-       15,   15,   15,   15,   15,   15,   15,   15,   17,  284,
+       15,   15,   15,   15,   15,   15,   15,   15,   17,  285,
        17,   17,   17,   17,   17,   19,   62,   19,   19,   19,
-       19,   19,  284,   17,   20,   20,   20,   20,   20,   22,
+       19,   19,  285,   17,   20,   20,   20,   20,   20,   22,
        19,   22,   22,   22,   22,   22,   89,   20,   53,   62,
        57,   59,  717,   61,   22,   90,   17,   92,   53,   59,
        62,   63,   59,   19,   61,   59,   91,   59,   63,   59,
@@ -1647,224 +1654,227 @@ static const flex_int16_t yy_chk[2285] =
        65,   90,   57,   92,   45,   57,   53,   45,  134,   45,
        65,   45,   65,   45,   91,   56,   67,   67,   45,   45,
 
-       67,   45,   56,  719,  134,   99,   67,   45,   45,   45,
+       67,   45,   56,  720,  134,   99,   67,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        60,   71,   56,   60,   60,   71,   56,   60,   60,   68,
-       56,   69,   99,   68,  108,   71,  294,   68,   56,   93,
-       60,  294,   56,   76,   56,   56,  720,   70,  721,   68,
+       56,   69,   99,   68,  108,   71,  295,   68,   56,   93,
+       60,  295,   56,   76,   56,   56,  721,   70,  722,   68,
        69,  105,   69,   68,   69,   70,   94,   70,   75,   75,
        74,  108,   70,   70,   74,   93,   76,   74,   75,   79,
        79,   79,   79,   79,   74,   74,   76,  105,   75,   74,
        74,   76,   79,   80,   94,   80,   80,   80,   80,   80,
 
-      119,   75,  300,   75,  119,   81,   75,   81,   80,  722,
+      147,   75,  723,   75,  147,   81,   75,   81,   80,  301,
        81,   81,   81,   81,   81,   79,   75,   83,   83,   83,
        83,   83,   82,   75,   82,   82,   82,   82,   82,  103,
        83,   80,   87,   87,   87,   87,   87,   82,   88,   88,
-       88,   88,   88,  101,  107,  109,  111,  110,  115,  122,
-      101,  147,  163,   83,  300,  147,  163,  103,  122,  122,
-       82,  137,  154,  184,  137,  115,  160,  162,  137,  111,
-      162,  162,  107,  109,  110,  165,  115,  166,  166,  723,
-      101,  160,  160,  160,  101,  167,  186,  171,  101,  167,
-      154,  184,  154,  167,  185,  175,  101,  179,  248,  187,
-
-      101,  171,  101,  101,  114,  114,  114,  114,  114,  186,
-      165,  165,  165,  114,  114,  114,  114,  114,  114,  188,
-      185,  165,  175,  165,  179,  165,  165,  187,  165,  189,
-      194,  196,  198,  197,  200,  202,  114,  114,  114,  114,
-      114,  114,  724,  259,  275,  188,  207,  275,  302,  387,
-      725,  248,  189,  194,  248,  198,  311,  200,  305,  196,
-      197,  315,  202,  205,  205,  205,  205,  205,  313,  207,
-      217,  302,  205,  205,  205,  205,  205,  205,  217,  259,
-      310,  305,  342,  217,  217,  311,  726,  322,  342,  315,
-      310,  313,  335,  259,  727,  205,  205,  205,  205,  205,
-
-      205,  320,  320,  320,  320,  320,  728,  387,  729,  335,
-      320,  320,  320,  320,  320,  320,  322,  355,  365,  365,
-      373,  397,  355,  365,  401,  397,  417,  424,  401,  417,
-      373,  432,  424,  320,  320,  320,  320,  320,  320,  438,
-      457,  438,  460,  440,  469,  561,  488,  731,  457,  469,
-      457,  457,  457,  562,  664,  460,  488,  460,  563,  432,
-      608,  608,  732,  563,  678,  664,  438,  733,  438,  735,
-      355,  440,  561,  679,  736,  355,  439,  439,  439,  439,
-      439,  562,  737,  738,  739,  439,  439,  439,  439,  439,
-      439,  686,  678,  740,  741,  742,  679,  686,  688,  688,
-
-      730,  688,  743,  730,  744,  746,  747,  748,  439,  439,
-      439,  439,  439,  439,  707,  749,  750,  751,  707,  752,
-      753,  754,  707,  755,  756,  757,  758,  759,  760,  761,
-      762,  763,  764,  765,  766,  767,  768,  769,  770,  771,
-      771,  772,  773,  774,  769,  775,  776,  771,  778,  774,
-      779,  771,  780,  781,  782,  783,  784,  785,  786,  787,
-      788,  789,  790,  791,  792,  793,  794,  795,  796,  797,
-      798,  799,  801,  802,  803,  804,  805,  806,  807,  808,
-      809,  810,  811,  812,  813,  814,  815,  816,  817,  818,
-      819,  791,  820,  821,  822,  823,  824,  825,  826,  828,
-
-      829,  830,  831,  832,  833,  834,  835,  836,  837,  833,
-      838,  839,  840,  841,  844,  845,  846,  847,  848,  849,
-      852,  853,  854,  855,  856,  857,  858,  859,  860,  861,
-      858,  862,  863,  864,  865,  868,  869,  870,  871,  872,
-      873,  874,  875,  876,  877,  878,  879,  880,  881,  882,
-      883,  884,  885,  886,  887,  888,  889,  890,  891,  892,
-      893,  894,  895,  896,  898,  899,  900,  901,  902,  903,
-      904,  905,  906,  907,  908,  909,  910,  911,  912,  913,
-      914,  916,  917,  918,  919,  920,  921,  922,  923,  924,
-      925,  926,  927,  928,  929,  930,  931,  932,  933,  910,
-
-      934,  935,  909,  936,  937,  939,  940,  941,  942,  943,
-      944,  945,  946,  947,  948,  949,  951,  952,  953,  954,
-      955,  957,  958,  959,  960,  961,  962,  963,  964,  965,
-      966,  967,  968,  969,  970,  971,  972,  973,  974,  975,
-      976,  977,  978,  979,  981,  982,  983,  984,  986,  987,
-      988,  989,  977,  990,  991,  992,  993,  994,  995,  996,
-      997,  998,  999, 1000, 1001, 1002, 1003, 1005, 1006, 1007,
-     1008, 1009, 1010, 1011, 1012, 1013, 1014,  954, 1015, 1016,
-     1017, 1018, 1019, 1020, 1021, 1023, 1022, 1024, 1025, 1026,
-     1027, 1028, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037,
-
-     1038, 1039, 1040, 1041, 1042, 1043, 1044, 1046, 1047, 1048,
-     1049, 1050, 1021, 1022, 1051, 1052, 1053, 1054, 1055, 1056,
-     1057, 1058, 1059, 1060, 1061, 1062, 1064, 1065, 1066, 1067,
-     1068, 1064, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076,
-     1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086,
-     1087, 1088, 1089, 1090, 1091, 1092, 1094, 1095, 1096, 1097,
-     1098, 1099, 1100, 1101, 1102, 1103, 1104, 1106, 1107, 1108,
-     1110, 1065, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118,
-     1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1128, 1129,
-     1130, 1131, 1132, 1133, 1135, 1136, 1137, 1138, 1139, 1140,
-
-     1141, 1142, 1144, 1145, 1146, 1147, 1148, 1150, 1151, 1152,
-     1153, 1128, 1154, 1155, 1156, 1157, 1158, 1129, 1159, 1160,
-     1161, 1162, 1163, 1164, 1165, 1166, 1169, 1171, 1172, 1173,
-     1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1184,
-     1185, 1186, 1187, 1189, 1190, 1191, 1192, 1193, 1194, 1197,
-     1199, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208,
-     1209, 1210, 1211, 1212, 1213, 1215, 1216, 1217, 1218, 1219,
-     1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231,
-     1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1242, 1243,
-     1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253,
-
-     1254, 1255, 1256, 1258, 1259, 1260, 1230, 1261, 1262, 1263,
-     1264, 1207, 1265, 1266, 1267, 1268, 1269, 1270, 1271, 1272,
-     1273, 1274, 1275, 1276, 1277, 1278, 1279, 1236, 1273, 1281,
-     1284, 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293,
-     1295, 1296, 1297, 1298, 1299, 1300, 1301, 1303, 1304, 1306,
-     1309, 1310, 1311, 1313, 1314, 1316, 1317, 1318, 1319, 1321,
-     1322, 1323, 1318, 1325, 1326, 1327, 1328, 1329, 1330, 1331,
-     1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1341, 1342,
-     1344, 1319, 1345, 1346, 1347, 1348, 1349, 1350, 1351, 1352,
-     1353, 1356, 1358, 1359, 1360, 1361, 1362, 1363, 1364, 1365,
-
-     1366, 1368, 1369, 1370, 1371, 1372, 1373, 1374, 1376, 1377,
-     1379, 1380, 1381, 1382, 1384, 1385, 1386, 1387, 1388, 1389,
-     1390, 1391, 1392, 1393, 1395, 1397, 1398, 1400, 1401, 1402,
-     1403, 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1412,
-     1413, 1414, 1415, 1416, 1417, 1418, 1419, 1420, 1410, 1421,
-     1422, 1423, 1424, 1398, 1425, 1426, 1426, 1427, 1428, 1429,
-     1430, 1431, 1432, 1433, 1434, 1435, 1436, 1437, 1438, 1439,
-     1440, 1441, 1442, 1443, 1444, 1445, 1446, 1447, 1448, 1449,
-     1450, 1451, 1452, 1454, 1455, 1456, 1457, 1458, 1460, 1461,
-     1462, 1463, 1464, 1466, 1469, 1470, 1471, 1474, 1475, 1476,
-
-     1477, 1478, 1479, 1480, 1481, 1482, 1484, 1486, 1487, 1488,
-     1489, 1490, 1491, 1492, 1493, 1427, 1495, 1496, 1498, 1500,
-     1464, 1501, 1502, 1504, 1505, 1506, 1507, 1508, 1510, 1511,
-     1512, 1513, 1514, 1515, 1516, 1517, 1518, 1519, 1520, 1521,
-     1522, 1523, 1524, 1525, 1526, 1527, 1529, 1530, 1531, 1532,
-     1533, 1535, 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543,
-     1544, 1545, 1546, 1547, 1548, 1550, 1551, 1552, 1554, 1556,
-     1557, 1558, 1559, 1560, 1562, 1563, 1564, 1565, 1566, 1567,
-     1568, 1569, 1570, 1572, 1573, 1575, 1578, 1579, 1580, 1581,
-     1584, 1586, 1587, 1588, 1589, 1590, 1591, 1592, 1593, 1594,
-
-     1596, 1597, 1598, 1600, 1601, 1602, 1603, 1604, 1605, 1607,
-     1608, 1609, 1611, 1612, 1613, 1614, 1615, 1616, 1617, 1618,
-     1619, 1621, 1622, 1623, 1625, 1626, 1627, 1628, 1629, 1630,
-     1631, 1632, 1634, 1635, 1636, 1637, 1638, 1639, 1640, 1641,
-     1644, 1645, 1646, 1647, 1648, 1649, 1650, 1653, 1654, 1655,
-     1656, 1657, 1658, 1659, 1660, 1661, 1662, 1663, 1664, 1665,
-     1666, 1667, 1668, 1670, 1671, 1672, 1673, 1674, 1675, 1677,
-     1681, 1683, 1684, 1685, 1686, 1688, 1689, 1690, 1692, 1693,
-     1694, 1695, 1696, 1697, 1698, 1699, 1700, 1701, 1703, 1704,
-     1706, 1707, 1710, 1711, 1713, 1714, 1715, 1716, 1717, 1718,
-
-     1719, 1720, 1721, 1722, 1723, 1724, 1725, 1726, 1727, 1728,
-     1729, 1730, 1731, 1733, 1734, 1735, 1736, 1737, 1738, 1739,
-     1740, 1741, 1742, 1743, 1744, 1745, 1746, 1747, 1749, 1750,
-     1752, 1753, 1755, 1756, 1757, 1758, 1760, 1762, 1763, 1764,
-     1766, 1767, 1768, 1769, 1770, 1771, 1773, 1775, 1778, 1779,
-     1780, 1781, 1782, 1783, 1782, 1785, 1786, 1788, 1789, 1790,
-     1791, 1792, 1793, 1794, 1796, 1797, 1798, 1799, 1800, 1803,
-     1804, 1805, 1806, 1810, 1810, 1810, 1810, 1810, 1811, 1811,
-     1811, 1811, 1811, 1812, 1818, 1812, 1812, 1812, 1813, 1819,
-     1813, 1820, 1813, 1814, 1814, 1814, 1814, 1814, 1815, 1815,
-
-     1815, 1815, 1815, 1816, 1821, 1816, 1816, 1816, 1817, 1817,
-     1817,  716,  715,  714,  712,  711,  710,  709,  708,  706,
-      705,  704,  703,  702,  701,  700,  699,  698,  697,  696,
-      695,  694,  693,  692,  691,  690,  689,  687,  685,  684,
-      683,  682,  681,  680,  676,  675,  673,  672,  671,  670,
-      669,  668,  667,  666,  665,  663,  662,  660,  659,  658,
-      657,  656,  655,  654,  653,  652,  651,  650,  649,  648,
-      646,  645,  644,  643,  642,  641,  640,  639,  638,  636,
-      635,  634,  633,  632,  631,  629,  628,  627,  626,  625,
-      624,  623,  621,  620,  619,  618,  617,  616,  615,  614,
-
-      613,  612,  611,  610,  609,  607,  606,  605,  604,  603,
-      602,  601,  600,  599,  598,  597,  596,  594,  593,  592,
-      591,  590,  589,  588,  587,  586,  585,  584,  583,  582,
-      581,  580,  579,  578,  577,  576,  575,  574,  573,  572,
-      571,  570,  569,  568,  567,  566,  565,  557,  556,  555,
-      553,  552,  551,  549,  548,  546,  544,  543,  542,  541,
-      540,  539,  538,  537,  536,  535,  534,  533,  532,  531,
-      530,  529,  528,  527,  526,  525,  524,  523,  522,  521,
-      520,  519,  518,  517,  516,  515,  514,  512,  510,  509,
-      508,  507,  506,  505,  504,  503,  502,  501,  500,  499,
-
-      498,  497,  495,  494,  493,  492,  491,  490,  489,  487,
-      486,  485,  484,  483,  482,  481,  480,  479,  478,  477,
-      476,  475,  473,  472,  471,  470,  468,  467,  466,  465,
-      464,  462,  461,  459,  458,  455,  454,  453,  452,  451,
-      450,  449,  447,  446,  445,  444,  443,  442,  441,  436,
-      434,  433,  431,  430,  428,  425,  423,  422,  420,  419,
-      418,  416,  415,  414,  413,  412,  411,  410,  409,  408,
-      407,  406,  405,  404,  403,  402,  400,  399,  398,  396,
-      395,  394,  393,  391,  390,  389,  388,  386,  385,  384,
-      383,  382,  381,  380,  379,  378,  377,  376,  374,  372,
-
-      371,  370,  369,  368,  367,  366,  364,  363,  362,  361,
-      360,  359,  358,  357,  356,  354,  353,  352,  351,  350,
-      349,  348,  347,  346,  345,  344,  343,  341,  340,  339,
-      338,  337,  334,  333,  332,  331,  330,  329,  328,  327,
-      326,  325,  324,  323,  319,  317,  314,  312,  308,  301,
-      299,  298,  297,  296,  295,  293,  292,  291,  290,  289,
-      288,  287,  286,  285,  283,  282,  281,  280,  279,  278,
-      277,  276,  274,  273,  272,  271,  270,  269,  268,  267,
-      266,  265,  264,  263,  262,  261,  260,  258,  257,  256,
-      255,  254,  253,  252,  251,  250,  249,  247,  246,  245,
-
-      244,  243,  242,  241,  240,  238,  237,  236,  235,  234,
-      233,  232,  231,  230,  229,  228,  227,  226,  225,  224,
-      223,  222,  221,  220,  219,  218,  216,  215,  214,  213,
-      212,  211,  210,  209,  208,  206,  203,  201,  199,  195,
-      193,  190,  182,  181,  180,  178,  177,  176,  174,  173,
-      172,  170,  169,  168,  164,  161,  159,  158,  157,  156,
-      155,  153,  152,  151,  150,  149,  148,  146,  145,  144,
-      143,  142,  141,  140,  139,  138,  136,  135,  133,  131,
-      130,  129,  128,  126,  125,  124,  123,  121,  120,  118,
-      117,  116,  112,  104,  102,   97,   96,   77,   72,   66,
-
-       58,   49,   47,   43,   41,   39,   38,   24,   14,   11,
-     1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809,
-     1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809,
-     1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809,
-     1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809,
-     1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809,
-     1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809,
-     1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809,
-     1809, 1809, 1809, 1809
+       88,   88,   88,  101,  107,  109,  111,  110,  115,  119,
+      101,  154,  137,   83,  122,  137,  175,  103,  119,  137,
+       82,  301,  119,  122,  122,  115,  724,  163,  171,  111,
+      160,  163,  107,  109,  110,  165,  115,  166,  166,  154,
+      101,  154,  171,  175,  101,  160,  160,  160,  101,  162,
+      167,  184,  162,  162,  167,  179,  101,  186,  167,  725,
+
+      101,  185,  101,  101,  114,  114,  114,  114,  114,  188,
+      165,  165,  165,  114,  114,  114,  114,  114,  114,  184,
+      186,  165,  179,  165,  187,  165,  165,  185,  165,  196,
+      189,  194,  197,  198,  202,  188,  114,  114,  114,  114,
+      114,  114,  200,  276,  312,  260,  276,  726,  207,  303,
+      218,  249,  187,  189,  194,  727,  198,  196,  218,  197,
+      306,  202,  314,  218,  218,  200,  205,  205,  205,  205,
+      205,  207,  303,  312,  311,  205,  205,  205,  205,  205,
+      205,  260,  316,  306,  311,  314,  344,  323,  337,  367,
+      367,  389,  344,  399,  367,  260,  375,  399,  205,  205,
+
+      205,  205,  205,  205,  249,  337,  375,  249,  434,  442,
+      316,  321,  321,  321,  321,  321,  323,  612,  612,  728,
+      321,  321,  321,  321,  321,  321,  357,  419,  403,  426,
+      419,  357,  403,  440,  426,  440,  434,  442,  729,  730,
+      564,  565,  460,  321,  321,  321,  321,  321,  321,  389,
+      460,  463,  460,  460,  460,  491,  472,  683,  566,  668,
+      440,  472,  440,  566,  463,  491,  463,  564,  570,  565,
+      668,  692,  682,  694,  694,  570,  694,  692,  731,  357,
+      683,  732,  733,  734,  357,  441,  441,  441,  441,  441,
+      735,  737,  738,  739,  441,  441,  441,  441,  441,  441,
+
+      682,  713,  741,  736,  742,  713,  736,  743,  744,  713,
+      745,  746,  747,  748,  749,  750,  752,  441,  441,  441,
+      441,  441,  441,  753,  754,  755,  756,  757,  758,  759,
+      760,  761,  762,  763,  764,  765,  766,  767,  768,  769,
+      770,  771,  772,  773,  774,  775,  776,  777,  777,  778,
+      779,  780,  775,  781,  782,  777,  784,  780,  785,  777,
+      786,  787,  788,  789,  790,  791,  792,  793,  794,  795,
+      796,  797,  798,  799,  800,  801,  802,  803,  804,  805,
+      806,  807,  809,  810,  811,  812,  813,  814,  815,  816,
+      817,  818,  819,  820,  821,  822,  823,  824,  825,  797,
+
+      826,  827,  828,  829,  830,  831,  832,  833,  834,  836,
+      837,  838,  839,  840,  841,  842,  843,  844,  845,  841,
+      846,  847,  848,  849,  852,  853,  854,  855,  856,  857,
+      860,  861,  862,  863,  864,  865,  866,  867,  868,  869,
+      866,  870,  871,  872,  873,  876,  877,  878,  879,  880,
+      881,  882,  883,  884,  885,  886,  887,  888,  889,  890,
+      891,  892,  893,  894,  895,  896,  897,  898,  899,  900,
+      901,  902,  903,  904,  906,  907,  908,  909,  910,  911,
+      912,  913,  914,  915,  916,  917,  918,  919,  920,  921,
+      922,  923,  924,  926,  927,  928,  929,  930,  931,  932,
+
+      933,  934,  935,  936,  937,  938,  939,  940,  941,  918,
+      942,  943,  917,  944,  945,  946,  947,  949,  950,  951,
+      952,  953,  954,  955,  956,  957,  958,  959,  961,  962,
+      963,  964,  965,  967,  968,  969,  970,  971,  972,  973,
+      974,  975,  976,  977,  978,  979,  980,  981,  982,  983,
+      984,  985,  986,  987,  988,  989,  991,  992,  993,  994,
+      996,  997,  998,  999,  987, 1000, 1001, 1002, 1003, 1004,
+     1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1015,
+     1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024,  964,
+     1025, 1026, 1027, 1028, 1029, 1030, 1031, 1033, 1032, 1034,
+
+     1035, 1037, 1038, 1039, 1040, 1042, 1043, 1044, 1045, 1046,
+     1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056,
+     1058, 1059, 1060, 1061, 1031, 1032, 1062, 1063, 1064, 1065,
+     1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1076,
+     1077, 1078, 1079, 1080, 1076, 1081, 1082, 1083, 1084, 1085,
+     1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095,
+     1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1106,
+     1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116,
+     1118, 1119, 1120, 1122, 1077, 1123, 1124, 1125, 1126, 1127,
+     1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137,
+
+     1138, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1148, 1149,
+     1150, 1151, 1152, 1153, 1154, 1155, 1157, 1158, 1159, 1160,
+     1161, 1163, 1164, 1165, 1140, 1166, 1167, 1168, 1169, 1170,
+     1141, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179,
+     1182, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192,
+     1193, 1194, 1195, 1197, 1198, 1199, 1200, 1202, 1203, 1204,
+     1205, 1206, 1207, 1210, 1212, 1213, 1214, 1215, 1216, 1217,
+     1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1228,
+     1229, 1230, 1231, 1232, 1235, 1236, 1237, 1238, 1239, 1240,
+     1241, 1242, 1243, 1244, 1246, 1247, 1248, 1249, 1250, 1251,
+
+     1252, 1253, 1254, 1256, 1257, 1258, 1259, 1260, 1261, 1262,
+     1263, 1264, 1265, 1266, 1267, 1268, 1269, 1270, 1272, 1273,
+     1243, 1274, 1275, 1276, 1277, 1220, 1278, 1279, 1280, 1281,
+     1282, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290, 1291,
+     1292, 1293, 1250, 1287, 1295, 1298, 1299, 1300, 1301, 1302,
+     1303, 1304, 1305, 1306, 1307, 1309, 1310, 1311, 1312, 1313,
+     1314, 1315, 1317, 1318, 1320, 1323, 1324, 1325, 1327, 1328,
+     1330, 1331, 1332, 1333, 1335, 1336, 1337, 1332, 1338, 1340,
+     1341, 1342, 1343, 1344, 1345, 1346, 1347, 1348, 1349, 1350,
+     1351, 1352, 1353, 1354, 1356, 1357, 1333, 1359, 1360, 1361,
+
+     1362, 1363, 1364, 1365, 1366, 1367, 1368, 1371, 1373, 1374,
+     1375, 1376, 1377, 1378, 1379, 1380, 1381, 1383, 1384, 1385,
+     1386, 1387, 1388, 1389, 1391, 1392, 1394, 1395, 1396, 1397,
+     1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1408,
+     1410, 1412, 1413, 1415, 1416, 1417, 1418, 1419, 1420, 1421,
+     1422, 1423, 1424, 1425, 1426, 1427, 1428, 1429, 1430, 1431,
+     1432, 1433, 1434, 1435, 1436, 1426, 1437, 1438, 1439, 1413,
+     1440, 1441, 1442, 1442, 1443, 1444, 1445, 1446, 1447, 1448,
+     1449, 1450, 1451, 1452, 1453, 1454, 1455, 1456, 1457, 1458,
+     1459, 1460, 1461, 1462, 1463, 1464, 1465, 1466, 1467, 1468,
+
+     1470, 1471, 1472, 1473, 1474, 1476, 1477, 1478, 1479, 1480,
+     1482, 1483, 1486, 1487, 1488, 1491, 1492, 1493, 1494, 1495,
+     1496, 1497, 1498, 1499, 1501, 1503, 1504, 1505, 1506, 1507,
+     1508, 1509, 1443, 1510, 1512, 1513, 1515, 1480, 1517, 1518,
+     1519, 1521, 1522, 1523, 1524, 1525, 1527, 1528, 1529, 1530,
+     1531, 1532, 1533, 1534, 1535, 1536, 1537, 1538, 1539, 1540,
+     1541, 1542, 1543, 1544, 1546, 1547, 1549, 1550, 1551, 1553,
+     1554, 1555, 1556, 1557, 1558, 1559, 1560, 1561, 1562, 1563,
+     1564, 1565, 1566, 1568, 1569, 1570, 1572, 1574, 1575, 1576,
+     1577, 1578, 1580, 1581, 1582, 1583, 1584, 1585, 1586, 1587,
+
+     1588, 1590, 1591, 1593, 1596, 1597, 1598, 1599, 1602, 1604,
+     1605, 1606, 1607, 1608, 1609, 1610, 1611, 1612, 1614, 1615,
+     1616, 1618, 1619, 1620, 1621, 1622, 1623, 1625, 1626, 1627,
+     1629, 1630, 1631, 1632, 1633, 1634, 1635, 1636, 1637, 1639,
+     1640, 1641, 1643, 1644, 1645, 1646, 1647, 1648, 1649, 1650,
+     1652, 1653, 1654, 1655, 1656, 1657, 1658, 1659, 1662, 1663,
+     1664, 1665, 1666, 1667, 1668, 1671, 1672, 1673, 1674, 1675,
+     1676, 1677, 1678, 1679, 1680, 1681, 1682, 1683, 1684, 1685,
+     1686, 1688, 1689, 1690, 1691, 1692, 1693, 1695, 1699, 1701,
+     1702, 1703, 1704, 1706, 1707, 1708, 1710, 1711, 1712, 1713,
+
+     1714, 1715, 1716, 1717, 1718, 1719, 1721, 1722, 1724, 1725,
+     1728, 1729, 1731, 1732, 1733, 1734, 1735, 1736, 1737, 1738,
+     1739, 1740, 1741, 1742, 1743, 1744, 1745, 1746, 1747, 1748,
+     1749, 1751, 1752, 1753, 1754, 1755, 1756, 1757, 1758, 1759,
+     1760, 1761, 1762, 1763, 1764, 1765, 1767, 1768, 1770, 1771,
+     1773, 1774, 1775, 1776, 1778, 1780, 1781, 1782, 1784, 1785,
+     1786, 1787, 1788, 1789, 1791, 1793, 1796, 1797, 1798, 1799,
+     1800, 1801, 1800, 1803, 1804, 1806, 1807, 1808, 1809, 1810,
+     1811, 1812, 1814, 1815, 1816, 1817, 1818, 1821, 1822, 1823,
+     1824, 1828, 1828, 1828, 1828, 1828, 1829, 1829, 1829, 1829,
+
+     1829, 1830, 1836, 1830, 1830, 1830, 1831, 1837, 1831, 1838,
+     1831, 1832, 1832, 1832, 1832, 1832, 1833, 1833, 1833, 1833,
+     1833, 1834, 1839, 1834, 1834, 1834, 1835, 1835, 1835,  716,
+      715,  714,  712,  711,  710,  709,  708,  707,  706,  705,
+      704,  703,  702,  701,  700,  699,  698,  697,  696,  695,
+      693,  691,  690,  689,  688,  687,  686,  685,  684,  680,
+      679,  677,  676,  675,  674,  673,  672,  671,  670,  669,
+      667,  666,  664,  663,  662,  661,  660,  659,  658,  657,
+      656,  655,  654,  653,  652,  650,  649,  648,  647,  646,
+      645,  644,  643,  642,  640,  639,  638,  637,  636,  635,
+
+      633,  632,  631,  630,  629,  628,  627,  625,  624,  623,
+      622,  621,  620,  619,  618,  617,  616,  615,  614,  613,
+      611,  610,  609,  608,  607,  606,  605,  604,  603,  602,
+      601,  600,  598,  597,  596,  595,  594,  593,  592,  591,
+      590,  589,  588,  587,  586,  585,  584,  583,  582,  581,
+      580,  579,  578,  577,  576,  575,  574,  573,  572,  571,
+      569,  568,  560,  559,  558,  556,  555,  554,  552,  551,
+      549,  547,  546,  545,  544,  543,  542,  541,  540,  539,
+      538,  537,  536,  535,  534,  533,  532,  531,  530,  529,
+      528,  527,  526,  525,  524,  523,  522,  521,  520,  519,
+
+      518,  517,  515,  513,  512,  511,  510,  509,  508,  507,
+      506,  505,  504,  503,  502,  501,  500,  498,  497,  496,
+      495,  494,  493,  492,  490,  489,  488,  487,  486,  485,
+      484,  483,  482,  481,  480,  479,  478,  476,  475,  474,
+      473,  471,  470,  469,  468,  467,  465,  464,  462,  461,
+      458,  457,  456,  455,  454,  453,  452,  450,  449,  448,
+      447,  446,  445,  444,  443,  438,  436,  435,  433,  432,
+      430,  427,  425,  424,  422,  421,  420,  418,  417,  416,
+      415,  414,  413,  412,  411,  410,  409,  408,  407,  406,
+      405,  404,  402,  401,  400,  398,  397,  396,  395,  393,
+
+      392,  391,  390,  388,  387,  386,  385,  384,  383,  382,
+      381,  380,  379,  378,  376,  374,  373,  372,  371,  370,
+      369,  368,  366,  365,  364,  363,  362,  361,  360,  359,
+      358,  356,  355,  354,  353,  352,  351,  350,  349,  348,
+      347,  346,  345,  343,  342,  341,  340,  339,  336,  335,
+      334,  333,  332,  331,  330,  329,  328,  327,  326,  325,
+      324,  320,  318,  315,  313,  309,  302,  300,  299,  298,
+      297,  296,  294,  293,  292,  291,  290,  289,  288,  287,
+      286,  284,  283,  282,  281,  280,  279,  278,  277,  275,
+      274,  273,  272,  271,  270,  269,  268,  267,  266,  265,
+
+      264,  263,  262,  261,  259,  258,  257,  256,  255,  254,
+      253,  252,  251,  250,  248,  247,  246,  245,  244,  243,
+      242,  241,  239,  238,  237,  236,  235,  234,  233,  232,
+      231,  230,  229,  228,  227,  226,  225,  224,  223,  222,
+      221,  220,  219,  217,  216,  215,  214,  213,  212,  211,
+      210,  209,  208,  206,  203,  201,  199,  195,  193,  190,
+      182,  181,  180,  178,  177,  176,  174,  173,  172,  170,
+      169,  168,  164,  161,  159,  158,  157,  156,  155,  153,
+      152,  151,  150,  149,  148,  146,  145,  144,  143,  142,
+      141,  140,  139,  138,  136,  135,  133,  131,  130,  129,
+
+      128,  126,  125,  124,  123,  121,  120,  118,  117,  116,
+      112,  104,  102,   97,   96,   77,   72,   66,   58,   49,
+       47,   43,   41,   39,   38,   24,   14,   11, 1827, 1827,
+     1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827,
+     1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827,
+     1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827,
+     1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827,
+     1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827,
+     1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827,
+     1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827,
+
+     1827, 1827
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -1873,7 +1883,7 @@ static char *yy_last_accepting_cpos;
 extern int yy_flex_debug;
 int yy_flex_debug = 1;
 
-static const flex_int16_t yy_rule_linenum[197] =
+static const flex_int16_t yy_rule_linenum[199] =
     {   0,
       145,  147,  149,  154,  155,  160,  161,  162,  174,  177,
       182,  189,  198,  207,  216,  225,  234,  243,  253,  262,
@@ -1884,18 +1894,18 @@ static const flex_int16_t yy_rule_linenum[197] =
       676,  685,  696,  707,  718,  729,  740,  751,  761,  772,
       781,  791,  805,  821,  830,  839,  848,  857,  879,  901,
       910,  920,  929,  940,  949,  958,  967,  976,  985,  995,
-     1004, 1015, 1026, 1038, 1047, 1056, 1065, 1074, 1083, 1092,
-
-     1101, 1110, 1119, 1129, 1140, 1152, 1161, 1170, 1180, 1190,
-     1200, 1210, 1220, 1230, 1239, 1249, 1258, 1267, 1276, 1285,
-     1295, 1305, 1314, 1324, 1333, 1342, 1351, 1360, 1369, 1378,
-     1387, 1396, 1405, 1414, 1423, 1432, 1441, 1450, 1459, 1468,
-     1477, 1486, 1495, 1504, 1513, 1522, 1531, 1540, 1549, 1558,
-     1567, 1576, 1585, 1594, 1603, 1612, 1621, 1630, 1639, 1651,
-     1663, 1673, 1683, 1693, 1703, 1713, 1723, 1733, 1743, 1753,
-     1762, 1771, 1780, 1789, 1800, 1811, 1824, 1837, 1850, 1949,
-     1954, 1959, 1964, 1965, 1966, 1967, 1968, 1969, 1971, 1989,
-     2002, 2007, 2011, 2013, 2015, 2017
+     1004, 1015, 1026, 1037, 1048, 1060, 1069, 1078, 1087, 1096,
+
+     1105, 1114, 1123, 1132, 1141, 1151, 1162, 1174, 1183, 1192,
+     1202, 1212, 1222, 1232, 1242, 1252, 1261, 1271, 1280, 1289,
+     1298, 1307, 1317, 1327, 1336, 1346, 1355, 1364, 1373, 1382,
+     1391, 1400, 1409, 1418, 1427, 1436, 1445, 1454, 1463, 1472,
+     1481, 1490, 1499, 1508, 1517, 1526, 1535, 1544, 1553, 1562,
+     1571, 1580, 1589, 1598, 1607, 1616, 1625, 1634, 1643, 1652,
+     1661, 1673, 1685, 1695, 1705, 1715, 1725, 1735, 1745, 1755,
+     1765, 1775, 1784, 1793, 1802, 1811, 1822, 1833, 1846, 1859,
+     1872, 1971, 1976, 1981, 1986, 1987, 1988, 1989, 1990, 1991,
+     1993, 2011, 2024, 2029, 2033, 2035, 2037, 2039
 
     } ;
 
@@ -1949,7 +1959,7 @@ using namespace isc::dhcp;
 
 /* To avoid the call to exit... oops! */
 #define YY_FATAL_ERROR(msg) isc::dhcp::Parser4Context::fatal(msg)
-#line 1952 "dhcp4_lexer.cc"
+#line 1962 "dhcp4_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
@@ -1975,8 +1985,8 @@ using namespace isc::dhcp;
    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 1978 "dhcp4_lexer.cc"
-#line 1979 "dhcp4_lexer.cc"
+#line 1988 "dhcp4_lexer.cc"
+#line 1989 "dhcp4_lexer.cc"
 
 #define INITIAL 0
 #define COMMENT 1
@@ -2304,7 +2314,7 @@ YY_DECL
     }
 
 
-#line 2307 "dhcp4_lexer.cc"
+#line 2317 "dhcp4_lexer.cc"
 
        while ( /*CONSTCOND*/1 )                /* loops until end-of-file is reached */
                {
@@ -2333,13 +2343,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 >= 1810 )
+                               if ( yy_current_state >= 1828 )
                                        yy_c = yy_meta[yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
                        ++yy_cp;
                        }
-               while ( yy_current_state != 1809 );
+               while ( yy_current_state != 1827 );
                yy_cp = (yy_last_accepting_cpos);
                yy_current_state = (yy_last_accepting_state);
 
@@ -2358,13 +2368,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 < 197 )
+                       else if ( yy_act < 199 )
                                fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
                                         (long)yy_rule_linenum[yy_act], yytext );
-                       else if ( yy_act == 197 )
+                       else if ( yy_act == 199 )
                                fprintf( stderr, "--accepting default rule (\"%s\")\n",
                                         yytext );
-                       else if ( yy_act == 198 )
+                       else if ( yy_act == 200 )
                                fprintf( stderr, "--(end of buffer or a NUL)\n" );
                        else
                                fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
@@ -3564,7 +3574,35 @@ YY_RULE_SETUP
        YY_BREAK
 case 94:
 YY_RULE_SETUP
-#line 1038 "dhcp4_lexer.ll"
+#line 1037 "dhcp4_lexer.ll"
+{
+    switch(driver.ctx_) {
+    case isc::dhcp::Parser4Context::DHCP4:
+    case isc::dhcp::Parser4Context::SUBNET4:
+    case isc::dhcp::Parser4Context::SHARED_NETWORK:
+        return isc::dhcp::Dhcp4Parser::make_CACHE_THRESHOLD((driver.loc_);
+    default:
+        return isc::dhcp::Dhcp4Parser::make_STRING("cache-threshold", driver.loc_);
+    }
+}
+       YY_BREAK
+case 95:
+YY_RULE_SETUP
+#line 1048 "dhcp4_lexer.ll"
+{
+    switch(driver.ctx_) {
+    case isc::dhcp::Parser4Context::DHCP4:
+    case isc::dhcp::Parser4Context::SUBNET4:
+    case isc::dhcp::Parser4Context::SHARED_NETWORK:
+        return isc::dhcp::Dhcp4Parser::make_CACHE_MAX((driver.loc_);
+    default:
+        return isc::dhcp::Dhcp4Parser::make_STRING("cache-max", driver.loc_);
+    }
+}
+       YY_BREAK
+case 96:
+YY_RULE_SETUP
+#line 1060 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3574,9 +3612,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 95:
+case 97:
 YY_RULE_SETUP
-#line 1047 "dhcp4_lexer.ll"
+#line 1069 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LOGGERS:
@@ -3586,9 +3624,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 96:
+case 98:
 YY_RULE_SETUP
-#line 1056 "dhcp4_lexer.ll"
+#line 1078 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OUTPUT_OPTIONS:
@@ -3598,9 +3636,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 97:
+case 99:
 YY_RULE_SETUP
-#line 1065 "dhcp4_lexer.ll"
+#line 1087 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LOGGERS:
@@ -3610,9 +3648,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 98:
+case 100:
 YY_RULE_SETUP
-#line 1074 "dhcp4_lexer.ll"
+#line 1096 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OUTPUT_OPTIONS:
@@ -3622,9 +3660,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 99:
+case 101:
 YY_RULE_SETUP
-#line 1083 "dhcp4_lexer.ll"
+#line 1105 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OUTPUT_OPTIONS:
@@ -3634,9 +3672,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 100:
+case 102:
 YY_RULE_SETUP
-#line 1092 "dhcp4_lexer.ll"
+#line 1114 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OUTPUT_OPTIONS:
@@ -3646,9 +3684,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 101:
+case 103:
 YY_RULE_SETUP
-#line 1101 "dhcp4_lexer.ll"
+#line 1123 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OUTPUT_OPTIONS:
@@ -3658,9 +3696,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 102:
+case 104:
 YY_RULE_SETUP
-#line 1110 "dhcp4_lexer.ll"
+#line 1132 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LOGGERS:
@@ -3670,9 +3708,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 103:
+case 105:
 YY_RULE_SETUP
-#line 1119 "dhcp4_lexer.ll"
+#line 1141 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3683,9 +3721,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 104:
+case 106:
 YY_RULE_SETUP
-#line 1129 "dhcp4_lexer.ll"
+#line 1151 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -3697,9 +3735,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 105:
+case 107:
 YY_RULE_SETUP
-#line 1140 "dhcp4_lexer.ll"
+#line 1162 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -3712,9 +3750,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 106:
+case 108:
 YY_RULE_SETUP
-#line 1152 "dhcp4_lexer.ll"
+#line 1174 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::CLIENT_CLASSES:
@@ -3724,9 +3762,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 107:
+case 109:
 YY_RULE_SETUP
-#line 1161 "dhcp4_lexer.ll"
+#line 1183 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::CLIENT_CLASSES:
@@ -3736,9 +3774,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 108:
+case 110:
 YY_RULE_SETUP
-#line 1170 "dhcp4_lexer.ll"
+#line 1192 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3749,9 +3787,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 109:
+case 111:
 YY_RULE_SETUP
-#line 1180 "dhcp4_lexer.ll"
+#line 1202 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
@@ -3762,9 +3800,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 110:
+case 112:
 YY_RULE_SETUP
-#line 1190 "dhcp4_lexer.ll"
+#line 1212 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
@@ -3775,9 +3813,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 111:
+case 113:
 YY_RULE_SETUP
-#line 1200 "dhcp4_lexer.ll"
+#line 1222 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
@@ -3788,9 +3826,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 112:
+case 114:
 YY_RULE_SETUP
-#line 1210 "dhcp4_lexer.ll"
+#line 1232 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
@@ -3801,9 +3839,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 113:
+case 115:
 YY_RULE_SETUP
-#line 1220 "dhcp4_lexer.ll"
+#line 1242 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
@@ -3814,9 +3852,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 114:
+case 116:
 YY_RULE_SETUP
-#line 1230 "dhcp4_lexer.ll"
+#line 1252 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::RESERVATIONS:
@@ -3826,9 +3864,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 115:
+case 117:
 YY_RULE_SETUP
-#line 1239 "dhcp4_lexer.ll"
+#line 1261 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DEF:
@@ -3839,9 +3877,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 116:
+case 118:
 YY_RULE_SETUP
-#line 1249 "dhcp4_lexer.ll"
+#line 1271 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DATA:
@@ -3851,9 +3889,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 117:
+case 119:
 YY_RULE_SETUP
-#line 1258 "dhcp4_lexer.ll"
+#line 1280 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DEF:
@@ -3863,9 +3901,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 118:
+case 120:
 YY_RULE_SETUP
-#line 1267 "dhcp4_lexer.ll"
+#line 1289 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DEF:
@@ -3875,9 +3913,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 119:
+case 121:
 YY_RULE_SETUP
-#line 1276 "dhcp4_lexer.ll"
+#line 1298 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DEF:
@@ -3887,9 +3925,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 120:
+case 122:
 YY_RULE_SETUP
-#line 1285 "dhcp4_lexer.ll"
+#line 1307 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -3900,9 +3938,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 121:
+case 123:
 YY_RULE_SETUP
-#line 1295 "dhcp4_lexer.ll"
+#line 1317 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::RELAY:
@@ -3913,9 +3951,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 122:
+case 124:
 YY_RULE_SETUP
-#line 1305 "dhcp4_lexer.ll"
+#line 1327 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::RELAY:
@@ -3925,9 +3963,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 123:
+case 125:
 YY_RULE_SETUP
-#line 1314 "dhcp4_lexer.ll"
+#line 1336 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3937,9 +3975,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 124:
+case 126:
 YY_RULE_SETUP
-#line 1324 "dhcp4_lexer.ll"
+#line 1346 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOOKS_LIBRARIES:
@@ -3949,9 +3987,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 125:
+case 127:
 YY_RULE_SETUP
-#line 1333 "dhcp4_lexer.ll"
+#line 1355 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOOKS_LIBRARIES:
@@ -3961,9 +3999,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 126:
+case 128:
 YY_RULE_SETUP
-#line 1342 "dhcp4_lexer.ll"
+#line 1364 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3973,9 +4011,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 127:
+case 129:
 YY_RULE_SETUP
-#line 1351 "dhcp4_lexer.ll"
+#line 1373 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
@@ -3985,9 +4023,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 128:
+case 130:
 YY_RULE_SETUP
-#line 1360 "dhcp4_lexer.ll"
+#line 1382 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
@@ -3997,9 +4035,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 129:
+case 131:
 YY_RULE_SETUP
-#line 1369 "dhcp4_lexer.ll"
+#line 1391 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
@@ -4009,9 +4047,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 130:
+case 132:
 YY_RULE_SETUP
-#line 1378 "dhcp4_lexer.ll"
+#line 1400 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
@@ -4021,9 +4059,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 131:
+case 133:
 YY_RULE_SETUP
-#line 1387 "dhcp4_lexer.ll"
+#line 1409 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
@@ -4033,9 +4071,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 132:
+case 134:
 YY_RULE_SETUP
-#line 1396 "dhcp4_lexer.ll"
+#line 1418 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
@@ -4045,9 +4083,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 133:
+case 135:
 YY_RULE_SETUP
-#line 1405 "dhcp4_lexer.ll"
+#line 1427 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -4057,9 +4095,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 134:
+case 136:
 YY_RULE_SETUP
-#line 1414 "dhcp4_lexer.ll"
+#line 1436 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -4069,9 +4107,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 135:
+case 137:
 YY_RULE_SETUP
-#line 1423 "dhcp4_lexer.ll"
+#line 1445 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_MULTI_THREADING:
@@ -4081,9 +4119,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 136:
+case 138:
 YY_RULE_SETUP
-#line 1432 "dhcp4_lexer.ll"
+#line 1454 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_MULTI_THREADING:
@@ -4093,9 +4131,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 137:
+case 139:
 YY_RULE_SETUP
-#line 1441 "dhcp4_lexer.ll"
+#line 1463 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_MULTI_THREADING:
@@ -4105,9 +4143,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 138:
+case 140:
 YY_RULE_SETUP
-#line 1450 "dhcp4_lexer.ll"
+#line 1472 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -4117,9 +4155,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 139:
+case 141:
 YY_RULE_SETUP
-#line 1459 "dhcp4_lexer.ll"
+#line 1481 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::CONTROL_SOCKET:
@@ -4129,9 +4167,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 140:
+case 142:
 YY_RULE_SETUP
-#line 1468 "dhcp4_lexer.ll"
+#line 1490 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::CONTROL_SOCKET:
@@ -4141,9 +4179,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 141:
+case 143:
 YY_RULE_SETUP
-#line 1477 "dhcp4_lexer.ll"
+#line 1499 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -4153,9 +4191,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 142:
+case 144:
 YY_RULE_SETUP
-#line 1486 "dhcp4_lexer.ll"
+#line 1508 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_QUEUE_CONTROL:
@@ -4165,9 +4203,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 143:
+case 145:
 YY_RULE_SETUP
-#line 1495 "dhcp4_lexer.ll"
+#line 1517 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_QUEUE_CONTROL:
@@ -4177,9 +4215,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 144:
+case 146:
 YY_RULE_SETUP
-#line 1504 "dhcp4_lexer.ll"
+#line 1526 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_QUEUE_CONTROL:
@@ -4189,9 +4227,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 145:
+case 147:
 YY_RULE_SETUP
-#line 1513 "dhcp4_lexer.ll"
+#line 1535 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -4201,9 +4239,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 146:
+case 148:
 YY_RULE_SETUP
-#line 1522 "dhcp4_lexer.ll"
+#line 1544 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -4213,9 +4251,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 147:
+case 149:
 YY_RULE_SETUP
-#line 1531 "dhcp4_lexer.ll"
+#line 1553 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -4225,9 +4263,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 148:
+case 150:
 YY_RULE_SETUP
-#line 1540 "dhcp4_lexer.ll"
+#line 1562 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -4237,9 +4275,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 149:
+case 151:
 YY_RULE_SETUP
-#line 1549 "dhcp4_lexer.ll"
+#line 1571 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -4249,9 +4287,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 150:
+case 152:
 YY_RULE_SETUP
-#line 1558 "dhcp4_lexer.ll"
+#line 1580 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -4261,9 +4299,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 151:
+case 153:
 YY_RULE_SETUP
-#line 1567 "dhcp4_lexer.ll"
+#line 1589 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -4273,9 +4311,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 152:
+case 154:
 YY_RULE_SETUP
-#line 1576 "dhcp4_lexer.ll"
+#line 1598 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -4285,9 +4323,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 153:
+case 155:
 YY_RULE_SETUP
-#line 1585 "dhcp4_lexer.ll"
+#line 1607 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -4297,9 +4335,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 154:
+case 156:
 YY_RULE_SETUP
-#line 1594 "dhcp4_lexer.ll"
+#line 1616 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -4309,9 +4347,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 155:
+case 157:
 YY_RULE_SETUP
-#line 1603 "dhcp4_lexer.ll"
+#line 1625 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -4321,9 +4359,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 156:
+case 158:
 YY_RULE_SETUP
-#line 1612 "dhcp4_lexer.ll"
+#line 1634 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -4333,9 +4371,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 157:
+case 159:
 YY_RULE_SETUP
-#line 1621 "dhcp4_lexer.ll"
+#line 1643 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -4345,9 +4383,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 158:
+case 160:
 YY_RULE_SETUP
-#line 1630 "dhcp4_lexer.ll"
+#line 1652 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -4357,9 +4395,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 159:
+case 161:
 YY_RULE_SETUP
-#line 1639 "dhcp4_lexer.ll"
+#line 1661 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -4372,9 +4410,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 160:
+case 162:
 YY_RULE_SETUP
-#line 1651 "dhcp4_lexer.ll"
+#line 1673 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -4387,9 +4425,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 161:
+case 163:
 YY_RULE_SETUP
-#line 1663 "dhcp4_lexer.ll"
+#line 1685 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_PROTOCOL) {
@@ -4400,9 +4438,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 162:
+case 164:
 YY_RULE_SETUP
-#line 1673 "dhcp4_lexer.ll"
+#line 1695 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_PROTOCOL) {
@@ -4413,9 +4451,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 163:
+case 165:
 YY_RULE_SETUP
-#line 1683 "dhcp4_lexer.ll"
+#line 1705 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_FORMAT) {
@@ -4426,9 +4464,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 164:
+case 166:
 YY_RULE_SETUP
-#line 1693 "dhcp4_lexer.ll"
+#line 1715 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
@@ -4439,9 +4477,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 165:
+case 167:
 YY_RULE_SETUP
-#line 1703 "dhcp4_lexer.ll"
+#line 1725 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
@@ -4452,9 +4490,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 166:
+case 168:
 YY_RULE_SETUP
-#line 1713 "dhcp4_lexer.ll"
+#line 1735 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
@@ -4465,9 +4503,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 167:
+case 169:
 YY_RULE_SETUP
-#line 1723 "dhcp4_lexer.ll"
+#line 1745 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
@@ -4478,9 +4516,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 168:
+case 170:
 YY_RULE_SETUP
-#line 1733 "dhcp4_lexer.ll"
+#line 1755 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
@@ -4491,9 +4529,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 169:
+case 171:
 YY_RULE_SETUP
-#line 1743 "dhcp4_lexer.ll"
+#line 1765 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
@@ -4504,9 +4542,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 170:
+case 172:
 YY_RULE_SETUP
-#line 1753 "dhcp4_lexer.ll"
+#line 1775 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -4516,9 +4554,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 171:
+case 173:
 YY_RULE_SETUP
-#line 1762 "dhcp4_lexer.ll"
+#line 1784 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -4528,9 +4566,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 172:
+case 174:
 YY_RULE_SETUP
-#line 1771 "dhcp4_lexer.ll"
+#line 1793 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -4540,9 +4578,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 173:
+case 175:
 YY_RULE_SETUP
-#line 1780 "dhcp4_lexer.ll"
+#line 1802 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -4552,9 +4590,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 174:
+case 176:
 YY_RULE_SETUP
-#line 1789 "dhcp4_lexer.ll"
+#line 1811 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -4566,9 +4604,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 175:
+case 177:
 YY_RULE_SETUP
-#line 1800 "dhcp4_lexer.ll"
+#line 1822 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -4580,9 +4618,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 176:
+case 178:
 YY_RULE_SETUP
-#line 1811 "dhcp4_lexer.ll"
+#line 1833 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -4596,9 +4634,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 177:
+case 179:
 YY_RULE_SETUP
-#line 1824 "dhcp4_lexer.ll"
+#line 1846 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -4612,9 +4650,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 178:
+case 180:
 YY_RULE_SETUP
-#line 1837 "dhcp4_lexer.ll"
+#line 1859 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -4628,9 +4666,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 179:
+case 181:
 YY_RULE_SETUP
-#line 1850 "dhcp4_lexer.ll"
+#line 1872 "dhcp4_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.
@@ -4730,65 +4768,65 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(decoded, driver.loc_);
 }
        YY_BREAK
-case 180:
-/* rule 180 can match eol */
+case 182:
+/* rule 182 can match eol */
 YY_RULE_SETUP
-#line 1949 "dhcp4_lexer.ll"
+#line 1971 "dhcp4_lexer.ll"
 {
     /* Bad string with a forbidden control character inside */
     driver.error(driver.loc_, "Invalid control in " + std::string(yytext));
 }
        YY_BREAK
-case 181:
-/* rule 181 can match eol */
+case 183:
+/* rule 183 can match eol */
 YY_RULE_SETUP
-#line 1954 "dhcp4_lexer.ll"
+#line 1976 "dhcp4_lexer.ll"
 {
     /* Bad string with a bad escape inside */
     driver.error(driver.loc_, "Bad escape in " + std::string(yytext));
 }
        YY_BREAK
-case 182:
+case 184:
 YY_RULE_SETUP
-#line 1959 "dhcp4_lexer.ll"
+#line 1981 "dhcp4_lexer.ll"
 {
     /* Bad string with an open escape at the end */
     driver.error(driver.loc_, "Overflow escape in " + std::string(yytext));
 }
        YY_BREAK
-case 183:
+case 185:
 YY_RULE_SETUP
-#line 1964 "dhcp4_lexer.ll"
+#line 1986 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_LSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 184:
+case 186:
 YY_RULE_SETUP
-#line 1965 "dhcp4_lexer.ll"
+#line 1987 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_RSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 185:
+case 187:
 YY_RULE_SETUP
-#line 1966 "dhcp4_lexer.ll"
+#line 1988 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_LCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 186:
+case 188:
 YY_RULE_SETUP
-#line 1967 "dhcp4_lexer.ll"
+#line 1989 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_RCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 187:
+case 189:
 YY_RULE_SETUP
-#line 1968 "dhcp4_lexer.ll"
+#line 1990 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_COMMA(driver.loc_); }
        YY_BREAK
-case 188:
+case 190:
 YY_RULE_SETUP
-#line 1969 "dhcp4_lexer.ll"
+#line 1991 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_COLON(driver.loc_); }
        YY_BREAK
-case 189:
+case 191:
 YY_RULE_SETUP
-#line 1971 "dhcp4_lexer.ll"
+#line 1993 "dhcp4_lexer.ll"
 {
     /* An integer was found. */
     std::string tmp(yytext);
@@ -4807,9 +4845,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_INTEGER(integer, driver.loc_);
 }
        YY_BREAK
-case 190:
+case 192:
 YY_RULE_SETUP
-#line 1989 "dhcp4_lexer.ll"
+#line 2011 "dhcp4_lexer.ll"
 {
     /* A floating point was found. */
     std::string tmp(yytext);
@@ -4823,43 +4861,43 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_FLOAT(fp, driver.loc_);
 }
        YY_BREAK
-case 191:
+case 193:
 YY_RULE_SETUP
-#line 2002 "dhcp4_lexer.ll"
+#line 2024 "dhcp4_lexer.ll"
 {
     string tmp(yytext);
     return isc::dhcp::Dhcp4Parser::make_BOOLEAN(tmp == "true", driver.loc_);
 }
        YY_BREAK
-case 192:
+case 194:
 YY_RULE_SETUP
-#line 2007 "dhcp4_lexer.ll"
+#line 2029 "dhcp4_lexer.ll"
 {
    return isc::dhcp::Dhcp4Parser::make_NULL_TYPE(driver.loc_);
 }
        YY_BREAK
-case 193:
+case 195:
 YY_RULE_SETUP
-#line 2011 "dhcp4_lexer.ll"
+#line 2033 "dhcp4_lexer.ll"
 driver.error (driver.loc_, "JSON true reserved keyword is lower case only");
        YY_BREAK
-case 194:
+case 196:
 YY_RULE_SETUP
-#line 2013 "dhcp4_lexer.ll"
+#line 2035 "dhcp4_lexer.ll"
 driver.error (driver.loc_, "JSON false reserved keyword is lower case only");
        YY_BREAK
-case 195:
+case 197:
 YY_RULE_SETUP
-#line 2015 "dhcp4_lexer.ll"
+#line 2037 "dhcp4_lexer.ll"
 driver.error (driver.loc_, "JSON null reserved keyword is lower case only");
        YY_BREAK
-case 196:
+case 198:
 YY_RULE_SETUP
-#line 2017 "dhcp4_lexer.ll"
+#line 2039 "dhcp4_lexer.ll"
 driver.error (driver.loc_, "Invalid character: " + std::string(yytext));
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
-#line 2019 "dhcp4_lexer.ll"
+#line 2041 "dhcp4_lexer.ll"
 {
     if (driver.states_.empty()) {
         return isc::dhcp::Dhcp4Parser::make_END(driver.loc_);
@@ -4883,12 +4921,12 @@ case YY_STATE_EOF(INITIAL):
     BEGIN(DIR_EXIT);
 }
        YY_BREAK
-case 197:
+case 199:
 YY_RULE_SETUP
-#line 2042 "dhcp4_lexer.ll"
+#line 2064 "dhcp4_lexer.ll"
 ECHO;
        YY_BREAK
-#line 4891 "dhcp4_lexer.cc"
+#line 4929 "dhcp4_lexer.cc"
 
        case YY_END_OF_BUFFER:
                {
@@ -5207,7 +5245,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 >= 1810 )
+                       if ( yy_current_state >= 1828 )
                                yy_c = yy_meta[yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
@@ -5240,11 +5278,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 >= 1810 )
+               if ( yy_current_state >= 1828 )
                        yy_c = yy_meta[yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
-       yy_is_jam = (yy_current_state == 1809);
+       yy_is_jam = (yy_current_state == 1827);
 
                return yy_is_jam ? 0 : yy_current_state;
 }
@@ -5993,7 +6031,7 @@ void yyfree (void * ptr )
 
 /* %ok-for-header */
 
-#line 2042 "dhcp4_lexer.ll"
+#line 2064 "dhcp4_lexer.ll"
 
 
 using namespace isc::dhcp;
index 47187029d4ab1f54110d2002d76272611d2913cf..27eb59f4fa28f161f9a6498c95f278cbc79b63e5 100644 (file)
@@ -398,73 +398,73 @@ namespace isc { namespace dhcp {
         switch (yykind)
     {
       case symbol_kind::S_STRING: // "constant string"
-#line 268 "dhcp4_parser.yy"
+#line 270 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < std::string > (); }
 #line 404 "dhcp4_parser.cc"
         break;
 
       case symbol_kind::S_INTEGER: // "integer"
-#line 268 "dhcp4_parser.yy"
+#line 270 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < int64_t > (); }
 #line 410 "dhcp4_parser.cc"
         break;
 
       case symbol_kind::S_FLOAT: // "floating point"
-#line 268 "dhcp4_parser.yy"
+#line 270 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < double > (); }
 #line 416 "dhcp4_parser.cc"
         break;
 
       case symbol_kind::S_BOOLEAN: // "boolean"
-#line 268 "dhcp4_parser.yy"
+#line 270 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < bool > (); }
 #line 422 "dhcp4_parser.cc"
         break;
 
       case symbol_kind::S_value: // value
-#line 268 "dhcp4_parser.yy"
+#line 270 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 428 "dhcp4_parser.cc"
         break;
 
       case symbol_kind::S_map_value: // map_value
-#line 268 "dhcp4_parser.yy"
+#line 270 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 434 "dhcp4_parser.cc"
         break;
 
       case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
-#line 268 "dhcp4_parser.yy"
+#line 270 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 440 "dhcp4_parser.cc"
         break;
 
       case symbol_kind::S_socket_type: // socket_type
-#line 268 "dhcp4_parser.yy"
+#line 270 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 446 "dhcp4_parser.cc"
         break;
 
       case symbol_kind::S_outbound_interface_value: // outbound_interface_value
-#line 268 "dhcp4_parser.yy"
+#line 270 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 452 "dhcp4_parser.cc"
         break;
 
       case symbol_kind::S_db_type: // db_type
-#line 268 "dhcp4_parser.yy"
+#line 270 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 458 "dhcp4_parser.cc"
         break;
 
       case symbol_kind::S_hr_mode: // hr_mode
-#line 268 "dhcp4_parser.yy"
+#line 270 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 464 "dhcp4_parser.cc"
         break;
 
       case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
-#line 268 "dhcp4_parser.yy"
+#line 270 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 470 "dhcp4_parser.cc"
         break;
@@ -744,127 +744,127 @@ namespace isc { namespace dhcp {
           switch (yyn)
             {
   case 2: // $@1: %empty
-#line 277 "dhcp4_parser.yy"
+#line 279 "dhcp4_parser.yy"
                      { ctx.ctx_ = ctx.NO_KEYWORD; }
 #line 750 "dhcp4_parser.cc"
     break;
 
   case 4: // $@2: %empty
-#line 278 "dhcp4_parser.yy"
+#line 280 "dhcp4_parser.yy"
                       { ctx.ctx_ = ctx.CONFIG; }
 #line 756 "dhcp4_parser.cc"
     break;
 
   case 6: // $@3: %empty
-#line 279 "dhcp4_parser.yy"
+#line 281 "dhcp4_parser.yy"
                  { ctx.ctx_ = ctx.DHCP4; }
 #line 762 "dhcp4_parser.cc"
     break;
 
   case 8: // $@4: %empty
-#line 280 "dhcp4_parser.yy"
+#line 282 "dhcp4_parser.yy"
                        { ctx.ctx_ = ctx.INTERFACES_CONFIG; }
 #line 768 "dhcp4_parser.cc"
     break;
 
   case 10: // $@5: %empty
-#line 281 "dhcp4_parser.yy"
+#line 283 "dhcp4_parser.yy"
                    { ctx.ctx_ = ctx.SUBNET4; }
 #line 774 "dhcp4_parser.cc"
     break;
 
   case 12: // $@6: %empty
-#line 282 "dhcp4_parser.yy"
+#line 284 "dhcp4_parser.yy"
                  { ctx.ctx_ = ctx.POOLS; }
 #line 780 "dhcp4_parser.cc"
     break;
 
   case 14: // $@7: %empty
-#line 283 "dhcp4_parser.yy"
+#line 285 "dhcp4_parser.yy"
                        { ctx.ctx_ = ctx.RESERVATIONS; }
 #line 786 "dhcp4_parser.cc"
     break;
 
   case 16: // $@8: %empty
-#line 284 "dhcp4_parser.yy"
+#line 286 "dhcp4_parser.yy"
                        { ctx.ctx_ = ctx.DHCP4; }
 #line 792 "dhcp4_parser.cc"
     break;
 
   case 18: // $@9: %empty
-#line 285 "dhcp4_parser.yy"
+#line 287 "dhcp4_parser.yy"
                       { ctx.ctx_ = ctx.OPTION_DEF; }
 #line 798 "dhcp4_parser.cc"
     break;
 
   case 20: // $@10: %empty
-#line 286 "dhcp4_parser.yy"
+#line 288 "dhcp4_parser.yy"
                        { ctx.ctx_ = ctx.OPTION_DATA; }
 #line 804 "dhcp4_parser.cc"
     break;
 
   case 22: // $@11: %empty
-#line 287 "dhcp4_parser.yy"
+#line 289 "dhcp4_parser.yy"
                          { ctx.ctx_ = ctx.HOOKS_LIBRARIES; }
 #line 810 "dhcp4_parser.cc"
     break;
 
   case 24: // $@12: %empty
-#line 288 "dhcp4_parser.yy"
+#line 290 "dhcp4_parser.yy"
                      { ctx.ctx_ = ctx.DHCP_DDNS; }
 #line 816 "dhcp4_parser.cc"
     break;
 
   case 26: // $@13: %empty
-#line 289 "dhcp4_parser.yy"
+#line 291 "dhcp4_parser.yy"
                           { ctx.ctx_ = ctx.CONFIG_CONTROL; }
 #line 822 "dhcp4_parser.cc"
     break;
 
   case 28: // value: "integer"
-#line 297 "dhcp4_parser.yy"
+#line 299 "dhcp4_parser.yy"
                { yylhs.value.as < ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); }
 #line 828 "dhcp4_parser.cc"
     break;
 
   case 29: // value: "floating point"
-#line 298 "dhcp4_parser.yy"
+#line 300 "dhcp4_parser.yy"
              { yylhs.value.as < ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); }
 #line 834 "dhcp4_parser.cc"
     break;
 
   case 30: // value: "boolean"
-#line 299 "dhcp4_parser.yy"
+#line 301 "dhcp4_parser.yy"
                { yylhs.value.as < ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); }
 #line 840 "dhcp4_parser.cc"
     break;
 
   case 31: // value: "constant string"
-#line 300 "dhcp4_parser.yy"
+#line 302 "dhcp4_parser.yy"
               { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); }
 #line 846 "dhcp4_parser.cc"
     break;
 
   case 32: // value: "null"
-#line 301 "dhcp4_parser.yy"
+#line 303 "dhcp4_parser.yy"
                  { yylhs.value.as < ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
 #line 852 "dhcp4_parser.cc"
     break;
 
   case 33: // value: map2
-#line 302 "dhcp4_parser.yy"
+#line 304 "dhcp4_parser.yy"
             { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 858 "dhcp4_parser.cc"
     break;
 
   case 34: // value: list_generic
-#line 303 "dhcp4_parser.yy"
+#line 305 "dhcp4_parser.yy"
                     { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 864 "dhcp4_parser.cc"
     break;
 
   case 35: // sub_json: value
-#line 306 "dhcp4_parser.yy"
+#line 308 "dhcp4_parser.yy"
                 {
     // Push back the JSON value on the stack
     ctx.stack_.push_back(yystack_[0].value.as < ElementPtr > ());
@@ -873,7 +873,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 36: // $@14: %empty
-#line 311 "dhcp4_parser.yy"
+#line 313 "dhcp4_parser.yy"
                      {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -884,7 +884,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 37: // map2: "{" $@14 map_content "}"
-#line 316 "dhcp4_parser.yy"
+#line 318 "dhcp4_parser.yy"
                              {
     // map parsing completed. If we ever want to do any wrap up
     // (maybe some sanity checking), this would be the best place
@@ -894,13 +894,13 @@ namespace isc { namespace dhcp {
     break;
 
   case 38: // map_value: map2
-#line 322 "dhcp4_parser.yy"
+#line 324 "dhcp4_parser.yy"
                 { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 900 "dhcp4_parser.cc"
     break;
 
   case 41: // not_empty_map: "constant string" ":" value
-#line 329 "dhcp4_parser.yy"
+#line 331 "dhcp4_parser.yy"
                                   {
                   // map containing a single entry
                   ctx.unique(yystack_[2].value.as < std::string > (), ctx.loc2pos(yystack_[2].location));
@@ -910,7 +910,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 42: // not_empty_map: not_empty_map "," "constant string" ":" value
-#line 334 "dhcp4_parser.yy"
+#line 336 "dhcp4_parser.yy"
                                                       {
                   // map consisting of a shorter map followed by
                   // comma and string:value
@@ -921,7 +921,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 43: // $@15: %empty
-#line 342 "dhcp4_parser.yy"
+#line 344 "dhcp4_parser.yy"
                               {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(l);
@@ -930,7 +930,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 44: // list_generic: "[" $@15 list_content "]"
-#line 345 "dhcp4_parser.yy"
+#line 347 "dhcp4_parser.yy"
                                {
     // list parsing complete. Put any sanity checking here
 }
@@ -938,7 +938,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 47: // not_empty_list: value
-#line 353 "dhcp4_parser.yy"
+#line 355 "dhcp4_parser.yy"
                       {
                   // List consisting of a single element.
                   ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ());
@@ -947,7 +947,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 48: // not_empty_list: not_empty_list "," value
-#line 357 "dhcp4_parser.yy"
+#line 359 "dhcp4_parser.yy"
                                            {
                   // List ending with , and a value.
                   ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ());
@@ -956,7 +956,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 49: // $@16: %empty
-#line 364 "dhcp4_parser.yy"
+#line 366 "dhcp4_parser.yy"
                               {
     // List parsing about to start
 }
@@ -964,7 +964,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 50: // list_strings: "[" $@16 list_strings_content "]"
-#line 366 "dhcp4_parser.yy"
+#line 368 "dhcp4_parser.yy"
                                        {
     // list parsing complete. Put any sanity checking here
     //ctx.stack_.pop_back();
@@ -973,7 +973,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 53: // not_empty_list_strings: "constant string"
-#line 375 "dhcp4_parser.yy"
+#line 377 "dhcp4_parser.yy"
                                {
                           ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
                           ctx.stack_.back()->add(s);
@@ -982,7 +982,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 54: // not_empty_list_strings: not_empty_list_strings "," "constant string"
-#line 379 "dhcp4_parser.yy"
+#line 381 "dhcp4_parser.yy"
                                                             {
                           ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
                           ctx.stack_.back()->add(s);
@@ -991,7 +991,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 55: // unknown_map_entry: "constant string" ":"
-#line 390 "dhcp4_parser.yy"
+#line 392 "dhcp4_parser.yy"
                                 {
     const std::string& where = ctx.contextName();
     const std::string& keyword = yystack_[1].value.as < std::string > ();
@@ -1002,7 +1002,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 56: // $@17: %empty
-#line 399 "dhcp4_parser.yy"
+#line 401 "dhcp4_parser.yy"
                            {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -1013,7 +1013,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 57: // syntax_map: "{" $@17 global_object "}"
-#line 404 "dhcp4_parser.yy"
+#line 406 "dhcp4_parser.yy"
                                {
     // map parsing completed. If we ever want to do any wrap up
     // (maybe some sanity checking), this would be the best place
@@ -1026,7 +1026,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 58: // $@18: %empty
-#line 414 "dhcp4_parser.yy"
+#line 416 "dhcp4_parser.yy"
                      {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -1041,7 +1041,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 59: // global_object: "Dhcp4" $@18 ":" "{" global_params "}"
-#line 423 "dhcp4_parser.yy"
+#line 425 "dhcp4_parser.yy"
                                                     {
     // No global parameter is required
     ctx.stack_.pop_back();
@@ -1051,7 +1051,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 60: // $@19: %empty
-#line 431 "dhcp4_parser.yy"
+#line 433 "dhcp4_parser.yy"
                           {
     // Parse the Dhcp4 map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1061,7 +1061,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 61: // sub_dhcp4: "{" $@19 global_params "}"
-#line 435 "dhcp4_parser.yy"
+#line 437 "dhcp4_parser.yy"
                                {
     // No global parameter is required
     // parsing completed
@@ -1069,8 +1069,8 @@ namespace isc { namespace dhcp {
 #line 1070 "dhcp4_parser.cc"
     break;
 
-  case 116: // valid_lifetime: "valid-lifetime" ":" "integer"
-#line 500 "dhcp4_parser.yy"
+  case 118: // valid_lifetime: "valid-lifetime" ":" "integer"
+#line 504 "dhcp4_parser.yy"
                                              {
     ctx.unique("valid-lifetime", ctx.loc2pos(yystack_[2].location));
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1079,8 +1079,8 @@ namespace isc { namespace dhcp {
 #line 1080 "dhcp4_parser.cc"
     break;
 
-  case 117: // min_valid_lifetime: "min-valid-lifetime" ":" "integer"
-#line 506 "dhcp4_parser.yy"
+  case 119: // min_valid_lifetime: "min-valid-lifetime" ":" "integer"
+#line 510 "dhcp4_parser.yy"
                                                      {
     ctx.unique("min-valid-lifetime", ctx.loc2pos(yystack_[2].location));
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1089,8 +1089,8 @@ namespace isc { namespace dhcp {
 #line 1090 "dhcp4_parser.cc"
     break;
 
-  case 118: // max_valid_lifetime: "max-valid-lifetime" ":" "integer"
-#line 512 "dhcp4_parser.yy"
+  case 120: // max_valid_lifetime: "max-valid-lifetime" ":" "integer"
+#line 516 "dhcp4_parser.yy"
                                                      {
     ctx.unique("max-valid-lifetime", ctx.loc2pos(yystack_[2].location));
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1099,8 +1099,8 @@ namespace isc { namespace dhcp {
 #line 1100 "dhcp4_parser.cc"
     break;
 
-  case 119: // renew_timer: "renew-timer" ":" "integer"
-#line 518 "dhcp4_parser.yy"
+  case 121: // renew_timer: "renew-timer" ":" "integer"
+#line 522 "dhcp4_parser.yy"
                                        {
     ctx.unique("renew-timer", ctx.loc2pos(yystack_[2].location));
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1109,8 +1109,8 @@ namespace isc { namespace dhcp {
 #line 1110 "dhcp4_parser.cc"
     break;
 
-  case 120: // rebind_timer: "rebind-timer" ":" "integer"
-#line 524 "dhcp4_parser.yy"
+  case 122: // rebind_timer: "rebind-timer" ":" "integer"
+#line 528 "dhcp4_parser.yy"
                                          {
     ctx.unique("rebind-timer", ctx.loc2pos(yystack_[2].location));
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1119,8 +1119,8 @@ namespace isc { namespace dhcp {
 #line 1120 "dhcp4_parser.cc"
     break;
 
-  case 121: // calculate_tee_times: "calculate-tee-times" ":" "boolean"
-#line 530 "dhcp4_parser.yy"
+  case 123: // calculate_tee_times: "calculate-tee-times" ":" "boolean"
+#line 534 "dhcp4_parser.yy"
                                                        {
     ctx.unique("calculate-tee-times", ctx.loc2pos(yystack_[2].location));
     ElementPtr ctt(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -1129,8 +1129,8 @@ namespace isc { namespace dhcp {
 #line 1130 "dhcp4_parser.cc"
     break;
 
-  case 122: // t1_percent: "t1-percent" ":" "floating point"
-#line 536 "dhcp4_parser.yy"
+  case 124: // t1_percent: "t1-percent" ":" "floating point"
+#line 540 "dhcp4_parser.yy"
                                    {
     ctx.unique("t1-percent", ctx.loc2pos(yystack_[2].location));
     ElementPtr t1(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location)));
@@ -1139,8 +1139,8 @@ namespace isc { namespace dhcp {
 #line 1140 "dhcp4_parser.cc"
     break;
 
-  case 123: // t2_percent: "t2-percent" ":" "floating point"
-#line 542 "dhcp4_parser.yy"
+  case 125: // t2_percent: "t2-percent" ":" "floating point"
+#line 546 "dhcp4_parser.yy"
                                    {
     ctx.unique("t2-percent", ctx.loc2pos(yystack_[2].location));
     ElementPtr t2(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location)));
@@ -1149,262 +1149,282 @@ namespace isc { namespace dhcp {
 #line 1150 "dhcp4_parser.cc"
     break;
 
-  case 124: // decline_probation_period: "decline-probation-period" ":" "integer"
-#line 548 "dhcp4_parser.yy"
+  case 126: // cache_threshold: "cache-threshold" ":" "floating point"
+#line 552 "dhcp4_parser.yy"
+                                             {
+    ctx.unique("cache-threshold", ctx.loc2pos(yystack_[2].location));
+    ElementPtr ct(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("cache-threshold", ct);
+}
+#line 1160 "dhcp4_parser.cc"
+    break;
+
+  case 127: // cache_max: "cache-max" ":" "integer"
+#line 558 "dhcp4_parser.yy"
+                                   {
+    ctx.unique("cache-max", ctx.loc2pos(yystack_[2].location));
+    ElementPtr cm(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("cache-max", cm);
+}
+#line 1170 "dhcp4_parser.cc"
+    break;
+
+  case 128: // decline_probation_period: "decline-probation-period" ":" "integer"
+#line 564 "dhcp4_parser.yy"
                                                                  {
     ctx.unique("decline-probation-period", ctx.loc2pos(yystack_[2].location));
     ElementPtr dpp(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("decline-probation-period", dpp);
 }
-#line 1160 "dhcp4_parser.cc"
+#line 1180 "dhcp4_parser.cc"
     break;
 
-  case 125: // $@20: %empty
-#line 554 "dhcp4_parser.yy"
+  case 129: // $@20: %empty
+#line 570 "dhcp4_parser.yy"
                        {
     ctx.unique("server-tag", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1169 "dhcp4_parser.cc"
+#line 1189 "dhcp4_parser.cc"
     break;
 
-  case 126: // server_tag: "server-tag" $@20 ":" "constant string"
-#line 557 "dhcp4_parser.yy"
+  case 130: // server_tag: "server-tag" $@20 ":" "constant string"
+#line 573 "dhcp4_parser.yy"
                {
     ElementPtr stag(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("server-tag", stag);
     ctx.leave();
 }
-#line 1179 "dhcp4_parser.cc"
+#line 1199 "dhcp4_parser.cc"
     break;
 
-  case 127: // echo_client_id: "echo-client-id" ":" "boolean"
-#line 563 "dhcp4_parser.yy"
+  case 131: // echo_client_id: "echo-client-id" ":" "boolean"
+#line 579 "dhcp4_parser.yy"
                                              {
     ctx.unique("echo-client-id", ctx.loc2pos(yystack_[2].location));
     ElementPtr echo(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("echo-client-id", echo);
 }
-#line 1189 "dhcp4_parser.cc"
+#line 1209 "dhcp4_parser.cc"
     break;
 
-  case 128: // match_client_id: "match-client-id" ":" "boolean"
-#line 569 "dhcp4_parser.yy"
+  case 132: // match_client_id: "match-client-id" ":" "boolean"
+#line 585 "dhcp4_parser.yy"
                                                {
     ctx.unique("match-client-id", ctx.loc2pos(yystack_[2].location));
     ElementPtr match(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("match-client-id", match);
 }
-#line 1199 "dhcp4_parser.cc"
+#line 1219 "dhcp4_parser.cc"
     break;
 
-  case 129: // authoritative: "authoritative" ":" "boolean"
-#line 575 "dhcp4_parser.yy"
+  case 133: // authoritative: "authoritative" ":" "boolean"
+#line 591 "dhcp4_parser.yy"
                                            {
     ctx.unique("authoritative", ctx.loc2pos(yystack_[2].location));
     ElementPtr prf(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("authoritative", prf);
 }
-#line 1209 "dhcp4_parser.cc"
+#line 1229 "dhcp4_parser.cc"
     break;
 
-  case 130: // ddns_send_updates: "ddns-send-updates" ":" "boolean"
-#line 581 "dhcp4_parser.yy"
+  case 134: // ddns_send_updates: "ddns-send-updates" ":" "boolean"
+#line 597 "dhcp4_parser.yy"
                                                    {
     ctx.unique("ddns-send-updates", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ddns-send-updates", b);
 }
-#line 1219 "dhcp4_parser.cc"
+#line 1239 "dhcp4_parser.cc"
     break;
 
-  case 131: // ddns_override_no_update: "ddns-override-no-update" ":" "boolean"
-#line 587 "dhcp4_parser.yy"
+  case 135: // ddns_override_no_update: "ddns-override-no-update" ":" "boolean"
+#line 603 "dhcp4_parser.yy"
                                                                {
     ctx.unique("ddns-override-no-update", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ddns-override-no-update", b);
 }
-#line 1229 "dhcp4_parser.cc"
+#line 1249 "dhcp4_parser.cc"
     break;
 
-  case 132: // ddns_override_client_update: "ddns-override-client-update" ":" "boolean"
-#line 593 "dhcp4_parser.yy"
+  case 136: // ddns_override_client_update: "ddns-override-client-update" ":" "boolean"
+#line 609 "dhcp4_parser.yy"
                                                                        {
     ctx.unique("ddns-override-client-update", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ddns-override-client-update", b);
 }
-#line 1239 "dhcp4_parser.cc"
+#line 1259 "dhcp4_parser.cc"
     break;
 
-  case 133: // $@21: %empty
-#line 599 "dhcp4_parser.yy"
+  case 137: // $@21: %empty
+#line 615 "dhcp4_parser.yy"
                                                    {
     ctx.enter(ctx.REPLACE_CLIENT_NAME);
     ctx.unique("ddns-replace-client-name", ctx.loc2pos(yystack_[0].location));
 }
-#line 1248 "dhcp4_parser.cc"
+#line 1268 "dhcp4_parser.cc"
     break;
 
-  case 134: // ddns_replace_client_name: "ddns-replace-client-name" $@21 ":" ddns_replace_client_name_value
-#line 602 "dhcp4_parser.yy"
+  case 138: // ddns_replace_client_name: "ddns-replace-client-name" $@21 ":" ddns_replace_client_name_value
+#line 618 "dhcp4_parser.yy"
                                        {
     ctx.stack_.back()->set("ddns-replace-client-name", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 1257 "dhcp4_parser.cc"
+#line 1277 "dhcp4_parser.cc"
     break;
 
-  case 135: // ddns_replace_client_name_value: "when-present"
-#line 608 "dhcp4_parser.yy"
+  case 139: // ddns_replace_client_name_value: "when-present"
+#line 624 "dhcp4_parser.yy"
                  {
       yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location)));
       }
-#line 1265 "dhcp4_parser.cc"
+#line 1285 "dhcp4_parser.cc"
     break;
 
-  case 136: // ddns_replace_client_name_value: "never"
-#line 611 "dhcp4_parser.yy"
+  case 140: // ddns_replace_client_name_value: "never"
+#line 627 "dhcp4_parser.yy"
           {
       yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location)));
       }
-#line 1273 "dhcp4_parser.cc"
+#line 1293 "dhcp4_parser.cc"
     break;
 
-  case 137: // ddns_replace_client_name_value: "always"
-#line 614 "dhcp4_parser.yy"
+  case 141: // ddns_replace_client_name_value: "always"
+#line 630 "dhcp4_parser.yy"
            {
       yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location)));
       }
-#line 1281 "dhcp4_parser.cc"
+#line 1301 "dhcp4_parser.cc"
     break;
 
-  case 138: // ddns_replace_client_name_value: "when-not-present"
-#line 617 "dhcp4_parser.yy"
+  case 142: // ddns_replace_client_name_value: "when-not-present"
+#line 633 "dhcp4_parser.yy"
                      {
       yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location)));
       }
-#line 1289 "dhcp4_parser.cc"
+#line 1309 "dhcp4_parser.cc"
     break;
 
-  case 139: // ddns_replace_client_name_value: "boolean"
-#line 620 "dhcp4_parser.yy"
+  case 143: // ddns_replace_client_name_value: "boolean"
+#line 636 "dhcp4_parser.yy"
             {
       error(yystack_[0].location, "boolean values for the replace-client-name are "
                 "no longer supported");
       }
-#line 1298 "dhcp4_parser.cc"
+#line 1318 "dhcp4_parser.cc"
     break;
 
-  case 140: // $@22: %empty
-#line 626 "dhcp4_parser.yy"
+  case 144: // $@22: %empty
+#line 642 "dhcp4_parser.yy"
                                              {
     ctx.unique("ddns-generated-prefix", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1307 "dhcp4_parser.cc"
+#line 1327 "dhcp4_parser.cc"
     break;
 
-  case 141: // ddns_generated_prefix: "ddns-generated-prefix" $@22 ":" "constant string"
-#line 629 "dhcp4_parser.yy"
+  case 145: // ddns_generated_prefix: "ddns-generated-prefix" $@22 ":" "constant string"
+#line 645 "dhcp4_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ddns-generated-prefix", s);
     ctx.leave();
 }
-#line 1317 "dhcp4_parser.cc"
+#line 1337 "dhcp4_parser.cc"
     break;
 
-  case 142: // $@23: %empty
-#line 635 "dhcp4_parser.yy"
+  case 146: // $@23: %empty
+#line 651 "dhcp4_parser.yy"
                                                {
     ctx.unique("ddns-qualifying-suffix", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1326 "dhcp4_parser.cc"
+#line 1346 "dhcp4_parser.cc"
     break;
 
-  case 143: // ddns_qualifying_suffix: "ddns-qualifying-suffix" $@23 ":" "constant string"
-#line 638 "dhcp4_parser.yy"
+  case 147: // ddns_qualifying_suffix: "ddns-qualifying-suffix" $@23 ":" "constant string"
+#line 654 "dhcp4_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ddns-qualifying-suffix", s);
     ctx.leave();
 }
-#line 1336 "dhcp4_parser.cc"
+#line 1356 "dhcp4_parser.cc"
     break;
 
-  case 144: // $@24: %empty
-#line 644 "dhcp4_parser.yy"
+  case 148: // $@24: %empty
+#line 660 "dhcp4_parser.yy"
                                      {
     ctx.unique("hostname-char-set", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1345 "dhcp4_parser.cc"
+#line 1365 "dhcp4_parser.cc"
     break;
 
-  case 145: // hostname_char_set: "hostname-char-set" $@24 ":" "constant string"
-#line 647 "dhcp4_parser.yy"
+  case 149: // hostname_char_set: "hostname-char-set" $@24 ":" "constant string"
+#line 663 "dhcp4_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hostname-char-set", s);
     ctx.leave();
 }
-#line 1355 "dhcp4_parser.cc"
+#line 1375 "dhcp4_parser.cc"
     break;
 
-  case 146: // $@25: %empty
-#line 653 "dhcp4_parser.yy"
+  case 150: // $@25: %empty
+#line 669 "dhcp4_parser.yy"
                                                      {
     ctx.unique("hostname-char-replacement", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1364 "dhcp4_parser.cc"
+#line 1384 "dhcp4_parser.cc"
     break;
 
-  case 147: // hostname_char_replacement: "hostname-char-replacement" $@25 ":" "constant string"
-#line 656 "dhcp4_parser.yy"
+  case 151: // hostname_char_replacement: "hostname-char-replacement" $@25 ":" "constant string"
+#line 672 "dhcp4_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hostname-char-replacement", s);
     ctx.leave();
 }
-#line 1374 "dhcp4_parser.cc"
+#line 1394 "dhcp4_parser.cc"
     break;
 
-  case 148: // store_extended_info: "store-extended-info" ":" "boolean"
-#line 662 "dhcp4_parser.yy"
+  case 152: // store_extended_info: "store-extended-info" ":" "boolean"
+#line 678 "dhcp4_parser.yy"
                                                        {
     ctx.unique("store-extended-info", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("store-extended-info", b);
 }
-#line 1384 "dhcp4_parser.cc"
+#line 1404 "dhcp4_parser.cc"
     break;
 
-  case 149: // statistic_default_sample_count: "statistic-default-sample-count" ":" "integer"
-#line 668 "dhcp4_parser.yy"
+  case 153: // statistic_default_sample_count: "statistic-default-sample-count" ":" "integer"
+#line 684 "dhcp4_parser.yy"
                                                                              {
     ctx.unique("statistic-default-sample-count", ctx.loc2pos(yystack_[2].location));
     ElementPtr count(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("statistic-default-sample-count", count);
 }
-#line 1394 "dhcp4_parser.cc"
+#line 1414 "dhcp4_parser.cc"
     break;
 
-  case 150: // statistic_default_sample_age: "statistic-default-sample-age" ":" "integer"
-#line 674 "dhcp4_parser.yy"
+  case 154: // statistic_default_sample_age: "statistic-default-sample-age" ":" "integer"
+#line 690 "dhcp4_parser.yy"
                                                                          {
     ctx.unique("statistic-default-sample-age", ctx.loc2pos(yystack_[2].location));
     ElementPtr age(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("statistic-default-sample-age", age);
 }
-#line 1404 "dhcp4_parser.cc"
+#line 1424 "dhcp4_parser.cc"
     break;
 
-  case 151: // $@26: %empty
-#line 680 "dhcp4_parser.yy"
+  case 155: // $@26: %empty
+#line 696 "dhcp4_parser.yy"
                                      {
     ctx.unique("interfaces-config", ctx.loc2pos(yystack_[0].location));
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1412,40 +1432,40 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(i);
     ctx.enter(ctx.INTERFACES_CONFIG);
 }
-#line 1416 "dhcp4_parser.cc"
+#line 1436 "dhcp4_parser.cc"
     break;
 
-  case 152: // interfaces_config: "interfaces-config" $@26 ":" "{" interfaces_config_params "}"
-#line 686 "dhcp4_parser.yy"
+  case 156: // interfaces_config: "interfaces-config" $@26 ":" "{" interfaces_config_params "}"
+#line 702 "dhcp4_parser.yy"
                                                                {
     // No interfaces config param is required
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1426 "dhcp4_parser.cc"
+#line 1446 "dhcp4_parser.cc"
     break;
 
-  case 162: // $@27: %empty
-#line 705 "dhcp4_parser.yy"
+  case 166: // $@27: %empty
+#line 721 "dhcp4_parser.yy"
                                 {
     // Parse the interfaces-config map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 1436 "dhcp4_parser.cc"
+#line 1456 "dhcp4_parser.cc"
     break;
 
-  case 163: // sub_interfaces4: "{" $@27 interfaces_config_params "}"
-#line 709 "dhcp4_parser.yy"
+  case 167: // sub_interfaces4: "{" $@27 interfaces_config_params "}"
+#line 725 "dhcp4_parser.yy"
                                           {
     // No interfaces config param is required
     // parsing completed
 }
-#line 1445 "dhcp4_parser.cc"
+#line 1465 "dhcp4_parser.cc"
     break;
 
-  case 164: // $@28: %empty
-#line 714 "dhcp4_parser.yy"
+  case 168: // $@28: %empty
+#line 730 "dhcp4_parser.yy"
                             {
     ctx.unique("interfaces", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -1453,94 +1473,94 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(l);
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1457 "dhcp4_parser.cc"
+#line 1477 "dhcp4_parser.cc"
     break;
 
-  case 165: // interfaces_list: "interfaces" $@28 ":" list_strings
-#line 720 "dhcp4_parser.yy"
+  case 169: // interfaces_list: "interfaces" $@28 ":" list_strings
+#line 736 "dhcp4_parser.yy"
                      {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1466 "dhcp4_parser.cc"
+#line 1486 "dhcp4_parser.cc"
     break;
 
-  case 166: // $@29: %empty
-#line 725 "dhcp4_parser.yy"
+  case 170: // $@29: %empty
+#line 741 "dhcp4_parser.yy"
                                    {
     ctx.unique("dhcp-socket-type", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.DHCP_SOCKET_TYPE);
 }
-#line 1475 "dhcp4_parser.cc"
+#line 1495 "dhcp4_parser.cc"
     break;
 
-  case 167: // dhcp_socket_type: "dhcp-socket-type" $@29 ":" socket_type
-#line 728 "dhcp4_parser.yy"
+  case 171: // dhcp_socket_type: "dhcp-socket-type" $@29 ":" socket_type
+#line 744 "dhcp4_parser.yy"
                     {
     ctx.stack_.back()->set("dhcp-socket-type", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 1484 "dhcp4_parser.cc"
+#line 1504 "dhcp4_parser.cc"
     break;
 
-  case 168: // socket_type: "raw"
-#line 733 "dhcp4_parser.yy"
+  case 172: // socket_type: "raw"
+#line 749 "dhcp4_parser.yy"
                  { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("raw", ctx.loc2pos(yystack_[0].location))); }
-#line 1490 "dhcp4_parser.cc"
+#line 1510 "dhcp4_parser.cc"
     break;
 
-  case 169: // socket_type: "udp"
-#line 734 "dhcp4_parser.yy"
+  case 173: // socket_type: "udp"
+#line 750 "dhcp4_parser.yy"
                  { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("udp", ctx.loc2pos(yystack_[0].location))); }
-#line 1496 "dhcp4_parser.cc"
+#line 1516 "dhcp4_parser.cc"
     break;
 
-  case 170: // $@30: %empty
-#line 737 "dhcp4_parser.yy"
+  case 174: // $@30: %empty
+#line 753 "dhcp4_parser.yy"
                                        {
     ctx.unique("outbound-interface", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.OUTBOUND_INTERFACE);
 }
-#line 1505 "dhcp4_parser.cc"
+#line 1525 "dhcp4_parser.cc"
     break;
 
-  case 171: // outbound_interface: "outbound-interface" $@30 ":" outbound_interface_value
-#line 740 "dhcp4_parser.yy"
+  case 175: // outbound_interface: "outbound-interface" $@30 ":" outbound_interface_value
+#line 756 "dhcp4_parser.yy"
                                  {
     ctx.stack_.back()->set("outbound-interface", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 1514 "dhcp4_parser.cc"
+#line 1534 "dhcp4_parser.cc"
     break;
 
-  case 172: // outbound_interface_value: "same-as-inbound"
-#line 745 "dhcp4_parser.yy"
+  case 176: // outbound_interface_value: "same-as-inbound"
+#line 761 "dhcp4_parser.yy"
                                           {
     yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("same-as-inbound", ctx.loc2pos(yystack_[0].location)));
 }
-#line 1522 "dhcp4_parser.cc"
+#line 1542 "dhcp4_parser.cc"
     break;
 
-  case 173: // outbound_interface_value: "use-routing"
-#line 747 "dhcp4_parser.yy"
+  case 177: // outbound_interface_value: "use-routing"
+#line 763 "dhcp4_parser.yy"
                 {
     yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("use-routing", ctx.loc2pos(yystack_[0].location)));
     }
-#line 1530 "dhcp4_parser.cc"
+#line 1550 "dhcp4_parser.cc"
     break;
 
-  case 174: // re_detect: "re-detect" ":" "boolean"
-#line 751 "dhcp4_parser.yy"
+  case 178: // re_detect: "re-detect" ":" "boolean"
+#line 767 "dhcp4_parser.yy"
                                    {
     ctx.unique("re-detect", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("re-detect", b);
 }
-#line 1540 "dhcp4_parser.cc"
+#line 1560 "dhcp4_parser.cc"
     break;
 
-  case 175: // $@31: %empty
-#line 758 "dhcp4_parser.yy"
+  case 179: // $@31: %empty
+#line 774 "dhcp4_parser.yy"
                                {
     ctx.unique("lease-database", ctx.loc2pos(yystack_[0].location));
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1548,22 +1568,22 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(i);
     ctx.enter(ctx.LEASE_DATABASE);
 }
-#line 1552 "dhcp4_parser.cc"
+#line 1572 "dhcp4_parser.cc"
     break;
 
-  case 176: // lease_database: "lease-database" $@31 ":" "{" database_map_params "}"
-#line 764 "dhcp4_parser.yy"
+  case 180: // lease_database: "lease-database" $@31 ":" "{" database_map_params "}"
+#line 780 "dhcp4_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 1563 "dhcp4_parser.cc"
+#line 1583 "dhcp4_parser.cc"
     break;
 
-  case 177: // $@32: %empty
-#line 771 "dhcp4_parser.yy"
+  case 181: // $@32: %empty
+#line 787 "dhcp4_parser.yy"
                              {
     ctx.unique("sanity-checks", ctx.loc2pos(yystack_[0].location));
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1571,29 +1591,29 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(m);
     ctx.enter(ctx.SANITY_CHECKS);
 }
-#line 1575 "dhcp4_parser.cc"
+#line 1595 "dhcp4_parser.cc"
     break;
 
-  case 178: // sanity_checks: "sanity-checks" $@32 ":" "{" sanity_checks_params "}"
-#line 777 "dhcp4_parser.yy"
+  case 182: // sanity_checks: "sanity-checks" $@32 ":" "{" sanity_checks_params "}"
+#line 793 "dhcp4_parser.yy"
                                                            {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1584 "dhcp4_parser.cc"
+#line 1604 "dhcp4_parser.cc"
     break;
 
-  case 182: // $@33: %empty
-#line 787 "dhcp4_parser.yy"
+  case 186: // $@33: %empty
+#line 803 "dhcp4_parser.yy"
                            {
     ctx.unique("lease-checks", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1593 "dhcp4_parser.cc"
+#line 1613 "dhcp4_parser.cc"
     break;
 
-  case 183: // lease_checks: "lease-checks" $@33 ":" "constant string"
-#line 790 "dhcp4_parser.yy"
+  case 187: // lease_checks: "lease-checks" $@33 ":" "constant string"
+#line 806 "dhcp4_parser.yy"
                {
 
     if ( (string(yystack_[0].value.as < std::string > ()) == "none") ||
@@ -1609,11 +1629,11 @@ namespace isc { namespace dhcp {
               ", supported values are: none, warn, fix, fix-del, del");
     }
 }
-#line 1613 "dhcp4_parser.cc"
+#line 1633 "dhcp4_parser.cc"
     break;
 
-  case 184: // $@34: %empty
-#line 806 "dhcp4_parser.yy"
+  case 188: // $@34: %empty
+#line 822 "dhcp4_parser.yy"
                                {
     ctx.unique("hosts-database", ctx.loc2pos(yystack_[0].location));
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1621,22 +1641,22 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(i);
     ctx.enter(ctx.HOSTS_DATABASE);
 }
-#line 1625 "dhcp4_parser.cc"
+#line 1645 "dhcp4_parser.cc"
     break;
 
-  case 185: // hosts_database: "hosts-database" $@34 ":" "{" database_map_params "}"
-#line 812 "dhcp4_parser.yy"
+  case 189: // hosts_database: "hosts-database" $@34 ":" "{" database_map_params "}"
+#line 828 "dhcp4_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 1636 "dhcp4_parser.cc"
+#line 1656 "dhcp4_parser.cc"
     break;
 
-  case 186: // $@35: %empty
-#line 819 "dhcp4_parser.yy"
+  case 190: // $@35: %empty
+#line 835 "dhcp4_parser.yy"
                                  {
     ctx.unique("hosts-databases", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -1644,344 +1664,344 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(l);
     ctx.enter(ctx.HOSTS_DATABASE);
 }
-#line 1648 "dhcp4_parser.cc"
+#line 1668 "dhcp4_parser.cc"
     break;
 
-  case 187: // hosts_databases: "hosts-databases" $@35 ":" "[" database_list "]"
-#line 825 "dhcp4_parser.yy"
+  case 191: // hosts_databases: "hosts-databases" $@35 ":" "[" database_list "]"
+#line 841 "dhcp4_parser.yy"
                                                       {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1657 "dhcp4_parser.cc"
+#line 1677 "dhcp4_parser.cc"
     break;
 
-  case 192: // $@36: %empty
-#line 838 "dhcp4_parser.yy"
+  case 196: // $@36: %empty
+#line 854 "dhcp4_parser.yy"
                          {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 1667 "dhcp4_parser.cc"
+#line 1687 "dhcp4_parser.cc"
     break;
 
-  case 193: // database: "{" $@36 database_map_params "}"
-#line 842 "dhcp4_parser.yy"
+  case 197: // database: "{" $@36 database_map_params "}"
+#line 858 "dhcp4_parser.yy"
                                      {
     // The type parameter is required
     ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 1677 "dhcp4_parser.cc"
+#line 1697 "dhcp4_parser.cc"
     break;
 
-  case 217: // $@37: %empty
-#line 875 "dhcp4_parser.yy"
+  case 221: // $@37: %empty
+#line 891 "dhcp4_parser.yy"
                     {
     ctx.unique("type", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.DATABASE_TYPE);
 }
-#line 1686 "dhcp4_parser.cc"
+#line 1706 "dhcp4_parser.cc"
     break;
 
-  case 218: // database_type: "type" $@37 ":" db_type
-#line 878 "dhcp4_parser.yy"
+  case 222: // database_type: "type" $@37 ":" db_type
+#line 894 "dhcp4_parser.yy"
                 {
     ctx.stack_.back()->set("type", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 1695 "dhcp4_parser.cc"
+#line 1715 "dhcp4_parser.cc"
     break;
 
-  case 219: // db_type: "memfile"
-#line 883 "dhcp4_parser.yy"
+  case 223: // db_type: "memfile"
+#line 899 "dhcp4_parser.yy"
                  { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); }
-#line 1701 "dhcp4_parser.cc"
+#line 1721 "dhcp4_parser.cc"
     break;
 
-  case 220: // db_type: "mysql"
-#line 884 "dhcp4_parser.yy"
+  case 224: // db_type: "mysql"
+#line 900 "dhcp4_parser.yy"
                { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); }
-#line 1707 "dhcp4_parser.cc"
+#line 1727 "dhcp4_parser.cc"
     break;
 
-  case 221: // db_type: "postgresql"
-#line 885 "dhcp4_parser.yy"
+  case 225: // db_type: "postgresql"
+#line 901 "dhcp4_parser.yy"
                     { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); }
-#line 1713 "dhcp4_parser.cc"
+#line 1733 "dhcp4_parser.cc"
     break;
 
-  case 222: // db_type: "cql"
-#line 886 "dhcp4_parser.yy"
+  case 226: // db_type: "cql"
+#line 902 "dhcp4_parser.yy"
              { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("cql", ctx.loc2pos(yystack_[0].location))); }
-#line 1719 "dhcp4_parser.cc"
+#line 1739 "dhcp4_parser.cc"
     break;
 
-  case 223: // $@38: %empty
-#line 889 "dhcp4_parser.yy"
+  case 227: // $@38: %empty
+#line 905 "dhcp4_parser.yy"
            {
     ctx.unique("user", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1728 "dhcp4_parser.cc"
+#line 1748 "dhcp4_parser.cc"
     break;
 
-  case 224: // user: "user" $@38 ":" "constant string"
-#line 892 "dhcp4_parser.yy"
+  case 228: // user: "user" $@38 ":" "constant string"
+#line 908 "dhcp4_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 1738 "dhcp4_parser.cc"
+#line 1758 "dhcp4_parser.cc"
     break;
 
-  case 225: // $@39: %empty
-#line 898 "dhcp4_parser.yy"
+  case 229: // $@39: %empty
+#line 914 "dhcp4_parser.yy"
                    {
     ctx.unique("password", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1747 "dhcp4_parser.cc"
+#line 1767 "dhcp4_parser.cc"
     break;
 
-  case 226: // password: "password" $@39 ":" "constant string"
-#line 901 "dhcp4_parser.yy"
+  case 230: // password: "password" $@39 ":" "constant string"
+#line 917 "dhcp4_parser.yy"
                {
     ElementPtr pwd(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("password", pwd);
     ctx.leave();
 }
-#line 1757 "dhcp4_parser.cc"
+#line 1777 "dhcp4_parser.cc"
     break;
 
-  case 227: // $@40: %empty
-#line 907 "dhcp4_parser.yy"
+  case 231: // $@40: %empty
+#line 923 "dhcp4_parser.yy"
            {
     ctx.unique("host", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1766 "dhcp4_parser.cc"
+#line 1786 "dhcp4_parser.cc"
     break;
 
-  case 228: // host: "host" $@40 ":" "constant string"
-#line 910 "dhcp4_parser.yy"
+  case 232: // host: "host" $@40 ":" "constant string"
+#line 926 "dhcp4_parser.yy"
                {
     ElementPtr h(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("host", h);
     ctx.leave();
 }
-#line 1776 "dhcp4_parser.cc"
+#line 1796 "dhcp4_parser.cc"
     break;
 
-  case 229: // port: "port" ":" "integer"
-#line 916 "dhcp4_parser.yy"
+  case 233: // port: "port" ":" "integer"
+#line 932 "dhcp4_parser.yy"
                          {
     ctx.unique("port", ctx.loc2pos(yystack_[2].location));
     ElementPtr p(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("port", p);
 }
-#line 1786 "dhcp4_parser.cc"
+#line 1806 "dhcp4_parser.cc"
     break;
 
-  case 230: // $@41: %empty
-#line 922 "dhcp4_parser.yy"
+  case 234: // $@41: %empty
+#line 938 "dhcp4_parser.yy"
            {
     ctx.unique("name", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1795 "dhcp4_parser.cc"
+#line 1815 "dhcp4_parser.cc"
     break;
 
-  case 231: // name: "name" $@41 ":" "constant string"
-#line 925 "dhcp4_parser.yy"
+  case 235: // name: "name" $@41 ":" "constant string"
+#line 941 "dhcp4_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 1805 "dhcp4_parser.cc"
+#line 1825 "dhcp4_parser.cc"
     break;
 
-  case 232: // persist: "persist" ":" "boolean"
-#line 931 "dhcp4_parser.yy"
+  case 236: // persist: "persist" ":" "boolean"
+#line 947 "dhcp4_parser.yy"
                                {
     ctx.unique("persist", ctx.loc2pos(yystack_[2].location));
     ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("persist", n);
 }
-#line 1815 "dhcp4_parser.cc"
+#line 1835 "dhcp4_parser.cc"
     break;
 
-  case 233: // lfc_interval: "lfc-interval" ":" "integer"
-#line 937 "dhcp4_parser.yy"
+  case 237: // lfc_interval: "lfc-interval" ":" "integer"
+#line 953 "dhcp4_parser.yy"
                                          {
     ctx.unique("lfc-interval", ctx.loc2pos(yystack_[2].location));
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("lfc-interval", n);
 }
-#line 1825 "dhcp4_parser.cc"
+#line 1845 "dhcp4_parser.cc"
     break;
 
-  case 234: // readonly: "readonly" ":" "boolean"
-#line 943 "dhcp4_parser.yy"
+  case 238: // readonly: "readonly" ":" "boolean"
+#line 959 "dhcp4_parser.yy"
                                  {
     ctx.unique("readonly", ctx.loc2pos(yystack_[2].location));
     ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("readonly", n);
 }
-#line 1835 "dhcp4_parser.cc"
+#line 1855 "dhcp4_parser.cc"
     break;
 
-  case 235: // connect_timeout: "connect-timeout" ":" "integer"
-#line 949 "dhcp4_parser.yy"
+  case 239: // connect_timeout: "connect-timeout" ":" "integer"
+#line 965 "dhcp4_parser.yy"
                                                {
     ctx.unique("connect-timeout", ctx.loc2pos(yystack_[2].location));
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("connect-timeout", n);
 }
-#line 1845 "dhcp4_parser.cc"
+#line 1865 "dhcp4_parser.cc"
     break;
 
-  case 236: // request_timeout: "request-timeout" ":" "integer"
-#line 955 "dhcp4_parser.yy"
+  case 240: // request_timeout: "request-timeout" ":" "integer"
+#line 971 "dhcp4_parser.yy"
                                                {
     ctx.unique("request-timeout", ctx.loc2pos(yystack_[2].location));
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("request-timeout", n);
 }
-#line 1855 "dhcp4_parser.cc"
+#line 1875 "dhcp4_parser.cc"
     break;
 
-  case 237: // tcp_keepalive: "tcp-keepalive" ":" "integer"
-#line 961 "dhcp4_parser.yy"
+  case 241: // tcp_keepalive: "tcp-keepalive" ":" "integer"
+#line 977 "dhcp4_parser.yy"
                                            {
     ctx.unique("tcp-keepalive", ctx.loc2pos(yystack_[2].location));
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("tcp-keepalive", n);
 }
-#line 1865 "dhcp4_parser.cc"
+#line 1885 "dhcp4_parser.cc"
     break;
 
-  case 238: // tcp_nodelay: "tcp-nodelay" ":" "boolean"
-#line 967 "dhcp4_parser.yy"
+  case 242: // tcp_nodelay: "tcp-nodelay" ":" "boolean"
+#line 983 "dhcp4_parser.yy"
                                        {
     ctx.unique("tcp-nodelay", ctx.loc2pos(yystack_[2].location));
     ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("tcp-nodelay", n);
 }
-#line 1875 "dhcp4_parser.cc"
+#line 1895 "dhcp4_parser.cc"
     break;
 
-  case 239: // $@42: %empty
-#line 973 "dhcp4_parser.yy"
+  case 243: // $@42: %empty
+#line 989 "dhcp4_parser.yy"
                                {
     ctx.unique("contact-points", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1884 "dhcp4_parser.cc"
+#line 1904 "dhcp4_parser.cc"
     break;
 
-  case 240: // contact_points: "contact-points" $@42 ":" "constant string"
-#line 976 "dhcp4_parser.yy"
+  case 244: // contact_points: "contact-points" $@42 ":" "constant string"
+#line 992 "dhcp4_parser.yy"
                {
     ElementPtr cp(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("contact-points", cp);
     ctx.leave();
 }
-#line 1894 "dhcp4_parser.cc"
+#line 1914 "dhcp4_parser.cc"
     break;
 
-  case 241: // $@43: %empty
-#line 982 "dhcp4_parser.yy"
+  case 245: // $@43: %empty
+#line 998 "dhcp4_parser.yy"
                    {
     ctx.unique("keyspace", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1903 "dhcp4_parser.cc"
+#line 1923 "dhcp4_parser.cc"
     break;
 
-  case 242: // keyspace: "keyspace" $@43 ":" "constant string"
-#line 985 "dhcp4_parser.yy"
+  case 246: // keyspace: "keyspace" $@43 ":" "constant string"
+#line 1001 "dhcp4_parser.yy"
                {
     ElementPtr ks(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("keyspace", ks);
     ctx.leave();
 }
-#line 1913 "dhcp4_parser.cc"
+#line 1933 "dhcp4_parser.cc"
     break;
 
-  case 243: // $@44: %empty
-#line 991 "dhcp4_parser.yy"
+  case 247: // $@44: %empty
+#line 1007 "dhcp4_parser.yy"
                          {
     ctx.unique("consistency", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1922 "dhcp4_parser.cc"
+#line 1942 "dhcp4_parser.cc"
     break;
 
-  case 244: // consistency: "consistency" $@44 ":" "constant string"
-#line 994 "dhcp4_parser.yy"
+  case 248: // consistency: "consistency" $@44 ":" "constant string"
+#line 1010 "dhcp4_parser.yy"
                {
     ElementPtr c(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("consistency", c);
     ctx.leave();
 }
-#line 1932 "dhcp4_parser.cc"
+#line 1952 "dhcp4_parser.cc"
     break;
 
-  case 245: // $@45: %empty
-#line 1000 "dhcp4_parser.yy"
+  case 249: // $@45: %empty
+#line 1016 "dhcp4_parser.yy"
                                        {
     ctx.unique("serial-consistency", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1941 "dhcp4_parser.cc"
+#line 1961 "dhcp4_parser.cc"
     break;
 
-  case 246: // serial_consistency: "serial-consistency" $@45 ":" "constant string"
-#line 1003 "dhcp4_parser.yy"
+  case 250: // serial_consistency: "serial-consistency" $@45 ":" "constant string"
+#line 1019 "dhcp4_parser.yy"
                {
     ElementPtr c(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("serial-consistency", c);
     ctx.leave();
 }
-#line 1951 "dhcp4_parser.cc"
+#line 1971 "dhcp4_parser.cc"
     break;
 
-  case 247: // max_reconnect_tries: "max-reconnect-tries" ":" "integer"
-#line 1009 "dhcp4_parser.yy"
+  case 251: // max_reconnect_tries: "max-reconnect-tries" ":" "integer"
+#line 1025 "dhcp4_parser.yy"
                                                        {
     ctx.unique("max-reconnect-tries", ctx.loc2pos(yystack_[2].location));
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-reconnect-tries", n);
 }
-#line 1961 "dhcp4_parser.cc"
+#line 1981 "dhcp4_parser.cc"
     break;
 
-  case 248: // reconnect_wait_time: "reconnect-wait-time" ":" "integer"
-#line 1015 "dhcp4_parser.yy"
+  case 252: // reconnect_wait_time: "reconnect-wait-time" ":" "integer"
+#line 1031 "dhcp4_parser.yy"
                                                        {
     ctx.unique("reconnect-wait-time", ctx.loc2pos(yystack_[2].location));
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("reconnect-wait-time", n);
 }
-#line 1971 "dhcp4_parser.cc"
+#line 1991 "dhcp4_parser.cc"
     break;
 
-  case 249: // max_row_errors: "max-row-errors" ":" "integer"
-#line 1021 "dhcp4_parser.yy"
+  case 253: // max_row_errors: "max-row-errors" ":" "integer"
+#line 1037 "dhcp4_parser.yy"
                                              {
     ctx.unique("max-row-errors", ctx.loc2pos(yystack_[2].location));
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-row-errors", n);
 }
-#line 1981 "dhcp4_parser.cc"
+#line 2001 "dhcp4_parser.cc"
     break;
 
-  case 250: // $@46: %empty
-#line 1028 "dhcp4_parser.yy"
+  case 254: // $@46: %empty
+#line 1044 "dhcp4_parser.yy"
                                                            {
     ctx.unique("host-reservation-identifiers", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -1989,65 +2009,65 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(l);
     ctx.enter(ctx.HOST_RESERVATION_IDENTIFIERS);
 }
-#line 1993 "dhcp4_parser.cc"
+#line 2013 "dhcp4_parser.cc"
     break;
 
-  case 251: // host_reservation_identifiers: "host-reservation-identifiers" $@46 ":" "[" host_reservation_identifiers_list "]"
-#line 1034 "dhcp4_parser.yy"
+  case 255: // host_reservation_identifiers: "host-reservation-identifiers" $@46 ":" "[" host_reservation_identifiers_list "]"
+#line 1050 "dhcp4_parser.yy"
                                                                           {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2002 "dhcp4_parser.cc"
+#line 2022 "dhcp4_parser.cc"
     break;
 
-  case 259: // duid_id: "duid"
-#line 1050 "dhcp4_parser.yy"
+  case 263: // duid_id: "duid"
+#line 1066 "dhcp4_parser.yy"
                {
     ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(duid);
 }
-#line 2011 "dhcp4_parser.cc"
+#line 2031 "dhcp4_parser.cc"
     break;
 
-  case 260: // hw_address_id: "hw-address"
-#line 1055 "dhcp4_parser.yy"
+  case 264: // hw_address_id: "hw-address"
+#line 1071 "dhcp4_parser.yy"
                            {
     ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(hwaddr);
 }
-#line 2020 "dhcp4_parser.cc"
+#line 2040 "dhcp4_parser.cc"
     break;
 
-  case 261: // circuit_id: "circuit-id"
-#line 1060 "dhcp4_parser.yy"
+  case 265: // circuit_id: "circuit-id"
+#line 1076 "dhcp4_parser.yy"
                         {
     ElementPtr circuit(new StringElement("circuit-id", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(circuit);
 }
-#line 2029 "dhcp4_parser.cc"
+#line 2049 "dhcp4_parser.cc"
     break;
 
-  case 262: // client_id: "client-id"
-#line 1065 "dhcp4_parser.yy"
+  case 266: // client_id: "client-id"
+#line 1081 "dhcp4_parser.yy"
                       {
     ElementPtr client(new StringElement("client-id", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(client);
 }
-#line 2038 "dhcp4_parser.cc"
+#line 2058 "dhcp4_parser.cc"
     break;
 
-  case 263: // flex_id: "flex-id"
-#line 1070 "dhcp4_parser.yy"
+  case 267: // flex_id: "flex-id"
+#line 1086 "dhcp4_parser.yy"
                  {
     ElementPtr flex_id(new StringElement("flex-id", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(flex_id);
 }
-#line 2047 "dhcp4_parser.cc"
+#line 2067 "dhcp4_parser.cc"
     break;
 
-  case 264: // $@47: %empty
-#line 1077 "dhcp4_parser.yy"
+  case 268: // $@47: %empty
+#line 1093 "dhcp4_parser.yy"
                                            {
     ctx.unique("multi-threading", ctx.loc2pos(yystack_[0].location));
     ElementPtr mt(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -2055,52 +2075,52 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(mt);
     ctx.enter(ctx.DHCP_MULTI_THREADING);
 }
-#line 2059 "dhcp4_parser.cc"
+#line 2079 "dhcp4_parser.cc"
     break;
 
-  case 265: // dhcp_multi_threading: "multi-threading" $@47 ":" "{" multi_threading_params "}"
-#line 1083 "dhcp4_parser.yy"
+  case 269: // dhcp_multi_threading: "multi-threading" $@47 ":" "{" multi_threading_params "}"
+#line 1099 "dhcp4_parser.yy"
                                                              {
     // The enable parameter is required.
     ctx.require("enable-multi-threading", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2070 "dhcp4_parser.cc"
+#line 2090 "dhcp4_parser.cc"
     break;
 
-  case 274: // enable_multi_threading: "enable-multi-threading" ":" "boolean"
-#line 1102 "dhcp4_parser.yy"
+  case 278: // enable_multi_threading: "enable-multi-threading" ":" "boolean"
+#line 1118 "dhcp4_parser.yy"
                                                              {
     ctx.unique("enable-multi-threading", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("enable-multi-threading", b);
 }
-#line 2080 "dhcp4_parser.cc"
+#line 2100 "dhcp4_parser.cc"
     break;
 
-  case 275: // thread_pool_size: "thread-pool-size" ":" "integer"
-#line 1108 "dhcp4_parser.yy"
+  case 279: // thread_pool_size: "thread-pool-size" ":" "integer"
+#line 1124 "dhcp4_parser.yy"
                                                  {
     ctx.unique("thread-pool-size", ctx.loc2pos(yystack_[2].location));
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("thread-pool-size", prf);
 }
-#line 2090 "dhcp4_parser.cc"
+#line 2110 "dhcp4_parser.cc"
     break;
 
-  case 276: // packet_queue_size: "packet-queue-size" ":" "integer"
-#line 1114 "dhcp4_parser.yy"
+  case 280: // packet_queue_size: "packet-queue-size" ":" "integer"
+#line 1130 "dhcp4_parser.yy"
                                                    {
     ctx.unique("packet-queue-size", ctx.loc2pos(yystack_[2].location));
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("packet-queue-size", prf);
 }
-#line 2100 "dhcp4_parser.cc"
+#line 2120 "dhcp4_parser.cc"
     break;
 
-  case 277: // $@48: %empty
-#line 1120 "dhcp4_parser.yy"
+  case 281: // $@48: %empty
+#line 1136 "dhcp4_parser.yy"
                                  {
     ctx.unique("hooks-libraries", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -2108,97 +2128,97 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(l);
     ctx.enter(ctx.HOOKS_LIBRARIES);
 }
-#line 2112 "dhcp4_parser.cc"
+#line 2132 "dhcp4_parser.cc"
     break;
 
-  case 278: // hooks_libraries: "hooks-libraries" $@48 ":" "[" hooks_libraries_list "]"
-#line 1126 "dhcp4_parser.yy"
+  case 282: // hooks_libraries: "hooks-libraries" $@48 ":" "[" hooks_libraries_list "]"
+#line 1142 "dhcp4_parser.yy"
                                                              {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2121 "dhcp4_parser.cc"
+#line 2141 "dhcp4_parser.cc"
     break;
 
-  case 283: // $@49: %empty
-#line 1139 "dhcp4_parser.yy"
+  case 287: // $@49: %empty
+#line 1155 "dhcp4_parser.yy"
                               {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2131 "dhcp4_parser.cc"
+#line 2151 "dhcp4_parser.cc"
     break;
 
-  case 284: // hooks_library: "{" $@49 hooks_params "}"
-#line 1143 "dhcp4_parser.yy"
+  case 288: // hooks_library: "{" $@49 hooks_params "}"
+#line 1159 "dhcp4_parser.yy"
                               {
     // The library hooks parameter is required
     ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 2141 "dhcp4_parser.cc"
+#line 2161 "dhcp4_parser.cc"
     break;
 
-  case 285: // $@50: %empty
-#line 1149 "dhcp4_parser.yy"
+  case 289: // $@50: %empty
+#line 1165 "dhcp4_parser.yy"
                                   {
     // Parse the hooks-libraries list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2151 "dhcp4_parser.cc"
+#line 2171 "dhcp4_parser.cc"
     break;
 
-  case 286: // sub_hooks_library: "{" $@50 hooks_params "}"
-#line 1153 "dhcp4_parser.yy"
+  case 290: // sub_hooks_library: "{" $@50 hooks_params "}"
+#line 1169 "dhcp4_parser.yy"
                               {
     // The library hooks parameter is required
     ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 2161 "dhcp4_parser.cc"
+#line 2181 "dhcp4_parser.cc"
     break;
 
-  case 292: // $@51: %empty
-#line 1168 "dhcp4_parser.yy"
+  case 296: // $@51: %empty
+#line 1184 "dhcp4_parser.yy"
                  {
     ctx.unique("library", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2170 "dhcp4_parser.cc"
+#line 2190 "dhcp4_parser.cc"
     break;
 
-  case 293: // library: "library" $@51 ":" "constant string"
-#line 1171 "dhcp4_parser.yy"
+  case 297: // library: "library" $@51 ":" "constant string"
+#line 1187 "dhcp4_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 2180 "dhcp4_parser.cc"
+#line 2200 "dhcp4_parser.cc"
     break;
 
-  case 294: // $@52: %empty
-#line 1177 "dhcp4_parser.yy"
+  case 298: // $@52: %empty
+#line 1193 "dhcp4_parser.yy"
                        {
     ctx.unique("parameters", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2189 "dhcp4_parser.cc"
+#line 2209 "dhcp4_parser.cc"
     break;
 
-  case 295: // parameters: "parameters" $@52 ":" map_value
-#line 1180 "dhcp4_parser.yy"
+  case 299: // parameters: "parameters" $@52 ":" map_value
+#line 1196 "dhcp4_parser.yy"
                   {
     ctx.stack_.back()->set("parameters", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 2198 "dhcp4_parser.cc"
+#line 2218 "dhcp4_parser.cc"
     break;
 
-  case 296: // $@53: %empty
-#line 1186 "dhcp4_parser.yy"
+  case 300: // $@53: %empty
+#line 1202 "dhcp4_parser.yy"
                                                      {
     ctx.unique("expired-leases-processing", ctx.loc2pos(yystack_[0].location));
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -2206,81 +2226,81 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(m);
     ctx.enter(ctx.EXPIRED_LEASES_PROCESSING);
 }
-#line 2210 "dhcp4_parser.cc"
+#line 2230 "dhcp4_parser.cc"
     break;
 
-  case 297: // expired_leases_processing: "expired-leases-processing" $@53 ":" "{" expired_leases_params "}"
-#line 1192 "dhcp4_parser.yy"
+  case 301: // expired_leases_processing: "expired-leases-processing" $@53 ":" "{" expired_leases_params "}"
+#line 1208 "dhcp4_parser.yy"
                                                             {
     // No expired lease parameter is required
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2220 "dhcp4_parser.cc"
+#line 2240 "dhcp4_parser.cc"
     break;
 
-  case 306: // reclaim_timer_wait_time: "reclaim-timer-wait-time" ":" "integer"
-#line 1210 "dhcp4_parser.yy"
+  case 310: // reclaim_timer_wait_time: "reclaim-timer-wait-time" ":" "integer"
+#line 1226 "dhcp4_parser.yy"
                                                                {
     ctx.unique("reclaim-timer-wait-time", ctx.loc2pos(yystack_[2].location));
     ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("reclaim-timer-wait-time", value);
 }
-#line 2230 "dhcp4_parser.cc"
+#line 2250 "dhcp4_parser.cc"
     break;
 
-  case 307: // flush_reclaimed_timer_wait_time: "flush-reclaimed-timer-wait-time" ":" "integer"
-#line 1216 "dhcp4_parser.yy"
+  case 311: // flush_reclaimed_timer_wait_time: "flush-reclaimed-timer-wait-time" ":" "integer"
+#line 1232 "dhcp4_parser.yy"
                                                                                {
     ctx.unique("flush-reclaimed-timer-wait-time", ctx.loc2pos(yystack_[2].location));
     ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("flush-reclaimed-timer-wait-time", value);
 }
-#line 2240 "dhcp4_parser.cc"
+#line 2260 "dhcp4_parser.cc"
     break;
 
-  case 308: // hold_reclaimed_time: "hold-reclaimed-time" ":" "integer"
-#line 1222 "dhcp4_parser.yy"
+  case 312: // hold_reclaimed_time: "hold-reclaimed-time" ":" "integer"
+#line 1238 "dhcp4_parser.yy"
                                                        {
     ctx.unique("hold-reclaimed-time", ctx.loc2pos(yystack_[2].location));
     ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hold-reclaimed-time", value);
 }
-#line 2250 "dhcp4_parser.cc"
+#line 2270 "dhcp4_parser.cc"
     break;
 
-  case 309: // max_reclaim_leases: "max-reclaim-leases" ":" "integer"
-#line 1228 "dhcp4_parser.yy"
+  case 313: // max_reclaim_leases: "max-reclaim-leases" ":" "integer"
+#line 1244 "dhcp4_parser.yy"
                                                      {
     ctx.unique("max-reclaim-leases", ctx.loc2pos(yystack_[2].location));
     ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-reclaim-leases", value);
 }
-#line 2260 "dhcp4_parser.cc"
+#line 2280 "dhcp4_parser.cc"
     break;
 
-  case 310: // max_reclaim_time: "max-reclaim-time" ":" "integer"
-#line 1234 "dhcp4_parser.yy"
+  case 314: // max_reclaim_time: "max-reclaim-time" ":" "integer"
+#line 1250 "dhcp4_parser.yy"
                                                  {
     ctx.unique("max-reclaim-time", ctx.loc2pos(yystack_[2].location));
     ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-reclaim-time", value);
 }
-#line 2270 "dhcp4_parser.cc"
+#line 2290 "dhcp4_parser.cc"
     break;
 
-  case 311: // unwarned_reclaim_cycles: "unwarned-reclaim-cycles" ":" "integer"
-#line 1240 "dhcp4_parser.yy"
+  case 315: // unwarned_reclaim_cycles: "unwarned-reclaim-cycles" ":" "integer"
+#line 1256 "dhcp4_parser.yy"
                                                                {
     ctx.unique("unwarned-reclaim-cycles", ctx.loc2pos(yystack_[2].location));
     ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("unwarned-reclaim-cycles", value);
 }
-#line 2280 "dhcp4_parser.cc"
+#line 2300 "dhcp4_parser.cc"
     break;
 
-  case 312: // $@54: %empty
-#line 1249 "dhcp4_parser.yy"
+  case 316: // $@54: %empty
+#line 1265 "dhcp4_parser.yy"
                       {
     ctx.unique("subnet4", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -2288,30 +2308,30 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(l);
     ctx.enter(ctx.SUBNET4);
 }
-#line 2292 "dhcp4_parser.cc"
+#line 2312 "dhcp4_parser.cc"
     break;
 
-  case 313: // subnet4_list: "subnet4" $@54 ":" "[" subnet4_list_content "]"
-#line 1255 "dhcp4_parser.yy"
+  case 317: // subnet4_list: "subnet4" $@54 ":" "[" subnet4_list_content "]"
+#line 1271 "dhcp4_parser.yy"
                                                              {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2301 "dhcp4_parser.cc"
+#line 2321 "dhcp4_parser.cc"
     break;
 
-  case 318: // $@55: %empty
-#line 1275 "dhcp4_parser.yy"
+  case 322: // $@55: %empty
+#line 1291 "dhcp4_parser.yy"
                         {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2311 "dhcp4_parser.cc"
+#line 2331 "dhcp4_parser.cc"
     break;
 
-  case 319: // subnet4: "{" $@55 subnet4_params "}"
-#line 1279 "dhcp4_parser.yy"
+  case 323: // subnet4: "{" $@55 subnet4_params "}"
+#line 1295 "dhcp4_parser.yy"
                                 {
     // Once we reached this place, the subnet parsing is now complete.
     // If we want to, we can implement default values here.
@@ -2333,145 +2353,145 @@ namespace isc { namespace dhcp {
     ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 2337 "dhcp4_parser.cc"
+#line 2357 "dhcp4_parser.cc"
     break;
 
-  case 320: // $@56: %empty
-#line 1301 "dhcp4_parser.yy"
+  case 324: // $@56: %empty
+#line 1317 "dhcp4_parser.yy"
                             {
     // Parse the subnet4 list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2347 "dhcp4_parser.cc"
+#line 2367 "dhcp4_parser.cc"
     break;
 
-  case 321: // sub_subnet4: "{" $@56 subnet4_params "}"
-#line 1305 "dhcp4_parser.yy"
+  case 325: // sub_subnet4: "{" $@56 subnet4_params "}"
+#line 1321 "dhcp4_parser.yy"
                                 {
     // The subnet subnet4 parameter is required
     ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 2357 "dhcp4_parser.cc"
+#line 2377 "dhcp4_parser.cc"
     break;
 
-  case 362: // $@57: %empty
-#line 1357 "dhcp4_parser.yy"
+  case 368: // $@57: %empty
+#line 1375 "dhcp4_parser.yy"
                {
     ctx.unique("subnet", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2366 "dhcp4_parser.cc"
+#line 2386 "dhcp4_parser.cc"
     break;
 
-  case 363: // subnet: "subnet" $@57 ":" "constant string"
-#line 1360 "dhcp4_parser.yy"
+  case 369: // subnet: "subnet" $@57 ":" "constant string"
+#line 1378 "dhcp4_parser.yy"
                {
     ElementPtr subnet(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("subnet", subnet);
     ctx.leave();
 }
-#line 2376 "dhcp4_parser.cc"
+#line 2396 "dhcp4_parser.cc"
     break;
 
-  case 364: // $@58: %empty
-#line 1366 "dhcp4_parser.yy"
+  case 370: // $@58: %empty
+#line 1384 "dhcp4_parser.yy"
                                            {
     ctx.unique("4o6-interface", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2385 "dhcp4_parser.cc"
+#line 2405 "dhcp4_parser.cc"
     break;
 
-  case 365: // subnet_4o6_interface: "4o6-interface" $@58 ":" "constant string"
-#line 1369 "dhcp4_parser.yy"
+  case 371: // subnet_4o6_interface: "4o6-interface" $@58 ":" "constant string"
+#line 1387 "dhcp4_parser.yy"
                {
     ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("4o6-interface", iface);
     ctx.leave();
 }
-#line 2395 "dhcp4_parser.cc"
+#line 2415 "dhcp4_parser.cc"
     break;
 
-  case 366: // $@59: %empty
-#line 1375 "dhcp4_parser.yy"
+  case 372: // $@59: %empty
+#line 1393 "dhcp4_parser.yy"
                                                  {
     ctx.unique("4o6-interface-id", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2404 "dhcp4_parser.cc"
+#line 2424 "dhcp4_parser.cc"
     break;
 
-  case 367: // subnet_4o6_interface_id: "4o6-interface-id" $@59 ":" "constant string"
-#line 1378 "dhcp4_parser.yy"
+  case 373: // subnet_4o6_interface_id: "4o6-interface-id" $@59 ":" "constant string"
+#line 1396 "dhcp4_parser.yy"
                {
     ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("4o6-interface-id", iface);
     ctx.leave();
 }
-#line 2414 "dhcp4_parser.cc"
+#line 2434 "dhcp4_parser.cc"
     break;
 
-  case 368: // $@60: %empty
-#line 1384 "dhcp4_parser.yy"
+  case 374: // $@60: %empty
+#line 1402 "dhcp4_parser.yy"
                                      {
     ctx.unique("4o6-subnet", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2423 "dhcp4_parser.cc"
+#line 2443 "dhcp4_parser.cc"
     break;
 
-  case 369: // subnet_4o6_subnet: "4o6-subnet" $@60 ":" "constant string"
-#line 1387 "dhcp4_parser.yy"
+  case 375: // subnet_4o6_subnet: "4o6-subnet" $@60 ":" "constant string"
+#line 1405 "dhcp4_parser.yy"
                {
     ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("4o6-subnet", iface);
     ctx.leave();
 }
-#line 2433 "dhcp4_parser.cc"
+#line 2453 "dhcp4_parser.cc"
     break;
 
-  case 370: // $@61: %empty
-#line 1393 "dhcp4_parser.yy"
+  case 376: // $@61: %empty
+#line 1411 "dhcp4_parser.yy"
                      {
     ctx.unique("interface", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2442 "dhcp4_parser.cc"
+#line 2462 "dhcp4_parser.cc"
     break;
 
-  case 371: // interface: "interface" $@61 ":" "constant string"
-#line 1396 "dhcp4_parser.yy"
+  case 377: // interface: "interface" $@61 ":" "constant string"
+#line 1414 "dhcp4_parser.yy"
                {
     ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interface", iface);
     ctx.leave();
 }
-#line 2452 "dhcp4_parser.cc"
+#line 2472 "dhcp4_parser.cc"
     break;
 
-  case 372: // $@62: %empty
-#line 1402 "dhcp4_parser.yy"
+  case 378: // $@62: %empty
+#line 1420 "dhcp4_parser.yy"
                            {
     ctx.unique("client-class", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2461 "dhcp4_parser.cc"
+#line 2481 "dhcp4_parser.cc"
     break;
 
-  case 373: // client_class: "client-class" $@62 ":" "constant string"
-#line 1405 "dhcp4_parser.yy"
+  case 379: // client_class: "client-class" $@62 ":" "constant string"
+#line 1423 "dhcp4_parser.yy"
                {
     ElementPtr cls(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("client-class", cls);
     ctx.leave();
 }
-#line 2471 "dhcp4_parser.cc"
+#line 2491 "dhcp4_parser.cc"
     break;
 
-  case 374: // $@63: %empty
-#line 1411 "dhcp4_parser.yy"
+  case 380: // $@63: %empty
+#line 1429 "dhcp4_parser.yy"
                                                {
     ctx.unique("require-client-classes", ctx.loc2pos(yystack_[0].location));
     ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -2479,72 +2499,72 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(c);
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2483 "dhcp4_parser.cc"
+#line 2503 "dhcp4_parser.cc"
     break;
 
-  case 375: // require_client_classes: "require-client-classes" $@63 ":" list_strings
-#line 1417 "dhcp4_parser.yy"
+  case 381: // require_client_classes: "require-client-classes" $@63 ":" list_strings
+#line 1435 "dhcp4_parser.yy"
                      {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2492 "dhcp4_parser.cc"
+#line 2512 "dhcp4_parser.cc"
     break;
 
-  case 376: // $@64: %empty
-#line 1422 "dhcp4_parser.yy"
+  case 382: // $@64: %empty
+#line 1440 "dhcp4_parser.yy"
                                    {
     ctx.unique("reservation-mode", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.RESERVATION_MODE);
 }
-#line 2501 "dhcp4_parser.cc"
+#line 2521 "dhcp4_parser.cc"
     break;
 
-  case 377: // reservation_mode: "reservation-mode" $@64 ":" hr_mode
-#line 1425 "dhcp4_parser.yy"
+  case 383: // reservation_mode: "reservation-mode" $@64 ":" hr_mode
+#line 1443 "dhcp4_parser.yy"
                 {
     ctx.stack_.back()->set("reservation-mode", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 2510 "dhcp4_parser.cc"
+#line 2530 "dhcp4_parser.cc"
     break;
 
-  case 378: // hr_mode: "disabled"
-#line 1430 "dhcp4_parser.yy"
+  case 384: // hr_mode: "disabled"
+#line 1448 "dhcp4_parser.yy"
                   { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("disabled", ctx.loc2pos(yystack_[0].location))); }
-#line 2516 "dhcp4_parser.cc"
+#line 2536 "dhcp4_parser.cc"
     break;
 
-  case 379: // hr_mode: "out-of-pool"
-#line 1431 "dhcp4_parser.yy"
+  case 385: // hr_mode: "out-of-pool"
+#line 1449 "dhcp4_parser.yy"
                      { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(yystack_[0].location))); }
-#line 2522 "dhcp4_parser.cc"
+#line 2542 "dhcp4_parser.cc"
     break;
 
-  case 380: // hr_mode: "global"
-#line 1432 "dhcp4_parser.yy"
+  case 386: // hr_mode: "global"
+#line 1450 "dhcp4_parser.yy"
                 { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("global", ctx.loc2pos(yystack_[0].location))); }
-#line 2528 "dhcp4_parser.cc"
+#line 2548 "dhcp4_parser.cc"
     break;
 
-  case 381: // hr_mode: "all"
-#line 1433 "dhcp4_parser.yy"
+  case 387: // hr_mode: "all"
+#line 1451 "dhcp4_parser.yy"
              { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); }
-#line 2534 "dhcp4_parser.cc"
+#line 2554 "dhcp4_parser.cc"
     break;
 
-  case 382: // id: "id" ":" "integer"
-#line 1436 "dhcp4_parser.yy"
+  case 388: // id: "id" ":" "integer"
+#line 1454 "dhcp4_parser.yy"
                      {
     ctx.unique("id", ctx.loc2pos(yystack_[2].location));
     ElementPtr id(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("id", id);
 }
-#line 2544 "dhcp4_parser.cc"
+#line 2564 "dhcp4_parser.cc"
     break;
 
-  case 383: // $@65: %empty
-#line 1444 "dhcp4_parser.yy"
+  case 389: // $@65: %empty
+#line 1462 "dhcp4_parser.yy"
                                  {
     ctx.unique("shared-networks", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -2552,38 +2572,38 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(l);
     ctx.enter(ctx.SHARED_NETWORK);
 }
-#line 2556 "dhcp4_parser.cc"
+#line 2576 "dhcp4_parser.cc"
     break;
 
-  case 384: // shared_networks: "shared-networks" $@65 ":" "[" shared_networks_content "]"
-#line 1450 "dhcp4_parser.yy"
+  case 390: // shared_networks: "shared-networks" $@65 ":" "[" shared_networks_content "]"
+#line 1468 "dhcp4_parser.yy"
                                                                 {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2565 "dhcp4_parser.cc"
+#line 2585 "dhcp4_parser.cc"
     break;
 
-  case 389: // $@66: %empty
-#line 1465 "dhcp4_parser.yy"
+  case 395: // $@66: %empty
+#line 1483 "dhcp4_parser.yy"
                                {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2575 "dhcp4_parser.cc"
+#line 2595 "dhcp4_parser.cc"
     break;
 
-  case 390: // shared_network: "{" $@66 shared_network_params "}"
-#line 1469 "dhcp4_parser.yy"
+  case 396: // shared_network: "{" $@66 shared_network_params "}"
+#line 1487 "dhcp4_parser.yy"
                                        {
     ctx.stack_.pop_back();
 }
-#line 2583 "dhcp4_parser.cc"
+#line 2603 "dhcp4_parser.cc"
     break;
 
-  case 426: // $@67: %empty
-#line 1516 "dhcp4_parser.yy"
+  case 434: // $@67: %empty
+#line 1536 "dhcp4_parser.yy"
                             {
     ctx.unique("option-def", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -2591,47 +2611,47 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(l);
     ctx.enter(ctx.OPTION_DEF);
 }
-#line 2595 "dhcp4_parser.cc"
+#line 2615 "dhcp4_parser.cc"
     break;
 
-  case 427: // option_def_list: "option-def" $@67 ":" "[" option_def_list_content "]"
-#line 1522 "dhcp4_parser.yy"
+  case 435: // option_def_list: "option-def" $@67 ":" "[" option_def_list_content "]"
+#line 1542 "dhcp4_parser.yy"
                                                                 {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2604 "dhcp4_parser.cc"
+#line 2624 "dhcp4_parser.cc"
     break;
 
-  case 428: // $@68: %empty
-#line 1530 "dhcp4_parser.yy"
+  case 436: // $@68: %empty
+#line 1550 "dhcp4_parser.yy"
                                     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2613 "dhcp4_parser.cc"
+#line 2633 "dhcp4_parser.cc"
     break;
 
-  case 429: // sub_option_def_list: "{" $@68 option_def_list "}"
-#line 1533 "dhcp4_parser.yy"
+  case 437: // sub_option_def_list: "{" $@68 option_def_list "}"
+#line 1553 "dhcp4_parser.yy"
                                  {
     // parsing completed
 }
-#line 2621 "dhcp4_parser.cc"
+#line 2641 "dhcp4_parser.cc"
     break;
 
-  case 434: // $@69: %empty
-#line 1549 "dhcp4_parser.yy"
+  case 442: // $@69: %empty
+#line 1569 "dhcp4_parser.yy"
                                  {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2631 "dhcp4_parser.cc"
+#line 2651 "dhcp4_parser.cc"
     break;
 
-  case 435: // option_def_entry: "{" $@69 option_def_params "}"
-#line 1553 "dhcp4_parser.yy"
+  case 443: // option_def_entry: "{" $@69 option_def_params "}"
+#line 1573 "dhcp4_parser.yy"
                                    {
     // The name, code and type option def parameters are required.
     ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -2639,21 +2659,21 @@ namespace isc { namespace dhcp {
     ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 2643 "dhcp4_parser.cc"
+#line 2663 "dhcp4_parser.cc"
     break;
 
-  case 436: // $@70: %empty
-#line 1564 "dhcp4_parser.yy"
+  case 444: // $@70: %empty
+#line 1584 "dhcp4_parser.yy"
                                {
     // Parse the option-def list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2653 "dhcp4_parser.cc"
+#line 2673 "dhcp4_parser.cc"
     break;
 
-  case 437: // sub_option_def: "{" $@70 option_def_params "}"
-#line 1568 "dhcp4_parser.yy"
+  case 445: // sub_option_def: "{" $@70 option_def_params "}"
+#line 1588 "dhcp4_parser.yy"
                                    {
     // The name, code and type option def parameters are required.
     ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -2661,107 +2681,107 @@ namespace isc { namespace dhcp {
     ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 2665 "dhcp4_parser.cc"
+#line 2685 "dhcp4_parser.cc"
     break;
 
-  case 453: // code: "code" ":" "integer"
-#line 1600 "dhcp4_parser.yy"
+  case 461: // code: "code" ":" "integer"
+#line 1620 "dhcp4_parser.yy"
                          {
     ctx.unique("code", ctx.loc2pos(yystack_[2].location));
     ElementPtr code(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("code", code);
 }
-#line 2675 "dhcp4_parser.cc"
+#line 2695 "dhcp4_parser.cc"
     break;
 
-  case 455: // $@71: %empty
-#line 1608 "dhcp4_parser.yy"
+  case 463: // $@71: %empty
+#line 1628 "dhcp4_parser.yy"
                       {
     ctx.unique("type", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2684 "dhcp4_parser.cc"
+#line 2704 "dhcp4_parser.cc"
     break;
 
-  case 456: // option_def_type: "type" $@71 ":" "constant string"
-#line 1611 "dhcp4_parser.yy"
+  case 464: // option_def_type: "type" $@71 ":" "constant string"
+#line 1631 "dhcp4_parser.yy"
                {
     ElementPtr prf(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("type", prf);
     ctx.leave();
 }
-#line 2694 "dhcp4_parser.cc"
+#line 2714 "dhcp4_parser.cc"
     break;
 
-  case 457: // $@72: %empty
-#line 1617 "dhcp4_parser.yy"
+  case 465: // $@72: %empty
+#line 1637 "dhcp4_parser.yy"
                                       {
     ctx.unique("record-types", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2703 "dhcp4_parser.cc"
+#line 2723 "dhcp4_parser.cc"
     break;
 
-  case 458: // option_def_record_types: "record-types" $@72 ":" "constant string"
-#line 1620 "dhcp4_parser.yy"
+  case 466: // option_def_record_types: "record-types" $@72 ":" "constant string"
+#line 1640 "dhcp4_parser.yy"
                {
     ElementPtr rtypes(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("record-types", rtypes);
     ctx.leave();
 }
-#line 2713 "dhcp4_parser.cc"
+#line 2733 "dhcp4_parser.cc"
     break;
 
-  case 459: // $@73: %empty
-#line 1626 "dhcp4_parser.yy"
+  case 467: // $@73: %empty
+#line 1646 "dhcp4_parser.yy"
              {
     ctx.unique("space", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2722 "dhcp4_parser.cc"
+#line 2742 "dhcp4_parser.cc"
     break;
 
-  case 460: // space: "space" $@73 ":" "constant string"
-#line 1629 "dhcp4_parser.yy"
+  case 468: // space: "space" $@73 ":" "constant string"
+#line 1649 "dhcp4_parser.yy"
                {
     ElementPtr space(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("space", space);
     ctx.leave();
 }
-#line 2732 "dhcp4_parser.cc"
+#line 2752 "dhcp4_parser.cc"
     break;
 
-  case 462: // $@74: %empty
-#line 1637 "dhcp4_parser.yy"
+  case 470: // $@74: %empty
+#line 1657 "dhcp4_parser.yy"
                                     {
     ctx.unique("encapsulate", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2741 "dhcp4_parser.cc"
+#line 2761 "dhcp4_parser.cc"
     break;
 
-  case 463: // option_def_encapsulate: "encapsulate" $@74 ":" "constant string"
-#line 1640 "dhcp4_parser.yy"
+  case 471: // option_def_encapsulate: "encapsulate" $@74 ":" "constant string"
+#line 1660 "dhcp4_parser.yy"
                {
     ElementPtr encap(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("encapsulate", encap);
     ctx.leave();
 }
-#line 2751 "dhcp4_parser.cc"
+#line 2771 "dhcp4_parser.cc"
     break;
 
-  case 464: // option_def_array: "array" ":" "boolean"
-#line 1646 "dhcp4_parser.yy"
+  case 472: // option_def_array: "array" ":" "boolean"
+#line 1666 "dhcp4_parser.yy"
                                       {
     ctx.unique("array", ctx.loc2pos(yystack_[2].location));
     ElementPtr array(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("array", array);
 }
-#line 2761 "dhcp4_parser.cc"
+#line 2781 "dhcp4_parser.cc"
     break;
 
-  case 465: // $@75: %empty
-#line 1656 "dhcp4_parser.yy"
+  case 473: // $@75: %empty
+#line 1676 "dhcp4_parser.yy"
                               {
     ctx.unique("option-data", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -2769,97 +2789,97 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(l);
     ctx.enter(ctx.OPTION_DATA);
 }
-#line 2773 "dhcp4_parser.cc"
+#line 2793 "dhcp4_parser.cc"
     break;
 
-  case 466: // option_data_list: "option-data" $@75 ":" "[" option_data_list_content "]"
-#line 1662 "dhcp4_parser.yy"
+  case 474: // option_data_list: "option-data" $@75 ":" "[" option_data_list_content "]"
+#line 1682 "dhcp4_parser.yy"
                                                                  {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2782 "dhcp4_parser.cc"
+#line 2802 "dhcp4_parser.cc"
     break;
 
-  case 471: // $@76: %empty
-#line 1681 "dhcp4_parser.yy"
+  case 479: // $@76: %empty
+#line 1701 "dhcp4_parser.yy"
                                   {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2792 "dhcp4_parser.cc"
+#line 2812 "dhcp4_parser.cc"
     break;
 
-  case 472: // option_data_entry: "{" $@76 option_data_params "}"
-#line 1685 "dhcp4_parser.yy"
+  case 480: // option_data_entry: "{" $@76 option_data_params "}"
+#line 1705 "dhcp4_parser.yy"
                                     {
     /// @todo: the code or name parameters are required.
     ctx.stack_.pop_back();
 }
-#line 2801 "dhcp4_parser.cc"
+#line 2821 "dhcp4_parser.cc"
     break;
 
-  case 473: // $@77: %empty
-#line 1693 "dhcp4_parser.yy"
+  case 481: // $@77: %empty
+#line 1713 "dhcp4_parser.yy"
                                 {
     // Parse the option-data list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2811 "dhcp4_parser.cc"
+#line 2831 "dhcp4_parser.cc"
     break;
 
-  case 474: // sub_option_data: "{" $@77 option_data_params "}"
-#line 1697 "dhcp4_parser.yy"
+  case 482: // sub_option_data: "{" $@77 option_data_params "}"
+#line 1717 "dhcp4_parser.yy"
                                     {
     /// @todo: the code or name parameters are required.
     // parsing completed
 }
-#line 2820 "dhcp4_parser.cc"
+#line 2840 "dhcp4_parser.cc"
     break;
 
-  case 489: // $@78: %empty
-#line 1730 "dhcp4_parser.yy"
+  case 497: // $@78: %empty
+#line 1750 "dhcp4_parser.yy"
                        {
     ctx.unique("data", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2829 "dhcp4_parser.cc"
+#line 2849 "dhcp4_parser.cc"
     break;
 
-  case 490: // option_data_data: "data" $@78 ":" "constant string"
-#line 1733 "dhcp4_parser.yy"
+  case 498: // option_data_data: "data" $@78 ":" "constant string"
+#line 1753 "dhcp4_parser.yy"
                {
     ElementPtr data(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("data", data);
     ctx.leave();
 }
-#line 2839 "dhcp4_parser.cc"
+#line 2859 "dhcp4_parser.cc"
     break;
 
-  case 493: // option_data_csv_format: "csv-format" ":" "boolean"
-#line 1743 "dhcp4_parser.yy"
+  case 501: // option_data_csv_format: "csv-format" ":" "boolean"
+#line 1763 "dhcp4_parser.yy"
                                                  {
     ctx.unique("csv-format", ctx.loc2pos(yystack_[2].location));
     ElementPtr space(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("csv-format", space);
 }
-#line 2849 "dhcp4_parser.cc"
+#line 2869 "dhcp4_parser.cc"
     break;
 
-  case 494: // option_data_always_send: "always-send" ":" "boolean"
-#line 1749 "dhcp4_parser.yy"
+  case 502: // option_data_always_send: "always-send" ":" "boolean"
+#line 1769 "dhcp4_parser.yy"
                                                    {
     ctx.unique("always-send", ctx.loc2pos(yystack_[2].location));
     ElementPtr persist(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("always-send", persist);
 }
-#line 2859 "dhcp4_parser.cc"
+#line 2879 "dhcp4_parser.cc"
     break;
 
-  case 495: // $@79: %empty
-#line 1758 "dhcp4_parser.yy"
+  case 503: // $@79: %empty
+#line 1778 "dhcp4_parser.yy"
                   {
     ctx.unique("pools", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -2867,87 +2887,87 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(l);
     ctx.enter(ctx.POOLS);
 }
-#line 2871 "dhcp4_parser.cc"
+#line 2891 "dhcp4_parser.cc"
     break;
 
-  case 496: // pools_list: "pools" $@79 ":" "[" pools_list_content "]"
-#line 1764 "dhcp4_parser.yy"
+  case 504: // pools_list: "pools" $@79 ":" "[" pools_list_content "]"
+#line 1784 "dhcp4_parser.yy"
                                                            {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2880 "dhcp4_parser.cc"
+#line 2900 "dhcp4_parser.cc"
     break;
 
-  case 501: // $@80: %empty
-#line 1779 "dhcp4_parser.yy"
+  case 509: // $@80: %empty
+#line 1799 "dhcp4_parser.yy"
                                 {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2890 "dhcp4_parser.cc"
+#line 2910 "dhcp4_parser.cc"
     break;
 
-  case 502: // pool_list_entry: "{" $@80 pool_params "}"
-#line 1783 "dhcp4_parser.yy"
+  case 510: // pool_list_entry: "{" $@80 pool_params "}"
+#line 1803 "dhcp4_parser.yy"
                              {
     // The pool parameter is required.
     ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 2900 "dhcp4_parser.cc"
+#line 2920 "dhcp4_parser.cc"
     break;
 
-  case 503: // $@81: %empty
-#line 1789 "dhcp4_parser.yy"
+  case 511: // $@81: %empty
+#line 1809 "dhcp4_parser.yy"
                           {
     // Parse the pool list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2910 "dhcp4_parser.cc"
+#line 2930 "dhcp4_parser.cc"
     break;
 
-  case 504: // sub_pool4: "{" $@81 pool_params "}"
-#line 1793 "dhcp4_parser.yy"
+  case 512: // sub_pool4: "{" $@81 pool_params "}"
+#line 1813 "dhcp4_parser.yy"
                              {
     // The pool parameter is required.
     ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 2920 "dhcp4_parser.cc"
+#line 2940 "dhcp4_parser.cc"
     break;
 
-  case 514: // $@82: %empty
-#line 1812 "dhcp4_parser.yy"
+  case 522: // $@82: %empty
+#line 1832 "dhcp4_parser.yy"
                  {
     ctx.unique("pool", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2929 "dhcp4_parser.cc"
+#line 2949 "dhcp4_parser.cc"
     break;
 
-  case 515: // pool_entry: "pool" $@82 ":" "constant string"
-#line 1815 "dhcp4_parser.yy"
+  case 523: // pool_entry: "pool" $@82 ":" "constant string"
+#line 1835 "dhcp4_parser.yy"
                {
     ElementPtr pool(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("pool", pool);
     ctx.leave();
 }
-#line 2939 "dhcp4_parser.cc"
+#line 2959 "dhcp4_parser.cc"
     break;
 
-  case 516: // $@83: %empty
-#line 1821 "dhcp4_parser.yy"
+  case 524: // $@83: %empty
+#line 1841 "dhcp4_parser.yy"
                            {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2947 "dhcp4_parser.cc"
+#line 2967 "dhcp4_parser.cc"
     break;
 
-  case 517: // user_context: "user-context" $@83 ":" map_value
-#line 1823 "dhcp4_parser.yy"
+  case 525: // user_context: "user-context" $@83 ":" map_value
+#line 1843 "dhcp4_parser.yy"
                   {
     ElementPtr parent = ctx.stack_.back();
     ElementPtr user_context = yystack_[0].value.as < ElementPtr > ();
@@ -2970,19 +2990,19 @@ namespace isc { namespace dhcp {
     parent->set("user-context", user_context);
     ctx.leave();
 }
-#line 2974 "dhcp4_parser.cc"
+#line 2994 "dhcp4_parser.cc"
     break;
 
-  case 518: // $@84: %empty
-#line 1846 "dhcp4_parser.yy"
+  case 526: // $@84: %empty
+#line 1866 "dhcp4_parser.yy"
                  {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2982 "dhcp4_parser.cc"
+#line 3002 "dhcp4_parser.cc"
     break;
 
-  case 519: // comment: "comment" $@84 ":" "constant string"
-#line 1848 "dhcp4_parser.yy"
+  case 527: // comment: "comment" $@84 ":" "constant string"
+#line 1868 "dhcp4_parser.yy"
                {
     ElementPtr parent = ctx.stack_.back();
     ElementPtr user_context(new MapElement(ctx.loc2pos(yystack_[3].location)));
@@ -3007,11 +3027,11 @@ namespace isc { namespace dhcp {
     parent->set("user-context", user_context);
     ctx.leave();
 }
-#line 3011 "dhcp4_parser.cc"
+#line 3031 "dhcp4_parser.cc"
     break;
 
-  case 520: // $@85: %empty
-#line 1876 "dhcp4_parser.yy"
+  case 528: // $@85: %empty
+#line 1896 "dhcp4_parser.yy"
                            {
     ctx.unique("reservations", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -3019,134 +3039,134 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(l);
     ctx.enter(ctx.RESERVATIONS);
 }
-#line 3023 "dhcp4_parser.cc"
+#line 3043 "dhcp4_parser.cc"
     break;
 
-  case 521: // reservations: "reservations" $@85 ":" "[" reservations_list "]"
-#line 1882 "dhcp4_parser.yy"
+  case 529: // reservations: "reservations" $@85 ":" "[" reservations_list "]"
+#line 1902 "dhcp4_parser.yy"
                                                           {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3032 "dhcp4_parser.cc"
+#line 3052 "dhcp4_parser.cc"
     break;
 
-  case 526: // $@86: %empty
-#line 1895 "dhcp4_parser.yy"
+  case 534: // $@86: %empty
+#line 1915 "dhcp4_parser.yy"
                             {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 3042 "dhcp4_parser.cc"
+#line 3062 "dhcp4_parser.cc"
     break;
 
-  case 527: // reservation: "{" $@86 reservation_params "}"
-#line 1899 "dhcp4_parser.yy"
+  case 535: // reservation: "{" $@86 reservation_params "}"
+#line 1919 "dhcp4_parser.yy"
                                     {
     /// @todo: an identifier parameter is required.
     ctx.stack_.pop_back();
 }
-#line 3051 "dhcp4_parser.cc"
+#line 3071 "dhcp4_parser.cc"
     break;
 
-  case 528: // $@87: %empty
-#line 1904 "dhcp4_parser.yy"
+  case 536: // $@87: %empty
+#line 1924 "dhcp4_parser.yy"
                                 {
     // Parse the reservations list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 3061 "dhcp4_parser.cc"
+#line 3081 "dhcp4_parser.cc"
     break;
 
-  case 529: // sub_reservation: "{" $@87 reservation_params "}"
-#line 1908 "dhcp4_parser.yy"
+  case 537: // sub_reservation: "{" $@87 reservation_params "}"
+#line 1928 "dhcp4_parser.yy"
                                     {
     /// @todo: an identifier parameter is required.
     // parsing completed
 }
-#line 3070 "dhcp4_parser.cc"
+#line 3090 "dhcp4_parser.cc"
     break;
 
-  case 549: // $@88: %empty
-#line 1939 "dhcp4_parser.yy"
+  case 557: // $@88: %empty
+#line 1959 "dhcp4_parser.yy"
                          {
     ctx.unique("next-server", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3079 "dhcp4_parser.cc"
+#line 3099 "dhcp4_parser.cc"
     break;
 
-  case 550: // next_server: "next-server" $@88 ":" "constant string"
-#line 1942 "dhcp4_parser.yy"
+  case 558: // next_server: "next-server" $@88 ":" "constant string"
+#line 1962 "dhcp4_parser.yy"
                {
     ElementPtr next_server(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("next-server", next_server);
     ctx.leave();
 }
-#line 3089 "dhcp4_parser.cc"
+#line 3109 "dhcp4_parser.cc"
     break;
 
-  case 551: // $@89: %empty
-#line 1948 "dhcp4_parser.yy"
+  case 559: // $@89: %empty
+#line 1968 "dhcp4_parser.yy"
                                  {
     ctx.unique("server-hostname", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3098 "dhcp4_parser.cc"
+#line 3118 "dhcp4_parser.cc"
     break;
 
-  case 552: // server_hostname: "server-hostname" $@89 ":" "constant string"
-#line 1951 "dhcp4_parser.yy"
+  case 560: // server_hostname: "server-hostname" $@89 ":" "constant string"
+#line 1971 "dhcp4_parser.yy"
                {
     ElementPtr srv(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("server-hostname", srv);
     ctx.leave();
 }
-#line 3108 "dhcp4_parser.cc"
+#line 3128 "dhcp4_parser.cc"
     break;
 
-  case 553: // $@90: %empty
-#line 1957 "dhcp4_parser.yy"
+  case 561: // $@90: %empty
+#line 1977 "dhcp4_parser.yy"
                                {
     ctx.unique("boot-file-name", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3117 "dhcp4_parser.cc"
+#line 3137 "dhcp4_parser.cc"
     break;
 
-  case 554: // boot_file_name: "boot-file-name" $@90 ":" "constant string"
-#line 1960 "dhcp4_parser.yy"
+  case 562: // boot_file_name: "boot-file-name" $@90 ":" "constant string"
+#line 1980 "dhcp4_parser.yy"
                {
     ElementPtr bootfile(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("boot-file-name", bootfile);
     ctx.leave();
 }
-#line 3127 "dhcp4_parser.cc"
+#line 3147 "dhcp4_parser.cc"
     break;
 
-  case 555: // $@91: %empty
-#line 1966 "dhcp4_parser.yy"
+  case 563: // $@91: %empty
+#line 1986 "dhcp4_parser.yy"
                        {
     ctx.unique("ip-address", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3136 "dhcp4_parser.cc"
+#line 3156 "dhcp4_parser.cc"
     break;
 
-  case 556: // ip_address: "ip-address" $@91 ":" "constant string"
-#line 1969 "dhcp4_parser.yy"
+  case 564: // ip_address: "ip-address" $@91 ":" "constant string"
+#line 1989 "dhcp4_parser.yy"
                {
     ElementPtr addr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ip-address", addr);
     ctx.leave();
 }
-#line 3146 "dhcp4_parser.cc"
+#line 3166 "dhcp4_parser.cc"
     break;
 
-  case 557: // $@92: %empty
-#line 1975 "dhcp4_parser.yy"
+  case 565: // $@92: %empty
+#line 1995 "dhcp4_parser.yy"
                            {
     ctx.unique("ip-addresses", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -3154,134 +3174,134 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(l);
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3158 "dhcp4_parser.cc"
+#line 3178 "dhcp4_parser.cc"
     break;
 
-  case 558: // ip_addresses: "ip-addresses" $@92 ":" list_strings
-#line 1981 "dhcp4_parser.yy"
+  case 566: // ip_addresses: "ip-addresses" $@92 ":" list_strings
+#line 2001 "dhcp4_parser.yy"
                      {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3167 "dhcp4_parser.cc"
+#line 3187 "dhcp4_parser.cc"
     break;
 
-  case 559: // $@93: %empty
-#line 1986 "dhcp4_parser.yy"
+  case 567: // $@93: %empty
+#line 2006 "dhcp4_parser.yy"
            {
     ctx.unique("duid", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3176 "dhcp4_parser.cc"
+#line 3196 "dhcp4_parser.cc"
     break;
 
-  case 560: // duid: "duid" $@93 ":" "constant string"
-#line 1989 "dhcp4_parser.yy"
+  case 568: // duid: "duid" $@93 ":" "constant string"
+#line 2009 "dhcp4_parser.yy"
                {
     ElementPtr d(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("duid", d);
     ctx.leave();
 }
-#line 3186 "dhcp4_parser.cc"
+#line 3206 "dhcp4_parser.cc"
     break;
 
-  case 561: // $@94: %empty
-#line 1995 "dhcp4_parser.yy"
+  case 569: // $@94: %empty
+#line 2015 "dhcp4_parser.yy"
                        {
     ctx.unique("hw-address", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3195 "dhcp4_parser.cc"
+#line 3215 "dhcp4_parser.cc"
     break;
 
-  case 562: // hw_address: "hw-address" $@94 ":" "constant string"
-#line 1998 "dhcp4_parser.yy"
+  case 570: // hw_address: "hw-address" $@94 ":" "constant string"
+#line 2018 "dhcp4_parser.yy"
                {
     ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hw-address", hw);
     ctx.leave();
 }
-#line 3205 "dhcp4_parser.cc"
+#line 3225 "dhcp4_parser.cc"
     break;
 
-  case 563: // $@95: %empty
-#line 2004 "dhcp4_parser.yy"
+  case 571: // $@95: %empty
+#line 2024 "dhcp4_parser.yy"
                            {
     ctx.unique("client-id", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3214 "dhcp4_parser.cc"
+#line 3234 "dhcp4_parser.cc"
     break;
 
-  case 564: // client_id_value: "client-id" $@95 ":" "constant string"
-#line 2007 "dhcp4_parser.yy"
+  case 572: // client_id_value: "client-id" $@95 ":" "constant string"
+#line 2027 "dhcp4_parser.yy"
                {
     ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("client-id", hw);
     ctx.leave();
 }
-#line 3224 "dhcp4_parser.cc"
+#line 3244 "dhcp4_parser.cc"
     break;
 
-  case 565: // $@96: %empty
-#line 2013 "dhcp4_parser.yy"
+  case 573: // $@96: %empty
+#line 2033 "dhcp4_parser.yy"
                              {
     ctx.unique("circuit-id", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3233 "dhcp4_parser.cc"
+#line 3253 "dhcp4_parser.cc"
     break;
 
-  case 566: // circuit_id_value: "circuit-id" $@96 ":" "constant string"
-#line 2016 "dhcp4_parser.yy"
+  case 574: // circuit_id_value: "circuit-id" $@96 ":" "constant string"
+#line 2036 "dhcp4_parser.yy"
                {
     ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("circuit-id", hw);
     ctx.leave();
 }
-#line 3243 "dhcp4_parser.cc"
+#line 3263 "dhcp4_parser.cc"
     break;
 
-  case 567: // $@97: %empty
-#line 2022 "dhcp4_parser.yy"
+  case 575: // $@97: %empty
+#line 2042 "dhcp4_parser.yy"
                        {
     ctx.unique("flex-id", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3252 "dhcp4_parser.cc"
+#line 3272 "dhcp4_parser.cc"
     break;
 
-  case 568: // flex_id_value: "flex-id" $@97 ":" "constant string"
-#line 2025 "dhcp4_parser.yy"
+  case 576: // flex_id_value: "flex-id" $@97 ":" "constant string"
+#line 2045 "dhcp4_parser.yy"
                {
     ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("flex-id", hw);
     ctx.leave();
 }
-#line 3262 "dhcp4_parser.cc"
+#line 3282 "dhcp4_parser.cc"
     break;
 
-  case 569: // $@98: %empty
-#line 2031 "dhcp4_parser.yy"
+  case 577: // $@98: %empty
+#line 2051 "dhcp4_parser.yy"
                    {
     ctx.unique("hostname", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3271 "dhcp4_parser.cc"
+#line 3291 "dhcp4_parser.cc"
     break;
 
-  case 570: // hostname: "hostname" $@98 ":" "constant string"
-#line 2034 "dhcp4_parser.yy"
+  case 578: // hostname: "hostname" $@98 ":" "constant string"
+#line 2054 "dhcp4_parser.yy"
                {
     ElementPtr host(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hostname", host);
     ctx.leave();
 }
-#line 3281 "dhcp4_parser.cc"
+#line 3301 "dhcp4_parser.cc"
     break;
 
-  case 571: // $@99: %empty
-#line 2040 "dhcp4_parser.yy"
+  case 579: // $@99: %empty
+#line 2060 "dhcp4_parser.yy"
                                            {
     ctx.unique("client-classes", ctx.loc2pos(yystack_[0].location));
     ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -3289,20 +3309,20 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(c);
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3293 "dhcp4_parser.cc"
+#line 3313 "dhcp4_parser.cc"
     break;
 
-  case 572: // reservation_client_classes: "client-classes" $@99 ":" list_strings
-#line 2046 "dhcp4_parser.yy"
+  case 580: // reservation_client_classes: "client-classes" $@99 ":" list_strings
+#line 2066 "dhcp4_parser.yy"
                      {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3302 "dhcp4_parser.cc"
+#line 3322 "dhcp4_parser.cc"
     break;
 
-  case 573: // $@100: %empty
-#line 2054 "dhcp4_parser.yy"
+  case 581: // $@100: %empty
+#line 2074 "dhcp4_parser.yy"
              {
     ctx.unique("relay", ctx.loc2pos(yystack_[0].location));
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -3310,20 +3330,20 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(m);
     ctx.enter(ctx.RELAY);
 }
-#line 3314 "dhcp4_parser.cc"
+#line 3334 "dhcp4_parser.cc"
     break;
 
-  case 574: // relay: "relay" $@100 ":" "{" relay_map "}"
-#line 2060 "dhcp4_parser.yy"
+  case 582: // relay: "relay" $@100 ":" "{" relay_map "}"
+#line 2080 "dhcp4_parser.yy"
                                                 {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3323 "dhcp4_parser.cc"
+#line 3343 "dhcp4_parser.cc"
     break;
 
-  case 577: // $@101: %empty
-#line 2072 "dhcp4_parser.yy"
+  case 585: // $@101: %empty
+#line 2092 "dhcp4_parser.yy"
                                {
     ctx.unique("client-classes", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -3331,79 +3351,79 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(l);
     ctx.enter(ctx.CLIENT_CLASSES);
 }
-#line 3335 "dhcp4_parser.cc"
+#line 3355 "dhcp4_parser.cc"
     break;
 
-  case 578: // client_classes: "client-classes" $@101 ":" "[" client_classes_list "]"
-#line 2078 "dhcp4_parser.yy"
+  case 586: // client_classes: "client-classes" $@101 ":" "[" client_classes_list "]"
+#line 2098 "dhcp4_parser.yy"
                                                             {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3344 "dhcp4_parser.cc"
+#line 3364 "dhcp4_parser.cc"
     break;
 
-  case 581: // $@102: %empty
-#line 2087 "dhcp4_parser.yy"
+  case 589: // $@102: %empty
+#line 2107 "dhcp4_parser.yy"
                                    {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 3354 "dhcp4_parser.cc"
+#line 3374 "dhcp4_parser.cc"
     break;
 
-  case 582: // client_class_entry: "{" $@102 client_class_params "}"
-#line 2091 "dhcp4_parser.yy"
+  case 590: // client_class_entry: "{" $@102 client_class_params "}"
+#line 2111 "dhcp4_parser.yy"
                                      {
     // The name client class parameter is required.
     ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 3364 "dhcp4_parser.cc"
+#line 3384 "dhcp4_parser.cc"
     break;
 
-  case 599: // $@103: %empty
-#line 2120 "dhcp4_parser.yy"
+  case 607: // $@103: %empty
+#line 2140 "dhcp4_parser.yy"
                         {
     ctx.unique("test", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3373 "dhcp4_parser.cc"
+#line 3393 "dhcp4_parser.cc"
     break;
 
-  case 600: // client_class_test: "test" $@103 ":" "constant string"
-#line 2123 "dhcp4_parser.yy"
+  case 608: // client_class_test: "test" $@103 ":" "constant string"
+#line 2143 "dhcp4_parser.yy"
                {
     ElementPtr test(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("test", test);
     ctx.leave();
 }
-#line 3383 "dhcp4_parser.cc"
+#line 3403 "dhcp4_parser.cc"
     break;
 
-  case 601: // only_if_required: "only-if-required" ":" "boolean"
-#line 2129 "dhcp4_parser.yy"
+  case 609: // only_if_required: "only-if-required" ":" "boolean"
+#line 2149 "dhcp4_parser.yy"
                                                  {
     ctx.unique("only-if-required", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("only-if-required", b);
 }
-#line 3393 "dhcp4_parser.cc"
+#line 3413 "dhcp4_parser.cc"
     break;
 
-  case 602: // dhcp4o6_port: "dhcp4o6-port" ":" "integer"
-#line 2137 "dhcp4_parser.yy"
+  case 610: // dhcp4o6_port: "dhcp4o6-port" ":" "integer"
+#line 2157 "dhcp4_parser.yy"
                                          {
     ctx.unique("dhcp4o6-port", ctx.loc2pos(yystack_[2].location));
     ElementPtr time(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("dhcp4o6-port", time);
 }
-#line 3403 "dhcp4_parser.cc"
+#line 3423 "dhcp4_parser.cc"
     break;
 
-  case 603: // $@104: %empty
-#line 2145 "dhcp4_parser.yy"
+  case 611: // $@104: %empty
+#line 2165 "dhcp4_parser.yy"
                                {
     ctx.unique("control-socket", ctx.loc2pos(yystack_[0].location));
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -3411,58 +3431,58 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(m);
     ctx.enter(ctx.CONTROL_SOCKET);
 }
-#line 3415 "dhcp4_parser.cc"
+#line 3435 "dhcp4_parser.cc"
     break;
 
-  case 604: // control_socket: "control-socket" $@104 ":" "{" control_socket_params "}"
-#line 2151 "dhcp4_parser.yy"
+  case 612: // control_socket: "control-socket" $@104 ":" "{" control_socket_params "}"
+#line 2171 "dhcp4_parser.yy"
                                                             {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3424 "dhcp4_parser.cc"
+#line 3444 "dhcp4_parser.cc"
     break;
 
-  case 612: // $@105: %empty
-#line 2167 "dhcp4_parser.yy"
+  case 620: // $@105: %empty
+#line 2187 "dhcp4_parser.yy"
                                  {
     ctx.unique("socket-type", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3433 "dhcp4_parser.cc"
+#line 3453 "dhcp4_parser.cc"
     break;
 
-  case 613: // control_socket_type: "socket-type" $@105 ":" "constant string"
-#line 2170 "dhcp4_parser.yy"
+  case 621: // control_socket_type: "socket-type" $@105 ":" "constant string"
+#line 2190 "dhcp4_parser.yy"
                {
     ElementPtr stype(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("socket-type", stype);
     ctx.leave();
 }
-#line 3443 "dhcp4_parser.cc"
+#line 3463 "dhcp4_parser.cc"
     break;
 
-  case 614: // $@106: %empty
-#line 2176 "dhcp4_parser.yy"
+  case 622: // $@106: %empty
+#line 2196 "dhcp4_parser.yy"
                                  {
     ctx.unique("socket-name", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3452 "dhcp4_parser.cc"
+#line 3472 "dhcp4_parser.cc"
     break;
 
-  case 615: // control_socket_name: "socket-name" $@106 ":" "constant string"
-#line 2179 "dhcp4_parser.yy"
+  case 623: // control_socket_name: "socket-name" $@106 ":" "constant string"
+#line 2199 "dhcp4_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 3462 "dhcp4_parser.cc"
+#line 3482 "dhcp4_parser.cc"
     break;
 
-  case 616: // $@107: %empty
-#line 2188 "dhcp4_parser.yy"
+  case 624: // $@107: %empty
+#line 2208 "dhcp4_parser.yy"
                                        {
     ctx.unique("dhcp-queue-control", ctx.loc2pos(yystack_[0].location));
     ElementPtr qc(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -3470,79 +3490,79 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(qc);
     ctx.enter(ctx.DHCP_QUEUE_CONTROL);
 }
-#line 3474 "dhcp4_parser.cc"
+#line 3494 "dhcp4_parser.cc"
     break;
 
-  case 617: // dhcp_queue_control: "dhcp-queue-control" $@107 ":" "{" queue_control_params "}"
-#line 2194 "dhcp4_parser.yy"
+  case 625: // dhcp_queue_control: "dhcp-queue-control" $@107 ":" "{" queue_control_params "}"
+#line 2214 "dhcp4_parser.yy"
                                                            {
     // The enable queue parameter is required.
     ctx.require("enable-queue", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3485 "dhcp4_parser.cc"
+#line 3505 "dhcp4_parser.cc"
     break;
 
-  case 626: // enable_queue: "enable-queue" ":" "boolean"
-#line 2213 "dhcp4_parser.yy"
+  case 634: // enable_queue: "enable-queue" ":" "boolean"
+#line 2233 "dhcp4_parser.yy"
                                          {
     ctx.unique("enable-queue", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("enable-queue", b);
 }
-#line 3495 "dhcp4_parser.cc"
+#line 3515 "dhcp4_parser.cc"
     break;
 
-  case 627: // $@108: %empty
-#line 2219 "dhcp4_parser.yy"
+  case 635: // $@108: %empty
+#line 2239 "dhcp4_parser.yy"
                        {
     ctx.unique("queue-type", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3504 "dhcp4_parser.cc"
+#line 3524 "dhcp4_parser.cc"
     break;
 
-  case 628: // queue_type: "queue-type" $@108 ":" "constant string"
-#line 2222 "dhcp4_parser.yy"
+  case 636: // queue_type: "queue-type" $@108 ":" "constant string"
+#line 2242 "dhcp4_parser.yy"
                {
     ElementPtr qt(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("queue-type", qt);
     ctx.leave();
 }
-#line 3514 "dhcp4_parser.cc"
+#line 3534 "dhcp4_parser.cc"
     break;
 
-  case 629: // capacity: "capacity" ":" "integer"
-#line 2228 "dhcp4_parser.yy"
+  case 637: // capacity: "capacity" ":" "integer"
+#line 2248 "dhcp4_parser.yy"
                                  {
     ctx.unique("capacity", ctx.loc2pos(yystack_[2].location));
     ElementPtr c(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("capacity", c);
 }
-#line 3524 "dhcp4_parser.cc"
+#line 3544 "dhcp4_parser.cc"
     break;
 
-  case 630: // $@109: %empty
-#line 2234 "dhcp4_parser.yy"
+  case 638: // $@109: %empty
+#line 2254 "dhcp4_parser.yy"
                             {
     ctx.unique(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3533 "dhcp4_parser.cc"
+#line 3553 "dhcp4_parser.cc"
     break;
 
-  case 631: // arbitrary_map_entry: "constant string" $@109 ":" value
-#line 2237 "dhcp4_parser.yy"
+  case 639: // arbitrary_map_entry: "constant string" $@109 ":" value
+#line 2257 "dhcp4_parser.yy"
               {
     ctx.stack_.back()->set(yystack_[3].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 3542 "dhcp4_parser.cc"
+#line 3562 "dhcp4_parser.cc"
     break;
 
-  case 632: // $@110: %empty
-#line 2244 "dhcp4_parser.yy"
+  case 640: // $@110: %empty
+#line 2264 "dhcp4_parser.yy"
                      {
     ctx.unique("dhcp-ddns", ctx.loc2pos(yystack_[0].location));
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -3550,283 +3570,283 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(m);
     ctx.enter(ctx.DHCP_DDNS);
 }
-#line 3554 "dhcp4_parser.cc"
+#line 3574 "dhcp4_parser.cc"
     break;
 
-  case 633: // dhcp_ddns: "dhcp-ddns" $@110 ":" "{" dhcp_ddns_params "}"
-#line 2250 "dhcp4_parser.yy"
+  case 641: // dhcp_ddns: "dhcp-ddns" $@110 ":" "{" dhcp_ddns_params "}"
+#line 2270 "dhcp4_parser.yy"
                                                        {
     // The enable updates DHCP DDNS parameter is required.
     ctx.require("enable-updates", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3565 "dhcp4_parser.cc"
+#line 3585 "dhcp4_parser.cc"
     break;
 
-  case 634: // $@111: %empty
-#line 2257 "dhcp4_parser.yy"
+  case 642: // $@111: %empty
+#line 2277 "dhcp4_parser.yy"
                               {
     // Parse the dhcp-ddns map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 3575 "dhcp4_parser.cc"
+#line 3595 "dhcp4_parser.cc"
     break;
 
-  case 635: // sub_dhcp_ddns: "{" $@111 dhcp_ddns_params "}"
-#line 2261 "dhcp4_parser.yy"
+  case 643: // sub_dhcp_ddns: "{" $@111 dhcp_ddns_params "}"
+#line 2281 "dhcp4_parser.yy"
                                   {
     // The enable updates DHCP DDNS parameter is required.
     ctx.require("enable-updates", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 3585 "dhcp4_parser.cc"
+#line 3605 "dhcp4_parser.cc"
     break;
 
-  case 656: // enable_updates: "enable-updates" ":" "boolean"
-#line 2291 "dhcp4_parser.yy"
+  case 664: // enable_updates: "enable-updates" ":" "boolean"
+#line 2311 "dhcp4_parser.yy"
                                              {
     ctx.unique("enable-updates", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("enable-updates", b);
 }
-#line 3595 "dhcp4_parser.cc"
+#line 3615 "dhcp4_parser.cc"
     break;
 
-  case 657: // $@112: %empty
-#line 2297 "dhcp4_parser.yy"
+  case 665: // $@112: %empty
+#line 2317 "dhcp4_parser.yy"
                      {
     ctx.unique("server-ip", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3604 "dhcp4_parser.cc"
+#line 3624 "dhcp4_parser.cc"
     break;
 
-  case 658: // server_ip: "server-ip" $@112 ":" "constant string"
-#line 2300 "dhcp4_parser.yy"
+  case 666: // server_ip: "server-ip" $@112 ":" "constant string"
+#line 2320 "dhcp4_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("server-ip", s);
     ctx.leave();
 }
-#line 3614 "dhcp4_parser.cc"
+#line 3634 "dhcp4_parser.cc"
     break;
 
-  case 659: // server_port: "server-port" ":" "integer"
-#line 2306 "dhcp4_parser.yy"
+  case 667: // server_port: "server-port" ":" "integer"
+#line 2326 "dhcp4_parser.yy"
                                        {
     ctx.unique("server-port", ctx.loc2pos(yystack_[2].location));
     ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("server-port", i);
 }
-#line 3624 "dhcp4_parser.cc"
+#line 3644 "dhcp4_parser.cc"
     break;
 
-  case 660: // $@113: %empty
-#line 2312 "dhcp4_parser.yy"
+  case 668: // $@113: %empty
+#line 2332 "dhcp4_parser.yy"
                      {
     ctx.unique("sender-ip", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3633 "dhcp4_parser.cc"
+#line 3653 "dhcp4_parser.cc"
     break;
 
-  case 661: // sender_ip: "sender-ip" $@113 ":" "constant string"
-#line 2315 "dhcp4_parser.yy"
+  case 669: // sender_ip: "sender-ip" $@113 ":" "constant string"
+#line 2335 "dhcp4_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("sender-ip", s);
     ctx.leave();
 }
-#line 3643 "dhcp4_parser.cc"
+#line 3663 "dhcp4_parser.cc"
     break;
 
-  case 662: // sender_port: "sender-port" ":" "integer"
-#line 2321 "dhcp4_parser.yy"
+  case 670: // sender_port: "sender-port" ":" "integer"
+#line 2341 "dhcp4_parser.yy"
                                        {
     ctx.unique("sender-port", ctx.loc2pos(yystack_[2].location));
     ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("sender-port", i);
 }
-#line 3653 "dhcp4_parser.cc"
+#line 3673 "dhcp4_parser.cc"
     break;
 
-  case 663: // max_queue_size: "max-queue-size" ":" "integer"
-#line 2327 "dhcp4_parser.yy"
+  case 671: // max_queue_size: "max-queue-size" ":" "integer"
+#line 2347 "dhcp4_parser.yy"
                                              {
     ctx.unique("max-queue-size", ctx.loc2pos(yystack_[2].location));
     ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-queue-size", i);
 }
-#line 3663 "dhcp4_parser.cc"
+#line 3683 "dhcp4_parser.cc"
     break;
 
-  case 664: // $@114: %empty
-#line 2333 "dhcp4_parser.yy"
+  case 672: // $@114: %empty
+#line 2353 "dhcp4_parser.yy"
                            {
     ctx.unique("ncr-protocol", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NCR_PROTOCOL);
 }
-#line 3672 "dhcp4_parser.cc"
+#line 3692 "dhcp4_parser.cc"
     break;
 
-  case 665: // ncr_protocol: "ncr-protocol" $@114 ":" ncr_protocol_value
-#line 2336 "dhcp4_parser.yy"
+  case 673: // ncr_protocol: "ncr-protocol" $@114 ":" ncr_protocol_value
+#line 2356 "dhcp4_parser.yy"
                            {
     ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 3681 "dhcp4_parser.cc"
+#line 3701 "dhcp4_parser.cc"
     break;
 
-  case 666: // ncr_protocol_value: "udp"
-#line 2342 "dhcp4_parser.yy"
+  case 674: // ncr_protocol_value: "udp"
+#line 2362 "dhcp4_parser.yy"
         { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
-#line 3687 "dhcp4_parser.cc"
+#line 3707 "dhcp4_parser.cc"
     break;
 
-  case 667: // ncr_protocol_value: "tcp"
-#line 2343 "dhcp4_parser.yy"
+  case 675: // ncr_protocol_value: "tcp"
+#line 2363 "dhcp4_parser.yy"
         { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
-#line 3693 "dhcp4_parser.cc"
+#line 3713 "dhcp4_parser.cc"
     break;
 
-  case 668: // $@115: %empty
-#line 2346 "dhcp4_parser.yy"
+  case 676: // $@115: %empty
+#line 2366 "dhcp4_parser.yy"
                        {
     ctx.unique("ncr-format", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NCR_FORMAT);
 }
-#line 3702 "dhcp4_parser.cc"
+#line 3722 "dhcp4_parser.cc"
     break;
 
-  case 669: // ncr_format: "ncr-format" $@115 ":" "JSON"
-#line 2349 "dhcp4_parser.yy"
+  case 677: // ncr_format: "ncr-format" $@115 ":" "JSON"
+#line 2369 "dhcp4_parser.yy"
              {
     ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ncr-format", json);
     ctx.leave();
 }
-#line 3712 "dhcp4_parser.cc"
+#line 3732 "dhcp4_parser.cc"
     break;
 
-  case 670: // $@116: %empty
-#line 2356 "dhcp4_parser.yy"
+  case 678: // $@116: %empty
+#line 2376 "dhcp4_parser.yy"
                                          {
     ctx.unique("qualifying-suffix", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3721 "dhcp4_parser.cc"
+#line 3741 "dhcp4_parser.cc"
     break;
 
-  case 671: // dep_qualifying_suffix: "qualifying-suffix" $@116 ":" "constant string"
-#line 2359 "dhcp4_parser.yy"
+  case 679: // dep_qualifying_suffix: "qualifying-suffix" $@116 ":" "constant string"
+#line 2379 "dhcp4_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("qualifying-suffix", s);
     ctx.leave();
 }
-#line 3731 "dhcp4_parser.cc"
+#line 3751 "dhcp4_parser.cc"
     break;
 
-  case 672: // dep_override_no_update: "override-no-update" ":" "boolean"
-#line 2366 "dhcp4_parser.yy"
+  case 680: // dep_override_no_update: "override-no-update" ":" "boolean"
+#line 2386 "dhcp4_parser.yy"
                                                          {
     ctx.unique("override-no-update", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("override-no-update", b);
 }
-#line 3741 "dhcp4_parser.cc"
+#line 3761 "dhcp4_parser.cc"
     break;
 
-  case 673: // dep_override_client_update: "override-client-update" ":" "boolean"
-#line 2373 "dhcp4_parser.yy"
+  case 681: // dep_override_client_update: "override-client-update" ":" "boolean"
+#line 2393 "dhcp4_parser.yy"
                                                                  {
     ctx.unique("override-client-update", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("override-client-update", b);
 }
-#line 3751 "dhcp4_parser.cc"
+#line 3771 "dhcp4_parser.cc"
     break;
 
-  case 674: // $@117: %empty
-#line 2380 "dhcp4_parser.yy"
+  case 682: // $@117: %empty
+#line 2400 "dhcp4_parser.yy"
                                              {
     ctx.unique("replace-client-name", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.REPLACE_CLIENT_NAME);
 }
-#line 3760 "dhcp4_parser.cc"
+#line 3780 "dhcp4_parser.cc"
     break;
 
-  case 675: // dep_replace_client_name: "replace-client-name" $@117 ":" ddns_replace_client_name_value
-#line 2383 "dhcp4_parser.yy"
+  case 683: // dep_replace_client_name: "replace-client-name" $@117 ":" ddns_replace_client_name_value
+#line 2403 "dhcp4_parser.yy"
                                        {
     ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 3769 "dhcp4_parser.cc"
+#line 3789 "dhcp4_parser.cc"
     break;
 
-  case 676: // $@118: %empty
-#line 2389 "dhcp4_parser.yy"
+  case 684: // $@118: %empty
+#line 2409 "dhcp4_parser.yy"
                                        {
     ctx.unique("generated-prefix", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3778 "dhcp4_parser.cc"
+#line 3798 "dhcp4_parser.cc"
     break;
 
-  case 677: // dep_generated_prefix: "generated-prefix" $@118 ":" "constant string"
-#line 2392 "dhcp4_parser.yy"
+  case 685: // dep_generated_prefix: "generated-prefix" $@118 ":" "constant string"
+#line 2412 "dhcp4_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("generated-prefix", s);
     ctx.leave();
 }
-#line 3788 "dhcp4_parser.cc"
+#line 3808 "dhcp4_parser.cc"
     break;
 
-  case 678: // $@119: %empty
-#line 2399 "dhcp4_parser.yy"
+  case 686: // $@119: %empty
+#line 2419 "dhcp4_parser.yy"
                                          {
     ctx.unique("hostname-char-set", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3797 "dhcp4_parser.cc"
+#line 3817 "dhcp4_parser.cc"
     break;
 
-  case 679: // dep_hostname_char_set: "hostname-char-set" $@119 ":" "constant string"
-#line 2402 "dhcp4_parser.yy"
+  case 687: // dep_hostname_char_set: "hostname-char-set" $@119 ":" "constant string"
+#line 2422 "dhcp4_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hostname-char-set", s);
     ctx.leave();
 }
-#line 3807 "dhcp4_parser.cc"
+#line 3827 "dhcp4_parser.cc"
     break;
 
-  case 680: // $@120: %empty
-#line 2409 "dhcp4_parser.yy"
+  case 688: // $@120: %empty
+#line 2429 "dhcp4_parser.yy"
                                                          {
     ctx.unique("hostname-char-replacement", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3816 "dhcp4_parser.cc"
+#line 3836 "dhcp4_parser.cc"
     break;
 
-  case 681: // dep_hostname_char_replacement: "hostname-char-replacement" $@120 ":" "constant string"
-#line 2412 "dhcp4_parser.yy"
+  case 689: // dep_hostname_char_replacement: "hostname-char-replacement" $@120 ":" "constant string"
+#line 2432 "dhcp4_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hostname-char-replacement", s);
     ctx.leave();
 }
-#line 3826 "dhcp4_parser.cc"
+#line 3846 "dhcp4_parser.cc"
     break;
 
-  case 682: // $@121: %empty
-#line 2421 "dhcp4_parser.yy"
+  case 690: // $@121: %empty
+#line 2441 "dhcp4_parser.yy"
                                {
     ctx.unique("config-control", ctx.loc2pos(yystack_[0].location));
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -3834,40 +3854,40 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(i);
     ctx.enter(ctx.CONFIG_CONTROL);
 }
-#line 3838 "dhcp4_parser.cc"
+#line 3858 "dhcp4_parser.cc"
     break;
 
-  case 683: // config_control: "config-control" $@121 ":" "{" config_control_params "}"
-#line 2427 "dhcp4_parser.yy"
+  case 691: // config_control: "config-control" $@121 ":" "{" config_control_params "}"
+#line 2447 "dhcp4_parser.yy"
                                                             {
     // No config control params are required
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3848 "dhcp4_parser.cc"
+#line 3868 "dhcp4_parser.cc"
     break;
 
-  case 684: // $@122: %empty
-#line 2433 "dhcp4_parser.yy"
+  case 692: // $@122: %empty
+#line 2453 "dhcp4_parser.yy"
                                    {
     // Parse the config-control map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 3858 "dhcp4_parser.cc"
+#line 3878 "dhcp4_parser.cc"
     break;
 
-  case 685: // sub_config_control: "{" $@122 config_control_params "}"
-#line 2437 "dhcp4_parser.yy"
+  case 693: // sub_config_control: "{" $@122 config_control_params "}"
+#line 2457 "dhcp4_parser.yy"
                                        {
     // No config_control params are required
     // parsing completed
 }
-#line 3867 "dhcp4_parser.cc"
+#line 3887 "dhcp4_parser.cc"
     break;
 
-  case 690: // $@123: %empty
-#line 2452 "dhcp4_parser.yy"
+  case 698: // $@123: %empty
+#line 2472 "dhcp4_parser.yy"
                                    {
     ctx.unique("config-databases", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -3875,30 +3895,30 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(l);
     ctx.enter(ctx.CONFIG_DATABASE);
 }
-#line 3879 "dhcp4_parser.cc"
+#line 3899 "dhcp4_parser.cc"
     break;
 
-  case 691: // config_databases: "config-databases" $@123 ":" "[" database_list "]"
-#line 2458 "dhcp4_parser.yy"
+  case 699: // config_databases: "config-databases" $@123 ":" "[" database_list "]"
+#line 2478 "dhcp4_parser.yy"
                                                       {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3888 "dhcp4_parser.cc"
+#line 3908 "dhcp4_parser.cc"
     break;
 
-  case 692: // config_fetch_wait_time: "config-fetch-wait-time" ":" "integer"
-#line 2463 "dhcp4_parser.yy"
+  case 700: // config_fetch_wait_time: "config-fetch-wait-time" ":" "integer"
+#line 2483 "dhcp4_parser.yy"
                                                              {
     ctx.unique("config-fetch-wait-time", ctx.loc2pos(yystack_[2].location));
     ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("config-fetch-wait-time", value);
 }
-#line 3898 "dhcp4_parser.cc"
+#line 3918 "dhcp4_parser.cc"
     break;
 
-  case 693: // $@124: %empty
-#line 2471 "dhcp4_parser.yy"
+  case 701: // $@124: %empty
+#line 2491 "dhcp4_parser.yy"
                  {
     ctx.unique("loggers", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -3906,67 +3926,67 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(l);
     ctx.enter(ctx.LOGGERS);
 }
-#line 3910 "dhcp4_parser.cc"
+#line 3930 "dhcp4_parser.cc"
     break;
 
-  case 694: // loggers: "loggers" $@124 ":" "[" loggers_entries "]"
-#line 2477 "dhcp4_parser.yy"
+  case 702: // loggers: "loggers" $@124 ":" "[" loggers_entries "]"
+#line 2497 "dhcp4_parser.yy"
                                                          {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3919 "dhcp4_parser.cc"
+#line 3939 "dhcp4_parser.cc"
     break;
 
-  case 697: // $@125: %empty
-#line 2489 "dhcp4_parser.yy"
+  case 705: // $@125: %empty
+#line 2509 "dhcp4_parser.yy"
                              {
     ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(l);
     ctx.stack_.push_back(l);
 }
-#line 3929 "dhcp4_parser.cc"
+#line 3949 "dhcp4_parser.cc"
     break;
 
-  case 698: // logger_entry: "{" $@125 logger_params "}"
-#line 2493 "dhcp4_parser.yy"
+  case 706: // logger_entry: "{" $@125 logger_params "}"
+#line 2513 "dhcp4_parser.yy"
                                {
     ctx.stack_.pop_back();
 }
-#line 3937 "dhcp4_parser.cc"
+#line 3957 "dhcp4_parser.cc"
     break;
 
-  case 708: // debuglevel: "debuglevel" ":" "integer"
-#line 2510 "dhcp4_parser.yy"
+  case 716: // debuglevel: "debuglevel" ":" "integer"
+#line 2530 "dhcp4_parser.yy"
                                      {
     ctx.unique("debuglevel", ctx.loc2pos(yystack_[2].location));
     ElementPtr dl(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("debuglevel", dl);
 }
-#line 3947 "dhcp4_parser.cc"
+#line 3967 "dhcp4_parser.cc"
     break;
 
-  case 709: // $@126: %empty
-#line 2516 "dhcp4_parser.yy"
+  case 717: // $@126: %empty
+#line 2536 "dhcp4_parser.yy"
                    {
     ctx.unique("severity", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3956 "dhcp4_parser.cc"
+#line 3976 "dhcp4_parser.cc"
     break;
 
-  case 710: // severity: "severity" $@126 ":" "constant string"
-#line 2519 "dhcp4_parser.yy"
+  case 718: // severity: "severity" $@126 ":" "constant string"
+#line 2539 "dhcp4_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 3966 "dhcp4_parser.cc"
+#line 3986 "dhcp4_parser.cc"
     break;
 
-  case 711: // $@127: %empty
-#line 2525 "dhcp4_parser.yy"
+  case 719: // $@127: %empty
+#line 2545 "dhcp4_parser.yy"
                                     {
     ctx.unique("output_options", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -3974,106 +3994,106 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(l);
     ctx.enter(ctx.OUTPUT_OPTIONS);
 }
-#line 3978 "dhcp4_parser.cc"
+#line 3998 "dhcp4_parser.cc"
     break;
 
-  case 712: // output_options_list: "output_options" $@127 ":" "[" output_options_list_content "]"
-#line 2531 "dhcp4_parser.yy"
+  case 720: // output_options_list: "output_options" $@127 ":" "[" output_options_list_content "]"
+#line 2551 "dhcp4_parser.yy"
                                                                     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3987 "dhcp4_parser.cc"
+#line 4007 "dhcp4_parser.cc"
     break;
 
-  case 715: // $@128: %empty
-#line 2540 "dhcp4_parser.yy"
+  case 723: // $@128: %empty
+#line 2560 "dhcp4_parser.yy"
                              {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 3997 "dhcp4_parser.cc"
+#line 4017 "dhcp4_parser.cc"
     break;
 
-  case 716: // output_entry: "{" $@128 output_params_list "}"
-#line 2544 "dhcp4_parser.yy"
+  case 724: // output_entry: "{" $@128 output_params_list "}"
+#line 2564 "dhcp4_parser.yy"
                                     {
     ctx.stack_.pop_back();
 }
-#line 4005 "dhcp4_parser.cc"
+#line 4025 "dhcp4_parser.cc"
     break;
 
-  case 724: // $@129: %empty
-#line 2559 "dhcp4_parser.yy"
+  case 732: // $@129: %empty
+#line 2579 "dhcp4_parser.yy"
                {
     ctx.unique("output", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 4014 "dhcp4_parser.cc"
+#line 4034 "dhcp4_parser.cc"
     break;
 
-  case 725: // output: "output" $@129 ":" "constant string"
-#line 2562 "dhcp4_parser.yy"
+  case 733: // output: "output" $@129 ":" "constant string"
+#line 2582 "dhcp4_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 4024 "dhcp4_parser.cc"
+#line 4044 "dhcp4_parser.cc"
     break;
 
-  case 726: // flush: "flush" ":" "boolean"
-#line 2568 "dhcp4_parser.yy"
+  case 734: // flush: "flush" ":" "boolean"
+#line 2588 "dhcp4_parser.yy"
                            {
     ctx.unique("flush", ctx.loc2pos(yystack_[2].location));
     ElementPtr flush(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("flush", flush);
 }
-#line 4034 "dhcp4_parser.cc"
+#line 4054 "dhcp4_parser.cc"
     break;
 
-  case 727: // maxsize: "maxsize" ":" "integer"
-#line 2574 "dhcp4_parser.yy"
+  case 735: // maxsize: "maxsize" ":" "integer"
+#line 2594 "dhcp4_parser.yy"
                                {
     ctx.unique("maxsize", ctx.loc2pos(yystack_[2].location));
     ElementPtr maxsize(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("maxsize", maxsize);
 }
-#line 4044 "dhcp4_parser.cc"
+#line 4064 "dhcp4_parser.cc"
     break;
 
-  case 728: // maxver: "maxver" ":" "integer"
-#line 2580 "dhcp4_parser.yy"
+  case 736: // maxver: "maxver" ":" "integer"
+#line 2600 "dhcp4_parser.yy"
                              {
     ctx.unique("maxver", ctx.loc2pos(yystack_[2].location));
     ElementPtr maxver(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("maxver", maxver);
 }
-#line 4054 "dhcp4_parser.cc"
+#line 4074 "dhcp4_parser.cc"
     break;
 
-  case 729: // $@130: %empty
-#line 2586 "dhcp4_parser.yy"
+  case 737: // $@130: %empty
+#line 2606 "dhcp4_parser.yy"
                  {
     ctx.unique("pattern", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 4063 "dhcp4_parser.cc"
+#line 4083 "dhcp4_parser.cc"
     break;
 
-  case 730: // pattern: "pattern" $@130 ":" "constant string"
-#line 2589 "dhcp4_parser.yy"
+  case 738: // pattern: "pattern" $@130 ":" "constant string"
+#line 2609 "dhcp4_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 4073 "dhcp4_parser.cc"
+#line 4093 "dhcp4_parser.cc"
     break;
 
 
-#line 4077 "dhcp4_parser.cc"
+#line 4097 "dhcp4_parser.cc"
 
             default:
               break;
@@ -4422,131 +4442,132 @@ namespace isc { namespace dhcp {
   }
 
 
-  const short Dhcp4Parser::yypact_ninf_ = -891;
+  const short Dhcp4Parser::yypact_ninf_ = -901;
 
   const signed char Dhcp4Parser::yytable_ninf_ = -1;
 
   const short
   Dhcp4Parser::yypact_[] =
   {
-     356,  -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,
-    -891,  -891,  -891,  -891,    31,    41,    72,    74,    78,    93,
-     101,   111,   131,   157,   158,   159,   168,   189,  -891,  -891,
-    -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,
-    -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,
-    -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,
-    -891,  -891,  -891,  -891,    41,  -147,   167,   174,    67,   498,
-      65,   230,   -33,   267,   128,   -79,   588,    98,  -891,   210,
-     253,   258,   186,   260,  -891,   256,  -891,  -891,  -891,   262,
-     266,   270,  -891,  -891,  -891,  -891,  -891,  -891,   271,   277,
-     283,   284,   285,   296,   302,   313,   322,  -891,   328,   329,
-     335,   336,   343,  -891,  -891,  -891,   346,  -891,  -891,  -891,
-    -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,   366,
-    -891,  -891,  -891,  -891,  -891,  -891,  -891,   367,  -891,    58,
-    -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,
-    -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,
-    -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,
-    -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,
-    -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,
-    -891,  -891,  -891,  -891,  -891,   371,  -891,    84,  -891,  -891,
-    -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,
-    -891,   372,  -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,
-    -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,
-    -891,  -891,  -891,  -891,  -891,    94,  -891,  -891,  -891,  -891,
-    -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,
-    -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,
-     164,  -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,
-    -891,  -891,  -891,  -891,  -891,  -891,  -891,   291,   316,  -891,
-    -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,
-    -891,   360,  -891,  -891,   374,  -891,  -891,  -891,   381,  -891,
-    -891,   378,   389,  -891,  -891,  -891,  -891,  -891,  -891,  -891,
-    -891,  -891,  -891,  -891,  -891,  -891,   393,   394,  -891,  -891,
-    -891,  -891,   385,   396,  -891,  -891,  -891,  -891,  -891,  -891,
-    -891,  -891,  -891,  -891,  -891,  -891,   170,  -891,  -891,  -891,
-     397,  -891,  -891,   398,  -891,   400,   402,  -891,  -891,   404,
-     405,  -891,  -891,  -891,  -891,  -891,  -891,  -891,   173,  -891,
-    -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,
-    -891,  -891,  -891,  -891,  -891,  -891,   407,   181,  -891,  -891,
-    -891,  -891,    41,    41,  -891,  -135,   408,  -891,   409,   410,
-     418,   211,   236,   238,   424,   425,   428,   434,   435,   437,
-     255,   257,   259,   261,   265,   254,   272,   274,   268,   445,
-     276,   279,   275,   278,   281,   450,   464,   469,   286,   470,
-     474,   477,   478,   481,   482,   485,   487,   488,   489,   490,
-     493,   312,   496,   500,   503,   504,   505,   507,   508,  -891,
-     174,  -891,   509,   510,   511,   327,    67,  -891,   513,   514,
-     515,   516,   517,   518,   355,   539,   540,   541,   498,  -891,
-     542,    65,  -891,   543,   544,   545,   546,   547,   548,   549,
-     550,  -891,   230,  -891,   559,   561,   387,   576,   577,   579,
-     395,  -891,   267,   581,   399,   413,  -891,   128,   582,   583,
-      87,  -891,   416,   585,   587,   411,   595,   419,   422,   606,
-     607,   423,   431,   609,   610,   617,   619,   588,  -891,   620,
-     438,    98,  -891,  -891,  -891,   622,   621,   623,   629,   630,
-    -891,  -891,  -891,   441,   443,   452,   632,   633,   636,  -891,
-    -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,   456,  -891,
-    -891,  -891,  -891,  -891,  -105,   457,   458,  -891,   640,   641,
-     642,   643,   644,   463,   280,   645,   647,   648,   649,   663,
-    -891,   664,   665,   666,   678,   502,   506,   650,  -891,   684,
-     123,   133,  -891,  -891,   512,   519,   520,   685,   521,   522,
-    -891,   684,   523,   686,  -891,   524,  -891,   684,   526,   527,
-     529,   530,   531,   532,   533,  -891,   534,   535,  -891,   537,
-     538,   558,  -891,  -891,   560,  -891,  -891,  -891,   562,   644,
-    -891,  -891,   563,   566,  -891,   567,  -891,  -891,    12,   568,
-    -891,  -891,  -105,   569,   570,   571,  -891,   689,  -891,  -891,
-      41,   174,    98,    67,   667,  -891,  -891,  -891,    81,    81,
-     688,  -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,
-     690,   694,   696,   719,  -891,  -891,  -891,  -891,  -891,  -891,
-    -891,  -891,   -39,   720,   721,   722,    23,   188,   191,    85,
-     588,  -891,  -891,   723,  -891,  -891,  -891,  -891,  -891,  -891,
-    -891,  -891,  -891,  -891,  -891,   738,  -891,  -891,  -891,  -891,
-     100,  -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,
-    -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,
-    -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,   688,
-    -891,   183,   184,   187,  -891,   190,  -891,  -891,  -891,  -891,
-    -891,  -891,   692,   743,   750,   754,   755,  -891,  -891,  -891,
-    -891,   756,   757,   758,   759,   760,   761,  -891,   249,  -891,
-    -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,
-    -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,
-     269,  -891,   763,   767,  -891,  -891,   765,   769,  -891,  -891,
-     770,   772,  -891,  -891,   771,   775,  -891,  -891,   773,   777,
-    -891,  -891,  -891,  -891,  -891,  -891,    34,  -891,  -891,  -891,
-    -891,  -891,  -891,  -891,    46,  -891,  -891,   776,   778,  -891,
-    -891,   779,   780,  -891,   762,   782,   783,   784,   785,   786,
-     287,  -891,  -891,  -891,  -891,  -891,  -891,  -891,   788,   789,
-     790,  -891,   288,  -891,  -891,  -891,  -891,  -891,  -891,  -891,
-    -891,  -891,  -891,  -891,   295,  -891,  -891,  -891,   791,  -891,
-     792,  -891,  -891,  -891,   299,  -891,  -891,  -891,  -891,  -891,
-     305,  -891,    61,  -891,   598,  -891,   793,   794,  -891,  -891,
-    -891,  -891,   795,   796,  -891,  -891,  -891,   797,   667,  -891,
-     800,   801,   802,   803,   586,   611,   624,   625,   626,   804,
-     805,   806,   808,   628,   631,   634,   635,   627,   637,    81,
-    -891,  -891,    81,  -891,   688,   498,  -891,   690,   267,  -891,
-     694,   128,  -891,   696,   605,  -891,   719,   -39,  -891,    75,
-     720,  -891,   230,  -891,   721,   -79,  -891,   722,   638,   639,
-     646,   652,   653,   655,    23,  -891,   654,   659,   674,   188,
-    -891,   813,   815,   191,  -891,   673,   816,   679,   819,    85,
-    -891,  -891,   198,   723,  -891,  -891,   821,   825,    65,  -891,
-     738,   826,  -891,  -891,   612,  -891,   352,   651,   697,   709,
-    -891,  -891,  -891,  -891,  -891,   710,   713,   716,   724,  -891,
-    -891,  -891,  -891,  -891,  -891,  -891,   307,  -891,   315,  -891,
-     823,  -891,   824,  -891,  -891,  -891,  -891,  -891,  -891,  -891,
-    -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,
-    -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,
-     326,  -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,
-    -891,  -891,   830,  -891,  -891,  -891,  -891,  -891,  -891,  -891,
-    -891,  -891,   827,   833,  -891,  -891,  -891,  -891,  -891,   845,
-    -891,   350,  -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,
-    -891,  -891,  -891,  -891,   731,   732,  -891,  -891,   734,  -891,
-      41,  -891,  -891,   874,  -891,  -891,  -891,  -891,  -891,   351,
-    -891,  -891,  -891,  -891,  -891,  -891,   774,   361,  -891,   684,
-    -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,
-    -891,  -891,  -891,  -891,  -891,  -891,  -891,   605,  -891,   878,
-     766,  -891,    75,  -891,  -891,  -891,  -891,  -891,  -891,   905,
-     781,   952,   198,  -891,  -891,  -891,  -891,  -891,   787,  -891,
-    -891,   959,  -891,   798,  -891,  -891,   822,  -891,  -891,    90,
-    -891,   -27,   822,  -891,  -891,   961,   962,   963,  -891,   364,
-    -891,  -891,  -891,  -891,  -891,  -891,  -891,   965,   799,   807,
-     809,   966,   -27,  -891,   811,  -891,  -891,  -891,   812,  -891,
-    -891,  -891
+     548,  -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,
+    -901,  -901,  -901,  -901,    31,    41,    59,    72,    74,   151,
+     161,   162,   188,   194,   207,   227,   234,   243,  -901,  -901,
+    -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,
+    -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,
+    -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,
+    -901,  -901,  -901,  -901,    41,  -151,   206,   114,    67,   233,
+     192,   242,   -31,    69,   280,   -84,   557,    95,  -901,   246,
+     253,   270,   241,   281,  -901,   275,  -901,  -901,  -901,   297,
+     307,   324,  -901,  -901,  -901,  -901,  -901,  -901,   331,   336,
+     338,   339,   342,   343,   344,   346,   349,   350,   357,  -901,
+     359,   370,   371,   374,   375,  -901,  -901,  -901,   382,  -901,
+    -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,
+    -901,   384,  -901,  -901,  -901,  -901,  -901,  -901,  -901,   385,
+    -901,    53,  -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,
+    -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,
+    -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,
+    -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,
+    -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,
+    -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,   388,
+    -901,    84,  -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,
+    -901,  -901,  -901,  -901,  -901,   389,  -901,  -901,  -901,  -901,
+    -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,
+    -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,
+    -901,    94,  -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,
+    -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,
+    -901,  -901,  -901,  -901,  -901,  -901,    97,  -901,  -901,  -901,
+    -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,
+    -901,  -901,  -901,   277,   348,  -901,  -901,  -901,  -901,  -901,
+    -901,  -901,  -901,  -901,  -901,  -901,  -901,   386,  -901,  -901,
+     391,  -901,  -901,  -901,   392,  -901,  -901,   393,   397,  -901,
+    -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,
+    -901,  -901,   401,   402,  -901,  -901,  -901,  -901,   399,   405,
+    -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,
+    -901,  -901,   118,  -901,  -901,  -901,   406,  -901,  -901,   408,
+    -901,   410,   412,  -901,  -901,   413,   415,  -901,  -901,  -901,
+    -901,  -901,  -901,  -901,   121,  -901,  -901,  -901,  -901,  -901,
+    -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,
+    -901,  -901,   416,   124,  -901,  -901,  -901,  -901,    41,    41,
+    -901,  -141,   418,  -901,   420,   429,   436,   218,   255,   256,
+     445,   447,   448,   450,   452,   453,   261,   271,   272,   273,
+     282,   279,   288,   291,   293,   283,   300,   459,   301,   304,
+     295,   303,   306,   495,   496,   497,   311,   501,   503,   504,
+     508,   511,   514,   515,   516,   518,   519,   520,   522,   351,
+     523,   527,   533,   534,   535,   537,   540,  -901,   114,  -901,
+     541,   542,   543,   358,    67,  -901,   544,   546,   547,   549,
+     550,   553,   363,   554,   555,   556,   233,  -901,   558,   192,
+    -901,   569,   571,   581,   582,   583,   587,   589,   590,  -901,
+     242,  -901,   591,   592,   372,   593,   594,   595,   409,  -901,
+      69,   597,   417,   421,  -901,   280,   600,   602,    80,  -901,
+     424,   605,   612,   430,   614,   431,   432,   618,   619,   433,
+     440,   629,   651,   652,   653,   557,  -901,   654,   470,    95,
+    -901,  -901,  -901,   656,   655,   657,   658,   665,  -901,  -901,
+    -901,   473,   475,   485,   667,   668,   671,  -901,  -901,  -901,
+    -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,   489,  -901,
+    -901,  -901,  -901,  -901,    82,   490,   491,  -901,   676,   677,
+     678,   679,   680,   498,   268,   683,   684,   685,   686,   688,
+    -901,   689,   690,   691,   692,   505,   512,   687,  -901,   696,
+     113,   204,  -901,  -901,   528,   529,   530,   710,   531,   532,
+    -901,   696,   551,   729,  -901,   552,  -901,   696,   559,   560,
+     561,   562,   563,   564,   565,  -901,   566,   567,  -901,   568,
+     570,   572,  -901,  -901,   573,  -901,  -901,  -901,   574,   680,
+    -901,  -901,   575,   576,  -901,   577,  -901,  -901,    12,   526,
+    -901,  -901,    82,   578,   579,   580,  -901,   732,  -901,  -901,
+      41,   114,    95,    67,   714,  -901,  -901,  -901,   596,   596,
+     734,  -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,
+     735,   736,   737,   739,  -901,  -901,  -901,  -901,  -901,  -901,
+    -901,  -901,   -41,   750,   752,   762,   138,    14,   -54,   294,
+     557,  -901,  -901,   763,  -901,  -901,  -901,  -901,  -901,  -901,
+    -901,  -901,  -901,  -901,  -901,   764,  -901,  -901,  -901,  -901,
+     117,  -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,
+    -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,
+    -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,   734,
+    -901,   130,   149,   159,  -901,   190,  -901,  -901,  -901,  -901,
+    -901,  -901,   768,   769,   770,   771,   772,  -901,  -901,  -901,
+    -901,   773,   774,   775,   776,   777,   778,  -901,   191,  -901,
+    -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,
+    -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,
+     197,  -901,   779,   780,  -901,  -901,   781,   783,  -901,  -901,
+     782,   786,  -901,  -901,   784,   788,  -901,  -901,   787,   789,
+    -901,  -901,  -901,  -901,  -901,  -901,    61,  -901,  -901,  -901,
+    -901,  -901,  -901,  -901,    90,  -901,  -901,   790,   791,  -901,
+    -901,   792,   794,  -901,   795,   796,   797,   798,   799,   800,
+     209,  -901,  -901,  -901,  -901,  -901,  -901,  -901,   801,   802,
+     803,  -901,   210,  -901,  -901,  -901,  -901,  -901,  -901,  -901,
+    -901,  -901,  -901,  -901,   225,  -901,  -901,  -901,   804,  -901,
+     805,  -901,  -901,  -901,   232,  -901,  -901,  -901,  -901,  -901,
+     245,  -901,   112,  -901,   607,  -901,   806,   807,  -901,  -901,
+    -901,  -901,   808,   809,  -901,  -901,  -901,   810,   714,  -901,
+     813,   814,   815,   816,   622,   630,   624,   631,   634,   820,
+     821,   822,   823,   639,   640,   641,   642,   643,   644,   596,
+    -901,  -901,   596,  -901,   734,   233,  -901,   735,    69,  -901,
+     736,   280,  -901,   737,   506,  -901,   739,   -41,  -901,   446,
+     750,  -901,   242,  -901,   752,   -84,  -901,   762,   646,   647,
+     648,   649,   650,   660,   138,  -901,   659,   663,   664,    14,
+    -901,   828,   836,   -54,  -901,   672,   837,   682,   838,   294,
+    -901,  -901,    39,   763,  -901,  -901,   839,   840,   192,  -901,
+     764,   842,  -901,  -901,   700,  -901,   347,   704,   705,   717,
+    -901,  -901,  -901,  -901,  -901,   718,   721,   724,   731,  -901,
+    -901,  -901,  -901,  -901,  -901,  -901,   274,  -901,   278,  -901,
+     848,  -901,   864,  -901,  -901,  -901,  -901,  -901,  -901,  -901,
+    -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,
+    -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,
+    -901,  -901,   312,  -901,  -901,  -901,  -901,  -901,  -901,  -901,
+    -901,  -901,  -901,  -901,   843,  -901,  -901,  -901,  -901,  -901,
+    -901,  -901,  -901,  -901,   868,   841,  -901,  -901,  -901,  -901,
+    -901,   912,  -901,   314,  -901,  -901,  -901,  -901,  -901,  -901,
+    -901,  -901,  -901,  -901,  -901,  -901,   740,   742,  -901,  -901,
+     785,  -901,    41,  -901,  -901,   923,  -901,  -901,  -901,  -901,
+    -901,   315,  -901,  -901,  -901,  -901,  -901,  -901,   793,   316,
+    -901,   696,  -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,
+    -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,   506,
+    -901,   966,   811,  -901,   446,  -901,  -901,  -901,  -901,  -901,
+    -901,   973,   812,   974,    39,  -901,  -901,  -901,  -901,  -901,
+     817,  -901,  -901,   975,  -901,   818,  -901,  -901,   972,  -901,
+    -901,   148,  -901,  -119,   972,  -901,  -901,   978,   979,   980,
+    -901,   318,  -901,  -901,  -901,  -901,  -901,  -901,  -901,   981,
+     819,   824,   825,   982,  -119,  -901,   827,  -901,  -901,  -901,
+     829,  -901,  -901,  -901
   };
 
   const short
@@ -4556,656 +4577,662 @@ namespace isc { namespace dhcp {
       20,    22,    24,    26,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     1,    43,
       36,    32,    31,    28,    29,    30,    35,     3,    33,    34,
-      56,     5,    60,     7,   162,     9,   320,    11,   503,    13,
-     528,    15,   428,    17,   436,    19,   473,    21,   285,    23,
-     634,    25,   684,    27,    45,    39,     0,     0,     0,     0,
-       0,   530,     0,   438,   475,     0,     0,     0,    47,     0,
-      46,     0,     0,    40,    58,     0,   682,   151,   177,     0,
-       0,     0,   549,   551,   553,   175,   184,   186,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   125,     0,     0,
-       0,     0,     0,   133,   140,   142,     0,   312,   426,   465,
-     383,   516,   518,   376,   250,   577,   520,   277,   296,     0,
-     264,   603,   616,   632,   144,   146,   693,     0,   115,     0,
-      62,    64,    65,    66,    67,    68,    99,   100,   101,    69,
-      97,    86,    87,    88,   105,   106,   107,   108,   109,   110,
-     103,   104,   111,   112,   113,    72,    73,    94,    74,    75,
-      76,   114,    80,    81,    70,    98,    71,    78,    79,    92,
-      93,    95,    89,    90,    91,    77,    82,    83,    84,    85,
-      96,   102,   164,   166,   170,     0,   161,     0,   153,   155,
-     156,   157,   158,   159,   160,   364,   366,   368,   495,   362,
-     370,     0,   374,   372,   573,   361,   324,   325,   326,   327,
-     328,   349,   350,   351,   339,   340,   352,   353,   354,   355,
-     356,   357,   358,   359,   360,     0,   322,   331,   344,   345,
-     346,   332,   334,   335,   337,   333,   329,   330,   347,   348,
-     336,   341,   342,   343,   338,   514,   513,   509,   510,   508,
-       0,   505,   507,   511,   512,   571,   559,   561,   565,   563,
-     569,   567,   555,   548,   542,   546,   547,     0,   531,   532,
-     543,   544,   545,   539,   534,   540,   536,   537,   538,   541,
-     535,     0,   455,   230,     0,   459,   457,   462,     0,   451,
-     452,     0,   439,   440,   442,   454,   443,   444,   445,   461,
-     446,   447,   448,   449,   450,   489,     0,     0,   487,   488,
-     491,   492,     0,   476,   477,   479,   480,   481,   482,   483,
-     484,   485,   486,   292,   294,   289,     0,   287,   290,   291,
-       0,   670,   657,     0,   660,     0,     0,   664,   668,     0,
-       0,   674,   676,   678,   680,   655,   653,   654,     0,   636,
-     638,   639,   640,   641,   642,   643,   644,   645,   650,   646,
-     647,   648,   649,   651,   652,   690,     0,     0,   686,   688,
-     689,    44,     0,     0,    37,     0,     0,    57,     0,     0,
+      56,     5,    60,     7,   166,     9,   324,    11,   511,    13,
+     536,    15,   436,    17,   444,    19,   481,    21,   289,    23,
+     642,    25,   692,    27,    45,    39,     0,     0,     0,     0,
+       0,   538,     0,   446,   483,     0,     0,     0,    47,     0,
+      46,     0,     0,    40,    58,     0,   690,   155,   181,     0,
+       0,     0,   557,   559,   561,   179,   188,   190,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   129,
+       0,     0,     0,     0,     0,   137,   144,   146,     0,   316,
+     434,   473,   389,   524,   526,   382,   254,   585,   528,   281,
+     300,     0,   268,   611,   624,   640,   148,   150,   701,     0,
+     117,     0,    62,    64,    65,    66,    67,    68,    99,   100,
+     101,   102,   103,    69,    97,    86,    87,    88,   107,   108,
+     109,   110,   111,   112,   105,   106,   113,   114,   115,    72,
+      73,    94,    74,    75,    76,   116,    80,    81,    70,    98,
+      71,    78,    79,    92,    93,    95,    89,    90,    91,    77,
+      82,    83,    84,    85,    96,   104,   168,   170,   174,     0,
+     165,     0,   157,   159,   160,   161,   162,   163,   164,   370,
+     372,   374,   503,   368,   376,     0,   380,   378,   581,   367,
+     328,   329,   330,   331,   332,   353,   354,   355,   356,   357,
+     343,   344,   358,   359,   360,   361,   362,   363,   364,   365,
+     366,     0,   326,   335,   348,   349,   350,   336,   338,   339,
+     341,   337,   333,   334,   351,   352,   340,   345,   346,   347,
+     342,   522,   521,   517,   518,   516,     0,   513,   515,   519,
+     520,   579,   567,   569,   573,   571,   577,   575,   563,   556,
+     550,   554,   555,     0,   539,   540,   551,   552,   553,   547,
+     542,   548,   544,   545,   546,   549,   543,     0,   463,   234,
+       0,   467,   465,   470,     0,   459,   460,     0,   447,   448,
+     450,   462,   451,   452,   453,   469,   454,   455,   456,   457,
+     458,   497,     0,     0,   495,   496,   499,   500,     0,   484,
+     485,   487,   488,   489,   490,   491,   492,   493,   494,   296,
+     298,   293,     0,   291,   294,   295,     0,   678,   665,     0,
+     668,     0,     0,   672,   676,     0,     0,   682,   684,   686,
+     688,   663,   661,   662,     0,   644,   646,   647,   648,   649,
+     650,   651,   652,   653,   658,   654,   655,   656,   657,   659,
+     660,   698,     0,     0,   694,   696,   697,    44,     0,     0,
+      37,     0,     0,    57,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    55,
-       0,    61,     0,     0,     0,     0,     0,   163,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   321,
-       0,     0,   504,     0,     0,     0,     0,     0,     0,     0,
-       0,   529,     0,   429,     0,     0,     0,     0,     0,     0,
-       0,   437,     0,     0,     0,     0,   474,     0,     0,     0,
-       0,   286,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   635,     0,
-       0,     0,   685,    48,    41,     0,     0,     0,     0,     0,
-     127,   128,   129,     0,     0,     0,     0,     0,     0,   116,
-     117,   118,   119,   120,   121,   122,   123,   124,     0,   149,
-     150,   130,   131,   132,     0,     0,     0,   148,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    55,     0,    61,
+       0,     0,     0,     0,     0,   167,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   325,     0,     0,
+     512,     0,     0,     0,     0,     0,     0,     0,     0,   537,
+       0,   437,     0,     0,     0,     0,     0,     0,     0,   445,
+       0,     0,     0,     0,   482,     0,     0,     0,     0,   290,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     602,     0,     0,     0,     0,     0,     0,     0,    63,     0,
-       0,     0,   174,   154,     0,     0,     0,     0,     0,     0,
-     382,     0,     0,     0,   323,     0,   506,     0,     0,     0,
-       0,     0,     0,     0,     0,   533,     0,     0,   453,     0,
-       0,     0,   464,   441,     0,   493,   494,   478,     0,     0,
-     288,   656,     0,     0,   659,     0,   662,   663,     0,     0,
-     672,   673,     0,     0,     0,     0,   637,     0,   692,   687,
-       0,     0,     0,     0,     0,   550,   552,   554,     0,     0,
-     188,   126,   135,   136,   137,   138,   139,   134,   141,   143,
-     314,   430,   467,   385,    38,   517,   519,   378,   379,   380,
-     381,   377,     0,     0,   522,   279,     0,     0,     0,     0,
-       0,   145,   147,     0,    49,   165,   168,   169,   167,   172,
-     173,   171,   365,   367,   369,   497,   363,   371,   375,   373,
-       0,   515,   572,   560,   562,   566,   564,   570,   568,   556,
-     456,   231,   460,   458,   463,   490,   293,   295,   671,   658,
-     661,   666,   667,   665,   669,   675,   677,   679,   681,   188,
-      42,     0,     0,     0,   182,     0,   179,   181,   217,   223,
-     225,   227,     0,     0,     0,     0,     0,   239,   241,   243,
-     245,     0,     0,     0,     0,     0,     0,   216,     0,   194,
-     196,   197,   198,   199,   200,   201,   202,   203,   204,   205,
-     209,   210,   211,   206,   212,   213,   214,   207,   208,   215,
-       0,   192,     0,   189,   190,   318,     0,   315,   316,   434,
-       0,   431,   432,   471,     0,   468,   469,   389,     0,   386,
-     387,   259,   260,   261,   262,   263,     0,   252,   254,   255,
-     256,   257,   258,   581,     0,   579,   526,     0,   523,   524,
-     283,     0,   280,   281,     0,     0,     0,     0,     0,     0,
-       0,   298,   300,   301,   302,   303,   304,   305,     0,     0,
-       0,   273,     0,   266,   268,   269,   270,   271,   272,   612,
-     614,   611,   609,   610,     0,   605,   607,   608,     0,   627,
-       0,   630,   623,   624,     0,   618,   620,   621,   622,   625,
-       0,   697,     0,   695,    51,   501,     0,   498,   499,   557,
-     575,   576,     0,     0,    59,   683,   152,     0,     0,   178,
+       0,     0,     0,     0,     0,     0,   643,     0,     0,     0,
+     693,    48,    41,     0,     0,     0,     0,     0,   131,   132,
+     133,     0,     0,     0,     0,     0,     0,   118,   119,   120,
+     121,   122,   123,   124,   125,   126,   127,   128,     0,   153,
+     154,   134,   135,   136,     0,     0,     0,   152,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     610,     0,     0,     0,     0,     0,     0,     0,    63,     0,
+       0,     0,   178,   158,     0,     0,     0,     0,     0,     0,
+     388,     0,     0,     0,   327,     0,   514,     0,     0,     0,
+       0,     0,     0,     0,     0,   541,     0,     0,   461,     0,
+       0,     0,   472,   449,     0,   501,   502,   486,     0,     0,
+     292,   664,     0,     0,   667,     0,   670,   671,     0,     0,
+     680,   681,     0,     0,     0,     0,   645,     0,   700,   695,
+       0,     0,     0,     0,     0,   558,   560,   562,     0,     0,
+     192,   130,   139,   140,   141,   142,   143,   138,   145,   147,
+     318,   438,   475,   391,    38,   525,   527,   384,   385,   386,
+     387,   383,     0,     0,   530,   283,     0,     0,     0,     0,
+       0,   149,   151,     0,    49,   169,   172,   173,   171,   176,
+     177,   175,   371,   373,   375,   505,   369,   377,   381,   379,
+       0,   523,   580,   568,   570,   574,   572,   578,   576,   564,
+     464,   235,   468,   466,   471,   498,   297,   299,   679,   666,
+     669,   674,   675,   673,   677,   683,   685,   687,   689,   192,
+      42,     0,     0,     0,   186,     0,   183,   185,   221,   227,
+     229,   231,     0,     0,     0,     0,     0,   243,   245,   247,
+     249,     0,     0,     0,     0,     0,     0,   220,     0,   198,
+     200,   201,   202,   203,   204,   205,   206,   207,   208,   209,
+     213,   214,   215,   210,   216,   217,   218,   211,   212,   219,
+       0,   196,     0,   193,   194,   322,     0,   319,   320,   442,
+       0,   439,   440,   479,     0,   476,   477,   395,     0,   392,
+     393,   263,   264,   265,   266,   267,     0,   256,   258,   259,
+     260,   261,   262,   589,     0,   587,   534,     0,   531,   532,
+     287,     0,   284,   285,     0,     0,     0,     0,     0,     0,
+       0,   302,   304,   305,   306,   307,   308,   309,     0,     0,
+       0,   277,     0,   270,   272,   273,   274,   275,   276,   620,
+     622,   619,   617,   618,     0,   613,   615,   616,     0,   635,
+       0,   638,   631,   632,     0,   626,   628,   629,   630,   633,
+       0,   705,     0,   703,    51,   509,     0,   506,   507,   565,
+     583,   584,     0,     0,    59,   691,   156,     0,     0,   182,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     176,   185,     0,   187,     0,     0,   313,     0,   438,   427,
-       0,   475,   466,     0,     0,   384,     0,     0,   251,   583,
-       0,   578,   530,   521,     0,     0,   278,     0,     0,     0,
-       0,     0,     0,     0,     0,   297,     0,     0,     0,     0,
-     265,     0,     0,     0,   604,     0,     0,     0,     0,     0,
-     617,   633,     0,     0,   694,    53,     0,    52,     0,   496,
-       0,     0,   574,   691,     0,   180,     0,     0,     0,     0,
-     229,   232,   233,   234,   235,     0,     0,     0,     0,   247,
-     248,   236,   237,   238,   249,   195,     0,   191,     0,   317,
-       0,   433,     0,   470,   425,   408,   409,   410,   396,   397,
-     413,   414,   415,   399,   400,   416,   417,   418,   419,   420,
-     421,   422,   423,   424,   393,   394,   395,   406,   407,   405,
-       0,   391,   398,   411,   412,   401,   402,   403,   404,   388,
-     253,   599,     0,   597,   598,   590,   591,   595,   596,   592,
-     593,   594,     0,   584,   585,   587,   588,   589,   580,     0,
-     525,     0,   282,   306,   307,   308,   309,   310,   311,   299,
-     274,   275,   276,   267,     0,     0,   606,   626,     0,   629,
-       0,   619,   711,     0,   709,   707,   701,   705,   706,     0,
-     699,   703,   704,   702,   696,    50,     0,     0,   500,     0,
-     183,   219,   220,   221,   222,   218,   224,   226,   228,   240,
-     242,   244,   246,   193,   319,   435,   472,     0,   390,     0,
-       0,   582,     0,   527,   284,   613,   615,   628,   631,     0,
-       0,     0,     0,   698,    54,   502,   558,   392,     0,   601,
-     586,     0,   708,     0,   700,   600,     0,   710,   715,     0,
-     713,     0,     0,   712,   724,     0,     0,     0,   729,     0,
-     717,   719,   720,   721,   722,   723,   714,     0,     0,     0,
-       0,     0,     0,   716,     0,   726,   727,   728,     0,   718,
-     725,   730
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     180,   189,     0,   191,     0,     0,   317,     0,   446,   435,
+       0,   483,   474,     0,     0,   390,     0,     0,   255,   591,
+       0,   586,   538,   529,     0,     0,   282,     0,     0,     0,
+       0,     0,     0,     0,     0,   301,     0,     0,     0,     0,
+     269,     0,     0,     0,   612,     0,     0,     0,     0,     0,
+     625,   641,     0,     0,   702,    53,     0,    52,     0,   504,
+       0,     0,   582,   699,     0,   184,     0,     0,     0,     0,
+     233,   236,   237,   238,   239,     0,     0,     0,     0,   251,
+     252,   240,   241,   242,   253,   199,     0,   195,     0,   321,
+       0,   441,     0,   478,   433,   414,   415,   416,   402,   403,
+     419,   420,   421,   422,   423,   405,   406,   424,   425,   426,
+     427,   428,   429,   430,   431,   432,   399,   400,   401,   412,
+     413,   411,     0,   397,   404,   417,   418,   407,   408,   409,
+     410,   394,   257,   607,     0,   605,   606,   598,   599,   603,
+     604,   600,   601,   602,     0,   592,   593,   595,   596,   597,
+     588,     0,   533,     0,   286,   310,   311,   312,   313,   314,
+     315,   303,   278,   279,   280,   271,     0,     0,   614,   634,
+       0,   637,     0,   627,   719,     0,   717,   715,   709,   713,
+     714,     0,   707,   711,   712,   710,   704,    50,     0,     0,
+     508,     0,   187,   223,   224,   225,   226,   222,   228,   230,
+     232,   244,   246,   248,   250,   197,   323,   443,   480,     0,
+     396,     0,     0,   590,     0,   535,   288,   621,   623,   636,
+     639,     0,     0,     0,     0,   706,    54,   510,   566,   398,
+       0,   609,   594,     0,   716,     0,   708,   608,     0,   718,
+     723,     0,   721,     0,     0,   720,   732,     0,     0,     0,
+     737,     0,   725,   727,   728,   729,   730,   731,   722,     0,
+       0,     0,     0,     0,     0,   724,     0,   734,   735,   736,
+       0,   726,   733,   738
   };
 
   const short
   Dhcp4Parser::yypgoto_[] =
   {
-    -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,
-    -891,  -891,  -891,  -891,  -891,   -52,  -891,  -519,  -891,   362,
-    -891,  -891,  -891,  -891,  -891,  -891,  -566,  -891,  -891,  -891,
-     -67,  -891,  -891,  -891,  -891,  -891,  -891,   341,   536,   -40,
-     -28,   -24,    -1,     1,    11,    19,    22,  -891,  -891,  -891,
-    -891,    25,    26,    29,    30,    32,    37,  -891,   353,    40,
-    -891,    43,  -891,    44,  -891,    45,  -891,    47,  -891,  -891,
-    -891,  -891,   344,   528,  -891,  -891,  -891,  -891,  -891,  -891,
-    -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,
-     102,  -891,  -891,  -891,  -891,  -891,  -891,   263,  -891,    77,
-    -891,  -626,    79,  -891,  -891,  -891,  -891,  -891,  -891,  -891,
-    -891,  -891,  -891,   -63,  -891,  -891,  -891,  -891,  -891,  -891,
-    -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,
-    -891,  -891,  -891,  -891,  -891,  -891,    62,  -891,  -891,  -891,
-    -891,  -891,  -891,  -891,  -891,    50,  -891,  -891,  -891,  -891,
-    -891,  -891,  -891,    56,  -891,  -891,  -891,    60,   497,  -891,
-    -891,  -891,  -891,  -891,  -891,  -891,    52,  -891,  -891,  -891,
-    -891,  -891,  -891,  -890,  -891,  -891,  -891,    83,  -891,  -891,
-    -891,    86,   551,  -891,  -891,  -891,  -891,  -891,  -891,  -891,
-    -891,  -887,  -891,   -65,  -891,    49,  -891,    48,  -891,  -891,
-    -891,  -891,  -891,  -891,  -891,    76,  -891,  -891,  -114,   -46,
-    -891,  -891,  -891,  -891,  -891,    89,  -891,  -891,  -891,    92,
-    -891,   552,  -891,   -42,  -891,  -891,  -891,  -891,  -891,   -36,
-    -891,  -891,  -891,  -891,  -891,   -35,  -891,  -891,  -891,    82,
-    -891,  -891,  -891,    91,  -891,   525,  -891,  -891,  -891,  -891,
-    -891,  -891,  -891,  -891,  -891,  -891,  -891,    51,  -891,  -891,
-    -891,    55,   553,  -891,  -891,   -51,  -891,   -11,  -891,   -25,
-    -891,  -891,  -891,    80,  -891,  -891,  -891,    88,  -891,   554,
-     -55,  -891,     0,  -891,     7,  -891,   311,  -891,  -891,  -891,
-    -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,
-    -891,  -891,  -891,  -891,  -886,  -891,  -891,  -891,  -891,  -891,
-      95,  -891,  -891,  -891,  -109,  -891,  -891,  -891,  -891,  -891,
-    -891,  -891,  -891,    63,  -891,  -891,  -891,  -891,  -891,  -891,
-    -891,    59,  -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,
-    -891,  -891,   347,   555,  -891,  -891,  -891,  -891,  -891,  -891,
-    -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,
-    -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,  -891,
-    -891,  -891,  -891,   373,   557,  -891,  -891,  -891,  -891,  -891,
-    -891,    66,  -891,  -891,  -106,  -891,  -891,  -891,  -891,  -891,
-    -891,  -122,  -891,  -891,  -141,  -891,  -891,  -891,  -891,  -891,
-    -891,  -891
+    -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,
+    -901,  -901,  -901,  -901,  -901,   -52,  -901,  -529,  -901,   368,
+    -901,  -901,  -901,  -901,  -901,  -901,  -576,  -901,  -901,  -901,
+     -67,  -901,  -901,  -901,  -901,  -901,  -901,   352,   584,   -40,
+     -28,   -24,    -1,     1,    11,    19,    22,    25,    26,  -901,
+    -901,  -901,  -901,    29,    30,    32,    37,    40,    43,  -901,
+     356,    44,  -901,    45,  -901,    47,  -901,    48,  -901,    50,
+    -901,  -901,  -901,  -901,   353,   536,  -901,  -901,  -901,  -901,
+    -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,
+    -901,  -901,   101,  -901,  -901,  -901,  -901,  -901,  -901,   262,
+    -901,    78,  -901,  -636,    85,  -901,  -901,  -901,  -901,  -901,
+    -901,  -901,  -901,  -901,  -901,   -63,  -901,  -901,  -901,  -901,
+    -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,
+    -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,    68,  -901,
+    -901,  -901,  -901,  -901,  -901,  -901,  -901,    49,  -901,  -901,
+    -901,  -901,  -901,  -901,  -901,    60,  -901,  -901,  -901,    64,
+     502,  -901,  -901,  -901,  -901,  -901,  -901,  -901,    63,  -901,
+    -901,  -901,  -901,  -901,  -901,  -900,  -901,  -901,  -901,    86,
+    -901,  -901,  -901,    89,   545,  -901,  -901,  -901,  -901,  -901,
+    -901,  -901,  -901,  -897,  -901,   -65,  -901,    52,  -901,    51,
+    -901,  -901,  -901,  -901,  -901,  -901,  -901,    83,  -901,  -901,
+    -111,   -46,  -901,  -901,  -901,  -901,  -901,    92,  -901,  -901,
+    -901,    98,  -901,   538,  -901,   -42,  -901,  -901,  -901,  -901,
+    -901,   -36,  -901,  -901,  -901,  -901,  -901,   -35,  -901,  -901,
+    -901,    96,  -901,  -901,  -901,   100,  -901,   539,  -901,  -901,
+    -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,    54,
+    -901,  -901,  -901,    55,   586,  -901,  -901,   -51,  -901,   -11,
+    -901,   -25,  -901,  -901,  -901,    88,  -901,  -901,  -901,    93,
+    -901,   585,   -55,  -901,     0,  -901,     7,  -901,   326,  -901,
+    -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,
+    -901,  -901,  -901,  -901,  -901,  -901,  -896,  -901,  -901,  -901,
+    -901,  -901,    99,  -901,  -901,  -901,  -106,  -901,  -901,  -901,
+    -901,  -901,  -901,  -901,  -901,    87,  -901,  -901,  -901,  -901,
+    -901,  -901,  -901,    76,  -901,  -901,  -901,  -901,  -901,  -901,
+    -901,  -901,  -901,  -901,   361,   521,  -901,  -901,  -901,  -901,
+    -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,
+    -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,  -901,
+    -901,  -901,  -901,  -901,  -901,   395,   524,  -901,  -901,  -901,
+    -901,  -901,  -901,    70,  -901,  -901,  -107,  -901,  -901,  -901,
+    -901,  -901,  -901,  -123,  -901,  -901,  -136,  -901,  -901,  -901,
+    -901,  -901,  -901,  -901
   };
 
   const short
   Dhcp4Parser::yydefgoto_[] =
   {
       -1,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,    26,    27,    36,    37,    38,    65,   655,
-      82,    83,    39,    64,    79,    80,   675,   864,   956,   957,
-     747,    41,    66,    85,   386,    43,    67,   139,   140,   141,
-     142,   143,   144,   145,   146,   147,   148,   149,   150,   409,
-     151,   152,   153,   154,   155,   156,   157,   415,   647,   158,
-     416,   159,   417,   160,   436,   161,   437,   162,   163,   164,
-     165,   389,   197,   198,    45,    68,   199,   442,   200,   443,
-     678,   201,   444,   681,   202,   166,   397,   167,   390,   725,
-     726,   727,   877,   168,   398,   169,   399,   772,   773,   774,
-     902,   748,   749,   750,   880,  1095,   751,   881,   752,   882,
-     753,   883,   754,   755,   475,   756,   757,   758,   759,   760,
-     761,   762,   763,   889,   764,   890,   765,   891,   766,   892,
-     767,   768,   769,   170,   426,   796,   797,   798,   799,   800,
-     801,   802,   171,   432,   832,   833,   834,   835,   836,   172,
-     429,   811,   812,   813,   925,    59,    75,   336,   337,   338,
-     488,   339,   489,   173,   430,   820,   821,   822,   823,   824,
-     825,   826,   827,   174,   419,   776,   777,   778,   905,    47,
-      69,   235,   236,   237,   452,   238,   448,   239,   449,   240,
-     450,   241,   453,   242,   456,   243,   455,   175,   425,   661,
-     245,   176,   422,   788,   789,   790,   914,  1020,  1021,   177,
-     420,    53,    72,   780,   781,   782,   908,    55,    73,   301,
-     302,   303,   304,   305,   306,   307,   474,   308,   478,   309,
-     477,   310,   311,   479,   312,   178,   421,   784,   785,   786,
-     911,    57,    74,   322,   323,   324,   325,   326,   483,   327,
-     328,   329,   330,   247,   451,   866,   867,   868,   958,    49,
-      70,   260,   261,   262,   460,   179,   423,   180,   424,   181,
-     428,   807,   808,   809,   922,    51,    71,   277,   278,   279,
-     182,   394,   183,   395,   184,   396,   283,   470,   871,   961,
-     284,   464,   285,   465,   286,   467,   287,   466,   288,   469,
-     289,   468,   290,   463,   254,   457,   872,   185,   427,   804,
-     805,   919,  1042,  1043,  1044,  1045,  1046,  1109,  1047,   186,
-     187,   433,   844,   845,   846,   941,   847,   942,   188,   434,
-     854,   855,   856,   857,   946,   858,   859,   948,   189,   435,
-      61,    76,   358,   359,   360,   361,   494,   362,   363,   496,
-     364,   365,   366,   499,   713,   367,   500,   368,   493,   369,
-     370,   371,   503,   372,   504,   373,   505,   374,   506,   190,
-     388,    63,    77,   377,   378,   379,   509,   380,   191,   438,
-     862,   863,   952,  1079,  1080,  1081,  1082,  1121,  1083,  1119,
-    1139,  1140,  1141,  1149,  1150,  1151,  1157,  1152,  1153,  1154,
-    1155,  1161
+      23,    24,    25,    26,    27,    36,    37,    38,    65,   665,
+      82,    83,    39,    64,    79,    80,   685,   874,   966,   967,
+     757,    41,    66,    85,   392,    43,    67,   141,   142,   143,
+     144,   145,   146,   147,   148,   149,   150,   151,   152,   153,
+     154,   417,   155,   156,   157,   158,   159,   160,   161,   423,
+     657,   162,   424,   163,   425,   164,   444,   165,   445,   166,
+     167,   168,   169,   395,   201,   202,    45,    68,   203,   450,
+     204,   451,   688,   205,   452,   691,   206,   170,   403,   171,
+     396,   735,   736,   737,   887,   172,   404,   173,   405,   782,
+     783,   784,   912,   758,   759,   760,   890,  1107,   761,   891,
+     762,   892,   763,   893,   764,   765,   483,   766,   767,   768,
+     769,   770,   771,   772,   773,   899,   774,   900,   775,   901,
+     776,   902,   777,   778,   779,   174,   434,   806,   807,   808,
+     809,   810,   811,   812,   175,   440,   842,   843,   844,   845,
+     846,   176,   437,   821,   822,   823,   935,    59,    75,   342,
+     343,   344,   496,   345,   497,   177,   438,   830,   831,   832,
+     833,   834,   835,   836,   837,   178,   427,   786,   787,   788,
+     915,    47,    69,   241,   242,   243,   460,   244,   456,   245,
+     457,   246,   458,   247,   461,   248,   464,   249,   463,   179,
+     433,   671,   251,   180,   430,   798,   799,   800,   924,  1032,
+    1033,   181,   428,    53,    72,   790,   791,   792,   918,    55,
+      73,   307,   308,   309,   310,   311,   312,   313,   482,   314,
+     486,   315,   485,   316,   317,   487,   318,   182,   429,   794,
+     795,   796,   921,    57,    74,   328,   329,   330,   331,   332,
+     491,   333,   334,   335,   336,   253,   459,   876,   877,   878,
+     968,    49,    70,   266,   267,   268,   468,   183,   431,   184,
+     432,   185,   436,   817,   818,   819,   932,    51,    71,   283,
+     284,   285,   186,   400,   187,   401,   188,   402,   289,   478,
+     881,   971,   290,   472,   291,   473,   292,   475,   293,   474,
+     294,   477,   295,   476,   296,   471,   260,   465,   882,   189,
+     435,   814,   815,   929,  1054,  1055,  1056,  1057,  1058,  1121,
+    1059,   190,   191,   441,   854,   855,   856,   951,   857,   952,
+     192,   442,   864,   865,   866,   867,   956,   868,   869,   958,
+     193,   443,    61,    76,   364,   365,   366,   367,   502,   368,
+     369,   504,   370,   371,   372,   507,   723,   373,   508,   374,
+     501,   375,   376,   377,   511,   378,   512,   379,   513,   380,
+     514,   194,   394,    63,    77,   383,   384,   385,   517,   386,
+     195,   446,   872,   873,   962,  1091,  1092,  1093,  1094,  1133,
+    1095,  1131,  1151,  1152,  1153,  1161,  1162,  1163,  1169,  1164,
+    1165,  1166,  1167,  1173
   };
 
   const short
   Dhcp4Parser::yytable_[] =
   {
-     138,   196,   215,   256,   273,   257,   299,   318,   335,   355,
-     300,   319,    78,   770,   251,   688,   280,   203,   248,   263,
-     275,   692,   313,   331,  1015,   356,   291,  1016,  1028,   216,
-     711,    28,   320,   654,   246,   259,   274,   917,   321,    81,
-     918,   217,   333,   334,   250,   218,    29,   118,    30,   920,
-      31,   515,   921,   642,   643,   644,   645,   204,   249,   264,
-     276,   440,   314,   332,   953,   357,   441,   954,   219,   252,
-     220,   281,   791,   792,   793,   794,   253,   795,   282,    40,
-     221,    42,   192,   193,   646,    44,   194,   446,   222,   195,
-     654,   223,   447,  1142,   224,   225,  1143,   458,   226,   227,
-      46,   228,   459,    92,    93,    94,   229,   137,    48,   230,
-     375,   376,   231,   232,   233,   728,   234,   244,    50,   258,
-     729,   730,   731,   732,   733,   734,   735,   736,   737,   738,
-     739,   740,   741,   742,   743,   744,   745,   746,    52,  1144,
-     676,   677,  1145,  1146,  1147,  1148,   119,   814,   815,   816,
-     817,   818,   819,   679,   680,   118,   119,   293,   255,   121,
-     122,   121,   122,   293,    54,    56,    58,   461,   712,   121,
-     122,   212,   462,   490,   213,    60,   507,    84,   491,   121,
-     122,   508,  1031,  1032,   511,    86,   440,   511,    87,   512,
-     446,   874,   875,   878,   384,   876,    62,    88,   879,    89,
-      90,    91,    92,    93,    94,    95,    96,    97,   333,   334,
-     293,   315,   294,   295,   316,   317,   381,  1015,   272,   869,
-    1016,  1028,   121,   122,   848,   849,   850,    32,    33,    34,
-      35,    98,    99,   100,   101,   102,   103,   104,   105,   106,
+     140,   200,   219,   262,   279,   263,   305,   324,   341,   361,
+     306,   325,    78,   780,   257,   698,   286,   207,   254,   269,
+     281,   702,   319,   337,  1027,   362,   297,  1028,  1040,   220,
+     721,    28,   326,   664,   252,   265,   280,    81,   327,   339,
+     340,   221,   123,   124,   256,   222,    29,   523,    30,  1156,
+      31,   120,  1157,  1158,  1159,  1160,   448,   208,   255,   270,
+     282,   449,   320,   338,   927,   363,    40,   928,   223,   258,
+     224,   287,   801,   802,   803,   804,   259,   805,   288,    42,
+     225,    44,   196,   197,   849,   850,   198,   454,   226,   199,
+     664,   227,   455,   930,   228,   229,   931,   466,   230,   231,
+     469,   232,   467,   298,   139,   470,   233,   381,   382,   234,
+     123,   124,   235,   236,   237,   963,   238,   239,   964,   240,
+     250,   498,   264,   299,   515,    86,   499,   519,    87,   516,
+     686,   687,   520,   448,   139,   123,   124,    88,   884,    89,
+      90,    91,    92,    93,    94,    95,    96,    97,   838,   839,
+     840,  1154,   519,   299,  1155,   300,   301,   885,    46,   302,
+     303,   304,   454,   123,   124,   123,   124,   886,    48,    50,
+     722,    98,    99,   100,   101,   102,   103,   104,   105,   106,
      107,   108,   109,   110,   111,   112,   113,   114,   115,   116,
-     117,   137,   899,   137,   118,   119,   382,   900,    92,    93,
-      94,   137,   383,   385,   387,   120,   391,   137,   121,   122,
-     392,   851,   899,   123,   393,   400,   986,   901,   124,   125,
-     293,   401,   121,   122,   126,   121,   122,   402,   403,   404,
-     934,   939,   121,   122,   127,   935,   940,   128,   943,   471,
-     405,   292,   949,   944,   129,   130,   406,   950,   507,   131,
-     899,   119,   132,   951,   137,  1103,   133,   407,   458,   472,
-     828,   829,   830,  1104,   121,   122,   408,   839,   840,  1107,
-     513,   514,   410,   411,  1108,   265,   134,   135,   136,   412,
-     413,   266,   267,   268,   269,   270,   271,   414,   272,   293,
-     418,   294,   295,   490,  1122,   296,   297,   298,  1114,  1123,
-     137,   121,   122,  1072,   461,  1073,  1074,  1162,   473,  1125,
-     431,   439,  1163,   138,   137,   445,   454,   137,   476,   196,
-     657,   658,   659,   660,   137,   480,   481,  1091,  1092,  1093,
-    1094,   215,   482,   486,   256,   203,   257,   484,   485,   487,
-     520,   492,   495,   251,   497,   273,   498,   248,   501,   502,
-     263,   510,   516,   517,   518,   299,   137,   280,   216,   300,
-     318,   275,   519,   246,   319,   521,   259,   522,   523,   524,
-     217,   313,   525,   250,   218,   204,   331,   274,   526,   527,
-     355,   528,   529,   534,   530,   320,   531,   249,   532,   538,
-     264,   321,   533,   137,   544,   537,   356,   219,   252,   220,
-     535,   276,   536,   539,   541,   253,   540,   542,   545,   221,
-     543,   314,   281,   546,   548,   547,   332,   222,   549,   282,
-     223,   550,   551,   224,   225,   552,   553,   226,   227,   554,
-     228,   555,   556,   557,   558,   229,   357,   559,   230,   560,
-     561,   231,   232,   233,   562,   234,   244,   563,   564,   565,
-     258,   566,   567,   569,   570,   571,   572,   574,   575,   576,
-     577,   578,   579,  1126,    90,    91,    92,    93,    94,     1,
-       2,     3,     4,     5,     6,     7,     8,     9,    10,    11,
-      12,    13,   580,   581,   582,   583,   585,   587,   588,   589,
-     590,   591,   592,   593,   594,    98,    99,   100,   101,   102,
-     103,   104,   105,   596,   138,   597,   196,   110,   111,   112,
-     113,   114,   115,   116,   598,   205,   206,   207,   720,   119,
-     599,   600,   203,   601,   602,   604,   608,   609,   605,   612,
-     208,   613,   121,   122,   209,   210,   211,   123,   614,   615,
-     831,   841,   606,   355,   212,   611,   616,   213,   126,   617,
-     618,   619,   620,   622,   623,   214,   837,   842,   852,   356,
-     621,   624,   204,   625,   627,   628,   630,   635,   631,   636,
-     632,    90,    91,    92,    93,    94,   633,   634,   637,   638,
-     639,   640,   641,   648,   649,   650,   651,   652,   653,   656,
-     662,    30,   663,   664,   665,   673,   838,   843,   853,   357,
-     134,   135,    98,    99,   100,   101,   102,   103,   104,   105,
-     666,   667,   668,   669,   110,   111,   112,   113,   114,   115,
-     116,   117,   121,   122,   137,   670,   119,   293,   671,   674,
-     685,   724,   672,   690,   719,   771,   884,   775,   682,   121,
-     122,   779,   210,   783,   123,   683,   684,   686,   687,   689,
-     691,   212,   693,   694,   213,   695,   696,   697,   698,   699,
-     700,   701,   214,   702,   703,   714,   787,   803,   806,   810,
-     861,   340,   341,   342,   343,   344,   345,   346,   347,   348,
-     349,   350,   351,   352,   704,   865,   705,   885,   706,   708,
-     353,   354,   709,   710,   886,   716,   717,   718,   887,   888,
-     893,   894,   895,   896,   897,   898,   928,   134,   135,   903,
-     904,   906,   907,   970,   137,   910,   909,   912,   913,   915,
-     916,   924,   923,   927,   955,   926,   929,   930,   931,   932,
-     933,   137,   936,   937,   938,   945,   947,   960,  1090,   959,
-     971,   964,   963,   962,   966,   967,   968,   969,   975,   976,
-     977,   972,   978,   974,   973,   979,   983,  1064,   980,  1065,
-    1068,   981,   982,  1070,   984,  1053,  1054,  1085,  1086,  1138,
-    1089,  1105,  1106,  1055,  1110,  1111,  1112,  1096,   215,  1056,
-    1057,   299,  1058,  1060,   318,   300,  1061,   994,   319,  1017,
-     251,  1014,  1033,  1113,   248,   273,  1034,   313,   335,  1025,
-     331,  1062,  1067,  1023,  1039,   216,  1069,   280,  1037,   320,
-     246,   275,   831,  1035,   995,   321,   841,   217,  1120,  1022,
-     250,   218,  1128,  1097,  1036,  1075,   996,   274,   837,  1076,
-     997,   256,   842,   257,   249,  1098,  1099,   314,   852,  1100,
-     332,  1077,  1101,  1024,   219,   252,   220,   263,  1038,  1131,
-    1102,   276,   253,   998,  1026,   999,   221,  1115,  1116,  1040,
-    1117,  1027,   281,   259,   222,  1000,  1041,   223,   838,   282,
-     224,   225,   843,  1001,   226,   227,  1002,   228,   853,  1003,
-    1004,  1078,   229,  1005,  1006,   230,  1007,   264,   231,   232,
-     233,  1008,   234,   244,  1009,  1129,  1133,  1010,  1011,  1012,
-    1124,  1013,  1019,  1018,  1136,  1158,  1159,  1160,  1132,  1164,
-    1168,   707,   721,  1135,   573,   715,   568,   723,   985,  1030,
-     965,   987,   873,  1052,  1137,  1051,  1059,   610,  1165,  1063,
-     989,   988,  1029,  1127,  1166,   993,  1167,  1170,  1171,   991,
-     990,   870,   992,  1130,  1050,   722,  1066,   258,  1071,   584,
-    1049,  1088,   607,  1087,   586,  1048,  1134,   860,  1118,  1084,
-    1156,  1169,     0,     0,     0,     0,   595,     0,     0,     0,
-       0,     0,     0,     0,   603,     0,     0,     0,     0,     0,
-     994,     0,  1017,     0,  1014,  1033,     0,     0,     0,  1034,
-       0,     0,  1025,     0,     0,  1075,  1023,  1039,     0,  1076,
-       0,  1037,   626,     0,     0,     0,  1035,   995,   629,     0,
-       0,  1077,  1022,     0,     0,     0,     0,  1036,     0,   996,
-       0,     0,     0,   997,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,  1024,     0,     0,     0,
-       0,  1038,     0,     0,     0,     0,   998,  1026,   999,     0,
-       0,  1078,  1040,     0,  1027,     0,     0,     0,  1000,  1041,
-       0,     0,     0,     0,     0,     0,  1001,     0,     0,  1002,
-       0,     0,  1003,  1004,     0,     0,  1005,  1006,     0,  1007,
-       0,     0,     0,     0,  1008,     0,     0,  1009,     0,     0,
-    1010,  1011,  1012,     0,  1013,  1019,  1018
+     117,   118,   119,   888,   909,    52,   120,   121,   889,   910,
+     909,    54,   139,   339,   340,   911,  1084,   122,  1085,  1086,
+     123,   124,   944,   949,    56,   125,    84,   945,   950,  1027,
+     126,   127,  1028,  1040,   689,   690,   128,   139,   953,    32,
+      33,    34,    35,   954,    58,   959,   129,   278,   879,   130,
+     960,    60,   652,   653,   654,   655,   131,   132,   515,   390,
+      62,   133,   387,   961,   134,   139,   388,   139,   135,    90,
+      91,    92,    93,    94,   824,   825,   826,   827,   828,   829,
+      92,    93,    94,   656,   389,   121,   996,   909,   136,   137,
+     138,   466,  1115,   393,   391,   479,  1116,   261,   123,   124,
+      98,    99,   100,   101,   102,   103,   104,   105,   106,   107,
+     216,   397,   139,   217,   112,   113,   114,   115,   116,   117,
+     118,   398,   209,   210,   211,  1119,   121,   498,  1134,   469,
+    1120,  1174,  1126,  1135,  1137,   121,  1175,   212,   399,   123,
+     124,   213,   214,   215,   125,   406,   521,   522,   123,   124,
+     407,   216,   408,   409,   217,   128,   410,   411,   412,   271,
+     413,   480,   218,   414,   415,   272,   273,   274,   275,   276,
+     277,   416,   278,   418,   299,   321,   300,   301,   322,   323,
+     667,   668,   669,   670,   419,   420,   123,   124,   421,   422,
+     139,   140,  1103,  1104,  1105,  1106,   426,   200,   439,   447,
+     123,   124,   453,   462,   481,   484,   488,   136,   137,   219,
+     490,   489,   262,   207,   263,   492,   493,   494,   495,   528,
+     500,   257,   503,   279,   505,   254,   506,   509,   269,   510,
+     518,   139,   524,   305,   525,   286,   220,   306,   324,   281,
+     139,   252,   325,   526,   265,   858,   859,   860,   221,   319,
+     527,   256,   222,   208,   337,   280,   529,   530,   361,   531,
+     537,   532,   533,   326,   534,   255,   535,   536,   270,   327,
+     538,   539,   540,   548,   362,   223,   258,   224,   139,   282,
+     542,   541,   546,   259,    92,    93,    94,   225,   543,   320,
+     287,   544,   861,   545,   338,   226,   551,   288,   227,   547,
+     549,   228,   229,   550,   552,   230,   231,   553,   232,   554,
+     555,   556,   557,   233,   363,   558,   234,   559,   560,   235,
+     236,   237,   561,   238,   239,   562,   240,   250,   563,   564,
+     565,   264,   566,   567,   568,  1138,   569,   571,   120,   121,
+     299,   572,    90,    91,    92,    93,    94,   573,   574,   575,
+     570,   576,   123,   124,   577,   579,   580,   581,   584,   582,
+     585,   586,   590,   587,   588,  1043,  1044,   589,   591,   592,
+     593,   608,   595,    98,    99,   100,   101,   102,   103,   104,
+     105,   106,   107,   597,   140,   598,   200,   112,   113,   114,
+     115,   116,   117,   118,   119,   599,   600,   601,   730,   121,
+     299,   602,   207,   603,   604,   606,   607,   609,   610,   611,
+     612,   614,   123,   124,   618,   214,   619,   125,   615,   622,
+     841,   851,   616,   361,   216,   621,   623,   217,   625,   624,
+     626,   627,   628,   629,   630,   218,   847,   852,   862,   362,
+     738,   631,   208,   632,   139,   739,   740,   741,   742,   743,
+     744,   745,   746,   747,   748,   749,   750,   751,   752,   753,
+     754,   755,   756,   123,   124,   633,   634,   635,   637,   638,
+     640,   645,   641,   646,   642,   643,   848,   853,   863,   363,
+     136,   137,   644,   647,   648,   649,   650,   651,   658,   659,
+     299,   660,   661,   662,   663,   724,   666,    30,   672,   673,
+     674,   675,   683,   681,   139,   676,   677,   678,   679,   680,
+     682,   684,   346,   347,   348,   349,   350,   351,   352,   353,
+     354,   355,   356,   357,   358,   695,   692,   693,   694,   696,
+     697,   359,   360,     1,     2,     3,     4,     5,     6,     7,
+       8,     9,    10,    11,    12,    13,   700,   729,   734,   699,
+     701,   781,   785,   789,   793,   139,   797,   703,   704,   705,
+     706,   707,   708,   709,   710,   711,   712,   813,   713,   816,
+     714,   715,   716,   718,   719,   720,   726,   727,   728,   820,
+     871,   875,   894,   895,   896,   897,   898,   903,   904,   905,
+     906,   907,   908,   914,   139,   913,   917,   916,   919,   920,
+     922,   923,   926,   925,   934,   965,   933,   937,   936,   938,
+     939,   940,   941,   942,   943,   946,   947,   948,   955,   957,
+     970,   980,   969,   982,   974,   973,   972,   976,   977,   978,
+     979,   981,   983,   984,   985,   986,   987,   988,   989,   990,
+     991,   992,  1076,   994,   993,  1065,  1066,  1067,  1068,  1069,
+    1077,  1080,  1082,  1098,  1124,  1097,  1101,  1122,   219,  1070,
+    1072,   305,  1073,  1074,   324,   306,  1117,  1004,   325,  1029,
+     257,  1026,  1045,  1079,   254,   279,  1046,   319,   341,  1037,
+     337,  1081,  1118,  1035,  1051,   220,  1123,   286,  1049,   326,
+     252,   281,   841,  1047,  1005,   327,   851,   221,  1102,  1034,
+     256,   222,  1108,  1109,  1048,  1087,  1006,   280,   847,  1088,
+    1007,   262,   852,   263,   255,  1110,  1111,   320,   862,  1112,
+     338,  1089,  1113,  1036,   223,   258,   224,   269,  1050,  1114,
+    1125,   282,   259,  1008,  1038,  1009,   225,  1132,  1127,  1052,
+    1128,  1039,   287,   265,   226,  1010,  1053,   227,   848,   288,
+     228,   229,   853,  1011,   230,   231,  1012,   232,   863,  1013,
+    1014,  1090,   233,  1015,  1016,   234,  1017,   270,   235,   236,
+     237,  1018,   238,   239,  1019,   240,   250,  1020,  1021,  1022,
+    1140,  1023,  1024,  1129,  1025,  1031,  1030,  1143,  1145,  1150,
+    1148,  1136,  1170,  1171,  1172,  1176,  1180,   717,   725,   975,
+     583,   883,   997,   731,   995,  1042,   733,  1064,  1075,  1063,
+     620,  1144,  1141,   999,   998,  1147,  1149,  1071,  1139,  1041,
+    1177,   594,  1001,  1178,  1179,  1182,  1000,  1183,  1142,  1003,
+     264,  1002,  1062,  1099,  1100,  1061,   880,  1146,   613,  1060,
+    1130,  1168,   578,  1096,   617,  1083,   636,   732,  1181,     0,
+    1078,   870,     0,   639,     0,     0,     0,     0,     0,     0,
+       0,     0,  1004,     0,  1029,   596,  1026,  1045,     0,     0,
+       0,  1046,     0,     0,  1037,   605,     0,  1087,  1035,  1051,
+       0,  1088,     0,  1049,     0,     0,     0,     0,  1047,  1005,
+       0,     0,     0,  1089,  1034,     0,     0,     0,     0,  1048,
+       0,  1006,     0,     0,     0,  1007,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,  1036,     0,
+       0,     0,     0,  1050,     0,     0,     0,     0,  1008,  1038,
+    1009,     0,     0,  1090,  1052,     0,  1039,     0,     0,     0,
+    1010,  1053,     0,     0,     0,     0,     0,     0,  1011,     0,
+       0,  1012,     0,     0,  1013,  1014,     0,     0,  1015,  1016,
+       0,  1017,     0,     0,     0,     0,  1018,     0,     0,  1019,
+       0,     0,  1020,  1021,  1022,     0,  1023,  1024,     0,  1025,
+    1031,  1030
   };
 
   const short
   Dhcp4Parser::yycheck_[] =
   {
       67,    68,    69,    70,    71,    70,    73,    74,    75,    76,
-      73,    74,    64,   639,    69,   581,    71,    68,    69,    70,
-      71,   587,    73,    74,   914,    76,    72,   914,   914,    69,
-      18,     0,    74,   552,    69,    70,    71,     3,    74,   186,
-       6,    69,   121,   122,    69,    69,     5,    80,     7,     3,
-       9,   186,     6,   158,   159,   160,   161,    68,    69,    70,
-      71,     3,    73,    74,     3,    76,     8,     6,    69,    69,
-      69,    71,   111,   112,   113,   114,    69,   116,    71,     7,
-      69,     7,    15,    16,   189,     7,    19,     3,    69,    22,
-     609,    69,     8,     3,    69,    69,     6,     3,    69,    69,
-       7,    69,     8,    28,    29,    30,    69,   186,     7,    69,
-      12,    13,    69,    69,    69,    34,    69,    69,     7,    70,
-      39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
-      49,    50,    51,    52,    53,    54,    55,    56,     7,   166,
-      17,    18,   169,   170,   171,   172,    81,   124,   125,   126,
-     127,   128,   129,    20,    21,    80,    81,    82,    93,    94,
-      95,    94,    95,    82,     7,     7,     7,     3,   156,    94,
-      95,   106,     8,     3,   109,     7,     3,    10,     8,    94,
-      95,     8,   107,   108,     3,    11,     3,     3,    14,     8,
-       3,     8,     8,     3,     8,     8,     7,    23,     8,    25,
-      26,    27,    28,    29,    30,    31,    32,    33,   121,   122,
-      82,    83,    84,    85,    86,    87,     6,  1107,   118,   119,
-    1107,  1107,    94,    95,   139,   140,   141,   186,   187,   188,
-     189,    57,    58,    59,    60,    61,    62,    63,    64,    65,
+      73,    74,    64,   649,    69,   591,    71,    68,    69,    70,
+      71,   597,    73,    74,   924,    76,    72,   924,   924,    69,
+      18,     0,    74,   562,    69,    70,    71,   188,    74,   123,
+     124,    69,    96,    97,    69,    69,     5,   188,     7,   168,
+       9,    82,   171,   172,   173,   174,     3,    68,    69,    70,
+      71,     8,    73,    74,     3,    76,     7,     6,    69,    69,
+      69,    71,   113,   114,   115,   116,    69,   118,    71,     7,
+      69,     7,    15,    16,   138,   139,    19,     3,    69,    22,
+     619,    69,     8,     3,    69,    69,     6,     3,    69,    69,
+       3,    69,     8,    34,   188,     8,    69,    12,    13,    69,
+      96,    97,    69,    69,    69,     3,    69,    69,     6,    69,
+      69,     3,    70,    84,     3,    11,     8,     3,    14,     8,
+      17,    18,     8,     3,   188,    96,    97,    23,     8,    25,
+      26,    27,    28,    29,    30,    31,    32,    33,   134,   135,
+     136,     3,     3,    84,     6,    86,    87,     8,     7,    90,
+      91,    92,     3,    96,    97,    96,    97,     8,     7,     7,
+     158,    57,    58,    59,    60,    61,    62,    63,    64,    65,
       66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
-      76,   186,     3,   186,    80,    81,     3,     8,    28,    29,
-      30,   186,     4,     3,     8,    91,     4,   186,    94,    95,
-       4,   186,     3,    99,     4,     4,   902,     8,   104,   105,
-      82,     4,    94,    95,   110,    94,    95,     4,     4,     4,
-       3,     3,    94,    95,   120,     8,     8,   123,     3,     8,
-       4,    34,     3,     8,   130,   131,     4,     8,     3,   135,
-       3,    81,   138,     8,   186,     8,   142,     4,     3,     3,
-     132,   133,   134,     8,    94,    95,     4,   136,   137,     3,
-     382,   383,     4,     4,     8,   105,   162,   163,   164,     4,
-       4,   111,   112,   113,   114,   115,   116,     4,   118,    82,
-       4,    84,    85,     3,     3,    88,    89,    90,     8,     8,
-     186,    94,    95,   165,     3,   167,   168,     3,     8,     8,
-       4,     4,     8,   440,   186,     4,     4,   186,     4,   446,
-     100,   101,   102,   103,   186,     4,     8,    35,    36,    37,
-      38,   458,     3,     8,   461,   446,   461,     4,     4,     3,
-     189,     4,     4,   458,     4,   472,     4,   458,     4,     4,
-     461,     4,     4,     4,     4,   482,   186,   472,   458,   482,
-     487,   472,     4,   458,   487,   189,   461,   189,     4,     4,
-     458,   482,     4,   458,   458,   446,   487,   472,     4,     4,
-     507,     4,   187,   189,   187,   487,   187,   458,   187,     4,
-     461,   487,   187,   186,     4,   187,   507,   458,   458,   458,
-     188,   472,   188,   187,   189,   458,   187,   189,     4,   458,
-     189,   482,   472,     4,     4,   189,   487,   458,     4,   472,
-     458,     4,     4,   458,   458,     4,     4,   458,   458,     4,
-     458,     4,     4,     4,     4,   458,   507,     4,   458,   187,
-       4,   458,   458,   458,     4,   458,   458,     4,     4,     4,
-     461,     4,     4,     4,     4,     4,   189,     4,     4,     4,
-       4,     4,     4,  1089,    26,    27,    28,    29,    30,   173,
-     174,   175,   176,   177,   178,   179,   180,   181,   182,   183,
-     184,   185,   187,     4,     4,     4,     4,     4,     4,     4,
-       4,     4,     4,     4,     4,    57,    58,    59,    60,    61,
-      62,    63,    64,     4,   631,     4,   633,    69,    70,    71,
-      72,    73,    74,    75,   187,    77,    78,    79,   630,    81,
-       4,     4,   633,     4,   189,     4,     4,     4,   189,     4,
-      92,     4,    94,    95,    96,    97,    98,    99,   187,     4,
-     667,   668,   189,   670,   106,   189,   187,   109,   110,   187,
-       4,     4,   189,     4,     4,   117,   667,   668,   669,   670,
-     189,     4,   633,     4,     4,   187,     4,   186,     7,   186,
-       7,    26,    27,    28,    29,    30,     7,     7,   186,     7,
-       7,     5,   186,   186,   186,     5,     5,     5,     5,   186,
-       5,     7,     5,     5,     5,     5,   667,   668,   669,   670,
-     162,   163,    57,    58,    59,    60,    61,    62,    63,    64,
-       7,     7,     7,     7,    69,    70,    71,    72,    73,    74,
-      75,    76,    94,    95,   186,     7,    81,    82,   186,     5,
-       5,    24,   186,     7,     5,     7,     4,     7,   186,    94,
-      95,     7,    97,     7,    99,   186,   186,   186,   186,   186,
-     186,   106,   186,   186,   109,   186,   186,   186,   186,   186,
-     186,   186,   117,   186,   186,   157,     7,     7,     7,     7,
-       7,   143,   144,   145,   146,   147,   148,   149,   150,   151,
-     152,   153,   154,   155,   186,     7,   186,     4,   186,   186,
-     162,   163,   186,   186,     4,   186,   186,   186,     4,     4,
-       4,     4,     4,     4,     4,     4,     4,   162,   163,     6,
-       3,     6,     3,   187,   186,     3,     6,     6,     3,     6,
-       3,     3,     6,     3,   186,     6,     4,     4,     4,     4,
-       4,   186,     4,     4,     4,     4,     4,     3,   186,     6,
-     189,     4,     6,     8,     4,     4,     4,     4,     4,     4,
-       4,   187,     4,   187,   189,   187,   189,     4,   187,     4,
-       4,   187,   187,     4,   187,   187,   187,     6,     3,     7,
-       4,     8,     8,   187,     4,     8,     3,   186,   905,   187,
-     187,   908,   187,   189,   911,   908,   187,   914,   911,   914,
-     905,   914,   919,     8,   905,   922,   919,   908,   925,   914,
-     911,   187,   189,   914,   919,   905,   187,   922,   919,   911,
-     905,   922,   939,   919,   914,   911,   943,   905,     4,   914,
-     905,   905,     4,   186,   919,   952,   914,   922,   939,   952,
-     914,   958,   943,   958,   905,   186,   186,   908,   949,   186,
-     911,   952,   186,   914,   905,   905,   905,   958,   919,     4,
-     186,   922,   905,   914,   914,   914,   905,   186,   186,   919,
-     186,   914,   922,   958,   905,   914,   919,   905,   939,   922,
-     905,   905,   943,   914,   905,   905,   914,   905,   949,   914,
-     914,   952,   905,   914,   914,   905,   914,   958,   905,   905,
-     905,   914,   905,   905,   914,   189,     4,   914,   914,   914,
-     186,   914,   914,   914,     5,     4,     4,     4,   187,     4,
-       4,   609,   631,   186,   446,   622,   440,   633,   899,   917,
-     878,   904,   719,   927,   186,   925,   934,   490,   189,   939,
-     907,   905,   916,  1107,   187,   913,   187,   186,   186,   910,
-     908,   690,   911,  1112,   924,   632,   943,   958,   949,   458,
-     922,   960,   487,   958,   461,   920,  1122,   670,  1070,   953,
-    1142,  1162,    -1,    -1,    -1,    -1,   472,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   482,    -1,    -1,    -1,    -1,    -1,
-    1107,    -1,  1107,    -1,  1107,  1112,    -1,    -1,    -1,  1112,
-      -1,    -1,  1107,    -1,    -1,  1122,  1107,  1112,    -1,  1122,
-      -1,  1112,   507,    -1,    -1,    -1,  1112,  1107,   511,    -1,
-      -1,  1122,  1107,    -1,    -1,    -1,    -1,  1112,    -1,  1107,
-      -1,    -1,    -1,  1107,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,  1107,    -1,    -1,    -1,
-      -1,  1112,    -1,    -1,    -1,    -1,  1107,  1107,  1107,    -1,
-      -1,  1122,  1112,    -1,  1107,    -1,    -1,    -1,  1107,  1112,
-      -1,    -1,    -1,    -1,    -1,    -1,  1107,    -1,    -1,  1107,
-      -1,    -1,  1107,  1107,    -1,    -1,  1107,  1107,    -1,  1107,
-      -1,    -1,    -1,    -1,  1107,    -1,    -1,  1107,    -1,    -1,
-    1107,  1107,  1107,    -1,  1107,  1107,  1107
+      76,    77,    78,     3,     3,     7,    82,    83,     8,     8,
+       3,     7,   188,   123,   124,     8,   167,    93,   169,   170,
+      96,    97,     3,     3,     7,   101,    10,     8,     8,  1119,
+     106,   107,  1119,  1119,    20,    21,   112,   188,     3,   188,
+     189,   190,   191,     8,     7,     3,   122,   120,   121,   125,
+       8,     7,   160,   161,   162,   163,   132,   133,     3,     8,
+       7,   137,     6,     8,   140,   188,     3,   188,   144,    26,
+      27,    28,    29,    30,   126,   127,   128,   129,   130,   131,
+      28,    29,    30,   191,     4,    83,   912,     3,   164,   165,
+     166,     3,     8,     8,     3,     8,     8,    95,    96,    97,
+      57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
+     108,     4,   188,   111,    71,    72,    73,    74,    75,    76,
+      77,     4,    79,    80,    81,     3,    83,     3,     3,     3,
+       8,     3,     8,     8,     8,    83,     8,    94,     4,    96,
+      97,    98,    99,   100,   101,     4,   388,   389,    96,    97,
+       4,   108,     4,     4,   111,   112,     4,     4,     4,   107,
+       4,     3,   119,     4,     4,   113,   114,   115,   116,   117,
+     118,     4,   120,     4,    84,    85,    86,    87,    88,    89,
+     102,   103,   104,   105,     4,     4,    96,    97,     4,     4,
+     188,   448,    35,    36,    37,    38,     4,   454,     4,     4,
+      96,    97,     4,     4,     8,     4,     4,   164,   165,   466,
+       3,     8,   469,   454,   469,     4,     4,     8,     3,   191,
+       4,   466,     4,   480,     4,   466,     4,     4,   469,     4,
+       4,   188,     4,   490,     4,   480,   466,   490,   495,   480,
+     188,   466,   495,     4,   469,   141,   142,   143,   466,   490,
+       4,   466,   466,   454,   495,   480,   191,   191,   515,     4,
+     189,     4,     4,   495,     4,   466,     4,     4,   469,   495,
+     189,   189,   189,     4,   515,   466,   466,   466,   188,   480,
+     191,   189,   189,   466,    28,    29,    30,   466,   190,   490,
+     480,   190,   188,   190,   495,   466,   191,   480,   466,   189,
+     189,   466,   466,   189,   191,   466,   466,   191,   466,     4,
+       4,     4,   191,   466,   515,     4,   466,     4,     4,   466,
+     466,   466,     4,   466,   466,     4,   466,   466,     4,     4,
+       4,   469,     4,     4,     4,  1101,     4,     4,    82,    83,
+      84,     4,    26,    27,    28,    29,    30,     4,     4,     4,
+     189,     4,    96,    97,     4,     4,     4,     4,     4,   191,
+       4,     4,   189,     4,     4,   109,   110,     4,     4,     4,
+       4,   189,     4,    57,    58,    59,    60,    61,    62,    63,
+      64,    65,    66,     4,   641,     4,   643,    71,    72,    73,
+      74,    75,    76,    77,    78,     4,     4,     4,   640,    83,
+      84,     4,   643,     4,     4,     4,     4,     4,     4,     4,
+     191,     4,    96,    97,     4,    99,     4,   101,   191,     4,
+     677,   678,   191,   680,   108,   191,     4,   111,     4,   189,
+     189,   189,     4,     4,   191,   119,   677,   678,   679,   680,
+      34,   191,   643,     4,   188,    39,    40,    41,    42,    43,
+      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
+      54,    55,    56,    96,    97,     4,     4,     4,     4,   189,
+       4,   188,     7,   188,     7,     7,   677,   678,   679,   680,
+     164,   165,     7,   188,     7,     7,     5,   188,   188,   188,
+      84,     5,     5,     5,     5,   159,   188,     7,     5,     5,
+       5,     5,     5,   188,   188,     7,     7,     7,     7,     7,
+     188,     5,   145,   146,   147,   148,   149,   150,   151,   152,
+     153,   154,   155,   156,   157,     5,   188,   188,   188,   188,
+     188,   164,   165,   175,   176,   177,   178,   179,   180,   181,
+     182,   183,   184,   185,   186,   187,     7,     5,    24,   188,
+     188,     7,     7,     7,     7,   188,     7,   188,   188,   188,
+     188,   188,   188,   188,   188,   188,   188,     7,   188,     7,
+     188,   188,   188,   188,   188,   188,   188,   188,   188,     7,
+       7,     7,     4,     4,     4,     4,     4,     4,     4,     4,
+       4,     4,     4,     3,   188,     6,     3,     6,     6,     3,
+       6,     3,     3,     6,     3,   188,     6,     3,     6,     4,
+       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
+       3,   189,     6,   189,     4,     6,     8,     4,     4,     4,
+       4,   191,   191,   189,     4,     4,     4,     4,   189,   189,
+     189,   189,     4,   189,   191,   189,   189,   189,   189,   189,
+       4,     4,     4,     3,     3,     6,     4,     4,   915,   189,
+     191,   918,   189,   189,   921,   918,     8,   924,   921,   924,
+     915,   924,   929,   191,   915,   932,   929,   918,   935,   924,
+     921,   189,     8,   924,   929,   915,     8,   932,   929,   921,
+     915,   932,   949,   929,   924,   921,   953,   915,   188,   924,
+     915,   915,   188,   188,   929,   962,   924,   932,   949,   962,
+     924,   968,   953,   968,   915,   188,   188,   918,   959,   188,
+     921,   962,   188,   924,   915,   915,   915,   968,   929,   188,
+       8,   932,   915,   924,   924,   924,   915,     4,   188,   929,
+     188,   924,   932,   968,   915,   924,   929,   915,   949,   932,
+     915,   915,   953,   924,   915,   915,   924,   915,   959,   924,
+     924,   962,   915,   924,   924,   915,   924,   968,   915,   915,
+     915,   924,   915,   915,   924,   915,   915,   924,   924,   924,
+       4,   924,   924,   188,   924,   924,   924,     4,     4,     7,
+       5,   188,     4,     4,     4,     4,     4,   619,   632,   888,
+     454,   729,   914,   641,   909,   927,   643,   937,   949,   935,
+     498,   189,   191,   917,   915,   188,   188,   944,  1119,   926,
+     191,   466,   920,   189,   189,   188,   918,   188,  1124,   923,
+     968,   921,   934,   968,   970,   932,   700,  1134,   490,   930,
+    1082,  1154,   448,   963,   495,   959,   515,   642,  1174,    -1,
+     953,   680,    -1,   519,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,  1119,    -1,  1119,   469,  1119,  1124,    -1,    -1,
+      -1,  1124,    -1,    -1,  1119,   480,    -1,  1134,  1119,  1124,
+      -1,  1134,    -1,  1124,    -1,    -1,    -1,    -1,  1124,  1119,
+      -1,    -1,    -1,  1134,  1119,    -1,    -1,    -1,    -1,  1124,
+      -1,  1119,    -1,    -1,    -1,  1119,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1119,    -1,
+      -1,    -1,    -1,  1124,    -1,    -1,    -1,    -1,  1119,  1119,
+    1119,    -1,    -1,  1134,  1124,    -1,  1119,    -1,    -1,    -1,
+    1119,  1124,    -1,    -1,    -1,    -1,    -1,    -1,  1119,    -1,
+      -1,  1119,    -1,    -1,  1119,  1119,    -1,    -1,  1119,  1119,
+      -1,  1119,    -1,    -1,    -1,    -1,  1119,    -1,    -1,  1119,
+      -1,    -1,  1119,  1119,  1119,    -1,  1119,  1119,    -1,  1119,
+    1119,  1119
   };
 
   const short
   Dhcp4Parser::yystos_[] =
   {
-       0,   173,   174,   175,   176,   177,   178,   179,   180,   181,
-     182,   183,   184,   185,   191,   192,   193,   194,   195,   196,
-     197,   198,   199,   200,   201,   202,   203,   204,     0,     5,
-       7,     9,   186,   187,   188,   189,   205,   206,   207,   212,
-       7,   221,     7,   225,     7,   264,     7,   369,     7,   449,
-       7,   465,     7,   401,     7,   407,     7,   431,     7,   345,
-       7,   530,     7,   561,   213,   208,   222,   226,   265,   370,
-     450,   466,   402,   408,   432,   346,   531,   562,   205,   214,
-     215,   186,   210,   211,    10,   223,    11,    14,    23,    25,
+       0,   175,   176,   177,   178,   179,   180,   181,   182,   183,
+     184,   185,   186,   187,   193,   194,   195,   196,   197,   198,
+     199,   200,   201,   202,   203,   204,   205,   206,     0,     5,
+       7,     9,   188,   189,   190,   191,   207,   208,   209,   214,
+       7,   223,     7,   227,     7,   268,     7,   373,     7,   453,
+       7,   469,     7,   405,     7,   411,     7,   435,     7,   349,
+       7,   534,     7,   565,   215,   210,   224,   228,   269,   374,
+     454,   470,   406,   412,   436,   350,   535,   566,   207,   216,
+     217,   188,   212,   213,    10,   225,    11,    14,    23,    25,
       26,    27,    28,    29,    30,    31,    32,    33,    57,    58,
       59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
-      69,    70,    71,    72,    73,    74,    75,    76,    80,    81,
-      91,    94,    95,    99,   104,   105,   110,   120,   123,   130,
-     131,   135,   138,   142,   162,   163,   164,   186,   220,   227,
-     228,   229,   230,   231,   232,   233,   234,   235,   236,   237,
-     238,   240,   241,   242,   243,   244,   245,   246,   249,   251,
-     253,   255,   257,   258,   259,   260,   275,   277,   283,   285,
-     323,   332,   339,   353,   363,   387,   391,   399,   425,   455,
-     457,   459,   470,   472,   474,   497,   509,   510,   518,   528,
-     559,   568,    15,    16,    19,    22,   220,   262,   263,   266,
-     268,   271,   274,   455,   457,    77,    78,    79,    92,    96,
-      97,    98,   106,   109,   117,   220,   229,   230,   231,   232,
-     233,   234,   235,   236,   241,   242,   243,   244,   245,   246,
-     249,   251,   253,   255,   257,   371,   372,   373,   375,   377,
-     379,   381,   383,   385,   387,   390,   425,   443,   455,   457,
-     459,   470,   472,   474,   494,    93,   220,   383,   385,   425,
-     451,   452,   453,   455,   457,   105,   111,   112,   113,   114,
-     115,   116,   118,   220,   425,   455,   457,   467,   468,   469,
-     470,   472,   474,   476,   480,   482,   484,   486,   488,   490,
-     492,   399,    34,    82,    84,    85,    88,    89,    90,   220,
-     303,   409,   410,   411,   412,   413,   414,   415,   417,   419,
-     421,   422,   424,   455,   457,    83,    86,    87,   220,   303,
-     413,   419,   433,   434,   435,   436,   437,   439,   440,   441,
-     442,   455,   457,   121,   122,   220,   347,   348,   349,   351,
-     143,   144,   145,   146,   147,   148,   149,   150,   151,   152,
-     153,   154,   155,   162,   163,   220,   455,   457,   532,   533,
-     534,   535,   537,   538,   540,   541,   542,   545,   547,   549,
-     550,   551,   553,   555,   557,    12,    13,   563,   564,   565,
-     567,     6,     3,     4,     8,     3,   224,     8,   560,   261,
-     278,     4,     4,     4,   471,   473,   475,   276,   284,   286,
-       4,     4,     4,     4,     4,     4,     4,     4,     4,   239,
-       4,     4,     4,     4,     4,   247,   250,   252,     4,   364,
-     400,   426,   392,   456,   458,   388,   324,   498,   460,   340,
-     354,     4,   333,   511,   519,   529,   254,   256,   569,     4,
-       3,     8,   267,   269,   272,     4,     3,     8,   376,   378,
-     380,   444,   374,   382,     4,   386,   384,   495,     3,     8,
-     454,     3,     8,   493,   481,   483,   487,   485,   491,   489,
-     477,     8,     3,     8,   416,   304,     4,   420,   418,   423,
-       4,     8,     3,   438,     4,     4,     8,     3,   350,   352,
-       3,     8,     4,   548,   536,     4,   539,     4,     4,   543,
-     546,     4,     4,   552,   554,   556,   558,     3,     8,   566,
-       4,     3,     8,   205,   205,   186,     4,     4,     4,     4,
-     189,   189,   189,     4,     4,     4,     4,     4,     4,   187,
-     187,   187,   187,   187,   189,   188,   188,   187,     4,   187,
-     187,   189,   189,   189,     4,     4,     4,   189,     4,     4,
+      69,    70,    71,    72,    73,    74,    75,    76,    77,    78,
+      82,    83,    93,    96,    97,   101,   106,   107,   112,   122,
+     125,   132,   133,   137,   140,   144,   164,   165,   166,   188,
+     222,   229,   230,   231,   232,   233,   234,   235,   236,   237,
+     238,   239,   240,   241,   242,   244,   245,   246,   247,   248,
+     249,   250,   253,   255,   257,   259,   261,   262,   263,   264,
+     279,   281,   287,   289,   327,   336,   343,   357,   367,   391,
+     395,   403,   429,   459,   461,   463,   474,   476,   478,   501,
+     513,   514,   522,   532,   563,   572,    15,    16,    19,    22,
+     222,   266,   267,   270,   272,   275,   278,   459,   461,    79,
+      80,    81,    94,    98,    99,   100,   108,   111,   119,   222,
+     231,   232,   233,   234,   235,   236,   237,   238,   239,   240,
+     245,   246,   247,   248,   249,   250,   253,   255,   257,   259,
+     261,   375,   376,   377,   379,   381,   383,   385,   387,   389,
+     391,   394,   429,   447,   459,   461,   463,   474,   476,   478,
+     498,    95,   222,   387,   389,   429,   455,   456,   457,   459,
+     461,   107,   113,   114,   115,   116,   117,   118,   120,   222,
+     429,   459,   461,   471,   472,   473,   474,   476,   478,   480,
+     484,   486,   488,   490,   492,   494,   496,   403,    34,    84,
+      86,    87,    90,    91,    92,   222,   307,   413,   414,   415,
+     416,   417,   418,   419,   421,   423,   425,   426,   428,   459,
+     461,    85,    88,    89,   222,   307,   417,   423,   437,   438,
+     439,   440,   441,   443,   444,   445,   446,   459,   461,   123,
+     124,   222,   351,   352,   353,   355,   145,   146,   147,   148,
+     149,   150,   151,   152,   153,   154,   155,   156,   157,   164,
+     165,   222,   459,   461,   536,   537,   538,   539,   541,   542,
+     544,   545,   546,   549,   551,   553,   554,   555,   557,   559,
+     561,    12,    13,   567,   568,   569,   571,     6,     3,     4,
+       8,     3,   226,     8,   564,   265,   282,     4,     4,     4,
+     475,   477,   479,   280,   288,   290,     4,     4,     4,     4,
+       4,     4,     4,     4,     4,     4,     4,   243,     4,     4,
+       4,     4,     4,   251,   254,   256,     4,   368,   404,   430,
+     396,   460,   462,   392,   328,   502,   464,   344,   358,     4,
+     337,   515,   523,   533,   258,   260,   573,     4,     3,     8,
+     271,   273,   276,     4,     3,     8,   380,   382,   384,   448,
+     378,   386,     4,   390,   388,   499,     3,     8,   458,     3,
+       8,   497,   485,   487,   491,   489,   495,   493,   481,     8,
+       3,     8,   420,   308,     4,   424,   422,   427,     4,     8,
+       3,   442,     4,     4,     8,     3,   354,   356,     3,     8,
+       4,   552,   540,     4,   543,     4,     4,   547,   550,     4,
+       4,   556,   558,   560,   562,     3,     8,   570,     4,     3,
+       8,   207,   207,   188,     4,     4,     4,     4,   191,   191,
+     191,     4,     4,     4,     4,     4,     4,   189,   189,   189,
+     189,   189,   191,   190,   190,   190,   189,   189,     4,   189,
+     189,   191,   191,   191,     4,     4,     4,   191,     4,     4,
        4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
-     187,     4,     4,     4,     4,     4,     4,     4,   228,     4,
-       4,     4,   189,   263,     4,     4,     4,     4,     4,     4,
-     187,     4,     4,     4,   372,     4,   452,     4,     4,     4,
-       4,     4,     4,     4,     4,   469,     4,     4,   187,     4,
-       4,     4,   189,   411,     4,   189,   189,   435,     4,     4,
-     348,   189,     4,     4,   187,     4,   187,   187,     4,     4,
-     189,   189,     4,     4,     4,     4,   533,     4,   187,   564,
-       4,     7,     7,     7,     7,   186,   186,   186,     7,     7,
-       5,   186,   158,   159,   160,   161,   189,   248,   186,   186,
-       5,     5,     5,     5,   207,   209,   186,   100,   101,   102,
-     103,   389,     5,     5,     5,     5,     7,     7,     7,     7,
-       7,   186,   186,     5,     5,   216,    17,    18,   270,    20,
-      21,   273,   186,   186,   186,     5,   186,   186,   216,   186,
-       7,   186,   216,   186,   186,   186,   186,   186,   186,   186,
-     186,   186,   186,   186,   186,   186,   186,   209,   186,   186,
-     186,    18,   156,   544,   157,   248,   186,   186,   186,     5,
-     205,   227,   563,   262,    24,   279,   280,   281,    34,    39,
+     189,     4,     4,     4,     4,     4,     4,     4,   230,     4,
+       4,     4,   191,   267,     4,     4,     4,     4,     4,     4,
+     189,     4,     4,     4,   376,     4,   456,     4,     4,     4,
+       4,     4,     4,     4,     4,   473,     4,     4,   189,     4,
+       4,     4,   191,   415,     4,   191,   191,   439,     4,     4,
+     352,   191,     4,     4,   189,     4,   189,   189,     4,     4,
+     191,   191,     4,     4,     4,     4,   537,     4,   189,   568,
+       4,     7,     7,     7,     7,   188,   188,   188,     7,     7,
+       5,   188,   160,   161,   162,   163,   191,   252,   188,   188,
+       5,     5,     5,     5,   209,   211,   188,   102,   103,   104,
+     105,   393,     5,     5,     5,     5,     7,     7,     7,     7,
+       7,   188,   188,     5,     5,   218,    17,    18,   274,    20,
+      21,   277,   188,   188,   188,     5,   188,   188,   218,   188,
+       7,   188,   218,   188,   188,   188,   188,   188,   188,   188,
+     188,   188,   188,   188,   188,   188,   188,   211,   188,   188,
+     188,    18,   158,   548,   159,   252,   188,   188,   188,     5,
+     207,   229,   567,   266,    24,   283,   284,   285,    34,    39,
       40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
-      50,    51,    52,    53,    54,    55,    56,   220,   291,   292,
-     293,   296,   298,   300,   302,   303,   305,   306,   307,   308,
-     309,   310,   311,   312,   314,   316,   318,   320,   321,   322,
-     291,     7,   287,   288,   289,     7,   365,   366,   367,     7,
-     403,   404,   405,     7,   427,   428,   429,     7,   393,   394,
-     395,   111,   112,   113,   114,   116,   325,   326,   327,   328,
-     329,   330,   331,     7,   499,   500,     7,   461,   462,   463,
-       7,   341,   342,   343,   124,   125,   126,   127,   128,   129,
-     355,   356,   357,   358,   359,   360,   361,   362,   132,   133,
-     134,   220,   334,   335,   336,   337,   338,   455,   457,   136,
-     137,   220,   455,   457,   512,   513,   514,   516,   139,   140,
-     141,   186,   455,   457,   520,   521,   522,   523,   525,   526,
-     532,     7,   570,   571,   217,     7,   445,   446,   447,   119,
-     476,   478,   496,   287,     8,     8,     8,   282,     3,     8,
-     294,   297,   299,   301,     4,     4,     4,     4,     4,   313,
-     315,   317,   319,     4,     4,     4,     4,     4,     4,     3,
-       8,     8,   290,     6,     3,   368,     6,     3,   406,     6,
-       3,   430,     6,     3,   396,     6,     3,     3,     6,   501,
-       3,     6,   464,     6,     3,   344,     6,     3,     4,     4,
+      50,    51,    52,    53,    54,    55,    56,   222,   295,   296,
+     297,   300,   302,   304,   306,   307,   309,   310,   311,   312,
+     313,   314,   315,   316,   318,   320,   322,   324,   325,   326,
+     295,     7,   291,   292,   293,     7,   369,   370,   371,     7,
+     407,   408,   409,     7,   431,   432,   433,     7,   397,   398,
+     399,   113,   114,   115,   116,   118,   329,   330,   331,   332,
+     333,   334,   335,     7,   503,   504,     7,   465,   466,   467,
+       7,   345,   346,   347,   126,   127,   128,   129,   130,   131,
+     359,   360,   361,   362,   363,   364,   365,   366,   134,   135,
+     136,   222,   338,   339,   340,   341,   342,   459,   461,   138,
+     139,   222,   459,   461,   516,   517,   518,   520,   141,   142,
+     143,   188,   459,   461,   524,   525,   526,   527,   529,   530,
+     536,     7,   574,   575,   219,     7,   449,   450,   451,   121,
+     480,   482,   500,   291,     8,     8,     8,   286,     3,     8,
+     298,   301,   303,   305,     4,     4,     4,     4,     4,   317,
+     319,   321,   323,     4,     4,     4,     4,     4,     4,     3,
+       8,     8,   294,     6,     3,   372,     6,     3,   410,     6,
+       3,   434,     6,     3,   400,     6,     3,     3,     6,   505,
+       3,     6,   468,     6,     3,   348,     6,     3,     4,     4,
        4,     4,     4,     4,     3,     8,     4,     4,     4,     3,
-       8,   515,   517,     3,     8,     4,   524,     4,   527,     3,
-       8,     8,   572,     3,     6,   186,   218,   219,   448,     6,
-       3,   479,     8,     6,     4,   280,     4,     4,     4,     4,
-     187,   189,   187,   189,   187,     4,     4,     4,     4,   187,
-     187,   187,   187,   189,   187,   292,   291,   289,   371,   367,
-     409,   405,   433,   429,   220,   229,   230,   231,   232,   233,
-     234,   235,   236,   241,   242,   243,   244,   245,   246,   249,
-     251,   253,   255,   257,   303,   363,   381,   383,   385,   387,
-     397,   398,   425,   455,   457,   470,   472,   474,   494,   395,
-     326,   107,   108,   220,   303,   399,   425,   455,   457,   470,
-     472,   474,   502,   503,   504,   505,   506,   508,   500,   467,
-     463,   347,   343,   187,   187,   187,   187,   187,   187,   356,
-     189,   187,   187,   335,     4,     4,   513,   189,     4,   187,
-       4,   521,   165,   167,   168,   220,   303,   455,   457,   573,
-     574,   575,   576,   578,   571,     6,     3,   451,   447,     4,
-     186,    35,    36,    37,    38,   295,   186,   186,   186,   186,
-     186,   186,   186,     8,     8,     8,     8,     3,     8,   507,
-       4,     8,     3,     8,     8,   186,   186,   186,   205,   579,
-       4,   577,     3,     8,   186,     8,   216,   398,     4,   189,
-     504,     4,   187,     4,   574,   186,     5,   186,     7,   580,
-     581,   582,     3,     6,   166,   169,   170,   171,   172,   583,
-     584,   585,   587,   588,   589,   590,   581,   586,     4,     4,
-       4,   591,     3,     8,     4,   189,   187,   187,     4,   584,
-     186,   186
+       8,   519,   521,     3,     8,     4,   528,     4,   531,     3,
+       8,     8,   576,     3,     6,   188,   220,   221,   452,     6,
+       3,   483,     8,     6,     4,   284,     4,     4,     4,     4,
+     189,   191,   189,   191,   189,     4,     4,     4,     4,   189,
+     189,   189,   189,   191,   189,   296,   295,   293,   375,   371,
+     413,   409,   437,   433,   222,   231,   232,   233,   234,   235,
+     236,   237,   238,   239,   240,   245,   246,   247,   248,   249,
+     250,   253,   255,   257,   259,   261,   307,   367,   385,   387,
+     389,   391,   401,   402,   429,   459,   461,   474,   476,   478,
+     498,   399,   330,   109,   110,   222,   307,   403,   429,   459,
+     461,   474,   476,   478,   506,   507,   508,   509,   510,   512,
+     504,   471,   467,   351,   347,   189,   189,   189,   189,   189,
+     189,   360,   191,   189,   189,   339,     4,     4,   517,   191,
+       4,   189,     4,   525,   167,   169,   170,   222,   307,   459,
+     461,   577,   578,   579,   580,   582,   575,     6,     3,   455,
+     451,     4,   188,    35,    36,    37,    38,   299,   188,   188,
+     188,   188,   188,   188,   188,     8,     8,     8,     8,     3,
+       8,   511,     4,     8,     3,     8,     8,   188,   188,   188,
+     207,   583,     4,   581,     3,     8,   188,     8,   218,   402,
+       4,   191,   508,     4,   189,     4,   578,   188,     5,   188,
+       7,   584,   585,   586,     3,     6,   168,   171,   172,   173,
+     174,   587,   588,   589,   591,   592,   593,   594,   585,   590,
+       4,     4,     4,   595,     3,     8,     4,   191,   189,   189,
+       4,   588,   188,   188
   };
 
   const short
   Dhcp4Parser::yyr1_[] =
   {
-       0,   190,   192,   191,   193,   191,   194,   191,   195,   191,
-     196,   191,   197,   191,   198,   191,   199,   191,   200,   191,
-     201,   191,   202,   191,   203,   191,   204,   191,   205,   205,
-     205,   205,   205,   205,   205,   206,   208,   207,   209,   210,
-     210,   211,   211,   213,   212,   214,   214,   215,   215,   217,
-     216,   218,   218,   219,   219,   220,   222,   221,   224,   223,
-     226,   225,   227,   227,   228,   228,   228,   228,   228,   228,
-     228,   228,   228,   228,   228,   228,   228,   228,   228,   228,
-     228,   228,   228,   228,   228,   228,   228,   228,   228,   228,
-     228,   228,   228,   228,   228,   228,   228,   228,   228,   228,
-     228,   228,   228,   228,   228,   228,   228,   228,   228,   228,
-     228,   228,   228,   228,   228,   228,   229,   230,   231,   232,
-     233,   234,   235,   236,   237,   239,   238,   240,   241,   242,
-     243,   244,   245,   247,   246,   248,   248,   248,   248,   248,
-     250,   249,   252,   251,   254,   253,   256,   255,   257,   258,
-     259,   261,   260,   262,   262,   263,   263,   263,   263,   263,
-     263,   263,   265,   264,   267,   266,   269,   268,   270,   270,
-     272,   271,   273,   273,   274,   276,   275,   278,   277,   279,
-     279,   280,   282,   281,   284,   283,   286,   285,   287,   287,
-     288,   288,   290,   289,   291,   291,   292,   292,   292,   292,
-     292,   292,   292,   292,   292,   292,   292,   292,   292,   292,
-     292,   292,   292,   292,   292,   292,   292,   294,   293,   295,
-     295,   295,   295,   297,   296,   299,   298,   301,   300,   302,
-     304,   303,   305,   306,   307,   308,   309,   310,   311,   313,
-     312,   315,   314,   317,   316,   319,   318,   320,   321,   322,
-     324,   323,   325,   325,   326,   326,   326,   326,   326,   327,
-     328,   329,   330,   331,   333,   332,   334,   334,   335,   335,
-     335,   335,   335,   335,   336,   337,   338,   340,   339,   341,
-     341,   342,   342,   344,   343,   346,   345,   347,   347,   347,
-     348,   348,   350,   349,   352,   351,   354,   353,   355,   355,
-     356,   356,   356,   356,   356,   356,   357,   358,   359,   360,
-     361,   362,   364,   363,   365,   365,   366,   366,   368,   367,
-     370,   369,   371,   371,   372,   372,   372,   372,   372,   372,
-     372,   372,   372,   372,   372,   372,   372,   372,   372,   372,
-     372,   372,   372,   372,   372,   372,   372,   372,   372,   372,
-     372,   372,   372,   372,   372,   372,   372,   372,   372,   372,
-     372,   372,   374,   373,   376,   375,   378,   377,   380,   379,
-     382,   381,   384,   383,   386,   385,   388,   387,   389,   389,
-     389,   389,   390,   392,   391,   393,   393,   394,   394,   396,
-     395,   397,   397,   398,   398,   398,   398,   398,   398,   398,
-     398,   398,   398,   398,   398,   398,   398,   398,   398,   398,
-     398,   398,   398,   398,   398,   398,   398,   398,   398,   398,
-     398,   398,   398,   398,   398,   398,   400,   399,   402,   401,
-     403,   403,   404,   404,   406,   405,   408,   407,   409,   409,
-     410,   410,   411,   411,   411,   411,   411,   411,   411,   411,
-     411,   411,   412,   413,   414,   416,   415,   418,   417,   420,
-     419,   421,   423,   422,   424,   426,   425,   427,   427,   428,
-     428,   430,   429,   432,   431,   433,   433,   434,   434,   435,
-     435,   435,   435,   435,   435,   435,   435,   435,   436,   438,
-     437,   439,   440,   441,   442,   444,   443,   445,   445,   446,
-     446,   448,   447,   450,   449,   451,   451,   452,   452,   452,
-     452,   452,   452,   452,   454,   453,   456,   455,   458,   457,
-     460,   459,   461,   461,   462,   462,   464,   463,   466,   465,
-     467,   467,   468,   468,   469,   469,   469,   469,   469,   469,
-     469,   469,   469,   469,   469,   469,   469,   469,   469,   471,
-     470,   473,   472,   475,   474,   477,   476,   479,   478,   481,
-     480,   483,   482,   485,   484,   487,   486,   489,   488,   491,
-     490,   493,   492,   495,   494,   496,   496,   498,   497,   499,
-     499,   501,   500,   502,   502,   503,   503,   504,   504,   504,
-     504,   504,   504,   504,   504,   504,   504,   504,   505,   507,
-     506,   508,   509,   511,   510,   512,   512,   513,   513,   513,
-     513,   513,   515,   514,   517,   516,   519,   518,   520,   520,
-     521,   521,   521,   521,   521,   521,   522,   524,   523,   525,
-     527,   526,   529,   528,   531,   530,   532,   532,   533,   533,
-     533,   533,   533,   533,   533,   533,   533,   533,   533,   533,
-     533,   533,   533,   533,   533,   533,   534,   536,   535,   537,
-     539,   538,   540,   541,   543,   542,   544,   544,   546,   545,
-     548,   547,   549,   550,   552,   551,   554,   553,   556,   555,
-     558,   557,   560,   559,   562,   561,   563,   563,   564,   564,
-     566,   565,   567,   569,   568,   570,   570,   572,   571,   573,
-     573,   574,   574,   574,   574,   574,   574,   574,   575,   577,
-     576,   579,   578,   580,   580,   582,   581,   583,   583,   584,
-     584,   584,   584,   584,   586,   585,   587,   588,   589,   591,
-     590
+       0,   192,   194,   193,   195,   193,   196,   193,   197,   193,
+     198,   193,   199,   193,   200,   193,   201,   193,   202,   193,
+     203,   193,   204,   193,   205,   193,   206,   193,   207,   207,
+     207,   207,   207,   207,   207,   208,   210,   209,   211,   212,
+     212,   213,   213,   215,   214,   216,   216,   217,   217,   219,
+     218,   220,   220,   221,   221,   222,   224,   223,   226,   225,
+     228,   227,   229,   229,   230,   230,   230,   230,   230,   230,
+     230,   230,   230,   230,   230,   230,   230,   230,   230,   230,
+     230,   230,   230,   230,   230,   230,   230,   230,   230,   230,
+     230,   230,   230,   230,   230,   230,   230,   230,   230,   230,
+     230,   230,   230,   230,   230,   230,   230,   230,   230,   230,
+     230,   230,   230,   230,   230,   230,   230,   230,   231,   232,
+     233,   234,   235,   236,   237,   238,   239,   240,   241,   243,
+     242,   244,   245,   246,   247,   248,   249,   251,   250,   252,
+     252,   252,   252,   252,   254,   253,   256,   255,   258,   257,
+     260,   259,   261,   262,   263,   265,   264,   266,   266,   267,
+     267,   267,   267,   267,   267,   267,   269,   268,   271,   270,
+     273,   272,   274,   274,   276,   275,   277,   277,   278,   280,
+     279,   282,   281,   283,   283,   284,   286,   285,   288,   287,
+     290,   289,   291,   291,   292,   292,   294,   293,   295,   295,
+     296,   296,   296,   296,   296,   296,   296,   296,   296,   296,
+     296,   296,   296,   296,   296,   296,   296,   296,   296,   296,
+     296,   298,   297,   299,   299,   299,   299,   301,   300,   303,
+     302,   305,   304,   306,   308,   307,   309,   310,   311,   312,
+     313,   314,   315,   317,   316,   319,   318,   321,   320,   323,
+     322,   324,   325,   326,   328,   327,   329,   329,   330,   330,
+     330,   330,   330,   331,   332,   333,   334,   335,   337,   336,
+     338,   338,   339,   339,   339,   339,   339,   339,   340,   341,
+     342,   344,   343,   345,   345,   346,   346,   348,   347,   350,
+     349,   351,   351,   351,   352,   352,   354,   353,   356,   355,
+     358,   357,   359,   359,   360,   360,   360,   360,   360,   360,
+     361,   362,   363,   364,   365,   366,   368,   367,   369,   369,
+     370,   370,   372,   371,   374,   373,   375,   375,   376,   376,
+     376,   376,   376,   376,   376,   376,   376,   376,   376,   376,
+     376,   376,   376,   376,   376,   376,   376,   376,   376,   376,
+     376,   376,   376,   376,   376,   376,   376,   376,   376,   376,
+     376,   376,   376,   376,   376,   376,   376,   376,   378,   377,
+     380,   379,   382,   381,   384,   383,   386,   385,   388,   387,
+     390,   389,   392,   391,   393,   393,   393,   393,   394,   396,
+     395,   397,   397,   398,   398,   400,   399,   401,   401,   402,
+     402,   402,   402,   402,   402,   402,   402,   402,   402,   402,
+     402,   402,   402,   402,   402,   402,   402,   402,   402,   402,
+     402,   402,   402,   402,   402,   402,   402,   402,   402,   402,
+     402,   402,   402,   402,   404,   403,   406,   405,   407,   407,
+     408,   408,   410,   409,   412,   411,   413,   413,   414,   414,
+     415,   415,   415,   415,   415,   415,   415,   415,   415,   415,
+     416,   417,   418,   420,   419,   422,   421,   424,   423,   425,
+     427,   426,   428,   430,   429,   431,   431,   432,   432,   434,
+     433,   436,   435,   437,   437,   438,   438,   439,   439,   439,
+     439,   439,   439,   439,   439,   439,   440,   442,   441,   443,
+     444,   445,   446,   448,   447,   449,   449,   450,   450,   452,
+     451,   454,   453,   455,   455,   456,   456,   456,   456,   456,
+     456,   456,   458,   457,   460,   459,   462,   461,   464,   463,
+     465,   465,   466,   466,   468,   467,   470,   469,   471,   471,
+     472,   472,   473,   473,   473,   473,   473,   473,   473,   473,
+     473,   473,   473,   473,   473,   473,   473,   475,   474,   477,
+     476,   479,   478,   481,   480,   483,   482,   485,   484,   487,
+     486,   489,   488,   491,   490,   493,   492,   495,   494,   497,
+     496,   499,   498,   500,   500,   502,   501,   503,   503,   505,
+     504,   506,   506,   507,   507,   508,   508,   508,   508,   508,
+     508,   508,   508,   508,   508,   508,   509,   511,   510,   512,
+     513,   515,   514,   516,   516,   517,   517,   517,   517,   517,
+     519,   518,   521,   520,   523,   522,   524,   524,   525,   525,
+     525,   525,   525,   525,   526,   528,   527,   529,   531,   530,
+     533,   532,   535,   534,   536,   536,   537,   537,   537,   537,
+     537,   537,   537,   537,   537,   537,   537,   537,   537,   537,
+     537,   537,   537,   537,   538,   540,   539,   541,   543,   542,
+     544,   545,   547,   546,   548,   548,   550,   549,   552,   551,
+     553,   554,   556,   555,   558,   557,   560,   559,   562,   561,
+     564,   563,   566,   565,   567,   567,   568,   568,   570,   569,
+     571,   573,   572,   574,   574,   576,   575,   577,   577,   578,
+     578,   578,   578,   578,   578,   578,   579,   581,   580,   583,
+     582,   584,   584,   586,   585,   587,   587,   588,   588,   588,
+     588,   588,   590,   589,   591,   592,   593,   595,   594
   };
 
   const signed char
@@ -5222,69 +5249,69 @@ namespace isc { namespace dhcp {
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     3,     3,     3,     3,
-       3,     3,     3,     3,     3,     0,     4,     3,     3,     3,
-       3,     3,     3,     0,     4,     1,     1,     1,     1,     1,
-       0,     4,     0,     4,     0,     4,     0,     4,     3,     3,
-       3,     0,     6,     1,     3,     1,     1,     1,     1,     1,
-       1,     1,     0,     4,     0,     4,     0,     4,     1,     1,
-       0,     4,     1,     1,     3,     0,     6,     0,     6,     1,
-       3,     1,     0,     4,     0,     6,     0,     6,     0,     1,
-       1,     3,     0,     4,     1,     3,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     3,     3,
+       3,     3,     3,     3,     3,     3,     3,     3,     3,     0,
+       4,     3,     3,     3,     3,     3,     3,     0,     4,     1,
+       1,     1,     1,     1,     0,     4,     0,     4,     0,     4,
+       0,     4,     3,     3,     3,     0,     6,     1,     3,     1,
+       1,     1,     1,     1,     1,     1,     0,     4,     0,     4,
+       0,     4,     1,     1,     0,     4,     1,     1,     3,     0,
+       6,     0,     6,     1,     3,     1,     0,     4,     0,     6,
+       0,     6,     0,     1,     1,     3,     0,     4,     1,     3,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     0,     4,     1,
-       1,     1,     1,     0,     4,     0,     4,     0,     4,     3,
-       0,     4,     3,     3,     3,     3,     3,     3,     3,     0,
-       4,     0,     4,     0,     4,     0,     4,     3,     3,     3,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     0,     4,     1,     1,     1,     1,     0,     4,     0,
+       4,     0,     4,     3,     0,     4,     3,     3,     3,     3,
+       3,     3,     3,     0,     4,     0,     4,     0,     4,     0,
+       4,     3,     3,     3,     0,     6,     1,     3,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     0,     6,
+       1,     3,     1,     1,     1,     1,     1,     1,     3,     3,
+       3,     0,     6,     0,     1,     1,     3,     0,     4,     0,
+       4,     1,     3,     1,     1,     1,     0,     4,     0,     4,
        0,     6,     1,     3,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     0,     6,     1,     3,     1,     1,
-       1,     1,     1,     1,     3,     3,     3,     0,     6,     0,
-       1,     1,     3,     0,     4,     0,     4,     1,     3,     1,
-       1,     1,     0,     4,     0,     4,     0,     6,     1,     3,
-       1,     1,     1,     1,     1,     1,     3,     3,     3,     3,
-       3,     3,     0,     6,     0,     1,     1,     3,     0,     4,
-       0,     4,     1,     3,     1,     1,     1,     1,     1,     1,
+       3,     3,     3,     3,     3,     3,     0,     6,     0,     1,
+       1,     3,     0,     4,     0,     4,     1,     3,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     0,     4,
+       0,     4,     0,     4,     0,     4,     0,     4,     0,     4,
+       0,     4,     0,     4,     1,     1,     1,     1,     3,     0,
+       6,     0,     1,     1,     3,     0,     4,     1,     3,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     0,     4,     0,     4,     0,     4,     0,     4,
-       0,     4,     0,     4,     0,     4,     0,     4,     1,     1,
-       1,     1,     3,     0,     6,     0,     1,     1,     3,     0,
-       4,     1,     3,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     0,     6,     0,     4,     0,     1,
+       1,     3,     0,     4,     0,     4,     0,     1,     1,     3,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     0,     6,     0,     4,
+       1,     3,     1,     0,     4,     0,     4,     0,     4,     1,
+       0,     4,     3,     0,     6,     0,     1,     1,     3,     0,
+       4,     0,     4,     0,     1,     1,     3,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     0,     4,     1,
+       1,     3,     3,     0,     6,     0,     1,     1,     3,     0,
+       4,     0,     4,     1,     3,     1,     1,     1,     1,     1,
+       1,     1,     0,     4,     0,     4,     0,     4,     0,     6,
        0,     1,     1,     3,     0,     4,     0,     4,     0,     1,
        1,     3,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     3,     1,     0,     4,     0,     4,     0,
-       4,     1,     0,     4,     3,     0,     6,     0,     1,     1,
-       3,     0,     4,     0,     4,     0,     1,     1,     3,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     0,
-       4,     1,     1,     3,     3,     0,     6,     0,     1,     1,
-       3,     0,     4,     0,     4,     1,     3,     1,     1,     1,
-       1,     1,     1,     1,     0,     4,     0,     4,     0,     4,
-       0,     6,     0,     1,     1,     3,     0,     4,     0,     4,
-       0,     1,     1,     3,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     0,
+       1,     1,     1,     1,     1,     1,     1,     0,     4,     0,
        4,     0,     4,     0,     4,     0,     4,     0,     4,     0,
        4,     0,     4,     0,     4,     0,     4,     0,     4,     0,
-       4,     0,     4,     0,     6,     1,     1,     0,     6,     1,
-       3,     0,     4,     0,     1,     1,     3,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     0,
-       4,     3,     3,     0,     6,     1,     3,     1,     1,     1,
-       1,     1,     0,     4,     0,     4,     0,     6,     1,     3,
-       1,     1,     1,     1,     1,     1,     3,     0,     4,     3,
-       0,     4,     0,     6,     0,     4,     1,     3,     1,     1,
+       4,     0,     6,     1,     1,     0,     6,     1,     3,     0,
+       4,     0,     1,     1,     3,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     0,     4,     3,
+       3,     0,     6,     1,     3,     1,     1,     1,     1,     1,
+       0,     4,     0,     4,     0,     6,     1,     3,     1,     1,
+       1,     1,     1,     1,     3,     0,     4,     3,     0,     4,
+       0,     6,     0,     4,     1,     3,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     3,     0,     4,     3,
-       0,     4,     3,     3,     0,     4,     1,     1,     0,     4,
-       0,     4,     3,     3,     0,     4,     0,     4,     0,     4,
-       0,     4,     0,     6,     0,     4,     1,     3,     1,     1,
-       0,     6,     3,     0,     6,     1,     3,     0,     4,     1,
-       3,     1,     1,     1,     1,     1,     1,     1,     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,     3,     0,     4,     3,     0,     4,
+       3,     3,     0,     4,     1,     1,     0,     4,     0,     4,
+       3,     3,     0,     4,     0,     4,     0,     4,     0,     4,
+       0,     6,     0,     4,     1,     3,     1,     1,     0,     6,
+       3,     0,     6,     1,     3,     0,     4,     1,     3,     1,
+       1,     1,     1,     1,     1,     1,     3,     0,     4,     0,
+       6,     1,     3,     0,     4,     1,     3,     1,     1,     1,
+       1,     1,     0,     4,     3,     3,     3,     0,     4
   };
 
 
@@ -5313,15 +5340,15 @@ namespace isc { namespace dhcp {
   "\"max-row-errors\"", "\"valid-lifetime\"", "\"min-valid-lifetime\"",
   "\"max-valid-lifetime\"", "\"renew-timer\"", "\"rebind-timer\"",
   "\"calculate-tee-times\"", "\"t1-percent\"", "\"t2-percent\"",
-  "\"decline-probation-period\"", "\"server-tag\"",
-  "\"statistic-default-sample-count\"", "\"statistic-default-sample-age\"",
-  "\"ddns-send-updates\"", "\"ddns-override-no-update\"",
-  "\"ddns-override-client-update\"", "\"ddns-replace-client-name\"",
-  "\"ddns-generated-prefix\"", "\"ddns-qualifying-suffix\"",
-  "\"store-extended-info\"", "\"subnet4\"", "\"4o6-interface\"",
-  "\"4o6-interface-id\"", "\"4o6-subnet\"", "\"option-def\"",
-  "\"option-data\"", "\"name\"", "\"data\"", "\"code\"", "\"space\"",
-  "\"csv-format\"", "\"always-send\"", "\"record-types\"",
+  "\"cache-threshold\"", "\"cache-max\"", "\"decline-probation-period\"",
+  "\"server-tag\"", "\"statistic-default-sample-count\"",
+  "\"statistic-default-sample-age\"", "\"ddns-send-updates\"",
+  "\"ddns-override-no-update\"", "\"ddns-override-client-update\"",
+  "\"ddns-replace-client-name\"", "\"ddns-generated-prefix\"",
+  "\"ddns-qualifying-suffix\"", "\"store-extended-info\"", "\"subnet4\"",
+  "\"4o6-interface\"", "\"4o6-interface-id\"", "\"4o6-subnet\"",
+  "\"option-def\"", "\"option-data\"", "\"name\"", "\"data\"", "\"code\"",
+  "\"space\"", "\"csv-format\"", "\"always-send\"", "\"record-types\"",
   "\"encapsulate\"", "\"array\"", "\"shared-networks\"", "\"pools\"",
   "\"pool\"", "\"user-context\"", "\"comment\"", "\"subnet\"",
   "\"interface\"", "\"id\"", "\"reservation-mode\"", "\"disabled\"",
@@ -5361,27 +5388,28 @@ namespace isc { namespace dhcp {
   "global_object", "$@18", "sub_dhcp4", "$@19", "global_params",
   "global_param", "valid_lifetime", "min_valid_lifetime",
   "max_valid_lifetime", "renew_timer", "rebind_timer",
-  "calculate_tee_times", "t1_percent", "t2_percent",
-  "decline_probation_period", "server_tag", "$@20", "echo_client_id",
-  "match_client_id", "authoritative", "ddns_send_updates",
-  "ddns_override_no_update", "ddns_override_client_update",
-  "ddns_replace_client_name", "$@21", "ddns_replace_client_name_value",
-  "ddns_generated_prefix", "$@22", "ddns_qualifying_suffix", "$@23",
-  "hostname_char_set", "$@24", "hostname_char_replacement", "$@25",
-  "store_extended_info", "statistic_default_sample_count",
-  "statistic_default_sample_age", "interfaces_config", "$@26",
-  "interfaces_config_params", "interfaces_config_param", "sub_interfaces4",
-  "$@27", "interfaces_list", "$@28", "dhcp_socket_type", "$@29",
-  "socket_type", "outbound_interface", "$@30", "outbound_interface_value",
-  "re_detect", "lease_database", "$@31", "sanity_checks", "$@32",
-  "sanity_checks_params", "sanity_checks_param", "lease_checks", "$@33",
-  "hosts_database", "$@34", "hosts_databases", "$@35", "database_list",
-  "not_empty_database_list", "database", "$@36", "database_map_params",
-  "database_map_param", "database_type", "$@37", "db_type", "user", "$@38",
-  "password", "$@39", "host", "$@40", "port", "name", "$@41", "persist",
-  "lfc_interval", "readonly", "connect_timeout", "request_timeout",
-  "tcp_keepalive", "tcp_nodelay", "contact_points", "$@42", "keyspace",
-  "$@43", "consistency", "$@44", "serial_consistency", "$@45",
+  "calculate_tee_times", "t1_percent", "t2_percent", "cache_threshold",
+  "cache_max", "decline_probation_period", "server_tag", "$@20",
+  "echo_client_id", "match_client_id", "authoritative",
+  "ddns_send_updates", "ddns_override_no_update",
+  "ddns_override_client_update", "ddns_replace_client_name", "$@21",
+  "ddns_replace_client_name_value", "ddns_generated_prefix", "$@22",
+  "ddns_qualifying_suffix", "$@23", "hostname_char_set", "$@24",
+  "hostname_char_replacement", "$@25", "store_extended_info",
+  "statistic_default_sample_count", "statistic_default_sample_age",
+  "interfaces_config", "$@26", "interfaces_config_params",
+  "interfaces_config_param", "sub_interfaces4", "$@27", "interfaces_list",
+  "$@28", "dhcp_socket_type", "$@29", "socket_type", "outbound_interface",
+  "$@30", "outbound_interface_value", "re_detect", "lease_database",
+  "$@31", "sanity_checks", "$@32", "sanity_checks_params",
+  "sanity_checks_param", "lease_checks", "$@33", "hosts_database", "$@34",
+  "hosts_databases", "$@35", "database_list", "not_empty_database_list",
+  "database", "$@36", "database_map_params", "database_map_param",
+  "database_type", "$@37", "db_type", "user", "$@38", "password", "$@39",
+  "host", "$@40", "port", "name", "$@41", "persist", "lfc_interval",
+  "readonly", "connect_timeout", "request_timeout", "tcp_keepalive",
+  "tcp_nodelay", "contact_points", "$@42", "keyspace", "$@43",
+  "consistency", "$@44", "serial_consistency", "$@45",
   "max_reconnect_tries", "reconnect_wait_time", "max_row_errors",
   "host_reservation_identifiers", "$@46",
   "host_reservation_identifiers_list", "host_reservation_identifier",
@@ -5459,80 +5487,80 @@ namespace isc { namespace dhcp {
   const short
   Dhcp4Parser::yyrline_[] =
   {
-       0,   277,   277,   277,   278,   278,   279,   279,   280,   280,
-     281,   281,   282,   282,   283,   283,   284,   284,   285,   285,
-     286,   286,   287,   287,   288,   288,   289,   289,   297,   298,
-     299,   300,   301,   302,   303,   306,   311,   311,   322,   325,
-     326,   329,   334,   342,   342,   349,   350,   353,   357,   364,
-     364,   371,   372,   375,   379,   390,   399,   399,   414,   414,
-     431,   431,   440,   441,   446,   447,   448,   449,   450,   451,
-     452,   453,   454,   455,   456,   457,   458,   459,   460,   461,
-     462,   463,   464,   465,   466,   467,   468,   469,   470,   471,
-     472,   473,   474,   475,   476,   477,   478,   479,   480,   481,
-     482,   483,   484,   485,   486,   487,   488,   489,   490,   491,
-     492,   493,   494,   495,   496,   497,   500,   506,   512,   518,
-     524,   530,   536,   542,   548,   554,   554,   563,   569,   575,
-     581,   587,   593,   599,   599,   608,   611,   614,   617,   620,
-     626,   626,   635,   635,   644,   644,   653,   653,   662,   668,
-     674,   680,   680,   692,   693,   696,   697,   698,   699,   700,
-     701,   702,   705,   705,   714,   714,   725,   725,   733,   734,
-     737,   737,   745,   747,   751,   758,   758,   771,   771,   782,
-     783,   785,   787,   787,   806,   806,   819,   819,   830,   831,
-     834,   835,   838,   838,   848,   849,   852,   853,   854,   855,
-     856,   857,   858,   859,   860,   861,   862,   863,   864,   865,
-     866,   867,   868,   869,   870,   871,   872,   875,   875,   883,
-     884,   885,   886,   889,   889,   898,   898,   907,   907,   916,
-     922,   922,   931,   937,   943,   949,   955,   961,   967,   973,
-     973,   982,   982,   991,   991,  1000,  1000,  1009,  1015,  1021,
-    1028,  1028,  1039,  1040,  1043,  1044,  1045,  1046,  1047,  1050,
-    1055,  1060,  1065,  1070,  1077,  1077,  1090,  1091,  1094,  1095,
-    1096,  1097,  1098,  1099,  1102,  1108,  1114,  1120,  1120,  1131,
-    1132,  1135,  1136,  1139,  1139,  1149,  1149,  1159,  1160,  1161,
-    1164,  1165,  1168,  1168,  1177,  1177,  1186,  1186,  1198,  1199,
-    1202,  1203,  1204,  1205,  1206,  1207,  1210,  1216,  1222,  1228,
-    1234,  1240,  1249,  1249,  1263,  1264,  1267,  1268,  1275,  1275,
-    1301,  1301,  1312,  1313,  1317,  1318,  1319,  1320,  1321,  1322,
-    1323,  1324,  1325,  1326,  1327,  1328,  1329,  1330,  1331,  1332,
-    1333,  1334,  1335,  1336,  1337,  1338,  1339,  1340,  1341,  1342,
-    1343,  1344,  1345,  1346,  1347,  1348,  1349,  1350,  1351,  1352,
-    1353,  1354,  1357,  1357,  1366,  1366,  1375,  1375,  1384,  1384,
-    1393,  1393,  1402,  1402,  1411,  1411,  1422,  1422,  1430,  1431,
-    1432,  1433,  1436,  1444,  1444,  1456,  1457,  1461,  1462,  1465,
-    1465,  1473,  1474,  1477,  1478,  1479,  1480,  1481,  1482,  1483,
-    1484,  1485,  1486,  1487,  1488,  1489,  1490,  1491,  1492,  1493,
-    1494,  1495,  1496,  1497,  1498,  1499,  1500,  1501,  1502,  1503,
-    1504,  1505,  1506,  1507,  1508,  1509,  1516,  1516,  1530,  1530,
-    1539,  1540,  1543,  1544,  1549,  1549,  1564,  1564,  1578,  1579,
-    1582,  1583,  1586,  1587,  1588,  1589,  1590,  1591,  1592,  1593,
-    1594,  1595,  1598,  1600,  1606,  1608,  1608,  1617,  1617,  1626,
-    1626,  1635,  1637,  1637,  1646,  1656,  1656,  1669,  1670,  1675,
-    1676,  1681,  1681,  1693,  1693,  1705,  1706,  1711,  1712,  1717,
-    1718,  1719,  1720,  1721,  1722,  1723,  1724,  1725,  1728,  1730,
-    1730,  1739,  1741,  1743,  1749,  1758,  1758,  1771,  1772,  1775,
-    1776,  1779,  1779,  1789,  1789,  1799,  1800,  1803,  1804,  1805,
-    1806,  1807,  1808,  1809,  1812,  1812,  1821,  1821,  1846,  1846,
-    1876,  1876,  1887,  1888,  1891,  1892,  1895,  1895,  1904,  1904,
-    1913,  1914,  1917,  1918,  1922,  1923,  1924,  1925,  1926,  1927,
-    1928,  1929,  1930,  1931,  1932,  1933,  1934,  1935,  1936,  1939,
-    1939,  1948,  1948,  1957,  1957,  1966,  1966,  1975,  1975,  1986,
-    1986,  1995,  1995,  2004,  2004,  2013,  2013,  2022,  2022,  2031,
-    2031,  2040,  2040,  2054,  2054,  2065,  2066,  2072,  2072,  2083,
-    2084,  2087,  2087,  2097,  2098,  2101,  2102,  2105,  2106,  2107,
-    2108,  2109,  2110,  2111,  2112,  2113,  2114,  2115,  2118,  2120,
-    2120,  2129,  2137,  2145,  2145,  2156,  2157,  2160,  2161,  2162,
-    2163,  2164,  2167,  2167,  2176,  2176,  2188,  2188,  2201,  2202,
-    2205,  2206,  2207,  2208,  2209,  2210,  2213,  2219,  2219,  2228,
-    2234,  2234,  2244,  2244,  2257,  2257,  2267,  2268,  2271,  2272,
-    2273,  2274,  2275,  2276,  2277,  2278,  2279,  2280,  2281,  2282,
-    2283,  2284,  2285,  2286,  2287,  2288,  2291,  2297,  2297,  2306,
-    2312,  2312,  2321,  2327,  2333,  2333,  2342,  2343,  2346,  2346,
-    2356,  2356,  2366,  2373,  2380,  2380,  2389,  2389,  2399,  2399,
-    2409,  2409,  2421,  2421,  2433,  2433,  2443,  2444,  2448,  2449,
-    2452,  2452,  2463,  2471,  2471,  2484,  2485,  2489,  2489,  2497,
-    2498,  2501,  2502,  2503,  2504,  2505,  2506,  2507,  2510,  2516,
-    2516,  2525,  2525,  2536,  2537,  2540,  2540,  2548,  2549,  2552,
-    2553,  2554,  2555,  2556,  2559,  2559,  2568,  2574,  2580,  2586,
-    2586
+       0,   279,   279,   279,   280,   280,   281,   281,   282,   282,
+     283,   283,   284,   284,   285,   285,   286,   286,   287,   287,
+     288,   288,   289,   289,   290,   290,   291,   291,   299,   300,
+     301,   302,   303,   304,   305,   308,   313,   313,   324,   327,
+     328,   331,   336,   344,   344,   351,   352,   355,   359,   366,
+     366,   373,   374,   377,   381,   392,   401,   401,   416,   416,
+     433,   433,   442,   443,   448,   449,   450,   451,   452,   453,
+     454,   455,   456,   457,   458,   459,   460,   461,   462,   463,
+     464,   465,   466,   467,   468,   469,   470,   471,   472,   473,
+     474,   475,   476,   477,   478,   479,   480,   481,   482,   483,
+     484,   485,   486,   487,   488,   489,   490,   491,   492,   493,
+     494,   495,   496,   497,   498,   499,   500,   501,   504,   510,
+     516,   522,   528,   534,   540,   546,   552,   558,   564,   570,
+     570,   579,   585,   591,   597,   603,   609,   615,   615,   624,
+     627,   630,   633,   636,   642,   642,   651,   651,   660,   660,
+     669,   669,   678,   684,   690,   696,   696,   708,   709,   712,
+     713,   714,   715,   716,   717,   718,   721,   721,   730,   730,
+     741,   741,   749,   750,   753,   753,   761,   763,   767,   774,
+     774,   787,   787,   798,   799,   801,   803,   803,   822,   822,
+     835,   835,   846,   847,   850,   851,   854,   854,   864,   865,
+     868,   869,   870,   871,   872,   873,   874,   875,   876,   877,
+     878,   879,   880,   881,   882,   883,   884,   885,   886,   887,
+     888,   891,   891,   899,   900,   901,   902,   905,   905,   914,
+     914,   923,   923,   932,   938,   938,   947,   953,   959,   965,
+     971,   977,   983,   989,   989,   998,   998,  1007,  1007,  1016,
+    1016,  1025,  1031,  1037,  1044,  1044,  1055,  1056,  1059,  1060,
+    1061,  1062,  1063,  1066,  1071,  1076,  1081,  1086,  1093,  1093,
+    1106,  1107,  1110,  1111,  1112,  1113,  1114,  1115,  1118,  1124,
+    1130,  1136,  1136,  1147,  1148,  1151,  1152,  1155,  1155,  1165,
+    1165,  1175,  1176,  1177,  1180,  1181,  1184,  1184,  1193,  1193,
+    1202,  1202,  1214,  1215,  1218,  1219,  1220,  1221,  1222,  1223,
+    1226,  1232,  1238,  1244,  1250,  1256,  1265,  1265,  1279,  1280,
+    1283,  1284,  1291,  1291,  1317,  1317,  1328,  1329,  1333,  1334,
+    1335,  1336,  1337,  1338,  1339,  1340,  1341,  1342,  1343,  1344,
+    1345,  1346,  1347,  1348,  1349,  1350,  1351,  1352,  1353,  1354,
+    1355,  1356,  1357,  1358,  1359,  1360,  1361,  1362,  1363,  1364,
+    1365,  1366,  1367,  1368,  1369,  1370,  1371,  1372,  1375,  1375,
+    1384,  1384,  1393,  1393,  1402,  1402,  1411,  1411,  1420,  1420,
+    1429,  1429,  1440,  1440,  1448,  1449,  1450,  1451,  1454,  1462,
+    1462,  1474,  1475,  1479,  1480,  1483,  1483,  1491,  1492,  1495,
+    1496,  1497,  1498,  1499,  1500,  1501,  1502,  1503,  1504,  1505,
+    1506,  1507,  1508,  1509,  1510,  1511,  1512,  1513,  1514,  1515,
+    1516,  1517,  1518,  1519,  1520,  1521,  1522,  1523,  1524,  1525,
+    1526,  1527,  1528,  1529,  1536,  1536,  1550,  1550,  1559,  1560,
+    1563,  1564,  1569,  1569,  1584,  1584,  1598,  1599,  1602,  1603,
+    1606,  1607,  1608,  1609,  1610,  1611,  1612,  1613,  1614,  1615,
+    1618,  1620,  1626,  1628,  1628,  1637,  1637,  1646,  1646,  1655,
+    1657,  1657,  1666,  1676,  1676,  1689,  1690,  1695,  1696,  1701,
+    1701,  1713,  1713,  1725,  1726,  1731,  1732,  1737,  1738,  1739,
+    1740,  1741,  1742,  1743,  1744,  1745,  1748,  1750,  1750,  1759,
+    1761,  1763,  1769,  1778,  1778,  1791,  1792,  1795,  1796,  1799,
+    1799,  1809,  1809,  1819,  1820,  1823,  1824,  1825,  1826,  1827,
+    1828,  1829,  1832,  1832,  1841,  1841,  1866,  1866,  1896,  1896,
+    1907,  1908,  1911,  1912,  1915,  1915,  1924,  1924,  1933,  1934,
+    1937,  1938,  1942,  1943,  1944,  1945,  1946,  1947,  1948,  1949,
+    1950,  1951,  1952,  1953,  1954,  1955,  1956,  1959,  1959,  1968,
+    1968,  1977,  1977,  1986,  1986,  1995,  1995,  2006,  2006,  2015,
+    2015,  2024,  2024,  2033,  2033,  2042,  2042,  2051,  2051,  2060,
+    2060,  2074,  2074,  2085,  2086,  2092,  2092,  2103,  2104,  2107,
+    2107,  2117,  2118,  2121,  2122,  2125,  2126,  2127,  2128,  2129,
+    2130,  2131,  2132,  2133,  2134,  2135,  2138,  2140,  2140,  2149,
+    2157,  2165,  2165,  2176,  2177,  2180,  2181,  2182,  2183,  2184,
+    2187,  2187,  2196,  2196,  2208,  2208,  2221,  2222,  2225,  2226,
+    2227,  2228,  2229,  2230,  2233,  2239,  2239,  2248,  2254,  2254,
+    2264,  2264,  2277,  2277,  2287,  2288,  2291,  2292,  2293,  2294,
+    2295,  2296,  2297,  2298,  2299,  2300,  2301,  2302,  2303,  2304,
+    2305,  2306,  2307,  2308,  2311,  2317,  2317,  2326,  2332,  2332,
+    2341,  2347,  2353,  2353,  2362,  2363,  2366,  2366,  2376,  2376,
+    2386,  2393,  2400,  2400,  2409,  2409,  2419,  2419,  2429,  2429,
+    2441,  2441,  2453,  2453,  2463,  2464,  2468,  2469,  2472,  2472,
+    2483,  2491,  2491,  2504,  2505,  2509,  2509,  2517,  2518,  2521,
+    2522,  2523,  2524,  2525,  2526,  2527,  2530,  2536,  2536,  2545,
+    2545,  2556,  2557,  2560,  2560,  2568,  2569,  2572,  2573,  2574,
+    2575,  2576,  2579,  2579,  2588,  2594,  2600,  2606,  2606
   };
 
   void
@@ -5565,9 +5593,9 @@ namespace isc { namespace dhcp {
 
 #line 14 "dhcp4_parser.yy"
 } } // isc::dhcp
-#line 5569 "dhcp4_parser.cc"
+#line 5597 "dhcp4_parser.cc"
 
-#line 2595 "dhcp4_parser.yy"
+#line 2615 "dhcp4_parser.yy"
 
 
 void
index c566476d6714324a2d6e2d2e85454005c1160e06..31587a34a512b25057fedf5c912664885f1939cc 100644 (file)
@@ -548,131 +548,133 @@ namespace isc { namespace dhcp {
     TOKEN_CALCULATE_TEE_TIMES = 317, // "calculate-tee-times"
     TOKEN_T1_PERCENT = 318,        // "t1-percent"
     TOKEN_T2_PERCENT = 319,        // "t2-percent"
-    TOKEN_DECLINE_PROBATION_PERIOD = 320, // "decline-probation-period"
-    TOKEN_SERVER_TAG = 321,        // "server-tag"
-    TOKEN_STATISTIC_DEFAULT_SAMPLE_COUNT = 322, // "statistic-default-sample-count"
-    TOKEN_STATISTIC_DEFAULT_SAMPLE_AGE = 323, // "statistic-default-sample-age"
-    TOKEN_DDNS_SEND_UPDATES = 324, // "ddns-send-updates"
-    TOKEN_DDNS_OVERRIDE_NO_UPDATE = 325, // "ddns-override-no-update"
-    TOKEN_DDNS_OVERRIDE_CLIENT_UPDATE = 326, // "ddns-override-client-update"
-    TOKEN_DDNS_REPLACE_CLIENT_NAME = 327, // "ddns-replace-client-name"
-    TOKEN_DDNS_GENERATED_PREFIX = 328, // "ddns-generated-prefix"
-    TOKEN_DDNS_QUALIFYING_SUFFIX = 329, // "ddns-qualifying-suffix"
-    TOKEN_STORE_EXTENDED_INFO = 330, // "store-extended-info"
-    TOKEN_SUBNET4 = 331,           // "subnet4"
-    TOKEN_SUBNET_4O6_INTERFACE = 332, // "4o6-interface"
-    TOKEN_SUBNET_4O6_INTERFACE_ID = 333, // "4o6-interface-id"
-    TOKEN_SUBNET_4O6_SUBNET = 334, // "4o6-subnet"
-    TOKEN_OPTION_DEF = 335,        // "option-def"
-    TOKEN_OPTION_DATA = 336,       // "option-data"
-    TOKEN_NAME = 337,              // "name"
-    TOKEN_DATA = 338,              // "data"
-    TOKEN_CODE = 339,              // "code"
-    TOKEN_SPACE = 340,             // "space"
-    TOKEN_CSV_FORMAT = 341,        // "csv-format"
-    TOKEN_ALWAYS_SEND = 342,       // "always-send"
-    TOKEN_RECORD_TYPES = 343,      // "record-types"
-    TOKEN_ENCAPSULATE = 344,       // "encapsulate"
-    TOKEN_ARRAY = 345,             // "array"
-    TOKEN_SHARED_NETWORKS = 346,   // "shared-networks"
-    TOKEN_POOLS = 347,             // "pools"
-    TOKEN_POOL = 348,              // "pool"
-    TOKEN_USER_CONTEXT = 349,      // "user-context"
-    TOKEN_COMMENT = 350,           // "comment"
-    TOKEN_SUBNET = 351,            // "subnet"
-    TOKEN_INTERFACE = 352,         // "interface"
-    TOKEN_ID = 353,                // "id"
-    TOKEN_RESERVATION_MODE = 354,  // "reservation-mode"
-    TOKEN_DISABLED = 355,          // "disabled"
-    TOKEN_OUT_OF_POOL = 356,       // "out-of-pool"
-    TOKEN_GLOBAL = 357,            // "global"
-    TOKEN_ALL = 358,               // "all"
-    TOKEN_HOST_RESERVATION_IDENTIFIERS = 359, // "host-reservation-identifiers"
-    TOKEN_CLIENT_CLASSES = 360,    // "client-classes"
-    TOKEN_REQUIRE_CLIENT_CLASSES = 361, // "require-client-classes"
-    TOKEN_TEST = 362,              // "test"
-    TOKEN_ONLY_IF_REQUIRED = 363,  // "only-if-required"
-    TOKEN_CLIENT_CLASS = 364,      // "client-class"
-    TOKEN_RESERVATIONS = 365,      // "reservations"
-    TOKEN_DUID = 366,              // "duid"
-    TOKEN_HW_ADDRESS = 367,        // "hw-address"
-    TOKEN_CIRCUIT_ID = 368,        // "circuit-id"
-    TOKEN_CLIENT_ID = 369,         // "client-id"
-    TOKEN_HOSTNAME = 370,          // "hostname"
-    TOKEN_FLEX_ID = 371,           // "flex-id"
-    TOKEN_RELAY = 372,             // "relay"
-    TOKEN_IP_ADDRESS = 373,        // "ip-address"
-    TOKEN_IP_ADDRESSES = 374,      // "ip-addresses"
-    TOKEN_HOOKS_LIBRARIES = 375,   // "hooks-libraries"
-    TOKEN_LIBRARY = 376,           // "library"
-    TOKEN_PARAMETERS = 377,        // "parameters"
-    TOKEN_EXPIRED_LEASES_PROCESSING = 378, // "expired-leases-processing"
-    TOKEN_RECLAIM_TIMER_WAIT_TIME = 379, // "reclaim-timer-wait-time"
-    TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 380, // "flush-reclaimed-timer-wait-time"
-    TOKEN_HOLD_RECLAIMED_TIME = 381, // "hold-reclaimed-time"
-    TOKEN_MAX_RECLAIM_LEASES = 382, // "max-reclaim-leases"
-    TOKEN_MAX_RECLAIM_TIME = 383,  // "max-reclaim-time"
-    TOKEN_UNWARNED_RECLAIM_CYCLES = 384, // "unwarned-reclaim-cycles"
-    TOKEN_DHCP4O6_PORT = 385,      // "dhcp4o6-port"
-    TOKEN_DHCP_MULTI_THREADING = 386, // "multi-threading"
-    TOKEN_ENABLE_MULTI_THREADING = 387, // "enable-multi-threading"
-    TOKEN_THREAD_POOL_SIZE = 388,  // "thread-pool-size"
-    TOKEN_PACKET_QUEUE_SIZE = 389, // "packet-queue-size"
-    TOKEN_CONTROL_SOCKET = 390,    // "control-socket"
-    TOKEN_SOCKET_TYPE = 391,       // "socket-type"
-    TOKEN_SOCKET_NAME = 392,       // "socket-name"
-    TOKEN_DHCP_QUEUE_CONTROL = 393, // "dhcp-queue-control"
-    TOKEN_ENABLE_QUEUE = 394,      // "enable-queue"
-    TOKEN_QUEUE_TYPE = 395,        // "queue-type"
-    TOKEN_CAPACITY = 396,          // "capacity"
-    TOKEN_DHCP_DDNS = 397,         // "dhcp-ddns"
-    TOKEN_ENABLE_UPDATES = 398,    // "enable-updates"
-    TOKEN_QUALIFYING_SUFFIX = 399, // "qualifying-suffix"
-    TOKEN_SERVER_IP = 400,         // "server-ip"
-    TOKEN_SERVER_PORT = 401,       // "server-port"
-    TOKEN_SENDER_IP = 402,         // "sender-ip"
-    TOKEN_SENDER_PORT = 403,       // "sender-port"
-    TOKEN_MAX_QUEUE_SIZE = 404,    // "max-queue-size"
-    TOKEN_NCR_PROTOCOL = 405,      // "ncr-protocol"
-    TOKEN_NCR_FORMAT = 406,        // "ncr-format"
-    TOKEN_OVERRIDE_NO_UPDATE = 407, // "override-no-update"
-    TOKEN_OVERRIDE_CLIENT_UPDATE = 408, // "override-client-update"
-    TOKEN_REPLACE_CLIENT_NAME = 409, // "replace-client-name"
-    TOKEN_GENERATED_PREFIX = 410,  // "generated-prefix"
-    TOKEN_TCP = 411,               // "tcp"
-    TOKEN_JSON = 412,              // "JSON"
-    TOKEN_WHEN_PRESENT = 413,      // "when-present"
-    TOKEN_NEVER = 414,             // "never"
-    TOKEN_ALWAYS = 415,            // "always"
-    TOKEN_WHEN_NOT_PRESENT = 416,  // "when-not-present"
-    TOKEN_HOSTNAME_CHAR_SET = 417, // "hostname-char-set"
-    TOKEN_HOSTNAME_CHAR_REPLACEMENT = 418, // "hostname-char-replacement"
-    TOKEN_LOGGERS = 419,           // "loggers"
-    TOKEN_OUTPUT_OPTIONS = 420,    // "output_options"
-    TOKEN_OUTPUT = 421,            // "output"
-    TOKEN_DEBUGLEVEL = 422,        // "debuglevel"
-    TOKEN_SEVERITY = 423,          // "severity"
-    TOKEN_FLUSH = 424,             // "flush"
-    TOKEN_MAXSIZE = 425,           // "maxsize"
-    TOKEN_MAXVER = 426,            // "maxver"
-    TOKEN_PATTERN = 427,           // "pattern"
-    TOKEN_TOPLEVEL_JSON = 428,     // TOPLEVEL_JSON
-    TOKEN_TOPLEVEL_DHCP4 = 429,    // TOPLEVEL_DHCP4
-    TOKEN_SUB_DHCP4 = 430,         // SUB_DHCP4
-    TOKEN_SUB_INTERFACES4 = 431,   // SUB_INTERFACES4
-    TOKEN_SUB_SUBNET4 = 432,       // SUB_SUBNET4
-    TOKEN_SUB_POOL4 = 433,         // SUB_POOL4
-    TOKEN_SUB_RESERVATION = 434,   // SUB_RESERVATION
-    TOKEN_SUB_OPTION_DEFS = 435,   // SUB_OPTION_DEFS
-    TOKEN_SUB_OPTION_DEF = 436,    // SUB_OPTION_DEF
-    TOKEN_SUB_OPTION_DATA = 437,   // SUB_OPTION_DATA
-    TOKEN_SUB_HOOKS_LIBRARY = 438, // SUB_HOOKS_LIBRARY
-    TOKEN_SUB_DHCP_DDNS = 439,     // SUB_DHCP_DDNS
-    TOKEN_SUB_CONFIG_CONTROL = 440, // SUB_CONFIG_CONTROL
-    TOKEN_STRING = 441,            // "constant string"
-    TOKEN_INTEGER = 442,           // "integer"
-    TOKEN_FLOAT = 443,             // "floating point"
-    TOKEN_BOOLEAN = 444            // "boolean"
+    TOKEN_CACHE_THRESHOLD = 320,   // "cache-threshold"
+    TOKEN_CACHE_MAX = 321,         // "cache-max"
+    TOKEN_DECLINE_PROBATION_PERIOD = 322, // "decline-probation-period"
+    TOKEN_SERVER_TAG = 323,        // "server-tag"
+    TOKEN_STATISTIC_DEFAULT_SAMPLE_COUNT = 324, // "statistic-default-sample-count"
+    TOKEN_STATISTIC_DEFAULT_SAMPLE_AGE = 325, // "statistic-default-sample-age"
+    TOKEN_DDNS_SEND_UPDATES = 326, // "ddns-send-updates"
+    TOKEN_DDNS_OVERRIDE_NO_UPDATE = 327, // "ddns-override-no-update"
+    TOKEN_DDNS_OVERRIDE_CLIENT_UPDATE = 328, // "ddns-override-client-update"
+    TOKEN_DDNS_REPLACE_CLIENT_NAME = 329, // "ddns-replace-client-name"
+    TOKEN_DDNS_GENERATED_PREFIX = 330, // "ddns-generated-prefix"
+    TOKEN_DDNS_QUALIFYING_SUFFIX = 331, // "ddns-qualifying-suffix"
+    TOKEN_STORE_EXTENDED_INFO = 332, // "store-extended-info"
+    TOKEN_SUBNET4 = 333,           // "subnet4"
+    TOKEN_SUBNET_4O6_INTERFACE = 334, // "4o6-interface"
+    TOKEN_SUBNET_4O6_INTERFACE_ID = 335, // "4o6-interface-id"
+    TOKEN_SUBNET_4O6_SUBNET = 336, // "4o6-subnet"
+    TOKEN_OPTION_DEF = 337,        // "option-def"
+    TOKEN_OPTION_DATA = 338,       // "option-data"
+    TOKEN_NAME = 339,              // "name"
+    TOKEN_DATA = 340,              // "data"
+    TOKEN_CODE = 341,              // "code"
+    TOKEN_SPACE = 342,             // "space"
+    TOKEN_CSV_FORMAT = 343,        // "csv-format"
+    TOKEN_ALWAYS_SEND = 344,       // "always-send"
+    TOKEN_RECORD_TYPES = 345,      // "record-types"
+    TOKEN_ENCAPSULATE = 346,       // "encapsulate"
+    TOKEN_ARRAY = 347,             // "array"
+    TOKEN_SHARED_NETWORKS = 348,   // "shared-networks"
+    TOKEN_POOLS = 349,             // "pools"
+    TOKEN_POOL = 350,              // "pool"
+    TOKEN_USER_CONTEXT = 351,      // "user-context"
+    TOKEN_COMMENT = 352,           // "comment"
+    TOKEN_SUBNET = 353,            // "subnet"
+    TOKEN_INTERFACE = 354,         // "interface"
+    TOKEN_ID = 355,                // "id"
+    TOKEN_RESERVATION_MODE = 356,  // "reservation-mode"
+    TOKEN_DISABLED = 357,          // "disabled"
+    TOKEN_OUT_OF_POOL = 358,       // "out-of-pool"
+    TOKEN_GLOBAL = 359,            // "global"
+    TOKEN_ALL = 360,               // "all"
+    TOKEN_HOST_RESERVATION_IDENTIFIERS = 361, // "host-reservation-identifiers"
+    TOKEN_CLIENT_CLASSES = 362,    // "client-classes"
+    TOKEN_REQUIRE_CLIENT_CLASSES = 363, // "require-client-classes"
+    TOKEN_TEST = 364,              // "test"
+    TOKEN_ONLY_IF_REQUIRED = 365,  // "only-if-required"
+    TOKEN_CLIENT_CLASS = 366,      // "client-class"
+    TOKEN_RESERVATIONS = 367,      // "reservations"
+    TOKEN_DUID = 368,              // "duid"
+    TOKEN_HW_ADDRESS = 369,        // "hw-address"
+    TOKEN_CIRCUIT_ID = 370,        // "circuit-id"
+    TOKEN_CLIENT_ID = 371,         // "client-id"
+    TOKEN_HOSTNAME = 372,          // "hostname"
+    TOKEN_FLEX_ID = 373,           // "flex-id"
+    TOKEN_RELAY = 374,             // "relay"
+    TOKEN_IP_ADDRESS = 375,        // "ip-address"
+    TOKEN_IP_ADDRESSES = 376,      // "ip-addresses"
+    TOKEN_HOOKS_LIBRARIES = 377,   // "hooks-libraries"
+    TOKEN_LIBRARY = 378,           // "library"
+    TOKEN_PARAMETERS = 379,        // "parameters"
+    TOKEN_EXPIRED_LEASES_PROCESSING = 380, // "expired-leases-processing"
+    TOKEN_RECLAIM_TIMER_WAIT_TIME = 381, // "reclaim-timer-wait-time"
+    TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 382, // "flush-reclaimed-timer-wait-time"
+    TOKEN_HOLD_RECLAIMED_TIME = 383, // "hold-reclaimed-time"
+    TOKEN_MAX_RECLAIM_LEASES = 384, // "max-reclaim-leases"
+    TOKEN_MAX_RECLAIM_TIME = 385,  // "max-reclaim-time"
+    TOKEN_UNWARNED_RECLAIM_CYCLES = 386, // "unwarned-reclaim-cycles"
+    TOKEN_DHCP4O6_PORT = 387,      // "dhcp4o6-port"
+    TOKEN_DHCP_MULTI_THREADING = 388, // "multi-threading"
+    TOKEN_ENABLE_MULTI_THREADING = 389, // "enable-multi-threading"
+    TOKEN_THREAD_POOL_SIZE = 390,  // "thread-pool-size"
+    TOKEN_PACKET_QUEUE_SIZE = 391, // "packet-queue-size"
+    TOKEN_CONTROL_SOCKET = 392,    // "control-socket"
+    TOKEN_SOCKET_TYPE = 393,       // "socket-type"
+    TOKEN_SOCKET_NAME = 394,       // "socket-name"
+    TOKEN_DHCP_QUEUE_CONTROL = 395, // "dhcp-queue-control"
+    TOKEN_ENABLE_QUEUE = 396,      // "enable-queue"
+    TOKEN_QUEUE_TYPE = 397,        // "queue-type"
+    TOKEN_CAPACITY = 398,          // "capacity"
+    TOKEN_DHCP_DDNS = 399,         // "dhcp-ddns"
+    TOKEN_ENABLE_UPDATES = 400,    // "enable-updates"
+    TOKEN_QUALIFYING_SUFFIX = 401, // "qualifying-suffix"
+    TOKEN_SERVER_IP = 402,         // "server-ip"
+    TOKEN_SERVER_PORT = 403,       // "server-port"
+    TOKEN_SENDER_IP = 404,         // "sender-ip"
+    TOKEN_SENDER_PORT = 405,       // "sender-port"
+    TOKEN_MAX_QUEUE_SIZE = 406,    // "max-queue-size"
+    TOKEN_NCR_PROTOCOL = 407,      // "ncr-protocol"
+    TOKEN_NCR_FORMAT = 408,        // "ncr-format"
+    TOKEN_OVERRIDE_NO_UPDATE = 409, // "override-no-update"
+    TOKEN_OVERRIDE_CLIENT_UPDATE = 410, // "override-client-update"
+    TOKEN_REPLACE_CLIENT_NAME = 411, // "replace-client-name"
+    TOKEN_GENERATED_PREFIX = 412,  // "generated-prefix"
+    TOKEN_TCP = 413,               // "tcp"
+    TOKEN_JSON = 414,              // "JSON"
+    TOKEN_WHEN_PRESENT = 415,      // "when-present"
+    TOKEN_NEVER = 416,             // "never"
+    TOKEN_ALWAYS = 417,            // "always"
+    TOKEN_WHEN_NOT_PRESENT = 418,  // "when-not-present"
+    TOKEN_HOSTNAME_CHAR_SET = 419, // "hostname-char-set"
+    TOKEN_HOSTNAME_CHAR_REPLACEMENT = 420, // "hostname-char-replacement"
+    TOKEN_LOGGERS = 421,           // "loggers"
+    TOKEN_OUTPUT_OPTIONS = 422,    // "output_options"
+    TOKEN_OUTPUT = 423,            // "output"
+    TOKEN_DEBUGLEVEL = 424,        // "debuglevel"
+    TOKEN_SEVERITY = 425,          // "severity"
+    TOKEN_FLUSH = 426,             // "flush"
+    TOKEN_MAXSIZE = 427,           // "maxsize"
+    TOKEN_MAXVER = 428,            // "maxver"
+    TOKEN_PATTERN = 429,           // "pattern"
+    TOKEN_TOPLEVEL_JSON = 430,     // TOPLEVEL_JSON
+    TOKEN_TOPLEVEL_DHCP4 = 431,    // TOPLEVEL_DHCP4
+    TOKEN_SUB_DHCP4 = 432,         // SUB_DHCP4
+    TOKEN_SUB_INTERFACES4 = 433,   // SUB_INTERFACES4
+    TOKEN_SUB_SUBNET4 = 434,       // SUB_SUBNET4
+    TOKEN_SUB_POOL4 = 435,         // SUB_POOL4
+    TOKEN_SUB_RESERVATION = 436,   // SUB_RESERVATION
+    TOKEN_SUB_OPTION_DEFS = 437,   // SUB_OPTION_DEFS
+    TOKEN_SUB_OPTION_DEF = 438,    // SUB_OPTION_DEF
+    TOKEN_SUB_OPTION_DATA = 439,   // SUB_OPTION_DATA
+    TOKEN_SUB_HOOKS_LIBRARY = 440, // SUB_HOOKS_LIBRARY
+    TOKEN_SUB_DHCP_DDNS = 441,     // SUB_DHCP_DDNS
+    TOKEN_SUB_CONFIG_CONTROL = 442, // SUB_CONFIG_CONTROL
+    TOKEN_STRING = 443,            // "constant string"
+    TOKEN_INTEGER = 444,           // "integer"
+    TOKEN_FLOAT = 445,             // "floating point"
+    TOKEN_BOOLEAN = 446            // "boolean"
       };
       /// Backward compatibility alias (Bison 3.6).
       typedef token_kind_type yytokentype;
@@ -689,7 +691,7 @@ namespace isc { namespace dhcp {
     {
       enum symbol_kind_type
       {
-        YYNTOKENS = 190, ///< Number of tokens.
+        YYNTOKENS = 192, ///< Number of tokens.
         S_YYEMPTY = -2,
         S_YYEOF = 0,                             // "end of file"
         S_YYerror = 1,                           // error
@@ -756,533 +758,537 @@ namespace isc { namespace dhcp {
         S_CALCULATE_TEE_TIMES = 62,              // "calculate-tee-times"
         S_T1_PERCENT = 63,                       // "t1-percent"
         S_T2_PERCENT = 64,                       // "t2-percent"
-        S_DECLINE_PROBATION_PERIOD = 65,         // "decline-probation-period"
-        S_SERVER_TAG = 66,                       // "server-tag"
-        S_STATISTIC_DEFAULT_SAMPLE_COUNT = 67,   // "statistic-default-sample-count"
-        S_STATISTIC_DEFAULT_SAMPLE_AGE = 68,     // "statistic-default-sample-age"
-        S_DDNS_SEND_UPDATES = 69,                // "ddns-send-updates"
-        S_DDNS_OVERRIDE_NO_UPDATE = 70,          // "ddns-override-no-update"
-        S_DDNS_OVERRIDE_CLIENT_UPDATE = 71,      // "ddns-override-client-update"
-        S_DDNS_REPLACE_CLIENT_NAME = 72,         // "ddns-replace-client-name"
-        S_DDNS_GENERATED_PREFIX = 73,            // "ddns-generated-prefix"
-        S_DDNS_QUALIFYING_SUFFIX = 74,           // "ddns-qualifying-suffix"
-        S_STORE_EXTENDED_INFO = 75,              // "store-extended-info"
-        S_SUBNET4 = 76,                          // "subnet4"
-        S_SUBNET_4O6_INTERFACE = 77,             // "4o6-interface"
-        S_SUBNET_4O6_INTERFACE_ID = 78,          // "4o6-interface-id"
-        S_SUBNET_4O6_SUBNET = 79,                // "4o6-subnet"
-        S_OPTION_DEF = 80,                       // "option-def"
-        S_OPTION_DATA = 81,                      // "option-data"
-        S_NAME = 82,                             // "name"
-        S_DATA = 83,                             // "data"
-        S_CODE = 84,                             // "code"
-        S_SPACE = 85,                            // "space"
-        S_CSV_FORMAT = 86,                       // "csv-format"
-        S_ALWAYS_SEND = 87,                      // "always-send"
-        S_RECORD_TYPES = 88,                     // "record-types"
-        S_ENCAPSULATE = 89,                      // "encapsulate"
-        S_ARRAY = 90,                            // "array"
-        S_SHARED_NETWORKS = 91,                  // "shared-networks"
-        S_POOLS = 92,                            // "pools"
-        S_POOL = 93,                             // "pool"
-        S_USER_CONTEXT = 94,                     // "user-context"
-        S_COMMENT = 95,                          // "comment"
-        S_SUBNET = 96,                           // "subnet"
-        S_INTERFACE = 97,                        // "interface"
-        S_ID = 98,                               // "id"
-        S_RESERVATION_MODE = 99,                 // "reservation-mode"
-        S_DISABLED = 100,                        // "disabled"
-        S_OUT_OF_POOL = 101,                     // "out-of-pool"
-        S_GLOBAL = 102,                          // "global"
-        S_ALL = 103,                             // "all"
-        S_HOST_RESERVATION_IDENTIFIERS = 104,    // "host-reservation-identifiers"
-        S_CLIENT_CLASSES = 105,                  // "client-classes"
-        S_REQUIRE_CLIENT_CLASSES = 106,          // "require-client-classes"
-        S_TEST = 107,                            // "test"
-        S_ONLY_IF_REQUIRED = 108,                // "only-if-required"
-        S_CLIENT_CLASS = 109,                    // "client-class"
-        S_RESERVATIONS = 110,                    // "reservations"
-        S_DUID = 111,                            // "duid"
-        S_HW_ADDRESS = 112,                      // "hw-address"
-        S_CIRCUIT_ID = 113,                      // "circuit-id"
-        S_CLIENT_ID = 114,                       // "client-id"
-        S_HOSTNAME = 115,                        // "hostname"
-        S_FLEX_ID = 116,                         // "flex-id"
-        S_RELAY = 117,                           // "relay"
-        S_IP_ADDRESS = 118,                      // "ip-address"
-        S_IP_ADDRESSES = 119,                    // "ip-addresses"
-        S_HOOKS_LIBRARIES = 120,                 // "hooks-libraries"
-        S_LIBRARY = 121,                         // "library"
-        S_PARAMETERS = 122,                      // "parameters"
-        S_EXPIRED_LEASES_PROCESSING = 123,       // "expired-leases-processing"
-        S_RECLAIM_TIMER_WAIT_TIME = 124,         // "reclaim-timer-wait-time"
-        S_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 125, // "flush-reclaimed-timer-wait-time"
-        S_HOLD_RECLAIMED_TIME = 126,             // "hold-reclaimed-time"
-        S_MAX_RECLAIM_LEASES = 127,              // "max-reclaim-leases"
-        S_MAX_RECLAIM_TIME = 128,                // "max-reclaim-time"
-        S_UNWARNED_RECLAIM_CYCLES = 129,         // "unwarned-reclaim-cycles"
-        S_DHCP4O6_PORT = 130,                    // "dhcp4o6-port"
-        S_DHCP_MULTI_THREADING = 131,            // "multi-threading"
-        S_ENABLE_MULTI_THREADING = 132,          // "enable-multi-threading"
-        S_THREAD_POOL_SIZE = 133,                // "thread-pool-size"
-        S_PACKET_QUEUE_SIZE = 134,               // "packet-queue-size"
-        S_CONTROL_SOCKET = 135,                  // "control-socket"
-        S_SOCKET_TYPE = 136,                     // "socket-type"
-        S_SOCKET_NAME = 137,                     // "socket-name"
-        S_DHCP_QUEUE_CONTROL = 138,              // "dhcp-queue-control"
-        S_ENABLE_QUEUE = 139,                    // "enable-queue"
-        S_QUEUE_TYPE = 140,                      // "queue-type"
-        S_CAPACITY = 141,                        // "capacity"
-        S_DHCP_DDNS = 142,                       // "dhcp-ddns"
-        S_ENABLE_UPDATES = 143,                  // "enable-updates"
-        S_QUALIFYING_SUFFIX = 144,               // "qualifying-suffix"
-        S_SERVER_IP = 145,                       // "server-ip"
-        S_SERVER_PORT = 146,                     // "server-port"
-        S_SENDER_IP = 147,                       // "sender-ip"
-        S_SENDER_PORT = 148,                     // "sender-port"
-        S_MAX_QUEUE_SIZE = 149,                  // "max-queue-size"
-        S_NCR_PROTOCOL = 150,                    // "ncr-protocol"
-        S_NCR_FORMAT = 151,                      // "ncr-format"
-        S_OVERRIDE_NO_UPDATE = 152,              // "override-no-update"
-        S_OVERRIDE_CLIENT_UPDATE = 153,          // "override-client-update"
-        S_REPLACE_CLIENT_NAME = 154,             // "replace-client-name"
-        S_GENERATED_PREFIX = 155,                // "generated-prefix"
-        S_TCP = 156,                             // "tcp"
-        S_JSON = 157,                            // "JSON"
-        S_WHEN_PRESENT = 158,                    // "when-present"
-        S_NEVER = 159,                           // "never"
-        S_ALWAYS = 160,                          // "always"
-        S_WHEN_NOT_PRESENT = 161,                // "when-not-present"
-        S_HOSTNAME_CHAR_SET = 162,               // "hostname-char-set"
-        S_HOSTNAME_CHAR_REPLACEMENT = 163,       // "hostname-char-replacement"
-        S_LOGGERS = 164,                         // "loggers"
-        S_OUTPUT_OPTIONS = 165,                  // "output_options"
-        S_OUTPUT = 166,                          // "output"
-        S_DEBUGLEVEL = 167,                      // "debuglevel"
-        S_SEVERITY = 168,                        // "severity"
-        S_FLUSH = 169,                           // "flush"
-        S_MAXSIZE = 170,                         // "maxsize"
-        S_MAXVER = 171,                          // "maxver"
-        S_PATTERN = 172,                         // "pattern"
-        S_TOPLEVEL_JSON = 173,                   // TOPLEVEL_JSON
-        S_TOPLEVEL_DHCP4 = 174,                  // TOPLEVEL_DHCP4
-        S_SUB_DHCP4 = 175,                       // SUB_DHCP4
-        S_SUB_INTERFACES4 = 176,                 // SUB_INTERFACES4
-        S_SUB_SUBNET4 = 177,                     // SUB_SUBNET4
-        S_SUB_POOL4 = 178,                       // SUB_POOL4
-        S_SUB_RESERVATION = 179,                 // SUB_RESERVATION
-        S_SUB_OPTION_DEFS = 180,                 // SUB_OPTION_DEFS
-        S_SUB_OPTION_DEF = 181,                  // SUB_OPTION_DEF
-        S_SUB_OPTION_DATA = 182,                 // SUB_OPTION_DATA
-        S_SUB_HOOKS_LIBRARY = 183,               // SUB_HOOKS_LIBRARY
-        S_SUB_DHCP_DDNS = 184,                   // SUB_DHCP_DDNS
-        S_SUB_CONFIG_CONTROL = 185,              // SUB_CONFIG_CONTROL
-        S_STRING = 186,                          // "constant string"
-        S_INTEGER = 187,                         // "integer"
-        S_FLOAT = 188,                           // "floating point"
-        S_BOOLEAN = 189,                         // "boolean"
-        S_YYACCEPT = 190,                        // $accept
-        S_start = 191,                           // start
-        S_192_1 = 192,                           // $@1
-        S_193_2 = 193,                           // $@2
-        S_194_3 = 194,                           // $@3
-        S_195_4 = 195,                           // $@4
-        S_196_5 = 196,                           // $@5
-        S_197_6 = 197,                           // $@6
-        S_198_7 = 198,                           // $@7
-        S_199_8 = 199,                           // $@8
-        S_200_9 = 200,                           // $@9
-        S_201_10 = 201,                          // $@10
-        S_202_11 = 202,                          // $@11
-        S_203_12 = 203,                          // $@12
-        S_204_13 = 204,                          // $@13
-        S_value = 205,                           // value
-        S_sub_json = 206,                        // sub_json
-        S_map2 = 207,                            // map2
-        S_208_14 = 208,                          // $@14
-        S_map_value = 209,                       // map_value
-        S_map_content = 210,                     // map_content
-        S_not_empty_map = 211,                   // not_empty_map
-        S_list_generic = 212,                    // list_generic
-        S_213_15 = 213,                          // $@15
-        S_list_content = 214,                    // list_content
-        S_not_empty_list = 215,                  // not_empty_list
-        S_list_strings = 216,                    // list_strings
-        S_217_16 = 217,                          // $@16
-        S_list_strings_content = 218,            // list_strings_content
-        S_not_empty_list_strings = 219,          // not_empty_list_strings
-        S_unknown_map_entry = 220,               // unknown_map_entry
-        S_syntax_map = 221,                      // syntax_map
-        S_222_17 = 222,                          // $@17
-        S_global_object = 223,                   // global_object
-        S_224_18 = 224,                          // $@18
-        S_sub_dhcp4 = 225,                       // sub_dhcp4
-        S_226_19 = 226,                          // $@19
-        S_global_params = 227,                   // global_params
-        S_global_param = 228,                    // global_param
-        S_valid_lifetime = 229,                  // valid_lifetime
-        S_min_valid_lifetime = 230,              // min_valid_lifetime
-        S_max_valid_lifetime = 231,              // max_valid_lifetime
-        S_renew_timer = 232,                     // renew_timer
-        S_rebind_timer = 233,                    // rebind_timer
-        S_calculate_tee_times = 234,             // calculate_tee_times
-        S_t1_percent = 235,                      // t1_percent
-        S_t2_percent = 236,                      // t2_percent
-        S_decline_probation_period = 237,        // decline_probation_period
-        S_server_tag = 238,                      // server_tag
-        S_239_20 = 239,                          // $@20
-        S_echo_client_id = 240,                  // echo_client_id
-        S_match_client_id = 241,                 // match_client_id
-        S_authoritative = 242,                   // authoritative
-        S_ddns_send_updates = 243,               // ddns_send_updates
-        S_ddns_override_no_update = 244,         // ddns_override_no_update
-        S_ddns_override_client_update = 245,     // ddns_override_client_update
-        S_ddns_replace_client_name = 246,        // ddns_replace_client_name
-        S_247_21 = 247,                          // $@21
-        S_ddns_replace_client_name_value = 248,  // ddns_replace_client_name_value
-        S_ddns_generated_prefix = 249,           // ddns_generated_prefix
-        S_250_22 = 250,                          // $@22
-        S_ddns_qualifying_suffix = 251,          // ddns_qualifying_suffix
-        S_252_23 = 252,                          // $@23
-        S_hostname_char_set = 253,               // hostname_char_set
-        S_254_24 = 254,                          // $@24
-        S_hostname_char_replacement = 255,       // hostname_char_replacement
-        S_256_25 = 256,                          // $@25
-        S_store_extended_info = 257,             // store_extended_info
-        S_statistic_default_sample_count = 258,  // statistic_default_sample_count
-        S_statistic_default_sample_age = 259,    // statistic_default_sample_age
-        S_interfaces_config = 260,               // interfaces_config
-        S_261_26 = 261,                          // $@26
-        S_interfaces_config_params = 262,        // interfaces_config_params
-        S_interfaces_config_param = 263,         // interfaces_config_param
-        S_sub_interfaces4 = 264,                 // sub_interfaces4
-        S_265_27 = 265,                          // $@27
-        S_interfaces_list = 266,                 // interfaces_list
-        S_267_28 = 267,                          // $@28
-        S_dhcp_socket_type = 268,                // dhcp_socket_type
-        S_269_29 = 269,                          // $@29
-        S_socket_type = 270,                     // socket_type
-        S_outbound_interface = 271,              // outbound_interface
-        S_272_30 = 272,                          // $@30
-        S_outbound_interface_value = 273,        // outbound_interface_value
-        S_re_detect = 274,                       // re_detect
-        S_lease_database = 275,                  // lease_database
-        S_276_31 = 276,                          // $@31
-        S_sanity_checks = 277,                   // sanity_checks
-        S_278_32 = 278,                          // $@32
-        S_sanity_checks_params = 279,            // sanity_checks_params
-        S_sanity_checks_param = 280,             // sanity_checks_param
-        S_lease_checks = 281,                    // lease_checks
-        S_282_33 = 282,                          // $@33
-        S_hosts_database = 283,                  // hosts_database
-        S_284_34 = 284,                          // $@34
-        S_hosts_databases = 285,                 // hosts_databases
-        S_286_35 = 286,                          // $@35
-        S_database_list = 287,                   // database_list
-        S_not_empty_database_list = 288,         // not_empty_database_list
-        S_database = 289,                        // database
-        S_290_36 = 290,                          // $@36
-        S_database_map_params = 291,             // database_map_params
-        S_database_map_param = 292,              // database_map_param
-        S_database_type = 293,                   // database_type
-        S_294_37 = 294,                          // $@37
-        S_db_type = 295,                         // db_type
-        S_user = 296,                            // user
-        S_297_38 = 297,                          // $@38
-        S_password = 298,                        // password
-        S_299_39 = 299,                          // $@39
-        S_host = 300,                            // host
-        S_301_40 = 301,                          // $@40
-        S_port = 302,                            // port
-        S_name = 303,                            // name
-        S_304_41 = 304,                          // $@41
-        S_persist = 305,                         // persist
-        S_lfc_interval = 306,                    // lfc_interval
-        S_readonly = 307,                        // readonly
-        S_connect_timeout = 308,                 // connect_timeout
-        S_request_timeout = 309,                 // request_timeout
-        S_tcp_keepalive = 310,                   // tcp_keepalive
-        S_tcp_nodelay = 311,                     // tcp_nodelay
-        S_contact_points = 312,                  // contact_points
-        S_313_42 = 313,                          // $@42
-        S_keyspace = 314,                        // keyspace
-        S_315_43 = 315,                          // $@43
-        S_consistency = 316,                     // consistency
-        S_317_44 = 317,                          // $@44
-        S_serial_consistency = 318,              // serial_consistency
-        S_319_45 = 319,                          // $@45
-        S_max_reconnect_tries = 320,             // max_reconnect_tries
-        S_reconnect_wait_time = 321,             // reconnect_wait_time
-        S_max_row_errors = 322,                  // max_row_errors
-        S_host_reservation_identifiers = 323,    // host_reservation_identifiers
-        S_324_46 = 324,                          // $@46
-        S_host_reservation_identifiers_list = 325, // host_reservation_identifiers_list
-        S_host_reservation_identifier = 326,     // host_reservation_identifier
-        S_duid_id = 327,                         // duid_id
-        S_hw_address_id = 328,                   // hw_address_id
-        S_circuit_id = 329,                      // circuit_id
-        S_client_id = 330,                       // client_id
-        S_flex_id = 331,                         // flex_id
-        S_dhcp_multi_threading = 332,            // dhcp_multi_threading
-        S_333_47 = 333,                          // $@47
-        S_multi_threading_params = 334,          // multi_threading_params
-        S_multi_threading_param = 335,           // multi_threading_param
-        S_enable_multi_threading = 336,          // enable_multi_threading
-        S_thread_pool_size = 337,                // thread_pool_size
-        S_packet_queue_size = 338,               // packet_queue_size
-        S_hooks_libraries = 339,                 // hooks_libraries
-        S_340_48 = 340,                          // $@48
-        S_hooks_libraries_list = 341,            // hooks_libraries_list
-        S_not_empty_hooks_libraries_list = 342,  // not_empty_hooks_libraries_list
-        S_hooks_library = 343,                   // hooks_library
-        S_344_49 = 344,                          // $@49
-        S_sub_hooks_library = 345,               // sub_hooks_library
-        S_346_50 = 346,                          // $@50
-        S_hooks_params = 347,                    // hooks_params
-        S_hooks_param = 348,                     // hooks_param
-        S_library = 349,                         // library
-        S_350_51 = 350,                          // $@51
-        S_parameters = 351,                      // parameters
-        S_352_52 = 352,                          // $@52
-        S_expired_leases_processing = 353,       // expired_leases_processing
-        S_354_53 = 354,                          // $@53
-        S_expired_leases_params = 355,           // expired_leases_params
-        S_expired_leases_param = 356,            // expired_leases_param
-        S_reclaim_timer_wait_time = 357,         // reclaim_timer_wait_time
-        S_flush_reclaimed_timer_wait_time = 358, // flush_reclaimed_timer_wait_time
-        S_hold_reclaimed_time = 359,             // hold_reclaimed_time
-        S_max_reclaim_leases = 360,              // max_reclaim_leases
-        S_max_reclaim_time = 361,                // max_reclaim_time
-        S_unwarned_reclaim_cycles = 362,         // unwarned_reclaim_cycles
-        S_subnet4_list = 363,                    // subnet4_list
-        S_364_54 = 364,                          // $@54
-        S_subnet4_list_content = 365,            // subnet4_list_content
-        S_not_empty_subnet4_list = 366,          // not_empty_subnet4_list
-        S_subnet4 = 367,                         // subnet4
-        S_368_55 = 368,                          // $@55
-        S_sub_subnet4 = 369,                     // sub_subnet4
-        S_370_56 = 370,                          // $@56
-        S_subnet4_params = 371,                  // subnet4_params
-        S_subnet4_param = 372,                   // subnet4_param
-        S_subnet = 373,                          // subnet
-        S_374_57 = 374,                          // $@57
-        S_subnet_4o6_interface = 375,            // subnet_4o6_interface
-        S_376_58 = 376,                          // $@58
-        S_subnet_4o6_interface_id = 377,         // subnet_4o6_interface_id
-        S_378_59 = 378,                          // $@59
-        S_subnet_4o6_subnet = 379,               // subnet_4o6_subnet
-        S_380_60 = 380,                          // $@60
-        S_interface = 381,                       // interface
-        S_382_61 = 382,                          // $@61
-        S_client_class = 383,                    // client_class
-        S_384_62 = 384,                          // $@62
-        S_require_client_classes = 385,          // require_client_classes
-        S_386_63 = 386,                          // $@63
-        S_reservation_mode = 387,                // reservation_mode
-        S_388_64 = 388,                          // $@64
-        S_hr_mode = 389,                         // hr_mode
-        S_id = 390,                              // id
-        S_shared_networks = 391,                 // shared_networks
-        S_392_65 = 392,                          // $@65
-        S_shared_networks_content = 393,         // shared_networks_content
-        S_shared_networks_list = 394,            // shared_networks_list
-        S_shared_network = 395,                  // shared_network
-        S_396_66 = 396,                          // $@66
-        S_shared_network_params = 397,           // shared_network_params
-        S_shared_network_param = 398,            // shared_network_param
-        S_option_def_list = 399,                 // option_def_list
-        S_400_67 = 400,                          // $@67
-        S_sub_option_def_list = 401,             // sub_option_def_list
-        S_402_68 = 402,                          // $@68
-        S_option_def_list_content = 403,         // option_def_list_content
-        S_not_empty_option_def_list = 404,       // not_empty_option_def_list
-        S_option_def_entry = 405,                // option_def_entry
-        S_406_69 = 406,                          // $@69
-        S_sub_option_def = 407,                  // sub_option_def
-        S_408_70 = 408,                          // $@70
-        S_option_def_params = 409,               // option_def_params
-        S_not_empty_option_def_params = 410,     // not_empty_option_def_params
-        S_option_def_param = 411,                // option_def_param
-        S_option_def_name = 412,                 // option_def_name
-        S_code = 413,                            // code
-        S_option_def_code = 414,                 // option_def_code
-        S_option_def_type = 415,                 // option_def_type
-        S_416_71 = 416,                          // $@71
-        S_option_def_record_types = 417,         // option_def_record_types
-        S_418_72 = 418,                          // $@72
-        S_space = 419,                           // space
-        S_420_73 = 420,                          // $@73
-        S_option_def_space = 421,                // option_def_space
-        S_option_def_encapsulate = 422,          // option_def_encapsulate
-        S_423_74 = 423,                          // $@74
-        S_option_def_array = 424,                // option_def_array
-        S_option_data_list = 425,                // option_data_list
-        S_426_75 = 426,                          // $@75
-        S_option_data_list_content = 427,        // option_data_list_content
-        S_not_empty_option_data_list = 428,      // not_empty_option_data_list
-        S_option_data_entry = 429,               // option_data_entry
-        S_430_76 = 430,                          // $@76
-        S_sub_option_data = 431,                 // sub_option_data
-        S_432_77 = 432,                          // $@77
-        S_option_data_params = 433,              // option_data_params
-        S_not_empty_option_data_params = 434,    // not_empty_option_data_params
-        S_option_data_param = 435,               // option_data_param
-        S_option_data_name = 436,                // option_data_name
-        S_option_data_data = 437,                // option_data_data
-        S_438_78 = 438,                          // $@78
-        S_option_data_code = 439,                // option_data_code
-        S_option_data_space = 440,               // option_data_space
-        S_option_data_csv_format = 441,          // option_data_csv_format
-        S_option_data_always_send = 442,         // option_data_always_send
-        S_pools_list = 443,                      // pools_list
-        S_444_79 = 444,                          // $@79
-        S_pools_list_content = 445,              // pools_list_content
-        S_not_empty_pools_list = 446,            // not_empty_pools_list
-        S_pool_list_entry = 447,                 // pool_list_entry
-        S_448_80 = 448,                          // $@80
-        S_sub_pool4 = 449,                       // sub_pool4
-        S_450_81 = 450,                          // $@81
-        S_pool_params = 451,                     // pool_params
-        S_pool_param = 452,                      // pool_param
-        S_pool_entry = 453,                      // pool_entry
-        S_454_82 = 454,                          // $@82
-        S_user_context = 455,                    // user_context
-        S_456_83 = 456,                          // $@83
-        S_comment = 457,                         // comment
-        S_458_84 = 458,                          // $@84
-        S_reservations = 459,                    // reservations
-        S_460_85 = 460,                          // $@85
-        S_reservations_list = 461,               // reservations_list
-        S_not_empty_reservations_list = 462,     // not_empty_reservations_list
-        S_reservation = 463,                     // reservation
-        S_464_86 = 464,                          // $@86
-        S_sub_reservation = 465,                 // sub_reservation
-        S_466_87 = 466,                          // $@87
-        S_reservation_params = 467,              // reservation_params
-        S_not_empty_reservation_params = 468,    // not_empty_reservation_params
-        S_reservation_param = 469,               // reservation_param
-        S_next_server = 470,                     // next_server
-        S_471_88 = 471,                          // $@88
-        S_server_hostname = 472,                 // server_hostname
-        S_473_89 = 473,                          // $@89
-        S_boot_file_name = 474,                  // boot_file_name
-        S_475_90 = 475,                          // $@90
-        S_ip_address = 476,                      // ip_address
-        S_477_91 = 477,                          // $@91
-        S_ip_addresses = 478,                    // ip_addresses
-        S_479_92 = 479,                          // $@92
-        S_duid = 480,                            // duid
-        S_481_93 = 481,                          // $@93
-        S_hw_address = 482,                      // hw_address
-        S_483_94 = 483,                          // $@94
-        S_client_id_value = 484,                 // client_id_value
-        S_485_95 = 485,                          // $@95
-        S_circuit_id_value = 486,                // circuit_id_value
-        S_487_96 = 487,                          // $@96
-        S_flex_id_value = 488,                   // flex_id_value
-        S_489_97 = 489,                          // $@97
-        S_hostname = 490,                        // hostname
-        S_491_98 = 491,                          // $@98
-        S_reservation_client_classes = 492,      // reservation_client_classes
-        S_493_99 = 493,                          // $@99
-        S_relay = 494,                           // relay
-        S_495_100 = 495,                         // $@100
-        S_relay_map = 496,                       // relay_map
-        S_client_classes = 497,                  // client_classes
-        S_498_101 = 498,                         // $@101
-        S_client_classes_list = 499,             // client_classes_list
-        S_client_class_entry = 500,              // client_class_entry
-        S_501_102 = 501,                         // $@102
-        S_client_class_params = 502,             // client_class_params
-        S_not_empty_client_class_params = 503,   // not_empty_client_class_params
-        S_client_class_param = 504,              // client_class_param
-        S_client_class_name = 505,               // client_class_name
-        S_client_class_test = 506,               // client_class_test
-        S_507_103 = 507,                         // $@103
-        S_only_if_required = 508,                // only_if_required
-        S_dhcp4o6_port = 509,                    // dhcp4o6_port
-        S_control_socket = 510,                  // control_socket
-        S_511_104 = 511,                         // $@104
-        S_control_socket_params = 512,           // control_socket_params
-        S_control_socket_param = 513,            // control_socket_param
-        S_control_socket_type = 514,             // control_socket_type
-        S_515_105 = 515,                         // $@105
-        S_control_socket_name = 516,             // control_socket_name
-        S_517_106 = 517,                         // $@106
-        S_dhcp_queue_control = 518,              // dhcp_queue_control
-        S_519_107 = 519,                         // $@107
-        S_queue_control_params = 520,            // queue_control_params
-        S_queue_control_param = 521,             // queue_control_param
-        S_enable_queue = 522,                    // enable_queue
-        S_queue_type = 523,                      // queue_type
-        S_524_108 = 524,                         // $@108
-        S_capacity = 525,                        // capacity
-        S_arbitrary_map_entry = 526,             // arbitrary_map_entry
-        S_527_109 = 527,                         // $@109
-        S_dhcp_ddns = 528,                       // dhcp_ddns
-        S_529_110 = 529,                         // $@110
-        S_sub_dhcp_ddns = 530,                   // sub_dhcp_ddns
-        S_531_111 = 531,                         // $@111
-        S_dhcp_ddns_params = 532,                // dhcp_ddns_params
-        S_dhcp_ddns_param = 533,                 // dhcp_ddns_param
-        S_enable_updates = 534,                  // enable_updates
-        S_server_ip = 535,                       // server_ip
-        S_536_112 = 536,                         // $@112
-        S_server_port = 537,                     // server_port
-        S_sender_ip = 538,                       // sender_ip
-        S_539_113 = 539,                         // $@113
-        S_sender_port = 540,                     // sender_port
-        S_max_queue_size = 541,                  // max_queue_size
-        S_ncr_protocol = 542,                    // ncr_protocol
-        S_543_114 = 543,                         // $@114
-        S_ncr_protocol_value = 544,              // ncr_protocol_value
-        S_ncr_format = 545,                      // ncr_format
-        S_546_115 = 546,                         // $@115
-        S_dep_qualifying_suffix = 547,           // dep_qualifying_suffix
-        S_548_116 = 548,                         // $@116
-        S_dep_override_no_update = 549,          // dep_override_no_update
-        S_dep_override_client_update = 550,      // dep_override_client_update
-        S_dep_replace_client_name = 551,         // dep_replace_client_name
-        S_552_117 = 552,                         // $@117
-        S_dep_generated_prefix = 553,            // dep_generated_prefix
-        S_554_118 = 554,                         // $@118
-        S_dep_hostname_char_set = 555,           // dep_hostname_char_set
-        S_556_119 = 556,                         // $@119
-        S_dep_hostname_char_replacement = 557,   // dep_hostname_char_replacement
-        S_558_120 = 558,                         // $@120
-        S_config_control = 559,                  // config_control
-        S_560_121 = 560,                         // $@121
-        S_sub_config_control = 561,              // sub_config_control
-        S_562_122 = 562,                         // $@122
-        S_config_control_params = 563,           // config_control_params
-        S_config_control_param = 564,            // config_control_param
-        S_config_databases = 565,                // config_databases
-        S_566_123 = 566,                         // $@123
-        S_config_fetch_wait_time = 567,          // config_fetch_wait_time
-        S_loggers = 568,                         // loggers
-        S_569_124 = 569,                         // $@124
-        S_loggers_entries = 570,                 // loggers_entries
-        S_logger_entry = 571,                    // logger_entry
-        S_572_125 = 572,                         // $@125
-        S_logger_params = 573,                   // logger_params
-        S_logger_param = 574,                    // logger_param
-        S_debuglevel = 575,                      // debuglevel
-        S_severity = 576,                        // severity
-        S_577_126 = 577,                         // $@126
-        S_output_options_list = 578,             // output_options_list
-        S_579_127 = 579,                         // $@127
-        S_output_options_list_content = 580,     // output_options_list_content
-        S_output_entry = 581,                    // output_entry
-        S_582_128 = 582,                         // $@128
-        S_output_params_list = 583,              // output_params_list
-        S_output_params = 584,                   // output_params
-        S_output = 585,                          // output
-        S_586_129 = 586,                         // $@129
-        S_flush = 587,                           // flush
-        S_maxsize = 588,                         // maxsize
-        S_maxver = 589,                          // maxver
-        S_pattern = 590,                         // pattern
-        S_591_130 = 591                          // $@130
+        S_CACHE_THRESHOLD = 65,                  // "cache-threshold"
+        S_CACHE_MAX = 66,                        // "cache-max"
+        S_DECLINE_PROBATION_PERIOD = 67,         // "decline-probation-period"
+        S_SERVER_TAG = 68,                       // "server-tag"
+        S_STATISTIC_DEFAULT_SAMPLE_COUNT = 69,   // "statistic-default-sample-count"
+        S_STATISTIC_DEFAULT_SAMPLE_AGE = 70,     // "statistic-default-sample-age"
+        S_DDNS_SEND_UPDATES = 71,                // "ddns-send-updates"
+        S_DDNS_OVERRIDE_NO_UPDATE = 72,          // "ddns-override-no-update"
+        S_DDNS_OVERRIDE_CLIENT_UPDATE = 73,      // "ddns-override-client-update"
+        S_DDNS_REPLACE_CLIENT_NAME = 74,         // "ddns-replace-client-name"
+        S_DDNS_GENERATED_PREFIX = 75,            // "ddns-generated-prefix"
+        S_DDNS_QUALIFYING_SUFFIX = 76,           // "ddns-qualifying-suffix"
+        S_STORE_EXTENDED_INFO = 77,              // "store-extended-info"
+        S_SUBNET4 = 78,                          // "subnet4"
+        S_SUBNET_4O6_INTERFACE = 79,             // "4o6-interface"
+        S_SUBNET_4O6_INTERFACE_ID = 80,          // "4o6-interface-id"
+        S_SUBNET_4O6_SUBNET = 81,                // "4o6-subnet"
+        S_OPTION_DEF = 82,                       // "option-def"
+        S_OPTION_DATA = 83,                      // "option-data"
+        S_NAME = 84,                             // "name"
+        S_DATA = 85,                             // "data"
+        S_CODE = 86,                             // "code"
+        S_SPACE = 87,                            // "space"
+        S_CSV_FORMAT = 88,                       // "csv-format"
+        S_ALWAYS_SEND = 89,                      // "always-send"
+        S_RECORD_TYPES = 90,                     // "record-types"
+        S_ENCAPSULATE = 91,                      // "encapsulate"
+        S_ARRAY = 92,                            // "array"
+        S_SHARED_NETWORKS = 93,                  // "shared-networks"
+        S_POOLS = 94,                            // "pools"
+        S_POOL = 95,                             // "pool"
+        S_USER_CONTEXT = 96,                     // "user-context"
+        S_COMMENT = 97,                          // "comment"
+        S_SUBNET = 98,                           // "subnet"
+        S_INTERFACE = 99,                        // "interface"
+        S_ID = 100,                              // "id"
+        S_RESERVATION_MODE = 101,                // "reservation-mode"
+        S_DISABLED = 102,                        // "disabled"
+        S_OUT_OF_POOL = 103,                     // "out-of-pool"
+        S_GLOBAL = 104,                          // "global"
+        S_ALL = 105,                             // "all"
+        S_HOST_RESERVATION_IDENTIFIERS = 106,    // "host-reservation-identifiers"
+        S_CLIENT_CLASSES = 107,                  // "client-classes"
+        S_REQUIRE_CLIENT_CLASSES = 108,          // "require-client-classes"
+        S_TEST = 109,                            // "test"
+        S_ONLY_IF_REQUIRED = 110,                // "only-if-required"
+        S_CLIENT_CLASS = 111,                    // "client-class"
+        S_RESERVATIONS = 112,                    // "reservations"
+        S_DUID = 113,                            // "duid"
+        S_HW_ADDRESS = 114,                      // "hw-address"
+        S_CIRCUIT_ID = 115,                      // "circuit-id"
+        S_CLIENT_ID = 116,                       // "client-id"
+        S_HOSTNAME = 117,                        // "hostname"
+        S_FLEX_ID = 118,                         // "flex-id"
+        S_RELAY = 119,                           // "relay"
+        S_IP_ADDRESS = 120,                      // "ip-address"
+        S_IP_ADDRESSES = 121,                    // "ip-addresses"
+        S_HOOKS_LIBRARIES = 122,                 // "hooks-libraries"
+        S_LIBRARY = 123,                         // "library"
+        S_PARAMETERS = 124,                      // "parameters"
+        S_EXPIRED_LEASES_PROCESSING = 125,       // "expired-leases-processing"
+        S_RECLAIM_TIMER_WAIT_TIME = 126,         // "reclaim-timer-wait-time"
+        S_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 127, // "flush-reclaimed-timer-wait-time"
+        S_HOLD_RECLAIMED_TIME = 128,             // "hold-reclaimed-time"
+        S_MAX_RECLAIM_LEASES = 129,              // "max-reclaim-leases"
+        S_MAX_RECLAIM_TIME = 130,                // "max-reclaim-time"
+        S_UNWARNED_RECLAIM_CYCLES = 131,         // "unwarned-reclaim-cycles"
+        S_DHCP4O6_PORT = 132,                    // "dhcp4o6-port"
+        S_DHCP_MULTI_THREADING = 133,            // "multi-threading"
+        S_ENABLE_MULTI_THREADING = 134,          // "enable-multi-threading"
+        S_THREAD_POOL_SIZE = 135,                // "thread-pool-size"
+        S_PACKET_QUEUE_SIZE = 136,               // "packet-queue-size"
+        S_CONTROL_SOCKET = 137,                  // "control-socket"
+        S_SOCKET_TYPE = 138,                     // "socket-type"
+        S_SOCKET_NAME = 139,                     // "socket-name"
+        S_DHCP_QUEUE_CONTROL = 140,              // "dhcp-queue-control"
+        S_ENABLE_QUEUE = 141,                    // "enable-queue"
+        S_QUEUE_TYPE = 142,                      // "queue-type"
+        S_CAPACITY = 143,                        // "capacity"
+        S_DHCP_DDNS = 144,                       // "dhcp-ddns"
+        S_ENABLE_UPDATES = 145,                  // "enable-updates"
+        S_QUALIFYING_SUFFIX = 146,               // "qualifying-suffix"
+        S_SERVER_IP = 147,                       // "server-ip"
+        S_SERVER_PORT = 148,                     // "server-port"
+        S_SENDER_IP = 149,                       // "sender-ip"
+        S_SENDER_PORT = 150,                     // "sender-port"
+        S_MAX_QUEUE_SIZE = 151,                  // "max-queue-size"
+        S_NCR_PROTOCOL = 152,                    // "ncr-protocol"
+        S_NCR_FORMAT = 153,                      // "ncr-format"
+        S_OVERRIDE_NO_UPDATE = 154,              // "override-no-update"
+        S_OVERRIDE_CLIENT_UPDATE = 155,          // "override-client-update"
+        S_REPLACE_CLIENT_NAME = 156,             // "replace-client-name"
+        S_GENERATED_PREFIX = 157,                // "generated-prefix"
+        S_TCP = 158,                             // "tcp"
+        S_JSON = 159,                            // "JSON"
+        S_WHEN_PRESENT = 160,                    // "when-present"
+        S_NEVER = 161,                           // "never"
+        S_ALWAYS = 162,                          // "always"
+        S_WHEN_NOT_PRESENT = 163,                // "when-not-present"
+        S_HOSTNAME_CHAR_SET = 164,               // "hostname-char-set"
+        S_HOSTNAME_CHAR_REPLACEMENT = 165,       // "hostname-char-replacement"
+        S_LOGGERS = 166,                         // "loggers"
+        S_OUTPUT_OPTIONS = 167,                  // "output_options"
+        S_OUTPUT = 168,                          // "output"
+        S_DEBUGLEVEL = 169,                      // "debuglevel"
+        S_SEVERITY = 170,                        // "severity"
+        S_FLUSH = 171,                           // "flush"
+        S_MAXSIZE = 172,                         // "maxsize"
+        S_MAXVER = 173,                          // "maxver"
+        S_PATTERN = 174,                         // "pattern"
+        S_TOPLEVEL_JSON = 175,                   // TOPLEVEL_JSON
+        S_TOPLEVEL_DHCP4 = 176,                  // TOPLEVEL_DHCP4
+        S_SUB_DHCP4 = 177,                       // SUB_DHCP4
+        S_SUB_INTERFACES4 = 178,                 // SUB_INTERFACES4
+        S_SUB_SUBNET4 = 179,                     // SUB_SUBNET4
+        S_SUB_POOL4 = 180,                       // SUB_POOL4
+        S_SUB_RESERVATION = 181,                 // SUB_RESERVATION
+        S_SUB_OPTION_DEFS = 182,                 // SUB_OPTION_DEFS
+        S_SUB_OPTION_DEF = 183,                  // SUB_OPTION_DEF
+        S_SUB_OPTION_DATA = 184,                 // SUB_OPTION_DATA
+        S_SUB_HOOKS_LIBRARY = 185,               // SUB_HOOKS_LIBRARY
+        S_SUB_DHCP_DDNS = 186,                   // SUB_DHCP_DDNS
+        S_SUB_CONFIG_CONTROL = 187,              // SUB_CONFIG_CONTROL
+        S_STRING = 188,                          // "constant string"
+        S_INTEGER = 189,                         // "integer"
+        S_FLOAT = 190,                           // "floating point"
+        S_BOOLEAN = 191,                         // "boolean"
+        S_YYACCEPT = 192,                        // $accept
+        S_start = 193,                           // start
+        S_194_1 = 194,                           // $@1
+        S_195_2 = 195,                           // $@2
+        S_196_3 = 196,                           // $@3
+        S_197_4 = 197,                           // $@4
+        S_198_5 = 198,                           // $@5
+        S_199_6 = 199,                           // $@6
+        S_200_7 = 200,                           // $@7
+        S_201_8 = 201,                           // $@8
+        S_202_9 = 202,                           // $@9
+        S_203_10 = 203,                          // $@10
+        S_204_11 = 204,                          // $@11
+        S_205_12 = 205,                          // $@12
+        S_206_13 = 206,                          // $@13
+        S_value = 207,                           // value
+        S_sub_json = 208,                        // sub_json
+        S_map2 = 209,                            // map2
+        S_210_14 = 210,                          // $@14
+        S_map_value = 211,                       // map_value
+        S_map_content = 212,                     // map_content
+        S_not_empty_map = 213,                   // not_empty_map
+        S_list_generic = 214,                    // list_generic
+        S_215_15 = 215,                          // $@15
+        S_list_content = 216,                    // list_content
+        S_not_empty_list = 217,                  // not_empty_list
+        S_list_strings = 218,                    // list_strings
+        S_219_16 = 219,                          // $@16
+        S_list_strings_content = 220,            // list_strings_content
+        S_not_empty_list_strings = 221,          // not_empty_list_strings
+        S_unknown_map_entry = 222,               // unknown_map_entry
+        S_syntax_map = 223,                      // syntax_map
+        S_224_17 = 224,                          // $@17
+        S_global_object = 225,                   // global_object
+        S_226_18 = 226,                          // $@18
+        S_sub_dhcp4 = 227,                       // sub_dhcp4
+        S_228_19 = 228,                          // $@19
+        S_global_params = 229,                   // global_params
+        S_global_param = 230,                    // global_param
+        S_valid_lifetime = 231,                  // valid_lifetime
+        S_min_valid_lifetime = 232,              // min_valid_lifetime
+        S_max_valid_lifetime = 233,              // max_valid_lifetime
+        S_renew_timer = 234,                     // renew_timer
+        S_rebind_timer = 235,                    // rebind_timer
+        S_calculate_tee_times = 236,             // calculate_tee_times
+        S_t1_percent = 237,                      // t1_percent
+        S_t2_percent = 238,                      // t2_percent
+        S_cache_threshold = 239,                 // cache_threshold
+        S_cache_max = 240,                       // cache_max
+        S_decline_probation_period = 241,        // decline_probation_period
+        S_server_tag = 242,                      // server_tag
+        S_243_20 = 243,                          // $@20
+        S_echo_client_id = 244,                  // echo_client_id
+        S_match_client_id = 245,                 // match_client_id
+        S_authoritative = 246,                   // authoritative
+        S_ddns_send_updates = 247,               // ddns_send_updates
+        S_ddns_override_no_update = 248,         // ddns_override_no_update
+        S_ddns_override_client_update = 249,     // ddns_override_client_update
+        S_ddns_replace_client_name = 250,        // ddns_replace_client_name
+        S_251_21 = 251,                          // $@21
+        S_ddns_replace_client_name_value = 252,  // ddns_replace_client_name_value
+        S_ddns_generated_prefix = 253,           // ddns_generated_prefix
+        S_254_22 = 254,                          // $@22
+        S_ddns_qualifying_suffix = 255,          // ddns_qualifying_suffix
+        S_256_23 = 256,                          // $@23
+        S_hostname_char_set = 257,               // hostname_char_set
+        S_258_24 = 258,                          // $@24
+        S_hostname_char_replacement = 259,       // hostname_char_replacement
+        S_260_25 = 260,                          // $@25
+        S_store_extended_info = 261,             // store_extended_info
+        S_statistic_default_sample_count = 262,  // statistic_default_sample_count
+        S_statistic_default_sample_age = 263,    // statistic_default_sample_age
+        S_interfaces_config = 264,               // interfaces_config
+        S_265_26 = 265,                          // $@26
+        S_interfaces_config_params = 266,        // interfaces_config_params
+        S_interfaces_config_param = 267,         // interfaces_config_param
+        S_sub_interfaces4 = 268,                 // sub_interfaces4
+        S_269_27 = 269,                          // $@27
+        S_interfaces_list = 270,                 // interfaces_list
+        S_271_28 = 271,                          // $@28
+        S_dhcp_socket_type = 272,                // dhcp_socket_type
+        S_273_29 = 273,                          // $@29
+        S_socket_type = 274,                     // socket_type
+        S_outbound_interface = 275,              // outbound_interface
+        S_276_30 = 276,                          // $@30
+        S_outbound_interface_value = 277,        // outbound_interface_value
+        S_re_detect = 278,                       // re_detect
+        S_lease_database = 279,                  // lease_database
+        S_280_31 = 280,                          // $@31
+        S_sanity_checks = 281,                   // sanity_checks
+        S_282_32 = 282,                          // $@32
+        S_sanity_checks_params = 283,            // sanity_checks_params
+        S_sanity_checks_param = 284,             // sanity_checks_param
+        S_lease_checks = 285,                    // lease_checks
+        S_286_33 = 286,                          // $@33
+        S_hosts_database = 287,                  // hosts_database
+        S_288_34 = 288,                          // $@34
+        S_hosts_databases = 289,                 // hosts_databases
+        S_290_35 = 290,                          // $@35
+        S_database_list = 291,                   // database_list
+        S_not_empty_database_list = 292,         // not_empty_database_list
+        S_database = 293,                        // database
+        S_294_36 = 294,                          // $@36
+        S_database_map_params = 295,             // database_map_params
+        S_database_map_param = 296,              // database_map_param
+        S_database_type = 297,                   // database_type
+        S_298_37 = 298,                          // $@37
+        S_db_type = 299,                         // db_type
+        S_user = 300,                            // user
+        S_301_38 = 301,                          // $@38
+        S_password = 302,                        // password
+        S_303_39 = 303,                          // $@39
+        S_host = 304,                            // host
+        S_305_40 = 305,                          // $@40
+        S_port = 306,                            // port
+        S_name = 307,                            // name
+        S_308_41 = 308,                          // $@41
+        S_persist = 309,                         // persist
+        S_lfc_interval = 310,                    // lfc_interval
+        S_readonly = 311,                        // readonly
+        S_connect_timeout = 312,                 // connect_timeout
+        S_request_timeout = 313,                 // request_timeout
+        S_tcp_keepalive = 314,                   // tcp_keepalive
+        S_tcp_nodelay = 315,                     // tcp_nodelay
+        S_contact_points = 316,                  // contact_points
+        S_317_42 = 317,                          // $@42
+        S_keyspace = 318,                        // keyspace
+        S_319_43 = 319,                          // $@43
+        S_consistency = 320,                     // consistency
+        S_321_44 = 321,                          // $@44
+        S_serial_consistency = 322,              // serial_consistency
+        S_323_45 = 323,                          // $@45
+        S_max_reconnect_tries = 324,             // max_reconnect_tries
+        S_reconnect_wait_time = 325,             // reconnect_wait_time
+        S_max_row_errors = 326,                  // max_row_errors
+        S_host_reservation_identifiers = 327,    // host_reservation_identifiers
+        S_328_46 = 328,                          // $@46
+        S_host_reservation_identifiers_list = 329, // host_reservation_identifiers_list
+        S_host_reservation_identifier = 330,     // host_reservation_identifier
+        S_duid_id = 331,                         // duid_id
+        S_hw_address_id = 332,                   // hw_address_id
+        S_circuit_id = 333,                      // circuit_id
+        S_client_id = 334,                       // client_id
+        S_flex_id = 335,                         // flex_id
+        S_dhcp_multi_threading = 336,            // dhcp_multi_threading
+        S_337_47 = 337,                          // $@47
+        S_multi_threading_params = 338,          // multi_threading_params
+        S_multi_threading_param = 339,           // multi_threading_param
+        S_enable_multi_threading = 340,          // enable_multi_threading
+        S_thread_pool_size = 341,                // thread_pool_size
+        S_packet_queue_size = 342,               // packet_queue_size
+        S_hooks_libraries = 343,                 // hooks_libraries
+        S_344_48 = 344,                          // $@48
+        S_hooks_libraries_list = 345,            // hooks_libraries_list
+        S_not_empty_hooks_libraries_list = 346,  // not_empty_hooks_libraries_list
+        S_hooks_library = 347,                   // hooks_library
+        S_348_49 = 348,                          // $@49
+        S_sub_hooks_library = 349,               // sub_hooks_library
+        S_350_50 = 350,                          // $@50
+        S_hooks_params = 351,                    // hooks_params
+        S_hooks_param = 352,                     // hooks_param
+        S_library = 353,                         // library
+        S_354_51 = 354,                          // $@51
+        S_parameters = 355,                      // parameters
+        S_356_52 = 356,                          // $@52
+        S_expired_leases_processing = 357,       // expired_leases_processing
+        S_358_53 = 358,                          // $@53
+        S_expired_leases_params = 359,           // expired_leases_params
+        S_expired_leases_param = 360,            // expired_leases_param
+        S_reclaim_timer_wait_time = 361,         // reclaim_timer_wait_time
+        S_flush_reclaimed_timer_wait_time = 362, // flush_reclaimed_timer_wait_time
+        S_hold_reclaimed_time = 363,             // hold_reclaimed_time
+        S_max_reclaim_leases = 364,              // max_reclaim_leases
+        S_max_reclaim_time = 365,                // max_reclaim_time
+        S_unwarned_reclaim_cycles = 366,         // unwarned_reclaim_cycles
+        S_subnet4_list = 367,                    // subnet4_list
+        S_368_54 = 368,                          // $@54
+        S_subnet4_list_content = 369,            // subnet4_list_content
+        S_not_empty_subnet4_list = 370,          // not_empty_subnet4_list
+        S_subnet4 = 371,                         // subnet4
+        S_372_55 = 372,                          // $@55
+        S_sub_subnet4 = 373,                     // sub_subnet4
+        S_374_56 = 374,                          // $@56
+        S_subnet4_params = 375,                  // subnet4_params
+        S_subnet4_param = 376,                   // subnet4_param
+        S_subnet = 377,                          // subnet
+        S_378_57 = 378,                          // $@57
+        S_subnet_4o6_interface = 379,            // subnet_4o6_interface
+        S_380_58 = 380,                          // $@58
+        S_subnet_4o6_interface_id = 381,         // subnet_4o6_interface_id
+        S_382_59 = 382,                          // $@59
+        S_subnet_4o6_subnet = 383,               // subnet_4o6_subnet
+        S_384_60 = 384,                          // $@60
+        S_interface = 385,                       // interface
+        S_386_61 = 386,                          // $@61
+        S_client_class = 387,                    // client_class
+        S_388_62 = 388,                          // $@62
+        S_require_client_classes = 389,          // require_client_classes
+        S_390_63 = 390,                          // $@63
+        S_reservation_mode = 391,                // reservation_mode
+        S_392_64 = 392,                          // $@64
+        S_hr_mode = 393,                         // hr_mode
+        S_id = 394,                              // id
+        S_shared_networks = 395,                 // shared_networks
+        S_396_65 = 396,                          // $@65
+        S_shared_networks_content = 397,         // shared_networks_content
+        S_shared_networks_list = 398,            // shared_networks_list
+        S_shared_network = 399,                  // shared_network
+        S_400_66 = 400,                          // $@66
+        S_shared_network_params = 401,           // shared_network_params
+        S_shared_network_param = 402,            // shared_network_param
+        S_option_def_list = 403,                 // option_def_list
+        S_404_67 = 404,                          // $@67
+        S_sub_option_def_list = 405,             // sub_option_def_list
+        S_406_68 = 406,                          // $@68
+        S_option_def_list_content = 407,         // option_def_list_content
+        S_not_empty_option_def_list = 408,       // not_empty_option_def_list
+        S_option_def_entry = 409,                // option_def_entry
+        S_410_69 = 410,                          // $@69
+        S_sub_option_def = 411,                  // sub_option_def
+        S_412_70 = 412,                          // $@70
+        S_option_def_params = 413,               // option_def_params
+        S_not_empty_option_def_params = 414,     // not_empty_option_def_params
+        S_option_def_param = 415,                // option_def_param
+        S_option_def_name = 416,                 // option_def_name
+        S_code = 417,                            // code
+        S_option_def_code = 418,                 // option_def_code
+        S_option_def_type = 419,                 // option_def_type
+        S_420_71 = 420,                          // $@71
+        S_option_def_record_types = 421,         // option_def_record_types
+        S_422_72 = 422,                          // $@72
+        S_space = 423,                           // space
+        S_424_73 = 424,                          // $@73
+        S_option_def_space = 425,                // option_def_space
+        S_option_def_encapsulate = 426,          // option_def_encapsulate
+        S_427_74 = 427,                          // $@74
+        S_option_def_array = 428,                // option_def_array
+        S_option_data_list = 429,                // option_data_list
+        S_430_75 = 430,                          // $@75
+        S_option_data_list_content = 431,        // option_data_list_content
+        S_not_empty_option_data_list = 432,      // not_empty_option_data_list
+        S_option_data_entry = 433,               // option_data_entry
+        S_434_76 = 434,                          // $@76
+        S_sub_option_data = 435,                 // sub_option_data
+        S_436_77 = 436,                          // $@77
+        S_option_data_params = 437,              // option_data_params
+        S_not_empty_option_data_params = 438,    // not_empty_option_data_params
+        S_option_data_param = 439,               // option_data_param
+        S_option_data_name = 440,                // option_data_name
+        S_option_data_data = 441,                // option_data_data
+        S_442_78 = 442,                          // $@78
+        S_option_data_code = 443,                // option_data_code
+        S_option_data_space = 444,               // option_data_space
+        S_option_data_csv_format = 445,          // option_data_csv_format
+        S_option_data_always_send = 446,         // option_data_always_send
+        S_pools_list = 447,                      // pools_list
+        S_448_79 = 448,                          // $@79
+        S_pools_list_content = 449,              // pools_list_content
+        S_not_empty_pools_list = 450,            // not_empty_pools_list
+        S_pool_list_entry = 451,                 // pool_list_entry
+        S_452_80 = 452,                          // $@80
+        S_sub_pool4 = 453,                       // sub_pool4
+        S_454_81 = 454,                          // $@81
+        S_pool_params = 455,                     // pool_params
+        S_pool_param = 456,                      // pool_param
+        S_pool_entry = 457,                      // pool_entry
+        S_458_82 = 458,                          // $@82
+        S_user_context = 459,                    // user_context
+        S_460_83 = 460,                          // $@83
+        S_comment = 461,                         // comment
+        S_462_84 = 462,                          // $@84
+        S_reservations = 463,                    // reservations
+        S_464_85 = 464,                          // $@85
+        S_reservations_list = 465,               // reservations_list
+        S_not_empty_reservations_list = 466,     // not_empty_reservations_list
+        S_reservation = 467,                     // reservation
+        S_468_86 = 468,                          // $@86
+        S_sub_reservation = 469,                 // sub_reservation
+        S_470_87 = 470,                          // $@87
+        S_reservation_params = 471,              // reservation_params
+        S_not_empty_reservation_params = 472,    // not_empty_reservation_params
+        S_reservation_param = 473,               // reservation_param
+        S_next_server = 474,                     // next_server
+        S_475_88 = 475,                          // $@88
+        S_server_hostname = 476,                 // server_hostname
+        S_477_89 = 477,                          // $@89
+        S_boot_file_name = 478,                  // boot_file_name
+        S_479_90 = 479,                          // $@90
+        S_ip_address = 480,                      // ip_address
+        S_481_91 = 481,                          // $@91
+        S_ip_addresses = 482,                    // ip_addresses
+        S_483_92 = 483,                          // $@92
+        S_duid = 484,                            // duid
+        S_485_93 = 485,                          // $@93
+        S_hw_address = 486,                      // hw_address
+        S_487_94 = 487,                          // $@94
+        S_client_id_value = 488,                 // client_id_value
+        S_489_95 = 489,                          // $@95
+        S_circuit_id_value = 490,                // circuit_id_value
+        S_491_96 = 491,                          // $@96
+        S_flex_id_value = 492,                   // flex_id_value
+        S_493_97 = 493,                          // $@97
+        S_hostname = 494,                        // hostname
+        S_495_98 = 495,                          // $@98
+        S_reservation_client_classes = 496,      // reservation_client_classes
+        S_497_99 = 497,                          // $@99
+        S_relay = 498,                           // relay
+        S_499_100 = 499,                         // $@100
+        S_relay_map = 500,                       // relay_map
+        S_client_classes = 501,                  // client_classes
+        S_502_101 = 502,                         // $@101
+        S_client_classes_list = 503,             // client_classes_list
+        S_client_class_entry = 504,              // client_class_entry
+        S_505_102 = 505,                         // $@102
+        S_client_class_params = 506,             // client_class_params
+        S_not_empty_client_class_params = 507,   // not_empty_client_class_params
+        S_client_class_param = 508,              // client_class_param
+        S_client_class_name = 509,               // client_class_name
+        S_client_class_test = 510,               // client_class_test
+        S_511_103 = 511,                         // $@103
+        S_only_if_required = 512,                // only_if_required
+        S_dhcp4o6_port = 513,                    // dhcp4o6_port
+        S_control_socket = 514,                  // control_socket
+        S_515_104 = 515,                         // $@104
+        S_control_socket_params = 516,           // control_socket_params
+        S_control_socket_param = 517,            // control_socket_param
+        S_control_socket_type = 518,             // control_socket_type
+        S_519_105 = 519,                         // $@105
+        S_control_socket_name = 520,             // control_socket_name
+        S_521_106 = 521,                         // $@106
+        S_dhcp_queue_control = 522,              // dhcp_queue_control
+        S_523_107 = 523,                         // $@107
+        S_queue_control_params = 524,            // queue_control_params
+        S_queue_control_param = 525,             // queue_control_param
+        S_enable_queue = 526,                    // enable_queue
+        S_queue_type = 527,                      // queue_type
+        S_528_108 = 528,                         // $@108
+        S_capacity = 529,                        // capacity
+        S_arbitrary_map_entry = 530,             // arbitrary_map_entry
+        S_531_109 = 531,                         // $@109
+        S_dhcp_ddns = 532,                       // dhcp_ddns
+        S_533_110 = 533,                         // $@110
+        S_sub_dhcp_ddns = 534,                   // sub_dhcp_ddns
+        S_535_111 = 535,                         // $@111
+        S_dhcp_ddns_params = 536,                // dhcp_ddns_params
+        S_dhcp_ddns_param = 537,                 // dhcp_ddns_param
+        S_enable_updates = 538,                  // enable_updates
+        S_server_ip = 539,                       // server_ip
+        S_540_112 = 540,                         // $@112
+        S_server_port = 541,                     // server_port
+        S_sender_ip = 542,                       // sender_ip
+        S_543_113 = 543,                         // $@113
+        S_sender_port = 544,                     // sender_port
+        S_max_queue_size = 545,                  // max_queue_size
+        S_ncr_protocol = 546,                    // ncr_protocol
+        S_547_114 = 547,                         // $@114
+        S_ncr_protocol_value = 548,              // ncr_protocol_value
+        S_ncr_format = 549,                      // ncr_format
+        S_550_115 = 550,                         // $@115
+        S_dep_qualifying_suffix = 551,           // dep_qualifying_suffix
+        S_552_116 = 552,                         // $@116
+        S_dep_override_no_update = 553,          // dep_override_no_update
+        S_dep_override_client_update = 554,      // dep_override_client_update
+        S_dep_replace_client_name = 555,         // dep_replace_client_name
+        S_556_117 = 556,                         // $@117
+        S_dep_generated_prefix = 557,            // dep_generated_prefix
+        S_558_118 = 558,                         // $@118
+        S_dep_hostname_char_set = 559,           // dep_hostname_char_set
+        S_560_119 = 560,                         // $@119
+        S_dep_hostname_char_replacement = 561,   // dep_hostname_char_replacement
+        S_562_120 = 562,                         // $@120
+        S_config_control = 563,                  // config_control
+        S_564_121 = 564,                         // $@121
+        S_sub_config_control = 565,              // sub_config_control
+        S_566_122 = 566,                         // $@122
+        S_config_control_params = 567,           // config_control_params
+        S_config_control_param = 568,            // config_control_param
+        S_config_databases = 569,                // config_databases
+        S_570_123 = 570,                         // $@123
+        S_config_fetch_wait_time = 571,          // config_fetch_wait_time
+        S_loggers = 572,                         // loggers
+        S_573_124 = 573,                         // $@124
+        S_loggers_entries = 574,                 // loggers_entries
+        S_logger_entry = 575,                    // logger_entry
+        S_576_125 = 576,                         // $@125
+        S_logger_params = 577,                   // logger_params
+        S_logger_param = 578,                    // logger_param
+        S_debuglevel = 579,                      // debuglevel
+        S_severity = 580,                        // severity
+        S_581_126 = 581,                         // $@126
+        S_output_options_list = 582,             // output_options_list
+        S_583_127 = 583,                         // $@127
+        S_output_options_list_content = 584,     // output_options_list_content
+        S_output_entry = 585,                    // output_entry
+        S_586_128 = 586,                         // $@128
+        S_output_params_list = 587,              // output_params_list
+        S_output_params = 588,                   // output_params
+        S_output = 589,                          // output
+        S_590_129 = 590,                         // $@129
+        S_flush = 591,                           // flush
+        S_maxsize = 592,                         // maxsize
+        S_maxver = 593,                          // maxver
+        S_pattern = 594,                         // pattern
+        S_595_130 = 595                          // $@130
       };
     };
 
@@ -1573,13 +1579,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_PARSER4_error || tok == token::TOKEN_PARSER4_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_DHCP4 || tok == token::TOKEN_CONFIG_CONTROL || tok == token::TOKEN_CONFIG_DATABASES || tok == token::TOKEN_CONFIG_FETCH_WAIT_TIME || tok == token::TOKEN_INTERFACES_CONFIG || tok == token::TOKEN_INTERFACES || tok == token::TOKEN_DHCP_SOCKET_TYPE || tok == token::TOKEN_RAW || tok == token::TOKEN_UDP || tok == token::TOKEN_OUTBOUND_INTERFACE || tok == token::TOKEN_SAME_AS_INBOUND || tok == token::TOKEN_USE_ROUTING || tok == token::TOKEN_RE_DETECT || tok == token::TOKEN_SANITY_CHECKS || tok == token::TOKEN_LEASE_CHECKS || tok == token::TOKEN_ECHO_CLIENT_ID || tok == token::TOKEN_MATCH_CLIENT_ID || tok == token::TOKEN_AUTHORITATIVE || tok == token::TOKEN_NEXT_SERVER || tok == token::TOKEN_SERVER_HOSTNAME || tok == token::TOKEN_BOOT_FILE_NAME || tok == token::TOKEN_LEASE_DATABASE || tok == token::TOKEN_HOSTS_DATABASE || tok == token::TOKEN_HOSTS_DATABASES || tok == token::TOKEN_TYPE || tok == token::TOKEN_MEMFILE || tok == token::TOKEN_MYSQL || tok == token::TOKEN_POSTGRESQL || tok == token::TOKEN_CQL || tok == token::TOKEN_USER || tok == token::TOKEN_PASSWORD || tok == token::TOKEN_HOST || tok == token::TOKEN_PORT || tok == token::TOKEN_PERSIST || tok == token::TOKEN_LFC_INTERVAL || tok == token::TOKEN_READONLY || tok == token::TOKEN_CONNECT_TIMEOUT || tok == token::TOKEN_CONTACT_POINTS || tok == token::TOKEN_KEYSPACE || tok == token::TOKEN_CONSISTENCY || tok == token::TOKEN_SERIAL_CONSISTENCY || tok == token::TOKEN_MAX_RECONNECT_TRIES || tok == token::TOKEN_RECONNECT_WAIT_TIME || tok == token::TOKEN_REQUEST_TIMEOUT || tok == token::TOKEN_TCP_KEEPALIVE || tok == token::TOKEN_TCP_NODELAY || tok == token::TOKEN_MAX_ROW_ERRORS || tok == token::TOKEN_VALID_LIFETIME || tok == token::TOKEN_MIN_VALID_LIFETIME || tok == token::TOKEN_MAX_VALID_LIFETIME || tok == token::TOKEN_RENEW_TIMER || tok == token::TOKEN_REBIND_TIMER || tok == token::TOKEN_CALCULATE_TEE_TIMES || tok == token::TOKEN_T1_PERCENT || tok == token::TOKEN_T2_PERCENT || tok == token::TOKEN_DECLINE_PROBATION_PERIOD || tok == token::TOKEN_SERVER_TAG || tok == token::TOKEN_STATISTIC_DEFAULT_SAMPLE_COUNT || tok == token::TOKEN_STATISTIC_DEFAULT_SAMPLE_AGE || tok == token::TOKEN_DDNS_SEND_UPDATES || tok == token::TOKEN_DDNS_OVERRIDE_NO_UPDATE || tok == token::TOKEN_DDNS_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_DDNS_REPLACE_CLIENT_NAME || tok == token::TOKEN_DDNS_GENERATED_PREFIX || tok == token::TOKEN_DDNS_QUALIFYING_SUFFIX || tok == token::TOKEN_STORE_EXTENDED_INFO || tok == token::TOKEN_SUBNET4 || tok == token::TOKEN_SUBNET_4O6_INTERFACE || tok == token::TOKEN_SUBNET_4O6_INTERFACE_ID || tok == token::TOKEN_SUBNET_4O6_SUBNET || tok == token::TOKEN_OPTION_DEF || tok == token::TOKEN_OPTION_DATA || tok == token::TOKEN_NAME || tok == token::TOKEN_DATA || tok == token::TOKEN_CODE || tok == token::TOKEN_SPACE || tok == token::TOKEN_CSV_FORMAT || tok == token::TOKEN_ALWAYS_SEND || tok == token::TOKEN_RECORD_TYPES || tok == token::TOKEN_ENCAPSULATE || tok == token::TOKEN_ARRAY || tok == token::TOKEN_SHARED_NETWORKS || tok == token::TOKEN_POOLS || tok == token::TOKEN_POOL || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_SUBNET || tok == token::TOKEN_INTERFACE || tok == token::TOKEN_ID || tok == token::TOKEN_RESERVATION_MODE || tok == token::TOKEN_DISABLED || tok == token::TOKEN_OUT_OF_POOL || tok == token::TOKEN_GLOBAL || tok == token::TOKEN_ALL || tok == token::TOKEN_HOST_RESERVATION_IDENTIFIERS || tok == token::TOKEN_CLIENT_CLASSES || tok == token::TOKEN_REQUIRE_CLIENT_CLASSES || tok == token::TOKEN_TEST || tok == token::TOKEN_ONLY_IF_REQUIRED || tok == token::TOKEN_CLIENT_CLASS || tok == token::TOKEN_RESERVATIONS || tok == token::TOKEN_DUID || tok == token::TOKEN_HW_ADDRESS || tok == token::TOKEN_CIRCUIT_ID || tok == token::TOKEN_CLIENT_ID || tok == token::TOKEN_HOSTNAME || tok == token::TOKEN_FLEX_ID || tok == token::TOKEN_RELAY || tok == token::TOKEN_IP_ADDRESS || tok == token::TOKEN_IP_ADDRESSES || tok == token::TOKEN_HOOKS_LIBRARIES || tok == token::TOKEN_LIBRARY || tok == token::TOKEN_PARAMETERS || tok == token::TOKEN_EXPIRED_LEASES_PROCESSING || tok == token::TOKEN_RECLAIM_TIMER_WAIT_TIME || tok == token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME || tok == token::TOKEN_HOLD_RECLAIMED_TIME || tok == token::TOKEN_MAX_RECLAIM_LEASES || tok == token::TOKEN_MAX_RECLAIM_TIME || tok == token::TOKEN_UNWARNED_RECLAIM_CYCLES || tok == token::TOKEN_DHCP4O6_PORT || tok == token::TOKEN_DHCP_MULTI_THREADING || tok == token::TOKEN_ENABLE_MULTI_THREADING || tok == token::TOKEN_THREAD_POOL_SIZE || tok == token::TOKEN_PACKET_QUEUE_SIZE || tok == token::TOKEN_CONTROL_SOCKET || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_DHCP_QUEUE_CONTROL || tok == token::TOKEN_ENABLE_QUEUE || tok == token::TOKEN_QUEUE_TYPE || tok == token::TOKEN_CAPACITY || tok == token::TOKEN_DHCP_DDNS || tok == token::TOKEN_ENABLE_UPDATES || tok == token::TOKEN_QUALIFYING_SUFFIX || tok == token::TOKEN_SERVER_IP || tok == token::TOKEN_SERVER_PORT || tok == token::TOKEN_SENDER_IP || tok == token::TOKEN_SENDER_PORT || tok == token::TOKEN_MAX_QUEUE_SIZE || tok == token::TOKEN_NCR_PROTOCOL || tok == token::TOKEN_NCR_FORMAT || tok == token::TOKEN_OVERRIDE_NO_UPDATE || tok == token::TOKEN_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_REPLACE_CLIENT_NAME || tok == token::TOKEN_GENERATED_PREFIX || tok == token::TOKEN_TCP || tok == token::TOKEN_JSON || tok == token::TOKEN_WHEN_PRESENT || tok == token::TOKEN_NEVER || tok == token::TOKEN_ALWAYS || tok == token::TOKEN_WHEN_NOT_PRESENT || tok == token::TOKEN_HOSTNAME_CHAR_SET || tok == token::TOKEN_HOSTNAME_CHAR_REPLACEMENT || tok == token::TOKEN_LOGGERS || 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_TOPLEVEL_JSON || tok == token::TOKEN_TOPLEVEL_DHCP4 || tok == token::TOKEN_SUB_DHCP4 || tok == token::TOKEN_SUB_INTERFACES4 || tok == token::TOKEN_SUB_SUBNET4 || tok == token::TOKEN_SUB_POOL4 || tok == token::TOKEN_SUB_RESERVATION || tok == token::TOKEN_SUB_OPTION_DEFS || tok == token::TOKEN_SUB_OPTION_DEF || tok == token::TOKEN_SUB_OPTION_DATA || tok == token::TOKEN_SUB_HOOKS_LIBRARY || tok == token::TOKEN_SUB_DHCP_DDNS || tok == token::TOKEN_SUB_CONFIG_CONTROL);
+        YY_ASSERT (tok == token::TOKEN_END || tok == token::TOKEN_PARSER4_error || tok == token::TOKEN_PARSER4_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_DHCP4 || tok == token::TOKEN_CONFIG_CONTROL || tok == token::TOKEN_CONFIG_DATABASES || tok == token::TOKEN_CONFIG_FETCH_WAIT_TIME || tok == token::TOKEN_INTERFACES_CONFIG || tok == token::TOKEN_INTERFACES || tok == token::TOKEN_DHCP_SOCKET_TYPE || tok == token::TOKEN_RAW || tok == token::TOKEN_UDP || tok == token::TOKEN_OUTBOUND_INTERFACE || tok == token::TOKEN_SAME_AS_INBOUND || tok == token::TOKEN_USE_ROUTING || tok == token::TOKEN_RE_DETECT || tok == token::TOKEN_SANITY_CHECKS || tok == token::TOKEN_LEASE_CHECKS || tok == token::TOKEN_ECHO_CLIENT_ID || tok == token::TOKEN_MATCH_CLIENT_ID || tok == token::TOKEN_AUTHORITATIVE || tok == token::TOKEN_NEXT_SERVER || tok == token::TOKEN_SERVER_HOSTNAME || tok == token::TOKEN_BOOT_FILE_NAME || tok == token::TOKEN_LEASE_DATABASE || tok == token::TOKEN_HOSTS_DATABASE || tok == token::TOKEN_HOSTS_DATABASES || tok == token::TOKEN_TYPE || tok == token::TOKEN_MEMFILE || tok == token::TOKEN_MYSQL || tok == token::TOKEN_POSTGRESQL || tok == token::TOKEN_CQL || tok == token::TOKEN_USER || tok == token::TOKEN_PASSWORD || tok == token::TOKEN_HOST || tok == token::TOKEN_PORT || tok == token::TOKEN_PERSIST || tok == token::TOKEN_LFC_INTERVAL || tok == token::TOKEN_READONLY || tok == token::TOKEN_CONNECT_TIMEOUT || tok == token::TOKEN_CONTACT_POINTS || tok == token::TOKEN_KEYSPACE || tok == token::TOKEN_CONSISTENCY || tok == token::TOKEN_SERIAL_CONSISTENCY || tok == token::TOKEN_MAX_RECONNECT_TRIES || tok == token::TOKEN_RECONNECT_WAIT_TIME || tok == token::TOKEN_REQUEST_TIMEOUT || tok == token::TOKEN_TCP_KEEPALIVE || tok == token::TOKEN_TCP_NODELAY || tok == token::TOKEN_MAX_ROW_ERRORS || tok == token::TOKEN_VALID_LIFETIME || tok == token::TOKEN_MIN_VALID_LIFETIME || tok == token::TOKEN_MAX_VALID_LIFETIME || tok == token::TOKEN_RENEW_TIMER || tok == token::TOKEN_REBIND_TIMER || tok == token::TOKEN_CALCULATE_TEE_TIMES || tok == token::TOKEN_T1_PERCENT || tok == token::TOKEN_T2_PERCENT || tok == token::TOKEN_CACHE_THRESHOLD || tok == token::TOKEN_CACHE_MAX || tok == token::TOKEN_DECLINE_PROBATION_PERIOD || tok == token::TOKEN_SERVER_TAG || tok == token::TOKEN_STATISTIC_DEFAULT_SAMPLE_COUNT || tok == token::TOKEN_STATISTIC_DEFAULT_SAMPLE_AGE || tok == token::TOKEN_DDNS_SEND_UPDATES || tok == token::TOKEN_DDNS_OVERRIDE_NO_UPDATE || tok == token::TOKEN_DDNS_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_DDNS_REPLACE_CLIENT_NAME || tok == token::TOKEN_DDNS_GENERATED_PREFIX || tok == token::TOKEN_DDNS_QUALIFYING_SUFFIX || tok == token::TOKEN_STORE_EXTENDED_INFO || tok == token::TOKEN_SUBNET4 || tok == token::TOKEN_SUBNET_4O6_INTERFACE || tok == token::TOKEN_SUBNET_4O6_INTERFACE_ID || tok == token::TOKEN_SUBNET_4O6_SUBNET || tok == token::TOKEN_OPTION_DEF || tok == token::TOKEN_OPTION_DATA || tok == token::TOKEN_NAME || tok == token::TOKEN_DATA || tok == token::TOKEN_CODE || tok == token::TOKEN_SPACE || tok == token::TOKEN_CSV_FORMAT || tok == token::TOKEN_ALWAYS_SEND || tok == token::TOKEN_RECORD_TYPES || tok == token::TOKEN_ENCAPSULATE || tok == token::TOKEN_ARRAY || tok == token::TOKEN_SHARED_NETWORKS || tok == token::TOKEN_POOLS || tok == token::TOKEN_POOL || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_SUBNET || tok == token::TOKEN_INTERFACE || tok == token::TOKEN_ID || tok == token::TOKEN_RESERVATION_MODE || tok == token::TOKEN_DISABLED || tok == token::TOKEN_OUT_OF_POOL || tok == token::TOKEN_GLOBAL || tok == token::TOKEN_ALL || tok == token::TOKEN_HOST_RESERVATION_IDENTIFIERS || tok == token::TOKEN_CLIENT_CLASSES || tok == token::TOKEN_REQUIRE_CLIENT_CLASSES || tok == token::TOKEN_TEST || tok == token::TOKEN_ONLY_IF_REQUIRED || tok == token::TOKEN_CLIENT_CLASS || tok == token::TOKEN_RESERVATIONS || tok == token::TOKEN_DUID || tok == token::TOKEN_HW_ADDRESS || tok == token::TOKEN_CIRCUIT_ID || tok == token::TOKEN_CLIENT_ID || tok == token::TOKEN_HOSTNAME || tok == token::TOKEN_FLEX_ID || tok == token::TOKEN_RELAY || tok == token::TOKEN_IP_ADDRESS || tok == token::TOKEN_IP_ADDRESSES || tok == token::TOKEN_HOOKS_LIBRARIES || tok == token::TOKEN_LIBRARY || tok == token::TOKEN_PARAMETERS || tok == token::TOKEN_EXPIRED_LEASES_PROCESSING || tok == token::TOKEN_RECLAIM_TIMER_WAIT_TIME || tok == token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME || tok == token::TOKEN_HOLD_RECLAIMED_TIME || tok == token::TOKEN_MAX_RECLAIM_LEASES || tok == token::TOKEN_MAX_RECLAIM_TIME || tok == token::TOKEN_UNWARNED_RECLAIM_CYCLES || tok == token::TOKEN_DHCP4O6_PORT || tok == token::TOKEN_DHCP_MULTI_THREADING || tok == token::TOKEN_ENABLE_MULTI_THREADING || tok == token::TOKEN_THREAD_POOL_SIZE || tok == token::TOKEN_PACKET_QUEUE_SIZE || tok == token::TOKEN_CONTROL_SOCKET || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_DHCP_QUEUE_CONTROL || tok == token::TOKEN_ENABLE_QUEUE || tok == token::TOKEN_QUEUE_TYPE || tok == token::TOKEN_CAPACITY || tok == token::TOKEN_DHCP_DDNS || tok == token::TOKEN_ENABLE_UPDATES || tok == token::TOKEN_QUALIFYING_SUFFIX || tok == token::TOKEN_SERVER_IP || tok == token::TOKEN_SERVER_PORT || tok == token::TOKEN_SENDER_IP || tok == token::TOKEN_SENDER_PORT || tok == token::TOKEN_MAX_QUEUE_SIZE || tok == token::TOKEN_NCR_PROTOCOL || tok == token::TOKEN_NCR_FORMAT || tok == token::TOKEN_OVERRIDE_NO_UPDATE || tok == token::TOKEN_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_REPLACE_CLIENT_NAME || tok == token::TOKEN_GENERATED_PREFIX || tok == token::TOKEN_TCP || tok == token::TOKEN_JSON || tok == token::TOKEN_WHEN_PRESENT || tok == token::TOKEN_NEVER || tok == token::TOKEN_ALWAYS || tok == token::TOKEN_WHEN_NOT_PRESENT || tok == token::TOKEN_HOSTNAME_CHAR_SET || tok == token::TOKEN_HOSTNAME_CHAR_REPLACEMENT || tok == token::TOKEN_LOGGERS || 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_TOPLEVEL_JSON || tok == token::TOKEN_TOPLEVEL_DHCP4 || tok == token::TOKEN_SUB_DHCP4 || tok == token::TOKEN_SUB_INTERFACES4 || tok == token::TOKEN_SUB_SUBNET4 || tok == token::TOKEN_SUB_POOL4 || tok == token::TOKEN_SUB_RESERVATION || tok == token::TOKEN_SUB_OPTION_DEFS || tok == token::TOKEN_SUB_OPTION_DEF || tok == token::TOKEN_SUB_OPTION_DATA || tok == token::TOKEN_SUB_HOOKS_LIBRARY || tok == token::TOKEN_SUB_DHCP_DDNS || tok == token::TOKEN_SUB_CONFIG_CONTROL);
       }
 #else
       symbol_type (int tok, const location_type& l)
         : super_type(token_type (tok), l)
       {
-        YY_ASSERT (tok == token::TOKEN_END || tok == token::TOKEN_PARSER4_error || tok == token::TOKEN_PARSER4_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_DHCP4 || tok == token::TOKEN_CONFIG_CONTROL || tok == token::TOKEN_CONFIG_DATABASES || tok == token::TOKEN_CONFIG_FETCH_WAIT_TIME || tok == token::TOKEN_INTERFACES_CONFIG || tok == token::TOKEN_INTERFACES || tok == token::TOKEN_DHCP_SOCKET_TYPE || tok == token::TOKEN_RAW || tok == token::TOKEN_UDP || tok == token::TOKEN_OUTBOUND_INTERFACE || tok == token::TOKEN_SAME_AS_INBOUND || tok == token::TOKEN_USE_ROUTING || tok == token::TOKEN_RE_DETECT || tok == token::TOKEN_SANITY_CHECKS || tok == token::TOKEN_LEASE_CHECKS || tok == token::TOKEN_ECHO_CLIENT_ID || tok == token::TOKEN_MATCH_CLIENT_ID || tok == token::TOKEN_AUTHORITATIVE || tok == token::TOKEN_NEXT_SERVER || tok == token::TOKEN_SERVER_HOSTNAME || tok == token::TOKEN_BOOT_FILE_NAME || tok == token::TOKEN_LEASE_DATABASE || tok == token::TOKEN_HOSTS_DATABASE || tok == token::TOKEN_HOSTS_DATABASES || tok == token::TOKEN_TYPE || tok == token::TOKEN_MEMFILE || tok == token::TOKEN_MYSQL || tok == token::TOKEN_POSTGRESQL || tok == token::TOKEN_CQL || tok == token::TOKEN_USER || tok == token::TOKEN_PASSWORD || tok == token::TOKEN_HOST || tok == token::TOKEN_PORT || tok == token::TOKEN_PERSIST || tok == token::TOKEN_LFC_INTERVAL || tok == token::TOKEN_READONLY || tok == token::TOKEN_CONNECT_TIMEOUT || tok == token::TOKEN_CONTACT_POINTS || tok == token::TOKEN_KEYSPACE || tok == token::TOKEN_CONSISTENCY || tok == token::TOKEN_SERIAL_CONSISTENCY || tok == token::TOKEN_MAX_RECONNECT_TRIES || tok == token::TOKEN_RECONNECT_WAIT_TIME || tok == token::TOKEN_REQUEST_TIMEOUT || tok == token::TOKEN_TCP_KEEPALIVE || tok == token::TOKEN_TCP_NODELAY || tok == token::TOKEN_MAX_ROW_ERRORS || tok == token::TOKEN_VALID_LIFETIME || tok == token::TOKEN_MIN_VALID_LIFETIME || tok == token::TOKEN_MAX_VALID_LIFETIME || tok == token::TOKEN_RENEW_TIMER || tok == token::TOKEN_REBIND_TIMER || tok == token::TOKEN_CALCULATE_TEE_TIMES || tok == token::TOKEN_T1_PERCENT || tok == token::TOKEN_T2_PERCENT || tok == token::TOKEN_DECLINE_PROBATION_PERIOD || tok == token::TOKEN_SERVER_TAG || tok == token::TOKEN_STATISTIC_DEFAULT_SAMPLE_COUNT || tok == token::TOKEN_STATISTIC_DEFAULT_SAMPLE_AGE || tok == token::TOKEN_DDNS_SEND_UPDATES || tok == token::TOKEN_DDNS_OVERRIDE_NO_UPDATE || tok == token::TOKEN_DDNS_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_DDNS_REPLACE_CLIENT_NAME || tok == token::TOKEN_DDNS_GENERATED_PREFIX || tok == token::TOKEN_DDNS_QUALIFYING_SUFFIX || tok == token::TOKEN_STORE_EXTENDED_INFO || tok == token::TOKEN_SUBNET4 || tok == token::TOKEN_SUBNET_4O6_INTERFACE || tok == token::TOKEN_SUBNET_4O6_INTERFACE_ID || tok == token::TOKEN_SUBNET_4O6_SUBNET || tok == token::TOKEN_OPTION_DEF || tok == token::TOKEN_OPTION_DATA || tok == token::TOKEN_NAME || tok == token::TOKEN_DATA || tok == token::TOKEN_CODE || tok == token::TOKEN_SPACE || tok == token::TOKEN_CSV_FORMAT || tok == token::TOKEN_ALWAYS_SEND || tok == token::TOKEN_RECORD_TYPES || tok == token::TOKEN_ENCAPSULATE || tok == token::TOKEN_ARRAY || tok == token::TOKEN_SHARED_NETWORKS || tok == token::TOKEN_POOLS || tok == token::TOKEN_POOL || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_SUBNET || tok == token::TOKEN_INTERFACE || tok == token::TOKEN_ID || tok == token::TOKEN_RESERVATION_MODE || tok == token::TOKEN_DISABLED || tok == token::TOKEN_OUT_OF_POOL || tok == token::TOKEN_GLOBAL || tok == token::TOKEN_ALL || tok == token::TOKEN_HOST_RESERVATION_IDENTIFIERS || tok == token::TOKEN_CLIENT_CLASSES || tok == token::TOKEN_REQUIRE_CLIENT_CLASSES || tok == token::TOKEN_TEST || tok == token::TOKEN_ONLY_IF_REQUIRED || tok == token::TOKEN_CLIENT_CLASS || tok == token::TOKEN_RESERVATIONS || tok == token::TOKEN_DUID || tok == token::TOKEN_HW_ADDRESS || tok == token::TOKEN_CIRCUIT_ID || tok == token::TOKEN_CLIENT_ID || tok == token::TOKEN_HOSTNAME || tok == token::TOKEN_FLEX_ID || tok == token::TOKEN_RELAY || tok == token::TOKEN_IP_ADDRESS || tok == token::TOKEN_IP_ADDRESSES || tok == token::TOKEN_HOOKS_LIBRARIES || tok == token::TOKEN_LIBRARY || tok == token::TOKEN_PARAMETERS || tok == token::TOKEN_EXPIRED_LEASES_PROCESSING || tok == token::TOKEN_RECLAIM_TIMER_WAIT_TIME || tok == token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME || tok == token::TOKEN_HOLD_RECLAIMED_TIME || tok == token::TOKEN_MAX_RECLAIM_LEASES || tok == token::TOKEN_MAX_RECLAIM_TIME || tok == token::TOKEN_UNWARNED_RECLAIM_CYCLES || tok == token::TOKEN_DHCP4O6_PORT || tok == token::TOKEN_DHCP_MULTI_THREADING || tok == token::TOKEN_ENABLE_MULTI_THREADING || tok == token::TOKEN_THREAD_POOL_SIZE || tok == token::TOKEN_PACKET_QUEUE_SIZE || tok == token::TOKEN_CONTROL_SOCKET || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_DHCP_QUEUE_CONTROL || tok == token::TOKEN_ENABLE_QUEUE || tok == token::TOKEN_QUEUE_TYPE || tok == token::TOKEN_CAPACITY || tok == token::TOKEN_DHCP_DDNS || tok == token::TOKEN_ENABLE_UPDATES || tok == token::TOKEN_QUALIFYING_SUFFIX || tok == token::TOKEN_SERVER_IP || tok == token::TOKEN_SERVER_PORT || tok == token::TOKEN_SENDER_IP || tok == token::TOKEN_SENDER_PORT || tok == token::TOKEN_MAX_QUEUE_SIZE || tok == token::TOKEN_NCR_PROTOCOL || tok == token::TOKEN_NCR_FORMAT || tok == token::TOKEN_OVERRIDE_NO_UPDATE || tok == token::TOKEN_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_REPLACE_CLIENT_NAME || tok == token::TOKEN_GENERATED_PREFIX || tok == token::TOKEN_TCP || tok == token::TOKEN_JSON || tok == token::TOKEN_WHEN_PRESENT || tok == token::TOKEN_NEVER || tok == token::TOKEN_ALWAYS || tok == token::TOKEN_WHEN_NOT_PRESENT || tok == token::TOKEN_HOSTNAME_CHAR_SET || tok == token::TOKEN_HOSTNAME_CHAR_REPLACEMENT || tok == token::TOKEN_LOGGERS || 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_TOPLEVEL_JSON || tok == token::TOKEN_TOPLEVEL_DHCP4 || tok == token::TOKEN_SUB_DHCP4 || tok == token::TOKEN_SUB_INTERFACES4 || tok == token::TOKEN_SUB_SUBNET4 || tok == token::TOKEN_SUB_POOL4 || tok == token::TOKEN_SUB_RESERVATION || tok == token::TOKEN_SUB_OPTION_DEFS || tok == token::TOKEN_SUB_OPTION_DEF || tok == token::TOKEN_SUB_OPTION_DATA || tok == token::TOKEN_SUB_HOOKS_LIBRARY || tok == token::TOKEN_SUB_DHCP_DDNS || tok == token::TOKEN_SUB_CONFIG_CONTROL);
+        YY_ASSERT (tok == token::TOKEN_END || tok == token::TOKEN_PARSER4_error || tok == token::TOKEN_PARSER4_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_DHCP4 || tok == token::TOKEN_CONFIG_CONTROL || tok == token::TOKEN_CONFIG_DATABASES || tok == token::TOKEN_CONFIG_FETCH_WAIT_TIME || tok == token::TOKEN_INTERFACES_CONFIG || tok == token::TOKEN_INTERFACES || tok == token::TOKEN_DHCP_SOCKET_TYPE || tok == token::TOKEN_RAW || tok == token::TOKEN_UDP || tok == token::TOKEN_OUTBOUND_INTERFACE || tok == token::TOKEN_SAME_AS_INBOUND || tok == token::TOKEN_USE_ROUTING || tok == token::TOKEN_RE_DETECT || tok == token::TOKEN_SANITY_CHECKS || tok == token::TOKEN_LEASE_CHECKS || tok == token::TOKEN_ECHO_CLIENT_ID || tok == token::TOKEN_MATCH_CLIENT_ID || tok == token::TOKEN_AUTHORITATIVE || tok == token::TOKEN_NEXT_SERVER || tok == token::TOKEN_SERVER_HOSTNAME || tok == token::TOKEN_BOOT_FILE_NAME || tok == token::TOKEN_LEASE_DATABASE || tok == token::TOKEN_HOSTS_DATABASE || tok == token::TOKEN_HOSTS_DATABASES || tok == token::TOKEN_TYPE || tok == token::TOKEN_MEMFILE || tok == token::TOKEN_MYSQL || tok == token::TOKEN_POSTGRESQL || tok == token::TOKEN_CQL || tok == token::TOKEN_USER || tok == token::TOKEN_PASSWORD || tok == token::TOKEN_HOST || tok == token::TOKEN_PORT || tok == token::TOKEN_PERSIST || tok == token::TOKEN_LFC_INTERVAL || tok == token::TOKEN_READONLY || tok == token::TOKEN_CONNECT_TIMEOUT || tok == token::TOKEN_CONTACT_POINTS || tok == token::TOKEN_KEYSPACE || tok == token::TOKEN_CONSISTENCY || tok == token::TOKEN_SERIAL_CONSISTENCY || tok == token::TOKEN_MAX_RECONNECT_TRIES || tok == token::TOKEN_RECONNECT_WAIT_TIME || tok == token::TOKEN_REQUEST_TIMEOUT || tok == token::TOKEN_TCP_KEEPALIVE || tok == token::TOKEN_TCP_NODELAY || tok == token::TOKEN_MAX_ROW_ERRORS || tok == token::TOKEN_VALID_LIFETIME || tok == token::TOKEN_MIN_VALID_LIFETIME || tok == token::TOKEN_MAX_VALID_LIFETIME || tok == token::TOKEN_RENEW_TIMER || tok == token::TOKEN_REBIND_TIMER || tok == token::TOKEN_CALCULATE_TEE_TIMES || tok == token::TOKEN_T1_PERCENT || tok == token::TOKEN_T2_PERCENT || tok == token::TOKEN_CACHE_THRESHOLD || tok == token::TOKEN_CACHE_MAX || tok == token::TOKEN_DECLINE_PROBATION_PERIOD || tok == token::TOKEN_SERVER_TAG || tok == token::TOKEN_STATISTIC_DEFAULT_SAMPLE_COUNT || tok == token::TOKEN_STATISTIC_DEFAULT_SAMPLE_AGE || tok == token::TOKEN_DDNS_SEND_UPDATES || tok == token::TOKEN_DDNS_OVERRIDE_NO_UPDATE || tok == token::TOKEN_DDNS_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_DDNS_REPLACE_CLIENT_NAME || tok == token::TOKEN_DDNS_GENERATED_PREFIX || tok == token::TOKEN_DDNS_QUALIFYING_SUFFIX || tok == token::TOKEN_STORE_EXTENDED_INFO || tok == token::TOKEN_SUBNET4 || tok == token::TOKEN_SUBNET_4O6_INTERFACE || tok == token::TOKEN_SUBNET_4O6_INTERFACE_ID || tok == token::TOKEN_SUBNET_4O6_SUBNET || tok == token::TOKEN_OPTION_DEF || tok == token::TOKEN_OPTION_DATA || tok == token::TOKEN_NAME || tok == token::TOKEN_DATA || tok == token::TOKEN_CODE || tok == token::TOKEN_SPACE || tok == token::TOKEN_CSV_FORMAT || tok == token::TOKEN_ALWAYS_SEND || tok == token::TOKEN_RECORD_TYPES || tok == token::TOKEN_ENCAPSULATE || tok == token::TOKEN_ARRAY || tok == token::TOKEN_SHARED_NETWORKS || tok == token::TOKEN_POOLS || tok == token::TOKEN_POOL || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_SUBNET || tok == token::TOKEN_INTERFACE || tok == token::TOKEN_ID || tok == token::TOKEN_RESERVATION_MODE || tok == token::TOKEN_DISABLED || tok == token::TOKEN_OUT_OF_POOL || tok == token::TOKEN_GLOBAL || tok == token::TOKEN_ALL || tok == token::TOKEN_HOST_RESERVATION_IDENTIFIERS || tok == token::TOKEN_CLIENT_CLASSES || tok == token::TOKEN_REQUIRE_CLIENT_CLASSES || tok == token::TOKEN_TEST || tok == token::TOKEN_ONLY_IF_REQUIRED || tok == token::TOKEN_CLIENT_CLASS || tok == token::TOKEN_RESERVATIONS || tok == token::TOKEN_DUID || tok == token::TOKEN_HW_ADDRESS || tok == token::TOKEN_CIRCUIT_ID || tok == token::TOKEN_CLIENT_ID || tok == token::TOKEN_HOSTNAME || tok == token::TOKEN_FLEX_ID || tok == token::TOKEN_RELAY || tok == token::TOKEN_IP_ADDRESS || tok == token::TOKEN_IP_ADDRESSES || tok == token::TOKEN_HOOKS_LIBRARIES || tok == token::TOKEN_LIBRARY || tok == token::TOKEN_PARAMETERS || tok == token::TOKEN_EXPIRED_LEASES_PROCESSING || tok == token::TOKEN_RECLAIM_TIMER_WAIT_TIME || tok == token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME || tok == token::TOKEN_HOLD_RECLAIMED_TIME || tok == token::TOKEN_MAX_RECLAIM_LEASES || tok == token::TOKEN_MAX_RECLAIM_TIME || tok == token::TOKEN_UNWARNED_RECLAIM_CYCLES || tok == token::TOKEN_DHCP4O6_PORT || tok == token::TOKEN_DHCP_MULTI_THREADING || tok == token::TOKEN_ENABLE_MULTI_THREADING || tok == token::TOKEN_THREAD_POOL_SIZE || tok == token::TOKEN_PACKET_QUEUE_SIZE || tok == token::TOKEN_CONTROL_SOCKET || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_DHCP_QUEUE_CONTROL || tok == token::TOKEN_ENABLE_QUEUE || tok == token::TOKEN_QUEUE_TYPE || tok == token::TOKEN_CAPACITY || tok == token::TOKEN_DHCP_DDNS || tok == token::TOKEN_ENABLE_UPDATES || tok == token::TOKEN_QUALIFYING_SUFFIX || tok == token::TOKEN_SERVER_IP || tok == token::TOKEN_SERVER_PORT || tok == token::TOKEN_SENDER_IP || tok == token::TOKEN_SENDER_PORT || tok == token::TOKEN_MAX_QUEUE_SIZE || tok == token::TOKEN_NCR_PROTOCOL || tok == token::TOKEN_NCR_FORMAT || tok == token::TOKEN_OVERRIDE_NO_UPDATE || tok == token::TOKEN_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_REPLACE_CLIENT_NAME || tok == token::TOKEN_GENERATED_PREFIX || tok == token::TOKEN_TCP || tok == token::TOKEN_JSON || tok == token::TOKEN_WHEN_PRESENT || tok == token::TOKEN_NEVER || tok == token::TOKEN_ALWAYS || tok == token::TOKEN_WHEN_NOT_PRESENT || tok == token::TOKEN_HOSTNAME_CHAR_SET || tok == token::TOKEN_HOSTNAME_CHAR_REPLACEMENT || tok == token::TOKEN_LOGGERS || 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_TOPLEVEL_JSON || tok == token::TOKEN_TOPLEVEL_DHCP4 || tok == token::TOKEN_SUB_DHCP4 || tok == token::TOKEN_SUB_INTERFACES4 || tok == token::TOKEN_SUB_SUBNET4 || tok == token::TOKEN_SUB_POOL4 || tok == token::TOKEN_SUB_RESERVATION || tok == token::TOKEN_SUB_OPTION_DEFS || tok == token::TOKEN_SUB_OPTION_DEF || tok == token::TOKEN_SUB_OPTION_DATA || tok == token::TOKEN_SUB_HOOKS_LIBRARY || tok == token::TOKEN_SUB_DHCP_DDNS || tok == token::TOKEN_SUB_CONFIG_CONTROL);
       }
 #endif
 #if 201103L <= YY_CPLUSPLUS
@@ -2657,6 +2663,36 @@ switch (yykind)
         return symbol_type (token::TOKEN_T2_PERCENT, l);
       }
 #endif
+#if 201103L <= YY_CPLUSPLUS
+      static
+      symbol_type
+      make_CACHE_THRESHOLD (location_type l)
+      {
+        return symbol_type (token::TOKEN_CACHE_THRESHOLD, std::move (l));
+      }
+#else
+      static
+      symbol_type
+      make_CACHE_THRESHOLD (const location_type& l)
+      {
+        return symbol_type (token::TOKEN_CACHE_THRESHOLD, l);
+      }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+      static
+      symbol_type
+      make_CACHE_MAX (location_type l)
+      {
+        return symbol_type (token::TOKEN_CACHE_MAX, std::move (l));
+      }
+#else
+      static
+      symbol_type
+      make_CACHE_MAX (const location_type& l)
+      {
+        return symbol_type (token::TOKEN_CACHE_MAX, l);
+      }
+#endif
 #if 201103L <= YY_CPLUSPLUS
       static
       symbol_type
@@ -4862,8 +4898,8 @@ switch (yykind)
     /// Constants.
     enum
     {
-      yylast_ = 1156,     ///< Last index in yytable_.
-      yynnts_ = 402,  ///< Number of nonterminal symbols.
+      yylast_ = 1171,     ///< Last index in yytable_.
+      yynnts_ = 404,  ///< Number of nonterminal symbols.
       yyfinal_ = 28 ///< Termination state number.
     };
 
@@ -4927,10 +4963,10 @@ switch (yykind)
      155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
      165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
      175,   176,   177,   178,   179,   180,   181,   182,   183,   184,
-     185,   186,   187,   188,   189
+     185,   186,   187,   188,   189,   190,   191
     };
     // Last valid token kind.
-    const int code_max = 444;
+    const int code_max = 446;
 
     if (t <= 0)
       return symbol_kind::S_YYEOF;
@@ -5095,7 +5131,7 @@ switch (yykind)
 
 #line 14 "dhcp4_parser.yy"
 } } // isc::dhcp
-#line 5099 "dhcp4_parser.h"
+#line 5135 "dhcp4_parser.h"
 
 
 
index 08fd5df2acb1200488b4dbfc5067b674d283b85b..ccdb5a5ca4b4323f565814d0486700970bab2032 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 204
-#define YY_END_OF_BUFFER 205
+#define YY_NUM_RULES 206
+#define YY_END_OF_BUFFER 207
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -700,21 +700,21 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static const flex_int16_t yy_accept[1845] =
+static const flex_int16_t yy_accept[1863] =
     {   0,
-      197,  197,    0,    0,    0,    0,    0,    0,    0,    0,
-      205,  203,   10,   11,  203,    1,  197,  194,  197,  197,
-      203,  196,  195,  203,  203,  203,  203,  203,  190,  191,
-      203,  203,  203,  192,  193,    5,    5,    5,  203,  203,
-      203,   10,   11,    0,    0,  186,    0,    0,    0,    0,
+      199,  199,    0,    0,    0,    0,    0,    0,    0,    0,
+      207,  205,   10,   11,  205,    1,  199,  196,  199,  199,
+      205,  198,  197,  205,  205,  205,  205,  205,  192,  193,
+      205,  205,  205,  194,  195,    5,    5,    5,  205,  205,
+      205,   10,   11,    0,    0,  188,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    1,  197,  197,
-        0,  196,  197,    3,    2,    6,    0,  197,    0,    0,
-        0,    0,    0,    0,    4,    0,    0,    9,    0,  187,
+        0,    0,    0,    0,    0,    0,    0,    1,  199,  199,
+        0,  198,  199,    3,    2,    6,    0,  199,    0,    0,
+        0,    0,    0,    0,    4,    0,    0,    9,    0,  189,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  189,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  191,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
@@ -722,189 +722,191 @@ static const flex_int16_t yy_accept[1845] =
         0,    0,    0,    0,    0,    0,    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,  160,    0,    0,  161,    0,    0,
+        8,    0,    0,    0,  162,    0,    0,  163,    0,    0,
 
-        0,    0,    0,    0,    0,  188,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  190,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      112,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,  112,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,    0,    0,    0,    0,    0,  202,  200,    0,  199,
-      198,    0,    0,    0,    0,    0,    0,  159,    0,   28,
-        0,   27,    0,    0,  119,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   55,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  204,  202,    0,
+      201,  200,    0,    0,    0,    0,    0,    0,  161,    0,
+       28,    0,   27,    0,    0,  119,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   55,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  116,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,  116,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  201,
-      198,    0,    0,    0,    0,    0,   29,    0,   31,    0,
-        0,    0,    0,    0,    0,    0,  120,    0,    0,    0,
-        0,    0,    0,    0,   97,    0,    0,    0,    0,    0,
-        0,    0,    0,  144,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,   58,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,  203,  200,    0,    0,    0,    0,    0,   29,    0,
+       31,    0,    0,    0,    0,    0,    0,    0,    0,  120,
+        0,    0,    0,    0,    0,    0,    0,   97,    0,    0,
+        0,    0,    0,    0,    0,    0,  146,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   58,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-
-        0,   96,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  106,    0,   59,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+
+        0,    0,    0,    0,   96,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  106,
+        0,   59,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  139,    0,  164,   51,    0,   56,    0,    0,
-        0,    0,    0,   37,   34,   33,    0,    0,    0,  152,
+        0,    0,    0,    0,    0,  141,    0,  166,   51,    0,
+       56,    0,    0,    0,    0,    0,   37,   34,   33,    0,
+        0,    0,  154,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  130,
 
-        0,    0,    0,    0,    0,    0,    0,    0,  163,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  132,    0,    0,    0,    0,    0,    0,
+        0,    0,  165,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       53,    0,    0,   32,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,   99,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  153,    0,
+        0,    0,    0,    0,   53,    0,    0,   32,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   99,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  148,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    7,   35,    0,    0,    0,    0,
+        0,    0,  155,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  150,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    7,   35,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      118,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  118,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  132,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  129,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  101,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  134,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  131,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      101,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  109,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  109,    0,    0,
 
-        0,    0,    0,    0,    0,    0,    0,  108,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  108,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  147,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  157,  127,    0,    0,    0,    0,    0,    0,
-        0,  131,   52,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  133,    0,   60,    0,
+        0,    0,    0,    0,  149,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      159,  129,    0,    0,    0,    0,    0,    0,    0,  133,
+       52,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  135,    0,   60,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   91,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  184,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   91,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  186,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,  115,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  146,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  148,
         0,    0,    0,    0,    0,    0,   63,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       57,  100,    0,    0,    0,  143,    0,    0,    0,    0,
 
+       57,  100,    0,    0,    0,  145,    0,    0,    0,    0,
        50,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  135,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  137,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  128,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  187,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  185,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  110,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  110,    0,    0,    0,    0,    0,
+
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-
-        0,    0,    0,    0,    0,    0,    0,    0,   41,    0,
+       41,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   16,    0,    0,  160,   14,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       16,    0,    0,  158,   14,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  151,    0,    0,    0,    0,
+        0,    0,  136,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,  147,  164,    0,   40,    0,  156,    0,    0,    0,
+
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  149,    0,    0,    0,    0,    0,    0,  134,
+        0,   20,    0,    0,    0,   94,    0,    0,    0,    0,
+        0,  158,   54,    0,  102,    0,  185,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  145,  162,
-        0,   40,    0,  154,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   20,    0,
-
-        0,    0,   94,    0,    0,    0,    0,    0,  156,   54,
-        0,  102,    0,  183,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   82,
-        0,    0,    0,    0,    0,  125,  126,    0,    0,    0,
-        0,    0,    0,    0,    0,   98,    0,    0,    0,    0,
-        0,    0,   64,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  151,    0,
+        0,    0,   82,    0,    0,    0,    0,    0,  125,  126,
+        0,    0,    0,    0,    0,    0,    0,    0,   98,    0,
+        0,    0,    0,    0,    0,    0,   64,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  121,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   95,  117,    0,
+        0,    0,  153,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  121,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   79,    0,    0,    0,    0,    0,    0,   17,    0,
-       15,    0,  180,  179,    0,    0,    0,   69,    0,    0,
-        0,    0,    0,   30,    0,  138,    0,    0,    0,    0,
+        0,   95,  117,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,   79,    0,    0,    0,    0,
+        0,    0,   17,    0,   15,    0,  182,  181,    0,    0,
+        0,   69,    0,    0,    0,    0,    0,   30,    0,    0,
+      140,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  175,    0,  184,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  173,    0,  182,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  111,    0,  142,   43,
-        0,   61,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   19,    0,    0,    0,    0,    0,    0,    0,
-      113,   80,    0,    0,  150,    0,    0,    0,    0,    0,
+        0,  111,    0,  144,   43,    0,   61,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   19,    0,    0,
 
-      141,    0,    0,    0,    0,    0,    0,    0,    0,  107,
+        0,    0,    0,    0,    0,  113,   80,    0,    0,  152,
+        0,    0,    0,    0,    0,  143,    0,    0,    0,    0,
+        0,    0,    0,    0,  107,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,  105,    0,    0,
-        0,  165,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  105,    0,    0,    0,  167,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   42,    0,    0,
-        0,    0,   68,    0,    0,    0,    0,    0,  136,   47,
-        0,    0,    0,   70,  178,   38,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,   12,    0,    0,    0,    0,
-
-        0,    0,    0,    0,    0,   45,    0,    0,   44,    0,
-       18,    0,    0,    0,   72,    0,    0,    0,    0,    0,
-      128,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   76,
-        0,    0,    0,    0,   62,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  103,    0,    0,    0,    0,    0,
-      155,    0,    0,    0,   46,    0,    0,    0,    0,    0,
-        0,    0,    0,  174,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   67,    0,    0,    0,   93,    0,
-        0,    0,    0,   36,    0,   48,    0,    0,    0,    0,
-
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   24,
-        0,    0,    0,    0,    0,    0,    0,  171,    0,    0,
-        0,    0,  140,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  114,    0,    0,    0,  176,    0,    0,
-        0,    0,    0,    0,    0,    0,   85,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   25,   39,    0,    0,
-        0,    0,    0,    0,    0,    0,  177,    0,   13,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  181,    0,    0,    0,
-        0,    0,    0,    0,    0,  170,    0,   78,    0,   77,
+        0,    0,    0,   42,    0,    0,    0,    0,   68,    0,
+        0,    0,    0,    0,    0,  138,   47,    0,    0,    0,
+
+       70,  180,   38,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   12,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   45,    0,    0,   44,    0,   18,    0,    0,
+        0,   72,    0,    0,    0,    0,    0,  130,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   76,    0,  127,    0,
+        0,    0,   62,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,  103,    0,    0,    0,    0,    0,  157,    0,
+        0,    0,   46,    0,    0,    0,    0,    0,    0,    0,
+        0,  176,    0,    0,    0,    0,    0,    0,    0,    0,
+
+        0,    0,   67,    0,    0,    0,   93,    0,    0,    0,
+        0,   36,    0,   48,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   24,    0,    0,
+        0,    0,    0,    0,    0,  173,    0,    0,    0,    0,
+      142,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,  114,    0,    0,    0,  178,    0,    0,    0,    0,
+        0,    0,    0,    0,   85,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   25,   39,    0,    0,    0,    0,
+        0,    0,    0,    0,  179,    0,   13,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,   21,   73,    0,    0,    0,    0,    0,   65,    0,
-        0,    0,  124,    0,    0,    0,    0,    0,    0,    0,
-        0,  104,    0,    0,  169,    0,    0,    0,   71,    0,
-        0,    0,   66,    0,   23,    0,    0,   92,    0,    0,
+        0,    0,    0,    0,  183,    0,    0,    0,    0,    0,
+        0,    0,    0,  172,    0,   78,    0,   77,    0,   21,
+       73,    0,    0,    0,    0,    0,   65,    0,    0,    0,
+      124,    0,    0,    0,    0,    0,    0,    0,    0,  104,
+        0,    0,  171,    0,    0,    0,   71,    0,    0,    0,
+       66,    0,   23,    0,    0,   92,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   89,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       89,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   49,
-        0,    0,   90,    0,    0,  175,    0,    0,    0,    0,
-       75,   74,   22,    0,  122,  137,    0,    0,    0,   86,
-
-        0,    0,    0,    0,    0,    0,  167,    0,  172,    0,
-       88,   81,    0,    0,    0,    0,    0,    0,  166,    0,
-        0,   26,    0,    0,    0,    0,    0,    0,    0,   87,
-        0,    0,    0,    0,    0,  123,   84,    0,    0,    0,
-        0,   83,  168,    0
+        0,    0,    0,    0,    0,    0,    0,   49,    0,    0,
+
+       90,    0,    0,  177,    0,    0,    0,    0,   75,   74,
+       22,    0,  122,  139,    0,    0,    0,   86,    0,    0,
+        0,    0,    0,    0,  169,    0,  174,    0,   88,   81,
+        0,    0,    0,    0,    0,    0,  168,    0,    0,   26,
+        0,    0,    0,    0,    0,    0,    0,   87,    0,    0,
+        0,    0,    0,  123,   84,    0,    0,    0,    0,   83,
+      170,    0
     } ;
 
 static const YY_CHAR yy_ec[256] =
@@ -951,440 +953,444 @@ static const YY_CHAR yy_meta[74] =
         3,    3,    3
     } ;
 
-static const flex_int16_t yy_base[1857] =
+static const flex_int16_t yy_base[1875] =
     {   0,
         0,   72,   21,   31,   43,   51,   54,   60,   91,   99,
-     2246, 2247,   34, 2242,  145,    0,  207, 2247,  214,  221,
-       13,  228, 2247, 2222,  118,   25,    2,    6, 2247, 2247,
-       73,   11,   17, 2247, 2247, 2247,  104, 2230, 2183,    0,
-     2220,  108, 2237,   24,  256, 2247,   67, 2186, 2206,   84,
-       75, 2206,   88,  226,   91,   89,  284,  196,  203,  279,
-      193,  224,  216,   60,  242, 2186,  286,  288,  314,  300,
-      319, 2169,  204,  324,  356,  329, 2188,    0,  380,  400,
-      420,  427,  406, 2247,    0, 2247,  385,  443,  238,  241,
-      310,  269,  299,  314, 2247, 2185, 2226, 2247,  405, 2247,
-
-      419,  400, 2183, 2224,  326,   10,  262,  407,  224,  409,
-      352,  206, 2223,    0,  472,  412, 2165,  219, 2173,  406,
-     2169, 2158, 2159, 2164,  424, 2174, 2157, 2166,  327,  415,
-      401, 2160, 2158,  444, 2147, 2205,  399, 2150, 2203, 2143,
-     2166, 2163, 2163, 2157,  339, 2150, 2148, 2149, 2141, 2146,
-     2140,  440, 2151, 2144, 2135, 2134, 2148,  446, 2186, 2133,
-      442, 2145,  466, 2133,  480, 2134,  466, 2146, 2143, 2144,
-      293, 2142, 2177, 2176,  469, 2122, 2122, 2126, 2122, 2114,
-     2131, 2123,    0,  479,  483,  486,  481,  493,  504, 2122,
-     2247,    0,  509, 2117, 2247,  498,  506, 2247, 2171,  508,
-
-     2170,  519, 2169,  515, 2168, 2247,  561, 2167,  525, 2126,
-     2123, 2124, 2119, 2118, 2109,  502, 2160, 2154, 2118, 2099,
-     2096, 2104, 2110, 2098, 2112, 2108, 2109, 2109, 2104, 2096,
-     2098, 2082, 2086, 2099, 2101, 2098, 2090, 2080, 2083, 2097,
-     2247, 2083, 2091, 2094, 2075, 2074, 2126, 2073, 2083, 2123,
-      538, 2082, 2121, 2066, 2068, 2079, 2117,  530, 2121, 2056,
-     2071,  540, 2061, 2067, 2076, 2057, 2055, 2058, 2054, 2060,
-     2051, 2050, 2063, 2056, 2046, 2057, 2061, 2060, 2054,  499,
-     2061, 2056, 2048, 2038, 2053, 2048, 2052,  506, 2050, 2036,
-     2042, 2049, 2031, 2032, 2035, 2032, 2031,  557, 2026, 2040,
-
-     2039, 2038, 2041, 2023, 2031,  543, 2247, 2247,  545, 2247,
-     2247, 2018,    0,  511, 2065,  556, 2076, 2247,  529, 2247,
-     2075, 2247, 2069,  599, 2247,  549, 2009, 2012, 2029, 2017,
-     2069, 2024, 2019, 2022, 2017,   80, 2247, 2019,  585, 2058,
-     2016, 2013, 2014,  583, 2018, 2058, 2006, 2001, 1998, 1994,
-     1996, 2047, 2004, 1993, 2009, 2043, 1989,  592, 2002, 2002,
-     1985, 1986, 1999, 1986, 1996, 1991, 1998, 1993, 1978,  567,
-     1987, 1990, 1985,  570, 1984, 1980, 2030,  422,  569, 2247,
-     2024, 1974, 1973, 1966, 1968, 1980, 1971, 1960, 1977, 1966,
-     1971,  576, 2018, 1971,  585, 1968, 1971, 1971, 1969, 1958,
-
-     1958, 1970,  579, 1945, 1946, 1967,  603, 1949, 1946, 1960,
-     1963, 1958, 1944, 1956, 1955, 1954, 1949, 1952, 1951, 1950,
-     1949,  562, 1992, 1951, 1990, 1989, 1931,  630, 1944, 2247,
-     2247, 1943,    0,  597, 1985, 1984, 2247, 1983, 2247,  620,
-      668,  607, 1982, 1930, 1932, 1920, 2247, 1925, 1931, 1934,
-     1917, 1932, 1919, 1918, 2247, 1928,  603, 1919, 1916, 1928,
-      610, 1913, 1915, 2247, 1921, 1906, 1908, 1919, 1917, 1912,
-      658, 1919, 1907, 1900, 1951, 2247, 1898, 1914, 1948, 1952,
-     1908, 1902, 1904, 1905, 1907, 1941, 1892, 1887, 1886, 1888,
-     1884, 1880,  608, 1899, 1873, 1880, 1885, 1878, 1894, 1928,
-
-     1932, 2247, 1877, 1873, 1929, 1880, 1874, 1881, 1866, 1876,
-     1864, 1878, 1867, 1863, 1865, 1860, 2247, 1917, 2247, 1859,
-     1858, 1851, 1868, 1907, 1906, 1851, 1856, 1865, 1859, 1853,
-     1862,  664, 1899, 1861, 1844, 1844, 1839, 1835, 1841, 1846,
-     1839, 1847, 1851, 1834, 1892, 1833, 1885, 1830, 1831, 1830,
-     1842, 1831, 2247, 1841, 2247, 2247, 1830, 2247, 1840, 1876,
-     1836,    0, 1879, 2247, 2247, 2247,  627,  627,  667, 2247,
-     1838, 1818, 1871, 1816, 1869, 1814, 1813, 1812, 1819, 1812,
-     1820, 1823, 1805, 1805, 1820, 1819, 1818, 1817, 1801, 1816,
-     1798, 1845, 1812, 1850, 1794, 1796, 1808, 1808, 1807, 2247,
-
-     1792, 1789, 1847, 1802, 1794, 1800, 1791, 1799, 2247, 1784,
-     1795, 1799, 1781, 1795,  444, 1777, 1771, 1776, 1773, 1788,
-     1787, 1788, 1767, 1777, 1783, 1826, 1781, 1780, 1772, 1763,
-     2247, 1764, 1766, 2247, 1774, 1813, 1812,   16, 1773, 1810,
-     1755, 1756, 1759, 1760, 1751, 2247, 1765, 1751,  691, 1743,
-     1747, 1763, 1760, 1752, 1797, 1749, 1756, 1794, 2247, 1740,
-     1738, 1752, 1736, 1750, 1753, 1787, 1786, 1785, 1784, 1729,
-     1782, 1781, 2247, 1726, 1740,  670, 1741, 1740, 1737, 1737,
-     1774, 1734, 1723, 1725, 2247, 2247,  640,  570, 1717, 1715,
-     1709, 1730, 1771,  650, 1765, 1725, 1763, 1762, 1714, 1708,
-
-     1711, 1719, 1722, 1706, 1707, 1698, 1753, 1713, 1703, 1711,
-     1749, 1710,  642, 1701, 1703, 1707, 1744, 1748, 1703, 1702,
-     2247, 1703, 1696, 1685, 1698,   95,  170,  221,  229,  242,
-      294,  310,  382,  403,  593,  638,  611,  629,  623,  646,
-      696,  655,  704, 2247,  705,  661,  659,  667,  663,  657,
-      712,  675,  664, 2247,  666,  677,  666,  679,  681,  725,
-      668,  727,  670,  685, 2247,  679,  673,  684,  669,  680,
-      694,  673,  679,  734,  698,  682,  682,  695,  739,  740,
-      741,  688,  706,  701,  708,  703,  688,  700,  701,  707,
-      694, 2247,  759,  717,  719,  709,  721,  711,  724,  715,
-
-      721,  765,  741,  728,  729,  774,  724, 2247,  722,  737,
-      734,  720,  727,  726,  724,  743,  740,  741,  729,  736,
-      737,  746,  746,  736,  749,  735,  734,  740,  796,  737,
-      738,  745,  761,  744,  798,  753, 2247,  763,  763,  756,
-      767,  765,  810,  752,  754,  769,  770,  758,  817,  774,
-      760,  763, 2247, 2247,  779,  778,  779,  784,  772,  782,
-      784, 2247, 2247,  784,  786,  773,  791,  778,  776,  794,
-      781,  781,  832,  779,  783,  841, 2247,  842, 2247,  787,
-      801,  801,  846,  794,  793,  797,  791,  851,  804,  794,
-      795,  791,  801,  805,  816,  800,  818,  813,  815,  808,
-
-      810,  811,  823,  813,  828,  869,  826,  831,  808,  831,
-      815, 2247,  822,  823,  837,  828,  826,  876,  823,  838,
-      856,  864,  833,  882, 2247,  848,  836,  831,  832,  844,
-      851,  840,  841,  837,  855,  841,  842,  852,  861,  897,
-      852,  847,  900,  906,  863,  855, 2247,  859,  868,  870,
-      855,  871,  861,  873,  867,  914,  880,  864,  865, 2247,
-      881,  884,  867,  869,  927,  870, 2247,  887,  890,  870,
-      889,  877,  930,  888,  884,  881,  934,  883,  936,  898,
-      884,  902,  901,  887,  902,  894,  890,  908,  907,  894,
-     2247, 2247,  902,  949,  902, 2247,  910,  913,  906,  959,
-
-     2247,  908,  914,  958,  909,  910,  922,  916,  920,  918,
-      916,  927,  972,  916,  921,  975,  976,  920,  932, 2247,
-      920,  928,  926,  977,  939,  925,  927,  936,  948,  935,
-      933,  947,  948,  964,  969,  951,  937,  939,  939,  959,
-      958,  949,  938,  955,  962, 1005,  947,  967,  960,  964,
-      968,  951, 1012,  959,  963, 2247, 1010,  959,  958,  958,
-      979,  976, 1018,  967,  985,  986,  972,  980,  989,  969,
-      984,  991, 1033, 1034, 2247,  987, 1036, 1037,  988,  998,
-     1000,  984,  986,  986,  993, 1002,  990,  997,  992,  999,
-     1011, 1052,  999,  998, 1015, 1056, 1006, 1010, 1008, 1006,
-
-     1001, 1062, 1063, 1013, 1065, 1061, 1067, 1020, 2247, 1025,
-     1018, 1009, 1028, 1022, 1017, 1027, 1024, 1029, 1025, 1037,
-     2247, 1021, 1024, 2247, 2247, 1024, 1084, 1023, 1042, 1043,
-     1045, 1036, 1090, 1091, 1044, 1029, 1043, 1051, 1033, 1038,
-     1077, 1068, 1100, 1057, 1044, 1046, 1063, 1058, 1062, 1107,
-     1055, 1059, 2247, 1056, 1052, 1069, 1049, 1070, 1060, 2247,
-     1075, 1073, 1076, 1060, 1072, 1078, 1064, 1124, 1077, 1082,
-     1070, 1081, 1073, 1079, 1075, 1093, 1094, 1095, 2247, 2247,
-     1093, 2247, 1095, 2247, 1080, 1081, 1100, 1090, 1142, 1099,
-     1096, 1140, 1104, 1093, 1100, 1105, 1102, 1108, 2247, 1101,
-
-     1093, 1154, 2247, 1155, 1102, 1109, 1153, 1115, 2247, 2247,
-     1112, 2247, 1103, 2247, 1103, 1106, 1120, 1125, 1108, 1119,
-     1168, 1125, 1126, 1127, 1167, 1123, 1174, 1127, 1176, 2247,
-     1123, 1178, 1179, 1136, 1138, 2247, 2247, 1121, 1183, 1179,
-     1143, 1127, 1139, 1158, 1189, 2247, 1146, 1191, 1138, 1153,
-     1189, 1141, 2247, 1137, 1153, 1141, 1155, 1156, 1153, 1197,
-     1160, 1164, 1152, 1152, 1207, 1203, 1209, 1166, 2247, 1168,
-     1167, 1169, 1162, 1171, 1173, 1170, 1160, 1163, 1163, 1222,
-     1169, 1224, 1226, 1169, 1228, 2247, 1186, 1165, 1180, 1173,
-     1176, 1189, 1193, 1192, 1190, 1240, 1193, 2247, 2247, 1189,
-
-     1199, 1184, 1240, 1201, 1187, 1248, 1249, 1193, 1203, 1252,
-     1209, 2247, 1201, 1201, 1203, 1205, 1258, 1201, 2247, 1202,
-     2247, 1204, 2247, 2247, 1217, 1219, 1220, 2247, 1207, 1215,
-     1267, 1216, 1248, 2247, 1265, 2247, 1213, 1221, 1215, 1212,
-     1215, 1218, 1218, 1214, 1236, 1275, 1228, 1240, 1243, 1225,
-     1285, 1233, 2247, 1228, 2247, 1230, 1289, 1242, 1233, 1249,
-     1249, 1252, 1252, 1249, 1293, 1255, 2247, 1247, 2247, 2247,
-     1257, 2247, 1297, 1259, 1260, 1257, 1301, 1249, 1264, 1304,
-     1266, 1258, 2247, 1255, 1255, 1261, 1260, 1258, 1273, 1273,
-     2247, 2247, 1314, 1261, 2247, 1278, 1263, 1263, 1265, 1271,
-
-     2247, 1326, 1268, 1278, 1289, 1287, 1331, 1284, 1293, 2247,
-     1290, 1309, 1277, 1337, 1338, 1295, 1300, 1282, 1342, 1343,
-     1344, 1340, 1304, 1301, 1297, 1290, 1302, 2247, 1292, 1305,
-     1353, 2247, 1291, 1350, 1313, 1310, 1354, 1302, 1307, 1306,
-     1365, 1321, 1367, 1317, 1369, 1330, 1319, 1313, 1373, 1315,
-     1324, 1317, 1331, 1334, 1379, 1321, 1338, 1334, 1324, 1339,
-     1323, 1381, 1382, 1383, 1330, 1385, 1348, 2247, 1348, 1335,
-     1334, 1390, 2247, 1331, 1349, 1398, 1368, 1352, 2247, 2247,
-     1343, 1354, 1403, 2247, 2247, 2247, 1349, 1354, 1352, 1402,
-     1360, 1365, 1356, 1354, 1355, 2247, 1413, 1359, 1410, 1353,
-
-     1358, 1419, 1367, 1377, 1378, 2247, 1424, 1377, 2247, 1378,
-     2247, 1370, 1385, 1373, 2247, 1383, 1384, 1385, 1434, 1392,
-     2247, 1431, 1397, 1373, 1391, 1392, 1401, 1383, 1389, 1391,
-     1445, 1404, 1403, 1395, 1449, 1399, 1403, 1408, 1401, 2247,
-     1454, 1403, 1456, 1398, 2247, 1401, 1411, 1455, 1403, 1418,
-     1405, 1411, 1411, 1422, 2247, 1416, 1411, 1410, 1470, 1423,
-     2247, 1467, 1418, 1415, 2247, 1429, 1431, 1433, 1478, 1431,
-     1428, 1436, 1430, 2247, 1483, 1424, 1426, 1442, 1435, 1425,
-     1441, 1442, 1436, 1452, 2247, 1442, 1494, 1453, 2247, 1437,
-     1444, 1498, 1494, 2247, 1456, 2247, 1496, 1458, 1459, 1444,
-
-     1445, 1453, 1507, 1503, 1458, 1470, 1467, 1458, 1465, 2247,
-     1462, 1467, 1465, 1517, 1518, 1475, 1462, 2247, 1477, 1478,
-     1479, 1480, 2247, 1470, 1482, 1527, 1484, 1529, 1471, 1479,
-     1473, 1481, 1494, 2247, 1471, 1531, 1492, 2247, 1496, 1481,
-     1481, 1496, 1489, 1488, 1499, 1486, 2247, 1491, 1547, 1505,
-     1496, 1508, 1499, 1508, 1510, 1514, 2247, 2247, 1496, 1556,
-     1499, 1558, 1500, 1560, 1518, 1562, 2247, 1563, 2247, 1559,
-     1521, 1518, 1523, 1510, 1569, 1512, 1517, 1508, 1573, 1526,
-     1527, 1517, 1534, 1533, 1574, 1536, 2247, 1533, 1582, 1539,
-     1540, 1585, 1542, 1545, 1540, 2247, 1589, 2247, 1542, 2247,
-
-     1551, 2247, 2247, 1533, 1593, 1540, 1595, 1538, 2247, 1557,
-     1598, 1557, 2247, 1548, 1538, 1597, 1563, 1556, 1552, 1549,
-     1554, 2247, 1550, 1552, 2247, 1557, 1567, 1560, 2247, 1561,
-     1555, 1567, 2247, 1563, 2247, 1573, 1566, 2247, 1568, 1576,
-     1621, 1562, 1564, 1561, 1585, 1578, 1581, 1570, 1624, 1571,
-     1579, 1588, 1589, 1590, 1583, 1578, 1579, 1583, 1595, 1640,
-     2247, 1586, 1598, 1643, 1592, 1591, 1646, 1599, 1586, 1601,
-     1606, 1651, 1652, 1653, 1610, 1655, 1656, 1606, 1600, 2247,
-     1616, 1660, 2247, 1617, 1619, 2247, 1610, 1624, 1620, 1613,
-     2247, 2247, 2247, 1667, 2247, 2247, 1624, 1669, 1630, 2247,
-
-     1671, 1672, 1627, 1626, 1627, 1617, 2247, 1672, 2247, 1619,
-     2247, 2247, 1679, 1621, 1637, 1682, 1643, 1640, 2247, 1681,
-     1630, 2247, 1642, 1635, 1690, 1632, 1634, 1649, 1634, 2247,
-     1647, 1696, 1697, 1645, 1647, 2247, 2247, 1641, 1657, 1702,
-     1703, 2247, 2247, 2247, 1709, 1714, 1719, 1724, 1729, 1734,
-     1739, 1742, 1716, 1721, 1723, 1736
+     2264, 2265,   34, 2260,  145,    0,  207, 2265,  214,  221,
+       13,  228, 2265, 2240,  118,   25,    2,    6, 2265, 2265,
+       73,   11,   17, 2265, 2265, 2265,  104, 2248, 2201,    0,
+     2238,  108, 2255,   24,  256, 2265,   67, 2204, 2224,   84,
+       75, 2224,   88,  226,   91,   89,  284,  196,  203,  279,
+      193,  224,  216,   60,  242, 2204,  286,  288,  314,  300,
+      319, 2187,  204,  324,  356,  329, 2206,    0,  380,  400,
+      420,  427,  406, 2265,    0, 2265,  385,  443,  238,  241,
+      310,  269,  299,  314, 2265, 2203, 2244, 2265,  405, 2265,
+
+      419,  400, 2201, 2242,  326,   10,  262,  407,  224,  409,
+      352,  206, 2241,    0,  472,  412, 2183,  415, 2191,  406,
+     2187, 2176, 2177, 2182,  444, 2192, 2175, 2184,  327,  433,
+      226, 2178, 2176,  445, 2165, 2223,  399, 2168, 2221, 2161,
+     2184, 2181, 2181, 2175,  339, 2168, 2166, 2167, 2159, 2164,
+     2158,  412, 2169, 2162, 2153, 2152, 2166,  462, 2204, 2151,
+      443, 2163,  421, 2151,  482, 2152,  445, 2164, 2161, 2162,
+      293, 2160, 2195, 2194,  477, 2140, 2140, 2144, 2140, 2132,
+     2149, 2141,    0,  478,  493,  486,  481,  500,  505, 2140,
+     2265,    0,  510, 2135, 2265,  498,  505, 2265, 2189,  508,
+
+     2188,  513, 2187,  515, 2186, 2265,  561, 2185,  525, 2144,
+     2136, 2140, 2141, 2136, 2135, 2126,  501, 2177, 2171, 2135,
+     2116, 2113, 2121, 2127, 2115, 2129, 2125, 2126, 2126, 2121,
+     2113, 2115, 2099, 2103, 2116, 2118, 2115, 2107, 2097, 2100,
+     2114, 2265, 2100, 2108, 2111, 2092, 2091, 2143, 2090, 2100,
+     2140,  505, 2099, 2138, 2083, 2085, 2096, 2134,  532, 2138,
+     2073, 2088,  538, 2078, 2084, 2093, 2074, 2072, 2075, 2071,
+     2077, 2068, 2067, 2080, 2073, 2063, 2074, 2078, 2077, 2071,
+      220, 2078, 2073, 2065, 2055, 2070, 2065, 2069,  500, 2067,
+     2053, 2059, 2066, 2048, 2049, 2052, 2049, 2048,  562, 2043,
+
+     2057, 2056, 2055, 2058, 2040, 2048,  543, 2265, 2265,  553,
+     2265, 2265, 2035,    0,  520, 2082,  554, 2093, 2265,  556,
+     2265, 2092, 2265, 2086,  606, 2265,  555, 2026, 2045, 2028,
+     2045, 2033, 2085, 2040, 2035, 2038, 2033,   80, 2265, 2035,
+      586, 2074, 2032, 2029, 2030,  583, 2034, 2074, 2022, 2017,
+     2014, 2010, 2012, 2063, 2020, 2009, 2025, 2059, 2005,  607,
+     2018, 2018, 2001, 2002, 2015, 2002, 2012, 2007, 2014, 2009,
+     1994,  574, 2003, 2006, 2001,  534, 2000, 1996, 2046,  422,
+      563, 2265, 2040, 1990, 1989, 1982, 1984, 1996, 1987, 1976,
+     1993, 1982, 1987,  596, 2034, 1987,  588, 1984, 1987, 1987,
+
+     1985, 1974, 1974, 1986,  580, 1961, 1962, 1983,  590, 1965,
+     1962, 1976, 1979, 1974, 1960, 1972, 1971, 1970, 1965, 1968,
+     1967, 1966, 1965,  558, 2008, 1967, 2006, 2005, 1947,  639,
+     1960, 2265, 2265, 1959,    0,  610, 2001, 2000, 2265, 1999,
+     2265,  617,  665,  611, 1998, 1992, 1945, 1947, 1935, 2265,
+     1940, 1946, 1949, 1932, 1947, 1934, 1933, 2265, 1943,  634,
+     1934, 1931, 1943,  566, 1928, 1930, 2265, 1936, 1921, 1923,
+     1934, 1932, 1927,  652, 1934, 1922, 1915, 1966, 2265, 1913,
+     1929, 1963, 1967, 1923, 1917, 1919, 1920, 1922, 1956, 1907,
+     1902, 1901, 1903, 1899, 1895,  556, 1914, 1888, 1895, 1900,
+
+     1893, 1909, 1943, 1947, 2265, 1892, 1888, 1944, 1895, 1889,
+     1896, 1881, 1891, 1879, 1893, 1882, 1878, 1880, 1875, 2265,
+     1932, 2265, 1874, 1873, 1866, 1883, 1922, 1921, 1866, 1871,
+     1880, 1874, 1868, 1877,  653, 1914, 1876, 1859, 1859, 1854,
+     1850, 1856, 1861, 1854, 1862, 1866, 1849, 1907, 1848, 1900,
+     1845, 1846, 1845, 1857, 1846, 2265, 1856, 2265, 2265, 1845,
+     2265, 1855, 1891, 1851,    0, 1894, 2265, 2265, 2265,  635,
+      637,  656, 2265,  612, 1853, 1833, 1886, 1831, 1884, 1829,
+     1828, 1827, 1834, 1827, 1835, 1838, 1820, 1820, 1835, 1834,
+     1833, 1832, 1816, 1831, 1813, 1860, 1827, 1865, 1809, 1811,
+
+     1823, 1823, 1822, 2265, 1807, 1804, 1862, 1817, 1809, 1815,
+     1806, 1814, 2265, 1799, 1810, 1814, 1796, 1810,  636, 1792,
+     1786, 1791, 1788, 1803, 1802, 1803, 1782, 1792, 1798, 1841,
+     1796, 1795, 1787, 1778, 2265, 1779, 1781, 2265, 1789, 1828,
+     1827,   16, 1788, 1825, 1770, 1771, 1774, 1775, 1766, 2265,
+     1780, 1766,  693, 1758, 1762, 1778, 1775, 1767, 1812, 1764,
+     1771, 1809, 2265, 1755, 1753, 1767, 1751, 1765, 1768, 1802,
+     1801, 1800, 1799, 1744, 1797, 1796, 2265, 1741, 1755,  655,
+     1756, 1755, 1752, 1752, 1789, 1749, 1738, 1740, 2265, 2265,
+      664,  660, 1732, 1749, 1741, 1728, 1722, 1743, 1784,  654,
+
+     1778, 1738, 1776, 1775, 1727, 1721, 1724, 1732, 1735, 1719,
+     1720, 1711, 1766, 1726, 1716, 1724, 1762, 1723,  659, 1714,
+     1716, 1720, 1757, 1761, 1716,   91, 2265,  172,  221,  280,
+      313,  382,  403,  461,  503,  503,  533,  552,  581,  598,
+      659,  663,  643,  656,  642,  662,  698,  664,  714, 2265,
+      717,  673,  672,  674,  670,  665,  720,  683,  672, 2265,
+      674,  685,  674,  687,  689,  733,  676,  735,  678,  694,
+     2265,  688,  682,  693,  678,  689,  702,  681,  687,  742,
+      706,  690,  690,  703,  747,  748,  749,  696,  714,  709,
+      716,  711,  696,  708,  709,  715,  702, 2265,  767,  725,
+
+      727,  717,  729,  719,  732,  723,  729,  773,  749,  736,
+      718,  725,  739,  784,  734, 2265,  732,  747,  744,  730,
+      737,  736,  734,  753,  750,  751,  739,  746,  747,  756,
+      756,  746,  759,  745,  744,  750,  806,  748,  749,  755,
+      771,  754,  808,  763, 2265,  773,  773,  766,  777,  775,
+      820,  762,  764,  779,  780,  768,  827,  784,  770,  773,
+     2265, 2265,  789,  788,  789,  794,  782,  792,  794, 2265,
+     2265,  794,  796,  783,  801,  788,  786,  804,  791,  791,
+      842,  789,  793,  851, 2265,  852, 2265,  797,  811,  811,
+      856,  804,  803,  807,  801,  861,  814,  804,  805,  801,
+
+      811,  815,  826,  810,  828,  823,  825,  818,  820,  821,
+      833,  823,  838,  879,  836,  841,  818,  841,  825, 2265,
+      832,  833,  847,  838,  836,  886,  833,  848,  866,  874,
+      843,  897,  854,  894, 2265,  860,  848,  843,  844,  856,
+      863,  852,  853,  849,  867,  853,  854,  864,  873,  909,
+      864,  859,  912,  919,  876,  868, 2265,  872,  880,  882,
+      867,  883,  873,  885,  879,  926,  892,  876,  877, 2265,
+      893,  896,  879,  881,  939,  882, 2265,  899,  902,  882,
+      901,  889,  942,  900,  896,  893,  946,  895,  948,  910,
+      896,  914,  913,  899,  914,  906,  902,  920,  919,  906,
+
+     2265, 2265,  914,  961,  914, 2265,  922,  925,  918,  971,
+     2265,  920,  926,  970,  921,  922,  934,  928,  932,  930,
+      928,  939,  984,  928,  933,  987,  988,  932,  944, 2265,
+      932,  940,  938,  989,  951,  937,  939,  948,  960,  947,
+      945,  959,  960,  976,  981,  963, 2265,  950,  950,  952,
+      952,  972,  971,  962,  951,  968,  975, 1018,  960,  980,
+      973,  977,  981,  964, 1025,  972,  976, 2265, 1023,  972,
+      971,  971,  992,  991, 1031,  980,  998,  999,  985,  993,
+     1002,  982,  997, 1004, 1046, 1047, 2265, 1000, 1049, 1050,
+     1001, 1011, 1013,  997,  999,  999, 1006, 1015, 1003, 1010,
+
+     1005, 1012, 1024, 1065, 1012, 1011, 1028, 1069, 1019, 1023,
+     1021, 1019, 1014, 1075, 1076, 1026, 1078, 1074, 1080, 1033,
+     2265, 1038, 1031, 1022, 1041, 1035, 1030, 1040, 1037, 1042,
+     1038, 1050, 2265, 1034, 1037, 2265, 2265, 1037, 1097, 1036,
+     1055, 1056, 1058, 1049, 1103, 1104, 1057, 1042, 1056, 1064,
+     1046, 1051, 1090, 1081, 1113, 1067, 1071, 1058, 1060, 1077,
+     1072, 1076, 1121, 1069, 1073, 2265, 1070, 1066, 1083, 1063,
+     1084, 1074, 2265, 1089, 1087, 1090, 1074, 1087, 1092, 1078,
+     1138, 1091, 1097, 1084, 1095, 1087, 1093, 1089, 1107, 1108,
+     1109, 2265, 2265, 1107, 2265, 1109, 2265, 1094, 1095, 1114,
+
+     1104, 1156, 1113, 1110, 1154, 1118, 1107, 1114, 1119, 1116,
+     1122, 2265, 1115, 1107, 1168, 2265, 1169, 1116, 1123, 1167,
+     1129, 2265, 2265, 1126, 2265, 1117, 2265, 1117, 1120, 1134,
+     1139, 1122, 1133, 1182, 1139, 1140, 1141, 1181, 1137, 1188,
+     1141, 1190, 2265, 1137, 1192, 1193, 1150, 1152, 2265, 2265,
+     1135, 1197, 1193, 1157, 1141, 1153, 1172, 1203, 2265, 1150,
+     1161, 1206, 1153, 1168, 1204, 1156, 2265, 1152, 1168, 1156,
+     1170, 1171, 1168, 1212, 1175, 1179, 1167, 1167, 1222, 1218,
+     1224, 1181, 2265, 1183, 1182, 1184, 1177, 1187, 1188, 1185,
+     1175, 1178, 1178, 1237, 1184, 1240, 1241, 1184, 1243, 2265,
+
+     1201, 1180, 1195, 1188, 1191, 1204, 1208, 1207, 1205, 1255,
+     1208, 2265, 2265, 1204, 1214, 1199, 1255, 1216, 1202, 1263,
+     1264, 1208, 1218, 1267, 1224, 2265, 1216, 1216, 1218, 1220,
+     1273, 1216, 2265, 1217, 2265, 1219, 2265, 2265, 1232, 1234,
+     1235, 2265, 1222, 1230, 1282, 1231, 1263, 2265, 1234, 1281,
+     2265, 1229, 1237, 1231, 1228, 1231, 1234, 1234, 1230, 1252,
+     1291, 1244, 1256, 1259, 1241, 1301, 1249, 2265, 1244, 2265,
+     1246, 1305, 1258, 1250, 1265, 1265, 1268, 1268, 1265, 1309,
+     1271, 2265, 1263, 2265, 2265, 1273, 2265, 1313, 1275, 1276,
+     1273, 1317, 1265, 1280, 1320, 1282, 1274, 2265, 1271, 1271,
+
+     1277, 1276, 1274, 1289, 1289, 2265, 2265, 1330, 1277, 2265,
+     1294, 1279, 1279, 1281, 1287, 2265, 1342, 1284, 1294, 1305,
+     1303, 1347, 1300, 1309, 2265, 1306, 1325, 1309, 1294, 1354,
+     1355, 1312, 1317, 1299, 1359, 1360, 1361, 1357, 1321, 1318,
+     1314, 1307, 1319, 2265, 1309, 1322, 1370, 2265, 1308, 1367,
+     1330, 1327, 1371, 1319, 1325, 1323, 1382, 1338, 1384, 1334,
+     1386, 1347, 1336, 1330, 1390, 1332, 1341, 1334, 1348, 1351,
+     1396, 1338, 1355, 1351, 1341, 1356, 1340, 1398, 1399, 1400,
+     1347, 1402, 1365, 2265, 1365, 1352, 1351, 1407, 2265, 1348,
+     1366, 1415, 1385, 1417, 1370, 2265, 2265, 1361, 1372, 1421,
+
+     2265, 2265, 2265, 1367, 1372, 1370, 1420, 1378, 1383, 1374,
+     1372, 1373, 2265, 1431, 1377, 1428, 1371, 1376, 1437, 1385,
+     1395, 1397, 2265, 1442, 1395, 2265, 1397, 2265, 1388, 1403,
+     1391, 2265, 1401, 1402, 1403, 1452, 1410, 2265, 1449, 1415,
+     1391, 1409, 1410, 1419, 1401, 1407, 1409, 1463, 1422, 1421,
+     1413, 1467, 1417, 1421, 1426, 1419, 2265, 1472, 2265, 1421,
+     1474, 1416, 2265, 1419, 1429, 1473, 1421, 1436, 1423, 1429,
+     1429, 1440, 2265, 1434, 1429, 1428, 1488, 1441, 2265, 1485,
+     1436, 1433, 2265, 1447, 1449, 1451, 1496, 1449, 1446, 1454,
+     1448, 2265, 1501, 1442, 1444, 1460, 1453, 1443, 1459, 1460,
+
+     1454, 1470, 2265, 1460, 1512, 1471, 2265, 1455, 1462, 1516,
+     1512, 2265, 1474, 2265, 1514, 1476, 1477, 1462, 1463, 1471,
+     1525, 1521, 1476, 1488, 1485, 1476, 1483, 2265, 1480, 1485,
+     1483, 1535, 1536, 1493, 1480, 2265, 1495, 1496, 1497, 1498,
+     2265, 1488, 1500, 1545, 1502, 1547, 1489, 1497, 1491, 1499,
+     1512, 2265, 1489, 1549, 1510, 2265, 1514, 1499, 1499, 1514,
+     1507, 1506, 1517, 1504, 2265, 1509, 1565, 1523, 1514, 1526,
+     1517, 1526, 1528, 1532, 2265, 2265, 1514, 1574, 1517, 1576,
+     1518, 1578, 1536, 1580, 2265, 1581, 2265, 1577, 1539, 1536,
+     1541, 1528, 1587, 1530, 1535, 1526, 1591, 1544, 1545, 1535,
+
+     1552, 1551, 1592, 1554, 2265, 1551, 1600, 1557, 1558, 1603,
+     1560, 1563, 1558, 2265, 1607, 2265, 1560, 2265, 1569, 2265,
+     2265, 1551, 1611, 1558, 1613, 1556, 2265, 1575, 1616, 1575,
+     2265, 1566, 1556, 1615, 1581, 1574, 1570, 1567, 1572, 2265,
+     1568, 1570, 2265, 1575, 1585, 1578, 2265, 1579, 1573, 1585,
+     2265, 1581, 2265, 1591, 1584, 2265, 1586, 1594, 1639, 1580,
+     1582, 1579, 1603, 1596, 1599, 1588, 1642, 1589, 1597, 1606,
+     1607, 1608, 1601, 1596, 1597, 1601, 1613, 1658, 2265, 1604,
+     1616, 1661, 1610, 1609, 1664, 1617, 1604, 1619, 1624, 1669,
+     1670, 1671, 1628, 1673, 1674, 1624, 1618, 2265, 1634, 1678,
+
+     2265, 1635, 1637, 2265, 1628, 1642, 1638, 1631, 2265, 2265,
+     2265, 1685, 2265, 2265, 1642, 1687, 1648, 2265, 1689, 1690,
+     1645, 1644, 1645, 1635, 2265, 1690, 2265, 1637, 2265, 2265,
+     1697, 1639, 1655, 1700, 1661, 1658, 2265, 1699, 1648, 2265,
+     1660, 1653, 1708, 1650, 1652, 1667, 1652, 2265, 1665, 1714,
+     1715, 1663, 1665, 2265, 2265, 1659, 1675, 1720, 1721, 2265,
+     2265, 2265, 1727, 1732, 1737, 1742, 1747, 1752, 1757, 1760,
+     1734, 1739, 1741, 1754
     } ;
 
-static const flex_int16_t yy_def[1857] =
+static const flex_int16_t yy_def[1875] =
     {   0,
-     1845, 1845, 1846, 1846, 1845, 1845, 1845, 1845, 1845, 1845,
-     1844, 1844, 1844, 1844, 1844, 1847, 1844, 1844, 1844, 1844,
-     1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844,
-     1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1848,
-     1844, 1844, 1844, 1849,   15, 1844,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1850,   45,   45,   45,
+     1863, 1863, 1864, 1864, 1863, 1863, 1863, 1863, 1863, 1863,
+     1862, 1862, 1862, 1862, 1862, 1865, 1862, 1862, 1862, 1862,
+     1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862,
+     1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1866,
+     1862, 1862, 1862, 1867,   15, 1862,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1868,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1847, 1844, 1844,
-     1844, 1844, 1844, 1844, 1851, 1844, 1844, 1844, 1844, 1844,
-     1844, 1844, 1844, 1844, 1844, 1844, 1848, 1844, 1849, 1844,
+       45,   45,   45,   45,   45,   45,   45, 1865, 1862, 1862,
+     1862, 1862, 1862, 1862, 1869, 1862, 1862, 1862, 1862, 1862,
+     1862, 1862, 1862, 1862, 1862, 1862, 1866, 1862, 1867, 1862,
 
-     1844,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1852,   45, 1850,   45,   45,   45,   45,   45,
+     1862,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1870,   45, 1868,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1851, 1844, 1844, 1844, 1844, 1844, 1844, 1844,
-     1844, 1853,   45,   45, 1844,   45,   45, 1844,   45,   45,
+       45,   45, 1869, 1862, 1862, 1862, 1862, 1862, 1862, 1862,
+     1862, 1871,   45,   45, 1862,   45,   45, 1862,   45,   45,
 
-       45,   45,   45,   45, 1852, 1844, 1850,   45,   45,   45,
+       45,   45,   45,   45, 1870, 1862, 1868,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1844,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1862,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
-       45,   45,   45,   45,   45, 1844, 1844, 1844, 1844, 1844,
-     1844, 1844, 1854,   45,   45,   45,   45, 1844,   45, 1844,
-       45, 1844,   45, 1850, 1844,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1844,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1862, 1862, 1862, 1862,
+     1862, 1862, 1862, 1872,   45,   45,   45,   45, 1862,   45,
+     1862,   45, 1862,   45, 1868, 1862,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1862,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1844,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1862,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1844,
-     1844, 1844, 1855,   45,   45,   45, 1844,   45, 1844,   45,
-     1850,   45,   45,   45,   45,   45, 1844,   45,   45,   45,
-       45,   45,   45,   45, 1844,   45,   45,   45,   45,   45,
-       45,   45,   45, 1844,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1844,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1862, 1862, 1862, 1873,   45,   45,   45, 1862,   45,
+     1862,   45, 1868,   45,   45,   45,   45,   45,   45, 1862,
+       45,   45,   45,   45,   45,   45,   45, 1862,   45,   45,
+       45,   45,   45,   45,   45,   45, 1862,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1862,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
-       45, 1844,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1844,   45, 1844,   45,
+       45,   45,   45,   45, 1862,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1862,
+       45, 1862,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1862,   45, 1862, 1862,   45,
+     1862,   45,   45, 1862, 1874,   45, 1862, 1862, 1862,   45,
+       45,   45, 1862,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1844,   45, 1844, 1844,   45, 1844,   45,   45,
-     1844, 1856,   45, 1844, 1844, 1844,   45,   45,   45, 1844,
+
+       45,   45,   45, 1862,   45,   45,   45,   45,   45,   45,
+       45,   45, 1862,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1862,   45,   45, 1862,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1862,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1862,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1862,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1862, 1862,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1844,
 
-       45,   45,   45,   45,   45,   45,   45,   45, 1844,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1844,   45,   45, 1844,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1844,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1844,   45,
+       45,   45,   45,   45,   45,   45, 1862,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1844,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1844, 1844,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1862,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1862,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+     1862,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1862,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1862,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1844,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1844,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1844,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1844,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1862,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+     1862, 1862,   45,   45,   45,   45,   45,   45,   45, 1862,
+     1862,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1862,   45, 1862,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1844,   45,   45,   45,   45,   45,   45,   45,   45,
 
-       45,   45,   45,   45,   45,   45,   45, 1844,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1862,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1844,   45,   45,   45,
+       45,   45,   45,   45, 1862,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1844, 1844,   45,   45,   45,   45,   45,   45,
-       45, 1844, 1844,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1844,   45, 1844,   45,
+       45,   45,   45,   45,   45,   45, 1862,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1862,
+       45,   45,   45,   45,   45,   45, 1862,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
+     1862, 1862,   45,   45,   45, 1862,   45,   45,   45,   45,
+     1862,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1862,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1844,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1844,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1862,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1844,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1844,
-       45,   45,   45,   45,   45,   45, 1844,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1862,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1862,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1844, 1844,   45,   45,   45, 1844,   45,   45,   45,   45,
 
-     1844,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1844,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1844,   45,   45,   45,   45,
+     1862,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1862,   45,   45, 1862, 1862,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1844,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1862,   45,   45,   45,   45,
+       45,   45, 1862,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1862, 1862,   45, 1862,   45, 1862,   45,   45,   45,
 
-       45,   45,   45,   45,   45,   45,   45,   45, 1844,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1844,   45,   45, 1844, 1844,   45,   45,   45,   45,   45,
+       45, 1862,   45,   45,   45, 1862,   45,   45,   45,   45,
+       45, 1862, 1862,   45, 1862,   45, 1862,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1862,   45,   45,   45,   45,   45, 1862, 1862,
+       45,   45,   45,   45,   45,   45,   45,   45, 1862,   45,
+       45,   45,   45,   45,   45,   45, 1862,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1844,   45,   45,   45,   45,   45,   45, 1844,
+       45,   45, 1862,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1862,
+
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1844, 1844,
-       45, 1844,   45, 1844,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1844,   45,
-
-       45,   45, 1844,   45,   45,   45,   45,   45, 1844, 1844,
-       45, 1844,   45, 1844,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1844,
-       45,   45,   45,   45,   45, 1844, 1844,   45,   45,   45,
-       45,   45,   45,   45,   45, 1844,   45,   45,   45,   45,
-       45,   45, 1844,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1844,   45,
+       45, 1862, 1862,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1862,   45,   45,   45,   45,
+       45,   45, 1862,   45, 1862,   45, 1862, 1862,   45,   45,
+       45, 1862,   45,   45,   45,   45,   45, 1862,   45,   45,
+     1862,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1862,   45, 1862,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1844,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1844, 1844,   45,
+       45, 1862,   45, 1862, 1862,   45, 1862,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1862,   45,   45,
 
+       45,   45,   45,   45,   45, 1862, 1862,   45,   45, 1862,
+       45,   45,   45,   45,   45, 1862,   45,   45,   45,   45,
+       45,   45,   45,   45, 1862,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1844,   45,   45,   45,   45,   45,   45, 1844,   45,
-     1844,   45, 1844, 1844,   45,   45,   45, 1844,   45,   45,
-       45,   45,   45, 1844,   45, 1844,   45,   45,   45,   45,
+       45,   45,   45, 1862,   45,   45,   45, 1862,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1844,   45, 1844,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1844,   45, 1844, 1844,
-       45, 1844,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1844,   45,   45,   45,   45,   45,   45,   45,
-     1844, 1844,   45,   45, 1844,   45,   45,   45,   45,   45,
-
-     1844,   45,   45,   45,   45,   45,   45,   45,   45, 1844,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1844,   45,   45,
-       45, 1844,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1862,   45,   45,   45,   45, 1862,   45,
+       45,   45,   45,   45,   45, 1862, 1862,   45,   45,   45,
+
+     1862, 1862, 1862,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1862,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1862,   45,   45, 1862,   45, 1862,   45,   45,
+       45, 1862,   45,   45,   45,   45,   45, 1862,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1844,   45,   45,
-       45,   45, 1844,   45,   45,   45,   45,   45, 1844, 1844,
-       45,   45,   45, 1844, 1844, 1844,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1844,   45,   45,   45,   45,
-
-       45,   45,   45,   45,   45, 1844,   45,   45, 1844,   45,
-     1844,   45,   45,   45, 1844,   45,   45,   45,   45,   45,
-     1844,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1844,
-       45,   45,   45,   45, 1844,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1844,   45,   45,   45,   45,   45,
-     1844,   45,   45,   45, 1844,   45,   45,   45,   45,   45,
-       45,   45,   45, 1844,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1844,   45,   45,   45, 1844,   45,
-       45,   45,   45, 1844,   45, 1844,   45,   45,   45,   45,
-
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1844,
-       45,   45,   45,   45,   45,   45,   45, 1844,   45,   45,
-       45,   45, 1844,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1844,   45,   45,   45, 1844,   45,   45,
-       45,   45,   45,   45,   45,   45, 1844,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1844, 1844,   45,   45,
-       45,   45,   45,   45,   45,   45, 1844,   45, 1844,   45,
+       45,   45,   45,   45,   45,   45, 1862,   45, 1862,   45,
+       45,   45, 1862,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1862,   45,   45,   45,   45,   45, 1862,   45,
+       45,   45, 1862,   45,   45,   45,   45,   45,   45,   45,
+       45, 1862,   45,   45,   45,   45,   45,   45,   45,   45,
+
+       45,   45, 1862,   45,   45,   45, 1862,   45,   45,   45,
+       45, 1862,   45, 1862,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1862,   45,   45,
+       45,   45,   45,   45,   45, 1862,   45,   45,   45,   45,
+     1862,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1862,   45,   45,   45, 1862,   45,   45,   45,   45,
+       45,   45,   45,   45, 1862,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1862, 1862,   45,   45,   45,   45,
+       45,   45,   45,   45, 1862,   45, 1862,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1844,   45,   45,   45,
-       45,   45,   45,   45,   45, 1844,   45, 1844,   45, 1844,
 
-       45, 1844, 1844,   45,   45,   45,   45,   45, 1844,   45,
-       45,   45, 1844,   45,   45,   45,   45,   45,   45,   45,
-       45, 1844,   45,   45, 1844,   45,   45,   45, 1844,   45,
-       45,   45, 1844,   45, 1844,   45,   45, 1844,   45,   45,
+       45,   45,   45,   45, 1862,   45,   45,   45,   45,   45,
+       45,   45,   45, 1862,   45, 1862,   45, 1862,   45, 1862,
+     1862,   45,   45,   45,   45,   45, 1862,   45,   45,   45,
+     1862,   45,   45,   45,   45,   45,   45,   45,   45, 1862,
+       45,   45, 1862,   45,   45,   45, 1862,   45,   45,   45,
+     1862,   45, 1862,   45,   45, 1862,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1862,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1844,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1844,
-       45,   45, 1844,   45,   45, 1844,   45,   45,   45,   45,
-     1844, 1844, 1844,   45, 1844, 1844,   45,   45,   45, 1844,
-
-       45,   45,   45,   45,   45,   45, 1844,   45, 1844,   45,
-     1844, 1844,   45,   45,   45,   45,   45,   45, 1844,   45,
-       45, 1844,   45,   45,   45,   45,   45,   45,   45, 1844,
-       45,   45,   45,   45,   45, 1844, 1844,   45,   45,   45,
-       45, 1844, 1844,    0, 1844, 1844, 1844, 1844, 1844, 1844,
-     1844, 1844, 1844, 1844, 1844, 1844
+       45,   45,   45,   45,   45,   45,   45, 1862,   45,   45,
+
+     1862,   45,   45, 1862,   45,   45,   45,   45, 1862, 1862,
+     1862,   45, 1862, 1862,   45,   45,   45, 1862,   45,   45,
+       45,   45,   45,   45, 1862,   45, 1862,   45, 1862, 1862,
+       45,   45,   45,   45,   45,   45, 1862,   45,   45, 1862,
+       45,   45,   45,   45,   45,   45,   45, 1862,   45,   45,
+       45,   45,   45, 1862, 1862,   45,   45,   45,   45, 1862,
+     1862,    0, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862,
+     1862, 1862, 1862, 1862
     } ;
 
-static const flex_int16_t yy_nxt[2321] =
+static const flex_int16_t yy_nxt[2339] =
     {   0,
-     1844,   13,   14,   13, 1844,   15,   16, 1844,   17,   18,
+     1862,   13,   14,   13, 1862,   15,   16, 1862,   17,   18,
        19,   20,   21,   22,   22,   22,   22,   22,   23,   24,
-       84,  754,   37,   14,   37,   85,   25,   26,   38,  100,
-     1844,   27,   37,   14,   37,   42,   28,   42,   38,   90,
+       84,  760,   37,   14,   37,   85,   25,   26,   38,  100,
+     1862,   27,   37,   14,   37,   42,   28,   42,   38,   90,
        91,   29,  197,   30,   13,   14,   13,   89,   90,   25,
        31,   91,   13,   14,   13,   13,   14,   13,   32,   40,
-      755,   13,   14,   13,   33,   40,  101,   90,   91,  197,
+      761,   13,   14,   13,   33,   40,  101,   90,   91,  197,
        89,   34,   35,   13,   14,   13,   93,   15,   16,   94,
        17,   18,   19,   20,   21,   22,   22,   22,   22,   22,
        23,   24,   13,   14,   13,   89,   39,  102,   25,   26,
 
        13,   14,   13,   27,   39,   42,  105,   42,   28,   42,
       106,   42,   41,   29,  108,   30,  111,  112,   92,  134,
-       41,   25,   31,  102,  135,  452,   87,  136,   87,  105,
+       41,   25,   31,  102,  135,  455,   87,  136,   87,  105,
        32,   88,   88,   88,   88,   88,   33,  108,  106,  111,
-      844,  112,  453,   34,   35,   44,   44,   44,   45,   45,
+      847,  112,  456,   34,   35,   44,   44,   44,   45,   45,
        46,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   47,   45,   45,
        48,   49,   50,   45,   51,   52,   53,   45,   45,   45,
@@ -1392,142 +1398,142 @@ static const flex_int16_t yy_nxt[2321] =
        58,   45,   59,   60,   61,   62,   63,   64,   65,   51,
 
        66,   67,   68,   69,   70,   71,   72,   73,   74,   75,
-       76,   77,   56,   45,   45,   45,   45,   45,   79,  845,
+       76,   77,   56,   45,   45,   45,   45,   45,   79,  848,
        80,   80,   80,   80,   80,   79,  102,   82,   82,   82,
        82,   82,  204,   81,   83,   83,   83,   83,   83,   79,
        81,   82,   82,   82,   82,   82,  105,   81,  118,  164,
       109,  129,  116,  165,   81,  204,   81,  201,  117,  119,
       110,  130,  120,   81,  121,  132,  122,  198,  184,  105,
-       81,  185,  133,  109,  846,  211,  847,   81,   45,  212,
+       81,  185,  133,  109,  849,  233,  404,   81,   45,  405,
       131,   45,   45,   45,  201,   45,   45,   45,  110,  114,
-      137,  848,   45,   45,  184,   45,   45,  185,  199,  184,
+      137,  234,   45,   45,  184,   45,   45,  185,  199,  184,
 
       138,   45,  139,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,  123,  187,   45,  124,  125,  185,
-       45,  126,  127,  145,   45,  141,  142,  146,  293,  143,
-      108,  147,   45,  849,  128,  144,   45,  186,   45,  115,
-      153,  186,  294,  148,  111,  188,  196,  149,  154,  150,
-      155,  151,  850,  152,  158,  156,  157,  159,  160,  166,
-      173,  174,  227,  167,  228,  186,  168,  111,  161,  189,
-      109,  162,  196,  169,  170,  203,  250,  180,  171,  172,
-      110,  229,  181,   83,   83,   83,   83,   83,   88,   88,
-
-       88,   88,   88,  175,  241,  176,   81,  251,  177,  178,
+       45,  126,  127,  145,   45,  141,  142,  146,  294,  143,
+      108,  147,   45,  850,  128,  144,   45,  186,   45,  115,
+      153,  186,  295,  148,  111,  188,  196,  149,  154,  150,
+      155,  151,  851,  152,  158,  156,  157,  159,  160,  166,
+      173,  174,  228,  167,  229,  186,  168,  111,  161,  189,
+      109,  162,  196,  169,  170,  203,  251,  180,  171,  172,
+      110,  230,  181,   83,   83,   83,   83,   83,   88,   88,
+
+       88,   88,   88,  175,  242,  176,   81,  252,  177,  178,
       100,   79,  203,   80,   80,   80,   80,   80,  110,   83,
-       83,   83,   83,   83,   99,  179,   81,  851,   87,   81,
+       83,   83,   83,   83,   99,  179,   81,  852,   87,   81,
        87,   99,   81,   88,   88,   88,   88,   88,   79,  193,
-       82,   82,   82,   82,   82,  200,  202,  101,  242,   81,
-      232,  193,  852,   81,  214,   81,   88,   88,   88,   88,
-       88,   99,  230,  215,  216,   99,  233,  193,  208,   99,
-      221,  222,  503,  200,  202,  231,   81,   99,  200,  209,
-      223,   99,  504,   99,  192,  207,  207,  207,  207,  207,
-      277,  732,  733,  264,  207,  207,  207,  207,  207,  207,
-
-      236,  270,  201,  237,  271,  272,  258,  238,  265,  266,
-      267,  274,  308,  307,  306,  275,  306,  207,  207,  207,
-      207,  207,  207,  307,  287,  278,  279,  280,  288,  298,
-      308,  314,  289,  316,  319,  308,  281,  317,  282,  307,
-      283,  284,  306,  285,  309,  321,  323,  314,  370,  310,
-      383,  434,  333,  311,  314,  402,  319,  319,  403,  411,
-      334,  316,  320,  438,  317,  335,  336,  422,  321,  430,
-      326,  430,  412,  323,  324,  324,  324,  324,  324,  379,
-      434,  517,  436,  324,  324,  324,  324,  324,  324,  434,
-      455,  438,  430,  461,  431,  456,  803,  476,  853,  462,
-
-      384,  371,  477,  438,  372,  436,  324,  324,  324,  324,
-      324,  324,  441,  441,  441,  441,  441,  551,  442,  803,
-      552,  441,  441,  441,  441,  441,  441,  491,  492,  493,
-      498,  505,  563,  494,  521,  558,  499,  530,  522,  518,
-      559,  531,  563,  854,  441,  441,  441,  441,  441,  441,
-      478,  567,  535,  568,  582,  479,  536,  622,  590,  687,
-      563,  688,  583,  600,  584,  585,  586,  623,  601,  659,
-      569,  591,  686,  855,  660,  792,  802,  689,  567,  856,
-      568,   45,   45,   45,   45,   45,  687,  793,  857,  688,
-       45,   45,   45,   45,   45,   45,  765,  809,  810,  830,
-
-      811,  766,  858,  831,  802,  859,  860,  832,  861,  862,
-      863,  864,  865,   45,   45,   45,   45,   45,   45,  866,
-      867,  868,  869,  870,  871,  872,  873,  874,  875,  876,
+       82,   82,   82,   82,   82,  200,  202,  101,  243,   81,
+      200,  193,  853,   81,  215,   81,   88,   88,   88,   88,
+       88,   99,  211,  216,  217,   99,  275,  193,  208,   99,
+      276,  212,  506,  200,  202,  213,   81,   99,  259,  209,
+      231,   99,  507,   99,  192,  207,  207,  207,  207,  207,
+      222,  223,  278,  232,  207,  207,  207,  207,  207,  207,
+
+      224,  237,  271,  288,  238,  272,  273,  289,  239,  265,
+      201,  290,  309,  307,  854,  372,  307,  207,  207,  207,
+      207,  207,  207,  308,  266,  267,  268,  279,  280,  281,
+      308,  309,  315,  317,  320,  309,  318,  299,  282,  322,
+      283,  307,  284,  285,  310,  286,  324,  315,  385,  308,
+      855,  335,  856,  413,  312,  315,  311,  320,  320,  336,
+      436,  317,  322,  318,  337,  338,  414,  321,  373,  432,
+      327,  374,  424,  324,  325,  325,  325,  325,  325,  432,
+      438,  381,  857,  325,  325,  325,  325,  325,  325,  436,
+      440,  458,  432,  464,  501,  436,  459,  440,  386,  465,
+
+      502,  520,  433,  438,  858,  626,  325,  325,  325,  325,
+      325,  325,  479,  554,  594,  627,  555,  480,  440,  443,
+      443,  443,  443,  443,  444,  508,  859,  595,  443,  443,
+      443,  443,  443,  443,  494,  495,  496,  524,  533,  538,
+      497,  525,  534,  539,  561,  566,  566,  860,  570,  562,
+      571,  443,  443,  443,  443,  443,  443,  604,  663,  521,
+      798,  690,  605,  664,  861,  481,  693,  691,  862,  694,
+      482,  692,  799,  566,  572,  570,  695,  571,   45,   45,
+       45,   45,   45,  738,  739,  586,  809,   45,   45,   45,
+       45,   45,   45,  587,  691,  588,  589,  590,  771,  692,
+
+      808,  817,  818,  772,  819,  863,  864,  865,  868,  809,
+       45,   45,   45,   45,   45,   45,  838,  869,  866,  870,
+      839,  867,  871,  872,  840,  873,  874,  875,  808,  876,
       877,  878,  879,  880,  881,  882,  883,  884,  885,  886,
-      767,  887,  888,  889,  890,  891,  892,  893,  894,  895,
-      896,  897,  898,  899,  900,  902,  903,  906,  907,  908,
-      910,  901,  911,  904,  912,  909,  913,  905,  914,  915,
-      916,  917,  918,  919,  920,  921,  922,  923,  924,  925,
+      887,  888,  773,  889,  890,  891,  892,  893,  894,  895,
+      896,  897,  898,  899,  900,  901,  902,  903,  904,  905,
+      906,  907,  908,  910,  911,  914,  915,  916,  918,  909,
+      919,  912,  920,  917,  921,  913,  922,  923,  924,  925,
       926,  927,  928,  929,  930,  931,  932,  933,  934,  935,
       936,  937,  938,  939,  940,  941,  942,  943,  944,  945,
 
-      946,  947,  948,  949,  922,  950,  951,  952,  953,  954,
-      955,  956,  957,  958,  959,  960,  962,  963,  964,  965,
-      961,  966,  967,  968,  969,  970,  971,  972,  973,  974,
-      975,  976,  977,  978,  979,  980,  981,  982,  983,  984,
-      986,  987,  988,  985,  989,  990,  991,  992,  993,  994,
-      995,  996,  997,  998,  999, 1000, 1001, 1002, 1003, 1004,
+      946,  947,  948,  949,  950,  951,  952,  953,  954,  955,
+      956,  957,  930,  958,  959,  960,  961,  962,  963,  964,
+      965,  966,  967,  968,  969,  970,  972,  973,  974,  975,
+      971,  976,  977,  978,  979,  980,  981,  982,  983,  984,
+      985,  986,  987,  988,  989,  990,  991,  992,  993,  994,
+      996,  997,  998,  995,  999, 1000, 1001, 1002, 1003, 1004,
      1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014,
-     1015, 1016, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025,
-     1026, 1027, 1028, 1017, 1029, 1030, 1031, 1032, 1033, 1034,
-     1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044,
+     1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024,
+     1025, 1026, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035,
+     1036, 1037, 1038, 1027, 1039, 1040, 1041, 1042, 1043, 1044,
 
      1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054,
-     1055, 1056, 1057, 1035, 1058, 1059, 1034, 1060, 1061, 1062,
-     1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072,
-     1073, 1074, 1075, 1078, 1079, 1080, 1081, 1076, 1082, 1083,
-     1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093,
-     1094, 1095, 1096, 1097, 1098, 1099, 1101, 1102, 1103, 1104,
-     1105, 1106, 1107, 1108, 1109, 1110, 1100, 1111, 1112, 1113,
-     1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123,
+     1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064,
+     1065, 1066, 1067, 1045, 1068, 1069, 1044, 1070, 1071, 1072,
+     1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082,
+     1083, 1084, 1085, 1086, 1087, 1090, 1091, 1092, 1093, 1088,
+     1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103,
+     1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1113, 1114,
+     1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1112, 1123,
      1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133,
-     1077, 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1143,
-
-     1142, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152,
-     1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162,
-     1163, 1164, 1165, 1166, 1167, 1168, 1141, 1142, 1169, 1170,
-     1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180,
-     1181, 1182, 1184, 1186, 1187, 1188, 1183, 1189, 1190, 1191,
-     1192, 1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201,
+     1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143,
+
+     1144, 1145, 1089, 1146, 1147, 1148, 1149, 1150, 1151, 1152,
+     1153, 1155, 1154, 1156, 1157, 1158, 1159, 1160, 1161, 1162,
+     1163, 1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172,
+     1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1153, 1154,
+     1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190,
+     1191, 1192, 1193, 1194, 1195, 1197, 1199, 1200, 1201, 1196,
      1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211,
      1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221,
-     1222, 1223, 1224, 1225, 1226, 1227, 1185, 1228, 1229, 1230,
-     1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240,
+     1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231,
+     1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1198,
 
      1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250,
      1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1259, 1260,
-     1261, 1262, 1263, 1264, 1265, 1266, 1244, 1267, 1268, 1269,
-     1270, 1271, 1245, 1272, 1273, 1274, 1275, 1276, 1277, 1278,
-     1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288,
+     1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268, 1269, 1270,
+     1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1257,
+     1280, 1281, 1282, 1283, 1284, 1258, 1285, 1286, 1287, 1288,
      1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297, 1298,
      1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308,
-     1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1318, 1319,
-     1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329,
-     1330, 1331, 1332, 1333, 1334, 1335, 1336, 1338, 1339, 1340,
-
-     1341, 1342, 1343, 1344, 1345, 1346, 1347, 1348, 1349, 1350,
-     1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360,
-     1361, 1333, 1362, 1363, 1364, 1365, 1366, 1367, 1368, 1369,
-     1317, 1370, 1371, 1372, 1373, 1374, 1375, 1377, 1378, 1379,
-     1337, 1380, 1381, 1382, 1376, 1383, 1384, 1385, 1386, 1387,
-     1388, 1389, 1390, 1391, 1392, 1393, 1394, 1395, 1396, 1397,
+     1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318,
+     1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328,
+     1329, 1330, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339,
+
+     1340, 1341, 1342, 1343, 1344, 1345, 1346, 1347, 1348, 1349,
+     1350, 1351, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360,
+     1361, 1362, 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1370,
+     1371, 1372, 1373, 1374, 1375, 1347, 1376, 1377, 1378, 1379,
+     1380, 1381, 1382, 1383, 1331, 1384, 1385, 1386, 1387, 1388,
+     1389, 1390, 1392, 1393, 1394, 1352, 1395, 1396, 1397, 1391,
      1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407,
      1408, 1409, 1410, 1411, 1412, 1413, 1414, 1415, 1416, 1417,
      1418, 1419, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427,
-     1428, 1429, 1430, 1431, 1432, 1433, 1434, 1412, 1435, 1436,
+     1428, 1429, 1430, 1431, 1432, 1433, 1434, 1435, 1436, 1437,
 
-     1437, 1438, 1439, 1440, 1441, 1442, 1443, 1444, 1445, 1446,
-     1447, 1448, 1449, 1450, 1451, 1452, 1453, 1454, 1455, 1456,
+     1438, 1439, 1440, 1441, 1442, 1443, 1444, 1445, 1446, 1447,
+     1448, 1449, 1427, 1450, 1451, 1452, 1453, 1454, 1455, 1456,
      1457, 1458, 1459, 1460, 1461, 1462, 1463, 1464, 1465, 1466,
      1467, 1468, 1469, 1470, 1471, 1472, 1473, 1474, 1475, 1476,
      1477, 1478, 1479, 1480, 1481, 1482, 1483, 1484, 1485, 1486,
-     1487, 1488, 1490, 1491, 1492, 1493, 1494, 1495, 1496, 1497,
-     1498, 1499, 1489, 1500, 1501, 1502, 1503, 1477, 1504, 1505,
-     1506, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516,
-     1517, 1518, 1519, 1520, 1521, 1522, 1523, 1524, 1525, 1526,
+     1487, 1488, 1489, 1490, 1491, 1492, 1493, 1494, 1495, 1496,
+     1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1507,
+     1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1506,
+     1517, 1518, 1519, 1493, 1520, 1521, 1522, 1523, 1525, 1526,
      1527, 1528, 1529, 1530, 1531, 1532, 1533, 1534, 1535, 1536,
 
      1537, 1538, 1539, 1540, 1541, 1542, 1543, 1544, 1545, 1546,
-     1547, 1548, 1549, 1550, 1551, 1552, 1553, 1554, 1555, 1557,
-     1558, 1559, 1560, 1556, 1561, 1562, 1563, 1564, 1507, 1565,
-     1566, 1567, 1541, 1568, 1569, 1570, 1571, 1572, 1573, 1574,
-     1575, 1576, 1577, 1578, 1579, 1580, 1581, 1582, 1583, 1584,
+     1547, 1548, 1549, 1550, 1551, 1552, 1553, 1554, 1555, 1556,
+     1557, 1558, 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1566,
+     1567, 1568, 1569, 1570, 1571, 1572, 1573, 1575, 1576, 1577,
+     1578, 1574, 1579, 1580, 1581, 1524, 1582, 1583, 1584, 1558,
      1585, 1586, 1587, 1588, 1589, 1590, 1591, 1592, 1593, 1594,
      1595, 1596, 1597, 1598, 1599, 1600, 1601, 1602, 1603, 1604,
      1605, 1606, 1607, 1608, 1609, 1610, 1611, 1612, 1613, 1614,
@@ -1553,97 +1559,99 @@ static const flex_int16_t yy_nxt[2321] =
      1785, 1786, 1787, 1788, 1789, 1790, 1791, 1792, 1793, 1794,
      1795, 1796, 1797, 1798, 1799, 1800, 1801, 1802, 1803, 1804,
      1805, 1806, 1807, 1808, 1809, 1810, 1811, 1812, 1813, 1814,
-     1815, 1816, 1817, 1818, 1819, 1820, 1821, 1822, 1823, 1825,
-     1824, 1826, 1827, 1828, 1829, 1830, 1831, 1832, 1833, 1834,
-
-     1835, 1836, 1837, 1838, 1839, 1840, 1841, 1842, 1843,   12,
-       12,   12,   12,   12,   36,   36,   36,   36,   36,   78,
-      313,   78,   78,   78,   97,  433,   97,  562,   97,   99,
-       99,   99,   99,   99,  113,  113,  113,  113,  113,  183,
-       99,  183,  183,  183,  205,  205,  205,  843,  842,  841,
-      840,  839,  838,  837,  836,  835,  834,  833,  829,  828,
-      827,  826,  825,  824,  823,  822,  821,  820,  819,  818,
-      817,  816,  815,  814,  813,  812,  808,  807,  806,  805,
-      804,  801,  800,  799,  798,  797,  796,  795,  794,  791,
-      790,  789,  788,  787,  786,  785,  784,  783,  782,  781,
-
-      780,  779,  778,  777,  776,  775,  774,  773,  772,  771,
-      770,  769,  768,  764,  763,  762,  761,  760,  759,  758,
-      757,  756,  753,  752,  751,  750,  749,  748,  747,  746,
-      745,  744,  743,  742,  741,  740,  739,  738,  737,  736,
-      735,  734,  731,  730,  729,  728,  727,  726,  725,  724,
-      723,  722,  721,  720,  719,  718,  717,  716,  715,  714,
-      713,  712,  711,  710,  709,  708,  707,  706,  705,  704,
-      703,  702,  701,  700,  699,  698,  697,  696,  695,  694,
-      693,  692,  691,  690,  686,  685,  684,  683,  682,  681,
-      680,  679,  678,  677,  676,  675,  674,  673,  672,  671,
-
-      670,  669,  668,  667,  666,  665,  664,  663,  662,  661,
-      658,  657,  656,  655,  654,  653,  652,  651,  650,  649,
-      648,  647,  646,  645,  644,  643,  642,  641,  640,  639,
-      638,  637,  636,  635,  634,  633,  632,  631,  630,  629,
-      628,  627,  626,  625,  624,  621,  620,  619,  618,  617,
-      616,  615,  614,  613,  612,  611,  610,  609,  608,  607,
-      606,  605,  604,  603,  602,  599,  598,  597,  596,  595,
-      594,  593,  592,  589,  588,  587,  581,  580,  579,  578,
-      577,  576,  575,  574,  573,  572,  571,  570,  566,  565,
-      564,  561,  560,  557,  556,  555,  554,  553,  550,  549,
-
-      548,  547,  546,  545,  544,  543,  542,  541,  540,  539,
-      538,  537,  534,  533,  532,  529,  528,  527,  526,  525,
-      524,  523,  520,  519,  516,  515,  514,  513,  512,  511,
-      510,  509,  508,  507,  506,  502,  501,  500,  497,  496,
-      495,  490,  489,  488,  487,  486,  485,  484,  483,  482,
-      481,  480,  475,  474,  473,  472,  471,  470,  469,  468,
-      467,  466,  465,  464,  463,  460,  459,  458,  457,  454,
-      451,  450,  449,  448,  447,  446,  445,  444,  443,  440,
-      439,  437,  435,  432,  429,  428,  427,  426,  425,  424,
-      423,  421,  420,  419,  418,  417,  416,  415,  414,  413,
-
-      410,  409,  408,  407,  406,  405,  404,  401,  400,  399,
-      398,  397,  396,  395,  394,  393,  392,  391,  390,  389,
-      388,  387,  386,  385,  382,  381,  380,  378,  377,  376,
-      375,  374,  373,  369,  368,  367,  366,  365,  364,  363,
-      362,  361,  360,  359,  358,  357,  356,  355,  354,  353,
-      352,  351,  350,  349,  348,  347,  346,  345,  344,  343,
-      342,  341,  340,  339,  338,  337,  332,  331,  330,  329,
-      328,  327,  325,  206,  322,  320,  318,  315,  312,  305,
-      304,  303,  302,  301,  300,  299,  297,  296,  295,  292,
-      291,  290,  286,  276,  273,  269,  268,  263,  262,  261,
-
-      260,  259,  257,  256,  255,  254,  253,  252,  249,  248,
-      247,  246,  245,  244,  243,  240,  239,  235,  234,  226,
-      225,  224,  220,  219,  218,  217,  213,  210,  206,  195,
-      194,  191,  190,  182,  163,  140,  107,  104,  103,   43,
-       98,   96,   95,   86,   43, 1844,   11, 1844, 1844, 1844,
-     1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844,
-     1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844,
-     1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844,
-     1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844,
-     1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844,
-
-     1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844,
-     1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844
+     1815, 1816, 1817, 1818, 1819, 1820, 1821, 1822, 1823, 1824,
+     1825, 1826, 1827, 1828, 1829, 1830, 1831, 1832, 1833, 1834,
+
+     1835, 1836, 1837, 1838, 1839, 1840, 1841, 1843, 1842, 1844,
+     1845, 1846, 1847, 1848, 1849, 1850, 1851, 1852, 1853, 1854,
+     1855, 1856, 1857, 1858, 1859, 1860, 1861,   12,   12,   12,
+       12,   12,   36,   36,   36,   36,   36,   78,  314,   78,
+       78,   78,   97,  435,   97,  565,   97,   99,   99,   99,
+       99,   99,  113,  113,  113,  113,  113,  183,   99,  183,
+      183,  183,  205,  205,  205,  846,  845,  844,  843,  842,
+      841,  837,  836,  835,  834,  833,  832,  831,  830,  829,
+      828,  827,  826,  825,  824,  823,  822,  821,  820,  816,
+      815,  814,  813,  812,  811,  810,  807,  806,  805,  804,
+
+      803,  802,  801,  800,  797,  796,  795,  794,  793,  792,
+      791,  790,  789,  788,  787,  786,  785,  784,  783,  782,
+      781,  780,  779,  778,  777,  776,  775,  774,  770,  769,
+      768,  767,  766,  765,  764,  763,  762,  759,  758,  757,
+      756,  755,  754,  753,  752,  751,  750,  749,  748,  747,
+      746,  745,  744,  743,  742,  741,  740,  737,  736,  735,
+      734,  733,  732,  731,  730,  729,  728,  727,  726,  725,
+      724,  723,  722,  721,  720,  719,  718,  717,  716,  715,
+      714,  713,  712,  711,  710,  709,  708,  707,  706,  705,
+      704,  703,  702,  701,  700,  699,  698,  697,  696,  690,
+
+      689,  688,  687,  686,  685,  684,  683,  682,  681,  680,
+      679,  678,  677,  676,  675,  674,  673,  672,  671,  670,
+      669,  668,  667,  666,  665,  662,  661,  660,  659,  658,
+      657,  656,  655,  654,  653,  652,  651,  650,  649,  648,
+      647,  646,  645,  644,  643,  642,  641,  640,  639,  638,
+      637,  636,  635,  634,  633,  632,  631,  630,  629,  628,
+      625,  624,  623,  622,  621,  620,  619,  618,  617,  616,
+      615,  614,  613,  612,  611,  610,  609,  608,  607,  606,
+      603,  602,  601,  600,  599,  598,  597,  596,  593,  592,
+      591,  585,  584,  583,  582,  581,  580,  579,  578,  577,
+
+      576,  575,  574,  573,  569,  568,  567,  564,  563,  560,
+      559,  558,  557,  556,  553,  552,  551,  550,  549,  548,
+      547,  546,  545,  544,  543,  542,  541,  540,  537,  536,
+      535,  532,  531,  530,  529,  528,  527,  526,  523,  522,
+      519,  518,  517,  516,  515,  514,  513,  512,  511,  510,
+      509,  505,  504,  503,  500,  499,  498,  493,  492,  491,
+      490,  489,  488,  487,  486,  485,  484,  483,  478,  477,
+      476,  475,  474,  473,  472,  471,  470,  469,  468,  467,
+      466,  463,  462,  461,  460,  457,  454,  453,  452,  451,
+      450,  449,  448,  447,  446,  445,  442,  441,  439,  437,
+
+      434,  431,  430,  429,  428,  427,  426,  425,  423,  422,
+      421,  420,  419,  418,  417,  416,  415,  412,  411,  410,
+      409,  408,  407,  406,  403,  402,  401,  400,  399,  398,
+      397,  396,  395,  394,  393,  392,  391,  390,  389,  388,
+      387,  384,  383,  382,  380,  379,  378,  377,  376,  375,
+      371,  370,  369,  368,  367,  366,  365,  364,  363,  362,
+      361,  360,  359,  358,  357,  356,  355,  354,  353,  352,
+      351,  350,  349,  348,  347,  346,  345,  344,  343,  342,
+      341,  340,  339,  334,  333,  332,  331,  330,  329,  328,
+      326,  206,  323,  321,  319,  316,  313,  306,  305,  304,
+
+      303,  302,  301,  300,  298,  297,  296,  293,  292,  291,
+      287,  277,  274,  270,  269,  264,  263,  262,  261,  260,
+      258,  257,  256,  255,  254,  253,  250,  249,  248,  247,
+      246,  245,  244,  241,  240,  236,  235,  227,  226,  225,
+      221,  220,  219,  218,  214,  210,  206,  195,  194,  191,
+      190,  182,  163,  140,  107,  104,  103,   43,   98,   96,
+       95,   86,   43, 1862,   11, 1862, 1862, 1862, 1862, 1862,
+     1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862,
+     1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862,
+     1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862,
+
+     1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862,
+     1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862,
+     1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862,
+     1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862
     } ;
 
-static const flex_int16_t yy_chk[2321] =
+static const flex_int16_t yy_chk[2339] =
     {   0,
         0,    1,    1,    1,    0,    1,    1,    0,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-       21,  638,    3,    3,    3,   21,    1,    1,    3,   44,
+       21,  642,    3,    3,    3,   21,    1,    1,    3,   44,
         0,    1,    4,    4,    4,   13,    1,   13,    4,   27,
        28,    1,  106,    1,    5,    5,    5,   26,   32,    1,
         1,   33,    6,    6,    6,    7,    7,    7,    1,    7,
-      638,    8,    8,    8,    1,    8,   44,   27,   28,  106,
+      642,    8,    8,    8,    1,    8,   44,   27,   28,  106,
        26,    1,    1,    2,    2,    2,   32,    2,    2,   33,
         2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
         2,    2,    9,    9,    9,   31,    5,   47,    2,    2,
 
        10,   10,   10,    2,    6,   37,   50,   37,    2,   42,
        51,   42,    9,    2,   53,    2,   55,   56,   31,   64,
-       10,    2,    2,   47,   64,  336,   25,   64,   25,   50,
+       10,    2,    2,   47,   64,  338,   25,   64,   25,   50,
         2,   25,   25,   25,   25,   25,    2,   53,   51,   55,
-      726,   56,  336,    2,    2,   15,   15,   15,   15,   15,
+      726,   56,  338,    2,    2,   15,   15,   15,   15,   15,
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
@@ -1651,238 +1659,240 @@ static const flex_int16_t yy_chk[2321] =
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
 
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
-       15,   15,   15,   15,   15,   15,   15,   15,   17,  727,
+       15,   15,   15,   15,   15,   15,   15,   15,   17,  728,
        17,   17,   17,   17,   17,   19,   58,   19,   19,   19,
        19,   19,  112,   17,   20,   20,   20,   20,   20,   22,
        19,   22,   22,   22,   22,   22,   62,   20,   59,   73,
        54,   61,   58,   73,   22,  112,   17,  109,   58,   59,
        54,   61,   59,   19,   59,   63,   59,  107,   89,   62,
-       20,   90,   63,   54,  728,  118,  729,   22,   45,  118,
+       20,   90,   63,   54,  729,  131,  281,   22,   45,  281,
        62,   45,   45,   45,  109,   45,   45,   45,   54,   57,
-       65,  730,   45,   45,   89,   45,   57,   90,  107,   92,
+       65,  131,   45,   45,   89,   45,   57,   90,  107,   92,
 
        65,   45,   65,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   60,   92,   57,   60,   60,   93,
        57,   60,   60,   68,   57,   67,   67,   68,  171,   67,
-       69,   68,   57,  731,   60,   67,   57,   91,   57,   57,
+       69,   68,   57,  730,   60,   67,   57,   91,   57,   57,
        70,   94,  171,   68,   76,   93,  105,   68,   70,   69,
-       70,   69,  732,   69,   71,   70,   70,   71,   71,   74,
+       70,   69,  731,   69,   71,   70,   70,   71,   71,   74,
        75,   75,  129,   74,  129,   91,   74,   76,   71,   94,
        75,   71,  105,   74,   74,  111,  145,   76,   74,   74,
        75,  129,   76,   79,   79,   79,   79,   79,   87,   87,
 
        87,   87,   87,   75,  137,   75,   79,  145,   75,   75,
        99,   80,  111,   80,   80,   80,   80,   80,   75,   83,
-       83,   83,   83,   83,  101,   75,   80,  733,   81,   79,
+       83,   83,   83,   83,  101,   75,   80,  732,   81,   79,
        81,  101,   83,   81,   81,   81,   81,   81,   82,  102,
        82,   82,   82,   82,   82,  108,  110,   99,  137,   80,
-      131,  116,  734,   82,  120,   83,   88,   88,   88,   88,
-       88,  101,  130,  120,  120,  101,  131,  102,  116,  101,
-      125,  125,  378,  108,  110,  130,   82,  101,  152,  116,
-      125,  101,  378,  101,  101,  115,  115,  115,  115,  115,
-      165,  615,  615,  158,  115,  115,  115,  115,  115,  115,
-
-      134,  161,  175,  134,  161,  161,  152,  134,  158,  158,
-      158,  163,  186,  185,  184,  163,  187,  115,  115,  115,
-      115,  115,  115,  188,  167,  165,  165,  165,  167,  175,
-      189,  193,  167,  196,  200,  186,  165,  197,  165,  185,
-      165,  165,  184,  165,  187,  202,  204,  209,  251,  188,
-      262,  314,  216,  189,  193,  280,  258,  200,  280,  288,
-      216,  196,  298,  319,  197,  216,  216,  298,  202,  306,
-      209,  309,  288,  204,  207,  207,  207,  207,  207,  258,
-      314,  392,  316,  207,  207,  207,  207,  207,  207,  326,
-      339,  319,  306,  344,  309,  339,  688,  358,  735,  344,
-
-      262,  251,  358,  379,  251,  316,  207,  207,  207,  207,
-      207,  207,  324,  324,  324,  324,  324,  422,  326,  688,
-      422,  324,  324,  324,  324,  324,  324,  370,  370,  370,
-      374,  379,  434,  370,  395,  428,  374,  403,  395,  392,
-      428,  403,  442,  736,  324,  324,  324,  324,  324,  324,
-      358,  440,  407,  440,  457,  358,  407,  493,  461,  567,
-      434,  568,  457,  471,  457,  457,  457,  493,  471,  532,
-      442,  461,  569,  737,  532,  676,  687,  569,  440,  738,
-      440,  441,  441,  441,  441,  441,  567,  676,  739,  568,
-      441,  441,  441,  441,  441,  441,  649,  694,  694,  713,
-
-      694,  649,  740,  713,  687,  740,  741,  713,  742,  743,
-      745,  746,  747,  441,  441,  441,  441,  441,  441,  748,
-      749,  750,  751,  752,  753,  755,  756,  757,  758,  759,
-      760,  761,  762,  763,  764,  766,  767,  768,  769,  770,
-      649,  771,  772,  773,  774,  775,  776,  777,  778,  779,
-      780,  781,  782,  783,  784,  785,  786,  787,  788,  789,
-      790,  784,  791,  786,  793,  789,  794,  786,  795,  796,
-      797,  798,  799,  800,  801,  802,  803,  804,  805,  806,
-      807,  809,  810,  811,  812,  813,  814,  815,  816,  817,
-      818,  819,  820,  821,  822,  823,  824,  825,  826,  827,
-
-      828,  829,  830,  831,  803,  832,  833,  834,  835,  836,
-      838,  839,  840,  841,  842,  843,  844,  845,  846,  847,
-      843,  848,  849,  850,  851,  852,  855,  856,  857,  858,
-      859,  860,  861,  864,  865,  866,  867,  868,  869,  870,
-      871,  872,  873,  870,  874,  875,  876,  878,  880,  881,
-      882,  883,  884,  885,  886,  887,  888,  889,  890,  891,
-      892,  893,  894,  895,  896,  897,  898,  899,  900,  901,
-      902,  903,  904,  905,  906,  907,  908,  909,  910,  911,
-      913,  914,  915,  903,  916,  917,  918,  919,  920,  921,
-      922,  923,  924,  926,  927,  928,  929,  930,  931,  932,
-
-      933,  934,  935,  936,  937,  938,  939,  940,  941,  942,
-      943,  944,  945,  922,  946,  948,  921,  949,  950,  951,
-      952,  953,  954,  955,  956,  957,  958,  959,  961,  962,
-      963,  964,  965,  966,  968,  969,  970,  965,  971,  972,
-      973,  974,  975,  976,  977,  978,  979,  980,  981,  982,
-      983,  984,  985,  986,  987,  988,  989,  990,  993,  994,
-      995,  997,  998,  999, 1000, 1002,  988, 1003, 1004, 1005,
-     1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015,
-     1016, 1017, 1018, 1019, 1021, 1022, 1023, 1024, 1025, 1026,
-      965, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1036,
-
-     1035, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045,
-     1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055,
-     1057, 1058, 1059, 1060, 1061, 1062, 1034, 1035, 1063, 1064,
-     1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074,
-     1076, 1077, 1078, 1079, 1080, 1081, 1077, 1082, 1083, 1084,
-     1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094,
-     1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104,
-     1105, 1106, 1107, 1108, 1110, 1111, 1112, 1113, 1114, 1115,
-     1116, 1117, 1118, 1119, 1120, 1122, 1078, 1123, 1126, 1127,
-     1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137,
-
-     1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147,
-     1148, 1149, 1150, 1151, 1152, 1154, 1155, 1156, 1157, 1158,
-     1159, 1161, 1162, 1163, 1164, 1165, 1141, 1166, 1167, 1168,
-     1169, 1170, 1142, 1171, 1172, 1173, 1174, 1175, 1176, 1177,
-     1178, 1181, 1183, 1185, 1186, 1187, 1188, 1189, 1190, 1191,
-     1192, 1193, 1194, 1195, 1196, 1197, 1198, 1200, 1201, 1202,
-     1204, 1205, 1206, 1207, 1208, 1211, 1213, 1215, 1216, 1217,
-     1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227,
-     1228, 1229, 1231, 1232, 1233, 1234, 1235, 1238, 1239, 1240,
-     1241, 1242, 1243, 1244, 1245, 1247, 1248, 1249, 1250, 1251,
-
-     1252, 1254, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262,
-     1263, 1264, 1265, 1266, 1267, 1268, 1270, 1271, 1272, 1273,
-     1274, 1244, 1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282,
-     1225, 1283, 1284, 1285, 1287, 1288, 1289, 1290, 1291, 1292,
-     1248, 1293, 1294, 1295, 1289, 1296, 1297, 1300, 1301, 1302,
-     1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1313,
-     1314, 1315, 1316, 1317, 1318, 1320, 1322, 1325, 1326, 1327,
-     1329, 1330, 1331, 1332, 1333, 1335, 1337, 1338, 1339, 1340,
-     1341, 1342, 1343, 1344, 1345, 1346, 1347, 1348, 1349, 1350,
-     1351, 1352, 1354, 1356, 1357, 1358, 1359, 1333, 1360, 1361,
-
-     1362, 1363, 1364, 1365, 1366, 1368, 1371, 1373, 1374, 1375,
-     1376, 1377, 1378, 1379, 1380, 1381, 1382, 1384, 1385, 1386,
-     1387, 1388, 1389, 1390, 1393, 1394, 1396, 1397, 1398, 1399,
-     1400, 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1409, 1411,
-     1412, 1413, 1414, 1415, 1416, 1417, 1418, 1419, 1420, 1421,
-     1422, 1423, 1424, 1425, 1426, 1427, 1429, 1430, 1431, 1433,
-     1434, 1435, 1423, 1436, 1437, 1438, 1439, 1412, 1440, 1440,
-     1441, 1442, 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450,
-     1451, 1452, 1453, 1454, 1455, 1456, 1457, 1458, 1459, 1460,
-     1461, 1462, 1463, 1464, 1465, 1466, 1467, 1469, 1470, 1471,
-
-     1472, 1474, 1475, 1476, 1477, 1478, 1481, 1482, 1483, 1487,
-     1488, 1489, 1490, 1491, 1492, 1493, 1494, 1495, 1497, 1498,
-     1499, 1500, 1501, 1497, 1502, 1503, 1504, 1505, 1441, 1507,
-     1508, 1510, 1477, 1512, 1513, 1514, 1516, 1517, 1518, 1519,
-     1520, 1522, 1523, 1524, 1525, 1526, 1527, 1528, 1529, 1530,
-     1531, 1532, 1533, 1534, 1535, 1536, 1537, 1538, 1539, 1541,
-     1542, 1543, 1544, 1546, 1547, 1548, 1549, 1550, 1551, 1552,
-     1553, 1554, 1556, 1557, 1558, 1559, 1560, 1562, 1563, 1564,
-     1566, 1567, 1568, 1569, 1570, 1571, 1572, 1573, 1575, 1576,
-     1577, 1578, 1579, 1580, 1581, 1582, 1583, 1584, 1586, 1587,
-
-     1588, 1590, 1591, 1592, 1593, 1595, 1597, 1598, 1599, 1600,
-     1601, 1602, 1603, 1604, 1605, 1606, 1607, 1608, 1609, 1611,
-     1612, 1613, 1614, 1615, 1616, 1617, 1619, 1620, 1621, 1622,
-     1624, 1625, 1626, 1627, 1628, 1629, 1630, 1631, 1632, 1633,
-     1635, 1636, 1637, 1639, 1640, 1641, 1642, 1643, 1644, 1645,
-     1646, 1648, 1649, 1650, 1651, 1652, 1653, 1654, 1655, 1656,
-     1659, 1660, 1661, 1662, 1663, 1664, 1665, 1666, 1668, 1670,
-     1671, 1672, 1673, 1674, 1675, 1676, 1677, 1678, 1679, 1680,
-     1681, 1682, 1683, 1684, 1685, 1686, 1688, 1689, 1690, 1691,
-     1692, 1693, 1694, 1695, 1697, 1699, 1701, 1704, 1705, 1706,
-
-     1707, 1708, 1710, 1711, 1712, 1714, 1715, 1716, 1717, 1718,
-     1719, 1720, 1721, 1723, 1724, 1726, 1727, 1728, 1730, 1731,
-     1732, 1734, 1736, 1737, 1739, 1740, 1741, 1742, 1743, 1744,
-     1745, 1746, 1747, 1748, 1749, 1750, 1751, 1752, 1753, 1754,
-     1755, 1756, 1757, 1758, 1759, 1760, 1762, 1763, 1764, 1765,
-     1766, 1767, 1768, 1769, 1770, 1771, 1772, 1773, 1774, 1775,
-     1776, 1777, 1778, 1779, 1781, 1782, 1784, 1785, 1787, 1788,
-     1789, 1790, 1794, 1797, 1798, 1799, 1801, 1802, 1803, 1804,
-     1805, 1806, 1808, 1810, 1813, 1814, 1815, 1816, 1817, 1818,
-     1817, 1820, 1821, 1823, 1824, 1825, 1826, 1827, 1828, 1829,
-
-     1831, 1832, 1833, 1834, 1835, 1838, 1839, 1840, 1841, 1845,
-     1845, 1845, 1845, 1845, 1846, 1846, 1846, 1846, 1846, 1847,
-     1853, 1847, 1847, 1847, 1848, 1854, 1848, 1855, 1848, 1849,
-     1849, 1849, 1849, 1849, 1850, 1850, 1850, 1850, 1850, 1851,
-     1856, 1851, 1851, 1851, 1852, 1852, 1852,  725,  724,  723,
-      722,  720,  719,  718,  717,  716,  715,  714,  712,  711,
-      710,  709,  708,  707,  706,  705,  704,  703,  702,  701,
-      700,  699,  698,  697,  696,  695,  693,  692,  691,  690,
-      689,  684,  683,  682,  681,  680,  679,  678,  677,  675,
-      674,  672,  671,  670,  669,  668,  667,  666,  665,  664,
-
-      663,  662,  661,  660,  658,  657,  656,  655,  654,  653,
-      652,  651,  650,  648,  647,  645,  644,  643,  642,  641,
-      640,  639,  637,  636,  635,  633,  632,  630,  629,  628,
-      627,  626,  625,  624,  623,  622,  621,  620,  619,  618,
-      617,  616,  614,  613,  612,  611,  610,  608,  607,  606,
-      605,  604,  603,  602,  601,  599,  598,  597,  596,  595,
-      594,  593,  592,  591,  590,  589,  588,  587,  586,  585,
-      584,  583,  582,  581,  580,  579,  578,  577,  576,  575,
-      574,  573,  572,  571,  563,  561,  560,  559,  557,  554,
-      552,  551,  550,  549,  548,  547,  546,  545,  544,  543,
-
-      542,  541,  540,  539,  538,  537,  536,  535,  534,  533,
-      531,  530,  529,  528,  527,  526,  525,  524,  523,  522,
-      521,  520,  518,  516,  515,  514,  513,  512,  511,  510,
-      509,  508,  507,  506,  505,  504,  503,  501,  500,  499,
-      498,  497,  496,  495,  494,  492,  491,  490,  489,  488,
-      487,  486,  485,  484,  483,  482,  481,  480,  479,  478,
-      477,  475,  474,  473,  472,  470,  469,  468,  467,  466,
-      465,  463,  462,  460,  459,  458,  456,  454,  453,  452,
-      451,  450,  449,  448,  446,  445,  444,  443,  438,  436,
-      435,  432,  429,  427,  426,  425,  424,  423,  421,  420,
-
-      419,  418,  417,  416,  415,  414,  413,  412,  411,  410,
-      409,  408,  406,  405,  404,  402,  401,  400,  399,  398,
-      397,  396,  394,  393,  391,  390,  389,  388,  387,  386,
-      385,  384,  383,  382,  381,  377,  376,  375,  373,  372,
-      371,  369,  368,  367,  366,  365,  364,  363,  362,  361,
-      360,  359,  357,  356,  355,  354,  353,  352,  351,  350,
-      349,  348,  347,  346,  345,  343,  342,  341,  340,  338,
-      335,  334,  333,  332,  331,  330,  329,  328,  327,  323,
-      321,  317,  315,  312,  305,  304,  303,  302,  301,  300,
-      299,  297,  296,  295,  294,  293,  292,  291,  290,  289,
-
-      287,  286,  285,  284,  283,  282,  281,  279,  278,  277,
-      276,  275,  274,  273,  272,  271,  270,  269,  268,  267,
-      266,  265,  264,  263,  261,  260,  259,  257,  256,  255,
-      254,  253,  252,  250,  249,  248,  247,  246,  245,  244,
-      243,  242,  240,  239,  238,  237,  236,  235,  234,  233,
-      232,  231,  230,  229,  228,  227,  226,  225,  224,  223,
-      222,  221,  220,  219,  218,  217,  215,  214,  213,  212,
-      211,  210,  208,  205,  203,  201,  199,  194,  190,  182,
-      181,  180,  179,  178,  177,  176,  174,  173,  172,  170,
-      169,  168,  166,  164,  162,  160,  159,  157,  156,  155,
-
-      154,  153,  151,  150,  149,  148,  147,  146,  144,  143,
-      142,  141,  140,  139,  138,  136,  135,  133,  132,  128,
-      127,  126,  124,  123,  122,  121,  119,  117,  113,  104,
-      103,   97,   96,   77,   72,   66,   52,   49,   48,   43,
-       41,   39,   38,   24,   14,   11, 1844, 1844, 1844, 1844,
-     1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844,
-     1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844,
-     1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844,
-     1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844,
-     1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844,
-
-     1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844,
-     1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844
+      152,  116,  733,   82,  120,   83,   88,   88,   88,   88,
+       88,  101,  118,  120,  120,  101,  163,  102,  116,  101,
+      163,  118,  380,  108,  110,  118,   82,  101,  152,  116,
+      130,  101,  380,  101,  101,  115,  115,  115,  115,  115,
+      125,  125,  165,  130,  115,  115,  115,  115,  115,  115,
+
+      125,  134,  161,  167,  134,  161,  161,  167,  134,  158,
+      175,  167,  186,  184,  734,  252,  187,  115,  115,  115,
+      115,  115,  115,  185,  158,  158,  158,  165,  165,  165,
+      188,  189,  193,  196,  200,  186,  197,  175,  165,  202,
+      165,  184,  165,  165,  187,  165,  204,  209,  263,  185,
+      735,  217,  736,  289,  189,  193,  188,  200,  259,  217,
+      315,  196,  202,  197,  217,  217,  289,  299,  252,  307,
+      209,  252,  299,  204,  207,  207,  207,  207,  207,  310,
+      317,  259,  737,  207,  207,  207,  207,  207,  207,  315,
+      320,  341,  307,  346,  376,  327,  341,  381,  263,  346,
+
+      376,  394,  310,  317,  738,  496,  207,  207,  207,  207,
+      207,  207,  360,  424,  464,  496,  424,  360,  320,  325,
+      325,  325,  325,  325,  327,  381,  739,  464,  325,  325,
+      325,  325,  325,  325,  372,  372,  372,  397,  405,  409,
+      372,  397,  405,  409,  430,  436,  444,  740,  442,  430,
+      442,  325,  325,  325,  325,  325,  325,  474,  535,  394,
+      680,  572,  474,  535,  741,  360,  572,  570,  742,  574,
+      360,  571,  680,  436,  444,  442,  574,  442,  443,  443,
+      443,  443,  443,  619,  619,  460,  692,  443,  443,  443,
+      443,  443,  443,  460,  570,  460,  460,  460,  653,  571,
+
+      691,  700,  700,  653,  700,  743,  744,  745,  747,  692,
+      443,  443,  443,  443,  443,  443,  719,  748,  746,  749,
+      719,  746,  751,  752,  719,  753,  754,  755,  691,  756,
+      757,  758,  759,  761,  762,  763,  764,  765,  766,  767,
+      768,  769,  653,  770,  772,  773,  774,  775,  776,  777,
+      778,  779,  780,  781,  782,  783,  784,  785,  786,  787,
+      788,  789,  790,  791,  792,  793,  794,  795,  796,  790,
+      797,  792,  799,  795,  800,  792,  801,  802,  803,  804,
+      805,  806,  807,  808,  809,  810,  811,  812,  813,  814,
+      815,  817,  818,  819,  820,  821,  822,  823,  824,  825,
+
+      826,  827,  828,  829,  830,  831,  832,  833,  834,  835,
+      836,  837,  809,  838,  839,  840,  841,  842,  843,  844,
+      846,  847,  848,  849,  850,  851,  852,  853,  854,  855,
+      851,  856,  857,  858,  859,  860,  863,  864,  865,  866,
+      867,  868,  869,  872,  873,  874,  875,  876,  877,  878,
+      879,  880,  881,  878,  882,  883,  884,  886,  888,  889,
+      890,  891,  892,  893,  894,  895,  896,  897,  898,  899,
+      900,  901,  902,  903,  904,  905,  906,  907,  908,  909,
+      910,  911,  912,  913,  914,  915,  916,  917,  918,  919,
+      921,  922,  923,  911,  924,  925,  926,  927,  928,  929,
+
+      930,  931,  932,  933,  934,  936,  937,  938,  939,  940,
+      941,  942,  943,  944,  945,  946,  947,  948,  949,  950,
+      951,  952,  953,  930,  954,  955,  929,  956,  958,  959,
+      960,  961,  962,  963,  964,  965,  966,  967,  968,  969,
+      971,  972,  973,  974,  975,  976,  978,  979,  980,  975,
+      981,  982,  983,  984,  985,  986,  987,  988,  989,  990,
+      991,  992,  993,  994,  995,  996,  997,  998,  999, 1000,
+     1003, 1004, 1005, 1007, 1008, 1009, 1010, 1012,  998, 1013,
+     1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023,
+     1024, 1025, 1026, 1027, 1028, 1029, 1031, 1032, 1033, 1034,
+
+     1035, 1036,  975, 1037, 1038, 1039, 1040, 1041, 1042, 1043,
+     1044, 1046, 1045, 1048, 1049, 1050, 1051, 1052, 1053, 1054,
+     1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064,
+     1065, 1066, 1067, 1069, 1070, 1071, 1072, 1073, 1044, 1045,
+     1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083,
+     1084, 1085, 1086, 1088, 1089, 1090, 1091, 1092, 1093, 1089,
+     1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103,
+     1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113,
+     1114, 1115, 1116, 1117, 1118, 1119, 1120, 1122, 1123, 1124,
+     1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1134, 1090,
+
+     1135, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146,
+     1147, 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155, 1156,
+     1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1167,
+     1168, 1169, 1170, 1171, 1172, 1174, 1175, 1176, 1177, 1153,
+     1178, 1179, 1180, 1181, 1182, 1154, 1183, 1184, 1185, 1186,
+     1187, 1188, 1189, 1190, 1191, 1194, 1196, 1198, 1199, 1200,
+     1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210,
+     1211, 1213, 1214, 1215, 1217, 1218, 1219, 1220, 1221, 1224,
+     1226, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236,
+     1237, 1238, 1239, 1240, 1241, 1242, 1244, 1245, 1246, 1247,
+
+     1248, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1260,
+     1261, 1262, 1263, 1264, 1265, 1266, 1268, 1269, 1270, 1271,
+     1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281,
+     1282, 1284, 1285, 1286, 1287, 1257, 1288, 1289, 1290, 1291,
+     1292, 1293, 1294, 1295, 1238, 1296, 1297, 1298, 1299, 1301,
+     1302, 1303, 1304, 1305, 1306, 1262, 1307, 1308, 1309, 1303,
+     1310, 1311, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321,
+     1322, 1323, 1324, 1325, 1327, 1328, 1329, 1330, 1331, 1332,
+     1334, 1336, 1339, 1340, 1341, 1343, 1344, 1345, 1346, 1347,
+     1349, 1350, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359,
+
+     1360, 1361, 1362, 1363, 1364, 1365, 1366, 1367, 1369, 1371,
+     1372, 1373, 1347, 1374, 1375, 1376, 1377, 1378, 1379, 1380,
+     1381, 1383, 1386, 1388, 1389, 1390, 1391, 1392, 1393, 1394,
+     1395, 1396, 1397, 1399, 1400, 1401, 1402, 1403, 1404, 1405,
+     1408, 1409, 1411, 1412, 1413, 1414, 1415, 1417, 1418, 1419,
+     1420, 1421, 1422, 1423, 1424, 1426, 1427, 1428, 1429, 1430,
+     1431, 1432, 1433, 1434, 1435, 1436, 1437, 1438, 1439, 1440,
+     1441, 1442, 1443, 1445, 1446, 1447, 1449, 1450, 1451, 1439,
+     1452, 1453, 1454, 1427, 1455, 1456, 1456, 1457, 1458, 1459,
+     1460, 1461, 1462, 1463, 1464, 1465, 1466, 1467, 1468, 1469,
+
+     1470, 1471, 1472, 1473, 1474, 1475, 1476, 1477, 1478, 1479,
+     1480, 1481, 1482, 1483, 1485, 1486, 1487, 1488, 1490, 1491,
+     1492, 1493, 1494, 1495, 1498, 1499, 1500, 1504, 1505, 1506,
+     1507, 1508, 1509, 1510, 1511, 1512, 1514, 1515, 1516, 1517,
+     1518, 1514, 1519, 1520, 1521, 1457, 1522, 1524, 1525, 1493,
+     1527, 1529, 1530, 1531, 1533, 1534, 1535, 1536, 1537, 1539,
+     1540, 1541, 1542, 1543, 1544, 1545, 1546, 1547, 1548, 1549,
+     1550, 1551, 1552, 1553, 1554, 1555, 1556, 1558, 1560, 1561,
+     1562, 1564, 1565, 1566, 1567, 1568, 1569, 1570, 1571, 1572,
+     1574, 1575, 1576, 1577, 1578, 1580, 1581, 1582, 1584, 1585,
+
+     1586, 1587, 1588, 1589, 1590, 1591, 1593, 1594, 1595, 1596,
+     1597, 1598, 1599, 1600, 1601, 1602, 1604, 1605, 1606, 1608,
+     1609, 1610, 1611, 1613, 1615, 1616, 1617, 1618, 1619, 1620,
+     1621, 1622, 1623, 1624, 1625, 1626, 1627, 1629, 1630, 1631,
+     1632, 1633, 1634, 1635, 1637, 1638, 1639, 1640, 1642, 1643,
+     1644, 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1653, 1654,
+     1655, 1657, 1658, 1659, 1660, 1661, 1662, 1663, 1664, 1666,
+     1667, 1668, 1669, 1670, 1671, 1672, 1673, 1674, 1677, 1678,
+     1679, 1680, 1681, 1682, 1683, 1684, 1686, 1688, 1689, 1690,
+     1691, 1692, 1693, 1694, 1695, 1696, 1697, 1698, 1699, 1700,
+
+     1701, 1702, 1703, 1704, 1706, 1707, 1708, 1709, 1710, 1711,
+     1712, 1713, 1715, 1717, 1719, 1722, 1723, 1724, 1725, 1726,
+     1728, 1729, 1730, 1732, 1733, 1734, 1735, 1736, 1737, 1738,
+     1739, 1741, 1742, 1744, 1745, 1746, 1748, 1749, 1750, 1752,
+     1754, 1755, 1757, 1758, 1759, 1760, 1761, 1762, 1763, 1764,
+     1765, 1766, 1767, 1768, 1769, 1770, 1771, 1772, 1773, 1774,
+     1775, 1776, 1777, 1778, 1780, 1781, 1782, 1783, 1784, 1785,
+     1786, 1787, 1788, 1789, 1790, 1791, 1792, 1793, 1794, 1795,
+     1796, 1797, 1799, 1800, 1802, 1803, 1805, 1806, 1807, 1808,
+     1812, 1815, 1816, 1817, 1819, 1820, 1821, 1822, 1823, 1824,
+
+     1826, 1828, 1831, 1832, 1833, 1834, 1835, 1836, 1835, 1838,
+     1839, 1841, 1842, 1843, 1844, 1845, 1846, 1847, 1849, 1850,
+     1851, 1852, 1853, 1856, 1857, 1858, 1859, 1863, 1863, 1863,
+     1863, 1863, 1864, 1864, 1864, 1864, 1864, 1865, 1871, 1865,
+     1865, 1865, 1866, 1872, 1866, 1873, 1866, 1867, 1867, 1867,
+     1867, 1867, 1868, 1868, 1868, 1868, 1868, 1869, 1874, 1869,
+     1869, 1869, 1870, 1870, 1870,  725,  724,  723,  722,  721,
+      720,  718,  717,  716,  715,  714,  713,  712,  711,  710,
+      709,  708,  707,  706,  705,  704,  703,  702,  701,  699,
+      698,  697,  696,  695,  694,  693,  688,  687,  686,  685,
+
+      684,  683,  682,  681,  679,  678,  676,  675,  674,  673,
+      672,  671,  670,  669,  668,  667,  666,  665,  664,  662,
+      661,  660,  659,  658,  657,  656,  655,  654,  652,  651,
+      649,  648,  647,  646,  645,  644,  643,  641,  640,  639,
+      637,  636,  634,  633,  632,  631,  630,  629,  628,  627,
+      626,  625,  624,  623,  622,  621,  620,  618,  617,  616,
+      615,  614,  612,  611,  610,  609,  608,  607,  606,  605,
+      603,  602,  601,  600,  599,  598,  597,  596,  595,  594,
+      593,  592,  591,  590,  589,  588,  587,  586,  585,  584,
+      583,  582,  581,  580,  579,  578,  577,  576,  575,  566,
+
+      564,  563,  562,  560,  557,  555,  554,  553,  552,  551,
+      550,  549,  548,  547,  546,  545,  544,  543,  542,  541,
+      540,  539,  538,  537,  536,  534,  533,  532,  531,  530,
+      529,  528,  527,  526,  525,  524,  523,  521,  519,  518,
+      517,  516,  515,  514,  513,  512,  511,  510,  509,  508,
+      507,  506,  504,  503,  502,  501,  500,  499,  498,  497,
+      495,  494,  493,  492,  491,  490,  489,  488,  487,  486,
+      485,  484,  483,  482,  481,  480,  478,  477,  476,  475,
+      473,  472,  471,  470,  469,  468,  466,  465,  463,  462,
+      461,  459,  457,  456,  455,  454,  453,  452,  451,  449,
+
+      448,  447,  446,  445,  440,  438,  437,  434,  431,  429,
+      428,  427,  426,  425,  423,  422,  421,  420,  419,  418,
+      417,  416,  415,  414,  413,  412,  411,  410,  408,  407,
+      406,  404,  403,  402,  401,  400,  399,  398,  396,  395,
+      393,  392,  391,  390,  389,  388,  387,  386,  385,  384,
+      383,  379,  378,  377,  375,  374,  373,  371,  370,  369,
+      368,  367,  366,  365,  364,  363,  362,  361,  359,  358,
+      357,  356,  355,  354,  353,  352,  351,  350,  349,  348,
+      347,  345,  344,  343,  342,  340,  337,  336,  335,  334,
+      333,  332,  331,  330,  329,  328,  324,  322,  318,  316,
+
+      313,  306,  305,  304,  303,  302,  301,  300,  298,  297,
+      296,  295,  294,  293,  292,  291,  290,  288,  287,  286,
+      285,  284,  283,  282,  280,  279,  278,  277,  276,  275,
+      274,  273,  272,  271,  270,  269,  268,  267,  266,  265,
+      264,  262,  261,  260,  258,  257,  256,  255,  254,  253,
+      251,  250,  249,  248,  247,  246,  245,  244,  243,  241,
+      240,  239,  238,  237,  236,  235,  234,  233,  232,  231,
+      230,  229,  228,  227,  226,  225,  224,  223,  222,  221,
+      220,  219,  218,  216,  215,  214,  213,  212,  211,  210,
+      208,  205,  203,  201,  199,  194,  190,  182,  181,  180,
+
+      179,  178,  177,  176,  174,  173,  172,  170,  169,  168,
+      166,  164,  162,  160,  159,  157,  156,  155,  154,  153,
+      151,  150,  149,  148,  147,  146,  144,  143,  142,  141,
+      140,  139,  138,  136,  135,  133,  132,  128,  127,  126,
+      124,  123,  122,  121,  119,  117,  113,  104,  103,   97,
+       96,   77,   72,   66,   52,   49,   48,   43,   41,   39,
+       38,   24,   14,   11, 1862, 1862, 1862, 1862, 1862, 1862,
+     1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862,
+     1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862,
+     1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862,
+
+     1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862,
+     1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862,
+     1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862,
+     1862, 1862, 1862, 1862, 1862, 1862, 1862, 1862
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -1891,7 +1901,7 @@ static char *yy_last_accepting_cpos;
 extern int yy_flex_debug;
 int yy_flex_debug = 1;
 
-static const flex_int16_t yy_rule_linenum[204] =
+static const flex_int16_t yy_rule_linenum[206] =
     {   0,
       147,  149,  151,  156,  157,  162,  163,  164,  176,  179,
       184,  191,  200,  209,  218,  227,  236,  245,  254,  263,
@@ -1906,16 +1916,16 @@ static const flex_int16_t yy_rule_linenum[204] =
 
      1088, 1097, 1106, 1115, 1124, 1133, 1142, 1166, 1190, 1199,
      1209, 1219, 1228, 1238, 1249, 1258, 1267, 1276, 1285, 1294,
-     1304, 1313, 1322, 1331, 1342, 1353, 1364, 1373, 1382, 1391,
-     1400, 1409, 1418, 1427, 1436, 1445, 1455, 1467, 1480, 1489,
-     1498, 1508, 1518, 1527, 1538, 1548, 1557, 1567, 1577, 1586,
-     1595, 1604, 1613, 1623, 1632, 1641, 1650, 1659, 1668, 1677,
-     1686, 1695, 1704, 1713, 1722, 1731, 1740, 1749, 1758, 1767,
-     1776, 1785, 1794, 1803, 1812, 1821, 1830, 1839, 1848, 1857,
-     1866, 1875, 1884, 1893, 1902, 1911, 2010, 2015, 2020, 2025,
-     2026, 2027, 2028, 2029, 2030, 2032, 2050, 2063, 2068, 2072,
-
-     2074, 2076, 2078
+     1304, 1313, 1322, 1331, 1342, 1353, 1364, 1375, 1386, 1395,
+     1404, 1413, 1422, 1431, 1440, 1449, 1458, 1467, 1477, 1489,
+     1502, 1511, 1520, 1530, 1540, 1549, 1560, 1570, 1579, 1589,
+     1599, 1608, 1617, 1626, 1635, 1645, 1654, 1663, 1672, 1681,
+     1690, 1699, 1708, 1717, 1726, 1735, 1744, 1753, 1762, 1771,
+     1780, 1789, 1798, 1807, 1816, 1825, 1834, 1843, 1852, 1861,
+     1870, 1879, 1888, 1897, 1906, 1915, 1924, 1933, 2032, 2037,
+     2042, 2047, 2048, 2049, 2050, 2051, 2052, 2054, 2072, 2085,
+
+     2090, 2094, 2096, 2098, 2100
     } ;
 
 /* The intent behind this definition is that it'll catch
@@ -1968,7 +1978,7 @@ using namespace isc::dhcp;
 
 /* To avoid the call to exit... oops! */
 #define YY_FATAL_ERROR(msg) isc::dhcp::Parser6Context::fatal(msg)
-#line 1971 "dhcp6_lexer.cc"
+#line 1981 "dhcp6_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
@@ -1994,8 +2004,8 @@ using namespace isc::dhcp;
    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 1997 "dhcp6_lexer.cc"
-#line 1998 "dhcp6_lexer.cc"
+#line 2007 "dhcp6_lexer.cc"
+#line 2008 "dhcp6_lexer.cc"
 
 #define INITIAL 0
 #define COMMENT 1
@@ -2325,7 +2335,7 @@ YY_DECL
     }
 
 
-#line 2328 "dhcp6_lexer.cc"
+#line 2338 "dhcp6_lexer.cc"
 
        while ( /*CONSTCOND*/1 )                /* loops until end-of-file is reached */
                {
@@ -2354,13 +2364,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 >= 1845 )
+                               if ( yy_current_state >= 1863 )
                                        yy_c = yy_meta[yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
                        ++yy_cp;
                        }
-               while ( yy_current_state != 1844 );
+               while ( yy_current_state != 1862 );
                yy_cp = (yy_last_accepting_cpos);
                yy_current_state = (yy_last_accepting_state);
 
@@ -2379,13 +2389,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 < 204 )
+                       else if ( yy_act < 206 )
                                fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
                                         (long)yy_rule_linenum[yy_act], yytext );
-                       else if ( yy_act == 204 )
+                       else if ( yy_act == 206 )
                                fprintf( stderr, "--accepting default rule (\"%s\")\n",
                                         yytext );
-                       else if ( yy_act == 205 )
+                       else if ( yy_act == 207 )
                                fprintf( stderr, "--(end of buffer or a NUL)\n" );
                        else
                                fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
@@ -4010,6 +4020,34 @@ YY_RULE_SETUP
 case 127:
 YY_RULE_SETUP
 #line 1364 "dhcp6_lexer.ll"
+{
+    switch(driver.ctx_) {
+    case isc::dhcp::Parser6Context::DHCP6:
+    case isc::dhcp::Parser6Context::SUBNET6:
+    case isc::dhcp::Parser6Context::SHARED_NETWORK:
+        return isc::dhcp::Dhcp6Parser::make_CACHE_THRESHOLD((driver.loc_);
+    default:
+        return isc::dhcp::Dhcp6Parser::make_STRING("cache-threshold", driver.loc_);
+    }
+}
+       YY_BREAK
+case 128:
+YY_RULE_SETUP
+#line 1375 "dhcp6_lexer.ll"
+{
+    switch(driver.ctx_) {
+    case isc::dhcp::Parser6Context::DHCP6:
+    case isc::dhcp::Parser6Context::SUBNET6:
+    case isc::dhcp::Parser6Context::SHARED_NETWORK:
+        return isc::dhcp::Dhcp6Parser::make_CACHE_MAX((driver.loc_);
+    default:
+        return isc::dhcp::Dhcp6Parser::make_STRING("cache-max", driver.loc_);
+    }
+}
+       YY_BREAK
+case 129:
+YY_RULE_SETUP
+#line 1386 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4019,9 +4057,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 128:
+case 130:
 YY_RULE_SETUP
-#line 1373 "dhcp6_lexer.ll"
+#line 1395 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LOGGERS:
@@ -4031,9 +4069,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 129:
+case 131:
 YY_RULE_SETUP
-#line 1382 "dhcp6_lexer.ll"
+#line 1404 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
@@ -4043,9 +4081,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 130:
+case 132:
 YY_RULE_SETUP
-#line 1391 "dhcp6_lexer.ll"
+#line 1413 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
@@ -4055,9 +4093,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 131:
+case 133:
 YY_RULE_SETUP
-#line 1400 "dhcp6_lexer.ll"
+#line 1422 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
@@ -4067,9 +4105,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 132:
+case 134:
 YY_RULE_SETUP
-#line 1409 "dhcp6_lexer.ll"
+#line 1431 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
@@ -4079,9 +4117,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 133:
+case 135:
 YY_RULE_SETUP
-#line 1418 "dhcp6_lexer.ll"
+#line 1440 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
@@ -4091,9 +4129,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 134:
+case 136:
 YY_RULE_SETUP
-#line 1427 "dhcp6_lexer.ll"
+#line 1449 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LOGGERS:
@@ -4103,9 +4141,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 135:
+case 137:
 YY_RULE_SETUP
-#line 1436 "dhcp6_lexer.ll"
+#line 1458 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LOGGERS:
@@ -4115,9 +4153,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 136:
+case 138:
 YY_RULE_SETUP
-#line 1445 "dhcp6_lexer.ll"
+#line 1467 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4128,9 +4166,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 137:
+case 139:
 YY_RULE_SETUP
-#line 1455 "dhcp6_lexer.ll"
+#line 1477 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -4143,9 +4181,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 138:
+case 140:
 YY_RULE_SETUP
-#line 1467 "dhcp6_lexer.ll"
+#line 1489 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -4159,9 +4197,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 139:
+case 141:
 YY_RULE_SETUP
-#line 1480 "dhcp6_lexer.ll"
+#line 1502 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CLIENT_CLASSES:
@@ -4171,9 +4209,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 140:
+case 142:
 YY_RULE_SETUP
-#line 1489 "dhcp6_lexer.ll"
+#line 1511 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CLIENT_CLASSES:
@@ -4183,9 +4221,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 141:
+case 143:
 YY_RULE_SETUP
-#line 1498 "dhcp6_lexer.ll"
+#line 1520 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4196,9 +4234,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 142:
+case 144:
 YY_RULE_SETUP
-#line 1508 "dhcp6_lexer.ll"
+#line 1530 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATIONS:
@@ -4209,9 +4247,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 143:
+case 145:
 YY_RULE_SETUP
-#line 1518 "dhcp6_lexer.ll"
+#line 1540 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATIONS:
@@ -4221,9 +4259,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 144:
+case 146:
 YY_RULE_SETUP
-#line 1527 "dhcp6_lexer.ll"
+#line 1549 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::MAC_SOURCES:
@@ -4235,9 +4273,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 145:
+case 147:
 YY_RULE_SETUP
-#line 1538 "dhcp6_lexer.ll"
+#line 1560 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::HOST_RESERVATION_IDENTIFIERS:
@@ -4248,9 +4286,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 146:
+case 148:
 YY_RULE_SETUP
-#line 1548 "dhcp6_lexer.ll"
+#line 1570 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATIONS:
@@ -4260,9 +4298,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 147:
+case 149:
 YY_RULE_SETUP
-#line 1557 "dhcp6_lexer.ll"
+#line 1579 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::HOST_RESERVATION_IDENTIFIERS:
@@ -4273,9 +4311,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 148:
+case 150:
 YY_RULE_SETUP
-#line 1567 "dhcp6_lexer.ll"
+#line 1589 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -4286,9 +4324,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 149:
+case 151:
 YY_RULE_SETUP
-#line 1577 "dhcp6_lexer.ll"
+#line 1599 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DATA:
@@ -4298,9 +4336,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 150:
+case 152:
 YY_RULE_SETUP
-#line 1586 "dhcp6_lexer.ll"
+#line 1608 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -4310,9 +4348,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 151:
+case 153:
 YY_RULE_SETUP
-#line 1595 "dhcp6_lexer.ll"
+#line 1617 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -4322,9 +4360,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 152:
+case 154:
 YY_RULE_SETUP
-#line 1604 "dhcp6_lexer.ll"
+#line 1626 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -4334,9 +4372,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 153:
+case 155:
 YY_RULE_SETUP
-#line 1613 "dhcp6_lexer.ll"
+#line 1635 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -4347,9 +4385,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 154:
+case 156:
 YY_RULE_SETUP
-#line 1623 "dhcp6_lexer.ll"
+#line 1645 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RELAY:
@@ -4359,9 +4397,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 155:
+case 157:
 YY_RULE_SETUP
-#line 1632 "dhcp6_lexer.ll"
+#line 1654 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4371,9 +4409,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 156:
+case 158:
 YY_RULE_SETUP
-#line 1641 "dhcp6_lexer.ll"
+#line 1663 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::HOOKS_LIBRARIES:
@@ -4383,9 +4421,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 157:
+case 159:
 YY_RULE_SETUP
-#line 1650 "dhcp6_lexer.ll"
+#line 1672 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::HOOKS_LIBRARIES:
@@ -4395,9 +4433,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 158:
+case 160:
 YY_RULE_SETUP
-#line 1659 "dhcp6_lexer.ll"
+#line 1681 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4407,9 +4445,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 159:
+case 161:
 YY_RULE_SETUP
-#line 1668 "dhcp6_lexer.ll"
+#line 1690 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DUID_TYPE:
@@ -4419,9 +4457,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 160:
+case 162:
 YY_RULE_SETUP
-#line 1677 "dhcp6_lexer.ll"
+#line 1699 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DUID_TYPE:
@@ -4431,9 +4469,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 161:
+case 163:
 YY_RULE_SETUP
-#line 1686 "dhcp6_lexer.ll"
+#line 1708 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DUID_TYPE:
@@ -4443,9 +4481,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 162:
+case 164:
 YY_RULE_SETUP
-#line 1695 "dhcp6_lexer.ll"
+#line 1717 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
@@ -4455,9 +4493,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 163:
+case 165:
 YY_RULE_SETUP
-#line 1704 "dhcp6_lexer.ll"
+#line 1726 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
@@ -4467,9 +4505,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 164:
+case 166:
 YY_RULE_SETUP
-#line 1713 "dhcp6_lexer.ll"
+#line 1735 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
@@ -4479,9 +4517,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 165:
+case 167:
 YY_RULE_SETUP
-#line 1722 "dhcp6_lexer.ll"
+#line 1744 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
@@ -4491,9 +4529,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 166:
+case 168:
 YY_RULE_SETUP
-#line 1731 "dhcp6_lexer.ll"
+#line 1753 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4503,9 +4541,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 167:
+case 169:
 YY_RULE_SETUP
-#line 1740 "dhcp6_lexer.ll"
+#line 1762 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -4515,9 +4553,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 168:
+case 170:
 YY_RULE_SETUP
-#line 1749 "dhcp6_lexer.ll"
+#line 1771 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -4527,9 +4565,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 169:
+case 171:
 YY_RULE_SETUP
-#line 1758 "dhcp6_lexer.ll"
+#line 1780 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -4539,9 +4577,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 170:
+case 172:
 YY_RULE_SETUP
-#line 1767 "dhcp6_lexer.ll"
+#line 1789 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -4551,9 +4589,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 171:
+case 173:
 YY_RULE_SETUP
-#line 1776 "dhcp6_lexer.ll"
+#line 1798 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -4563,9 +4601,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 172:
+case 174:
 YY_RULE_SETUP
-#line 1785 "dhcp6_lexer.ll"
+#line 1807 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -4575,9 +4613,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 173:
+case 175:
 YY_RULE_SETUP
-#line 1794 "dhcp6_lexer.ll"
+#line 1816 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4587,9 +4625,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 174:
+case 176:
 YY_RULE_SETUP
-#line 1803 "dhcp6_lexer.ll"
+#line 1825 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4599,9 +4637,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 175:
+case 177:
 YY_RULE_SETUP
-#line 1812 "dhcp6_lexer.ll"
+#line 1834 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP_MULTI_THREADING:
@@ -4611,9 +4649,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 176:
+case 178:
 YY_RULE_SETUP
-#line 1821 "dhcp6_lexer.ll"
+#line 1843 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP_MULTI_THREADING:
@@ -4623,9 +4661,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 177:
+case 179:
 YY_RULE_SETUP
-#line 1830 "dhcp6_lexer.ll"
+#line 1852 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP_MULTI_THREADING:
@@ -4635,9 +4673,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 178:
+case 180:
 YY_RULE_SETUP
-#line 1839 "dhcp6_lexer.ll"
+#line 1861 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4647,9 +4685,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 179:
+case 181:
 YY_RULE_SETUP
-#line 1848 "dhcp6_lexer.ll"
+#line 1870 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONTROL_SOCKET:
@@ -4659,9 +4697,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 180:
+case 182:
 YY_RULE_SETUP
-#line 1857 "dhcp6_lexer.ll"
+#line 1879 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONTROL_SOCKET:
@@ -4671,9 +4709,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 181:
+case 183:
 YY_RULE_SETUP
-#line 1866 "dhcp6_lexer.ll"
+#line 1888 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4683,9 +4721,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 182:
+case 184:
 YY_RULE_SETUP
-#line 1875 "dhcp6_lexer.ll"
+#line 1897 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP_QUEUE_CONTROL:
@@ -4695,9 +4733,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 183:
+case 185:
 YY_RULE_SETUP
-#line 1884 "dhcp6_lexer.ll"
+#line 1906 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP_QUEUE_CONTROL:
@@ -4707,9 +4745,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 184:
+case 186:
 YY_RULE_SETUP
-#line 1893 "dhcp6_lexer.ll"
+#line 1915 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP_QUEUE_CONTROL:
@@ -4719,9 +4757,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 185:
+case 187:
 YY_RULE_SETUP
-#line 1902 "dhcp6_lexer.ll"
+#line 1924 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4731,9 +4769,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 186:
+case 188:
 YY_RULE_SETUP
-#line 1911 "dhcp6_lexer.ll"
+#line 1933 "dhcp6_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.
@@ -4833,65 +4871,65 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp6Parser::make_STRING(decoded, driver.loc_);
 }
        YY_BREAK
-case 187:
-/* rule 187 can match eol */
+case 189:
+/* rule 189 can match eol */
 YY_RULE_SETUP
-#line 2010 "dhcp6_lexer.ll"
+#line 2032 "dhcp6_lexer.ll"
 {
     /* Bad string with a forbidden control character inside */
     driver.error(driver.loc_, "Invalid control in " + std::string(yytext));
 }
        YY_BREAK
-case 188:
-/* rule 188 can match eol */
+case 190:
+/* rule 190 can match eol */
 YY_RULE_SETUP
-#line 2015 "dhcp6_lexer.ll"
+#line 2037 "dhcp6_lexer.ll"
 {
     /* Bad string with a bad escape inside */
     driver.error(driver.loc_, "Bad escape in " + std::string(yytext));
 }
        YY_BREAK
-case 189:
+case 191:
 YY_RULE_SETUP
-#line 2020 "dhcp6_lexer.ll"
+#line 2042 "dhcp6_lexer.ll"
 {
     /* Bad string with an open escape at the end */
     driver.error(driver.loc_, "Overflow escape in " + std::string(yytext));
 }
        YY_BREAK
-case 190:
+case 192:
 YY_RULE_SETUP
-#line 2025 "dhcp6_lexer.ll"
+#line 2047 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_LSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 191:
+case 193:
 YY_RULE_SETUP
-#line 2026 "dhcp6_lexer.ll"
+#line 2048 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_RSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 192:
+case 194:
 YY_RULE_SETUP
-#line 2027 "dhcp6_lexer.ll"
+#line 2049 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_LCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 193:
+case 195:
 YY_RULE_SETUP
-#line 2028 "dhcp6_lexer.ll"
+#line 2050 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_RCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 194:
+case 196:
 YY_RULE_SETUP
-#line 2029 "dhcp6_lexer.ll"
+#line 2051 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_COMMA(driver.loc_); }
        YY_BREAK
-case 195:
+case 197:
 YY_RULE_SETUP
-#line 2030 "dhcp6_lexer.ll"
+#line 2052 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_COLON(driver.loc_); }
        YY_BREAK
-case 196:
+case 198:
 YY_RULE_SETUP
-#line 2032 "dhcp6_lexer.ll"
+#line 2054 "dhcp6_lexer.ll"
 {
     /* An integer was found. */
     std::string tmp(yytext);
@@ -4910,9 +4948,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp6Parser::make_INTEGER(integer, driver.loc_);
 }
        YY_BREAK
-case 197:
+case 199:
 YY_RULE_SETUP
-#line 2050 "dhcp6_lexer.ll"
+#line 2072 "dhcp6_lexer.ll"
 {
     /* A floating point was found. */
     std::string tmp(yytext);
@@ -4926,43 +4964,43 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp6Parser::make_FLOAT(fp, driver.loc_);
 }
        YY_BREAK
-case 198:
+case 200:
 YY_RULE_SETUP
-#line 2063 "dhcp6_lexer.ll"
+#line 2085 "dhcp6_lexer.ll"
 {
     string tmp(yytext);
     return isc::dhcp::Dhcp6Parser::make_BOOLEAN(tmp == "true", driver.loc_);
 }
        YY_BREAK
-case 199:
+case 201:
 YY_RULE_SETUP
-#line 2068 "dhcp6_lexer.ll"
+#line 2090 "dhcp6_lexer.ll"
 {
    return isc::dhcp::Dhcp6Parser::make_NULL_TYPE(driver.loc_);
 }
        YY_BREAK
-case 200:
+case 202:
 YY_RULE_SETUP
-#line 2072 "dhcp6_lexer.ll"
+#line 2094 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "JSON true reserved keyword is lower case only");
        YY_BREAK
-case 201:
+case 203:
 YY_RULE_SETUP
-#line 2074 "dhcp6_lexer.ll"
+#line 2096 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "JSON false reserved keyword is lower case only");
        YY_BREAK
-case 202:
+case 204:
 YY_RULE_SETUP
-#line 2076 "dhcp6_lexer.ll"
+#line 2098 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "JSON null reserved keyword is lower case only");
        YY_BREAK
-case 203:
+case 205:
 YY_RULE_SETUP
-#line 2078 "dhcp6_lexer.ll"
+#line 2100 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "Invalid character: " + std::string(yytext));
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
-#line 2080 "dhcp6_lexer.ll"
+#line 2102 "dhcp6_lexer.ll"
 {
     if (driver.states_.empty()) {
         return isc::dhcp::Dhcp6Parser::make_END(driver.loc_);
@@ -4986,12 +5024,12 @@ case YY_STATE_EOF(INITIAL):
     BEGIN(DIR_EXIT);
 }
        YY_BREAK
-case 204:
+case 206:
 YY_RULE_SETUP
-#line 2103 "dhcp6_lexer.ll"
+#line 2125 "dhcp6_lexer.ll"
 ECHO;
        YY_BREAK
-#line 4994 "dhcp6_lexer.cc"
+#line 5032 "dhcp6_lexer.cc"
 
        case YY_END_OF_BUFFER:
                {
@@ -5310,7 +5348,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 >= 1845 )
+                       if ( yy_current_state >= 1863 )
                                yy_c = yy_meta[yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
@@ -5343,11 +5381,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 >= 1845 )
+               if ( yy_current_state >= 1863 )
                        yy_c = yy_meta[yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
-       yy_is_jam = (yy_current_state == 1844);
+       yy_is_jam = (yy_current_state == 1862);
 
                return yy_is_jam ? 0 : yy_current_state;
 }
@@ -6096,7 +6134,7 @@ void yyfree (void * ptr )
 
 /* %ok-for-header */
 
-#line 2103 "dhcp6_lexer.ll"
+#line 2125 "dhcp6_lexer.ll"
 
 
 using namespace isc::dhcp;
index 76e9a97e0edd3ac60a26dda5eb3e60d0e6af79df..362f252ff3b13ad3be8464f395f38dd078f4d526 100644 (file)
@@ -394,67 +394,67 @@ namespace isc { namespace dhcp {
         switch (yykind)
     {
       case symbol_kind::S_STRING: // "constant string"
-#line 274 "dhcp6_parser.yy"
+#line 276 "dhcp6_parser.yy"
                  { yyoutput << yysym.value.template as < std::string > (); }
 #line 400 "dhcp6_parser.cc"
         break;
 
       case symbol_kind::S_INTEGER: // "integer"
-#line 274 "dhcp6_parser.yy"
+#line 276 "dhcp6_parser.yy"
                  { yyoutput << yysym.value.template as < int64_t > (); }
 #line 406 "dhcp6_parser.cc"
         break;
 
       case symbol_kind::S_FLOAT: // "floating point"
-#line 274 "dhcp6_parser.yy"
+#line 276 "dhcp6_parser.yy"
                  { yyoutput << yysym.value.template as < double > (); }
 #line 412 "dhcp6_parser.cc"
         break;
 
       case symbol_kind::S_BOOLEAN: // "boolean"
-#line 274 "dhcp6_parser.yy"
+#line 276 "dhcp6_parser.yy"
                  { yyoutput << yysym.value.template as < bool > (); }
 #line 418 "dhcp6_parser.cc"
         break;
 
       case symbol_kind::S_value: // value
-#line 274 "dhcp6_parser.yy"
+#line 276 "dhcp6_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 424 "dhcp6_parser.cc"
         break;
 
       case symbol_kind::S_map_value: // map_value
-#line 274 "dhcp6_parser.yy"
+#line 276 "dhcp6_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 430 "dhcp6_parser.cc"
         break;
 
       case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
-#line 274 "dhcp6_parser.yy"
+#line 276 "dhcp6_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 436 "dhcp6_parser.cc"
         break;
 
       case symbol_kind::S_db_type: // db_type
-#line 274 "dhcp6_parser.yy"
+#line 276 "dhcp6_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 442 "dhcp6_parser.cc"
         break;
 
       case symbol_kind::S_hr_mode: // hr_mode
-#line 274 "dhcp6_parser.yy"
+#line 276 "dhcp6_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 448 "dhcp6_parser.cc"
         break;
 
       case symbol_kind::S_duid_type: // duid_type
-#line 274 "dhcp6_parser.yy"
+#line 276 "dhcp6_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 454 "dhcp6_parser.cc"
         break;
 
       case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
-#line 274 "dhcp6_parser.yy"
+#line 276 "dhcp6_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 460 "dhcp6_parser.cc"
         break;
@@ -733,133 +733,133 @@ namespace isc { namespace dhcp {
           switch (yyn)
             {
   case 2: // $@1: %empty
-#line 283 "dhcp6_parser.yy"
+#line 285 "dhcp6_parser.yy"
                      { ctx.ctx_ = ctx.NO_KEYWORD; }
 #line 739 "dhcp6_parser.cc"
     break;
 
   case 4: // $@2: %empty
-#line 284 "dhcp6_parser.yy"
+#line 286 "dhcp6_parser.yy"
                       { ctx.ctx_ = ctx.CONFIG; }
 #line 745 "dhcp6_parser.cc"
     break;
 
   case 6: // $@3: %empty
-#line 285 "dhcp6_parser.yy"
+#line 287 "dhcp6_parser.yy"
                  { ctx.ctx_ = ctx.DHCP6; }
 #line 751 "dhcp6_parser.cc"
     break;
 
   case 8: // $@4: %empty
-#line 286 "dhcp6_parser.yy"
+#line 288 "dhcp6_parser.yy"
                        { ctx.ctx_ = ctx.INTERFACES_CONFIG; }
 #line 757 "dhcp6_parser.cc"
     break;
 
   case 10: // $@5: %empty
-#line 287 "dhcp6_parser.yy"
+#line 289 "dhcp6_parser.yy"
                    { ctx.ctx_ = ctx.SUBNET6; }
 #line 763 "dhcp6_parser.cc"
     break;
 
   case 12: // $@6: %empty
-#line 288 "dhcp6_parser.yy"
+#line 290 "dhcp6_parser.yy"
                  { ctx.ctx_ = ctx.POOLS; }
 #line 769 "dhcp6_parser.cc"
     break;
 
   case 14: // $@7: %empty
-#line 289 "dhcp6_parser.yy"
+#line 291 "dhcp6_parser.yy"
                    { ctx.ctx_ = ctx.PD_POOLS; }
 #line 775 "dhcp6_parser.cc"
     break;
 
   case 16: // $@8: %empty
-#line 290 "dhcp6_parser.yy"
+#line 292 "dhcp6_parser.yy"
                        { ctx.ctx_ = ctx.RESERVATIONS; }
 #line 781 "dhcp6_parser.cc"
     break;
 
   case 18: // $@9: %empty
-#line 291 "dhcp6_parser.yy"
+#line 293 "dhcp6_parser.yy"
                        { ctx.ctx_ = ctx.DHCP6; }
 #line 787 "dhcp6_parser.cc"
     break;
 
   case 20: // $@10: %empty
-#line 292 "dhcp6_parser.yy"
+#line 294 "dhcp6_parser.yy"
                       { ctx.ctx_ = ctx.OPTION_DEF; }
 #line 793 "dhcp6_parser.cc"
     break;
 
   case 22: // $@11: %empty
-#line 293 "dhcp6_parser.yy"
+#line 295 "dhcp6_parser.yy"
                        { ctx.ctx_ = ctx.OPTION_DATA; }
 #line 799 "dhcp6_parser.cc"
     break;
 
   case 24: // $@12: %empty
-#line 294 "dhcp6_parser.yy"
+#line 296 "dhcp6_parser.yy"
                          { ctx.ctx_ = ctx.HOOKS_LIBRARIES; }
 #line 805 "dhcp6_parser.cc"
     break;
 
   case 26: // $@13: %empty
-#line 295 "dhcp6_parser.yy"
+#line 297 "dhcp6_parser.yy"
                      { ctx.ctx_ = ctx.DHCP_DDNS; }
 #line 811 "dhcp6_parser.cc"
     break;
 
   case 28: // $@14: %empty
-#line 296 "dhcp6_parser.yy"
+#line 298 "dhcp6_parser.yy"
                           { ctx.ctx_ = ctx.CONFIG_CONTROL; }
 #line 817 "dhcp6_parser.cc"
     break;
 
   case 30: // value: "integer"
-#line 304 "dhcp6_parser.yy"
+#line 306 "dhcp6_parser.yy"
                { yylhs.value.as < ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); }
 #line 823 "dhcp6_parser.cc"
     break;
 
   case 31: // value: "floating point"
-#line 305 "dhcp6_parser.yy"
+#line 307 "dhcp6_parser.yy"
              { yylhs.value.as < ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); }
 #line 829 "dhcp6_parser.cc"
     break;
 
   case 32: // value: "boolean"
-#line 306 "dhcp6_parser.yy"
+#line 308 "dhcp6_parser.yy"
                { yylhs.value.as < ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); }
 #line 835 "dhcp6_parser.cc"
     break;
 
   case 33: // value: "constant string"
-#line 307 "dhcp6_parser.yy"
+#line 309 "dhcp6_parser.yy"
               { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); }
 #line 841 "dhcp6_parser.cc"
     break;
 
   case 34: // value: "null"
-#line 308 "dhcp6_parser.yy"
+#line 310 "dhcp6_parser.yy"
                  { yylhs.value.as < ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
 #line 847 "dhcp6_parser.cc"
     break;
 
   case 35: // value: map2
-#line 309 "dhcp6_parser.yy"
+#line 311 "dhcp6_parser.yy"
             { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 853 "dhcp6_parser.cc"
     break;
 
   case 36: // value: list_generic
-#line 310 "dhcp6_parser.yy"
+#line 312 "dhcp6_parser.yy"
                     { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 859 "dhcp6_parser.cc"
     break;
 
   case 37: // sub_json: value
-#line 313 "dhcp6_parser.yy"
+#line 315 "dhcp6_parser.yy"
                 {
     // Push back the JSON value on the stack
     ctx.stack_.push_back(yystack_[0].value.as < ElementPtr > ());
@@ -868,7 +868,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 38: // $@15: %empty
-#line 318 "dhcp6_parser.yy"
+#line 320 "dhcp6_parser.yy"
                      {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -879,7 +879,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 39: // map2: "{" $@15 map_content "}"
-#line 323 "dhcp6_parser.yy"
+#line 325 "dhcp6_parser.yy"
                              {
     // map parsing completed. If we ever want to do any wrap up
     // (maybe some sanity checking), this would be the best place
@@ -889,13 +889,13 @@ namespace isc { namespace dhcp {
     break;
 
   case 40: // map_value: map2
-#line 329 "dhcp6_parser.yy"
+#line 331 "dhcp6_parser.yy"
                 { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 895 "dhcp6_parser.cc"
     break;
 
   case 43: // not_empty_map: "constant string" ":" value
-#line 336 "dhcp6_parser.yy"
+#line 338 "dhcp6_parser.yy"
                                   {
                   // map containing a single entry
                   ctx.unique(yystack_[2].value.as < std::string > (), ctx.loc2pos(yystack_[2].location));
@@ -905,7 +905,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 44: // not_empty_map: not_empty_map "," "constant string" ":" value
-#line 341 "dhcp6_parser.yy"
+#line 343 "dhcp6_parser.yy"
                                                       {
                   // map consisting of a shorter map followed by
                   // comma and string:value
@@ -916,7 +916,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 45: // $@16: %empty
-#line 349 "dhcp6_parser.yy"
+#line 351 "dhcp6_parser.yy"
                               {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(l);
@@ -925,7 +925,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 46: // list_generic: "[" $@16 list_content "]"
-#line 352 "dhcp6_parser.yy"
+#line 354 "dhcp6_parser.yy"
                                {
     // list parsing complete. Put any sanity checking here
 }
@@ -933,7 +933,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 49: // not_empty_list: value
-#line 360 "dhcp6_parser.yy"
+#line 362 "dhcp6_parser.yy"
                       {
                   // List consisting of a single element.
                   ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ());
@@ -942,7 +942,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 50: // not_empty_list: not_empty_list "," value
-#line 364 "dhcp6_parser.yy"
+#line 366 "dhcp6_parser.yy"
                                            {
                   // List ending with , and a value.
                   ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ());
@@ -951,7 +951,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 51: // $@17: %empty
-#line 371 "dhcp6_parser.yy"
+#line 373 "dhcp6_parser.yy"
                               {
     // List parsing about to start
 }
@@ -959,7 +959,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 52: // list_strings: "[" $@17 list_strings_content "]"
-#line 373 "dhcp6_parser.yy"
+#line 375 "dhcp6_parser.yy"
                                        {
     // list parsing complete. Put any sanity checking here
     //ctx.stack_.pop_back();
@@ -968,7 +968,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 55: // not_empty_list_strings: "constant string"
-#line 382 "dhcp6_parser.yy"
+#line 384 "dhcp6_parser.yy"
                                {
                           ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
                           ctx.stack_.back()->add(s);
@@ -977,7 +977,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 56: // not_empty_list_strings: not_empty_list_strings "," "constant string"
-#line 386 "dhcp6_parser.yy"
+#line 388 "dhcp6_parser.yy"
                                                             {
                           ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
                           ctx.stack_.back()->add(s);
@@ -986,7 +986,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 57: // unknown_map_entry: "constant string" ":"
-#line 397 "dhcp6_parser.yy"
+#line 399 "dhcp6_parser.yy"
                                 {
     const std::string& where = ctx.contextName();
     const std::string& keyword = yystack_[1].value.as < std::string > ();
@@ -997,7 +997,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 58: // $@18: %empty
-#line 406 "dhcp6_parser.yy"
+#line 408 "dhcp6_parser.yy"
                            {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -1008,7 +1008,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 59: // syntax_map: "{" $@18 global_object "}"
-#line 411 "dhcp6_parser.yy"
+#line 413 "dhcp6_parser.yy"
                                {
     // map parsing completed. If we ever want to do any wrap up
     // (maybe some sanity checking), this would be the best place
@@ -1021,7 +1021,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 60: // $@19: %empty
-#line 421 "dhcp6_parser.yy"
+#line 423 "dhcp6_parser.yy"
                      {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -1036,7 +1036,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 61: // global_object: "Dhcp6" $@19 ":" "{" global_params "}"
-#line 430 "dhcp6_parser.yy"
+#line 432 "dhcp6_parser.yy"
                                                     {
     // No global parameter is required
     ctx.stack_.pop_back();
@@ -1046,7 +1046,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 62: // $@20: %empty
-#line 438 "dhcp6_parser.yy"
+#line 440 "dhcp6_parser.yy"
                           {
     // Parse the Dhcp6 map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1056,7 +1056,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 63: // sub_dhcp6: "{" $@20 global_params "}"
-#line 442 "dhcp6_parser.yy"
+#line 444 "dhcp6_parser.yy"
                                {
     // No global parameter is required
     // parsing completed
@@ -1064,8 +1064,8 @@ namespace isc { namespace dhcp {
 #line 1065 "dhcp6_parser.cc"
     break;
 
-  case 119: // $@21: %empty
-#line 508 "dhcp6_parser.yy"
+  case 121: // $@21: %empty
+#line 512 "dhcp6_parser.yy"
                                {
     ctx.unique("data-directory", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
@@ -1073,8 +1073,8 @@ namespace isc { namespace dhcp {
 #line 1074 "dhcp6_parser.cc"
     break;
 
-  case 120: // data_directory: "data-directory" $@21 ":" "constant string"
-#line 511 "dhcp6_parser.yy"
+  case 122: // data_directory: "data-directory" $@21 ":" "constant string"
+#line 515 "dhcp6_parser.yy"
                {
     ElementPtr datadir(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("data-directory", datadir);
@@ -1083,8 +1083,8 @@ namespace isc { namespace dhcp {
 #line 1084 "dhcp6_parser.cc"
     break;
 
-  case 121: // preferred_lifetime: "preferred-lifetime" ":" "integer"
-#line 517 "dhcp6_parser.yy"
+  case 123: // preferred_lifetime: "preferred-lifetime" ":" "integer"
+#line 521 "dhcp6_parser.yy"
                                                      {
     ctx.unique("preferred-lifetime", ctx.loc2pos(yystack_[2].location));
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1093,8 +1093,8 @@ namespace isc { namespace dhcp {
 #line 1094 "dhcp6_parser.cc"
     break;
 
-  case 122: // min_preferred_lifetime: "min-preferred-lifetime" ":" "integer"
-#line 523 "dhcp6_parser.yy"
+  case 124: // min_preferred_lifetime: "min-preferred-lifetime" ":" "integer"
+#line 527 "dhcp6_parser.yy"
                                                              {
     ctx.unique("min-preferred-lifetime", ctx.loc2pos(yystack_[2].location));
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1103,8 +1103,8 @@ namespace isc { namespace dhcp {
 #line 1104 "dhcp6_parser.cc"
     break;
 
-  case 123: // max_preferred_lifetime: "max-preferred-lifetime" ":" "integer"
-#line 529 "dhcp6_parser.yy"
+  case 125: // max_preferred_lifetime: "max-preferred-lifetime" ":" "integer"
+#line 533 "dhcp6_parser.yy"
                                                              {
     ctx.unique("max-preferred-lifetime", ctx.loc2pos(yystack_[2].location));
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1113,8 +1113,8 @@ namespace isc { namespace dhcp {
 #line 1114 "dhcp6_parser.cc"
     break;
 
-  case 124: // valid_lifetime: "valid-lifetime" ":" "integer"
-#line 535 "dhcp6_parser.yy"
+  case 126: // valid_lifetime: "valid-lifetime" ":" "integer"
+#line 539 "dhcp6_parser.yy"
                                              {
     ctx.unique("valid-lifetime", ctx.loc2pos(yystack_[2].location));
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1123,8 +1123,8 @@ namespace isc { namespace dhcp {
 #line 1124 "dhcp6_parser.cc"
     break;
 
-  case 125: // min_valid_lifetime: "min-valid-lifetime" ":" "integer"
-#line 541 "dhcp6_parser.yy"
+  case 127: // min_valid_lifetime: "min-valid-lifetime" ":" "integer"
+#line 545 "dhcp6_parser.yy"
                                                      {
     ctx.unique("min-valid-lifetime", ctx.loc2pos(yystack_[2].location));
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1133,8 +1133,8 @@ namespace isc { namespace dhcp {
 #line 1134 "dhcp6_parser.cc"
     break;
 
-  case 126: // max_valid_lifetime: "max-valid-lifetime" ":" "integer"
-#line 547 "dhcp6_parser.yy"
+  case 128: // max_valid_lifetime: "max-valid-lifetime" ":" "integer"
+#line 551 "dhcp6_parser.yy"
                                                      {
     ctx.unique("max-valid-lifetime", ctx.loc2pos(yystack_[2].location));
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1143,8 +1143,8 @@ namespace isc { namespace dhcp {
 #line 1144 "dhcp6_parser.cc"
     break;
 
-  case 127: // renew_timer: "renew-timer" ":" "integer"
-#line 553 "dhcp6_parser.yy"
+  case 129: // renew_timer: "renew-timer" ":" "integer"
+#line 557 "dhcp6_parser.yy"
                                        {
     ctx.unique("renew-timer", ctx.loc2pos(yystack_[2].location));
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1153,8 +1153,8 @@ namespace isc { namespace dhcp {
 #line 1154 "dhcp6_parser.cc"
     break;
 
-  case 128: // rebind_timer: "rebind-timer" ":" "integer"
-#line 559 "dhcp6_parser.yy"
+  case 130: // rebind_timer: "rebind-timer" ":" "integer"
+#line 563 "dhcp6_parser.yy"
                                          {
     ctx.unique("rebind-timer", ctx.loc2pos(yystack_[2].location));
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1163,8 +1163,8 @@ namespace isc { namespace dhcp {
 #line 1164 "dhcp6_parser.cc"
     break;
 
-  case 129: // calculate_tee_times: "calculate-tee-times" ":" "boolean"
-#line 565 "dhcp6_parser.yy"
+  case 131: // calculate_tee_times: "calculate-tee-times" ":" "boolean"
+#line 569 "dhcp6_parser.yy"
                                                        {
     ctx.unique("calculate-tee-times", ctx.loc2pos(yystack_[2].location));
     ElementPtr ctt(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -1173,8 +1173,8 @@ namespace isc { namespace dhcp {
 #line 1174 "dhcp6_parser.cc"
     break;
 
-  case 130: // t1_percent: "t1-percent" ":" "floating point"
-#line 571 "dhcp6_parser.yy"
+  case 132: // t1_percent: "t1-percent" ":" "floating point"
+#line 575 "dhcp6_parser.yy"
                                    {
     ctx.unique("t1-percent", ctx.loc2pos(yystack_[2].location));
     ElementPtr t1(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location)));
@@ -1183,8 +1183,8 @@ namespace isc { namespace dhcp {
 #line 1184 "dhcp6_parser.cc"
     break;
 
-  case 131: // t2_percent: "t2-percent" ":" "floating point"
-#line 577 "dhcp6_parser.yy"
+  case 133: // t2_percent: "t2-percent" ":" "floating point"
+#line 581 "dhcp6_parser.yy"
                                    {
     ctx.unique("t2-percent", ctx.loc2pos(yystack_[2].location));
     ElementPtr t2(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location)));
@@ -1193,232 +1193,252 @@ namespace isc { namespace dhcp {
 #line 1194 "dhcp6_parser.cc"
     break;
 
-  case 132: // decline_probation_period: "decline-probation-period" ":" "integer"
-#line 583 "dhcp6_parser.yy"
+  case 134: // cache_threshold: "cache-threshold" ":" "floating point"
+#line 587 "dhcp6_parser.yy"
+                                             {
+    ctx.unique("cache-threshold", ctx.loc2pos(yystack_[2].location));
+    ElementPtr ct(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("cache-threshold", ct);
+}
+#line 1204 "dhcp6_parser.cc"
+    break;
+
+  case 135: // cache_max: "cache-max" ":" "integer"
+#line 593 "dhcp6_parser.yy"
+                                   {
+    ctx.unique("cache-max", ctx.loc2pos(yystack_[2].location));
+    ElementPtr cm(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("cache-max", cm);
+}
+#line 1214 "dhcp6_parser.cc"
+    break;
+
+  case 136: // decline_probation_period: "decline-probation-period" ":" "integer"
+#line 599 "dhcp6_parser.yy"
                                                                  {
     ctx.unique("decline-probation-period", ctx.loc2pos(yystack_[2].location));
     ElementPtr dpp(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("decline-probation-period", dpp);
 }
-#line 1204 "dhcp6_parser.cc"
+#line 1224 "dhcp6_parser.cc"
     break;
 
-  case 133: // ddns_send_updates: "ddns-send-updates" ":" "boolean"
-#line 589 "dhcp6_parser.yy"
+  case 137: // ddns_send_updates: "ddns-send-updates" ":" "boolean"
+#line 605 "dhcp6_parser.yy"
                                                    {
     ctx.unique("ddns-send-updates", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ddns-send-updates", b);
 }
-#line 1214 "dhcp6_parser.cc"
+#line 1234 "dhcp6_parser.cc"
     break;
 
-  case 134: // ddns_override_no_update: "ddns-override-no-update" ":" "boolean"
-#line 595 "dhcp6_parser.yy"
+  case 138: // ddns_override_no_update: "ddns-override-no-update" ":" "boolean"
+#line 611 "dhcp6_parser.yy"
                                                                {
     ctx.unique("ddns-override-no-update", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ddns-override-no-update", b);
 }
-#line 1224 "dhcp6_parser.cc"
+#line 1244 "dhcp6_parser.cc"
     break;
 
-  case 135: // ddns_override_client_update: "ddns-override-client-update" ":" "boolean"
-#line 601 "dhcp6_parser.yy"
+  case 139: // ddns_override_client_update: "ddns-override-client-update" ":" "boolean"
+#line 617 "dhcp6_parser.yy"
                                                                        {
     ctx.unique("ddns-override-client-update", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ddns-override-client-update", b);
 }
-#line 1234 "dhcp6_parser.cc"
+#line 1254 "dhcp6_parser.cc"
     break;
 
-  case 136: // $@22: %empty
-#line 607 "dhcp6_parser.yy"
+  case 140: // $@22: %empty
+#line 623 "dhcp6_parser.yy"
                                                    {
     ctx.unique("ddns-replace-client-name", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.REPLACE_CLIENT_NAME);
 }
-#line 1243 "dhcp6_parser.cc"
+#line 1263 "dhcp6_parser.cc"
     break;
 
-  case 137: // ddns_replace_client_name: "ddns-replace-client-name" $@22 ":" ddns_replace_client_name_value
-#line 610 "dhcp6_parser.yy"
+  case 141: // ddns_replace_client_name: "ddns-replace-client-name" $@22 ":" ddns_replace_client_name_value
+#line 626 "dhcp6_parser.yy"
                                        {
     ctx.stack_.back()->set("ddns-replace-client-name", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 1252 "dhcp6_parser.cc"
+#line 1272 "dhcp6_parser.cc"
     break;
 
-  case 138: // ddns_replace_client_name_value: "when-present"
-#line 616 "dhcp6_parser.yy"
+  case 142: // ddns_replace_client_name_value: "when-present"
+#line 632 "dhcp6_parser.yy"
                  {
       yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location)));
       }
-#line 1260 "dhcp6_parser.cc"
+#line 1280 "dhcp6_parser.cc"
     break;
 
-  case 139: // ddns_replace_client_name_value: "never"
-#line 619 "dhcp6_parser.yy"
+  case 143: // ddns_replace_client_name_value: "never"
+#line 635 "dhcp6_parser.yy"
           {
       yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location)));
       }
-#line 1268 "dhcp6_parser.cc"
+#line 1288 "dhcp6_parser.cc"
     break;
 
-  case 140: // ddns_replace_client_name_value: "always"
-#line 622 "dhcp6_parser.yy"
+  case 144: // ddns_replace_client_name_value: "always"
+#line 638 "dhcp6_parser.yy"
            {
       yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location)));
       }
-#line 1276 "dhcp6_parser.cc"
+#line 1296 "dhcp6_parser.cc"
     break;
 
-  case 141: // ddns_replace_client_name_value: "when-not-present"
-#line 625 "dhcp6_parser.yy"
+  case 145: // ddns_replace_client_name_value: "when-not-present"
+#line 641 "dhcp6_parser.yy"
                      {
       yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location)));
       }
-#line 1284 "dhcp6_parser.cc"
+#line 1304 "dhcp6_parser.cc"
     break;
 
-  case 142: // ddns_replace_client_name_value: "boolean"
-#line 628 "dhcp6_parser.yy"
+  case 146: // ddns_replace_client_name_value: "boolean"
+#line 644 "dhcp6_parser.yy"
             {
       error(yystack_[0].location, "boolean values for the replace-client-name are "
                 "no longer supported");
       }
-#line 1293 "dhcp6_parser.cc"
+#line 1313 "dhcp6_parser.cc"
     break;
 
-  case 143: // $@23: %empty
-#line 634 "dhcp6_parser.yy"
+  case 147: // $@23: %empty
+#line 650 "dhcp6_parser.yy"
                                              {
     ctx.unique("ddns-generated-prefix", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1302 "dhcp6_parser.cc"
+#line 1322 "dhcp6_parser.cc"
     break;
 
-  case 144: // ddns_generated_prefix: "ddns-generated-prefix" $@23 ":" "constant string"
-#line 637 "dhcp6_parser.yy"
+  case 148: // ddns_generated_prefix: "ddns-generated-prefix" $@23 ":" "constant string"
+#line 653 "dhcp6_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ddns-generated-prefix", s);
     ctx.leave();
 }
-#line 1312 "dhcp6_parser.cc"
+#line 1332 "dhcp6_parser.cc"
     break;
 
-  case 145: // $@24: %empty
-#line 643 "dhcp6_parser.yy"
+  case 149: // $@24: %empty
+#line 659 "dhcp6_parser.yy"
                                                {
     ctx.unique("ddns-qualifying-suffix", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1321 "dhcp6_parser.cc"
+#line 1341 "dhcp6_parser.cc"
     break;
 
-  case 146: // ddns_qualifying_suffix: "ddns-qualifying-suffix" $@24 ":" "constant string"
-#line 646 "dhcp6_parser.yy"
+  case 150: // ddns_qualifying_suffix: "ddns-qualifying-suffix" $@24 ":" "constant string"
+#line 662 "dhcp6_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ddns-qualifying-suffix", s);
     ctx.leave();
 }
-#line 1331 "dhcp6_parser.cc"
+#line 1351 "dhcp6_parser.cc"
     break;
 
-  case 147: // $@25: %empty
-#line 652 "dhcp6_parser.yy"
+  case 151: // $@25: %empty
+#line 668 "dhcp6_parser.yy"
                                      {
     ctx.unique("hostname-char-set", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1340 "dhcp6_parser.cc"
+#line 1360 "dhcp6_parser.cc"
     break;
 
-  case 148: // hostname_char_set: "hostname-char-set" $@25 ":" "constant string"
-#line 655 "dhcp6_parser.yy"
+  case 152: // hostname_char_set: "hostname-char-set" $@25 ":" "constant string"
+#line 671 "dhcp6_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hostname-char-set", s);
     ctx.leave();
 }
-#line 1350 "dhcp6_parser.cc"
+#line 1370 "dhcp6_parser.cc"
     break;
 
-  case 149: // $@26: %empty
-#line 661 "dhcp6_parser.yy"
+  case 153: // $@26: %empty
+#line 677 "dhcp6_parser.yy"
                                                      {
     ctx.unique("hostname-char-replacement", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1359 "dhcp6_parser.cc"
+#line 1379 "dhcp6_parser.cc"
     break;
 
-  case 150: // hostname_char_replacement: "hostname-char-replacement" $@26 ":" "constant string"
-#line 664 "dhcp6_parser.yy"
+  case 154: // hostname_char_replacement: "hostname-char-replacement" $@26 ":" "constant string"
+#line 680 "dhcp6_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hostname-char-replacement", s);
     ctx.leave();
 }
-#line 1369 "dhcp6_parser.cc"
+#line 1389 "dhcp6_parser.cc"
     break;
 
-  case 151: // store_extended_info: "store-extended-info" ":" "boolean"
-#line 670 "dhcp6_parser.yy"
+  case 155: // store_extended_info: "store-extended-info" ":" "boolean"
+#line 686 "dhcp6_parser.yy"
                                                        {
     ctx.unique("store-extended-info", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("store-extended-info", b);
 }
-#line 1379 "dhcp6_parser.cc"
+#line 1399 "dhcp6_parser.cc"
     break;
 
-  case 152: // statistic_default_sample_count: "statistic-default-sample-count" ":" "integer"
-#line 676 "dhcp6_parser.yy"
+  case 156: // statistic_default_sample_count: "statistic-default-sample-count" ":" "integer"
+#line 692 "dhcp6_parser.yy"
                                                                              {
     ctx.unique("statistic-default-sample-count", ctx.loc2pos(yystack_[2].location));
     ElementPtr count(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("statistic-default-sample-count", count);
 }
-#line 1389 "dhcp6_parser.cc"
+#line 1409 "dhcp6_parser.cc"
     break;
 
-  case 153: // statistic_default_sample_age: "statistic-default-sample-age" ":" "integer"
-#line 682 "dhcp6_parser.yy"
+  case 157: // statistic_default_sample_age: "statistic-default-sample-age" ":" "integer"
+#line 698 "dhcp6_parser.yy"
                                                                          {
     ctx.unique("statistic-default-sample-age", ctx.loc2pos(yystack_[2].location));
     ElementPtr age(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("statistic-default-sample-age", age);
 }
-#line 1399 "dhcp6_parser.cc"
+#line 1419 "dhcp6_parser.cc"
     break;
 
-  case 154: // $@27: %empty
-#line 688 "dhcp6_parser.yy"
+  case 158: // $@27: %empty
+#line 704 "dhcp6_parser.yy"
                        {
     ctx.unique("server-tag", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1408 "dhcp6_parser.cc"
+#line 1428 "dhcp6_parser.cc"
     break;
 
-  case 155: // server_tag: "server-tag" $@27 ":" "constant string"
-#line 691 "dhcp6_parser.yy"
+  case 159: // server_tag: "server-tag" $@27 ":" "constant string"
+#line 707 "dhcp6_parser.yy"
                {
     ElementPtr stag(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("server-tag", stag);
     ctx.leave();
 }
-#line 1418 "dhcp6_parser.cc"
+#line 1438 "dhcp6_parser.cc"
     break;
 
-  case 156: // $@28: %empty
-#line 697 "dhcp6_parser.yy"
+  case 160: // $@28: %empty
+#line 713 "dhcp6_parser.yy"
                                      {
     ctx.unique("interfaces-config", ctx.loc2pos(yystack_[0].location));
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1426,40 +1446,40 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(i);
     ctx.enter(ctx.INTERFACES_CONFIG);
 }
-#line 1430 "dhcp6_parser.cc"
+#line 1450 "dhcp6_parser.cc"
     break;
 
-  case 157: // interfaces_config: "interfaces-config" $@28 ":" "{" interfaces_config_params "}"
-#line 703 "dhcp6_parser.yy"
+  case 161: // interfaces_config: "interfaces-config" $@28 ":" "{" interfaces_config_params "}"
+#line 719 "dhcp6_parser.yy"
                                                                {
     // No interfaces config param is required
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1440 "dhcp6_parser.cc"
+#line 1460 "dhcp6_parser.cc"
     break;
 
-  case 158: // $@29: %empty
-#line 709 "dhcp6_parser.yy"
+  case 162: // $@29: %empty
+#line 725 "dhcp6_parser.yy"
                                 {
     // Parse the interfaces-config map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 1450 "dhcp6_parser.cc"
+#line 1470 "dhcp6_parser.cc"
     break;
 
-  case 159: // sub_interfaces6: "{" $@29 interfaces_config_params "}"
-#line 713 "dhcp6_parser.yy"
+  case 163: // sub_interfaces6: "{" $@29 interfaces_config_params "}"
+#line 729 "dhcp6_parser.yy"
                                           {
     // No interfaces config param is required
     // parsing completed
 }
-#line 1459 "dhcp6_parser.cc"
+#line 1479 "dhcp6_parser.cc"
     break;
 
-  case 167: // $@30: %empty
-#line 729 "dhcp6_parser.yy"
+  case 171: // $@30: %empty
+#line 745 "dhcp6_parser.yy"
                             {
     ctx.unique("interfaces", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -1467,30 +1487,30 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(l);
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1471 "dhcp6_parser.cc"
+#line 1491 "dhcp6_parser.cc"
     break;
 
-  case 168: // interfaces_list: "interfaces" $@30 ":" list_strings
-#line 735 "dhcp6_parser.yy"
+  case 172: // interfaces_list: "interfaces" $@30 ":" list_strings
+#line 751 "dhcp6_parser.yy"
                      {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1480 "dhcp6_parser.cc"
+#line 1500 "dhcp6_parser.cc"
     break;
 
-  case 169: // re_detect: "re-detect" ":" "boolean"
-#line 740 "dhcp6_parser.yy"
+  case 173: // re_detect: "re-detect" ":" "boolean"
+#line 756 "dhcp6_parser.yy"
                                    {
     ctx.unique("re-detect", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("re-detect", b);
 }
-#line 1490 "dhcp6_parser.cc"
+#line 1510 "dhcp6_parser.cc"
     break;
 
-  case 170: // $@31: %empty
-#line 746 "dhcp6_parser.yy"
+  case 174: // $@31: %empty
+#line 762 "dhcp6_parser.yy"
                                {
     ctx.unique("lease-database", ctx.loc2pos(yystack_[0].location));
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1498,22 +1518,22 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(i);
     ctx.enter(ctx.LEASE_DATABASE);
 }
-#line 1502 "dhcp6_parser.cc"
+#line 1522 "dhcp6_parser.cc"
     break;
 
-  case 171: // lease_database: "lease-database" $@31 ":" "{" database_map_params "}"
-#line 752 "dhcp6_parser.yy"
+  case 175: // lease_database: "lease-database" $@31 ":" "{" database_map_params "}"
+#line 768 "dhcp6_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 1513 "dhcp6_parser.cc"
+#line 1533 "dhcp6_parser.cc"
     break;
 
-  case 172: // $@32: %empty
-#line 759 "dhcp6_parser.yy"
+  case 176: // $@32: %empty
+#line 775 "dhcp6_parser.yy"
                                {
     ctx.unique("hosts-database", ctx.loc2pos(yystack_[0].location));
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1521,22 +1541,22 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(i);
     ctx.enter(ctx.HOSTS_DATABASE);
 }
-#line 1525 "dhcp6_parser.cc"
+#line 1545 "dhcp6_parser.cc"
     break;
 
-  case 173: // hosts_database: "hosts-database" $@32 ":" "{" database_map_params "}"
-#line 765 "dhcp6_parser.yy"
+  case 177: // hosts_database: "hosts-database" $@32 ":" "{" database_map_params "}"
+#line 781 "dhcp6_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 1536 "dhcp6_parser.cc"
+#line 1556 "dhcp6_parser.cc"
     break;
 
-  case 174: // $@33: %empty
-#line 772 "dhcp6_parser.yy"
+  case 178: // $@33: %empty
+#line 788 "dhcp6_parser.yy"
                                  {
     ctx.unique("hosts-databases", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -1544,344 +1564,344 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(l);
     ctx.enter(ctx.HOSTS_DATABASE);
 }
-#line 1548 "dhcp6_parser.cc"
+#line 1568 "dhcp6_parser.cc"
     break;
 
-  case 175: // hosts_databases: "hosts-databases" $@33 ":" "[" database_list "]"
-#line 778 "dhcp6_parser.yy"
+  case 179: // hosts_databases: "hosts-databases" $@33 ":" "[" database_list "]"
+#line 794 "dhcp6_parser.yy"
                                                       {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1557 "dhcp6_parser.cc"
+#line 1577 "dhcp6_parser.cc"
     break;
 
-  case 180: // $@34: %empty
-#line 791 "dhcp6_parser.yy"
+  case 184: // $@34: %empty
+#line 807 "dhcp6_parser.yy"
                          {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 1567 "dhcp6_parser.cc"
+#line 1587 "dhcp6_parser.cc"
     break;
 
-  case 181: // database: "{" $@34 database_map_params "}"
-#line 795 "dhcp6_parser.yy"
+  case 185: // database: "{" $@34 database_map_params "}"
+#line 811 "dhcp6_parser.yy"
                                      {
     // The type parameter is required
     ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 1577 "dhcp6_parser.cc"
+#line 1597 "dhcp6_parser.cc"
     break;
 
-  case 205: // $@35: %empty
-#line 828 "dhcp6_parser.yy"
+  case 209: // $@35: %empty
+#line 844 "dhcp6_parser.yy"
                     {
     ctx.unique("type", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.DATABASE_TYPE);
 }
-#line 1586 "dhcp6_parser.cc"
+#line 1606 "dhcp6_parser.cc"
     break;
 
-  case 206: // database_type: "type" $@35 ":" db_type
-#line 831 "dhcp6_parser.yy"
+  case 210: // database_type: "type" $@35 ":" db_type
+#line 847 "dhcp6_parser.yy"
                 {
     ctx.stack_.back()->set("type", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 1595 "dhcp6_parser.cc"
+#line 1615 "dhcp6_parser.cc"
     break;
 
-  case 207: // db_type: "memfile"
-#line 836 "dhcp6_parser.yy"
+  case 211: // db_type: "memfile"
+#line 852 "dhcp6_parser.yy"
                  { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); }
-#line 1601 "dhcp6_parser.cc"
+#line 1621 "dhcp6_parser.cc"
     break;
 
-  case 208: // db_type: "mysql"
-#line 837 "dhcp6_parser.yy"
+  case 212: // db_type: "mysql"
+#line 853 "dhcp6_parser.yy"
                { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); }
-#line 1607 "dhcp6_parser.cc"
+#line 1627 "dhcp6_parser.cc"
     break;
 
-  case 209: // db_type: "postgresql"
-#line 838 "dhcp6_parser.yy"
+  case 213: // db_type: "postgresql"
+#line 854 "dhcp6_parser.yy"
                     { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); }
-#line 1613 "dhcp6_parser.cc"
+#line 1633 "dhcp6_parser.cc"
     break;
 
-  case 210: // db_type: "cql"
-#line 839 "dhcp6_parser.yy"
+  case 214: // db_type: "cql"
+#line 855 "dhcp6_parser.yy"
              { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("cql", ctx.loc2pos(yystack_[0].location))); }
-#line 1619 "dhcp6_parser.cc"
+#line 1639 "dhcp6_parser.cc"
     break;
 
-  case 211: // $@36: %empty
-#line 842 "dhcp6_parser.yy"
+  case 215: // $@36: %empty
+#line 858 "dhcp6_parser.yy"
            {
     ctx.unique("user", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1628 "dhcp6_parser.cc"
+#line 1648 "dhcp6_parser.cc"
     break;
 
-  case 212: // user: "user" $@36 ":" "constant string"
-#line 845 "dhcp6_parser.yy"
+  case 216: // user: "user" $@36 ":" "constant string"
+#line 861 "dhcp6_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 1638 "dhcp6_parser.cc"
+#line 1658 "dhcp6_parser.cc"
     break;
 
-  case 213: // $@37: %empty
-#line 851 "dhcp6_parser.yy"
+  case 217: // $@37: %empty
+#line 867 "dhcp6_parser.yy"
                    {
     ctx.unique("password", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1647 "dhcp6_parser.cc"
+#line 1667 "dhcp6_parser.cc"
     break;
 
-  case 214: // password: "password" $@37 ":" "constant string"
-#line 854 "dhcp6_parser.yy"
+  case 218: // password: "password" $@37 ":" "constant string"
+#line 870 "dhcp6_parser.yy"
                {
     ElementPtr pwd(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("password", pwd);
     ctx.leave();
 }
-#line 1657 "dhcp6_parser.cc"
+#line 1677 "dhcp6_parser.cc"
     break;
 
-  case 215: // $@38: %empty
-#line 860 "dhcp6_parser.yy"
+  case 219: // $@38: %empty
+#line 876 "dhcp6_parser.yy"
            {
     ctx.unique("host", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1666 "dhcp6_parser.cc"
+#line 1686 "dhcp6_parser.cc"
     break;
 
-  case 216: // host: "host" $@38 ":" "constant string"
-#line 863 "dhcp6_parser.yy"
+  case 220: // host: "host" $@38 ":" "constant string"
+#line 879 "dhcp6_parser.yy"
                {
     ElementPtr h(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("host", h);
     ctx.leave();
 }
-#line 1676 "dhcp6_parser.cc"
+#line 1696 "dhcp6_parser.cc"
     break;
 
-  case 217: // port: "port" ":" "integer"
-#line 869 "dhcp6_parser.yy"
+  case 221: // port: "port" ":" "integer"
+#line 885 "dhcp6_parser.yy"
                          {
     ctx.unique("port", ctx.loc2pos(yystack_[2].location));
     ElementPtr p(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("port", p);
 }
-#line 1686 "dhcp6_parser.cc"
+#line 1706 "dhcp6_parser.cc"
     break;
 
-  case 218: // $@39: %empty
-#line 875 "dhcp6_parser.yy"
+  case 222: // $@39: %empty
+#line 891 "dhcp6_parser.yy"
            {
     ctx.unique("name", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1695 "dhcp6_parser.cc"
+#line 1715 "dhcp6_parser.cc"
     break;
 
-  case 219: // name: "name" $@39 ":" "constant string"
-#line 878 "dhcp6_parser.yy"
+  case 223: // name: "name" $@39 ":" "constant string"
+#line 894 "dhcp6_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 1705 "dhcp6_parser.cc"
+#line 1725 "dhcp6_parser.cc"
     break;
 
-  case 220: // persist: "persist" ":" "boolean"
-#line 884 "dhcp6_parser.yy"
+  case 224: // persist: "persist" ":" "boolean"
+#line 900 "dhcp6_parser.yy"
                                {
     ctx.unique("persist", ctx.loc2pos(yystack_[2].location));
     ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("persist", n);
 }
-#line 1715 "dhcp6_parser.cc"
+#line 1735 "dhcp6_parser.cc"
     break;
 
-  case 221: // lfc_interval: "lfc-interval" ":" "integer"
-#line 890 "dhcp6_parser.yy"
+  case 225: // lfc_interval: "lfc-interval" ":" "integer"
+#line 906 "dhcp6_parser.yy"
                                          {
     ctx.unique("lfc-interval", ctx.loc2pos(yystack_[2].location));
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("lfc-interval", n);
 }
-#line 1725 "dhcp6_parser.cc"
+#line 1745 "dhcp6_parser.cc"
     break;
 
-  case 222: // readonly: "readonly" ":" "boolean"
-#line 896 "dhcp6_parser.yy"
+  case 226: // readonly: "readonly" ":" "boolean"
+#line 912 "dhcp6_parser.yy"
                                  {
     ctx.unique("readonly", ctx.loc2pos(yystack_[2].location));
     ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("readonly", n);
 }
-#line 1735 "dhcp6_parser.cc"
+#line 1755 "dhcp6_parser.cc"
     break;
 
-  case 223: // connect_timeout: "connect-timeout" ":" "integer"
-#line 902 "dhcp6_parser.yy"
+  case 227: // connect_timeout: "connect-timeout" ":" "integer"
+#line 918 "dhcp6_parser.yy"
                                                {
     ctx.unique("connect-timeout", ctx.loc2pos(yystack_[2].location));
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("connect-timeout", n);
 }
-#line 1745 "dhcp6_parser.cc"
+#line 1765 "dhcp6_parser.cc"
     break;
 
-  case 224: // reconnect_wait_time: "reconnect-wait-time" ":" "integer"
-#line 908 "dhcp6_parser.yy"
+  case 228: // reconnect_wait_time: "reconnect-wait-time" ":" "integer"
+#line 924 "dhcp6_parser.yy"
                                                        {
     ctx.unique("reconnect-wait-time", ctx.loc2pos(yystack_[2].location));
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("reconnect-wait-time", n);
 }
-#line 1755 "dhcp6_parser.cc"
+#line 1775 "dhcp6_parser.cc"
     break;
 
-  case 225: // max_row_errors: "max-row-errors" ":" "integer"
-#line 914 "dhcp6_parser.yy"
+  case 229: // max_row_errors: "max-row-errors" ":" "integer"
+#line 930 "dhcp6_parser.yy"
                                              {
     ctx.unique("max-row-errors", ctx.loc2pos(yystack_[2].location));
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-row-errors", n);
 }
-#line 1765 "dhcp6_parser.cc"
+#line 1785 "dhcp6_parser.cc"
     break;
 
-  case 226: // request_timeout: "request-timeout" ":" "integer"
-#line 920 "dhcp6_parser.yy"
+  case 230: // request_timeout: "request-timeout" ":" "integer"
+#line 936 "dhcp6_parser.yy"
                                                {
     ctx.unique("request-timeout", ctx.loc2pos(yystack_[2].location));
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("request-timeout", n);
 }
-#line 1775 "dhcp6_parser.cc"
+#line 1795 "dhcp6_parser.cc"
     break;
 
-  case 227: // tcp_keepalive: "tcp-keepalive" ":" "integer"
-#line 926 "dhcp6_parser.yy"
+  case 231: // tcp_keepalive: "tcp-keepalive" ":" "integer"
+#line 942 "dhcp6_parser.yy"
                                            {
     ctx.unique("tcp-keepalive", ctx.loc2pos(yystack_[2].location));
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("tcp-keepalive", n);
 }
-#line 1785 "dhcp6_parser.cc"
+#line 1805 "dhcp6_parser.cc"
     break;
 
-  case 228: // tcp_nodelay: "tcp-nodelay" ":" "boolean"
-#line 932 "dhcp6_parser.yy"
+  case 232: // tcp_nodelay: "tcp-nodelay" ":" "boolean"
+#line 948 "dhcp6_parser.yy"
                                        {
     ctx.unique("tcp-nodelay", ctx.loc2pos(yystack_[2].location));
     ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("tcp-nodelay", n);
 }
-#line 1795 "dhcp6_parser.cc"
+#line 1815 "dhcp6_parser.cc"
     break;
 
-  case 229: // $@40: %empty
-#line 938 "dhcp6_parser.yy"
+  case 233: // $@40: %empty
+#line 954 "dhcp6_parser.yy"
                                {
     ctx.unique("contact-points", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1804 "dhcp6_parser.cc"
+#line 1824 "dhcp6_parser.cc"
     break;
 
-  case 230: // contact_points: "contact-points" $@40 ":" "constant string"
-#line 941 "dhcp6_parser.yy"
+  case 234: // contact_points: "contact-points" $@40 ":" "constant string"
+#line 957 "dhcp6_parser.yy"
                {
     ElementPtr cp(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("contact-points", cp);
     ctx.leave();
 }
-#line 1814 "dhcp6_parser.cc"
+#line 1834 "dhcp6_parser.cc"
     break;
 
-  case 231: // max_reconnect_tries: "max-reconnect-tries" ":" "integer"
-#line 947 "dhcp6_parser.yy"
+  case 235: // max_reconnect_tries: "max-reconnect-tries" ":" "integer"
+#line 963 "dhcp6_parser.yy"
                                                        {
     ctx.unique("max-reconnect-tries", ctx.loc2pos(yystack_[2].location));
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-reconnect-tries", n);
 }
-#line 1824 "dhcp6_parser.cc"
+#line 1844 "dhcp6_parser.cc"
     break;
 
-  case 232: // $@41: %empty
-#line 953 "dhcp6_parser.yy"
+  case 236: // $@41: %empty
+#line 969 "dhcp6_parser.yy"
                    {
     ctx.unique("keyspace", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1833 "dhcp6_parser.cc"
+#line 1853 "dhcp6_parser.cc"
     break;
 
-  case 233: // keyspace: "keyspace" $@41 ":" "constant string"
-#line 956 "dhcp6_parser.yy"
+  case 237: // keyspace: "keyspace" $@41 ":" "constant string"
+#line 972 "dhcp6_parser.yy"
                {
     ElementPtr ks(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("keyspace", ks);
     ctx.leave();
 }
-#line 1843 "dhcp6_parser.cc"
+#line 1863 "dhcp6_parser.cc"
     break;
 
-  case 234: // $@42: %empty
-#line 962 "dhcp6_parser.yy"
+  case 238: // $@42: %empty
+#line 978 "dhcp6_parser.yy"
                          {
     ctx.unique("consistency", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1852 "dhcp6_parser.cc"
+#line 1872 "dhcp6_parser.cc"
     break;
 
-  case 235: // consistency: "consistency" $@42 ":" "constant string"
-#line 965 "dhcp6_parser.yy"
+  case 239: // consistency: "consistency" $@42 ":" "constant string"
+#line 981 "dhcp6_parser.yy"
                {
     ElementPtr c(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("consistency", c);
     ctx.leave();
 }
-#line 1862 "dhcp6_parser.cc"
+#line 1882 "dhcp6_parser.cc"
     break;
 
-  case 236: // $@43: %empty
-#line 971 "dhcp6_parser.yy"
+  case 240: // $@43: %empty
+#line 987 "dhcp6_parser.yy"
                                        {
     ctx.unique("serial-consistency", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1871 "dhcp6_parser.cc"
+#line 1891 "dhcp6_parser.cc"
     break;
 
-  case 237: // serial_consistency: "serial-consistency" $@43 ":" "constant string"
-#line 974 "dhcp6_parser.yy"
+  case 241: // serial_consistency: "serial-consistency" $@43 ":" "constant string"
+#line 990 "dhcp6_parser.yy"
                {
     ElementPtr c(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("serial-consistency", c);
     ctx.leave();
 }
-#line 1881 "dhcp6_parser.cc"
+#line 1901 "dhcp6_parser.cc"
     break;
 
-  case 238: // $@44: %empty
-#line 980 "dhcp6_parser.yy"
+  case 242: // $@44: %empty
+#line 996 "dhcp6_parser.yy"
                              {
     ctx.unique("sanity-checks", ctx.loc2pos(yystack_[0].location));
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1889,29 +1909,29 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(m);
     ctx.enter(ctx.SANITY_CHECKS);
 }
-#line 1893 "dhcp6_parser.cc"
+#line 1913 "dhcp6_parser.cc"
     break;
 
-  case 239: // sanity_checks: "sanity-checks" $@44 ":" "{" sanity_checks_params "}"
-#line 986 "dhcp6_parser.yy"
+  case 243: // sanity_checks: "sanity-checks" $@44 ":" "{" sanity_checks_params "}"
+#line 1002 "dhcp6_parser.yy"
                                                            {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1902 "dhcp6_parser.cc"
+#line 1922 "dhcp6_parser.cc"
     break;
 
-  case 243: // $@45: %empty
-#line 996 "dhcp6_parser.yy"
+  case 247: // $@45: %empty
+#line 1012 "dhcp6_parser.yy"
                            {
     ctx.unique("lease-checks", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1911 "dhcp6_parser.cc"
+#line 1931 "dhcp6_parser.cc"
     break;
 
-  case 244: // lease_checks: "lease-checks" $@45 ":" "constant string"
-#line 999 "dhcp6_parser.yy"
+  case 248: // lease_checks: "lease-checks" $@45 ":" "constant string"
+#line 1015 "dhcp6_parser.yy"
                {
 
     if ( (string(yystack_[0].value.as < std::string > ()) == "none") ||
@@ -1927,11 +1947,11 @@ namespace isc { namespace dhcp {
               ", supported values are: none, warn, fix, fix-del, del");
     }
 }
-#line 1931 "dhcp6_parser.cc"
+#line 1951 "dhcp6_parser.cc"
     break;
 
-  case 245: // $@46: %empty
-#line 1015 "dhcp6_parser.yy"
+  case 249: // $@46: %empty
+#line 1031 "dhcp6_parser.yy"
                          {
     ctx.unique("mac-sources", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -1939,38 +1959,38 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(l);
     ctx.enter(ctx.MAC_SOURCES);
 }
-#line 1943 "dhcp6_parser.cc"
+#line 1963 "dhcp6_parser.cc"
     break;
 
-  case 246: // mac_sources: "mac-sources" $@46 ":" "[" mac_sources_list "]"
-#line 1021 "dhcp6_parser.yy"
+  case 250: // mac_sources: "mac-sources" $@46 ":" "[" mac_sources_list "]"
+#line 1037 "dhcp6_parser.yy"
                                                          {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1952 "dhcp6_parser.cc"
+#line 1972 "dhcp6_parser.cc"
     break;
 
-  case 251: // duid_id: "duid"
-#line 1034 "dhcp6_parser.yy"
+  case 255: // duid_id: "duid"
+#line 1050 "dhcp6_parser.yy"
                {
     ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(duid);
 }
-#line 1961 "dhcp6_parser.cc"
+#line 1981 "dhcp6_parser.cc"
     break;
 
-  case 252: // string_id: "constant string"
-#line 1039 "dhcp6_parser.yy"
+  case 256: // string_id: "constant string"
+#line 1055 "dhcp6_parser.yy"
                    {
     ElementPtr duid(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(duid);
 }
-#line 1970 "dhcp6_parser.cc"
+#line 1990 "dhcp6_parser.cc"
     break;
 
-  case 253: // $@47: %empty
-#line 1044 "dhcp6_parser.yy"
+  case 257: // $@47: %empty
+#line 1060 "dhcp6_parser.yy"
                                                            {
     ctx.unique("host-reservation-identifiers", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -1978,38 +1998,38 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(l);
     ctx.enter(ctx.HOST_RESERVATION_IDENTIFIERS);
 }
-#line 1982 "dhcp6_parser.cc"
+#line 2002 "dhcp6_parser.cc"
     break;
 
-  case 254: // host_reservation_identifiers: "host-reservation-identifiers" $@47 ":" "[" host_reservation_identifiers_list "]"
-#line 1050 "dhcp6_parser.yy"
+  case 258: // host_reservation_identifiers: "host-reservation-identifiers" $@47 ":" "[" host_reservation_identifiers_list "]"
+#line 1066 "dhcp6_parser.yy"
                                                                           {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1991 "dhcp6_parser.cc"
+#line 2011 "dhcp6_parser.cc"
     break;
 
-  case 260: // hw_address_id: "hw-address"
-#line 1064 "dhcp6_parser.yy"
+  case 264: // hw_address_id: "hw-address"
+#line 1080 "dhcp6_parser.yy"
                            {
     ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(hwaddr);
 }
-#line 2000 "dhcp6_parser.cc"
+#line 2020 "dhcp6_parser.cc"
     break;
 
-  case 261: // flex_id: "flex-id"
-#line 1069 "dhcp6_parser.yy"
+  case 265: // flex_id: "flex-id"
+#line 1085 "dhcp6_parser.yy"
                   {
     ElementPtr flex_id(new StringElement("flex-id", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(flex_id);
 }
-#line 2009 "dhcp6_parser.cc"
+#line 2029 "dhcp6_parser.cc"
     break;
 
-  case 262: // $@48: %empty
-#line 1076 "dhcp6_parser.yy"
+  case 266: // $@48: %empty
+#line 1092 "dhcp6_parser.yy"
                                                {
     ctx.unique("relay-supplied-options", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -2017,20 +2037,20 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(l);
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2021 "dhcp6_parser.cc"
+#line 2041 "dhcp6_parser.cc"
     break;
 
-  case 263: // relay_supplied_options: "relay-supplied-options" $@48 ":" "[" list_content "]"
-#line 1082 "dhcp6_parser.yy"
+  case 267: // relay_supplied_options: "relay-supplied-options" $@48 ":" "[" list_content "]"
+#line 1098 "dhcp6_parser.yy"
                                                      {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2030 "dhcp6_parser.cc"
+#line 2050 "dhcp6_parser.cc"
     break;
 
-  case 264: // $@49: %empty
-#line 1089 "dhcp6_parser.yy"
+  case 268: // $@49: %empty
+#line 1105 "dhcp6_parser.yy"
                                            {
     ctx.unique("multi-threading", ctx.loc2pos(yystack_[0].location));
     ElementPtr mt(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -2038,52 +2058,52 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(mt);
     ctx.enter(ctx.DHCP_MULTI_THREADING);
 }
-#line 2042 "dhcp6_parser.cc"
+#line 2062 "dhcp6_parser.cc"
     break;
 
-  case 265: // dhcp_multi_threading: "multi-threading" $@49 ":" "{" multi_threading_params "}"
-#line 1095 "dhcp6_parser.yy"
+  case 269: // dhcp_multi_threading: "multi-threading" $@49 ":" "{" multi_threading_params "}"
+#line 1111 "dhcp6_parser.yy"
                                                              {
     // The enable parameter is required.
     ctx.require("enable-multi-threading", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2053 "dhcp6_parser.cc"
+#line 2073 "dhcp6_parser.cc"
     break;
 
-  case 274: // enable_multi_threading: "enable-multi-threading" ":" "boolean"
-#line 1114 "dhcp6_parser.yy"
+  case 278: // enable_multi_threading: "enable-multi-threading" ":" "boolean"
+#line 1130 "dhcp6_parser.yy"
                                                              {
     ctx.unique("enable-multi-threading", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("enable-multi-threading", b);
 }
-#line 2063 "dhcp6_parser.cc"
+#line 2083 "dhcp6_parser.cc"
     break;
 
-  case 275: // thread_pool_size: "thread-pool-size" ":" "integer"
-#line 1120 "dhcp6_parser.yy"
+  case 279: // thread_pool_size: "thread-pool-size" ":" "integer"
+#line 1136 "dhcp6_parser.yy"
                                                  {
     ctx.unique("thread-pool-size", ctx.loc2pos(yystack_[2].location));
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("thread-pool-size", prf);
 }
-#line 2073 "dhcp6_parser.cc"
+#line 2093 "dhcp6_parser.cc"
     break;
 
-  case 276: // packet_queue_size: "packet-queue-size" ":" "integer"
-#line 1126 "dhcp6_parser.yy"
+  case 280: // packet_queue_size: "packet-queue-size" ":" "integer"
+#line 1142 "dhcp6_parser.yy"
                                                    {
     ctx.unique("packet-queue-size", ctx.loc2pos(yystack_[2].location));
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("packet-queue-size", prf);
 }
-#line 2083 "dhcp6_parser.cc"
+#line 2103 "dhcp6_parser.cc"
     break;
 
-  case 277: // $@50: %empty
-#line 1132 "dhcp6_parser.yy"
+  case 281: // $@50: %empty
+#line 1148 "dhcp6_parser.yy"
                                  {
     ctx.unique("hooks-libraries", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -2091,97 +2111,97 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(l);
     ctx.enter(ctx.HOOKS_LIBRARIES);
 }
-#line 2095 "dhcp6_parser.cc"
+#line 2115 "dhcp6_parser.cc"
     break;
 
-  case 278: // hooks_libraries: "hooks-libraries" $@50 ":" "[" hooks_libraries_list "]"
-#line 1138 "dhcp6_parser.yy"
+  case 282: // hooks_libraries: "hooks-libraries" $@50 ":" "[" hooks_libraries_list "]"
+#line 1154 "dhcp6_parser.yy"
                                                              {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2104 "dhcp6_parser.cc"
+#line 2124 "dhcp6_parser.cc"
     break;
 
-  case 283: // $@51: %empty
-#line 1151 "dhcp6_parser.yy"
+  case 287: // $@51: %empty
+#line 1167 "dhcp6_parser.yy"
                               {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2114 "dhcp6_parser.cc"
+#line 2134 "dhcp6_parser.cc"
     break;
 
-  case 284: // hooks_library: "{" $@51 hooks_params "}"
-#line 1155 "dhcp6_parser.yy"
+  case 288: // hooks_library: "{" $@51 hooks_params "}"
+#line 1171 "dhcp6_parser.yy"
                               {
     // The library hooks parameter is required
     ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 2124 "dhcp6_parser.cc"
+#line 2144 "dhcp6_parser.cc"
     break;
 
-  case 285: // $@52: %empty
-#line 1161 "dhcp6_parser.yy"
+  case 289: // $@52: %empty
+#line 1177 "dhcp6_parser.yy"
                                   {
     // Parse the hooks-libraries list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2134 "dhcp6_parser.cc"
+#line 2154 "dhcp6_parser.cc"
     break;
 
-  case 286: // sub_hooks_library: "{" $@52 hooks_params "}"
-#line 1165 "dhcp6_parser.yy"
+  case 290: // sub_hooks_library: "{" $@52 hooks_params "}"
+#line 1181 "dhcp6_parser.yy"
                               {
     // The library hooks parameter is required
     ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 2144 "dhcp6_parser.cc"
+#line 2164 "dhcp6_parser.cc"
     break;
 
-  case 292: // $@53: %empty
-#line 1180 "dhcp6_parser.yy"
+  case 296: // $@53: %empty
+#line 1196 "dhcp6_parser.yy"
                  {
     ctx.unique("library", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2153 "dhcp6_parser.cc"
+#line 2173 "dhcp6_parser.cc"
     break;
 
-  case 293: // library: "library" $@53 ":" "constant string"
-#line 1183 "dhcp6_parser.yy"
+  case 297: // library: "library" $@53 ":" "constant string"
+#line 1199 "dhcp6_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 2163 "dhcp6_parser.cc"
+#line 2183 "dhcp6_parser.cc"
     break;
 
-  case 294: // $@54: %empty
-#line 1189 "dhcp6_parser.yy"
+  case 298: // $@54: %empty
+#line 1205 "dhcp6_parser.yy"
                        {
     ctx.unique("parameters", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2172 "dhcp6_parser.cc"
+#line 2192 "dhcp6_parser.cc"
     break;
 
-  case 295: // parameters: "parameters" $@54 ":" map_value
-#line 1192 "dhcp6_parser.yy"
+  case 299: // parameters: "parameters" $@54 ":" map_value
+#line 1208 "dhcp6_parser.yy"
                   {
     ctx.stack_.back()->set("parameters", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 2181 "dhcp6_parser.cc"
+#line 2201 "dhcp6_parser.cc"
     break;
 
-  case 296: // $@55: %empty
-#line 1198 "dhcp6_parser.yy"
+  case 300: // $@55: %empty
+#line 1214 "dhcp6_parser.yy"
                                                      {
     ctx.unique("expired-leases-processing", ctx.loc2pos(yystack_[0].location));
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -2189,81 +2209,81 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(m);
     ctx.enter(ctx.EXPIRED_LEASES_PROCESSING);
 }
-#line 2193 "dhcp6_parser.cc"
+#line 2213 "dhcp6_parser.cc"
     break;
 
-  case 297: // expired_leases_processing: "expired-leases-processing" $@55 ":" "{" expired_leases_params "}"
-#line 1204 "dhcp6_parser.yy"
+  case 301: // expired_leases_processing: "expired-leases-processing" $@55 ":" "{" expired_leases_params "}"
+#line 1220 "dhcp6_parser.yy"
                                                             {
     // No expired lease parameter is required
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2203 "dhcp6_parser.cc"
+#line 2223 "dhcp6_parser.cc"
     break;
 
-  case 306: // reclaim_timer_wait_time: "reclaim-timer-wait-time" ":" "integer"
-#line 1222 "dhcp6_parser.yy"
+  case 310: // reclaim_timer_wait_time: "reclaim-timer-wait-time" ":" "integer"
+#line 1238 "dhcp6_parser.yy"
                                                                {
     ctx.unique("reclaim-timer-wait-time", ctx.loc2pos(yystack_[2].location));
     ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("reclaim-timer-wait-time", value);
 }
-#line 2213 "dhcp6_parser.cc"
+#line 2233 "dhcp6_parser.cc"
     break;
 
-  case 307: // flush_reclaimed_timer_wait_time: "flush-reclaimed-timer-wait-time" ":" "integer"
-#line 1228 "dhcp6_parser.yy"
+  case 311: // flush_reclaimed_timer_wait_time: "flush-reclaimed-timer-wait-time" ":" "integer"
+#line 1244 "dhcp6_parser.yy"
                                                                                {
     ctx.unique("flush-reclaimed-timer-wait-time", ctx.loc2pos(yystack_[2].location));
     ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("flush-reclaimed-timer-wait-time", value);
 }
-#line 2223 "dhcp6_parser.cc"
+#line 2243 "dhcp6_parser.cc"
     break;
 
-  case 308: // hold_reclaimed_time: "hold-reclaimed-time" ":" "integer"
-#line 1234 "dhcp6_parser.yy"
+  case 312: // hold_reclaimed_time: "hold-reclaimed-time" ":" "integer"
+#line 1250 "dhcp6_parser.yy"
                                                        {
     ctx.unique("hold-reclaimed-time", ctx.loc2pos(yystack_[2].location));
     ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hold-reclaimed-time", value);
 }
-#line 2233 "dhcp6_parser.cc"
+#line 2253 "dhcp6_parser.cc"
     break;
 
-  case 309: // max_reclaim_leases: "max-reclaim-leases" ":" "integer"
-#line 1240 "dhcp6_parser.yy"
+  case 313: // max_reclaim_leases: "max-reclaim-leases" ":" "integer"
+#line 1256 "dhcp6_parser.yy"
                                                      {
     ctx.unique("max-reclaim-leases", ctx.loc2pos(yystack_[2].location));
     ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-reclaim-leases", value);
 }
-#line 2243 "dhcp6_parser.cc"
+#line 2263 "dhcp6_parser.cc"
     break;
 
-  case 310: // max_reclaim_time: "max-reclaim-time" ":" "integer"
-#line 1246 "dhcp6_parser.yy"
+  case 314: // max_reclaim_time: "max-reclaim-time" ":" "integer"
+#line 1262 "dhcp6_parser.yy"
                                                  {
     ctx.unique("max-reclaim-time", ctx.loc2pos(yystack_[2].location));
     ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-reclaim-time", value);
 }
-#line 2253 "dhcp6_parser.cc"
+#line 2273 "dhcp6_parser.cc"
     break;
 
-  case 311: // unwarned_reclaim_cycles: "unwarned-reclaim-cycles" ":" "integer"
-#line 1252 "dhcp6_parser.yy"
+  case 315: // unwarned_reclaim_cycles: "unwarned-reclaim-cycles" ":" "integer"
+#line 1268 "dhcp6_parser.yy"
                                                                {
     ctx.unique("unwarned-reclaim-cycles", ctx.loc2pos(yystack_[2].location));
     ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("unwarned-reclaim-cycles", value);
 }
-#line 2263 "dhcp6_parser.cc"
+#line 2283 "dhcp6_parser.cc"
     break;
 
-  case 312: // $@56: %empty
-#line 1261 "dhcp6_parser.yy"
+  case 316: // $@56: %empty
+#line 1277 "dhcp6_parser.yy"
                       {
     ctx.unique("subnet6", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -2271,30 +2291,30 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(l);
     ctx.enter(ctx.SUBNET6);
 }
-#line 2275 "dhcp6_parser.cc"
+#line 2295 "dhcp6_parser.cc"
     break;
 
-  case 313: // subnet6_list: "subnet6" $@56 ":" "[" subnet6_list_content "]"
-#line 1267 "dhcp6_parser.yy"
+  case 317: // subnet6_list: "subnet6" $@56 ":" "[" subnet6_list_content "]"
+#line 1283 "dhcp6_parser.yy"
                                                              {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2284 "dhcp6_parser.cc"
+#line 2304 "dhcp6_parser.cc"
     break;
 
-  case 318: // $@57: %empty
-#line 1287 "dhcp6_parser.yy"
+  case 322: // $@57: %empty
+#line 1303 "dhcp6_parser.yy"
                         {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2294 "dhcp6_parser.cc"
+#line 2314 "dhcp6_parser.cc"
     break;
 
-  case 319: // subnet6: "{" $@57 subnet6_params "}"
-#line 1291 "dhcp6_parser.yy"
+  case 323: // subnet6: "{" $@57 subnet6_params "}"
+#line 1307 "dhcp6_parser.yy"
                                 {
     // Once we reached this place, the subnet parsing is now complete.
     // If we want to, we can implement default values here.
@@ -2316,107 +2336,107 @@ namespace isc { namespace dhcp {
     ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 2320 "dhcp6_parser.cc"
+#line 2340 "dhcp6_parser.cc"
     break;
 
-  case 320: // $@58: %empty
-#line 1313 "dhcp6_parser.yy"
+  case 324: // $@58: %empty
+#line 1329 "dhcp6_parser.yy"
                             {
     // Parse the subnet6 list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2330 "dhcp6_parser.cc"
+#line 2350 "dhcp6_parser.cc"
     break;
 
-  case 321: // sub_subnet6: "{" $@58 subnet6_params "}"
-#line 1317 "dhcp6_parser.yy"
+  case 325: // sub_subnet6: "{" $@58 subnet6_params "}"
+#line 1333 "dhcp6_parser.yy"
                                 {
     // The subnet subnet6 parameter is required
     ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 2340 "dhcp6_parser.cc"
+#line 2360 "dhcp6_parser.cc"
     break;
 
-  case 360: // $@59: %empty
-#line 1367 "dhcp6_parser.yy"
+  case 366: // $@59: %empty
+#line 1385 "dhcp6_parser.yy"
                {
     ctx.unique("subnet", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2349 "dhcp6_parser.cc"
+#line 2369 "dhcp6_parser.cc"
     break;
 
-  case 361: // subnet: "subnet" $@59 ":" "constant string"
-#line 1370 "dhcp6_parser.yy"
+  case 367: // subnet: "subnet" $@59 ":" "constant string"
+#line 1388 "dhcp6_parser.yy"
                {
     ElementPtr subnet(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("subnet", subnet);
     ctx.leave();
 }
-#line 2359 "dhcp6_parser.cc"
+#line 2379 "dhcp6_parser.cc"
     break;
 
-  case 362: // $@60: %empty
-#line 1376 "dhcp6_parser.yy"
+  case 368: // $@60: %empty
+#line 1394 "dhcp6_parser.yy"
                      {
     ctx.unique("interface", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2368 "dhcp6_parser.cc"
+#line 2388 "dhcp6_parser.cc"
     break;
 
-  case 363: // interface: "interface" $@60 ":" "constant string"
-#line 1379 "dhcp6_parser.yy"
+  case 369: // interface: "interface" $@60 ":" "constant string"
+#line 1397 "dhcp6_parser.yy"
                {
     ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interface", iface);
     ctx.leave();
 }
-#line 2378 "dhcp6_parser.cc"
+#line 2398 "dhcp6_parser.cc"
     break;
 
-  case 364: // $@61: %empty
-#line 1385 "dhcp6_parser.yy"
+  case 370: // $@61: %empty
+#line 1403 "dhcp6_parser.yy"
                            {
     ctx.unique("interface-id", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2387 "dhcp6_parser.cc"
+#line 2407 "dhcp6_parser.cc"
     break;
 
-  case 365: // interface_id: "interface-id" $@61 ":" "constant string"
-#line 1388 "dhcp6_parser.yy"
+  case 371: // interface_id: "interface-id" $@61 ":" "constant string"
+#line 1406 "dhcp6_parser.yy"
                {
     ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interface-id", iface);
     ctx.leave();
 }
-#line 2397 "dhcp6_parser.cc"
+#line 2417 "dhcp6_parser.cc"
     break;
 
-  case 366: // $@62: %empty
-#line 1394 "dhcp6_parser.yy"
+  case 372: // $@62: %empty
+#line 1412 "dhcp6_parser.yy"
                            {
     ctx.unique("client-class", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2406 "dhcp6_parser.cc"
+#line 2426 "dhcp6_parser.cc"
     break;
 
-  case 367: // client_class: "client-class" $@62 ":" "constant string"
-#line 1397 "dhcp6_parser.yy"
+  case 373: // client_class: "client-class" $@62 ":" "constant string"
+#line 1415 "dhcp6_parser.yy"
                {
     ElementPtr cls(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("client-class", cls);
     ctx.leave();
 }
-#line 2416 "dhcp6_parser.cc"
+#line 2436 "dhcp6_parser.cc"
     break;
 
-  case 368: // $@63: %empty
-#line 1403 "dhcp6_parser.yy"
+  case 374: // $@63: %empty
+#line 1421 "dhcp6_parser.yy"
                                                {
     ctx.unique("require-client-classes", ctx.loc2pos(yystack_[0].location));
     ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -2424,82 +2444,82 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(c);
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2428 "dhcp6_parser.cc"
+#line 2448 "dhcp6_parser.cc"
     break;
 
-  case 369: // require_client_classes: "require-client-classes" $@63 ":" list_strings
-#line 1409 "dhcp6_parser.yy"
+  case 375: // require_client_classes: "require-client-classes" $@63 ":" list_strings
+#line 1427 "dhcp6_parser.yy"
                      {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2437 "dhcp6_parser.cc"
+#line 2457 "dhcp6_parser.cc"
     break;
 
-  case 370: // $@64: %empty
-#line 1414 "dhcp6_parser.yy"
+  case 376: // $@64: %empty
+#line 1432 "dhcp6_parser.yy"
                                    {
     ctx.unique("reservation-mode", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.RESERVATION_MODE);
 }
-#line 2446 "dhcp6_parser.cc"
+#line 2466 "dhcp6_parser.cc"
     break;
 
-  case 371: // reservation_mode: "reservation-mode" $@64 ":" hr_mode
-#line 1417 "dhcp6_parser.yy"
+  case 377: // reservation_mode: "reservation-mode" $@64 ":" hr_mode
+#line 1435 "dhcp6_parser.yy"
                 {
     ctx.stack_.back()->set("reservation-mode", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 2455 "dhcp6_parser.cc"
+#line 2475 "dhcp6_parser.cc"
     break;
 
-  case 372: // hr_mode: "disabled"
-#line 1422 "dhcp6_parser.yy"
+  case 378: // hr_mode: "disabled"
+#line 1440 "dhcp6_parser.yy"
                   { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("disabled", ctx.loc2pos(yystack_[0].location))); }
-#line 2461 "dhcp6_parser.cc"
+#line 2481 "dhcp6_parser.cc"
     break;
 
-  case 373: // hr_mode: "out-of-pool"
-#line 1423 "dhcp6_parser.yy"
+  case 379: // hr_mode: "out-of-pool"
+#line 1441 "dhcp6_parser.yy"
                      { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(yystack_[0].location))); }
-#line 2467 "dhcp6_parser.cc"
+#line 2487 "dhcp6_parser.cc"
     break;
 
-  case 374: // hr_mode: "global"
-#line 1424 "dhcp6_parser.yy"
+  case 380: // hr_mode: "global"
+#line 1442 "dhcp6_parser.yy"
                 { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("global", ctx.loc2pos(yystack_[0].location))); }
-#line 2473 "dhcp6_parser.cc"
+#line 2493 "dhcp6_parser.cc"
     break;
 
-  case 375: // hr_mode: "all"
-#line 1425 "dhcp6_parser.yy"
+  case 381: // hr_mode: "all"
+#line 1443 "dhcp6_parser.yy"
              { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); }
-#line 2479 "dhcp6_parser.cc"
+#line 2499 "dhcp6_parser.cc"
     break;
 
-  case 376: // id: "id" ":" "integer"
-#line 1428 "dhcp6_parser.yy"
+  case 382: // id: "id" ":" "integer"
+#line 1446 "dhcp6_parser.yy"
                      {
     ctx.unique("id", ctx.loc2pos(yystack_[2].location));
     ElementPtr id(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("id", id);
 }
-#line 2489 "dhcp6_parser.cc"
+#line 2509 "dhcp6_parser.cc"
     break;
 
-  case 377: // rapid_commit: "rapid-commit" ":" "boolean"
-#line 1434 "dhcp6_parser.yy"
+  case 383: // rapid_commit: "rapid-commit" ":" "boolean"
+#line 1452 "dhcp6_parser.yy"
                                          {
     ctx.unique("rapid-commit", ctx.loc2pos(yystack_[2].location));
     ElementPtr rc(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("rapid-commit", rc);
 }
-#line 2499 "dhcp6_parser.cc"
+#line 2519 "dhcp6_parser.cc"
     break;
 
-  case 378: // $@65: %empty
-#line 1442 "dhcp6_parser.yy"
+  case 384: // $@65: %empty
+#line 1460 "dhcp6_parser.yy"
                                  {
     ctx.unique("shared-networks", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -2507,38 +2527,38 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(l);
     ctx.enter(ctx.SHARED_NETWORK);
 }
-#line 2511 "dhcp6_parser.cc"
+#line 2531 "dhcp6_parser.cc"
     break;
 
-  case 379: // shared_networks: "shared-networks" $@65 ":" "[" shared_networks_content "]"
-#line 1448 "dhcp6_parser.yy"
+  case 385: // shared_networks: "shared-networks" $@65 ":" "[" shared_networks_content "]"
+#line 1466 "dhcp6_parser.yy"
                                                                 {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2520 "dhcp6_parser.cc"
+#line 2540 "dhcp6_parser.cc"
     break;
 
-  case 384: // $@66: %empty
-#line 1463 "dhcp6_parser.yy"
+  case 390: // $@66: %empty
+#line 1481 "dhcp6_parser.yy"
                                {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2530 "dhcp6_parser.cc"
+#line 2550 "dhcp6_parser.cc"
     break;
 
-  case 385: // shared_network: "{" $@66 shared_network_params "}"
-#line 1467 "dhcp6_parser.yy"
+  case 391: // shared_network: "{" $@66 shared_network_params "}"
+#line 1485 "dhcp6_parser.yy"
                                        {
     ctx.stack_.pop_back();
 }
-#line 2538 "dhcp6_parser.cc"
+#line 2558 "dhcp6_parser.cc"
     break;
 
-  case 421: // $@67: %empty
-#line 1514 "dhcp6_parser.yy"
+  case 429: // $@67: %empty
+#line 1534 "dhcp6_parser.yy"
                             {
     ctx.unique("option-def", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -2546,47 +2566,47 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(l);
     ctx.enter(ctx.OPTION_DEF);
 }
-#line 2550 "dhcp6_parser.cc"
+#line 2570 "dhcp6_parser.cc"
     break;
 
-  case 422: // option_def_list: "option-def" $@67 ":" "[" option_def_list_content "]"
-#line 1520 "dhcp6_parser.yy"
+  case 430: // option_def_list: "option-def" $@67 ":" "[" option_def_list_content "]"
+#line 1540 "dhcp6_parser.yy"
                                                                 {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2559 "dhcp6_parser.cc"
+#line 2579 "dhcp6_parser.cc"
     break;
 
-  case 423: // $@68: %empty
-#line 1528 "dhcp6_parser.yy"
+  case 431: // $@68: %empty
+#line 1548 "dhcp6_parser.yy"
                                     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2568 "dhcp6_parser.cc"
+#line 2588 "dhcp6_parser.cc"
     break;
 
-  case 424: // sub_option_def_list: "{" $@68 option_def_list "}"
-#line 1531 "dhcp6_parser.yy"
+  case 432: // sub_option_def_list: "{" $@68 option_def_list "}"
+#line 1551 "dhcp6_parser.yy"
                                  {
     // parsing completed
 }
-#line 2576 "dhcp6_parser.cc"
+#line 2596 "dhcp6_parser.cc"
     break;
 
-  case 429: // $@69: %empty
-#line 1547 "dhcp6_parser.yy"
+  case 437: // $@69: %empty
+#line 1567 "dhcp6_parser.yy"
                                  {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2586 "dhcp6_parser.cc"
+#line 2606 "dhcp6_parser.cc"
     break;
 
-  case 430: // option_def_entry: "{" $@69 option_def_params "}"
-#line 1551 "dhcp6_parser.yy"
+  case 438: // option_def_entry: "{" $@69 option_def_params "}"
+#line 1571 "dhcp6_parser.yy"
                                    {
     // The name, code and type option def parameters are required.
     ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -2594,21 +2614,21 @@ namespace isc { namespace dhcp {
     ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 2598 "dhcp6_parser.cc"
+#line 2618 "dhcp6_parser.cc"
     break;
 
-  case 431: // $@70: %empty
-#line 1562 "dhcp6_parser.yy"
+  case 439: // $@70: %empty
+#line 1582 "dhcp6_parser.yy"
                                {
     // Parse the option-def list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2608 "dhcp6_parser.cc"
+#line 2628 "dhcp6_parser.cc"
     break;
 
-  case 432: // sub_option_def: "{" $@70 option_def_params "}"
-#line 1566 "dhcp6_parser.yy"
+  case 440: // sub_option_def: "{" $@70 option_def_params "}"
+#line 1586 "dhcp6_parser.yy"
                                    {
     // The name, code and type option def parameters are required.
     ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -2616,107 +2636,107 @@ namespace isc { namespace dhcp {
     ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 2620 "dhcp6_parser.cc"
+#line 2640 "dhcp6_parser.cc"
     break;
 
-  case 448: // code: "code" ":" "integer"
-#line 1598 "dhcp6_parser.yy"
+  case 456: // code: "code" ":" "integer"
+#line 1618 "dhcp6_parser.yy"
                          {
     ctx.unique("code", ctx.loc2pos(yystack_[2].location));
     ElementPtr code(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("code", code);
 }
-#line 2630 "dhcp6_parser.cc"
+#line 2650 "dhcp6_parser.cc"
     break;
 
-  case 450: // $@71: %empty
-#line 1606 "dhcp6_parser.yy"
+  case 458: // $@71: %empty
+#line 1626 "dhcp6_parser.yy"
                       {
     ctx.unique("type", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2639 "dhcp6_parser.cc"
+#line 2659 "dhcp6_parser.cc"
     break;
 
-  case 451: // option_def_type: "type" $@71 ":" "constant string"
-#line 1609 "dhcp6_parser.yy"
+  case 459: // option_def_type: "type" $@71 ":" "constant string"
+#line 1629 "dhcp6_parser.yy"
                {
     ElementPtr prf(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("type", prf);
     ctx.leave();
 }
-#line 2649 "dhcp6_parser.cc"
+#line 2669 "dhcp6_parser.cc"
     break;
 
-  case 452: // $@72: %empty
-#line 1615 "dhcp6_parser.yy"
+  case 460: // $@72: %empty
+#line 1635 "dhcp6_parser.yy"
                                       {
     ctx.unique("record-types", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2658 "dhcp6_parser.cc"
+#line 2678 "dhcp6_parser.cc"
     break;
 
-  case 453: // option_def_record_types: "record-types" $@72 ":" "constant string"
-#line 1618 "dhcp6_parser.yy"
+  case 461: // option_def_record_types: "record-types" $@72 ":" "constant string"
+#line 1638 "dhcp6_parser.yy"
                {
     ElementPtr rtypes(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("record-types", rtypes);
     ctx.leave();
 }
-#line 2668 "dhcp6_parser.cc"
+#line 2688 "dhcp6_parser.cc"
     break;
 
-  case 454: // $@73: %empty
-#line 1624 "dhcp6_parser.yy"
+  case 462: // $@73: %empty
+#line 1644 "dhcp6_parser.yy"
              {
     ctx.unique("space", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2677 "dhcp6_parser.cc"
+#line 2697 "dhcp6_parser.cc"
     break;
 
-  case 455: // space: "space" $@73 ":" "constant string"
-#line 1627 "dhcp6_parser.yy"
+  case 463: // space: "space" $@73 ":" "constant string"
+#line 1647 "dhcp6_parser.yy"
                {
     ElementPtr space(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("space", space);
     ctx.leave();
 }
-#line 2687 "dhcp6_parser.cc"
+#line 2707 "dhcp6_parser.cc"
     break;
 
-  case 457: // $@74: %empty
-#line 1635 "dhcp6_parser.yy"
+  case 465: // $@74: %empty
+#line 1655 "dhcp6_parser.yy"
                                     {
     ctx.unique("encapsulate", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2696 "dhcp6_parser.cc"
+#line 2716 "dhcp6_parser.cc"
     break;
 
-  case 458: // option_def_encapsulate: "encapsulate" $@74 ":" "constant string"
-#line 1638 "dhcp6_parser.yy"
+  case 466: // option_def_encapsulate: "encapsulate" $@74 ":" "constant string"
+#line 1658 "dhcp6_parser.yy"
                {
     ElementPtr encap(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("encapsulate", encap);
     ctx.leave();
 }
-#line 2706 "dhcp6_parser.cc"
+#line 2726 "dhcp6_parser.cc"
     break;
 
-  case 459: // option_def_array: "array" ":" "boolean"
-#line 1644 "dhcp6_parser.yy"
+  case 467: // option_def_array: "array" ":" "boolean"
+#line 1664 "dhcp6_parser.yy"
                                       {
     ctx.unique("array", ctx.loc2pos(yystack_[2].location));
     ElementPtr array(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("array", array);
 }
-#line 2716 "dhcp6_parser.cc"
+#line 2736 "dhcp6_parser.cc"
     break;
 
-  case 460: // $@75: %empty
-#line 1654 "dhcp6_parser.yy"
+  case 468: // $@75: %empty
+#line 1674 "dhcp6_parser.yy"
                               {
     ctx.unique("option-data", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -2724,97 +2744,97 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(l);
     ctx.enter(ctx.OPTION_DATA);
 }
-#line 2728 "dhcp6_parser.cc"
+#line 2748 "dhcp6_parser.cc"
     break;
 
-  case 461: // option_data_list: "option-data" $@75 ":" "[" option_data_list_content "]"
-#line 1660 "dhcp6_parser.yy"
+  case 469: // option_data_list: "option-data" $@75 ":" "[" option_data_list_content "]"
+#line 1680 "dhcp6_parser.yy"
                                                                  {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2737 "dhcp6_parser.cc"
+#line 2757 "dhcp6_parser.cc"
     break;
 
-  case 466: // $@76: %empty
-#line 1679 "dhcp6_parser.yy"
+  case 474: // $@76: %empty
+#line 1699 "dhcp6_parser.yy"
                                   {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2747 "dhcp6_parser.cc"
+#line 2767 "dhcp6_parser.cc"
     break;
 
-  case 467: // option_data_entry: "{" $@76 option_data_params "}"
-#line 1683 "dhcp6_parser.yy"
+  case 475: // option_data_entry: "{" $@76 option_data_params "}"
+#line 1703 "dhcp6_parser.yy"
                                     {
     /// @todo: the code or name parameters are required.
     ctx.stack_.pop_back();
 }
-#line 2756 "dhcp6_parser.cc"
+#line 2776 "dhcp6_parser.cc"
     break;
 
-  case 468: // $@77: %empty
-#line 1691 "dhcp6_parser.yy"
+  case 476: // $@77: %empty
+#line 1711 "dhcp6_parser.yy"
                                 {
     // Parse the option-data list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2766 "dhcp6_parser.cc"
+#line 2786 "dhcp6_parser.cc"
     break;
 
-  case 469: // sub_option_data: "{" $@77 option_data_params "}"
-#line 1695 "dhcp6_parser.yy"
+  case 477: // sub_option_data: "{" $@77 option_data_params "}"
+#line 1715 "dhcp6_parser.yy"
                                     {
     /// @todo: the code or name parameters are required.
     // parsing completed
 }
-#line 2775 "dhcp6_parser.cc"
+#line 2795 "dhcp6_parser.cc"
     break;
 
-  case 484: // $@78: %empty
-#line 1728 "dhcp6_parser.yy"
+  case 492: // $@78: %empty
+#line 1748 "dhcp6_parser.yy"
                        {
     ctx.unique("data", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2784 "dhcp6_parser.cc"
+#line 2804 "dhcp6_parser.cc"
     break;
 
-  case 485: // option_data_data: "data" $@78 ":" "constant string"
-#line 1731 "dhcp6_parser.yy"
+  case 493: // option_data_data: "data" $@78 ":" "constant string"
+#line 1751 "dhcp6_parser.yy"
                {
     ElementPtr data(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("data", data);
     ctx.leave();
 }
-#line 2794 "dhcp6_parser.cc"
+#line 2814 "dhcp6_parser.cc"
     break;
 
-  case 488: // option_data_csv_format: "csv-format" ":" "boolean"
-#line 1741 "dhcp6_parser.yy"
+  case 496: // option_data_csv_format: "csv-format" ":" "boolean"
+#line 1761 "dhcp6_parser.yy"
                                                  {
     ctx.unique("csv-format", ctx.loc2pos(yystack_[2].location));
     ElementPtr space(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("csv-format", space);
 }
-#line 2804 "dhcp6_parser.cc"
+#line 2824 "dhcp6_parser.cc"
     break;
 
-  case 489: // option_data_always_send: "always-send" ":" "boolean"
-#line 1747 "dhcp6_parser.yy"
+  case 497: // option_data_always_send: "always-send" ":" "boolean"
+#line 1767 "dhcp6_parser.yy"
                                                    {
     ctx.unique("always-send", ctx.loc2pos(yystack_[2].location));
     ElementPtr persist(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("always-send", persist);
 }
-#line 2814 "dhcp6_parser.cc"
+#line 2834 "dhcp6_parser.cc"
     break;
 
-  case 490: // $@79: %empty
-#line 1756 "dhcp6_parser.yy"
+  case 498: // $@79: %empty
+#line 1776 "dhcp6_parser.yy"
                   {
     ctx.unique("pools", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -2822,87 +2842,87 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(l);
     ctx.enter(ctx.POOLS);
 }
-#line 2826 "dhcp6_parser.cc"
+#line 2846 "dhcp6_parser.cc"
     break;
 
-  case 491: // pools_list: "pools" $@79 ":" "[" pools_list_content "]"
-#line 1762 "dhcp6_parser.yy"
+  case 499: // pools_list: "pools" $@79 ":" "[" pools_list_content "]"
+#line 1782 "dhcp6_parser.yy"
                                                            {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2835 "dhcp6_parser.cc"
+#line 2855 "dhcp6_parser.cc"
     break;
 
-  case 496: // $@80: %empty
-#line 1777 "dhcp6_parser.yy"
+  case 504: // $@80: %empty
+#line 1797 "dhcp6_parser.yy"
                                 {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2845 "dhcp6_parser.cc"
+#line 2865 "dhcp6_parser.cc"
     break;
 
-  case 497: // pool_list_entry: "{" $@80 pool_params "}"
-#line 1781 "dhcp6_parser.yy"
+  case 505: // pool_list_entry: "{" $@80 pool_params "}"
+#line 1801 "dhcp6_parser.yy"
                              {
     // The pool parameter is required.
     ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 2855 "dhcp6_parser.cc"
+#line 2875 "dhcp6_parser.cc"
     break;
 
-  case 498: // $@81: %empty
-#line 1787 "dhcp6_parser.yy"
+  case 506: // $@81: %empty
+#line 1807 "dhcp6_parser.yy"
                           {
     // Parse the pool list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2865 "dhcp6_parser.cc"
+#line 2885 "dhcp6_parser.cc"
     break;
 
-  case 499: // sub_pool6: "{" $@81 pool_params "}"
-#line 1791 "dhcp6_parser.yy"
+  case 507: // sub_pool6: "{" $@81 pool_params "}"
+#line 1811 "dhcp6_parser.yy"
                              {
     // The pool parameter is required.
     ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 2875 "dhcp6_parser.cc"
+#line 2895 "dhcp6_parser.cc"
     break;
 
-  case 509: // $@82: %empty
-#line 1810 "dhcp6_parser.yy"
+  case 517: // $@82: %empty
+#line 1830 "dhcp6_parser.yy"
                  {
     ctx.unique("pool", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2884 "dhcp6_parser.cc"
+#line 2904 "dhcp6_parser.cc"
     break;
 
-  case 510: // pool_entry: "pool" $@82 ":" "constant string"
-#line 1813 "dhcp6_parser.yy"
+  case 518: // pool_entry: "pool" $@82 ":" "constant string"
+#line 1833 "dhcp6_parser.yy"
                {
     ElementPtr pool(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("pool", pool);
     ctx.leave();
 }
-#line 2894 "dhcp6_parser.cc"
+#line 2914 "dhcp6_parser.cc"
     break;
 
-  case 511: // $@83: %empty
-#line 1819 "dhcp6_parser.yy"
+  case 519: // $@83: %empty
+#line 1839 "dhcp6_parser.yy"
                            {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2902 "dhcp6_parser.cc"
+#line 2922 "dhcp6_parser.cc"
     break;
 
-  case 512: // user_context: "user-context" $@83 ":" map_value
-#line 1821 "dhcp6_parser.yy"
+  case 520: // user_context: "user-context" $@83 ":" map_value
+#line 1841 "dhcp6_parser.yy"
                   {
     ElementPtr parent = ctx.stack_.back();
     ElementPtr user_context = yystack_[0].value.as < ElementPtr > ();
@@ -2925,19 +2945,19 @@ namespace isc { namespace dhcp {
     parent->set("user-context", user_context);
     ctx.leave();
 }
-#line 2929 "dhcp6_parser.cc"
+#line 2949 "dhcp6_parser.cc"
     break;
 
-  case 513: // $@84: %empty
-#line 1844 "dhcp6_parser.yy"
+  case 521: // $@84: %empty
+#line 1864 "dhcp6_parser.yy"
                  {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2937 "dhcp6_parser.cc"
+#line 2957 "dhcp6_parser.cc"
     break;
 
-  case 514: // comment: "comment" $@84 ":" "constant string"
-#line 1846 "dhcp6_parser.yy"
+  case 522: // comment: "comment" $@84 ":" "constant string"
+#line 1866 "dhcp6_parser.yy"
                {
     ElementPtr parent = ctx.stack_.back();
     ElementPtr user_context(new MapElement(ctx.loc2pos(yystack_[3].location)));
@@ -2962,11 +2982,11 @@ namespace isc { namespace dhcp {
     parent->set("user-context", user_context);
     ctx.leave();
 }
-#line 2966 "dhcp6_parser.cc"
+#line 2986 "dhcp6_parser.cc"
     break;
 
-  case 515: // $@85: %empty
-#line 1874 "dhcp6_parser.yy"
+  case 523: // $@85: %empty
+#line 1894 "dhcp6_parser.yy"
                         {
     ctx.unique("pd-pools", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -2974,30 +2994,30 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(l);
     ctx.enter(ctx.PD_POOLS);
 }
-#line 2978 "dhcp6_parser.cc"
+#line 2998 "dhcp6_parser.cc"
     break;
 
-  case 516: // pd_pools_list: "pd-pools" $@85 ":" "[" pd_pools_list_content "]"
-#line 1880 "dhcp6_parser.yy"
+  case 524: // pd_pools_list: "pd-pools" $@85 ":" "[" pd_pools_list_content "]"
+#line 1900 "dhcp6_parser.yy"
                                                               {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2987 "dhcp6_parser.cc"
+#line 3007 "dhcp6_parser.cc"
     break;
 
-  case 521: // $@86: %empty
-#line 1895 "dhcp6_parser.yy"
+  case 529: // $@86: %empty
+#line 1915 "dhcp6_parser.yy"
                               {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2997 "dhcp6_parser.cc"
+#line 3017 "dhcp6_parser.cc"
     break;
 
-  case 522: // pd_pool_entry: "{" $@86 pd_pool_params "}"
-#line 1899 "dhcp6_parser.yy"
+  case 530: // pd_pool_entry: "{" $@86 pd_pool_params "}"
+#line 1919 "dhcp6_parser.yy"
                                 {
     // The prefix, prefix len and delegated len parameters are required.
     ctx.require("prefix", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -3005,21 +3025,21 @@ namespace isc { namespace dhcp {
     ctx.require("delegated-len", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 3009 "dhcp6_parser.cc"
+#line 3029 "dhcp6_parser.cc"
     break;
 
-  case 523: // $@87: %empty
-#line 1907 "dhcp6_parser.yy"
+  case 531: // $@87: %empty
+#line 1927 "dhcp6_parser.yy"
                             {
     // Parse the pd-pool list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 3019 "dhcp6_parser.cc"
+#line 3039 "dhcp6_parser.cc"
     break;
 
-  case 524: // sub_pd_pool: "{" $@87 pd_pool_params "}"
-#line 1911 "dhcp6_parser.yy"
+  case 532: // sub_pd_pool: "{" $@87 pd_pool_params "}"
+#line 1931 "dhcp6_parser.yy"
                                 {
     // The prefix, prefix len and delegated len parameters are required.
     ctx.require("prefix", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -3027,79 +3047,79 @@ namespace isc { namespace dhcp {
     ctx.require("delegated-len", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 3031 "dhcp6_parser.cc"
+#line 3051 "dhcp6_parser.cc"
     break;
 
-  case 538: // $@88: %empty
-#line 1936 "dhcp6_parser.yy"
+  case 546: // $@88: %empty
+#line 1956 "dhcp6_parser.yy"
                   {
     ctx.unique("prefix", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3040 "dhcp6_parser.cc"
+#line 3060 "dhcp6_parser.cc"
     break;
 
-  case 539: // pd_prefix: "prefix" $@88 ":" "constant string"
-#line 1939 "dhcp6_parser.yy"
+  case 547: // pd_prefix: "prefix" $@88 ":" "constant string"
+#line 1959 "dhcp6_parser.yy"
                {
     ElementPtr prf(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("prefix", prf);
     ctx.leave();
 }
-#line 3050 "dhcp6_parser.cc"
+#line 3070 "dhcp6_parser.cc"
     break;
 
-  case 540: // pd_prefix_len: "prefix-len" ":" "integer"
-#line 1945 "dhcp6_parser.yy"
+  case 548: // pd_prefix_len: "prefix-len" ":" "integer"
+#line 1965 "dhcp6_parser.yy"
                                         {
     ctx.unique("prefix-len", ctx.loc2pos(yystack_[2].location));
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("prefix-len", prf);
 }
-#line 3060 "dhcp6_parser.cc"
+#line 3080 "dhcp6_parser.cc"
     break;
 
-  case 541: // $@89: %empty
-#line 1951 "dhcp6_parser.yy"
+  case 549: // $@89: %empty
+#line 1971 "dhcp6_parser.yy"
                                  {
     ctx.unique("excluded-prefix", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3069 "dhcp6_parser.cc"
+#line 3089 "dhcp6_parser.cc"
     break;
 
-  case 542: // excluded_prefix: "excluded-prefix" $@89 ":" "constant string"
-#line 1954 "dhcp6_parser.yy"
+  case 550: // excluded_prefix: "excluded-prefix" $@89 ":" "constant string"
+#line 1974 "dhcp6_parser.yy"
                {
     ElementPtr prf(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("excluded-prefix", prf);
     ctx.leave();
 }
-#line 3079 "dhcp6_parser.cc"
+#line 3099 "dhcp6_parser.cc"
     break;
 
-  case 543: // excluded_prefix_len: "excluded-prefix-len" ":" "integer"
-#line 1960 "dhcp6_parser.yy"
+  case 551: // excluded_prefix_len: "excluded-prefix-len" ":" "integer"
+#line 1980 "dhcp6_parser.yy"
                                                        {
     ctx.unique("excluded-prefix-len", ctx.loc2pos(yystack_[2].location));
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("excluded-prefix-len", prf);
 }
-#line 3089 "dhcp6_parser.cc"
+#line 3109 "dhcp6_parser.cc"
     break;
 
-  case 544: // pd_delegated_len: "delegated-len" ":" "integer"
-#line 1966 "dhcp6_parser.yy"
+  case 552: // pd_delegated_len: "delegated-len" ":" "integer"
+#line 1986 "dhcp6_parser.yy"
                                               {
     ctx.unique("delegated-len", ctx.loc2pos(yystack_[2].location));
     ElementPtr deleg(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("delegated-len", deleg);
 }
-#line 3099 "dhcp6_parser.cc"
+#line 3119 "dhcp6_parser.cc"
     break;
 
-  case 545: // $@90: %empty
-#line 1975 "dhcp6_parser.yy"
+  case 553: // $@90: %empty
+#line 1995 "dhcp6_parser.yy"
                            {
     ctx.unique("reservations", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -3107,58 +3127,58 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(l);
     ctx.enter(ctx.RESERVATIONS);
 }
-#line 3111 "dhcp6_parser.cc"
+#line 3131 "dhcp6_parser.cc"
     break;
 
-  case 546: // reservations: "reservations" $@90 ":" "[" reservations_list "]"
-#line 1981 "dhcp6_parser.yy"
+  case 554: // reservations: "reservations" $@90 ":" "[" reservations_list "]"
+#line 2001 "dhcp6_parser.yy"
                                                           {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3120 "dhcp6_parser.cc"
+#line 3140 "dhcp6_parser.cc"
     break;
 
-  case 551: // $@91: %empty
-#line 1994 "dhcp6_parser.yy"
+  case 559: // $@91: %empty
+#line 2014 "dhcp6_parser.yy"
                             {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 3130 "dhcp6_parser.cc"
+#line 3150 "dhcp6_parser.cc"
     break;
 
-  case 552: // reservation: "{" $@91 reservation_params "}"
-#line 1998 "dhcp6_parser.yy"
+  case 560: // reservation: "{" $@91 reservation_params "}"
+#line 2018 "dhcp6_parser.yy"
                                     {
     /// @todo: an identifier parameter is required.
     ctx.stack_.pop_back();
 }
-#line 3139 "dhcp6_parser.cc"
+#line 3159 "dhcp6_parser.cc"
     break;
 
-  case 553: // $@92: %empty
-#line 2003 "dhcp6_parser.yy"
+  case 561: // $@92: %empty
+#line 2023 "dhcp6_parser.yy"
                                 {
     // Parse the reservations list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 3149 "dhcp6_parser.cc"
+#line 3169 "dhcp6_parser.cc"
     break;
 
-  case 554: // sub_reservation: "{" $@92 reservation_params "}"
-#line 2007 "dhcp6_parser.yy"
+  case 562: // sub_reservation: "{" $@92 reservation_params "}"
+#line 2027 "dhcp6_parser.yy"
                                     {
     /// @todo: an identifier parameter is required.
     // parsing completed
 }
-#line 3158 "dhcp6_parser.cc"
+#line 3178 "dhcp6_parser.cc"
     break;
 
-  case 570: // $@93: %empty
-#line 2034 "dhcp6_parser.yy"
+  case 578: // $@93: %empty
+#line 2054 "dhcp6_parser.yy"
                            {
     ctx.unique("ip-addresses", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -3166,20 +3186,20 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(l);
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3170 "dhcp6_parser.cc"
+#line 3190 "dhcp6_parser.cc"
     break;
 
-  case 571: // ip_addresses: "ip-addresses" $@93 ":" list_strings
-#line 2040 "dhcp6_parser.yy"
+  case 579: // ip_addresses: "ip-addresses" $@93 ":" list_strings
+#line 2060 "dhcp6_parser.yy"
                      {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3179 "dhcp6_parser.cc"
+#line 3199 "dhcp6_parser.cc"
     break;
 
-  case 572: // $@94: %empty
-#line 2045 "dhcp6_parser.yy"
+  case 580: // $@94: %empty
+#line 2065 "dhcp6_parser.yy"
                    {
     ctx.unique("prefixes", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -3187,96 +3207,96 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(l);
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3191 "dhcp6_parser.cc"
+#line 3211 "dhcp6_parser.cc"
     break;
 
-  case 573: // prefixes: "prefixes" $@94 ":" list_strings
-#line 2051 "dhcp6_parser.yy"
+  case 581: // prefixes: "prefixes" $@94 ":" list_strings
+#line 2071 "dhcp6_parser.yy"
                      {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3200 "dhcp6_parser.cc"
+#line 3220 "dhcp6_parser.cc"
     break;
 
-  case 574: // $@95: %empty
-#line 2056 "dhcp6_parser.yy"
+  case 582: // $@95: %empty
+#line 2076 "dhcp6_parser.yy"
            {
     ctx.unique("duid", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3209 "dhcp6_parser.cc"
+#line 3229 "dhcp6_parser.cc"
     break;
 
-  case 575: // duid: "duid" $@95 ":" "constant string"
-#line 2059 "dhcp6_parser.yy"
+  case 583: // duid: "duid" $@95 ":" "constant string"
+#line 2079 "dhcp6_parser.yy"
                {
     ElementPtr d(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("duid", d);
     ctx.leave();
 }
-#line 3219 "dhcp6_parser.cc"
+#line 3239 "dhcp6_parser.cc"
     break;
 
-  case 576: // $@96: %empty
-#line 2065 "dhcp6_parser.yy"
+  case 584: // $@96: %empty
+#line 2085 "dhcp6_parser.yy"
                        {
     ctx.unique("hw-address", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3228 "dhcp6_parser.cc"
+#line 3248 "dhcp6_parser.cc"
     break;
 
-  case 577: // hw_address: "hw-address" $@96 ":" "constant string"
-#line 2068 "dhcp6_parser.yy"
+  case 585: // hw_address: "hw-address" $@96 ":" "constant string"
+#line 2088 "dhcp6_parser.yy"
                {
     ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hw-address", hw);
     ctx.leave();
 }
-#line 3238 "dhcp6_parser.cc"
+#line 3258 "dhcp6_parser.cc"
     break;
 
-  case 578: // $@97: %empty
-#line 2074 "dhcp6_parser.yy"
+  case 586: // $@97: %empty
+#line 2094 "dhcp6_parser.yy"
                    {
     ctx.unique("hostname", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3247 "dhcp6_parser.cc"
+#line 3267 "dhcp6_parser.cc"
     break;
 
-  case 579: // hostname: "hostname" $@97 ":" "constant string"
-#line 2077 "dhcp6_parser.yy"
+  case 587: // hostname: "hostname" $@97 ":" "constant string"
+#line 2097 "dhcp6_parser.yy"
                {
     ElementPtr host(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hostname", host);
     ctx.leave();
 }
-#line 3257 "dhcp6_parser.cc"
+#line 3277 "dhcp6_parser.cc"
     break;
 
-  case 580: // $@98: %empty
-#line 2083 "dhcp6_parser.yy"
+  case 588: // $@98: %empty
+#line 2103 "dhcp6_parser.yy"
                        {
     ctx.unique("flex-id", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3266 "dhcp6_parser.cc"
+#line 3286 "dhcp6_parser.cc"
     break;
 
-  case 581: // flex_id_value: "flex-id" $@98 ":" "constant string"
-#line 2086 "dhcp6_parser.yy"
+  case 589: // flex_id_value: "flex-id" $@98 ":" "constant string"
+#line 2106 "dhcp6_parser.yy"
                {
     ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("flex-id", hw);
     ctx.leave();
 }
-#line 3276 "dhcp6_parser.cc"
+#line 3296 "dhcp6_parser.cc"
     break;
 
-  case 582: // $@99: %empty
-#line 2092 "dhcp6_parser.yy"
+  case 590: // $@99: %empty
+#line 2112 "dhcp6_parser.yy"
                                            {
     ctx.unique("client-classes", ctx.loc2pos(yystack_[0].location));
     ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -3284,20 +3304,20 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(c);
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3288 "dhcp6_parser.cc"
+#line 3308 "dhcp6_parser.cc"
     break;
 
-  case 583: // reservation_client_classes: "client-classes" $@99 ":" list_strings
-#line 2098 "dhcp6_parser.yy"
+  case 591: // reservation_client_classes: "client-classes" $@99 ":" list_strings
+#line 2118 "dhcp6_parser.yy"
                      {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3297 "dhcp6_parser.cc"
+#line 3317 "dhcp6_parser.cc"
     break;
 
-  case 584: // $@100: %empty
-#line 2106 "dhcp6_parser.yy"
+  case 592: // $@100: %empty
+#line 2126 "dhcp6_parser.yy"
              {
     ctx.unique("relay", ctx.loc2pos(yystack_[0].location));
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -3305,39 +3325,39 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(m);
     ctx.enter(ctx.RELAY);
 }
-#line 3309 "dhcp6_parser.cc"
+#line 3329 "dhcp6_parser.cc"
     break;
 
-  case 585: // relay: "relay" $@100 ":" "{" relay_map "}"
-#line 2112 "dhcp6_parser.yy"
+  case 593: // relay: "relay" $@100 ":" "{" relay_map "}"
+#line 2132 "dhcp6_parser.yy"
                                                 {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3318 "dhcp6_parser.cc"
+#line 3338 "dhcp6_parser.cc"
     break;
 
-  case 588: // $@101: %empty
-#line 2121 "dhcp6_parser.yy"
+  case 596: // $@101: %empty
+#line 2141 "dhcp6_parser.yy"
                        {
     ctx.unique("ip-address", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3327 "dhcp6_parser.cc"
+#line 3347 "dhcp6_parser.cc"
     break;
 
-  case 589: // ip_address: "ip-address" $@101 ":" "constant string"
-#line 2124 "dhcp6_parser.yy"
+  case 597: // ip_address: "ip-address" $@101 ":" "constant string"
+#line 2144 "dhcp6_parser.yy"
                {
     ElementPtr addr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ip-address", addr);
     ctx.leave();
 }
-#line 3337 "dhcp6_parser.cc"
+#line 3357 "dhcp6_parser.cc"
     break;
 
-  case 590: // $@102: %empty
-#line 2133 "dhcp6_parser.yy"
+  case 598: // $@102: %empty
+#line 2153 "dhcp6_parser.yy"
                                {
     ctx.unique("client-classes", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -3345,69 +3365,69 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(l);
     ctx.enter(ctx.CLIENT_CLASSES);
 }
-#line 3349 "dhcp6_parser.cc"
+#line 3369 "dhcp6_parser.cc"
     break;
 
-  case 591: // client_classes: "client-classes" $@102 ":" "[" client_classes_list "]"
-#line 2139 "dhcp6_parser.yy"
+  case 599: // client_classes: "client-classes" $@102 ":" "[" client_classes_list "]"
+#line 2159 "dhcp6_parser.yy"
                                                             {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3358 "dhcp6_parser.cc"
+#line 3378 "dhcp6_parser.cc"
     break;
 
-  case 594: // $@103: %empty
-#line 2148 "dhcp6_parser.yy"
+  case 602: // $@103: %empty
+#line 2168 "dhcp6_parser.yy"
                                    {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 3368 "dhcp6_parser.cc"
+#line 3388 "dhcp6_parser.cc"
     break;
 
-  case 595: // client_class_entry: "{" $@103 client_class_params "}"
-#line 2152 "dhcp6_parser.yy"
+  case 603: // client_class_entry: "{" $@103 client_class_params "}"
+#line 2172 "dhcp6_parser.yy"
                                      {
     // The name client class parameter is required.
     ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 3378 "dhcp6_parser.cc"
+#line 3398 "dhcp6_parser.cc"
     break;
 
-  case 608: // $@104: %empty
-#line 2177 "dhcp6_parser.yy"
+  case 616: // $@104: %empty
+#line 2197 "dhcp6_parser.yy"
                         {
     ctx.unique("test", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3387 "dhcp6_parser.cc"
+#line 3407 "dhcp6_parser.cc"
     break;
 
-  case 609: // client_class_test: "test" $@104 ":" "constant string"
-#line 2180 "dhcp6_parser.yy"
+  case 617: // client_class_test: "test" $@104 ":" "constant string"
+#line 2200 "dhcp6_parser.yy"
                {
     ElementPtr test(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("test", test);
     ctx.leave();
 }
-#line 3397 "dhcp6_parser.cc"
+#line 3417 "dhcp6_parser.cc"
     break;
 
-  case 610: // only_if_required: "only-if-required" ":" "boolean"
-#line 2186 "dhcp6_parser.yy"
+  case 618: // only_if_required: "only-if-required" ":" "boolean"
+#line 2206 "dhcp6_parser.yy"
                                                  {
     ctx.unique("only-if-required", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("only-if-required", b);
 }
-#line 3407 "dhcp6_parser.cc"
+#line 3427 "dhcp6_parser.cc"
     break;
 
-  case 611: // $@105: %empty
-#line 2195 "dhcp6_parser.yy"
+  case 619: // $@105: %empty
+#line 2215 "dhcp6_parser.yy"
                      {
     ctx.unique("server-id", ctx.loc2pos(yystack_[0].location));
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -3415,117 +3435,117 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(m);
     ctx.enter(ctx.SERVER_ID);
 }
-#line 3419 "dhcp6_parser.cc"
+#line 3439 "dhcp6_parser.cc"
     break;
 
-  case 612: // server_id: "server-id" $@105 ":" "{" server_id_params "}"
-#line 2201 "dhcp6_parser.yy"
+  case 620: // server_id: "server-id" $@105 ":" "{" server_id_params "}"
+#line 2221 "dhcp6_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 3430 "dhcp6_parser.cc"
+#line 3450 "dhcp6_parser.cc"
     break;
 
-  case 624: // $@106: %empty
-#line 2223 "dhcp6_parser.yy"
+  case 632: // $@106: %empty
+#line 2243 "dhcp6_parser.yy"
                      {
     ctx.unique("type", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.DUID_TYPE);
 }
-#line 3439 "dhcp6_parser.cc"
+#line 3459 "dhcp6_parser.cc"
     break;
 
-  case 625: // server_id_type: "type" $@106 ":" duid_type
-#line 2226 "dhcp6_parser.yy"
+  case 633: // server_id_type: "type" $@106 ":" duid_type
+#line 2246 "dhcp6_parser.yy"
                   {
     ctx.stack_.back()->set("type", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 3448 "dhcp6_parser.cc"
+#line 3468 "dhcp6_parser.cc"
     break;
 
-  case 626: // duid_type: "LLT"
-#line 2231 "dhcp6_parser.yy"
+  case 634: // duid_type: "LLT"
+#line 2251 "dhcp6_parser.yy"
                { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("LLT", ctx.loc2pos(yystack_[0].location))); }
-#line 3454 "dhcp6_parser.cc"
+#line 3474 "dhcp6_parser.cc"
     break;
 
-  case 627: // duid_type: "EN"
-#line 2232 "dhcp6_parser.yy"
+  case 635: // duid_type: "EN"
+#line 2252 "dhcp6_parser.yy"
               { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("EN", ctx.loc2pos(yystack_[0].location))); }
-#line 3460 "dhcp6_parser.cc"
+#line 3480 "dhcp6_parser.cc"
     break;
 
-  case 628: // duid_type: "LL"
-#line 2233 "dhcp6_parser.yy"
+  case 636: // duid_type: "LL"
+#line 2253 "dhcp6_parser.yy"
               { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("LL", ctx.loc2pos(yystack_[0].location))); }
-#line 3466 "dhcp6_parser.cc"
+#line 3486 "dhcp6_parser.cc"
     break;
 
-  case 629: // htype: "htype" ":" "integer"
-#line 2236 "dhcp6_parser.yy"
+  case 637: // htype: "htype" ":" "integer"
+#line 2256 "dhcp6_parser.yy"
                            {
     ctx.unique("htype", ctx.loc2pos(yystack_[2].location));
     ElementPtr htype(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("htype", htype);
 }
-#line 3476 "dhcp6_parser.cc"
+#line 3496 "dhcp6_parser.cc"
     break;
 
-  case 630: // $@107: %empty
-#line 2242 "dhcp6_parser.yy"
+  case 638: // $@107: %empty
+#line 2262 "dhcp6_parser.yy"
                        {
     ctx.unique("identifier", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3485 "dhcp6_parser.cc"
+#line 3505 "dhcp6_parser.cc"
     break;
 
-  case 631: // identifier: "identifier" $@107 ":" "constant string"
-#line 2245 "dhcp6_parser.yy"
+  case 639: // identifier: "identifier" $@107 ":" "constant string"
+#line 2265 "dhcp6_parser.yy"
                {
     ElementPtr id(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("identifier", id);
     ctx.leave();
 }
-#line 3495 "dhcp6_parser.cc"
+#line 3515 "dhcp6_parser.cc"
     break;
 
-  case 632: // time: "time" ":" "integer"
-#line 2251 "dhcp6_parser.yy"
+  case 640: // time: "time" ":" "integer"
+#line 2271 "dhcp6_parser.yy"
                          {
     ctx.unique("time", ctx.loc2pos(yystack_[2].location));
     ElementPtr time(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("time", time);
 }
-#line 3505 "dhcp6_parser.cc"
+#line 3525 "dhcp6_parser.cc"
     break;
 
-  case 633: // enterprise_id: "enterprise-id" ":" "integer"
-#line 2257 "dhcp6_parser.yy"
+  case 641: // enterprise_id: "enterprise-id" ":" "integer"
+#line 2277 "dhcp6_parser.yy"
                                            {
     ctx.unique("enterprise-id", ctx.loc2pos(yystack_[2].location));
     ElementPtr time(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("enterprise-id", time);
 }
-#line 3515 "dhcp6_parser.cc"
+#line 3535 "dhcp6_parser.cc"
     break;
 
-  case 634: // dhcp4o6_port: "dhcp4o6-port" ":" "integer"
-#line 2265 "dhcp6_parser.yy"
+  case 642: // dhcp4o6_port: "dhcp4o6-port" ":" "integer"
+#line 2285 "dhcp6_parser.yy"
                                          {
     ctx.unique("dhcp4o6-port", ctx.loc2pos(yystack_[2].location));
     ElementPtr time(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("dhcp4o6-port", time);
 }
-#line 3525 "dhcp6_parser.cc"
+#line 3545 "dhcp6_parser.cc"
     break;
 
-  case 635: // $@108: %empty
-#line 2273 "dhcp6_parser.yy"
+  case 643: // $@108: %empty
+#line 2293 "dhcp6_parser.yy"
                                {
     ctx.unique("control-socket", ctx.loc2pos(yystack_[0].location));
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -3533,58 +3553,58 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(m);
     ctx.enter(ctx.CONTROL_SOCKET);
 }
-#line 3537 "dhcp6_parser.cc"
+#line 3557 "dhcp6_parser.cc"
     break;
 
-  case 636: // control_socket: "control-socket" $@108 ":" "{" control_socket_params "}"
-#line 2279 "dhcp6_parser.yy"
+  case 644: // control_socket: "control-socket" $@108 ":" "{" control_socket_params "}"
+#line 2299 "dhcp6_parser.yy"
                                                             {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3546 "dhcp6_parser.cc"
+#line 3566 "dhcp6_parser.cc"
     break;
 
-  case 644: // $@109: %empty
-#line 2295 "dhcp6_parser.yy"
+  case 652: // $@109: %empty
+#line 2315 "dhcp6_parser.yy"
                          {
     ctx.unique("socket-type", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3555 "dhcp6_parser.cc"
+#line 3575 "dhcp6_parser.cc"
     break;
 
-  case 645: // socket_type: "socket-type" $@109 ":" "constant string"
-#line 2298 "dhcp6_parser.yy"
+  case 653: // socket_type: "socket-type" $@109 ":" "constant string"
+#line 2318 "dhcp6_parser.yy"
                {
     ElementPtr stype(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("socket-type", stype);
     ctx.leave();
 }
-#line 3565 "dhcp6_parser.cc"
+#line 3585 "dhcp6_parser.cc"
     break;
 
-  case 646: // $@110: %empty
-#line 2304 "dhcp6_parser.yy"
+  case 654: // $@110: %empty
+#line 2324 "dhcp6_parser.yy"
                          {
     ctx.unique("socket-name", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3574 "dhcp6_parser.cc"
+#line 3594 "dhcp6_parser.cc"
     break;
 
-  case 647: // socket_name: "socket-name" $@110 ":" "constant string"
-#line 2307 "dhcp6_parser.yy"
+  case 655: // socket_name: "socket-name" $@110 ":" "constant string"
+#line 2327 "dhcp6_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 3584 "dhcp6_parser.cc"
+#line 3604 "dhcp6_parser.cc"
     break;
 
-  case 648: // $@111: %empty
-#line 2316 "dhcp6_parser.yy"
+  case 656: // $@111: %empty
+#line 2336 "dhcp6_parser.yy"
                                        {
     ctx.unique("dhcp-queue-control", ctx.loc2pos(yystack_[0].location));
     ElementPtr qc(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -3592,79 +3612,79 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(qc);
     ctx.enter(ctx.DHCP_QUEUE_CONTROL);
 }
-#line 3596 "dhcp6_parser.cc"
+#line 3616 "dhcp6_parser.cc"
     break;
 
-  case 649: // dhcp_queue_control: "dhcp-queue-control" $@111 ":" "{" queue_control_params "}"
-#line 2322 "dhcp6_parser.yy"
+  case 657: // dhcp_queue_control: "dhcp-queue-control" $@111 ":" "{" queue_control_params "}"
+#line 2342 "dhcp6_parser.yy"
                                                            {
     // The enable queue parameter is required.
     ctx.require("enable-queue", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3607 "dhcp6_parser.cc"
+#line 3627 "dhcp6_parser.cc"
     break;
 
-  case 658: // enable_queue: "enable-queue" ":" "boolean"
-#line 2341 "dhcp6_parser.yy"
+  case 666: // enable_queue: "enable-queue" ":" "boolean"
+#line 2361 "dhcp6_parser.yy"
                                          {
     ctx.unique("enable-queue", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("enable-queue", b);
 }
-#line 3617 "dhcp6_parser.cc"
+#line 3637 "dhcp6_parser.cc"
     break;
 
-  case 659: // $@112: %empty
-#line 2347 "dhcp6_parser.yy"
+  case 667: // $@112: %empty
+#line 2367 "dhcp6_parser.yy"
                        {
     ctx.unique("queue-type", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3626 "dhcp6_parser.cc"
+#line 3646 "dhcp6_parser.cc"
     break;
 
-  case 660: // queue_type: "queue-type" $@112 ":" "constant string"
-#line 2350 "dhcp6_parser.yy"
+  case 668: // queue_type: "queue-type" $@112 ":" "constant string"
+#line 2370 "dhcp6_parser.yy"
                {
     ElementPtr qt(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("queue-type", qt);
     ctx.leave();
 }
-#line 3636 "dhcp6_parser.cc"
+#line 3656 "dhcp6_parser.cc"
     break;
 
-  case 661: // capacity: "capacity" ":" "integer"
-#line 2356 "dhcp6_parser.yy"
+  case 669: // capacity: "capacity" ":" "integer"
+#line 2376 "dhcp6_parser.yy"
                                  {
     ctx.unique("capacity", ctx.loc2pos(yystack_[2].location));
     ElementPtr c(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("capacity", c);
 }
-#line 3646 "dhcp6_parser.cc"
+#line 3666 "dhcp6_parser.cc"
     break;
 
-  case 662: // $@113: %empty
-#line 2362 "dhcp6_parser.yy"
+  case 670: // $@113: %empty
+#line 2382 "dhcp6_parser.yy"
                             {
     ctx.unique(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3655 "dhcp6_parser.cc"
+#line 3675 "dhcp6_parser.cc"
     break;
 
-  case 663: // arbitrary_map_entry: "constant string" $@113 ":" value
-#line 2365 "dhcp6_parser.yy"
+  case 671: // arbitrary_map_entry: "constant string" $@113 ":" value
+#line 2385 "dhcp6_parser.yy"
               {
     ctx.stack_.back()->set(yystack_[3].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 3664 "dhcp6_parser.cc"
+#line 3684 "dhcp6_parser.cc"
     break;
 
-  case 664: // $@114: %empty
-#line 2372 "dhcp6_parser.yy"
+  case 672: // $@114: %empty
+#line 2392 "dhcp6_parser.yy"
                      {
     ctx.unique("dhcp-ddns", ctx.loc2pos(yystack_[0].location));
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -3672,283 +3692,283 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(m);
     ctx.enter(ctx.DHCP_DDNS);
 }
-#line 3676 "dhcp6_parser.cc"
+#line 3696 "dhcp6_parser.cc"
     break;
 
-  case 665: // dhcp_ddns: "dhcp-ddns" $@114 ":" "{" dhcp_ddns_params "}"
-#line 2378 "dhcp6_parser.yy"
+  case 673: // dhcp_ddns: "dhcp-ddns" $@114 ":" "{" dhcp_ddns_params "}"
+#line 2398 "dhcp6_parser.yy"
                                                        {
     // The enable updates DHCP DDNS parameter is required.
     ctx.require("enable-updates", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3687 "dhcp6_parser.cc"
+#line 3707 "dhcp6_parser.cc"
     break;
 
-  case 666: // $@115: %empty
-#line 2385 "dhcp6_parser.yy"
+  case 674: // $@115: %empty
+#line 2405 "dhcp6_parser.yy"
                               {
     // Parse the dhcp-ddns map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 3697 "dhcp6_parser.cc"
+#line 3717 "dhcp6_parser.cc"
     break;
 
-  case 667: // sub_dhcp_ddns: "{" $@115 dhcp_ddns_params "}"
-#line 2389 "dhcp6_parser.yy"
+  case 675: // sub_dhcp_ddns: "{" $@115 dhcp_ddns_params "}"
+#line 2409 "dhcp6_parser.yy"
                                   {
     // The enable updates DHCP DDNS parameter is required.
     ctx.require("enable-updates", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 3707 "dhcp6_parser.cc"
+#line 3727 "dhcp6_parser.cc"
     break;
 
-  case 688: // enable_updates: "enable-updates" ":" "boolean"
-#line 2419 "dhcp6_parser.yy"
+  case 696: // enable_updates: "enable-updates" ":" "boolean"
+#line 2439 "dhcp6_parser.yy"
                                              {
     ctx.unique("enable-updates", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("enable-updates", b);
 }
-#line 3717 "dhcp6_parser.cc"
+#line 3737 "dhcp6_parser.cc"
     break;
 
-  case 689: // $@116: %empty
-#line 2426 "dhcp6_parser.yy"
+  case 697: // $@116: %empty
+#line 2446 "dhcp6_parser.yy"
                                          {
     ctx.unique("qualifying-suffix", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3726 "dhcp6_parser.cc"
+#line 3746 "dhcp6_parser.cc"
     break;
 
-  case 690: // dep_qualifying_suffix: "qualifying-suffix" $@116 ":" "constant string"
-#line 2429 "dhcp6_parser.yy"
+  case 698: // dep_qualifying_suffix: "qualifying-suffix" $@116 ":" "constant string"
+#line 2449 "dhcp6_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("qualifying-suffix", s);
     ctx.leave();
 }
-#line 3736 "dhcp6_parser.cc"
+#line 3756 "dhcp6_parser.cc"
     break;
 
-  case 691: // $@117: %empty
-#line 2435 "dhcp6_parser.yy"
+  case 699: // $@117: %empty
+#line 2455 "dhcp6_parser.yy"
                      {
     ctx.unique("server-ip", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3745 "dhcp6_parser.cc"
+#line 3765 "dhcp6_parser.cc"
     break;
 
-  case 692: // server_ip: "server-ip" $@117 ":" "constant string"
-#line 2438 "dhcp6_parser.yy"
+  case 700: // server_ip: "server-ip" $@117 ":" "constant string"
+#line 2458 "dhcp6_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("server-ip", s);
     ctx.leave();
 }
-#line 3755 "dhcp6_parser.cc"
+#line 3775 "dhcp6_parser.cc"
     break;
 
-  case 693: // server_port: "server-port" ":" "integer"
-#line 2444 "dhcp6_parser.yy"
+  case 701: // server_port: "server-port" ":" "integer"
+#line 2464 "dhcp6_parser.yy"
                                        {
     ctx.unique("server-port", ctx.loc2pos(yystack_[2].location));
     ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("server-port", i);
 }
-#line 3765 "dhcp6_parser.cc"
+#line 3785 "dhcp6_parser.cc"
     break;
 
-  case 694: // $@118: %empty
-#line 2450 "dhcp6_parser.yy"
+  case 702: // $@118: %empty
+#line 2470 "dhcp6_parser.yy"
                      {
     ctx.unique("sender-ip", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3774 "dhcp6_parser.cc"
+#line 3794 "dhcp6_parser.cc"
     break;
 
-  case 695: // sender_ip: "sender-ip" $@118 ":" "constant string"
-#line 2453 "dhcp6_parser.yy"
+  case 703: // sender_ip: "sender-ip" $@118 ":" "constant string"
+#line 2473 "dhcp6_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("sender-ip", s);
     ctx.leave();
 }
-#line 3784 "dhcp6_parser.cc"
+#line 3804 "dhcp6_parser.cc"
     break;
 
-  case 696: // sender_port: "sender-port" ":" "integer"
-#line 2459 "dhcp6_parser.yy"
+  case 704: // sender_port: "sender-port" ":" "integer"
+#line 2479 "dhcp6_parser.yy"
                                        {
     ctx.unique("sender-port", ctx.loc2pos(yystack_[2].location));
     ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("sender-port", i);
 }
-#line 3794 "dhcp6_parser.cc"
+#line 3814 "dhcp6_parser.cc"
     break;
 
-  case 697: // max_queue_size: "max-queue-size" ":" "integer"
-#line 2465 "dhcp6_parser.yy"
+  case 705: // max_queue_size: "max-queue-size" ":" "integer"
+#line 2485 "dhcp6_parser.yy"
                                              {
     ctx.unique("max-queue-size", ctx.loc2pos(yystack_[2].location));
     ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-queue-size", i);
 }
-#line 3804 "dhcp6_parser.cc"
+#line 3824 "dhcp6_parser.cc"
     break;
 
-  case 698: // $@119: %empty
-#line 2471 "dhcp6_parser.yy"
+  case 706: // $@119: %empty
+#line 2491 "dhcp6_parser.yy"
                            {
     ctx.unique("ncr-protocol", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NCR_PROTOCOL);
 }
-#line 3813 "dhcp6_parser.cc"
+#line 3833 "dhcp6_parser.cc"
     break;
 
-  case 699: // ncr_protocol: "ncr-protocol" $@119 ":" ncr_protocol_value
-#line 2474 "dhcp6_parser.yy"
+  case 707: // ncr_protocol: "ncr-protocol" $@119 ":" ncr_protocol_value
+#line 2494 "dhcp6_parser.yy"
                            {
     ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 3822 "dhcp6_parser.cc"
+#line 3842 "dhcp6_parser.cc"
     break;
 
-  case 700: // ncr_protocol_value: "UDP"
-#line 2480 "dhcp6_parser.yy"
+  case 708: // ncr_protocol_value: "UDP"
+#line 2500 "dhcp6_parser.yy"
         { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
-#line 3828 "dhcp6_parser.cc"
+#line 3848 "dhcp6_parser.cc"
     break;
 
-  case 701: // ncr_protocol_value: "TCP"
-#line 2481 "dhcp6_parser.yy"
+  case 709: // ncr_protocol_value: "TCP"
+#line 2501 "dhcp6_parser.yy"
         { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
-#line 3834 "dhcp6_parser.cc"
+#line 3854 "dhcp6_parser.cc"
     break;
 
-  case 702: // $@120: %empty
-#line 2484 "dhcp6_parser.yy"
+  case 710: // $@120: %empty
+#line 2504 "dhcp6_parser.yy"
                        {
     ctx.unique("ncr-format", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NCR_FORMAT);
 }
-#line 3843 "dhcp6_parser.cc"
+#line 3863 "dhcp6_parser.cc"
     break;
 
-  case 703: // ncr_format: "ncr-format" $@120 ":" "JSON"
-#line 2487 "dhcp6_parser.yy"
+  case 711: // ncr_format: "ncr-format" $@120 ":" "JSON"
+#line 2507 "dhcp6_parser.yy"
              {
     ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ncr-format", json);
     ctx.leave();
 }
-#line 3853 "dhcp6_parser.cc"
+#line 3873 "dhcp6_parser.cc"
     break;
 
-  case 704: // dep_override_no_update: "override-no-update" ":" "boolean"
-#line 2494 "dhcp6_parser.yy"
+  case 712: // dep_override_no_update: "override-no-update" ":" "boolean"
+#line 2514 "dhcp6_parser.yy"
                                                          {
     ctx.unique("override-no-update", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("override-no-update", b);
 }
-#line 3863 "dhcp6_parser.cc"
+#line 3883 "dhcp6_parser.cc"
     break;
 
-  case 705: // dep_override_client_update: "override-client-update" ":" "boolean"
-#line 2501 "dhcp6_parser.yy"
+  case 713: // dep_override_client_update: "override-client-update" ":" "boolean"
+#line 2521 "dhcp6_parser.yy"
                                                                  {
     ctx.unique("override-client-update", ctx.loc2pos(yystack_[2].location));
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("override-client-update", b);
 }
-#line 3873 "dhcp6_parser.cc"
+#line 3893 "dhcp6_parser.cc"
     break;
 
-  case 706: // $@121: %empty
-#line 2508 "dhcp6_parser.yy"
+  case 714: // $@121: %empty
+#line 2528 "dhcp6_parser.yy"
                                              {
     ctx.unique("replace-client-name", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.REPLACE_CLIENT_NAME);
 }
-#line 3882 "dhcp6_parser.cc"
+#line 3902 "dhcp6_parser.cc"
     break;
 
-  case 707: // dep_replace_client_name: "replace-client-name" $@121 ":" ddns_replace_client_name_value
-#line 2511 "dhcp6_parser.yy"
+  case 715: // dep_replace_client_name: "replace-client-name" $@121 ":" ddns_replace_client_name_value
+#line 2531 "dhcp6_parser.yy"
                                        {
     ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 3891 "dhcp6_parser.cc"
+#line 3911 "dhcp6_parser.cc"
     break;
 
-  case 708: // $@122: %empty
-#line 2517 "dhcp6_parser.yy"
+  case 716: // $@122: %empty
+#line 2537 "dhcp6_parser.yy"
                                        {
     ctx.unique("generated-prefix", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3900 "dhcp6_parser.cc"
+#line 3920 "dhcp6_parser.cc"
     break;
 
-  case 709: // dep_generated_prefix: "generated-prefix" $@122 ":" "constant string"
-#line 2520 "dhcp6_parser.yy"
+  case 717: // dep_generated_prefix: "generated-prefix" $@122 ":" "constant string"
+#line 2540 "dhcp6_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("generated-prefix", s);
     ctx.leave();
 }
-#line 3910 "dhcp6_parser.cc"
+#line 3930 "dhcp6_parser.cc"
     break;
 
-  case 710: // $@123: %empty
-#line 2527 "dhcp6_parser.yy"
+  case 718: // $@123: %empty
+#line 2547 "dhcp6_parser.yy"
                                          {
     ctx.unique("hostname-char-set", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3919 "dhcp6_parser.cc"
+#line 3939 "dhcp6_parser.cc"
     break;
 
-  case 711: // dep_hostname_char_set: "hostname-char-set" $@123 ":" "constant string"
-#line 2530 "dhcp6_parser.yy"
+  case 719: // dep_hostname_char_set: "hostname-char-set" $@123 ":" "constant string"
+#line 2550 "dhcp6_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hostname-char-set", s);
     ctx.leave();
 }
-#line 3929 "dhcp6_parser.cc"
+#line 3949 "dhcp6_parser.cc"
     break;
 
-  case 712: // $@124: %empty
-#line 2537 "dhcp6_parser.yy"
+  case 720: // $@124: %empty
+#line 2557 "dhcp6_parser.yy"
                                                          {
     ctx.unique("hostname-char-replacement", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3938 "dhcp6_parser.cc"
+#line 3958 "dhcp6_parser.cc"
     break;
 
-  case 713: // dep_hostname_char_replacement: "hostname-char-replacement" $@124 ":" "constant string"
-#line 2540 "dhcp6_parser.yy"
+  case 721: // dep_hostname_char_replacement: "hostname-char-replacement" $@124 ":" "constant string"
+#line 2560 "dhcp6_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hostname-char-replacement", s);
     ctx.leave();
 }
-#line 3948 "dhcp6_parser.cc"
+#line 3968 "dhcp6_parser.cc"
     break;
 
-  case 714: // $@125: %empty
-#line 2549 "dhcp6_parser.yy"
+  case 722: // $@125: %empty
+#line 2569 "dhcp6_parser.yy"
                                {
     ctx.unique("config-control", ctx.loc2pos(yystack_[0].location));
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -3956,40 +3976,40 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(i);
     ctx.enter(ctx.CONFIG_CONTROL);
 }
-#line 3960 "dhcp6_parser.cc"
+#line 3980 "dhcp6_parser.cc"
     break;
 
-  case 715: // config_control: "config-control" $@125 ":" "{" config_control_params "}"
-#line 2555 "dhcp6_parser.yy"
+  case 723: // config_control: "config-control" $@125 ":" "{" config_control_params "}"
+#line 2575 "dhcp6_parser.yy"
                                                             {
     // No config control params are required
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3970 "dhcp6_parser.cc"
+#line 3990 "dhcp6_parser.cc"
     break;
 
-  case 716: // $@126: %empty
-#line 2561 "dhcp6_parser.yy"
+  case 724: // $@126: %empty
+#line 2581 "dhcp6_parser.yy"
                                    {
     // Parse the config-control map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 3980 "dhcp6_parser.cc"
+#line 4000 "dhcp6_parser.cc"
     break;
 
-  case 717: // sub_config_control: "{" $@126 config_control_params "}"
-#line 2565 "dhcp6_parser.yy"
+  case 725: // sub_config_control: "{" $@126 config_control_params "}"
+#line 2585 "dhcp6_parser.yy"
                                        {
     // No config_control params are required
     // parsing completed
 }
-#line 3989 "dhcp6_parser.cc"
+#line 4009 "dhcp6_parser.cc"
     break;
 
-  case 722: // $@127: %empty
-#line 2580 "dhcp6_parser.yy"
+  case 730: // $@127: %empty
+#line 2600 "dhcp6_parser.yy"
                                    {
     ctx.unique("config-databases", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -3997,30 +4017,30 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(l);
     ctx.enter(ctx.CONFIG_DATABASE);
 }
-#line 4001 "dhcp6_parser.cc"
+#line 4021 "dhcp6_parser.cc"
     break;
 
-  case 723: // config_databases: "config-databases" $@127 ":" "[" database_list "]"
-#line 2586 "dhcp6_parser.yy"
+  case 731: // config_databases: "config-databases" $@127 ":" "[" database_list "]"
+#line 2606 "dhcp6_parser.yy"
                                                       {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 4010 "dhcp6_parser.cc"
+#line 4030 "dhcp6_parser.cc"
     break;
 
-  case 724: // config_fetch_wait_time: "config-fetch-wait-time" ":" "integer"
-#line 2591 "dhcp6_parser.yy"
+  case 732: // config_fetch_wait_time: "config-fetch-wait-time" ":" "integer"
+#line 2611 "dhcp6_parser.yy"
                                                              {
     ctx.unique("config-fetch-wait-time", ctx.loc2pos(yystack_[2].location));
     ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("config-fetch-wait-time", value);
 }
-#line 4020 "dhcp6_parser.cc"
+#line 4040 "dhcp6_parser.cc"
     break;
 
-  case 725: // $@128: %empty
-#line 2599 "dhcp6_parser.yy"
+  case 733: // $@128: %empty
+#line 2619 "dhcp6_parser.yy"
                  {
     ctx.unique("loggers", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -4028,67 +4048,67 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(l);
     ctx.enter(ctx.LOGGERS);
 }
-#line 4032 "dhcp6_parser.cc"
+#line 4052 "dhcp6_parser.cc"
     break;
 
-  case 726: // loggers: "loggers" $@128 ":" "[" loggers_entries "]"
-#line 2605 "dhcp6_parser.yy"
+  case 734: // loggers: "loggers" $@128 ":" "[" loggers_entries "]"
+#line 2625 "dhcp6_parser.yy"
                                                          {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 4041 "dhcp6_parser.cc"
+#line 4061 "dhcp6_parser.cc"
     break;
 
-  case 729: // $@129: %empty
-#line 2617 "dhcp6_parser.yy"
+  case 737: // $@129: %empty
+#line 2637 "dhcp6_parser.yy"
                              {
     ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(l);
     ctx.stack_.push_back(l);
 }
-#line 4051 "dhcp6_parser.cc"
+#line 4071 "dhcp6_parser.cc"
     break;
 
-  case 730: // logger_entry: "{" $@129 logger_params "}"
-#line 2621 "dhcp6_parser.yy"
+  case 738: // logger_entry: "{" $@129 logger_params "}"
+#line 2641 "dhcp6_parser.yy"
                                {
     ctx.stack_.pop_back();
 }
-#line 4059 "dhcp6_parser.cc"
+#line 4079 "dhcp6_parser.cc"
     break;
 
-  case 740: // debuglevel: "debuglevel" ":" "integer"
-#line 2638 "dhcp6_parser.yy"
+  case 748: // debuglevel: "debuglevel" ":" "integer"
+#line 2658 "dhcp6_parser.yy"
                                      {
     ctx.unique("debuglevel", ctx.loc2pos(yystack_[2].location));
     ElementPtr dl(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("debuglevel", dl);
 }
-#line 4069 "dhcp6_parser.cc"
+#line 4089 "dhcp6_parser.cc"
     break;
 
-  case 741: // $@130: %empty
-#line 2644 "dhcp6_parser.yy"
+  case 749: // $@130: %empty
+#line 2664 "dhcp6_parser.yy"
                    {
     ctx.unique("severity", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 4078 "dhcp6_parser.cc"
+#line 4098 "dhcp6_parser.cc"
     break;
 
-  case 742: // severity: "severity" $@130 ":" "constant string"
-#line 2647 "dhcp6_parser.yy"
+  case 750: // severity: "severity" $@130 ":" "constant string"
+#line 2667 "dhcp6_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 4088 "dhcp6_parser.cc"
+#line 4108 "dhcp6_parser.cc"
     break;
 
-  case 743: // $@131: %empty
-#line 2653 "dhcp6_parser.yy"
+  case 751: // $@131: %empty
+#line 2673 "dhcp6_parser.yy"
                                     {
     ctx.unique("output_options", ctx.loc2pos(yystack_[0].location));
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -4096,106 +4116,106 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(l);
     ctx.enter(ctx.OUTPUT_OPTIONS);
 }
-#line 4100 "dhcp6_parser.cc"
+#line 4120 "dhcp6_parser.cc"
     break;
 
-  case 744: // output_options_list: "output_options" $@131 ":" "[" output_options_list_content "]"
-#line 2659 "dhcp6_parser.yy"
+  case 752: // output_options_list: "output_options" $@131 ":" "[" output_options_list_content "]"
+#line 2679 "dhcp6_parser.yy"
                                                                     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 4109 "dhcp6_parser.cc"
+#line 4129 "dhcp6_parser.cc"
     break;
 
-  case 747: // $@132: %empty
-#line 2668 "dhcp6_parser.yy"
+  case 755: // $@132: %empty
+#line 2688 "dhcp6_parser.yy"
                              {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 4119 "dhcp6_parser.cc"
+#line 4139 "dhcp6_parser.cc"
     break;
 
-  case 748: // output_entry: "{" $@132 output_params_list "}"
-#line 2672 "dhcp6_parser.yy"
+  case 756: // output_entry: "{" $@132 output_params_list "}"
+#line 2692 "dhcp6_parser.yy"
                                     {
     ctx.stack_.pop_back();
 }
-#line 4127 "dhcp6_parser.cc"
+#line 4147 "dhcp6_parser.cc"
     break;
 
-  case 756: // $@133: %empty
-#line 2687 "dhcp6_parser.yy"
+  case 764: // $@133: %empty
+#line 2707 "dhcp6_parser.yy"
                {
     ctx.unique("output", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 4136 "dhcp6_parser.cc"
+#line 4156 "dhcp6_parser.cc"
     break;
 
-  case 757: // output: "output" $@133 ":" "constant string"
-#line 2690 "dhcp6_parser.yy"
+  case 765: // output: "output" $@133 ":" "constant string"
+#line 2710 "dhcp6_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 4146 "dhcp6_parser.cc"
+#line 4166 "dhcp6_parser.cc"
     break;
 
-  case 758: // flush: "flush" ":" "boolean"
-#line 2696 "dhcp6_parser.yy"
+  case 766: // flush: "flush" ":" "boolean"
+#line 2716 "dhcp6_parser.yy"
                            {
     ctx.unique("flush", ctx.loc2pos(yystack_[2].location));
     ElementPtr flush(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("flush", flush);
 }
-#line 4156 "dhcp6_parser.cc"
+#line 4176 "dhcp6_parser.cc"
     break;
 
-  case 759: // maxsize: "maxsize" ":" "integer"
-#line 2702 "dhcp6_parser.yy"
+  case 767: // maxsize: "maxsize" ":" "integer"
+#line 2722 "dhcp6_parser.yy"
                                {
     ctx.unique("maxsize", ctx.loc2pos(yystack_[2].location));
     ElementPtr maxsize(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("maxsize", maxsize);
 }
-#line 4166 "dhcp6_parser.cc"
+#line 4186 "dhcp6_parser.cc"
     break;
 
-  case 760: // maxver: "maxver" ":" "integer"
-#line 2708 "dhcp6_parser.yy"
+  case 768: // maxver: "maxver" ":" "integer"
+#line 2728 "dhcp6_parser.yy"
                              {
     ctx.unique("maxver", ctx.loc2pos(yystack_[2].location));
     ElementPtr maxver(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("maxver", maxver);
 }
-#line 4176 "dhcp6_parser.cc"
+#line 4196 "dhcp6_parser.cc"
     break;
 
-  case 761: // $@134: %empty
-#line 2714 "dhcp6_parser.yy"
+  case 769: // $@134: %empty
+#line 2734 "dhcp6_parser.yy"
                  {
     ctx.unique("pattern", ctx.loc2pos(yystack_[0].location));
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 4185 "dhcp6_parser.cc"
+#line 4205 "dhcp6_parser.cc"
     break;
 
-  case 762: // pattern: "pattern" $@134 ":" "constant string"
-#line 2717 "dhcp6_parser.yy"
+  case 770: // pattern: "pattern" $@134 ":" "constant string"
+#line 2737 "dhcp6_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 4195 "dhcp6_parser.cc"
+#line 4215 "dhcp6_parser.cc"
     break;
 
 
-#line 4199 "dhcp6_parser.cc"
+#line 4219 "dhcp6_parser.cc"
 
             default:
               break;
@@ -4544,137 +4564,138 @@ namespace isc { namespace dhcp {
   }
 
 
-  const short Dhcp6Parser::yypact_ninf_ = -925;
+  const short Dhcp6Parser::yypact_ninf_ = -935;
 
   const signed char Dhcp6Parser::yytable_ninf_ = -1;
 
   const short
   Dhcp6Parser::yypact_[] =
   {
-     557,  -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,
-    -925,  -925,  -925,  -925,  -925,    41,    33,    44,    46,    50,
-      52,    56,    62,    89,   101,   109,   132,   134,   148,   179,
-    -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,
-    -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,
-    -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,
-    -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,    33,  -123,
-     225,   116,    27,   484,    51,   186,   263,    59,    71,   269,
-     -65,   455,   119,  -925,   237,   244,   276,   280,   286,  -925,
-     299,  -925,  -925,  -925,  -925,  -925,  -925,   325,   332,   340,
-     341,   375,   377,   379,   381,   385,   386,   397,   398,  -925,
-     401,   404,   407,   409,   411,  -925,  -925,  -925,   413,  -925,
-    -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,
-    -925,  -925,  -925,  -925,  -925,   414,  -925,  -925,  -925,  -925,
-    -925,  -925,  -925,   417,  -925,    75,  -925,  -925,  -925,  -925,
-    -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,
-    -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,
-    -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,
-    -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,
-    -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,
-     418,  -925,    92,  -925,  -925,  -925,  -925,  -925,  -925,  -925,
-    -925,  -925,  -925,   419,   420,  -925,  -925,  -925,  -925,  -925,
-    -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,
-    -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,    96,
-    -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,
-    -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,
-    -925,   112,  -925,  -925,  -925,  -925,  -925,   421,  -925,   423,
-     429,  -925,  -925,  -925,  -925,  -925,  -925,   114,  -925,  -925,
-    -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,
-    -925,  -925,  -925,  -925,  -925,   356,   290,  -925,  -925,  -925,
-    -925,  -925,  -925,  -925,  -925,   358,  -925,  -925,   433,  -925,
-    -925,  -925,   434,  -925,  -925,   439,   438,  -925,  -925,  -925,
-    -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,
-     445,   448,  -925,  -925,  -925,  -925,   446,   450,  -925,  -925,
-    -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,
-     115,  -925,  -925,  -925,   454,  -925,  -925,   457,  -925,   460,
-     461,  -925,  -925,   462,   463,  -925,  -925,  -925,  -925,  -925,
-    -925,  -925,   184,  -925,  -925,  -925,  -925,  -925,  -925,  -925,
-    -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,
-     465,   192,  -925,  -925,  -925,  -925,    33,    33,  -925,   248,
-     469,  -925,   470,   472,   473,   474,   476,   477,   288,   291,
-     295,   302,   303,   305,   310,   311,   313,   312,   316,   318,
-     481,   319,   320,   322,   323,   324,   489,   491,   513,   326,
-     518,   520,   521,   522,   535,   536,   546,   547,   549,   550,
-     551,   552,   553,   554,   555,   556,   366,   559,   561,   562,
-     563,   564,   565,   574,  -925,   116,  -925,   575,   383,    27,
-    -925,   577,   578,   580,   581,   583,   393,   394,   586,   590,
-     591,   484,  -925,   592,    51,  -925,   593,   403,   595,   406,
-     408,   186,  -925,   613,   614,   618,   622,   623,   624,   625,
-    -925,   263,  -925,   626,   627,   437,   629,   630,   636,   444,
-    -925,    71,   638,   447,   449,  -925,   269,   641,   643,    74,
-    -925,   451,   646,   647,   464,   648,   466,   467,   651,   652,
-     478,   479,   653,   656,   659,   673,   455,  -925,   683,   495,
-     119,  -925,  -925,  -925,   692,   690,   504,   693,   694,   695,
-     696,   699,  -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,
-    -925,  -925,  -925,  -925,   505,  -925,  -925,  -925,  -925,  -925,
-    -100,   511,   514,  -925,   706,   709,   710,   711,   523,   298,
-     714,   715,   716,   717,   719,   718,   722,   724,   723,   725,
-    -925,   726,   727,   728,   744,   530,   537,   747,  -925,   748,
-    -925,  -925,   749,   750,   566,   567,   568,  -925,  -925,   748,
-     569,   751,  -925,   570,  -925,   571,  -925,   572,  -925,  -925,
-    -925,   748,   748,   748,   573,   576,   579,   582,  -925,   584,
-     585,  -925,   587,   588,   589,  -925,  -925,   594,  -925,  -925,
-    -925,   597,   711,  -925,  -925,   598,   599,  -925,   600,  -925,
-    -925,   100,   604,  -925,  -925,  -100,   601,   602,   603,  -925,
-     752,  -925,  -925,    33,   116,  -925,   119,    27,   285,   285,
-     762,  -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,
-     764,   765,   767,  -925,  -925,  -925,  -925,  -925,  -925,  -925,
-    -925,   768,   -73,    33,   294,   674,   773,   777,   778,   235,
-      64,    67,   136,   188,   455,  -925,  -925,   779,  -925,  -925,
-     780,   791,  -925,  -925,  -925,  -925,  -925,   -61,  -925,  -925,
-    -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,
-    -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,
-    -925,  -925,  -925,  -925,  -925,  -925,  -925,   762,  -925,   205,
-     216,   223,  -925,  -925,  -925,  -925,   712,   755,   795,   796,
-     797,  -925,   798,   799,  -925,  -925,  -925,   800,   801,   802,
-     803,  -925,   230,  -925,  -925,  -925,  -925,  -925,  -925,  -925,
-    -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,
-    -925,  -925,  -925,  -925,   243,  -925,   804,   753,  -925,  -925,
-     805,   806,  -925,  -925,   807,   809,  -925,  -925,   810,   812,
-    -925,  -925,   811,   815,  -925,  -925,  -925,    78,  -925,  -925,
-    -925,   813,  -925,  -925,  -925,   146,  -925,  -925,  -925,  -925,
-     247,  -925,  -925,  -925,   198,  -925,  -925,   814,   818,  -925,
-    -925,   816,   820,  -925,   821,   822,   823,   824,   825,   826,
-     273,  -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,
-     827,   828,   829,  -925,  -925,  -925,  -925,   274,  -925,  -925,
-    -925,  -925,  -925,  -925,   830,   831,   832,  -925,   287,  -925,
-    -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,
-     289,  -925,  -925,  -925,   833,  -925,   834,  -925,  -925,  -925,
-     293,  -925,  -925,  -925,  -925,  -925,   296,  -925,   233,  -925,
-     645,  -925,   835,   837,  -925,  -925,   836,   840,  -925,  -925,
-    -925,   838,  -925,   839,  -925,  -925,  -925,   843,   844,   845,
-     846,   649,   611,   657,   654,   658,   850,   660,   661,   853,
-     854,   855,   665,   666,   667,   668,   285,  -925,  -925,   285,
-    -925,   762,   484,  -925,   764,    71,  -925,   765,   269,  -925,
-     767,   620,  -925,   768,   -73,  -925,  -925,   294,  -925,   858,
-     674,  -925,    38,   773,  -925,   263,  -925,   777,   -65,  -925,
-     778,   670,   671,   672,   675,   677,   678,   235,  -925,   864,
-     865,   680,   681,   684,    64,  -925,   689,   703,   731,    67,
-    -925,   884,   885,   136,  -925,   707,   901,   737,   902,   188,
-    -925,  -925,   197,   779,  -925,  -925,   911,   917,    51,  -925,
-     780,   186,  -925,   791,   941,  -925,  -925,   374,   757,   760,
-     763,  -925,  -925,  -925,  -925,  -925,   771,  -925,  -925,   783,
-     786,   788,  -925,  -925,  -925,  -925,  -925,   297,  -925,   300,
-    -925,   950,  -925,   953,  -925,  -925,  -925,  -925,  -925,  -925,
-    -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,
-    -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,
-    -925,  -925,  -925,  -925,   329,  -925,  -925,  -925,  -925,  -925,
-    -925,  -925,  -925,   790,  -925,  -925,   969,  -925,  -925,  -925,
-    -925,  -925,   979,   986,  -925,  -925,  -925,  -925,  -925,   983,
-    -925,   343,  -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,
-      81,   808,  -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,
-     817,   819,  -925,  -925,   841,  -925,    33,  -925,  -925,   988,
-    -925,  -925,  -925,  -925,  -925,   344,  -925,  -925,  -925,  -925,
-    -925,  -925,   842,   345,  -925,   360,  -925,   847,  -925,  -925,
-    -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,
-    -925,  -925,  -925,  -925,   620,  -925,  -925,   989,   852,  -925,
-      38,  -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,
-    -925,  -925,   991,   849,   992,   197,  -925,  -925,  -925,  -925,
-    -925,  -925,   848,  -925,  -925,   993,  -925,   856,  -925,  -925,
-     990,  -925,  -925,   253,  -925,    12,   990,  -925,  -925,   995,
-     997,  1000,  -925,   362,  -925,  -925,  -925,  -925,  -925,  -925,
-    -925,  1001,   857,   860,   861,  1002,    12,  -925,   859,  -925,
-    -925,  -925,   863,  -925,  -925,  -925
+     501,  -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,
+    -935,  -935,  -935,  -935,  -935,    44,    36,    39,    43,    74,
+      81,    88,   116,   118,   144,   148,   158,   159,   166,   168,
+    -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,
+    -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,
+    -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,
+    -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,    36,   -80,
+     167,   149,    31,   510,    82,   241,   253,   119,   151,   192,
+     -65,   632,    46,  -935,   235,   251,   252,   265,   307,  -935,
+     304,  -935,  -935,  -935,  -935,  -935,  -935,   327,   339,   342,
+     345,   356,   381,   383,   385,   387,   389,   390,   395,   396,
+     402,  -935,   403,   405,   406,   413,   415,  -935,  -935,  -935,
+     417,  -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,
+    -935,  -935,  -935,  -935,  -935,  -935,  -935,   418,  -935,  -935,
+    -935,  -935,  -935,  -935,  -935,   422,  -935,    75,  -935,  -935,
+    -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,
+    -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,
+    -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,
+    -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,
+    -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,
+    -935,  -935,  -935,  -935,   425,  -935,    93,  -935,  -935,  -935,
+    -935,  -935,  -935,  -935,  -935,  -935,  -935,   426,   427,  -935,
+    -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,
+    -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,
+    -935,  -935,  -935,  -935,  -935,    99,  -935,  -935,  -935,  -935,
+    -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,
+    -935,  -935,  -935,  -935,  -935,  -935,  -935,   101,  -935,  -935,
+    -935,  -935,  -935,   428,  -935,   429,   432,  -935,  -935,  -935,
+    -935,  -935,  -935,   124,  -935,  -935,  -935,  -935,  -935,  -935,
+    -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,
+    -935,   332,   376,  -935,  -935,  -935,  -935,  -935,  -935,  -935,
+    -935,   374,  -935,  -935,   444,  -935,  -935,  -935,   446,  -935,
+    -935,   445,   392,  -935,  -935,  -935,  -935,  -935,  -935,  -935,
+    -935,  -935,  -935,  -935,  -935,  -935,   451,   452,  -935,  -935,
+    -935,  -935,   449,   462,  -935,  -935,  -935,  -935,  -935,  -935,
+    -935,  -935,  -935,  -935,  -935,  -935,   150,  -935,  -935,  -935,
+     463,  -935,  -935,   465,  -935,   466,   467,  -935,  -935,   468,
+     469,  -935,  -935,  -935,  -935,  -935,  -935,  -935,   171,  -935,
+    -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,
+    -935,  -935,  -935,  -935,  -935,  -935,   470,   183,  -935,  -935,
+    -935,  -935,    36,    36,  -935,   270,   471,  -935,   472,   473,
+     477,   478,   480,   481,   289,   290,   291,   292,   294,   296,
+     302,   308,   295,   303,   309,   310,   314,   316,   498,   321,
+     324,   323,   326,   328,   499,   500,   502,   334,   519,   522,
+     524,   527,   530,   534,   535,   536,   537,   538,   539,   541,
+     542,   543,   544,   545,   353,   547,   548,   549,   563,   564,
+     565,   566,  -935,   149,  -935,   574,   380,    31,  -935,   577,
+     578,   579,   580,   581,   394,   388,   582,   584,   585,   510,
+    -935,   590,    82,  -935,   591,   400,   602,   410,   411,   241,
+    -935,   605,   606,   607,   609,   610,   611,   612,  -935,   253,
+    -935,   614,   615,   430,   618,   619,   620,   433,  -935,   151,
+     621,   435,   436,  -935,   192,   622,   633,   -51,  -935,   437,
+     634,   635,   443,   637,   447,   453,   638,   639,   454,   455,
+     647,   648,   651,   652,   632,  -935,   653,   464,    46,  -935,
+    -935,  -935,   655,   656,   474,   657,   658,   659,   660,   664,
+    -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,
+    -935,  -935,  -935,  -935,   475,  -935,  -935,  -935,  -935,  -935,
+    -106,   476,   479,  -935,   668,   669,   671,   670,   482,   306,
+     674,   675,   692,   693,   715,   694,   695,   718,   725,   728,
+    -935,   729,   730,   731,   732,   546,   550,   735,  -935,   736,
+    -935,  -935,   738,   739,   551,   552,   553,  -935,  -935,   736,
+     554,   746,  -935,   560,  -935,   567,  -935,   568,  -935,  -935,
+    -935,   736,   736,   736,   569,   570,   571,   572,  -935,   573,
+     575,  -935,   576,   583,   586,  -935,  -935,   600,  -935,  -935,
+    -935,   601,   670,  -935,  -935,   603,   604,  -935,   613,  -935,
+    -935,    97,   494,  -935,  -935,  -106,   616,   617,   623,  -935,
+     740,  -935,  -935,    36,   149,  -935,    46,    31,   107,   107,
+     752,  -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,
+     753,   754,   755,  -935,  -935,  -935,  -935,  -935,  -935,  -935,
+    -935,   767,   -79,    36,   -30,   557,   768,   769,   770,    56,
+     227,   194,   229,   205,   632,  -935,  -935,   771,  -935,  -935,
+     773,   791,  -935,  -935,  -935,  -935,  -935,   -70,  -935,  -935,
+    -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,
+    -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,
+    -935,  -935,  -935,  -935,  -935,  -935,  -935,   752,  -935,   218,
+     228,   267,  -935,  -935,  -935,  -935,   797,   798,   801,   802,
+     803,  -935,   804,   806,  -935,  -935,  -935,   807,   810,   811,
+     812,  -935,   281,  -935,  -935,  -935,  -935,  -935,  -935,  -935,
+    -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,
+    -935,  -935,  -935,  -935,   282,  -935,   814,   815,  -935,  -935,
+     816,   818,  -935,  -935,   817,   821,  -935,  -935,   819,   823,
+    -935,  -935,   824,   826,  -935,  -935,  -935,   109,  -935,  -935,
+    -935,   825,  -935,  -935,  -935,   156,  -935,  -935,  -935,  -935,
+     283,  -935,  -935,  -935,   184,  -935,  -935,   827,   829,  -935,
+    -935,   830,   834,  -935,   813,   835,   836,   837,   838,   839,
+     297,  -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,
+     840,   841,   842,  -935,  -935,  -935,  -935,   298,  -935,  -935,
+    -935,  -935,  -935,  -935,   843,   844,   845,  -935,   301,  -935,
+    -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,
+     305,  -935,  -935,  -935,   846,  -935,   847,  -935,  -935,  -935,
+     311,  -935,  -935,  -935,  -935,  -935,   329,  -935,   217,  -935,
+     631,  -935,   832,   849,  -935,  -935,   848,   850,  -935,  -935,
+    -935,   852,  -935,   851,  -935,  -935,  -935,   854,   857,   858,
+     859,   667,   666,   672,   673,   676,   862,   677,   678,   863,
+     864,   866,   679,   680,   681,   682,   107,  -935,  -935,   107,
+    -935,   752,   510,  -935,   753,   151,  -935,   754,   192,  -935,
+     755,   663,  -935,   767,   -79,  -935,  -935,   -30,  -935,   867,
+     557,  -935,   188,   768,  -935,   253,  -935,   769,   -65,  -935,
+     770,   685,   686,   689,   691,   697,   699,    56,  -935,   874,
+     885,   702,   708,   713,   227,  -935,   712,   717,   719,   194,
+    -935,   914,   915,   229,  -935,   726,   922,   733,   923,   205,
+    -935,  -935,   -20,   771,  -935,  -935,   930,   853,    82,  -935,
+     773,   241,  -935,   791,   925,  -935,  -935,   391,   749,   756,
+     759,  -935,  -935,  -935,  -935,  -935,   762,  -935,  -935,   765,
+     776,   779,  -935,  -935,  -935,  -935,  -935,   330,  -935,   336,
+    -935,   956,  -935,   959,  -935,  -935,  -935,  -935,  -935,  -935,
+    -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,
+    -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,
+    -935,  -935,  -935,  -935,  -935,  -935,   347,  -935,  -935,  -935,
+    -935,  -935,  -935,  -935,  -935,   787,  -935,  -935,   982,  -935,
+    -935,  -935,  -935,  -935,   980,  1004,  -935,  -935,  -935,  -935,
+    -935,  1001,  -935,   368,  -935,  -935,  -935,  -935,  -935,  -935,
+    -935,  -935,   225,   822,  -935,  -935,  -935,  -935,  -935,  -935,
+    -935,  -935,   828,   831,  -935,  -935,   833,  -935,    36,  -935,
+    -935,  1007,  -935,  -935,  -935,  -935,  -935,   369,  -935,  -935,
+    -935,  -935,  -935,  -935,   855,   372,  -935,   375,  -935,   856,
+    -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,
+    -935,  -935,  -935,  -935,  -935,  -935,   663,  -935,  -935,  1011,
+     860,  -935,   188,  -935,  -935,  -935,  -935,  -935,  -935,  -935,
+    -935,  -935,  -935,  -935,  1013,   861,  1016,   -20,  -935,  -935,
+    -935,  -935,  -935,  -935,   865,  -935,  -935,  1018,  -935,   868,
+    -935,  -935,  1014,  -935,  -935,   268,  -935,   -81,  1014,  -935,
+    -935,  1021,  1022,  1024,  -935,   378,  -935,  -935,  -935,  -935,
+    -935,  -935,  -935,  1026,   870,   869,   873,  1027,   -81,  -935,
+     871,  -935,  -935,  -935,   875,  -935,  -935,  -935
   };
 
   const short
@@ -4684,174 +4705,175 @@ namespace isc { namespace dhcp {
       20,    22,    24,    26,    28,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        1,    45,    38,    34,    33,    30,    31,    32,    37,     3,
-      35,    36,    58,     5,    62,     7,   158,     9,   320,    11,
-     498,    13,   523,    15,   553,    17,   423,    19,   431,    21,
-     468,    23,   285,    25,   666,    27,   716,    29,    47,    41,
-       0,     0,     0,     0,     0,     0,   555,     0,   433,   470,
+      35,    36,    58,     5,    62,     7,   162,     9,   324,    11,
+     506,    13,   531,    15,   561,    17,   431,    19,   439,    21,
+     476,    23,   289,    25,   674,    27,   724,    29,    47,    41,
+       0,     0,     0,     0,     0,     0,   563,     0,   441,   478,
        0,     0,     0,    49,     0,    48,     0,     0,    42,    60,
-       0,   119,   714,   156,   170,   172,   174,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   154,
-       0,     0,     0,     0,     0,   136,   143,   145,     0,   312,
-     421,   460,   511,   513,   370,   378,   245,   262,   253,   238,
-     590,   545,   277,   296,   611,     0,   264,   635,   648,   664,
-     147,   149,   725,     0,   118,     0,    64,    66,    67,    68,
-      69,    70,    71,    72,    73,    74,   102,   103,   104,    75,
-     108,   109,   110,   111,   112,   113,   106,   107,   114,   115,
-     116,   100,    78,    79,    80,    81,    97,    82,    84,    83,
-     117,    88,    89,    76,   101,    77,    86,    87,    95,    96,
-      98,    85,    90,    91,    92,    93,    94,    99,   105,   167,
-       0,   166,     0,   160,   162,   163,   164,   165,   490,   515,
-     360,   362,   364,     0,     0,   368,   366,   584,   359,   324,
-     325,   326,   327,   328,   329,   330,   331,   347,   348,   349,
-     352,   353,   354,   355,   356,   357,   350,   351,   358,     0,
-     322,   335,   336,   337,   340,   341,   343,   338,   339,   332,
-     333,   345,   346,   334,   342,   344,   509,   508,   504,   505,
-     503,     0,   500,   502,   506,   507,   538,     0,   541,     0,
-       0,   537,   531,   532,   530,   535,   536,     0,   525,   527,
-     528,   533,   534,   529,   582,   570,   572,   574,   576,   578,
-     580,   569,   566,   567,   568,     0,   556,   557,   561,   562,
-     559,   563,   564,   565,   560,     0,   450,   218,     0,   454,
-     452,   457,     0,   446,   447,     0,   434,   435,   437,   449,
-     438,   439,   440,   456,   441,   442,   443,   444,   445,   484,
-       0,     0,   482,   483,   486,   487,     0,   471,   472,   474,
-     475,   476,   477,   478,   479,   480,   481,   292,   294,   289,
-       0,   287,   290,   291,     0,   689,   691,     0,   694,     0,
-       0,   698,   702,     0,     0,   706,   708,   710,   712,   687,
-     685,   686,     0,   668,   670,   682,   671,   672,   673,   674,
-     675,   676,   677,   678,   679,   680,   681,   683,   684,   722,
-       0,     0,   718,   720,   721,    46,     0,     0,    39,     0,
-       0,    59,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   121,   722,   160,   174,   176,   178,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   158,     0,     0,     0,     0,     0,   140,   147,   149,
+       0,   316,   429,   468,   519,   521,   376,   384,   249,   266,
+     257,   242,   598,   553,   281,   300,   619,     0,   268,   643,
+     656,   672,   151,   153,   733,     0,   120,     0,    64,    66,
+      67,    68,    69,    70,    71,    72,    73,    74,   102,   103,
+     104,   105,   106,    75,   110,   111,   112,   113,   114,   115,
+     108,   109,   116,   117,   118,   100,    78,    79,    80,    81,
+      97,    82,    84,    83,   119,    88,    89,    76,   101,    77,
+      86,    87,    95,    96,    98,    85,    90,    91,    92,    93,
+      94,    99,   107,   171,     0,   170,     0,   164,   166,   167,
+     168,   169,   498,   523,   366,   368,   370,     0,     0,   374,
+     372,   592,   365,   328,   329,   330,   331,   332,   333,   334,
+     335,   351,   352,   353,   354,   355,   358,   359,   360,   361,
+     362,   363,   356,   357,   364,     0,   326,   339,   340,   341,
+     344,   345,   347,   342,   343,   336,   337,   349,   350,   338,
+     346,   348,   517,   516,   512,   513,   511,     0,   508,   510,
+     514,   515,   546,     0,   549,     0,     0,   545,   539,   540,
+     538,   543,   544,     0,   533,   535,   536,   541,   542,   537,
+     590,   578,   580,   582,   584,   586,   588,   577,   574,   575,
+     576,     0,   564,   565,   569,   570,   567,   571,   572,   573,
+     568,     0,   458,   222,     0,   462,   460,   465,     0,   454,
+     455,     0,   442,   443,   445,   457,   446,   447,   448,   464,
+     449,   450,   451,   452,   453,   492,     0,     0,   490,   491,
+     494,   495,     0,   479,   480,   482,   483,   484,   485,   486,
+     487,   488,   489,   296,   298,   293,     0,   291,   294,   295,
+       0,   697,   699,     0,   702,     0,     0,   706,   710,     0,
+       0,   714,   716,   718,   720,   695,   693,   694,     0,   676,
+     678,   690,   679,   680,   681,   682,   683,   684,   685,   686,
+     687,   688,   689,   691,   692,   730,     0,     0,   726,   728,
+     729,    46,     0,     0,    39,     0,     0,    59,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    57,     0,    63,     0,     0,     0,
-     159,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   321,     0,     0,   499,     0,     0,     0,     0,
-       0,     0,   524,     0,     0,     0,     0,     0,     0,     0,
-     554,     0,   424,     0,     0,     0,     0,     0,     0,     0,
-     432,     0,     0,     0,     0,   469,     0,     0,     0,     0,
-     286,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   667,     0,     0,
-       0,   717,    50,    43,     0,     0,     0,     0,     0,     0,
-       0,     0,   121,   122,   123,   124,   125,   126,   127,   128,
-     129,   130,   131,   132,     0,   152,   153,   133,   134,   135,
-       0,     0,     0,   151,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     634,     0,     0,     0,     0,     0,     0,     0,    65,     0,
-     169,   161,     0,     0,     0,     0,     0,   376,   377,     0,
-       0,     0,   323,     0,   501,     0,   540,     0,   543,   544,
-     526,     0,     0,     0,     0,     0,     0,     0,   558,     0,
-       0,   448,     0,     0,     0,   459,   436,     0,   488,   489,
-     473,     0,     0,   288,   688,     0,     0,   693,     0,   696,
-     697,     0,     0,   704,   705,     0,     0,     0,     0,   669,
-       0,   724,   719,     0,     0,   120,     0,     0,     0,     0,
-     176,   155,   138,   139,   140,   141,   142,   137,   144,   146,
-     314,   425,   462,    40,   512,   514,   372,   373,   374,   375,
-     371,   380,     0,    47,     0,     0,     0,   547,   279,     0,
-       0,     0,     0,     0,     0,   148,   150,     0,    51,   168,
-     492,   517,   361,   363,   365,   369,   367,     0,   510,   539,
-     542,   583,   571,   573,   575,   577,   579,   581,   451,   219,
-     455,   453,   458,   485,   293,   295,   690,   692,   695,   700,
-     701,   699,   703,   707,   709,   711,   713,   176,    44,     0,
-       0,     0,   205,   211,   213,   215,     0,     0,     0,     0,
-       0,   229,     0,     0,   232,   234,   236,     0,     0,     0,
-       0,   204,     0,   182,   184,   185,   186,   187,   188,   189,
-     190,   191,   192,   193,   196,   203,   197,   198,   199,   194,
-     195,   200,   201,   202,     0,   180,     0,   177,   178,   318,
-       0,   315,   316,   429,     0,   426,   427,   466,     0,   463,
-     464,   384,     0,   381,   382,   251,   252,     0,   247,   249,
-     250,     0,   260,   261,   257,     0,   255,   258,   259,   243,
-       0,   240,   242,   594,     0,   592,   551,     0,   548,   549,
-     283,     0,   280,   281,     0,     0,     0,     0,     0,     0,
-       0,   298,   300,   301,   302,   303,   304,   305,   624,   630,
-       0,     0,     0,   623,   620,   621,   622,     0,   613,   615,
-     618,   616,   617,   619,     0,     0,     0,   273,     0,   266,
-     268,   269,   270,   271,   272,   644,   646,   643,   641,   642,
-       0,   637,   639,   640,     0,   659,     0,   662,   655,   656,
-       0,   650,   652,   653,   654,   657,     0,   729,     0,   727,
-      53,   496,     0,   493,   494,   521,     0,   518,   519,   588,
-     587,     0,   586,     0,    61,   715,   157,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   171,   173,     0,
-     175,     0,     0,   313,     0,   433,   422,     0,   470,   461,
-       0,     0,   379,     0,     0,   246,   263,     0,   254,     0,
-       0,   239,   596,     0,   591,   555,   546,     0,     0,   278,
-       0,     0,     0,     0,     0,     0,     0,     0,   297,     0,
-       0,     0,     0,     0,     0,   612,     0,     0,     0,     0,
-     265,     0,     0,     0,   636,     0,     0,     0,     0,     0,
-     649,   665,     0,     0,   726,    55,     0,    54,     0,   491,
-       0,     0,   516,     0,     0,   585,   723,     0,     0,     0,
-       0,   217,   220,   221,   222,   223,     0,   231,   224,     0,
-       0,     0,   226,   227,   228,   225,   183,     0,   179,     0,
-     317,     0,   428,     0,   465,   420,   399,   400,   401,   403,
-     404,   405,   392,   393,   408,   409,   410,   413,   414,   415,
-     416,   417,   418,   411,   412,   419,   388,   389,   390,   391,
-     397,   398,   396,   402,     0,   386,   394,   406,   407,   395,
-     383,   248,   256,     0,   241,   608,     0,   606,   607,   603,
-     604,   605,     0,   597,   598,   600,   601,   602,   593,     0,
-     550,     0,   282,   306,   307,   308,   309,   310,   311,   299,
-       0,     0,   629,   632,   633,   614,   274,   275,   276,   267,
-       0,     0,   638,   658,     0,   661,     0,   651,   743,     0,
-     741,   739,   733,   737,   738,     0,   731,   735,   736,   734,
-     728,    52,     0,     0,   495,     0,   520,     0,   207,   208,
-     209,   210,   206,   212,   214,   216,   230,   233,   235,   237,
-     181,   319,   430,   467,     0,   385,   244,     0,     0,   595,
-       0,   552,   284,   626,   627,   628,   625,   631,   645,   647,
-     660,   663,     0,     0,     0,     0,   730,    56,   497,   522,
-     589,   387,     0,   610,   599,     0,   740,     0,   732,   609,
-       0,   742,   747,     0,   745,     0,     0,   744,   756,     0,
-       0,     0,   761,     0,   749,   751,   752,   753,   754,   755,
-     746,     0,     0,     0,     0,     0,     0,   748,     0,   758,
-     759,   760,     0,   750,   757,   762
+       0,     0,    57,     0,    63,     0,     0,     0,   163,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     325,     0,     0,   507,     0,     0,     0,     0,     0,     0,
+     532,     0,     0,     0,     0,     0,     0,     0,   562,     0,
+     432,     0,     0,     0,     0,     0,     0,     0,   440,     0,
+       0,     0,     0,   477,     0,     0,     0,     0,   290,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   675,     0,     0,     0,   725,
+      50,    43,     0,     0,     0,     0,     0,     0,     0,     0,
+     123,   124,   125,   126,   127,   128,   129,   130,   131,   132,
+     133,   134,   135,   136,     0,   156,   157,   137,   138,   139,
+       0,     0,     0,   155,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     642,     0,     0,     0,     0,     0,     0,     0,    65,     0,
+     173,   165,     0,     0,     0,     0,     0,   382,   383,     0,
+       0,     0,   327,     0,   509,     0,   548,     0,   551,   552,
+     534,     0,     0,     0,     0,     0,     0,     0,   566,     0,
+       0,   456,     0,     0,     0,   467,   444,     0,   496,   497,
+     481,     0,     0,   292,   696,     0,     0,   701,     0,   704,
+     705,     0,     0,   712,   713,     0,     0,     0,     0,   677,
+       0,   732,   727,     0,     0,   122,     0,     0,     0,     0,
+     180,   159,   142,   143,   144,   145,   146,   141,   148,   150,
+     318,   433,   470,    40,   520,   522,   378,   379,   380,   381,
+     377,   386,     0,    47,     0,     0,     0,   555,   283,     0,
+       0,     0,     0,     0,     0,   152,   154,     0,    51,   172,
+     500,   525,   367,   369,   371,   375,   373,     0,   518,   547,
+     550,   591,   579,   581,   583,   585,   587,   589,   459,   223,
+     463,   461,   466,   493,   297,   299,   698,   700,   703,   708,
+     709,   707,   711,   715,   717,   719,   721,   180,    44,     0,
+       0,     0,   209,   215,   217,   219,     0,     0,     0,     0,
+       0,   233,     0,     0,   236,   238,   240,     0,     0,     0,
+       0,   208,     0,   186,   188,   189,   190,   191,   192,   193,
+     194,   195,   196,   197,   200,   207,   201,   202,   203,   198,
+     199,   204,   205,   206,     0,   184,     0,   181,   182,   322,
+       0,   319,   320,   437,     0,   434,   435,   474,     0,   471,
+     472,   390,     0,   387,   388,   255,   256,     0,   251,   253,
+     254,     0,   264,   265,   261,     0,   259,   262,   263,   247,
+       0,   244,   246,   602,     0,   600,   559,     0,   556,   557,
+     287,     0,   284,   285,     0,     0,     0,     0,     0,     0,
+       0,   302,   304,   305,   306,   307,   308,   309,   632,   638,
+       0,     0,     0,   631,   628,   629,   630,     0,   621,   623,
+     626,   624,   625,   627,     0,     0,     0,   277,     0,   270,
+     272,   273,   274,   275,   276,   652,   654,   651,   649,   650,
+       0,   645,   647,   648,     0,   667,     0,   670,   663,   664,
+       0,   658,   660,   661,   662,   665,     0,   737,     0,   735,
+      53,   504,     0,   501,   502,   529,     0,   526,   527,   596,
+     595,     0,   594,     0,    61,   723,   161,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   175,   177,     0,
+     179,     0,     0,   317,     0,   441,   430,     0,   478,   469,
+       0,     0,   385,     0,     0,   250,   267,     0,   258,     0,
+       0,   243,   604,     0,   599,   563,   554,     0,     0,   282,
+       0,     0,     0,     0,     0,     0,     0,     0,   301,     0,
+       0,     0,     0,     0,     0,   620,     0,     0,     0,     0,
+     269,     0,     0,     0,   644,     0,     0,     0,     0,     0,
+     657,   673,     0,     0,   734,    55,     0,    54,     0,   499,
+       0,     0,   524,     0,     0,   593,   731,     0,     0,     0,
+       0,   221,   224,   225,   226,   227,     0,   235,   228,     0,
+       0,     0,   230,   231,   232,   229,   187,     0,   183,     0,
+     321,     0,   436,     0,   473,   428,   405,   406,   407,   409,
+     410,   411,   398,   399,   414,   415,   416,   417,   418,   421,
+     422,   423,   424,   425,   426,   419,   420,   427,   394,   395,
+     396,   397,   403,   404,   402,   408,     0,   392,   400,   412,
+     413,   401,   389,   252,   260,     0,   245,   616,     0,   614,
+     615,   611,   612,   613,     0,   605,   606,   608,   609,   610,
+     601,     0,   558,     0,   286,   310,   311,   312,   313,   314,
+     315,   303,     0,     0,   637,   640,   641,   622,   278,   279,
+     280,   271,     0,     0,   646,   666,     0,   669,     0,   659,
+     751,     0,   749,   747,   741,   745,   746,     0,   739,   743,
+     744,   742,   736,    52,     0,     0,   503,     0,   528,     0,
+     211,   212,   213,   214,   210,   216,   218,   220,   234,   237,
+     239,   241,   185,   323,   438,   475,     0,   391,   248,     0,
+       0,   603,     0,   560,   288,   634,   635,   636,   633,   639,
+     653,   655,   668,   671,     0,     0,     0,     0,   738,    56,
+     505,   530,   597,   393,     0,   618,   607,     0,   748,     0,
+     740,   617,     0,   750,   755,     0,   753,     0,     0,   752,
+     764,     0,     0,     0,   769,     0,   757,   759,   760,   761,
+     762,   763,   754,     0,     0,     0,     0,     0,     0,   756,
+       0,   766,   767,   768,     0,   758,   765,   770
   };
 
   const short
   Dhcp6Parser::yypgoto_[] =
   {
-    -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,
-    -925,  -925,  -925,  -925,  -925,  -925,   -10,  -925,  -530,  -925,
-     376,  -925,  -925,  -925,  -925,   141,  -925,  -551,  -925,  -925,
-    -925,   -71,  -925,  -925,  -925,  -925,  -925,  -925,   353,   560,
-    -925,  -925,   -59,   -43,   -42,   -40,   -39,   -28,   -27,   -26,
-     -23,   -21,   -15,  -925,    -9,    -3,    -1,    17,  -925,   365,
-      18,  -925,    20,  -925,    25,  -925,    28,  -925,    30,  -925,
-    -925,  -925,  -925,  -925,  -925,  -925,  -925,   357,   558,  -925,
-    -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,   279,  -925,
-      77,  -925,  -637,    83,  -925,  -925,  -925,  -925,  -925,  -925,
-    -925,  -925,  -925,  -925,   -67,  -925,  -675,  -925,  -925,  -925,
-    -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,
-    -925,  -925,  -925,  -925,  -925,  -925,  -925,    60,  -925,  -925,
-    -925,  -925,  -925,    68,  -659,  -925,  -925,  -925,  -925,    66,
-    -925,  -925,  -925,  -925,  -925,  -925,  -925,    36,  -925,  -925,
-    -925,  -925,  -925,  -925,  -925,    57,  -925,  -925,  -925,    58,
-     519,  -925,  -925,  -925,  -925,  -925,  -925,  -925,    53,  -925,
-    -925,  -925,  -925,  -925,  -925,  -924,  -925,  -925,  -925,    85,
-    -925,  -925,  -925,    90,   596,  -925,  -925,  -923,  -925,  -922,
-    -925,    35,  -925,    37,  -925,    32,  -925,  -925,  -925,  -916,
-    -925,  -925,  -925,  -925,    80,  -925,  -925,  -133,   957,  -925,
-    -925,  -925,  -925,  -925,    91,  -925,  -925,  -925,    94,  -925,
-     539,  -925,   -66,  -925,  -925,  -925,  -925,  -925,   -47,  -925,
-    -925,  -925,  -925,  -925,    13,  -925,  -925,  -925,    87,  -925,
-    -925,  -925,    99,  -925,   545,  -925,  -925,  -925,  -925,  -925,
-    -925,  -925,  -925,  -925,  -925,  -925,    42,  -925,  -925,  -925,
-      54,   605,  -925,  -925,   -55,  -925,     1,  -925,  -925,  -925,
-    -925,  -925,    45,  -925,  -925,  -925,    48,   606,  -925,  -925,
-    -925,  -925,  -925,  -925,  -925,   -57,  -925,  -925,  -925,    93,
-    -925,  -925,  -925,    98,  -925,   607,   354,  -925,  -925,  -925,
-    -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,
-    -915,  -925,  -925,  -925,  -925,  -925,  -925,  -925,   102,  -925,
-    -925,  -925,  -106,  -925,  -925,  -925,  -925,  -925,  -925,  -925,
-      82,  -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,
-    -925,  -925,  -925,    76,  -925,  -925,  -925,  -925,  -925,  -925,
-    -925,    69,  -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,
-    -925,  -925,   378,   544,  -925,  -925,  -925,  -925,  -925,  -925,
-    -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,
-    -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,  -925,
-    -925,  -925,  -925,   415,   543,  -925,  -925,  -925,  -925,  -925,
-    -925,    72,  -925,  -925,  -111,  -925,  -925,  -925,  -925,  -925,
-    -925,  -130,  -925,  -925,  -149,  -925,  -925,  -925,  -925,  -925,
-    -925,  -925
+    -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,
+    -935,  -935,  -935,  -935,  -935,  -935,    -5,  -935,  -537,  -935,
+     213,  -935,  -935,  -935,  -935,   340,  -935,  -556,  -935,  -935,
+    -935,   -71,  -935,  -935,  -935,  -935,  -935,  -935,   370,   587,
+    -935,  -935,   -59,   -40,   -39,   -21,   -19,   -18,   -15,    -1,
+      13,    16,    17,    18,    19,  -935,    30,    33,    35,    37,
+    -935,   377,    38,  -935,    40,  -935,    41,  -935,    45,  -935,
+      51,  -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,   371,
+     588,  -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,
+     288,  -935,    85,  -935,  -647,    91,  -935,  -935,  -935,  -935,
+    -935,  -935,  -935,  -935,  -935,  -935,   -63,  -935,  -687,  -935,
+    -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,
+    -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,    69,
+    -935,  -935,  -935,  -935,  -935,    76,  -669,  -935,  -935,  -935,
+    -935,    77,  -935,  -935,  -935,  -935,  -935,  -935,  -935,    42,
+    -935,  -935,  -935,  -935,  -935,  -935,  -935,    62,  -935,  -935,
+    -935,    65,   528,  -935,  -935,  -935,  -935,  -935,  -935,  -935,
+      59,  -935,  -935,  -935,  -935,  -935,  -935,  -934,  -935,  -935,
+    -935,    94,  -935,  -935,  -935,    95,   593,  -935,  -935,  -933,
+    -935,  -931,  -935,    47,  -935,    55,  -935,    53,  -935,  -935,
+    -935,  -930,  -935,  -935,  -935,  -935,    86,  -935,  -935,  -123,
+     977,  -935,  -935,  -935,  -935,  -935,   100,  -935,  -935,  -935,
+     105,  -935,   589,  -935,   -73,  -935,  -935,  -935,  -935,  -935,
+     -67,  -935,  -935,  -935,  -935,  -935,   -37,  -935,  -935,  -935,
+      96,  -935,  -935,  -935,   104,  -935,   561,  -935,  -935,  -935,
+    -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,    54,  -935,
+    -935,  -935,    60,   595,  -935,  -935,   -55,  -935,     1,  -935,
+    -935,  -935,  -935,  -935,    57,  -935,  -935,  -935,    58,   592,
+    -935,  -935,  -935,  -935,  -935,  -935,  -935,   -44,  -935,  -935,
+    -935,   106,  -935,  -935,  -935,   110,  -935,   594,   346,  -935,
+    -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,
+    -935,  -935,  -929,  -935,  -935,  -935,  -935,  -935,  -935,  -935,
+     111,  -935,  -935,  -935,  -100,  -935,  -935,  -935,  -935,  -935,
+    -935,  -935,    92,  -935,  -935,  -935,  -935,  -935,  -935,  -935,
+    -935,  -935,  -935,  -935,  -935,    84,  -935,  -935,  -935,  -935,
+    -935,  -935,  -935,    79,  -935,  -935,  -935,  -935,  -935,  -935,
+    -935,  -935,  -935,  -935,   386,   555,  -935,  -935,  -935,  -935,
+    -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,
+    -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,  -935,
+    -935,  -935,  -935,  -935,  -935,   431,   556,  -935,  -935,  -935,
+    -935,  -935,  -935,    78,  -935,  -935,  -105,  -935,  -935,  -935,
+    -935,  -935,  -935,  -122,  -935,  -935,  -143,  -935,  -935,  -935,
+    -935,  -935,  -935,  -935
   };
 
   const short
@@ -4859,510 +4881,518 @@ namespace isc { namespace dhcp {
   {
       -1,    15,    16,    17,    18,    19,    20,    21,    22,    23,
       24,    25,    26,    27,    28,    29,    83,    39,    40,    69,
-     674,    87,    88,    41,    68,    84,    85,   699,   900,  1006,
-    1007,   761,    43,    70,    90,   400,    45,    71,   145,   146,
-     147,   402,   148,   149,   150,   151,   152,   153,   154,   155,
-     156,   157,   158,   159,   160,   161,   162,   163,   426,   667,
-     164,   427,   165,   428,   166,   451,   167,   452,   168,   169,
-     170,   171,   420,   172,   404,    47,    72,   202,   203,   204,
-     457,   205,   173,   405,   174,   406,   175,   407,   786,   787,
-     788,   939,   762,   763,   764,   917,  1152,   765,   918,   766,
-     919,   767,   920,   768,   769,   494,   770,   771,   772,   773,
-     774,   775,   776,   777,   778,   779,   926,   780,   781,   929,
-     782,   930,   783,   931,   176,   440,   820,   821,   822,   959,
-     177,   437,   807,   808,   809,   810,   178,   439,   815,   816,
-     817,   818,   179,   438,   180,   447,   868,   869,   870,   871,
-     872,   181,   443,   831,   832,   833,   968,    63,    80,   350,
-     351,   352,   507,   353,   508,   182,   444,   840,   841,   842,
-     843,   844,   845,   846,   847,   183,   430,   790,   791,   792,
-     942,    49,    73,   239,   240,   241,   463,   242,   464,   243,
-     465,   244,   469,   245,   468,   184,   435,   680,   247,   248,
-     185,   436,   802,   803,   804,   951,  1074,  1075,   186,   431,
-      57,    77,   794,   795,   796,   945,    59,    78,   315,   316,
-     317,   318,   319,   320,   321,   493,   322,   497,   323,   496,
-     324,   325,   498,   326,   187,   432,   798,   799,   800,   948,
-      61,    79,   336,   337,   338,   339,   340,   502,   341,   342,
-     343,   344,   250,   461,   902,   903,   904,  1008,    51,    74,
-     261,   262,   263,   473,   188,   433,   189,   434,   253,   462,
-     906,   907,   908,  1011,    53,    75,   277,   278,   279,   476,
-     280,   281,   478,   282,   283,   190,   442,   827,   828,   829,
-     965,    55,    76,   295,   296,   297,   298,   484,   299,   485,
-     300,   486,   301,   487,   302,   488,   303,   489,   304,   483,
-     255,   470,   911,   912,  1014,   191,   441,   824,   825,   962,
-    1092,  1093,  1094,  1095,  1096,  1167,  1097,   192,   445,   857,
-     858,   859,   979,  1176,   860,   861,   980,   862,   863,   193,
-     194,   448,   880,   881,   882,   991,   883,   992,   195,   449,
-     890,   891,   892,   893,   996,   894,   895,   998,   196,   450,
-      65,    81,   372,   373,   374,   375,   512,   376,   513,   377,
-     378,   515,   379,   380,   381,   518,   731,   382,   519,   383,
-     384,   385,   522,   386,   523,   387,   524,   388,   525,   197,
-     403,    67,    82,   391,   392,   393,   528,   394,   198,   453,
-     898,   899,  1002,  1135,  1136,  1137,  1138,  1184,  1139,  1182,
-    1203,  1204,  1205,  1213,  1214,  1215,  1221,  1216,  1217,  1218,
-    1219,  1225
+     684,    87,    88,    41,    68,    84,    85,   709,   910,  1016,
+    1017,   771,    43,    70,    90,   406,    45,    71,   147,   148,
+     149,   408,   150,   151,   152,   153,   154,   155,   156,   157,
+     158,   159,   160,   161,   162,   163,   164,   165,   166,   167,
+     434,   677,   168,   435,   169,   436,   170,   459,   171,   460,
+     172,   173,   174,   175,   428,   176,   410,    47,    72,   206,
+     207,   208,   465,   209,   177,   411,   178,   412,   179,   413,
+     796,   797,   798,   949,   772,   773,   774,   927,  1164,   775,
+     928,   776,   929,   777,   930,   778,   779,   502,   780,   781,
+     782,   783,   784,   785,   786,   787,   788,   789,   936,   790,
+     791,   939,   792,   940,   793,   941,   180,   448,   830,   831,
+     832,   969,   181,   445,   817,   818,   819,   820,   182,   447,
+     825,   826,   827,   828,   183,   446,   184,   455,   878,   879,
+     880,   881,   882,   185,   451,   841,   842,   843,   978,    63,
+      80,   356,   357,   358,   515,   359,   516,   186,   452,   850,
+     851,   852,   853,   854,   855,   856,   857,   187,   438,   800,
+     801,   802,   952,    49,    73,   245,   246,   247,   471,   248,
+     472,   249,   473,   250,   477,   251,   476,   188,   443,   690,
+     253,   254,   189,   444,   812,   813,   814,   961,  1086,  1087,
+     190,   439,    57,    77,   804,   805,   806,   955,    59,    78,
+     321,   322,   323,   324,   325,   326,   327,   501,   328,   505,
+     329,   504,   330,   331,   506,   332,   191,   440,   808,   809,
+     810,   958,    61,    79,   342,   343,   344,   345,   346,   510,
+     347,   348,   349,   350,   256,   469,   912,   913,   914,  1018,
+      51,    74,   267,   268,   269,   481,   192,   441,   193,   442,
+     259,   470,   916,   917,   918,  1021,    53,    75,   283,   284,
+     285,   484,   286,   287,   486,   288,   289,   194,   450,   837,
+     838,   839,   975,    55,    76,   301,   302,   303,   304,   492,
+     305,   493,   306,   494,   307,   495,   308,   496,   309,   497,
+     310,   491,   261,   478,   921,   922,  1024,   195,   449,   834,
+     835,   972,  1104,  1105,  1106,  1107,  1108,  1179,  1109,   196,
+     453,   867,   868,   869,   989,  1188,   870,   871,   990,   872,
+     873,   197,   198,   456,   890,   891,   892,  1001,   893,  1002,
+     199,   457,   900,   901,   902,   903,  1006,   904,   905,  1008,
+     200,   458,    65,    81,   378,   379,   380,   381,   520,   382,
+     521,   383,   384,   523,   385,   386,   387,   526,   741,   388,
+     527,   389,   390,   391,   530,   392,   531,   393,   532,   394,
+     533,   201,   409,    67,    82,   397,   398,   399,   536,   400,
+     202,   461,   908,   909,  1012,  1147,  1148,  1149,  1150,  1196,
+    1151,  1194,  1215,  1216,  1217,  1225,  1226,  1227,  1233,  1228,
+    1229,  1230,  1231,  1237
   };
 
   const short
   Dhcp6Parser::yytable_[] =
   {
-     144,   201,   218,   257,   271,   291,    38,   313,   332,   349,
-     369,   314,   333,   334,   219,   854,   254,   206,   251,   264,
-     275,   293,   784,   327,   345,   814,   370,  1067,  1068,  1069,
-     220,   221,   335,   222,   223,  1073,  1079,   673,    31,   805,
-      32,    30,    33,   199,   200,   224,   225,   226,   705,   285,
-     227,    42,   228,    44,   347,   348,   909,    46,   229,    48,
-     711,   712,   713,    50,   230,   662,   663,   664,   665,    52,
-     231,    86,   232,   207,   252,   265,   276,   294,   455,   328,
-     346,   954,   371,   456,   955,   848,   249,   260,   274,   292,
-     233,   234,   306,   235,   747,   459,    54,   666,   236,   471,
-     460,   237,   673,   238,   472,   246,   121,   307,    56,   258,
-     272,   259,   273,   122,   123,   474,    58,   481,   509,   121,
-     475,   806,   482,   510,   122,   123,   120,    91,    92,   143,
-     256,    93,   389,   390,    94,    95,    96,   122,   123,    60,
-     307,    62,   308,   309,  1085,  1086,   310,   311,   312,   957,
-     122,   123,   958,   122,   123,    64,   215,   122,   123,   216,
-      97,    98,    99,   100,   101,   102,   103,   104,   105,   106,
-     107,   108,   109,   110,   111,   112,   113,   114,   115,   116,
-     117,   118,   119,   120,   121,  1208,    66,   526,  1209,  1210,
-    1211,  1212,   527,   347,   348,   530,   849,   850,   851,   852,
-     531,   963,   122,   123,   964,   864,   865,   866,   455,   124,
-    1173,  1174,  1175,   914,   125,   126,   127,   128,   129,   530,
-     130,   143,   122,   123,   915,   131,   459,    34,    35,    36,
-      37,   916,   143,   936,   132,    89,  1003,   133,   937,  1004,
-    1067,  1068,  1069,   395,   134,   143,   936,   396,  1073,  1079,
-     960,   938,   135,   136,   121,   961,  1206,   137,   143,  1207,
-     138,   143,   729,   730,   139,   143,   307,   266,   267,   268,
-     269,   270,   122,   123,   122,   123,   977,   984,   875,   876,
-     397,   978,   985,   122,   123,   140,   141,   142,   398,   399,
-     989,   215,   993,   491,   216,   990,   999,   994,   814,   526,
-     936,  1000,  1037,   471,  1001,  1160,   742,   401,  1161,   854,
-     143,   743,   744,   745,   746,   747,   748,   749,   750,   751,
-     752,   753,   754,   755,   756,   757,   758,   759,   760,   408,
-     143,   121,  1164,   884,   885,   886,   409,  1165,   307,   329,
-     308,   309,   330,   331,   410,   411,   509,  1185,   474,   122,
-     123,  1172,  1186,  1188,   307,   122,   123,   834,   835,   836,
-     837,   838,   839,   481,   490,  1226,   492,   284,  1189,  1128,
-    1227,  1129,  1130,   285,   286,   287,   288,   289,   290,   412,
-     143,   413,   887,   414,   144,   415,   532,   533,   201,   416,
-     417,   143,   676,   677,   678,   679,  1148,  1149,  1150,  1151,
-     218,   418,   419,   257,   206,   421,   805,   812,   422,   813,
-     271,   423,   219,   424,   254,   425,   251,   429,   446,   264,
-     291,   454,   458,   466,   467,   477,   275,   479,   220,   221,
-     313,   222,   223,   480,   314,   332,   293,   495,   499,   333,
-     334,   501,   534,   224,   225,   226,   327,   500,   227,   503,
-     228,   345,   504,   506,   505,   369,   229,   143,   511,   335,
-     207,   514,   230,   143,   516,   517,   520,   521,   231,   529,
-     232,   370,   252,   535,   536,   265,   537,   538,   539,   143,
-     540,   541,   276,   542,   249,   554,   543,   260,   233,   234,
-     544,   235,   294,   560,   274,   561,   236,   545,   546,   237,
-     547,   238,   328,   246,   292,   548,   549,   346,   551,   258,
-     550,   259,   552,   553,   555,   556,   272,   562,   273,   557,
-     558,   559,   564,   563,   565,   566,   567,   371,    97,    98,
-      99,   100,   101,   102,   103,   104,   105,   106,   107,   568,
-     569,   122,   123,   112,   113,   114,   115,   116,   117,   118,
-     570,   571,   121,   572,   573,   574,   575,   576,   577,   578,
-     579,   580,   208,   581,   209,   582,   583,   584,   585,   586,
-     122,   123,   210,   211,   212,   213,   214,   124,   587,   589,
-     590,   592,   593,   144,   594,   595,   201,   596,   597,   215,
-     599,   598,   216,   131,   600,   601,   603,   605,   606,   607,
-     217,   608,   206,   609,   354,   355,   356,   357,   358,   359,
-     360,   361,   362,   363,   364,   365,   366,   611,   612,   853,
-     867,   877,   613,   369,   367,   368,   614,   615,   616,   617,
-     619,   620,   621,   622,   623,   855,   873,   878,   888,   370,
-     624,   625,   627,   738,   628,   631,   629,   632,   634,   143,
-     635,   636,   638,   140,   141,   641,   642,   645,   207,   637,
-     646,   639,   640,   647,    97,    98,    99,   100,   101,   102,
-     103,   104,   105,   106,   107,   643,   644,   648,   143,   112,
-     113,   114,   115,   116,   117,   118,   119,   650,   121,   307,
-     651,   856,   874,   879,   889,   371,   653,   654,   655,   661,
-     656,   657,   658,   659,   660,   668,   122,   123,   669,   211,
-     212,   670,   214,   124,   671,   672,   921,   675,    32,   681,
-     682,   683,   684,   686,   695,   215,   685,   687,   216,   688,
-     689,   696,   690,   691,   692,   693,   217,     1,     2,     3,
-       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
-      14,   694,   697,   698,   700,   701,   941,   737,   707,   922,
-     702,   703,   704,   706,   708,   709,   710,   714,   732,   785,
-     715,   789,   793,   716,   797,   801,   717,   819,   718,   719,
-     823,   720,   721,   722,   826,   830,   897,   901,   723,   140,
-     141,   724,   726,   727,   728,   734,   735,   736,   905,   923,
-     924,   925,   927,   928,   932,   933,   934,   935,  1022,   944,
-     940,   943,   947,   946,   143,   950,   949,   952,   953,   956,
-     966,   967,   969,   970,   811,   971,   972,   973,   974,   975,
-     976,   981,   982,   983,   986,   987,   988,   995,   997,  1005,
-    1010,  1009,  1012,  1013,  1021,  1016,  1015,  1017,  1018,  1019,
-    1020,  1024,  1023,  1025,  1026,  1027,  1028,  1029,  1030,  1031,
-    1032,  1033,  1083,  1035,  1034,  1103,  1104,  1105,  1110,  1111,
-    1106,   218,  1107,  1108,   313,  1112,  1113,   332,   314,  1114,
-    1045,   333,   334,   219,  1066,   254,  1116,   251,  1120,  1121,
-     327,  1087,  1046,   345,   291,  1088,  1077,   349,  1117,   220,
-     221,   335,   222,   223,  1123,  1124,  1126,  1090,  1047,  1048,
-     293,  1049,  1050,   853,   224,   225,   226,  1141,   867,   227,
-    1142,   228,   877,  1051,  1052,  1053,  1118,   229,  1054,   855,
-    1055,  1131,  1125,   230,   873,  1132,  1056,   257,   878,   231,
-     271,   232,  1057,   252,   888,  1147,   328,  1133,  1058,   346,
-    1059,  1153,  1078,   264,  1154,   249,   275,  1155,  1162,   233,
-     234,  1163,   235,  1091,  1076,  1156,   294,   236,  1060,  1061,
-     237,  1062,   238,  1168,   246,  1089,  1063,  1157,   292,  1064,
-    1158,  1065,  1159,  1072,  1166,   856,  1070,  1169,  1071,  1170,
-     874,  1171,  1183,  1192,   879,  1195,  1197,  1202,  1200,  1222,
-     889,  1223,  1177,  1134,  1224,  1228,  1232,   739,   725,   265,
-     733,  1178,   276,  1179,   741,   588,   913,   591,  1038,  1036,
-    1084,   260,  1081,  1082,   274,  1119,  1101,  1102,   633,  1040,
-    1109,  1191,  1039,  1080,   305,  1180,  1187,  1044,  1042,  1041,
-     626,  1190,  1199,   258,  1196,   259,   272,  1043,   273,  1193,
-    1201,   630,  1144,  1234,  1229,  1230,  1231,  1235,  1146,  1145,
-    1100,   910,  1143,  1099,  1194,  1098,  1115,   602,  1127,  1122,
-     649,   740,   896,   652,  1198,  1140,  1220,  1233,     0,   604,
-       0,     0,     0,     0,     0,     0,     0,   610,     0,     0,
-       0,     0,     0,  1045,     0,     0,     0,  1066,   618,  1087,
-       0,     0,     0,  1088,     0,  1046,     0,     0,     0,  1077,
-       0,     0,     0,     0,  1131,  1090,  1181,     0,  1132,     0,
-       0,  1047,  1048,     0,  1049,  1050,     0,     0,     0,     0,
-    1133,     0,     0,     0,     0,     0,  1051,  1052,  1053,     0,
-       0,  1054,     0,  1055,     0,     0,     0,     0,     0,  1056,
-       0,     0,     0,     0,     0,  1057,     0,     0,     0,     0,
-       0,  1058,     0,  1059,     0,  1078,     0,     0,     0,     0,
-       0,  1091,     0,     0,     0,     0,     0,  1076,     0,     0,
-       0,  1060,  1061,  1089,  1062,     0,  1134,     0,     0,  1063,
-       0,     0,  1064,     0,  1065,     0,  1072,     0,     0,  1070,
-       0,  1071
+     146,   205,   222,   263,   277,   297,   340,   319,   338,   355,
+     375,    38,   341,   864,   223,   320,   339,   210,   257,   270,
+     281,   299,   794,   333,   351,   824,   376,  1079,  1080,   260,
+    1081,  1085,  1091,   224,   225,   815,   255,   266,   280,   298,
+     683,    31,   291,    32,    30,    33,    42,   203,   204,   919,
+      44,   313,   226,   715,   227,   228,   353,   354,   229,   395,
+     396,   672,   673,   674,   675,   721,   722,   723,   124,   125,
+     353,   354,   230,   211,   258,   271,   282,   300,   463,   334,
+     352,    46,   377,   464,   815,   822,   231,   823,    48,   232,
+     233,   234,   235,   676,  1220,    50,   467,  1221,  1222,  1223,
+    1224,   468,   479,   236,   482,   683,   237,   480,   238,   483,
+     239,   240,   964,   241,   242,   965,    86,   816,   243,   124,
+     125,   264,   278,    52,   244,    54,   252,   489,   752,   265,
+     279,   145,   490,   753,   754,   755,   756,   757,   758,   759,
+     760,   761,   762,   763,   764,   765,   766,   767,   768,   769,
+     770,    56,   123,   517,  1140,    58,  1141,  1142,   518,   967,
+      91,    92,   968,   262,    93,    60,    62,    94,    95,    96,
+     124,   125,   312,    64,   534,    66,   145,    89,   313,   535,
+     844,   845,   846,   847,   848,   849,   538,   973,   122,   219,
+     974,   539,   220,    97,    98,    99,   100,   101,   102,   103,
+     104,   105,   106,   107,   108,   109,   110,   111,   112,   113,
+     114,   115,   116,   117,   118,   119,   120,   121,   122,   123,
+    1013,   463,   313,  1014,   314,   315,   924,   145,   316,   317,
+     318,   538,    34,    35,    36,    37,   925,   124,   125,   124,
+     125,   401,  1079,  1080,   126,  1081,  1085,  1091,   858,   127,
+     128,   129,   130,   131,   402,   132,   403,   757,   123,   313,
+     133,   739,   740,   313,   335,   314,   315,   336,   337,   134,
+     467,  1218,   135,   404,  1219,   926,   124,   125,   145,   136,
+     124,   125,   124,   125,   946,   946,   970,   137,   138,   947,
+     948,   971,   139,   124,   125,   140,  1097,  1098,   824,   141,
+     987,   994,  1047,   145,   999,   988,   995,   864,  1003,  1000,
+     405,   123,   407,  1004,  1009,   124,   125,   124,   125,  1010,
+     142,   143,   144,   123,   272,   273,   274,   275,   276,   124,
+     125,   414,   534,   946,   874,   875,   876,  1011,  1172,   479,
+     498,   124,   125,   415,  1173,   145,   416,   145,   219,   417,
+    1176,   220,   894,   895,   896,  1177,  1185,  1186,  1187,   290,
+     418,   859,   860,   861,   862,   291,   292,   293,   294,   295,
+     296,   517,  1197,   885,   886,   482,  1184,  1198,   489,   499,
+    1200,  1238,   500,  1201,   145,   419,  1239,   420,   145,   421,
+     145,   422,   146,   423,   424,   509,   205,   540,   541,   425,
+     426,   897,   686,   687,   688,   689,   427,   429,   222,   430,
+     431,   263,   210,  1160,  1161,  1162,  1163,   432,   277,   433,
+     223,   437,   454,   145,   257,   145,   462,   270,   297,   466,
+     474,   475,   485,   487,   281,   260,   488,   145,   319,   224,
+     225,   340,   255,   338,   299,   266,   320,   341,   503,   145,
+     507,   339,   280,   508,   333,   511,   512,   513,   226,   351,
+     227,   228,   298,   375,   229,   514,   542,   519,   211,   522,
+     524,   525,   528,   529,   537,   543,   544,   545,   230,   376,
+     258,   546,   547,   271,   548,   549,   550,   551,   552,   553,
+     282,   554,   231,   555,   558,   232,   233,   234,   235,   556,
+     300,   559,   564,   570,   571,   557,   572,   560,   561,   236,
+     334,   562,   237,   563,   238,   352,   239,   240,   565,   241,
+     242,   566,   567,   574,   243,   568,   575,   569,   576,   264,
+     244,   577,   252,   573,   578,   377,   278,   265,   579,   580,
+     581,   582,   583,   584,   279,   585,   586,   587,   588,   589,
+     590,   591,   592,   593,    97,    98,    99,   100,   101,   102,
+     103,   104,   105,   106,   107,   108,   109,   594,   595,   596,
+     597,   114,   115,   116,   117,   118,   119,   120,   599,   600,
+     123,   602,   603,   604,   605,   606,   609,   608,   610,   611,
+     212,   607,   213,   146,   613,   615,   205,   616,   124,   125,
+     214,   215,   216,   217,   218,   126,   617,   618,   619,   621,
+     622,   623,   210,   624,   625,   626,   627,   219,   629,   630,
+     220,   133,   632,   633,   634,   637,   641,   631,   221,   863,
+     877,   887,   635,   375,   638,   639,   644,   642,   645,   646,
+     647,   648,   651,   652,   649,   865,   883,   888,   898,   376,
+     650,   655,   656,   653,   654,   657,   658,   660,   748,   663,
+     742,   661,   829,   664,   666,   667,   668,   669,   211,   670,
+     665,   671,   678,   680,   681,   679,   682,    32,   685,   691,
+     692,   142,   143,     1,     2,     3,     4,     5,     6,     7,
+       8,     9,    10,    11,    12,    13,    14,   693,   694,   696,
+     697,   866,   884,   889,   899,   377,   145,    97,    98,    99,
+     100,   101,   102,   103,   104,   105,   106,   107,   108,   109,
+     124,   125,   695,   698,   114,   115,   116,   117,   118,   119,
+     120,   121,   699,   123,   313,   700,   701,   702,   703,   704,
+     707,   708,   705,   710,   711,   747,   706,   712,   713,   714,
+     716,   124,   125,   717,   215,   216,   718,   218,   126,   795,
+     799,   803,   807,   719,   720,   724,   725,   726,   727,   728,
+     219,   729,   730,   220,   811,   833,   836,   840,   907,   731,
+     911,   221,   732,   360,   361,   362,   363,   364,   365,   366,
+     367,   368,   369,   370,   371,   372,   733,   734,   915,   736,
+     737,   931,   932,   373,   374,   933,   934,   935,   937,   738,
+     938,   942,   744,   745,   943,   944,   945,   981,   951,   746,
+     950,   954,   953,   956,   957,   959,   960,  1015,   145,   963,
+     962,   966,   977,   976,   142,   143,   979,   980,  1019,   982,
+     983,   984,   985,   986,   991,   992,   993,   996,   997,   998,
+    1005,  1007,  1020,  1023,  1022,   735,  1154,  1026,  1027,   145,
+    1025,  1028,  1029,  1030,  1031,  1032,  1036,  1039,  1040,  1033,
+    1041,  1095,  1034,  1035,  1037,  1038,  1042,  1043,  1122,  1045,
+    1044,   222,  1115,  1116,   319,   340,  1117,   338,  1118,  1123,
+    1055,   341,   320,   223,  1119,   339,  1120,   257,  1078,  1124,
+     333,  1099,  1056,   351,   297,  1125,  1089,   355,   260,  1100,
+    1126,  1128,   224,   225,  1129,   255,  1130,  1102,  1132,  1133,
+     299,  1057,  1058,   863,  1088,  1135,  1136,  1138,   877,  1159,
+    1137,   226,   887,   227,   228,  1101,  1153,   229,   298,   865,
+    1059,  1143,  1060,  1061,   883,  1165,  1062,   263,   888,  1144,
+     277,   230,  1166,   258,   898,  1167,   334,  1145,  1168,   352,
+    1063,  1169,  1090,   270,  1174,   231,   281,  1175,   232,   233,
+     234,   235,  1170,  1103,  1064,  1171,   300,  1065,  1066,  1067,
+    1068,   266,   236,  1178,   280,   237,  1180,   238,  1181,   239,
+     240,  1069,   241,   242,  1070,   866,  1071,   243,  1072,  1073,
+     884,  1074,  1075,   244,   889,   252,  1076,  1182,  1082,  1183,
+     899,  1195,  1077,  1146,  1084,  1204,  1083,  1207,  1189,   271,
+    1209,  1214,   282,  1212,  1190,  1234,  1235,  1191,  1236,  1192,
+    1240,  1244,   743,   821,   749,   923,  1048,  1046,   751,  1096,
+    1093,  1131,  1114,  1113,  1094,   643,  1121,  1049,  1050,  1092,
+     598,  1199,  1202,  1203,   311,   601,  1054,  1052,  1208,  1205,
+    1051,  1211,  1053,   920,  1213,   264,  1242,  1246,   278,  1241,
+    1243,  1247,   612,   265,  1156,   640,   279,   614,  1155,  1157,
+    1158,   620,  1206,  1112,  1110,  1111,  1127,  1134,  1139,   659,
+     906,  1152,  1210,   628,   662,  1245,  1232,   750,   636,     0,
+       0,     0,     0,     0,     0,  1055,     0,     0,     0,     0,
+       0,  1099,     0,  1078,     0,     0,     0,  1056,     0,  1100,
+       0,  1089,     0,     0,     0,     0,  1143,  1102,     0,     0,
+       0,     0,     0,  1193,  1144,     0,  1057,  1058,     0,  1088,
+       0,     0,  1145,     0,     0,  1101,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,  1059,     0,  1060,  1061,     0,
+       0,  1062,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,  1063,     0,  1090,     0,     0,
+       0,     0,     0,  1103,     0,     0,     0,     0,     0,  1064,
+       0,     0,  1065,  1066,  1067,  1068,     0,     0,  1146,     0,
+       0,     0,     0,     0,     0,     0,  1069,     0,     0,  1070,
+       0,  1071,     0,  1072,  1073,     0,  1074,  1075,     0,     0,
+       0,  1076,     0,  1082,     0,     0,     0,  1077,     0,  1084,
+       0,  1083
   };
 
   const short
   Dhcp6Parser::yycheck_[] =
   {
-      71,    72,    73,    74,    75,    76,    16,    78,    79,    80,
-      81,    78,    79,    79,    73,   690,    73,    72,    73,    74,
-      75,    76,   659,    78,    79,   684,    81,   951,   951,   951,
-      73,    73,    79,    73,    73,   951,   951,   567,     5,   112,
-       7,     0,     9,    16,    17,    73,    73,    73,   599,   110,
-      73,     7,    73,     7,   119,   120,   117,     7,    73,     7,
-     611,   612,   613,     7,    73,   165,   166,   167,   168,     7,
-      73,   194,    73,    72,    73,    74,    75,    76,     3,    78,
-      79,     3,    81,     8,     6,    21,    73,    74,    75,    76,
-      73,    73,    21,    73,    30,     3,     7,   197,    73,     3,
-       8,    73,   632,    73,     8,    73,    68,    69,     7,    74,
-      75,    74,    75,    86,    87,     3,     7,     3,     3,    68,
-       8,   194,     8,     8,    86,    87,    67,    11,    12,   194,
-      79,    15,    13,    14,    18,    19,    20,    86,    87,     7,
-      69,     7,    71,    72,   106,   107,    75,    76,    77,     3,
-      86,    87,     6,    86,    87,     7,   105,    86,    87,   108,
-      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
-      54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
-      64,    65,    66,    67,    68,   173,     7,     3,   176,   177,
-     178,   179,     8,   119,   120,     3,   132,   133,   134,   135,
-       8,     3,    86,    87,     6,   138,   139,   140,     3,    93,
-     129,   130,   131,     8,    98,    99,   100,   101,   102,     3,
-     104,   194,    86,    87,     8,   109,     3,   194,   195,   196,
-     197,     8,   194,     3,   118,    10,     3,   121,     8,     6,
-    1164,  1164,  1164,     6,   128,   194,     3,     3,  1164,  1164,
-       3,     8,   136,   137,    68,     8,     3,   141,   194,     6,
-     144,   194,   162,   163,   148,   194,    69,    81,    82,    83,
-      84,    85,    86,    87,    86,    87,     3,     3,   142,   143,
-       4,     8,     8,    86,    87,   169,   170,   171,     8,     3,
-       3,   105,     3,     3,   108,     8,     3,     8,   957,     3,
-       3,     8,   939,     3,     8,     8,    21,     8,     8,   984,
-     194,    26,    27,    28,    29,    30,    31,    32,    33,    34,
-      35,    36,    37,    38,    39,    40,    41,    42,    43,     4,
-     194,    68,     3,   145,   146,   147,     4,     8,    69,    70,
-      71,    72,    73,    74,     4,     4,     3,     3,     3,    86,
-      87,     8,     8,     8,    69,    86,    87,   122,   123,   124,
-     125,   126,   127,     3,     8,     3,     8,   104,     8,   172,
-       8,   174,   175,   110,   111,   112,   113,   114,   115,     4,
-     194,     4,   194,     4,   455,     4,   396,   397,   459,     4,
-       4,   194,    94,    95,    96,    97,    22,    23,    24,    25,
-     471,     4,     4,   474,   459,     4,   112,   113,     4,   115,
-     481,     4,   471,     4,   471,     4,   471,     4,     4,   474,
-     491,     4,     4,     4,     4,     4,   481,     4,   471,   471,
-     501,   471,   471,     4,   501,   506,   491,     4,     4,   506,
-     506,     3,   194,   471,   471,   471,   501,     8,   471,     4,
-     471,   506,     4,     3,     8,   526,   471,   194,     4,   506,
-     459,     4,   471,   194,     4,     4,     4,     4,   471,     4,
-     471,   526,   471,     4,     4,   474,     4,     4,     4,   194,
-       4,     4,   481,   195,   471,     4,   195,   474,   471,   471,
-     195,   471,   491,     4,   481,     4,   471,   195,   195,   471,
-     195,   471,   501,   471,   491,   195,   195,   506,   196,   474,
-     197,   474,   196,   195,   195,   195,   481,     4,   481,   197,
-     197,   197,     4,   197,     4,     4,     4,   526,    44,    45,
-      46,    47,    48,    49,    50,    51,    52,    53,    54,     4,
-       4,    86,    87,    59,    60,    61,    62,    63,    64,    65,
-       4,     4,    68,     4,     4,     4,     4,     4,     4,     4,
-       4,   195,    78,     4,    80,     4,     4,     4,     4,     4,
-      86,    87,    88,    89,    90,    91,    92,    93,     4,     4,
-     197,     4,     4,   654,     4,     4,   657,     4,   195,   105,
-       4,   197,   108,   109,     4,     4,     4,     4,   195,     4,
-     116,   195,   657,   195,   149,   150,   151,   152,   153,   154,
-     155,   156,   157,   158,   159,   160,   161,     4,     4,   690,
-     691,   692,     4,   694,   169,   170,     4,     4,     4,     4,
-       4,     4,   195,     4,     4,   690,   691,   692,   693,   694,
-       4,   197,     4,   653,   197,     4,   197,     4,   197,   194,
-       4,     4,     4,   169,   170,     4,     4,     4,   657,   195,
-       4,   195,   195,     4,    44,    45,    46,    47,    48,    49,
-      50,    51,    52,    53,    54,   197,   197,     4,   194,    59,
-      60,    61,    62,    63,    64,    65,    66,     4,    68,    69,
-     195,   690,   691,   692,   693,   694,     4,     7,   194,   194,
-       7,     7,     7,     7,     5,   194,    86,    87,   194,    89,
-      90,     5,    92,    93,     5,     5,     4,   194,     7,     5,
-       5,     5,     5,     5,   194,   105,     7,     5,   108,     5,
-       7,   194,     7,     7,     7,     7,   116,   180,   181,   182,
-     183,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-     193,     7,     5,     5,     5,     5,     3,     5,     7,     4,
-     194,   194,   194,   194,   194,   194,   194,   194,   164,     7,
-     194,     7,     7,   194,     7,     7,   194,   103,   194,   194,
-       7,   194,   194,   194,     7,     7,     7,     7,   194,   169,
-     170,   194,   194,   194,   194,   194,   194,   194,     7,     4,
-       4,     4,     4,     4,     4,     4,     4,     4,   197,     3,
-       6,     6,     3,     6,   194,     3,     6,     6,     3,     6,
-       6,     3,     6,     3,   683,     4,     4,     4,     4,     4,
-       4,     4,     4,     4,     4,     4,     4,     4,     4,   194,
-       3,     6,     6,     3,   195,     6,     8,     4,     4,     4,
-       4,   197,   195,   195,     4,   195,   195,     4,     4,     4,
-     195,   195,     4,   195,   197,   195,   195,   195,     4,     4,
-     195,   942,   195,   195,   945,   195,   195,   948,   945,   195,
-     951,   948,   948,   942,   951,   942,   197,   942,     4,     4,
-     945,   962,   951,   948,   965,   962,   951,   968,   195,   942,
-     942,   948,   942,   942,   197,     4,     4,   962,   951,   951,
-     965,   951,   951,   984,   942,   942,   942,     6,   989,   942,
-       3,   942,   993,   951,   951,   951,   195,   942,   951,   984,
-     951,  1002,   195,   942,   989,  1002,   951,  1008,   993,   942,
-    1011,   942,   951,   942,   999,     4,   945,  1002,   951,   948,
-     951,   194,   951,  1008,   194,   942,  1011,   194,     8,   942,
-     942,     8,   942,   962,   951,   194,   965,   942,   951,   951,
-     942,   951,   942,     4,   942,   962,   951,   194,   965,   951,
-     194,   951,   194,   951,   194,   984,   951,     8,   951,     3,
-     989,     8,     4,     4,   993,     4,     4,     7,     5,     4,
-     999,     4,   194,  1002,     4,     4,     4,   654,   632,  1008,
-     645,   194,  1011,   194,   657,   455,   737,   459,   941,   936,
-     960,  1008,   954,   957,  1011,   989,   968,   970,   509,   944,
-     977,  1164,   942,   953,    77,   194,   194,   950,   947,   945,
-     501,   194,   194,  1008,   195,  1008,  1011,   948,  1011,   197,
-     194,   506,  1010,   194,   197,   195,   195,   194,  1013,  1011,
-     967,   707,  1008,   965,  1170,   963,   984,   471,   999,   993,
-     526,   656,   694,   530,  1185,  1003,  1206,  1226,    -1,   474,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   481,    -1,    -1,
-      -1,    -1,    -1,  1164,    -1,    -1,    -1,  1164,   491,  1170,
-      -1,    -1,    -1,  1170,    -1,  1164,    -1,    -1,    -1,  1164,
-      -1,    -1,    -1,    -1,  1185,  1170,  1126,    -1,  1185,    -1,
-      -1,  1164,  1164,    -1,  1164,  1164,    -1,    -1,    -1,    -1,
-    1185,    -1,    -1,    -1,    -1,    -1,  1164,  1164,  1164,    -1,
-      -1,  1164,    -1,  1164,    -1,    -1,    -1,    -1,    -1,  1164,
-      -1,    -1,    -1,    -1,    -1,  1164,    -1,    -1,    -1,    -1,
-      -1,  1164,    -1,  1164,    -1,  1164,    -1,    -1,    -1,    -1,
-      -1,  1170,    -1,    -1,    -1,    -1,    -1,  1164,    -1,    -1,
-      -1,  1164,  1164,  1170,  1164,    -1,  1185,    -1,    -1,  1164,
-      -1,    -1,  1164,    -1,  1164,    -1,  1164,    -1,    -1,  1164,
-      -1,  1164
+      71,    72,    73,    74,    75,    76,    79,    78,    79,    80,
+      81,    16,    79,   700,    73,    78,    79,    72,    73,    74,
+      75,    76,   669,    78,    79,   694,    81,   961,   961,    73,
+     961,   961,   961,    73,    73,   114,    73,    74,    75,    76,
+     577,     5,   112,     7,     0,     9,     7,    16,    17,   119,
+       7,    71,    73,   609,    73,    73,   121,   122,    73,    13,
+      14,   167,   168,   169,   170,   621,   622,   623,    88,    89,
+     121,   122,    73,    72,    73,    74,    75,    76,     3,    78,
+      79,     7,    81,     8,   114,   115,    73,   117,     7,    73,
+      73,    73,    73,   199,   175,     7,     3,   178,   179,   180,
+     181,     8,     3,    73,     3,   642,    73,     8,    73,     8,
+      73,    73,     3,    73,    73,     6,   196,   196,    73,    88,
+      89,    74,    75,     7,    73,     7,    73,     3,    21,    74,
+      75,   196,     8,    26,    27,    28,    29,    30,    31,    32,
+      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
+      43,     7,    70,     3,   174,     7,   176,   177,     8,     3,
+      11,    12,     6,    81,    15,     7,     7,    18,    19,    20,
+      88,    89,    21,     7,     3,     7,   196,    10,    71,     8,
+     124,   125,   126,   127,   128,   129,     3,     3,    69,   107,
+       6,     8,   110,    44,    45,    46,    47,    48,    49,    50,
+      51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
+      61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
+       3,     3,    71,     6,    73,    74,     8,   196,    77,    78,
+      79,     3,   196,   197,   198,   199,     8,    88,    89,    88,
+      89,     6,  1176,  1176,    95,  1176,  1176,  1176,    21,   100,
+     101,   102,   103,   104,     3,   106,     4,    30,    70,    71,
+     111,   164,   165,    71,    72,    73,    74,    75,    76,   120,
+       3,     3,   123,     8,     6,     8,    88,    89,   196,   130,
+      88,    89,    88,    89,     3,     3,     3,   138,   139,     8,
+       8,     8,   143,    88,    89,   146,   108,   109,   967,   150,
+       3,     3,   949,   196,     3,     8,     8,   994,     3,     8,
+       3,    70,     8,     8,     3,    88,    89,    88,    89,     8,
+     171,   172,   173,    70,    83,    84,    85,    86,    87,    88,
+      89,     4,     3,     3,   140,   141,   142,     8,     8,     3,
+       8,    88,    89,     4,     8,   196,     4,   196,   107,     4,
+       3,   110,   147,   148,   149,     8,   131,   132,   133,   106,
+       4,   134,   135,   136,   137,   112,   113,   114,   115,   116,
+     117,     3,     3,   144,   145,     3,     8,     8,     3,     3,
+       8,     3,     8,     8,   196,     4,     8,     4,   196,     4,
+     196,     4,   463,     4,     4,     3,   467,   402,   403,     4,
+       4,   196,    96,    97,    98,    99,     4,     4,   479,     4,
+       4,   482,   467,    22,    23,    24,    25,     4,   489,     4,
+     479,     4,     4,   196,   479,   196,     4,   482,   499,     4,
+       4,     4,     4,     4,   489,   479,     4,   196,   509,   479,
+     479,   514,   479,   514,   499,   482,   509,   514,     4,   196,
+       4,   514,   489,     8,   509,     4,     4,     8,   479,   514,
+     479,   479,   499,   534,   479,     3,   196,     4,   467,     4,
+       4,     4,     4,     4,     4,     4,     4,     4,   479,   534,
+     479,     4,     4,   482,     4,     4,   197,   197,   197,   197,
+     489,   197,   479,   197,   199,   479,   479,   479,   479,   197,
+     499,   198,     4,     4,     4,   197,     4,   198,   198,   479,
+     509,   197,   479,   197,   479,   514,   479,   479,   197,   479,
+     479,   197,   199,     4,   479,   199,     4,   199,     4,   482,
+     479,     4,   479,   199,     4,   534,   489,   482,     4,     4,
+       4,     4,     4,     4,   489,     4,     4,     4,     4,     4,
+     197,     4,     4,     4,    44,    45,    46,    47,    48,    49,
+      50,    51,    52,    53,    54,    55,    56,     4,     4,     4,
+       4,    61,    62,    63,    64,    65,    66,    67,     4,   199,
+      70,     4,     4,     4,     4,     4,     4,   199,     4,     4,
+      80,   197,    82,   664,     4,     4,   667,   197,    88,    89,
+      90,    91,    92,    93,    94,    95,     4,   197,   197,     4,
+       4,     4,   667,     4,     4,     4,     4,   107,     4,     4,
+     110,   111,     4,     4,     4,     4,     4,   197,   118,   700,
+     701,   702,   199,   704,   199,   199,   199,     4,     4,     4,
+     197,     4,     4,     4,   197,   700,   701,   702,   703,   704,
+     197,     4,     4,   199,   199,     4,     4,     4,   663,     4,
+     166,   197,   105,     7,     7,     7,     7,     7,   667,     5,
+     196,   196,   196,     5,     5,   196,     5,     7,   196,     5,
+       5,   171,   172,   182,   183,   184,   185,   186,   187,   188,
+     189,   190,   191,   192,   193,   194,   195,     5,     5,     5,
+       5,   700,   701,   702,   703,   704,   196,    44,    45,    46,
+      47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
+      88,    89,     7,     5,    61,    62,    63,    64,    65,    66,
+      67,    68,     7,    70,    71,     7,     7,     7,     7,     7,
+       5,     5,   196,     5,     5,     5,   196,   196,   196,   196,
+     196,    88,    89,     7,    91,    92,   196,    94,    95,     7,
+       7,     7,     7,   196,   196,   196,   196,   196,   196,   196,
+     107,   196,   196,   110,     7,     7,     7,     7,     7,   196,
+       7,   118,   196,   151,   152,   153,   154,   155,   156,   157,
+     158,   159,   160,   161,   162,   163,   196,   196,     7,   196,
+     196,     4,     4,   171,   172,     4,     4,     4,     4,   196,
+       4,     4,   196,   196,     4,     4,     4,     4,     3,   196,
+       6,     3,     6,     6,     3,     6,     3,   196,   196,     3,
+       6,     6,     3,     6,   171,   172,     6,     3,     6,     4,
+       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
+       4,     4,     3,     3,     6,   642,     3,     6,     4,   196,
+       8,     4,     4,     4,   197,   199,     4,     4,     4,   197,
+       4,     4,   199,   197,   197,   197,   197,   197,     4,   197,
+     199,   952,   197,   197,   955,   958,   197,   958,   197,     4,
+     961,   958,   955,   952,   197,   958,   197,   952,   961,   197,
+     955,   972,   961,   958,   975,   197,   961,   978,   952,   972,
+     197,   199,   952,   952,   197,   952,   197,   972,     4,     4,
+     975,   961,   961,   994,   961,   199,     4,     4,   999,     4,
+     197,   952,  1003,   952,   952,   972,     6,   952,   975,   994,
+     961,  1012,   961,   961,   999,   196,   961,  1018,  1003,  1012,
+    1021,   952,   196,   952,  1009,   196,   955,  1012,   196,   958,
+     961,   196,   961,  1018,     8,   952,  1021,     8,   952,   952,
+     952,   952,   196,   972,   961,   196,   975,   961,   961,   961,
+     961,  1018,   952,   196,  1021,   952,     4,   952,     8,   952,
+     952,   961,   952,   952,   961,   994,   961,   952,   961,   961,
+     999,   961,   961,   952,  1003,   952,   961,     3,   961,     8,
+    1009,     4,   961,  1012,   961,     4,   961,     4,   196,  1018,
+       4,     7,  1021,     5,   196,     4,     4,   196,     4,   196,
+       4,     4,   655,   693,   664,   747,   951,   946,   667,   970,
+     964,   999,   980,   978,   967,   517,   987,   952,   954,   963,
+     463,   196,   196,  1176,    77,   467,   960,   957,   197,   199,
+     955,   196,   958,   717,   196,  1018,   197,   196,  1021,   199,
+     197,   196,   479,  1018,  1020,   514,  1021,   482,  1018,  1021,
+    1023,   489,  1182,   977,   973,   975,   994,  1003,  1009,   534,
+     704,  1013,  1197,   499,   538,  1238,  1218,   666,   509,    -1,
+      -1,    -1,    -1,    -1,    -1,  1176,    -1,    -1,    -1,    -1,
+      -1,  1182,    -1,  1176,    -1,    -1,    -1,  1176,    -1,  1182,
+      -1,  1176,    -1,    -1,    -1,    -1,  1197,  1182,    -1,    -1,
+      -1,    -1,    -1,  1138,  1197,    -1,  1176,  1176,    -1,  1176,
+      -1,    -1,  1197,    -1,    -1,  1182,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,  1176,    -1,  1176,  1176,    -1,
+      -1,  1176,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,  1176,    -1,  1176,    -1,    -1,
+      -1,    -1,    -1,  1182,    -1,    -1,    -1,    -1,    -1,  1176,
+      -1,    -1,  1176,  1176,  1176,  1176,    -1,    -1,  1197,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,  1176,    -1,    -1,  1176,
+      -1,  1176,    -1,  1176,  1176,    -1,  1176,  1176,    -1,    -1,
+      -1,  1176,    -1,  1176,    -1,    -1,    -1,  1176,    -1,  1176,
+      -1,  1176
   };
 
   const short
   Dhcp6Parser::yystos_[] =
   {
-       0,   180,   181,   182,   183,   184,   185,   186,   187,   188,
-     189,   190,   191,   192,   193,   199,   200,   201,   202,   203,
-     204,   205,   206,   207,   208,   209,   210,   211,   212,   213,
-       0,     5,     7,     9,   194,   195,   196,   197,   214,   215,
-     216,   221,     7,   230,     7,   234,     7,   273,     7,   379,
-       7,   456,     7,   472,     7,   489,     7,   408,     7,   414,
-       7,   438,     7,   355,     7,   558,     7,   589,   222,   217,
-     231,   235,   274,   380,   457,   473,   490,   409,   415,   439,
-     356,   559,   590,   214,   223,   224,   194,   219,   220,    10,
-     232,    11,    12,    15,    18,    19,    20,    44,    45,    46,
+       0,   182,   183,   184,   185,   186,   187,   188,   189,   190,
+     191,   192,   193,   194,   195,   201,   202,   203,   204,   205,
+     206,   207,   208,   209,   210,   211,   212,   213,   214,   215,
+       0,     5,     7,     9,   196,   197,   198,   199,   216,   217,
+     218,   223,     7,   232,     7,   236,     7,   277,     7,   383,
+       7,   460,     7,   476,     7,   493,     7,   412,     7,   418,
+       7,   442,     7,   359,     7,   562,     7,   593,   224,   219,
+     233,   237,   278,   384,   461,   477,   494,   413,   419,   443,
+     360,   563,   594,   216,   225,   226,   196,   221,   222,    10,
+     234,    11,    12,    15,    18,    19,    20,    44,    45,    46,
       47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
       57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
-      67,    68,    86,    87,    93,    98,    99,   100,   101,   102,
-     104,   109,   118,   121,   128,   136,   137,   141,   144,   148,
-     169,   170,   171,   194,   229,   236,   237,   238,   240,   241,
+      67,    68,    69,    70,    88,    89,    95,   100,   101,   102,
+     103,   104,   106,   111,   120,   123,   130,   138,   139,   143,
+     146,   150,   171,   172,   173,   196,   231,   238,   239,   240,
      242,   243,   244,   245,   246,   247,   248,   249,   250,   251,
-     252,   253,   254,   255,   258,   260,   262,   264,   266,   267,
-     268,   269,   271,   280,   282,   284,   322,   328,   334,   340,
-     342,   349,   363,   373,   393,   398,   406,   432,   462,   464,
-     483,   513,   525,   537,   538,   546,   556,   587,   596,    16,
-      17,   229,   275,   276,   277,   279,   462,   464,    78,    80,
-      88,    89,    90,    91,    92,   105,   108,   116,   229,   240,
-     241,   242,   243,   244,   245,   246,   247,   248,   249,   250,
-     252,   253,   254,   255,   258,   260,   262,   264,   266,   381,
-     382,   383,   385,   387,   389,   391,   393,   396,   397,   432,
-     450,   462,   464,   466,   483,   508,    79,   229,   389,   391,
-     432,   458,   459,   460,   462,   464,    81,    82,    83,    84,
-      85,   229,   389,   391,   432,   462,   464,   474,   475,   476,
-     478,   479,   481,   482,   104,   110,   111,   112,   113,   114,
-     115,   229,   432,   462,   464,   491,   492,   493,   494,   496,
-     498,   500,   502,   504,   506,   406,    21,    69,    71,    72,
-      75,    76,    77,   229,   302,   416,   417,   418,   419,   420,
-     421,   422,   424,   426,   428,   429,   431,   462,   464,    70,
-      73,    74,   229,   302,   420,   426,   440,   441,   442,   443,
-     444,   446,   447,   448,   449,   462,   464,   119,   120,   229,
-     357,   358,   359,   361,   149,   150,   151,   152,   153,   154,
-     155,   156,   157,   158,   159,   160,   161,   169,   170,   229,
-     462,   464,   560,   561,   562,   563,   565,   567,   568,   570,
-     571,   572,   575,   577,   578,   579,   581,   583,   585,    13,
-      14,   591,   592,   593,   595,     6,     3,     4,     8,     3,
-     233,     8,   239,   588,   272,   281,   283,   285,     4,     4,
+     252,   253,   254,   255,   256,   257,   258,   259,   262,   264,
+     266,   268,   270,   271,   272,   273,   275,   284,   286,   288,
+     326,   332,   338,   344,   346,   353,   367,   377,   397,   402,
+     410,   436,   466,   468,   487,   517,   529,   541,   542,   550,
+     560,   591,   600,    16,    17,   231,   279,   280,   281,   283,
+     466,   468,    80,    82,    90,    91,    92,    93,    94,   107,
+     110,   118,   231,   242,   243,   244,   245,   246,   247,   248,
+     249,   250,   251,   252,   253,   254,   256,   257,   258,   259,
+     262,   264,   266,   268,   270,   385,   386,   387,   389,   391,
+     393,   395,   397,   400,   401,   436,   454,   466,   468,   470,
+     487,   512,    81,   231,   393,   395,   436,   462,   463,   464,
+     466,   468,    83,    84,    85,    86,    87,   231,   393,   395,
+     436,   466,   468,   478,   479,   480,   482,   483,   485,   486,
+     106,   112,   113,   114,   115,   116,   117,   231,   436,   466,
+     468,   495,   496,   497,   498,   500,   502,   504,   506,   508,
+     510,   410,    21,    71,    73,    74,    77,    78,    79,   231,
+     306,   420,   421,   422,   423,   424,   425,   426,   428,   430,
+     432,   433,   435,   466,   468,    72,    75,    76,   231,   306,
+     424,   430,   444,   445,   446,   447,   448,   450,   451,   452,
+     453,   466,   468,   121,   122,   231,   361,   362,   363,   365,
+     151,   152,   153,   154,   155,   156,   157,   158,   159,   160,
+     161,   162,   163,   171,   172,   231,   466,   468,   564,   565,
+     566,   567,   569,   571,   572,   574,   575,   576,   579,   581,
+     582,   583,   585,   587,   589,    13,    14,   595,   596,   597,
+     599,     6,     3,     4,     8,     3,   235,     8,   241,   592,
+     276,   285,   287,   289,     4,     4,     4,     4,     4,     4,
+       4,     4,     4,     4,     4,     4,     4,     4,   274,     4,
+       4,     4,     4,     4,   260,   263,   265,     4,   378,   411,
+     437,   467,   469,   398,   403,   333,   345,   339,   327,   518,
+     488,   354,   368,   530,     4,   347,   543,   551,   561,   267,
+     269,   601,     4,     3,     8,   282,     4,     3,     8,   455,
+     471,   388,   390,   392,     4,     4,   396,   394,   513,     3,
+       8,   465,     3,     8,   481,     4,   484,     4,     4,     3,
+       8,   511,   499,   501,   503,   505,   507,   509,     8,     3,
+       8,   427,   307,     4,   431,   429,   434,     4,     8,     3,
+     449,     4,     4,     8,     3,   364,   366,     3,     8,     4,
+     568,   570,     4,   573,     4,     4,   577,   580,     4,     4,
+     584,   586,   588,   590,     3,     8,   598,     4,     3,     8,
+     216,   216,   196,     4,     4,     4,     4,     4,     4,     4,
+     197,   197,   197,   197,   197,   197,   197,   197,   199,   198,
+     198,   198,   197,   197,     4,   197,   197,   199,   199,   199,
+       4,     4,     4,   199,     4,     4,     4,     4,     4,     4,
        4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
-     270,     4,     4,     4,     4,     4,   256,   259,   261,     4,
-     374,   407,   433,   463,   465,   394,   399,   329,   341,   335,
-     323,   514,   484,   350,   364,   526,     4,   343,   539,   547,
-     557,   263,   265,   597,     4,     3,     8,   278,     4,     3,
-       8,   451,   467,   384,   386,   388,     4,     4,   392,   390,
-     509,     3,     8,   461,     3,     8,   477,     4,   480,     4,
-       4,     3,     8,   507,   495,   497,   499,   501,   503,   505,
-       8,     3,     8,   423,   303,     4,   427,   425,   430,     4,
-       8,     3,   445,     4,     4,     8,     3,   360,   362,     3,
-       8,     4,   564,   566,     4,   569,     4,     4,   573,   576,
-       4,     4,   580,   582,   584,   586,     3,     8,   594,     4,
-       3,     8,   214,   214,   194,     4,     4,     4,     4,     4,
-       4,     4,   195,   195,   195,   195,   195,   195,   195,   195,
-     197,   196,   196,   195,     4,   195,   195,   197,   197,   197,
-       4,     4,     4,   197,     4,     4,     4,     4,     4,     4,
-       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
-     195,     4,     4,     4,     4,     4,     4,     4,   237,     4,
-     197,   276,     4,     4,     4,     4,     4,   195,   197,     4,
-       4,     4,   382,     4,   459,     4,   195,     4,   195,   195,
-     475,     4,     4,     4,     4,     4,     4,     4,   493,     4,
-       4,   195,     4,     4,     4,   197,   418,     4,   197,   197,
-     442,     4,     4,   358,   197,     4,     4,   195,     4,   195,
-     195,     4,     4,   197,   197,     4,     4,     4,     4,   561,
-       4,   195,   592,     4,     7,   194,     7,     7,     7,     7,
-       5,   194,   165,   166,   167,   168,   197,   257,   194,   194,
-       5,     5,     5,   216,   218,   194,    94,    95,    96,    97,
-     395,     5,     5,     5,     5,     7,     5,     5,     5,     7,
-       7,     7,     7,     7,     7,   194,   194,     5,     5,   225,
-       5,     5,   194,   194,   194,   225,   194,     7,   194,   194,
-     194,   225,   225,   225,   194,   194,   194,   194,   194,   194,
-     194,   194,   194,   194,   194,   218,   194,   194,   194,   162,
-     163,   574,   164,   257,   194,   194,   194,     5,   214,   236,
-     591,   275,    21,    26,    27,    28,    29,    30,    31,    32,
+     197,     4,     4,     4,     4,     4,     4,     4,   239,     4,
+     199,   280,     4,     4,     4,     4,     4,   197,   199,     4,
+       4,     4,   386,     4,   463,     4,   197,     4,   197,   197,
+     479,     4,     4,     4,     4,     4,     4,     4,   497,     4,
+       4,   197,     4,     4,     4,   199,   422,     4,   199,   199,
+     446,     4,     4,   362,   199,     4,     4,   197,     4,   197,
+     197,     4,     4,   199,   199,     4,     4,     4,     4,   565,
+       4,   197,   596,     4,     7,   196,     7,     7,     7,     7,
+       5,   196,   167,   168,   169,   170,   199,   261,   196,   196,
+       5,     5,     5,   218,   220,   196,    96,    97,    98,    99,
+     399,     5,     5,     5,     5,     7,     5,     5,     5,     7,
+       7,     7,     7,     7,     7,   196,   196,     5,     5,   227,
+       5,     5,   196,   196,   196,   227,   196,     7,   196,   196,
+     196,   227,   227,   227,   196,   196,   196,   196,   196,   196,
+     196,   196,   196,   196,   196,   220,   196,   196,   196,   164,
+     165,   578,   166,   261,   196,   196,   196,     5,   216,   238,
+     595,   279,    21,    26,    27,    28,    29,    30,    31,    32,
       33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
-      43,   229,   290,   291,   292,   295,   297,   299,   301,   302,
-     304,   305,   306,   307,   308,   309,   310,   311,   312,   313,
-     315,   316,   318,   320,   290,     7,   286,   287,   288,     7,
-     375,   376,   377,     7,   410,   411,   412,     7,   434,   435,
-     436,     7,   400,   401,   402,   112,   194,   330,   331,   332,
-     333,   223,   113,   115,   332,   336,   337,   338,   339,   103,
-     324,   325,   326,     7,   515,   516,     7,   485,   486,   487,
-       7,   351,   352,   353,   122,   123,   124,   125,   126,   127,
-     365,   366,   367,   368,   369,   370,   371,   372,    21,   132,
-     133,   134,   135,   229,   304,   462,   464,   527,   528,   529,
-     532,   533,   535,   536,   138,   139,   140,   229,   344,   345,
-     346,   347,   348,   462,   464,   142,   143,   229,   462,   464,
-     540,   541,   542,   544,   145,   146,   147,   194,   462,   464,
-     548,   549,   550,   551,   553,   554,   560,     7,   598,   599,
-     226,     7,   452,   453,   454,     7,   468,   469,   470,   117,
-     494,   510,   511,   286,     8,     8,     8,   293,   296,   298,
-     300,     4,     4,     4,     4,     4,   314,     4,     4,   317,
-     319,   321,     4,     4,     4,     4,     3,     8,     8,   289,
-       6,     3,   378,     6,     3,   413,     6,     3,   437,     6,
-       3,   403,     6,     3,     3,     6,     6,     3,     6,   327,
-       3,     8,   517,     3,     6,   488,     6,     3,   354,     6,
-       3,     4,     4,     4,     4,     4,     4,     3,     8,   530,
-     534,     4,     4,     4,     3,     8,     4,     4,     4,     3,
-       8,   543,   545,     3,     8,     4,   552,     4,   555,     3,
-       8,     8,   600,     3,     6,   194,   227,   228,   455,     6,
-       3,   471,     6,     3,   512,     8,     6,     4,     4,     4,
-       4,   195,   197,   195,   197,   195,     4,   195,   195,     4,
-       4,     4,   195,   195,   197,   195,   291,   290,   288,   381,
-     377,   416,   412,   440,   436,   229,   240,   241,   242,   243,
-     244,   245,   246,   247,   248,   249,   250,   252,   253,   254,
-     255,   258,   260,   262,   264,   266,   302,   373,   385,   387,
-     389,   391,   393,   397,   404,   405,   432,   462,   464,   508,
-     402,   331,   337,     4,   325,   106,   107,   229,   302,   432,
-     462,   464,   518,   519,   520,   521,   522,   524,   516,   491,
-     487,   357,   353,   195,   195,   195,   195,   195,   195,   366,
-       4,     4,   195,   195,   195,   528,   197,   195,   195,   345,
-       4,     4,   541,   197,     4,   195,     4,   549,   172,   174,
-     175,   229,   302,   462,   464,   601,   602,   603,   604,   606,
-     599,     6,     3,   458,   454,   474,   470,     4,    22,    23,
-      24,    25,   294,   194,   194,   194,   194,   194,   194,   194,
-       8,     8,     8,     8,     3,     8,   194,   523,     4,     8,
-       3,     8,     8,   129,   130,   131,   531,   194,   194,   194,
-     194,   214,   607,     4,   605,     3,     8,   194,     8,     8,
-     194,   405,     4,   197,   520,     4,   195,     4,   602,   194,
-       5,   194,     7,   608,   609,   610,     3,     6,   173,   176,
-     177,   178,   179,   611,   612,   613,   615,   616,   617,   618,
-     609,   614,     4,     4,     4,   619,     3,     8,     4,   197,
-     195,   195,     4,   612,   194,   194
+      43,   231,   294,   295,   296,   299,   301,   303,   305,   306,
+     308,   309,   310,   311,   312,   313,   314,   315,   316,   317,
+     319,   320,   322,   324,   294,     7,   290,   291,   292,     7,
+     379,   380,   381,     7,   414,   415,   416,     7,   438,   439,
+     440,     7,   404,   405,   406,   114,   196,   334,   335,   336,
+     337,   225,   115,   117,   336,   340,   341,   342,   343,   105,
+     328,   329,   330,     7,   519,   520,     7,   489,   490,   491,
+       7,   355,   356,   357,   124,   125,   126,   127,   128,   129,
+     369,   370,   371,   372,   373,   374,   375,   376,    21,   134,
+     135,   136,   137,   231,   308,   466,   468,   531,   532,   533,
+     536,   537,   539,   540,   140,   141,   142,   231,   348,   349,
+     350,   351,   352,   466,   468,   144,   145,   231,   466,   468,
+     544,   545,   546,   548,   147,   148,   149,   196,   466,   468,
+     552,   553,   554,   555,   557,   558,   564,     7,   602,   603,
+     228,     7,   456,   457,   458,     7,   472,   473,   474,   119,
+     498,   514,   515,   290,     8,     8,     8,   297,   300,   302,
+     304,     4,     4,     4,     4,     4,   318,     4,     4,   321,
+     323,   325,     4,     4,     4,     4,     3,     8,     8,   293,
+       6,     3,   382,     6,     3,   417,     6,     3,   441,     6,
+       3,   407,     6,     3,     3,     6,     6,     3,     6,   331,
+       3,     8,   521,     3,     6,   492,     6,     3,   358,     6,
+       3,     4,     4,     4,     4,     4,     4,     3,     8,   534,
+     538,     4,     4,     4,     3,     8,     4,     4,     4,     3,
+       8,   547,   549,     3,     8,     4,   556,     4,   559,     3,
+       8,     8,   604,     3,     6,   196,   229,   230,   459,     6,
+       3,   475,     6,     3,   516,     8,     6,     4,     4,     4,
+       4,   197,   199,   197,   199,   197,     4,   197,   197,     4,
+       4,     4,   197,   197,   199,   197,   295,   294,   292,   385,
+     381,   420,   416,   444,   440,   231,   242,   243,   244,   245,
+     246,   247,   248,   249,   250,   251,   252,   253,   254,   256,
+     257,   258,   259,   262,   264,   266,   268,   270,   306,   377,
+     389,   391,   393,   395,   397,   401,   408,   409,   436,   466,
+     468,   512,   406,   335,   341,     4,   329,   108,   109,   231,
+     306,   436,   466,   468,   522,   523,   524,   525,   526,   528,
+     520,   495,   491,   361,   357,   197,   197,   197,   197,   197,
+     197,   370,     4,     4,   197,   197,   197,   532,   199,   197,
+     197,   349,     4,     4,   545,   199,     4,   197,     4,   553,
+     174,   176,   177,   231,   306,   466,   468,   605,   606,   607,
+     608,   610,   603,     6,     3,   462,   458,   478,   474,     4,
+      22,    23,    24,    25,   298,   196,   196,   196,   196,   196,
+     196,   196,     8,     8,     8,     8,     3,     8,   196,   527,
+       4,     8,     3,     8,     8,   131,   132,   133,   535,   196,
+     196,   196,   196,   216,   611,     4,   609,     3,     8,   196,
+       8,     8,   196,   409,     4,   199,   524,     4,   197,     4,
+     606,   196,     5,   196,     7,   612,   613,   614,     3,     6,
+     175,   178,   179,   180,   181,   615,   616,   617,   619,   620,
+     621,   622,   613,   618,     4,     4,     4,   623,     3,     8,
+       4,   199,   197,   197,     4,   616,   196,   196
   };
 
   const short
   Dhcp6Parser::yyr1_[] =
   {
-       0,   198,   200,   199,   201,   199,   202,   199,   203,   199,
-     204,   199,   205,   199,   206,   199,   207,   199,   208,   199,
-     209,   199,   210,   199,   211,   199,   212,   199,   213,   199,
-     214,   214,   214,   214,   214,   214,   214,   215,   217,   216,
-     218,   219,   219,   220,   220,   222,   221,   223,   223,   224,
-     224,   226,   225,   227,   227,   228,   228,   229,   231,   230,
-     233,   232,   235,   234,   236,   236,   237,   237,   237,   237,
-     237,   237,   237,   237,   237,   237,   237,   237,   237,   237,
-     237,   237,   237,   237,   237,   237,   237,   237,   237,   237,
-     237,   237,   237,   237,   237,   237,   237,   237,   237,   237,
-     237,   237,   237,   237,   237,   237,   237,   237,   237,   237,
-     237,   237,   237,   237,   237,   237,   237,   237,   237,   239,
-     238,   240,   241,   242,   243,   244,   245,   246,   247,   248,
-     249,   250,   251,   252,   253,   254,   256,   255,   257,   257,
-     257,   257,   257,   259,   258,   261,   260,   263,   262,   265,
-     264,   266,   267,   268,   270,   269,   272,   271,   274,   273,
-     275,   275,   276,   276,   276,   276,   276,   278,   277,   279,
-     281,   280,   283,   282,   285,   284,   286,   286,   287,   287,
-     289,   288,   290,   290,   291,   291,   291,   291,   291,   291,
-     291,   291,   291,   291,   291,   291,   291,   291,   291,   291,
-     291,   291,   291,   291,   291,   293,   292,   294,   294,   294,
-     294,   296,   295,   298,   297,   300,   299,   301,   303,   302,
-     304,   305,   306,   307,   308,   309,   310,   311,   312,   314,
-     313,   315,   317,   316,   319,   318,   321,   320,   323,   322,
-     324,   324,   325,   327,   326,   329,   328,   330,   330,   331,
-     331,   332,   333,   335,   334,   336,   336,   337,   337,   337,
-     338,   339,   341,   340,   343,   342,   344,   344,   345,   345,
-     345,   345,   345,   345,   346,   347,   348,   350,   349,   351,
-     351,   352,   352,   354,   353,   356,   355,   357,   357,   357,
-     358,   358,   360,   359,   362,   361,   364,   363,   365,   365,
-     366,   366,   366,   366,   366,   366,   367,   368,   369,   370,
-     371,   372,   374,   373,   375,   375,   376,   376,   378,   377,
-     380,   379,   381,   381,   382,   382,   382,   382,   382,   382,
-     382,   382,   382,   382,   382,   382,   382,   382,   382,   382,
-     382,   382,   382,   382,   382,   382,   382,   382,   382,   382,
-     382,   382,   382,   382,   382,   382,   382,   382,   382,   382,
-     384,   383,   386,   385,   388,   387,   390,   389,   392,   391,
-     394,   393,   395,   395,   395,   395,   396,   397,   399,   398,
-     400,   400,   401,   401,   403,   402,   404,   404,   405,   405,
-     405,   405,   405,   405,   405,   405,   405,   405,   405,   405,
-     405,   405,   405,   405,   405,   405,   405,   405,   405,   405,
-     405,   405,   405,   405,   405,   405,   405,   405,   405,   405,
-     405,   407,   406,   409,   408,   410,   410,   411,   411,   413,
-     412,   415,   414,   416,   416,   417,   417,   418,   418,   418,
-     418,   418,   418,   418,   418,   418,   418,   419,   420,   421,
-     423,   422,   425,   424,   427,   426,   428,   430,   429,   431,
-     433,   432,   434,   434,   435,   435,   437,   436,   439,   438,
-     440,   440,   441,   441,   442,   442,   442,   442,   442,   442,
-     442,   442,   442,   443,   445,   444,   446,   447,   448,   449,
-     451,   450,   452,   452,   453,   453,   455,   454,   457,   456,
-     458,   458,   459,   459,   459,   459,   459,   459,   459,   461,
-     460,   463,   462,   465,   464,   467,   466,   468,   468,   469,
-     469,   471,   470,   473,   472,   474,   474,   475,   475,   475,
-     475,   475,   475,   475,   475,   475,   475,   475,   477,   476,
-     478,   480,   479,   481,   482,   484,   483,   485,   485,   486,
-     486,   488,   487,   490,   489,   491,   491,   492,   492,   493,
-     493,   493,   493,   493,   493,   493,   493,   493,   493,   493,
-     495,   494,   497,   496,   499,   498,   501,   500,   503,   502,
-     505,   504,   507,   506,   509,   508,   510,   510,   512,   511,
-     514,   513,   515,   515,   517,   516,   518,   518,   519,   519,
-     520,   520,   520,   520,   520,   520,   520,   521,   523,   522,
-     524,   526,   525,   527,   527,   528,   528,   528,   528,   528,
-     528,   528,   528,   528,   530,   529,   531,   531,   531,   532,
-     534,   533,   535,   536,   537,   539,   538,   540,   540,   541,
-     541,   541,   541,   541,   543,   542,   545,   544,   547,   546,
-     548,   548,   549,   549,   549,   549,   549,   549,   550,   552,
-     551,   553,   555,   554,   557,   556,   559,   558,   560,   560,
-     561,   561,   561,   561,   561,   561,   561,   561,   561,   561,
-     561,   561,   561,   561,   561,   561,   561,   561,   562,   564,
-     563,   566,   565,   567,   569,   568,   570,   571,   573,   572,
-     574,   574,   576,   575,   577,   578,   580,   579,   582,   581,
-     584,   583,   586,   585,   588,   587,   590,   589,   591,   591,
-     592,   592,   594,   593,   595,   597,   596,   598,   598,   600,
-     599,   601,   601,   602,   602,   602,   602,   602,   602,   602,
-     603,   605,   604,   607,   606,   608,   608,   610,   609,   611,
-     611,   612,   612,   612,   612,   612,   614,   613,   615,   616,
-     617,   619,   618
+       0,   200,   202,   201,   203,   201,   204,   201,   205,   201,
+     206,   201,   207,   201,   208,   201,   209,   201,   210,   201,
+     211,   201,   212,   201,   213,   201,   214,   201,   215,   201,
+     216,   216,   216,   216,   216,   216,   216,   217,   219,   218,
+     220,   221,   221,   222,   222,   224,   223,   225,   225,   226,
+     226,   228,   227,   229,   229,   230,   230,   231,   233,   232,
+     235,   234,   237,   236,   238,   238,   239,   239,   239,   239,
+     239,   239,   239,   239,   239,   239,   239,   239,   239,   239,
+     239,   239,   239,   239,   239,   239,   239,   239,   239,   239,
+     239,   239,   239,   239,   239,   239,   239,   239,   239,   239,
+     239,   239,   239,   239,   239,   239,   239,   239,   239,   239,
+     239,   239,   239,   239,   239,   239,   239,   239,   239,   239,
+     239,   241,   240,   242,   243,   244,   245,   246,   247,   248,
+     249,   250,   251,   252,   253,   254,   255,   256,   257,   258,
+     260,   259,   261,   261,   261,   261,   261,   263,   262,   265,
+     264,   267,   266,   269,   268,   270,   271,   272,   274,   273,
+     276,   275,   278,   277,   279,   279,   280,   280,   280,   280,
+     280,   282,   281,   283,   285,   284,   287,   286,   289,   288,
+     290,   290,   291,   291,   293,   292,   294,   294,   295,   295,
+     295,   295,   295,   295,   295,   295,   295,   295,   295,   295,
+     295,   295,   295,   295,   295,   295,   295,   295,   295,   297,
+     296,   298,   298,   298,   298,   300,   299,   302,   301,   304,
+     303,   305,   307,   306,   308,   309,   310,   311,   312,   313,
+     314,   315,   316,   318,   317,   319,   321,   320,   323,   322,
+     325,   324,   327,   326,   328,   328,   329,   331,   330,   333,
+     332,   334,   334,   335,   335,   336,   337,   339,   338,   340,
+     340,   341,   341,   341,   342,   343,   345,   344,   347,   346,
+     348,   348,   349,   349,   349,   349,   349,   349,   350,   351,
+     352,   354,   353,   355,   355,   356,   356,   358,   357,   360,
+     359,   361,   361,   361,   362,   362,   364,   363,   366,   365,
+     368,   367,   369,   369,   370,   370,   370,   370,   370,   370,
+     371,   372,   373,   374,   375,   376,   378,   377,   379,   379,
+     380,   380,   382,   381,   384,   383,   385,   385,   386,   386,
+     386,   386,   386,   386,   386,   386,   386,   386,   386,   386,
+     386,   386,   386,   386,   386,   386,   386,   386,   386,   386,
+     386,   386,   386,   386,   386,   386,   386,   386,   386,   386,
+     386,   386,   386,   386,   386,   386,   388,   387,   390,   389,
+     392,   391,   394,   393,   396,   395,   398,   397,   399,   399,
+     399,   399,   400,   401,   403,   402,   404,   404,   405,   405,
+     407,   406,   408,   408,   409,   409,   409,   409,   409,   409,
+     409,   409,   409,   409,   409,   409,   409,   409,   409,   409,
+     409,   409,   409,   409,   409,   409,   409,   409,   409,   409,
+     409,   409,   409,   409,   409,   409,   409,   409,   409,   411,
+     410,   413,   412,   414,   414,   415,   415,   417,   416,   419,
+     418,   420,   420,   421,   421,   422,   422,   422,   422,   422,
+     422,   422,   422,   422,   422,   423,   424,   425,   427,   426,
+     429,   428,   431,   430,   432,   434,   433,   435,   437,   436,
+     438,   438,   439,   439,   441,   440,   443,   442,   444,   444,
+     445,   445,   446,   446,   446,   446,   446,   446,   446,   446,
+     446,   447,   449,   448,   450,   451,   452,   453,   455,   454,
+     456,   456,   457,   457,   459,   458,   461,   460,   462,   462,
+     463,   463,   463,   463,   463,   463,   463,   465,   464,   467,
+     466,   469,   468,   471,   470,   472,   472,   473,   473,   475,
+     474,   477,   476,   478,   478,   479,   479,   479,   479,   479,
+     479,   479,   479,   479,   479,   479,   481,   480,   482,   484,
+     483,   485,   486,   488,   487,   489,   489,   490,   490,   492,
+     491,   494,   493,   495,   495,   496,   496,   497,   497,   497,
+     497,   497,   497,   497,   497,   497,   497,   497,   499,   498,
+     501,   500,   503,   502,   505,   504,   507,   506,   509,   508,
+     511,   510,   513,   512,   514,   514,   516,   515,   518,   517,
+     519,   519,   521,   520,   522,   522,   523,   523,   524,   524,
+     524,   524,   524,   524,   524,   525,   527,   526,   528,   530,
+     529,   531,   531,   532,   532,   532,   532,   532,   532,   532,
+     532,   532,   534,   533,   535,   535,   535,   536,   538,   537,
+     539,   540,   541,   543,   542,   544,   544,   545,   545,   545,
+     545,   545,   547,   546,   549,   548,   551,   550,   552,   552,
+     553,   553,   553,   553,   553,   553,   554,   556,   555,   557,
+     559,   558,   561,   560,   563,   562,   564,   564,   565,   565,
+     565,   565,   565,   565,   565,   565,   565,   565,   565,   565,
+     565,   565,   565,   565,   565,   565,   566,   568,   567,   570,
+     569,   571,   573,   572,   574,   575,   577,   576,   578,   578,
+     580,   579,   581,   582,   584,   583,   586,   585,   588,   587,
+     590,   589,   592,   591,   594,   593,   595,   595,   596,   596,
+     598,   597,   599,   601,   600,   602,   602,   604,   603,   605,
+     605,   606,   606,   606,   606,   606,   606,   606,   607,   609,
+     608,   611,   610,   612,   612,   614,   613,   615,   615,   616,
+     616,   616,   616,   616,   618,   617,   619,   620,   621,   623,
+     622
   };
 
   const signed char
@@ -5379,72 +5409,73 @@ namespace isc { namespace dhcp {
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     0,
-       4,     3,     3,     3,     3,     3,     3,     3,     3,     3,
-       3,     3,     3,     3,     3,     3,     0,     4,     1,     1,
-       1,     1,     1,     0,     4,     0,     4,     0,     4,     0,
-       4,     3,     3,     3,     0,     4,     0,     6,     0,     4,
-       1,     3,     1,     1,     1,     1,     1,     0,     4,     3,
-       0,     6,     0,     6,     0,     6,     0,     1,     1,     3,
-       0,     4,     1,     3,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     0,     4,     1,     1,     1,
-       1,     0,     4,     0,     4,     0,     4,     3,     0,     4,
-       3,     3,     3,     3,     3,     3,     3,     3,     3,     0,
-       4,     3,     0,     4,     0,     4,     0,     4,     0,     6,
-       1,     3,     1,     0,     4,     0,     6,     1,     3,     1,
-       1,     1,     1,     0,     6,     1,     3,     1,     1,     1,
-       1,     1,     0,     6,     0,     6,     1,     3,     1,     1,
-       1,     1,     1,     1,     3,     3,     3,     0,     6,     0,
-       1,     1,     3,     0,     4,     0,     4,     1,     3,     1,
-       1,     1,     0,     4,     0,     4,     0,     6,     1,     3,
-       1,     1,     1,     1,     1,     1,     3,     3,     3,     3,
-       3,     3,     0,     6,     0,     1,     1,     3,     0,     4,
-       0,     4,     1,     3,     1,     1,     1,     1,     1,     1,
+       1,     0,     4,     3,     3,     3,     3,     3,     3,     3,
+       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
+       0,     4,     1,     1,     1,     1,     1,     0,     4,     0,
+       4,     0,     4,     0,     4,     3,     3,     3,     0,     4,
+       0,     6,     0,     4,     1,     3,     1,     1,     1,     1,
+       1,     0,     4,     3,     0,     6,     0,     6,     0,     6,
+       0,     1,     1,     3,     0,     4,     1,     3,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     0,
+       4,     1,     1,     1,     1,     0,     4,     0,     4,     0,
+       4,     3,     0,     4,     3,     3,     3,     3,     3,     3,
+       3,     3,     3,     0,     4,     3,     0,     4,     0,     4,
+       0,     4,     0,     6,     1,     3,     1,     0,     4,     0,
+       6,     1,     3,     1,     1,     1,     1,     0,     6,     1,
+       3,     1,     1,     1,     1,     1,     0,     6,     0,     6,
+       1,     3,     1,     1,     1,     1,     1,     1,     3,     3,
+       3,     0,     6,     0,     1,     1,     3,     0,     4,     0,
+       4,     1,     3,     1,     1,     1,     0,     4,     0,     4,
+       0,     6,     1,     3,     1,     1,     1,     1,     1,     1,
+       3,     3,     3,     3,     3,     3,     0,     6,     0,     1,
+       1,     3,     0,     4,     0,     4,     1,     3,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       0,     4,     0,     4,     0,     4,     0,     4,     0,     4,
-       0,     4,     1,     1,     1,     1,     3,     3,     0,     6,
-       0,     1,     1,     3,     0,     4,     1,     3,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     0,     4,     0,     4,
+       0,     4,     0,     4,     0,     4,     0,     4,     1,     1,
+       1,     1,     3,     3,     0,     6,     0,     1,     1,     3,
+       0,     4,     1,     3,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     0,     6,     0,     4,     0,     1,     1,     3,     0,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     0,
+       6,     0,     4,     0,     1,     1,     3,     0,     4,     0,
+       4,     0,     1,     1,     3,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     3,     1,     0,     4,
+       0,     4,     0,     4,     1,     0,     4,     3,     0,     6,
+       0,     1,     1,     3,     0,     4,     0,     4,     0,     1,
+       1,     3,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     0,     4,     1,     1,     3,     3,     0,     6,
+       0,     1,     1,     3,     0,     4,     0,     4,     1,     3,
+       1,     1,     1,     1,     1,     1,     1,     0,     4,     0,
+       4,     0,     4,     0,     6,     0,     1,     1,     3,     0,
+       4,     0,     4,     1,     3,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     0,     4,     3,     0,
+       4,     3,     3,     0,     6,     0,     1,     1,     3,     0,
        4,     0,     4,     0,     1,     1,     3,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     3,     1,
-       0,     4,     0,     4,     0,     4,     1,     0,     4,     3,
-       0,     6,     0,     1,     1,     3,     0,     4,     0,     4,
-       0,     1,     1,     3,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     0,     4,     1,     1,     3,     3,
-       0,     6,     0,     1,     1,     3,     0,     4,     0,     4,
-       1,     3,     1,     1,     1,     1,     1,     1,     1,     0,
-       4,     0,     4,     0,     4,     0,     6,     0,     1,     1,
-       3,     0,     4,     0,     4,     1,     3,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     0,     4,
-       3,     0,     4,     3,     3,     0,     6,     0,     1,     1,
-       3,     0,     4,     0,     4,     0,     1,     1,     3,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        0,     4,     0,     4,     0,     4,     0,     4,     0,     4,
-       0,     4,     0,     4,     0,     6,     1,     1,     0,     4,
-       0,     6,     1,     3,     0,     4,     0,     1,     1,     3,
-       1,     1,     1,     1,     1,     1,     1,     1,     0,     4,
-       3,     0,     6,     1,     3,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     0,     4,     1,     1,     1,     3,
-       0,     4,     3,     3,     3,     0,     6,     1,     3,     1,
-       1,     1,     1,     1,     0,     4,     0,     4,     0,     6,
-       1,     3,     1,     1,     1,     1,     1,     1,     3,     0,
-       4,     3,     0,     4,     0,     6,     0,     4,     1,     3,
+       0,     4,     0,     6,     1,     1,     0,     4,     0,     6,
+       1,     3,     0,     4,     0,     1,     1,     3,     1,     1,
+       1,     1,     1,     1,     1,     1,     0,     4,     3,     0,
+       6,     1,     3,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     0,     4,     1,     1,     1,     3,     0,     4,
+       3,     3,     3,     0,     6,     1,     3,     1,     1,     1,
+       1,     1,     0,     4,     0,     4,     0,     6,     1,     3,
+       1,     1,     1,     1,     1,     1,     3,     0,     4,     3,
+       0,     4,     0,     6,     0,     4,     1,     3,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     3,     0,
-       4,     0,     4,     3,     0,     4,     3,     3,     0,     4,
-       1,     1,     0,     4,     3,     3,     0,     4,     0,     4,
-       0,     4,     0,     4,     0,     6,     0,     4,     1,     3,
-       1,     1,     0,     6,     3,     0,     6,     1,     3,     0,
-       4,     1,     3,     1,     1,     1,     1,     1,     1,     1,
-       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,     3,     0,     4,     0,
+       4,     3,     0,     4,     3,     3,     0,     4,     1,     1,
+       0,     4,     3,     3,     0,     4,     0,     4,     0,     4,
+       0,     4,     0,     6,     0,     4,     1,     3,     1,     1,
+       0,     6,     3,     0,     6,     1,     3,     0,     4,     1,
+       3,     1,     1,     1,     1,     1,     1,     1,     3,     0,
+       4,     0,     6,     1,     3,     0,     4,     1,     3,     1,
+       1,     1,     1,     1,     0,     4,     3,     3,     3,     0,
+       4
   };
 
 
@@ -5469,14 +5500,15 @@ namespace isc { namespace dhcp {
   "\"min-preferred-lifetime\"", "\"max-preferred-lifetime\"",
   "\"valid-lifetime\"", "\"min-valid-lifetime\"", "\"max-valid-lifetime\"",
   "\"renew-timer\"", "\"rebind-timer\"", "\"calculate-tee-times\"",
-  "\"t1-percent\"", "\"t2-percent\"", "\"decline-probation-period\"",
-  "\"server-tag\"", "\"statistic-default-sample-count\"",
-  "\"statistic-default-sample-age\"", "\"ddns-send-updates\"",
-  "\"ddns-override-no-update\"", "\"ddns-override-client-update\"",
-  "\"ddns-replace-client-name\"", "\"ddns-generated-prefix\"",
-  "\"ddns-qualifying-suffix\"", "\"store-extended-info\"", "\"subnet6\"",
-  "\"option-def\"", "\"option-data\"", "\"name\"", "\"data\"", "\"code\"",
-  "\"space\"", "\"csv-format\"", "\"always-send\"", "\"record-types\"",
+  "\"t1-percent\"", "\"t2-percent\"", "\"cache-threshold\"",
+  "\"cache-max\"", "\"decline-probation-period\"", "\"server-tag\"",
+  "\"statistic-default-sample-count\"", "\"statistic-default-sample-age\"",
+  "\"ddns-send-updates\"", "\"ddns-override-no-update\"",
+  "\"ddns-override-client-update\"", "\"ddns-replace-client-name\"",
+  "\"ddns-generated-prefix\"", "\"ddns-qualifying-suffix\"",
+  "\"store-extended-info\"", "\"subnet6\"", "\"option-def\"",
+  "\"option-data\"", "\"name\"", "\"data\"", "\"code\"", "\"space\"",
+  "\"csv-format\"", "\"always-send\"", "\"record-types\"",
   "\"encapsulate\"", "\"array\"", "\"pools\"", "\"pool\"", "\"pd-pools\"",
   "\"prefix\"", "\"prefix-len\"", "\"excluded-prefix\"",
   "\"excluded-prefix-len\"", "\"delegated-len\"", "\"user-context\"",
@@ -5524,26 +5556,26 @@ namespace isc { namespace dhcp {
   "preferred_lifetime", "min_preferred_lifetime", "max_preferred_lifetime",
   "valid_lifetime", "min_valid_lifetime", "max_valid_lifetime",
   "renew_timer", "rebind_timer", "calculate_tee_times", "t1_percent",
-  "t2_percent", "decline_probation_period", "ddns_send_updates",
-  "ddns_override_no_update", "ddns_override_client_update",
-  "ddns_replace_client_name", "$@22", "ddns_replace_client_name_value",
-  "ddns_generated_prefix", "$@23", "ddns_qualifying_suffix", "$@24",
-  "hostname_char_set", "$@25", "hostname_char_replacement", "$@26",
-  "store_extended_info", "statistic_default_sample_count",
-  "statistic_default_sample_age", "server_tag", "$@27",
-  "interfaces_config", "$@28", "sub_interfaces6", "$@29",
-  "interfaces_config_params", "interfaces_config_param", "interfaces_list",
-  "$@30", "re_detect", "lease_database", "$@31", "hosts_database", "$@32",
-  "hosts_databases", "$@33", "database_list", "not_empty_database_list",
-  "database", "$@34", "database_map_params", "database_map_param",
-  "database_type", "$@35", "db_type", "user", "$@36", "password", "$@37",
-  "host", "$@38", "port", "name", "$@39", "persist", "lfc_interval",
-  "readonly", "connect_timeout", "reconnect_wait_time", "max_row_errors",
-  "request_timeout", "tcp_keepalive", "tcp_nodelay", "contact_points",
-  "$@40", "max_reconnect_tries", "keyspace", "$@41", "consistency", "$@42",
-  "serial_consistency", "$@43", "sanity_checks", "$@44",
-  "sanity_checks_params", "sanity_checks_param", "lease_checks", "$@45",
-  "mac_sources", "$@46", "mac_sources_list", "mac_sources_value",
+  "t2_percent", "cache_threshold", "cache_max", "decline_probation_period",
+  "ddns_send_updates", "ddns_override_no_update",
+  "ddns_override_client_update", "ddns_replace_client_name", "$@22",
+  "ddns_replace_client_name_value", "ddns_generated_prefix", "$@23",
+  "ddns_qualifying_suffix", "$@24", "hostname_char_set", "$@25",
+  "hostname_char_replacement", "$@26", "store_extended_info",
+  "statistic_default_sample_count", "statistic_default_sample_age",
+  "server_tag", "$@27", "interfaces_config", "$@28", "sub_interfaces6",
+  "$@29", "interfaces_config_params", "interfaces_config_param",
+  "interfaces_list", "$@30", "re_detect", "lease_database", "$@31",
+  "hosts_database", "$@32", "hosts_databases", "$@33", "database_list",
+  "not_empty_database_list", "database", "$@34", "database_map_params",
+  "database_map_param", "database_type", "$@35", "db_type", "user", "$@36",
+  "password", "$@37", "host", "$@38", "port", "name", "$@39", "persist",
+  "lfc_interval", "readonly", "connect_timeout", "reconnect_wait_time",
+  "max_row_errors", "request_timeout", "tcp_keepalive", "tcp_nodelay",
+  "contact_points", "$@40", "max_reconnect_tries", "keyspace", "$@41",
+  "consistency", "$@42", "serial_consistency", "$@43", "sanity_checks",
+  "$@44", "sanity_checks_params", "sanity_checks_param", "lease_checks",
+  "$@45", "mac_sources", "$@46", "mac_sources_list", "mac_sources_value",
   "duid_id", "string_id", "host_reservation_identifiers", "$@47",
   "host_reservation_identifiers_list", "host_reservation_identifier",
   "hw_address_id", "flex_id", "relay_supplied_options", "$@48",
@@ -5625,83 +5657,84 @@ namespace isc { namespace dhcp {
   const short
   Dhcp6Parser::yyrline_[] =
   {
-       0,   283,   283,   283,   284,   284,   285,   285,   286,   286,
-     287,   287,   288,   288,   289,   289,   290,   290,   291,   291,
-     292,   292,   293,   293,   294,   294,   295,   295,   296,   296,
-     304,   305,   306,   307,   308,   309,   310,   313,   318,   318,
-     329,   332,   333,   336,   341,   349,   349,   356,   357,   360,
-     364,   371,   371,   378,   379,   382,   386,   397,   406,   406,
-     421,   421,   438,   438,   447,   448,   453,   454,   455,   456,
-     457,   458,   459,   460,   461,   462,   463,   464,   465,   466,
-     467,   468,   469,   470,   471,   472,   473,   474,   475,   476,
-     477,   478,   479,   480,   481,   482,   483,   484,   485,   486,
-     487,   488,   489,   490,   491,   492,   493,   494,   495,   496,
-     497,   498,   499,   500,   501,   502,   503,   504,   505,   508,
-     508,   517,   523,   529,   535,   541,   547,   553,   559,   565,
-     571,   577,   583,   589,   595,   601,   607,   607,   616,   619,
-     622,   625,   628,   634,   634,   643,   643,   652,   652,   661,
-     661,   670,   676,   682,   688,   688,   697,   697,   709,   709,
-     718,   719,   722,   723,   724,   725,   726,   729,   729,   740,
-     746,   746,   759,   759,   772,   772,   783,   784,   787,   788,
-     791,   791,   801,   802,   805,   806,   807,   808,   809,   810,
-     811,   812,   813,   814,   815,   816,   817,   818,   819,   820,
-     821,   822,   823,   824,   825,   828,   828,   836,   837,   838,
-     839,   842,   842,   851,   851,   860,   860,   869,   875,   875,
-     884,   890,   896,   902,   908,   914,   920,   926,   932,   938,
-     938,   947,   953,   953,   962,   962,   971,   971,   980,   980,
-     991,   992,   994,   996,   996,  1015,  1015,  1026,  1027,  1030,
-    1031,  1034,  1039,  1044,  1044,  1055,  1056,  1059,  1060,  1061,
-    1064,  1069,  1076,  1076,  1089,  1089,  1102,  1103,  1106,  1107,
-    1108,  1109,  1110,  1111,  1114,  1120,  1126,  1132,  1132,  1143,
-    1144,  1147,  1148,  1151,  1151,  1161,  1161,  1171,  1172,  1173,
-    1176,  1177,  1180,  1180,  1189,  1189,  1198,  1198,  1210,  1211,
-    1214,  1215,  1216,  1217,  1218,  1219,  1222,  1228,  1234,  1240,
-    1246,  1252,  1261,  1261,  1275,  1276,  1279,  1280,  1287,  1287,
-    1313,  1313,  1324,  1325,  1329,  1330,  1331,  1332,  1333,  1334,
-    1335,  1336,  1337,  1338,  1339,  1340,  1341,  1342,  1343,  1344,
-    1345,  1346,  1347,  1348,  1349,  1350,  1351,  1352,  1353,  1354,
-    1355,  1356,  1357,  1358,  1359,  1360,  1361,  1362,  1363,  1364,
-    1367,  1367,  1376,  1376,  1385,  1385,  1394,  1394,  1403,  1403,
-    1414,  1414,  1422,  1423,  1424,  1425,  1428,  1434,  1442,  1442,
-    1454,  1455,  1459,  1460,  1463,  1463,  1471,  1472,  1475,  1476,
-    1477,  1478,  1479,  1480,  1481,  1482,  1483,  1484,  1485,  1486,
-    1487,  1488,  1489,  1490,  1491,  1492,  1493,  1494,  1495,  1496,
-    1497,  1498,  1499,  1500,  1501,  1502,  1503,  1504,  1505,  1506,
-    1507,  1514,  1514,  1528,  1528,  1537,  1538,  1541,  1542,  1547,
-    1547,  1562,  1562,  1576,  1577,  1580,  1581,  1584,  1585,  1586,
-    1587,  1588,  1589,  1590,  1591,  1592,  1593,  1596,  1598,  1604,
-    1606,  1606,  1615,  1615,  1624,  1624,  1633,  1635,  1635,  1644,
-    1654,  1654,  1667,  1668,  1673,  1674,  1679,  1679,  1691,  1691,
-    1703,  1704,  1709,  1710,  1715,  1716,  1717,  1718,  1719,  1720,
-    1721,  1722,  1723,  1726,  1728,  1728,  1737,  1739,  1741,  1747,
-    1756,  1756,  1769,  1770,  1773,  1774,  1777,  1777,  1787,  1787,
-    1797,  1798,  1801,  1802,  1803,  1804,  1805,  1806,  1807,  1810,
-    1810,  1819,  1819,  1844,  1844,  1874,  1874,  1887,  1888,  1891,
-    1892,  1895,  1895,  1907,  1907,  1919,  1920,  1923,  1924,  1925,
-    1926,  1927,  1928,  1929,  1930,  1931,  1932,  1933,  1936,  1936,
-    1945,  1951,  1951,  1960,  1966,  1975,  1975,  1986,  1987,  1990,
-    1991,  1994,  1994,  2003,  2003,  2012,  2013,  2016,  2017,  2021,
-    2022,  2023,  2024,  2025,  2026,  2027,  2028,  2029,  2030,  2031,
-    2034,  2034,  2045,  2045,  2056,  2056,  2065,  2065,  2074,  2074,
-    2083,  2083,  2092,  2092,  2106,  2106,  2117,  2118,  2121,  2121,
-    2133,  2133,  2144,  2145,  2148,  2148,  2158,  2159,  2162,  2163,
-    2166,  2167,  2168,  2169,  2170,  2171,  2172,  2175,  2177,  2177,
-    2186,  2195,  2195,  2208,  2209,  2212,  2213,  2214,  2215,  2216,
-    2217,  2218,  2219,  2220,  2223,  2223,  2231,  2232,  2233,  2236,
-    2242,  2242,  2251,  2257,  2265,  2273,  2273,  2284,  2285,  2288,
-    2289,  2290,  2291,  2292,  2295,  2295,  2304,  2304,  2316,  2316,
-    2329,  2330,  2333,  2334,  2335,  2336,  2337,  2338,  2341,  2347,
-    2347,  2356,  2362,  2362,  2372,  2372,  2385,  2385,  2395,  2396,
-    2399,  2400,  2401,  2402,  2403,  2404,  2405,  2406,  2407,  2408,
-    2409,  2410,  2411,  2412,  2413,  2414,  2415,  2416,  2419,  2426,
-    2426,  2435,  2435,  2444,  2450,  2450,  2459,  2465,  2471,  2471,
-    2480,  2481,  2484,  2484,  2494,  2501,  2508,  2508,  2517,  2517,
-    2527,  2527,  2537,  2537,  2549,  2549,  2561,  2561,  2571,  2572,
-    2576,  2577,  2580,  2580,  2591,  2599,  2599,  2612,  2613,  2617,
-    2617,  2625,  2626,  2629,  2630,  2631,  2632,  2633,  2634,  2635,
-    2638,  2644,  2644,  2653,  2653,  2664,  2665,  2668,  2668,  2676,
-    2677,  2680,  2681,  2682,  2683,  2684,  2687,  2687,  2696,  2702,
-    2708,  2714,  2714
+       0,   285,   285,   285,   286,   286,   287,   287,   288,   288,
+     289,   289,   290,   290,   291,   291,   292,   292,   293,   293,
+     294,   294,   295,   295,   296,   296,   297,   297,   298,   298,
+     306,   307,   308,   309,   310,   311,   312,   315,   320,   320,
+     331,   334,   335,   338,   343,   351,   351,   358,   359,   362,
+     366,   373,   373,   380,   381,   384,   388,   399,   408,   408,
+     423,   423,   440,   440,   449,   450,   455,   456,   457,   458,
+     459,   460,   461,   462,   463,   464,   465,   466,   467,   468,
+     469,   470,   471,   472,   473,   474,   475,   476,   477,   478,
+     479,   480,   481,   482,   483,   484,   485,   486,   487,   488,
+     489,   490,   491,   492,   493,   494,   495,   496,   497,   498,
+     499,   500,   501,   502,   503,   504,   505,   506,   507,   508,
+     509,   512,   512,   521,   527,   533,   539,   545,   551,   557,
+     563,   569,   575,   581,   587,   593,   599,   605,   611,   617,
+     623,   623,   632,   635,   638,   641,   644,   650,   650,   659,
+     659,   668,   668,   677,   677,   686,   692,   698,   704,   704,
+     713,   713,   725,   725,   734,   735,   738,   739,   740,   741,
+     742,   745,   745,   756,   762,   762,   775,   775,   788,   788,
+     799,   800,   803,   804,   807,   807,   817,   818,   821,   822,
+     823,   824,   825,   826,   827,   828,   829,   830,   831,   832,
+     833,   834,   835,   836,   837,   838,   839,   840,   841,   844,
+     844,   852,   853,   854,   855,   858,   858,   867,   867,   876,
+     876,   885,   891,   891,   900,   906,   912,   918,   924,   930,
+     936,   942,   948,   954,   954,   963,   969,   969,   978,   978,
+     987,   987,   996,   996,  1007,  1008,  1010,  1012,  1012,  1031,
+    1031,  1042,  1043,  1046,  1047,  1050,  1055,  1060,  1060,  1071,
+    1072,  1075,  1076,  1077,  1080,  1085,  1092,  1092,  1105,  1105,
+    1118,  1119,  1122,  1123,  1124,  1125,  1126,  1127,  1130,  1136,
+    1142,  1148,  1148,  1159,  1160,  1163,  1164,  1167,  1167,  1177,
+    1177,  1187,  1188,  1189,  1192,  1193,  1196,  1196,  1205,  1205,
+    1214,  1214,  1226,  1227,  1230,  1231,  1232,  1233,  1234,  1235,
+    1238,  1244,  1250,  1256,  1262,  1268,  1277,  1277,  1291,  1292,
+    1295,  1296,  1303,  1303,  1329,  1329,  1340,  1341,  1345,  1346,
+    1347,  1348,  1349,  1350,  1351,  1352,  1353,  1354,  1355,  1356,
+    1357,  1358,  1359,  1360,  1361,  1362,  1363,  1364,  1365,  1366,
+    1367,  1368,  1369,  1370,  1371,  1372,  1373,  1374,  1375,  1376,
+    1377,  1378,  1379,  1380,  1381,  1382,  1385,  1385,  1394,  1394,
+    1403,  1403,  1412,  1412,  1421,  1421,  1432,  1432,  1440,  1441,
+    1442,  1443,  1446,  1452,  1460,  1460,  1472,  1473,  1477,  1478,
+    1481,  1481,  1489,  1490,  1493,  1494,  1495,  1496,  1497,  1498,
+    1499,  1500,  1501,  1502,  1503,  1504,  1505,  1506,  1507,  1508,
+    1509,  1510,  1511,  1512,  1513,  1514,  1515,  1516,  1517,  1518,
+    1519,  1520,  1521,  1522,  1523,  1524,  1525,  1526,  1527,  1534,
+    1534,  1548,  1548,  1557,  1558,  1561,  1562,  1567,  1567,  1582,
+    1582,  1596,  1597,  1600,  1601,  1604,  1605,  1606,  1607,  1608,
+    1609,  1610,  1611,  1612,  1613,  1616,  1618,  1624,  1626,  1626,
+    1635,  1635,  1644,  1644,  1653,  1655,  1655,  1664,  1674,  1674,
+    1687,  1688,  1693,  1694,  1699,  1699,  1711,  1711,  1723,  1724,
+    1729,  1730,  1735,  1736,  1737,  1738,  1739,  1740,  1741,  1742,
+    1743,  1746,  1748,  1748,  1757,  1759,  1761,  1767,  1776,  1776,
+    1789,  1790,  1793,  1794,  1797,  1797,  1807,  1807,  1817,  1818,
+    1821,  1822,  1823,  1824,  1825,  1826,  1827,  1830,  1830,  1839,
+    1839,  1864,  1864,  1894,  1894,  1907,  1908,  1911,  1912,  1915,
+    1915,  1927,  1927,  1939,  1940,  1943,  1944,  1945,  1946,  1947,
+    1948,  1949,  1950,  1951,  1952,  1953,  1956,  1956,  1965,  1971,
+    1971,  1980,  1986,  1995,  1995,  2006,  2007,  2010,  2011,  2014,
+    2014,  2023,  2023,  2032,  2033,  2036,  2037,  2041,  2042,  2043,
+    2044,  2045,  2046,  2047,  2048,  2049,  2050,  2051,  2054,  2054,
+    2065,  2065,  2076,  2076,  2085,  2085,  2094,  2094,  2103,  2103,
+    2112,  2112,  2126,  2126,  2137,  2138,  2141,  2141,  2153,  2153,
+    2164,  2165,  2168,  2168,  2178,  2179,  2182,  2183,  2186,  2187,
+    2188,  2189,  2190,  2191,  2192,  2195,  2197,  2197,  2206,  2215,
+    2215,  2228,  2229,  2232,  2233,  2234,  2235,  2236,  2237,  2238,
+    2239,  2240,  2243,  2243,  2251,  2252,  2253,  2256,  2262,  2262,
+    2271,  2277,  2285,  2293,  2293,  2304,  2305,  2308,  2309,  2310,
+    2311,  2312,  2315,  2315,  2324,  2324,  2336,  2336,  2349,  2350,
+    2353,  2354,  2355,  2356,  2357,  2358,  2361,  2367,  2367,  2376,
+    2382,  2382,  2392,  2392,  2405,  2405,  2415,  2416,  2419,  2420,
+    2421,  2422,  2423,  2424,  2425,  2426,  2427,  2428,  2429,  2430,
+    2431,  2432,  2433,  2434,  2435,  2436,  2439,  2446,  2446,  2455,
+    2455,  2464,  2470,  2470,  2479,  2485,  2491,  2491,  2500,  2501,
+    2504,  2504,  2514,  2521,  2528,  2528,  2537,  2537,  2547,  2547,
+    2557,  2557,  2569,  2569,  2581,  2581,  2591,  2592,  2596,  2597,
+    2600,  2600,  2611,  2619,  2619,  2632,  2633,  2637,  2637,  2645,
+    2646,  2649,  2650,  2651,  2652,  2653,  2654,  2655,  2658,  2664,
+    2664,  2673,  2673,  2684,  2685,  2688,  2688,  2696,  2697,  2700,
+    2701,  2702,  2703,  2704,  2707,  2707,  2716,  2722,  2728,  2734,
+    2734
   };
 
   void
@@ -5734,9 +5767,9 @@ namespace isc { namespace dhcp {
 
 #line 14 "dhcp6_parser.yy"
 } } // isc::dhcp
-#line 5738 "dhcp6_parser.cc"
+#line 5771 "dhcp6_parser.cc"
 
-#line 2723 "dhcp6_parser.yy"
+#line 2743 "dhcp6_parser.yy"
 
 
 void
index add461fa968afeef1e6bf0b0f2c36436b914df77..c9d35a06384aaf589efbafad0a75c06bcd47279b 100644 (file)
@@ -537,149 +537,151 @@ namespace isc { namespace dhcp {
     TOKEN_CALCULATE_TEE_TIMES = 307, // "calculate-tee-times"
     TOKEN_T1_PERCENT = 308,        // "t1-percent"
     TOKEN_T2_PERCENT = 309,        // "t2-percent"
-    TOKEN_DECLINE_PROBATION_PERIOD = 310, // "decline-probation-period"
-    TOKEN_SERVER_TAG = 311,        // "server-tag"
-    TOKEN_STATISTIC_DEFAULT_SAMPLE_COUNT = 312, // "statistic-default-sample-count"
-    TOKEN_STATISTIC_DEFAULT_SAMPLE_AGE = 313, // "statistic-default-sample-age"
-    TOKEN_DDNS_SEND_UPDATES = 314, // "ddns-send-updates"
-    TOKEN_DDNS_OVERRIDE_NO_UPDATE = 315, // "ddns-override-no-update"
-    TOKEN_DDNS_OVERRIDE_CLIENT_UPDATE = 316, // "ddns-override-client-update"
-    TOKEN_DDNS_REPLACE_CLIENT_NAME = 317, // "ddns-replace-client-name"
-    TOKEN_DDNS_GENERATED_PREFIX = 318, // "ddns-generated-prefix"
-    TOKEN_DDNS_QUALIFYING_SUFFIX = 319, // "ddns-qualifying-suffix"
-    TOKEN_STORE_EXTENDED_INFO = 320, // "store-extended-info"
-    TOKEN_SUBNET6 = 321,           // "subnet6"
-    TOKEN_OPTION_DEF = 322,        // "option-def"
-    TOKEN_OPTION_DATA = 323,       // "option-data"
-    TOKEN_NAME = 324,              // "name"
-    TOKEN_DATA = 325,              // "data"
-    TOKEN_CODE = 326,              // "code"
-    TOKEN_SPACE = 327,             // "space"
-    TOKEN_CSV_FORMAT = 328,        // "csv-format"
-    TOKEN_ALWAYS_SEND = 329,       // "always-send"
-    TOKEN_RECORD_TYPES = 330,      // "record-types"
-    TOKEN_ENCAPSULATE = 331,       // "encapsulate"
-    TOKEN_ARRAY = 332,             // "array"
-    TOKEN_POOLS = 333,             // "pools"
-    TOKEN_POOL = 334,              // "pool"
-    TOKEN_PD_POOLS = 335,          // "pd-pools"
-    TOKEN_PREFIX = 336,            // "prefix"
-    TOKEN_PREFIX_LEN = 337,        // "prefix-len"
-    TOKEN_EXCLUDED_PREFIX = 338,   // "excluded-prefix"
-    TOKEN_EXCLUDED_PREFIX_LEN = 339, // "excluded-prefix-len"
-    TOKEN_DELEGATED_LEN = 340,     // "delegated-len"
-    TOKEN_USER_CONTEXT = 341,      // "user-context"
-    TOKEN_COMMENT = 342,           // "comment"
-    TOKEN_SUBNET = 343,            // "subnet"
-    TOKEN_INTERFACE = 344,         // "interface"
-    TOKEN_INTERFACE_ID = 345,      // "interface-id"
-    TOKEN_ID = 346,                // "id"
-    TOKEN_RAPID_COMMIT = 347,      // "rapid-commit"
-    TOKEN_RESERVATION_MODE = 348,  // "reservation-mode"
-    TOKEN_DISABLED = 349,          // "disabled"
-    TOKEN_OUT_OF_POOL = 350,       // "out-of-pool"
-    TOKEN_GLOBAL = 351,            // "global"
-    TOKEN_ALL = 352,               // "all"
-    TOKEN_SHARED_NETWORKS = 353,   // "shared-networks"
-    TOKEN_MAC_SOURCES = 354,       // "mac-sources"
-    TOKEN_RELAY_SUPPLIED_OPTIONS = 355, // "relay-supplied-options"
-    TOKEN_HOST_RESERVATION_IDENTIFIERS = 356, // "host-reservation-identifiers"
-    TOKEN_SANITY_CHECKS = 357,     // "sanity-checks"
-    TOKEN_LEASE_CHECKS = 358,      // "lease-checks"
-    TOKEN_CLIENT_CLASSES = 359,    // "client-classes"
-    TOKEN_REQUIRE_CLIENT_CLASSES = 360, // "require-client-classes"
-    TOKEN_TEST = 361,              // "test"
-    TOKEN_ONLY_IF_REQUIRED = 362,  // "only-if-required"
-    TOKEN_CLIENT_CLASS = 363,      // "client-class"
-    TOKEN_RESERVATIONS = 364,      // "reservations"
-    TOKEN_IP_ADDRESSES = 365,      // "ip-addresses"
-    TOKEN_PREFIXES = 366,          // "prefixes"
-    TOKEN_DUID = 367,              // "duid"
-    TOKEN_HW_ADDRESS = 368,        // "hw-address"
-    TOKEN_HOSTNAME = 369,          // "hostname"
-    TOKEN_FLEX_ID = 370,           // "flex-id"
-    TOKEN_RELAY = 371,             // "relay"
-    TOKEN_IP_ADDRESS = 372,        // "ip-address"
-    TOKEN_HOOKS_LIBRARIES = 373,   // "hooks-libraries"
-    TOKEN_LIBRARY = 374,           // "library"
-    TOKEN_PARAMETERS = 375,        // "parameters"
-    TOKEN_EXPIRED_LEASES_PROCESSING = 376, // "expired-leases-processing"
-    TOKEN_RECLAIM_TIMER_WAIT_TIME = 377, // "reclaim-timer-wait-time"
-    TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 378, // "flush-reclaimed-timer-wait-time"
-    TOKEN_HOLD_RECLAIMED_TIME = 379, // "hold-reclaimed-time"
-    TOKEN_MAX_RECLAIM_LEASES = 380, // "max-reclaim-leases"
-    TOKEN_MAX_RECLAIM_TIME = 381,  // "max-reclaim-time"
-    TOKEN_UNWARNED_RECLAIM_CYCLES = 382, // "unwarned-reclaim-cycles"
-    TOKEN_SERVER_ID = 383,         // "server-id"
-    TOKEN_LLT = 384,               // "LLT"
-    TOKEN_EN = 385,                // "EN"
-    TOKEN_LL = 386,                // "LL"
-    TOKEN_IDENTIFIER = 387,        // "identifier"
-    TOKEN_HTYPE = 388,             // "htype"
-    TOKEN_TIME = 389,              // "time"
-    TOKEN_ENTERPRISE_ID = 390,     // "enterprise-id"
-    TOKEN_DHCP4O6_PORT = 391,      // "dhcp4o6-port"
-    TOKEN_DHCP_MULTI_THREADING = 392, // "multi-threading"
-    TOKEN_ENABLE_MULTI_THREADING = 393, // "enable-multi-threading"
-    TOKEN_THREAD_POOL_SIZE = 394,  // "thread-pool-size"
-    TOKEN_PACKET_QUEUE_SIZE = 395, // "packet-queue-size"
-    TOKEN_CONTROL_SOCKET = 396,    // "control-socket"
-    TOKEN_SOCKET_TYPE = 397,       // "socket-type"
-    TOKEN_SOCKET_NAME = 398,       // "socket-name"
-    TOKEN_DHCP_QUEUE_CONTROL = 399, // "dhcp-queue-control"
-    TOKEN_ENABLE_QUEUE = 400,      // "enable-queue"
-    TOKEN_QUEUE_TYPE = 401,        // "queue-type"
-    TOKEN_CAPACITY = 402,          // "capacity"
-    TOKEN_DHCP_DDNS = 403,         // "dhcp-ddns"
-    TOKEN_ENABLE_UPDATES = 404,    // "enable-updates"
-    TOKEN_QUALIFYING_SUFFIX = 405, // "qualifying-suffix"
-    TOKEN_SERVER_IP = 406,         // "server-ip"
-    TOKEN_SERVER_PORT = 407,       // "server-port"
-    TOKEN_SENDER_IP = 408,         // "sender-ip"
-    TOKEN_SENDER_PORT = 409,       // "sender-port"
-    TOKEN_MAX_QUEUE_SIZE = 410,    // "max-queue-size"
-    TOKEN_NCR_PROTOCOL = 411,      // "ncr-protocol"
-    TOKEN_NCR_FORMAT = 412,        // "ncr-format"
-    TOKEN_OVERRIDE_NO_UPDATE = 413, // "override-no-update"
-    TOKEN_OVERRIDE_CLIENT_UPDATE = 414, // "override-client-update"
-    TOKEN_REPLACE_CLIENT_NAME = 415, // "replace-client-name"
-    TOKEN_GENERATED_PREFIX = 416,  // "generated-prefix"
-    TOKEN_UDP = 417,               // "UDP"
-    TOKEN_TCP = 418,               // "TCP"
-    TOKEN_JSON = 419,              // "JSON"
-    TOKEN_WHEN_PRESENT = 420,      // "when-present"
-    TOKEN_NEVER = 421,             // "never"
-    TOKEN_ALWAYS = 422,            // "always"
-    TOKEN_WHEN_NOT_PRESENT = 423,  // "when-not-present"
-    TOKEN_HOSTNAME_CHAR_SET = 424, // "hostname-char-set"
-    TOKEN_HOSTNAME_CHAR_REPLACEMENT = 425, // "hostname-char-replacement"
-    TOKEN_LOGGERS = 426,           // "loggers"
-    TOKEN_OUTPUT_OPTIONS = 427,    // "output_options"
-    TOKEN_OUTPUT = 428,            // "output"
-    TOKEN_DEBUGLEVEL = 429,        // "debuglevel"
-    TOKEN_SEVERITY = 430,          // "severity"
-    TOKEN_FLUSH = 431,             // "flush"
-    TOKEN_MAXSIZE = 432,           // "maxsize"
-    TOKEN_MAXVER = 433,            // "maxver"
-    TOKEN_PATTERN = 434,           // "pattern"
-    TOKEN_TOPLEVEL_JSON = 435,     // TOPLEVEL_JSON
-    TOKEN_TOPLEVEL_DHCP6 = 436,    // TOPLEVEL_DHCP6
-    TOKEN_SUB_DHCP6 = 437,         // SUB_DHCP6
-    TOKEN_SUB_INTERFACES6 = 438,   // SUB_INTERFACES6
-    TOKEN_SUB_SUBNET6 = 439,       // SUB_SUBNET6
-    TOKEN_SUB_POOL6 = 440,         // SUB_POOL6
-    TOKEN_SUB_PD_POOL = 441,       // SUB_PD_POOL
-    TOKEN_SUB_RESERVATION = 442,   // SUB_RESERVATION
-    TOKEN_SUB_OPTION_DEFS = 443,   // SUB_OPTION_DEFS
-    TOKEN_SUB_OPTION_DEF = 444,    // SUB_OPTION_DEF
-    TOKEN_SUB_OPTION_DATA = 445,   // SUB_OPTION_DATA
-    TOKEN_SUB_HOOKS_LIBRARY = 446, // SUB_HOOKS_LIBRARY
-    TOKEN_SUB_DHCP_DDNS = 447,     // SUB_DHCP_DDNS
-    TOKEN_SUB_CONFIG_CONTROL = 448, // SUB_CONFIG_CONTROL
-    TOKEN_STRING = 449,            // "constant string"
-    TOKEN_INTEGER = 450,           // "integer"
-    TOKEN_FLOAT = 451,             // "floating point"
-    TOKEN_BOOLEAN = 452            // "boolean"
+    TOKEN_CACHE_THRESHOLD = 310,   // "cache-threshold"
+    TOKEN_CACHE_MAX = 311,         // "cache-max"
+    TOKEN_DECLINE_PROBATION_PERIOD = 312, // "decline-probation-period"
+    TOKEN_SERVER_TAG = 313,        // "server-tag"
+    TOKEN_STATISTIC_DEFAULT_SAMPLE_COUNT = 314, // "statistic-default-sample-count"
+    TOKEN_STATISTIC_DEFAULT_SAMPLE_AGE = 315, // "statistic-default-sample-age"
+    TOKEN_DDNS_SEND_UPDATES = 316, // "ddns-send-updates"
+    TOKEN_DDNS_OVERRIDE_NO_UPDATE = 317, // "ddns-override-no-update"
+    TOKEN_DDNS_OVERRIDE_CLIENT_UPDATE = 318, // "ddns-override-client-update"
+    TOKEN_DDNS_REPLACE_CLIENT_NAME = 319, // "ddns-replace-client-name"
+    TOKEN_DDNS_GENERATED_PREFIX = 320, // "ddns-generated-prefix"
+    TOKEN_DDNS_QUALIFYING_SUFFIX = 321, // "ddns-qualifying-suffix"
+    TOKEN_STORE_EXTENDED_INFO = 322, // "store-extended-info"
+    TOKEN_SUBNET6 = 323,           // "subnet6"
+    TOKEN_OPTION_DEF = 324,        // "option-def"
+    TOKEN_OPTION_DATA = 325,       // "option-data"
+    TOKEN_NAME = 326,              // "name"
+    TOKEN_DATA = 327,              // "data"
+    TOKEN_CODE = 328,              // "code"
+    TOKEN_SPACE = 329,             // "space"
+    TOKEN_CSV_FORMAT = 330,        // "csv-format"
+    TOKEN_ALWAYS_SEND = 331,       // "always-send"
+    TOKEN_RECORD_TYPES = 332,      // "record-types"
+    TOKEN_ENCAPSULATE = 333,       // "encapsulate"
+    TOKEN_ARRAY = 334,             // "array"
+    TOKEN_POOLS = 335,             // "pools"
+    TOKEN_POOL = 336,              // "pool"
+    TOKEN_PD_POOLS = 337,          // "pd-pools"
+    TOKEN_PREFIX = 338,            // "prefix"
+    TOKEN_PREFIX_LEN = 339,        // "prefix-len"
+    TOKEN_EXCLUDED_PREFIX = 340,   // "excluded-prefix"
+    TOKEN_EXCLUDED_PREFIX_LEN = 341, // "excluded-prefix-len"
+    TOKEN_DELEGATED_LEN = 342,     // "delegated-len"
+    TOKEN_USER_CONTEXT = 343,      // "user-context"
+    TOKEN_COMMENT = 344,           // "comment"
+    TOKEN_SUBNET = 345,            // "subnet"
+    TOKEN_INTERFACE = 346,         // "interface"
+    TOKEN_INTERFACE_ID = 347,      // "interface-id"
+    TOKEN_ID = 348,                // "id"
+    TOKEN_RAPID_COMMIT = 349,      // "rapid-commit"
+    TOKEN_RESERVATION_MODE = 350,  // "reservation-mode"
+    TOKEN_DISABLED = 351,          // "disabled"
+    TOKEN_OUT_OF_POOL = 352,       // "out-of-pool"
+    TOKEN_GLOBAL = 353,            // "global"
+    TOKEN_ALL = 354,               // "all"
+    TOKEN_SHARED_NETWORKS = 355,   // "shared-networks"
+    TOKEN_MAC_SOURCES = 356,       // "mac-sources"
+    TOKEN_RELAY_SUPPLIED_OPTIONS = 357, // "relay-supplied-options"
+    TOKEN_HOST_RESERVATION_IDENTIFIERS = 358, // "host-reservation-identifiers"
+    TOKEN_SANITY_CHECKS = 359,     // "sanity-checks"
+    TOKEN_LEASE_CHECKS = 360,      // "lease-checks"
+    TOKEN_CLIENT_CLASSES = 361,    // "client-classes"
+    TOKEN_REQUIRE_CLIENT_CLASSES = 362, // "require-client-classes"
+    TOKEN_TEST = 363,              // "test"
+    TOKEN_ONLY_IF_REQUIRED = 364,  // "only-if-required"
+    TOKEN_CLIENT_CLASS = 365,      // "client-class"
+    TOKEN_RESERVATIONS = 366,      // "reservations"
+    TOKEN_IP_ADDRESSES = 367,      // "ip-addresses"
+    TOKEN_PREFIXES = 368,          // "prefixes"
+    TOKEN_DUID = 369,              // "duid"
+    TOKEN_HW_ADDRESS = 370,        // "hw-address"
+    TOKEN_HOSTNAME = 371,          // "hostname"
+    TOKEN_FLEX_ID = 372,           // "flex-id"
+    TOKEN_RELAY = 373,             // "relay"
+    TOKEN_IP_ADDRESS = 374,        // "ip-address"
+    TOKEN_HOOKS_LIBRARIES = 375,   // "hooks-libraries"
+    TOKEN_LIBRARY = 376,           // "library"
+    TOKEN_PARAMETERS = 377,        // "parameters"
+    TOKEN_EXPIRED_LEASES_PROCESSING = 378, // "expired-leases-processing"
+    TOKEN_RECLAIM_TIMER_WAIT_TIME = 379, // "reclaim-timer-wait-time"
+    TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 380, // "flush-reclaimed-timer-wait-time"
+    TOKEN_HOLD_RECLAIMED_TIME = 381, // "hold-reclaimed-time"
+    TOKEN_MAX_RECLAIM_LEASES = 382, // "max-reclaim-leases"
+    TOKEN_MAX_RECLAIM_TIME = 383,  // "max-reclaim-time"
+    TOKEN_UNWARNED_RECLAIM_CYCLES = 384, // "unwarned-reclaim-cycles"
+    TOKEN_SERVER_ID = 385,         // "server-id"
+    TOKEN_LLT = 386,               // "LLT"
+    TOKEN_EN = 387,                // "EN"
+    TOKEN_LL = 388,                // "LL"
+    TOKEN_IDENTIFIER = 389,        // "identifier"
+    TOKEN_HTYPE = 390,             // "htype"
+    TOKEN_TIME = 391,              // "time"
+    TOKEN_ENTERPRISE_ID = 392,     // "enterprise-id"
+    TOKEN_DHCP4O6_PORT = 393,      // "dhcp4o6-port"
+    TOKEN_DHCP_MULTI_THREADING = 394, // "multi-threading"
+    TOKEN_ENABLE_MULTI_THREADING = 395, // "enable-multi-threading"
+    TOKEN_THREAD_POOL_SIZE = 396,  // "thread-pool-size"
+    TOKEN_PACKET_QUEUE_SIZE = 397, // "packet-queue-size"
+    TOKEN_CONTROL_SOCKET = 398,    // "control-socket"
+    TOKEN_SOCKET_TYPE = 399,       // "socket-type"
+    TOKEN_SOCKET_NAME = 400,       // "socket-name"
+    TOKEN_DHCP_QUEUE_CONTROL = 401, // "dhcp-queue-control"
+    TOKEN_ENABLE_QUEUE = 402,      // "enable-queue"
+    TOKEN_QUEUE_TYPE = 403,        // "queue-type"
+    TOKEN_CAPACITY = 404,          // "capacity"
+    TOKEN_DHCP_DDNS = 405,         // "dhcp-ddns"
+    TOKEN_ENABLE_UPDATES = 406,    // "enable-updates"
+    TOKEN_QUALIFYING_SUFFIX = 407, // "qualifying-suffix"
+    TOKEN_SERVER_IP = 408,         // "server-ip"
+    TOKEN_SERVER_PORT = 409,       // "server-port"
+    TOKEN_SENDER_IP = 410,         // "sender-ip"
+    TOKEN_SENDER_PORT = 411,       // "sender-port"
+    TOKEN_MAX_QUEUE_SIZE = 412,    // "max-queue-size"
+    TOKEN_NCR_PROTOCOL = 413,      // "ncr-protocol"
+    TOKEN_NCR_FORMAT = 414,        // "ncr-format"
+    TOKEN_OVERRIDE_NO_UPDATE = 415, // "override-no-update"
+    TOKEN_OVERRIDE_CLIENT_UPDATE = 416, // "override-client-update"
+    TOKEN_REPLACE_CLIENT_NAME = 417, // "replace-client-name"
+    TOKEN_GENERATED_PREFIX = 418,  // "generated-prefix"
+    TOKEN_UDP = 419,               // "UDP"
+    TOKEN_TCP = 420,               // "TCP"
+    TOKEN_JSON = 421,              // "JSON"
+    TOKEN_WHEN_PRESENT = 422,      // "when-present"
+    TOKEN_NEVER = 423,             // "never"
+    TOKEN_ALWAYS = 424,            // "always"
+    TOKEN_WHEN_NOT_PRESENT = 425,  // "when-not-present"
+    TOKEN_HOSTNAME_CHAR_SET = 426, // "hostname-char-set"
+    TOKEN_HOSTNAME_CHAR_REPLACEMENT = 427, // "hostname-char-replacement"
+    TOKEN_LOGGERS = 428,           // "loggers"
+    TOKEN_OUTPUT_OPTIONS = 429,    // "output_options"
+    TOKEN_OUTPUT = 430,            // "output"
+    TOKEN_DEBUGLEVEL = 431,        // "debuglevel"
+    TOKEN_SEVERITY = 432,          // "severity"
+    TOKEN_FLUSH = 433,             // "flush"
+    TOKEN_MAXSIZE = 434,           // "maxsize"
+    TOKEN_MAXVER = 435,            // "maxver"
+    TOKEN_PATTERN = 436,           // "pattern"
+    TOKEN_TOPLEVEL_JSON = 437,     // TOPLEVEL_JSON
+    TOKEN_TOPLEVEL_DHCP6 = 438,    // TOPLEVEL_DHCP6
+    TOKEN_SUB_DHCP6 = 439,         // SUB_DHCP6
+    TOKEN_SUB_INTERFACES6 = 440,   // SUB_INTERFACES6
+    TOKEN_SUB_SUBNET6 = 441,       // SUB_SUBNET6
+    TOKEN_SUB_POOL6 = 442,         // SUB_POOL6
+    TOKEN_SUB_PD_POOL = 443,       // SUB_PD_POOL
+    TOKEN_SUB_RESERVATION = 444,   // SUB_RESERVATION
+    TOKEN_SUB_OPTION_DEFS = 445,   // SUB_OPTION_DEFS
+    TOKEN_SUB_OPTION_DEF = 446,    // SUB_OPTION_DEF
+    TOKEN_SUB_OPTION_DATA = 447,   // SUB_OPTION_DATA
+    TOKEN_SUB_HOOKS_LIBRARY = 448, // SUB_HOOKS_LIBRARY
+    TOKEN_SUB_DHCP_DDNS = 449,     // SUB_DHCP_DDNS
+    TOKEN_SUB_CONFIG_CONTROL = 450, // SUB_CONFIG_CONTROL
+    TOKEN_STRING = 451,            // "constant string"
+    TOKEN_INTEGER = 452,           // "integer"
+    TOKEN_FLOAT = 453,             // "floating point"
+    TOKEN_BOOLEAN = 454            // "boolean"
       };
       /// Backward compatibility alias (Bison 3.6).
       typedef token_kind_type yytokentype;
@@ -696,7 +698,7 @@ namespace isc { namespace dhcp {
     {
       enum symbol_kind_type
       {
-        YYNTOKENS = 198, ///< Number of tokens.
+        YYNTOKENS = 200, ///< Number of tokens.
         S_YYEMPTY = -2,
         S_YYEOF = 0,                             // "end of file"
         S_YYerror = 1,                           // error
@@ -753,571 +755,575 @@ namespace isc { namespace dhcp {
         S_CALCULATE_TEE_TIMES = 52,              // "calculate-tee-times"
         S_T1_PERCENT = 53,                       // "t1-percent"
         S_T2_PERCENT = 54,                       // "t2-percent"
-        S_DECLINE_PROBATION_PERIOD = 55,         // "decline-probation-period"
-        S_SERVER_TAG = 56,                       // "server-tag"
-        S_STATISTIC_DEFAULT_SAMPLE_COUNT = 57,   // "statistic-default-sample-count"
-        S_STATISTIC_DEFAULT_SAMPLE_AGE = 58,     // "statistic-default-sample-age"
-        S_DDNS_SEND_UPDATES = 59,                // "ddns-send-updates"
-        S_DDNS_OVERRIDE_NO_UPDATE = 60,          // "ddns-override-no-update"
-        S_DDNS_OVERRIDE_CLIENT_UPDATE = 61,      // "ddns-override-client-update"
-        S_DDNS_REPLACE_CLIENT_NAME = 62,         // "ddns-replace-client-name"
-        S_DDNS_GENERATED_PREFIX = 63,            // "ddns-generated-prefix"
-        S_DDNS_QUALIFYING_SUFFIX = 64,           // "ddns-qualifying-suffix"
-        S_STORE_EXTENDED_INFO = 65,              // "store-extended-info"
-        S_SUBNET6 = 66,                          // "subnet6"
-        S_OPTION_DEF = 67,                       // "option-def"
-        S_OPTION_DATA = 68,                      // "option-data"
-        S_NAME = 69,                             // "name"
-        S_DATA = 70,                             // "data"
-        S_CODE = 71,                             // "code"
-        S_SPACE = 72,                            // "space"
-        S_CSV_FORMAT = 73,                       // "csv-format"
-        S_ALWAYS_SEND = 74,                      // "always-send"
-        S_RECORD_TYPES = 75,                     // "record-types"
-        S_ENCAPSULATE = 76,                      // "encapsulate"
-        S_ARRAY = 77,                            // "array"
-        S_POOLS = 78,                            // "pools"
-        S_POOL = 79,                             // "pool"
-        S_PD_POOLS = 80,                         // "pd-pools"
-        S_PREFIX = 81,                           // "prefix"
-        S_PREFIX_LEN = 82,                       // "prefix-len"
-        S_EXCLUDED_PREFIX = 83,                  // "excluded-prefix"
-        S_EXCLUDED_PREFIX_LEN = 84,              // "excluded-prefix-len"
-        S_DELEGATED_LEN = 85,                    // "delegated-len"
-        S_USER_CONTEXT = 86,                     // "user-context"
-        S_COMMENT = 87,                          // "comment"
-        S_SUBNET = 88,                           // "subnet"
-        S_INTERFACE = 89,                        // "interface"
-        S_INTERFACE_ID = 90,                     // "interface-id"
-        S_ID = 91,                               // "id"
-        S_RAPID_COMMIT = 92,                     // "rapid-commit"
-        S_RESERVATION_MODE = 93,                 // "reservation-mode"
-        S_DISABLED = 94,                         // "disabled"
-        S_OUT_OF_POOL = 95,                      // "out-of-pool"
-        S_GLOBAL = 96,                           // "global"
-        S_ALL = 97,                              // "all"
-        S_SHARED_NETWORKS = 98,                  // "shared-networks"
-        S_MAC_SOURCES = 99,                      // "mac-sources"
-        S_RELAY_SUPPLIED_OPTIONS = 100,          // "relay-supplied-options"
-        S_HOST_RESERVATION_IDENTIFIERS = 101,    // "host-reservation-identifiers"
-        S_SANITY_CHECKS = 102,                   // "sanity-checks"
-        S_LEASE_CHECKS = 103,                    // "lease-checks"
-        S_CLIENT_CLASSES = 104,                  // "client-classes"
-        S_REQUIRE_CLIENT_CLASSES = 105,          // "require-client-classes"
-        S_TEST = 106,                            // "test"
-        S_ONLY_IF_REQUIRED = 107,                // "only-if-required"
-        S_CLIENT_CLASS = 108,                    // "client-class"
-        S_RESERVATIONS = 109,                    // "reservations"
-        S_IP_ADDRESSES = 110,                    // "ip-addresses"
-        S_PREFIXES = 111,                        // "prefixes"
-        S_DUID = 112,                            // "duid"
-        S_HW_ADDRESS = 113,                      // "hw-address"
-        S_HOSTNAME = 114,                        // "hostname"
-        S_FLEX_ID = 115,                         // "flex-id"
-        S_RELAY = 116,                           // "relay"
-        S_IP_ADDRESS = 117,                      // "ip-address"
-        S_HOOKS_LIBRARIES = 118,                 // "hooks-libraries"
-        S_LIBRARY = 119,                         // "library"
-        S_PARAMETERS = 120,                      // "parameters"
-        S_EXPIRED_LEASES_PROCESSING = 121,       // "expired-leases-processing"
-        S_RECLAIM_TIMER_WAIT_TIME = 122,         // "reclaim-timer-wait-time"
-        S_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 123, // "flush-reclaimed-timer-wait-time"
-        S_HOLD_RECLAIMED_TIME = 124,             // "hold-reclaimed-time"
-        S_MAX_RECLAIM_LEASES = 125,              // "max-reclaim-leases"
-        S_MAX_RECLAIM_TIME = 126,                // "max-reclaim-time"
-        S_UNWARNED_RECLAIM_CYCLES = 127,         // "unwarned-reclaim-cycles"
-        S_SERVER_ID = 128,                       // "server-id"
-        S_LLT = 129,                             // "LLT"
-        S_EN = 130,                              // "EN"
-        S_LL = 131,                              // "LL"
-        S_IDENTIFIER = 132,                      // "identifier"
-        S_HTYPE = 133,                           // "htype"
-        S_TIME = 134,                            // "time"
-        S_ENTERPRISE_ID = 135,                   // "enterprise-id"
-        S_DHCP4O6_PORT = 136,                    // "dhcp4o6-port"
-        S_DHCP_MULTI_THREADING = 137,            // "multi-threading"
-        S_ENABLE_MULTI_THREADING = 138,          // "enable-multi-threading"
-        S_THREAD_POOL_SIZE = 139,                // "thread-pool-size"
-        S_PACKET_QUEUE_SIZE = 140,               // "packet-queue-size"
-        S_CONTROL_SOCKET = 141,                  // "control-socket"
-        S_SOCKET_TYPE = 142,                     // "socket-type"
-        S_SOCKET_NAME = 143,                     // "socket-name"
-        S_DHCP_QUEUE_CONTROL = 144,              // "dhcp-queue-control"
-        S_ENABLE_QUEUE = 145,                    // "enable-queue"
-        S_QUEUE_TYPE = 146,                      // "queue-type"
-        S_CAPACITY = 147,                        // "capacity"
-        S_DHCP_DDNS = 148,                       // "dhcp-ddns"
-        S_ENABLE_UPDATES = 149,                  // "enable-updates"
-        S_QUALIFYING_SUFFIX = 150,               // "qualifying-suffix"
-        S_SERVER_IP = 151,                       // "server-ip"
-        S_SERVER_PORT = 152,                     // "server-port"
-        S_SENDER_IP = 153,                       // "sender-ip"
-        S_SENDER_PORT = 154,                     // "sender-port"
-        S_MAX_QUEUE_SIZE = 155,                  // "max-queue-size"
-        S_NCR_PROTOCOL = 156,                    // "ncr-protocol"
-        S_NCR_FORMAT = 157,                      // "ncr-format"
-        S_OVERRIDE_NO_UPDATE = 158,              // "override-no-update"
-        S_OVERRIDE_CLIENT_UPDATE = 159,          // "override-client-update"
-        S_REPLACE_CLIENT_NAME = 160,             // "replace-client-name"
-        S_GENERATED_PREFIX = 161,                // "generated-prefix"
-        S_UDP = 162,                             // "UDP"
-        S_TCP = 163,                             // "TCP"
-        S_JSON = 164,                            // "JSON"
-        S_WHEN_PRESENT = 165,                    // "when-present"
-        S_NEVER = 166,                           // "never"
-        S_ALWAYS = 167,                          // "always"
-        S_WHEN_NOT_PRESENT = 168,                // "when-not-present"
-        S_HOSTNAME_CHAR_SET = 169,               // "hostname-char-set"
-        S_HOSTNAME_CHAR_REPLACEMENT = 170,       // "hostname-char-replacement"
-        S_LOGGERS = 171,                         // "loggers"
-        S_OUTPUT_OPTIONS = 172,                  // "output_options"
-        S_OUTPUT = 173,                          // "output"
-        S_DEBUGLEVEL = 174,                      // "debuglevel"
-        S_SEVERITY = 175,                        // "severity"
-        S_FLUSH = 176,                           // "flush"
-        S_MAXSIZE = 177,                         // "maxsize"
-        S_MAXVER = 178,                          // "maxver"
-        S_PATTERN = 179,                         // "pattern"
-        S_TOPLEVEL_JSON = 180,                   // TOPLEVEL_JSON
-        S_TOPLEVEL_DHCP6 = 181,                  // TOPLEVEL_DHCP6
-        S_SUB_DHCP6 = 182,                       // SUB_DHCP6
-        S_SUB_INTERFACES6 = 183,                 // SUB_INTERFACES6
-        S_SUB_SUBNET6 = 184,                     // SUB_SUBNET6
-        S_SUB_POOL6 = 185,                       // SUB_POOL6
-        S_SUB_PD_POOL = 186,                     // SUB_PD_POOL
-        S_SUB_RESERVATION = 187,                 // SUB_RESERVATION
-        S_SUB_OPTION_DEFS = 188,                 // SUB_OPTION_DEFS
-        S_SUB_OPTION_DEF = 189,                  // SUB_OPTION_DEF
-        S_SUB_OPTION_DATA = 190,                 // SUB_OPTION_DATA
-        S_SUB_HOOKS_LIBRARY = 191,               // SUB_HOOKS_LIBRARY
-        S_SUB_DHCP_DDNS = 192,                   // SUB_DHCP_DDNS
-        S_SUB_CONFIG_CONTROL = 193,              // SUB_CONFIG_CONTROL
-        S_STRING = 194,                          // "constant string"
-        S_INTEGER = 195,                         // "integer"
-        S_FLOAT = 196,                           // "floating point"
-        S_BOOLEAN = 197,                         // "boolean"
-        S_YYACCEPT = 198,                        // $accept
-        S_start = 199,                           // start
-        S_200_1 = 200,                           // $@1
-        S_201_2 = 201,                           // $@2
-        S_202_3 = 202,                           // $@3
-        S_203_4 = 203,                           // $@4
-        S_204_5 = 204,                           // $@5
-        S_205_6 = 205,                           // $@6
-        S_206_7 = 206,                           // $@7
-        S_207_8 = 207,                           // $@8
-        S_208_9 = 208,                           // $@9
-        S_209_10 = 209,                          // $@10
-        S_210_11 = 210,                          // $@11
-        S_211_12 = 211,                          // $@12
-        S_212_13 = 212,                          // $@13
-        S_213_14 = 213,                          // $@14
-        S_value = 214,                           // value
-        S_sub_json = 215,                        // sub_json
-        S_map2 = 216,                            // map2
-        S_217_15 = 217,                          // $@15
-        S_map_value = 218,                       // map_value
-        S_map_content = 219,                     // map_content
-        S_not_empty_map = 220,                   // not_empty_map
-        S_list_generic = 221,                    // list_generic
-        S_222_16 = 222,                          // $@16
-        S_list_content = 223,                    // list_content
-        S_not_empty_list = 224,                  // not_empty_list
-        S_list_strings = 225,                    // list_strings
-        S_226_17 = 226,                          // $@17
-        S_list_strings_content = 227,            // list_strings_content
-        S_not_empty_list_strings = 228,          // not_empty_list_strings
-        S_unknown_map_entry = 229,               // unknown_map_entry
-        S_syntax_map = 230,                      // syntax_map
-        S_231_18 = 231,                          // $@18
-        S_global_object = 232,                   // global_object
-        S_233_19 = 233,                          // $@19
-        S_sub_dhcp6 = 234,                       // sub_dhcp6
-        S_235_20 = 235,                          // $@20
-        S_global_params = 236,                   // global_params
-        S_global_param = 237,                    // global_param
-        S_data_directory = 238,                  // data_directory
-        S_239_21 = 239,                          // $@21
-        S_preferred_lifetime = 240,              // preferred_lifetime
-        S_min_preferred_lifetime = 241,          // min_preferred_lifetime
-        S_max_preferred_lifetime = 242,          // max_preferred_lifetime
-        S_valid_lifetime = 243,                  // valid_lifetime
-        S_min_valid_lifetime = 244,              // min_valid_lifetime
-        S_max_valid_lifetime = 245,              // max_valid_lifetime
-        S_renew_timer = 246,                     // renew_timer
-        S_rebind_timer = 247,                    // rebind_timer
-        S_calculate_tee_times = 248,             // calculate_tee_times
-        S_t1_percent = 249,                      // t1_percent
-        S_t2_percent = 250,                      // t2_percent
-        S_decline_probation_period = 251,        // decline_probation_period
-        S_ddns_send_updates = 252,               // ddns_send_updates
-        S_ddns_override_no_update = 253,         // ddns_override_no_update
-        S_ddns_override_client_update = 254,     // ddns_override_client_update
-        S_ddns_replace_client_name = 255,        // ddns_replace_client_name
-        S_256_22 = 256,                          // $@22
-        S_ddns_replace_client_name_value = 257,  // ddns_replace_client_name_value
-        S_ddns_generated_prefix = 258,           // ddns_generated_prefix
-        S_259_23 = 259,                          // $@23
-        S_ddns_qualifying_suffix = 260,          // ddns_qualifying_suffix
-        S_261_24 = 261,                          // $@24
-        S_hostname_char_set = 262,               // hostname_char_set
-        S_263_25 = 263,                          // $@25
-        S_hostname_char_replacement = 264,       // hostname_char_replacement
-        S_265_26 = 265,                          // $@26
-        S_store_extended_info = 266,             // store_extended_info
-        S_statistic_default_sample_count = 267,  // statistic_default_sample_count
-        S_statistic_default_sample_age = 268,    // statistic_default_sample_age
-        S_server_tag = 269,                      // server_tag
-        S_270_27 = 270,                          // $@27
-        S_interfaces_config = 271,               // interfaces_config
-        S_272_28 = 272,                          // $@28
-        S_sub_interfaces6 = 273,                 // sub_interfaces6
-        S_274_29 = 274,                          // $@29
-        S_interfaces_config_params = 275,        // interfaces_config_params
-        S_interfaces_config_param = 276,         // interfaces_config_param
-        S_interfaces_list = 277,                 // interfaces_list
-        S_278_30 = 278,                          // $@30
-        S_re_detect = 279,                       // re_detect
-        S_lease_database = 280,                  // lease_database
-        S_281_31 = 281,                          // $@31
-        S_hosts_database = 282,                  // hosts_database
-        S_283_32 = 283,                          // $@32
-        S_hosts_databases = 284,                 // hosts_databases
-        S_285_33 = 285,                          // $@33
-        S_database_list = 286,                   // database_list
-        S_not_empty_database_list = 287,         // not_empty_database_list
-        S_database = 288,                        // database
-        S_289_34 = 289,                          // $@34
-        S_database_map_params = 290,             // database_map_params
-        S_database_map_param = 291,              // database_map_param
-        S_database_type = 292,                   // database_type
-        S_293_35 = 293,                          // $@35
-        S_db_type = 294,                         // db_type
-        S_user = 295,                            // user
-        S_296_36 = 296,                          // $@36
-        S_password = 297,                        // password
-        S_298_37 = 298,                          // $@37
-        S_host = 299,                            // host
-        S_300_38 = 300,                          // $@38
-        S_port = 301,                            // port
-        S_name = 302,                            // name
-        S_303_39 = 303,                          // $@39
-        S_persist = 304,                         // persist
-        S_lfc_interval = 305,                    // lfc_interval
-        S_readonly = 306,                        // readonly
-        S_connect_timeout = 307,                 // connect_timeout
-        S_reconnect_wait_time = 308,             // reconnect_wait_time
-        S_max_row_errors = 309,                  // max_row_errors
-        S_request_timeout = 310,                 // request_timeout
-        S_tcp_keepalive = 311,                   // tcp_keepalive
-        S_tcp_nodelay = 312,                     // tcp_nodelay
-        S_contact_points = 313,                  // contact_points
-        S_314_40 = 314,                          // $@40
-        S_max_reconnect_tries = 315,             // max_reconnect_tries
-        S_keyspace = 316,                        // keyspace
-        S_317_41 = 317,                          // $@41
-        S_consistency = 318,                     // consistency
-        S_319_42 = 319,                          // $@42
-        S_serial_consistency = 320,              // serial_consistency
-        S_321_43 = 321,                          // $@43
-        S_sanity_checks = 322,                   // sanity_checks
-        S_323_44 = 323,                          // $@44
-        S_sanity_checks_params = 324,            // sanity_checks_params
-        S_sanity_checks_param = 325,             // sanity_checks_param
-        S_lease_checks = 326,                    // lease_checks
-        S_327_45 = 327,                          // $@45
-        S_mac_sources = 328,                     // mac_sources
-        S_329_46 = 329,                          // $@46
-        S_mac_sources_list = 330,                // mac_sources_list
-        S_mac_sources_value = 331,               // mac_sources_value
-        S_duid_id = 332,                         // duid_id
-        S_string_id = 333,                       // string_id
-        S_host_reservation_identifiers = 334,    // host_reservation_identifiers
-        S_335_47 = 335,                          // $@47
-        S_host_reservation_identifiers_list = 336, // host_reservation_identifiers_list
-        S_host_reservation_identifier = 337,     // host_reservation_identifier
-        S_hw_address_id = 338,                   // hw_address_id
-        S_flex_id = 339,                         // flex_id
-        S_relay_supplied_options = 340,          // relay_supplied_options
-        S_341_48 = 341,                          // $@48
-        S_dhcp_multi_threading = 342,            // dhcp_multi_threading
-        S_343_49 = 343,                          // $@49
-        S_multi_threading_params = 344,          // multi_threading_params
-        S_multi_threading_param = 345,           // multi_threading_param
-        S_enable_multi_threading = 346,          // enable_multi_threading
-        S_thread_pool_size = 347,                // thread_pool_size
-        S_packet_queue_size = 348,               // packet_queue_size
-        S_hooks_libraries = 349,                 // hooks_libraries
-        S_350_50 = 350,                          // $@50
-        S_hooks_libraries_list = 351,            // hooks_libraries_list
-        S_not_empty_hooks_libraries_list = 352,  // not_empty_hooks_libraries_list
-        S_hooks_library = 353,                   // hooks_library
-        S_354_51 = 354,                          // $@51
-        S_sub_hooks_library = 355,               // sub_hooks_library
-        S_356_52 = 356,                          // $@52
-        S_hooks_params = 357,                    // hooks_params
-        S_hooks_param = 358,                     // hooks_param
-        S_library = 359,                         // library
-        S_360_53 = 360,                          // $@53
-        S_parameters = 361,                      // parameters
-        S_362_54 = 362,                          // $@54
-        S_expired_leases_processing = 363,       // expired_leases_processing
-        S_364_55 = 364,                          // $@55
-        S_expired_leases_params = 365,           // expired_leases_params
-        S_expired_leases_param = 366,            // expired_leases_param
-        S_reclaim_timer_wait_time = 367,         // reclaim_timer_wait_time
-        S_flush_reclaimed_timer_wait_time = 368, // flush_reclaimed_timer_wait_time
-        S_hold_reclaimed_time = 369,             // hold_reclaimed_time
-        S_max_reclaim_leases = 370,              // max_reclaim_leases
-        S_max_reclaim_time = 371,                // max_reclaim_time
-        S_unwarned_reclaim_cycles = 372,         // unwarned_reclaim_cycles
-        S_subnet6_list = 373,                    // subnet6_list
-        S_374_56 = 374,                          // $@56
-        S_subnet6_list_content = 375,            // subnet6_list_content
-        S_not_empty_subnet6_list = 376,          // not_empty_subnet6_list
-        S_subnet6 = 377,                         // subnet6
-        S_378_57 = 378,                          // $@57
-        S_sub_subnet6 = 379,                     // sub_subnet6
-        S_380_58 = 380,                          // $@58
-        S_subnet6_params = 381,                  // subnet6_params
-        S_subnet6_param = 382,                   // subnet6_param
-        S_subnet = 383,                          // subnet
-        S_384_59 = 384,                          // $@59
-        S_interface = 385,                       // interface
-        S_386_60 = 386,                          // $@60
-        S_interface_id = 387,                    // interface_id
-        S_388_61 = 388,                          // $@61
-        S_client_class = 389,                    // client_class
-        S_390_62 = 390,                          // $@62
-        S_require_client_classes = 391,          // require_client_classes
-        S_392_63 = 392,                          // $@63
-        S_reservation_mode = 393,                // reservation_mode
-        S_394_64 = 394,                          // $@64
-        S_hr_mode = 395,                         // hr_mode
-        S_id = 396,                              // id
-        S_rapid_commit = 397,                    // rapid_commit
-        S_shared_networks = 398,                 // shared_networks
-        S_399_65 = 399,                          // $@65
-        S_shared_networks_content = 400,         // shared_networks_content
-        S_shared_networks_list = 401,            // shared_networks_list
-        S_shared_network = 402,                  // shared_network
-        S_403_66 = 403,                          // $@66
-        S_shared_network_params = 404,           // shared_network_params
-        S_shared_network_param = 405,            // shared_network_param
-        S_option_def_list = 406,                 // option_def_list
-        S_407_67 = 407,                          // $@67
-        S_sub_option_def_list = 408,             // sub_option_def_list
-        S_409_68 = 409,                          // $@68
-        S_option_def_list_content = 410,         // option_def_list_content
-        S_not_empty_option_def_list = 411,       // not_empty_option_def_list
-        S_option_def_entry = 412,                // option_def_entry
-        S_413_69 = 413,                          // $@69
-        S_sub_option_def = 414,                  // sub_option_def
-        S_415_70 = 415,                          // $@70
-        S_option_def_params = 416,               // option_def_params
-        S_not_empty_option_def_params = 417,     // not_empty_option_def_params
-        S_option_def_param = 418,                // option_def_param
-        S_option_def_name = 419,                 // option_def_name
-        S_code = 420,                            // code
-        S_option_def_code = 421,                 // option_def_code
-        S_option_def_type = 422,                 // option_def_type
-        S_423_71 = 423,                          // $@71
-        S_option_def_record_types = 424,         // option_def_record_types
-        S_425_72 = 425,                          // $@72
-        S_space = 426,                           // space
-        S_427_73 = 427,                          // $@73
-        S_option_def_space = 428,                // option_def_space
-        S_option_def_encapsulate = 429,          // option_def_encapsulate
-        S_430_74 = 430,                          // $@74
-        S_option_def_array = 431,                // option_def_array
-        S_option_data_list = 432,                // option_data_list
-        S_433_75 = 433,                          // $@75
-        S_option_data_list_content = 434,        // option_data_list_content
-        S_not_empty_option_data_list = 435,      // not_empty_option_data_list
-        S_option_data_entry = 436,               // option_data_entry
-        S_437_76 = 437,                          // $@76
-        S_sub_option_data = 438,                 // sub_option_data
-        S_439_77 = 439,                          // $@77
-        S_option_data_params = 440,              // option_data_params
-        S_not_empty_option_data_params = 441,    // not_empty_option_data_params
-        S_option_data_param = 442,               // option_data_param
-        S_option_data_name = 443,                // option_data_name
-        S_option_data_data = 444,                // option_data_data
-        S_445_78 = 445,                          // $@78
-        S_option_data_code = 446,                // option_data_code
-        S_option_data_space = 447,               // option_data_space
-        S_option_data_csv_format = 448,          // option_data_csv_format
-        S_option_data_always_send = 449,         // option_data_always_send
-        S_pools_list = 450,                      // pools_list
-        S_451_79 = 451,                          // $@79
-        S_pools_list_content = 452,              // pools_list_content
-        S_not_empty_pools_list = 453,            // not_empty_pools_list
-        S_pool_list_entry = 454,                 // pool_list_entry
-        S_455_80 = 455,                          // $@80
-        S_sub_pool6 = 456,                       // sub_pool6
-        S_457_81 = 457,                          // $@81
-        S_pool_params = 458,                     // pool_params
-        S_pool_param = 459,                      // pool_param
-        S_pool_entry = 460,                      // pool_entry
-        S_461_82 = 461,                          // $@82
-        S_user_context = 462,                    // user_context
-        S_463_83 = 463,                          // $@83
-        S_comment = 464,                         // comment
-        S_465_84 = 465,                          // $@84
-        S_pd_pools_list = 466,                   // pd_pools_list
-        S_467_85 = 467,                          // $@85
-        S_pd_pools_list_content = 468,           // pd_pools_list_content
-        S_not_empty_pd_pools_list = 469,         // not_empty_pd_pools_list
-        S_pd_pool_entry = 470,                   // pd_pool_entry
-        S_471_86 = 471,                          // $@86
-        S_sub_pd_pool = 472,                     // sub_pd_pool
-        S_473_87 = 473,                          // $@87
-        S_pd_pool_params = 474,                  // pd_pool_params
-        S_pd_pool_param = 475,                   // pd_pool_param
-        S_pd_prefix = 476,                       // pd_prefix
-        S_477_88 = 477,                          // $@88
-        S_pd_prefix_len = 478,                   // pd_prefix_len
-        S_excluded_prefix = 479,                 // excluded_prefix
-        S_480_89 = 480,                          // $@89
-        S_excluded_prefix_len = 481,             // excluded_prefix_len
-        S_pd_delegated_len = 482,                // pd_delegated_len
-        S_reservations = 483,                    // reservations
-        S_484_90 = 484,                          // $@90
-        S_reservations_list = 485,               // reservations_list
-        S_not_empty_reservations_list = 486,     // not_empty_reservations_list
-        S_reservation = 487,                     // reservation
-        S_488_91 = 488,                          // $@91
-        S_sub_reservation = 489,                 // sub_reservation
-        S_490_92 = 490,                          // $@92
-        S_reservation_params = 491,              // reservation_params
-        S_not_empty_reservation_params = 492,    // not_empty_reservation_params
-        S_reservation_param = 493,               // reservation_param
-        S_ip_addresses = 494,                    // ip_addresses
-        S_495_93 = 495,                          // $@93
-        S_prefixes = 496,                        // prefixes
-        S_497_94 = 497,                          // $@94
-        S_duid = 498,                            // duid
-        S_499_95 = 499,                          // $@95
-        S_hw_address = 500,                      // hw_address
-        S_501_96 = 501,                          // $@96
-        S_hostname = 502,                        // hostname
-        S_503_97 = 503,                          // $@97
-        S_flex_id_value = 504,                   // flex_id_value
-        S_505_98 = 505,                          // $@98
-        S_reservation_client_classes = 506,      // reservation_client_classes
-        S_507_99 = 507,                          // $@99
-        S_relay = 508,                           // relay
-        S_509_100 = 509,                         // $@100
-        S_relay_map = 510,                       // relay_map
-        S_ip_address = 511,                      // ip_address
-        S_512_101 = 512,                         // $@101
-        S_client_classes = 513,                  // client_classes
-        S_514_102 = 514,                         // $@102
-        S_client_classes_list = 515,             // client_classes_list
-        S_client_class_entry = 516,              // client_class_entry
-        S_517_103 = 517,                         // $@103
-        S_client_class_params = 518,             // client_class_params
-        S_not_empty_client_class_params = 519,   // not_empty_client_class_params
-        S_client_class_param = 520,              // client_class_param
-        S_client_class_name = 521,               // client_class_name
-        S_client_class_test = 522,               // client_class_test
-        S_523_104 = 523,                         // $@104
-        S_only_if_required = 524,                // only_if_required
-        S_server_id = 525,                       // server_id
-        S_526_105 = 526,                         // $@105
-        S_server_id_params = 527,                // server_id_params
-        S_server_id_param = 528,                 // server_id_param
-        S_server_id_type = 529,                  // server_id_type
-        S_530_106 = 530,                         // $@106
-        S_duid_type = 531,                       // duid_type
-        S_htype = 532,                           // htype
-        S_identifier = 533,                      // identifier
-        S_534_107 = 534,                         // $@107
-        S_time = 535,                            // time
-        S_enterprise_id = 536,                   // enterprise_id
-        S_dhcp4o6_port = 537,                    // dhcp4o6_port
-        S_control_socket = 538,                  // control_socket
-        S_539_108 = 539,                         // $@108
-        S_control_socket_params = 540,           // control_socket_params
-        S_control_socket_param = 541,            // control_socket_param
-        S_socket_type = 542,                     // socket_type
-        S_543_109 = 543,                         // $@109
-        S_socket_name = 544,                     // socket_name
-        S_545_110 = 545,                         // $@110
-        S_dhcp_queue_control = 546,              // dhcp_queue_control
-        S_547_111 = 547,                         // $@111
-        S_queue_control_params = 548,            // queue_control_params
-        S_queue_control_param = 549,             // queue_control_param
-        S_enable_queue = 550,                    // enable_queue
-        S_queue_type = 551,                      // queue_type
-        S_552_112 = 552,                         // $@112
-        S_capacity = 553,                        // capacity
-        S_arbitrary_map_entry = 554,             // arbitrary_map_entry
-        S_555_113 = 555,                         // $@113
-        S_dhcp_ddns = 556,                       // dhcp_ddns
-        S_557_114 = 557,                         // $@114
-        S_sub_dhcp_ddns = 558,                   // sub_dhcp_ddns
-        S_559_115 = 559,                         // $@115
-        S_dhcp_ddns_params = 560,                // dhcp_ddns_params
-        S_dhcp_ddns_param = 561,                 // dhcp_ddns_param
-        S_enable_updates = 562,                  // enable_updates
-        S_dep_qualifying_suffix = 563,           // dep_qualifying_suffix
-        S_564_116 = 564,                         // $@116
-        S_server_ip = 565,                       // server_ip
-        S_566_117 = 566,                         // $@117
-        S_server_port = 567,                     // server_port
-        S_sender_ip = 568,                       // sender_ip
-        S_569_118 = 569,                         // $@118
-        S_sender_port = 570,                     // sender_port
-        S_max_queue_size = 571,                  // max_queue_size
-        S_ncr_protocol = 572,                    // ncr_protocol
-        S_573_119 = 573,                         // $@119
-        S_ncr_protocol_value = 574,              // ncr_protocol_value
-        S_ncr_format = 575,                      // ncr_format
-        S_576_120 = 576,                         // $@120
-        S_dep_override_no_update = 577,          // dep_override_no_update
-        S_dep_override_client_update = 578,      // dep_override_client_update
-        S_dep_replace_client_name = 579,         // dep_replace_client_name
-        S_580_121 = 580,                         // $@121
-        S_dep_generated_prefix = 581,            // dep_generated_prefix
-        S_582_122 = 582,                         // $@122
-        S_dep_hostname_char_set = 583,           // dep_hostname_char_set
-        S_584_123 = 584,                         // $@123
-        S_dep_hostname_char_replacement = 585,   // dep_hostname_char_replacement
-        S_586_124 = 586,                         // $@124
-        S_config_control = 587,                  // config_control
-        S_588_125 = 588,                         // $@125
-        S_sub_config_control = 589,              // sub_config_control
-        S_590_126 = 590,                         // $@126
-        S_config_control_params = 591,           // config_control_params
-        S_config_control_param = 592,            // config_control_param
-        S_config_databases = 593,                // config_databases
-        S_594_127 = 594,                         // $@127
-        S_config_fetch_wait_time = 595,          // config_fetch_wait_time
-        S_loggers = 596,                         // loggers
-        S_597_128 = 597,                         // $@128
-        S_loggers_entries = 598,                 // loggers_entries
-        S_logger_entry = 599,                    // logger_entry
-        S_600_129 = 600,                         // $@129
-        S_logger_params = 601,                   // logger_params
-        S_logger_param = 602,                    // logger_param
-        S_debuglevel = 603,                      // debuglevel
-        S_severity = 604,                        // severity
-        S_605_130 = 605,                         // $@130
-        S_output_options_list = 606,             // output_options_list
-        S_607_131 = 607,                         // $@131
-        S_output_options_list_content = 608,     // output_options_list_content
-        S_output_entry = 609,                    // output_entry
-        S_610_132 = 610,                         // $@132
-        S_output_params_list = 611,              // output_params_list
-        S_output_params = 612,                   // output_params
-        S_output = 613,                          // output
-        S_614_133 = 614,                         // $@133
-        S_flush = 615,                           // flush
-        S_maxsize = 616,                         // maxsize
-        S_maxver = 617,                          // maxver
-        S_pattern = 618,                         // pattern
-        S_619_134 = 619                          // $@134
+        S_CACHE_THRESHOLD = 55,                  // "cache-threshold"
+        S_CACHE_MAX = 56,                        // "cache-max"
+        S_DECLINE_PROBATION_PERIOD = 57,         // "decline-probation-period"
+        S_SERVER_TAG = 58,                       // "server-tag"
+        S_STATISTIC_DEFAULT_SAMPLE_COUNT = 59,   // "statistic-default-sample-count"
+        S_STATISTIC_DEFAULT_SAMPLE_AGE = 60,     // "statistic-default-sample-age"
+        S_DDNS_SEND_UPDATES = 61,                // "ddns-send-updates"
+        S_DDNS_OVERRIDE_NO_UPDATE = 62,          // "ddns-override-no-update"
+        S_DDNS_OVERRIDE_CLIENT_UPDATE = 63,      // "ddns-override-client-update"
+        S_DDNS_REPLACE_CLIENT_NAME = 64,         // "ddns-replace-client-name"
+        S_DDNS_GENERATED_PREFIX = 65,            // "ddns-generated-prefix"
+        S_DDNS_QUALIFYING_SUFFIX = 66,           // "ddns-qualifying-suffix"
+        S_STORE_EXTENDED_INFO = 67,              // "store-extended-info"
+        S_SUBNET6 = 68,                          // "subnet6"
+        S_OPTION_DEF = 69,                       // "option-def"
+        S_OPTION_DATA = 70,                      // "option-data"
+        S_NAME = 71,                             // "name"
+        S_DATA = 72,                             // "data"
+        S_CODE = 73,                             // "code"
+        S_SPACE = 74,                            // "space"
+        S_CSV_FORMAT = 75,                       // "csv-format"
+        S_ALWAYS_SEND = 76,                      // "always-send"
+        S_RECORD_TYPES = 77,                     // "record-types"
+        S_ENCAPSULATE = 78,                      // "encapsulate"
+        S_ARRAY = 79,                            // "array"
+        S_POOLS = 80,                            // "pools"
+        S_POOL = 81,                             // "pool"
+        S_PD_POOLS = 82,                         // "pd-pools"
+        S_PREFIX = 83,                           // "prefix"
+        S_PREFIX_LEN = 84,                       // "prefix-len"
+        S_EXCLUDED_PREFIX = 85,                  // "excluded-prefix"
+        S_EXCLUDED_PREFIX_LEN = 86,              // "excluded-prefix-len"
+        S_DELEGATED_LEN = 87,                    // "delegated-len"
+        S_USER_CONTEXT = 88,                     // "user-context"
+        S_COMMENT = 89,                          // "comment"
+        S_SUBNET = 90,                           // "subnet"
+        S_INTERFACE = 91,                        // "interface"
+        S_INTERFACE_ID = 92,                     // "interface-id"
+        S_ID = 93,                               // "id"
+        S_RAPID_COMMIT = 94,                     // "rapid-commit"
+        S_RESERVATION_MODE = 95,                 // "reservation-mode"
+        S_DISABLED = 96,                         // "disabled"
+        S_OUT_OF_POOL = 97,                      // "out-of-pool"
+        S_GLOBAL = 98,                           // "global"
+        S_ALL = 99,                              // "all"
+        S_SHARED_NETWORKS = 100,                 // "shared-networks"
+        S_MAC_SOURCES = 101,                     // "mac-sources"
+        S_RELAY_SUPPLIED_OPTIONS = 102,          // "relay-supplied-options"
+        S_HOST_RESERVATION_IDENTIFIERS = 103,    // "host-reservation-identifiers"
+        S_SANITY_CHECKS = 104,                   // "sanity-checks"
+        S_LEASE_CHECKS = 105,                    // "lease-checks"
+        S_CLIENT_CLASSES = 106,                  // "client-classes"
+        S_REQUIRE_CLIENT_CLASSES = 107,          // "require-client-classes"
+        S_TEST = 108,                            // "test"
+        S_ONLY_IF_REQUIRED = 109,                // "only-if-required"
+        S_CLIENT_CLASS = 110,                    // "client-class"
+        S_RESERVATIONS = 111,                    // "reservations"
+        S_IP_ADDRESSES = 112,                    // "ip-addresses"
+        S_PREFIXES = 113,                        // "prefixes"
+        S_DUID = 114,                            // "duid"
+        S_HW_ADDRESS = 115,                      // "hw-address"
+        S_HOSTNAME = 116,                        // "hostname"
+        S_FLEX_ID = 117,                         // "flex-id"
+        S_RELAY = 118,                           // "relay"
+        S_IP_ADDRESS = 119,                      // "ip-address"
+        S_HOOKS_LIBRARIES = 120,                 // "hooks-libraries"
+        S_LIBRARY = 121,                         // "library"
+        S_PARAMETERS = 122,                      // "parameters"
+        S_EXPIRED_LEASES_PROCESSING = 123,       // "expired-leases-processing"
+        S_RECLAIM_TIMER_WAIT_TIME = 124,         // "reclaim-timer-wait-time"
+        S_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 125, // "flush-reclaimed-timer-wait-time"
+        S_HOLD_RECLAIMED_TIME = 126,             // "hold-reclaimed-time"
+        S_MAX_RECLAIM_LEASES = 127,              // "max-reclaim-leases"
+        S_MAX_RECLAIM_TIME = 128,                // "max-reclaim-time"
+        S_UNWARNED_RECLAIM_CYCLES = 129,         // "unwarned-reclaim-cycles"
+        S_SERVER_ID = 130,                       // "server-id"
+        S_LLT = 131,                             // "LLT"
+        S_EN = 132,                              // "EN"
+        S_LL = 133,                              // "LL"
+        S_IDENTIFIER = 134,                      // "identifier"
+        S_HTYPE = 135,                           // "htype"
+        S_TIME = 136,                            // "time"
+        S_ENTERPRISE_ID = 137,                   // "enterprise-id"
+        S_DHCP4O6_PORT = 138,                    // "dhcp4o6-port"
+        S_DHCP_MULTI_THREADING = 139,            // "multi-threading"
+        S_ENABLE_MULTI_THREADING = 140,          // "enable-multi-threading"
+        S_THREAD_POOL_SIZE = 141,                // "thread-pool-size"
+        S_PACKET_QUEUE_SIZE = 142,               // "packet-queue-size"
+        S_CONTROL_SOCKET = 143,                  // "control-socket"
+        S_SOCKET_TYPE = 144,                     // "socket-type"
+        S_SOCKET_NAME = 145,                     // "socket-name"
+        S_DHCP_QUEUE_CONTROL = 146,              // "dhcp-queue-control"
+        S_ENABLE_QUEUE = 147,                    // "enable-queue"
+        S_QUEUE_TYPE = 148,                      // "queue-type"
+        S_CAPACITY = 149,                        // "capacity"
+        S_DHCP_DDNS = 150,                       // "dhcp-ddns"
+        S_ENABLE_UPDATES = 151,                  // "enable-updates"
+        S_QUALIFYING_SUFFIX = 152,               // "qualifying-suffix"
+        S_SERVER_IP = 153,                       // "server-ip"
+        S_SERVER_PORT = 154,                     // "server-port"
+        S_SENDER_IP = 155,                       // "sender-ip"
+        S_SENDER_PORT = 156,                     // "sender-port"
+        S_MAX_QUEUE_SIZE = 157,                  // "max-queue-size"
+        S_NCR_PROTOCOL = 158,                    // "ncr-protocol"
+        S_NCR_FORMAT = 159,                      // "ncr-format"
+        S_OVERRIDE_NO_UPDATE = 160,              // "override-no-update"
+        S_OVERRIDE_CLIENT_UPDATE = 161,          // "override-client-update"
+        S_REPLACE_CLIENT_NAME = 162,             // "replace-client-name"
+        S_GENERATED_PREFIX = 163,                // "generated-prefix"
+        S_UDP = 164,                             // "UDP"
+        S_TCP = 165,                             // "TCP"
+        S_JSON = 166,                            // "JSON"
+        S_WHEN_PRESENT = 167,                    // "when-present"
+        S_NEVER = 168,                           // "never"
+        S_ALWAYS = 169,                          // "always"
+        S_WHEN_NOT_PRESENT = 170,                // "when-not-present"
+        S_HOSTNAME_CHAR_SET = 171,               // "hostname-char-set"
+        S_HOSTNAME_CHAR_REPLACEMENT = 172,       // "hostname-char-replacement"
+        S_LOGGERS = 173,                         // "loggers"
+        S_OUTPUT_OPTIONS = 174,                  // "output_options"
+        S_OUTPUT = 175,                          // "output"
+        S_DEBUGLEVEL = 176,                      // "debuglevel"
+        S_SEVERITY = 177,                        // "severity"
+        S_FLUSH = 178,                           // "flush"
+        S_MAXSIZE = 179,                         // "maxsize"
+        S_MAXVER = 180,                          // "maxver"
+        S_PATTERN = 181,                         // "pattern"
+        S_TOPLEVEL_JSON = 182,                   // TOPLEVEL_JSON
+        S_TOPLEVEL_DHCP6 = 183,                  // TOPLEVEL_DHCP6
+        S_SUB_DHCP6 = 184,                       // SUB_DHCP6
+        S_SUB_INTERFACES6 = 185,                 // SUB_INTERFACES6
+        S_SUB_SUBNET6 = 186,                     // SUB_SUBNET6
+        S_SUB_POOL6 = 187,                       // SUB_POOL6
+        S_SUB_PD_POOL = 188,                     // SUB_PD_POOL
+        S_SUB_RESERVATION = 189,                 // SUB_RESERVATION
+        S_SUB_OPTION_DEFS = 190,                 // SUB_OPTION_DEFS
+        S_SUB_OPTION_DEF = 191,                  // SUB_OPTION_DEF
+        S_SUB_OPTION_DATA = 192,                 // SUB_OPTION_DATA
+        S_SUB_HOOKS_LIBRARY = 193,               // SUB_HOOKS_LIBRARY
+        S_SUB_DHCP_DDNS = 194,                   // SUB_DHCP_DDNS
+        S_SUB_CONFIG_CONTROL = 195,              // SUB_CONFIG_CONTROL
+        S_STRING = 196,                          // "constant string"
+        S_INTEGER = 197,                         // "integer"
+        S_FLOAT = 198,                           // "floating point"
+        S_BOOLEAN = 199,                         // "boolean"
+        S_YYACCEPT = 200,                        // $accept
+        S_start = 201,                           // start
+        S_202_1 = 202,                           // $@1
+        S_203_2 = 203,                           // $@2
+        S_204_3 = 204,                           // $@3
+        S_205_4 = 205,                           // $@4
+        S_206_5 = 206,                           // $@5
+        S_207_6 = 207,                           // $@6
+        S_208_7 = 208,                           // $@7
+        S_209_8 = 209,                           // $@8
+        S_210_9 = 210,                           // $@9
+        S_211_10 = 211,                          // $@10
+        S_212_11 = 212,                          // $@11
+        S_213_12 = 213,                          // $@12
+        S_214_13 = 214,                          // $@13
+        S_215_14 = 215,                          // $@14
+        S_value = 216,                           // value
+        S_sub_json = 217,                        // sub_json
+        S_map2 = 218,                            // map2
+        S_219_15 = 219,                          // $@15
+        S_map_value = 220,                       // map_value
+        S_map_content = 221,                     // map_content
+        S_not_empty_map = 222,                   // not_empty_map
+        S_list_generic = 223,                    // list_generic
+        S_224_16 = 224,                          // $@16
+        S_list_content = 225,                    // list_content
+        S_not_empty_list = 226,                  // not_empty_list
+        S_list_strings = 227,                    // list_strings
+        S_228_17 = 228,                          // $@17
+        S_list_strings_content = 229,            // list_strings_content
+        S_not_empty_list_strings = 230,          // not_empty_list_strings
+        S_unknown_map_entry = 231,               // unknown_map_entry
+        S_syntax_map = 232,                      // syntax_map
+        S_233_18 = 233,                          // $@18
+        S_global_object = 234,                   // global_object
+        S_235_19 = 235,                          // $@19
+        S_sub_dhcp6 = 236,                       // sub_dhcp6
+        S_237_20 = 237,                          // $@20
+        S_global_params = 238,                   // global_params
+        S_global_param = 239,                    // global_param
+        S_data_directory = 240,                  // data_directory
+        S_241_21 = 241,                          // $@21
+        S_preferred_lifetime = 242,              // preferred_lifetime
+        S_min_preferred_lifetime = 243,          // min_preferred_lifetime
+        S_max_preferred_lifetime = 244,          // max_preferred_lifetime
+        S_valid_lifetime = 245,                  // valid_lifetime
+        S_min_valid_lifetime = 246,              // min_valid_lifetime
+        S_max_valid_lifetime = 247,              // max_valid_lifetime
+        S_renew_timer = 248,                     // renew_timer
+        S_rebind_timer = 249,                    // rebind_timer
+        S_calculate_tee_times = 250,             // calculate_tee_times
+        S_t1_percent = 251,                      // t1_percent
+        S_t2_percent = 252,                      // t2_percent
+        S_cache_threshold = 253,                 // cache_threshold
+        S_cache_max = 254,                       // cache_max
+        S_decline_probation_period = 255,        // decline_probation_period
+        S_ddns_send_updates = 256,               // ddns_send_updates
+        S_ddns_override_no_update = 257,         // ddns_override_no_update
+        S_ddns_override_client_update = 258,     // ddns_override_client_update
+        S_ddns_replace_client_name = 259,        // ddns_replace_client_name
+        S_260_22 = 260,                          // $@22
+        S_ddns_replace_client_name_value = 261,  // ddns_replace_client_name_value
+        S_ddns_generated_prefix = 262,           // ddns_generated_prefix
+        S_263_23 = 263,                          // $@23
+        S_ddns_qualifying_suffix = 264,          // ddns_qualifying_suffix
+        S_265_24 = 265,                          // $@24
+        S_hostname_char_set = 266,               // hostname_char_set
+        S_267_25 = 267,                          // $@25
+        S_hostname_char_replacement = 268,       // hostname_char_replacement
+        S_269_26 = 269,                          // $@26
+        S_store_extended_info = 270,             // store_extended_info
+        S_statistic_default_sample_count = 271,  // statistic_default_sample_count
+        S_statistic_default_sample_age = 272,    // statistic_default_sample_age
+        S_server_tag = 273,                      // server_tag
+        S_274_27 = 274,                          // $@27
+        S_interfaces_config = 275,               // interfaces_config
+        S_276_28 = 276,                          // $@28
+        S_sub_interfaces6 = 277,                 // sub_interfaces6
+        S_278_29 = 278,                          // $@29
+        S_interfaces_config_params = 279,        // interfaces_config_params
+        S_interfaces_config_param = 280,         // interfaces_config_param
+        S_interfaces_list = 281,                 // interfaces_list
+        S_282_30 = 282,                          // $@30
+        S_re_detect = 283,                       // re_detect
+        S_lease_database = 284,                  // lease_database
+        S_285_31 = 285,                          // $@31
+        S_hosts_database = 286,                  // hosts_database
+        S_287_32 = 287,                          // $@32
+        S_hosts_databases = 288,                 // hosts_databases
+        S_289_33 = 289,                          // $@33
+        S_database_list = 290,                   // database_list
+        S_not_empty_database_list = 291,         // not_empty_database_list
+        S_database = 292,                        // database
+        S_293_34 = 293,                          // $@34
+        S_database_map_params = 294,             // database_map_params
+        S_database_map_param = 295,              // database_map_param
+        S_database_type = 296,                   // database_type
+        S_297_35 = 297,                          // $@35
+        S_db_type = 298,                         // db_type
+        S_user = 299,                            // user
+        S_300_36 = 300,                          // $@36
+        S_password = 301,                        // password
+        S_302_37 = 302,                          // $@37
+        S_host = 303,                            // host
+        S_304_38 = 304,                          // $@38
+        S_port = 305,                            // port
+        S_name = 306,                            // name
+        S_307_39 = 307,                          // $@39
+        S_persist = 308,                         // persist
+        S_lfc_interval = 309,                    // lfc_interval
+        S_readonly = 310,                        // readonly
+        S_connect_timeout = 311,                 // connect_timeout
+        S_reconnect_wait_time = 312,             // reconnect_wait_time
+        S_max_row_errors = 313,                  // max_row_errors
+        S_request_timeout = 314,                 // request_timeout
+        S_tcp_keepalive = 315,                   // tcp_keepalive
+        S_tcp_nodelay = 316,                     // tcp_nodelay
+        S_contact_points = 317,                  // contact_points
+        S_318_40 = 318,                          // $@40
+        S_max_reconnect_tries = 319,             // max_reconnect_tries
+        S_keyspace = 320,                        // keyspace
+        S_321_41 = 321,                          // $@41
+        S_consistency = 322,                     // consistency
+        S_323_42 = 323,                          // $@42
+        S_serial_consistency = 324,              // serial_consistency
+        S_325_43 = 325,                          // $@43
+        S_sanity_checks = 326,                   // sanity_checks
+        S_327_44 = 327,                          // $@44
+        S_sanity_checks_params = 328,            // sanity_checks_params
+        S_sanity_checks_param = 329,             // sanity_checks_param
+        S_lease_checks = 330,                    // lease_checks
+        S_331_45 = 331,                          // $@45
+        S_mac_sources = 332,                     // mac_sources
+        S_333_46 = 333,                          // $@46
+        S_mac_sources_list = 334,                // mac_sources_list
+        S_mac_sources_value = 335,               // mac_sources_value
+        S_duid_id = 336,                         // duid_id
+        S_string_id = 337,                       // string_id
+        S_host_reservation_identifiers = 338,    // host_reservation_identifiers
+        S_339_47 = 339,                          // $@47
+        S_host_reservation_identifiers_list = 340, // host_reservation_identifiers_list
+        S_host_reservation_identifier = 341,     // host_reservation_identifier
+        S_hw_address_id = 342,                   // hw_address_id
+        S_flex_id = 343,                         // flex_id
+        S_relay_supplied_options = 344,          // relay_supplied_options
+        S_345_48 = 345,                          // $@48
+        S_dhcp_multi_threading = 346,            // dhcp_multi_threading
+        S_347_49 = 347,                          // $@49
+        S_multi_threading_params = 348,          // multi_threading_params
+        S_multi_threading_param = 349,           // multi_threading_param
+        S_enable_multi_threading = 350,          // enable_multi_threading
+        S_thread_pool_size = 351,                // thread_pool_size
+        S_packet_queue_size = 352,               // packet_queue_size
+        S_hooks_libraries = 353,                 // hooks_libraries
+        S_354_50 = 354,                          // $@50
+        S_hooks_libraries_list = 355,            // hooks_libraries_list
+        S_not_empty_hooks_libraries_list = 356,  // not_empty_hooks_libraries_list
+        S_hooks_library = 357,                   // hooks_library
+        S_358_51 = 358,                          // $@51
+        S_sub_hooks_library = 359,               // sub_hooks_library
+        S_360_52 = 360,                          // $@52
+        S_hooks_params = 361,                    // hooks_params
+        S_hooks_param = 362,                     // hooks_param
+        S_library = 363,                         // library
+        S_364_53 = 364,                          // $@53
+        S_parameters = 365,                      // parameters
+        S_366_54 = 366,                          // $@54
+        S_expired_leases_processing = 367,       // expired_leases_processing
+        S_368_55 = 368,                          // $@55
+        S_expired_leases_params = 369,           // expired_leases_params
+        S_expired_leases_param = 370,            // expired_leases_param
+        S_reclaim_timer_wait_time = 371,         // reclaim_timer_wait_time
+        S_flush_reclaimed_timer_wait_time = 372, // flush_reclaimed_timer_wait_time
+        S_hold_reclaimed_time = 373,             // hold_reclaimed_time
+        S_max_reclaim_leases = 374,              // max_reclaim_leases
+        S_max_reclaim_time = 375,                // max_reclaim_time
+        S_unwarned_reclaim_cycles = 376,         // unwarned_reclaim_cycles
+        S_subnet6_list = 377,                    // subnet6_list
+        S_378_56 = 378,                          // $@56
+        S_subnet6_list_content = 379,            // subnet6_list_content
+        S_not_empty_subnet6_list = 380,          // not_empty_subnet6_list
+        S_subnet6 = 381,                         // subnet6
+        S_382_57 = 382,                          // $@57
+        S_sub_subnet6 = 383,                     // sub_subnet6
+        S_384_58 = 384,                          // $@58
+        S_subnet6_params = 385,                  // subnet6_params
+        S_subnet6_param = 386,                   // subnet6_param
+        S_subnet = 387,                          // subnet
+        S_388_59 = 388,                          // $@59
+        S_interface = 389,                       // interface
+        S_390_60 = 390,                          // $@60
+        S_interface_id = 391,                    // interface_id
+        S_392_61 = 392,                          // $@61
+        S_client_class = 393,                    // client_class
+        S_394_62 = 394,                          // $@62
+        S_require_client_classes = 395,          // require_client_classes
+        S_396_63 = 396,                          // $@63
+        S_reservation_mode = 397,                // reservation_mode
+        S_398_64 = 398,                          // $@64
+        S_hr_mode = 399,                         // hr_mode
+        S_id = 400,                              // id
+        S_rapid_commit = 401,                    // rapid_commit
+        S_shared_networks = 402,                 // shared_networks
+        S_403_65 = 403,                          // $@65
+        S_shared_networks_content = 404,         // shared_networks_content
+        S_shared_networks_list = 405,            // shared_networks_list
+        S_shared_network = 406,                  // shared_network
+        S_407_66 = 407,                          // $@66
+        S_shared_network_params = 408,           // shared_network_params
+        S_shared_network_param = 409,            // shared_network_param
+        S_option_def_list = 410,                 // option_def_list
+        S_411_67 = 411,                          // $@67
+        S_sub_option_def_list = 412,             // sub_option_def_list
+        S_413_68 = 413,                          // $@68
+        S_option_def_list_content = 414,         // option_def_list_content
+        S_not_empty_option_def_list = 415,       // not_empty_option_def_list
+        S_option_def_entry = 416,                // option_def_entry
+        S_417_69 = 417,                          // $@69
+        S_sub_option_def = 418,                  // sub_option_def
+        S_419_70 = 419,                          // $@70
+        S_option_def_params = 420,               // option_def_params
+        S_not_empty_option_def_params = 421,     // not_empty_option_def_params
+        S_option_def_param = 422,                // option_def_param
+        S_option_def_name = 423,                 // option_def_name
+        S_code = 424,                            // code
+        S_option_def_code = 425,                 // option_def_code
+        S_option_def_type = 426,                 // option_def_type
+        S_427_71 = 427,                          // $@71
+        S_option_def_record_types = 428,         // option_def_record_types
+        S_429_72 = 429,                          // $@72
+        S_space = 430,                           // space
+        S_431_73 = 431,                          // $@73
+        S_option_def_space = 432,                // option_def_space
+        S_option_def_encapsulate = 433,          // option_def_encapsulate
+        S_434_74 = 434,                          // $@74
+        S_option_def_array = 435,                // option_def_array
+        S_option_data_list = 436,                // option_data_list
+        S_437_75 = 437,                          // $@75
+        S_option_data_list_content = 438,        // option_data_list_content
+        S_not_empty_option_data_list = 439,      // not_empty_option_data_list
+        S_option_data_entry = 440,               // option_data_entry
+        S_441_76 = 441,                          // $@76
+        S_sub_option_data = 442,                 // sub_option_data
+        S_443_77 = 443,                          // $@77
+        S_option_data_params = 444,              // option_data_params
+        S_not_empty_option_data_params = 445,    // not_empty_option_data_params
+        S_option_data_param = 446,               // option_data_param
+        S_option_data_name = 447,                // option_data_name
+        S_option_data_data = 448,                // option_data_data
+        S_449_78 = 449,                          // $@78
+        S_option_data_code = 450,                // option_data_code
+        S_option_data_space = 451,               // option_data_space
+        S_option_data_csv_format = 452,          // option_data_csv_format
+        S_option_data_always_send = 453,         // option_data_always_send
+        S_pools_list = 454,                      // pools_list
+        S_455_79 = 455,                          // $@79
+        S_pools_list_content = 456,              // pools_list_content
+        S_not_empty_pools_list = 457,            // not_empty_pools_list
+        S_pool_list_entry = 458,                 // pool_list_entry
+        S_459_80 = 459,                          // $@80
+        S_sub_pool6 = 460,                       // sub_pool6
+        S_461_81 = 461,                          // $@81
+        S_pool_params = 462,                     // pool_params
+        S_pool_param = 463,                      // pool_param
+        S_pool_entry = 464,                      // pool_entry
+        S_465_82 = 465,                          // $@82
+        S_user_context = 466,                    // user_context
+        S_467_83 = 467,                          // $@83
+        S_comment = 468,                         // comment
+        S_469_84 = 469,                          // $@84
+        S_pd_pools_list = 470,                   // pd_pools_list
+        S_471_85 = 471,                          // $@85
+        S_pd_pools_list_content = 472,           // pd_pools_list_content
+        S_not_empty_pd_pools_list = 473,         // not_empty_pd_pools_list
+        S_pd_pool_entry = 474,                   // pd_pool_entry
+        S_475_86 = 475,                          // $@86
+        S_sub_pd_pool = 476,                     // sub_pd_pool
+        S_477_87 = 477,                          // $@87
+        S_pd_pool_params = 478,                  // pd_pool_params
+        S_pd_pool_param = 479,                   // pd_pool_param
+        S_pd_prefix = 480,                       // pd_prefix
+        S_481_88 = 481,                          // $@88
+        S_pd_prefix_len = 482,                   // pd_prefix_len
+        S_excluded_prefix = 483,                 // excluded_prefix
+        S_484_89 = 484,                          // $@89
+        S_excluded_prefix_len = 485,             // excluded_prefix_len
+        S_pd_delegated_len = 486,                // pd_delegated_len
+        S_reservations = 487,                    // reservations
+        S_488_90 = 488,                          // $@90
+        S_reservations_list = 489,               // reservations_list
+        S_not_empty_reservations_list = 490,     // not_empty_reservations_list
+        S_reservation = 491,                     // reservation
+        S_492_91 = 492,                          // $@91
+        S_sub_reservation = 493,                 // sub_reservation
+        S_494_92 = 494,                          // $@92
+        S_reservation_params = 495,              // reservation_params
+        S_not_empty_reservation_params = 496,    // not_empty_reservation_params
+        S_reservation_param = 497,               // reservation_param
+        S_ip_addresses = 498,                    // ip_addresses
+        S_499_93 = 499,                          // $@93
+        S_prefixes = 500,                        // prefixes
+        S_501_94 = 501,                          // $@94
+        S_duid = 502,                            // duid
+        S_503_95 = 503,                          // $@95
+        S_hw_address = 504,                      // hw_address
+        S_505_96 = 505,                          // $@96
+        S_hostname = 506,                        // hostname
+        S_507_97 = 507,                          // $@97
+        S_flex_id_value = 508,                   // flex_id_value
+        S_509_98 = 509,                          // $@98
+        S_reservation_client_classes = 510,      // reservation_client_classes
+        S_511_99 = 511,                          // $@99
+        S_relay = 512,                           // relay
+        S_513_100 = 513,                         // $@100
+        S_relay_map = 514,                       // relay_map
+        S_ip_address = 515,                      // ip_address
+        S_516_101 = 516,                         // $@101
+        S_client_classes = 517,                  // client_classes
+        S_518_102 = 518,                         // $@102
+        S_client_classes_list = 519,             // client_classes_list
+        S_client_class_entry = 520,              // client_class_entry
+        S_521_103 = 521,                         // $@103
+        S_client_class_params = 522,             // client_class_params
+        S_not_empty_client_class_params = 523,   // not_empty_client_class_params
+        S_client_class_param = 524,              // client_class_param
+        S_client_class_name = 525,               // client_class_name
+        S_client_class_test = 526,               // client_class_test
+        S_527_104 = 527,                         // $@104
+        S_only_if_required = 528,                // only_if_required
+        S_server_id = 529,                       // server_id
+        S_530_105 = 530,                         // $@105
+        S_server_id_params = 531,                // server_id_params
+        S_server_id_param = 532,                 // server_id_param
+        S_server_id_type = 533,                  // server_id_type
+        S_534_106 = 534,                         // $@106
+        S_duid_type = 535,                       // duid_type
+        S_htype = 536,                           // htype
+        S_identifier = 537,                      // identifier
+        S_538_107 = 538,                         // $@107
+        S_time = 539,                            // time
+        S_enterprise_id = 540,                   // enterprise_id
+        S_dhcp4o6_port = 541,                    // dhcp4o6_port
+        S_control_socket = 542,                  // control_socket
+        S_543_108 = 543,                         // $@108
+        S_control_socket_params = 544,           // control_socket_params
+        S_control_socket_param = 545,            // control_socket_param
+        S_socket_type = 546,                     // socket_type
+        S_547_109 = 547,                         // $@109
+        S_socket_name = 548,                     // socket_name
+        S_549_110 = 549,                         // $@110
+        S_dhcp_queue_control = 550,              // dhcp_queue_control
+        S_551_111 = 551,                         // $@111
+        S_queue_control_params = 552,            // queue_control_params
+        S_queue_control_param = 553,             // queue_control_param
+        S_enable_queue = 554,                    // enable_queue
+        S_queue_type = 555,                      // queue_type
+        S_556_112 = 556,                         // $@112
+        S_capacity = 557,                        // capacity
+        S_arbitrary_map_entry = 558,             // arbitrary_map_entry
+        S_559_113 = 559,                         // $@113
+        S_dhcp_ddns = 560,                       // dhcp_ddns
+        S_561_114 = 561,                         // $@114
+        S_sub_dhcp_ddns = 562,                   // sub_dhcp_ddns
+        S_563_115 = 563,                         // $@115
+        S_dhcp_ddns_params = 564,                // dhcp_ddns_params
+        S_dhcp_ddns_param = 565,                 // dhcp_ddns_param
+        S_enable_updates = 566,                  // enable_updates
+        S_dep_qualifying_suffix = 567,           // dep_qualifying_suffix
+        S_568_116 = 568,                         // $@116
+        S_server_ip = 569,                       // server_ip
+        S_570_117 = 570,                         // $@117
+        S_server_port = 571,                     // server_port
+        S_sender_ip = 572,                       // sender_ip
+        S_573_118 = 573,                         // $@118
+        S_sender_port = 574,                     // sender_port
+        S_max_queue_size = 575,                  // max_queue_size
+        S_ncr_protocol = 576,                    // ncr_protocol
+        S_577_119 = 577,                         // $@119
+        S_ncr_protocol_value = 578,              // ncr_protocol_value
+        S_ncr_format = 579,                      // ncr_format
+        S_580_120 = 580,                         // $@120
+        S_dep_override_no_update = 581,          // dep_override_no_update
+        S_dep_override_client_update = 582,      // dep_override_client_update
+        S_dep_replace_client_name = 583,         // dep_replace_client_name
+        S_584_121 = 584,                         // $@121
+        S_dep_generated_prefix = 585,            // dep_generated_prefix
+        S_586_122 = 586,                         // $@122
+        S_dep_hostname_char_set = 587,           // dep_hostname_char_set
+        S_588_123 = 588,                         // $@123
+        S_dep_hostname_char_replacement = 589,   // dep_hostname_char_replacement
+        S_590_124 = 590,                         // $@124
+        S_config_control = 591,                  // config_control
+        S_592_125 = 592,                         // $@125
+        S_sub_config_control = 593,              // sub_config_control
+        S_594_126 = 594,                         // $@126
+        S_config_control_params = 595,           // config_control_params
+        S_config_control_param = 596,            // config_control_param
+        S_config_databases = 597,                // config_databases
+        S_598_127 = 598,                         // $@127
+        S_config_fetch_wait_time = 599,          // config_fetch_wait_time
+        S_loggers = 600,                         // loggers
+        S_601_128 = 601,                         // $@128
+        S_loggers_entries = 602,                 // loggers_entries
+        S_logger_entry = 603,                    // logger_entry
+        S_604_129 = 604,                         // $@129
+        S_logger_params = 605,                   // logger_params
+        S_logger_param = 606,                    // logger_param
+        S_debuglevel = 607,                      // debuglevel
+        S_severity = 608,                        // severity
+        S_609_130 = 609,                         // $@130
+        S_output_options_list = 610,             // output_options_list
+        S_611_131 = 611,                         // $@131
+        S_output_options_list_content = 612,     // output_options_list_content
+        S_output_entry = 613,                    // output_entry
+        S_614_132 = 614,                         // $@132
+        S_output_params_list = 615,              // output_params_list
+        S_output_params = 616,                   // output_params
+        S_output = 617,                          // output
+        S_618_133 = 618,                         // $@133
+        S_flush = 619,                           // flush
+        S_maxsize = 620,                         // maxsize
+        S_maxver = 621,                          // maxver
+        S_pattern = 622,                         // pattern
+        S_623_134 = 623                          // $@134
       };
     };
 
@@ -1606,13 +1612,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_PARSER6_error || tok == token::TOKEN_PARSER6_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_DHCP6 || tok == token::TOKEN_DATA_DIRECTORY || tok == token::TOKEN_CONFIG_CONTROL || tok == token::TOKEN_CONFIG_DATABASES || tok == token::TOKEN_CONFIG_FETCH_WAIT_TIME || tok == token::TOKEN_INTERFACES_CONFIG || tok == token::TOKEN_INTERFACES || tok == token::TOKEN_RE_DETECT || tok == token::TOKEN_LEASE_DATABASE || tok == token::TOKEN_HOSTS_DATABASE || tok == token::TOKEN_HOSTS_DATABASES || tok == token::TOKEN_TYPE || tok == token::TOKEN_MEMFILE || tok == token::TOKEN_MYSQL || tok == token::TOKEN_POSTGRESQL || tok == token::TOKEN_CQL || tok == token::TOKEN_USER || tok == token::TOKEN_PASSWORD || tok == token::TOKEN_HOST || tok == token::TOKEN_PORT || tok == token::TOKEN_PERSIST || tok == token::TOKEN_LFC_INTERVAL || tok == token::TOKEN_READONLY || tok == token::TOKEN_CONNECT_TIMEOUT || tok == token::TOKEN_CONTACT_POINTS || tok == token::TOKEN_MAX_RECONNECT_TRIES || tok == token::TOKEN_RECONNECT_WAIT_TIME || tok == token::TOKEN_KEYSPACE || tok == token::TOKEN_CONSISTENCY || tok == token::TOKEN_SERIAL_CONSISTENCY || tok == token::TOKEN_REQUEST_TIMEOUT || tok == token::TOKEN_TCP_KEEPALIVE || tok == token::TOKEN_TCP_NODELAY || tok == token::TOKEN_MAX_ROW_ERRORS || tok == token::TOKEN_PREFERRED_LIFETIME || tok == token::TOKEN_MIN_PREFERRED_LIFETIME || tok == token::TOKEN_MAX_PREFERRED_LIFETIME || tok == token::TOKEN_VALID_LIFETIME || tok == token::TOKEN_MIN_VALID_LIFETIME || tok == token::TOKEN_MAX_VALID_LIFETIME || tok == token::TOKEN_RENEW_TIMER || tok == token::TOKEN_REBIND_TIMER || tok == token::TOKEN_CALCULATE_TEE_TIMES || tok == token::TOKEN_T1_PERCENT || tok == token::TOKEN_T2_PERCENT || tok == token::TOKEN_DECLINE_PROBATION_PERIOD || tok == token::TOKEN_SERVER_TAG || tok == token::TOKEN_STATISTIC_DEFAULT_SAMPLE_COUNT || tok == token::TOKEN_STATISTIC_DEFAULT_SAMPLE_AGE || tok == token::TOKEN_DDNS_SEND_UPDATES || tok == token::TOKEN_DDNS_OVERRIDE_NO_UPDATE || tok == token::TOKEN_DDNS_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_DDNS_REPLACE_CLIENT_NAME || tok == token::TOKEN_DDNS_GENERATED_PREFIX || tok == token::TOKEN_DDNS_QUALIFYING_SUFFIX || tok == token::TOKEN_STORE_EXTENDED_INFO || tok == token::TOKEN_SUBNET6 || tok == token::TOKEN_OPTION_DEF || tok == token::TOKEN_OPTION_DATA || tok == token::TOKEN_NAME || tok == token::TOKEN_DATA || tok == token::TOKEN_CODE || tok == token::TOKEN_SPACE || tok == token::TOKEN_CSV_FORMAT || tok == token::TOKEN_ALWAYS_SEND || tok == token::TOKEN_RECORD_TYPES || tok == token::TOKEN_ENCAPSULATE || tok == token::TOKEN_ARRAY || tok == token::TOKEN_POOLS || tok == token::TOKEN_POOL || tok == token::TOKEN_PD_POOLS || tok == token::TOKEN_PREFIX || tok == token::TOKEN_PREFIX_LEN || tok == token::TOKEN_EXCLUDED_PREFIX || tok == token::TOKEN_EXCLUDED_PREFIX_LEN || tok == token::TOKEN_DELEGATED_LEN || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_SUBNET || tok == token::TOKEN_INTERFACE || tok == token::TOKEN_INTERFACE_ID || tok == token::TOKEN_ID || tok == token::TOKEN_RAPID_COMMIT || tok == token::TOKEN_RESERVATION_MODE || tok == token::TOKEN_DISABLED || tok == token::TOKEN_OUT_OF_POOL || tok == token::TOKEN_GLOBAL || tok == token::TOKEN_ALL || tok == token::TOKEN_SHARED_NETWORKS || tok == token::TOKEN_MAC_SOURCES || tok == token::TOKEN_RELAY_SUPPLIED_OPTIONS || tok == token::TOKEN_HOST_RESERVATION_IDENTIFIERS || tok == token::TOKEN_SANITY_CHECKS || tok == token::TOKEN_LEASE_CHECKS || tok == token::TOKEN_CLIENT_CLASSES || tok == token::TOKEN_REQUIRE_CLIENT_CLASSES || tok == token::TOKEN_TEST || tok == token::TOKEN_ONLY_IF_REQUIRED || tok == token::TOKEN_CLIENT_CLASS || tok == token::TOKEN_RESERVATIONS || tok == token::TOKEN_IP_ADDRESSES || tok == token::TOKEN_PREFIXES || tok == token::TOKEN_DUID || tok == token::TOKEN_HW_ADDRESS || tok == token::TOKEN_HOSTNAME || tok == token::TOKEN_FLEX_ID || tok == token::TOKEN_RELAY || tok == token::TOKEN_IP_ADDRESS || tok == token::TOKEN_HOOKS_LIBRARIES || tok == token::TOKEN_LIBRARY || tok == token::TOKEN_PARAMETERS || tok == token::TOKEN_EXPIRED_LEASES_PROCESSING || tok == token::TOKEN_RECLAIM_TIMER_WAIT_TIME || tok == token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME || tok == token::TOKEN_HOLD_RECLAIMED_TIME || tok == token::TOKEN_MAX_RECLAIM_LEASES || tok == token::TOKEN_MAX_RECLAIM_TIME || tok == token::TOKEN_UNWARNED_RECLAIM_CYCLES || tok == token::TOKEN_SERVER_ID || tok == token::TOKEN_LLT || tok == token::TOKEN_EN || tok == token::TOKEN_LL || tok == token::TOKEN_IDENTIFIER || tok == token::TOKEN_HTYPE || tok == token::TOKEN_TIME || tok == token::TOKEN_ENTERPRISE_ID || tok == token::TOKEN_DHCP4O6_PORT || tok == token::TOKEN_DHCP_MULTI_THREADING || tok == token::TOKEN_ENABLE_MULTI_THREADING || tok == token::TOKEN_THREAD_POOL_SIZE || tok == token::TOKEN_PACKET_QUEUE_SIZE || tok == token::TOKEN_CONTROL_SOCKET || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_DHCP_QUEUE_CONTROL || tok == token::TOKEN_ENABLE_QUEUE || tok == token::TOKEN_QUEUE_TYPE || tok == token::TOKEN_CAPACITY || tok == token::TOKEN_DHCP_DDNS || tok == token::TOKEN_ENABLE_UPDATES || tok == token::TOKEN_QUALIFYING_SUFFIX || tok == token::TOKEN_SERVER_IP || tok == token::TOKEN_SERVER_PORT || tok == token::TOKEN_SENDER_IP || tok == token::TOKEN_SENDER_PORT || tok == token::TOKEN_MAX_QUEUE_SIZE || tok == token::TOKEN_NCR_PROTOCOL || tok == token::TOKEN_NCR_FORMAT || tok == token::TOKEN_OVERRIDE_NO_UPDATE || tok == token::TOKEN_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_REPLACE_CLIENT_NAME || tok == token::TOKEN_GENERATED_PREFIX || tok == token::TOKEN_UDP || tok == token::TOKEN_TCP || tok == token::TOKEN_JSON || tok == token::TOKEN_WHEN_PRESENT || tok == token::TOKEN_NEVER || tok == token::TOKEN_ALWAYS || tok == token::TOKEN_WHEN_NOT_PRESENT || tok == token::TOKEN_HOSTNAME_CHAR_SET || tok == token::TOKEN_HOSTNAME_CHAR_REPLACEMENT || tok == token::TOKEN_LOGGERS || 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_TOPLEVEL_JSON || tok == token::TOKEN_TOPLEVEL_DHCP6 || tok == token::TOKEN_SUB_DHCP6 || tok == token::TOKEN_SUB_INTERFACES6 || tok == token::TOKEN_SUB_SUBNET6 || tok == token::TOKEN_SUB_POOL6 || tok == token::TOKEN_SUB_PD_POOL || tok == token::TOKEN_SUB_RESERVATION || tok == token::TOKEN_SUB_OPTION_DEFS || tok == token::TOKEN_SUB_OPTION_DEF || tok == token::TOKEN_SUB_OPTION_DATA || tok == token::TOKEN_SUB_HOOKS_LIBRARY || tok == token::TOKEN_SUB_DHCP_DDNS || tok == token::TOKEN_SUB_CONFIG_CONTROL);
+        YY_ASSERT (tok == token::TOKEN_END || tok == token::TOKEN_PARSER6_error || tok == token::TOKEN_PARSER6_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_DHCP6 || tok == token::TOKEN_DATA_DIRECTORY || tok == token::TOKEN_CONFIG_CONTROL || tok == token::TOKEN_CONFIG_DATABASES || tok == token::TOKEN_CONFIG_FETCH_WAIT_TIME || tok == token::TOKEN_INTERFACES_CONFIG || tok == token::TOKEN_INTERFACES || tok == token::TOKEN_RE_DETECT || tok == token::TOKEN_LEASE_DATABASE || tok == token::TOKEN_HOSTS_DATABASE || tok == token::TOKEN_HOSTS_DATABASES || tok == token::TOKEN_TYPE || tok == token::TOKEN_MEMFILE || tok == token::TOKEN_MYSQL || tok == token::TOKEN_POSTGRESQL || tok == token::TOKEN_CQL || tok == token::TOKEN_USER || tok == token::TOKEN_PASSWORD || tok == token::TOKEN_HOST || tok == token::TOKEN_PORT || tok == token::TOKEN_PERSIST || tok == token::TOKEN_LFC_INTERVAL || tok == token::TOKEN_READONLY || tok == token::TOKEN_CONNECT_TIMEOUT || tok == token::TOKEN_CONTACT_POINTS || tok == token::TOKEN_MAX_RECONNECT_TRIES || tok == token::TOKEN_RECONNECT_WAIT_TIME || tok == token::TOKEN_KEYSPACE || tok == token::TOKEN_CONSISTENCY || tok == token::TOKEN_SERIAL_CONSISTENCY || tok == token::TOKEN_REQUEST_TIMEOUT || tok == token::TOKEN_TCP_KEEPALIVE || tok == token::TOKEN_TCP_NODELAY || tok == token::TOKEN_MAX_ROW_ERRORS || tok == token::TOKEN_PREFERRED_LIFETIME || tok == token::TOKEN_MIN_PREFERRED_LIFETIME || tok == token::TOKEN_MAX_PREFERRED_LIFETIME || tok == token::TOKEN_VALID_LIFETIME || tok == token::TOKEN_MIN_VALID_LIFETIME || tok == token::TOKEN_MAX_VALID_LIFETIME || tok == token::TOKEN_RENEW_TIMER || tok == token::TOKEN_REBIND_TIMER || tok == token::TOKEN_CALCULATE_TEE_TIMES || tok == token::TOKEN_T1_PERCENT || tok == token::TOKEN_T2_PERCENT || tok == token::TOKEN_CACHE_THRESHOLD || tok == token::TOKEN_CACHE_MAX || tok == token::TOKEN_DECLINE_PROBATION_PERIOD || tok == token::TOKEN_SERVER_TAG || tok == token::TOKEN_STATISTIC_DEFAULT_SAMPLE_COUNT || tok == token::TOKEN_STATISTIC_DEFAULT_SAMPLE_AGE || tok == token::TOKEN_DDNS_SEND_UPDATES || tok == token::TOKEN_DDNS_OVERRIDE_NO_UPDATE || tok == token::TOKEN_DDNS_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_DDNS_REPLACE_CLIENT_NAME || tok == token::TOKEN_DDNS_GENERATED_PREFIX || tok == token::TOKEN_DDNS_QUALIFYING_SUFFIX || tok == token::TOKEN_STORE_EXTENDED_INFO || tok == token::TOKEN_SUBNET6 || tok == token::TOKEN_OPTION_DEF || tok == token::TOKEN_OPTION_DATA || tok == token::TOKEN_NAME || tok == token::TOKEN_DATA || tok == token::TOKEN_CODE || tok == token::TOKEN_SPACE || tok == token::TOKEN_CSV_FORMAT || tok == token::TOKEN_ALWAYS_SEND || tok == token::TOKEN_RECORD_TYPES || tok == token::TOKEN_ENCAPSULATE || tok == token::TOKEN_ARRAY || tok == token::TOKEN_POOLS || tok == token::TOKEN_POOL || tok == token::TOKEN_PD_POOLS || tok == token::TOKEN_PREFIX || tok == token::TOKEN_PREFIX_LEN || tok == token::TOKEN_EXCLUDED_PREFIX || tok == token::TOKEN_EXCLUDED_PREFIX_LEN || tok == token::TOKEN_DELEGATED_LEN || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_SUBNET || tok == token::TOKEN_INTERFACE || tok == token::TOKEN_INTERFACE_ID || tok == token::TOKEN_ID || tok == token::TOKEN_RAPID_COMMIT || tok == token::TOKEN_RESERVATION_MODE || tok == token::TOKEN_DISABLED || tok == token::TOKEN_OUT_OF_POOL || tok == token::TOKEN_GLOBAL || tok == token::TOKEN_ALL || tok == token::TOKEN_SHARED_NETWORKS || tok == token::TOKEN_MAC_SOURCES || tok == token::TOKEN_RELAY_SUPPLIED_OPTIONS || tok == token::TOKEN_HOST_RESERVATION_IDENTIFIERS || tok == token::TOKEN_SANITY_CHECKS || tok == token::TOKEN_LEASE_CHECKS || tok == token::TOKEN_CLIENT_CLASSES || tok == token::TOKEN_REQUIRE_CLIENT_CLASSES || tok == token::TOKEN_TEST || tok == token::TOKEN_ONLY_IF_REQUIRED || tok == token::TOKEN_CLIENT_CLASS || tok == token::TOKEN_RESERVATIONS || tok == token::TOKEN_IP_ADDRESSES || tok == token::TOKEN_PREFIXES || tok == token::TOKEN_DUID || tok == token::TOKEN_HW_ADDRESS || tok == token::TOKEN_HOSTNAME || tok == token::TOKEN_FLEX_ID || tok == token::TOKEN_RELAY || tok == token::TOKEN_IP_ADDRESS || tok == token::TOKEN_HOOKS_LIBRARIES || tok == token::TOKEN_LIBRARY || tok == token::TOKEN_PARAMETERS || tok == token::TOKEN_EXPIRED_LEASES_PROCESSING || tok == token::TOKEN_RECLAIM_TIMER_WAIT_TIME || tok == token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME || tok == token::TOKEN_HOLD_RECLAIMED_TIME || tok == token::TOKEN_MAX_RECLAIM_LEASES || tok == token::TOKEN_MAX_RECLAIM_TIME || tok == token::TOKEN_UNWARNED_RECLAIM_CYCLES || tok == token::TOKEN_SERVER_ID || tok == token::TOKEN_LLT || tok == token::TOKEN_EN || tok == token::TOKEN_LL || tok == token::TOKEN_IDENTIFIER || tok == token::TOKEN_HTYPE || tok == token::TOKEN_TIME || tok == token::TOKEN_ENTERPRISE_ID || tok == token::TOKEN_DHCP4O6_PORT || tok == token::TOKEN_DHCP_MULTI_THREADING || tok == token::TOKEN_ENABLE_MULTI_THREADING || tok == token::TOKEN_THREAD_POOL_SIZE || tok == token::TOKEN_PACKET_QUEUE_SIZE || tok == token::TOKEN_CONTROL_SOCKET || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_DHCP_QUEUE_CONTROL || tok == token::TOKEN_ENABLE_QUEUE || tok == token::TOKEN_QUEUE_TYPE || tok == token::TOKEN_CAPACITY || tok == token::TOKEN_DHCP_DDNS || tok == token::TOKEN_ENABLE_UPDATES || tok == token::TOKEN_QUALIFYING_SUFFIX || tok == token::TOKEN_SERVER_IP || tok == token::TOKEN_SERVER_PORT || tok == token::TOKEN_SENDER_IP || tok == token::TOKEN_SENDER_PORT || tok == token::TOKEN_MAX_QUEUE_SIZE || tok == token::TOKEN_NCR_PROTOCOL || tok == token::TOKEN_NCR_FORMAT || tok == token::TOKEN_OVERRIDE_NO_UPDATE || tok == token::TOKEN_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_REPLACE_CLIENT_NAME || tok == token::TOKEN_GENERATED_PREFIX || tok == token::TOKEN_UDP || tok == token::TOKEN_TCP || tok == token::TOKEN_JSON || tok == token::TOKEN_WHEN_PRESENT || tok == token::TOKEN_NEVER || tok == token::TOKEN_ALWAYS || tok == token::TOKEN_WHEN_NOT_PRESENT || tok == token::TOKEN_HOSTNAME_CHAR_SET || tok == token::TOKEN_HOSTNAME_CHAR_REPLACEMENT || tok == token::TOKEN_LOGGERS || 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_TOPLEVEL_JSON || tok == token::TOKEN_TOPLEVEL_DHCP6 || tok == token::TOKEN_SUB_DHCP6 || tok == token::TOKEN_SUB_INTERFACES6 || tok == token::TOKEN_SUB_SUBNET6 || tok == token::TOKEN_SUB_POOL6 || tok == token::TOKEN_SUB_PD_POOL || tok == token::TOKEN_SUB_RESERVATION || tok == token::TOKEN_SUB_OPTION_DEFS || tok == token::TOKEN_SUB_OPTION_DEF || tok == token::TOKEN_SUB_OPTION_DATA || tok == token::TOKEN_SUB_HOOKS_LIBRARY || tok == token::TOKEN_SUB_DHCP_DDNS || tok == token::TOKEN_SUB_CONFIG_CONTROL);
       }
 #else
       symbol_type (int tok, const location_type& l)
         : super_type(token_type (tok), l)
       {
-        YY_ASSERT (tok == token::TOKEN_END || tok == token::TOKEN_PARSER6_error || tok == token::TOKEN_PARSER6_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_DHCP6 || tok == token::TOKEN_DATA_DIRECTORY || tok == token::TOKEN_CONFIG_CONTROL || tok == token::TOKEN_CONFIG_DATABASES || tok == token::TOKEN_CONFIG_FETCH_WAIT_TIME || tok == token::TOKEN_INTERFACES_CONFIG || tok == token::TOKEN_INTERFACES || tok == token::TOKEN_RE_DETECT || tok == token::TOKEN_LEASE_DATABASE || tok == token::TOKEN_HOSTS_DATABASE || tok == token::TOKEN_HOSTS_DATABASES || tok == token::TOKEN_TYPE || tok == token::TOKEN_MEMFILE || tok == token::TOKEN_MYSQL || tok == token::TOKEN_POSTGRESQL || tok == token::TOKEN_CQL || tok == token::TOKEN_USER || tok == token::TOKEN_PASSWORD || tok == token::TOKEN_HOST || tok == token::TOKEN_PORT || tok == token::TOKEN_PERSIST || tok == token::TOKEN_LFC_INTERVAL || tok == token::TOKEN_READONLY || tok == token::TOKEN_CONNECT_TIMEOUT || tok == token::TOKEN_CONTACT_POINTS || tok == token::TOKEN_MAX_RECONNECT_TRIES || tok == token::TOKEN_RECONNECT_WAIT_TIME || tok == token::TOKEN_KEYSPACE || tok == token::TOKEN_CONSISTENCY || tok == token::TOKEN_SERIAL_CONSISTENCY || tok == token::TOKEN_REQUEST_TIMEOUT || tok == token::TOKEN_TCP_KEEPALIVE || tok == token::TOKEN_TCP_NODELAY || tok == token::TOKEN_MAX_ROW_ERRORS || tok == token::TOKEN_PREFERRED_LIFETIME || tok == token::TOKEN_MIN_PREFERRED_LIFETIME || tok == token::TOKEN_MAX_PREFERRED_LIFETIME || tok == token::TOKEN_VALID_LIFETIME || tok == token::TOKEN_MIN_VALID_LIFETIME || tok == token::TOKEN_MAX_VALID_LIFETIME || tok == token::TOKEN_RENEW_TIMER || tok == token::TOKEN_REBIND_TIMER || tok == token::TOKEN_CALCULATE_TEE_TIMES || tok == token::TOKEN_T1_PERCENT || tok == token::TOKEN_T2_PERCENT || tok == token::TOKEN_DECLINE_PROBATION_PERIOD || tok == token::TOKEN_SERVER_TAG || tok == token::TOKEN_STATISTIC_DEFAULT_SAMPLE_COUNT || tok == token::TOKEN_STATISTIC_DEFAULT_SAMPLE_AGE || tok == token::TOKEN_DDNS_SEND_UPDATES || tok == token::TOKEN_DDNS_OVERRIDE_NO_UPDATE || tok == token::TOKEN_DDNS_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_DDNS_REPLACE_CLIENT_NAME || tok == token::TOKEN_DDNS_GENERATED_PREFIX || tok == token::TOKEN_DDNS_QUALIFYING_SUFFIX || tok == token::TOKEN_STORE_EXTENDED_INFO || tok == token::TOKEN_SUBNET6 || tok == token::TOKEN_OPTION_DEF || tok == token::TOKEN_OPTION_DATA || tok == token::TOKEN_NAME || tok == token::TOKEN_DATA || tok == token::TOKEN_CODE || tok == token::TOKEN_SPACE || tok == token::TOKEN_CSV_FORMAT || tok == token::TOKEN_ALWAYS_SEND || tok == token::TOKEN_RECORD_TYPES || tok == token::TOKEN_ENCAPSULATE || tok == token::TOKEN_ARRAY || tok == token::TOKEN_POOLS || tok == token::TOKEN_POOL || tok == token::TOKEN_PD_POOLS || tok == token::TOKEN_PREFIX || tok == token::TOKEN_PREFIX_LEN || tok == token::TOKEN_EXCLUDED_PREFIX || tok == token::TOKEN_EXCLUDED_PREFIX_LEN || tok == token::TOKEN_DELEGATED_LEN || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_SUBNET || tok == token::TOKEN_INTERFACE || tok == token::TOKEN_INTERFACE_ID || tok == token::TOKEN_ID || tok == token::TOKEN_RAPID_COMMIT || tok == token::TOKEN_RESERVATION_MODE || tok == token::TOKEN_DISABLED || tok == token::TOKEN_OUT_OF_POOL || tok == token::TOKEN_GLOBAL || tok == token::TOKEN_ALL || tok == token::TOKEN_SHARED_NETWORKS || tok == token::TOKEN_MAC_SOURCES || tok == token::TOKEN_RELAY_SUPPLIED_OPTIONS || tok == token::TOKEN_HOST_RESERVATION_IDENTIFIERS || tok == token::TOKEN_SANITY_CHECKS || tok == token::TOKEN_LEASE_CHECKS || tok == token::TOKEN_CLIENT_CLASSES || tok == token::TOKEN_REQUIRE_CLIENT_CLASSES || tok == token::TOKEN_TEST || tok == token::TOKEN_ONLY_IF_REQUIRED || tok == token::TOKEN_CLIENT_CLASS || tok == token::TOKEN_RESERVATIONS || tok == token::TOKEN_IP_ADDRESSES || tok == token::TOKEN_PREFIXES || tok == token::TOKEN_DUID || tok == token::TOKEN_HW_ADDRESS || tok == token::TOKEN_HOSTNAME || tok == token::TOKEN_FLEX_ID || tok == token::TOKEN_RELAY || tok == token::TOKEN_IP_ADDRESS || tok == token::TOKEN_HOOKS_LIBRARIES || tok == token::TOKEN_LIBRARY || tok == token::TOKEN_PARAMETERS || tok == token::TOKEN_EXPIRED_LEASES_PROCESSING || tok == token::TOKEN_RECLAIM_TIMER_WAIT_TIME || tok == token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME || tok == token::TOKEN_HOLD_RECLAIMED_TIME || tok == token::TOKEN_MAX_RECLAIM_LEASES || tok == token::TOKEN_MAX_RECLAIM_TIME || tok == token::TOKEN_UNWARNED_RECLAIM_CYCLES || tok == token::TOKEN_SERVER_ID || tok == token::TOKEN_LLT || tok == token::TOKEN_EN || tok == token::TOKEN_LL || tok == token::TOKEN_IDENTIFIER || tok == token::TOKEN_HTYPE || tok == token::TOKEN_TIME || tok == token::TOKEN_ENTERPRISE_ID || tok == token::TOKEN_DHCP4O6_PORT || tok == token::TOKEN_DHCP_MULTI_THREADING || tok == token::TOKEN_ENABLE_MULTI_THREADING || tok == token::TOKEN_THREAD_POOL_SIZE || tok == token::TOKEN_PACKET_QUEUE_SIZE || tok == token::TOKEN_CONTROL_SOCKET || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_DHCP_QUEUE_CONTROL || tok == token::TOKEN_ENABLE_QUEUE || tok == token::TOKEN_QUEUE_TYPE || tok == token::TOKEN_CAPACITY || tok == token::TOKEN_DHCP_DDNS || tok == token::TOKEN_ENABLE_UPDATES || tok == token::TOKEN_QUALIFYING_SUFFIX || tok == token::TOKEN_SERVER_IP || tok == token::TOKEN_SERVER_PORT || tok == token::TOKEN_SENDER_IP || tok == token::TOKEN_SENDER_PORT || tok == token::TOKEN_MAX_QUEUE_SIZE || tok == token::TOKEN_NCR_PROTOCOL || tok == token::TOKEN_NCR_FORMAT || tok == token::TOKEN_OVERRIDE_NO_UPDATE || tok == token::TOKEN_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_REPLACE_CLIENT_NAME || tok == token::TOKEN_GENERATED_PREFIX || tok == token::TOKEN_UDP || tok == token::TOKEN_TCP || tok == token::TOKEN_JSON || tok == token::TOKEN_WHEN_PRESENT || tok == token::TOKEN_NEVER || tok == token::TOKEN_ALWAYS || tok == token::TOKEN_WHEN_NOT_PRESENT || tok == token::TOKEN_HOSTNAME_CHAR_SET || tok == token::TOKEN_HOSTNAME_CHAR_REPLACEMENT || tok == token::TOKEN_LOGGERS || 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_TOPLEVEL_JSON || tok == token::TOKEN_TOPLEVEL_DHCP6 || tok == token::TOKEN_SUB_DHCP6 || tok == token::TOKEN_SUB_INTERFACES6 || tok == token::TOKEN_SUB_SUBNET6 || tok == token::TOKEN_SUB_POOL6 || tok == token::TOKEN_SUB_PD_POOL || tok == token::TOKEN_SUB_RESERVATION || tok == token::TOKEN_SUB_OPTION_DEFS || tok == token::TOKEN_SUB_OPTION_DEF || tok == token::TOKEN_SUB_OPTION_DATA || tok == token::TOKEN_SUB_HOOKS_LIBRARY || tok == token::TOKEN_SUB_DHCP_DDNS || tok == token::TOKEN_SUB_CONFIG_CONTROL);
+        YY_ASSERT (tok == token::TOKEN_END || tok == token::TOKEN_PARSER6_error || tok == token::TOKEN_PARSER6_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_DHCP6 || tok == token::TOKEN_DATA_DIRECTORY || tok == token::TOKEN_CONFIG_CONTROL || tok == token::TOKEN_CONFIG_DATABASES || tok == token::TOKEN_CONFIG_FETCH_WAIT_TIME || tok == token::TOKEN_INTERFACES_CONFIG || tok == token::TOKEN_INTERFACES || tok == token::TOKEN_RE_DETECT || tok == token::TOKEN_LEASE_DATABASE || tok == token::TOKEN_HOSTS_DATABASE || tok == token::TOKEN_HOSTS_DATABASES || tok == token::TOKEN_TYPE || tok == token::TOKEN_MEMFILE || tok == token::TOKEN_MYSQL || tok == token::TOKEN_POSTGRESQL || tok == token::TOKEN_CQL || tok == token::TOKEN_USER || tok == token::TOKEN_PASSWORD || tok == token::TOKEN_HOST || tok == token::TOKEN_PORT || tok == token::TOKEN_PERSIST || tok == token::TOKEN_LFC_INTERVAL || tok == token::TOKEN_READONLY || tok == token::TOKEN_CONNECT_TIMEOUT || tok == token::TOKEN_CONTACT_POINTS || tok == token::TOKEN_MAX_RECONNECT_TRIES || tok == token::TOKEN_RECONNECT_WAIT_TIME || tok == token::TOKEN_KEYSPACE || tok == token::TOKEN_CONSISTENCY || tok == token::TOKEN_SERIAL_CONSISTENCY || tok == token::TOKEN_REQUEST_TIMEOUT || tok == token::TOKEN_TCP_KEEPALIVE || tok == token::TOKEN_TCP_NODELAY || tok == token::TOKEN_MAX_ROW_ERRORS || tok == token::TOKEN_PREFERRED_LIFETIME || tok == token::TOKEN_MIN_PREFERRED_LIFETIME || tok == token::TOKEN_MAX_PREFERRED_LIFETIME || tok == token::TOKEN_VALID_LIFETIME || tok == token::TOKEN_MIN_VALID_LIFETIME || tok == token::TOKEN_MAX_VALID_LIFETIME || tok == token::TOKEN_RENEW_TIMER || tok == token::TOKEN_REBIND_TIMER || tok == token::TOKEN_CALCULATE_TEE_TIMES || tok == token::TOKEN_T1_PERCENT || tok == token::TOKEN_T2_PERCENT || tok == token::TOKEN_CACHE_THRESHOLD || tok == token::TOKEN_CACHE_MAX || tok == token::TOKEN_DECLINE_PROBATION_PERIOD || tok == token::TOKEN_SERVER_TAG || tok == token::TOKEN_STATISTIC_DEFAULT_SAMPLE_COUNT || tok == token::TOKEN_STATISTIC_DEFAULT_SAMPLE_AGE || tok == token::TOKEN_DDNS_SEND_UPDATES || tok == token::TOKEN_DDNS_OVERRIDE_NO_UPDATE || tok == token::TOKEN_DDNS_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_DDNS_REPLACE_CLIENT_NAME || tok == token::TOKEN_DDNS_GENERATED_PREFIX || tok == token::TOKEN_DDNS_QUALIFYING_SUFFIX || tok == token::TOKEN_STORE_EXTENDED_INFO || tok == token::TOKEN_SUBNET6 || tok == token::TOKEN_OPTION_DEF || tok == token::TOKEN_OPTION_DATA || tok == token::TOKEN_NAME || tok == token::TOKEN_DATA || tok == token::TOKEN_CODE || tok == token::TOKEN_SPACE || tok == token::TOKEN_CSV_FORMAT || tok == token::TOKEN_ALWAYS_SEND || tok == token::TOKEN_RECORD_TYPES || tok == token::TOKEN_ENCAPSULATE || tok == token::TOKEN_ARRAY || tok == token::TOKEN_POOLS || tok == token::TOKEN_POOL || tok == token::TOKEN_PD_POOLS || tok == token::TOKEN_PREFIX || tok == token::TOKEN_PREFIX_LEN || tok == token::TOKEN_EXCLUDED_PREFIX || tok == token::TOKEN_EXCLUDED_PREFIX_LEN || tok == token::TOKEN_DELEGATED_LEN || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_SUBNET || tok == token::TOKEN_INTERFACE || tok == token::TOKEN_INTERFACE_ID || tok == token::TOKEN_ID || tok == token::TOKEN_RAPID_COMMIT || tok == token::TOKEN_RESERVATION_MODE || tok == token::TOKEN_DISABLED || tok == token::TOKEN_OUT_OF_POOL || tok == token::TOKEN_GLOBAL || tok == token::TOKEN_ALL || tok == token::TOKEN_SHARED_NETWORKS || tok == token::TOKEN_MAC_SOURCES || tok == token::TOKEN_RELAY_SUPPLIED_OPTIONS || tok == token::TOKEN_HOST_RESERVATION_IDENTIFIERS || tok == token::TOKEN_SANITY_CHECKS || tok == token::TOKEN_LEASE_CHECKS || tok == token::TOKEN_CLIENT_CLASSES || tok == token::TOKEN_REQUIRE_CLIENT_CLASSES || tok == token::TOKEN_TEST || tok == token::TOKEN_ONLY_IF_REQUIRED || tok == token::TOKEN_CLIENT_CLASS || tok == token::TOKEN_RESERVATIONS || tok == token::TOKEN_IP_ADDRESSES || tok == token::TOKEN_PREFIXES || tok == token::TOKEN_DUID || tok == token::TOKEN_HW_ADDRESS || tok == token::TOKEN_HOSTNAME || tok == token::TOKEN_FLEX_ID || tok == token::TOKEN_RELAY || tok == token::TOKEN_IP_ADDRESS || tok == token::TOKEN_HOOKS_LIBRARIES || tok == token::TOKEN_LIBRARY || tok == token::TOKEN_PARAMETERS || tok == token::TOKEN_EXPIRED_LEASES_PROCESSING || tok == token::TOKEN_RECLAIM_TIMER_WAIT_TIME || tok == token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME || tok == token::TOKEN_HOLD_RECLAIMED_TIME || tok == token::TOKEN_MAX_RECLAIM_LEASES || tok == token::TOKEN_MAX_RECLAIM_TIME || tok == token::TOKEN_UNWARNED_RECLAIM_CYCLES || tok == token::TOKEN_SERVER_ID || tok == token::TOKEN_LLT || tok == token::TOKEN_EN || tok == token::TOKEN_LL || tok == token::TOKEN_IDENTIFIER || tok == token::TOKEN_HTYPE || tok == token::TOKEN_TIME || tok == token::TOKEN_ENTERPRISE_ID || tok == token::TOKEN_DHCP4O6_PORT || tok == token::TOKEN_DHCP_MULTI_THREADING || tok == token::TOKEN_ENABLE_MULTI_THREADING || tok == token::TOKEN_THREAD_POOL_SIZE || tok == token::TOKEN_PACKET_QUEUE_SIZE || tok == token::TOKEN_CONTROL_SOCKET || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_DHCP_QUEUE_CONTROL || tok == token::TOKEN_ENABLE_QUEUE || tok == token::TOKEN_QUEUE_TYPE || tok == token::TOKEN_CAPACITY || tok == token::TOKEN_DHCP_DDNS || tok == token::TOKEN_ENABLE_UPDATES || tok == token::TOKEN_QUALIFYING_SUFFIX || tok == token::TOKEN_SERVER_IP || tok == token::TOKEN_SERVER_PORT || tok == token::TOKEN_SENDER_IP || tok == token::TOKEN_SENDER_PORT || tok == token::TOKEN_MAX_QUEUE_SIZE || tok == token::TOKEN_NCR_PROTOCOL || tok == token::TOKEN_NCR_FORMAT || tok == token::TOKEN_OVERRIDE_NO_UPDATE || tok == token::TOKEN_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_REPLACE_CLIENT_NAME || tok == token::TOKEN_GENERATED_PREFIX || tok == token::TOKEN_UDP || tok == token::TOKEN_TCP || tok == token::TOKEN_JSON || tok == token::TOKEN_WHEN_PRESENT || tok == token::TOKEN_NEVER || tok == token::TOKEN_ALWAYS || tok == token::TOKEN_WHEN_NOT_PRESENT || tok == token::TOKEN_HOSTNAME_CHAR_SET || tok == token::TOKEN_HOSTNAME_CHAR_REPLACEMENT || tok == token::TOKEN_LOGGERS || 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_TOPLEVEL_JSON || tok == token::TOKEN_TOPLEVEL_DHCP6 || tok == token::TOKEN_SUB_DHCP6 || tok == token::TOKEN_SUB_INTERFACES6 || tok == token::TOKEN_SUB_SUBNET6 || tok == token::TOKEN_SUB_POOL6 || tok == token::TOKEN_SUB_PD_POOL || tok == token::TOKEN_SUB_RESERVATION || tok == token::TOKEN_SUB_OPTION_DEFS || tok == token::TOKEN_SUB_OPTION_DEF || tok == token::TOKEN_SUB_OPTION_DATA || tok == token::TOKEN_SUB_HOOKS_LIBRARY || tok == token::TOKEN_SUB_DHCP_DDNS || tok == token::TOKEN_SUB_CONFIG_CONTROL);
       }
 #endif
 #if 201103L <= YY_CPLUSPLUS
@@ -2540,6 +2546,36 @@ switch (yykind)
         return symbol_type (token::TOKEN_T2_PERCENT, l);
       }
 #endif
+#if 201103L <= YY_CPLUSPLUS
+      static
+      symbol_type
+      make_CACHE_THRESHOLD (location_type l)
+      {
+        return symbol_type (token::TOKEN_CACHE_THRESHOLD, std::move (l));
+      }
+#else
+      static
+      symbol_type
+      make_CACHE_THRESHOLD (const location_type& l)
+      {
+        return symbol_type (token::TOKEN_CACHE_THRESHOLD, l);
+      }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+      static
+      symbol_type
+      make_CACHE_MAX (location_type l)
+      {
+        return symbol_type (token::TOKEN_CACHE_MAX, std::move (l));
+      }
+#else
+      static
+      symbol_type
+      make_CACHE_MAX (const location_type& l)
+      {
+        return symbol_type (token::TOKEN_CACHE_MAX, l);
+      }
+#endif
 #if 201103L <= YY_CPLUSPLUS
       static
       symbol_type
@@ -5015,8 +5051,8 @@ switch (yykind)
     /// Constants.
     enum
     {
-      yylast_ = 1201,     ///< Last index in yytable_.
-      yynnts_ = 422,  ///< Number of nonterminal symbols.
+      yylast_ = 1231,     ///< Last index in yytable_.
+      yynnts_ = 424,  ///< Number of nonterminal symbols.
       yyfinal_ = 30 ///< Termination state number.
     };
 
@@ -5081,10 +5117,10 @@ switch (yykind)
      165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
      175,   176,   177,   178,   179,   180,   181,   182,   183,   184,
      185,   186,   187,   188,   189,   190,   191,   192,   193,   194,
-     195,   196,   197
+     195,   196,   197,   198,   199
     };
     // Last valid token kind.
-    const int code_max = 452;
+    const int code_max = 454;
 
     if (t <= 0)
       return symbol_kind::S_YYEOF;
@@ -5247,7 +5283,7 @@ switch (yykind)
 
 #line 14 "dhcp6_parser.yy"
 } } // isc::dhcp
-#line 5251 "dhcp6_parser.h"
+#line 5287 "dhcp6_parser.h"