]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[5484] Bison grammar regenerated.
authorTomek Mrugalski <tomasz@isc.org>
Wed, 7 Mar 2018 12:50:50 +0000 (13:50 +0100)
committerTomek Mrugalski <tomasz@isc.org>
Wed, 7 Mar 2018 12:50:50 +0000 (13:50 +0100)
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 25f15adda84c1dd14804be9ab1b5ce44eecad0bb..387f4f8240f1d43fe9cb92c4a9fa92298c2142c6 100644 (file)
@@ -1,27 +1,22 @@
-#line 1 "dhcp4_lexer.cc"
+#line 2 "dhcp4_lexer.cc"
 
-#line 3 "dhcp4_lexer.cc"
+#line 4 "dhcp4_lexer.cc"
 
 #define  YY_INT_ALIGNED short int
 
 /* A lexical scanner generated by flex */
 
 /* %not-for-header */
+
 /* %if-c-only */
 /* %if-not-reentrant */
 #define yy_create_buffer parser4__create_buffer
 #define yy_delete_buffer parser4__delete_buffer
-#define yy_scan_buffer parser4__scan_buffer
-#define yy_scan_string parser4__scan_string
-#define yy_scan_bytes parser4__scan_bytes
+#define yy_flex_debug parser4__flex_debug
 #define yy_init_buffer parser4__init_buffer
 #define yy_flush_buffer parser4__flush_buffer
 #define yy_load_buffer_state parser4__load_buffer_state
 #define yy_switch_to_buffer parser4__switch_to_buffer
-#define yypush_buffer_state parser4_push_buffer_state
-#define yypop_buffer_state parser4_pop_buffer_state
-#define yyensure_buffer_stack parser4_ensure_buffer_stack
-#define yy_flex_debug parser4__flex_debug
 #define yyin parser4_in
 #define yyleng parser4_leng
 #define yylex parser4_lex
@@ -41,7 +36,7 @@
 #define FLEX_SCANNER
 #define YY_FLEX_MAJOR_VERSION 2
 #define YY_FLEX_MINOR_VERSION 6
-#define YY_FLEX_SUBMINOR_VERSION 4
+#define YY_FLEX_SUBMINOR_VERSION 1
 #if YY_FLEX_SUBMINOR_VERSION > 0
 #define FLEX_BETA
 #endif
 /* %endif */
 
 /* %if-c-only */
-#ifdef yy_create_buffer
-#define parser4__create_buffer_ALREADY_DEFINED
-#else
-#define yy_create_buffer parser4__create_buffer
-#endif
-
-#ifdef yy_delete_buffer
-#define parser4__delete_buffer_ALREADY_DEFINED
-#else
-#define yy_delete_buffer parser4__delete_buffer
-#endif
-
-#ifdef yy_scan_buffer
-#define parser4__scan_buffer_ALREADY_DEFINED
-#else
-#define yy_scan_buffer parser4__scan_buffer
-#endif
-
-#ifdef yy_scan_string
-#define parser4__scan_string_ALREADY_DEFINED
-#else
-#define yy_scan_string parser4__scan_string
-#endif
-
-#ifdef yy_scan_bytes
-#define parser4__scan_bytes_ALREADY_DEFINED
-#else
-#define yy_scan_bytes parser4__scan_bytes
-#endif
-
-#ifdef yy_init_buffer
-#define parser4__init_buffer_ALREADY_DEFINED
-#else
-#define yy_init_buffer parser4__init_buffer
-#endif
-
-#ifdef yy_flush_buffer
-#define parser4__flush_buffer_ALREADY_DEFINED
-#else
-#define yy_flush_buffer parser4__flush_buffer
-#endif
-
-#ifdef yy_load_buffer_state
-#define parser4__load_buffer_state_ALREADY_DEFINED
-#else
-#define yy_load_buffer_state parser4__load_buffer_state
-#endif
-
-#ifdef yy_switch_to_buffer
-#define parser4__switch_to_buffer_ALREADY_DEFINED
-#else
-#define yy_switch_to_buffer parser4__switch_to_buffer
-#endif
-
-#ifdef yypush_buffer_state
-#define parser4_push_buffer_state_ALREADY_DEFINED
-#else
-#define yypush_buffer_state parser4_push_buffer_state
-#endif
-
-#ifdef yypop_buffer_state
-#define parser4_pop_buffer_state_ALREADY_DEFINED
-#else
-#define yypop_buffer_state parser4_pop_buffer_state
-#endif
-
-#ifdef yyensure_buffer_stack
-#define parser4_ensure_buffer_stack_ALREADY_DEFINED
-#else
-#define yyensure_buffer_stack parser4_ensure_buffer_stack
-#endif
-
-#ifdef yylex
-#define parser4_lex_ALREADY_DEFINED
-#else
-#define yylex parser4_lex
-#endif
-
-#ifdef yyrestart
-#define parser4_restart_ALREADY_DEFINED
-#else
-#define yyrestart parser4_restart
-#endif
-
-#ifdef yylex_init
-#define parser4_lex_init_ALREADY_DEFINED
-#else
-#define yylex_init parser4_lex_init
-#endif
-
-#ifdef yylex_init_extra
-#define parser4_lex_init_extra_ALREADY_DEFINED
-#else
-#define yylex_init_extra parser4_lex_init_extra
-#endif
-
-#ifdef yylex_destroy
-#define parser4_lex_destroy_ALREADY_DEFINED
-#else
-#define yylex_destroy parser4_lex_destroy
-#endif
-
-#ifdef yyget_debug
-#define parser4_get_debug_ALREADY_DEFINED
-#else
-#define yyget_debug parser4_get_debug
-#endif
-
-#ifdef yyset_debug
-#define parser4_set_debug_ALREADY_DEFINED
-#else
-#define yyset_debug parser4_set_debug
-#endif
-
-#ifdef yyget_extra
-#define parser4_get_extra_ALREADY_DEFINED
-#else
-#define yyget_extra parser4_get_extra
-#endif
-
-#ifdef yyset_extra
-#define parser4_set_extra_ALREADY_DEFINED
-#else
-#define yyset_extra parser4_set_extra
-#endif
-
-#ifdef yyget_in
-#define parser4_get_in_ALREADY_DEFINED
-#else
-#define yyget_in parser4_get_in
-#endif
-
-#ifdef yyset_in
-#define parser4_set_in_ALREADY_DEFINED
-#else
-#define yyset_in parser4_set_in
-#endif
-
-#ifdef yyget_out
-#define parser4_get_out_ALREADY_DEFINED
-#else
-#define yyget_out parser4_get_out
-#endif
-
-#ifdef yyset_out
-#define parser4_set_out_ALREADY_DEFINED
-#else
-#define yyset_out parser4_set_out
-#endif
-
-#ifdef yyget_leng
-#define parser4_get_leng_ALREADY_DEFINED
-#else
-#define yyget_leng parser4_get_leng
-#endif
-
-#ifdef yyget_text
-#define parser4_get_text_ALREADY_DEFINED
-#else
-#define yyget_text parser4_get_text
-#endif
-
-#ifdef yyget_lineno
-#define parser4_get_lineno_ALREADY_DEFINED
-#else
-#define yyget_lineno parser4_get_lineno
-#endif
-
-#ifdef yyset_lineno
-#define parser4_set_lineno_ALREADY_DEFINED
-#else
-#define yyset_lineno parser4_set_lineno
-#endif
-
-#ifdef yywrap
-#define parser4_wrap_ALREADY_DEFINED
-#else
-#define yywrap parser4_wrap
-#endif
-
+    
 /* %endif */
 
-#ifdef yyalloc
-#define parser4_alloc_ALREADY_DEFINED
-#else
-#define yyalloc parser4_alloc
-#endif
-
-#ifdef yyrealloc
-#define parser4_realloc_ALREADY_DEFINED
-#else
-#define yyrealloc parser4_realloc
-#endif
-
-#ifdef yyfree
-#define parser4_free_ALREADY_DEFINED
-#else
-#define yyfree parser4_free
-#endif
-
 /* %if-c-only */
 
-#ifdef yytext
-#define parser4_text_ALREADY_DEFINED
-#else
-#define yytext parser4_text
-#endif
-
-#ifdef yyleng
-#define parser4_leng_ALREADY_DEFINED
-#else
-#define yyleng parser4_leng
-#endif
-
-#ifdef yyin
-#define parser4_in_ALREADY_DEFINED
-#else
-#define yyin parser4_in
-#endif
-
-#ifdef yyout
-#define parser4_out_ALREADY_DEFINED
-#else
-#define yyout parser4_out
-#endif
-
-#ifdef yy_flex_debug
-#define parser4__flex_debug_ALREADY_DEFINED
-#else
-#define yy_flex_debug parser4__flex_debug
-#endif
-
-#ifdef yylineno
-#define parser4_lineno_ALREADY_DEFINED
-#else
-#define yylineno parser4_lineno
-#endif
-
 /* %endif */
 
 /* First, we deal with  platform-specific or compiler-specific issues. */
@@ -365,17 +127,12 @@ typedef unsigned int flex_uint32_t;
 #define UINT32_MAX             (4294967295U)
 #endif
 
-#ifndef SIZE_MAX
-#define SIZE_MAX               (~(size_t)0)
-#endif
-
 #endif /* ! C99 */
 
 #endif /* ! FLEXINT_H */
 
 /* %endif */
 
-/* begin standard C++ headers. */
 /* %if-c++-only */
 /* %endif */
 
@@ -389,15 +146,19 @@ typedef unsigned int flex_uint32_t;
 #endif
 
 /* %not-for-header */
+
 /* Returned upon end-of-file. */
 #define YY_NULL 0
 /* %ok-for-header */
 
 /* %not-for-header */
-/* Promotes a possibly negative, possibly signed char to an
- *   integer in range [0..255] for use as an array index.
+
+/* Promotes a possibly negative, possibly signed char to an unsigned
+ * integer for use as an array index.  If the signed char is negative,
+ * we want to instead treat it as an 8-bit unsigned char, hence the
+ * double cast.
  */
-#define YY_SC_TO_UI(c) ((YY_CHAR) (c))
+#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
 /* %ok-for-header */
 
 /* %if-reentrant */
@@ -412,16 +173,20 @@ typedef unsigned int flex_uint32_t;
  * definition of BEGIN.
  */
 #define BEGIN (yy_start) = 1 + 2 *
+
 /* Translate the current start state into a value that can be later handed
  * to BEGIN to return to the state.  The YYSTATE alias is for lex
  * compatibility.
  */
 #define YY_START (((yy_start) - 1) / 2)
 #define YYSTATE YY_START
+
 /* Action number for EOF rule of a given start state. */
 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
+
 /* Special action meaning "start processing a new file". */
-#define YY_NEW_FILE yyrestart( yyin  )
+#define YY_NEW_FILE parser4_restart(parser4_in  )
+
 #define YY_END_OF_BUFFER_CHAR 0
 
 /* Size of default input buffer. */
@@ -452,19 +217,19 @@ typedef size_t yy_size_t;
 #endif
 
 /* %if-not-reentrant */
-extern int yyleng;
+extern int parser4_leng;
 /* %endif */
 
 /* %if-c-only */
 /* %if-not-reentrant */
-extern FILE *yyin, *yyout;
+extern FILE *parser4_in, *parser4_out;
 /* %endif */
 /* %endif */
 
 #define EOB_ACT_CONTINUE_SCAN 0
 #define EOB_ACT_END_OF_FILE 1
 #define EOB_ACT_LAST_MATCH 2
-    
+
     #define YY_LESS_LINENO(n)
     #define YY_LINENO_REWIND_TO(ptr)
     
@@ -472,15 +237,16 @@ extern FILE *yyin, *yyout;
 #define yyless(n) \
        do \
                { \
-               /* Undo effects of setting up yytext. */ \
+               /* Undo effects of setting up parser4_text. */ \
         int yyless_macro_arg = (n); \
         YY_LESS_LINENO(yyless_macro_arg);\
                *yy_cp = (yy_hold_char); \
                YY_RESTORE_YY_MORE_OFFSET \
                (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
-               YY_DO_BEFORE_ACTION; /* set up yytext again */ \
+               YY_DO_BEFORE_ACTION; /* set up parser4_text again */ \
                } \
        while ( 0 )
+
 #define unput(c) yyunput( c, (yytext_ptr)  )
 
 #ifndef YY_STRUCT_YY_BUFFER_STATE
@@ -545,8 +311,8 @@ struct yy_buffer_state
         * possible backing-up.
         *
         * When we actually see the EOF, we change the status to "new"
-        * (via yyrestart()), so that the user can continue scanning by
-        * just pointing yyin at a new input file.
+        * (via parser4_restart()), so that the user can continue scanning by
+        * just pointing parser4_in at a new input file.
         */
 #define YY_BUFFER_EOF_PENDING 2
 
@@ -555,6 +321,7 @@ struct yy_buffer_state
 
 /* %if-c-only Standard (non-C++) definition */
 /* %not-for-header */
+
 /* %if-not-reentrant */
 
 /* Stack of input buffers. */
@@ -575,6 +342,7 @@ static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */
 #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
                           ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
                           : NULL)
+
 /* Same as previous macro, but useful when we know that the buffer stack is not
  * NULL or when we need an lvalue. For internal use only.
  */
@@ -584,115 +352,123 @@ static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */
 
 /* %if-not-reentrant */
 /* %not-for-header */
-/* yy_hold_char holds the character lost when yytext is formed. */
+
+/* yy_hold_char holds the character lost when parser4_text is formed. */
 static char yy_hold_char;
 static int yy_n_chars;         /* number of characters read into yy_ch_buf */
-int yyleng;
+int parser4_leng;
 
 /* Points to current character in buffer. */
 static char *yy_c_buf_p = NULL;
 static int yy_init = 0;                /* whether we need to initialize */
 static int yy_start = 0;       /* start state number */
 
-/* Flag which is used to allow yywrap()'s to do buffer switches
- * instead of setting up a fresh yyin.  A bit of a hack ...
+/* Flag which is used to allow parser4_wrap()'s to do buffer switches
+ * instead of setting up a fresh parser4_in.  A bit of a hack ...
  */
 static int yy_did_buffer_switch_on_eof;
 /* %ok-for-header */
 
 /* %endif */
 
-void yyrestart ( FILE *input_file  );
-void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer  );
-YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size  );
-void yy_delete_buffer ( YY_BUFFER_STATE b  );
-void yy_flush_buffer ( YY_BUFFER_STATE b  );
-void yypush_buffer_state ( YY_BUFFER_STATE new_buffer  );
-void yypop_buffer_state ( void );
+void parser4_restart (FILE *input_file  );
+void parser4__switch_to_buffer (YY_BUFFER_STATE new_buffer  );
+YY_BUFFER_STATE parser4__create_buffer (FILE *file,int size  );
+void parser4__delete_buffer (YY_BUFFER_STATE b  );
+void parser4__flush_buffer (YY_BUFFER_STATE b  );
+void parser4_push_buffer_state (YY_BUFFER_STATE new_buffer  );
+void parser4_pop_buffer_state (void );
 
-static void yyensure_buffer_stack ( void );
-static void yy_load_buffer_state ( void );
-static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file  );
-#define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER )
+static void parser4_ensure_buffer_stack (void );
+static void parser4__load_buffer_state (void );
+static void parser4__init_buffer (YY_BUFFER_STATE b,FILE *file  );
 
-YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size  );
-YY_BUFFER_STATE yy_scan_string ( const char *yy_str  );
-YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len  );
+#define YY_FLUSH_BUFFER parser4__flush_buffer(YY_CURRENT_BUFFER )
+
+YY_BUFFER_STATE parser4__scan_buffer (char *base,yy_size_t size  );
+YY_BUFFER_STATE parser4__scan_string (yyconst char *yy_str  );
+YY_BUFFER_STATE parser4__scan_bytes (yyconst char *bytes,int len  );
 
 /* %endif */
 
-void *yyalloc ( yy_size_t  );
-void *yyrealloc ( void *, yy_size_t  );
-void yyfree ( void *  );
+void *parser4_alloc (yy_size_t  );
+void *parser4_realloc (void *,yy_size_t  );
+void parser4_free (void *  );
+
+#define yy_new_buffer parser4__create_buffer
 
-#define yy_new_buffer yy_create_buffer
 #define yy_set_interactive(is_interactive) \
        { \
        if ( ! YY_CURRENT_BUFFER ){ \
-        yyensure_buffer_stack (); \
+        parser4_ensure_buffer_stack (); \
                YY_CURRENT_BUFFER_LVALUE =    \
-            yy_create_buffer( yyin, YY_BUF_SIZE ); \
+            parser4__create_buffer(parser4_in,YY_BUF_SIZE ); \
        } \
        YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
        }
+
 #define yy_set_bol(at_bol) \
        { \
        if ( ! YY_CURRENT_BUFFER ){\
-        yyensure_buffer_stack (); \
+        parser4_ensure_buffer_stack (); \
                YY_CURRENT_BUFFER_LVALUE =    \
-            yy_create_buffer( yyin, YY_BUF_SIZE ); \
+            parser4__create_buffer(parser4_in,YY_BUF_SIZE ); \
        } \
        YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
        }
+
 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
 
-/* %% [1.0] yytext/yyin/yyout/yy_state_type/yylineno etc. def's & init go here */
+/* %% [1.0] parser4_text/parser4_in/parser4_out/yy_state_type/parser4_lineno etc. def's & init go here */
 /* Begin user sect3 */
 
 #define parser4_wrap() (/*CONSTCOND*/1)
 #define YY_SKIP_YYWRAP
 
 #define FLEX_DEBUG
-typedef flex_uint8_t YY_CHAR;
 
-FILE *yyin = NULL, *yyout = NULL;
+typedef unsigned char YY_CHAR;
+
+FILE *parser4_in = NULL, *parser4_out = NULL;
 
 typedef int yy_state_type;
 
-extern int yylineno;
-int yylineno = 1;
+extern int parser4_lineno;
+
+int parser4_lineno = 1;
 
-extern char *yytext;
+extern char *parser4_text;
 #ifdef yytext_ptr
 #undef yytext_ptr
 #endif
-#define yytext_ptr yytext
+#define yytext_ptr parser4_text
 
 /* %% [1.5] DFA */
 
 /* %if-c-only Standard (non-C++) definition */
 
-static yy_state_type yy_get_previous_state ( void );
-static yy_state_type yy_try_NUL_trans ( yy_state_type current_state  );
-static int yy_get_next_buffer ( void );
-static void yynoreturn yy_fatal_error ( const char* msg  );
+static yy_state_type yy_get_previous_state (void );
+static yy_state_type yy_try_NUL_trans (yy_state_type current_state  );
+static int yy_get_next_buffer (void );
+static void yynoreturn yy_fatal_error (yyconst char* msg  );
 
 /* %endif */
 
 /* Done after the current pattern has been matched and before the
- * corresponding action - sets up yytext.
+ * corresponding action - sets up parser4_text.
  */
 #define YY_DO_BEFORE_ACTION \
        (yytext_ptr) = yy_bp; \
-/* %% [2.0] code to fiddle yytext and yyleng for yymore() goes here \ */\
-       yyleng = (int) (yy_cp - yy_bp); \
+/* %% [2.0] code to fiddle parser4_text and parser4_leng for yymore() goes here \ */\
+       parser4_leng = (int) (yy_cp - yy_bp); \
        (yy_hold_char) = *yy_cp; \
        *yy_cp = '\0'; \
-/* %% [3.0] code to copy yytext_ptr to yytext[] goes here, if %array \ */\
+/* %% [3.0] code to copy yytext_ptr to parser4_text[] 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 159
-#define YY_END_OF_BUFFER 160
+#define YY_NUM_RULES 163
+#define YY_END_OF_BUFFER 164
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -700,154 +476,159 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static const flex_int16_t yy_accept[1292] =
+static yyconst flex_int16_t yy_accept[1343] =
     {   0,
-      152,  152,    0,    0,    0,    0,    0,    0,    0,    0,
-      160,  158,   10,   11,  158,    1,  152,  149,  152,  152,
-      158,  151,  150,  158,  158,  158,  158,  158,  145,  146,
-      158,  158,  158,  147,  148,    5,    5,    5,  158,  158,
-      158,   10,   11,    0,    0,  141,    0,    0,    0,    0,
+      156,  156,    0,    0,    0,    0,    0,    0,    0,    0,
+      164,  162,   10,   11,  162,    1,  156,  153,  156,  156,
+      162,  155,  154,  162,  162,  162,  162,  162,  149,  150,
+      162,  162,  162,  151,  152,    5,    5,    5,  162,  162,
+      162,   10,   11,    0,    0,  145,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    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,
-      152,  152,    0,  151,  152,    3,    2,    6,    0,  152,
+      156,  156,    0,  155,  156,    3,    2,    6,    0,  156,
         0,    0,    0,    0,    0,    0,    4,    0,    0,    9,
 
-        0,  142,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  144,    0,    0,    0,
+        0,  146,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  148,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    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,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,  143,    0,    0,
+        0,    0,    0,    0,    0,    2,    0,    0,    0,    0,
+        0,    0,    0,    8,    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,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   57,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   61,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  157,  155,
-        0,  154,  153,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  122,    0,  121,    0,    0,   63,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,  161,  159,    0,  158,  157,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  126,    0,  125,    0,
 
-        0,    0,    0,    0,    0,    0,    0,    0,   29,    0,
+        0,   67,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,   29,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   65,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   61,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   15,    0,    0,
+       15,    0,    0,    0,    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,
-        0,    0,  156,  153,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  123,    0,    0,  125,    0,    0,
+        0,    0,   16,    0,    0,    0,    0,  160,  157,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  127,
 
-        0,    0,    0,    0,    0,   64,    0,    0,    0,    0,
-        0,   48,    0,    0,    0,    0,    0,   79,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   32,    0,    0,
+        0,    0,  129,    0,    0,    0,    0,    0,    0,    0,
+       68,    0,    0,    0,    0,    0,   52,    0,    0,    0,
+        0,    0,   83,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   32,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   47,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   51,    0,
-       33,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,   51,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   55,    0,   33,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   77,   25,    0,    0,   30,    0,    0,    0,    0,
-        0,    0,    0,    0,   12,  130,    0,  127,    0,  126,
-
-        0,    0,    0,   89,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   71,    0,    0,    0,    0,    0,    0,
+       81,   25,    0,    0,   30,    0,    0,    0,    0,    0,
+
+        0,    0,    0,   12,  134,    0,  131,    0,  130,    0,
+        0,    0,   93,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,   27,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   50,    0,    0,
-        0,    0,    0,    0,    0,    0,   90,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   85,    0,    0,    0,
-        0,    0,    7,    0,    0,  128,    0,    0,    0,    0,
+        0,    0,   75,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   27,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   54,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   94,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   89,    0,    0,
+        0,    0,    0,    0,    0,    7,    0,    0,  132,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    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,   69,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   77,    0,    0,    0,    0,    0,    0,
+        0,   73,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   54,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   66,    0,    0,    0,    0,    0,    0,    0,    0,
-       53,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,   83,    0,    0,    0,    0,
-
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   94,
-       67,    0,    0,    0,   72,   26,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   34,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   58,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   70,    0,
+        0,    0,    0,    0,    0,    0,    0,   57,    0,    0,
+
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   43,    0,
-        0,    0,    0,    0,    0,    0,  131,    0,    0,    0,
+        0,    0,   87,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   98,   71,    0,    0,
+        0,   76,   26,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   34,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   60,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   84,    0,    0,    0,    0,   37,
+        0,    0,    0,    0,    0,    0,    0,   47,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  135,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,   64,    0,    0,    0,    0,
 
-        0,    0,    0,    0,    0,   31,    0,    0,    0,    0,
-       24,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   74,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,   88,    0,    0,    0,    0,
+       37,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   31,    0,    0,    0,
+        0,   24,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   78,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   81,    0,    0,    0,    0,    0,    0,  106,    0,
-        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,   85,    0,    0,    0,
+        0,    0,    0,  110,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   59,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,   21,    0,    0,    0,    0,
-        0,    0,    0,  111,    0,    0,  109,    0,    0,    0,
 
-        0,    0,    0,    0,    0,    0,  135,    0,    0,    0,
-        0,    0,    0,   82,    0,    0,    0,    0,   86,   70,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   80,    0,   20,    0,   91,    0,    0,
-        0,    0,    0,  115,    0,    0,    0,   45,    0,    0,
-        0,    0,    0,   93,   28,    0,    0,    0,    0,    0,
+       21,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      115,    0,    0,  113,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  139,    0,    0,    0,    0,
+        0,    0,   86,    0,    0,    0,    0,   90,   74,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   49,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       88,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-
-        0,    0,    0,    0,    0,    0,  138,   46,   62,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   40,    0,
-        0,    0,    0,  112,    0,  110,    0,  105,  104,    0,
-       19,    0,    0,    0,    0,    0,  124,    0,    0,   76,
-        0,    0,    0,    0,    0,    0,  102,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   56,    0,    0,   35,
-        0,    0,    0,    0,  114,    0,    0,    0,    0,    0,
-       58,   41,    0,   87,    0,    0,   78,    0,    0,    0,
-        0,   52,    0,  133,    0,  132,    0,    0,    0,    0,
+        0,    0,   84,    0,   20,    0,   95,    0,    0,    0,
+        0,    0,  119,    0,    0,    0,   49,    0,    0,    0,
+        0,    0,   97,   28,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   53,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   92,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  142,
+       50,   66,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   44,    0,    0,    0,    0,    0,  116,    0,
+      114,    0,  109,  108,    0,   41,    0,   19,    0,    0,
+        0,    0,    0,  128,    0,    0,   80,    0,    0,    0,
+        0,    0,    0,  106,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   60,    0,    0,   35,    0,    0,    0,
+
+        0,  118,    0,    0,    0,    0,    0,   62,   45,    0,
+        0,   91,    0,    0,    0,   82,    0,    0,    0,    0,
+        0,   56,    0,  137,    0,  136,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  140,   75,    0,   38,
-      103,    0,    0,  136,  107,    0,    0,    0,    0,    0,
-        0,   23,    0,   22,    0,  113,    0,    0,    0,   68,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       39,    0,    0,    0,   36,    0,    0,    0,    0,    0,
-        0,   92,    0,    0,  137,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   18,  139,   44,    0,  134,  129,
-        0,    0,   14,    0,    0,  120,    0,    0,    0,    0,
-
-      100,    0,    0,    0,    0,    0,    0,   59,    0,    0,
-        0,    0,    0,    0,    0,   13,    0,    0,    0,    0,
-      108,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       99,   17,    0,  117,    0,    0,    0,  116,    0,    0,
-        0,   98,    0,    0,    0,  119,    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,   96,  101,   42,    0,    0,    0,   95,    0,
-        0,    0,    0,    0,    0,    0,   65,    0,    0,   97,
-        0
+        0,    0,    0,   40,    0,    0,    0,    0,    0,  144,
+       79,    0,   42,  107,    0,    0,  140,  111,    0,    0,
+        0,    0,    0,    0,   23,    0,   22,    0,  117,    0,
+        0,    0,   72,    0,    0,    0,    0,    0,    0,    0,
+
+        0,    0,    0,    0,    0,   43,    0,    0,    0,   36,
+        0,    0,    0,    0,    0,    0,   96,    0,    0,  141,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   39,
+        0,   18,  143,   48,    0,  138,  133,    0,    0,   14,
+        0,    0,  124,    0,    0,    0,    0,  104,    0,    0,
+        0,    0,    0,    0,    0,   63,    0,    0,    0,    0,
+        0,    0,    0,   13,    0,    0,    0,    0,  112,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  103,
+       17,    0,  121,    0,    0,    0,    0,  120,    0,    0,
+        0,  102,    0,    0,    0,   38,  123,    0,    0,    0,
 
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  122,    0,    0,    0,
+        0,    0,    0,  100,  105,   46,    0,    0,    0,   99,
+        0,    0,    0,    0,    0,    0,    0,   69,    0,    0,
+      101,    0
     } ;
 
-static const YY_CHAR yy_ec[256] =
+static yyconst YY_CHAR yy_ec[256] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
         1,    1,    2,    1,    1,    1,    1,    1,    1,    1,
@@ -879,7 +660,7 @@ static const YY_CHAR yy_ec[256] =
         5,    5,    5,    5,    5
     } ;
 
-static const YY_CHAR yy_meta[72] =
+static yyconst YY_CHAR yy_meta[72] =
     {   0,
         1,    1,    2,    3,    3,    4,    3,    3,    3,    3,
         3,    3,    3,    5,    5,    5,    3,    3,    3,    3,
@@ -891,319 +672,329 @@ static const YY_CHAR yy_meta[72] =
         3
     } ;
 
-static const flex_int16_t yy_base[1304] =
+static yyconst flex_uint16_t yy_base[1355] =
     {   0,
         0,   70,   19,   29,   41,   49,   52,   58,   87,   95,
-     1653, 1654,   32, 1649,  141,    0,  201, 1654,  206,   88,
-       11,  213, 1654, 1631,  114,   25,    2,    6, 1654, 1654,
-       73,   11,   17, 1654, 1654, 1654,  104, 1637, 1592,    0,
-     1629,  107, 1644,  217,  247, 1654, 1588,  185, 1587, 1593,
-       93,   58, 1585,   91,  211,  195,   14,  273,  195, 1584,
-      181,  275,  202,  209, 1593,   66,  188, 1592,  232,  219,
-      296,  282,  207, 1575,   78,  301,  302,  296, 1594,    0,
-      341,  357,  365,  371,  376, 1654,    0, 1654,  301,  379,
-      223,  299,  196,  309,  322,  210, 1654, 1591, 1630, 1654,
-
-      283, 1654,  391, 1619,  295, 1577, 1587,  333,  344, 1582,
-      341,  352,  362,  368,  374, 1625,    0,  442,  365, 1569,
-     1571, 1567, 1575,  360, 1571, 1560, 1561,   89, 1577, 1560,
-     1569, 1569,  364, 1560,  361, 1561,  375, 1606, 1610, 1552,
-     1603, 1545, 1568, 1565, 1565, 1559,  351, 1552, 1545, 1550,
-     1544,  376, 1555, 1540, 1539, 1553,  306, 1539,  377, 1555,
-       72,  438, 1542,  385, 1553, 1550, 1551, 1549, 1531, 1533,
-      402, 1525, 1542, 1534,    0,  389,  392,  428,  410,  416,
-      437, 1533, 1654,    0, 1576,  448, 1523, 1526,  436,  444,
-     1534,  448, 1577,  454, 1576,  447, 1575, 1654,  491, 1574,
-
-      459, 1535, 1515, 1531, 1528, 1527, 1518,  418, 1567, 1561,
-     1527, 1506, 1514, 1509, 1523, 1519, 1507, 1519, 1519, 1510,
-     1494, 1498, 1511, 1511, 1503, 1493, 1511, 1654, 1506, 1509,
-     1490, 1489, 1539, 1488, 1498, 1501,  467, 1497, 1485, 1496,
-     1532, 1479, 1535, 1488,  449, 1478, 1494, 1475, 1474, 1480,
-     1471, 1470, 1477, 1479, 1524, 1482, 1481, 1475,  274, 1482,
-     1477, 1469, 1475, 1474, 1474, 1455, 1471, 1457, 1463, 1470,
-     1458, 1451, 1465, 1506, 1467,  448, 1458,  474, 1654, 1654,
-      485, 1654, 1654, 1445,    0,  459,  198, 1447,  503,  495,
-     1501, 1454,  490, 1654, 1499, 1654, 1493,  538, 1654,  487,
-
-     1435, 1491, 1437, 1443, 1493, 1450, 1449,  368, 1654, 1447,
-     1489, 1444, 1441,  513, 1447, 1485, 1479, 1434, 1429, 1426,
-     1475, 1434, 1423, 1472, 1420,  519, 1434, 1419, 1432, 1419,
-     1429, 1424, 1431, 1426, 1422,  481, 1420, 1423, 1418, 1414,
-     1462,  485, 1456, 1654, 1408, 1407, 1406, 1399, 1401, 1405,
-     1394, 1407,  539, 1452, 1407, 1404, 1408, 1654, 1406, 1395,
-     1395, 1407, 1389, 1381, 1382, 1403, 1385, 1434, 1396, 1395,
-     1381, 1393, 1392, 1391, 1390, 1431, 1430, 1654, 1374, 1373,
-      559, 1386, 1654, 1654, 1385,    0, 1374, 1366,  512, 1371,
-     1422, 1421, 1379, 1419, 1654, 1367, 1417, 1654,  518,  588,
-
-      532, 1416, 1372, 1368, 1356, 1654, 1361, 1371, 1370, 1357,
-     1356, 1654, 1358, 1355,  509, 1353, 1355, 1654, 1363, 1360,
-     1345, 1358, 1353,  561, 1360, 1342, 1391, 1654, 1340, 1356,
-     1388, 1351, 1348, 1349, 1351, 1383, 1336, 1331, 1330, 1379,
-     1325, 1340, 1318, 1325, 1330, 1378, 1654, 1325, 1321, 1319,
-     1323, 1330, 1314, 1314, 1324, 1327, 1316, 1311, 1654, 1366,
-     1654, 1310, 1321, 1358, 1305, 1310, 1319, 1313, 1317, 1357,
-     1351, 1315, 1295, 1315, 1297, 1296, 1304, 1308, 1291, 1347,
-     1289, 1654, 1654, 1294, 1292, 1654, 1303, 1337, 1299,    0,
-     1283, 1300, 1338, 1288, 1654, 1654, 1285, 1654, 1291, 1654,
-
-      500,  535,  567, 1654, 1288, 1276, 1327, 1274, 1273, 1272,
-     1279, 1272, 1284, 1283, 1283, 1271, 1312, 1279, 1271, 1314,
-     1260, 1276, 1275, 1654, 1260, 1257, 1271, 1263, 1269, 1260,
-     1268, 1253, 1269, 1251, 1265, 1263, 1246, 1240, 1245, 1260,
-     1257, 1258, 1255, 1296, 1253, 1654, 1239, 1241, 1250, 1286,
-     1285, 1238,  563, 1247, 1230, 1231, 1228, 1654, 1242, 1221,
-     1242, 1239, 1231, 1274, 1228, 1272, 1654, 1219, 1233, 1236,
-     1217, 1267, 1266, 1213, 1264, 1263, 1654,   14, 1225, 1208,
-     1213, 1215, 1654, 1221, 1211, 1654, 1256, 1204, 1259,  544,
-      532,  536, 1209, 1252,  543, 1256, 1250, 1249, 1248, 1202,
-
-     1192, 1245, 1198, 1208, 1242, 1205, 1199, 1186, 1194, 1237,
-     1241, 1198, 1197, 1198, 1191, 1180, 1193, 1196, 1191, 1192,
-     1189, 1188, 1191, 1186, 1227, 1226, 1176, 1166, 1174, 1222,
-     1654, 1221, 1170, 1162, 1163, 1176, 1163, 1174, 1654, 1162,
-     1171, 1170, 1170, 1210, 1153, 1162, 1155, 1166, 1143, 1147,
-     1198, 1145, 1155, 1195, 1142, 1193,  538,  540, 1135, 1145,
-      558, 1654, 1195, 1153, 1136, 1141, 1145, 1135, 1147, 1150,
-     1187, 1654, 1181,  566, 1134, 1142, 1141, 1136, 1132, 1139,
-     1654, 1122, 1125, 1121, 1138, 1133, 1121, 1117, 1124, 1118,
-     1170, 1127, 1115, 1129, 1117, 1654, 1125, 1123, 1114, 1123,
-
-     1119, 1160, 1102, 1102, 1115, 1100, 1155, 1097, 1098, 1654,
-     1654, 1106, 1109, 1112, 1654, 1654, 1111,    1,    3,  572,
-       63,  277,  356,  417,  486,  543, 1654,  533,  548,  552,
-      554,  612,  567,  559,  555,  568,  579,  574,  575,  570,
-      572,  573,  579,  581,  634,  593,  598,  575, 1654,  633,
-      593,  583,  598,  599,  586,  600, 1654,  619,  627,  607,
-      597,  644,  609,  613,  652,  607,  602,  603,  599,  608,
-      603,  659,  618,  609, 1654,  611,  622,  607,  623,  617,
-      662,  630,  615,  616, 1654,  635,  618,  675,  620, 1654,
-      639,  619,  637,  676,  636,  626,  644,  643,  629,  644,
-
-      636,  643,  633,  651,  636, 1654,  644,  650,  645,  696,
-     1654,  647,  652,  646,  658,  652,  651,  653,  705,  651,
-      651,  708,  654, 1654,  653,  661,  659,  658,  663,  673,
-      674,  679,  718,  677,  693,  698,  672,  682,  673,  725,
-      670, 1654,  677,  682,  689,  730,  732,  681, 1654,  677,
-      680,  679,  699,  696,  701,  702,  688,  696,  705,  685,
-      706,  746, 1654,  701,  750,  751,  713,  715,  703,  700,
-      707,  758,  707,  705,  723,  762,  714,  713,  719,  717,
-      715,  768,  769,  765,  725, 1654,  730,  723,  732,  720,
-      730,  726,  739, 1654,  722,  723, 1654,  724,  722,  741,
-
-      742,  743,  742,  726,  731,  749, 1654,  739,  772,  763,
-      735,  794,  757, 1654,  740,  755,  747,  751, 1654, 1654,
-      761,  796,  745,  798,  747,  805,  750,  761,  753,  759,
-      755,  773,  774, 1654,  772, 1654,  775, 1654,  778,  768,
-      761,  773,  816, 1654,  773,  823,  824, 1654,  825,  769,
-      775,  782,  824, 1654, 1654,  774,  774,  777,  791,  778,
-      835,  794,  832,  786,  839,  789,  841,  790,  843,  844,
-      805,  846,  790,  802,  807,  793,  823,  852,  812, 1654,
-      804,  855,  804,  800,  816,  821,  803,  861,  816,  821,
-     1654,  822,  815,  824,  825,  822,  812,  814,  871,  820,
-
-      817,  874,  870,  813,  828,  878, 1654, 1654, 1654,  838,
-      830,  840,  825,  826,  886,  887,  834,  890, 1654,  840,
-      842,  893,  836, 1654,  857, 1654,  841, 1654, 1654,  849,
-     1654,  899,  850,  901,  902,  884, 1654,  862,  863, 1654,
-      851,  850,  853,  853,  854,  850, 1654,  872,  858,  859,
-      874,  874,  877,  877,  874,  879, 1654,  871,  881, 1654,
-      878,  883,  885,  882, 1654,  874,  874,  880,  879,  890,
-     1654, 1654,  929, 1654,  878,  884, 1654,  886,  888,  891,
-      902, 1654,  899, 1654,  896, 1654,  919,  939,  945,  946,
-      890,  948,  949,  904,  898,  952,  953,  949,  914,  910,
-
-      952,  902,  907,  960,  918,  962,  922,  964,  927,  916,
-      924,  968,  912,  930,  929,  913,  969,  934,  935,  935,
-      922,  933,  980,  940,  953,  940, 1654, 1654,  984, 1654,
-     1654,  933,  944, 1654, 1654,  934,  983,  928,  933,  991,
-      941, 1654,  947, 1654,  994, 1654,  939,  954,  959, 1654,
-      993,  961,  954,  963,  951,  961, 1004, 1005, 1006,  957,
-     1654, 1008, 1009,  957, 1654,  961, 1013,  959,  958, 1016,
-      971, 1654, 1013,  975, 1654,  978, 1021,  982,  965,  967,
-      964,  980,  989, 1028, 1654, 1654, 1654, 1024, 1654, 1654,
-      989, 1026, 1654,  980,  987, 1654,  984,  989, 1036,  981,
-
-     1654,  996,  986,  998, 1041,  985,  993, 1654, 1004,  994,
-      993, 1007,  998, 1007, 1009, 1654, 1051, 1052, 1012, 1054,
-     1654, 1050, 1014,  995, 1058, 1017, 1018, 1019, 1062, 1021,
-     1654, 1654, 1026, 1654, 1008, 1066, 1027, 1654, 1013, 1013,
-     1015, 1654, 1020, 1015, 1027, 1654, 1025, 1029, 1020, 1072,
-     1021, 1037, 1030, 1039, 1030, 1037, 1024, 1039, 1086, 1045,
-     1032, 1048, 1039, 1053, 1049, 1654, 1093, 1094, 1095, 1052,
-     1051, 1052, 1654, 1654, 1654, 1099, 1043, 1059, 1654, 1097,
-     1048, 1047, 1049, 1060, 1107, 1058, 1654, 1067, 1110, 1654,
-     1654, 1116, 1121, 1126, 1131, 1136, 1141, 1146, 1149, 1123,
-
-     1128, 1130, 1143
+     1705, 1706,   32, 1701,  141,    0,  201, 1706,  206,   88,
+       11,  213, 1706, 1683,  114,   25,    2,    6, 1706, 1706,
+       73,   11,   17, 1706, 1706, 1706,  104, 1689, 1644,    0,
+     1681,  107, 1696,  217,  247, 1706, 1640,  185, 1639, 1645,
+       93,   58, 1637,   91,  211,  195,   14,  273,  195, 1636,
+      181,  275,  202,  209, 1645,   66,  188, 1644,  232,  219,
+      296,  282,  207, 1627,   78,  301,  302,  296, 1646,    0,
+      341,  357,  365,  371,  376, 1706,    0, 1706,  301,  379,
+      223,  299,  196,  309,  322,  210, 1706, 1643, 1682, 1706,
+
+      283, 1706,  391, 1671,  295, 1629, 1639,  333,  344, 1634,
+      341,  352,  362,  368,  374, 1677,    0,  442,  365, 1621,
+     1623, 1619, 1627,  360, 1623, 1612, 1613,   89, 1629, 1612,
+     1621, 1621,  364, 1612,  361, 1613,  375, 1658, 1662, 1604,
+     1655, 1597, 1620, 1617, 1617, 1611,  351, 1604, 1597, 1602,
+     1596,  376, 1607, 1592, 1591, 1605,  306, 1591,  377, 1607,
+       72,  438, 1594,  385, 1605, 1602, 1603, 1601,  402, 1583,
+     1585,  412, 1577, 1594, 1586,    0,  389,  392,  428,  411,
+      430,  444, 1585, 1706,    0, 1628,  457, 1575, 1578,  440,
+      442, 1586,  455, 1629,  456, 1628,  449, 1627, 1706,  493,
+
+     1626,  484, 1587, 1567, 1583, 1580, 1579, 1570,  463, 1619,
+     1613, 1579, 1558, 1566, 1561, 1575, 1571, 1559, 1571, 1571,
+     1562, 1546, 1550, 1563, 1563, 1555, 1545, 1563, 1706, 1558,
+     1561, 1542, 1541, 1591, 1540, 1550, 1553,  459, 1549, 1537,
+     1548, 1584, 1531, 1587, 1540,  451, 1530, 1546, 1527, 1526,
+     1532, 1523, 1522, 1529, 1531, 1576, 1534, 1533, 1527,  274,
+     1534, 1529, 1521, 1511, 1526, 1525, 1525, 1506, 1522, 1508,
+     1514, 1521, 1509,  516, 1502, 1516, 1557, 1518,  464, 1509,
+      486, 1706, 1706,  487, 1706, 1706, 1496,    0,  461,  198,
+     1498,  528,  505, 1552, 1505,  496, 1706, 1550, 1706, 1544,
+
+      544, 1706,  493, 1486, 1542, 1488, 1494, 1544, 1501, 1500,
+      368, 1706, 1498, 1540, 1495, 1492,  534, 1498, 1536, 1530,
+     1485, 1480, 1477, 1526, 1485, 1474, 1523, 1471,  525, 1485,
+     1470, 1483, 1470, 1480, 1475, 1482, 1477, 1473,  486, 1471,
+     1474, 1469, 1465, 1513,  505, 1507, 1706, 1459, 1458, 1457,
+     1450, 1452, 1456, 1445, 1458,  471, 1503, 1458, 1455, 1459,
+     1706, 1457, 1446, 1446, 1458,  494, 1433, 1434, 1455, 1450,
+     1436, 1485, 1447, 1446, 1432, 1444, 1443, 1442, 1441,  517,
+     1482, 1481, 1706, 1425, 1424,  566, 1437, 1706, 1706, 1436,
+        0, 1425, 1417,  514, 1422, 1473, 1472, 1430, 1470, 1706,
+
+     1418, 1468, 1706,  543,  589,  516, 1467, 1423, 1419, 1407,
+     1706, 1412, 1422, 1421, 1408, 1407, 1706, 1409, 1406,  532,
+     1404, 1406, 1706, 1414, 1411, 1396, 1409, 1404,  574, 1411,
+     1393, 1442, 1706, 1391, 1407, 1439, 1402, 1399, 1400, 1402,
+     1434, 1387, 1382, 1381, 1430, 1376, 1391, 1369, 1376, 1381,
+     1429, 1706, 1376, 1372, 1370, 1374, 1381, 1365, 1365, 1375,
+     1378, 1367, 1362, 1706, 1417, 1706, 1361, 1372, 1409, 1356,
+     1361, 1370, 1364, 1358, 1367, 1407, 1401, 1365, 1348, 1344,
+     1364, 1346, 1345, 1353, 1357, 1340, 1396, 1338, 1352, 1341,
+     1706, 1706, 1341, 1339, 1706, 1350, 1384, 1346,    0, 1330,
+
+     1347, 1385, 1335, 1706, 1706, 1332, 1706, 1338, 1706,  525,
+      548,  590, 1706, 1335, 1323, 1374, 1321, 1320, 1319, 1326,
+     1319, 1331, 1330, 1330, 1318, 1359, 1326, 1318, 1361, 1307,
+     1323, 1322, 1706, 1307, 1304, 1318, 1310, 1316, 1307, 1315,
+     1300, 1316, 1298, 1312, 1310, 1293, 1287, 1292, 1307, 1304,
+     1305, 1302, 1343, 1300, 1706, 1286, 1288, 1297, 1333, 1332,
+     1285,  556, 1294, 1277, 1278, 1275, 1706, 1289, 1268, 1289,
+     1286, 1278, 1321, 1275, 1282, 1318, 1706, 1265, 1279, 1263,
+     1281, 1262, 1312, 1311, 1258, 1309, 1308, 1706,   14, 1270,
+     1270, 1268, 1251, 1256, 1258, 1706, 1264, 1254, 1706, 1299,
+
+     1247, 1302,  560,  538,  545, 1252, 1295,  570, 1299, 1293,
+     1292, 1291, 1245, 1235, 1288, 1241, 1251, 1285, 1248, 1242,
+     1229, 1237, 1280, 1284, 1241, 1240, 1241, 1234, 1223, 1236,
+     1239, 1234, 1235, 1232, 1231, 1234, 1229, 1270, 1269, 1219,
+     1209, 1217, 1265, 1706, 1264, 1213, 1205, 1206, 1219, 1206,
+     1217, 1706, 1205, 1214, 1213, 1213, 1253, 1196, 1205, 1198,
+     1209, 1186, 1190, 1241, 1205, 1187, 1197, 1237, 1236, 1183,
+     1234,  565,  567, 1176, 1186,  564, 1706, 1236, 1182, 1192,
+     1192, 1175, 1180, 1184, 1174, 1186, 1189, 1226, 1706, 1220,
+      586, 1173, 1181, 1180, 1175, 1171, 1178, 1706, 1161, 1164,
+
+     1160, 1177, 1172, 1160, 1156, 1163, 1157, 1209, 1166, 1154,
+     1168, 1156, 1706, 1164, 1162, 1153, 1162,   11,   62,   58,
+      226,  367,  366,  454,  431,  523, 1706, 1706,  546,  558,
+      564, 1706, 1706,  581,  570,  564,  595,  572,  620,  573,
+      629,  580,  636, 1706,  584,  588,  590,  584,  643,  598,
+      588,  589,  585,  598,  609,  593,  605,  606,  600,  602,
+      603,  603,  605,  658,  617,  622,  599, 1706,  624,  614,
+      659,  619,  609,  624,  625,  612,  626, 1706,  645,  653,
+      633,  623,  670,  635,  639,  678,  633,  628,  629,  625,
+      634,  629,  685,  644,  635, 1706,  637,  648,  633,  649,
+
+      643,  688,  656,  641,  642, 1706,  661,  644,  701,  646,
+     1706,  665,  645,  663,  702,  662,  652,  670,  669,  655,
+      670,  662,  669,  659,  677,  662, 1706,  670,  676,  671,
+      722, 1706,  673,  678,  720,  673,  685,  680,  684,  679,
+      681,  733,  679,  679,  736,  682, 1706,  681,  689,  687,
+      692,  704,  688,  693,  703,  704,  709,  748,  707,  723,
+      728,  702,  712,  703,  755,  700, 1706,  708,  713,  720,
+      761,  762,  711, 1706,  707,  710,  709,  729,  726,  731,
+      732,  718,  726,  735,  715,  736,  776, 1706,  731,  780,
+      781,  743,  745,  733,  730,  737,  788,  737,  735,  753,
+
+      792,  744,  743,  749,  747,  745,  798,  799,  795,  755,
+     1706,  760,  753,  744,  763,  751,  761,  758,  758,  771,
+     1706,  754,  755, 1706,  756,  754,  773,  774,  771,  756,
+      777,  776,  760,  765,  783, 1706,  773,  806,  797,  769,
+      828,  791, 1706,  774,  789,  781,  785, 1706, 1706,  795,
+      830,  779,  832,  781,  839,  784,  795,  787,  793,  789,
+      807,  808, 1706,  806, 1706,  809, 1706,  812,  802,  795,
+      807,  850, 1706,  807,  857,  858, 1706,  859,  803,  809,
+      816,  858, 1706, 1706,  808,  808,  811,  825,  830,  813,
+      870,  829,  830,  868,  822,  875,  825,  877,  826,  879,
+
+      880,  822,  882,  843,  884,  828,  840,  845,  831,  861,
+      890,  850, 1706,  842,  893,  842,  838,  854,  859,  841,
+      899,  854,  859, 1706,  860,  853,  862,  863,  860,  850,
+      852,  909,  858,  855,  912,  908,  851,  866,  916, 1706,
+     1706, 1706,  876,  868,  878,  863,  864,  925,  926,  872,
+      882,  929, 1706,  879,  879,  882,  933,  876, 1706,  898,
+     1706,  882, 1706, 1706,  896, 1706,  890, 1706,  940,  891,
+      942,  943,  925, 1706,  903,  904, 1706,  892,  891,  894,
+      894,  895,  891, 1706,  913,  899,  900,  915,  915,  918,
+      918,  915,  920, 1706,  912,  922, 1706,  919,  924,  926,
+
+      923, 1706,  915,  915,  921,  920,  931, 1706, 1706,  970,
+      919, 1706,  920,  920,  927, 1706,  929,  931,  934,  983,
+      946, 1706,  943, 1706,  940, 1706,  963,  983,  989,  990,
+      934,  992,  993,  948,  942,  996,  997,  993,  958,  954,
+      996,  946,  951, 1004,  962, 1006,  966, 1008,  971,  960,
+      968, 1012,  956,  974,  973,  957, 1013, 1014,  963,  980,
+      981,  981,  968, 1706,  979, 1026,  986,  999,  986, 1706,
+     1706, 1030, 1706, 1706,  979,  990, 1706, 1706,  980, 1029,
+      974,  979, 1037,  987, 1706,  993, 1706, 1040, 1706,  985,
+     1000, 1005, 1706, 1039, 1007, 1000, 1009,  991,  998, 1050,
+
+     1009, 1052, 1053, 1054, 1005, 1706, 1057, 1058, 1005, 1706,
+     1009, 1061, 1007, 1006, 1064, 1019, 1706, 1061, 1023, 1706,
+     1026, 1069, 1030, 1013, 1015, 1012, 1028, 1029, 1038, 1706,
+     1077, 1706, 1706, 1706, 1073, 1706, 1706, 1038, 1075, 1706,
+     1029, 1036, 1706, 1033, 1038, 1085, 1030, 1706, 1045, 1035,
+     1047, 1090, 1034, 1042, 1043, 1706, 1054, 1044, 1043, 1057,
+     1048, 1057, 1059, 1706, 1101, 1102, 1062, 1104, 1706, 1100,
+     1064, 1065, 1046, 1109, 1068, 1069, 1070, 1113, 1072, 1706,
+     1706, 1077, 1706, 1059, 1117, 1118, 1079, 1706, 1065, 1065,
+     1067, 1706, 1072, 1067, 1079, 1706, 1706, 1077, 1081, 1072,
+
+     1124, 1073, 1089, 1082, 1091, 1082, 1089, 1076, 1091, 1138,
+     1097, 1084, 1100, 1091, 1105, 1101, 1706, 1145, 1146, 1147,
+     1104, 1103, 1104, 1706, 1706, 1706, 1151, 1095, 1111, 1706,
+     1149, 1100, 1099, 1101, 1112, 1159, 1110, 1706, 1119, 1162,
+     1706, 1706, 1168, 1173, 1178, 1183, 1188, 1193, 1198, 1201,
+     1175, 1180, 1182, 1195
     } ;
 
-static const flex_int16_t yy_def[1304] =
+static yyconst flex_int16_t yy_def[1355] =
     {   0,
-     1292, 1292, 1293, 1293, 1292, 1292, 1292, 1292, 1292, 1292,
-     1291, 1291, 1291, 1291, 1291, 1294, 1291, 1291, 1291, 1291,
-     1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291,
-     1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1295,
-     1291, 1291, 1291, 1296,   15, 1291,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1297,   45,   45,
+     1343, 1343, 1344, 1344, 1343, 1343, 1343, 1343, 1343, 1343,
+     1342, 1342, 1342, 1342, 1342, 1345, 1342, 1342, 1342, 1342,
+     1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342,
+     1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1346,
+     1342, 1342, 1342, 1347,   15, 1342,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1348,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1294,
-     1291, 1291, 1291, 1291, 1291, 1291, 1298, 1291, 1291, 1291,
-     1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1295, 1291,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1345,
+     1342, 1342, 1342, 1342, 1342, 1342, 1349, 1342, 1342, 1342,
+     1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1346, 1342,
 
-     1296, 1291, 1291,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1299,   45, 1297,   45,   45,
+     1347, 1342, 1342,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1350,   45, 1348,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1298, 1291, 1291, 1291, 1291, 1291,
-     1291, 1291, 1291, 1300,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1299, 1291, 1297,   45,
+       45,   45,   45,   45,   45, 1349, 1342, 1342, 1342, 1342,
+     1342, 1342, 1342, 1342, 1351,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1350, 1342, 1348,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1291,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1342,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1291, 1291, 1291,
-     1291, 1291, 1291, 1291, 1301,   45,   45,   45,   45,   45,
-       45,   45,   45, 1291,   45, 1291,   45, 1297, 1291,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+     1342, 1342, 1342, 1342, 1342, 1342, 1342, 1352,   45,   45,
+       45,   45,   45,   45,   45,   45, 1342,   45, 1342,   45,
 
-       45,   45,   45,   45,   45,   45,   45,   45, 1291,   45,
+     1348, 1342,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1342,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1342,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1291,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1291,   45,   45,
+     1342,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1291,   45,   45,
-       45,   45, 1291, 1291, 1291, 1302,   45,   45,   45,   45,
-       45,   45,   45,   45, 1291,   45,   45, 1291,   45, 1297,
+       45,   45, 1342,   45,   45,   45,   45, 1342, 1342, 1342,
+     1353,   45,   45,   45,   45,   45,   45,   45,   45, 1342,
 
-       45,   45,   45,   45,   45, 1291,   45,   45,   45,   45,
-       45, 1291,   45,   45,   45,   45,   45, 1291,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1291,   45,   45,
+       45,   45, 1342,   45, 1348,   45,   45,   45,   45,   45,
+     1342,   45,   45,   45,   45,   45, 1342,   45,   45,   45,
+       45,   45, 1342,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1342,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1291,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1291,   45,
-     1291,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1342,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1342,   45, 1342,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1291, 1291,   45,   45, 1291,   45,   45, 1291, 1303,
-       45,   45,   45,   45, 1291, 1291,   45, 1291,   45, 1291,
-
-       45,   45,   45, 1291,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1291,   45,   45,   45,   45,   45,   45,
+     1342, 1342,   45,   45, 1342,   45,   45, 1342, 1354,   45,
+
+       45,   45,   45, 1342, 1342,   45, 1342,   45, 1342,   45,
+       45,   45, 1342,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1291,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1291,   45,   45,
-       45,   45,   45,   45,   45,   45, 1291,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1291,   45,   45,   45,
-       45,   45, 1291,   45,   45, 1291,   45,   45,   45,   45,
+       45,   45, 1342,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1342,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1342,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1342,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1342,   45,   45,
+       45,   45,   45,   45,   45, 1342,   45,   45, 1342,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1291,   45,   45,   45,   45,   45,   45,   45, 1291,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1342,   45,   45,   45,   45,   45,   45,
+       45, 1342,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1291,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1291,   45,   45,   45,   45,   45,   45,   45,   45,
-     1291,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1291,   45,   45,   45,   45,
-
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1291,
-     1291,   45,   45,   45, 1291, 1291,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1291,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1342,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1342,   45,
+       45,   45,   45,   45,   45,   45,   45, 1342,   45,   45,
+
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1291,   45,
-       45,   45,   45,   45,   45,   45, 1291,   45,   45,   45,
+       45,   45, 1342,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1342, 1342,   45,   45,
+       45, 1342, 1342,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1342,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1291,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1291,   45,   45,   45,   45, 1291,
+       45,   45,   45,   45,   45,   45,   45, 1342,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1342,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1342,   45,   45,   45,   45,
 
-       45,   45,   45,   45,   45, 1291,   45,   45,   45,   45,
-     1291,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1291,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1342,   45,   45,   45,   45,
+     1342,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1342,   45,   45,   45,
+       45, 1342,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1342,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1291,   45,   45,   45,   45,   45,   45, 1291,   45,
+       45,   45,   45,   45,   45,   45, 1342,   45,   45,   45,
+       45,   45,   45, 1342,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1342,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1291,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1291,   45,   45,   45,   45,
-       45,   45,   45, 1291,   45,   45, 1291,   45,   45,   45,
 
-       45,   45,   45,   45,   45,   45, 1291,   45,   45,   45,
-       45,   45,   45, 1291,   45,   45,   45,   45, 1291, 1291,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1291,   45, 1291,   45, 1291,   45,   45,
-       45,   45,   45, 1291,   45,   45,   45, 1291,   45,   45,
-       45,   45,   45, 1291, 1291,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1291,
+     1342,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+     1342,   45,   45, 1342,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1342,   45,   45,   45,   45,
+       45,   45, 1342,   45,   45,   45,   45, 1342, 1342,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1291,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-
-       45,   45,   45,   45,   45,   45, 1291, 1291, 1291,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1291,   45,
-       45,   45,   45, 1291,   45, 1291,   45, 1291, 1291,   45,
-     1291,   45,   45,   45,   45,   45, 1291,   45,   45, 1291,
-       45,   45,   45,   45,   45,   45, 1291,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1291,   45,   45, 1291,
-       45,   45,   45,   45, 1291,   45,   45,   45,   45,   45,
-     1291, 1291,   45, 1291,   45,   45, 1291,   45,   45,   45,
-       45, 1291,   45, 1291,   45, 1291,   45,   45,   45,   45,
+       45,   45, 1342,   45, 1342,   45, 1342,   45,   45,   45,
+       45,   45, 1342,   45,   45,   45, 1342,   45,   45,   45,
+       45,   45, 1342, 1342,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1342,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1342,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1342,
+     1342, 1342,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1342,   45,   45,   45,   45,   45, 1342,   45,
+     1342,   45, 1342, 1342,   45, 1342,   45, 1342,   45,   45,
+       45,   45,   45, 1342,   45,   45, 1342,   45,   45,   45,
+       45,   45,   45, 1342,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1342,   45,   45, 1342,   45,   45,   45,
+
+       45, 1342,   45,   45,   45,   45,   45, 1342, 1342,   45,
+       45, 1342,   45,   45,   45, 1342,   45,   45,   45,   45,
+       45, 1342,   45, 1342,   45, 1342,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1291, 1291,   45, 1291,
-     1291,   45,   45, 1291, 1291,   45,   45,   45,   45,   45,
-       45, 1291,   45, 1291,   45, 1291,   45,   45,   45, 1291,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1291,   45,   45,   45, 1291,   45,   45,   45,   45,   45,
-       45, 1291,   45,   45, 1291,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1291, 1291, 1291,   45, 1291, 1291,
-       45,   45, 1291,   45,   45, 1291,   45,   45,   45,   45,
-
-     1291,   45,   45,   45,   45,   45,   45, 1291,   45,   45,
-       45,   45,   45,   45,   45, 1291,   45,   45,   45,   45,
-     1291,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1291, 1291,   45, 1291,   45,   45,   45, 1291,   45,   45,
-       45, 1291,   45,   45,   45, 1291,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1291,   45,   45,   45,   45,
-       45,   45, 1291, 1291, 1291,   45,   45,   45, 1291,   45,
-       45,   45,   45,   45,   45,   45, 1291,   45,   45, 1291,
-        0, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291,
+       45,   45,   45, 1342,   45,   45,   45,   45,   45, 1342,
+     1342,   45, 1342, 1342,   45,   45, 1342, 1342,   45,   45,
+       45,   45,   45,   45, 1342,   45, 1342,   45, 1342,   45,
+       45,   45, 1342,   45,   45,   45,   45,   45,   45,   45,
+
+       45,   45,   45,   45,   45, 1342,   45,   45,   45, 1342,
+       45,   45,   45,   45,   45,   45, 1342,   45,   45, 1342,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1342,
+       45, 1342, 1342, 1342,   45, 1342, 1342,   45,   45, 1342,
+       45,   45, 1342,   45,   45,   45,   45, 1342,   45,   45,
+       45,   45,   45,   45,   45, 1342,   45,   45,   45,   45,
+       45,   45,   45, 1342,   45,   45,   45,   45, 1342,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1342,
+     1342,   45, 1342,   45,   45,   45,   45, 1342,   45,   45,
+       45, 1342,   45,   45,   45, 1342, 1342,   45,   45,   45,
 
-     1291, 1291, 1291
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1342,   45,   45,   45,
+       45,   45,   45, 1342, 1342, 1342,   45,   45,   45, 1342,
+       45,   45,   45,   45,   45,   45,   45, 1342,   45,   45,
+     1342,    0, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342,
+     1342, 1342, 1342, 1342
     } ;
 
-static const flex_int16_t yy_nxt[1726] =
+static yyconst flex_uint16_t yy_nxt[1778] =
     {   0,
-     1291,   13,   14,   13, 1291,   15,   16, 1291,   17,   18,
-       19,   20,   21,   22,   22,   22,   23,   24,   86,  662,
-       37,   14,   37,   87,   25,   26,   38, 1291,  663,   27,
+     1342,   13,   14,   13, 1342,   15,   16, 1342,   17,   18,
+       19,   20,   21,   22,   22,   22,   23,   24,   86,  677,
+       37,   14,   37,   87,   25,   26,   38, 1342,  678,   27,
        37,   14,   37,   42,   28,   42,   38,   92,   93,   29,
       115,   30,   13,   14,   13,   91,   92,   25,   31,   93,
-       13,   14,   13,   13,   14,   13,   32,   40,  797,   13,
-       14,   13,   33,   40,  115,   92,   93,  798,   91,   34,
+       13,   14,   13,   13,   14,   13,   32,   40,  805,   13,
+       14,   13,   33,   40,  115,   92,   93,  806,   91,   34,
        35,   13,   14,   13,   95,   15,   16,   96,   17,   18,
        19,   20,   21,   22,   22,   22,   23,   24,   13,   14,
        13,  109,   39,   91,   25,   26,   13,   14,   13,   27,
 
        39,   85,   85,   85,   28,   42,   41,   42,   42,   29,
        42,   30,   83,  108,   41,  111,   94,   25,   31,  109,
-      801,  161,   89,  137,   89,  162,   32,   90,   90,   90,
-      254,  138,   33,  212,  213,   83,  108,  255,  111,   34,
+      807,  161,   89,  137,   89,  162,   32,   90,   90,   90,
+      255,  138,   33,  213,  214,   83,  108,  256,  111,   34,
        35,   44,   44,   44,   45,   45,   46,   45,   45,   45,
        45,   45,   45,   45,   45,   47,   45,   45,   45,   45,
        45,   48,   45,   49,   50,   45,   51,   45,   52,   53,
@@ -1214,178 +1005,183 @@ static const flex_int16_t yy_nxt[1726] =
        74,   75,   76,   77,   78,   79,   57,   45,   45,   45,
        45,   45,   81,  105,   82,   82,   82,   81,  114,   84,
        84,   84,  102,  105,   81,   83,   84,   84,   84,  108,
-       83,  178,  122,  112,  139,  123,  389,   83,  124,  105,
-      125,  114,  126,  113,  140,  178,  141,  132,   83,  119,
-      157,  176,  108,   83,  158,  120,  112,  103,  133,  178,
-       83,   45,  147,  135,  159,  389,  148,   45,  134,   45,
-       45,  113,   45,  181,   45,   45,   45,  176,  117,  143,
-      144,   45,   45,  145,   45,   45,  149,  802,  102,  146,
+       83,  179,  122,  112,  139,  123,  394,   83,  124,  105,
+      125,  114,  126,  113,  140,  179,  141,  132,   83,  119,
+      157,  177,  108,   83,  158,  120,  112,  103,  133,  179,
+       83,   45,  147,  135,  159,  394,  148,   45,  134,   45,
+       45,  113,   45,  182,   45,   45,   45,  177,  117,  143,
+      144,   45,   45,  145,   45,   45,  149,  808,  102,  146,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   90,   90,   90,   45,  127,  114,
-      111,   45,  128,  103,  112,  129,  130,  177,  362,   45,
-      153,  363,  186,   45,  113,   45,  118,  176,  131,  150,
-      154,  151,  171,  152,  163,  155,  156,  112,  164,  169,
-      177,  165,  172,  177,   85,   85,   85,  173,  166,  167,
-      186,  189,  113,  179,  168,   83,  247,  248,   81,  170,
-       82,   82,   82,   89,  190,   89,  180,  192,   90,   90,
-       90,   83,   81,  193,   84,   84,   84,  189,   83,   85,
-       85,   85,   90,   90,   90,   83,  101,  194,  196,  195,
-
-       83,  190,  186,  101,   83,  192,  206,  218,  221,  219,
-      193,  409,  192,  236,  803,  207,  208,  237,   83,  200,
-      279,  196,  278,   83,  222,  194,  195,  804,  410,  224,
-      201,  101,  225,  195,  250,  101,  226,  251,  252,  101,
-      192,  265,  242,  278,  279,  266,  279,  101,  256,  267,
-      278,  101,  280,  101,  184,  199,  199,  199,  380,  346,
-      274,  280,  199,  199,  199,  199,  199,  199,  287,  290,
-      282,  281,  293,  291,  307,  280,  297,  336,  295,  287,
-      308,  257,  258,  259,  283,  199,  199,  199,  199,  199,
-      199,  287,  260,  347,  261,  293,  262,  290,  383,  263,
-
-      291,  295,  300,  297,  298,  298,  298,  348,  381,  383,
-      387,  298,  298,  298,  298,  298,  298,  391,  392,  394,
-      388,  383,  397,  415,  428,  389,  393,  416,  337,  429,
-      590,  338,  384,  448,  298,  298,  298,  298,  298,  298,
-      441,  442,  394,  449,  459,  493,  805,  501,  806,  502,
-      397,  400,  400,  400,  401,  515,  674,  590,  400,  400,
-      400,  400,  400,  400,  486,  493,  524,  591,  639,  487,
-      516,  525,  586,  493,  501,  430,  502,  592,  673,  674,
-      431,  400,  400,  400,  400,  400,  400,  675,  679,  740,
-      742,  743,  807,  503,  680,  591,  741,  676,  744,  759,
-
-      460,   45,   45,   45,  808,  640,  673,  809,   45,   45,
-       45,   45,   45,   45,  747,  799,  810,  811,  812,  800,
-      748,  813,  814,  815,  816,  817,  818,  759,  819,  820,
-      821,   45,   45,   45,   45,   45,   45,  822,  823,  824,
-      825,  826,  827,  828,  829,  830,  831,  832,  833,  834,
-      835,  836,  837,  838,  839,  840,  841,  842,  843,  844,
-      845,  846,  847,  848,  849,  850,  851,  852,  853,  854,
-      855,  856,  857,  858,  836,  859,  860,  835,  861,  862,
-      863,  866,  867,  868,  869,  864,  870,  871,  872,  873,
-      874,  875,  876,  877,  878,  879,  880,  882,  883,  884,
-
-      885,  886,  887,  888,  889,  890,  891,  881,  892,  893,
-      894,  895,  896,  897,  898,  899,  900,  901,  902,  903,
-      904,  905,  906,  907,  908,  909,  911,  910,  912,  913,
-      914,  915,  916,  917,  918,  919,  865,  920,  921,  922,
+      111,   45,  128,  103,  112,  129,  130,  178,  365,   45,
+      153,  366,  187,   45,  113,   45,  118,  177,  131,  150,
+      154,  151,  172,  152,  163,  155,  156,  169,  164,  170,
+      178,  165,  173,  178,   85,   85,   85,  174,  166,  167,
+      187,  190,  113,  180,  168,   83,  248,  249,   81,  171,
+       82,   82,   82,   89,  191,   89,  181,  193,   90,   90,
+       90,   83,   81,  194,   84,   84,   84,  190,   83,   85,
+       85,   85,   90,   90,   90,   83,  101,  195,  197,  196,
+
+       83,  191,  187,  101,   83,  193,  207,  219,  222,  220,
+      194,  414,  193,  237,  809,  208,  209,  238,   83,  201,
+      282,  197,  281,   83,  223,  195,  196,  810,  415,  225,
+      202,  101,  226,  194,  251,  101,  227,  252,  253,  101,
+      193,  267,  243,  196,  281,  268,  282,  101,  257,  269,
+      281,  101,  283,  101,  185,  200,  200,  200,  282,  811,
+      274,  349,  200,  200,  200,  200,  200,  200,  283,  339,
+      277,  294,  284,  293,  385,  283,  464,  290,  300,  296,
+      298,  258,  259,  260,  285,  200,  200,  200,  200,  200,
+      200,  286,  261,  812,  262,  350,  263,  264,  294,  265,
+
+      290,  293,  296,  298,  290,  300,  301,  301,  301,  351,
+      388,  388,  392,  301,  301,  301,  301,  301,  301,  310,
+      340,  297,  393,  341,  386,  311,  380,  303,  402,  399,
+      433,  394,  465,  388,  389,  434,  301,  301,  301,  301,
+      301,  301,  396,  397,  420,  446,  447,  502,  421,  502,
+      474,  398,  399,  453,  475,  603,  402,  405,  405,  405,
+      406,  652,  691,  454,  405,  405,  405,  405,  405,  405,
+      489,  495,  510,  490,  511,  502,  496,  512,  524,  533,
+      604,  435,  603,  813,  534,  691,  436,  405,  405,  405,
+      405,  405,  405,  525,  690,  599,  692,  814,  653,  510,
+
+      605,  511,   45,   45,   45,  815,  693,  816,  604,   45,
+       45,   45,   45,   45,   45,  696,  759,  761,  762,  780,
+      766,  697,  690,  760,  817,  763,  767,  818,  819,  822,
+      823,  824,   45,   45,   45,   45,   45,   45,  820,  825,
+      826,  827,  821,  828,  829,  830,  831,  780,  832,  833,
+      834,  835,  836,  837,  838,  839,  840,  841,  842,  843,
+      844,  845,  846,  847,  848,  849,  850,  851,  852,  853,
+      854,  855,  856,  857,  858,  859,  860,  861,  862,  863,
+      864,  865,  866,  867,  868,  869,  870,  871,  872,  873,
+      874,  875,  876,  877,  878,  879,  880,  881,  882,  883,
+
+      861,  884,  885,  860,  886,  887,  888,  891,  892,  893,
+      894,  889,  895,  896,  897,  898,  899,  900,  901,  902,
+      903,  904,  905,  907,  908,  909,  910,  911,  912,  913,
+      914,  915,  916,  906,  917,  918,  919,  920,  921,  922,
       923,  924,  925,  926,  927,  928,  929,  930,  931,  932,
-      933,  934,  935,  909,  910,  936,  938,  939,  940,  941,
-      937,  942,  943,  944,  945,  946,  947,  948,  949,  950,
-      951,  952,  953,  954,  955,  956,  957,  958,  959,  960,
-      961,  962,  963,  964,  965,  966,  967,  968,  969,  970,
-      971,  972,  973,  974,  975,  976,  977,  978,  979,  980,
-
-      981,  982,  983,  984,  985,  986,  987,  988,  989,  990,
-      991,  992,  993,  994,  995,  996,  997,  998,  999,  977,
-     1000, 1001, 1002, 1003, 1004,  978, 1005, 1006, 1007, 1008,
-     1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018,
-     1019, 1020, 1021, 1023, 1024, 1025, 1026, 1027, 1028, 1029,
-     1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039,
-     1040, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050,
-     1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060,
-     1061, 1062, 1063, 1065, 1036, 1066, 1067, 1068, 1069, 1070,
-     1064, 1071, 1072, 1022, 1073, 1074, 1075, 1076, 1077, 1078,
-
-     1079, 1080, 1041, 1081, 1082, 1083, 1084, 1086, 1087, 1088,
-     1089, 1085, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097,
-     1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107,
-     1108, 1087, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116,
-     1117, 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126,
-     1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136,
+      933,  934,  935,  936,  937,  938,  940,  939,  941,  942,
+      943,  944,  890,  945,  946,  947,  948,  949,  950,  951,
+      952,  953,  954,  955,  956,  957,  958,  959,  960,  961,
+      962,  963,  964,  938,  939,  965,  967,  968,  969,  970,
+      966,  971,  972,  973,  974,  975,  976,  977,  978,  979,
+
+      980,  981,  982,  983,  984,  985,  986,  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, 1010, 1033, 1034, 1035, 1036, 1037, 1011,
+     1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047,
+     1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1058,
+     1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068,
+     1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1079,
+
+     1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089,
+     1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099,
+     1100, 1102, 1073, 1103, 1104, 1105, 1106, 1107, 1101, 1057,
+     1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117,
+     1078, 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1126, 1127,
+     1128, 1129, 1125, 1130, 1131, 1132, 1133, 1134, 1135, 1136,
      1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146,
-     1147, 1148, 1149, 1150, 1151, 1125, 1152, 1153, 1154, 1155,
+     1147, 1148, 1127, 1149, 1150, 1151, 1152, 1153, 1154, 1155,
      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, 1181, 1182, 1183, 1184, 1185,
-     1186, 1187, 1188, 1189, 1190, 1163, 1191, 1192, 1193, 1194,
+     1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1168,
      1195, 1196, 1197, 1198, 1199, 1200, 1201, 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, 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, 1253, 1254,
-     1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264,
-     1265, 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274,
-
-     1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284,
-     1285, 1286, 1287, 1288, 1289, 1290,   12,   12,   12,   12,
-       12,   36,   36,   36,   36,   36,   80,  285,   80,   80,
-       80,   99,  386,   99,  490,   99,  101,  101,  101,  101,
-      101,  116,  116,  116,  116,  116,  175,  101,  175,  175,
-      175,  197,  197,  197,  796,  795,  794,  793,  792,  791,
+     1235, 1208, 1236, 1237, 1238, 1239, 1240, 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, 1267, 1268, 1269, 1270, 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, 1299, 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, 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1332, 1333,
+     1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341,   12,   12,
+       12,   12,   12,   36,   36,   36,   36,   36,   80,  288,
+       80,   80,   80,   99,  391,   99,  499,   99,  101,  101,
+      101,  101,  101,  116,  116,  116,  116,  116,  176,  101,
+
+      176,  176,  176,  198,  198,  198,  804,  803,  802,  801,
+      800,  799,  798,  797,  796,  795,  794,  793,  792,  791,
       790,  789,  788,  787,  786,  785,  784,  783,  782,  781,
-      780,  779,  778,  777,  776,  775,  774,  773,  772,  771,
-      770,  769,  768,  767,  766,  765,  764,  763,  762,  761,
-      760,  758,  757,  756,  755,  754,  753,  752,  751,  750,
-
-      749,  746,  745,  739,  738,  737,  736,  735,  734,  733,
+      779,  778,  777,  776,  775,  774,  773,  772,  771,  770,
+      769,  768,  765,  764,  758,  757,  756,  755,  754,  753,
+      752,  751,  750,  749,  748,  747,  746,  745,  744,  743,
+      742,  741,  740,  739,  738,  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,  695,  694,  693,
-      692,  691,  690,  689,  688,  687,  686,  685,  684,  683,
-      682,  681,  678,  677,  672,  671,  670,  669,  668,  667,
-      666,  665,  664,  661,  660,  659,  658,  657,  656,  655,
-      654,  653,  652,  651,  650,  649,  648,  647,  646,  645,
-      644,  643,  642,  641,  638,  637,  636,  635,  634,  633,
 
+      702,  701,  700,  699,  698,  695,  694,  689,  688,  687,
+      686,  685,  684,  683,  682,  681,  680,  679,  676,  675,
+      674,  673,  672,  671,  670,  669,  668,  667,  666,  665,
+      664,  663,  662,  661,  660,  659,  658,  657,  656,  655,
+      654,  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,  615,  614,  613,
-      612,  611,  610,  609,  608,  607,  606,  605,  604,  603,
-      602,  601,  600,  599,  598,  597,  596,  595,  594,  593,
+      612,  611,  610,  609,  608,  607,  606,  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,  574,  573,  572,  571,  570,
       569,  568,  567,  566,  565,  564,  563,  562,  561,  560,
       559,  558,  557,  556,  555,  554,  553,  552,  551,  550,
       549,  548,  547,  546,  545,  544,  543,  542,  541,  540,
-      539,  538,  537,  536,  535,  534,  533,  532,  531,  530,
-
-      529,  528,  527,  526,  523,  522,  521,  520,  519,  518,
-      517,  514,  513,  512,  511,  510,  509,  508,  507,  506,
-      505,  504,  500,  499,  498,  497,  496,  495,  494,  492,
-      491,  489,  488,  485,  484,  483,  482,  481,  480,  479,
-      478,  477,  476,  475,  474,  473,  472,  471,  470,  469,
-      468,  467,  466,  465,  464,  463,  462,  461,  458,  457,
-      456,  455,  454,  453,  452,  451,  450,  447,  446,  445,
-      444,  443,  440,  439,  438,  437,  436,  435,  434,  433,
-      432,  427,  426,  425,  424,  423,  422,  421,  420,  419,
-      418,  417,  414,  413,  412,  411,  408,  407,  406,  405,
-
-      404,  403,  402,  399,  398,  396,  395,  390,  385,  382,
-      379,  378,  377,  376,  375,  374,  373,  372,  371,  370,
-      369,  368,  367,  366,  365,  364,  361,  360,  359,  358,
-      357,  356,  355,  354,  353,  352,  351,  350,  349,  345,
-      344,  343,  342,  341,  340,  339,  335,  334,  333,  332,
-      331,  330,  329,  328,  327,  326,  325,  324,  323,  322,
-      321,  320,  319,  318,  317,  316,  315,  314,  313,  312,
-      311,  310,  309,  306,  305,  304,  303,  302,  301,  299,
-      198,  296,  294,  292,  289,  288,  286,  284,  277,  276,
-      275,  273,  272,  271,  270,  269,  268,  264,  253,  249,
-
-      246,  245,  244,  243,  241,  240,  239,  238,  235,  234,
-      233,  232,  231,  230,  229,  228,  227,  223,  220,  217,
-      216,  215,  214,  211,  210,  209,  205,  204,  203,  202,
-      198,  191,  188,  187,  185,  183,  182,  174,  160,  142,
-      136,  121,  110,  107,  106,  104,   43,  100,   98,   97,
-       88,   43, 1291,   11, 1291, 1291, 1291, 1291, 1291, 1291,
-     1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291,
-     1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291,
-     1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291,
-     1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291,
-
-     1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291,
-     1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291,
-     1291, 1291, 1291, 1291, 1291
+      539,  538,  537,  536,  535,  532,  531,  530,  529,  528,
+      527,  526,  523,  522,  521,  520,  519,  518,  517,  516,
+      515,  514,  513,  509,  508,  507,  506,  505,  504,  503,
+      501,  500,  498,  497,  494,  493,  492,  491,  488,  487,
+      486,  485,  484,  483,  482,  481,  480,  479,  478,  477,
+
+      476,  473,  472,  471,  470,  469,  468,  467,  466,  463,
+      462,  461,  460,  459,  458,  457,  456,  455,  452,  451,
+      450,  449,  448,  445,  444,  443,  442,  441,  440,  439,
+      438,  437,  432,  431,  430,  429,  428,  427,  426,  425,
+      424,  423,  422,  419,  418,  417,  416,  413,  412,  411,
+      410,  409,  408,  407,  404,  403,  401,  400,  395,  390,
+      387,  384,  383,  382,  381,  379,  378,  377,  376,  375,
+      374,  373,  372,  371,  370,  369,  368,  367,  364,  363,
+      362,  361,  360,  359,  358,  357,  356,  355,  354,  353,
+      352,  348,  347,  346,  345,  344,  343,  342,  338,  337,
+
+      336,  335,  334,  333,  332,  331,  330,  329,  328,  327,
+      326,  325,  324,  323,  322,  321,  320,  319,  318,  317,
+      316,  315,  314,  313,  312,  309,  308,  307,  306,  305,
+      304,  302,  199,  299,  297,  295,  292,  291,  289,  287,
+      280,  279,  278,  276,  275,  273,  272,  271,  270,  266,
+      254,  250,  247,  246,  245,  244,  242,  241,  240,  239,
+      236,  235,  234,  233,  232,  231,  230,  229,  228,  224,
+      221,  218,  217,  216,  215,  212,  211,  210,  206,  205,
+      204,  203,  199,  192,  189,  188,  186,  184,  183,  175,
+      160,  142,  136,  121,  110,  107,  106,  104,   43,  100,
+
+       98,   97,   88,   43, 1342,   11, 1342, 1342, 1342, 1342,
+     1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342,
+     1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342,
+     1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342,
+     1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342,
+     1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342,
+     1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342,
+     1342, 1342, 1342, 1342, 1342, 1342, 1342
     } ;
 
-static const flex_int16_t yy_chk[1726] =
+static yyconst flex_int16_t yy_chk[1778] =
     {   0,
         0,    1,    1,    1,    0,    1,    1,    0,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,   21,  578,
-        3,    3,    3,   21,    1,    1,    3,    0,  578,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,   21,  589,
+        3,    3,    3,   21,    1,    1,    3,    0,  589,    1,
         4,    4,    4,   13,    1,   13,    4,   27,   28,    1,
        57,    1,    5,    5,    5,   26,   32,    1,    1,   33,
         6,    6,    6,    7,    7,    7,    1,    7,  718,    8,
@@ -1396,7 +1192,7 @@ static const flex_int16_t yy_chk[1726] =
 
         6,   20,   20,   20,    2,   37,    9,   37,   42,    2,
        42,    2,   20,   51,   10,   54,   31,    2,    2,   52,
-      721,   75,   25,   66,   25,   75,    2,   25,   25,   25,
+      720,   75,   25,   66,   25,   75,    2,   25,   25,   25,
       161,   66,    2,  128,  128,   20,   51,  161,   54,    2,
         2,   15,   15,   15,   15,   15,   15,   15,   15,   15,
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
@@ -1408,18 +1204,18 @@ static const flex_int16_t yy_chk[1726] =
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
        15,   15,   17,   48,   17,   17,   17,   19,   56,   19,
        19,   19,   44,   59,   22,   17,   22,   22,   22,   64,
-       19,   93,   61,   55,   67,   61,  287,   22,   61,   48,
+       19,   93,   61,   55,   67,   61,  290,   22,   61,   48,
        61,   56,   61,   55,   67,   96,   67,   63,   17,   59,
        73,   91,   64,   19,   73,   59,   55,   44,   63,   93,
-       22,   45,   70,   64,   73,  287,   70,   45,   63,   45,
+       22,   45,   70,   64,   73,  290,   70,   45,   63,   45,
        45,   55,   45,   96,   45,   45,   45,   91,   58,   69,
-       69,   45,   45,   69,   45,   58,   70,  722,  101,   69,
+       69,   45,   45,   69,   45,   58,   70,  721,  101,   69,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   58,   89,   89,   89,   58,   62,   78,
-       71,   58,   62,  101,   77,   62,   62,   92,  259,   58,
-       72,  259,  105,   58,   77,   58,   58,   94,   62,   71,
+       71,   58,   62,  101,   77,   62,   62,   92,  260,   58,
+       72,  260,  105,   58,   77,   58,   58,   94,   62,   71,
        72,   71,   78,   71,   76,   72,   72,   77,   76,   77,
        95,   76,   78,   92,   81,   81,   81,   78,   76,   76,
       105,  108,   77,   94,   76,   81,  157,  157,   82,   77,
@@ -1428,178 +1224,184 @@ static const flex_int16_t yy_chk[1726] =
        85,   85,   90,   90,   90,   84,  103,  113,  115,  114,
 
        85,  109,  119,  103,   82,  111,  124,  133,  135,  133,
-      112,  308,  152,  147,  723,  124,  124,  147,   84,  119,
-      177,  115,  176,   85,  135,  113,  114,  724,  308,  137,
-      119,  103,  137,  171,  159,  103,  137,  159,  159,  103,
-      152,  164,  152,  179,  180,  164,  177,  103,  162,  164,
-      176,  103,  178,  103,  103,  118,  118,  118,  276,  245,
-      171,  181,  118,  118,  118,  118,  118,  118,  186,  189,
-      180,  179,  192,  190,  208,  178,  196,  237,  194,  201,
-      208,  162,  162,  162,  181,  118,  118,  118,  118,  118,
-      118,  186,  162,  245,  162,  192,  162,  189,  278,  162,
-
-      190,  194,  201,  196,  199,  199,  199,  245,  276,  281,
-      286,  199,  199,  199,  199,  199,  199,  289,  289,  290,
-      286,  278,  293,  314,  326,  300,  289,  314,  237,  326,
-      501,  237,  281,  342,  199,  199,  199,  199,  199,  199,
-      336,  336,  290,  342,  353,  389,  725,  399,  726,  399,
-      293,  298,  298,  298,  300,  415,  591,  501,  298,  298,
-      298,  298,  298,  298,  381,  401,  424,  502,  553,  381,
-      415,  424,  503,  389,  399,  326,  399,  503,  590,  591,
-      326,  298,  298,  298,  298,  298,  298,  592,  595,  657,
-      658,  658,  728,  401,  595,  502,  657,  592,  658,  674,
-
-      353,  400,  400,  400,  729,  553,  590,  730,  400,  400,
-      400,  400,  400,  400,  661,  720,  731,  732,  733,  720,
-      661,  734,  735,  736,  737,  738,  739,  674,  740,  741,
-      742,  400,  400,  400,  400,  400,  400,  743,  744,  745,
-      746,  747,  748,  750,  751,  752,  753,  754,  755,  756,
-      758,  759,  760,  761,  762,  763,  764,  765,  766,  767,
-      768,  769,  770,  771,  772,  773,  774,  776,  777,  778,
-      779,  780,  781,  782,  759,  783,  784,  758,  786,  787,
-      788,  789,  791,  792,  793,  788,  794,  795,  796,  797,
-      798,  799,  800,  801,  802,  803,  804,  805,  807,  808,
-
-      809,  810,  812,  813,  814,  815,  816,  804,  817,  818,
-      819,  820,  821,  822,  823,  825,  826,  827,  828,  829,
-      830,  831,  832,  833,  834,  835,  837,  836,  838,  839,
-      840,  841,  843,  844,  845,  846,  788,  847,  848,  850,
-      851,  852,  853,  854,  855,  856,  857,  858,  859,  860,
-      861,  862,  864,  835,  836,  865,  866,  867,  868,  869,
-      865,  870,  871,  872,  873,  874,  875,  876,  877,  878,
-      879,  880,  881,  882,  883,  884,  885,  887,  888,  889,
-      890,  891,  892,  893,  895,  896,  898,  899,  900,  901,
-      902,  903,  904,  905,  906,  908,  909,  910,  911,  912,
-
-      913,  915,  916,  917,  918,  921,  922,  923,  924,  925,
-      926,  927,  928,  929,  930,  931,  932,  933,  935,  909,
-      937,  939,  940,  941,  942,  910,  943,  945,  946,  947,
-      949,  950,  951,  952,  953,  956,  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,  985,  986,  987,  988,  989,  990,  992,
-      993,  994,  995,  996,  997,  998,  999, 1000, 1001, 1002,
-     1003, 1004, 1005, 1006,  977, 1010, 1011, 1012, 1013, 1014,
-     1005, 1015, 1016,  963, 1017, 1018, 1020, 1021, 1022, 1023,
-
-     1025, 1027,  982, 1030, 1032, 1033, 1034, 1035, 1036, 1038,
-     1039, 1034, 1041, 1042, 1043, 1044, 1045, 1046, 1048, 1049,
-     1050, 1051, 1052, 1053, 1054, 1055, 1056, 1058, 1059, 1061,
-     1062, 1036, 1063, 1064, 1066, 1067, 1068, 1069, 1070, 1073,
-     1075, 1076, 1078, 1079, 1080, 1081, 1083, 1085, 1087, 1088,
-     1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098,
-     1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108,
-     1109, 1110, 1111, 1112, 1113, 1087, 1114, 1115, 1116, 1117,
-     1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1129,
-     1132, 1133, 1136, 1137, 1138, 1139, 1140, 1141, 1143, 1145,
-
-     1147, 1148, 1149, 1151, 1152, 1153, 1154, 1155, 1156, 1157,
-     1158, 1159, 1160, 1162, 1163, 1125, 1164, 1166, 1167, 1168,
-     1169, 1170, 1171, 1173, 1174, 1176, 1177, 1178, 1179, 1180,
-     1181, 1182, 1183, 1184, 1188, 1191, 1192, 1194, 1195, 1197,
-     1198, 1199, 1200, 1202, 1203, 1204, 1205, 1206, 1207, 1209,
-     1210, 1211, 1212, 1213, 1214, 1215, 1217, 1218, 1219, 1220,
-     1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1233,
-     1235, 1236, 1237, 1239, 1240, 1241, 1243, 1244, 1245, 1247,
-     1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257,
-     1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1267, 1268,
-
-     1269, 1270, 1271, 1272, 1276, 1277, 1278, 1280, 1281, 1282,
-     1283, 1284, 1285, 1286, 1288, 1289, 1292, 1292, 1292, 1292,
-     1292, 1293, 1293, 1293, 1293, 1293, 1294, 1300, 1294, 1294,
-     1294, 1295, 1301, 1295, 1302, 1295, 1296, 1296, 1296, 1296,
-     1296, 1297, 1297, 1297, 1297, 1297, 1298, 1303, 1298, 1298,
-     1298, 1299, 1299, 1299,  717,  714,  713,  712,  709,  708,
-      707,  706,  705,  704,  703,  702,  701,  700,  699,  698,
-      697,  695,  694,  693,  692,  691,  690,  689,  688,  687,
-      686,  685,  684,  683,  682,  680,  679,  678,  677,  676,
-      675,  673,  671,  670,  669,  668,  667,  666,  665,  664,
-
-      663,  660,  659,  656,  655,  654,  653,  652,  651,  650,
-      649,  648,  647,  646,  645,  644,  643,  642,  641,  640,
-      638,  637,  636,  635,  634,  633,  632,  630,  629,  628,
-      627,  626,  625,  624,  623,  622,  621,  620,  619,  618,
-      617,  616,  615,  614,  613,  612,  611,  610,  609,  608,
-      607,  606,  605,  604,  603,  602,  601,  600,  599,  598,
-      597,  596,  594,  593,  589,  588,  587,  585,  584,  582,
-      581,  580,  579,  576,  575,  574,  573,  572,  571,  570,
-      569,  568,  566,  565,  564,  563,  562,  561,  560,  559,
-      557,  556,  555,  554,  552,  551,  550,  549,  548,  547,
-
-      545,  544,  543,  542,  541,  540,  539,  538,  537,  536,
-      535,  534,  533,  532,  531,  530,  529,  528,  527,  526,
-      525,  523,  522,  521,  520,  519,  518,  517,  516,  515,
-      514,  513,  512,  511,  510,  509,  508,  507,  506,  505,
-      499,  497,  494,  493,  492,  491,  489,  488,  487,  485,
-      484,  481,  480,  479,  478,  477,  476,  475,  474,  473,
-      472,  471,  470,  469,  468,  467,  466,  465,  464,  463,
-      462,  460,  458,  457,  456,  455,  454,  453,  452,  451,
-      450,  449,  448,  446,  445,  444,  443,  442,  441,  440,
-      439,  438,  437,  436,  435,  434,  433,  432,  431,  430,
-
-      429,  427,  426,  425,  423,  422,  421,  420,  419,  417,
-      416,  414,  413,  411,  410,  409,  408,  407,  405,  404,
-      403,  402,  397,  396,  394,  393,  392,  391,  390,  388,
-      387,  385,  382,  380,  379,  377,  376,  375,  374,  373,
-      372,  371,  370,  369,  368,  367,  366,  365,  364,  363,
-      362,  361,  360,  359,  357,  356,  355,  354,  352,  351,
-      350,  349,  348,  347,  346,  345,  343,  341,  340,  339,
-      338,  337,  335,  334,  333,  332,  331,  330,  329,  328,
-      327,  325,  324,  323,  322,  321,  320,  319,  318,  317,
-      316,  315,  313,  312,  311,  310,  307,  306,  305,  304,
-
-      303,  302,  301,  297,  295,  292,  291,  288,  284,  277,
-      275,  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,  248,  247,  246,  244,
-      243,  242,  241,  240,  239,  238,  236,  235,  234,  233,
-      232,  231,  230,  229,  227,  226,  225,  224,  223,  222,
-      221,  220,  219,  218,  217,  216,  215,  214,  213,  212,
-      211,  210,  209,  207,  206,  205,  204,  203,  202,  200,
-      197,  195,  193,  191,  188,  187,  185,  182,  174,  173,
-      172,  170,  169,  168,  167,  166,  165,  163,  160,  158,
-
-      156,  155,  154,  153,  151,  150,  149,  148,  146,  145,
-      144,  143,  142,  141,  140,  139,  138,  136,  134,  132,
-      131,  130,  129,  127,  126,  125,  123,  122,  121,  120,
-      116,  110,  107,  106,  104,   99,   98,   79,   74,   68,
-       65,   60,   53,   50,   49,   47,   43,   41,   39,   38,
-       24,   14,   11, 1291, 1291, 1291, 1291, 1291, 1291, 1291,
-     1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291,
-     1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291,
-     1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291,
-     1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291,
-
-     1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291,
-     1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291,
-     1291, 1291, 1291, 1291, 1291
+      112,  311,  152,  147,  722,  124,  124,  147,   84,  119,
+      178,  115,  177,   85,  135,  113,  114,  723,  311,  137,
+      119,  103,  137,  169,  159,  103,  137,  159,  159,  103,
+      152,  164,  152,  172,  180,  164,  178,  103,  162,  164,
+      177,  103,  179,  103,  103,  118,  118,  118,  181,  724,
+      169,  246,  118,  118,  118,  118,  118,  118,  182,  238,
+      172,  191,  180,  190,  279,  179,  356,  187,  197,  193,
+      195,  162,  162,  162,  181,  118,  118,  118,  118,  118,
+      118,  182,  162,  725,  162,  246,  162,  162,  191,  162,
+
+      187,  190,  193,  195,  202,  197,  200,  200,  200,  246,
+      281,  284,  289,  200,  200,  200,  200,  200,  200,  209,
+      238,  274,  289,  238,  279,  209,  274,  202,  296,  293,
+      329,  303,  356,  281,  284,  329,  200,  200,  200,  200,
+      200,  200,  292,  292,  317,  339,  339,  394,  317,  406,
+      366,  292,  293,  345,  366,  510,  296,  301,  301,  301,
+      303,  562,  604,  345,  301,  301,  301,  301,  301,  301,
+      380,  386,  404,  380,  404,  394,  386,  406,  420,  429,
+      511,  329,  510,  726,  429,  604,  329,  301,  301,  301,
+      301,  301,  301,  420,  603,  512,  605,  729,  562,  404,
+
+      512,  404,  405,  405,  405,  730,  605,  731,  511,  405,
+      405,  405,  405,  405,  405,  608,  672,  673,  673,  691,
+      676,  608,  603,  672,  734,  673,  676,  735,  736,  738,
+      739,  740,  405,  405,  405,  405,  405,  405,  737,  741,
+      742,  743,  737,  745,  746,  747,  748,  691,  749,  750,
+      751,  752,  753,  754,  755,  756,  757,  758,  759,  760,
+      761,  762,  763,  764,  765,  766,  767,  769,  770,  771,
+      772,  773,  774,  775,  776,  777,  779,  780,  781,  782,
+      783,  784,  785,  786,  787,  788,  789,  790,  791,  792,
+      793,  794,  795,  797,  798,  799,  800,  801,  802,  803,
+
+      780,  804,  805,  779,  807,  808,  809,  810,  812,  813,
+      814,  809,  815,  816,  817,  818,  819,  820,  821,  822,
+      823,  824,  825,  826,  828,  829,  830,  831,  833,  834,
+      835,  836,  837,  825,  838,  839,  840,  841,  842,  843,
+      844,  845,  846,  848,  849,  850,  851,  852,  853,  854,
+      855,  856,  857,  858,  859,  860,  862,  861,  863,  864,
+      865,  866,  809,  868,  869,  870,  871,  872,  873,  875,
+      876,  877,  878,  879,  880,  881,  882,  883,  884,  885,
+      886,  887,  889,  860,  861,  890,  891,  892,  893,  894,
+      890,  895,  896,  897,  898,  899,  900,  901,  902,  903,
+
+      904,  905,  906,  907,  908,  909,  910,  912,  913,  914,
+      915,  916,  917,  918,  919,  920,  922,  923,  925,  926,
+      927,  928,  929,  930,  931,  932,  933,  934,  935,  937,
+      938,  939,  940,  941,  942,  944,  945,  946,  947,  950,
+      951,  952,  953,  954,  955,  956,  957,  958,  959,  960,
+      961,  962,  964,  938,  966,  968,  969,  970,  971,  939,
+      972,  974,  975,  976,  978,  979,  980,  981,  982,  985,
+      986,  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, 1014, 1015, 1016,
+
+     1017, 1018, 1019, 1020, 1021, 1022, 1023, 1025, 1026, 1027,
+     1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037,
+     1038, 1039, 1010, 1043, 1044, 1045, 1046, 1047, 1038,  994,
+     1048, 1049, 1050, 1051, 1052, 1054, 1055, 1056, 1057, 1058,
+     1015, 1060, 1062, 1065, 1067, 1069, 1070, 1071, 1072, 1073,
+     1075, 1076, 1071, 1078, 1079, 1080, 1081, 1082, 1083, 1085,
+     1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1095, 1096,
+     1098, 1099, 1073, 1100, 1101, 1103, 1104, 1105, 1106, 1107,
+     1110, 1111, 1113, 1114, 1115, 1117, 1118, 1119, 1120, 1121,
+     1123, 1125, 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, 1153, 1127,
+     1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163,
+     1165, 1166, 1167, 1168, 1169, 1172, 1175, 1176, 1179, 1180,
+     1181, 1182, 1183, 1184, 1186, 1188, 1190, 1191, 1192, 1194,
+     1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204,
+     1205, 1168, 1207, 1208, 1209, 1211, 1212, 1213, 1214, 1215,
+     1216, 1218, 1219, 1221, 1222, 1223, 1224, 1225, 1226, 1227,
+     1228, 1229, 1231, 1235, 1238, 1239, 1241, 1242, 1244, 1245,
+     1246, 1247, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1257,
+
+     1258, 1259, 1260, 1261, 1262, 1263, 1265, 1266, 1267, 1268,
+     1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279,
+     1282, 1284, 1285, 1286, 1287, 1289, 1290, 1291, 1293, 1294,
+     1295, 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, 1327, 1328, 1329, 1331,
+     1332, 1333, 1334, 1335, 1336, 1337, 1339, 1340, 1343, 1343,
+     1343, 1343, 1343, 1344, 1344, 1344, 1344, 1344, 1345, 1351,
+     1345, 1345, 1345, 1346, 1352, 1346, 1353, 1346, 1347, 1347,
+     1347, 1347, 1347, 1348, 1348, 1348, 1348, 1348, 1349, 1354,
+
+     1349, 1349, 1349, 1350, 1350, 1350,  717,  716,  715,  714,
+      712,  711,  710,  709,  708,  707,  706,  705,  704,  703,
+      702,  701,  700,  699,  697,  696,  695,  694,  693,  692,
+      690,  688,  687,  686,  685,  684,  683,  682,  681,  680,
+      679,  678,  675,  674,  671,  670,  669,  668,  667,  666,
+      665,  664,  663,  662,  661,  660,  659,  658,  657,  656,
+      655,  654,  653,  651,  650,  649,  648,  647,  646,  645,
+      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,  615,  614,
+
+      613,  612,  611,  610,  609,  607,  606,  602,  601,  600,
+      598,  597,  595,  594,  593,  592,  591,  590,  587,  586,
+      585,  584,  583,  582,  581,  580,  579,  578,  576,  575,
+      574,  573,  572,  571,  570,  569,  568,  566,  565,  564,
+      563,  561,  560,  559,  558,  557,  556,  554,  553,  552,
+      551,  550,  549,  548,  547,  546,  545,  544,  543,  542,
+      541,  540,  539,  538,  537,  536,  535,  534,  532,  531,
+      530,  529,  528,  527,  526,  525,  524,  523,  522,  521,
+      520,  519,  518,  517,  516,  515,  514,  508,  506,  503,
+      502,  501,  500,  498,  497,  496,  494,  493,  490,  489,
+
+      488,  487,  486,  485,  484,  483,  482,  481,  480,  479,
+      478,  477,  476,  475,  474,  473,  472,  471,  470,  469,
+      468,  467,  465,  463,  462,  461,  460,  459,  458,  457,
+      456,  455,  454,  453,  451,  450,  449,  448,  447,  446,
+      445,  444,  443,  442,  441,  440,  439,  438,  437,  436,
+      435,  434,  432,  431,  430,  428,  427,  426,  425,  424,
+      422,  421,  419,  418,  416,  415,  414,  413,  412,  410,
+      409,  408,  407,  402,  401,  399,  398,  397,  396,  395,
+      393,  392,  390,  387,  385,  384,  382,  381,  379,  378,
+      377,  376,  375,  374,  373,  372,  371,  370,  369,  368,
+
+      367,  365,  364,  363,  362,  360,  359,  358,  357,  355,
+      354,  353,  352,  351,  350,  349,  348,  346,  344,  343,
+      342,  341,  340,  338,  337,  336,  335,  334,  333,  332,
+      331,  330,  328,  327,  326,  325,  324,  323,  322,  321,
+      320,  319,  318,  316,  315,  314,  313,  310,  309,  308,
+      307,  306,  305,  304,  300,  298,  295,  294,  291,  287,
+      280,  278,  277,  276,  275,  273,  272,  271,  270,  269,
+      268,  267,  266,  265,  264,  263,  262,  261,  259,  258,
+      257,  256,  255,  254,  253,  252,  251,  250,  249,  248,
+      247,  245,  244,  243,  242,  241,  240,  239,  237,  236,
+
+      235,  234,  233,  232,  231,  230,  228,  227,  226,  225,
+      224,  223,  222,  221,  220,  219,  218,  217,  216,  215,
+      214,  213,  212,  211,  210,  208,  207,  206,  205,  204,
+      203,  201,  198,  196,  194,  192,  189,  188,  186,  183,
+      175,  174,  173,  171,  170,  168,  167,  166,  165,  163,
+      160,  158,  156,  155,  154,  153,  151,  150,  149,  148,
+      146,  145,  144,  143,  142,  141,  140,  139,  138,  136,
+      134,  132,  131,  130,  129,  127,  126,  125,  123,  122,
+      121,  120,  116,  110,  107,  106,  104,   99,   98,   79,
+       74,   68,   65,   60,   53,   50,   49,   47,   43,   41,
+
+       39,   38,   24,   14,   11, 1342, 1342, 1342, 1342, 1342,
+     1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342,
+     1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342,
+     1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342,
+     1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342,
+     1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342,
+     1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342, 1342,
+     1342, 1342, 1342, 1342, 1342, 1342, 1342
     } ;
 
 static yy_state_type yy_last_accepting_state;
 static char *yy_last_accepting_cpos;
 
-extern int yy_flex_debug;
-int yy_flex_debug = 1;
+extern int parser4__flex_debug;
+int parser4__flex_debug = 1;
 
-static const flex_int16_t yy_rule_linenum[159] =
+static yyconst flex_int16_t yy_rule_linenum[163] =
     {   0,
-      145,  147,  149,  154,  155,  160,  161,  162,  174,  177,
-      182,  189,  198,  207,  216,  225,  235,  244,  253,  262,
-      271,  280,  289,  298,  307,  318,  327,  336,  345,  354,
-      364,  374,  384,  394,  404,  414,  424,  434,  444,  455,
-      466,  477,  486,  496,  505,  515,  530,  546,  555,  564,
-      573,  582,  602,  622,  631,  641,  650,  659,  668,  678,
-      687,  696,  705,  714,  724,  733,  742,  751,  760,  769,
-      778,  787,  796,  805,  814,  824,  836,  846,  855,  865,
-      875,  885,  895,  905,  914,  924,  933,  942,  951,  960,
-      970,  980,  990,  999, 1008, 1017, 1026, 1035, 1044, 1053,
-
-     1062, 1071, 1080, 1089, 1098, 1107, 1116, 1125, 1134, 1143,
-     1152, 1161, 1170, 1179, 1188, 1197, 1206, 1215, 1224, 1233,
-     1242, 1252, 1262, 1272, 1282, 1292, 1302, 1312, 1322, 1332,
-     1341, 1350, 1359, 1368, 1377, 1386, 1395, 1406, 1419, 1432,
-     1447, 1546, 1551, 1556, 1561, 1562, 1563, 1564, 1565, 1566,
-     1568, 1586, 1599, 1604, 1608, 1610, 1612, 1614
+      144,  146,  148,  153,  154,  159,  160,  161,  173,  176,
+      181,  188,  197,  206,  215,  224,  234,  243,  252,  261,
+      270,  279,  288,  297,  306,  317,  326,  335,  344,  353,
+      363,  373,  383,  393,  403,  413,  423,  433,  443,  453,
+      463,  473,  483,  494,  505,  516,  525,  535,  544,  554,
+      569,  585,  594,  603,  612,  621,  641,  661,  670,  680,
+      689,  698,  707,  717,  726,  735,  744,  753,  763,  772,
+      781,  790,  799,  808,  817,  826,  835,  844,  853,  863,
+      875,  885,  894,  904,  914,  924,  934,  944,  953,  963,
+      972,  981,  990,  999, 1009, 1019, 1029, 1038, 1047, 1056,
+
+     1065, 1074, 1083, 1092, 1101, 1110, 1119, 1128, 1137, 1146,
+     1155, 1164, 1173, 1182, 1191, 1200, 1209, 1218, 1227, 1236,
+     1245, 1254, 1263, 1272, 1281, 1291, 1301, 1311, 1321, 1331,
+     1341, 1351, 1361, 1371, 1380, 1389, 1398, 1407, 1416, 1425,
+     1434, 1445, 1458, 1471, 1486, 1585, 1590, 1595, 1600, 1601,
+     1602, 1603, 1604, 1605, 1607, 1625, 1638, 1643, 1647, 1649,
+     1651, 1653
     } ;
 
 /* The intent behind this definition is that it'll catch
@@ -1609,7 +1411,7 @@ static const flex_int16_t yy_rule_linenum[159] =
 #define yymore() yymore_used_but_not_detected
 #define YY_MORE_ADJ 0
 #define YY_RESTORE_YY_MORE_OFFSET
-char *yytext;
+char *parser4_text;
 #line 1 "dhcp4_lexer.ll"
 /* Copyright (C) 2016-2017 Internet Systems Consortium, Inc. ("ISC")
 
@@ -1636,8 +1438,8 @@ char *yytext;
    2.5.31 through 2.5.33): it generates code that does
    not conform to C89.  See Debian bug 333231
    <http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=333231>. */
-# undef yywrap
-# define yywrap() 1
+# undef parser4_wrap
+# define parser4_wrap() 1
 
 namespace {
 
@@ -1652,10 +1454,9 @@ using namespace isc::dhcp;
 
 /* To avoid the call to exit... oops! */
 #define YY_FATAL_ERROR(msg) isc::dhcp::Parser4Context::fatal(msg)
-#line 1655 "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
+   using parser4_wrap requires linking with -lfl, which provides the default parser4_wrap
    implementation that always returns 1 anyway. */
 /* nounput simplifies the lexer, by removing support for putting a character
    back into the input stream. We never use such capability anyway. */
@@ -1663,23 +1464,23 @@ using namespace isc::dhcp;
 /* avoid to get static global variables to remain with C++. */
 /* in last resort %option reentrant */
 /* Enables debug mode. To see the debug messages, one needs to also set
-   yy_flex_debug to 1, then the debug messages will be printed on stderr. */
+   parser4__flex_debug to 1, then the debug messages will be printed on stderr. */
 /* I have no idea what this option does, except it was specified in the bison
    examples and Postgres folks added it to remove gcc 4.3 warnings. Let's
    be on the safe side and keep it. */
 #define YY_NO_INPUT 1
 
+
 /* These are not token expressions yet, just convenience expressions that
    can be used during actual token definitions. Note some can match
    incorrect inputs (e.g., IP addresses) which must be checked. */
 /* for errors */
 #line 94 "dhcp4_lexer.ll"
 /* This code run each time a pattern is matched. It updates the location
-   by moving it ahead by yyleng bytes. yyleng specifies the length of the
+   by moving it ahead by parser4_leng bytes. parser4_leng specifies the length of the
    currently matched token. */
-#define YY_USER_ACTION  driver.loc_.columns(yyleng);
-#line 1681 "dhcp4_lexer.cc"
-#line 1682 "dhcp4_lexer.cc"
+#define YY_USER_ACTION  driver.loc_.columns(parser4_leng);
+#line 1484 "dhcp4_lexer.cc"
 
 #define INITIAL 0
 #define COMMENT 1
@@ -1707,7 +1508,7 @@ using namespace isc::dhcp;
 /* %if-reentrant */
 /* %if-c-only */
 
-static int yy_init_globals ( void );
+static int yy_init_globals (void );
 
 /* %endif */
 /* %if-reentrant */
@@ -1717,31 +1518,31 @@ static int yy_init_globals ( void );
 /* Accessor methods to globals.
    These are made visible to non-reentrant scanners for convenience. */
 
-int yylex_destroy ( void );
+int parser4_lex_destroy (void );
 
-int yyget_debug ( void );
+int parser4_get_debug (void );
 
-void yyset_debug ( int debug_flag  );
+void parser4_set_debug (int debug_flag  );
 
-YY_EXTRA_TYPE yyget_extra ( void );
+YY_EXTRA_TYPE parser4_get_extra (void );
 
-void yyset_extra ( YY_EXTRA_TYPE user_defined  );
+void parser4_set_extra (YY_EXTRA_TYPE user_defined  );
 
-FILE *yyget_in ( void );
+FILE *parser4_get_in (void );
 
-void yyset_in  ( FILE * _in_str  );
+void parser4_set_in  (FILE * _in_str  );
 
-FILE *yyget_out ( void );
+FILE *parser4_get_out (void );
 
-void yyset_out  ( FILE * _out_str  );
+void parser4_set_out  (FILE * _out_str  );
 
-                       int yyget_leng ( void );
+                       int parser4_get_leng (void );
 
-char *yyget_text ( void );
+char *parser4_get_text (void );
 
-int yyget_lineno ( void );
+int parser4_get_lineno (void );
 
-void yyset_lineno ( int _line_number  );
+void parser4_set_lineno (int _line_number  );
 
 /* %if-bison-bridge */
 /* %endif */
@@ -1752,13 +1553,14 @@ void yyset_lineno ( int _line_number  );
 
 #ifndef YY_SKIP_YYWRAP
 #ifdef __cplusplus
-extern "C" int yywrap ( void );
+extern "C" int parser4_wrap (void );
 #else
-extern int yywrap ( void );
+extern int parser4_wrap (void );
 #endif
 #endif
 
 /* %not-for-header */
+
 #ifndef YY_NO_UNPUT
     
 #endif
@@ -1767,20 +1569,21 @@ extern int yywrap ( void );
 /* %endif */
 
 #ifndef yytext_ptr
-static void yy_flex_strncpy ( char *, const char *, int );
+static void yy_flex_strncpy (char *,yyconst char *,int );
 #endif
 
 #ifdef YY_NEED_STRLEN
-static int yy_flex_strlen ( const char * );
+static int yy_flex_strlen (yyconst char * );
 #endif
 
 #ifndef YY_NO_INPUT
 /* %if-c-only Standard (non-C++) definition */
 /* %not-for-header */
+
 #ifdef __cplusplus
-static int yyinput ( void );
+static int yyinput (void );
 #else
-static int input ( void );
+static int input (void );
 #endif
 /* %ok-for-header */
 
@@ -1807,7 +1610,7 @@ static int input ( void );
 /* This used to be an fputs(), but since the string might contain NUL's,
  * we now use fwrite().
  */
-#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0)
+#define ECHO do { if (fwrite( parser4_text, (size_t) parser4_leng, 1, parser4_out )) {} } while (0)
 /* %endif */
 /* %if-c++-only C++ definition */
 /* %endif */
@@ -1822,20 +1625,20 @@ static int input ( void );
        if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
                { \
                int c = '*'; \
-               int n; \
+               size_t n; \
                for ( n = 0; n < max_size && \
-                            (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
+                            (c = getc( parser4_in )) != EOF && c != '\n'; ++n ) \
                        buf[n] = (char) c; \
                if ( c == '\n' ) \
                        buf[n++] = (char) c; \
-               if ( c == EOF && ferror( yyin ) ) \
+               if ( c == EOF && ferror( parser4_in ) ) \
                        YY_FATAL_ERROR( "input in flex scanner failed" ); \
                result = n; \
                } \
        else \
                { \
                errno=0; \
-               while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \
+               while ( (result = (int) fread(buf, 1, max_size, parser4_in))==0 && ferror(parser4_in)) \
                        { \
                        if( errno != EINTR) \
                                { \
@@ -1843,7 +1646,7 @@ static int input ( void );
                                break; \
                                } \
                        errno=0; \
-                       clearerr(yyin); \
+                       clearerr(parser4_in); \
                        } \
                }\
 \
@@ -1876,9 +1679,11 @@ static int input ( void );
 
 /* %if-tables-serialization structures and prototypes */
 /* %not-for-header */
+
 /* %ok-for-header */
 
 /* %not-for-header */
+
 /* %tables-yydmap generated elements */
 /* %endif */
 /* end tables serialization structures and prototypes */
@@ -1892,15 +1697,15 @@ static int input ( void );
 #define YY_DECL_IS_OURS 1
 /* %if-c-only Standard (non-C++) definition */
 
-extern int yylex (void);
+extern int parser4_lex (void);
 
-#define YY_DECL int yylex (void)
+#define YY_DECL int parser4_lex (void)
 /* %endif */
 /* %if-c++-only C++ definition */
 /* %endif */
 #endif /* !YY_DECL */
 
-/* Code executed at the beginning of each rule, after yytext and yyleng
+/* Code executed at the beginning of each rule, after parser4_text and parser4_leng
  * have been set up.
  */
 #ifndef YY_USER_ACTION
@@ -1917,6 +1722,7 @@ extern int yylex (void);
        YY_USER_ACTION
 
 /* %not-for-header */
+
 /** The main scanner function which does all the work.
  */
 YY_DECL
@@ -1936,27 +1742,27 @@ YY_DECL
                if ( ! (yy_start) )
                        (yy_start) = 1; /* first start state */
 
-               if ( ! yyin )
+               if ( ! parser4_in )
 /* %if-c-only */
-                       yyin = stdin;
+                       parser4_in = stdin;
 /* %endif */
 /* %if-c++-only */
 /* %endif */
 
-               if ( ! yyout )
+               if ( ! parser4_out )
 /* %if-c-only */
-                       yyout = stdout;
+                       parser4_out = stdout;
 /* %endif */
 /* %if-c++-only */
 /* %endif */
 
                if ( ! YY_CURRENT_BUFFER ) {
-                       yyensure_buffer_stack ();
+                       parser4_ensure_buffer_stack ();
                        YY_CURRENT_BUFFER_LVALUE =
-                               yy_create_buffer( yyin, YY_BUF_SIZE );
+                               parser4__create_buffer(parser4_in,YY_BUF_SIZE );
                }
 
-               yy_load_buffer_state(  );
+               parser4__load_buffer_state( );
                }
 
        {
@@ -1965,12 +1771,11 @@ YY_DECL
 
 
 
-#line 104 "dhcp4_lexer.ll"
     /* This part of the code is copied over to the verbatim to the top
-       of the generated yylex function. Explanation:
+       of the generated parser4_lex function. Explanation:
        http://www.gnu.org/software/bison/manual/html_node/Multiple-start_002dsymbols.html */
 
-    /* Code run each time yylex is called. */
+    /* Code run each time parser4_lex is called. */
     driver.loc_.step();
 
     if (start_token_flag) {
@@ -2007,14 +1812,14 @@ YY_DECL
     }
 
 
-#line 2010 "dhcp4_lexer.cc"
+#line 1816 "dhcp4_lexer.cc"
 
        while ( /*CONSTCOND*/1 )                /* loops until end-of-file is reached */
                {
 /* %% [8.0] yymore()-related code goes here */
                yy_cp = (yy_c_buf_p);
 
-               /* Support of yytext. */
+               /* Support of parser4_text. */
                *yy_cp = (yy_hold_char);
 
                /* yy_bp points to the position in yy_ch_buf of the start of
@@ -2036,13 +1841,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 >= 1292 )
-                                       yy_c = yy_meta[yy_c];
+                               if ( yy_current_state >= 1343 )
+                                       yy_c = yy_meta[(unsigned int) yy_c];
                                }
-                       yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
+                       yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];
                        ++yy_cp;
                        }
-               while ( yy_current_state != 1291 );
+               while ( yy_current_state != 1342 );
                yy_cp = (yy_last_accepting_cpos);
                yy_current_state = (yy_last_accepting_state);
 
@@ -2052,22 +1857,22 @@ yy_find_action:
 
                YY_DO_BEFORE_ACTION;
 
-/* %% [11.0] code for yylineno update goes here */
+/* %% [11.0] code for parser4_lineno update goes here */
 
 do_action:     /* This label is used only to access EOF actions. */
 
 /* %% [12.0] debug code goes here */
-               if ( yy_flex_debug )
+               if ( parser4__flex_debug )
                        {
                        if ( yy_act == 0 )
                                fprintf( stderr, "--scanner backing up\n" );
-                       else if ( yy_act < 159 )
+                       else if ( yy_act < 163 )
                                fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
-                                        (long)yy_rule_linenum[yy_act], yytext );
-                       else if ( yy_act == 159 )
+                                        (long)yy_rule_linenum[yy_act], parser4_text );
+                       else if ( yy_act == 163 )
                                fprintf( stderr, "--accepting default rule (\"%s\")\n",
-                                        yytext );
-                       else if ( yy_act == 160 )
+                                        parser4_text );
+                       else if ( yy_act == 164 )
                                fprintf( stderr, "--(end of buffer or a NUL)\n" );
                        else
                                fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
@@ -2085,17 +1890,17 @@ do_action:      /* This label is used only to access EOF actions. */
 
 case 1:
 YY_RULE_SETUP
-#line 145 "dhcp4_lexer.ll"
+#line 144 "dhcp4_lexer.ll"
 ;
        YY_BREAK
 case 2:
 YY_RULE_SETUP
-#line 147 "dhcp4_lexer.ll"
+#line 146 "dhcp4_lexer.ll"
 ;
        YY_BREAK
 case 3:
 YY_RULE_SETUP
-#line 149 "dhcp4_lexer.ll"
+#line 148 "dhcp4_lexer.ll"
 {
   BEGIN(COMMENT);
   comment_start_line = driver.loc_.end.line;;
@@ -2103,38 +1908,38 @@ YY_RULE_SETUP
        YY_BREAK
 case 4:
 YY_RULE_SETUP
-#line 154 "dhcp4_lexer.ll"
+#line 153 "dhcp4_lexer.ll"
 BEGIN(INITIAL);
        YY_BREAK
 case 5:
 YY_RULE_SETUP
-#line 155 "dhcp4_lexer.ll"
+#line 154 "dhcp4_lexer.ll"
 ;
        YY_BREAK
 case YY_STATE_EOF(COMMENT):
-#line 156 "dhcp4_lexer.ll"
+#line 155 "dhcp4_lexer.ll"
 {
     isc_throw(Dhcp4ParseError, "Comment not closed. (/* in line " << comment_start_line);
 }
        YY_BREAK
 case 6:
 YY_RULE_SETUP
-#line 160 "dhcp4_lexer.ll"
+#line 159 "dhcp4_lexer.ll"
 BEGIN(DIR_ENTER);
        YY_BREAK
 case 7:
 YY_RULE_SETUP
-#line 161 "dhcp4_lexer.ll"
+#line 160 "dhcp4_lexer.ll"
 BEGIN(DIR_INCLUDE);
        YY_BREAK
 case 8:
 YY_RULE_SETUP
-#line 162 "dhcp4_lexer.ll"
+#line 161 "dhcp4_lexer.ll"
 {
     /* Include directive. */
 
     /* Extract the filename. */
-    std::string tmp(yytext+1);
+    std::string tmp(parser4_text+1);
     tmp.resize(tmp.size() - 1);
 
     driver.includeFile(tmp);
@@ -2143,19 +1948,19 @@ YY_RULE_SETUP
 case YY_STATE_EOF(DIR_ENTER):
 case YY_STATE_EOF(DIR_INCLUDE):
 case YY_STATE_EOF(DIR_EXIT):
-#line 171 "dhcp4_lexer.ll"
+#line 170 "dhcp4_lexer.ll"
 {
     isc_throw(Dhcp4ParseError, "Directive not closed.");
 }
        YY_BREAK
 case 9:
 YY_RULE_SETUP
-#line 174 "dhcp4_lexer.ll"
+#line 173 "dhcp4_lexer.ll"
 BEGIN(INITIAL);
        YY_BREAK
 case 10:
 YY_RULE_SETUP
-#line 177 "dhcp4_lexer.ll"
+#line 176 "dhcp4_lexer.ll"
 {
     /* Ok, we found a with space. Let's ignore it and update loc variable. */
     driver.loc_.step();
@@ -2164,16 +1969,16 @@ YY_RULE_SETUP
 case 11:
 /* rule 11 can match eol */
 YY_RULE_SETUP
-#line 182 "dhcp4_lexer.ll"
+#line 181 "dhcp4_lexer.ll"
 {
     /* Newline found. Let's update the location and continue. */
-    driver.loc_.lines(yyleng);
+    driver.loc_.lines(parser4_leng);
     driver.loc_.step();
 }
        YY_BREAK
 case 12:
 YY_RULE_SETUP
-#line 189 "dhcp4_lexer.ll"
+#line 188 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::CONFIG:
@@ -2185,7 +1990,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 13:
 YY_RULE_SETUP
-#line 198 "dhcp4_lexer.ll"
+#line 197 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -2197,7 +2002,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 14:
 YY_RULE_SETUP
-#line 207 "dhcp4_lexer.ll"
+#line 206 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::INTERFACES_CONFIG:
@@ -2209,7 +2014,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 15:
 YY_RULE_SETUP
-#line 216 "dhcp4_lexer.ll"
+#line 215 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_SOCKET_TYPE:
@@ -2221,7 +2026,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 16:
 YY_RULE_SETUP
-#line 225 "dhcp4_lexer.ll"
+#line 224 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_SOCKET_TYPE:
@@ -2234,7 +2039,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 17:
 YY_RULE_SETUP
-#line 235 "dhcp4_lexer.ll"
+#line 234 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case Parser4Context::INTERFACES_CONFIG:
@@ -2246,7 +2051,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 18:
 YY_RULE_SETUP
-#line 244 "dhcp4_lexer.ll"
+#line 243 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case Parser4Context::OUTBOUND_INTERFACE:
@@ -2258,7 +2063,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 19:
 YY_RULE_SETUP
-#line 253 "dhcp4_lexer.ll"
+#line 252 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case Parser4Context::OUTBOUND_INTERFACE:
@@ -2270,7 +2075,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 20:
 YY_RULE_SETUP
-#line 262 "dhcp4_lexer.ll"
+#line 261 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::INTERFACES_CONFIG:
@@ -2282,7 +2087,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 21:
 YY_RULE_SETUP
-#line 271 "dhcp4_lexer.ll"
+#line 270 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::INTERFACES_CONFIG:
@@ -2294,7 +2099,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 22:
 YY_RULE_SETUP
-#line 280 "dhcp4_lexer.ll"
+#line 279 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -2306,7 +2111,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 23:
 YY_RULE_SETUP
-#line 289 "dhcp4_lexer.ll"
+#line 288 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -2318,7 +2123,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 24:
 YY_RULE_SETUP
-#line 298 "dhcp4_lexer.ll"
+#line 297 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOSTS_DATABASE:
@@ -2330,7 +2135,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 25:
 YY_RULE_SETUP
-#line 307 "dhcp4_lexer.ll"
+#line 306 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LEASE_DATABASE:
@@ -2344,7 +2149,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 26:
 YY_RULE_SETUP
-#line 318 "dhcp4_lexer.ll"
+#line 317 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DATABASE_TYPE:
@@ -2356,7 +2161,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 27:
 YY_RULE_SETUP
-#line 327 "dhcp4_lexer.ll"
+#line 326 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DATABASE_TYPE:
@@ -2368,7 +2173,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 28:
 YY_RULE_SETUP
-#line 336 "dhcp4_lexer.ll"
+#line 335 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DATABASE_TYPE:
@@ -2380,7 +2185,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 29:
 YY_RULE_SETUP
-#line 345 "dhcp4_lexer.ll"
+#line 344 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DATABASE_TYPE:
@@ -2392,7 +2197,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 30:
 YY_RULE_SETUP
-#line 354 "dhcp4_lexer.ll"
+#line 353 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LEASE_DATABASE:
@@ -2405,7 +2210,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 31:
 YY_RULE_SETUP
-#line 364 "dhcp4_lexer.ll"
+#line 363 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LEASE_DATABASE:
@@ -2418,7 +2223,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 32:
 YY_RULE_SETUP
-#line 374 "dhcp4_lexer.ll"
+#line 373 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LEASE_DATABASE:
@@ -2431,7 +2236,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 33:
 YY_RULE_SETUP
-#line 384 "dhcp4_lexer.ll"
+#line 383 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LEASE_DATABASE:
@@ -2444,7 +2249,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 34:
 YY_RULE_SETUP
-#line 394 "dhcp4_lexer.ll"
+#line 393 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LEASE_DATABASE:
@@ -2457,7 +2262,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 35:
 YY_RULE_SETUP
-#line 404 "dhcp4_lexer.ll"
+#line 403 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LEASE_DATABASE:
@@ -2470,7 +2275,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 36:
 YY_RULE_SETUP
-#line 414 "dhcp4_lexer.ll"
+#line 413 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LEASE_DATABASE:
@@ -2483,7 +2288,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 37:
 YY_RULE_SETUP
-#line 424 "dhcp4_lexer.ll"
+#line 423 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LEASE_DATABASE:
@@ -2496,7 +2301,59 @@ YY_RULE_SETUP
        YY_BREAK
 case 38:
 YY_RULE_SETUP
-#line 434 "dhcp4_lexer.ll"
+#line 433 "dhcp4_lexer.ll"
+{
+    switch(driver.ctx_) {
+    case isc::dhcp::Parser4Context::LEASE_DATABASE:
+    case isc::dhcp::Parser4Context::HOSTS_DATABASE:
+        return isc::dhcp::Dhcp4Parser::make_RECONNECT_WAIT_TIME(driver.loc_);
+    default:
+        return isc::dhcp::Dhcp4Parser::make_STRING("reconnect-wait-time", driver.loc_);
+    }
+}
+       YY_BREAK
+case 39:
+YY_RULE_SETUP
+#line 443 "dhcp4_lexer.ll"
+{
+    switch(driver.ctx_) {
+    case isc::dhcp::Parser4Context::LEASE_DATABASE:
+    case isc::dhcp::Parser4Context::HOSTS_DATABASE:
+        return isc::dhcp::Dhcp4Parser::make_REQUEST_TIMEOUT(driver.loc_);
+    default:
+        return isc::dhcp::Dhcp4Parser::make_STRING("request-timeout", driver.loc_);
+    }
+}
+       YY_BREAK
+case 40:
+YY_RULE_SETUP
+#line 453 "dhcp4_lexer.ll"
+{
+    switch(driver.ctx_) {
+    case isc::dhcp::Parser4Context::LEASE_DATABASE:
+    case isc::dhcp::Parser4Context::HOSTS_DATABASE:
+        return isc::dhcp::Dhcp4Parser::make_TCP_KEEPALIVE(driver.loc_);
+    default:
+        return isc::dhcp::Dhcp4Parser::make_STRING("tcp-keepalive", driver.loc_);
+    }
+}
+       YY_BREAK
+case 41:
+YY_RULE_SETUP
+#line 463 "dhcp4_lexer.ll"
+{
+    switch(driver.ctx_) {
+    case isc::dhcp::Parser4Context::LEASE_DATABASE:
+    case isc::dhcp::Parser4Context::HOSTS_DATABASE:
+        return isc::dhcp::Dhcp4Parser::make_TCP_NODELAY(driver.loc_);
+    default:
+        return isc::dhcp::Dhcp4Parser::make_STRING("tcp-nodelay", driver.loc_);
+    }
+}
+       YY_BREAK
+case 42:
+YY_RULE_SETUP
+#line 473 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LEASE_DATABASE:
@@ -2507,9 +2364,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 39:
+case 43:
 YY_RULE_SETUP
-#line 444 "dhcp4_lexer.ll"
+#line 483 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -2521,9 +2378,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 40:
+case 44:
 YY_RULE_SETUP
-#line 455 "dhcp4_lexer.ll"
+#line 494 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -2535,9 +2392,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 41:
+case 45:
 YY_RULE_SETUP
-#line 466 "dhcp4_lexer.ll"
+#line 505 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -2549,9 +2406,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 42:
+case 46:
 YY_RULE_SETUP
-#line 477 "dhcp4_lexer.ll"
+#line 516 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -2561,9 +2418,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 43:
+case 47:
 YY_RULE_SETUP
-#line 486 "dhcp4_lexer.ll"
+#line 525 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -2574,9 +2431,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 44:
+case 48:
 YY_RULE_SETUP
-#line 496 "dhcp4_lexer.ll"
+#line 535 "dhcp4_lexer.ll"
 {
     switch (driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -2586,9 +2443,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 45:
+case 49:
 YY_RULE_SETUP
-#line 505 "dhcp4_lexer.ll"
+#line 544 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -2599,9 +2456,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 46:
+case 50:
 YY_RULE_SETUP
-#line 515 "dhcp4_lexer.ll"
+#line 554 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -2617,9 +2474,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 47:
+case 51:
 YY_RULE_SETUP
-#line 530 "dhcp4_lexer.ll"
+#line 569 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LEASE_DATABASE:
@@ -2636,9 +2493,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 48:
+case 52:
 YY_RULE_SETUP
-#line 546 "dhcp4_lexer.ll"
+#line 585 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DATA:
@@ -2648,9 +2505,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 49:
+case 53:
 YY_RULE_SETUP
-#line 555 "dhcp4_lexer.ll"
+#line 594 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DATA:
@@ -2660,9 +2517,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 50:
+case 54:
 YY_RULE_SETUP
-#line 564 "dhcp4_lexer.ll"
+#line 603 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -2672,9 +2529,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 51:
+case 55:
 YY_RULE_SETUP
-#line 573 "dhcp4_lexer.ll"
+#line 612 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::POOLS:
@@ -2684,9 +2541,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 52:
+case 56:
 YY_RULE_SETUP
-#line 582 "dhcp4_lexer.ll"
+#line 621 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -2707,9 +2564,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 53:
+case 57:
 YY_RULE_SETUP
-#line 602 "dhcp4_lexer.ll"
+#line 641 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -2730,9 +2587,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 54:
+case 58:
 YY_RULE_SETUP
-#line 622 "dhcp4_lexer.ll"
+#line 661 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -2742,9 +2599,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 55:
+case 59:
 YY_RULE_SETUP
-#line 631 "dhcp4_lexer.ll"
+#line 670 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -2755,9 +2612,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 56:
+case 60:
 YY_RULE_SETUP
-#line 641 "dhcp4_lexer.ll"
+#line 680 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -2767,9 +2624,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 57:
+case 61:
 YY_RULE_SETUP
-#line 650 "dhcp4_lexer.ll"
+#line 689 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -2779,9 +2636,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 58:
+case 62:
 YY_RULE_SETUP
-#line 659 "dhcp4_lexer.ll"
+#line 698 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -2791,9 +2648,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 59:
+case 63:
 YY_RULE_SETUP
-#line 668 "dhcp4_lexer.ll"
+#line 707 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -2804,9 +2661,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 60:
+case 64:
 YY_RULE_SETUP
-#line 678 "dhcp4_lexer.ll"
+#line 717 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::RESERVATION_MODE:
@@ -2816,9 +2673,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 61:
+case 65:
 YY_RULE_SETUP
-#line 687 "dhcp4_lexer.ll"
+#line 726 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::RESERVATION_MODE:
@@ -2828,9 +2685,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 62:
+case 66:
 YY_RULE_SETUP
-#line 696 "dhcp4_lexer.ll"
+#line 735 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::RESERVATION_MODE:
@@ -2840,9 +2697,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 63:
+case 67:
 YY_RULE_SETUP
-#line 705 "dhcp4_lexer.ll"
+#line 744 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::RESERVATION_MODE:
@@ -2852,9 +2709,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 64:
+case 68:
 YY_RULE_SETUP
-#line 714 "dhcp4_lexer.ll"
+#line 753 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DEF:
@@ -2865,9 +2722,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 65:
+case 69:
 YY_RULE_SETUP
-#line 724 "dhcp4_lexer.ll"
+#line 763 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -2877,9 +2734,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 66:
+case 70:
 YY_RULE_SETUP
-#line 733 "dhcp4_lexer.ll"
+#line 772 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::CONFIG:
@@ -2889,9 +2746,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 67:
+case 71:
 YY_RULE_SETUP
-#line 742 "dhcp4_lexer.ll"
+#line 781 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LOGGING:
@@ -2901,9 +2758,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 68:
+case 72:
 YY_RULE_SETUP
-#line 751 "dhcp4_lexer.ll"
+#line 790 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LOGGERS:
@@ -2913,9 +2770,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 69:
+case 73:
 YY_RULE_SETUP
-#line 760 "dhcp4_lexer.ll"
+#line 799 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OUTPUT_OPTIONS:
@@ -2925,9 +2782,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 70:
+case 74:
 YY_RULE_SETUP
-#line 769 "dhcp4_lexer.ll"
+#line 808 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LOGGERS:
@@ -2937,9 +2794,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 71:
+case 75:
 YY_RULE_SETUP
-#line 778 "dhcp4_lexer.ll"
+#line 817 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OUTPUT_OPTIONS:
@@ -2949,9 +2806,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 72:
+case 76:
 YY_RULE_SETUP
-#line 787 "dhcp4_lexer.ll"
+#line 826 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OUTPUT_OPTIONS:
@@ -2961,9 +2818,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 73:
+case 77:
 YY_RULE_SETUP
-#line 796 "dhcp4_lexer.ll"
+#line 835 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OUTPUT_OPTIONS:
@@ -2973,9 +2830,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 74:
+case 78:
 YY_RULE_SETUP
-#line 805 "dhcp4_lexer.ll"
+#line 844 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LOGGERS:
@@ -2985,9 +2842,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 75:
+case 79:
 YY_RULE_SETUP
-#line 814 "dhcp4_lexer.ll"
+#line 853 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -2998,9 +2855,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 76:
+case 80:
 YY_RULE_SETUP
-#line 824 "dhcp4_lexer.ll"
+#line 863 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -3013,9 +2870,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 77:
+case 81:
 YY_RULE_SETUP
-#line 836 "dhcp4_lexer.ll"
+#line 875 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::CLIENT_CLASSES:
@@ -3026,9 +2883,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 78:
+case 82:
 YY_RULE_SETUP
-#line 846 "dhcp4_lexer.ll"
+#line 885 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -3038,9 +2895,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 79:
+case 83:
 YY_RULE_SETUP
-#line 855 "dhcp4_lexer.ll"
+#line 894 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
@@ -3051,9 +2908,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 80:
+case 84:
 YY_RULE_SETUP
-#line 865 "dhcp4_lexer.ll"
+#line 904 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
@@ -3064,9 +2921,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 81:
+case 85:
 YY_RULE_SETUP
-#line 875 "dhcp4_lexer.ll"
+#line 914 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
@@ -3077,9 +2934,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 82:
+case 86:
 YY_RULE_SETUP
-#line 885 "dhcp4_lexer.ll"
+#line 924 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
@@ -3090,9 +2947,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 83:
+case 87:
 YY_RULE_SETUP
-#line 895 "dhcp4_lexer.ll"
+#line 934 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
@@ -3103,9 +2960,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 84:
+case 88:
 YY_RULE_SETUP
-#line 905 "dhcp4_lexer.ll"
+#line 944 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::RESERVATIONS:
@@ -3115,9 +2972,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 85:
+case 89:
 YY_RULE_SETUP
-#line 914 "dhcp4_lexer.ll"
+#line 953 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DEF:
@@ -3128,9 +2985,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 86:
+case 90:
 YY_RULE_SETUP
-#line 924 "dhcp4_lexer.ll"
+#line 963 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DATA:
@@ -3140,9 +2997,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 87:
+case 91:
 YY_RULE_SETUP
-#line 933 "dhcp4_lexer.ll"
+#line 972 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DEF:
@@ -3152,9 +3009,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 88:
+case 92:
 YY_RULE_SETUP
-#line 942 "dhcp4_lexer.ll"
+#line 981 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DEF:
@@ -3164,9 +3021,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 89:
+case 93:
 YY_RULE_SETUP
-#line 951 "dhcp4_lexer.ll"
+#line 990 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DEF:
@@ -3176,9 +3033,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 90:
+case 94:
 YY_RULE_SETUP
-#line 960 "dhcp4_lexer.ll"
+#line 999 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -3189,9 +3046,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 91:
+case 95:
 YY_RULE_SETUP
-#line 970 "dhcp4_lexer.ll"
+#line 1009 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::RELAY:
@@ -3202,9 +3059,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 92:
+case 96:
 YY_RULE_SETUP
-#line 980 "dhcp4_lexer.ll"
+#line 1019 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3214,9 +3071,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 93:
+case 97:
 YY_RULE_SETUP
-#line 990 "dhcp4_lexer.ll"
+#line 1029 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOOKS_LIBRARIES:
@@ -3226,9 +3083,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 94:
+case 98:
 YY_RULE_SETUP
-#line 999 "dhcp4_lexer.ll"
+#line 1038 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOOKS_LIBRARIES:
@@ -3238,9 +3095,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 95:
+case 99:
 YY_RULE_SETUP
-#line 1008 "dhcp4_lexer.ll"
+#line 1047 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3250,9 +3107,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 96:
+case 100:
 YY_RULE_SETUP
-#line 1017 "dhcp4_lexer.ll"
+#line 1056 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
@@ -3262,9 +3119,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 97:
+case 101:
 YY_RULE_SETUP
-#line 1026 "dhcp4_lexer.ll"
+#line 1065 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
@@ -3274,9 +3131,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 98:
+case 102:
 YY_RULE_SETUP
-#line 1035 "dhcp4_lexer.ll"
+#line 1074 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
@@ -3286,9 +3143,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 99:
+case 103:
 YY_RULE_SETUP
-#line 1044 "dhcp4_lexer.ll"
+#line 1083 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
@@ -3298,9 +3155,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 100:
+case 104:
 YY_RULE_SETUP
-#line 1053 "dhcp4_lexer.ll"
+#line 1092 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
@@ -3310,9 +3167,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 101:
+case 105:
 YY_RULE_SETUP
-#line 1062 "dhcp4_lexer.ll"
+#line 1101 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
@@ -3322,9 +3179,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 102:
+case 106:
 YY_RULE_SETUP
-#line 1071 "dhcp4_lexer.ll"
+#line 1110 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3334,9 +3191,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 103:
+case 107:
 YY_RULE_SETUP
-#line 1080 "dhcp4_lexer.ll"
+#line 1119 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3346,9 +3203,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 104:
+case 108:
 YY_RULE_SETUP
-#line 1089 "dhcp4_lexer.ll"
+#line 1128 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::CONTROL_SOCKET:
@@ -3358,9 +3215,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 105:
+case 109:
 YY_RULE_SETUP
-#line 1098 "dhcp4_lexer.ll"
+#line 1137 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::CONTROL_SOCKET:
@@ -3370,9 +3227,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 106:
+case 110:
 YY_RULE_SETUP
-#line 1107 "dhcp4_lexer.ll"
+#line 1146 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3382,9 +3239,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 107:
+case 111:
 YY_RULE_SETUP
-#line 1116 "dhcp4_lexer.ll"
+#line 1155 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3394,9 +3251,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 108:
+case 112:
 YY_RULE_SETUP
-#line 1125 "dhcp4_lexer.ll"
+#line 1164 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3406,9 +3263,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 109:
+case 113:
 YY_RULE_SETUP
-#line 1134 "dhcp4_lexer.ll"
+#line 1173 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3418,9 +3275,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 110:
+case 114:
 YY_RULE_SETUP
-#line 1143 "dhcp4_lexer.ll"
+#line 1182 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3430,9 +3287,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 111:
+case 115:
 YY_RULE_SETUP
-#line 1152 "dhcp4_lexer.ll"
+#line 1191 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3442,9 +3299,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 112:
+case 116:
 YY_RULE_SETUP
-#line 1161 "dhcp4_lexer.ll"
+#line 1200 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3454,9 +3311,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 113:
+case 117:
 YY_RULE_SETUP
-#line 1170 "dhcp4_lexer.ll"
+#line 1209 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3466,9 +3323,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 114:
+case 118:
 YY_RULE_SETUP
-#line 1179 "dhcp4_lexer.ll"
+#line 1218 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3478,9 +3335,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 115:
+case 119:
 YY_RULE_SETUP
-#line 1188 "dhcp4_lexer.ll"
+#line 1227 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3490,9 +3347,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 116:
+case 120:
 YY_RULE_SETUP
-#line 1197 "dhcp4_lexer.ll"
+#line 1236 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3502,9 +3359,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 117:
+case 121:
 YY_RULE_SETUP
-#line 1206 "dhcp4_lexer.ll"
+#line 1245 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3514,9 +3371,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 118:
+case 122:
 YY_RULE_SETUP
-#line 1215 "dhcp4_lexer.ll"
+#line 1254 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3526,9 +3383,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 119:
+case 123:
 YY_RULE_SETUP
-#line 1224 "dhcp4_lexer.ll"
+#line 1263 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3538,9 +3395,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 120:
+case 124:
 YY_RULE_SETUP
-#line 1233 "dhcp4_lexer.ll"
+#line 1272 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3550,126 +3407,126 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 121:
+case 125:
 YY_RULE_SETUP
-#line 1242 "dhcp4_lexer.ll"
+#line 1281 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_PROTOCOL) {
          return isc::dhcp::Dhcp4Parser::make_UDP(driver.loc_);
     }
-    std::string tmp(yytext+1);
+    std::string tmp(parser4_text+1);
     tmp.resize(tmp.size() - 1);
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 122:
+case 126:
 YY_RULE_SETUP
-#line 1252 "dhcp4_lexer.ll"
+#line 1291 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_PROTOCOL) {
         return isc::dhcp::Dhcp4Parser::make_TCP(driver.loc_);
     }
-    std::string tmp(yytext+1);
+    std::string tmp(parser4_text+1);
     tmp.resize(tmp.size() - 1);
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 123:
+case 127:
 YY_RULE_SETUP
-#line 1262 "dhcp4_lexer.ll"
+#line 1301 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_FORMAT) {
         return isc::dhcp::Dhcp4Parser::make_JSON(driver.loc_);
     }
-    std::string tmp(yytext+1);
+    std::string tmp(parser4_text+1);
     tmp.resize(tmp.size() - 1);
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 124:
+case 128:
 YY_RULE_SETUP
-#line 1272 "dhcp4_lexer.ll"
+#line 1311 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
         return isc::dhcp::Dhcp4Parser::make_WHEN_PRESENT(driver.loc_);
     }
-    std::string tmp(yytext+1);
+    std::string tmp(parser4_text+1);
     tmp.resize(tmp.size() - 1);
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 125:
+case 129:
 YY_RULE_SETUP
-#line 1282 "dhcp4_lexer.ll"
+#line 1321 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
         return isc::dhcp::Dhcp4Parser::make_WHEN_PRESENT(driver.loc_);
     }
-    std::string tmp(yytext+1);
+    std::string tmp(parser4_text+1);
     tmp.resize(tmp.size() - 1);
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 126:
+case 130:
 YY_RULE_SETUP
-#line 1292 "dhcp4_lexer.ll"
+#line 1331 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
         return isc::dhcp::Dhcp4Parser::make_NEVER(driver.loc_);
     }
-    std::string tmp(yytext+1);
+    std::string tmp(parser4_text+1);
     tmp.resize(tmp.size() - 1);
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 127:
+case 131:
 YY_RULE_SETUP
-#line 1302 "dhcp4_lexer.ll"
+#line 1341 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
         return isc::dhcp::Dhcp4Parser::make_NEVER(driver.loc_);
     }
-    std::string tmp(yytext+1);
+    std::string tmp(parser4_text+1);
     tmp.resize(tmp.size() - 1);
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 128:
+case 132:
 YY_RULE_SETUP
-#line 1312 "dhcp4_lexer.ll"
+#line 1351 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
         return isc::dhcp::Dhcp4Parser::make_ALWAYS(driver.loc_);
     }
-    std::string tmp(yytext+1);
+    std::string tmp(parser4_text+1);
     tmp.resize(tmp.size() - 1);
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 129:
+case 133:
 YY_RULE_SETUP
-#line 1322 "dhcp4_lexer.ll"
+#line 1361 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
         return isc::dhcp::Dhcp4Parser::make_WHEN_NOT_PRESENT(driver.loc_);
     }
-    std::string tmp(yytext+1);
+    std::string tmp(parser4_text+1);
     tmp.resize(tmp.size() - 1);
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 130:
+case 134:
 YY_RULE_SETUP
-#line 1332 "dhcp4_lexer.ll"
+#line 1371 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::CONFIG:
@@ -3679,9 +3536,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 131:
+case 135:
 YY_RULE_SETUP
-#line 1341 "dhcp4_lexer.ll"
+#line 1380 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::CONFIG:
@@ -3691,9 +3548,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 132:
+case 136:
 YY_RULE_SETUP
-#line 1350 "dhcp4_lexer.ll"
+#line 1389 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::CONFIG:
@@ -3703,9 +3560,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 133:
+case 137:
 YY_RULE_SETUP
-#line 1359 "dhcp4_lexer.ll"
+#line 1398 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -3715,9 +3572,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 134:
+case 138:
 YY_RULE_SETUP
-#line 1368 "dhcp4_lexer.ll"
+#line 1407 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -3727,9 +3584,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 135:
+case 139:
 YY_RULE_SETUP
-#line 1377 "dhcp4_lexer.ll"
+#line 1416 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -3739,9 +3596,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 136:
+case 140:
 YY_RULE_SETUP
-#line 1386 "dhcp4_lexer.ll"
+#line 1425 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3751,9 +3608,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 137:
+case 141:
 YY_RULE_SETUP
-#line 1395 "dhcp4_lexer.ll"
+#line 1434 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3765,9 +3622,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 138:
+case 142:
 YY_RULE_SETUP
-#line 1406 "dhcp4_lexer.ll"
+#line 1445 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3781,9 +3638,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 139:
+case 143:
 YY_RULE_SETUP
-#line 1419 "dhcp4_lexer.ll"
+#line 1458 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3797,9 +3654,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 140:
+case 144:
 YY_RULE_SETUP
-#line 1432 "dhcp4_lexer.ll"
+#line 1471 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3813,14 +3670,14 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 141:
+case 145:
 YY_RULE_SETUP
-#line 1447 "dhcp4_lexer.ll"
+#line 1486 "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.
        for 'foo' we should get foo */
-    std::string raw(yytext+1);
+    std::string raw(parser4_text+1);
     size_t len = raw.size() - 1;
     raw.resize(len);
     std::string decoded;
@@ -3915,68 +3772,68 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(decoded, driver.loc_);
 }
        YY_BREAK
-case 142:
-/* rule 142 can match eol */
+case 146:
+/* rule 146 can match eol */
 YY_RULE_SETUP
-#line 1546 "dhcp4_lexer.ll"
+#line 1585 "dhcp4_lexer.ll"
 {
     /* Bad string with a forbidden control character inside */
-    driver.error(driver.loc_, "Invalid control in " + std::string(yytext));
+    driver.error(driver.loc_, "Invalid control in " + std::string(parser4_text));
 }
        YY_BREAK
-case 143:
-/* rule 143 can match eol */
+case 147:
+/* rule 147 can match eol */
 YY_RULE_SETUP
-#line 1551 "dhcp4_lexer.ll"
+#line 1590 "dhcp4_lexer.ll"
 {
     /* Bad string with a bad escape inside */
-    driver.error(driver.loc_, "Bad escape in " + std::string(yytext));
+    driver.error(driver.loc_, "Bad escape in " + std::string(parser4_text));
 }
        YY_BREAK
-case 144:
+case 148:
 YY_RULE_SETUP
-#line 1556 "dhcp4_lexer.ll"
+#line 1595 "dhcp4_lexer.ll"
 {
     /* Bad string with an open escape at the end */
-    driver.error(driver.loc_, "Overflow escape in " + std::string(yytext));
+    driver.error(driver.loc_, "Overflow escape in " + std::string(parser4_text));
 }
        YY_BREAK
-case 145:
+case 149:
 YY_RULE_SETUP
-#line 1561 "dhcp4_lexer.ll"
+#line 1600 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_LSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 146:
+case 150:
 YY_RULE_SETUP
-#line 1562 "dhcp4_lexer.ll"
+#line 1601 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_RSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 147:
+case 151:
 YY_RULE_SETUP
-#line 1563 "dhcp4_lexer.ll"
+#line 1602 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_LCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 148:
+case 152:
 YY_RULE_SETUP
-#line 1564 "dhcp4_lexer.ll"
+#line 1603 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_RCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 149:
+case 153:
 YY_RULE_SETUP
-#line 1565 "dhcp4_lexer.ll"
+#line 1604 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_COMMA(driver.loc_); }
        YY_BREAK
-case 150:
+case 154:
 YY_RULE_SETUP
-#line 1566 "dhcp4_lexer.ll"
+#line 1605 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_COLON(driver.loc_); }
        YY_BREAK
-case 151:
+case 155:
 YY_RULE_SETUP
-#line 1568 "dhcp4_lexer.ll"
+#line 1607 "dhcp4_lexer.ll"
 {
     /* An integer was found. */
-    std::string tmp(yytext);
+    std::string tmp(parser4_text);
     int64_t integer = 0;
     try {
         /* In substring we want to use negative values (e.g. -1).
@@ -3992,12 +3849,12 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_INTEGER(integer, driver.loc_);
 }
        YY_BREAK
-case 152:
+case 156:
 YY_RULE_SETUP
-#line 1586 "dhcp4_lexer.ll"
+#line 1625 "dhcp4_lexer.ll"
 {
     /* A floating point was found. */
-    std::string tmp(yytext);
+    std::string tmp(parser4_text);
     double fp = 0.0;
     try {
         fp = boost::lexical_cast<double>(tmp);
@@ -4008,43 +3865,43 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_FLOAT(fp, driver.loc_);
 }
        YY_BREAK
-case 153:
+case 157:
 YY_RULE_SETUP
-#line 1599 "dhcp4_lexer.ll"
+#line 1638 "dhcp4_lexer.ll"
 {
-    string tmp(yytext);
+    string tmp(parser4_text);
     return isc::dhcp::Dhcp4Parser::make_BOOLEAN(tmp == "true", driver.loc_);
 }
        YY_BREAK
-case 154:
+case 158:
 YY_RULE_SETUP
-#line 1604 "dhcp4_lexer.ll"
+#line 1643 "dhcp4_lexer.ll"
 {
    return isc::dhcp::Dhcp4Parser::make_NULL_TYPE(driver.loc_);
 }
        YY_BREAK
-case 155:
+case 159:
 YY_RULE_SETUP
-#line 1608 "dhcp4_lexer.ll"
+#line 1647 "dhcp4_lexer.ll"
 driver.error (driver.loc_, "JSON true reserved keyword is lower case only");
        YY_BREAK
-case 156:
+case 160:
 YY_RULE_SETUP
-#line 1610 "dhcp4_lexer.ll"
+#line 1649 "dhcp4_lexer.ll"
 driver.error (driver.loc_, "JSON false reserved keyword is lower case only");
        YY_BREAK
-case 157:
+case 161:
 YY_RULE_SETUP
-#line 1612 "dhcp4_lexer.ll"
+#line 1651 "dhcp4_lexer.ll"
 driver.error (driver.loc_, "JSON null reserved keyword is lower case only");
        YY_BREAK
-case 158:
+case 162:
 YY_RULE_SETUP
-#line 1614 "dhcp4_lexer.ll"
-driver.error (driver.loc_, "Invalid character: " + std::string(yytext));
+#line 1653 "dhcp4_lexer.ll"
+driver.error (driver.loc_, "Invalid character: " + std::string(parser4_text));
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
-#line 1616 "dhcp4_lexer.ll"
+#line 1655 "dhcp4_lexer.ll"
 {
     if (driver.states_.empty()) {
         return isc::dhcp::Dhcp4Parser::make_END(driver.loc_);
@@ -4068,12 +3925,12 @@ case YY_STATE_EOF(INITIAL):
     BEGIN(DIR_EXIT);
 }
        YY_BREAK
-case 159:
+case 163:
 YY_RULE_SETUP
-#line 1639 "dhcp4_lexer.ll"
+#line 1678 "dhcp4_lexer.ll"
 ECHO;
        YY_BREAK
-#line 4076 "dhcp4_lexer.cc"
+#line 3934 "dhcp4_lexer.cc"
 
        case YY_END_OF_BUFFER:
                {
@@ -4088,8 +3945,8 @@ ECHO;
                        {
                        /* We're scanning a new file or input source.  It's
                         * possible that this happened because the user
-                        * just pointed yyin at a new source and called
-                        * yylex().  If so, then we have to assure
+                        * just pointed parser4_in at a new source and called
+                        * parser4_lex().  If so, then we have to assure
                         * consistency between YY_CURRENT_BUFFER and our
                         * globals.  Here is the right place to do so, because
                         * this is the first action (other than possibly a
@@ -4097,7 +3954,7 @@ ECHO;
                         */
                        (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
 /* %if-c-only */
-                       YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
+                       YY_CURRENT_BUFFER_LVALUE->yy_input_file = parser4_in;
 /* %endif */
 /* %if-c++-only */
 /* %endif */
@@ -4155,11 +4012,11 @@ ECHO;
                                {
                                (yy_did_buffer_switch_on_eof) = 0;
 
-                               if ( yywrap(  ) )
+                               if ( parser4_wrap( ) )
                                        {
                                        /* Note: because we've taken care in
                                         * yy_get_next_buffer() to have set up
-                                        * yytext, we can now set up
+                                        * parser4_text, we can now set up
                                         * yy_c_buf_p so that if some total
                                         * hoser (like flex itself) wants to
                                         * call the scanner after we return the
@@ -4209,11 +4066,12 @@ ECHO;
        } /* end of action switch */
                } /* end of scanning one token */
        } /* end of user's declarations */
-} /* end of yylex */
+} /* end of parser4_lex */
 /* %ok-for-header */
 
 /* %if-c++-only */
 /* %not-for-header */
+
 /* %ok-for-header */
 
 /* %endif */
@@ -4298,8 +4156,7 @@ static int yy_get_next_buffer (void)
 
                                b->yy_ch_buf = (char *)
                                        /* Include room in for 2 EOB chars. */
-                                       yyrealloc( (void *) b->yy_ch_buf,
-                                                        (yy_size_t) (b->yy_buf_size + 2)  );
+                                       parser4_realloc((void *) b->yy_ch_buf,b->yy_buf_size + 2  );
                                }
                        else
                                /* Can't grow it, we don't own it. */
@@ -4331,7 +4188,7 @@ static int yy_get_next_buffer (void)
                if ( number_to_move == YY_MORE_ADJ )
                        {
                        ret_val = EOB_ACT_END_OF_FILE;
-                       yyrestart( yyin  );
+                       parser4_restart(parser4_in  );
                        }
 
                else
@@ -4348,12 +4205,9 @@ static int yy_get_next_buffer (void)
        if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
                /* Extend the array by 50%, plus the number we really need. */
                int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
-               YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc(
-                       (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size  );
+               YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) parser4_realloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size  );
                if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
                        YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
-               /* "- 2" to take care of EOB's */
-               YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2);
        }
 
        (yy_n_chars) += number_to_move;
@@ -4369,6 +4223,7 @@ static int yy_get_next_buffer (void)
 
 /* %if-c-only */
 /* %not-for-header */
+
     static yy_state_type yy_get_previous_state (void)
 /* %endif */
 /* %if-c++-only */
@@ -4392,10 +4247,10 @@ 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 >= 1292 )
-                               yy_c = yy_meta[yy_c];
+                       if ( yy_current_state >= 1343 )
+                               yy_c = yy_meta[(unsigned int) yy_c];
                        }
-               yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
+               yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];
                }
 
        return yy_current_state;
@@ -4425,11 +4280,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 >= 1292 )
-                       yy_c = yy_meta[yy_c];
+               if ( yy_current_state >= 1343 )
+                       yy_c = yy_meta[(unsigned int) yy_c];
                }
-       yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
-       yy_is_jam = (yy_current_state == 1291);
+       yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];
+       yy_is_jam = (yy_current_state == 1342);
 
                return yy_is_jam ? 0 : yy_current_state;
 }
@@ -4468,7 +4323,7 @@ static int yy_get_next_buffer (void)
 
                else
                        { /* need more input */
-                       int offset = (int) ((yy_c_buf_p) - (yytext_ptr));
+                       int offset = (yy_c_buf_p) - (yytext_ptr);
                        ++(yy_c_buf_p);
 
                        switch ( yy_get_next_buffer(  ) )
@@ -4485,13 +4340,13 @@ static int yy_get_next_buffer (void)
                                         */
 
                                        /* Reset buffer status. */
-                                       yyrestart( yyin );
+                                       parser4_restart(parser4_in );
 
                                        /*FALLTHROUGH*/
 
                                case EOB_ACT_END_OF_FILE:
                                        {
-                                       if ( yywrap(  ) )
+                                       if ( parser4_wrap( ) )
                                                return 0;
 
                                        if ( ! (yy_did_buffer_switch_on_eof) )
@@ -4511,10 +4366,10 @@ static int yy_get_next_buffer (void)
                }
 
        c = *(unsigned char *) (yy_c_buf_p);    /* cast for 8-bit char's */
-       *(yy_c_buf_p) = '\0';   /* preserve yytext */
+       *(yy_c_buf_p) = '\0';   /* preserve parser4_text */
        (yy_hold_char) = *++(yy_c_buf_p);
 
-/* %% [19.0] update BOL and yylineno */
+/* %% [19.0] update BOL and parser4_lineno */
 
        return c;
 }
@@ -4528,20 +4383,20 @@ static int yy_get_next_buffer (void)
  * @note This function does not reset the start condition to @c INITIAL .
  */
 /* %if-c-only */
-    void yyrestart  (FILE * input_file )
+    void parser4_restart  (FILE * input_file )
 /* %endif */
 /* %if-c++-only */
 /* %endif */
 {
     
        if ( ! YY_CURRENT_BUFFER ){
-        yyensure_buffer_stack ();
+        parser4_ensure_buffer_stack ();
                YY_CURRENT_BUFFER_LVALUE =
-            yy_create_buffer( yyin, YY_BUF_SIZE );
+            parser4__create_buffer(parser4_in,YY_BUF_SIZE );
        }
 
-       yy_init_buffer( YY_CURRENT_BUFFER, input_file );
-       yy_load_buffer_state(  );
+       parser4__init_buffer(YY_CURRENT_BUFFER,input_file );
+       parser4__load_buffer_state( );
 }
 
 /* %if-c++-only */
@@ -4552,7 +4407,7 @@ static int yy_get_next_buffer (void)
  * 
  */
 /* %if-c-only */
-    void yy_switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
+    void parser4__switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
 /* %endif */
 /* %if-c++-only */
 /* %endif */
@@ -4560,10 +4415,10 @@ static int yy_get_next_buffer (void)
     
        /* TODO. We should be able to replace this entire function body
         * with
-        *              yypop_buffer_state();
-        *              yypush_buffer_state(new_buffer);
+        *              parser4_pop_buffer_state();
+        *              parser4_push_buffer_state(new_buffer);
      */
-       yyensure_buffer_stack ();
+       parser4_ensure_buffer_stack ();
        if ( YY_CURRENT_BUFFER == new_buffer )
                return;
 
@@ -4576,18 +4431,18 @@ static int yy_get_next_buffer (void)
                }
 
        YY_CURRENT_BUFFER_LVALUE = new_buffer;
-       yy_load_buffer_state(  );
+       parser4__load_buffer_state( );
 
        /* We don't actually know whether we did this switch during
-        * EOF (yywrap()) processing, but the only time this flag
-        * is looked at is after yywrap() is called, so it's safe
+        * EOF (parser4_wrap()) processing, but the only time this flag
+        * is looked at is after parser4_wrap() is called, so it's safe
         * to go ahead and always set it.
         */
        (yy_did_buffer_switch_on_eof) = 1;
 }
 
 /* %if-c-only */
-static void yy_load_buffer_state  (void)
+static void parser4__load_buffer_state  (void)
 /* %endif */
 /* %if-c++-only */
 /* %endif */
@@ -4595,7 +4450,7 @@ static void yy_load_buffer_state  (void)
        (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
        (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
 /* %if-c-only */
-       yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
+       parser4_in = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
 /* %endif */
 /* %if-c++-only */
 /* %endif */
@@ -4609,29 +4464,29 @@ static void yy_load_buffer_state  (void)
  * @return the allocated buffer state.
  */
 /* %if-c-only */
-    YY_BUFFER_STATE yy_create_buffer  (FILE * file, int  size )
+    YY_BUFFER_STATE parser4__create_buffer  (FILE * file, int  size )
 /* %endif */
 /* %if-c++-only */
 /* %endif */
 {
        YY_BUFFER_STATE b;
     
-       b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state )  );
+       b = (YY_BUFFER_STATE) parser4_alloc(sizeof( struct yy_buffer_state )  );
        if ( ! b )
-               YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
+               YY_FATAL_ERROR( "out of dynamic memory in parser4__create_buffer()" );
 
-       b->yy_buf_size = size;
+       b->yy_buf_size = (yy_size_t)size;
 
        /* yy_ch_buf has to be 2 characters longer than the size given because
         * we need to put in 2 end-of-buffer characters.
         */
-       b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2)  );
+       b->yy_ch_buf = (char *) parser4_alloc(b->yy_buf_size + 2  );
        if ( ! b->yy_ch_buf )
-               YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
+               YY_FATAL_ERROR( "out of dynamic memory in parser4__create_buffer()" );
 
        b->yy_is_our_buffer = 1;
 
-       yy_init_buffer( b, file );
+       parser4__init_buffer(b,file );
 
        return b;
 }
@@ -4640,11 +4495,11 @@ static void yy_load_buffer_state  (void)
 /* %endif */
 
 /** Destroy the buffer.
- * @param b a buffer created with yy_create_buffer()
+ * @param b a buffer created with parser4__create_buffer()
  * 
  */
 /* %if-c-only */
-    void yy_delete_buffer (YY_BUFFER_STATE  b )
+    void parser4__delete_buffer (YY_BUFFER_STATE  b )
 /* %endif */
 /* %if-c++-only */
 /* %endif */
@@ -4657,17 +4512,17 @@ static void yy_load_buffer_state  (void)
                YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
 
        if ( b->yy_is_our_buffer )
-               yyfree( (void *) b->yy_ch_buf  );
+               parser4_free((void *) b->yy_ch_buf  );
 
-       yyfree( (void *) b  );
+       parser4_free((void *) b  );
 }
 
 /* Initializes or reinitializes a buffer.
  * This function is sometimes called more than once on the same buffer,
- * such as during a yyrestart() or at EOF.
+ * such as during a parser4_restart() or at EOF.
  */
 /* %if-c-only */
-    static void yy_init_buffer  (YY_BUFFER_STATE  b, FILE * file )
+    static void parser4__init_buffer  (YY_BUFFER_STATE  b, FILE * file )
 /* %endif */
 /* %if-c++-only */
 /* %endif */
@@ -4675,7 +4530,7 @@ static void yy_load_buffer_state  (void)
 {
        int oerrno = errno;
     
-       yy_flush_buffer( b );
+       parser4__flush_buffer(b );
 
 /* %if-c-only */
        b->yy_input_file = file;
@@ -4684,8 +4539,8 @@ static void yy_load_buffer_state  (void)
 /* %endif */
        b->yy_fill_buffer = 1;
 
-    /* If b is the current buffer, then yy_init_buffer was _probably_
-     * called from yyrestart() or through yy_get_next_buffer.
+    /* If b is the current buffer, then parser4__init_buffer was _probably_
+     * called from parser4_restart() or through yy_get_next_buffer.
      * In that case, we don't want to reset the lineno or column.
      */
     if (b != YY_CURRENT_BUFFER){
@@ -4708,7 +4563,7 @@ static void yy_load_buffer_state  (void)
  * 
  */
 /* %if-c-only */
-    void yy_flush_buffer (YY_BUFFER_STATE  b )
+    void parser4__flush_buffer (YY_BUFFER_STATE  b )
 /* %endif */
 /* %if-c++-only */
 /* %endif */
@@ -4731,7 +4586,7 @@ static void yy_load_buffer_state  (void)
        b->yy_buffer_status = YY_BUFFER_NEW;
 
        if ( b == YY_CURRENT_BUFFER )
-               yy_load_buffer_state(  );
+               parser4__load_buffer_state( );
 }
 
 /* %if-c-or-c++ */
@@ -4742,7 +4597,7 @@ static void yy_load_buffer_state  (void)
  *  
  */
 /* %if-c-only */
-void yypush_buffer_state (YY_BUFFER_STATE new_buffer )
+void parser4_push_buffer_state (YY_BUFFER_STATE new_buffer )
 /* %endif */
 /* %if-c++-only */
 /* %endif */
@@ -4750,9 +4605,9 @@ void yypush_buffer_state (YY_BUFFER_STATE new_buffer )
        if (new_buffer == NULL)
                return;
 
-       yyensure_buffer_stack();
+       parser4_ensure_buffer_stack();
 
-       /* This block is copied from yy_switch_to_buffer. */
+       /* This block is copied from parser4__switch_to_buffer. */
        if ( YY_CURRENT_BUFFER )
                {
                /* Flush out information for old buffer. */
@@ -4766,8 +4621,8 @@ void yypush_buffer_state (YY_BUFFER_STATE new_buffer )
                (yy_buffer_stack_top)++;
        YY_CURRENT_BUFFER_LVALUE = new_buffer;
 
-       /* copied from yy_switch_to_buffer. */
-       yy_load_buffer_state(  );
+       /* copied from parser4__switch_to_buffer. */
+       parser4__load_buffer_state( );
        (yy_did_buffer_switch_on_eof) = 1;
 }
 /* %endif */
@@ -4778,7 +4633,7 @@ void yypush_buffer_state (YY_BUFFER_STATE new_buffer )
  *  
  */
 /* %if-c-only */
-void yypop_buffer_state (void)
+void parser4_pop_buffer_state (void)
 /* %endif */
 /* %if-c++-only */
 /* %endif */
@@ -4786,13 +4641,13 @@ void yypop_buffer_state (void)
        if (!YY_CURRENT_BUFFER)
                return;
 
-       yy_delete_buffer(YY_CURRENT_BUFFER );
+       parser4__delete_buffer(YY_CURRENT_BUFFER );
        YY_CURRENT_BUFFER_LVALUE = NULL;
        if ((yy_buffer_stack_top) > 0)
                --(yy_buffer_stack_top);
 
        if (YY_CURRENT_BUFFER) {
-               yy_load_buffer_state(  );
+               parser4__load_buffer_state( );
                (yy_did_buffer_switch_on_eof) = 1;
        }
 }
@@ -4803,12 +4658,12 @@ void yypop_buffer_state (void)
  *  Guarantees space for at least one push.
  */
 /* %if-c-only */
-static void yyensure_buffer_stack (void)
+static void parser4_ensure_buffer_stack (void)
 /* %endif */
 /* %if-c++-only */
 /* %endif */
 {
-       yy_size_t num_to_alloc;
+       int num_to_alloc;
     
        if (!(yy_buffer_stack)) {
 
@@ -4817,11 +4672,11 @@ static void yyensure_buffer_stack (void)
                 * immediate realloc on the next call.
          */
       num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */
-               (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
+               (yy_buffer_stack) = (struct yy_buffer_state**)parser4_alloc
                                                                (num_to_alloc * sizeof(struct yy_buffer_state*)
                                                                );
                if ( ! (yy_buffer_stack) )
-                       YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
+                       YY_FATAL_ERROR( "out of dynamic memory in parser4_ensure_buffer_stack()" );
 
                memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
 
@@ -4836,12 +4691,12 @@ static void yyensure_buffer_stack (void)
                yy_size_t grow_size = 8 /* arbitrary grow size */;
 
                num_to_alloc = (yy_buffer_stack_max) + grow_size;
-               (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc
+               (yy_buffer_stack) = (struct yy_buffer_state**)parser4_realloc
                                                                ((yy_buffer_stack),
                                                                num_to_alloc * sizeof(struct yy_buffer_state*)
                                                                );
                if ( ! (yy_buffer_stack) )
-                       YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
+                       YY_FATAL_ERROR( "out of dynamic memory in parser4_ensure_buffer_stack()" );
 
                /* zero only the new slots.*/
                memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
@@ -4857,7 +4712,7 @@ static void yyensure_buffer_stack (void)
  * 
  * @return the newly allocated buffer state object.
  */
-YY_BUFFER_STATE yy_scan_buffer  (char * base, yy_size_t  size )
+YY_BUFFER_STATE parser4__scan_buffer  (char * base, yy_size_t  size )
 {
        YY_BUFFER_STATE b;
     
@@ -4867,11 +4722,11 @@ YY_BUFFER_STATE yy_scan_buffer  (char * base, yy_size_t  size )
                /* They forgot to leave room for the EOB's. */
                return NULL;
 
-       b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state )  );
+       b = (YY_BUFFER_STATE) parser4_alloc(sizeof( struct yy_buffer_state )  );
        if ( ! b )
-               YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
+               YY_FATAL_ERROR( "out of dynamic memory in parser4__scan_buffer()" );
 
-       b->yy_buf_size = (int) (size - 2);      /* "- 2" to take care of EOB's */
+       b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
        b->yy_buf_pos = b->yy_ch_buf = base;
        b->yy_is_our_buffer = 0;
        b->yy_input_file = NULL;
@@ -4881,37 +4736,37 @@ YY_BUFFER_STATE yy_scan_buffer  (char * base, yy_size_t  size )
        b->yy_fill_buffer = 0;
        b->yy_buffer_status = YY_BUFFER_NEW;
 
-       yy_switch_to_buffer( b  );
+       parser4__switch_to_buffer(b  );
 
        return b;
 }
 /* %endif */
 
 /* %if-c-only */
-/** Setup the input buffer state to scan a string. The next call to yylex() will
+/** Setup the input buffer state to scan a string. The next call to parser4_lex() will
  * scan from a @e copy of @a str.
  * @param yystr a NUL-terminated string to scan
  * 
  * @return the newly allocated buffer state object.
  * @note If you want to scan bytes that may contain NUL values, then use
- *       yy_scan_bytes() instead.
+ *       parser4__scan_bytes() instead.
  */
-YY_BUFFER_STATE yy_scan_string (const char * yystr )
+YY_BUFFER_STATE parser4__scan_string (yyconst char * yystr )
 {
     
-       return yy_scan_bytes( yystr, (int) strlen(yystr) );
+       return parser4__scan_bytes(yystr,(int) strlen(yystr) );
 }
 /* %endif */
 
 /* %if-c-only */
-/** Setup the input buffer state to scan the given bytes. The next call to yylex() will
+/** Setup the input buffer state to scan the given bytes. The next call to parser4_lex() will
  * scan from a @e copy of @a bytes.
  * @param yybytes the byte buffer to scan
  * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
  * 
  * @return the newly allocated buffer state object.
  */
-YY_BUFFER_STATE yy_scan_bytes  (const char * yybytes, int  _yybytes_len )
+YY_BUFFER_STATE parser4__scan_bytes  (yyconst char * yybytes, int  _yybytes_len )
 {
        YY_BUFFER_STATE b;
        char *buf;
@@ -4920,18 +4775,18 @@ YY_BUFFER_STATE yy_scan_bytes  (const char * yybytes, int  _yybytes_len )
     
        /* Get memory for full buffer, including space for trailing EOB's. */
        n = (yy_size_t) (_yybytes_len + 2);
-       buf = (char *) yyalloc( n  );
+       buf = (char *) parser4_alloc(n  );
        if ( ! buf )
-               YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
+               YY_FATAL_ERROR( "out of dynamic memory in parser4__scan_bytes()" );
 
        for ( i = 0; i < _yybytes_len; ++i )
                buf[i] = yybytes[i];
 
        buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
 
-       b = yy_scan_buffer( buf, n );
+       b = parser4__scan_buffer(buf,n );
        if ( ! b )
-               YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
+               YY_FATAL_ERROR( "bad buffer in parser4__scan_bytes()" );
 
        /* It's okay to grow etc. this buffer, and we should throw it
         * away when we're done.
@@ -4947,9 +4802,9 @@ YY_BUFFER_STATE yy_scan_bytes  (const char * yybytes, int  _yybytes_len )
 #endif
 
 /* %if-c-only */
-static void yynoreturn yy_fatal_error (const char* msg )
+static void yynoreturn yy_fatal_error (yyconst char* msg )
 {
-                       fprintf( stderr, "%s\n", msg );
+                       (void) fprintf( stderr, "%s\n", msg );
        exit( YY_EXIT_FAILURE );
 }
 /* %endif */
@@ -4962,14 +4817,14 @@ static void yynoreturn yy_fatal_error (const char* msg )
 #define yyless(n) \
        do \
                { \
-               /* Undo effects of setting up yytext. */ \
+               /* Undo effects of setting up parser4_text. */ \
         int yyless_macro_arg = (n); \
         YY_LESS_LINENO(yyless_macro_arg);\
-               yytext[yyleng] = (yy_hold_char); \
-               (yy_c_buf_p) = yytext + yyless_macro_arg; \
+               parser4_text[parser4_leng] = (yy_hold_char); \
+               (yy_c_buf_p) = parser4_text + yyless_macro_arg; \
                (yy_hold_char) = *(yy_c_buf_p); \
                *(yy_c_buf_p) = '\0'; \
-               yyleng = yyless_macro_arg; \
+               parser4_leng = yyless_macro_arg; \
                } \
        while ( 0 )
 
@@ -4982,43 +4837,43 @@ static void yynoreturn yy_fatal_error (const char* msg )
 /** Get the current line number.
  * 
  */
-int yyget_lineno  (void)
+int parser4_get_lineno  (void)
 {
     
-    return yylineno;
+    return parser4_lineno;
 }
 
 /** Get the input stream.
  * 
  */
-FILE *yyget_in  (void)
+FILE *parser4_get_in  (void)
 {
-        return yyin;
+        return parser4_in;
 }
 
 /** Get the output stream.
  * 
  */
-FILE *yyget_out  (void)
+FILE *parser4_get_out  (void)
 {
-        return yyout;
+        return parser4_out;
 }
 
 /** Get the length of the current token.
  * 
  */
-int yyget_leng  (void)
+int parser4_get_leng  (void)
 {
-        return yyleng;
+        return parser4_leng;
 }
 
 /** Get the current token.
  * 
  */
 
-char *yyget_text  (void)
+char *parser4_get_text  (void)
 {
-        return yytext;
+        return parser4_text;
 }
 
 /* %if-reentrant */
@@ -5028,36 +4883,36 @@ char *yyget_text  (void)
  * @param _line_number line number
  * 
  */
-void yyset_lineno (int  _line_number )
+void parser4_set_lineno (int  _line_number )
 {
     
-    yylineno = _line_number;
+    parser4_lineno = _line_number;
 }
 
 /** Set the input stream. This does not discard the current
  * input buffer.
  * @param _in_str A readable stream.
  * 
- * @see yy_switch_to_buffer
+ * @see parser4__switch_to_buffer
  */
-void yyset_in (FILE *  _in_str )
+void parser4_set_in (FILE *  _in_str )
 {
-        yyin = _in_str ;
+        parser4_in = _in_str ;
 }
 
-void yyset_out (FILE *  _out_str )
+void parser4_set_out (FILE *  _out_str )
 {
-        yyout = _out_str ;
+        parser4_out = _out_str ;
 }
 
-int yyget_debug  (void)
+int parser4_get_debug  (void)
 {
-        return yy_flex_debug;
+        return parser4__flex_debug;
 }
 
-void yyset_debug (int  _bdebug )
+void parser4_set_debug (int  _bdebug )
 {
-        yy_flex_debug = _bdebug ;
+        parser4__flex_debug = _bdebug ;
 }
 
 /* %endif */
@@ -5071,7 +4926,7 @@ void yyset_debug (int  _bdebug )
 static int yy_init_globals (void)
 {
         /* Initialization is the same as for the non-reentrant scanner.
-     * This function is called from yylex_destroy(), so don't allocate here.
+     * This function is called from parser4_lex_destroy(), so don't allocate here.
      */
 
     (yy_buffer_stack) = NULL;
@@ -5083,38 +4938,38 @@ static int yy_init_globals (void)
 
 /* Defined in main.c */
 #ifdef YY_STDINIT
-    yyin = stdin;
-    yyout = stdout;
+    parser4_in = stdin;
+    parser4_out = stdout;
 #else
-    yyin = NULL;
-    yyout = NULL;
+    parser4_in = NULL;
+    parser4_out = NULL;
 #endif
 
     /* For future reference: Set errno on error, since we are called by
-     * yylex_init()
+     * parser4_lex_init()
      */
     return 0;
 }
 /* %endif */
 
 /* %if-c-only SNIP! this currently causes conflicts with the c++ scanner */
-/* yylex_destroy is for both reentrant and non-reentrant scanners. */
-int yylex_destroy  (void)
+/* parser4_lex_destroy is for both reentrant and non-reentrant scanners. */
+int parser4_lex_destroy  (void)
 {
     
     /* Pop the buffer stack, destroying each element. */
        while(YY_CURRENT_BUFFER){
-               yy_delete_buffer( YY_CURRENT_BUFFER  );
+               parser4__delete_buffer(YY_CURRENT_BUFFER  );
                YY_CURRENT_BUFFER_LVALUE = NULL;
-               yypop_buffer_state();
+               parser4_pop_buffer_state();
        }
 
        /* Destroy the stack itself. */
-       yyfree((yy_buffer_stack) );
+       parser4_free((yy_buffer_stack) );
        (yy_buffer_stack) = NULL;
 
     /* Reset the globals. This is important in a non-reentrant scanner so the next time
-     * yylex() is called, initialization will occur. */
+     * parser4_lex() is called, initialization will occur. */
     yy_init_globals( );
 
 /* %if-reentrant */
@@ -5128,7 +4983,7 @@ int yylex_destroy  (void)
  */
 
 #ifndef yytext_ptr
-static void yy_flex_strncpy (char* s1, const char * s2, int n )
+static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
 {
                
        int i;
@@ -5138,7 +4993,7 @@ static void yy_flex_strncpy (char* s1, const char * s2, int n )
 #endif
 
 #ifdef YY_NEED_STRLEN
-static int yy_flex_strlen (const char * s )
+static int yy_flex_strlen (yyconst char * s )
 {
        int n;
        for ( n = 0; s[n]; ++n )
@@ -5148,12 +5003,12 @@ static int yy_flex_strlen (const char * s )
 }
 #endif
 
-void *yyalloc (yy_size_t  size )
+void *parser4_alloc (yy_size_t  size )
 {
                        return malloc(size);
 }
 
-void *yyrealloc  (void * ptr, yy_size_t  size )
+void *parser4_realloc  (void * ptr, yy_size_t  size )
 {
                
        /* The cast to (char *) in the following accommodates both
@@ -5166,9 +5021,9 @@ void *yyrealloc  (void * ptr, yy_size_t  size )
        return realloc(ptr, size);
 }
 
-void yyfree (void * ptr )
+void parser4_free (void * ptr )
 {
-                       free( (char *) ptr );   /* see yyrealloc() for (char *) cast */
+                       free( (char *) ptr );   /* see parser4_realloc() for (char *) cast */
 }
 
 /* %if-tables-serialization definitions */
@@ -5178,7 +5033,8 @@ void yyfree (void * ptr )
 
 /* %ok-for-header */
 
-#line 1639 "dhcp4_lexer.ll"
+#line 1678 "dhcp4_lexer.ll"
+
 
 
 using namespace isc::dhcp;
@@ -5192,7 +5048,7 @@ Parser4Context::scanStringBegin(const std::string& str, ParserType parser_type)
     file_ = "<string>";
     sfile_ = 0;
     loc_.initialize(&file_);
-    yy_flex_debug = trace_scanning_;
+    parser4__flex_debug = trace_scanning_;
     YY_BUFFER_STATE buffer;
     buffer = parser4__scan_bytes(str.c_str(), str.size());
     if (!buffer) {
@@ -5212,7 +5068,7 @@ Parser4Context::scanFileBegin(FILE * f,
     file_ = filename;
     sfile_ = f;
     loc_.initialize(&file_);
-    yy_flex_debug = trace_scanning_;
+    parser4__flex_debug = trace_scanning_;
     YY_BUFFER_STATE buffer;
 
     /* See dhcp4_lexer.cc header for available definitions */
index 698791d27c9bd47d5c897f8f0a683482b3e83225..ad5e626b25f071859524e80268ef77749859d34a 100644 (file)
@@ -253,30 +253,30 @@ namespace isc { namespace dhcp {
   {
       switch (that.type_get ())
     {
-      case 167: // value
-      case 171: // map_value
-      case 209: // socket_type
-      case 212: // outbound_interface_value
-      case 222: // db_type
-      case 299: // hr_mode
-      case 445: // ncr_protocol_value
-      case 453: // replace_client_name_value
+      case 171: // value
+      case 175: // map_value
+      case 213: // socket_type
+      case 216: // outbound_interface_value
+      case 226: // db_type
+      case 307: // hr_mode
+      case 453: // ncr_protocol_value
+      case 461: // replace_client_name_value
         value.move< ElementPtr > (that.value);
         break;
 
-      case 151: // "boolean"
+      case 155: // "boolean"
         value.move< bool > (that.value);
         break;
 
-      case 150: // "floating point"
+      case 154: // "floating point"
         value.move< double > (that.value);
         break;
 
-      case 149: // "integer"
+      case 153: // "integer"
         value.move< int64_t > (that.value);
         break;
 
-      case 148: // "constant string"
+      case 152: // "constant string"
         value.move< std::string > (that.value);
         break;
 
@@ -295,30 +295,30 @@ namespace isc { namespace dhcp {
     state = that.state;
       switch (that.type_get ())
     {
-      case 167: // value
-      case 171: // map_value
-      case 209: // socket_type
-      case 212: // outbound_interface_value
-      case 222: // db_type
-      case 299: // hr_mode
-      case 445: // ncr_protocol_value
-      case 453: // replace_client_name_value
+      case 171: // value
+      case 175: // map_value
+      case 213: // socket_type
+      case 216: // outbound_interface_value
+      case 226: // db_type
+      case 307: // hr_mode
+      case 453: // ncr_protocol_value
+      case 461: // replace_client_name_value
         value.copy< ElementPtr > (that.value);
         break;
 
-      case 151: // "boolean"
+      case 155: // "boolean"
         value.copy< bool > (that.value);
         break;
 
-      case 150: // "floating point"
+      case 154: // "floating point"
         value.copy< double > (that.value);
         break;
 
-      case 149: // "integer"
+      case 153: // "integer"
         value.copy< int64_t > (that.value);
         break;
 
-      case 148: // "constant string"
+      case 152: // "constant string"
         value.copy< std::string > (that.value);
         break;
 
@@ -358,86 +358,86 @@ namespace isc { namespace dhcp {
         << yysym.location << ": ";
     switch (yytype)
     {
-            case 148: // "constant string"
+            case 152: // "constant string"
 
-#line 226 "dhcp4_parser.yy" // lalr1.cc:636
+#line 230 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< std::string > (); }
 #line 366 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 149: // "integer"
+      case 153: // "integer"
 
-#line 226 "dhcp4_parser.yy" // lalr1.cc:636
+#line 230 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< int64_t > (); }
 #line 373 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 150: // "floating point"
+      case 154: // "floating point"
 
-#line 226 "dhcp4_parser.yy" // lalr1.cc:636
+#line 230 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< double > (); }
 #line 380 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 151: // "boolean"
+      case 155: // "boolean"
 
-#line 226 "dhcp4_parser.yy" // lalr1.cc:636
+#line 230 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< bool > (); }
 #line 387 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 167: // value
+      case 171: // value
 
-#line 226 "dhcp4_parser.yy" // lalr1.cc:636
+#line 230 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 394 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 171: // map_value
+      case 175: // map_value
 
-#line 226 "dhcp4_parser.yy" // lalr1.cc:636
+#line 230 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 401 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 209: // socket_type
+      case 213: // socket_type
 
-#line 226 "dhcp4_parser.yy" // lalr1.cc:636
+#line 230 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 408 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 212: // outbound_interface_value
+      case 216: // outbound_interface_value
 
-#line 226 "dhcp4_parser.yy" // lalr1.cc:636
+#line 230 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 415 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 222: // db_type
+      case 226: // db_type
 
-#line 226 "dhcp4_parser.yy" // lalr1.cc:636
+#line 230 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 422 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 299: // hr_mode
+      case 307: // hr_mode
 
-#line 226 "dhcp4_parser.yy" // lalr1.cc:636
+#line 230 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 429 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 445: // ncr_protocol_value
+      case 453: // ncr_protocol_value
 
-#line 226 "dhcp4_parser.yy" // lalr1.cc:636
+#line 230 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 436 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 453: // replace_client_name_value
+      case 461: // replace_client_name_value
 
-#line 226 "dhcp4_parser.yy" // lalr1.cc:636
+#line 230 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 443 "dhcp4_parser.cc" // lalr1.cc:636
         break;
@@ -639,30 +639,30 @@ namespace isc { namespace dhcp {
          when using variants.  */
         switch (yyr1_[yyn])
     {
-      case 167: // value
-      case 171: // map_value
-      case 209: // socket_type
-      case 212: // outbound_interface_value
-      case 222: // db_type
-      case 299: // hr_mode
-      case 445: // ncr_protocol_value
-      case 453: // replace_client_name_value
+      case 171: // value
+      case 175: // map_value
+      case 213: // socket_type
+      case 216: // outbound_interface_value
+      case 226: // db_type
+      case 307: // hr_mode
+      case 453: // ncr_protocol_value
+      case 461: // replace_client_name_value
         yylhs.value.build< ElementPtr > ();
         break;
 
-      case 151: // "boolean"
+      case 155: // "boolean"
         yylhs.value.build< bool > ();
         break;
 
-      case 150: // "floating point"
+      case 154: // "floating point"
         yylhs.value.build< double > ();
         break;
 
-      case 149: // "integer"
+      case 153: // "integer"
         yylhs.value.build< int64_t > ();
         break;
 
-      case 148: // "constant string"
+      case 152: // "constant string"
         yylhs.value.build< std::string > ();
         break;
 
@@ -684,127 +684,127 @@ namespace isc { namespace dhcp {
           switch (yyn)
             {
   case 2:
-#line 235 "dhcp4_parser.yy" // lalr1.cc:859
+#line 239 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.NO_KEYWORD; }
 #line 690 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 4:
-#line 236 "dhcp4_parser.yy" // lalr1.cc:859
+#line 240 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.CONFIG; }
 #line 696 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 6:
-#line 237 "dhcp4_parser.yy" // lalr1.cc:859
+#line 241 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.DHCP4; }
 #line 702 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 8:
-#line 238 "dhcp4_parser.yy" // lalr1.cc:859
+#line 242 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.INTERFACES_CONFIG; }
 #line 708 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 10:
-#line 239 "dhcp4_parser.yy" // lalr1.cc:859
+#line 243 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.SUBNET4; }
 #line 714 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 12:
-#line 240 "dhcp4_parser.yy" // lalr1.cc:859
+#line 244 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.POOLS; }
 #line 720 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 14:
-#line 241 "dhcp4_parser.yy" // lalr1.cc:859
+#line 245 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.RESERVATIONS; }
 #line 726 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 16:
-#line 242 "dhcp4_parser.yy" // lalr1.cc:859
+#line 246 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.DHCP4; }
 #line 732 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 18:
-#line 243 "dhcp4_parser.yy" // lalr1.cc:859
+#line 247 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.OPTION_DEF; }
 #line 738 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 20:
-#line 244 "dhcp4_parser.yy" // lalr1.cc:859
+#line 248 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.OPTION_DATA; }
 #line 744 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 22:
-#line 245 "dhcp4_parser.yy" // lalr1.cc:859
+#line 249 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.HOOKS_LIBRARIES; }
 #line 750 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 24:
-#line 246 "dhcp4_parser.yy" // lalr1.cc:859
+#line 250 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.DHCP_DDNS; }
 #line 756 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 26:
-#line 247 "dhcp4_parser.yy" // lalr1.cc:859
+#line 251 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.LOGGING; }
 #line 762 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 28:
-#line 255 "dhcp4_parser.yy" // lalr1.cc:859
+#line 259 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); }
 #line 768 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 29:
-#line 256 "dhcp4_parser.yy" // lalr1.cc:859
+#line 260 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as< double > (), ctx.loc2pos(yystack_[0].location))); }
 #line 774 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 30:
-#line 257 "dhcp4_parser.yy" // lalr1.cc:859
+#line 261 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); }
 #line 780 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 31:
-#line 258 "dhcp4_parser.yy" // lalr1.cc:859
+#line 262 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); }
 #line 786 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 32:
-#line 259 "dhcp4_parser.yy" // lalr1.cc:859
+#line 263 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
 #line 792 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 33:
-#line 260 "dhcp4_parser.yy" // lalr1.cc:859
+#line 264 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 798 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 34:
-#line 261 "dhcp4_parser.yy" // lalr1.cc:859
+#line 265 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 804 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 35:
-#line 264 "dhcp4_parser.yy" // lalr1.cc:859
+#line 268 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Push back the JSON value on the stack
     ctx.stack_.push_back(yystack_[0].value.as< ElementPtr > ());
@@ -813,7 +813,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 36:
-#line 269 "dhcp4_parser.yy" // lalr1.cc:859
+#line 273 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -824,7 +824,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 37:
-#line 274 "dhcp4_parser.yy" // lalr1.cc:859
+#line 278 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // map parsing completed. If we ever want to do any wrap up
     // (maybe some sanity checking), this would be the best place
@@ -834,13 +834,13 @@ namespace isc { namespace dhcp {
     break;
 
   case 38:
-#line 280 "dhcp4_parser.yy" // lalr1.cc:859
+#line 284 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 840 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 41:
-#line 287 "dhcp4_parser.yy" // lalr1.cc:859
+#line 291 "dhcp4_parser.yy" // lalr1.cc:859
     {
                   // map containing a single entry
                   ctx.stack_.back()->set(yystack_[2].value.as< std::string > (), yystack_[0].value.as< ElementPtr > ());
@@ -849,7 +849,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 42:
-#line 291 "dhcp4_parser.yy" // lalr1.cc:859
+#line 295 "dhcp4_parser.yy" // lalr1.cc:859
     {
                   // map consisting of a shorter map followed by
                   // comma and string:value
@@ -859,7 +859,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 43:
-#line 298 "dhcp4_parser.yy" // lalr1.cc:859
+#line 302 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(l);
@@ -868,7 +868,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 44:
-#line 301 "dhcp4_parser.yy" // lalr1.cc:859
+#line 305 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // list parsing complete. Put any sanity checking here
 }
@@ -876,7 +876,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 47:
-#line 309 "dhcp4_parser.yy" // lalr1.cc:859
+#line 313 "dhcp4_parser.yy" // lalr1.cc:859
     {
                   // List consisting of a single element.
                   ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
@@ -885,7 +885,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 48:
-#line 313 "dhcp4_parser.yy" // lalr1.cc:859
+#line 317 "dhcp4_parser.yy" // lalr1.cc:859
     {
                   // List ending with , and a value.
                   ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
@@ -894,7 +894,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 49:
-#line 320 "dhcp4_parser.yy" // lalr1.cc:859
+#line 324 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // List parsing about to start
 }
@@ -902,7 +902,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 50:
-#line 322 "dhcp4_parser.yy" // lalr1.cc:859
+#line 326 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // list parsing complete. Put any sanity checking here
     //ctx.stack_.pop_back();
@@ -911,7 +911,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 53:
-#line 331 "dhcp4_parser.yy" // lalr1.cc:859
+#line 335 "dhcp4_parser.yy" // lalr1.cc:859
     {
                           ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
                           ctx.stack_.back()->add(s);
@@ -920,7 +920,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 54:
-#line 335 "dhcp4_parser.yy" // lalr1.cc:859
+#line 339 "dhcp4_parser.yy" // lalr1.cc:859
     {
                           ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
                           ctx.stack_.back()->add(s);
@@ -929,7 +929,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 55:
-#line 346 "dhcp4_parser.yy" // lalr1.cc:859
+#line 350 "dhcp4_parser.yy" // lalr1.cc:859
     {
     const std::string& where = ctx.contextName();
     const std::string& keyword = yystack_[1].value.as< std::string > ();
@@ -940,7 +940,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 56:
-#line 356 "dhcp4_parser.yy" // lalr1.cc:859
+#line 360 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -951,7 +951,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 57:
-#line 361 "dhcp4_parser.yy" // lalr1.cc:859
+#line 365 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // map parsing completed. If we ever want to do any wrap up
     // (maybe some sanity checking), this would be the best place
@@ -964,7 +964,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 66:
-#line 385 "dhcp4_parser.yy" // lalr1.cc:859
+#line 389 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -977,7 +977,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 67:
-#line 392 "dhcp4_parser.yy" // lalr1.cc:859
+#line 396 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // No global parameter is required
     ctx.stack_.pop_back();
@@ -987,7 +987,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 68:
-#line 400 "dhcp4_parser.yy" // lalr1.cc:859
+#line 404 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Parse the Dhcp4 map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -997,7 +997,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 69:
-#line 404 "dhcp4_parser.yy" // lalr1.cc:859
+#line 408 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // No global parameter is required
     // parsing completed
@@ -1006,7 +1006,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 98:
-#line 443 "dhcp4_parser.yy" // lalr1.cc:859
+#line 447 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("valid-lifetime", prf);
@@ -1015,7 +1015,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 99:
-#line 448 "dhcp4_parser.yy" // lalr1.cc:859
+#line 452 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("renew-timer", prf);
@@ -1024,7 +1024,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 100:
-#line 453 "dhcp4_parser.yy" // lalr1.cc:859
+#line 457 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("rebind-timer", prf);
@@ -1033,7 +1033,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 101:
-#line 458 "dhcp4_parser.yy" // lalr1.cc:859
+#line 462 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr dpp(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("decline-probation-period", dpp);
@@ -1042,7 +1042,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 102:
-#line 463 "dhcp4_parser.yy" // lalr1.cc:859
+#line 467 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr echo(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("echo-client-id", echo);
@@ -1051,7 +1051,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 103:
-#line 468 "dhcp4_parser.yy" // lalr1.cc:859
+#line 472 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr match(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("match-client-id", match);
@@ -1060,7 +1060,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 104:
-#line 474 "dhcp4_parser.yy" // lalr1.cc:859
+#line 478 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interfaces-config", i);
@@ -1071,7 +1071,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 105:
-#line 479 "dhcp4_parser.yy" // lalr1.cc:859
+#line 483 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // No interfaces config param is required
     ctx.stack_.pop_back();
@@ -1081,7 +1081,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 115:
-#line 498 "dhcp4_parser.yy" // lalr1.cc:859
+#line 502 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Parse the interfaces-config map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1091,7 +1091,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 116:
-#line 502 "dhcp4_parser.yy" // lalr1.cc:859
+#line 506 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // No interfaces config param is required
     // parsing completed
@@ -1100,7 +1100,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 117:
-#line 507 "dhcp4_parser.yy" // lalr1.cc:859
+#line 511 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interfaces", l);
@@ -1111,7 +1111,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 118:
-#line 512 "dhcp4_parser.yy" // lalr1.cc:859
+#line 516 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1120,7 +1120,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 119:
-#line 517 "dhcp4_parser.yy" // lalr1.cc:859
+#line 521 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.DHCP_SOCKET_TYPE);
 }
@@ -1128,7 +1128,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 120:
-#line 519 "dhcp4_parser.yy" // lalr1.cc:859
+#line 523 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("dhcp-socket-type", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
@@ -1137,19 +1137,19 @@ namespace isc { namespace dhcp {
     break;
 
   case 121:
-#line 524 "dhcp4_parser.yy" // lalr1.cc:859
+#line 528 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("raw", ctx.loc2pos(yystack_[0].location))); }
 #line 1143 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 122:
-#line 525 "dhcp4_parser.yy" // lalr1.cc:859
+#line 529 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("udp", ctx.loc2pos(yystack_[0].location))); }
 #line 1149 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 123:
-#line 528 "dhcp4_parser.yy" // lalr1.cc:859
+#line 532 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.OUTBOUND_INTERFACE);
 }
@@ -1157,7 +1157,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 124:
-#line 530 "dhcp4_parser.yy" // lalr1.cc:859
+#line 534 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("outbound-interface", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
@@ -1166,7 +1166,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 125:
-#line 535 "dhcp4_parser.yy" // lalr1.cc:859
+#line 539 "dhcp4_parser.yy" // lalr1.cc:859
     {
     yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("same-as-inbound", ctx.loc2pos(yystack_[0].location)));
 }
@@ -1174,7 +1174,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 126:
-#line 537 "dhcp4_parser.yy" // lalr1.cc:859
+#line 541 "dhcp4_parser.yy" // lalr1.cc:859
     {
     yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("use-routing", ctx.loc2pos(yystack_[0].location)));
     }
@@ -1182,7 +1182,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 127:
-#line 541 "dhcp4_parser.yy" // lalr1.cc:859
+#line 545 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("re-detect", b);
@@ -1191,7 +1191,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 128:
-#line 547 "dhcp4_parser.yy" // lalr1.cc:859
+#line 551 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("lease-database", i);
@@ -1202,7 +1202,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 129:
-#line 552 "dhcp4_parser.yy" // lalr1.cc:859
+#line 556 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // The type parameter is required
     ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
@@ -1213,7 +1213,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 130:
-#line 559 "dhcp4_parser.yy" // lalr1.cc:859
+#line 563 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hosts-database", i);
@@ -1224,7 +1224,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 131:
-#line 564 "dhcp4_parser.yy" // lalr1.cc:859
+#line 568 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // The type parameter is required
     ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
@@ -1234,16 +1234,16 @@ namespace isc { namespace dhcp {
 #line 1235 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 147:
-#line 590 "dhcp4_parser.yy" // lalr1.cc:859
+  case 151:
+#line 598 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.DATABASE_TYPE);
 }
 #line 1243 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 148:
-#line 592 "dhcp4_parser.yy" // lalr1.cc:859
+  case 152:
+#line 600 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("type", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
@@ -1251,40 +1251,40 @@ namespace isc { namespace dhcp {
 #line 1252 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 149:
-#line 597 "dhcp4_parser.yy" // lalr1.cc:859
+  case 153:
+#line 605 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); }
 #line 1258 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 150:
-#line 598 "dhcp4_parser.yy" // lalr1.cc:859
+  case 154:
+#line 606 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); }
 #line 1264 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 151:
-#line 599 "dhcp4_parser.yy" // lalr1.cc:859
+  case 155:
+#line 607 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); }
 #line 1270 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 152:
-#line 600 "dhcp4_parser.yy" // lalr1.cc:859
+  case 156:
+#line 608 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("cql", ctx.loc2pos(yystack_[0].location))); }
 #line 1276 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 153:
-#line 603 "dhcp4_parser.yy" // lalr1.cc:859
+  case 157:
+#line 611 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1284 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 154:
-#line 605 "dhcp4_parser.yy" // lalr1.cc:859
+  case 158:
+#line 613 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr user(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("user", user);
@@ -1293,16 +1293,16 @@ namespace isc { namespace dhcp {
 #line 1294 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 155:
-#line 611 "dhcp4_parser.yy" // lalr1.cc:859
+  case 159:
+#line 619 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1302 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 156:
-#line 613 "dhcp4_parser.yy" // lalr1.cc:859
+  case 160:
+#line 621 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr pwd(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("password", pwd);
@@ -1311,16 +1311,16 @@ namespace isc { namespace dhcp {
 #line 1312 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 157:
-#line 619 "dhcp4_parser.yy" // lalr1.cc:859
+  case 161:
+#line 627 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1320 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 158:
-#line 621 "dhcp4_parser.yy" // lalr1.cc:859
+  case 162:
+#line 629 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr h(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("host", h);
@@ -1329,8 +1329,8 @@ namespace isc { namespace dhcp {
 #line 1330 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 159:
-#line 627 "dhcp4_parser.yy" // lalr1.cc:859
+  case 163:
+#line 635 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr p(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("port", p);
@@ -1338,16 +1338,16 @@ namespace isc { namespace dhcp {
 #line 1339 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 160:
-#line 632 "dhcp4_parser.yy" // lalr1.cc:859
+  case 164:
+#line 640 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1347 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 161:
-#line 634 "dhcp4_parser.yy" // lalr1.cc:859
+  case 165:
+#line 642 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr name(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("name", name);
@@ -1356,8 +1356,8 @@ namespace isc { namespace dhcp {
 #line 1357 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 162:
-#line 640 "dhcp4_parser.yy" // lalr1.cc:859
+  case 166:
+#line 648 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("persist", n);
@@ -1365,8 +1365,8 @@ namespace isc { namespace dhcp {
 #line 1366 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 163:
-#line 645 "dhcp4_parser.yy" // lalr1.cc:859
+  case 167:
+#line 653 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("lfc-interval", n);
@@ -1374,8 +1374,8 @@ namespace isc { namespace dhcp {
 #line 1375 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 164:
-#line 650 "dhcp4_parser.yy" // lalr1.cc:859
+  case 168:
+#line 658 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("readonly", n);
@@ -1383,8 +1383,8 @@ namespace isc { namespace dhcp {
 #line 1384 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 165:
-#line 655 "dhcp4_parser.yy" // lalr1.cc:859
+  case 169:
+#line 663 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("connect-timeout", n);
@@ -1392,309 +1392,345 @@ namespace isc { namespace dhcp {
 #line 1393 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 166:
-#line 660 "dhcp4_parser.yy" // lalr1.cc:859
+  case 170:
+#line 668 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("reconnect-wait-time", n);
+}
+#line 1402 "dhcp4_parser.cc" // lalr1.cc:859
+    break;
+
+  case 171:
+#line 673 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("request-timeout", n);
+}
+#line 1411 "dhcp4_parser.cc" // lalr1.cc:859
+    break;
+
+  case 172:
+#line 678 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("tcp-keepalive", n);
+}
+#line 1420 "dhcp4_parser.cc" // lalr1.cc:859
+    break;
+
+  case 173:
+#line 683 "dhcp4_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("tcp-nodelay", n);
+}
+#line 1429 "dhcp4_parser.cc" // lalr1.cc:859
+    break;
+
+  case 174:
+#line 688 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1401 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1437 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 167:
-#line 662 "dhcp4_parser.yy" // lalr1.cc:859
+  case 175:
+#line 690 "dhcp4_parser.yy" // lalr1.cc:859
     {
     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 1411 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1447 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 168:
-#line 668 "dhcp4_parser.yy" // lalr1.cc:859
+  case 176:
+#line 696 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1419 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1455 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 169:
-#line 670 "dhcp4_parser.yy" // lalr1.cc:859
+  case 177:
+#line 698 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr ks(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("keyspace", ks);
     ctx.leave();
 }
-#line 1429 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1465 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 170:
-#line 677 "dhcp4_parser.yy" // lalr1.cc:859
+  case 178:
+#line 705 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("host-reservation-identifiers", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.HOST_RESERVATION_IDENTIFIERS);
 }
-#line 1440 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1476 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 171:
-#line 682 "dhcp4_parser.yy" // lalr1.cc:859
+  case 179:
+#line 710 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1449 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1485 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 179:
-#line 698 "dhcp4_parser.yy" // lalr1.cc:859
+  case 187:
+#line 726 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(duid);
 }
-#line 1458 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1494 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 180:
-#line 703 "dhcp4_parser.yy" // lalr1.cc:859
+  case 188:
+#line 731 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(hwaddr);
 }
-#line 1467 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1503 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 181:
-#line 708 "dhcp4_parser.yy" // lalr1.cc:859
+  case 189:
+#line 736 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr circuit(new StringElement("circuit-id", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(circuit);
 }
-#line 1476 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1512 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 182:
-#line 713 "dhcp4_parser.yy" // lalr1.cc:859
+  case 190:
+#line 741 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr client(new StringElement("client-id", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(client);
 }
-#line 1485 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1521 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 183:
-#line 718 "dhcp4_parser.yy" // lalr1.cc:859
+  case 191:
+#line 746 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr flex_id(new StringElement("flex-id", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(flex_id);
 }
-#line 1494 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1530 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 184:
-#line 723 "dhcp4_parser.yy" // lalr1.cc:859
+  case 192:
+#line 751 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hooks-libraries", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.HOOKS_LIBRARIES);
 }
-#line 1505 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1541 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 185:
-#line 728 "dhcp4_parser.yy" // lalr1.cc:859
+  case 193:
+#line 756 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1514 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1550 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 190:
-#line 741 "dhcp4_parser.yy" // lalr1.cc:859
+  case 198:
+#line 769 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 1524 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1560 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 191:
-#line 745 "dhcp4_parser.yy" // lalr1.cc:859
+  case 199:
+#line 773 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // The library hooks parameter is required
     ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 1534 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1570 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 192:
-#line 751 "dhcp4_parser.yy" // lalr1.cc:859
+  case 200:
+#line 779 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Parse the hooks-libraries list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 1544 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1580 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 193:
-#line 755 "dhcp4_parser.yy" // lalr1.cc:859
+  case 201:
+#line 783 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // The library hooks parameter is required
     ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 1554 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1590 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 199:
-#line 770 "dhcp4_parser.yy" // lalr1.cc:859
+  case 207:
+#line 798 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1562 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1598 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 200:
-#line 772 "dhcp4_parser.yy" // lalr1.cc:859
+  case 208:
+#line 800 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr lib(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("library", lib);
     ctx.leave();
 }
-#line 1572 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1608 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 201:
-#line 778 "dhcp4_parser.yy" // lalr1.cc:859
+  case 209:
+#line 806 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1580 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1616 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 202:
-#line 780 "dhcp4_parser.yy" // lalr1.cc:859
+  case 210:
+#line 808 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("parameters", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 1589 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1625 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 203:
-#line 786 "dhcp4_parser.yy" // lalr1.cc:859
+  case 211:
+#line 814 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("expired-leases-processing", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.EXPIRED_LEASES_PROCESSING);
 }
-#line 1600 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1636 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 204:
-#line 791 "dhcp4_parser.yy" // lalr1.cc:859
+  case 212:
+#line 819 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // No expired lease parameter is required
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1610 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1646 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 213:
-#line 809 "dhcp4_parser.yy" // lalr1.cc:859
+  case 221:
+#line 837 "dhcp4_parser.yy" // lalr1.cc:859
     {
     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 1619 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1655 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 214:
-#line 814 "dhcp4_parser.yy" // lalr1.cc:859
+  case 222:
+#line 842 "dhcp4_parser.yy" // lalr1.cc:859
     {
     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 1628 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1664 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 215:
-#line 819 "dhcp4_parser.yy" // lalr1.cc:859
+  case 223:
+#line 847 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hold-reclaimed-time", value);
 }
-#line 1637 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1673 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 216:
-#line 824 "dhcp4_parser.yy" // lalr1.cc:859
+  case 224:
+#line 852 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-reclaim-leases", value);
 }
-#line 1646 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1682 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 217:
-#line 829 "dhcp4_parser.yy" // lalr1.cc:859
+  case 225:
+#line 857 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-reclaim-time", value);
 }
-#line 1655 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1691 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 218:
-#line 834 "dhcp4_parser.yy" // lalr1.cc:859
+  case 226:
+#line 862 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("unwarned-reclaim-cycles", value);
 }
-#line 1664 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1700 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 219:
-#line 842 "dhcp4_parser.yy" // lalr1.cc:859
+  case 227:
+#line 870 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("subnet4", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.SUBNET4);
 }
-#line 1675 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1711 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 220:
-#line 847 "dhcp4_parser.yy" // lalr1.cc:859
+  case 228:
+#line 875 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1684 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1720 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 225:
-#line 867 "dhcp4_parser.yy" // lalr1.cc:859
+  case 233:
+#line 895 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 1694 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1730 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 226:
-#line 871 "dhcp4_parser.yy" // lalr1.cc:859
+  case 234:
+#line 899 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Once we reached this place, the subnet parsing is now complete.
     // If we want to, we can implement default values here.
@@ -1716,295 +1752,295 @@ namespace isc { namespace dhcp {
     ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 1720 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1756 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 227:
-#line 893 "dhcp4_parser.yy" // lalr1.cc:859
+  case 235:
+#line 921 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Parse the subnet4 list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 1730 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1766 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 228:
-#line 897 "dhcp4_parser.yy" // lalr1.cc:859
+  case 236:
+#line 925 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // The subnet subnet4 parameter is required
     ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 1740 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1776 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 255:
-#line 935 "dhcp4_parser.yy" // lalr1.cc:859
+  case 263:
+#line 963 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1748 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1784 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 256:
-#line 937 "dhcp4_parser.yy" // lalr1.cc:859
+  case 264:
+#line 965 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr subnet(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("subnet", subnet);
     ctx.leave();
 }
-#line 1758 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1794 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 257:
-#line 943 "dhcp4_parser.yy" // lalr1.cc:859
+  case 265:
+#line 971 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1766 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1802 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 258:
-#line 945 "dhcp4_parser.yy" // lalr1.cc:859
+  case 266:
+#line 973 "dhcp4_parser.yy" // lalr1.cc:859
     {
     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 1776 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1812 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 259:
-#line 951 "dhcp4_parser.yy" // lalr1.cc:859
+  case 267:
+#line 979 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1784 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1820 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 260:
-#line 953 "dhcp4_parser.yy" // lalr1.cc:859
+  case 268:
+#line 981 "dhcp4_parser.yy" // lalr1.cc:859
     {
     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 1794 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1830 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 261:
-#line 959 "dhcp4_parser.yy" // lalr1.cc:859
+  case 269:
+#line 987 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1802 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1838 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 262:
-#line 961 "dhcp4_parser.yy" // lalr1.cc:859
+  case 270:
+#line 989 "dhcp4_parser.yy" // lalr1.cc:859
     {
     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 1812 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1848 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 263:
-#line 967 "dhcp4_parser.yy" // lalr1.cc:859
+  case 271:
+#line 995 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1820 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1856 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 264:
-#line 969 "dhcp4_parser.yy" // lalr1.cc:859
+  case 272:
+#line 997 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interface", iface);
     ctx.leave();
 }
-#line 1830 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1866 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 265:
-#line 975 "dhcp4_parser.yy" // lalr1.cc:859
+  case 273:
+#line 1003 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1838 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1874 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 266:
-#line 977 "dhcp4_parser.yy" // lalr1.cc:859
+  case 274:
+#line 1005 "dhcp4_parser.yy" // lalr1.cc:859
     {
     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 1848 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1884 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 267:
-#line 983 "dhcp4_parser.yy" // lalr1.cc:859
+  case 275:
+#line 1011 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.CLIENT_CLASS);
 }
-#line 1856 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1892 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 268:
-#line 985 "dhcp4_parser.yy" // lalr1.cc:859
+  case 276:
+#line 1013 "dhcp4_parser.yy" // lalr1.cc:859
     {
     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 1866 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1902 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 269:
-#line 991 "dhcp4_parser.yy" // lalr1.cc:859
+  case 277:
+#line 1019 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.RESERVATION_MODE);
 }
-#line 1874 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1910 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 270:
-#line 993 "dhcp4_parser.yy" // lalr1.cc:859
+  case 278:
+#line 1021 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("reservation-mode", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 1883 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1919 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 271:
-#line 998 "dhcp4_parser.yy" // lalr1.cc:859
+  case 279:
+#line 1026 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("disabled", ctx.loc2pos(yystack_[0].location))); }
-#line 1889 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1925 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 272:
-#line 999 "dhcp4_parser.yy" // lalr1.cc:859
+  case 280:
+#line 1027 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(yystack_[0].location))); }
-#line 1895 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1931 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 273:
-#line 1000 "dhcp4_parser.yy" // lalr1.cc:859
+  case 281:
+#line 1028 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); }
-#line 1901 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1937 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 274:
-#line 1003 "dhcp4_parser.yy" // lalr1.cc:859
+  case 282:
+#line 1031 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr id(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("id", id);
 }
-#line 1910 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1946 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 275:
-#line 1008 "dhcp4_parser.yy" // lalr1.cc:859
+  case 283:
+#line 1036 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr rc(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("rapid-commit", rc);
 }
-#line 1919 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1955 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 276:
-#line 1015 "dhcp4_parser.yy" // lalr1.cc:859
+  case 284:
+#line 1043 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("shared-networks", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.SHARED_NETWORK);
 }
-#line 1930 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1966 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 277:
-#line 1020 "dhcp4_parser.yy" // lalr1.cc:859
+  case 285:
+#line 1048 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1939 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1975 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 282:
-#line 1035 "dhcp4_parser.yy" // lalr1.cc:859
+  case 290:
+#line 1063 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 1949 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1985 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 283:
-#line 1039 "dhcp4_parser.yy" // lalr1.cc:859
+  case 291:
+#line 1067 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 1957 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1993 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 303:
-#line 1070 "dhcp4_parser.yy" // lalr1.cc:859
+  case 311:
+#line 1098 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("option-def", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.OPTION_DEF);
 }
-#line 1968 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2004 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 304:
-#line 1075 "dhcp4_parser.yy" // lalr1.cc:859
+  case 312:
+#line 1103 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1977 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2013 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 305:
-#line 1083 "dhcp4_parser.yy" // lalr1.cc:859
+  case 313:
+#line 1111 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 1986 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2022 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 306:
-#line 1086 "dhcp4_parser.yy" // lalr1.cc:859
+  case 314:
+#line 1114 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 1994 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2030 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 311:
-#line 1102 "dhcp4_parser.yy" // lalr1.cc:859
+  case 319:
+#line 1130 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2004 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2040 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 312:
-#line 1106 "dhcp4_parser.yy" // lalr1.cc:859
+  case 320:
+#line 1134 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // The name, code and type option def parameters are required.
     ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -2012,21 +2048,21 @@ namespace isc { namespace dhcp {
     ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 2016 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2052 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 313:
-#line 1117 "dhcp4_parser.yy" // lalr1.cc:859
+  case 321:
+#line 1145 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Parse the option-def list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2026 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2062 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 314:
-#line 1121 "dhcp4_parser.yy" // lalr1.cc:859
+  case 322:
+#line 1149 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // The name, code and type option def parameters are required.
     ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -2034,281 +2070,281 @@ namespace isc { namespace dhcp {
     ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 2038 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2074 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 330:
-#line 1153 "dhcp4_parser.yy" // lalr1.cc:859
+  case 338:
+#line 1181 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr code(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("code", code);
 }
-#line 2047 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2083 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 332:
-#line 1160 "dhcp4_parser.yy" // lalr1.cc:859
+  case 340:
+#line 1188 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2055 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2091 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 333:
-#line 1162 "dhcp4_parser.yy" // lalr1.cc:859
+  case 341:
+#line 1190 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr prf(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("type", prf);
     ctx.leave();
 }
-#line 2065 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2101 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 334:
-#line 1168 "dhcp4_parser.yy" // lalr1.cc:859
+  case 342:
+#line 1196 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2073 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2109 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 335:
-#line 1170 "dhcp4_parser.yy" // lalr1.cc:859
+  case 343:
+#line 1198 "dhcp4_parser.yy" // lalr1.cc:859
     {
     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 2083 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2119 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 336:
-#line 1176 "dhcp4_parser.yy" // lalr1.cc:859
+  case 344:
+#line 1204 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2091 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2127 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 337:
-#line 1178 "dhcp4_parser.yy" // lalr1.cc:859
+  case 345:
+#line 1206 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr space(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("space", space);
     ctx.leave();
 }
-#line 2101 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2137 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 339:
-#line 1186 "dhcp4_parser.yy" // lalr1.cc:859
+  case 347:
+#line 1214 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2109 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2145 "dhcp4_parser.cc" // lalr1.cc:859
     break;
-
-  case 340:
-#line 1188 "dhcp4_parser.yy" // lalr1.cc:859
+
+  case 348:
+#line 1216 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr encap(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("encapsulate", encap);
     ctx.leave();
 }
-#line 2119 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2155 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 341:
-#line 1194 "dhcp4_parser.yy" // lalr1.cc:859
+  case 349:
+#line 1222 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr array(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("array", array);
 }
-#line 2128 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2164 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 342:
-#line 1203 "dhcp4_parser.yy" // lalr1.cc:859
+  case 350:
+#line 1231 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("option-data", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.OPTION_DATA);
 }
-#line 2139 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2175 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 343:
-#line 1208 "dhcp4_parser.yy" // lalr1.cc:859
+  case 351:
+#line 1236 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2148 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2184 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 348:
-#line 1227 "dhcp4_parser.yy" // lalr1.cc:859
+  case 356:
+#line 1255 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2158 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2194 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 349:
-#line 1231 "dhcp4_parser.yy" // lalr1.cc:859
+  case 357:
+#line 1259 "dhcp4_parser.yy" // lalr1.cc:859
     {
     /// @todo: the code or name parameters are required.
     ctx.stack_.pop_back();
 }
-#line 2167 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2203 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 350:
-#line 1239 "dhcp4_parser.yy" // lalr1.cc:859
+  case 358:
+#line 1267 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Parse the option-data list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2177 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2213 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 351:
-#line 1243 "dhcp4_parser.yy" // lalr1.cc:859
+  case 359:
+#line 1271 "dhcp4_parser.yy" // lalr1.cc:859
     {
     /// @todo: the code or name parameters are required.
     // parsing completed
 }
-#line 2186 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2222 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 366:
-#line 1276 "dhcp4_parser.yy" // lalr1.cc:859
+  case 374:
+#line 1304 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2194 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2230 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 367:
-#line 1278 "dhcp4_parser.yy" // lalr1.cc:859
+  case 375:
+#line 1306 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr data(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("data", data);
     ctx.leave();
 }
-#line 2204 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2240 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 370:
-#line 1288 "dhcp4_parser.yy" // lalr1.cc:859
+  case 378:
+#line 1316 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr space(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("csv-format", space);
 }
-#line 2213 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2249 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 371:
-#line 1293 "dhcp4_parser.yy" // lalr1.cc:859
+  case 379:
+#line 1321 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr persist(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("always-send", persist);
 }
-#line 2222 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2258 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 372:
-#line 1301 "dhcp4_parser.yy" // lalr1.cc:859
+  case 380:
+#line 1329 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("pools", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.POOLS);
 }
-#line 2233 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2269 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 373:
-#line 1306 "dhcp4_parser.yy" // lalr1.cc:859
+  case 381:
+#line 1334 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2242 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2278 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 378:
-#line 1321 "dhcp4_parser.yy" // lalr1.cc:859
+  case 386:
+#line 1349 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2252 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2288 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 379:
-#line 1325 "dhcp4_parser.yy" // lalr1.cc:859
+  case 387:
+#line 1353 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // The pool parameter is required.
     ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 2262 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2298 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 380:
-#line 1331 "dhcp4_parser.yy" // lalr1.cc:859
+  case 388:
+#line 1359 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Parse the pool list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2272 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2308 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 381:
-#line 1335 "dhcp4_parser.yy" // lalr1.cc:859
+  case 389:
+#line 1363 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // The pool parameter is required.
     ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 2282 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2318 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 390:
-#line 1353 "dhcp4_parser.yy" // lalr1.cc:859
+  case 398:
+#line 1381 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2290 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2326 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 391:
-#line 1355 "dhcp4_parser.yy" // lalr1.cc:859
+  case 399:
+#line 1383 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr pool(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("pool", pool);
     ctx.leave();
 }
-#line 2300 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2336 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 392:
-#line 1361 "dhcp4_parser.yy" // lalr1.cc:859
+  case 400:
+#line 1389 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2308 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2344 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 393:
-#line 1363 "dhcp4_parser.yy" // lalr1.cc:859
+  case 401:
+#line 1391 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr parent = ctx.stack_.back();
     ElementPtr user_context = yystack_[0].value.as< ElementPtr > ();
@@ -2331,19 +2367,19 @@ namespace isc { namespace dhcp {
     parent->set("user-context", user_context);
     ctx.leave();
 }
-#line 2335 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2371 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 394:
-#line 1386 "dhcp4_parser.yy" // lalr1.cc:859
+  case 402:
+#line 1414 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2343 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2379 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 395:
-#line 1388 "dhcp4_parser.yy" // lalr1.cc:859
+  case 403:
+#line 1416 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr parent = ctx.stack_.back();
     ElementPtr user_context(new MapElement(ctx.loc2pos(yystack_[3].location)));
@@ -2368,949 +2404,949 @@ namespace isc { namespace dhcp {
     parent->set("user-context", user_context);
     ctx.leave();
 }
-#line 2372 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2408 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 396:
-#line 1416 "dhcp4_parser.yy" // lalr1.cc:859
+  case 404:
+#line 1444 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("reservations", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.RESERVATIONS);
 }
-#line 2383 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2419 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 397:
-#line 1421 "dhcp4_parser.yy" // lalr1.cc:859
+  case 405:
+#line 1449 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2392 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2428 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 402:
-#line 1434 "dhcp4_parser.yy" // lalr1.cc:859
+  case 410:
+#line 1462 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2402 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2438 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 403:
-#line 1438 "dhcp4_parser.yy" // lalr1.cc:859
+  case 411:
+#line 1466 "dhcp4_parser.yy" // lalr1.cc:859
     {
     /// @todo: an identifier parameter is required.
     ctx.stack_.pop_back();
 }
-#line 2411 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2447 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 404:
-#line 1443 "dhcp4_parser.yy" // lalr1.cc:859
+  case 412:
+#line 1471 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Parse the reservations list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2421 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2457 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 405:
-#line 1447 "dhcp4_parser.yy" // lalr1.cc:859
+  case 413:
+#line 1475 "dhcp4_parser.yy" // lalr1.cc:859
     {
     /// @todo: an identifier parameter is required.
     // parsing completed
 }
-#line 2430 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2466 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 425:
-#line 1478 "dhcp4_parser.yy" // lalr1.cc:859
+  case 433:
+#line 1506 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2438 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2474 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 426:
-#line 1480 "dhcp4_parser.yy" // lalr1.cc:859
+  case 434:
+#line 1508 "dhcp4_parser.yy" // lalr1.cc:859
     {
     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 2448 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2484 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 427:
-#line 1486 "dhcp4_parser.yy" // lalr1.cc:859
+  case 435:
+#line 1514 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2456 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2492 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 428:
-#line 1488 "dhcp4_parser.yy" // lalr1.cc:859
+  case 436:
+#line 1516 "dhcp4_parser.yy" // lalr1.cc:859
     {
     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 2466 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2502 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 429:
-#line 1494 "dhcp4_parser.yy" // lalr1.cc:859
+  case 437:
+#line 1522 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2474 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2510 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 430:
-#line 1496 "dhcp4_parser.yy" // lalr1.cc:859
+  case 438:
+#line 1524 "dhcp4_parser.yy" // lalr1.cc:859
     {
     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 2484 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2520 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 431:
-#line 1502 "dhcp4_parser.yy" // lalr1.cc:859
+  case 439:
+#line 1530 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2492 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2528 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 432:
-#line 1504 "dhcp4_parser.yy" // lalr1.cc:859
+  case 440:
+#line 1532 "dhcp4_parser.yy" // lalr1.cc:859
     {
     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 2502 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2538 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 433:
-#line 1510 "dhcp4_parser.yy" // lalr1.cc:859
+  case 441:
+#line 1538 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2510 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2546 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 434:
-#line 1512 "dhcp4_parser.yy" // lalr1.cc:859
+  case 442:
+#line 1540 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr d(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("duid", d);
     ctx.leave();
 }
-#line 2520 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2556 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 435:
-#line 1518 "dhcp4_parser.yy" // lalr1.cc:859
+  case 443:
+#line 1546 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2528 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2564 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 436:
-#line 1520 "dhcp4_parser.yy" // lalr1.cc:859
+  case 444:
+#line 1548 "dhcp4_parser.yy" // lalr1.cc:859
     {
     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 2538 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2574 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 437:
-#line 1526 "dhcp4_parser.yy" // lalr1.cc:859
+  case 445:
+#line 1554 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2546 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2582 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 438:
-#line 1528 "dhcp4_parser.yy" // lalr1.cc:859
+  case 446:
+#line 1556 "dhcp4_parser.yy" // lalr1.cc:859
     {
     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 2556 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2592 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 439:
-#line 1534 "dhcp4_parser.yy" // lalr1.cc:859
+  case 447:
+#line 1562 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2564 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2600 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 440:
-#line 1536 "dhcp4_parser.yy" // lalr1.cc:859
+  case 448:
+#line 1564 "dhcp4_parser.yy" // lalr1.cc:859
     {
     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 2574 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2610 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 441:
-#line 1542 "dhcp4_parser.yy" // lalr1.cc:859
+  case 449:
+#line 1570 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2582 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2618 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 442:
-#line 1544 "dhcp4_parser.yy" // lalr1.cc:859
+  case 450:
+#line 1572 "dhcp4_parser.yy" // lalr1.cc:859
     {
     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 2592 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2628 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 443:
-#line 1550 "dhcp4_parser.yy" // lalr1.cc:859
+  case 451:
+#line 1578 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2600 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2636 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 444:
-#line 1552 "dhcp4_parser.yy" // lalr1.cc:859
+  case 452:
+#line 1580 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr host(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hostname", host);
     ctx.leave();
 }
-#line 2610 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2646 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 445:
-#line 1558 "dhcp4_parser.yy" // lalr1.cc:859
+  case 453:
+#line 1586 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("client-classes", c);
     ctx.stack_.push_back(c);
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2621 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2657 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 446:
-#line 1563 "dhcp4_parser.yy" // lalr1.cc:859
+  case 454:
+#line 1591 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2630 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2666 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 447:
-#line 1571 "dhcp4_parser.yy" // lalr1.cc:859
+  case 455:
+#line 1599 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("relay", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.RELAY);
 }
-#line 2641 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2677 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 448:
-#line 1576 "dhcp4_parser.yy" // lalr1.cc:859
+  case 456:
+#line 1604 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2650 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2686 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 449:
-#line 1581 "dhcp4_parser.yy" // lalr1.cc:859
+  case 457:
+#line 1609 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2658 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2694 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 450:
-#line 1583 "dhcp4_parser.yy" // lalr1.cc:859
+  case 458:
+#line 1611 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr ip(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ip-address", ip);
     ctx.leave();
 }
-#line 2668 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2704 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 451:
-#line 1592 "dhcp4_parser.yy" // lalr1.cc:859
+  case 459:
+#line 1620 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("client-classes", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.CLIENT_CLASSES);
 }
-#line 2679 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2715 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 452:
-#line 1597 "dhcp4_parser.yy" // lalr1.cc:859
+  case 460:
+#line 1625 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2688 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2724 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 455:
-#line 1606 "dhcp4_parser.yy" // lalr1.cc:859
+  case 463:
+#line 1634 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2698 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2734 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 456:
-#line 1610 "dhcp4_parser.yy" // lalr1.cc:859
+  case 464:
+#line 1638 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // 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 2708 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2744 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 472:
-#line 1638 "dhcp4_parser.yy" // lalr1.cc:859
+  case 480:
+#line 1666 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2716 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2752 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 473:
-#line 1640 "dhcp4_parser.yy" // lalr1.cc:859
+  case 481:
+#line 1668 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr test(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("test", test);
     ctx.leave();
 }
-#line 2726 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2762 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 474:
-#line 1650 "dhcp4_parser.yy" // lalr1.cc:859
+  case 482:
+#line 1678 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr time(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("dhcp4o6-port", time);
 }
-#line 2735 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2771 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 475:
-#line 1657 "dhcp4_parser.yy" // lalr1.cc:859
+  case 483:
+#line 1685 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("control-socket", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.CONTROL_SOCKET);
 }
-#line 2746 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2782 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 476:
-#line 1662 "dhcp4_parser.yy" // lalr1.cc:859
+  case 484:
+#line 1690 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2755 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2791 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 484:
-#line 1678 "dhcp4_parser.yy" // lalr1.cc:859
+  case 492:
+#line 1706 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2763 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2799 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 485:
-#line 1680 "dhcp4_parser.yy" // lalr1.cc:859
+  case 493:
+#line 1708 "dhcp4_parser.yy" // lalr1.cc:859
     {
     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 2773 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2809 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 486:
-#line 1686 "dhcp4_parser.yy" // lalr1.cc:859
+  case 494:
+#line 1714 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2781 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2817 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 487:
-#line 1688 "dhcp4_parser.yy" // lalr1.cc:859
+  case 495:
+#line 1716 "dhcp4_parser.yy" // lalr1.cc:859
     {
     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 2791 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2827 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 488:
-#line 1696 "dhcp4_parser.yy" // lalr1.cc:859
+  case 496:
+#line 1724 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("dhcp-ddns", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.DHCP_DDNS);
 }
-#line 2802 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2838 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 489:
-#line 1701 "dhcp4_parser.yy" // lalr1.cc:859
+  case 497:
+#line 1729 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // 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 2813 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2849 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 490:
-#line 1708 "dhcp4_parser.yy" // lalr1.cc:859
+  case 498:
+#line 1736 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Parse the dhcp-ddns map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2823 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2859 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 491:
-#line 1712 "dhcp4_parser.yy" // lalr1.cc:859
+  case 499:
+#line 1740 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // 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 2833 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2869 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 511:
-#line 1741 "dhcp4_parser.yy" // lalr1.cc:859
+  case 519:
+#line 1769 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("enable-updates", b);
 }
-#line 2842 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2878 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 512:
-#line 1746 "dhcp4_parser.yy" // lalr1.cc:859
+  case 520:
+#line 1774 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2850 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2886 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 513:
-#line 1748 "dhcp4_parser.yy" // lalr1.cc:859
+  case 521:
+#line 1776 "dhcp4_parser.yy" // lalr1.cc:859
     {
     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 2860 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2896 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 514:
-#line 1754 "dhcp4_parser.yy" // lalr1.cc:859
+  case 522:
+#line 1782 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2868 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2904 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 515:
-#line 1756 "dhcp4_parser.yy" // lalr1.cc:859
+  case 523:
+#line 1784 "dhcp4_parser.yy" // lalr1.cc:859
     {
     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 2878 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2914 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 516:
-#line 1762 "dhcp4_parser.yy" // lalr1.cc:859
+  case 524:
+#line 1790 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("server-port", i);
 }
-#line 2887 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2923 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 517:
-#line 1767 "dhcp4_parser.yy" // lalr1.cc:859
+  case 525:
+#line 1795 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2895 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2931 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 518:
-#line 1769 "dhcp4_parser.yy" // lalr1.cc:859
+  case 526:
+#line 1797 "dhcp4_parser.yy" // lalr1.cc:859
     {
     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 2905 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2941 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 519:
-#line 1775 "dhcp4_parser.yy" // lalr1.cc:859
+  case 527:
+#line 1803 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("sender-port", i);
 }
-#line 2914 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2950 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 520:
-#line 1780 "dhcp4_parser.yy" // lalr1.cc:859
+  case 528:
+#line 1808 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-queue-size", i);
 }
-#line 2923 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2959 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 521:
-#line 1785 "dhcp4_parser.yy" // lalr1.cc:859
+  case 529:
+#line 1813 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NCR_PROTOCOL);
 }
-#line 2931 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2967 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 522:
-#line 1787 "dhcp4_parser.yy" // lalr1.cc:859
+  case 530:
+#line 1815 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 2940 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2976 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 523:
-#line 1793 "dhcp4_parser.yy" // lalr1.cc:859
+  case 531:
+#line 1821 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
-#line 2946 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2982 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 524:
-#line 1794 "dhcp4_parser.yy" // lalr1.cc:859
+  case 532:
+#line 1822 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
-#line 2952 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2988 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 525:
-#line 1797 "dhcp4_parser.yy" // lalr1.cc:859
+  case 533:
+#line 1825 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NCR_FORMAT);
 }
-#line 2960 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2996 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 526:
-#line 1799 "dhcp4_parser.yy" // lalr1.cc:859
+  case 534:
+#line 1827 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ncr-format", json);
     ctx.leave();
 }
-#line 2970 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3006 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 527:
-#line 1805 "dhcp4_parser.yy" // lalr1.cc:859
+  case 535:
+#line 1833 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("always-include-fqdn", b);
 }
-#line 2979 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3015 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 528:
-#line 1810 "dhcp4_parser.yy" // lalr1.cc:859
+  case 536:
+#line 1838 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("override-no-update", b);
 }
-#line 2988 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3024 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 529:
-#line 1815 "dhcp4_parser.yy" // lalr1.cc:859
+  case 537:
+#line 1843 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("override-client-update", b);
 }
-#line 2997 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3033 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 530:
-#line 1820 "dhcp4_parser.yy" // lalr1.cc:859
+  case 538:
+#line 1848 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.REPLACE_CLIENT_NAME);
 }
-#line 3005 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3041 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 531:
-#line 1822 "dhcp4_parser.yy" // lalr1.cc:859
+  case 539:
+#line 1850 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 3014 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3050 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 532:
-#line 1828 "dhcp4_parser.yy" // lalr1.cc:859
+  case 540:
+#line 1856 "dhcp4_parser.yy" // lalr1.cc:859
     {
       yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location))); 
       }
-#line 3022 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3058 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 533:
-#line 1831 "dhcp4_parser.yy" // lalr1.cc:859
+  case 541:
+#line 1859 "dhcp4_parser.yy" // lalr1.cc:859
     {
       yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location)));
       }
-#line 3030 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3066 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 534:
-#line 1834 "dhcp4_parser.yy" // lalr1.cc:859
+  case 542:
+#line 1862 "dhcp4_parser.yy" // lalr1.cc:859
     {
       yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location)));
       }
-#line 3038 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3074 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 535:
-#line 1837 "dhcp4_parser.yy" // lalr1.cc:859
+  case 543:
+#line 1865 "dhcp4_parser.yy" // lalr1.cc:859
     {
       yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location)));
       }
-#line 3046 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3082 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 536:
-#line 1840 "dhcp4_parser.yy" // lalr1.cc:859
+  case 544:
+#line 1868 "dhcp4_parser.yy" // lalr1.cc:859
     {
       error(yystack_[0].location, "boolean values for the replace-client-name are "
                 "no longer supported");
       }
-#line 3055 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3091 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 537:
-#line 1846 "dhcp4_parser.yy" // lalr1.cc:859
+  case 545:
+#line 1874 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3063 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3099 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 538:
-#line 1848 "dhcp4_parser.yy" // lalr1.cc:859
+  case 546:
+#line 1876 "dhcp4_parser.yy" // lalr1.cc:859
     {
     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 3073 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3109 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 539:
-#line 1856 "dhcp4_parser.yy" // lalr1.cc:859
+  case 547:
+#line 1884 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3081 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3117 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 540:
-#line 1858 "dhcp4_parser.yy" // lalr1.cc:859
+  case 548:
+#line 1886 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("Dhcp6", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 3090 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3126 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 541:
-#line 1863 "dhcp4_parser.yy" // lalr1.cc:859
+  case 549:
+#line 1891 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3098 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3134 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 542:
-#line 1865 "dhcp4_parser.yy" // lalr1.cc:859
+  case 550:
+#line 1893 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("DhcpDdns", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 3107 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3143 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 543:
-#line 1870 "dhcp4_parser.yy" // lalr1.cc:859
+  case 551:
+#line 1898 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3115 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3151 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 544:
-#line 1872 "dhcp4_parser.yy" // lalr1.cc:859
+  case 552:
+#line 1900 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("Control-agent", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 3124 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3160 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 545:
-#line 1882 "dhcp4_parser.yy" // lalr1.cc:859
+  case 553:
+#line 1910 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("Logging", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.LOGGING);
 }
-#line 3135 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3171 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 546:
-#line 1887 "dhcp4_parser.yy" // lalr1.cc:859
+  case 554:
+#line 1915 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3144 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3180 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 547:
-#line 1892 "dhcp4_parser.yy" // lalr1.cc:859
+  case 555:
+#line 1920 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Parse the Logging map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 3154 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3190 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 548:
-#line 1896 "dhcp4_parser.yy" // lalr1.cc:859
+  case 556:
+#line 1924 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 3162 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3198 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 552:
-#line 1912 "dhcp4_parser.yy" // lalr1.cc:859
+  case 560:
+#line 1940 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("loggers", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.LOGGERS);
 }
-#line 3173 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3209 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 553:
-#line 1917 "dhcp4_parser.yy" // lalr1.cc:859
+  case 561:
+#line 1945 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3182 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3218 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 556:
-#line 1929 "dhcp4_parser.yy" // lalr1.cc:859
+  case 564:
+#line 1957 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(l);
     ctx.stack_.push_back(l);
 }
-#line 3192 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3228 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 557:
-#line 1933 "dhcp4_parser.yy" // lalr1.cc:859
+  case 565:
+#line 1961 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 3200 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3236 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 567:
-#line 1950 "dhcp4_parser.yy" // lalr1.cc:859
+  case 575:
+#line 1978 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr dl(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("debuglevel", dl);
 }
-#line 3209 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3245 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 568:
-#line 1955 "dhcp4_parser.yy" // lalr1.cc:859
+  case 576:
+#line 1983 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3217 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3253 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 569:
-#line 1957 "dhcp4_parser.yy" // lalr1.cc:859
+  case 577:
+#line 1985 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("severity", sev);
     ctx.leave();
 }
-#line 3227 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3263 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 570:
-#line 1963 "dhcp4_parser.yy" // lalr1.cc:859
+  case 578:
+#line 1991 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("output_options", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.OUTPUT_OPTIONS);
 }
-#line 3238 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3274 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 571:
-#line 1968 "dhcp4_parser.yy" // lalr1.cc:859
+  case 579:
+#line 1996 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3247 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3283 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 574:
-#line 1977 "dhcp4_parser.yy" // lalr1.cc:859
+  case 582:
+#line 2005 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 3257 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3293 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 575:
-#line 1981 "dhcp4_parser.yy" // lalr1.cc:859
+  case 583:
+#line 2009 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 3265 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3301 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 582:
-#line 1995 "dhcp4_parser.yy" // lalr1.cc:859
+  case 590:
+#line 2023 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3273 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3309 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 583:
-#line 1997 "dhcp4_parser.yy" // lalr1.cc:859
+  case 591:
+#line 2025 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("output", sev);
     ctx.leave();
 }
-#line 3283 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3319 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 584:
-#line 2003 "dhcp4_parser.yy" // lalr1.cc:859
+  case 592:
+#line 2031 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr flush(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("flush", flush);
 }
-#line 3292 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3328 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 585:
-#line 2008 "dhcp4_parser.yy" // lalr1.cc:859
+  case 593:
+#line 2036 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr maxsize(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("maxsize", maxsize);
 }
-#line 3301 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3337 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 586:
-#line 2013 "dhcp4_parser.yy" // lalr1.cc:859
+  case 594:
+#line 2041 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr maxver(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("maxver", maxver);
 }
-#line 3310 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3346 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
 
-#line 3314 "dhcp4_parser.cc" // lalr1.cc:859
+#line 3350 "dhcp4_parser.cc" // lalr1.cc:859
             default:
               break;
             }
@@ -3565,107 +3601,109 @@ namespace isc { namespace dhcp {
   }
 
 
-  const short int Dhcp4Parser::yypact_ninf_ = -722;
+  const short int Dhcp4Parser::yypact_ninf_ = -734;
 
   const signed char Dhcp4Parser::yytable_ninf_ = -1;
 
   const short int
   Dhcp4Parser::yypact_[] =
   {
-     284,  -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,
-    -722,  -722,  -722,  -722,    41,    19,    24,    50,    60,    92,
-     102,   118,   129,   138,   148,   150,   159,   171,  -722,  -722,
-    -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,
-    -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,
-    -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,
-    -722,  -722,  -722,  -722,    19,   -93,     8,    62,    31,   151,
-      -2,   228,   147,   236,    37,   -24,   344,    27,  -722,   184,
-     204,   207,   200,   235,  -722,  -722,  -722,  -722,  -722,   219,
-    -722,    48,  -722,  -722,  -722,  -722,  -722,  -722,  -722,   227,
-     241,  -722,  -722,  -722,  -722,  -722,   244,   261,   276,   279,
-    -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,
-     283,  -722,  -722,  -722,    56,  -722,  -722,  -722,  -722,  -722,
-    -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,
-    -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,
-    -722,  -722,  -722,  -722,   285,  -722,    69,  -722,  -722,  -722,
-    -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,
-    -722,   301,   302,  -722,  -722,  -722,  -722,  -722,  -722,  -722,
-    -722,  -722,    95,  -722,  -722,  -722,  -722,  -722,  -722,  -722,
-    -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,
-    -722,  -722,  -722,  -722,  -722,  -722,  -722,   136,  -722,  -722,
-    -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,
-    -722,  -722,  -722,  -722,   231,   255,  -722,  -722,  -722,  -722,
-    -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,   299,  -722,
-    -722,   314,  -722,  -722,  -722,   315,  -722,  -722,   325,   332,
-    -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,
-    -722,  -722,  -722,   334,   336,  -722,  -722,  -722,  -722,   328,
-     339,  -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,
-    -722,  -722,  -722,   140,  -722,  -722,  -722,   341,  -722,  -722,
-     343,  -722,   350,   351,  -722,  -722,   352,   353,   355,  -722,
-    -722,  -722,  -722,  -722,   144,  -722,  -722,  -722,  -722,  -722,
-    -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,
-    -722,   146,  -722,  -722,  -722,    19,    19,  -722,   216,   363,
-     367,   370,   371,   375,  -722,     8,  -722,   377,   197,   234,
-     383,   384,   390,   391,   406,   221,   262,   263,   264,   410,
-     411,   412,   413,   428,   429,   430,   431,   432,   433,   289,
-     435,   436,    62,  -722,   437,   438,   439,   293,    31,  -722,
-     441,   442,   457,   458,   460,   461,   462,   318,   317,   465,
-     468,   470,   471,   151,  -722,   472,    -2,  -722,   475,   476,
-     477,   479,   480,   482,   483,   484,  -722,   228,  -722,   485,
-     489,   345,   491,   492,   493,   347,  -722,   236,   495,   349,
-     356,  -722,    37,   497,   500,    -9,  -722,   357,   502,   505,
-     361,   507,   364,   368,   508,   511,   365,   369,   373,   514,
-     515,   344,  -722,   517,    27,  -722,  -722,  -722,   521,   519,
-     520,    19,    19,    19,  -722,   522,  -722,  -722,   380,   382,
-     385,   524,   525,  -722,  -722,  -722,  -722,   529,   530,   531,
-     532,   533,   393,   534,   537,   538,   539,  -722,   540,   541,
-    -722,   544,    96,   170,  -722,  -722,   396,   397,   402,   546,
-     404,   405,   407,  -722,  -722,   254,   408,   549,   550,  -722,
-     414,  -722,   544,   415,   416,   417,   418,   419,   420,   421,
-    -722,   422,   423,  -722,   424,   425,   426,  -722,  -722,   427,
-    -722,  -722,  -722,   434,    19,  -722,  -722,   440,   443,  -722,
-     444,  -722,  -722,    15,   459,  -722,  -722,  -722,   135,   445,
-    -722,   553,  -722,    19,    62,    27,  -722,  -722,  -722,    31,
-    -722,  -722,  -722,   366,   366,   552,   554,   569,   571,  -722,
-    -722,  -722,   101,   572,   573,    25,    14,   344,  -722,  -722,
-    -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,   574,
-    -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,   576,   451,
-    -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,
-    -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,
-    -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,
-    -722,   577,  -722,   155,   193,   206,  -722,  -722,  -722,  -722,
-     556,   581,   582,   583,   585,  -722,  -722,  -722,   224,  -722,
-    -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,
-    -722,  -722,   232,  -722,   584,   591,  -722,  -722,   589,   593,
-    -722,  -722,   592,   594,  -722,  -722,   595,   596,  -722,  -722,
-    -722,  -722,  -722,  -722,    26,  -722,  -722,  -722,  -722,  -722,
-    -722,  -722,    68,  -722,  -722,   597,   599,  -722,   600,   601,
-     602,   603,   604,   605,   233,  -722,  -722,  -722,  -722,  -722,
-    -722,  -722,  -722,  -722,  -722,  -722,  -722,   256,  -722,  -722,
-    -722,   258,   452,  -722,   606,   607,  -722,  -722,   608,   610,
-    -722,  -722,   609,  -722,    94,  -722,  -722,  -722,  -722,   611,
-     612,   614,   615,   473,   469,   474,   478,   481,   617,   620,
-     366,  -722,  -722,   151,  -722,   552,   236,  -722,   554,    37,
-    -722,   569,   182,  -722,   571,   101,  -722,   220,   572,  -722,
-     -24,  -722,   573,   486,   487,   488,   490,   494,   496,    25,
-    -722,   621,   622,    14,  -722,  -722,  -722,   625,   624,    -2,
-    -722,   574,   228,  -722,   576,   628,  -722,    64,   577,  -722,
-     294,   463,   498,   499,  -722,  -722,  -722,  -722,  -722,   501,
-     503,  -722,   259,  -722,   626,  -722,   630,  -722,  -722,  -722,
-    -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,   270,  -722,
-    -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,
-    -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,   632,
-     638,  -722,  -722,  -722,  -722,   273,  -722,  -722,  -722,  -722,
-    -722,  -722,  -722,  -722,   504,   506,  -722,  -722,   510,   274,
-    -722,   634,  -722,   512,  -722,   629,  -722,  -722,  -722,  -722,
-    -722,   295,  -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,
-    -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,
-     182,  -722,   640,  -722,   220,  -722,  -722,  -722,  -722,  -722,
-    -722,  -722,   644,   513,   646,    64,  -722,  -722,   527,  -722,
-     623,  -722,   535,  -722,  -722,   648,  -722,  -722,   174,  -722,
-       4,   648,  -722,  -722,   649,   652,   655,   313,  -722,  -722,
-    -722,  -722,  -722,  -722,   657,   543,   516,   523,     4,  -722,
-     542,  -722,  -722,  -722,  -722,  -722
+     285,  -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,
+    -734,  -734,  -734,  -734,    41,    19,    42,    44,    48,    56,
+      82,   100,   112,   121,   129,   143,   163,   185,  -734,  -734,
+    -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,
+    -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,
+    -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,
+    -734,  -734,  -734,  -734,    19,    14,     8,    62,    31,   155,
+       9,   332,   157,     3,    45,   -37,   334,    85,  -734,   192,
+     230,   237,   262,   270,  -734,  -734,  -734,  -734,  -734,   279,
+    -734,    71,  -734,  -734,  -734,  -734,  -734,  -734,  -734,   280,
+     308,  -734,  -734,  -734,  -734,  -734,   309,   311,   312,   314,
+    -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,
+     315,  -734,  -734,  -734,    87,  -734,  -734,  -734,  -734,  -734,
+    -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,
+    -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,
+    -734,  -734,  -734,  -734,   321,  -734,   126,  -734,  -734,  -734,
+    -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,
+    -734,   322,   323,  -734,  -734,  -734,  -734,  -734,  -734,  -734,
+    -734,  -734,   144,  -734,  -734,  -734,  -734,  -734,  -734,  -734,
+    -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,
+    -734,  -734,  -734,  -734,  -734,  -734,  -734,   150,  -734,  -734,
+    -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,
+    -734,  -734,  -734,  -734,   320,   327,  -734,  -734,  -734,  -734,
+    -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,   325,  -734,
+    -734,   331,  -734,  -734,  -734,   336,  -734,  -734,   328,   335,
+    -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,
+    -734,  -734,  -734,   338,   341,  -734,  -734,  -734,  -734,   339,
+     354,  -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,
+    -734,  -734,  -734,   159,  -734,  -734,  -734,   355,  -734,  -734,
+     360,  -734,   363,   364,  -734,  -734,   366,   367,   370,  -734,
+    -734,  -734,  -734,  -734,   191,  -734,  -734,  -734,  -734,  -734,
+    -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,
+    -734,   197,  -734,  -734,  -734,    19,    19,  -734,   223,   372,
+     375,   377,   380,   381,  -734,     8,  -734,   384,   238,   239,
+     391,   394,   395,   400,   401,   253,   256,   257,   261,   404,
+     407,   409,   411,   418,   433,   434,   435,   436,   451,   303,
+     453,   454,    62,  -734,   455,   456,   457,   307,    31,  -734,
+     460,   461,   462,   463,   464,   465,   468,   326,   319,   471,
+     472,   476,   477,   155,  -734,   479,     9,  -734,   483,   484,
+     485,   488,   489,   490,   491,   492,  -734,   332,  -734,   493,
+     494,   346,   496,   497,   500,   351,  -734,     3,   503,   353,
+     356,  -734,    45,   505,   506,   -13,  -734,   357,   509,   510,
+     362,   512,   365,   368,   513,   515,   369,   371,   373,   516,
+     521,   334,  -734,   523,    85,  -734,  -734,  -734,   525,   524,
+     526,    19,    19,    19,  -734,   527,  -734,  -734,   378,   383,
+     385,   529,   531,  -734,  -734,  -734,  -734,   534,   535,   536,
+     537,   538,   392,   541,   542,   543,   544,  -734,   545,   546,
+    -734,   549,   167,   242,  -734,  -734,   397,   398,   403,   551,
+     405,   406,   408,  -734,  -734,    20,   410,   554,   556,  -734,
+     412,  -734,   549,   413,   414,   415,   416,   417,   419,   420,
+    -734,   421,   422,  -734,   423,   424,   425,  -734,  -734,   426,
+    -734,  -734,  -734,   427,    19,  -734,  -734,   428,   429,  -734,
+     430,  -734,  -734,    16,   439,  -734,  -734,  -734,   124,   431,
+    -734,   565,  -734,    19,    62,    85,  -734,  -734,  -734,    31,
+    -734,  -734,  -734,   255,   255,   577,   578,   579,   580,  -734,
+    -734,  -734,   169,   581,   582,    90,    80,   334,  -734,  -734,
+    -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,   583,
+    -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,   584,   441,
+    -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,
+    -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,
+    -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,
+    -734,   585,  -734,   201,   228,   231,  -734,  -734,  -734,  -734,
+     539,   589,   590,   591,   592,  -734,  -734,   593,   594,   595,
+     596,  -734,   232,  -734,  -734,  -734,  -734,  -734,  -734,  -734,
+    -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,
+     254,  -734,   597,   598,  -734,  -734,   599,   601,  -734,  -734,
+     600,   604,  -734,  -734,   602,   606,  -734,  -734,  -734,  -734,
+    -734,  -734,    26,  -734,  -734,  -734,  -734,  -734,  -734,  -734,
+     137,  -734,  -734,   605,   607,  -734,   608,   609,   610,   611,
+     612,   613,   258,  -734,  -734,  -734,  -734,  -734,  -734,  -734,
+    -734,  -734,  -734,  -734,  -734,   260,  -734,  -734,  -734,   269,
+     450,  -734,   614,   615,  -734,  -734,   616,   618,  -734,  -734,
+     617,  -734,   153,  -734,  -734,  -734,  -734,   619,   620,   622,
+     623,   466,   473,   478,   474,   480,   626,   628,   481,   482,
+     486,   487,   255,  -734,  -734,   155,  -734,   577,     3,  -734,
+     578,    45,  -734,   579,   196,  -734,   580,   169,  -734,    70,
+     581,  -734,   -37,  -734,   582,   495,   498,   499,   501,   502,
+     504,    90,  -734,   632,   633,    80,  -734,  -734,  -734,   634,
+     635,     9,  -734,   583,   332,  -734,   584,   637,  -734,    64,
+     585,  -734,   293,   507,   508,   511,  -734,  -734,  -734,  -734,
+    -734,   514,   518,  -734,  -734,  -734,  -734,  -734,   273,  -734,
+     636,  -734,   638,  -734,  -734,  -734,  -734,  -734,  -734,  -734,
+    -734,  -734,  -734,  -734,   277,  -734,  -734,  -734,  -734,  -734,
+    -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,
+    -734,  -734,  -734,  -734,  -734,   639,   640,  -734,  -734,  -734,
+    -734,   298,  -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,
+     519,   520,  -734,  -734,   522,   300,  -734,   641,  -734,   528,
+    -734,   646,  -734,  -734,  -734,  -734,  -734,   301,  -734,  -734,
+    -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,
+    -734,  -734,  -734,  -734,  -734,  -734,   196,  -734,   649,  -734,
+      70,  -734,  -734,  -734,  -734,  -734,  -734,  -734,   652,   548,
+     654,    64,  -734,  -734,   532,  -734,   656,  -734,   540,  -734,
+    -734,   655,  -734,  -734,   209,  -734,   -12,   655,  -734,  -734,
+     660,   661,   663,   302,  -734,  -734,  -734,  -734,  -734,  -734,
+     664,   547,   550,   553,   -12,  -734,   552,  -734,  -734,  -734,
+    -734,  -734
   };
 
   const unsigned short int
@@ -3675,135 +3713,138 @@ 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,    68,     7,   115,     9,   227,    11,   380,    13,
-     404,    15,   305,    17,   313,    19,   350,    21,   192,    23,
-     490,    25,   547,    27,    45,    39,     0,     0,     0,     0,
-       0,   406,     0,   315,   352,     0,     0,     0,    47,     0,
-      46,     0,     0,    40,    66,   545,   539,   541,   543,     0,
+      56,     5,    68,     7,   115,     9,   235,    11,   388,    13,
+     412,    15,   313,    17,   321,    19,   358,    21,   200,    23,
+     498,    25,   555,    27,    45,    39,     0,     0,     0,     0,
+       0,   414,     0,   323,   360,     0,     0,     0,    47,     0,
+      46,     0,     0,    40,    66,   553,   547,   549,   551,     0,
       65,     0,    58,    60,    62,    63,    64,    61,   104,     0,
-       0,   425,   427,   429,   128,   130,     0,     0,     0,     0,
-     219,   303,   342,   276,   392,   394,   170,   451,   184,   203,
-       0,   475,   488,    97,     0,    70,    72,    73,    74,    75,
+       0,   433,   435,   437,   128,   130,     0,     0,     0,     0,
+     227,   311,   350,   284,   400,   402,   178,   459,   192,   211,
+       0,   483,   496,    97,     0,    70,    72,    73,    74,    75,
       90,    91,    78,    79,    80,    81,    85,    86,    76,    77,
       83,    84,    95,    96,    92,    93,    94,    82,    87,    88,
       89,   117,   119,   123,     0,   114,     0,   106,   108,   109,
-     110,   111,   112,   113,   257,   259,   261,   372,   255,   263,
-     265,     0,     0,   269,   267,   396,   447,   254,   231,   232,
-     233,   245,     0,   229,   236,   249,   250,   251,   237,   238,
-     241,   243,   239,   240,   234,   235,   252,   253,   242,   246,
-     247,   248,   244,   390,   389,   386,   385,     0,   382,   384,
-     387,   388,   445,   433,   435,   439,   437,   443,   441,   431,
-     424,   418,   422,   423,     0,   407,   408,   419,   420,   421,
-     415,   410,   416,   412,   413,   414,   417,   411,     0,   332,
-     160,     0,   336,   334,   339,     0,   328,   329,     0,   316,
-     317,   319,   331,   320,   321,   322,   338,   323,   324,   325,
-     326,   327,   366,     0,     0,   364,   365,   368,   369,     0,
-     353,   354,   356,   357,   358,   359,   360,   361,   362,   363,
-     199,   201,   196,     0,   194,   197,   198,     0,   512,   514,
-       0,   517,     0,     0,   521,   525,     0,     0,     0,   530,
-     537,   510,   508,   509,     0,   492,   494,   495,   496,   497,
-     498,   499,   500,   501,   502,   503,   504,   505,   506,   507,
-     552,     0,   549,   551,    44,     0,     0,    37,     0,     0,
+     110,   111,   112,   113,   265,   267,   269,   380,   263,   271,
+     273,     0,     0,   277,   275,   404,   455,   262,   239,   240,
+     241,   253,     0,   237,   244,   257,   258,   259,   245,   246,
+     249,   251,   247,   248,   242,   243,   260,   261,   250,   254,
+     255,   256,   252,   398,   397,   394,   393,     0,   390,   392,
+     395,   396,   453,   441,   443,   447,   445,   451,   449,   439,
+     432,   426,   430,   431,     0,   415,   416,   427,   428,   429,
+     423,   418,   424,   420,   421,   422,   425,   419,     0,   340,
+     164,     0,   344,   342,   347,     0,   336,   337,     0,   324,
+     325,   327,   339,   328,   329,   330,   346,   331,   332,   333,
+     334,   335,   374,     0,     0,   372,   373,   376,   377,     0,
+     361,   362,   364,   365,   366,   367,   368,   369,   370,   371,
+     207,   209,   204,     0,   202,   205,   206,     0,   520,   522,
+       0,   525,     0,     0,   529,   533,     0,     0,     0,   538,
+     545,   518,   516,   517,     0,   500,   502,   503,   504,   505,
+     506,   507,   508,   509,   510,   511,   512,   513,   514,   515,
+     560,     0,   557,   559,    44,     0,     0,    37,     0,     0,
        0,     0,     0,     0,    55,     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,    69,     0,     0,     0,     0,     0,   116,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   228,     0,     0,   381,     0,     0,
-       0,     0,     0,     0,     0,     0,   405,     0,   306,     0,
-       0,     0,     0,     0,     0,     0,   314,     0,     0,     0,
-       0,   351,     0,     0,     0,     0,   193,     0,     0,     0,
+       0,     0,     0,     0,   236,     0,     0,   389,     0,     0,
+       0,     0,     0,     0,     0,     0,   413,     0,   314,     0,
+       0,     0,     0,     0,     0,     0,   322,     0,     0,     0,
+       0,   359,     0,     0,     0,     0,   201,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   491,     0,     0,   548,    48,    41,     0,     0,
+       0,     0,   499,     0,     0,   556,    48,    41,     0,     0,
        0,     0,     0,     0,    59,     0,   102,   103,     0,     0,
        0,     0,     0,    98,    99,   100,   101,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   474,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   482,     0,     0,
       71,     0,     0,     0,   127,   107,     0,     0,     0,     0,
-       0,     0,     0,   274,   275,     0,     0,     0,     0,   230,
-       0,   383,     0,     0,     0,     0,     0,     0,     0,     0,
-     409,     0,     0,   330,     0,     0,     0,   341,   318,     0,
-     370,   371,   355,     0,     0,   195,   511,     0,     0,   516,
-       0,   519,   520,     0,     0,   527,   528,   529,     0,     0,
-     493,     0,   550,     0,     0,     0,   540,   542,   544,     0,
-     426,   428,   430,     0,     0,   221,   307,   344,   278,    38,
-     393,   395,     0,     0,   186,     0,     0,     0,    49,   118,
-     121,   122,   120,   125,   126,   124,   258,   260,   262,   374,
-     256,   264,   266,   271,   272,   273,   270,   268,   398,     0,
-     391,   446,   434,   436,   440,   438,   444,   442,   432,   333,
-     161,   337,   335,   340,   367,   200,   202,   513,   515,   518,
-     523,   524,   522,   526,   532,   533,   534,   535,   536,   531,
-     538,     0,    42,     0,     0,     0,   147,   153,   155,   157,
-       0,     0,     0,     0,     0,   166,   168,   146,     0,   132,
-     134,   135,   136,   137,   138,   139,   140,   141,   142,   143,
-     144,   145,     0,   225,     0,   222,   223,   311,     0,   308,
-     309,   348,     0,   345,   346,   282,     0,   279,   280,   179,
-     180,   181,   182,   183,     0,   172,   174,   175,   176,   177,
-     178,   455,     0,   453,   190,     0,   187,   188,     0,     0,
-       0,     0,     0,     0,     0,   205,   207,   208,   209,   210,
-     211,   212,   484,   486,   483,   481,   482,     0,   477,   479,
-     480,     0,    51,   378,     0,   375,   376,   402,     0,   399,
-     400,   449,     0,   556,     0,   554,    67,   546,   105,     0,
+       0,     0,     0,   282,   283,     0,     0,     0,     0,   238,
+       0,   391,     0,     0,     0,     0,     0,     0,     0,     0,
+     417,     0,     0,   338,     0,     0,     0,   349,   326,     0,
+     378,   379,   363,     0,     0,   203,   519,     0,     0,   524,
+       0,   527,   528,     0,     0,   535,   536,   537,     0,     0,
+     501,     0,   558,     0,     0,     0,   548,   550,   552,     0,
+     434,   436,   438,     0,     0,   229,   315,   352,   286,    38,
+     401,   403,     0,     0,   194,     0,     0,     0,    49,   118,
+     121,   122,   120,   125,   126,   124,   266,   268,   270,   382,
+     264,   272,   274,   279,   280,   281,   278,   276,   406,     0,
+     399,   454,   442,   444,   448,   446,   452,   450,   440,   341,
+     165,   345,   343,   348,   375,   208,   210,   521,   523,   526,
+     531,   532,   530,   534,   540,   541,   542,   543,   544,   539,
+     546,     0,    42,     0,     0,     0,   151,   157,   159,   161,
+       0,     0,     0,     0,     0,   174,   176,     0,     0,     0,
+       0,   150,     0,   132,   134,   135,   136,   137,   138,   139,
+     140,   141,   142,   143,   145,   146,   147,   148,   144,   149,
+       0,   233,     0,   230,   231,   319,     0,   316,   317,   356,
+       0,   353,   354,   290,     0,   287,   288,   187,   188,   189,
+     190,   191,     0,   180,   182,   183,   184,   185,   186,   463,
+       0,   461,   198,     0,   195,   196,     0,     0,     0,     0,
+       0,     0,     0,   213,   215,   216,   217,   218,   219,   220,
+     492,   494,   491,   489,   490,     0,   485,   487,   488,     0,
+      51,   386,     0,   383,   384,   410,     0,   407,   408,   457,
+       0,   564,     0,   562,    67,   554,   105,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   129,   131,     0,   220,     0,   315,   304,     0,   352,
-     343,     0,     0,   277,     0,     0,   171,   457,     0,   452,
-       0,   185,     0,     0,     0,     0,     0,     0,     0,     0,
-     204,     0,     0,     0,   476,   489,    53,     0,    52,     0,
-     373,     0,   406,   397,     0,     0,   448,     0,     0,   553,
-       0,     0,     0,     0,   159,   162,   163,   164,   165,     0,
-       0,   133,     0,   224,     0,   310,     0,   347,   302,   299,
-     289,   290,   292,   286,   287,   288,   298,   297,     0,   284,
-     291,   300,   301,   293,   294,   295,   296,   281,   173,   472,
-     470,   471,   463,   464,   468,   469,   465,   466,   467,     0,
-     458,   459,   461,   462,   454,     0,   189,   213,   214,   215,
-     216,   217,   218,   206,     0,     0,   478,    50,     0,     0,
-     377,     0,   401,     0,   570,     0,   568,   566,   560,   564,
-     565,     0,   558,   562,   563,   561,   555,   149,   150,   151,
-     152,   148,   154,   156,   158,   167,   169,   226,   312,   349,
-       0,   283,     0,   456,     0,   191,   485,   487,    54,   379,
-     403,   450,     0,     0,     0,     0,   557,   285,     0,   460,
-       0,   567,     0,   559,   473,     0,   569,   574,     0,   572,
-       0,     0,   571,   582,     0,     0,     0,     0,   576,   578,
-     579,   580,   581,   573,     0,     0,     0,     0,     0,   575,
-       0,   584,   585,   586,   577,   583
+       0,     0,     0,   129,   131,     0,   228,     0,   323,   312,
+       0,   360,   351,     0,     0,   285,     0,     0,   179,   465,
+       0,   460,     0,   193,     0,     0,     0,     0,     0,     0,
+       0,     0,   212,     0,     0,     0,   484,   497,    53,     0,
+      52,     0,   381,     0,   414,   405,     0,     0,   456,     0,
+       0,   561,     0,     0,     0,     0,   163,   166,   167,   168,
+     169,     0,     0,   170,   171,   172,   173,   133,     0,   232,
+       0,   318,     0,   355,   310,   307,   297,   298,   300,   294,
+     295,   296,   306,   305,     0,   292,   299,   308,   309,   301,
+     302,   303,   304,   289,   181,   480,   478,   479,   471,   472,
+     476,   477,   473,   474,   475,     0,   466,   467,   469,   470,
+     462,     0,   197,   221,   222,   223,   224,   225,   226,   214,
+       0,     0,   486,    50,     0,     0,   385,     0,   409,     0,
+     578,     0,   576,   574,   568,   572,   573,     0,   566,   570,
+     571,   569,   563,   153,   154,   155,   156,   152,   158,   160,
+     162,   175,   177,   234,   320,   357,     0,   291,     0,   464,
+       0,   199,   493,   495,    54,   387,   411,   458,     0,     0,
+       0,     0,   565,   293,     0,   468,     0,   575,     0,   567,
+     481,     0,   577,   582,     0,   580,     0,     0,   579,   590,
+       0,     0,     0,     0,   584,   586,   587,   588,   589,   581,
+       0,     0,     0,     0,     0,   583,     0,   592,   593,   594,
+     585,   591
   };
 
   const short int
   Dhcp4Parser::yypgoto_[] =
   {
-    -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,
-    -722,  -722,  -722,  -722,  -722,   -51,  -722,   202,  -722,  -722,
-    -722,  -722,  -722,  -722,  -722,  -722,   176,  -722,  -722,  -722,
-     -66,  -722,  -722,  -722,   354,  -722,  -722,  -722,  -722,   157,
-     316,   -23,   -21,     0,  -722,  -722,     6,  -722,  -722,   141,
-     324,  -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,
-    -722,  -722,  -722,  -722,  -722,  -722,   154,   -35,  -722,  -722,
-    -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,   -73,  -722,
-    -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,
-    -722,   -45,  -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,
-    -722,   -38,  -722,  -722,  -722,   -43,   305,  -722,  -722,  -722,
-    -722,  -722,  -722,  -722,   -32,  -722,  -722,  -722,  -722,  -722,
-    -722,  -721,  -722,  -722,  -722,    -7,  -722,  -722,  -722,     1,
-     362,  -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,  -715,
-    -722,  -722,  -722,   -25,  -722,  -709,  -722,  -722,  -722,  -722,
-    -722,  -722,  -722,  -722,   -20,  -722,  -722,  -143,   -61,  -722,
-    -722,  -722,  -722,  -722,     2,  -722,  -722,  -722,    11,  -722,
-     342,  -722,   -68,  -722,  -722,  -722,  -722,  -722,   -62,  -722,
-    -722,  -722,  -722,  -722,   -17,  -722,  -722,  -722,     9,  -722,
-    -722,  -722,    12,  -722,   346,  -722,  -722,  -722,  -722,  -722,
-    -722,  -722,  -722,  -722,  -722,  -722,   -18,  -722,  -722,  -722,
-     -15,   374,  -722,  -722,   -54,  -722,   -34,  -722,  -722,  -722,
-    -722,  -722,   -12,  -722,  -722,  -722,   -16,  -722,   360,   -46,
-    -722,   -11,  -722,    -1,  -722,  -722,  -722,  -722,  -722,  -722,
-    -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,
-    -722,  -704,  -722,  -722,  -722,  -722,  -722,  -722,    16,  -722,
-    -722,  -722,  -125,  -722,  -722,  -722,  -722,  -722,  -722,  -722,
-       3,  -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,   208,
-     337,  -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,
-    -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,
-    -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,  -722,
-    -722,  -722,  -722,  -722,   237,   329,  -722,  -722,  -722,    -8,
-    -722,  -722,  -128,  -722,  -722,  -722,  -722,  -722,  -722,  -142,
-    -722,  -722,  -155,  -722,  -722,  -722,  -722,  -722
+    -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,
+    -734,  -734,  -734,  -734,  -734,   -51,  -734,   184,  -734,  -734,
+    -734,  -734,  -734,  -734,  -734,  -734,   181,  -734,  -734,  -734,
+     -66,  -734,  -734,  -734,   340,  -734,  -734,  -734,  -734,   156,
+     333,   -23,   -21,     0,  -734,  -734,     6,  -734,  -734,   138,
+     342,  -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,
+    -734,  -734,  -734,  -734,  -734,  -734,   168,   -55,  -734,  -734,
+    -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,   -73,  -734,
+    -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,
+    -734,  -734,  -734,  -734,  -734,   -50,  -734,  -734,  -734,  -734,
+    -734,  -734,  -734,  -734,  -734,   -45,  -734,  -734,  -734,   -36,
+     317,  -734,  -734,  -734,  -734,  -734,  -734,  -734,   -35,  -734,
+    -734,  -734,  -734,  -734,  -734,  -733,  -734,  -734,  -734,    -8,
+    -734,  -734,  -734,    -5,   374,  -734,  -734,  -734,  -734,  -734,
+    -734,  -734,  -734,  -727,  -734,  -734,  -734,   -25,  -734,  -721,
+    -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,   -10,  -734,
+    -734,  -147,   -61,  -734,  -734,  -734,  -734,  -734,     2,  -734,
+    -734,  -734,    11,  -734,   358,  -734,   -68,  -734,  -734,  -734,
+    -734,  -734,   -62,  -734,  -734,  -734,  -734,  -734,   -17,  -734,
+    -734,  -734,    10,  -734,  -734,  -734,    15,  -734,   349,  -734,
+    -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,
+     -15,  -734,  -734,  -734,   -19,   386,  -734,  -734,   -54,  -734,
+     -34,  -734,  -734,  -734,  -734,  -734,   -16,  -734,  -734,  -734,
+      -9,  -734,   379,   -46,  -734,   -11,  -734,    -1,  -734,  -734,
+    -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,
+    -734,  -734,  -734,  -734,  -734,  -716,  -734,  -734,  -734,  -734,
+    -734,  -734,    17,  -734,  -734,  -734,  -131,  -734,  -734,  -734,
+    -734,  -734,  -734,  -734,    -4,  -734,  -734,  -734,  -734,  -734,
+    -734,  -734,  -734,   217,   347,  -734,  -734,  -734,  -734,  -734,
+    -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,
+    -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,
+    -734,  -734,  -734,  -734,  -734,  -734,  -734,  -734,   244,   348,
+    -734,  -734,  -734,    -6,  -734,  -734,  -130,  -734,  -734,  -734,
+    -734,  -734,  -734,  -142,  -734,  -734,  -164,  -734,  -734,  -734,
+    -734,  -734
   };
 
   const short int
@@ -3811,38 +3852,39 @@ namespace isc { namespace dhcp {
   {
       -1,    14,    15,    16,    17,    18,    19,    20,    21,    22,
       23,    24,    25,    26,    27,    36,    37,    38,    65,   550,
-      82,    83,    39,    64,    79,    80,   559,   702,   767,   768,
+      82,    83,    39,    64,    79,    80,   559,   710,   779,   780,
      123,    41,    66,    91,    92,    93,   329,    43,    67,   124,
      125,   126,   127,   128,   129,   130,   131,   132,   337,   156,
      157,    45,    68,   158,   364,   159,   365,   562,   160,   366,
-     565,   161,   133,   343,   134,   344,   628,   629,   630,   719,
-     871,   631,   720,   632,   721,   633,   722,   634,   247,   400,
-     636,   637,   638,   639,   640,   728,   641,   729,   135,   355,
-     664,   665,   666,   667,   668,   669,   670,   136,   357,   675,
-     676,   677,   750,    59,    75,   283,   284,   285,   413,   286,
-     414,   137,   358,   684,   685,   686,   687,   688,   689,   690,
-     691,   138,   349,   644,   645,   646,   733,    47,    69,   182,
-     183,   184,   374,   185,   370,   186,   371,   187,   372,   188,
-     375,   189,   376,   190,   380,   191,   379,   576,   192,   193,
-     139,   352,   656,   657,   658,   742,   808,   809,   140,   350,
-      53,    72,   648,   649,   650,   736,    55,    73,   248,   249,
-     250,   251,   252,   253,   254,   399,   255,   403,   256,   402,
-     257,   258,   404,   259,   141,   351,   652,   653,   654,   739,
-      57,    74,   269,   270,   271,   272,   273,   408,   274,   275,
-     276,   277,   195,   373,   704,   705,   706,   769,    49,    70,
-     207,   208,   209,   385,   142,   353,   143,   354,   198,   381,
-     708,   709,   710,   772,    51,    71,   224,   225,   226,   144,
-     340,   145,   341,   146,   342,   230,   395,   231,   389,   232,
-     390,   233,   392,   234,   391,   235,   394,   236,   393,   237,
-     388,   202,   382,   712,   775,   147,   356,   672,   673,   747,
-     829,   830,   831,   832,   833,   882,   148,   149,   360,   697,
-     698,   699,   761,   700,   762,   150,   361,    61,    76,   304,
-     305,   306,   307,   418,   308,   419,   309,   310,   421,   311,
-     312,   313,   424,   602,   314,   425,   315,   316,   317,   318,
-     429,   609,   319,   430,    94,   331,    95,   332,    96,   333,
-      97,   330,    63,    77,   321,   322,   323,   433,   714,   715,
-     777,   861,   862,   863,   864,   894,   865,   892,   908,   909,
-     910,   917,   918,   919,   924,   920,   921,   922
+     565,   161,   133,   343,   134,   344,   632,   633,   634,   727,
+     887,   635,   728,   636,   729,   637,   730,   638,   247,   400,
+     640,   641,   642,   643,   644,   645,   646,   647,   648,   736,
+     649,   737,   135,   355,   672,   673,   674,   675,   676,   677,
+     678,   136,   357,   683,   684,   685,   762,    59,    75,   283,
+     284,   285,   413,   286,   414,   137,   358,   692,   693,   694,
+     695,   696,   697,   698,   699,   138,   349,   652,   653,   654,
+     745,    47,    69,   182,   183,   184,   374,   185,   370,   186,
+     371,   187,   372,   188,   375,   189,   376,   190,   380,   191,
+     379,   576,   192,   193,   139,   352,   664,   665,   666,   754,
+     824,   825,   140,   350,    53,    72,   656,   657,   658,   748,
+      55,    73,   248,   249,   250,   251,   252,   253,   254,   399,
+     255,   403,   256,   402,   257,   258,   404,   259,   141,   351,
+     660,   661,   662,   751,    57,    74,   269,   270,   271,   272,
+     273,   408,   274,   275,   276,   277,   195,   373,   712,   713,
+     714,   781,    49,    70,   207,   208,   209,   385,   142,   353,
+     143,   354,   198,   381,   716,   717,   718,   784,    51,    71,
+     224,   225,   226,   144,   340,   145,   341,   146,   342,   230,
+     395,   231,   389,   232,   390,   233,   392,   234,   391,   235,
+     394,   236,   393,   237,   388,   202,   382,   720,   787,   147,
+     356,   680,   681,   759,   845,   846,   847,   848,   849,   898,
+     148,   149,   360,   705,   706,   707,   773,   708,   774,   150,
+     361,    61,    76,   304,   305,   306,   307,   418,   308,   419,
+     309,   310,   421,   311,   312,   313,   424,   602,   314,   425,
+     315,   316,   317,   318,   429,   609,   319,   430,    94,   331,
+      95,   332,    96,   333,    97,   330,    63,    77,   321,   322,
+     323,   433,   722,   723,   789,   877,   878,   879,   880,   910,
+     881,   908,   924,   925,   926,   933,   934,   935,   940,   936,
+     937,   938
   };
 
   const unsigned short int
@@ -3850,93 +3892,95 @@ namespace isc { namespace dhcp {
   {
       90,   266,   155,   177,   204,   220,   267,   246,   265,   282,
      301,   238,   268,    78,   162,   196,   210,   222,    84,   260,
-     278,   804,   302,   199,    29,   227,    30,   805,    31,   745,
-     600,    40,   746,   807,   163,   197,   211,   223,   816,   261,
-     279,    28,   303,   151,   152,   205,   178,   153,   179,   112,
-     154,   335,   194,   206,   221,    81,   336,    42,   200,   362,
-     228,   203,   114,   115,   363,   280,   281,    44,   201,   180,
-     229,   748,   368,    98,   749,   181,   174,   369,   114,   115,
-     280,   281,    99,   100,   101,   102,   103,   104,   105,   240,
-     262,   241,   242,   263,   264,   114,   115,   778,   383,    46,
-     779,   114,   115,   384,   106,   107,   108,   109,   110,    48,
-     560,   561,   111,   112,   692,   693,   240,   678,   679,   680,
-     681,   682,   683,   113,    89,    50,   114,   115,   114,   115,
-     913,    85,   601,   914,   915,   916,    52,   116,   117,   386,
-      86,    87,    88,   415,   387,    54,    89,   431,   416,   434,
-     118,   320,   432,   119,   435,    56,    89,    58,   362,   804,
-     120,   121,    89,   716,   122,   805,    60,    32,    33,    34,
-      35,   807,   100,   101,   102,   103,   816,   911,    62,    89,
-     912,   659,   660,   661,   662,    89,   663,   563,   564,   854,
-     324,   855,   856,   106,   107,   108,   434,   111,   164,   165,
-     166,   717,   112,   100,   101,   102,   103,   325,   327,   368,
-      89,   326,    89,   167,   718,   114,   115,   168,   169,   170,
-     171,   172,   173,   334,   106,   107,   108,   730,   110,   174,
-     175,   338,   731,   112,   240,   730,   759,   176,   328,   396,
-     732,   760,   101,   102,   103,   339,   114,   115,   345,   169,
-     101,   102,   103,   173,   604,   605,   606,   607,   397,   763,
-     174,   431,   383,   239,   764,   346,   765,   877,   176,    90,
-     111,   112,   240,   880,   436,   437,   415,   386,   881,   112,
-     347,   885,   889,   348,   114,   115,   608,   359,   240,   367,
-     241,   242,   114,   115,   243,   244,   245,   819,   895,    89,
-     114,   115,   155,   896,   212,   377,   378,   398,   213,   214,
-     215,   216,   217,   218,   162,   219,   928,   177,   401,   405,
-     204,   929,   867,   868,   869,   870,   573,   574,   575,   196,
-      89,   220,   210,   406,   163,   407,   411,   199,   409,   266,
-     410,   246,   412,   222,   267,   417,   265,   420,   446,   197,
-     268,   227,   211,   260,   422,   423,   426,   427,   278,   428,
-     178,   205,   179,   223,   438,   301,   194,   439,    89,   206,
-     453,   440,   200,   261,   441,   442,    89,   302,   279,   443,
-     221,   445,   201,   180,    89,   447,   228,   448,   449,   181,
-     536,   537,   538,   616,   450,   451,   229,   303,   617,   618,
-     619,   620,   621,   622,   623,   624,   625,   626,   114,   115,
-     452,   454,   455,   456,   457,   458,   459,   460,   240,     1,
-       2,     3,     4,     5,     6,     7,     8,     9,    10,    11,
-      12,    13,   461,   462,   463,   464,   465,   466,   467,   468,
-     469,   471,   472,   473,   474,   476,   477,   287,   288,   289,
-     290,   291,   292,   293,   294,   295,   296,   297,   298,   299,
-     300,   478,   479,   596,   480,   481,   482,   483,   484,   485,
-     635,   635,   486,   155,   487,   488,   490,   627,   627,   492,
-     493,   494,   612,   495,   496,   162,   497,   498,   499,   501,
-     694,   301,    89,   502,   503,   504,   505,   506,   507,   509,
-     510,   513,   695,   302,   514,   163,   517,   511,   516,   518,
-     519,   520,   523,   521,    89,   524,   525,   522,   528,   529,
-     526,   531,   696,   303,   527,   533,   534,   535,   540,   539,
-     541,   543,   544,   542,   545,   546,   547,   548,   711,   552,
-      30,   551,   553,   554,   566,   567,   555,   556,   557,   558,
-     568,   569,   570,   571,   578,   572,   577,   579,   611,   643,
-     723,   647,   580,   582,   583,   584,   585,   586,   587,   588,
-     589,   590,   591,   592,   593,   594,   651,   603,   655,   671,
-     674,   703,   595,   707,   713,   724,   725,   726,   597,   727,
-     734,   598,   599,   610,   735,   737,   738,   741,   740,   744,
-     766,   743,   752,   751,   753,   754,   755,   756,   757,   758,
-     771,   872,   770,   774,   773,   780,   781,   776,   782,   783,
-     785,   789,   784,   786,   790,   844,   845,   848,   905,   787,
-     788,   847,   853,   893,   878,   837,   838,   839,   879,   840,
-     883,   884,   890,   841,   898,   842,   873,   874,   900,   875,
-     902,   876,   886,   925,   887,   907,   926,   635,   888,   927,
-     891,   930,   901,   549,   627,   932,   266,   177,   581,   803,
-     246,   267,   933,   265,   821,   904,   798,   268,   470,   196,
-     615,   820,   260,   906,   282,   278,   822,   199,   811,   444,
-     935,   613,   475,   824,   931,   791,   813,   694,   642,   197,
-     818,   826,   261,   204,   858,   279,   220,   835,   812,   695,
-     178,   857,   179,   825,   836,   210,   194,   806,   222,   799,
-     515,   800,   200,   859,   817,   810,   227,   843,   793,   696,
-     823,   814,   201,   180,   792,   211,   827,   897,   223,   181,
-     795,   815,   801,   860,   205,   489,   828,   794,   802,   508,
-     797,   796,   206,   850,   849,   221,   851,   500,   512,   899,
-     491,   228,   852,   532,   834,   701,   846,   903,   530,   923,
-     866,   229,   614,   934,     0,     0,     0,     0,     0,     0,
+     278,   820,   302,   199,    29,   227,    30,   821,    31,   757,
+     239,   600,   758,   823,   163,   197,   211,   223,   832,   261,
+     279,    28,   303,   151,   152,   205,   178,   153,   179,    40,
+     154,    42,   194,   206,   221,    44,   280,   281,   200,   240,
+     228,   241,   242,    46,   112,   243,   244,   245,   201,   180,
+     229,   114,   115,    98,   335,   181,   203,   114,   115,   336,
+     280,   281,    99,   100,   101,   102,   103,   104,   105,    48,
+     362,   174,   101,   102,   103,   363,   573,   574,   575,   114,
+     115,   240,   262,   241,   242,   263,   264,    50,   106,   107,
+     108,   109,   110,   114,   115,    89,   111,   112,   929,    52,
+     240,   930,   931,   932,   111,   112,   240,   113,    54,   368,
+     114,   115,   114,   115,   369,    85,    56,   601,   114,   115,
+     760,   116,   117,   761,    86,    87,    88,   383,   114,   115,
+      58,   835,   384,   386,   118,    89,   790,   119,   387,   791,
+      89,    89,   415,   820,   120,   121,    81,   416,   122,   821,
+      60,    32,    33,    34,    35,   823,   100,   101,   102,   103,
+     832,   560,   561,    89,   700,   701,   686,   687,   688,   689,
+     690,   691,    62,   870,   431,   871,   872,    89,   324,   432,
+     434,   106,   107,   108,   362,   435,   164,   165,   166,   724,
+     112,   111,   927,   320,    89,   928,    89,   100,   101,   102,
+     103,   167,    89,   114,   115,   168,   169,   170,   171,   172,
+     173,   434,    89,   325,   368,   742,   725,   174,   175,   726,
+     743,   326,   106,   107,   108,   176,   110,   604,   605,   606,
+     607,   112,   240,   667,   668,   669,   670,   742,   671,   563,
+     564,   771,   744,   775,   114,   115,   772,   169,   776,    90,
+     327,   173,   431,   328,   436,   437,   383,   777,   174,   608,
+     896,   893,   616,   334,   338,   897,   176,   617,   618,   619,
+     620,   621,   622,   623,   624,   625,   626,   627,   628,   629,
+     630,   415,   155,   386,   911,   944,   901,    89,   905,   912,
+     945,   240,   339,   345,   162,   346,   347,   177,   348,   359,
+     204,   883,   884,   885,   886,   367,   377,   378,   396,   196,
+     397,   220,   210,   398,   163,   401,   406,   199,   407,   266,
+     405,   246,   409,   222,   267,   410,   265,   411,    89,   197,
+     268,   227,   211,   260,   101,   102,   103,   412,   278,   417,
+     178,   205,   179,   223,   420,   301,   194,   422,   423,   206,
+     426,   427,   200,   261,   428,   438,   439,   302,   279,   440,
+     221,   441,   201,   180,   442,   443,   228,   112,   445,   181,
+     536,   537,   538,   446,   447,   448,   229,   303,   449,   450,
+     114,   115,   114,   115,   451,   452,   453,    89,   457,   454,
+     455,   458,   212,   459,   456,   460,   213,   214,   215,   216,
+     217,   218,   461,   219,     1,     2,     3,     4,     5,     6,
+       7,     8,     9,    10,    11,    12,    13,   462,   463,   464,
+     465,   287,   288,   289,   290,   291,   292,   293,   294,   295,
+     296,   297,   298,   299,   300,   466,   467,   468,   469,   471,
+     472,   473,   474,   596,   476,   477,   478,   479,   480,   481,
+     639,   639,   482,   155,   484,   485,   486,   631,   631,   483,
+     487,   488,   612,   490,    89,   162,    89,   492,   493,   494,
+     702,   301,   495,   496,   497,   498,   499,   501,   502,   503,
+     504,   505,   703,   302,   506,   163,   507,   509,   510,   513,
+     514,   511,   516,   517,   518,   519,   520,   523,   521,   524,
+     528,   522,   704,   303,   525,   529,   526,   531,   527,   533,
+     540,   534,   719,   535,   539,   541,   543,   542,   544,   545,
+     546,   547,   548,   731,   551,    30,   552,   553,   554,   566,
+     567,   555,   556,   557,   558,   568,   569,   570,   571,   578,
+     572,   603,   577,   579,   580,   582,   583,   584,   585,   586,
+     611,   587,   588,   589,   590,   591,   592,   593,   594,   595,
+     597,   598,   599,   610,   651,   655,   659,   663,   679,   682,
+     711,   715,   721,   732,   733,   734,   735,   738,   739,   740,
+     741,   747,   778,   746,   750,   749,   752,   753,   755,   756,
+     764,   763,   765,   766,   767,   768,   769,   770,   783,   796,
+     782,   786,   785,   792,   793,   788,   794,   795,   797,   799,
+     801,   798,   802,   800,   803,   804,   860,   861,   864,   805,
+     863,   869,   806,   900,   894,   549,   895,   899,   853,   906,
+     909,   854,   855,   914,   856,   857,   916,   858,   918,   888,
+     889,   921,   923,   890,   941,   942,   891,   943,   946,   639,
+     892,   902,   903,   581,   904,   444,   631,   615,   266,   177,
+     907,   819,   246,   267,   920,   265,   837,   807,   814,   268,
+     613,   196,   922,   836,   260,   470,   282,   278,   838,   199,
+     827,   917,   947,   948,   951,   840,   949,   834,   829,   702,
+     475,   197,   650,   842,   261,   204,   874,   279,   220,   852,
+     828,   703,   178,   873,   179,   841,   851,   210,   194,   822,
+     222,   815,   515,   816,   200,   875,   859,   826,   227,   809,
+     808,   704,   839,   830,   201,   180,   833,   211,   843,   913,
+     223,   181,   811,   831,   817,   876,   205,   489,   844,   810,
+     818,   512,   865,   813,   206,   508,   812,   221,   866,   915,
+     868,   862,   491,   228,   709,   867,   500,   850,   530,   614,
+     950,   919,   532,   229,   882,   939,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   803,     0,     0,
-       0,   821,     0,     0,   798,     0,     0,     0,   820,     0,
-       0,     0,   858,   822,     0,     0,   811,     0,     0,   857,
-     824,     0,     0,     0,   813,     0,     0,     0,   826,     0,
-       0,   859,     0,     0,     0,     0,   812,     0,     0,     0,
-     825,     0,     0,     0,     0,   806,     0,   799,     0,   800,
-       0,   860,     0,   810,     0,     0,     0,   823,     0,   814,
-       0,     0,     0,   827,     0,     0,     0,     0,     0,   815,
-     801,     0,     0,   828,     0,     0,   802
+       0,     0,     0,   819,     0,     0,     0,   837,     0,     0,
+     814,     0,     0,     0,   836,     0,     0,     0,   874,   838,
+       0,     0,   827,     0,     0,   873,   840,     0,     0,     0,
+     829,     0,     0,     0,   842,     0,     0,   875,     0,     0,
+       0,     0,   828,     0,     0,     0,   841,     0,     0,     0,
+       0,   822,     0,   815,     0,   816,     0,   876,     0,   826,
+       0,     0,     0,   839,     0,   830,     0,     0,     0,   843,
+       0,     0,     0,     0,     0,   831,   817,     0,     0,   844,
+       0,     0,   818
   };
 
   const short int
@@ -3944,256 +3988,261 @@ namespace isc { namespace dhcp {
   {
       66,    74,    68,    69,    70,    71,    74,    73,    74,    75,
       76,    72,    74,    64,    68,    69,    70,    71,    10,    73,
-      74,   742,    76,    69,     5,    71,     7,   742,     9,     3,
-      15,     7,     6,   742,    68,    69,    70,    71,   742,    73,
-      74,     0,    76,    12,    13,    70,    69,    16,    69,    51,
-      19,     3,    69,    70,    71,   148,     8,     7,    69,     3,
-      71,    63,    64,    65,     8,    89,    90,     7,    69,    69,
-      71,     3,     3,    11,     6,    69,    78,     8,    64,    65,
-      89,    90,    20,    21,    22,    23,    24,    25,    26,    52,
-      53,    54,    55,    56,    57,    64,    65,     3,     3,     7,
-       6,    64,    65,     8,    42,    43,    44,    45,    46,     7,
-      14,    15,    50,    51,   100,   101,    52,    92,    93,    94,
-      95,    96,    97,    61,   148,     7,    64,    65,    64,    65,
-     126,   123,   117,   129,   130,   131,     7,    75,    76,     3,
-     132,   133,   134,     3,     8,     7,   148,     3,     8,     3,
-      88,   124,     8,    91,     8,     7,   148,     7,     3,   880,
-      98,    99,   148,     8,   102,   880,     7,   148,   149,   150,
-     151,   880,    21,    22,    23,    24,   880,     3,     7,   148,
-       6,    80,    81,    82,    83,   148,    85,    17,    18,   125,
-       6,   127,   128,    42,    43,    44,     3,    50,    47,    48,
-      49,     8,    51,    21,    22,    23,    24,     3,     8,     3,
-     148,     4,   148,    62,     8,    64,    65,    66,    67,    68,
-      69,    70,    71,     4,    42,    43,    44,     3,    46,    78,
-      79,     4,     8,    51,    52,     3,     3,    86,     3,     8,
-       8,     8,    22,    23,    24,     4,    64,    65,     4,    67,
-      22,    23,    24,    71,   119,   120,   121,   122,     3,     3,
-      78,     3,     3,    27,     8,     4,     8,     8,    86,   335,
-      50,    51,    52,     3,   325,   326,     3,     3,     8,    51,
-       4,     8,     8,     4,    64,    65,   151,     4,    52,     4,
-      54,    55,    64,    65,    58,    59,    60,    77,     3,   148,
-      64,    65,   368,     8,    76,     4,     4,     8,    80,    81,
-      82,    83,    84,    85,   368,    87,     3,   383,     4,     4,
-     386,     8,    28,    29,    30,    31,    72,    73,    74,   383,
-     148,   397,   386,     8,   368,     3,     8,   383,     4,   412,
-       4,   407,     3,   397,   412,     4,   412,     4,   151,   383,
-     412,   397,   386,   407,     4,     4,     4,     4,   412,     4,
-     383,   386,   383,   397,   148,   431,   383,     4,   148,   386,
-     149,     4,   383,   407,     4,     4,   148,   431,   412,     4,
-     397,     4,   383,   383,   148,   151,   397,     4,     4,   383,
-     441,   442,   443,    27,     4,     4,   397,   431,    32,    33,
-      34,    35,    36,    37,    38,    39,    40,    41,    64,    65,
-       4,   149,   149,   149,     4,     4,     4,     4,    52,   135,
-     136,   137,   138,   139,   140,   141,   142,   143,   144,   145,
-     146,   147,     4,     4,     4,     4,     4,     4,   149,     4,
-       4,     4,     4,     4,   151,     4,     4,   103,   104,   105,
-     106,   107,   108,   109,   110,   111,   112,   113,   114,   115,
-     116,     4,     4,   514,     4,     4,     4,   149,   151,     4,
-     543,   544,     4,   539,     4,     4,     4,   543,   544,     4,
-       4,     4,   533,     4,     4,   539,     4,     4,     4,     4,
-     556,   557,   148,     4,   149,     4,     4,     4,   151,     4,
-     151,     4,   556,   557,     4,   539,     4,   151,   151,     4,
-     149,     4,     4,   149,   148,     4,   151,   149,     4,     4,
-     151,     4,   556,   557,   151,     4,     7,     7,   148,     7,
-     148,     7,     7,   148,     5,     5,     5,     5,    87,     5,
-       7,   148,     5,     5,   148,   148,     7,     7,     7,     5,
-     148,     5,   148,   148,     5,   148,   148,     7,     5,     7,
-       4,     7,   148,   148,   148,   148,   148,   148,   148,   148,
-     148,   148,   148,   148,   148,   148,     7,   118,     7,     7,
-       7,     7,   148,     7,     7,     4,     4,     4,   148,     4,
-       6,   148,   148,   148,     3,     6,     3,     3,     6,     3,
-     148,     6,     3,     6,     4,     4,     4,     4,     4,     4,
-       3,   148,     6,     3,     6,     4,     4,     8,     4,     4,
-     151,     4,   149,   149,     4,     4,     4,     3,     5,   151,
-     149,     6,     4,     4,     8,   149,   149,   149,     8,   149,
-       8,     3,     8,   149,     4,   149,   148,   148,     4,   148,
-       4,   148,   148,     4,   148,     7,     4,   730,   148,     4,
-     148,     4,   149,   461,   730,   149,   739,   733,   492,   742,
-     736,   739,   149,   739,   747,   148,   742,   739,   362,   733,
-     539,   747,   736,   148,   750,   739,   747,   733,   742,   335,
-     148,   534,   368,   747,   151,   730,   742,   763,   544,   733,
-     745,   747,   736,   769,   777,   739,   772,   750,   742,   763,
-     733,   777,   733,   747,   752,   769,   733,   742,   772,   742,
-     415,   742,   733,   777,   744,   742,   772,   759,   735,   763,
-     747,   742,   733,   733,   733,   769,   747,   880,   772,   733,
-     738,   742,   742,   777,   769,   383,   747,   736,   742,   407,
-     741,   739,   769,   771,   769,   772,   772,   397,   412,   884,
-     386,   772,   774,   434,   748,   557,   763,   895,   431,   911,
-     778,   772,   535,   928,    -1,    -1,    -1,    -1,    -1,    -1,
+      74,   754,    76,    69,     5,    71,     7,   754,     9,     3,
+      27,    15,     6,   754,    68,    69,    70,    71,   754,    73,
+      74,     0,    76,    12,    13,    70,    69,    16,    69,     7,
+      19,     7,    69,    70,    71,     7,    93,    94,    69,    56,
+      71,    58,    59,     7,    55,    62,    63,    64,    69,    69,
+      71,    68,    69,    11,     3,    69,    67,    68,    69,     8,
+      93,    94,    20,    21,    22,    23,    24,    25,    26,     7,
+       3,    82,    22,    23,    24,     8,    76,    77,    78,    68,
+      69,    56,    57,    58,    59,    60,    61,     7,    46,    47,
+      48,    49,    50,    68,    69,   152,    54,    55,   130,     7,
+      56,   133,   134,   135,    54,    55,    56,    65,     7,     3,
+      68,    69,    68,    69,     8,   127,     7,   121,    68,    69,
+       3,    79,    80,     6,   136,   137,   138,     3,    68,    69,
+       7,    81,     8,     3,    92,   152,     3,    95,     8,     6,
+     152,   152,     3,   896,   102,   103,   152,     8,   106,   896,
+       7,   152,   153,   154,   155,   896,    21,    22,    23,    24,
+     896,    14,    15,   152,   104,   105,    96,    97,    98,    99,
+     100,   101,     7,   129,     3,   131,   132,   152,     6,     8,
+       3,    46,    47,    48,     3,     8,    51,    52,    53,     8,
+      55,    54,     3,   128,   152,     6,   152,    21,    22,    23,
+      24,    66,   152,    68,    69,    70,    71,    72,    73,    74,
+      75,     3,   152,     3,     3,     3,     8,    82,    83,     8,
+       8,     4,    46,    47,    48,    90,    50,   123,   124,   125,
+     126,    55,    56,    84,    85,    86,    87,     3,    89,    17,
+      18,     3,     8,     3,    68,    69,     8,    71,     8,   335,
+       8,    75,     3,     3,   325,   326,     3,     8,    82,   155,
+       3,     8,    27,     4,     4,     8,    90,    32,    33,    34,
+      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
+      45,     3,   368,     3,     3,     3,     8,   152,     8,     8,
+       8,    56,     4,     4,   368,     4,     4,   383,     4,     4,
+     386,    28,    29,    30,    31,     4,     4,     4,     8,   383,
+       3,   397,   386,     8,   368,     4,     8,   383,     3,   412,
+       4,   407,     4,   397,   412,     4,   412,     8,   152,   383,
+     412,   397,   386,   407,    22,    23,    24,     3,   412,     4,
+     383,   386,   383,   397,     4,   431,   383,     4,     4,   386,
+       4,     4,   383,   407,     4,   152,     4,   431,   412,     4,
+     397,     4,   383,   383,     4,     4,   397,    55,     4,   383,
+     441,   442,   443,   155,   155,     4,   397,   431,     4,     4,
+      68,    69,    68,    69,     4,     4,   153,   152,     4,   153,
+     153,     4,    80,     4,   153,     4,    84,    85,    86,    87,
+      88,    89,     4,    91,   139,   140,   141,   142,   143,   144,
+     145,   146,   147,   148,   149,   150,   151,     4,     4,     4,
+       4,   107,   108,   109,   110,   111,   112,   113,   114,   115,
+     116,   117,   118,   119,   120,     4,   153,     4,     4,     4,
+       4,     4,   155,   514,     4,     4,     4,     4,     4,     4,
+     543,   544,     4,   539,   155,     4,     4,   543,   544,   153,
+       4,     4,   533,     4,   152,   539,   152,     4,     4,     4,
+     556,   557,     4,     4,     4,     4,     4,     4,     4,   153,
+       4,     4,   556,   557,     4,   539,   155,     4,   155,     4,
+       4,   155,   155,     4,     4,   153,     4,     4,   153,     4,
+       4,   153,   556,   557,   155,     4,   155,     4,   155,     4,
+     152,     7,    91,     7,     7,   152,     7,   152,     7,     5,
+       5,     5,     5,     4,   152,     7,     5,     5,     5,   152,
+     152,     7,     7,     7,     5,   152,     5,   152,   152,     5,
+     152,   122,   152,     7,   152,   152,   152,   152,   152,   152,
+       5,   152,   152,   152,   152,   152,   152,   152,   152,   152,
+     152,   152,   152,   152,     7,     7,     7,     7,     7,     7,
+       7,     7,     7,     4,     4,     4,     4,     4,     4,     4,
+       4,     3,   152,     6,     3,     6,     6,     3,     6,     3,
+       3,     6,     4,     4,     4,     4,     4,     4,     3,   153,
+       6,     3,     6,     4,     4,     8,     4,     4,   155,   155,
+       4,   153,     4,   153,   153,   153,     4,     4,     3,   153,
+       6,     4,   155,     3,     8,   461,     8,     8,   153,     8,
+       4,   153,   153,     4,   153,   153,     4,   153,     4,   152,
+     152,     5,     7,   152,     4,     4,   152,     4,     4,   742,
+     152,   152,   152,   492,   152,   335,   742,   539,   751,   745,
+     152,   754,   748,   751,   152,   751,   759,   742,   754,   751,
+     534,   745,   152,   759,   748,   362,   762,   751,   759,   745,
+     754,   153,   155,   153,   152,   759,   153,   757,   754,   775,
+     368,   745,   544,   759,   748,   781,   789,   751,   784,   764,
+     754,   775,   745,   789,   745,   759,   762,   781,   745,   754,
+     784,   754,   415,   754,   745,   789,   771,   754,   784,   747,
+     745,   775,   759,   754,   745,   745,   756,   781,   759,   896,
+     784,   745,   750,   754,   754,   789,   781,   383,   759,   748,
+     754,   412,   781,   753,   781,   407,   751,   784,   783,   900,
+     786,   775,   386,   784,   557,   784,   397,   760,   431,   535,
+     944,   911,   434,   784,   790,   927,    -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,   880,    -1,    -1,
-      -1,   884,    -1,    -1,   880,    -1,    -1,    -1,   884,    -1,
-      -1,    -1,   895,   884,    -1,    -1,   880,    -1,    -1,   895,
-     884,    -1,    -1,    -1,   880,    -1,    -1,    -1,   884,    -1,
-      -1,   895,    -1,    -1,    -1,    -1,   880,    -1,    -1,    -1,
-     884,    -1,    -1,    -1,    -1,   880,    -1,   880,    -1,   880,
-      -1,   895,    -1,   880,    -1,    -1,    -1,   884,    -1,   880,
-      -1,    -1,    -1,   884,    -1,    -1,    -1,    -1,    -1,   880,
-     880,    -1,    -1,   884,    -1,    -1,   880
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   896,    -1,    -1,    -1,   900,    -1,    -1,
+     896,    -1,    -1,    -1,   900,    -1,    -1,    -1,   911,   900,
+      -1,    -1,   896,    -1,    -1,   911,   900,    -1,    -1,    -1,
+     896,    -1,    -1,    -1,   900,    -1,    -1,   911,    -1,    -1,
+      -1,    -1,   896,    -1,    -1,    -1,   900,    -1,    -1,    -1,
+      -1,   896,    -1,   896,    -1,   896,    -1,   911,    -1,   896,
+      -1,    -1,    -1,   900,    -1,   896,    -1,    -1,    -1,   900,
+      -1,    -1,    -1,    -1,    -1,   896,   896,    -1,    -1,   900,
+      -1,    -1,   896
   };
 
   const unsigned short int
   Dhcp4Parser::yystos_[] =
   {
-       0,   135,   136,   137,   138,   139,   140,   141,   142,   143,
-     144,   145,   146,   147,   153,   154,   155,   156,   157,   158,
-     159,   160,   161,   162,   163,   164,   165,   166,     0,     5,
-       7,     9,   148,   149,   150,   151,   167,   168,   169,   174,
-       7,   183,     7,   189,     7,   203,     7,   279,     7,   360,
-       7,   376,     7,   312,     7,   318,     7,   342,     7,   255,
-       7,   429,     7,   464,   175,   170,   184,   190,   204,   280,
-     361,   377,   313,   319,   343,   256,   430,   465,   167,   176,
-     177,   148,   172,   173,    10,   123,   132,   133,   134,   148,
-     182,   185,   186,   187,   456,   458,   460,   462,    11,    20,
-      21,    22,    23,    24,    25,    26,    42,    43,    44,    45,
-      46,    50,    51,    61,    64,    65,    75,    76,    88,    91,
-      98,    99,   102,   182,   191,   192,   193,   194,   195,   196,
-     197,   198,   199,   214,   216,   240,   249,   263,   273,   302,
-     310,   336,   366,   368,   381,   383,   385,   407,   418,   419,
-     427,    12,    13,    16,    19,   182,   201,   202,   205,   207,
-     210,   213,   366,   368,    47,    48,    49,    62,    66,    67,
-      68,    69,    70,    71,    78,    79,    86,   182,   193,   194,
-     195,   198,   281,   282,   283,   285,   287,   289,   291,   293,
-     295,   297,   300,   301,   336,   354,   366,   368,   370,   381,
-     383,   385,   403,    63,   182,   295,   336,   362,   363,   364,
-     366,   368,    76,    80,    81,    82,    83,    84,    85,    87,
-     182,   336,   366,   368,   378,   379,   380,   381,   383,   385,
-     387,   389,   391,   393,   395,   397,   399,   401,   310,    27,
-      52,    54,    55,    58,    59,    60,   182,   230,   320,   321,
-     322,   323,   324,   325,   326,   328,   330,   332,   333,   335,
-     366,   368,    53,    56,    57,   182,   230,   324,   330,   344,
-     345,   346,   347,   348,   350,   351,   352,   353,   366,   368,
-      89,    90,   182,   257,   258,   259,   261,   103,   104,   105,
-     106,   107,   108,   109,   110,   111,   112,   113,   114,   115,
-     116,   182,   366,   368,   431,   432,   433,   434,   436,   438,
-     439,   441,   442,   443,   446,   448,   449,   450,   451,   454,
-     124,   466,   467,   468,     6,     3,     4,     8,     3,   188,
-     463,   457,   459,   461,     4,     3,     8,   200,     4,     4,
-     382,   384,   386,   215,   217,     4,     4,     4,     4,   274,
-     311,   337,   303,   367,   369,   241,   408,   250,   264,     4,
-     420,   428,     3,     8,   206,   208,   211,     4,     3,     8,
-     286,   288,   290,   355,   284,   292,   294,     4,     4,   298,
-     296,   371,   404,     3,     8,   365,     3,     8,   402,   390,
-     392,   396,   394,   400,   398,   388,     8,     3,     8,   327,
-     231,     4,   331,   329,   334,     4,     8,     3,   349,     4,
-       4,     8,     3,   260,   262,     3,     8,     4,   435,   437,
-       4,   440,     4,     4,   444,   447,     4,     4,     4,   452,
-     455,     3,     8,   469,     3,     8,   167,   167,   148,     4,
-       4,     4,     4,     4,   186,     4,   151,   151,     4,     4,
-       4,     4,     4,   149,   149,   149,   149,     4,     4,     4,
-       4,     4,     4,     4,     4,     4,     4,   149,     4,     4,
-     192,     4,     4,     4,   151,   202,     4,     4,     4,     4,
-       4,     4,     4,   149,   151,     4,     4,     4,     4,   282,
-       4,   363,     4,     4,     4,     4,     4,     4,     4,     4,
-     380,     4,     4,   149,     4,     4,     4,   151,   322,     4,
-     151,   151,   346,     4,     4,   258,   151,     4,     4,   149,
-       4,   149,   149,     4,     4,   151,   151,   151,     4,     4,
-     432,     4,   467,     4,     7,     7,   167,   167,   167,     7,
-     148,   148,   148,     7,     7,     5,     5,     5,     5,   169,
-     171,   148,     5,     5,     5,     7,     7,     7,     5,   178,
-      14,    15,   209,    17,    18,   212,   148,   148,   148,     5,
-     148,   148,   148,    72,    73,    74,   299,   148,     5,     7,
-     148,   178,   148,   148,   148,   148,   148,   148,   148,   148,
-     148,   148,   148,   148,   148,   148,   167,   148,   148,   148,
-      15,   117,   445,   118,   119,   120,   121,   122,   151,   453,
-     148,     5,   167,   191,   466,   201,    27,    32,    33,    34,
-      35,    36,    37,    38,    39,    40,    41,   182,   218,   219,
-     220,   223,   225,   227,   229,   230,   232,   233,   234,   235,
-     236,   238,   218,     7,   275,   276,   277,     7,   314,   315,
-     316,     7,   338,   339,   340,     7,   304,   305,   306,    80,
-      81,    82,    83,    85,   242,   243,   244,   245,   246,   247,
-     248,     7,   409,   410,     7,   251,   252,   253,    92,    93,
-      94,    95,    96,    97,   265,   266,   267,   268,   269,   270,
-     271,   272,   100,   101,   182,   366,   368,   421,   422,   423,
-     425,   431,   179,     7,   356,   357,   358,     7,   372,   373,
-     374,    87,   405,     7,   470,   471,     8,     8,     8,   221,
-     224,   226,   228,     4,     4,     4,     4,     4,   237,   239,
-       3,     8,     8,   278,     6,     3,   317,     6,     3,   341,
-       6,     3,   307,     6,     3,     3,     6,   411,     3,     6,
-     254,     6,     3,     4,     4,     4,     4,     4,     4,     3,
-       8,   424,   426,     3,     8,     8,   148,   180,   181,   359,
-       6,     3,   375,     6,     3,   406,     8,   472,     3,     6,
-       4,     4,     4,     4,   149,   151,   149,   151,   149,     4,
-       4,   219,   281,   277,   320,   316,   344,   340,   182,   193,
-     194,   195,   198,   230,   273,   291,   295,   297,   308,   309,
-     336,   366,   368,   381,   383,   385,   403,   306,   243,    77,
-     182,   230,   310,   336,   366,   368,   381,   383,   385,   412,
-     413,   414,   415,   416,   410,   257,   253,   149,   149,   149,
-     149,   149,   149,   266,     4,     4,   422,     6,     3,   362,
-     358,   378,   374,     4,   125,   127,   128,   182,   230,   366,
-     368,   473,   474,   475,   476,   478,   471,    28,    29,    30,
-      31,   222,   148,   148,   148,   148,   148,     8,     8,     8,
-       3,     8,   417,     8,     3,     8,   148,   148,   148,     8,
-       8,   148,   479,     4,   477,     3,     8,   309,     4,   414,
-       4,   149,     4,   474,   148,     5,   148,     7,   480,   481,
-     482,     3,     6,   126,   129,   130,   131,   483,   484,   485,
-     487,   488,   489,   481,   486,     4,     4,     4,     3,     8,
-       4,   151,   149,   149,   484,   148
+       0,   139,   140,   141,   142,   143,   144,   145,   146,   147,
+     148,   149,   150,   151,   157,   158,   159,   160,   161,   162,
+     163,   164,   165,   166,   167,   168,   169,   170,     0,     5,
+       7,     9,   152,   153,   154,   155,   171,   172,   173,   178,
+       7,   187,     7,   193,     7,   207,     7,   287,     7,   368,
+       7,   384,     7,   320,     7,   326,     7,   350,     7,   263,
+       7,   437,     7,   472,   179,   174,   188,   194,   208,   288,
+     369,   385,   321,   327,   351,   264,   438,   473,   171,   180,
+     181,   152,   176,   177,    10,   127,   136,   137,   138,   152,
+     186,   189,   190,   191,   464,   466,   468,   470,    11,    20,
+      21,    22,    23,    24,    25,    26,    46,    47,    48,    49,
+      50,    54,    55,    65,    68,    69,    79,    80,    92,    95,
+     102,   103,   106,   186,   195,   196,   197,   198,   199,   200,
+     201,   202,   203,   218,   220,   248,   257,   271,   281,   310,
+     318,   344,   374,   376,   389,   391,   393,   415,   426,   427,
+     435,    12,    13,    16,    19,   186,   205,   206,   209,   211,
+     214,   217,   374,   376,    51,    52,    53,    66,    70,    71,
+      72,    73,    74,    75,    82,    83,    90,   186,   197,   198,
+     199,   202,   289,   290,   291,   293,   295,   297,   299,   301,
+     303,   305,   308,   309,   344,   362,   374,   376,   378,   389,
+     391,   393,   411,    67,   186,   303,   344,   370,   371,   372,
+     374,   376,    80,    84,    85,    86,    87,    88,    89,    91,
+     186,   344,   374,   376,   386,   387,   388,   389,   391,   393,
+     395,   397,   399,   401,   403,   405,   407,   409,   318,    27,
+      56,    58,    59,    62,    63,    64,   186,   234,   328,   329,
+     330,   331,   332,   333,   334,   336,   338,   340,   341,   343,
+     374,   376,    57,    60,    61,   186,   234,   332,   338,   352,
+     353,   354,   355,   356,   358,   359,   360,   361,   374,   376,
+      93,    94,   186,   265,   266,   267,   269,   107,   108,   109,
+     110,   111,   112,   113,   114,   115,   116,   117,   118,   119,
+     120,   186,   374,   376,   439,   440,   441,   442,   444,   446,
+     447,   449,   450,   451,   454,   456,   457,   458,   459,   462,
+     128,   474,   475,   476,     6,     3,     4,     8,     3,   192,
+     471,   465,   467,   469,     4,     3,     8,   204,     4,     4,
+     390,   392,   394,   219,   221,     4,     4,     4,     4,   282,
+     319,   345,   311,   375,   377,   249,   416,   258,   272,     4,
+     428,   436,     3,     8,   210,   212,   215,     4,     3,     8,
+     294,   296,   298,   363,   292,   300,   302,     4,     4,   306,
+     304,   379,   412,     3,     8,   373,     3,     8,   410,   398,
+     400,   404,   402,   408,   406,   396,     8,     3,     8,   335,
+     235,     4,   339,   337,   342,     4,     8,     3,   357,     4,
+       4,     8,     3,   268,   270,     3,     8,     4,   443,   445,
+       4,   448,     4,     4,   452,   455,     4,     4,     4,   460,
+     463,     3,     8,   477,     3,     8,   171,   171,   152,     4,
+       4,     4,     4,     4,   190,     4,   155,   155,     4,     4,
+       4,     4,     4,   153,   153,   153,   153,     4,     4,     4,
+       4,     4,     4,     4,     4,     4,     4,   153,     4,     4,
+     196,     4,     4,     4,   155,   206,     4,     4,     4,     4,
+       4,     4,     4,   153,   155,     4,     4,     4,     4,   290,
+       4,   371,     4,     4,     4,     4,     4,     4,     4,     4,
+     388,     4,     4,   153,     4,     4,     4,   155,   330,     4,
+     155,   155,   354,     4,     4,   266,   155,     4,     4,   153,
+       4,   153,   153,     4,     4,   155,   155,   155,     4,     4,
+     440,     4,   475,     4,     7,     7,   171,   171,   171,     7,
+     152,   152,   152,     7,     7,     5,     5,     5,     5,   173,
+     175,   152,     5,     5,     5,     7,     7,     7,     5,   182,
+      14,    15,   213,    17,    18,   216,   152,   152,   152,     5,
+     152,   152,   152,    76,    77,    78,   307,   152,     5,     7,
+     152,   182,   152,   152,   152,   152,   152,   152,   152,   152,
+     152,   152,   152,   152,   152,   152,   171,   152,   152,   152,
+      15,   121,   453,   122,   123,   124,   125,   126,   155,   461,
+     152,     5,   171,   195,   474,   205,    27,    32,    33,    34,
+      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
+      45,   186,   222,   223,   224,   227,   229,   231,   233,   234,
+     236,   237,   238,   239,   240,   241,   242,   243,   244,   246,
+     222,     7,   283,   284,   285,     7,   322,   323,   324,     7,
+     346,   347,   348,     7,   312,   313,   314,    84,    85,    86,
+      87,    89,   250,   251,   252,   253,   254,   255,   256,     7,
+     417,   418,     7,   259,   260,   261,    96,    97,    98,    99,
+     100,   101,   273,   274,   275,   276,   277,   278,   279,   280,
+     104,   105,   186,   374,   376,   429,   430,   431,   433,   439,
+     183,     7,   364,   365,   366,     7,   380,   381,   382,    91,
+     413,     7,   478,   479,     8,     8,     8,   225,   228,   230,
+     232,     4,     4,     4,     4,     4,   245,   247,     4,     4,
+       4,     4,     3,     8,     8,   286,     6,     3,   325,     6,
+       3,   349,     6,     3,   315,     6,     3,     3,     6,   419,
+       3,     6,   262,     6,     3,     4,     4,     4,     4,     4,
+       4,     3,     8,   432,   434,     3,     8,     8,   152,   184,
+     185,   367,     6,     3,   383,     6,     3,   414,     8,   480,
+       3,     6,     4,     4,     4,     4,   153,   155,   153,   155,
+     153,     4,     4,   153,   153,   153,   155,   223,   289,   285,
+     328,   324,   352,   348,   186,   197,   198,   199,   202,   234,
+     281,   299,   303,   305,   316,   317,   344,   374,   376,   389,
+     391,   393,   411,   314,   251,    81,   186,   234,   318,   344,
+     374,   376,   389,   391,   393,   420,   421,   422,   423,   424,
+     418,   265,   261,   153,   153,   153,   153,   153,   153,   274,
+       4,     4,   430,     6,     3,   370,   366,   386,   382,     4,
+     129,   131,   132,   186,   234,   374,   376,   481,   482,   483,
+     484,   486,   479,    28,    29,    30,    31,   226,   152,   152,
+     152,   152,   152,     8,     8,     8,     3,     8,   425,     8,
+       3,     8,   152,   152,   152,     8,     8,   152,   487,     4,
+     485,     3,     8,   317,     4,   422,     4,   153,     4,   482,
+     152,     5,   152,     7,   488,   489,   490,     3,     6,   130,
+     133,   134,   135,   491,   492,   493,   495,   496,   497,   489,
+     494,     4,     4,     4,     3,     8,     4,   155,   153,   153,
+     492,   152
   };
 
   const unsigned short int
   Dhcp4Parser::yyr1_[] =
   {
-       0,   152,   154,   153,   155,   153,   156,   153,   157,   153,
-     158,   153,   159,   153,   160,   153,   161,   153,   162,   153,
-     163,   153,   164,   153,   165,   153,   166,   153,   167,   167,
-     167,   167,   167,   167,   167,   168,   170,   169,   171,   172,
-     172,   173,   173,   175,   174,   176,   176,   177,   177,   179,
-     178,   180,   180,   181,   181,   182,   184,   183,   185,   185,
-     186,   186,   186,   186,   186,   186,   188,   187,   190,   189,
-     191,   191,   192,   192,   192,   192,   192,   192,   192,   192,
-     192,   192,   192,   192,   192,   192,   192,   192,   192,   192,
-     192,   192,   192,   192,   192,   192,   192,   192,   193,   194,
-     195,   196,   197,   198,   200,   199,   201,   201,   202,   202,
-     202,   202,   202,   202,   202,   204,   203,   206,   205,   208,
-     207,   209,   209,   211,   210,   212,   212,   213,   215,   214,
-     217,   216,   218,   218,   219,   219,   219,   219,   219,   219,
-     219,   219,   219,   219,   219,   219,   219,   221,   220,   222,
-     222,   222,   222,   224,   223,   226,   225,   228,   227,   229,
-     231,   230,   232,   233,   234,   235,   237,   236,   239,   238,
-     241,   240,   242,   242,   243,   243,   243,   243,   243,   244,
-     245,   246,   247,   248,   250,   249,   251,   251,   252,   252,
-     254,   253,   256,   255,   257,   257,   257,   258,   258,   260,
-     259,   262,   261,   264,   263,   265,   265,   266,   266,   266,
-     266,   266,   266,   267,   268,   269,   270,   271,   272,   274,
-     273,   275,   275,   276,   276,   278,   277,   280,   279,   281,
-     281,   282,   282,   282,   282,   282,   282,   282,   282,   282,
-     282,   282,   282,   282,   282,   282,   282,   282,   282,   282,
-     282,   282,   282,   282,   282,   284,   283,   286,   285,   288,
-     287,   290,   289,   292,   291,   294,   293,   296,   295,   298,
-     297,   299,   299,   299,   300,   301,   303,   302,   304,   304,
-     305,   305,   307,   306,   308,   308,   309,   309,   309,   309,
-     309,   309,   309,   309,   309,   309,   309,   309,   309,   309,
-     309,   309,   309,   311,   310,   313,   312,   314,   314,   315,
-     315,   317,   316,   319,   318,   320,   320,   321,   321,   322,
-     322,   322,   322,   322,   322,   322,   322,   322,   322,   323,
-     324,   325,   327,   326,   329,   328,   331,   330,   332,   334,
-     333,   335,   337,   336,   338,   338,   339,   339,   341,   340,
-     343,   342,   344,   344,   345,   345,   346,   346,   346,   346,
-     346,   346,   346,   346,   346,   347,   349,   348,   350,   351,
-     352,   353,   355,   354,   356,   356,   357,   357,   359,   358,
-     361,   360,   362,   362,   363,   363,   363,   363,   363,   363,
-     365,   364,   367,   366,   369,   368,   371,   370,   372,   372,
-     373,   373,   375,   374,   377,   376,   378,   378,   379,   379,
-     380,   380,   380,   380,   380,   380,   380,   380,   380,   380,
-     380,   380,   380,   380,   380,   382,   381,   384,   383,   386,
-     385,   388,   387,   390,   389,   392,   391,   394,   393,   396,
+       0,   156,   158,   157,   159,   157,   160,   157,   161,   157,
+     162,   157,   163,   157,   164,   157,   165,   157,   166,   157,
+     167,   157,   168,   157,   169,   157,   170,   157,   171,   171,
+     171,   171,   171,   171,   171,   172,   174,   173,   175,   176,
+     176,   177,   177,   179,   178,   180,   180,   181,   181,   183,
+     182,   184,   184,   185,   185,   186,   188,   187,   189,   189,
+     190,   190,   190,   190,   190,   190,   192,   191,   194,   193,
+     195,   195,   196,   196,   196,   196,   196,   196,   196,   196,
+     196,   196,   196,   196,   196,   196,   196,   196,   196,   196,
+     196,   196,   196,   196,   196,   196,   196,   196,   197,   198,
+     199,   200,   201,   202,   204,   203,   205,   205,   206,   206,
+     206,   206,   206,   206,   206,   208,   207,   210,   209,   212,
+     211,   213,   213,   215,   214,   216,   216,   217,   219,   218,
+     221,   220,   222,   222,   223,   223,   223,   223,   223,   223,
+     223,   223,   223,   223,   223,   223,   223,   223,   223,   223,
+     223,   225,   224,   226,   226,   226,   226,   228,   227,   230,
+     229,   232,   231,   233,   235,   234,   236,   237,   238,   239,
+     240,   241,   242,   243,   245,   244,   247,   246,   249,   248,
+     250,   250,   251,   251,   251,   251,   251,   252,   253,   254,
+     255,   256,   258,   257,   259,   259,   260,   260,   262,   261,
+     264,   263,   265,   265,   265,   266,   266,   268,   267,   270,
+     269,   272,   271,   273,   273,   274,   274,   274,   274,   274,
+     274,   275,   276,   277,   278,   279,   280,   282,   281,   283,
+     283,   284,   284,   286,   285,   288,   287,   289,   289,   290,
+     290,   290,   290,   290,   290,   290,   290,   290,   290,   290,
+     290,   290,   290,   290,   290,   290,   290,   290,   290,   290,
+     290,   290,   290,   292,   291,   294,   293,   296,   295,   298,
+     297,   300,   299,   302,   301,   304,   303,   306,   305,   307,
+     307,   307,   308,   309,   311,   310,   312,   312,   313,   313,
+     315,   314,   316,   316,   317,   317,   317,   317,   317,   317,
+     317,   317,   317,   317,   317,   317,   317,   317,   317,   317,
+     317,   319,   318,   321,   320,   322,   322,   323,   323,   325,
+     324,   327,   326,   328,   328,   329,   329,   330,   330,   330,
+     330,   330,   330,   330,   330,   330,   330,   331,   332,   333,
+     335,   334,   337,   336,   339,   338,   340,   342,   341,   343,
+     345,   344,   346,   346,   347,   347,   349,   348,   351,   350,
+     352,   352,   353,   353,   354,   354,   354,   354,   354,   354,
+     354,   354,   354,   355,   357,   356,   358,   359,   360,   361,
+     363,   362,   364,   364,   365,   365,   367,   366,   369,   368,
+     370,   370,   371,   371,   371,   371,   371,   371,   373,   372,
+     375,   374,   377,   376,   379,   378,   380,   380,   381,   381,
+     383,   382,   385,   384,   386,   386,   387,   387,   388,   388,
+     388,   388,   388,   388,   388,   388,   388,   388,   388,   388,
+     388,   388,   388,   390,   389,   392,   391,   394,   393,   396,
      395,   398,   397,   400,   399,   402,   401,   404,   403,   406,
-     405,   408,   407,   409,   409,   411,   410,   412,   412,   413,
-     413,   414,   414,   414,   414,   414,   414,   414,   414,   414,
-     414,   415,   417,   416,   418,   420,   419,   421,   421,   422,
-     422,   422,   422,   422,   424,   423,   426,   425,   428,   427,
-     430,   429,   431,   431,   432,   432,   432,   432,   432,   432,
-     432,   432,   432,   432,   432,   432,   432,   432,   432,   432,
-     432,   433,   435,   434,   437,   436,   438,   440,   439,   441,
-     442,   444,   443,   445,   445,   447,   446,   448,   449,   450,
-     452,   451,   453,   453,   453,   453,   453,   455,   454,   457,
-     456,   459,   458,   461,   460,   463,   462,   465,   464,   466,
-     466,   467,   469,   468,   470,   470,   472,   471,   473,   473,
-     474,   474,   474,   474,   474,   474,   474,   475,   477,   476,
-     479,   478,   480,   480,   482,   481,   483,   483,   484,   484,
-     484,   484,   486,   485,   487,   488,   489
+     405,   408,   407,   410,   409,   412,   411,   414,   413,   416,
+     415,   417,   417,   419,   418,   420,   420,   421,   421,   422,
+     422,   422,   422,   422,   422,   422,   422,   422,   422,   423,
+     425,   424,   426,   428,   427,   429,   429,   430,   430,   430,
+     430,   430,   432,   431,   434,   433,   436,   435,   438,   437,
+     439,   439,   440,   440,   440,   440,   440,   440,   440,   440,
+     440,   440,   440,   440,   440,   440,   440,   440,   440,   441,
+     443,   442,   445,   444,   446,   448,   447,   449,   450,   452,
+     451,   453,   453,   455,   454,   456,   457,   458,   460,   459,
+     461,   461,   461,   461,   461,   463,   462,   465,   464,   467,
+     466,   469,   468,   471,   470,   473,   472,   474,   474,   475,
+     477,   476,   478,   478,   480,   479,   481,   481,   482,   482,
+     482,   482,   482,   482,   482,   483,   485,   484,   487,   486,
+     488,   488,   490,   489,   491,   491,   492,   492,   492,   492,
+     494,   493,   495,   496,   497
   };
 
   const unsigned char
@@ -4213,51 +4262,52 @@ namespace isc { namespace dhcp {
        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,     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,     0,     4,     0,     4,
-       0,     6,     1,     3,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     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,     1,     1,     0,     4,     0,     4,     0,
-       4,     0,     4,     0,     4,     0,     4,     0,     4,     0,
-       4,     1,     1,     1,     3,     3,     0,     6,     0,     1,
-       1,     3,     0,     4,     1,     3,     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,     0,     4,     0,     4,     0,     6,
+       1,     3,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     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,     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,
+       1,     1,     1,     0,     4,     0,     4,     0,     4,     0,
+       4,     0,     4,     0,     4,     0,     4,     0,     4,     1,
+       1,     1,     3,     3,     0,     6,     0,     1,     1,     3,
        0,     4,     1,     3,     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,     4,     0,     4,     0,
+       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,     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,     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,     0,
-       4,     0,     6,     1,     3,     0,     4,     0,     1,     1,
-       3,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     0,     4,     3,     0,     6,     1,     3,     1,
-       1,     1,     1,     1,     0,     4,     0,     4,     0,     6,
-       0,     4,     1,     3,     1,     1,     1,     1,     1,     1,
+       4,     0,     4,     0,     4,     0,     6,     0,     4,     0,
+       6,     1,     3,     0,     4,     0,     1,     1,     3,     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,     3,
-       0,     4,     1,     1,     1,     1,     1,     0,     4,     0,
-       4,     0,     4,     0,     4,     0,     6,     0,     4,     1,
-       3,     1,     0,     6,     1,     3,     0,     4,     1,     3,
-       1,     1,     1,     1,     1,     1,     1,     3,     0,     4,
+       0,     4,     3,     0,     6,     1,     3,     1,     1,     1,
+       1,     1,     0,     4,     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,     3,
+       0,     4,     0,     4,     3,     0,     4,     3,     3,     0,
+       4,     1,     1,     0,     4,     3,     3,     3,     0,     4,
+       1,     1,     1,     1,     1,     0,     4,     0,     4,     0,
+       4,     0,     4,     0,     6,     0,     4,     1,     3,     1,
        0,     6,     1,     3,     0,     4,     1,     3,     1,     1,
-       1,     1,     0,     4,     3,     3,     3
+       1,     1,     1,     1,     1,     3,     0,     4,     0,     6,
+       1,     3,     0,     4,     1,     3,     1,     1,     1,     1,
+       0,     4,     3,     3,     3
   };
 
 
@@ -4277,47 +4327,48 @@ namespace isc { namespace dhcp {
   "\"type\"", "\"memfile\"", "\"mysql\"", "\"postgresql\"", "\"cql\"",
   "\"user\"", "\"password\"", "\"host\"", "\"port\"", "\"persist\"",
   "\"lfc-interval\"", "\"readonly\"", "\"connect-timeout\"",
-  "\"contact-points\"", "\"keyspace\"", "\"valid-lifetime\"",
-  "\"renew-timer\"", "\"rebind-timer\"", "\"decline-probation-period\"",
-  "\"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\"", "\"interface-id\"",
-  "\"id\"", "\"rapid-commit\"", "\"reservation-mode\"", "\"disabled\"",
-  "\"out-of-pool\"", "\"all\"", "\"host-reservation-identifiers\"",
-  "\"client-classes\"", "\"test\"", "\"client-class\"", "\"reservations\"",
-  "\"duid\"", "\"hw-address\"", "\"circuit-id\"", "\"client-id\"",
-  "\"hostname\"", "\"flex-id\"", "\"relay\"", "\"ip-address\"",
-  "\"hooks-libraries\"", "\"library\"", "\"parameters\"",
-  "\"expired-leases-processing\"", "\"reclaim-timer-wait-time\"",
-  "\"flush-reclaimed-timer-wait-time\"", "\"hold-reclaimed-time\"",
-  "\"max-reclaim-leases\"", "\"max-reclaim-time\"",
-  "\"unwarned-reclaim-cycles\"", "\"dhcp4o6-port\"", "\"control-socket\"",
-  "\"socket-type\"", "\"socket-name\"", "\"dhcp-ddns\"",
-  "\"enable-updates\"", "\"qualifying-suffix\"", "\"server-ip\"",
-  "\"server-port\"", "\"sender-ip\"", "\"sender-port\"",
-  "\"max-queue-size\"", "\"ncr-protocol\"", "\"ncr-format\"",
-  "\"always-include-fqdn\"", "\"override-no-update\"",
-  "\"override-client-update\"", "\"replace-client-name\"",
-  "\"generated-prefix\"", "\"tcp\"", "\"JSON\"", "\"when-present\"",
-  "\"never\"", "\"always\"", "\"when-not-present\"", "\"Logging\"",
-  "\"loggers\"", "\"output_options\"", "\"output\"", "\"debuglevel\"",
-  "\"severity\"", "\"flush\"", "\"maxsize\"", "\"maxver\"", "\"Dhcp6\"",
-  "\"DhcpDdns\"", "\"Control-agent\"", "TOPLEVEL_JSON", "TOPLEVEL_DHCP4",
-  "SUB_DHCP4", "SUB_INTERFACES4", "SUB_SUBNET4", "SUB_POOL4",
-  "SUB_RESERVATION", "SUB_OPTION_DEFS", "SUB_OPTION_DEF",
-  "SUB_OPTION_DATA", "SUB_HOOKS_LIBRARY", "SUB_DHCP_DDNS", "SUB_LOGGING",
-  "\"constant string\"", "\"integer\"", "\"floating point\"",
-  "\"boolean\"", "$accept", "start", "$@1", "$@2", "$@3", "$@4", "$@5",
-  "$@6", "$@7", "$@8", "$@9", "$@10", "$@11", "$@12", "$@13", "value",
-  "sub_json", "map2", "$@14", "map_value", "map_content", "not_empty_map",
-  "list_generic", "$@15", "list_content", "not_empty_list", "list_strings",
-  "$@16", "list_strings_content", "not_empty_list_strings",
-  "unknown_map_entry", "syntax_map", "$@17", "global_objects",
-  "global_object", "dhcp4_object", "$@18", "sub_dhcp4", "$@19",
-  "global_params", "global_param", "valid_lifetime", "renew_timer",
+  "\"contact-points\"", "\"keyspace\"", "\"reconnect-wait-time\"",
+  "\"request-timeout\"", "\"tcp-keepalive\"", "\"tcp-nodelay\"",
+  "\"valid-lifetime\"", "\"renew-timer\"", "\"rebind-timer\"",
+  "\"decline-probation-period\"", "\"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\"", "\"interface-id\"", "\"id\"", "\"rapid-commit\"",
+  "\"reservation-mode\"", "\"disabled\"", "\"out-of-pool\"", "\"all\"",
+  "\"host-reservation-identifiers\"", "\"client-classes\"", "\"test\"",
+  "\"client-class\"", "\"reservations\"", "\"duid\"", "\"hw-address\"",
+  "\"circuit-id\"", "\"client-id\"", "\"hostname\"", "\"flex-id\"",
+  "\"relay\"", "\"ip-address\"", "\"hooks-libraries\"", "\"library\"",
+  "\"parameters\"", "\"expired-leases-processing\"",
+  "\"reclaim-timer-wait-time\"", "\"flush-reclaimed-timer-wait-time\"",
+  "\"hold-reclaimed-time\"", "\"max-reclaim-leases\"",
+  "\"max-reclaim-time\"", "\"unwarned-reclaim-cycles\"",
+  "\"dhcp4o6-port\"", "\"control-socket\"", "\"socket-type\"",
+  "\"socket-name\"", "\"dhcp-ddns\"", "\"enable-updates\"",
+  "\"qualifying-suffix\"", "\"server-ip\"", "\"server-port\"",
+  "\"sender-ip\"", "\"sender-port\"", "\"max-queue-size\"",
+  "\"ncr-protocol\"", "\"ncr-format\"", "\"always-include-fqdn\"",
+  "\"override-no-update\"", "\"override-client-update\"",
+  "\"replace-client-name\"", "\"generated-prefix\"", "\"tcp\"", "\"JSON\"",
+  "\"when-present\"", "\"never\"", "\"always\"", "\"when-not-present\"",
+  "\"Logging\"", "\"loggers\"", "\"output_options\"", "\"output\"",
+  "\"debuglevel\"", "\"severity\"", "\"flush\"", "\"maxsize\"",
+  "\"maxver\"", "\"Dhcp6\"", "\"DhcpDdns\"", "\"Control-agent\"",
+  "TOPLEVEL_JSON", "TOPLEVEL_DHCP4", "SUB_DHCP4", "SUB_INTERFACES4",
+  "SUB_SUBNET4", "SUB_POOL4", "SUB_RESERVATION", "SUB_OPTION_DEFS",
+  "SUB_OPTION_DEF", "SUB_OPTION_DATA", "SUB_HOOKS_LIBRARY",
+  "SUB_DHCP_DDNS", "SUB_LOGGING", "\"constant string\"", "\"integer\"",
+  "\"floating point\"", "\"boolean\"", "$accept", "start", "$@1", "$@2",
+  "$@3", "$@4", "$@5", "$@6", "$@7", "$@8", "$@9", "$@10", "$@11", "$@12",
+  "$@13", "value", "sub_json", "map2", "$@14", "map_value", "map_content",
+  "not_empty_map", "list_generic", "$@15", "list_content",
+  "not_empty_list", "list_strings", "$@16", "list_strings_content",
+  "not_empty_list_strings", "unknown_map_entry", "syntax_map", "$@17",
+  "global_objects", "global_object", "dhcp4_object", "$@18", "sub_dhcp4",
+  "$@19", "global_params", "global_param", "valid_lifetime", "renew_timer",
   "rebind_timer", "decline_probation_period", "echo_client_id",
   "match_client_id", "interfaces_config", "$@20",
   "interfaces_config_params", "interfaces_config_param", "sub_interfaces4",
@@ -4327,6 +4378,7 @@ namespace isc { namespace dhcp {
   "database_map_params", "database_map_param", "database_type", "$@27",
   "db_type", "user", "$@28", "password", "$@29", "host", "$@30", "port",
   "name", "$@31", "persist", "lfc_interval", "readonly", "connect_timeout",
+  "reconnect_wait_time", "request_timeout", "tcp_keepalive", "tcp_nodelay",
   "contact_points", "$@32", "keyspace", "$@33",
   "host_reservation_identifiers", "$@34",
   "host_reservation_identifiers_list", "host_reservation_identifier",
@@ -4397,65 +4449,66 @@ namespace isc { namespace dhcp {
   const unsigned short int
   Dhcp4Parser::yyrline_[] =
   {
-       0,   235,   235,   235,   236,   236,   237,   237,   238,   238,
-     239,   239,   240,   240,   241,   241,   242,   242,   243,   243,
-     244,   244,   245,   245,   246,   246,   247,   247,   255,   256,
-     257,   258,   259,   260,   261,   264,   269,   269,   280,   283,
-     284,   287,   291,   298,   298,   305,   306,   309,   313,   320,
-     320,   327,   328,   331,   335,   346,   356,   356,   372,   373,
-     377,   378,   379,   380,   381,   382,   385,   385,   400,   400,
-     409,   410,   415,   416,   417,   418,   419,   420,   421,   422,
-     423,   424,   425,   426,   427,   428,   429,   430,   431,   432,
-     433,   434,   435,   436,   437,   438,   439,   440,   443,   448,
-     453,   458,   463,   468,   474,   474,   485,   486,   489,   490,
-     491,   492,   493,   494,   495,   498,   498,   507,   507,   517,
-     517,   524,   525,   528,   528,   535,   537,   541,   547,   547,
-     559,   559,   571,   572,   575,   576,   577,   578,   579,   580,
-     581,   582,   583,   584,   585,   586,   587,   590,   590,   597,
-     598,   599,   600,   603,   603,   611,   611,   619,   619,   627,
-     632,   632,   640,   645,   650,   655,   660,   660,   668,   668,
-     677,   677,   687,   688,   691,   692,   693,   694,   695,   698,
-     703,   708,   713,   718,   723,   723,   733,   734,   737,   738,
-     741,   741,   751,   751,   761,   762,   763,   766,   767,   770,
-     770,   778,   778,   786,   786,   797,   798,   801,   802,   803,
-     804,   805,   806,   809,   814,   819,   824,   829,   834,   842,
-     842,   855,   856,   859,   860,   867,   867,   893,   893,   904,
-     905,   909,   910,   911,   912,   913,   914,   915,   916,   917,
-     918,   919,   920,   921,   922,   923,   924,   925,   926,   927,
-     928,   929,   930,   931,   932,   935,   935,   943,   943,   951,
-     951,   959,   959,   967,   967,   975,   975,   983,   983,   991,
-     991,   998,   999,  1000,  1003,  1008,  1015,  1015,  1026,  1027,
-    1031,  1032,  1035,  1035,  1043,  1044,  1047,  1048,  1049,  1050,
-    1051,  1052,  1053,  1054,  1055,  1056,  1057,  1058,  1059,  1060,
-    1061,  1062,  1063,  1070,  1070,  1083,  1083,  1092,  1093,  1096,
-    1097,  1102,  1102,  1117,  1117,  1131,  1132,  1135,  1136,  1139,
-    1140,  1141,  1142,  1143,  1144,  1145,  1146,  1147,  1148,  1151,
-    1153,  1158,  1160,  1160,  1168,  1168,  1176,  1176,  1184,  1186,
-    1186,  1194,  1203,  1203,  1215,  1216,  1221,  1222,  1227,  1227,
-    1239,  1239,  1251,  1252,  1257,  1258,  1263,  1264,  1265,  1266,
-    1267,  1268,  1269,  1270,  1271,  1274,  1276,  1276,  1284,  1286,
-    1288,  1293,  1301,  1301,  1313,  1314,  1317,  1318,  1321,  1321,
-    1331,  1331,  1341,  1342,  1345,  1346,  1347,  1348,  1349,  1350,
-    1353,  1353,  1361,  1361,  1386,  1386,  1416,  1416,  1426,  1427,
-    1430,  1431,  1434,  1434,  1443,  1443,  1452,  1453,  1456,  1457,
-    1461,  1462,  1463,  1464,  1465,  1466,  1467,  1468,  1469,  1470,
-    1471,  1472,  1473,  1474,  1475,  1478,  1478,  1486,  1486,  1494,
-    1494,  1502,  1502,  1510,  1510,  1518,  1518,  1526,  1526,  1534,
-    1534,  1542,  1542,  1550,  1550,  1558,  1558,  1571,  1571,  1581,
-    1581,  1592,  1592,  1602,  1603,  1606,  1606,  1616,  1617,  1620,
-    1621,  1624,  1625,  1626,  1627,  1628,  1629,  1630,  1631,  1632,
-    1633,  1636,  1638,  1638,  1650,  1657,  1657,  1667,  1668,  1671,
-    1672,  1673,  1674,  1675,  1678,  1678,  1686,  1686,  1696,  1696,
-    1708,  1708,  1718,  1719,  1722,  1723,  1724,  1725,  1726,  1727,
-    1728,  1729,  1730,  1731,  1732,  1733,  1734,  1735,  1736,  1737,
-    1738,  1741,  1746,  1746,  1754,  1754,  1762,  1767,  1767,  1775,
-    1780,  1785,  1785,  1793,  1794,  1797,  1797,  1805,  1810,  1815,
-    1820,  1820,  1828,  1831,  1834,  1837,  1840,  1846,  1846,  1856,
-    1856,  1863,  1863,  1870,  1870,  1882,  1882,  1892,  1892,  1903,
-    1904,  1908,  1912,  1912,  1924,  1925,  1929,  1929,  1937,  1938,
-    1941,  1942,  1943,  1944,  1945,  1946,  1947,  1950,  1955,  1955,
-    1963,  1963,  1973,  1974,  1977,  1977,  1985,  1986,  1989,  1990,
-    1991,  1992,  1995,  1995,  2003,  2008,  2013
+       0,   239,   239,   239,   240,   240,   241,   241,   242,   242,
+     243,   243,   244,   244,   245,   245,   246,   246,   247,   247,
+     248,   248,   249,   249,   250,   250,   251,   251,   259,   260,
+     261,   262,   263,   264,   265,   268,   273,   273,   284,   287,
+     288,   291,   295,   302,   302,   309,   310,   313,   317,   324,
+     324,   331,   332,   335,   339,   350,   360,   360,   376,   377,
+     381,   382,   383,   384,   385,   386,   389,   389,   404,   404,
+     413,   414,   419,   420,   421,   422,   423,   424,   425,   426,
+     427,   428,   429,   430,   431,   432,   433,   434,   435,   436,
+     437,   438,   439,   440,   441,   442,   443,   444,   447,   452,
+     457,   462,   467,   472,   478,   478,   489,   490,   493,   494,
+     495,   496,   497,   498,   499,   502,   502,   511,   511,   521,
+     521,   528,   529,   532,   532,   539,   541,   545,   551,   551,
+     563,   563,   575,   576,   579,   580,   581,   582,   583,   584,
+     585,   586,   587,   588,   589,   590,   591,   592,   593,   594,
+     595,   598,   598,   605,   606,   607,   608,   611,   611,   619,
+     619,   627,   627,   635,   640,   640,   648,   653,   658,   663,
+     668,   673,   678,   683,   688,   688,   696,   696,   705,   705,
+     715,   716,   719,   720,   721,   722,   723,   726,   731,   736,
+     741,   746,   751,   751,   761,   762,   765,   766,   769,   769,
+     779,   779,   789,   790,   791,   794,   795,   798,   798,   806,
+     806,   814,   814,   825,   826,   829,   830,   831,   832,   833,
+     834,   837,   842,   847,   852,   857,   862,   870,   870,   883,
+     884,   887,   888,   895,   895,   921,   921,   932,   933,   937,
+     938,   939,   940,   941,   942,   943,   944,   945,   946,   947,
+     948,   949,   950,   951,   952,   953,   954,   955,   956,   957,
+     958,   959,   960,   963,   963,   971,   971,   979,   979,   987,
+     987,   995,   995,  1003,  1003,  1011,  1011,  1019,  1019,  1026,
+    1027,  1028,  1031,  1036,  1043,  1043,  1054,  1055,  1059,  1060,
+    1063,  1063,  1071,  1072,  1075,  1076,  1077,  1078,  1079,  1080,
+    1081,  1082,  1083,  1084,  1085,  1086,  1087,  1088,  1089,  1090,
+    1091,  1098,  1098,  1111,  1111,  1120,  1121,  1124,  1125,  1130,
+    1130,  1145,  1145,  1159,  1160,  1163,  1164,  1167,  1168,  1169,
+    1170,  1171,  1172,  1173,  1174,  1175,  1176,  1179,  1181,  1186,
+    1188,  1188,  1196,  1196,  1204,  1204,  1212,  1214,  1214,  1222,
+    1231,  1231,  1243,  1244,  1249,  1250,  1255,  1255,  1267,  1267,
+    1279,  1280,  1285,  1286,  1291,  1292,  1293,  1294,  1295,  1296,
+    1297,  1298,  1299,  1302,  1304,  1304,  1312,  1314,  1316,  1321,
+    1329,  1329,  1341,  1342,  1345,  1346,  1349,  1349,  1359,  1359,
+    1369,  1370,  1373,  1374,  1375,  1376,  1377,  1378,  1381,  1381,
+    1389,  1389,  1414,  1414,  1444,  1444,  1454,  1455,  1458,  1459,
+    1462,  1462,  1471,  1471,  1480,  1481,  1484,  1485,  1489,  1490,
+    1491,  1492,  1493,  1494,  1495,  1496,  1497,  1498,  1499,  1500,
+    1501,  1502,  1503,  1506,  1506,  1514,  1514,  1522,  1522,  1530,
+    1530,  1538,  1538,  1546,  1546,  1554,  1554,  1562,  1562,  1570,
+    1570,  1578,  1578,  1586,  1586,  1599,  1599,  1609,  1609,  1620,
+    1620,  1630,  1631,  1634,  1634,  1644,  1645,  1648,  1649,  1652,
+    1653,  1654,  1655,  1656,  1657,  1658,  1659,  1660,  1661,  1664,
+    1666,  1666,  1678,  1685,  1685,  1695,  1696,  1699,  1700,  1701,
+    1702,  1703,  1706,  1706,  1714,  1714,  1724,  1724,  1736,  1736,
+    1746,  1747,  1750,  1751,  1752,  1753,  1754,  1755,  1756,  1757,
+    1758,  1759,  1760,  1761,  1762,  1763,  1764,  1765,  1766,  1769,
+    1774,  1774,  1782,  1782,  1790,  1795,  1795,  1803,  1808,  1813,
+    1813,  1821,  1822,  1825,  1825,  1833,  1838,  1843,  1848,  1848,
+    1856,  1859,  1862,  1865,  1868,  1874,  1874,  1884,  1884,  1891,
+    1891,  1898,  1898,  1910,  1910,  1920,  1920,  1931,  1932,  1936,
+    1940,  1940,  1952,  1953,  1957,  1957,  1965,  1966,  1969,  1970,
+    1971,  1972,  1973,  1974,  1975,  1978,  1983,  1983,  1991,  1991,
+    2001,  2002,  2005,  2005,  2013,  2014,  2017,  2018,  2019,  2020,
+    2023,  2023,  2031,  2036,  2041
   };
 
   // Print the state stack on the debug stream.
@@ -4490,8 +4543,8 @@ namespace isc { namespace dhcp {
 
 #line 14 "dhcp4_parser.yy" // lalr1.cc:1167
 } } // isc::dhcp
-#line 4494 "dhcp4_parser.cc" // lalr1.cc:1167
-#line 2018 "dhcp4_parser.yy" // lalr1.cc:1168
+#line 4547 "dhcp4_parser.cc" // lalr1.cc:1167
+#line 2046 "dhcp4_parser.yy" // lalr1.cc:1168
 
 
 void
index 456b8b3b1da47a75aea285944f33e430552f7384..b63f57a09477c7e64db528d12819a6255f062a98 100644 (file)
@@ -387,116 +387,120 @@ namespace isc { namespace dhcp {
         TOKEN_CONNECT_TIMEOUT = 294,
         TOKEN_CONTACT_POINTS = 295,
         TOKEN_KEYSPACE = 296,
-        TOKEN_VALID_LIFETIME = 297,
-        TOKEN_RENEW_TIMER = 298,
-        TOKEN_REBIND_TIMER = 299,
-        TOKEN_DECLINE_PROBATION_PERIOD = 300,
-        TOKEN_SUBNET4 = 301,
-        TOKEN_SUBNET_4O6_INTERFACE = 302,
-        TOKEN_SUBNET_4O6_INTERFACE_ID = 303,
-        TOKEN_SUBNET_4O6_SUBNET = 304,
-        TOKEN_OPTION_DEF = 305,
-        TOKEN_OPTION_DATA = 306,
-        TOKEN_NAME = 307,
-        TOKEN_DATA = 308,
-        TOKEN_CODE = 309,
-        TOKEN_SPACE = 310,
-        TOKEN_CSV_FORMAT = 311,
-        TOKEN_ALWAYS_SEND = 312,
-        TOKEN_RECORD_TYPES = 313,
-        TOKEN_ENCAPSULATE = 314,
-        TOKEN_ARRAY = 315,
-        TOKEN_SHARED_NETWORKS = 316,
-        TOKEN_POOLS = 317,
-        TOKEN_POOL = 318,
-        TOKEN_USER_CONTEXT = 319,
-        TOKEN_COMMENT = 320,
-        TOKEN_SUBNET = 321,
-        TOKEN_INTERFACE = 322,
-        TOKEN_INTERFACE_ID = 323,
-        TOKEN_ID = 324,
-        TOKEN_RAPID_COMMIT = 325,
-        TOKEN_RESERVATION_MODE = 326,
-        TOKEN_DISABLED = 327,
-        TOKEN_OUT_OF_POOL = 328,
-        TOKEN_ALL = 329,
-        TOKEN_HOST_RESERVATION_IDENTIFIERS = 330,
-        TOKEN_CLIENT_CLASSES = 331,
-        TOKEN_TEST = 332,
-        TOKEN_CLIENT_CLASS = 333,
-        TOKEN_RESERVATIONS = 334,
-        TOKEN_DUID = 335,
-        TOKEN_HW_ADDRESS = 336,
-        TOKEN_CIRCUIT_ID = 337,
-        TOKEN_CLIENT_ID = 338,
-        TOKEN_HOSTNAME = 339,
-        TOKEN_FLEX_ID = 340,
-        TOKEN_RELAY = 341,
-        TOKEN_IP_ADDRESS = 342,
-        TOKEN_HOOKS_LIBRARIES = 343,
-        TOKEN_LIBRARY = 344,
-        TOKEN_PARAMETERS = 345,
-        TOKEN_EXPIRED_LEASES_PROCESSING = 346,
-        TOKEN_RECLAIM_TIMER_WAIT_TIME = 347,
-        TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 348,
-        TOKEN_HOLD_RECLAIMED_TIME = 349,
-        TOKEN_MAX_RECLAIM_LEASES = 350,
-        TOKEN_MAX_RECLAIM_TIME = 351,
-        TOKEN_UNWARNED_RECLAIM_CYCLES = 352,
-        TOKEN_DHCP4O6_PORT = 353,
-        TOKEN_CONTROL_SOCKET = 354,
-        TOKEN_SOCKET_TYPE = 355,
-        TOKEN_SOCKET_NAME = 356,
-        TOKEN_DHCP_DDNS = 357,
-        TOKEN_ENABLE_UPDATES = 358,
-        TOKEN_QUALIFYING_SUFFIX = 359,
-        TOKEN_SERVER_IP = 360,
-        TOKEN_SERVER_PORT = 361,
-        TOKEN_SENDER_IP = 362,
-        TOKEN_SENDER_PORT = 363,
-        TOKEN_MAX_QUEUE_SIZE = 364,
-        TOKEN_NCR_PROTOCOL = 365,
-        TOKEN_NCR_FORMAT = 366,
-        TOKEN_ALWAYS_INCLUDE_FQDN = 367,
-        TOKEN_OVERRIDE_NO_UPDATE = 368,
-        TOKEN_OVERRIDE_CLIENT_UPDATE = 369,
-        TOKEN_REPLACE_CLIENT_NAME = 370,
-        TOKEN_GENERATED_PREFIX = 371,
-        TOKEN_TCP = 372,
-        TOKEN_JSON = 373,
-        TOKEN_WHEN_PRESENT = 374,
-        TOKEN_NEVER = 375,
-        TOKEN_ALWAYS = 376,
-        TOKEN_WHEN_NOT_PRESENT = 377,
-        TOKEN_LOGGING = 378,
-        TOKEN_LOGGERS = 379,
-        TOKEN_OUTPUT_OPTIONS = 380,
-        TOKEN_OUTPUT = 381,
-        TOKEN_DEBUGLEVEL = 382,
-        TOKEN_SEVERITY = 383,
-        TOKEN_FLUSH = 384,
-        TOKEN_MAXSIZE = 385,
-        TOKEN_MAXVER = 386,
-        TOKEN_DHCP6 = 387,
-        TOKEN_DHCPDDNS = 388,
-        TOKEN_CONTROL_AGENT = 389,
-        TOKEN_TOPLEVEL_JSON = 390,
-        TOKEN_TOPLEVEL_DHCP4 = 391,
-        TOKEN_SUB_DHCP4 = 392,
-        TOKEN_SUB_INTERFACES4 = 393,
-        TOKEN_SUB_SUBNET4 = 394,
-        TOKEN_SUB_POOL4 = 395,
-        TOKEN_SUB_RESERVATION = 396,
-        TOKEN_SUB_OPTION_DEFS = 397,
-        TOKEN_SUB_OPTION_DEF = 398,
-        TOKEN_SUB_OPTION_DATA = 399,
-        TOKEN_SUB_HOOKS_LIBRARY = 400,
-        TOKEN_SUB_DHCP_DDNS = 401,
-        TOKEN_SUB_LOGGING = 402,
-        TOKEN_STRING = 403,
-        TOKEN_INTEGER = 404,
-        TOKEN_FLOAT = 405,
-        TOKEN_BOOLEAN = 406
+        TOKEN_RECONNECT_WAIT_TIME = 297,
+        TOKEN_REQUEST_TIMEOUT = 298,
+        TOKEN_TCP_KEEPALIVE = 299,
+        TOKEN_TCP_NODELAY = 300,
+        TOKEN_VALID_LIFETIME = 301,
+        TOKEN_RENEW_TIMER = 302,
+        TOKEN_REBIND_TIMER = 303,
+        TOKEN_DECLINE_PROBATION_PERIOD = 304,
+        TOKEN_SUBNET4 = 305,
+        TOKEN_SUBNET_4O6_INTERFACE = 306,
+        TOKEN_SUBNET_4O6_INTERFACE_ID = 307,
+        TOKEN_SUBNET_4O6_SUBNET = 308,
+        TOKEN_OPTION_DEF = 309,
+        TOKEN_OPTION_DATA = 310,
+        TOKEN_NAME = 311,
+        TOKEN_DATA = 312,
+        TOKEN_CODE = 313,
+        TOKEN_SPACE = 314,
+        TOKEN_CSV_FORMAT = 315,
+        TOKEN_ALWAYS_SEND = 316,
+        TOKEN_RECORD_TYPES = 317,
+        TOKEN_ENCAPSULATE = 318,
+        TOKEN_ARRAY = 319,
+        TOKEN_SHARED_NETWORKS = 320,
+        TOKEN_POOLS = 321,
+        TOKEN_POOL = 322,
+        TOKEN_USER_CONTEXT = 323,
+        TOKEN_COMMENT = 324,
+        TOKEN_SUBNET = 325,
+        TOKEN_INTERFACE = 326,
+        TOKEN_INTERFACE_ID = 327,
+        TOKEN_ID = 328,
+        TOKEN_RAPID_COMMIT = 329,
+        TOKEN_RESERVATION_MODE = 330,
+        TOKEN_DISABLED = 331,
+        TOKEN_OUT_OF_POOL = 332,
+        TOKEN_ALL = 333,
+        TOKEN_HOST_RESERVATION_IDENTIFIERS = 334,
+        TOKEN_CLIENT_CLASSES = 335,
+        TOKEN_TEST = 336,
+        TOKEN_CLIENT_CLASS = 337,
+        TOKEN_RESERVATIONS = 338,
+        TOKEN_DUID = 339,
+        TOKEN_HW_ADDRESS = 340,
+        TOKEN_CIRCUIT_ID = 341,
+        TOKEN_CLIENT_ID = 342,
+        TOKEN_HOSTNAME = 343,
+        TOKEN_FLEX_ID = 344,
+        TOKEN_RELAY = 345,
+        TOKEN_IP_ADDRESS = 346,
+        TOKEN_HOOKS_LIBRARIES = 347,
+        TOKEN_LIBRARY = 348,
+        TOKEN_PARAMETERS = 349,
+        TOKEN_EXPIRED_LEASES_PROCESSING = 350,
+        TOKEN_RECLAIM_TIMER_WAIT_TIME = 351,
+        TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 352,
+        TOKEN_HOLD_RECLAIMED_TIME = 353,
+        TOKEN_MAX_RECLAIM_LEASES = 354,
+        TOKEN_MAX_RECLAIM_TIME = 355,
+        TOKEN_UNWARNED_RECLAIM_CYCLES = 356,
+        TOKEN_DHCP4O6_PORT = 357,
+        TOKEN_CONTROL_SOCKET = 358,
+        TOKEN_SOCKET_TYPE = 359,
+        TOKEN_SOCKET_NAME = 360,
+        TOKEN_DHCP_DDNS = 361,
+        TOKEN_ENABLE_UPDATES = 362,
+        TOKEN_QUALIFYING_SUFFIX = 363,
+        TOKEN_SERVER_IP = 364,
+        TOKEN_SERVER_PORT = 365,
+        TOKEN_SENDER_IP = 366,
+        TOKEN_SENDER_PORT = 367,
+        TOKEN_MAX_QUEUE_SIZE = 368,
+        TOKEN_NCR_PROTOCOL = 369,
+        TOKEN_NCR_FORMAT = 370,
+        TOKEN_ALWAYS_INCLUDE_FQDN = 371,
+        TOKEN_OVERRIDE_NO_UPDATE = 372,
+        TOKEN_OVERRIDE_CLIENT_UPDATE = 373,
+        TOKEN_REPLACE_CLIENT_NAME = 374,
+        TOKEN_GENERATED_PREFIX = 375,
+        TOKEN_TCP = 376,
+        TOKEN_JSON = 377,
+        TOKEN_WHEN_PRESENT = 378,
+        TOKEN_NEVER = 379,
+        TOKEN_ALWAYS = 380,
+        TOKEN_WHEN_NOT_PRESENT = 381,
+        TOKEN_LOGGING = 382,
+        TOKEN_LOGGERS = 383,
+        TOKEN_OUTPUT_OPTIONS = 384,
+        TOKEN_OUTPUT = 385,
+        TOKEN_DEBUGLEVEL = 386,
+        TOKEN_SEVERITY = 387,
+        TOKEN_FLUSH = 388,
+        TOKEN_MAXSIZE = 389,
+        TOKEN_MAXVER = 390,
+        TOKEN_DHCP6 = 391,
+        TOKEN_DHCPDDNS = 392,
+        TOKEN_CONTROL_AGENT = 393,
+        TOKEN_TOPLEVEL_JSON = 394,
+        TOKEN_TOPLEVEL_DHCP4 = 395,
+        TOKEN_SUB_DHCP4 = 396,
+        TOKEN_SUB_INTERFACES4 = 397,
+        TOKEN_SUB_SUBNET4 = 398,
+        TOKEN_SUB_POOL4 = 399,
+        TOKEN_SUB_RESERVATION = 400,
+        TOKEN_SUB_OPTION_DEFS = 401,
+        TOKEN_SUB_OPTION_DEF = 402,
+        TOKEN_SUB_OPTION_DATA = 403,
+        TOKEN_SUB_HOOKS_LIBRARY = 404,
+        TOKEN_SUB_DHCP_DDNS = 405,
+        TOKEN_SUB_LOGGING = 406,
+        TOKEN_STRING = 407,
+        TOKEN_INTEGER = 408,
+        TOKEN_FLOAT = 409,
+        TOKEN_BOOLEAN = 410
       };
     };
 
@@ -771,6 +775,22 @@ namespace isc { namespace dhcp {
     symbol_type
     make_KEYSPACE (const location_type& l);
 
+    static inline
+    symbol_type
+    make_RECONNECT_WAIT_TIME (const location_type& l);
+
+    static inline
+    symbol_type
+    make_REQUEST_TIMEOUT (const location_type& l);
+
+    static inline
+    symbol_type
+    make_TCP_KEEPALIVE (const location_type& l);
+
+    static inline
+    symbol_type
+    make_TCP_NODELAY (const location_type& l);
+
     static inline
     symbol_type
     make_VALID_LIFETIME (const location_type& l);
@@ -1416,12 +1436,12 @@ namespace isc { namespace dhcp {
     enum
     {
       yyeof_ = 0,
-      yylast_ = 886,     ///< Last index in yytable_.
-      yynnts_ = 338,  ///< Number of nonterminal symbols.
+      yylast_ = 902,     ///< Last index in yytable_.
+      yynnts_ = 342,  ///< Number of nonterminal symbols.
       yyfinal_ = 28, ///< Termination state number.
       yyterror_ = 1,
       yyerrcode_ = 256,
-      yyntokens_ = 152  ///< Number of tokens.
+      yyntokens_ = 156  ///< Number of tokens.
     };
 
 
@@ -1478,9 +1498,10 @@ namespace isc { namespace dhcp {
      115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
      125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
      135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
-     145,   146,   147,   148,   149,   150,   151
+     145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
+     155
     };
-    const unsigned int user_token_number_max_ = 406;
+    const unsigned int user_token_number_max_ = 410;
     const token_number_type undef_token_ = 2;
 
     if (static_cast<int>(t) <= yyeof_)
@@ -1513,30 +1534,30 @@ namespace isc { namespace dhcp {
   {
       switch (other.type_get ())
     {
-      case 167: // value
-      case 171: // map_value
-      case 209: // socket_type
-      case 212: // outbound_interface_value
-      case 222: // db_type
-      case 299: // hr_mode
-      case 445: // ncr_protocol_value
-      case 453: // replace_client_name_value
+      case 171: // value
+      case 175: // map_value
+      case 213: // socket_type
+      case 216: // outbound_interface_value
+      case 226: // db_type
+      case 307: // hr_mode
+      case 453: // ncr_protocol_value
+      case 461: // replace_client_name_value
         value.copy< ElementPtr > (other.value);
         break;
 
-      case 151: // "boolean"
+      case 155: // "boolean"
         value.copy< bool > (other.value);
         break;
 
-      case 150: // "floating point"
+      case 154: // "floating point"
         value.copy< double > (other.value);
         break;
 
-      case 149: // "integer"
+      case 153: // "integer"
         value.copy< int64_t > (other.value);
         break;
 
-      case 148: // "constant string"
+      case 152: // "constant string"
         value.copy< std::string > (other.value);
         break;
 
@@ -1557,30 +1578,30 @@ namespace isc { namespace dhcp {
     (void) v;
       switch (this->type_get ())
     {
-      case 167: // value
-      case 171: // map_value
-      case 209: // socket_type
-      case 212: // outbound_interface_value
-      case 222: // db_type
-      case 299: // hr_mode
-      case 445: // ncr_protocol_value
-      case 453: // replace_client_name_value
+      case 171: // value
+      case 175: // map_value
+      case 213: // socket_type
+      case 216: // outbound_interface_value
+      case 226: // db_type
+      case 307: // hr_mode
+      case 453: // ncr_protocol_value
+      case 461: // replace_client_name_value
         value.copy< ElementPtr > (v);
         break;
 
-      case 151: // "boolean"
+      case 155: // "boolean"
         value.copy< bool > (v);
         break;
 
-      case 150: // "floating point"
+      case 154: // "floating point"
         value.copy< double > (v);
         break;
 
-      case 149: // "integer"
+      case 153: // "integer"
         value.copy< int64_t > (v);
         break;
 
-      case 148: // "constant string"
+      case 152: // "constant string"
         value.copy< std::string > (v);
         break;
 
@@ -1660,30 +1681,30 @@ namespace isc { namespace dhcp {
     // Type destructor.
     switch (yytype)
     {
-      case 167: // value
-      case 171: // map_value
-      case 209: // socket_type
-      case 212: // outbound_interface_value
-      case 222: // db_type
-      case 299: // hr_mode
-      case 445: // ncr_protocol_value
-      case 453: // replace_client_name_value
+      case 171: // value
+      case 175: // map_value
+      case 213: // socket_type
+      case 216: // outbound_interface_value
+      case 226: // db_type
+      case 307: // hr_mode
+      case 453: // ncr_protocol_value
+      case 461: // replace_client_name_value
         value.template destroy< ElementPtr > ();
         break;
 
-      case 151: // "boolean"
+      case 155: // "boolean"
         value.template destroy< bool > ();
         break;
 
-      case 150: // "floating point"
+      case 154: // "floating point"
         value.template destroy< double > ();
         break;
 
-      case 149: // "integer"
+      case 153: // "integer"
         value.template destroy< int64_t > ();
         break;
 
-      case 148: // "constant string"
+      case 152: // "constant string"
         value.template destroy< std::string > ();
         break;
 
@@ -1710,30 +1731,30 @@ namespace isc { namespace dhcp {
     super_type::move(s);
       switch (this->type_get ())
     {
-      case 167: // value
-      case 171: // map_value
-      case 209: // socket_type
-      case 212: // outbound_interface_value
-      case 222: // db_type
-      case 299: // hr_mode
-      case 445: // ncr_protocol_value
-      case 453: // replace_client_name_value
+      case 171: // value
+      case 175: // map_value
+      case 213: // socket_type
+      case 216: // outbound_interface_value
+      case 226: // db_type
+      case 307: // hr_mode
+      case 453: // ncr_protocol_value
+      case 461: // replace_client_name_value
         value.move< ElementPtr > (s.value);
         break;
 
-      case 151: // "boolean"
+      case 155: // "boolean"
         value.move< bool > (s.value);
         break;
 
-      case 150: // "floating point"
+      case 154: // "floating point"
         value.move< double > (s.value);
         break;
 
-      case 149: // "integer"
+      case 153: // "integer"
         value.move< int64_t > (s.value);
         break;
 
-      case 148: // "constant string"
+      case 152: // "constant string"
         value.move< std::string > (s.value);
         break;
 
@@ -1807,7 +1828,7 @@ namespace isc { namespace dhcp {
      375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
      385,   386,   387,   388,   389,   390,   391,   392,   393,   394,
      395,   396,   397,   398,   399,   400,   401,   402,   403,   404,
-     405,   406
+     405,   406,   407,   408,   409,   410
     };
     return static_cast<token_type> (yytoken_number_[type]);
   }
@@ -2052,6 +2073,30 @@ namespace isc { namespace dhcp {
     return symbol_type (token::TOKEN_KEYSPACE, l);
   }
 
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_RECONNECT_WAIT_TIME (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_RECONNECT_WAIT_TIME, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_REQUEST_TIMEOUT (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_REQUEST_TIMEOUT, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_TCP_KEEPALIVE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_TCP_KEEPALIVE, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_TCP_NODELAY (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_TCP_NODELAY, l);
+  }
+
   Dhcp4Parser::symbol_type
   Dhcp4Parser::make_VALID_LIFETIME (const location_type& l)
   {
@@ -2715,7 +2760,7 @@ namespace isc { namespace dhcp {
 
 #line 14 "dhcp4_parser.yy" // lalr1.cc:377
 } } // isc::dhcp
-#line 2719 "dhcp4_parser.h" // lalr1.cc:377
+#line 2764 "dhcp4_parser.h" // lalr1.cc:377
 
 
 
index 4b86a5428d7865c236f3bea8154fc1fcd9d72e83..00941edbe61389639ef8d6a16c26d5b09c874334 100644 (file)
@@ -1,27 +1,22 @@
-#line 1 "dhcp6_lexer.cc"
+#line 2 "dhcp6_lexer.cc"
 
-#line 3 "dhcp6_lexer.cc"
+#line 4 "dhcp6_lexer.cc"
 
 #define  YY_INT_ALIGNED short int
 
 /* A lexical scanner generated by flex */
 
 /* %not-for-header */
+
 /* %if-c-only */
 /* %if-not-reentrant */
 #define yy_create_buffer parser6__create_buffer
 #define yy_delete_buffer parser6__delete_buffer
-#define yy_scan_buffer parser6__scan_buffer
-#define yy_scan_string parser6__scan_string
-#define yy_scan_bytes parser6__scan_bytes
+#define yy_flex_debug parser6__flex_debug
 #define yy_init_buffer parser6__init_buffer
 #define yy_flush_buffer parser6__flush_buffer
 #define yy_load_buffer_state parser6__load_buffer_state
 #define yy_switch_to_buffer parser6__switch_to_buffer
-#define yypush_buffer_state parser6_push_buffer_state
-#define yypop_buffer_state parser6_pop_buffer_state
-#define yyensure_buffer_stack parser6_ensure_buffer_stack
-#define yy_flex_debug parser6__flex_debug
 #define yyin parser6_in
 #define yyleng parser6_leng
 #define yylex parser6_lex
@@ -41,7 +36,7 @@
 #define FLEX_SCANNER
 #define YY_FLEX_MAJOR_VERSION 2
 #define YY_FLEX_MINOR_VERSION 6
-#define YY_FLEX_SUBMINOR_VERSION 4
+#define YY_FLEX_SUBMINOR_VERSION 1
 #if YY_FLEX_SUBMINOR_VERSION > 0
 #define FLEX_BETA
 #endif
 /* %endif */
 
 /* %if-c-only */
-#ifdef yy_create_buffer
-#define parser6__create_buffer_ALREADY_DEFINED
-#else
-#define yy_create_buffer parser6__create_buffer
-#endif
-
-#ifdef yy_delete_buffer
-#define parser6__delete_buffer_ALREADY_DEFINED
-#else
-#define yy_delete_buffer parser6__delete_buffer
-#endif
-
-#ifdef yy_scan_buffer
-#define parser6__scan_buffer_ALREADY_DEFINED
-#else
-#define yy_scan_buffer parser6__scan_buffer
-#endif
-
-#ifdef yy_scan_string
-#define parser6__scan_string_ALREADY_DEFINED
-#else
-#define yy_scan_string parser6__scan_string
-#endif
-
-#ifdef yy_scan_bytes
-#define parser6__scan_bytes_ALREADY_DEFINED
-#else
-#define yy_scan_bytes parser6__scan_bytes
-#endif
-
-#ifdef yy_init_buffer
-#define parser6__init_buffer_ALREADY_DEFINED
-#else
-#define yy_init_buffer parser6__init_buffer
-#endif
-
-#ifdef yy_flush_buffer
-#define parser6__flush_buffer_ALREADY_DEFINED
-#else
-#define yy_flush_buffer parser6__flush_buffer
-#endif
-
-#ifdef yy_load_buffer_state
-#define parser6__load_buffer_state_ALREADY_DEFINED
-#else
-#define yy_load_buffer_state parser6__load_buffer_state
-#endif
-
-#ifdef yy_switch_to_buffer
-#define parser6__switch_to_buffer_ALREADY_DEFINED
-#else
-#define yy_switch_to_buffer parser6__switch_to_buffer
-#endif
-
-#ifdef yypush_buffer_state
-#define parser6_push_buffer_state_ALREADY_DEFINED
-#else
-#define yypush_buffer_state parser6_push_buffer_state
-#endif
-
-#ifdef yypop_buffer_state
-#define parser6_pop_buffer_state_ALREADY_DEFINED
-#else
-#define yypop_buffer_state parser6_pop_buffer_state
-#endif
-
-#ifdef yyensure_buffer_stack
-#define parser6_ensure_buffer_stack_ALREADY_DEFINED
-#else
-#define yyensure_buffer_stack parser6_ensure_buffer_stack
-#endif
-
-#ifdef yylex
-#define parser6_lex_ALREADY_DEFINED
-#else
-#define yylex parser6_lex
-#endif
-
-#ifdef yyrestart
-#define parser6_restart_ALREADY_DEFINED
-#else
-#define yyrestart parser6_restart
-#endif
-
-#ifdef yylex_init
-#define parser6_lex_init_ALREADY_DEFINED
-#else
-#define yylex_init parser6_lex_init
-#endif
-
-#ifdef yylex_init_extra
-#define parser6_lex_init_extra_ALREADY_DEFINED
-#else
-#define yylex_init_extra parser6_lex_init_extra
-#endif
-
-#ifdef yylex_destroy
-#define parser6_lex_destroy_ALREADY_DEFINED
-#else
-#define yylex_destroy parser6_lex_destroy
-#endif
-
-#ifdef yyget_debug
-#define parser6_get_debug_ALREADY_DEFINED
-#else
-#define yyget_debug parser6_get_debug
-#endif
-
-#ifdef yyset_debug
-#define parser6_set_debug_ALREADY_DEFINED
-#else
-#define yyset_debug parser6_set_debug
-#endif
-
-#ifdef yyget_extra
-#define parser6_get_extra_ALREADY_DEFINED
-#else
-#define yyget_extra parser6_get_extra
-#endif
-
-#ifdef yyset_extra
-#define parser6_set_extra_ALREADY_DEFINED
-#else
-#define yyset_extra parser6_set_extra
-#endif
-
-#ifdef yyget_in
-#define parser6_get_in_ALREADY_DEFINED
-#else
-#define yyget_in parser6_get_in
-#endif
-
-#ifdef yyset_in
-#define parser6_set_in_ALREADY_DEFINED
-#else
-#define yyset_in parser6_set_in
-#endif
-
-#ifdef yyget_out
-#define parser6_get_out_ALREADY_DEFINED
-#else
-#define yyget_out parser6_get_out
-#endif
-
-#ifdef yyset_out
-#define parser6_set_out_ALREADY_DEFINED
-#else
-#define yyset_out parser6_set_out
-#endif
-
-#ifdef yyget_leng
-#define parser6_get_leng_ALREADY_DEFINED
-#else
-#define yyget_leng parser6_get_leng
-#endif
-
-#ifdef yyget_text
-#define parser6_get_text_ALREADY_DEFINED
-#else
-#define yyget_text parser6_get_text
-#endif
-
-#ifdef yyget_lineno
-#define parser6_get_lineno_ALREADY_DEFINED
-#else
-#define yyget_lineno parser6_get_lineno
-#endif
-
-#ifdef yyset_lineno
-#define parser6_set_lineno_ALREADY_DEFINED
-#else
-#define yyset_lineno parser6_set_lineno
-#endif
-
-#ifdef yywrap
-#define parser6_wrap_ALREADY_DEFINED
-#else
-#define yywrap parser6_wrap
-#endif
-
+    
 /* %endif */
 
-#ifdef yyalloc
-#define parser6_alloc_ALREADY_DEFINED
-#else
-#define yyalloc parser6_alloc
-#endif
-
-#ifdef yyrealloc
-#define parser6_realloc_ALREADY_DEFINED
-#else
-#define yyrealloc parser6_realloc
-#endif
-
-#ifdef yyfree
-#define parser6_free_ALREADY_DEFINED
-#else
-#define yyfree parser6_free
-#endif
-
 /* %if-c-only */
 
-#ifdef yytext
-#define parser6_text_ALREADY_DEFINED
-#else
-#define yytext parser6_text
-#endif
-
-#ifdef yyleng
-#define parser6_leng_ALREADY_DEFINED
-#else
-#define yyleng parser6_leng
-#endif
-
-#ifdef yyin
-#define parser6_in_ALREADY_DEFINED
-#else
-#define yyin parser6_in
-#endif
-
-#ifdef yyout
-#define parser6_out_ALREADY_DEFINED
-#else
-#define yyout parser6_out
-#endif
-
-#ifdef yy_flex_debug
-#define parser6__flex_debug_ALREADY_DEFINED
-#else
-#define yy_flex_debug parser6__flex_debug
-#endif
-
-#ifdef yylineno
-#define parser6_lineno_ALREADY_DEFINED
-#else
-#define yylineno parser6_lineno
-#endif
-
 /* %endif */
 
 /* First, we deal with  platform-specific or compiler-specific issues. */
@@ -365,17 +127,12 @@ typedef unsigned int flex_uint32_t;
 #define UINT32_MAX             (4294967295U)
 #endif
 
-#ifndef SIZE_MAX
-#define SIZE_MAX               (~(size_t)0)
-#endif
-
 #endif /* ! C99 */
 
 #endif /* ! FLEXINT_H */
 
 /* %endif */
 
-/* begin standard C++ headers. */
 /* %if-c++-only */
 /* %endif */
 
@@ -389,15 +146,19 @@ typedef unsigned int flex_uint32_t;
 #endif
 
 /* %not-for-header */
+
 /* Returned upon end-of-file. */
 #define YY_NULL 0
 /* %ok-for-header */
 
 /* %not-for-header */
-/* Promotes a possibly negative, possibly signed char to an
- *   integer in range [0..255] for use as an array index.
+
+/* Promotes a possibly negative, possibly signed char to an unsigned
+ * integer for use as an array index.  If the signed char is negative,
+ * we want to instead treat it as an 8-bit unsigned char, hence the
+ * double cast.
  */
-#define YY_SC_TO_UI(c) ((YY_CHAR) (c))
+#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
 /* %ok-for-header */
 
 /* %if-reentrant */
@@ -412,16 +173,20 @@ typedef unsigned int flex_uint32_t;
  * definition of BEGIN.
  */
 #define BEGIN (yy_start) = 1 + 2 *
+
 /* Translate the current start state into a value that can be later handed
  * to BEGIN to return to the state.  The YYSTATE alias is for lex
  * compatibility.
  */
 #define YY_START (((yy_start) - 1) / 2)
 #define YYSTATE YY_START
+
 /* Action number for EOF rule of a given start state. */
 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
+
 /* Special action meaning "start processing a new file". */
-#define YY_NEW_FILE yyrestart( yyin  )
+#define YY_NEW_FILE parser6_restart(parser6_in  )
+
 #define YY_END_OF_BUFFER_CHAR 0
 
 /* Size of default input buffer. */
@@ -452,19 +217,19 @@ typedef size_t yy_size_t;
 #endif
 
 /* %if-not-reentrant */
-extern int yyleng;
+extern int parser6_leng;
 /* %endif */
 
 /* %if-c-only */
 /* %if-not-reentrant */
-extern FILE *yyin, *yyout;
+extern FILE *parser6_in, *parser6_out;
 /* %endif */
 /* %endif */
 
 #define EOB_ACT_CONTINUE_SCAN 0
 #define EOB_ACT_END_OF_FILE 1
 #define EOB_ACT_LAST_MATCH 2
-    
+
     #define YY_LESS_LINENO(n)
     #define YY_LINENO_REWIND_TO(ptr)
     
@@ -472,15 +237,16 @@ extern FILE *yyin, *yyout;
 #define yyless(n) \
        do \
                { \
-               /* Undo effects of setting up yytext. */ \
+               /* Undo effects of setting up parser6_text. */ \
         int yyless_macro_arg = (n); \
         YY_LESS_LINENO(yyless_macro_arg);\
                *yy_cp = (yy_hold_char); \
                YY_RESTORE_YY_MORE_OFFSET \
                (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
-               YY_DO_BEFORE_ACTION; /* set up yytext again */ \
+               YY_DO_BEFORE_ACTION; /* set up parser6_text again */ \
                } \
        while ( 0 )
+
 #define unput(c) yyunput( c, (yytext_ptr)  )
 
 #ifndef YY_STRUCT_YY_BUFFER_STATE
@@ -545,8 +311,8 @@ struct yy_buffer_state
         * possible backing-up.
         *
         * When we actually see the EOF, we change the status to "new"
-        * (via yyrestart()), so that the user can continue scanning by
-        * just pointing yyin at a new input file.
+        * (via parser6_restart()), so that the user can continue scanning by
+        * just pointing parser6_in at a new input file.
         */
 #define YY_BUFFER_EOF_PENDING 2
 
@@ -555,6 +321,7 @@ struct yy_buffer_state
 
 /* %if-c-only Standard (non-C++) definition */
 /* %not-for-header */
+
 /* %if-not-reentrant */
 
 /* Stack of input buffers. */
@@ -575,6 +342,7 @@ static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */
 #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
                           ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
                           : NULL)
+
 /* Same as previous macro, but useful when we know that the buffer stack is not
  * NULL or when we need an lvalue. For internal use only.
  */
@@ -584,115 +352,123 @@ static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */
 
 /* %if-not-reentrant */
 /* %not-for-header */
-/* yy_hold_char holds the character lost when yytext is formed. */
+
+/* yy_hold_char holds the character lost when parser6_text is formed. */
 static char yy_hold_char;
 static int yy_n_chars;         /* number of characters read into yy_ch_buf */
-int yyleng;
+int parser6_leng;
 
 /* Points to current character in buffer. */
 static char *yy_c_buf_p = NULL;
 static int yy_init = 0;                /* whether we need to initialize */
 static int yy_start = 0;       /* start state number */
 
-/* Flag which is used to allow yywrap()'s to do buffer switches
- * instead of setting up a fresh yyin.  A bit of a hack ...
+/* Flag which is used to allow parser6_wrap()'s to do buffer switches
+ * instead of setting up a fresh parser6_in.  A bit of a hack ...
  */
 static int yy_did_buffer_switch_on_eof;
 /* %ok-for-header */
 
 /* %endif */
 
-void yyrestart ( FILE *input_file  );
-void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer  );
-YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size  );
-void yy_delete_buffer ( YY_BUFFER_STATE b  );
-void yy_flush_buffer ( YY_BUFFER_STATE b  );
-void yypush_buffer_state ( YY_BUFFER_STATE new_buffer  );
-void yypop_buffer_state ( void );
+void parser6_restart (FILE *input_file  );
+void parser6__switch_to_buffer (YY_BUFFER_STATE new_buffer  );
+YY_BUFFER_STATE parser6__create_buffer (FILE *file,int size  );
+void parser6__delete_buffer (YY_BUFFER_STATE b  );
+void parser6__flush_buffer (YY_BUFFER_STATE b  );
+void parser6_push_buffer_state (YY_BUFFER_STATE new_buffer  );
+void parser6_pop_buffer_state (void );
 
-static void yyensure_buffer_stack ( void );
-static void yy_load_buffer_state ( void );
-static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file  );
-#define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER )
+static void parser6_ensure_buffer_stack (void );
+static void parser6__load_buffer_state (void );
+static void parser6__init_buffer (YY_BUFFER_STATE b,FILE *file  );
 
-YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size  );
-YY_BUFFER_STATE yy_scan_string ( const char *yy_str  );
-YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len  );
+#define YY_FLUSH_BUFFER parser6__flush_buffer(YY_CURRENT_BUFFER )
+
+YY_BUFFER_STATE parser6__scan_buffer (char *base,yy_size_t size  );
+YY_BUFFER_STATE parser6__scan_string (yyconst char *yy_str  );
+YY_BUFFER_STATE parser6__scan_bytes (yyconst char *bytes,int len  );
 
 /* %endif */
 
-void *yyalloc ( yy_size_t  );
-void *yyrealloc ( void *, yy_size_t  );
-void yyfree ( void *  );
+void *parser6_alloc (yy_size_t  );
+void *parser6_realloc (void *,yy_size_t  );
+void parser6_free (void *  );
+
+#define yy_new_buffer parser6__create_buffer
 
-#define yy_new_buffer yy_create_buffer
 #define yy_set_interactive(is_interactive) \
        { \
        if ( ! YY_CURRENT_BUFFER ){ \
-        yyensure_buffer_stack (); \
+        parser6_ensure_buffer_stack (); \
                YY_CURRENT_BUFFER_LVALUE =    \
-            yy_create_buffer( yyin, YY_BUF_SIZE ); \
+            parser6__create_buffer(parser6_in,YY_BUF_SIZE ); \
        } \
        YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
        }
+
 #define yy_set_bol(at_bol) \
        { \
        if ( ! YY_CURRENT_BUFFER ){\
-        yyensure_buffer_stack (); \
+        parser6_ensure_buffer_stack (); \
                YY_CURRENT_BUFFER_LVALUE =    \
-            yy_create_buffer( yyin, YY_BUF_SIZE ); \
+            parser6__create_buffer(parser6_in,YY_BUF_SIZE ); \
        } \
        YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
        }
+
 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
 
-/* %% [1.0] yytext/yyin/yyout/yy_state_type/yylineno etc. def's & init go here */
+/* %% [1.0] parser6_text/parser6_in/parser6_out/yy_state_type/parser6_lineno etc. def's & init go here */
 /* Begin user sect3 */
 
 #define parser6_wrap() (/*CONSTCOND*/1)
 #define YY_SKIP_YYWRAP
 
 #define FLEX_DEBUG
-typedef flex_uint8_t YY_CHAR;
 
-FILE *yyin = NULL, *yyout = NULL;
+typedef unsigned char YY_CHAR;
+
+FILE *parser6_in = NULL, *parser6_out = NULL;
 
 typedef int yy_state_type;
 
-extern int yylineno;
-int yylineno = 1;
+extern int parser6_lineno;
+
+int parser6_lineno = 1;
 
-extern char *yytext;
+extern char *parser6_text;
 #ifdef yytext_ptr
 #undef yytext_ptr
 #endif
-#define yytext_ptr yytext
+#define yytext_ptr parser6_text
 
 /* %% [1.5] DFA */
 
 /* %if-c-only Standard (non-C++) definition */
 
-static yy_state_type yy_get_previous_state ( void );
-static yy_state_type yy_try_NUL_trans ( yy_state_type current_state  );
-static int yy_get_next_buffer ( void );
-static void yynoreturn yy_fatal_error ( const char* msg  );
+static yy_state_type yy_get_previous_state (void );
+static yy_state_type yy_try_NUL_trans (yy_state_type current_state  );
+static int yy_get_next_buffer (void );
+static void yynoreturn yy_fatal_error (yyconst char* msg  );
 
 /* %endif */
 
 /* Done after the current pattern has been matched and before the
- * corresponding action - sets up yytext.
+ * corresponding action - sets up parser6_text.
  */
 #define YY_DO_BEFORE_ACTION \
        (yytext_ptr) = yy_bp; \
-/* %% [2.0] code to fiddle yytext and yyleng for yymore() goes here \ */\
-       yyleng = (int) (yy_cp - yy_bp); \
+/* %% [2.0] code to fiddle parser6_text and parser6_leng for yymore() goes here \ */\
+       parser6_leng = (int) (yy_cp - yy_bp); \
        (yy_hold_char) = *yy_cp; \
        *yy_cp = '\0'; \
-/* %% [3.0] code to copy yytext_ptr to yytext[] goes here, if %array \ */\
+/* %% [3.0] code to copy yytext_ptr to parser6_text[] 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 162
-#define YY_END_OF_BUFFER 163
+#define YY_NUM_RULES 166
+#define YY_END_OF_BUFFER 167
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -700,151 +476,157 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static const flex_int16_t yy_accept[1272] =
+static yyconst flex_int16_t yy_accept[1323] =
     {   0,
-      155,  155,    0,    0,    0,    0,    0,    0,    0,    0,
-      163,  161,   10,   11,  161,    1,  155,  152,  155,  155,
-      161,  154,  153,  161,  161,  161,  161,  161,  148,  149,
-      161,  161,  161,  150,  151,    5,    5,    5,  161,  161,
-      161,   10,   11,    0,    0,  144,    0,    0,    0,    0,
+      159,  159,    0,    0,    0,    0,    0,    0,    0,    0,
+      167,  165,   10,   11,  165,    1,  159,  156,  159,  159,
+      165,  158,  157,  165,  165,  165,  165,  165,  152,  153,
+      165,  165,  165,  154,  155,    5,    5,    5,  165,  165,
+      165,   10,   11,    0,    0,  148,    0,    0,    0,    0,
         0,    0,    0,    0,    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,  155,
-      155,    0,  154,  155,    3,    2,    6,    0,  155,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    1,  159,
+      159,    0,  158,  159,    3,    2,    6,    0,  159,    0,
         0,    0,    0,    0,    0,    4,    0,    0,    9,    0,
 
-      145,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  147,    0,    0,    0,
+      149,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  151,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         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,    0,  123,    0,    0,  124,    0,
-        0,    0,    0,    0,    0,    0,    0,  146,    0,    0,
+        0,    0,    0,    2,    0,    0,    0,    0,    0,    0,
+        0,    8,    0,    0,    0,    0,  127,    0,    0,  128,
+        0,    0,    0,    0,    0,    0,    0,    0,  150,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    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,   85,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  160,
-      158,    0,  157,  156,    0,    0,    0,    0,    0,    0,
-        0,  122,    0,    0,   27,    0,   26,    0,    0,   87,
-
-        0,    0,    0,    0,    0,    0,    0,   46,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,  164,  162,    0,  161,  160,    0,    0,    0,
+        0,    0,    0,    0,  126,    0,    0,   27,    0,   26,
+
+        0,    0,   91,    0,    0,    0,    0,    0,    0,    0,
+       46,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    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,    0,   89,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  159,  156,    0,    0,    0,    0,    0,    0,
-        0,    0,   28,    0,    0,   30,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  163,  160,    0,
+        0,    0,    0,    0,    0,    0,    0,   28,    0,    0,
 
-        0,   88,    0,    0,    0,    0,    0,   66,    0,    0,
-        0,    0,    0,    0,  107,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,   49,    0,    0,    0,    0,
+       30,    0,    0,    0,    0,    0,   92,    0,    0,    0,
+        0,    0,   70,    0,    0,    0,    0,    0,    0,  111,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   65,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   75,    0,   50,
+       49,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,   69,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   79,    0,   50,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  103,  127,   42,    0,   47,    0,    0,    0,    0,
-        0,    0,  141,   35,    0,   32,    0,   31,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      107,  131,   42,    0,   47,    0,    0,    0,    0,    0,
 
-        0,  115,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,  145,   35,    0,   32,    0,   31,    0,    0,    0,
+      119,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  100,
+        0,    0,    0,    0,    0,    0,    0,  130,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   44,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   72,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  120,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  115,    0,    0,
+        0,    0,    0,    0,    7,   33,    0,    0,    0,    0,
+
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       96,    0,    0,    0,    0,    0,    0,    0,  126,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   44,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,   68,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  116,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  111,    0,    0,    0,
-        0,    7,   33,    0,    0,    0,    0,    0,    0,    0,
+      102,    0,    0,    0,    0,    0,   99,    0,    0,    0,
+        0,    0,    0,    0,    0,   74,    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,   96,    0,    0,    0,    0,
+        0,   81,    0,    0,    0,    0,    0,    0,    0,    0,
 
+        0,    0,    0,    0,    0,    0,    0,  114,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,  124,   97,    0,    0,    0,  101,   43,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   51,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   98,    0,    0,
-        0,    0,    0,   95,    0,    0,    0,    0,    0,    0,
-        0,    0,   70,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   78,    0,    0,    0,    0,    0,    0,   92,    0,
-        0,    0,    0,    0,   77,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   65,    0,    0,    0,    0,    0,
+        0,  146,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   88,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  113,    0,    0,
+
+        0,    0,    0,   54,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   48,   73,    0,
+        0,    0,  110,    0,    0,    0,   41,    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,  120,   93,    0,    0,    0,
-       97,   43,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   51,    0,    0,    0,    0,    0,    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,    0,    0,    0,   61,    0,    0,    0,    0,
-      142,    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,  109,    0,    0,    0,
-        0,    0,   54,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   48,   69,    0,    0,
-
-        0,  106,    0,    0,    0,   41,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  100,    0,
+        0,    0,    0,  144,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   83,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  140,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   79,    0,    0,    0,    0,    0,    0,
+
+        0,   38,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,   16,    0,  125,   14,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   38,    0,    0,    0,
-        0,    0,    0,    0,   16,    0,  121,   14,    0,    0,
+        0,    0,    0,  116,  103,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  112,
+      129,    0,   37,    0,  121,    0,    0,    0,    0,    0,
+        0,   20,    0,    0,   67,    0,    0,    0,    0,  123,
+       45,    0,   75,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   71,    0,
 
-        0,    0,    0,    0,  112,   99,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  118,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      108,  125,    0,   37,    0,  117,    0,    0,    0,    0,
-        0,    0,   20,    0,    0,   63,    0,    0,    0,    0,
-      119,   45,    0,   71,    0,    0,    0,    0,    0,    0,
+        0,    0,   93,    0,    0,    0,   68,   90,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   62,
+        0,    0,    0,    0,   17,   15,    0,  143,  142,    0,
+       58,    0,    0,    0,    0,    0,   29,    0,  106,    0,
+        0,    0,    0,    0,    0,  140,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   84,    0,  109,    0,
+       52,    0,    0,    0,   19,    0,    0,    0,    0,    0,
+       86,   63,    0,    0,  117,    0,    0,    0,    0,  108,
+
+        0,    0,    0,   80,    0,  147,    0,    0,    0,    0,
+        0,    0,    0,   78,    0,  132,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,   67,    0,    0,    0,    0,
-        0,    0,    0,    0,  114,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   89,
-        0,    0,    0,   64,   86,    0,    0,    0,    0,    0,
-
-        0,    0,    0,    0,    0,   58,    0,    0,    0,   17,
-       15,    0,  139,  138,    0,    0,    0,    0,    0,   29,
-        0,  102,    0,    0,    0,    0,    0,    0,  136,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   80,
-        0,  105,    0,   52,    0,    0,    0,   19,    0,    0,
-        0,    0,    0,   82,   59,    0,  113,    0,    0,    0,
-      104,    0,    0,   76,    0,  143,    0,    0,    0,    0,
-        0,    0,    0,   74,    0,  128,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,   57,    0,    0,    0,    0,  105,    0,   59,  141,
+        0,   12,    0,    0,    0,    0,    0,    0,    0,   40,
+        0,   39,   18,    0,    0,   98,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   61,    0,
+        0,   53,    0,   76,    0,    0,    0,    0,    0,  122,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,    0,    0,  101,    0,   55,  137,    0,   12,    0,
-        0,    0,    0,    0,    0,    0,   40,    0,   39,   18,
-        0,    0,   94,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   57,    0,    0,   53,    0,   72,    0,
-        0,    0,    0,    0,  118,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   62,    0,   34,
-        0,    0,    0,    0,    0,   25,    0,    0,    0,    0,
-      134,    0,    0,    0,    0,    0,    0,    0,   83,    0,
-        0,    0,    0,    0,    0,    0,    0,   36,    0,    0,
-        0,    0,   13,    0,    0,    0,    0,    0,    0,    0,
-
-        0,    0,    0,    0,  133,    0,   22,   56,    0,    0,
-        0,    0,   21,    0,   73,    0,    0,  132,    0,    0,
-        0,    0,   24,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   56,    0,   66,    0,   34,    0,    0,    0,
+        0,    0,   25,    0,    0,    0,    0,  138,    0,    0,
+        0,    0,    0,    0,    0,    0,   87,    0,    0,    0,
+        0,    0,    0,    0,    0,   36,    0,    0,    0,    0,
+       13,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  137,    0,   22,   60,    0,    0,    0,
+        0,    0,   21,    0,   77,    0,    0,  136,    0,    0,
+        0,   55,    0,   24,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   23,    0,   90,    0,    0,    0,
-        0,    0,  130,  135,   60,    0,    0,    0,  129,    0,
-        0,    0,    0,    0,    0,    0,   91,    0,    0,  131,
-        0
+        0,    0,    0,    0,    0,   23,    0,   94,    0,    0,
+
+        0,    0,    0,  134,  139,   64,    0,    0,    0,  133,
+        0,    0,    0,    0,    0,    0,    0,   95,    0,    0,
+      135,    0
     } ;
 
-static const YY_CHAR yy_ec[256] =
+static yyconst YY_CHAR yy_ec[256] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
         1,    1,    2,    1,    1,    1,    1,    1,    1,    1,
@@ -876,7 +658,7 @@ static const YY_CHAR yy_ec[256] =
         5,    5,    5,    5,    5
     } ;
 
-static const YY_CHAR yy_meta[72] =
+static yyconst YY_CHAR yy_meta[72] =
     {   0,
         1,    1,    2,    3,    3,    4,    3,    3,    3,    3,
         3,    3,    3,    5,    5,    5,    3,    3,    3,    3,
@@ -888,313 +670,325 @@ static const YY_CHAR yy_meta[72] =
         3
     } ;
 
-static const flex_int16_t yy_base[1284] =
+static yyconst flex_uint16_t yy_base[1335] =
     {   0,
         0,   70,   19,   29,   41,   49,   52,   58,   87,   95,
-     1633, 1634,   32, 1629,  141,    0,  201, 1634,  206,   88,
-       11,  213, 1634, 1611,  114,   25,    2,    6, 1634, 1634,
-       73,   11,   17, 1634, 1634, 1634,  104, 1617, 1572,    0,
-     1609,  107, 1624,  217,  241, 1634,  185, 1568, 1574, 1594,
+     1686, 1687,   32, 1682,  141,    0,  201, 1687,  206,   88,
+       11,  213, 1687, 1664,  114,   25,    2,    6, 1687, 1687,
+       73,   11,   17, 1687, 1687, 1687,  104, 1670, 1625,    0,
+     1662,  107, 1677,  217,  241, 1687,  185, 1621, 1627, 1647,
        93,   58,  190,   91,  211,  200,   14,  267,  213,  175,
-      269,   64,  231, 1575,  187,   75, 1574,  274,  188,  290,
-      276,  295, 1557,  195,  296,  325,  305, 1576,    0,  349,
-      354,  367,  373,  376, 1634,    0, 1634,  267,  295,  290,
-      317,  339,  351,  355,  358, 1634, 1573, 1612, 1634,  308,
-
-     1634,  394,  357, 1560, 1570, 1609,  370,  220,  249, 1564,
-      367,  377,  369,  379,  302, 1607,    0,  445,  374, 1551,
-     1559,  361, 1555, 1544, 1545,  382, 1561, 1544, 1553,  400,
-      200,  366, 1547,  358, 1535, 1591,  425, 1538, 1589, 1531,
-     1554, 1551, 1551, 1545,  380, 1538, 1531, 1536, 1530, 1541,
-     1526, 1525, 1539,  380, 1575, 1524,  387, 1536, 1539, 1523,
-      441,  415, 1537, 1534, 1535, 1533, 1515, 1520, 1516, 1508,
-     1525, 1517,    0,  400,  424,  371,  416,  427,  429, 1516,
-     1634,    0,  444, 1507, 1510, 1634,  440,  451, 1634, 1562,
-     1517,  458, 1560,  459, 1559,  465, 1558, 1634,  509, 1557,
-
-      476, 1518, 1513, 1512, 1503,  294, 1552, 1546, 1512, 1491,
-     1499, 1505, 1493, 1507, 1503, 1504, 1504, 1499, 1491, 1493,
-     1477, 1481, 1494, 1494, 1486, 1476, 1479, 1493, 1634, 1479,
-     1487, 1490, 1471, 1470, 1520, 1469, 1479, 1517,  453, 1478,
-     1466, 1477, 1513, 1517, 1470,    9, 1460, 1476, 1457, 1459,
-     1455, 1461, 1452, 1451, 1464, 1457, 1459, 1463, 1462, 1456,
-       80, 1463, 1458, 1450, 1456, 1456, 1437, 1453, 1439, 1445,
-     1452, 1440, 1433, 1447, 1446, 1449, 1431, 1439,  479, 1634,
-     1634,  480, 1634, 1634, 1426,    0,  470, 1428,  495,  488,
-     1482, 1634, 1435,  468, 1634, 1480, 1634, 1474,  545, 1634,
-
-      473, 1416, 1426, 1476, 1433, 1432,  455, 1634, 1430, 1472,
-     1427, 1424, 1425,  506, 1429, 1467, 1417, 1412, 1409, 1405,
-     1407, 1456, 1415, 1404, 1453, 1401,  538, 1414, 1414, 1397,
-     1398, 1411, 1398, 1408, 1403, 1410, 1405, 1390,  479, 1399,
-     1402, 1397, 1393, 1441,  488, 1634, 1388, 1387, 1380, 1382,
-     1386, 1375, 1382, 1387,  353, 1432, 1387,  494, 1384, 1388,
-     1386, 1375, 1375, 1387, 1369, 1361, 1362, 1383, 1365, 1377,
-     1376, 1362, 1374, 1373, 1372, 1371, 1412, 1411, 1410, 1354,
-      537, 1367, 1634, 1634, 1366,    0,  511, 1354, 1405, 1404,
-     1362, 1402, 1634, 1350, 1400, 1634,  520,  587,  542, 1399,
-
-     1341, 1634, 1346, 1356, 1355, 1342, 1341, 1634, 1343, 1340,
-     1352, 1348, 1336, 1338, 1634, 1344, 1329, 1331, 1342, 1340,
-     1335,  569, 1342, 1324, 1373, 1634, 1322, 1338, 1370, 1374,
-     1332, 1326, 1328, 1329, 1331, 1363, 1316, 1311, 1310, 1312,
-     1305, 1320, 1298, 1305, 1310, 1358, 1634, 1305, 1301, 1304,
-     1311, 1296, 1306, 1309, 1298, 1297, 1292, 1634, 1347, 1634,
-     1291, 1290, 1283, 1300, 1337, 1284, 1289, 1298, 1292, 1296,
-      572, 1331, 1295, 1275, 1278, 1277, 1285, 1289, 1272, 1328,
-     1270, 1634, 1634, 1634, 1275, 1634, 1285, 1319, 1281,    0,
-     1322, 1272, 1634, 1634, 1269, 1634, 1275, 1634,  541,  553,
-
-      576, 1634, 1313, 1260, 1259, 1258, 1265, 1258, 1270, 1269,
-     1253, 1268, 1298, 1265, 1301, 1247, 1249, 1261, 1261, 1260,
-     1634, 1245, 1242, 1256, 1248, 1254, 1245, 1253, 1634, 1238,
-     1249, 1253, 1235, 1249, 1247, 1230, 1224, 1229, 1226, 1241,
-     1242, 1239, 1280, 1237, 1634, 1223, 1225, 1271, 1270,  508,
-     1233, 1216, 1217, 1222, 1213, 1634, 1227, 1213,  609, 1205,
-     1226, 1223, 1215, 1258, 1212, 1256, 1634, 1204, 1202, 1216,
-     1219, 1251, 1250, 1197, 1248, 1247, 1634,  558, 1209, 1198,
-     1200, 1634, 1634, 1243, 1191, 1246,  553,  537,  544, 1205,
-     1244, 1238, 1237, 1236, 1190, 1180, 1233, 1195, 1185, 1230,
-
-     1193, 1175, 1183, 1185, 1189, 1224, 1228, 1185, 1184, 1185,
-     1178, 1167, 1180, 1183, 1178, 1173, 1178, 1175, 1174, 1177,
-     1172, 1213, 1212, 1156, 1152, 1160, 1208, 1634, 1207, 1156,
-     1148, 1163, 1150, 1634, 1150, 1159, 1158, 1158, 1142, 1197,
-     1140, 1153, 1634, 1145, 1137, 1146, 1139, 1150, 1127, 1131,
-     1182, 1129, 1127, 1138, 1178, 1125,  546,  565, 1119, 1129,
-      562, 1634, 1179, 1137, 1126, 1130, 1137, 1174, 1634, 1168,
-      584, 1121, 1129, 1121, 1634, 1112, 1115, 1111, 1128, 1123,
-     1111, 1122, 1106, 1108, 1160, 1106, 1120, 1101, 1151, 1106,
-     1634, 1114, 1112, 1103, 1112, 1108, 1149, 1091, 1091, 1104,
-
-     1103, 1088, 1143, 1085, 1086, 1634, 1634, 1100, 1097, 1100,
-     1634, 1634, 1099, 1084,  578, 1083, 1081, 1128, 1077, 1131,
-     1130, 1634, 1075,   12,   76,  120,  184,  204,  200,  312,
-      285,  298,  407,  467,  507,  519,  529,  525,  539,  580,
-      549,  615,  575,  584,  561, 1634,  619,  574,  589,  590,
-     1634,  609,  617,  597,  587,  601,  595,  590,  591,  587,
-      596,  591,  642,  648,  597, 1634,  609,  595,  611,  601,
-      613,  607,  652,  620,  605,  606, 1634,  625,  608,  610,
-      666,  611, 1634,  630,  610,  628,  667,  627,  617,  635,
-      619,  634,  626,  622,  640,  625, 1634, 1634,  633,  678,
-
-      633, 1634,  641,  636,  687, 1634,  638,  643,  637,  639,
-      651,  645,  643,  696,  642,  698,  699,  645, 1634,  644,
-      652,  650,  649,  663,  664,  665,  681,  686,  660,  670,
-      656,  663,  668,  675,  716,  717,  666,  670, 1634,  665,
-      683,  681,  719,  670,  688,  689,  675,  683,  692,  672,
-      693,  733,  734, 1634,  689,  738,  739,  701,  703,  686,
-      688,  695,  746,  695,  710,  749,  701,  705,  703,  701,
-      754,  755,  707,  757,  753,  713, 1634,  718,  711,  720,
-      714,  709,  719,  715, 1634,  710, 1634, 1634,  711,  709,
-      728,  729,  730,  712,  717,  724,  757,  748,  720,  779,
-
-      724,  740,  732,  736, 1634, 1634,  746,  744,  730,  731,
-      789,  744,  749,  736,  747,  739,  745,  741,  759,  760,
-     1634, 1634,  759, 1634,  761, 1634,  746,  765,  755,  806,
-      761,  803, 1634,  760,  810, 1634,  811,  760,  767,  809,
-     1634, 1634,  769, 1634,  760,  760,  763,  777,  764,  775,
-      822,  781,  819,  825,  826,  775,  828,  829,  790,  774,
-      786,  776,  806,  835,  795, 1634,  837,  786,  782,  798,
-      803,  791,  843,  802, 1634,  804,  803,  805,  798,  807,
-      808,  805,  795,  797,  854,  803,  856,  801,  858, 1634,
-      796,  811,  861, 1634, 1634,  812,  822,  807,  823,  809,
-
-      869,  870,  816,  872,  831, 1634,  823,  826,  877, 1634,
-     1634,  823, 1634, 1634,  831,  881,  832,  883,  865, 1634,
-      843, 1634,  830,  829,  832,  832,  833,  891, 1634,  836,
-      893,  848,  839,  854,  854,  857,  857,  854,  859, 1634,
-      851, 1634,  861, 1634,  862,  863,  860, 1634,  852,  858,
-      857,  869,  869, 1634, 1634,  908, 1634,  873,  858,  864,
-     1634,  869,  880, 1634,  877, 1634,  896,  916,  922,  866,
-      924,  925,  880, 1634,  927, 1634,  867,  924,  889,  885,
-      927,  877,  882,  935,  893,  937,  938,  901,  890,  941,
-      885,  902,  887,  902,  886,  943,  944,  909,  895,  906,
-
-      953,  925,  912, 1634,  956, 1634, 1634,  905, 1634,  958,
-      906,  955,  900,  905,  964,  914, 1634,  920, 1634, 1634,
-      911,  926, 1634,  964,  932,  925,  926,  935,  922,  924,
-      934,  977,  928, 1634,  979,  926, 1634,  930, 1634,  934,
-      929,  928,  986,  941, 1634,  983,  945,  948,  991,  934,
-      936,  944,  934,  950,  944,  960,  999, 1634,  995, 1634,
-      960,  997,  961,  952,  959, 1634,  956,  961, 1008,  953,
-     1634,  957,  969,  970, 1013,  957,  958,  966, 1634,  977,
-      967,  966,  969,  981,  972,  981,  983, 1634, 1025,  985,
-     1027, 1028, 1634, 1024,  984,  989,  970, 1033,  992, 1035,
-
-      994,  995, 1038,  997, 1634, 1002, 1634, 1634,  984,  990,
-     1043, 1004, 1634,  990, 1634,  990,  992, 1634,  997,  992,
-     1004, 1000, 1634, 1003, 1007,  998, 1050,  999, 1015, 1008,
-     1003, 1018, 1009, 1016, 1003, 1018, 1065, 1024, 1067, 1012,
-     1028, 1019, 1033, 1029, 1634, 1073, 1634, 1074, 1075, 1032,
-     1031, 1032, 1634, 1634, 1634, 1079, 1023, 1039, 1634, 1077,
-     1028, 1027, 1029, 1040, 1087, 1038, 1634, 1047, 1090, 1634,
-     1634, 1096, 1101, 1106, 1111, 1116, 1121, 1126, 1129, 1103,
-     1108, 1110, 1123
+      269,   64,  231, 1628,  187,   75, 1627,  274,  188,  290,
+      276,  295, 1610,  195,  296,  325,  305, 1629,    0,  349,
+      354,  367,  373,  376, 1687,    0, 1687,  267,  295,  290,
+      317,  339,  351,  355,  358, 1687, 1626, 1665, 1687,  308,
+
+     1687,  394,  357, 1613, 1623, 1662,  370,  220,  249, 1617,
+      367,  377,  369,  379,  302, 1660,    0,  445,  374, 1604,
+     1612,  361, 1608, 1597, 1598,  382, 1614, 1597, 1606,  400,
+      200,  366, 1600,  358, 1588, 1644,  425, 1591, 1642, 1584,
+     1607, 1604, 1604, 1598,  380, 1591, 1584, 1589, 1583, 1594,
+     1579, 1578, 1592,  380, 1628, 1577,  387, 1589, 1592, 1576,
+      441,  415, 1590, 1587, 1588, 1586,  418, 1568, 1573, 1569,
+     1561, 1578, 1570,    0,  400,  424,  371,  420,  449,  440,
+     1569, 1687,    0,  453, 1560, 1563, 1687,  422,  445, 1687,
+     1615, 1570,  458, 1613,  470, 1612,  451, 1611, 1687,  505,
+
+     1610,  478, 1571, 1566, 1565, 1556,  294, 1605, 1599, 1565,
+     1544, 1552, 1558, 1546, 1560, 1556, 1557, 1557, 1552, 1544,
+     1546, 1530, 1534, 1547, 1547, 1539, 1529, 1532, 1546, 1687,
+     1532, 1540, 1543, 1524, 1523, 1573, 1522, 1532, 1570,  494,
+     1531, 1519, 1530, 1566, 1570, 1523,    9, 1513, 1529, 1510,
+     1512, 1508, 1514, 1505, 1504, 1517, 1510, 1512, 1516, 1515,
+     1509,   80, 1516, 1511, 1503, 1493, 1508, 1508, 1489, 1505,
+     1491, 1497, 1504, 1492,  501, 1485, 1499, 1498, 1501, 1483,
+     1491,  484, 1687, 1687,  485, 1687, 1687, 1478,    0,  472,
+     1480,  499,  488, 1534, 1687, 1487,  483, 1687, 1532, 1687,
+
+     1526,  546, 1687,  478, 1468, 1478, 1528, 1485, 1484,  480,
+     1687, 1482, 1524, 1479, 1476, 1477,  523, 1481, 1519, 1469,
+     1464, 1461, 1457, 1459, 1508, 1467, 1456, 1505, 1453,  552,
+     1466, 1466, 1449, 1450, 1463, 1450, 1460, 1455, 1462, 1457,
+     1442,  482, 1451, 1454, 1449, 1445, 1493,  476, 1687, 1440,
+     1439, 1432, 1434, 1438, 1427, 1434, 1439,  353, 1484, 1439,
+      525, 1436, 1440, 1438, 1427, 1427, 1439,  517, 1414, 1415,
+     1436, 1431, 1417, 1429, 1428, 1414, 1426, 1425, 1424, 1423,
+      206, 1464, 1463, 1462, 1406,  569, 1419, 1687, 1687, 1418,
+        0,  503, 1406, 1457, 1456, 1414, 1454, 1687, 1402, 1452,
+
+     1687,  525,  601,  514, 1451, 1393, 1687, 1398, 1408, 1407,
+     1394, 1393, 1687, 1395, 1392, 1404, 1400, 1388, 1390, 1687,
+     1396, 1381, 1383, 1394, 1392, 1387,  575, 1394, 1376, 1425,
+     1687, 1374, 1390, 1422, 1426, 1384, 1378, 1380, 1381, 1383,
+     1415, 1368, 1363, 1362, 1364, 1357, 1372, 1350, 1357, 1362,
+     1410, 1687, 1357, 1353, 1356, 1363, 1348, 1358, 1361, 1350,
+     1349, 1344, 1687, 1399, 1687, 1343, 1342, 1335, 1352, 1389,
+     1336, 1341, 1350, 1344, 1338, 1347,  577, 1382, 1346, 1329,
+     1325, 1328, 1327, 1335, 1339, 1322, 1378, 1320, 1334, 1323,
+     1687, 1687, 1687, 1323, 1687, 1333, 1367, 1329,    0, 1370,
+
+     1320, 1687, 1687, 1317, 1687, 1323, 1687,  508,  546,  590,
+     1687, 1361, 1308, 1307, 1306, 1313, 1306, 1318, 1317, 1301,
+     1316, 1346, 1313, 1349, 1295, 1297, 1309, 1309, 1308, 1687,
+     1293, 1290, 1304, 1296, 1302, 1293, 1301, 1687, 1286, 1297,
+     1301, 1283, 1297, 1295, 1278, 1272, 1277, 1274, 1289, 1290,
+     1287, 1328, 1285, 1687, 1271, 1273, 1319, 1318,  591, 1281,
+     1264, 1265, 1270, 1261, 1687, 1275, 1261,  592, 1253, 1274,
+     1271, 1263, 1306, 1260, 1267, 1303, 1687, 1251, 1249, 1263,
+     1247, 1265, 1297, 1296, 1243, 1294, 1293, 1687,  583, 1255,
+     1255, 1253, 1242, 1244, 1687, 1687, 1287, 1235, 1290,  550,
+
+      539,  548, 1249, 1288, 1282, 1281, 1280, 1234, 1224, 1277,
+     1239, 1229, 1274, 1237, 1219, 1227, 1229, 1233, 1268, 1272,
+     1229, 1228, 1229, 1222, 1211, 1224, 1227, 1222, 1217, 1222,
+     1219, 1218, 1221, 1216, 1257, 1256, 1200, 1196, 1204, 1252,
+     1687, 1251, 1200, 1192, 1207, 1194, 1687, 1194, 1203, 1202,
+     1202, 1186, 1241, 1184, 1197, 1687, 1189, 1181, 1190, 1183,
+     1194, 1171, 1175, 1226, 1190, 1172, 1170, 1181, 1221, 1220,
+     1167,  552,  553, 1161, 1171,  545, 1687, 1221, 1167, 1177,
+     1177, 1166, 1170, 1177, 1214, 1687, 1208,  594, 1161, 1169,
+     1161, 1687, 1152, 1155, 1151, 1168, 1163, 1151, 1162, 1146,
+
+     1148, 1200, 1146, 1160, 1141, 1191, 1146, 1687, 1154, 1152,
+     1143, 1152, 1148, 1189, 1131, 1131, 1144, 1143, 1128, 1183,
+     1125,   63, 1687, 1687,   80,  193,  274, 1687, 1687,  293,
+      303,  585,  406,  486,  536,  545,  612,  613, 1687,  560,
+      574,  582,  625,  575,  579,  573,  631,  586,  576,  578,
+      574,  584,  588,  605,  589,  601,  595,  597,  610,  600,
+      653,  612,  617,  594, 1687,  619,  609,  654,  603,  618,
+      618, 1687,  638,  646,  626,  616,  630,  623,  618,  619,
+      615,  624,  619,  670,  676,  625, 1687,  637,  622,  638,
+      628,  640,  634,  679,  647,  631,  632, 1687,  651,  634,
+
+      637,  693,  638, 1687,  657,  637,  655,  694,  654,  644,
+      662,  646,  661,  653,  649,  667,  652, 1687, 1687,  660,
+      705,  660, 1687,  668,  663,  714, 1687,  665,  670,  712,
+      666,  667,  679,  673,  677,  672,  725,  671,  727,  728,
+      674, 1687,  673,  681,  679,  684,  696,  680,  694,  695,
+      696,  712,  717,  691,  701,  687,  694,  699,  706,  747,
+      748,  698,  702, 1687,  697,  715,  712,  750,  701,  719,
+      720,  706,  714,  723,  703,  724,  764,  765, 1687,  720,
+      769,  770,  732,  734,  717,  719,  726,  777,  726,  741,
+      780,  732,  736,  734,  732,  785,  786,  738,  788,  784,
+
+      744, 1687,  749,  742,  733,  752,  746,  741,  751,  748,
+      748, 1687,  743, 1687, 1687,  744,  742,  761,  762,  759,
+      744,  765,  747,  752,  759,  792,  784,  756,  815,  760,
+      775,  767,  771, 1687, 1687,  781,  779,  765,  766,  824,
+      779,  784,  771,  782,  774,  780,  776,  794,  795, 1687,
+     1687,  794, 1687,  796, 1687,  781,  800,  790,  840,  796,
+      838, 1687,  795,  845, 1687,  846,  795,  802,  844, 1687,
+     1687,  804, 1687,  795,  795,  798,  812,  817,  800,  811,
+      858,  817,  818,  856,  862,  863,  812,  865,  866,  808,
+      868,  829,  813,  825,  815,  845,  874,  834, 1687,  876,
+
+      825,  821,  837,  842,  830,  882,  841, 1687,  843,  842,
+      844,  837,  846,  847,  844,  834,  836,  893,  842,  895,
+      840,  897, 1687,  835,  850,  900, 1687, 1687,  851,  861,
+      846,  862,  848,  908,  909,  855,  865,  913,  872, 1687,
+      864,  864,  867,  919, 1687, 1687,  865, 1687, 1687,  879,
+     1687,  873,  923,  874,  925,  907, 1687,  885, 1687,  872,
+      871,  874,  874,  875,  933, 1687,  878,  935,  890,  881,
+      896,  896,  899,  899,  896,  901, 1687,  893, 1687,  903,
+     1687,  904,  905,  902, 1687,  894,  900,  899,  911,  911,
+     1687, 1687,  950,  899, 1687,  916,  901,  901,  908, 1687,
+
+      913,  962,  925, 1687,  922, 1687,  941,  961,  967,  911,
+      969,  970,  925, 1687,  972, 1687,  912,  969,  934,  930,
+      972,  922,  927,  980,  938,  982,  983,  946,  935,  986,
+      930,  947,  932,  947,  931,  988,  989,  990,  939,  956,
+      942, 1687,  953, 1000,  972,  959, 1687, 1003, 1687, 1687,
+      952, 1687, 1005,  953, 1002,  947,  952, 1011,  961, 1687,
+      967, 1687, 1687,  958,  973, 1687, 1011,  979,  972,  973,
+      982,  964,  970,  972, 1024,  983, 1026,  977, 1687, 1028,
+      976, 1687,  980, 1687,  983,  978,  977, 1035,  990, 1687,
+     1032,  994,  997, 1040,  983,  985,  993,  983,  999, 1000,
+
+      994, 1010, 1687, 1049, 1687, 1045, 1687, 1010, 1047, 1011,
+     1002, 1009, 1687, 1006, 1011, 1058, 1003, 1687, 1007, 1019,
+     1020, 1063, 1007, 1015, 1009, 1017, 1687, 1028, 1018, 1017,
+     1020, 1032, 1023, 1032, 1034, 1687, 1076, 1036, 1078, 1079,
+     1687, 1075, 1039, 1036, 1041, 1022, 1085, 1044, 1087, 1046,
+     1047, 1090, 1049, 1687, 1054, 1687, 1687, 1036, 1094, 1043,
+     1096, 1057, 1687, 1043, 1687, 1043, 1045, 1687, 1050, 1045,
+     1057, 1687, 1053, 1687, 1056, 1060, 1051, 1103, 1052, 1068,
+     1061, 1056, 1071, 1062, 1069, 1056, 1071, 1118, 1077, 1120,
+     1065, 1081, 1072, 1086, 1082, 1687, 1126, 1687, 1127, 1128,
+
+     1085, 1084, 1085, 1687, 1687, 1687, 1132, 1076, 1092, 1687,
+     1130, 1081, 1080, 1082, 1093, 1140, 1091, 1687, 1100, 1143,
+     1687, 1687, 1149, 1154, 1159, 1164, 1169, 1174, 1179, 1182,
+     1156, 1161, 1163, 1176
     } ;
 
-static const flex_int16_t yy_def[1284] =
+static yyconst flex_int16_t yy_def[1335] =
     {   0,
-     1272, 1272, 1273, 1273, 1272, 1272, 1272, 1272, 1272, 1272,
-     1271, 1271, 1271, 1271, 1271, 1274, 1271, 1271, 1271, 1271,
-     1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271,
-     1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1275,
-     1271, 1271, 1271, 1276,   15, 1271,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1277,   45,   45,
+     1323, 1323, 1324, 1324, 1323, 1323, 1323, 1323, 1323, 1323,
+     1322, 1322, 1322, 1322, 1322, 1325, 1322, 1322, 1322, 1322,
+     1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322,
+     1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1326,
+     1322, 1322, 1322, 1327,   15, 1322,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1328,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1274, 1271,
-     1271, 1271, 1271, 1271, 1271, 1278, 1271, 1271, 1271, 1271,
-     1271, 1271, 1271, 1271, 1271, 1271, 1271, 1275, 1271, 1276,
+       45,   45,   45,   45,   45,   45,   45,   45, 1325, 1322,
+     1322, 1322, 1322, 1322, 1322, 1329, 1322, 1322, 1322, 1322,
+     1322, 1322, 1322, 1322, 1322, 1322, 1322, 1326, 1322, 1327,
 
-     1271, 1271,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1279,   45, 1277,   45,   45,
+     1322, 1322,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1330,   45, 1328,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1278, 1271, 1271, 1271, 1271, 1271, 1271, 1271,
-     1271, 1280,   45,   45,   45, 1271,   45,   45, 1271,   45,
-       45,   45,   45,   45,   45,   45, 1279, 1271, 1277,   45,
+       45,   45,   45, 1329, 1322, 1322, 1322, 1322, 1322, 1322,
+     1322, 1322, 1331,   45,   45,   45, 1322,   45,   45, 1322,
+       45,   45,   45,   45,   45,   45,   45, 1330, 1322, 1328,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1271,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1322,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1271, 1271,
-     1271, 1271, 1271, 1271, 1271, 1281,   45,   45,   45,   45,
-       45, 1271,   45,   45, 1271,   45, 1271,   45, 1277, 1271,
-
-       45,   45,   45,   45,   45,   45,   45, 1271,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1332,   45,
+       45,   45,   45,   45, 1322,   45,   45, 1322,   45, 1322,
+
+       45, 1328, 1322,   45,   45,   45,   45,   45,   45,   45,
+     1322,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1271,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1322,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1271, 1271, 1271, 1282,   45,   45,   45,   45,
-       45,   45, 1271,   45,   45, 1271,   45, 1277,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1322, 1322, 1322,
+     1333,   45,   45,   45,   45,   45,   45, 1322,   45,   45,
 
-       45, 1271,   45,   45,   45,   45,   45, 1271,   45,   45,
-       45,   45,   45,   45, 1271,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1271,   45,   45,   45,   45,
+     1322,   45, 1328,   45,   45,   45, 1322,   45,   45,   45,
+       45,   45, 1322,   45,   45,   45,   45,   45,   45, 1322,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+     1322,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1322,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1322,   45, 1322,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1271,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1271,   45, 1271,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+     1322, 1322, 1322,   45, 1322,   45,   45, 1322, 1334,   45,
+
+       45, 1322, 1322,   45, 1322,   45, 1322,   45,   45,   45,
+     1322,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1322,
+       45,   45,   45,   45,   45,   45,   45, 1322,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1271, 1271, 1271,   45, 1271,   45,   45, 1271, 1283,
-       45,   45, 1271, 1271,   45, 1271,   45, 1271,   45,   45,
+       45,   45,   45, 1322,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1322,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1322,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1322,   45,   45,
+       45,   45,   45,   45, 1322, 1322,   45,   45,   45,   45,
 
-       45, 1271,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1271,   45,   45,   45,   45,   45,   45,   45, 1271,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1271,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1271,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1271,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1271,   45,   45,   45,
-       45, 1271, 1271,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+     1322,   45,   45,   45,   45,   45, 1322,   45,   45,   45,
+       45,   45,   45,   45,   45, 1322,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1322,   45,   45,   45,
+       45,   45,   45,   45,   45, 1322,   45,   45,   45,   45,
+       45, 1322,   45,   45,   45,   45,   45,   45,   45,   45,
 
+       45,   45,   45,   45,   45,   45,   45, 1322,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1322, 1322,   45,   45,   45, 1322, 1322,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1322,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1271,   45,   45,
-       45,   45,   45, 1271,   45,   45,   45,   45,   45,   45,
-       45,   45, 1271,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1271,   45,   45,   45,   45,   45,   45, 1271,   45,
-       45,   45,   45,   45, 1271,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1322,   45,   45,   45,   45,   45,
+       45, 1322,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1322,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1322,   45,   45,
+
+       45,   45,   45, 1322,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1322, 1322,   45,
+       45,   45, 1322,   45,   45,   45, 1322,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1271,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-
-       45,   45,   45,   45,   45, 1271, 1271,   45,   45,   45,
-     1271, 1271,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1271,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1322,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1271,   45,   45,   45,   45,
-     1271,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1271,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1271,   45,   45,   45,
-       45,   45, 1271,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1271, 1271,   45,   45,
-
-       45, 1271,   45,   45,   45, 1271,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1271,   45,
+       45,   45,   45, 1322,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1322,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1271,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1271,   45,   45,   45,   45,   45,   45,
+
+       45, 1322,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1322,   45, 1322, 1322,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1271,   45,   45,   45,
-       45,   45,   45,   45, 1271,   45, 1271, 1271,   45,   45,
+       45,   45,   45, 1322, 1322,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1322,
+     1322,   45, 1322,   45, 1322,   45,   45,   45,   45,   45,
+       45, 1322,   45,   45, 1322,   45,   45,   45,   45, 1322,
+     1322,   45, 1322,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1322,   45,
 
-       45,   45,   45,   45, 1271, 1271,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1322,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1271, 1271,   45, 1271,   45, 1271,   45,   45,   45,   45,
-       45,   45, 1271,   45,   45, 1271,   45,   45,   45,   45,
-     1271, 1271,   45, 1271,   45,   45,   45,   45,   45,   45,
+       45,   45, 1322,   45,   45,   45, 1322, 1322,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1322,
+       45,   45,   45,   45, 1322, 1322,   45, 1322, 1322,   45,
+     1322,   45,   45,   45,   45,   45, 1322,   45, 1322,   45,
+       45,   45,   45,   45,   45, 1322,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1322,   45, 1322,   45,
+     1322,   45,   45,   45, 1322,   45,   45,   45,   45,   45,
+     1322, 1322,   45,   45, 1322,   45,   45,   45,   45, 1322,
+
+       45,   45,   45, 1322,   45, 1322,   45,   45,   45,   45,
+       45,   45,   45, 1322,   45, 1322,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1271,   45,   45,   45,   45,
-       45,   45,   45,   45, 1271,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1271,
-       45,   45,   45, 1271, 1271,   45,   45,   45,   45,   45,
-
-       45,   45,   45,   45,   45, 1271,   45,   45,   45, 1271,
-     1271,   45, 1271, 1271,   45,   45,   45,   45,   45, 1271,
-       45, 1271,   45,   45,   45,   45,   45,   45, 1271,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1271,
-       45, 1271,   45, 1271,   45,   45,   45, 1271,   45,   45,
-       45,   45,   45, 1271, 1271,   45, 1271,   45,   45,   45,
-     1271,   45,   45, 1271,   45, 1271,   45,   45,   45,   45,
-       45,   45,   45, 1271,   45, 1271,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1322,   45,   45,   45,   45, 1322,   45, 1322, 1322,
+       45, 1322,   45,   45,   45,   45,   45,   45,   45, 1322,
+       45, 1322, 1322,   45,   45, 1322,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1322,   45,
+       45, 1322,   45, 1322,   45,   45,   45,   45,   45, 1322,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
-       45,   45,   45, 1271,   45, 1271, 1271,   45, 1271,   45,
-       45,   45,   45,   45,   45,   45, 1271,   45, 1271, 1271,
-       45,   45, 1271,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1271,   45,   45, 1271,   45, 1271,   45,
-       45,   45,   45,   45, 1271,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1271,   45, 1271,
-       45,   45,   45,   45,   45, 1271,   45,   45,   45,   45,
-     1271,   45,   45,   45,   45,   45,   45,   45, 1271,   45,
-       45,   45,   45,   45,   45,   45,   45, 1271,   45,   45,
-       45,   45, 1271,   45,   45,   45,   45,   45,   45,   45,
-
-       45,   45,   45,   45, 1271,   45, 1271, 1271,   45,   45,
-       45,   45, 1271,   45, 1271,   45,   45, 1271,   45,   45,
-       45,   45, 1271,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1322,   45, 1322,   45, 1322,   45,   45,   45,
+       45,   45, 1322,   45,   45,   45,   45, 1322,   45,   45,
+       45,   45,   45,   45,   45,   45, 1322,   45,   45,   45,
+       45,   45,   45,   45,   45, 1322,   45,   45,   45,   45,
+     1322,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1322,   45, 1322, 1322,   45,   45,   45,
+       45,   45, 1322,   45, 1322,   45,   45, 1322,   45,   45,
+       45, 1322,   45, 1322,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1271,   45, 1271,   45,   45,   45,
-       45,   45, 1271, 1271, 1271,   45,   45,   45, 1271,   45,
-       45,   45,   45,   45,   45,   45, 1271,   45,   45, 1271,
-        0, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271,
-     1271, 1271, 1271
+       45,   45,   45,   45,   45, 1322,   45, 1322,   45,   45,
+
+       45,   45,   45, 1322, 1322, 1322,   45,   45,   45, 1322,
+       45,   45,   45,   45,   45,   45,   45, 1322,   45,   45,
+     1322,    0, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322,
+     1322, 1322, 1322, 1322
     } ;
 
-static const flex_int16_t yy_nxt[1706] =
+static yyconst flex_uint16_t yy_nxt[1759] =
     {   0,
-     1271,   13,   14,   13, 1271,   15,   16, 1271,   17,   18,
-       19,   20,   21,   22,   22,   22,   23,   24,   85,  348,
-       37,   14,   37,   86,   25,   26,   38, 1271, 1271,   27,
+     1322,   13,   14,   13, 1322,   15,   16, 1322,   17,   18,
+       19,   20,   21,   22,   22,   22,   23,   24,   85,  351,
+       37,   14,   37,   86,   25,   26,   38, 1322, 1322,   27,
        37,   14,   37,   42,   28,   42,   38,   91,   92,   29,
       115,   30,   13,   14,   13,   90,   91,   25,   31,   92,
-       13,   14,   13,   13,   14,   13,   32,   40,  800,   13,
-       14,   13,   33,   40,  115,   91,   92,  349,   90,   34,
+       13,   14,   13,   13,   14,   13,   32,   40, 1322,   13,
+       14,   13,   33,   40,  115,   91,   92,  352,   90,   34,
        35,   13,   14,   13,   94,   15,   16,   95,   17,   18,
        19,   20,   21,   22,   22,   22,   23,   24,   13,   14,
        13,  108,   39,   90,   25,   26,   13,   14,   13,   27,
 
        39,   84,   84,   84,   28,   42,   41,   42,   42,   29,
        42,   30,   82,  107,   41,  111,   93,   25,   31,  108,
-      130,  137,   88,  801,   88,  802,   32,   89,   89,   89,
-      131,  138,   33,  139,  364,   82,  107,  365,  111,   34,
+      130,  137,   88,  806,   88,  807,   32,   89,   89,   89,
+      131,  138,   33,  139,  367,   82,  107,  368,  111,   34,
        35,   44,   44,   44,   45,   45,   46,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   47,   45,   48,   49,   50,   51,   45,   52,   53,
@@ -1206,187 +1000,192 @@ static const flex_int16_t yy_nxt[1706] =
        45,   45,   80,  103,   81,   81,   81,   80,  109,   83,
        83,   83,  101,  114,   80,   82,   83,   83,   83,  121,
        82,  145,  122,  112,  123,  146,  124,   82,  160,  103,
-      803,  103,  161,  113,  134,  219,  114,  110,   82,  135,
-      188,  107,  136,   82,  189,  147,  112,  102,  220,  804,
-       82,   45,  805,   45,   45,   45,   45,  119,   45,   45,
-       45,  113,  117,  120,  107,   45,   45,  188,   45,   45,
-       89,   89,   89,  190,   45,  132,   45,   45,   45,   45,
+      808,  103,  161,  113,  134,  220,  114,  110,   82,  135,
+      189,  107,  136,   82,  190,  147,  112,  102,  221,  489,
+       82,   45,  490,   45,   45,   45,   45,  119,   45,   45,
+       45,  113,  117,  120,  107,   45,   45,  189,   45,   45,
+       89,   89,   89,  191,   45,  132,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,   89,   89,
-       89,   45,  125,  101,  111,   45,  126,  806,  174,  127,
-      128,  141,  142,   45,  150,  143,  196,   45,  114,   45,
-      118,  144,  129,  148,  151,  149,  807,  111,  154,  152,
-      153,  155,  156,  162,  174,  175,  163,  112,  102,  196,
-      306,  114,  157,  164,  165,  158,  307,  113,  458,  166,
-      808,  170,   84,   84,   84,   80,  171,   81,   81,   81,
-      112,  175,  167,   82,  176,   88,  168,   88,   82,  174,
-       89,   89,   89,  175,   80,  113,   83,   83,   83,   84,
-       84,   84,  169,  176,  183,  281,   82,   82,  187,  100,
-
-       82,   82,  176,  192,  194,  177,  100,  204,  193,  178,
-      195,  183,  224,  221,  459,  225,  205,  206,  281,  226,
-       82,  179,  183,   82,  187,  238,  210,  211,  200,  222,
-      229,  192,  194,  279,  100,  193,  212,  195,  100,  201,
-      248,  249,  100,  216,  252,  217,  239,  253,  254,  279,
-      100,  258,  280,  281,  100,  280,  100,  182,  199,  199,
-      199,  279,  218,  339,  287,  199,  199,  199,  199,  199,
-      199,  266,  230,  290,  809,  267,  284,  282,  280,  268,
-      291,  283,  294,  296,  259,  260,  261,  287,  199,  199,
-      199,  199,  199,  199,  298,  262,  287,  263,  405,  264,
-
-      395,  290,  265,  383,  383,  294,  296,  291,  387,  389,
-      390,  387,  392,  634,  340,  406,  412,  341,  391,  301,
-      413,  298,  299,  299,  299,  810,  383,  384,  395,  299,
-      299,  299,  299,  299,  299,  392,  448,  387,  441,  442,
-      399,  462,  486,  426,  491,  463,  449,  487,  427,  499,
-      635,  500,  299,  299,  299,  299,  299,  299,  398,  398,
-      398,  671,  811,  662,  812,  398,  398,  398,  398,  398,
-      398,  587,  491,  663,  521,  491,  499,  567,  500,  522,
-      813,  583,  568,  814,  671,  588,  589,  670,  398,  398,
-      398,  398,  398,  398,  428,  672,  815,  738,  587,  429,
-
-       45,   45,   45,  501,  739,  673,  818,   45,   45,   45,
-       45,   45,   45,  588,  643,  670,  740,  753,  744,  644,
-      819,  791,  820,  741,  745,  792,  816,  821,  822,  823,
-       45,   45,   45,   45,   45,   45,  824,  825,  817,  826,
-      827,  828,  829,  830,  831,  753,  832,  833,  834,  835,
-      836,  837,  838,  839,  840,  841,  645,  842,  843,  844,
-      845,  846,  847,  848,  828,  849,  850,  827,  851,  852,
-      853,  854,  857,  858,  859,  860,  855,  861,  862,  863,
-      864,  865,  866,  867,  868,  869,  871,  872,  873,  874,
-      875,  876,  877,  878,  879,  880,  870,  881,  882,  883,
-
-      884,  885,  886,  887,  888,  889,  890,  891,  892,  893,
-      894,  895,  896,  897,  899,  898,  900,  901,  902,  903,
-      904,  905,  906,  907,  908,  909,  910,  856,  911,  912,
-      913,  914,  915,  916,  917,  918,  919,  920,  921,  922,
-      923,  897,  898,  924,  926,  928,  929,  930,  925,  931,
-      932,  933,  934,  935,  936,  937,  938,  939,  940,  941,
-      942,  943,  944,  945,  946,  947,  948,  949,  950,  951,
-      952,  953,  954,  955,  956,  957,  958,  959,  960,  961,
-      962,  963,  964,  965,  966,  967,  927,  968,  969,  970,
-      971,  972,  973,  974,  975,  976,  977,  978,  979,  980,
-
-      981,  982,  983,  984,  963,  985,  986,  987,  988,  989,
-      964,  990,  991,  992,  993,  994,  995,  996,  997,  998,
+       89,   45,  125,  101,  111,   45,  126,  809,  175,  127,
+      128,  141,  142,   45,  150,  143,  197,   45,  114,   45,
+      118,  144,  129,  148,  151,  149,  810,  111,  154,  152,
+      153,  155,  156,  162,  175,  176,  163,  112,  102,  197,
+      309,  114,  157,  164,  165,  158,  310,  113,  463,  166,
+      811,  171,   84,   84,   84,   80,  172,   81,   81,   81,
+      167,  176,  168,   82,  177,   88,  169,   88,   82,  175,
+       89,   89,   89,  176,   80,  113,   83,   83,   83,   84,
+       84,   84,  170,  177,  184,  284,   82,   82,  188,  100,
+
+       82,   82,  177,  193,  195,  178,  100,  205,  194,  179,
+      196,  184,  225,  222,  464,  226,  206,  207,  284,  227,
+       82,  180,  184,   82,  188,  239,  211,  212,  201,  223,
+      230,  193,  195,  282,  100,  194,  213,  196,  100,  202,
+      249,  250,  100,  217,  253,  218,  240,  254,  255,  194,
+      100,  259,  283,  282,  100,  293,  100,  183,  200,  200,
+      200,  282,  219,  814,  284,  200,  200,  200,  200,  200,
+      200,  268,  231,  290,  294,  269,  275,  283,  283,  270,
+      301,  285,  297,  293,  260,  261,  262,  287,  200,  200,
+      200,  200,  200,  200,  299,  263,  290,  264,  290,  265,
+
+      266,  294,  267,  286,  342,  297,  298,  301,  388,  388,
+      392,  381,  397,  394,  395,  400,  392,  299,  302,  302,
+      302,  304,  396,  410,  453,  302,  302,  302,  302,  302,
+      302,  388,  389,  417,  454,  397,  500,  418,  600,  392,
+      411,  446,  447,  400,  815,  404,  816,  500,  302,  302,
+      302,  302,  302,  302,  508,  343,  509,  431,  344,  403,
+      403,  403,  432,  688,  500,  600,  403,  403,  403,  403,
+      403,  403,  467,  475,  495,  510,  468,  476,  601,  496,
+      530,  508,  577,  509,  687,  531,  688,  578,  677,  403,
+      403,  403,  403,  403,  403,  596,  647,  656,  678,  689,
+
+      602,  763,  657,  757,  759,  817,  601,  764,  433,  690,
+      758,  760,  687,  434,   45,   45,   45,  818,  819,  820,
+      821,   45,   45,   45,   45,   45,   45,  774,  812,  822,
+      823,  824,  813,  648,  825,  826,  827,  828,  829,  658,
+      830,  831,  832,  833,   45,   45,   45,   45,   45,   45,
+      834,  835,  836,  837,  838,  774,  839,  841,  842,  843,
+      844,  845,  846,  847,  848,  849,  850,  851,  840,  852,
+      853,  854,  855,  856,  857,  858,  859,  860,  861,  862,
+      863,  864,  865,  866,  867,  868,  869,  870,  871,  872,
+      873,  874,  875,  853,  876,  877,  852,  878,  879,  882,
+
+      883,  884,  885,  880,  886,  887,  888,  889,  890,  891,
+      892,  893,  894,  896,  897,  898,  899,  900,  901,  902,
+      903,  904,  905,  895,  906,  907,  908,  909,  910,  911,
+      912,  913,  914,  915,  916,  917,  918,  919,  920,  921,
+      922,  923,  924,  925,  926,  928,  927,  929,  930,  931,
+      932,  933,  934,  935,  881,  936,  937,  938,  939,  940,
+      941,  942,  943,  944,  945,  946,  947,  948,  949,  950,
+      951,  952,  926,  927,  953,  955,  957,  958,  959,  954,
+      960,  961,  962,  963,  964,  965,  966,  967,  968,  969,
+      970,  971,  972,  973,  974,  975,  976,  977,  978,  979,
+
+      980,  981,  982,  983,  984,  985,  986,  987,  988,  989,
+      990,  991,  992,  993,  994,  995,  996,  956,  997,  998,
       999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008,
-     1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019,
-     1020, 1021, 1022, 1024, 1025, 1026, 1027, 1028, 1029, 1030,
-     1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040,
-     1041, 1042, 1043, 1044, 1045, 1046, 1048, 1019, 1049, 1050,
-     1051, 1052, 1053, 1047, 1054, 1055, 1056, 1057, 1058, 1059,
-     1009, 1060, 1061, 1062, 1023, 1063, 1064, 1065, 1066, 1067,
-     1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077,
-
-     1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087,
-     1088, 1089, 1067, 1090, 1091, 1092, 1093, 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, 1121, 1122, 1123, 1124, 1125, 1126,
-     1127, 1128, 1102, 1129, 1130, 1131, 1132, 1133, 1134, 1135,
-     1136, 1137, 1138, 1139, 1141, 1142, 1143, 1144, 1140, 1145,
-     1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155,
-     1156, 1157, 1158, 1159, 1160, 1161, 1162, 1135, 1163, 1164,
-     1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174,
-
-     1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1184,
-     1185, 1186, 1187, 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, 1214,
-     1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223, 1224,
-     1225, 1226, 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, 1253, 1254,
-     1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264,
-     1265, 1266, 1267, 1268, 1269, 1270,   12,   12,   12,   12,
-
-       12,   36,   36,   36,   36,   36,   79,  286,   79,   79,
-       79,   98,  386,   98,  490,   98,  100,  100,  100,  100,
-      100,  116,  116,  116,  116,  116,  173,  100,  173,  173,
-      173,  197,  197,  197,  799,  798,  797,  796,  795,  794,
-      793,  790,  789,  788,  787,  786,  785,  784,  783,  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,  752,  751,
-      750,  749,  748,  747,  746,  743,  742,  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,  695,
-      694,  693,  692,  691,  690,  689,  688,  687,  686,  685,
-      684,  683,  682,  681,  680,  679,  678,  677,  676,  675,
-      674,  669,  668,  667,  666,  665,  664,  661,  660,  659,
-      658,  657,  656,  655,  654,  653,  652,  651,  650,  649,
-      648,  647,  646,  642,  641,  640,  639,  638,  637,  636,
-      633,  632,  631,  630,  629,  628,  627,  626,  625,  624,
-      623,  622,  621,  620,  619,  618,  617,  616,  615,  614,
-
-      613,  612,  611,  610,  609,  608,  607,  606,  605,  604,
-      603,  602,  601,  600,  599,  598,  597,  596,  595,  594,
-      593,  592,  591,  590,  586,  585,  584,  583,  582,  581,
-      580,  579,  578,  577,  576,  575,  574,  573,  572,  571,
-      570,  569,  566,  565,  564,  563,  562,  561,  560,  559,
-      558,  557,  556,  555,  554,  553,  552,  551,  550,  549,
-      548,  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,  520,  519,  518,  517,
-      516,  515,  514,  513,  512,  511,  510,  509,  508,  507,
-
-      506,  505,  504,  503,  502,  498,  497,  496,  495,  494,
-      493,  492,  489,  488,  485,  484,  483,  482,  481,  480,
-      479,  478,  477,  476,  475,  474,  473,  472,  471,  470,
-      469,  468,  467,  466,  465,  464,  461,  460,  457,  456,
-      455,  454,  453,  452,  451,  450,  447,  446,  445,  444,
-      443,  440,  439,  438,  437,  436,  435,  434,  433,  432,
-      431,  430,  425,  424,  423,  422,  421,  420,  419,  418,
-      417,  416,  415,  414,  411,  410,  409,  408,  407,  404,
-      403,  402,  401,  400,  397,  396,  394,  393,  388,  385,
-      382,  381,  380,  379,  378,  377,  376,  375,  374,  373,
-
-      372,  371,  370,  369,  368,  367,  366,  363,  362,  361,
-      360,  359,  358,  357,  356,  355,  354,  353,  352,  351,
-      350,  347,  346,  345,  344,  343,  342,  338,  337,  336,
-      335,  334,  333,  332,  331,  330,  329,  328,  327,  326,
-      325,  324,  323,  322,  321,  320,  319,  318,  317,  316,
-      315,  314,  313,  312,  311,  310,  309,  308,  305,  304,
-      303,  302,  300,  198,  297,  295,  293,  292,  289,  288,
-      285,  278,  277,  276,  275,  274,  273,  272,  271,  270,
-      269,  257,  256,  255,  251,  250,  247,  246,  245,  244,
-      243,  242,  241,  240,  237,  236,  235,  234,  233,  232,
-
-      231,  228,  227,  223,  215,  214,  213,  209,  208,  207,
-      203,  202,  198,  191,  186,  185,  184,  181,  180,  172,
-      159,  140,  133,  106,  105,  104,   43,   99,   97,   96,
-       87,   43, 1271,   11, 1271, 1271, 1271, 1271, 1271, 1271,
-     1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271,
-     1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271,
-     1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271,
-     1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271,
-     1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271,
-     1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271,
-
-     1271, 1271, 1271, 1271, 1271
+     1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017,  996,
+     1018, 1019, 1020, 1021, 1022, 1023,  997, 1024, 1025, 1026,
+     1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036,
+     1037, 1038, 1039, 1040, 1041, 1042, 1043, 1045, 1046, 1047,
+     1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057,
+     1058, 1059, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068,
+     1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078,
+
+     1079, 1080, 1081, 1082, 1083, 1085, 1056, 1086, 1087, 1088,
+     1089, 1090, 1084, 1091, 1092, 1093, 1094, 1044, 1095, 1096,
+     1097, 1098, 1099, 1060, 1100, 1101, 1102, 1103, 1104, 1105,
+     1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115,
+     1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125,
+     1126, 1127, 1128, 1129, 1107, 1130, 1131, 1132, 1133, 1134,
+     1135, 1136, 1137, 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, 1166, 1167, 1168, 1169, 1170, 1171, 1145, 1172, 1173,
+
+     1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183,
+     1184, 1186, 1187, 1188, 1189, 1185, 1190, 1191, 1192, 1193,
+     1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203,
+     1204, 1205, 1206, 1207, 1180, 1208, 1209, 1210, 1211, 1212,
+     1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222,
+     1223, 1224, 1225, 1226, 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,
+     1253, 1254, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262,
+     1263, 1264, 1265, 1266, 1267, 1268, 1269, 1270, 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, 1299, 1300, 1301, 1302,
+     1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312,
+     1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321,   12,
+       12,   12,   12,   12,   36,   36,   36,   36,   36,   79,
+      289,   79,   79,   79,   98,  391,   98,  499,   98,  100,
+      100,  100,  100,  100,  116,  116,  116,  116,  116,  174,
+      100,  174,  174,  174,  198,  198,  198,  805,  804,  803,
+      802,  801,  800,  799,  798,  797,  796,  795,  794,  793,
+
+      792,  791,  790,  789,  788,  787,  786,  785,  784,  783,
+      782,  781,  780,  779,  778,  777,  776,  775,  773,  772,
+      771,  770,  769,  768,  767,  766,  765,  762,  761,  756,
+      755,  754,  753,  752,  751,  750,  749,  748,  747,  746,
+      745,  744,  743,  742,  741,  740,  739,  738,  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,
+      695,  694,  693,  692,  691,  686,  685,  684,  683,  682,
+
+      681,  680,  679,  676,  675,  674,  673,  672,  671,  670,
+      669,  668,  667,  666,  665,  664,  663,  662,  661,  660,
+      659,  655,  654,  653,  652,  651,  650,  649,  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,  615,
+      614,  613,  612,  611,  610,  609,  608,  607,  606,  605,
+      604,  603,  599,  598,  597,  596,  595,  594,  593,  592,
+      591,  590,  589,  588,  587,  586,  585,  584,  583,  582,
+      581,  580,  579,  576,  575,  574,  573,  572,  571,  570,
+
+      569,  568,  567,  566,  565,  564,  563,  562,  561,  560,
+      559,  558,  557,  556,  555,  554,  553,  552,  551,  550,
+      549,  548,  547,  546,  545,  544,  543,  542,  541,  540,
+      539,  538,  537,  536,  535,  534,  533,  532,  529,  528,
+      527,  526,  525,  524,  523,  522,  521,  520,  519,  518,
+      517,  516,  515,  514,  513,  512,  511,  507,  506,  505,
+      504,  503,  502,  501,  498,  497,  494,  493,  492,  491,
+      488,  487,  486,  485,  484,  483,  482,  481,  480,  479,
+      478,  477,  474,  473,  472,  471,  470,  469,  466,  465,
+      462,  461,  460,  459,  458,  457,  456,  455,  452,  451,
+
+      450,  449,  448,  445,  444,  443,  442,  441,  440,  439,
+      438,  437,  436,  435,  430,  429,  428,  427,  426,  425,
+      424,  423,  422,  421,  420,  419,  416,  415,  414,  413,
+      412,  409,  408,  407,  406,  405,  402,  401,  399,  398,
+      393,  390,  387,  386,  385,  384,  383,  382,  380,  379,
+      378,  377,  376,  375,  374,  373,  372,  371,  370,  369,
+      366,  365,  364,  363,  362,  361,  360,  359,  358,  357,
+      356,  355,  354,  353,  350,  349,  348,  347,  346,  345,
+      341,  340,  339,  338,  337,  336,  335,  334,  333,  332,
+      331,  330,  329,  328,  327,  326,  325,  324,  323,  322,
+
+      321,  320,  319,  318,  317,  316,  315,  314,  313,  312,
+      311,  308,  307,  306,  305,  303,  199,  300,  298,  296,
+      295,  292,  291,  288,  281,  280,  279,  278,  277,  276,
+      274,  273,  272,  271,  258,  257,  256,  252,  251,  248,
+      247,  246,  245,  244,  243,  242,  241,  238,  237,  236,
+      235,  234,  233,  232,  229,  228,  224,  216,  215,  214,
+      210,  209,  208,  204,  203,  199,  192,  187,  186,  185,
+      182,  181,  173,  159,  140,  133,  106,  105,  104,   43,
+       99,   97,   96,   87,   43, 1322,   11, 1322, 1322, 1322,
+     1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322,
+
+     1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322,
+     1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322,
+     1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322,
+     1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322,
+     1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322,
+     1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322
     } ;
 
-static const flex_int16_t yy_chk[1706] =
+static yyconst flex_int16_t yy_chk[1759] =
     {   0,
         0,    1,    1,    1,    0,    1,    1,    0,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,   21,  246,
+        1,    1,    1,    1,    1,    1,    1,    1,   21,  247,
         3,    3,    3,   21,    1,    1,    3,    0,    0,    1,
         4,    4,    4,   13,    1,   13,    4,   27,   28,    1,
        57,    1,    5,    5,    5,   26,   32,    1,    1,   33,
-        6,    6,    6,    7,    7,    7,    1,    7,  724,    8,
-        8,    8,    1,    8,   57,   27,   28,  246,   26,    1,
+        6,    6,    6,    7,    7,    7,    1,    7,    0,    8,
+        8,    8,    1,    8,   57,   27,   28,  247,   26,    1,
         1,    2,    2,    2,   32,    2,    2,   33,    2,    2,
         2,    2,    2,    2,    2,    2,    2,    2,    9,    9,
         9,   52,    5,   31,    2,    2,   10,   10,   10,    2,
 
         6,   20,   20,   20,    2,   37,    9,   37,   42,    2,
        42,    2,   20,   51,   10,   54,   31,    2,    2,   52,
-       62,   66,   25,  725,   25,  726,    2,   25,   25,   25,
-       62,   66,    2,   66,  261,   20,   51,  261,   54,    2,
+       62,   66,   25,  722,   25,  725,    2,   25,   25,   25,
+       62,   66,    2,   66,  262,   20,   51,  262,   54,    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,
@@ -1398,196 +1197,201 @@ static const flex_int16_t yy_chk[1706] =
        15,   15,   17,   47,   17,   17,   17,   19,   53,   19,
        19,   19,   44,   56,   22,   17,   22,   22,   22,   60,
        19,   69,   60,   55,   60,   69,   60,   22,   74,   47,
-      727,   59,   74,   55,   65,  131,   56,   53,   17,   65,
-      108,   63,   65,   19,  109,   69,   55,   44,  131,  728,
-       22,   45,  729,   45,   45,   45,   45,   59,   45,   45,
+      726,   59,   74,   55,   65,  131,   56,   53,   17,   65,
+      108,   63,   65,   19,  109,   69,   55,   44,  131,  381,
+       22,   45,  381,   45,   45,   45,   45,   59,   45,   45,
        45,   55,   58,   59,   63,   45,   45,  108,   45,   58,
        88,   88,   88,  109,   45,   63,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   58,   89,   89,
-       89,   58,   61,  100,   70,   58,   61,  730,   90,   61,
+       89,   58,   61,  100,   70,   58,   61,  727,   90,   61,
        61,   68,   68,   58,   71,   68,  115,   58,   77,   58,
-       58,   68,   61,   70,   71,   70,  731,   70,   72,   71,
+       58,   68,   61,   70,   71,   70,  730,   70,   72,   71,
        71,   72,   72,   75,   90,   91,   75,   76,  100,  115,
-      206,   77,   72,   75,   75,   72,  206,   76,  355,   75,
-      732,   77,   80,   80,   80,   81,   77,   81,   81,   81,
+      207,   77,   72,   75,   75,   72,  207,   76,  358,   75,
+      731,   77,   80,   80,   80,   81,   77,   81,   81,   81,
        76,   91,   76,   80,   92,   82,   76,   82,   81,   93,
        82,   82,   82,   94,   83,   76,   83,   83,   83,   84,
-       84,   84,   76,   95,  103,  176,   80,   83,  107,  102,
+       84,   84,   76,   95,  103,  177,   80,   83,  107,  102,
 
        84,   81,   92,  111,  113,   93,  102,  122,  112,   94,
-      114,  119,  134,  132,  355,  134,  122,  122,  176,  134,
+      114,  119,  134,  132,  358,  134,  122,  122,  177,  134,
        83,   95,  103,   84,  107,  145,  126,  126,  119,  132,
-      137,  111,  113,  174,  102,  112,  126,  114,  102,  119,
-      154,  154,  102,  130,  157,  130,  145,  157,  157,  177,
-      102,  161,  175,  179,  102,  178,  102,  102,  118,  118,
-      118,  174,  130,  239,  183,  118,  118,  118,  118,  118,
-      118,  162,  137,  187,  733,  162,  179,  177,  175,  162,
-      188,  178,  192,  194,  161,  161,  161,  183,  118,  118,
-      118,  118,  118,  118,  196,  161,  201,  161,  307,  161,
-
-      294,  187,  161,  279,  282,  192,  194,  188,  287,  289,
-      289,  301,  290,  550,  239,  307,  314,  239,  289,  201,
-      314,  196,  199,  199,  199,  734,  279,  282,  294,  199,
-      199,  199,  199,  199,  199,  290,  345,  287,  339,  339,
-      301,  358,  381,  327,  387,  358,  345,  381,  327,  397,
-      550,  397,  199,  199,  199,  199,  199,  199,  299,  299,
-      299,  588,  735,  578,  736,  299,  299,  299,  299,  299,
-      299,  499,  387,  578,  422,  399,  397,  471,  397,  422,
-      737,  501,  471,  738,  588,  500,  501,  587,  299,  299,
-      299,  299,  299,  299,  327,  589,  739,  657,  499,  327,
-
-      398,  398,  398,  399,  657,  589,  741,  398,  398,  398,
-      398,  398,  398,  500,  559,  587,  658,  671,  661,  559,
-      742,  715,  743,  658,  661,  715,  740,  744,  745,  747,
-      398,  398,  398,  398,  398,  398,  748,  749,  740,  750,
-      752,  753,  754,  755,  756,  671,  757,  758,  759,  760,
-      761,  762,  763,  764,  765,  767,  559,  768,  769,  770,
-      771,  772,  773,  774,  753,  775,  776,  752,  778,  779,
-      780,  781,  782,  784,  785,  786,  781,  787,  788,  789,
-      790,  791,  792,  793,  794,  795,  796,  799,  800,  801,
-      803,  804,  805,  807,  808,  809,  795,  810,  811,  812,
-
-      813,  814,  815,  816,  817,  818,  820,  821,  822,  823,
-      824,  825,  826,  827,  829,  828,  830,  831,  832,  833,
-      834,  835,  836,  837,  838,  840,  841,  781,  842,  843,
-      844,  845,  846,  847,  848,  849,  850,  851,  852,  853,
-      855,  827,  828,  856,  857,  858,  859,  860,  856,  861,
-      862,  863,  864,  865,  866,  867,  868,  869,  870,  871,
-      872,  873,  874,  875,  876,  878,  879,  880,  881,  882,
-      883,  884,  886,  889,  890,  891,  892,  893,  894,  895,
-      896,  897,  898,  899,  900,  901,  857,  902,  903,  904,
-      907,  908,  909,  910,  911,  912,  913,  914,  915,  916,
-
-      917,  918,  919,  920,  897,  923,  925,  927,  928,  929,
-      898,  930,  931,  932,  934,  935,  937,  938,  939,  940,
-      943,  945,  946,  947,  948,  949,  950,  951,  952,  953,
-      954,  955,  956,  957,  958,  959,  960,  961,  962,  963,
-      964,  965,  967,  968,  969,  970,  971,  972,  973,  974,
-      976,  977,  978,  979,  980,  981,  982,  983,  984,  985,
-      986,  987,  988,  989,  991,  992,  993,  963,  996,  997,
-      998,  999, 1000,  992, 1001, 1002, 1003, 1004, 1005, 1007,
-      953, 1008, 1009, 1012,  967, 1015, 1016, 1017, 1018, 1019,
-     1021, 1023, 1024, 1025, 1026, 1027, 1028, 1030, 1031, 1032,
-
-     1033, 1034, 1035, 1036, 1037, 1038, 1039, 1041, 1043, 1045,
-     1046, 1047, 1019, 1049, 1050, 1051, 1052, 1053, 1056, 1058,
-     1059, 1060, 1062, 1063, 1065, 1067, 1068, 1069, 1070, 1071,
-     1072, 1073, 1075, 1077, 1078, 1079, 1080, 1081, 1082, 1083,
-     1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093,
-     1094, 1095, 1067, 1096, 1097, 1098, 1099, 1100, 1101, 1102,
-     1103, 1105, 1108, 1110, 1111, 1112, 1113, 1114, 1110, 1115,
-     1116, 1118, 1121, 1122, 1124, 1125, 1126, 1127, 1128, 1129,
-     1130, 1131, 1132, 1133, 1135, 1136, 1138, 1102, 1140, 1141,
-     1142, 1143, 1144, 1146, 1147, 1148, 1149, 1150, 1151, 1152,
-
-     1153, 1154, 1155, 1156, 1157, 1159, 1161, 1162, 1163, 1164,
-     1165, 1167, 1168, 1169, 1170, 1172, 1173, 1174, 1175, 1176,
-     1177, 1178, 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187,
-     1189, 1190, 1191, 1192, 1194, 1195, 1196, 1197, 1198, 1199,
-     1200, 1201, 1202, 1203, 1204, 1206, 1209, 1210, 1211, 1212,
-     1214, 1216, 1217, 1219, 1220, 1221, 1222, 1224, 1225, 1226,
-     1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236,
-     1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1246, 1248,
-     1249, 1250, 1251, 1252, 1256, 1257, 1258, 1260, 1261, 1262,
-     1263, 1264, 1265, 1266, 1268, 1269, 1272, 1272, 1272, 1272,
-
-     1272, 1273, 1273, 1273, 1273, 1273, 1274, 1280, 1274, 1274,
-     1274, 1275, 1281, 1275, 1282, 1275, 1276, 1276, 1276, 1276,
-     1276, 1277, 1277, 1277, 1277, 1277, 1278, 1283, 1278, 1278,
-     1278, 1279, 1279, 1279,  723,  721,  720,  719,  718,  717,
-      716,  714,  713,  710,  709,  708,  705,  704,  703,  702,
-      701,  700,  699,  698,  697,  696,  695,  694,  693,  692,
-      690,  689,  688,  687,  686,  685,  684,  683,  682,  681,
-      680,  679,  678,  677,  676,  674,  673,  672,  670,  668,
-      667,  666,  665,  664,  663,  660,  659,  656,  655,  654,
-      653,  652,  651,  650,  649,  648,  647,  646,  645,  644,
-
-      642,  641,  640,  639,  638,  637,  636,  635,  633,  632,
-      631,  630,  629,  627,  626,  625,  624,  623,  622,  621,
-      620,  619,  618,  617,  616,  615,  614,  613,  612,  611,
-      610,  609,  608,  607,  606,  605,  604,  603,  602,  601,
-      600,  599,  598,  597,  596,  595,  594,  593,  592,  591,
-      590,  586,  585,  584,  581,  580,  579,  576,  575,  574,
-      573,  572,  571,  570,  569,  568,  566,  565,  564,  563,
-      562,  561,  560,  558,  557,  555,  554,  553,  552,  551,
-      549,  548,  547,  546,  544,  543,  542,  541,  540,  539,
-      538,  537,  536,  535,  534,  533,  532,  531,  530,  528,
-
-      527,  526,  525,  524,  523,  522,  520,  519,  518,  517,
-      516,  515,  514,  513,  512,  511,  510,  509,  508,  507,
-      506,  505,  504,  503,  497,  495,  492,  491,  489,  488,
-      487,  485,  481,  480,  479,  478,  477,  476,  475,  474,
-      473,  472,  470,  469,  468,  467,  466,  465,  464,  463,
-      462,  461,  459,  457,  456,  455,  454,  453,  452,  451,
-      450,  449,  448,  446,  445,  444,  443,  442,  441,  440,
-      439,  438,  437,  436,  435,  434,  433,  432,  431,  430,
-      429,  428,  427,  425,  424,  423,  421,  420,  419,  418,
-      417,  416,  414,  413,  412,  411,  410,  409,  407,  406,
-
-      405,  404,  403,  401,  400,  395,  394,  392,  391,  390,
-      389,  388,  385,  382,  380,  379,  378,  377,  376,  375,
-      374,  373,  372,  371,  370,  369,  368,  367,  366,  365,
-      364,  363,  362,  361,  360,  359,  357,  356,  354,  353,
-      352,  351,  350,  349,  348,  347,  344,  343,  342,  341,
-      340,  338,  337,  336,  335,  334,  333,  332,  331,  330,
-      329,  328,  326,  325,  324,  323,  322,  321,  320,  319,
-      318,  317,  316,  315,  313,  312,  311,  310,  309,  306,
-      305,  304,  303,  302,  298,  296,  293,  291,  288,  285,
-      278,  277,  276,  275,  274,  273,  272,  271,  270,  269,
-
-      268,  267,  266,  265,  264,  263,  262,  260,  259,  258,
-      257,  256,  255,  254,  253,  252,  251,  250,  249,  248,
-      247,  245,  244,  243,  242,  241,  240,  238,  237,  236,
-      235,  234,  233,  232,  231,  230,  228,  227,  226,  225,
-      224,  223,  222,  221,  220,  219,  218,  217,  216,  215,
-      214,  213,  212,  211,  210,  209,  208,  207,  205,  204,
-      203,  202,  200,  197,  195,  193,  191,  190,  185,  184,
-      180,  172,  171,  170,  169,  168,  167,  166,  165,  164,
-      163,  160,  159,  158,  156,  155,  153,  152,  151,  150,
-      149,  148,  147,  146,  144,  143,  142,  141,  140,  139,
-
-      138,  136,  135,  133,  129,  128,  127,  125,  124,  123,
-      121,  120,  116,  110,  106,  105,  104,   98,   97,   78,
-       73,   67,   64,   50,   49,   48,   43,   41,   39,   38,
-       24,   14,   11, 1271, 1271, 1271, 1271, 1271, 1271, 1271,
-     1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271,
-     1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271,
-     1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271,
-     1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271,
-     1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271,
-     1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271,
-
-     1271, 1271, 1271, 1271, 1271
+      137,  111,  113,  175,  102,  112,  126,  114,  102,  119,
+      154,  154,  102,  130,  157,  130,  145,  157,  157,  167,
+      102,  161,  176,  178,  102,  188,  102,  102,  118,  118,
+      118,  175,  130,  733,  180,  118,  118,  118,  118,  118,
+      118,  162,  137,  184,  189,  162,  167,  179,  176,  162,
+      197,  178,  193,  188,  161,  161,  161,  180,  118,  118,
+      118,  118,  118,  118,  195,  161,  184,  161,  202,  161,
+
+      161,  189,  161,  179,  240,  193,  275,  197,  282,  285,
+      290,  275,  293,  292,  292,  297,  304,  195,  200,  200,
+      200,  202,  292,  310,  348,  200,  200,  200,  200,  200,
+      200,  282,  285,  317,  348,  293,  392,  317,  508,  290,
+      310,  342,  342,  297,  734,  304,  735,  404,  200,  200,
+      200,  200,  200,  200,  402,  240,  402,  330,  240,  302,
+      302,  302,  330,  601,  392,  508,  302,  302,  302,  302,
+      302,  302,  361,  368,  386,  404,  361,  368,  509,  386,
+      427,  402,  477,  402,  600,  427,  601,  477,  589,  302,
+      302,  302,  302,  302,  302,  510,  559,  568,  589,  602,
+
+      510,  676,  568,  672,  673,  736,  509,  676,  330,  602,
+      672,  673,  600,  330,  403,  403,  403,  737,  738,  740,
+      741,  403,  403,  403,  403,  403,  403,  688,  732,  742,
+      743,  744,  732,  559,  745,  746,  747,  748,  749,  568,
+      750,  751,  752,  753,  403,  403,  403,  403,  403,  403,
+      754,  755,  756,  757,  758,  688,  759,  760,  761,  762,
+      763,  764,  766,  767,  768,  769,  770,  771,  759,  773,
+      774,  775,  776,  777,  778,  779,  780,  781,  782,  783,
+      784,  785,  786,  788,  789,  790,  791,  792,  793,  794,
+      795,  796,  797,  774,  799,  800,  773,  801,  802,  803,
+
+      805,  806,  807,  802,  808,  809,  810,  811,  812,  813,
+      814,  815,  816,  817,  820,  821,  822,  824,  825,  826,
+      828,  829,  830,  816,  831,  832,  833,  834,  835,  836,
+      837,  838,  839,  840,  841,  843,  844,  845,  846,  847,
+      848,  849,  850,  851,  852,  854,  853,  855,  856,  857,
+      858,  859,  860,  861,  802,  862,  863,  865,  866,  867,
+      868,  869,  870,  871,  872,  873,  874,  875,  876,  877,
+      878,  880,  852,  853,  881,  882,  883,  884,  885,  881,
+      886,  887,  888,  889,  890,  891,  892,  893,  894,  895,
+      896,  897,  898,  899,  900,  901,  903,  904,  905,  906,
+
+      907,  908,  909,  910,  911,  913,  916,  917,  918,  919,
+      920,  921,  922,  923,  924,  925,  926,  882,  927,  928,
+      929,  930,  931,  932,  933,  936,  937,  938,  939,  940,
+      941,  942,  943,  944,  945,  946,  947,  948,  949,  926,
+      952,  954,  956,  957,  958,  959,  927,  960,  961,  963,
+      964,  966,  967,  968,  969,  972,  974,  975,  976,  977,
+      978,  979,  980,  981,  982,  983,  984,  985,  986,  987,
+      988,  989,  990,  991,  992,  993,  994,  995,  996,  997,
+      998, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1009,
+     1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019,
+
+     1020, 1021, 1022, 1024, 1025, 1026,  996, 1029, 1030, 1031,
+     1032, 1033, 1025, 1034, 1035, 1036, 1037,  984, 1038, 1039,
+     1041, 1042, 1043, 1000, 1044, 1047, 1050, 1052, 1053, 1054,
+     1055, 1056, 1058, 1060, 1061, 1062, 1063, 1064, 1065, 1067,
+     1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1078,
+     1080, 1082, 1083, 1084, 1056, 1086, 1087, 1088, 1089, 1090,
+     1093, 1094, 1096, 1097, 1098, 1099, 1101, 1102, 1103, 1105,
+     1107, 1108, 1109, 1110, 1111, 1112, 1113, 1115, 1117, 1118,
+     1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128,
+     1129, 1130, 1131, 1132, 1133, 1134, 1135, 1107, 1136, 1137,
+
+     1138, 1139, 1140, 1141, 1143, 1144, 1145, 1146, 1148, 1151,
+     1153, 1154, 1155, 1156, 1157, 1153, 1158, 1159, 1161, 1164,
+     1165, 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175,
+     1176, 1177, 1178, 1180, 1145, 1181, 1183, 1185, 1186, 1187,
+     1188, 1189, 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1198,
+     1199, 1200, 1201, 1202, 1204, 1206, 1208, 1209, 1210, 1211,
+     1212, 1214, 1215, 1216, 1217, 1219, 1220, 1221, 1222, 1223,
+     1224, 1225, 1226, 1228, 1229, 1230, 1231, 1232, 1233, 1234,
+     1235, 1237, 1238, 1239, 1240, 1242, 1243, 1244, 1245, 1246,
+     1247, 1248, 1249, 1250, 1251, 1252, 1253, 1255, 1258, 1259,
+
+     1260, 1261, 1262, 1264, 1266, 1267, 1269, 1270, 1271, 1273,
+     1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284,
+     1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294,
+     1295, 1297, 1299, 1300, 1301, 1302, 1303, 1307, 1308, 1309,
+     1311, 1312, 1313, 1314, 1315, 1316, 1317, 1319, 1320, 1323,
+     1323, 1323, 1323, 1323, 1324, 1324, 1324, 1324, 1324, 1325,
+     1331, 1325, 1325, 1325, 1326, 1332, 1326, 1333, 1326, 1327,
+     1327, 1327, 1327, 1327, 1328, 1328, 1328, 1328, 1328, 1329,
+     1334, 1329, 1329, 1329, 1330, 1330, 1330,  721,  720,  719,
+      718,  717,  716,  715,  714,  713,  712,  711,  710,  709,
+
+      707,  706,  705,  704,  703,  702,  701,  700,  699,  698,
+      697,  696,  695,  694,  693,  691,  690,  689,  687,  685,
+      684,  683,  682,  681,  680,  679,  678,  675,  674,  671,
+      670,  669,  668,  667,  666,  665,  664,  663,  662,  661,
+      660,  659,  658,  657,  655,  654,  653,  652,  651,  650,
+      649,  648,  646,  645,  644,  643,  642,  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,  615,  614,  613,  612,  611,  610,  609,  608,
+      607,  606,  605,  604,  603,  599,  598,  597,  594,  593,
+
+      592,  591,  590,  587,  586,  585,  584,  583,  582,  581,
+      580,  579,  578,  576,  575,  574,  573,  572,  571,  570,
+      569,  567,  566,  564,  563,  562,  561,  560,  558,  557,
+      556,  555,  553,  552,  551,  550,  549,  548,  547,  546,
+      545,  544,  543,  542,  541,  540,  539,  537,  536,  535,
+      534,  533,  532,  531,  529,  528,  527,  526,  525,  524,
+      523,  522,  521,  520,  519,  518,  517,  516,  515,  514,
+      513,  512,  506,  504,  501,  500,  498,  497,  496,  494,
+      490,  489,  488,  487,  486,  485,  484,  483,  482,  481,
+      480,  479,  478,  476,  475,  474,  473,  472,  471,  470,
+
+      469,  468,  467,  466,  464,  462,  461,  460,  459,  458,
+      457,  456,  455,  454,  453,  451,  450,  449,  448,  447,
+      446,  445,  444,  443,  442,  441,  440,  439,  438,  437,
+      436,  435,  434,  433,  432,  430,  429,  428,  426,  425,
+      424,  423,  422,  421,  419,  418,  417,  416,  415,  414,
+      412,  411,  410,  409,  408,  406,  405,  400,  399,  397,
+      396,  395,  394,  393,  390,  387,  385,  384,  383,  382,
+      380,  379,  378,  377,  376,  375,  374,  373,  372,  371,
+      370,  369,  367,  366,  365,  364,  363,  362,  360,  359,
+      357,  356,  355,  354,  353,  352,  351,  350,  347,  346,
+
+      345,  344,  343,  341,  340,  339,  338,  337,  336,  335,
+      334,  333,  332,  331,  329,  328,  327,  326,  325,  324,
+      323,  322,  321,  320,  319,  318,  316,  315,  314,  313,
+      312,  309,  308,  307,  306,  305,  301,  299,  296,  294,
+      291,  288,  281,  280,  279,  278,  277,  276,  274,  273,
+      272,  271,  270,  269,  268,  267,  266,  265,  264,  263,
+      261,  260,  259,  258,  257,  256,  255,  254,  253,  252,
+      251,  250,  249,  248,  246,  245,  244,  243,  242,  241,
+      239,  238,  237,  236,  235,  234,  233,  232,  231,  229,
+      228,  227,  226,  225,  224,  223,  222,  221,  220,  219,
+
+      218,  217,  216,  215,  214,  213,  212,  211,  210,  209,
+      208,  206,  205,  204,  203,  201,  198,  196,  194,  192,
+      191,  186,  185,  181,  173,  172,  171,  170,  169,  168,
+      166,  165,  164,  163,  160,  159,  158,  156,  155,  153,
+      152,  151,  150,  149,  148,  147,  146,  144,  143,  142,
+      141,  140,  139,  138,  136,  135,  133,  129,  128,  127,
+      125,  124,  123,  121,  120,  116,  110,  106,  105,  104,
+       98,   97,   78,   73,   67,   64,   50,   49,   48,   43,
+       41,   39,   38,   24,   14,   11, 1322, 1322, 1322, 1322,
+     1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322,
+
+     1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322,
+     1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322,
+     1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322,
+     1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322,
+     1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322,
+     1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322
     } ;
 
 static yy_state_type yy_last_accepting_state;
 static char *yy_last_accepting_cpos;
 
-extern int yy_flex_debug;
-int yy_flex_debug = 1;
+extern int parser6__flex_debug;
+int parser6__flex_debug = 1;
 
-static const flex_int16_t yy_rule_linenum[162] =
+static yyconst flex_int16_t yy_rule_linenum[166] =
     {   0,
-      147,  149,  151,  156,  157,  162,  163,  164,  176,  179,
-      184,  191,  200,  209,  218,  227,  236,  245,  254,  263,
-      272,  281,  290,  299,  308,  317,  327,  337,  347,  357,
-      367,  377,  387,  397,  407,  416,  425,  434,  443,  452,
-      461,  470,  482,  491,  500,  509,  518,  528,  538,  548,
-      558,  569,  579,  589,  599,  609,  620,  631,  642,  653,
-      662,  672,  681,  690,  706,  722,  731,  740,  749,  758,
-      767,  776,  785,  794,  803,  812,  834,  856,  865,  875,
-      885,  894,  904,  914,  923,  932,  941,  950,  960,  969,
-      978,  987,  996, 1005, 1014, 1023, 1032, 1041, 1051, 1060,
-
-     1069, 1079, 1092, 1102, 1111, 1120, 1129, 1140, 1150, 1159,
-     1169, 1179, 1188, 1197, 1206, 1215, 1225, 1234, 1244, 1253,
-     1262, 1271, 1280, 1289, 1298, 1307, 1316, 1325, 1334, 1343,
-     1352, 1361, 1370, 1379, 1388, 1397, 1406, 1415, 1424, 1433,
-     1442, 1451, 1460, 1470, 1569, 1574, 1579, 1584, 1585, 1586,
-     1587, 1588, 1589, 1591, 1609, 1622, 1627, 1631, 1633, 1635,
-     1637
+      146,  148,  150,  155,  156,  161,  162,  163,  175,  178,
+      183,  190,  199,  208,  217,  226,  235,  244,  253,  262,
+      271,  280,  289,  298,  307,  316,  326,  336,  346,  356,
+      366,  376,  386,  396,  406,  415,  424,  433,  442,  451,
+      460,  469,  481,  490,  499,  508,  517,  527,  537,  547,
+      557,  568,  578,  588,  598,  608,  618,  628,  638,  648,
+      659,  670,  681,  692,  701,  711,  720,  729,  745,  761,
+      770,  779,  788,  797,  806,  815,  824,  833,  842,  851,
+      873,  895,  904,  914,  924,  933,  943,  953,  962,  971,
+      980,  989,  999, 1008, 1017, 1026, 1035, 1044, 1053, 1062,
+
+     1071, 1080, 1090, 1099, 1108, 1118, 1131, 1141, 1150, 1159,
+     1168, 1179, 1189, 1198, 1208, 1218, 1227, 1236, 1245, 1254,
+     1264, 1273, 1283, 1292, 1301, 1310, 1319, 1328, 1337, 1346,
+     1355, 1364, 1373, 1382, 1391, 1400, 1409, 1418, 1427, 1436,
+     1445, 1454, 1463, 1472, 1481, 1490, 1499, 1509, 1608, 1613,
+     1618, 1623, 1624, 1625, 1626, 1627, 1628, 1630, 1648, 1661,
+     1666, 1670, 1672, 1674, 1676
     } ;
 
 /* The intent behind this definition is that it'll catch
@@ -1597,7 +1401,7 @@ static const flex_int16_t yy_rule_linenum[162] =
 #define yymore() yymore_used_but_not_detected
 #define YY_MORE_ADJ 0
 #define YY_RESTORE_YY_MORE_OFFSET
-char *yytext;
+char *parser6_text;
 #line 1 "dhcp6_lexer.ll"
 /* Copyright (C) 2016-2017 Internet Systems Consortium, Inc. ("ISC")
 
@@ -1624,8 +1428,8 @@ char *yytext;
    2.5.31 through 2.5.33): it generates code that does
    not conform to C89.  See Debian bug 333231
    <http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=333231>. */
-# undef yywrap
-# define yywrap() 1
+# undef parser6_wrap
+# define parser6_wrap() 1
 
 namespace {
 
@@ -1640,10 +1444,9 @@ using namespace isc::dhcp;
 
 /* To avoid the call to exit... oops! */
 #define YY_FATAL_ERROR(msg) isc::dhcp::Parser6Context::fatal(msg)
-#line 1643 "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
+   using parser6_wrap requires linking with -lfl, which provides the default parser6_wrap
    implementation that always returns 1 anyway. */
 /* nounput simplifies the lexer, by removing support for putting a character
    back into the input stream. We never use such capability anyway. */
@@ -1651,23 +1454,23 @@ using namespace isc::dhcp;
 /* avoid to get static global variables to remain with C++. */
 /* in last resort %option reentrant */
 /* Enables debug mode. To see the debug messages, one needs to also set
-   yy_flex_debug to 1, then the debug messages will be printed on stderr. */
+   parser6__flex_debug to 1, then the debug messages will be printed on stderr. */
 /* I have no idea what this option does, except it was specified in the bison
    examples and Postgres folks added it to remove gcc 4.3 warnings. Let's
    be on the safe side and keep it. */
 #define YY_NO_INPUT 1
 
+
 /* These are not token expressions yet, just convenience expressions that
    can be used during actual token definitions. Note some can match
    incorrect inputs (e.g., IP addresses) which must be checked. */
 /* for errors */
 #line 94 "dhcp6_lexer.ll"
 /* This code run each time a pattern is matched. It updates the location
-   by moving it ahead by yyleng bytes. yyleng specifies the length of the
+   by moving it ahead by parser6_leng bytes. parser6_leng specifies the length of the
    currently matched token. */
-#define YY_USER_ACTION  driver.loc_.columns(yyleng);
-#line 1669 "dhcp6_lexer.cc"
-#line 1670 "dhcp6_lexer.cc"
+#define YY_USER_ACTION  driver.loc_.columns(parser6_leng);
+#line 1474 "dhcp6_lexer.cc"
 
 #define INITIAL 0
 #define COMMENT 1
@@ -1695,7 +1498,7 @@ using namespace isc::dhcp;
 /* %if-reentrant */
 /* %if-c-only */
 
-static int yy_init_globals ( void );
+static int yy_init_globals (void );
 
 /* %endif */
 /* %if-reentrant */
@@ -1705,31 +1508,31 @@ static int yy_init_globals ( void );
 /* Accessor methods to globals.
    These are made visible to non-reentrant scanners for convenience. */
 
-int yylex_destroy ( void );
+int parser6_lex_destroy (void );
 
-int yyget_debug ( void );
+int parser6_get_debug (void );
 
-void yyset_debug ( int debug_flag  );
+void parser6_set_debug (int debug_flag  );
 
-YY_EXTRA_TYPE yyget_extra ( void );
+YY_EXTRA_TYPE parser6_get_extra (void );
 
-void yyset_extra ( YY_EXTRA_TYPE user_defined  );
+void parser6_set_extra (YY_EXTRA_TYPE user_defined  );
 
-FILE *yyget_in ( void );
+FILE *parser6_get_in (void );
 
-void yyset_in  ( FILE * _in_str  );
+void parser6_set_in  (FILE * _in_str  );
 
-FILE *yyget_out ( void );
+FILE *parser6_get_out (void );
 
-void yyset_out  ( FILE * _out_str  );
+void parser6_set_out  (FILE * _out_str  );
 
-                       int yyget_leng ( void );
+                       int parser6_get_leng (void );
 
-char *yyget_text ( void );
+char *parser6_get_text (void );
 
-int yyget_lineno ( void );
+int parser6_get_lineno (void );
 
-void yyset_lineno ( int _line_number  );
+void parser6_set_lineno (int _line_number  );
 
 /* %if-bison-bridge */
 /* %endif */
@@ -1740,13 +1543,14 @@ void yyset_lineno ( int _line_number  );
 
 #ifndef YY_SKIP_YYWRAP
 #ifdef __cplusplus
-extern "C" int yywrap ( void );
+extern "C" int parser6_wrap (void );
 #else
-extern int yywrap ( void );
+extern int parser6_wrap (void );
 #endif
 #endif
 
 /* %not-for-header */
+
 #ifndef YY_NO_UNPUT
     
 #endif
@@ -1755,20 +1559,21 @@ extern int yywrap ( void );
 /* %endif */
 
 #ifndef yytext_ptr
-static void yy_flex_strncpy ( char *, const char *, int );
+static void yy_flex_strncpy (char *,yyconst char *,int );
 #endif
 
 #ifdef YY_NEED_STRLEN
-static int yy_flex_strlen ( const char * );
+static int yy_flex_strlen (yyconst char * );
 #endif
 
 #ifndef YY_NO_INPUT
 /* %if-c-only Standard (non-C++) definition */
 /* %not-for-header */
+
 #ifdef __cplusplus
-static int yyinput ( void );
+static int yyinput (void );
 #else
-static int input ( void );
+static int input (void );
 #endif
 /* %ok-for-header */
 
@@ -1795,7 +1600,7 @@ static int input ( void );
 /* This used to be an fputs(), but since the string might contain NUL's,
  * we now use fwrite().
  */
-#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0)
+#define ECHO do { if (fwrite( parser6_text, (size_t) parser6_leng, 1, parser6_out )) {} } while (0)
 /* %endif */
 /* %if-c++-only C++ definition */
 /* %endif */
@@ -1810,20 +1615,20 @@ static int input ( void );
        if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
                { \
                int c = '*'; \
-               int n; \
+               size_t n; \
                for ( n = 0; n < max_size && \
-                            (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
+                            (c = getc( parser6_in )) != EOF && c != '\n'; ++n ) \
                        buf[n] = (char) c; \
                if ( c == '\n' ) \
                        buf[n++] = (char) c; \
-               if ( c == EOF && ferror( yyin ) ) \
+               if ( c == EOF && ferror( parser6_in ) ) \
                        YY_FATAL_ERROR( "input in flex scanner failed" ); \
                result = n; \
                } \
        else \
                { \
                errno=0; \
-               while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \
+               while ( (result = (int) fread(buf, 1, max_size, parser6_in))==0 && ferror(parser6_in)) \
                        { \
                        if( errno != EINTR) \
                                { \
@@ -1831,7 +1636,7 @@ static int input ( void );
                                break; \
                                } \
                        errno=0; \
-                       clearerr(yyin); \
+                       clearerr(parser6_in); \
                        } \
                }\
 \
@@ -1864,9 +1669,11 @@ static int input ( void );
 
 /* %if-tables-serialization structures and prototypes */
 /* %not-for-header */
+
 /* %ok-for-header */
 
 /* %not-for-header */
+
 /* %tables-yydmap generated elements */
 /* %endif */
 /* end tables serialization structures and prototypes */
@@ -1880,15 +1687,15 @@ static int input ( void );
 #define YY_DECL_IS_OURS 1
 /* %if-c-only Standard (non-C++) definition */
 
-extern int yylex (void);
+extern int parser6_lex (void);
 
-#define YY_DECL int yylex (void)
+#define YY_DECL int parser6_lex (void)
 /* %endif */
 /* %if-c++-only C++ definition */
 /* %endif */
 #endif /* !YY_DECL */
 
-/* Code executed at the beginning of each rule, after yytext and yyleng
+/* Code executed at the beginning of each rule, after parser6_text and parser6_leng
  * have been set up.
  */
 #ifndef YY_USER_ACTION
@@ -1905,6 +1712,7 @@ extern int yylex (void);
        YY_USER_ACTION
 
 /* %not-for-header */
+
 /** The main scanner function which does all the work.
  */
 YY_DECL
@@ -1924,27 +1732,27 @@ YY_DECL
                if ( ! (yy_start) )
                        (yy_start) = 1; /* first start state */
 
-               if ( ! yyin )
+               if ( ! parser6_in )
 /* %if-c-only */
-                       yyin = stdin;
+                       parser6_in = stdin;
 /* %endif */
 /* %if-c++-only */
 /* %endif */
 
-               if ( ! yyout )
+               if ( ! parser6_out )
 /* %if-c-only */
-                       yyout = stdout;
+                       parser6_out = stdout;
 /* %endif */
 /* %if-c++-only */
 /* %endif */
 
                if ( ! YY_CURRENT_BUFFER ) {
-                       yyensure_buffer_stack ();
+                       parser6_ensure_buffer_stack ();
                        YY_CURRENT_BUFFER_LVALUE =
-                               yy_create_buffer( yyin, YY_BUF_SIZE );
+                               parser6__create_buffer(parser6_in,YY_BUF_SIZE );
                }
 
-               yy_load_buffer_state(  );
+               parser6__load_buffer_state( );
                }
 
        {
@@ -1953,12 +1761,11 @@ YY_DECL
 
 
 
-#line 104 "dhcp6_lexer.ll"
     /* This part of the code is copied over to the verbatim to the top
-       of the generated yylex function. Explanation:
+       of the generated parser6_lex function. Explanation:
        http://www.gnu.org/software/bison/manual/html_node/Multiple-start_002dsymbols.html */
 
-    /* Code run each time yylex is called. */
+    /* Code run each time parser6_lex is called. */
     driver.loc_.step();
 
     if (start_token_flag) {
@@ -1997,14 +1804,14 @@ YY_DECL
     }
 
 
-#line 2000 "dhcp6_lexer.cc"
+#line 1808 "dhcp6_lexer.cc"
 
        while ( /*CONSTCOND*/1 )                /* loops until end-of-file is reached */
                {
 /* %% [8.0] yymore()-related code goes here */
                yy_cp = (yy_c_buf_p);
 
-               /* Support of yytext. */
+               /* Support of parser6_text. */
                *yy_cp = (yy_hold_char);
 
                /* yy_bp points to the position in yy_ch_buf of the start of
@@ -2026,13 +1833,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 >= 1272 )
-                                       yy_c = yy_meta[yy_c];
+                               if ( yy_current_state >= 1323 )
+                                       yy_c = yy_meta[(unsigned int) yy_c];
                                }
-                       yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
+                       yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];
                        ++yy_cp;
                        }
-               while ( yy_current_state != 1271 );
+               while ( yy_current_state != 1322 );
                yy_cp = (yy_last_accepting_cpos);
                yy_current_state = (yy_last_accepting_state);
 
@@ -2042,22 +1849,22 @@ yy_find_action:
 
                YY_DO_BEFORE_ACTION;
 
-/* %% [11.0] code for yylineno update goes here */
+/* %% [11.0] code for parser6_lineno update goes here */
 
 do_action:     /* This label is used only to access EOF actions. */
 
 /* %% [12.0] debug code goes here */
-               if ( yy_flex_debug )
+               if ( parser6__flex_debug )
                        {
                        if ( yy_act == 0 )
                                fprintf( stderr, "--scanner backing up\n" );
-                       else if ( yy_act < 162 )
+                       else if ( yy_act < 166 )
                                fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
-                                        (long)yy_rule_linenum[yy_act], yytext );
-                       else if ( yy_act == 162 )
+                                        (long)yy_rule_linenum[yy_act], parser6_text );
+                       else if ( yy_act == 166 )
                                fprintf( stderr, "--accepting default rule (\"%s\")\n",
-                                        yytext );
-                       else if ( yy_act == 163 )
+                                        parser6_text );
+                       else if ( yy_act == 167 )
                                fprintf( stderr, "--(end of buffer or a NUL)\n" );
                        else
                                fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
@@ -2075,17 +1882,17 @@ do_action:      /* This label is used only to access EOF actions. */
 
 case 1:
 YY_RULE_SETUP
-#line 147 "dhcp6_lexer.ll"
+#line 146 "dhcp6_lexer.ll"
 ;
        YY_BREAK
 case 2:
 YY_RULE_SETUP
-#line 149 "dhcp6_lexer.ll"
+#line 148 "dhcp6_lexer.ll"
 ;
        YY_BREAK
 case 3:
 YY_RULE_SETUP
-#line 151 "dhcp6_lexer.ll"
+#line 150 "dhcp6_lexer.ll"
 {
   BEGIN(COMMENT);
   comment_start_line = driver.loc_.end.line;;
@@ -2093,38 +1900,38 @@ YY_RULE_SETUP
        YY_BREAK
 case 4:
 YY_RULE_SETUP
-#line 156 "dhcp6_lexer.ll"
+#line 155 "dhcp6_lexer.ll"
 BEGIN(INITIAL);
        YY_BREAK
 case 5:
 YY_RULE_SETUP
-#line 157 "dhcp6_lexer.ll"
+#line 156 "dhcp6_lexer.ll"
 ;
        YY_BREAK
 case YY_STATE_EOF(COMMENT):
-#line 158 "dhcp6_lexer.ll"
+#line 157 "dhcp6_lexer.ll"
 {
     isc_throw(Dhcp6ParseError, "Comment not closed. (/* in line " << comment_start_line);
 }
        YY_BREAK
 case 6:
 YY_RULE_SETUP
-#line 162 "dhcp6_lexer.ll"
+#line 161 "dhcp6_lexer.ll"
 BEGIN(DIR_ENTER);
        YY_BREAK
 case 7:
 YY_RULE_SETUP
-#line 163 "dhcp6_lexer.ll"
+#line 162 "dhcp6_lexer.ll"
 BEGIN(DIR_INCLUDE);
        YY_BREAK
 case 8:
 YY_RULE_SETUP
-#line 164 "dhcp6_lexer.ll"
+#line 163 "dhcp6_lexer.ll"
 {
     /* Include directive. */
 
     /* Extract the filename. */
-    std::string tmp(yytext+1);
+    std::string tmp(parser6_text+1);
     tmp.resize(tmp.size() - 1);
 
     driver.includeFile(tmp);
@@ -2133,19 +1940,19 @@ YY_RULE_SETUP
 case YY_STATE_EOF(DIR_ENTER):
 case YY_STATE_EOF(DIR_INCLUDE):
 case YY_STATE_EOF(DIR_EXIT):
-#line 173 "dhcp6_lexer.ll"
+#line 172 "dhcp6_lexer.ll"
 {
     isc_throw(Dhcp6ParseError, "Directive not closed.");
 }
        YY_BREAK
 case 9:
 YY_RULE_SETUP
-#line 176 "dhcp6_lexer.ll"
+#line 175 "dhcp6_lexer.ll"
 BEGIN(INITIAL);
        YY_BREAK
 case 10:
 YY_RULE_SETUP
-#line 179 "dhcp6_lexer.ll"
+#line 178 "dhcp6_lexer.ll"
 {
     /* Ok, we found a with space. Let's ignore it and update loc variable. */
     driver.loc_.step();
@@ -2154,16 +1961,16 @@ YY_RULE_SETUP
 case 11:
 /* rule 11 can match eol */
 YY_RULE_SETUP
-#line 184 "dhcp6_lexer.ll"
+#line 183 "dhcp6_lexer.ll"
 {
     /* Newline found. Let's update the location and continue. */
-    driver.loc_.lines(yyleng);
+    driver.loc_.lines(parser6_leng);
     driver.loc_.step();
 }
        YY_BREAK
 case 12:
 YY_RULE_SETUP
-#line 191 "dhcp6_lexer.ll"
+#line 190 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP_DDNS:
@@ -2175,7 +1982,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 13:
 YY_RULE_SETUP
-#line 200 "dhcp6_lexer.ll"
+#line 199 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP_DDNS:
@@ -2187,7 +1994,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 14:
 YY_RULE_SETUP
-#line 209 "dhcp6_lexer.ll"
+#line 208 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP_DDNS:
@@ -2199,7 +2006,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 15:
 YY_RULE_SETUP
-#line 218 "dhcp6_lexer.ll"
+#line 217 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP_DDNS:
@@ -2211,7 +2018,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 16:
 YY_RULE_SETUP
-#line 227 "dhcp6_lexer.ll"
+#line 226 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP_DDNS:
@@ -2223,7 +2030,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 17:
 YY_RULE_SETUP
-#line 236 "dhcp6_lexer.ll"
+#line 235 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP_DDNS:
@@ -2235,7 +2042,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 18:
 YY_RULE_SETUP
-#line 245 "dhcp6_lexer.ll"
+#line 244 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP_DDNS:
@@ -2247,7 +2054,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 19:
 YY_RULE_SETUP
-#line 254 "dhcp6_lexer.ll"
+#line 253 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP_DDNS:
@@ -2259,7 +2066,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 20:
 YY_RULE_SETUP
-#line 263 "dhcp6_lexer.ll"
+#line 262 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP_DDNS:
@@ -2271,7 +2078,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 21:
 YY_RULE_SETUP
-#line 272 "dhcp6_lexer.ll"
+#line 271 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP_DDNS:
@@ -2283,7 +2090,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 22:
 YY_RULE_SETUP
-#line 281 "dhcp6_lexer.ll"
+#line 280 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP_DDNS:
@@ -2295,7 +2102,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 23:
 YY_RULE_SETUP
-#line 290 "dhcp6_lexer.ll"
+#line 289 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP_DDNS:
@@ -2307,7 +2114,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 24:
 YY_RULE_SETUP
-#line 299 "dhcp6_lexer.ll"
+#line 298 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP_DDNS:
@@ -2319,7 +2126,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 25:
 YY_RULE_SETUP
-#line 308 "dhcp6_lexer.ll"
+#line 307 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP_DDNS:
@@ -2331,124 +2138,124 @@ YY_RULE_SETUP
        YY_BREAK
 case 26:
 YY_RULE_SETUP
-#line 317 "dhcp6_lexer.ll"
+#line 316 "dhcp6_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser6Context::NCR_PROTOCOL) {
         return isc::dhcp::Dhcp6Parser::make_UDP(driver.loc_);
     }
-    std::string tmp(yytext+1);
+    std::string tmp(parser6_text+1);
     tmp.resize(tmp.size() - 1);
     return isc::dhcp::Dhcp6Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
 case 27:
 YY_RULE_SETUP
-#line 327 "dhcp6_lexer.ll"
+#line 326 "dhcp6_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser6Context::NCR_PROTOCOL) {
         return isc::dhcp::Dhcp6Parser::make_TCP(driver.loc_);
     }
-    std::string tmp(yytext+1);
+    std::string tmp(parser6_text+1);
     tmp.resize(tmp.size() - 1);
     return isc::dhcp::Dhcp6Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
 case 28:
 YY_RULE_SETUP
-#line 337 "dhcp6_lexer.ll"
+#line 336 "dhcp6_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser6Context::NCR_FORMAT) {
         return isc::dhcp::Dhcp6Parser::make_JSON(driver.loc_);
     }
-    std::string tmp(yytext+1);
+    std::string tmp(parser6_text+1);
     tmp.resize(tmp.size() - 1);
     return isc::dhcp::Dhcp6Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
 case 29:
 YY_RULE_SETUP
-#line 347 "dhcp6_lexer.ll"
+#line 346 "dhcp6_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser6Context::REPLACE_CLIENT_NAME) {
         return isc::dhcp::Dhcp6Parser::make_WHEN_PRESENT(driver.loc_);
     }
-    std::string tmp(yytext+1);
+    std::string tmp(parser6_text+1);
     tmp.resize(tmp.size() - 1);
     return isc::dhcp::Dhcp6Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
 case 30:
 YY_RULE_SETUP
-#line 357 "dhcp6_lexer.ll"
+#line 356 "dhcp6_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser6Context::REPLACE_CLIENT_NAME) {
         return isc::dhcp::Dhcp6Parser::make_WHEN_PRESENT(driver.loc_);
     }
-    std::string tmp(yytext+1);
+    std::string tmp(parser6_text+1);
     tmp.resize(tmp.size() - 1);
     return isc::dhcp::Dhcp6Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
 case 31:
 YY_RULE_SETUP
-#line 367 "dhcp6_lexer.ll"
+#line 366 "dhcp6_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser6Context::REPLACE_CLIENT_NAME) {
         return isc::dhcp::Dhcp6Parser::make_NEVER(driver.loc_);
     }
-    std::string tmp(yytext+1);
+    std::string tmp(parser6_text+1);
     tmp.resize(tmp.size() - 1);
     return isc::dhcp::Dhcp6Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
 case 32:
 YY_RULE_SETUP
-#line 377 "dhcp6_lexer.ll"
+#line 376 "dhcp6_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser6Context::REPLACE_CLIENT_NAME) {
         return isc::dhcp::Dhcp6Parser::make_NEVER(driver.loc_);
     }
-    std::string tmp(yytext+1);
+    std::string tmp(parser6_text+1);
     tmp.resize(tmp.size() - 1);
     return isc::dhcp::Dhcp6Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
 case 33:
 YY_RULE_SETUP
-#line 387 "dhcp6_lexer.ll"
+#line 386 "dhcp6_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser6Context::REPLACE_CLIENT_NAME) {
         return isc::dhcp::Dhcp6Parser::make_ALWAYS(driver.loc_);
     }
-    std::string tmp(yytext+1);
+    std::string tmp(parser6_text+1);
     tmp.resize(tmp.size() - 1);
     return isc::dhcp::Dhcp6Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
 case 34:
 YY_RULE_SETUP
-#line 397 "dhcp6_lexer.ll"
+#line 396 "dhcp6_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser6Context::REPLACE_CLIENT_NAME) {
         return isc::dhcp::Dhcp6Parser::make_WHEN_NOT_PRESENT(driver.loc_);
     }
-    std::string tmp(yytext+1);
+    std::string tmp(parser6_text+1);
     tmp.resize(tmp.size() - 1);
     return isc::dhcp::Dhcp6Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
 case 35:
 YY_RULE_SETUP
-#line 407 "dhcp6_lexer.ll"
+#line 406 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONFIG:
@@ -2460,7 +2267,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 36:
 YY_RULE_SETUP
-#line 416 "dhcp6_lexer.ll"
+#line 415 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -2472,7 +2279,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 37:
 YY_RULE_SETUP
-#line 425 "dhcp6_lexer.ll"
+#line 424 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::INTERFACES_CONFIG:
@@ -2484,7 +2291,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 38:
 YY_RULE_SETUP
-#line 434 "dhcp6_lexer.ll"
+#line 433 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::INTERFACES_CONFIG:
@@ -2496,7 +2303,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 39:
 YY_RULE_SETUP
-#line 443 "dhcp6_lexer.ll"
+#line 442 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -2508,7 +2315,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 40:
 YY_RULE_SETUP
-#line 452 "dhcp6_lexer.ll"
+#line 451 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -2520,7 +2327,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 41:
 YY_RULE_SETUP
-#line 461 "dhcp6_lexer.ll"
+#line 460 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::HOSTS_DATABASE:
@@ -2532,7 +2339,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 42:
 YY_RULE_SETUP
-#line 470 "dhcp6_lexer.ll"
+#line 469 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -2547,7 +2354,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 43:
 YY_RULE_SETUP
-#line 482 "dhcp6_lexer.ll"
+#line 481 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DATABASE_TYPE:
@@ -2559,7 +2366,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 44:
 YY_RULE_SETUP
-#line 491 "dhcp6_lexer.ll"
+#line 490 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DATABASE_TYPE:
@@ -2571,7 +2378,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 45:
 YY_RULE_SETUP
-#line 500 "dhcp6_lexer.ll"
+#line 499 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DATABASE_TYPE:
@@ -2583,7 +2390,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 46:
 YY_RULE_SETUP
-#line 509 "dhcp6_lexer.ll"
+#line 508 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DATABASE_TYPE:
@@ -2595,7 +2402,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 47:
 YY_RULE_SETUP
-#line 518 "dhcp6_lexer.ll"
+#line 517 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -2608,7 +2415,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 48:
 YY_RULE_SETUP
-#line 528 "dhcp6_lexer.ll"
+#line 527 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -2621,7 +2428,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 49:
 YY_RULE_SETUP
-#line 538 "dhcp6_lexer.ll"
+#line 537 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -2634,7 +2441,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 50:
 YY_RULE_SETUP
-#line 548 "dhcp6_lexer.ll"
+#line 547 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -2647,7 +2454,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 51:
 YY_RULE_SETUP
-#line 558 "dhcp6_lexer.ll"
+#line 557 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -2661,7 +2468,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 52:
 YY_RULE_SETUP
-#line 569 "dhcp6_lexer.ll"
+#line 568 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -2674,7 +2481,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 53:
 YY_RULE_SETUP
-#line 579 "dhcp6_lexer.ll"
+#line 578 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -2687,7 +2494,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 54:
 YY_RULE_SETUP
-#line 589 "dhcp6_lexer.ll"
+#line 588 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -2700,7 +2507,59 @@ YY_RULE_SETUP
        YY_BREAK
 case 55:
 YY_RULE_SETUP
-#line 599 "dhcp6_lexer.ll"
+#line 598 "dhcp6_lexer.ll"
+{
+    switch(driver.ctx_) {
+    case isc::dhcp::Parser6Context::LEASE_DATABASE:
+    case isc::dhcp::Parser6Context::HOSTS_DATABASE:
+        return isc::dhcp::Dhcp6Parser::make_RECONNECT_WAIT_TIME(driver.loc_);
+    default:
+        return isc::dhcp::Dhcp6Parser::make_STRING("reconnect-wait-time", driver.loc_);
+    }
+}
+       YY_BREAK
+case 56:
+YY_RULE_SETUP
+#line 608 "dhcp6_lexer.ll"
+{
+    switch(driver.ctx_) {
+    case isc::dhcp::Parser6Context::LEASE_DATABASE:
+    case isc::dhcp::Parser6Context::HOSTS_DATABASE:
+        return isc::dhcp::Dhcp6Parser::make_REQUEST_TIMEOUT(driver.loc_);
+    default:
+        return isc::dhcp::Dhcp6Parser::make_STRING("request-timeout", driver.loc_);
+    }
+}
+       YY_BREAK
+case 57:
+YY_RULE_SETUP
+#line 618 "dhcp6_lexer.ll"
+{
+    switch(driver.ctx_) {
+    case isc::dhcp::Parser6Context::LEASE_DATABASE:
+    case isc::dhcp::Parser6Context::HOSTS_DATABASE:
+        return isc::dhcp::Dhcp6Parser::make_TCP_KEEPALIVE(driver.loc_);
+    default:
+        return isc::dhcp::Dhcp6Parser::make_STRING("tcp-keepalive", driver.loc_);
+    }
+}
+       YY_BREAK
+case 58:
+YY_RULE_SETUP
+#line 628 "dhcp6_lexer.ll"
+{
+    switch(driver.ctx_) {
+    case isc::dhcp::Parser6Context::LEASE_DATABASE:
+    case isc::dhcp::Parser6Context::HOSTS_DATABASE:
+        return isc::dhcp::Dhcp6Parser::make_TCP_NODELAY(driver.loc_);
+    default:
+        return isc::dhcp::Dhcp6Parser::make_STRING("tcp-nodelay", driver.loc_);
+    }
+}
+       YY_BREAK
+case 59:
+YY_RULE_SETUP
+#line 638 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -2711,9 +2570,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 56:
+case 60:
 YY_RULE_SETUP
-#line 609 "dhcp6_lexer.ll"
+#line 648 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -2725,9 +2584,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 57:
+case 61:
 YY_RULE_SETUP
-#line 620 "dhcp6_lexer.ll"
+#line 659 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -2739,9 +2598,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 58:
+case 62:
 YY_RULE_SETUP
-#line 631 "dhcp6_lexer.ll"
+#line 670 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -2753,9 +2612,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 59:
+case 63:
 YY_RULE_SETUP
-#line 642 "dhcp6_lexer.ll"
+#line 681 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -2767,9 +2626,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 60:
+case 64:
 YY_RULE_SETUP
-#line 653 "dhcp6_lexer.ll"
+#line 692 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -2779,9 +2638,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 61:
+case 65:
 YY_RULE_SETUP
-#line 662 "dhcp6_lexer.ll"
+#line 701 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -2792,9 +2651,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 62:
+case 66:
 YY_RULE_SETUP
-#line 672 "dhcp6_lexer.ll"
+#line 711 "dhcp6_lexer.ll"
 {
     switch (driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -2804,9 +2663,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 63:
+case 67:
 YY_RULE_SETUP
-#line 681 "dhcp6_lexer.ll"
+#line 720 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -2816,9 +2675,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 64:
+case 68:
 YY_RULE_SETUP
-#line 690 "dhcp6_lexer.ll"
+#line 729 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -2835,9 +2694,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 65:
+case 69:
 YY_RULE_SETUP
-#line 706 "dhcp6_lexer.ll"
+#line 745 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -2854,9 +2713,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 66:
+case 70:
 YY_RULE_SETUP
-#line 722 "dhcp6_lexer.ll"
+#line 761 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DATA:
@@ -2866,9 +2725,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 67:
+case 71:
 YY_RULE_SETUP
-#line 731 "dhcp6_lexer.ll"
+#line 770 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DATA:
@@ -2878,9 +2737,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 68:
+case 72:
 YY_RULE_SETUP
-#line 740 "dhcp6_lexer.ll"
+#line 779 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -2890,9 +2749,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 69:
+case 73:
 YY_RULE_SETUP
-#line 749 "dhcp6_lexer.ll"
+#line 788 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -2902,9 +2761,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 70:
+case 74:
 YY_RULE_SETUP
-#line 758 "dhcp6_lexer.ll"
+#line 797 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::PD_POOLS:
@@ -2914,9 +2773,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 71:
+case 75:
 YY_RULE_SETUP
-#line 767 "dhcp6_lexer.ll"
+#line 806 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::PD_POOLS:
@@ -2926,9 +2785,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 72:
+case 76:
 YY_RULE_SETUP
-#line 776 "dhcp6_lexer.ll"
+#line 815 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::PD_POOLS:
@@ -2938,9 +2797,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 73:
+case 77:
 YY_RULE_SETUP
-#line 785 "dhcp6_lexer.ll"
+#line 824 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::PD_POOLS:
@@ -2950,9 +2809,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 74:
+case 78:
 YY_RULE_SETUP
-#line 794 "dhcp6_lexer.ll"
+#line 833 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::PD_POOLS:
@@ -2962,9 +2821,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 75:
+case 79:
 YY_RULE_SETUP
-#line 803 "dhcp6_lexer.ll"
+#line 842 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::POOLS:
@@ -2974,9 +2833,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 76:
+case 80:
 YY_RULE_SETUP
-#line 812 "dhcp6_lexer.ll"
+#line 851 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -2999,9 +2858,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 77:
+case 81:
 YY_RULE_SETUP
-#line 834 "dhcp6_lexer.ll"
+#line 873 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3024,9 +2883,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 78:
+case 82:
 YY_RULE_SETUP
-#line 856 "dhcp6_lexer.ll"
+#line 895 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3036,9 +2895,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 79:
+case 83:
 YY_RULE_SETUP
-#line 865 "dhcp6_lexer.ll"
+#line 904 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3049,9 +2908,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 80:
+case 84:
 YY_RULE_SETUP
-#line 875 "dhcp6_lexer.ll"
+#line 914 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3062,9 +2921,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 81:
+case 85:
 YY_RULE_SETUP
-#line 885 "dhcp6_lexer.ll"
+#line 924 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3074,9 +2933,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 82:
+case 86:
 YY_RULE_SETUP
-#line 894 "dhcp6_lexer.ll"
+#line 933 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3087,9 +2946,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 83:
+case 87:
 YY_RULE_SETUP
-#line 904 "dhcp6_lexer.ll"
+#line 943 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3100,9 +2959,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 84:
+case 88:
 YY_RULE_SETUP
-#line 914 "dhcp6_lexer.ll"
+#line 953 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATION_MODE:
@@ -3112,9 +2971,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 85:
+case 89:
 YY_RULE_SETUP
-#line 923 "dhcp6_lexer.ll"
+#line 962 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATION_MODE:
@@ -3124,9 +2983,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 86:
+case 90:
 YY_RULE_SETUP
-#line 932 "dhcp6_lexer.ll"
+#line 971 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATION_MODE:
@@ -3136,9 +2995,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 87:
+case 91:
 YY_RULE_SETUP
-#line 941 "dhcp6_lexer.ll"
+#line 980 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATION_MODE:
@@ -3148,9 +3007,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 88:
+case 92:
 YY_RULE_SETUP
-#line 950 "dhcp6_lexer.ll"
+#line 989 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -3161,9 +3020,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 89:
+case 93:
 YY_RULE_SETUP
-#line 960 "dhcp6_lexer.ll"
+#line 999 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3173,9 +3032,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 90:
+case 94:
 YY_RULE_SETUP
-#line 969 "dhcp6_lexer.ll"
+#line 1008 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3185,9 +3044,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 91:
+case 95:
 YY_RULE_SETUP
-#line 978 "dhcp6_lexer.ll"
+#line 1017 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3197,9 +3056,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 92:
+case 96:
 YY_RULE_SETUP
-#line 987 "dhcp6_lexer.ll"
+#line 1026 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONFIG:
@@ -3209,9 +3068,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 93:
+case 97:
 YY_RULE_SETUP
-#line 996 "dhcp6_lexer.ll"
+#line 1035 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LOGGING:
@@ -3221,9 +3080,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 94:
+case 98:
 YY_RULE_SETUP
-#line 1005 "dhcp6_lexer.ll"
+#line 1044 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LOGGERS:
@@ -3233,9 +3092,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 95:
+case 99:
 YY_RULE_SETUP
-#line 1014 "dhcp6_lexer.ll"
+#line 1053 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
@@ -3245,9 +3104,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 96:
+case 100:
 YY_RULE_SETUP
-#line 1023 "dhcp6_lexer.ll"
+#line 1062 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
@@ -3257,9 +3116,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 97:
+case 101:
 YY_RULE_SETUP
-#line 1032 "dhcp6_lexer.ll"
+#line 1071 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
@@ -3269,9 +3128,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 98:
+case 102:
 YY_RULE_SETUP
-#line 1041 "dhcp6_lexer.ll"
+#line 1080 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
@@ -3281,9 +3140,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 99:
+case 103:
 YY_RULE_SETUP
-#line 1051 "dhcp6_lexer.ll"
+#line 1090 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LOGGERS:
@@ -3293,9 +3152,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 100:
+case 104:
 YY_RULE_SETUP
-#line 1060 "dhcp6_lexer.ll"
+#line 1099 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LOGGERS:
@@ -3305,9 +3164,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 101:
+case 105:
 YY_RULE_SETUP
-#line 1069 "dhcp6_lexer.ll"
+#line 1108 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3318,9 +3177,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 102:
+case 106:
 YY_RULE_SETUP
-#line 1079 "dhcp6_lexer.ll"
+#line 1118 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3334,9 +3193,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 103:
+case 107:
 YY_RULE_SETUP
-#line 1092 "dhcp6_lexer.ll"
+#line 1131 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CLIENT_CLASSES:
@@ -3347,9 +3206,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 104:
+case 108:
 YY_RULE_SETUP
-#line 1102 "dhcp6_lexer.ll"
+#line 1141 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3359,9 +3218,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 105:
+case 109:
 YY_RULE_SETUP
-#line 1111 "dhcp6_lexer.ll"
+#line 1150 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATIONS:
@@ -3371,9 +3230,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 106:
+case 110:
 YY_RULE_SETUP
-#line 1120 "dhcp6_lexer.ll"
+#line 1159 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATIONS:
@@ -3383,9 +3242,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 107:
+case 111:
 YY_RULE_SETUP
-#line 1129 "dhcp6_lexer.ll"
+#line 1168 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::MAC_SOURCES:
@@ -3397,9 +3256,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 108:
+case 112:
 YY_RULE_SETUP
-#line 1140 "dhcp6_lexer.ll"
+#line 1179 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::HOST_RESERVATION_IDENTIFIERS:
@@ -3410,9 +3269,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 109:
+case 113:
 YY_RULE_SETUP
-#line 1150 "dhcp6_lexer.ll"
+#line 1189 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATIONS:
@@ -3422,9 +3281,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 110:
+case 114:
 YY_RULE_SETUP
-#line 1159 "dhcp6_lexer.ll"
+#line 1198 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::HOST_RESERVATION_IDENTIFIERS:
@@ -3435,9 +3294,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 111:
+case 115:
 YY_RULE_SETUP
-#line 1169 "dhcp6_lexer.ll"
+#line 1208 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -3448,9 +3307,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 112:
+case 116:
 YY_RULE_SETUP
-#line 1179 "dhcp6_lexer.ll"
+#line 1218 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DATA:
@@ -3460,9 +3319,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 113:
+case 117:
 YY_RULE_SETUP
-#line 1188 "dhcp6_lexer.ll"
+#line 1227 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -3472,9 +3331,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 114:
+case 118:
 YY_RULE_SETUP
-#line 1197 "dhcp6_lexer.ll"
+#line 1236 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -3484,9 +3343,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 115:
+case 119:
 YY_RULE_SETUP
-#line 1206 "dhcp6_lexer.ll"
+#line 1245 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -3496,9 +3355,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 116:
+case 120:
 YY_RULE_SETUP
-#line 1215 "dhcp6_lexer.ll"
+#line 1254 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3509,9 +3368,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 117:
+case 121:
 YY_RULE_SETUP
-#line 1225 "dhcp6_lexer.ll"
+#line 1264 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RELAY:
@@ -3521,9 +3380,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 118:
+case 122:
 YY_RULE_SETUP
-#line 1234 "dhcp6_lexer.ll"
+#line 1273 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3533,9 +3392,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 119:
+case 123:
 YY_RULE_SETUP
-#line 1244 "dhcp6_lexer.ll"
+#line 1283 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::HOOKS_LIBRARIES:
@@ -3545,9 +3404,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 120:
+case 124:
 YY_RULE_SETUP
-#line 1253 "dhcp6_lexer.ll"
+#line 1292 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::HOOKS_LIBRARIES:
@@ -3557,9 +3416,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 121:
+case 125:
 YY_RULE_SETUP
-#line 1262 "dhcp6_lexer.ll"
+#line 1301 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3569,9 +3428,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 122:
+case 126:
 YY_RULE_SETUP
-#line 1271 "dhcp6_lexer.ll"
+#line 1310 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DUID_TYPE:
@@ -3581,9 +3440,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 123:
+case 127:
 YY_RULE_SETUP
-#line 1280 "dhcp6_lexer.ll"
+#line 1319 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DUID_TYPE:
@@ -3593,9 +3452,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 124:
+case 128:
 YY_RULE_SETUP
-#line 1289 "dhcp6_lexer.ll"
+#line 1328 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DUID_TYPE:
@@ -3605,9 +3464,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 125:
+case 129:
 YY_RULE_SETUP
-#line 1298 "dhcp6_lexer.ll"
+#line 1337 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
@@ -3617,9 +3476,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 126:
+case 130:
 YY_RULE_SETUP
-#line 1307 "dhcp6_lexer.ll"
+#line 1346 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
@@ -3629,9 +3488,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 127:
+case 131:
 YY_RULE_SETUP
-#line 1316 "dhcp6_lexer.ll"
+#line 1355 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
@@ -3641,9 +3500,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 128:
+case 132:
 YY_RULE_SETUP
-#line 1325 "dhcp6_lexer.ll"
+#line 1364 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
@@ -3653,9 +3512,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 129:
+case 133:
 YY_RULE_SETUP
-#line 1334 "dhcp6_lexer.ll"
+#line 1373 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3665,9 +3524,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 130:
+case 134:
 YY_RULE_SETUP
-#line 1343 "dhcp6_lexer.ll"
+#line 1382 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -3677,9 +3536,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 131:
+case 135:
 YY_RULE_SETUP
-#line 1352 "dhcp6_lexer.ll"
+#line 1391 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -3689,9 +3548,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 132:
+case 136:
 YY_RULE_SETUP
-#line 1361 "dhcp6_lexer.ll"
+#line 1400 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -3701,9 +3560,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 133:
+case 137:
 YY_RULE_SETUP
-#line 1370 "dhcp6_lexer.ll"
+#line 1409 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -3713,9 +3572,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 134:
+case 138:
 YY_RULE_SETUP
-#line 1379 "dhcp6_lexer.ll"
+#line 1418 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -3725,9 +3584,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 135:
+case 139:
 YY_RULE_SETUP
-#line 1388 "dhcp6_lexer.ll"
+#line 1427 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -3737,9 +3596,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 136:
+case 140:
 YY_RULE_SETUP
-#line 1397 "dhcp6_lexer.ll"
+#line 1436 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3749,9 +3608,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 137:
+case 141:
 YY_RULE_SETUP
-#line 1406 "dhcp6_lexer.ll"
+#line 1445 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3761,9 +3620,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 138:
+case 142:
 YY_RULE_SETUP
-#line 1415 "dhcp6_lexer.ll"
+#line 1454 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONTROL_SOCKET:
@@ -3773,9 +3632,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 139:
+case 143:
 YY_RULE_SETUP
-#line 1424 "dhcp6_lexer.ll"
+#line 1463 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONTROL_SOCKET:
@@ -3785,9 +3644,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 140:
+case 144:
 YY_RULE_SETUP
-#line 1433 "dhcp6_lexer.ll"
+#line 1472 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3797,9 +3656,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 141:
+case 145:
 YY_RULE_SETUP
-#line 1442 "dhcp6_lexer.ll"
+#line 1481 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONFIG:
@@ -3809,9 +3668,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 142:
+case 146:
 YY_RULE_SETUP
-#line 1451 "dhcp6_lexer.ll"
+#line 1490 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONFIG:
@@ -3821,9 +3680,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 143:
+case 147:
 YY_RULE_SETUP
-#line 1460 "dhcp6_lexer.ll"
+#line 1499 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONFIG:
@@ -3833,14 +3692,14 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 144:
+case 148:
 YY_RULE_SETUP
-#line 1470 "dhcp6_lexer.ll"
+#line 1509 "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.
        for 'foo' we should get foo */
-    std::string raw(yytext+1);
+    std::string raw(parser6_text+1);
     size_t len = raw.size() - 1;
     raw.resize(len);
     std::string decoded;
@@ -3935,68 +3794,68 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp6Parser::make_STRING(decoded, driver.loc_);
 }
        YY_BREAK
-case 145:
-/* rule 145 can match eol */
+case 149:
+/* rule 149 can match eol */
 YY_RULE_SETUP
-#line 1569 "dhcp6_lexer.ll"
+#line 1608 "dhcp6_lexer.ll"
 {
     /* Bad string with a forbidden control character inside */
-    driver.error(driver.loc_, "Invalid control in " + std::string(yytext));
+    driver.error(driver.loc_, "Invalid control in " + std::string(parser6_text));
 }
        YY_BREAK
-case 146:
-/* rule 146 can match eol */
+case 150:
+/* rule 150 can match eol */
 YY_RULE_SETUP
-#line 1574 "dhcp6_lexer.ll"
+#line 1613 "dhcp6_lexer.ll"
 {
     /* Bad string with a bad escape inside */
-    driver.error(driver.loc_, "Bad escape in " + std::string(yytext));
+    driver.error(driver.loc_, "Bad escape in " + std::string(parser6_text));
 }
        YY_BREAK
-case 147:
+case 151:
 YY_RULE_SETUP
-#line 1579 "dhcp6_lexer.ll"
+#line 1618 "dhcp6_lexer.ll"
 {
     /* Bad string with an open escape at the end */
-    driver.error(driver.loc_, "Overflow escape in " + std::string(yytext));
+    driver.error(driver.loc_, "Overflow escape in " + std::string(parser6_text));
 }
        YY_BREAK
-case 148:
+case 152:
 YY_RULE_SETUP
-#line 1584 "dhcp6_lexer.ll"
+#line 1623 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_LSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 149:
+case 153:
 YY_RULE_SETUP
-#line 1585 "dhcp6_lexer.ll"
+#line 1624 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_RSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 150:
+case 154:
 YY_RULE_SETUP
-#line 1586 "dhcp6_lexer.ll"
+#line 1625 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_LCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 151:
+case 155:
 YY_RULE_SETUP
-#line 1587 "dhcp6_lexer.ll"
+#line 1626 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_RCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 152:
+case 156:
 YY_RULE_SETUP
-#line 1588 "dhcp6_lexer.ll"
+#line 1627 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_COMMA(driver.loc_); }
        YY_BREAK
-case 153:
+case 157:
 YY_RULE_SETUP
-#line 1589 "dhcp6_lexer.ll"
+#line 1628 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_COLON(driver.loc_); }
        YY_BREAK
-case 154:
+case 158:
 YY_RULE_SETUP
-#line 1591 "dhcp6_lexer.ll"
+#line 1630 "dhcp6_lexer.ll"
 {
     /* An integer was found. */
-    std::string tmp(yytext);
+    std::string tmp(parser6_text);
     int64_t integer = 0;
     try {
         /* In substring we want to use negative values (e.g. -1).
@@ -4012,12 +3871,12 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp6Parser::make_INTEGER(integer, driver.loc_);
 }
        YY_BREAK
-case 155:
+case 159:
 YY_RULE_SETUP
-#line 1609 "dhcp6_lexer.ll"
+#line 1648 "dhcp6_lexer.ll"
 {
     /* A floating point was found. */
-    std::string tmp(yytext);
+    std::string tmp(parser6_text);
     double fp = 0.0;
     try {
         fp = boost::lexical_cast<double>(tmp);
@@ -4028,43 +3887,43 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp6Parser::make_FLOAT(fp, driver.loc_);
 }
        YY_BREAK
-case 156:
+case 160:
 YY_RULE_SETUP
-#line 1622 "dhcp6_lexer.ll"
+#line 1661 "dhcp6_lexer.ll"
 {
-    string tmp(yytext);
+    string tmp(parser6_text);
     return isc::dhcp::Dhcp6Parser::make_BOOLEAN(tmp == "true", driver.loc_);
 }
        YY_BREAK
-case 157:
+case 161:
 YY_RULE_SETUP
-#line 1627 "dhcp6_lexer.ll"
+#line 1666 "dhcp6_lexer.ll"
 {
    return isc::dhcp::Dhcp6Parser::make_NULL_TYPE(driver.loc_);
 }
        YY_BREAK
-case 158:
+case 162:
 YY_RULE_SETUP
-#line 1631 "dhcp6_lexer.ll"
+#line 1670 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "JSON true reserved keyword is lower case only");
        YY_BREAK
-case 159:
+case 163:
 YY_RULE_SETUP
-#line 1633 "dhcp6_lexer.ll"
+#line 1672 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "JSON false reserved keyword is lower case only");
        YY_BREAK
-case 160:
+case 164:
 YY_RULE_SETUP
-#line 1635 "dhcp6_lexer.ll"
+#line 1674 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "JSON null reserved keyword is lower case only");
        YY_BREAK
-case 161:
+case 165:
 YY_RULE_SETUP
-#line 1637 "dhcp6_lexer.ll"
-driver.error (driver.loc_, "Invalid character: " + std::string(yytext));
+#line 1676 "dhcp6_lexer.ll"
+driver.error (driver.loc_, "Invalid character: " + std::string(parser6_text));
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
-#line 1639 "dhcp6_lexer.ll"
+#line 1678 "dhcp6_lexer.ll"
 {
     if (driver.states_.empty()) {
         return isc::dhcp::Dhcp6Parser::make_END(driver.loc_);
@@ -4088,12 +3947,12 @@ case YY_STATE_EOF(INITIAL):
     BEGIN(DIR_EXIT);
 }
        YY_BREAK
-case 162:
+case 166:
 YY_RULE_SETUP
-#line 1662 "dhcp6_lexer.ll"
+#line 1701 "dhcp6_lexer.ll"
 ECHO;
        YY_BREAK
-#line 4096 "dhcp6_lexer.cc"
+#line 3956 "dhcp6_lexer.cc"
 
        case YY_END_OF_BUFFER:
                {
@@ -4108,8 +3967,8 @@ ECHO;
                        {
                        /* We're scanning a new file or input source.  It's
                         * possible that this happened because the user
-                        * just pointed yyin at a new source and called
-                        * yylex().  If so, then we have to assure
+                        * just pointed parser6_in at a new source and called
+                        * parser6_lex().  If so, then we have to assure
                         * consistency between YY_CURRENT_BUFFER and our
                         * globals.  Here is the right place to do so, because
                         * this is the first action (other than possibly a
@@ -4117,7 +3976,7 @@ ECHO;
                         */
                        (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
 /* %if-c-only */
-                       YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
+                       YY_CURRENT_BUFFER_LVALUE->yy_input_file = parser6_in;
 /* %endif */
 /* %if-c++-only */
 /* %endif */
@@ -4175,11 +4034,11 @@ ECHO;
                                {
                                (yy_did_buffer_switch_on_eof) = 0;
 
-                               if ( yywrap(  ) )
+                               if ( parser6_wrap( ) )
                                        {
                                        /* Note: because we've taken care in
                                         * yy_get_next_buffer() to have set up
-                                        * yytext, we can now set up
+                                        * parser6_text, we can now set up
                                         * yy_c_buf_p so that if some total
                                         * hoser (like flex itself) wants to
                                         * call the scanner after we return the
@@ -4229,11 +4088,12 @@ ECHO;
        } /* end of action switch */
                } /* end of scanning one token */
        } /* end of user's declarations */
-} /* end of yylex */
+} /* end of parser6_lex */
 /* %ok-for-header */
 
 /* %if-c++-only */
 /* %not-for-header */
+
 /* %ok-for-header */
 
 /* %endif */
@@ -4318,8 +4178,7 @@ static int yy_get_next_buffer (void)
 
                                b->yy_ch_buf = (char *)
                                        /* Include room in for 2 EOB chars. */
-                                       yyrealloc( (void *) b->yy_ch_buf,
-                                                        (yy_size_t) (b->yy_buf_size + 2)  );
+                                       parser6_realloc((void *) b->yy_ch_buf,b->yy_buf_size + 2  );
                                }
                        else
                                /* Can't grow it, we don't own it. */
@@ -4351,7 +4210,7 @@ static int yy_get_next_buffer (void)
                if ( number_to_move == YY_MORE_ADJ )
                        {
                        ret_val = EOB_ACT_END_OF_FILE;
-                       yyrestart( yyin  );
+                       parser6_restart(parser6_in  );
                        }
 
                else
@@ -4368,12 +4227,9 @@ static int yy_get_next_buffer (void)
        if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
                /* Extend the array by 50%, plus the number we really need. */
                int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
-               YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc(
-                       (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size  );
+               YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) parser6_realloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size  );
                if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
                        YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
-               /* "- 2" to take care of EOB's */
-               YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2);
        }
 
        (yy_n_chars) += number_to_move;
@@ -4389,6 +4245,7 @@ static int yy_get_next_buffer (void)
 
 /* %if-c-only */
 /* %not-for-header */
+
     static yy_state_type yy_get_previous_state (void)
 /* %endif */
 /* %if-c++-only */
@@ -4412,10 +4269,10 @@ 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 >= 1272 )
-                               yy_c = yy_meta[yy_c];
+                       if ( yy_current_state >= 1323 )
+                               yy_c = yy_meta[(unsigned int) yy_c];
                        }
-               yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
+               yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];
                }
 
        return yy_current_state;
@@ -4445,11 +4302,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 >= 1272 )
-                       yy_c = yy_meta[yy_c];
+               if ( yy_current_state >= 1323 )
+                       yy_c = yy_meta[(unsigned int) yy_c];
                }
-       yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
-       yy_is_jam = (yy_current_state == 1271);
+       yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];
+       yy_is_jam = (yy_current_state == 1322);
 
                return yy_is_jam ? 0 : yy_current_state;
 }
@@ -4488,7 +4345,7 @@ static int yy_get_next_buffer (void)
 
                else
                        { /* need more input */
-                       int offset = (int) ((yy_c_buf_p) - (yytext_ptr));
+                       int offset = (yy_c_buf_p) - (yytext_ptr);
                        ++(yy_c_buf_p);
 
                        switch ( yy_get_next_buffer(  ) )
@@ -4505,13 +4362,13 @@ static int yy_get_next_buffer (void)
                                         */
 
                                        /* Reset buffer status. */
-                                       yyrestart( yyin );
+                                       parser6_restart(parser6_in );
 
                                        /*FALLTHROUGH*/
 
                                case EOB_ACT_END_OF_FILE:
                                        {
-                                       if ( yywrap(  ) )
+                                       if ( parser6_wrap( ) )
                                                return 0;
 
                                        if ( ! (yy_did_buffer_switch_on_eof) )
@@ -4531,10 +4388,10 @@ static int yy_get_next_buffer (void)
                }
 
        c = *(unsigned char *) (yy_c_buf_p);    /* cast for 8-bit char's */
-       *(yy_c_buf_p) = '\0';   /* preserve yytext */
+       *(yy_c_buf_p) = '\0';   /* preserve parser6_text */
        (yy_hold_char) = *++(yy_c_buf_p);
 
-/* %% [19.0] update BOL and yylineno */
+/* %% [19.0] update BOL and parser6_lineno */
 
        return c;
 }
@@ -4548,20 +4405,20 @@ static int yy_get_next_buffer (void)
  * @note This function does not reset the start condition to @c INITIAL .
  */
 /* %if-c-only */
-    void yyrestart  (FILE * input_file )
+    void parser6_restart  (FILE * input_file )
 /* %endif */
 /* %if-c++-only */
 /* %endif */
 {
     
        if ( ! YY_CURRENT_BUFFER ){
-        yyensure_buffer_stack ();
+        parser6_ensure_buffer_stack ();
                YY_CURRENT_BUFFER_LVALUE =
-            yy_create_buffer( yyin, YY_BUF_SIZE );
+            parser6__create_buffer(parser6_in,YY_BUF_SIZE );
        }
 
-       yy_init_buffer( YY_CURRENT_BUFFER, input_file );
-       yy_load_buffer_state(  );
+       parser6__init_buffer(YY_CURRENT_BUFFER,input_file );
+       parser6__load_buffer_state( );
 }
 
 /* %if-c++-only */
@@ -4572,7 +4429,7 @@ static int yy_get_next_buffer (void)
  * 
  */
 /* %if-c-only */
-    void yy_switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
+    void parser6__switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
 /* %endif */
 /* %if-c++-only */
 /* %endif */
@@ -4580,10 +4437,10 @@ static int yy_get_next_buffer (void)
     
        /* TODO. We should be able to replace this entire function body
         * with
-        *              yypop_buffer_state();
-        *              yypush_buffer_state(new_buffer);
+        *              parser6_pop_buffer_state();
+        *              parser6_push_buffer_state(new_buffer);
      */
-       yyensure_buffer_stack ();
+       parser6_ensure_buffer_stack ();
        if ( YY_CURRENT_BUFFER == new_buffer )
                return;
 
@@ -4596,18 +4453,18 @@ static int yy_get_next_buffer (void)
                }
 
        YY_CURRENT_BUFFER_LVALUE = new_buffer;
-       yy_load_buffer_state(  );
+       parser6__load_buffer_state( );
 
        /* We don't actually know whether we did this switch during
-        * EOF (yywrap()) processing, but the only time this flag
-        * is looked at is after yywrap() is called, so it's safe
+        * EOF (parser6_wrap()) processing, but the only time this flag
+        * is looked at is after parser6_wrap() is called, so it's safe
         * to go ahead and always set it.
         */
        (yy_did_buffer_switch_on_eof) = 1;
 }
 
 /* %if-c-only */
-static void yy_load_buffer_state  (void)
+static void parser6__load_buffer_state  (void)
 /* %endif */
 /* %if-c++-only */
 /* %endif */
@@ -4615,7 +4472,7 @@ static void yy_load_buffer_state  (void)
        (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
        (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
 /* %if-c-only */
-       yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
+       parser6_in = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
 /* %endif */
 /* %if-c++-only */
 /* %endif */
@@ -4629,29 +4486,29 @@ static void yy_load_buffer_state  (void)
  * @return the allocated buffer state.
  */
 /* %if-c-only */
-    YY_BUFFER_STATE yy_create_buffer  (FILE * file, int  size )
+    YY_BUFFER_STATE parser6__create_buffer  (FILE * file, int  size )
 /* %endif */
 /* %if-c++-only */
 /* %endif */
 {
        YY_BUFFER_STATE b;
     
-       b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state )  );
+       b = (YY_BUFFER_STATE) parser6_alloc(sizeof( struct yy_buffer_state )  );
        if ( ! b )
-               YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
+               YY_FATAL_ERROR( "out of dynamic memory in parser6__create_buffer()" );
 
-       b->yy_buf_size = size;
+       b->yy_buf_size = (yy_size_t)size;
 
        /* yy_ch_buf has to be 2 characters longer than the size given because
         * we need to put in 2 end-of-buffer characters.
         */
-       b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2)  );
+       b->yy_ch_buf = (char *) parser6_alloc(b->yy_buf_size + 2  );
        if ( ! b->yy_ch_buf )
-               YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
+               YY_FATAL_ERROR( "out of dynamic memory in parser6__create_buffer()" );
 
        b->yy_is_our_buffer = 1;
 
-       yy_init_buffer( b, file );
+       parser6__init_buffer(b,file );
 
        return b;
 }
@@ -4660,11 +4517,11 @@ static void yy_load_buffer_state  (void)
 /* %endif */
 
 /** Destroy the buffer.
- * @param b a buffer created with yy_create_buffer()
+ * @param b a buffer created with parser6__create_buffer()
  * 
  */
 /* %if-c-only */
-    void yy_delete_buffer (YY_BUFFER_STATE  b )
+    void parser6__delete_buffer (YY_BUFFER_STATE  b )
 /* %endif */
 /* %if-c++-only */
 /* %endif */
@@ -4677,17 +4534,17 @@ static void yy_load_buffer_state  (void)
                YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
 
        if ( b->yy_is_our_buffer )
-               yyfree( (void *) b->yy_ch_buf  );
+               parser6_free((void *) b->yy_ch_buf  );
 
-       yyfree( (void *) b  );
+       parser6_free((void *) b  );
 }
 
 /* Initializes or reinitializes a buffer.
  * This function is sometimes called more than once on the same buffer,
- * such as during a yyrestart() or at EOF.
+ * such as during a parser6_restart() or at EOF.
  */
 /* %if-c-only */
-    static void yy_init_buffer  (YY_BUFFER_STATE  b, FILE * file )
+    static void parser6__init_buffer  (YY_BUFFER_STATE  b, FILE * file )
 /* %endif */
 /* %if-c++-only */
 /* %endif */
@@ -4695,7 +4552,7 @@ static void yy_load_buffer_state  (void)
 {
        int oerrno = errno;
     
-       yy_flush_buffer( b );
+       parser6__flush_buffer(b );
 
 /* %if-c-only */
        b->yy_input_file = file;
@@ -4704,8 +4561,8 @@ static void yy_load_buffer_state  (void)
 /* %endif */
        b->yy_fill_buffer = 1;
 
-    /* If b is the current buffer, then yy_init_buffer was _probably_
-     * called from yyrestart() or through yy_get_next_buffer.
+    /* If b is the current buffer, then parser6__init_buffer was _probably_
+     * called from parser6_restart() or through yy_get_next_buffer.
      * In that case, we don't want to reset the lineno or column.
      */
     if (b != YY_CURRENT_BUFFER){
@@ -4728,7 +4585,7 @@ static void yy_load_buffer_state  (void)
  * 
  */
 /* %if-c-only */
-    void yy_flush_buffer (YY_BUFFER_STATE  b )
+    void parser6__flush_buffer (YY_BUFFER_STATE  b )
 /* %endif */
 /* %if-c++-only */
 /* %endif */
@@ -4751,7 +4608,7 @@ static void yy_load_buffer_state  (void)
        b->yy_buffer_status = YY_BUFFER_NEW;
 
        if ( b == YY_CURRENT_BUFFER )
-               yy_load_buffer_state(  );
+               parser6__load_buffer_state( );
 }
 
 /* %if-c-or-c++ */
@@ -4762,7 +4619,7 @@ static void yy_load_buffer_state  (void)
  *  
  */
 /* %if-c-only */
-void yypush_buffer_state (YY_BUFFER_STATE new_buffer )
+void parser6_push_buffer_state (YY_BUFFER_STATE new_buffer )
 /* %endif */
 /* %if-c++-only */
 /* %endif */
@@ -4770,9 +4627,9 @@ void yypush_buffer_state (YY_BUFFER_STATE new_buffer )
        if (new_buffer == NULL)
                return;
 
-       yyensure_buffer_stack();
+       parser6_ensure_buffer_stack();
 
-       /* This block is copied from yy_switch_to_buffer. */
+       /* This block is copied from parser6__switch_to_buffer. */
        if ( YY_CURRENT_BUFFER )
                {
                /* Flush out information for old buffer. */
@@ -4786,8 +4643,8 @@ void yypush_buffer_state (YY_BUFFER_STATE new_buffer )
                (yy_buffer_stack_top)++;
        YY_CURRENT_BUFFER_LVALUE = new_buffer;
 
-       /* copied from yy_switch_to_buffer. */
-       yy_load_buffer_state(  );
+       /* copied from parser6__switch_to_buffer. */
+       parser6__load_buffer_state( );
        (yy_did_buffer_switch_on_eof) = 1;
 }
 /* %endif */
@@ -4798,7 +4655,7 @@ void yypush_buffer_state (YY_BUFFER_STATE new_buffer )
  *  
  */
 /* %if-c-only */
-void yypop_buffer_state (void)
+void parser6_pop_buffer_state (void)
 /* %endif */
 /* %if-c++-only */
 /* %endif */
@@ -4806,13 +4663,13 @@ void yypop_buffer_state (void)
        if (!YY_CURRENT_BUFFER)
                return;
 
-       yy_delete_buffer(YY_CURRENT_BUFFER );
+       parser6__delete_buffer(YY_CURRENT_BUFFER );
        YY_CURRENT_BUFFER_LVALUE = NULL;
        if ((yy_buffer_stack_top) > 0)
                --(yy_buffer_stack_top);
 
        if (YY_CURRENT_BUFFER) {
-               yy_load_buffer_state(  );
+               parser6__load_buffer_state( );
                (yy_did_buffer_switch_on_eof) = 1;
        }
 }
@@ -4823,12 +4680,12 @@ void yypop_buffer_state (void)
  *  Guarantees space for at least one push.
  */
 /* %if-c-only */
-static void yyensure_buffer_stack (void)
+static void parser6_ensure_buffer_stack (void)
 /* %endif */
 /* %if-c++-only */
 /* %endif */
 {
-       yy_size_t num_to_alloc;
+       int num_to_alloc;
     
        if (!(yy_buffer_stack)) {
 
@@ -4837,11 +4694,11 @@ static void yyensure_buffer_stack (void)
                 * immediate realloc on the next call.
          */
       num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */
-               (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
+               (yy_buffer_stack) = (struct yy_buffer_state**)parser6_alloc
                                                                (num_to_alloc * sizeof(struct yy_buffer_state*)
                                                                );
                if ( ! (yy_buffer_stack) )
-                       YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
+                       YY_FATAL_ERROR( "out of dynamic memory in parser6_ensure_buffer_stack()" );
 
                memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
 
@@ -4856,12 +4713,12 @@ static void yyensure_buffer_stack (void)
                yy_size_t grow_size = 8 /* arbitrary grow size */;
 
                num_to_alloc = (yy_buffer_stack_max) + grow_size;
-               (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc
+               (yy_buffer_stack) = (struct yy_buffer_state**)parser6_realloc
                                                                ((yy_buffer_stack),
                                                                num_to_alloc * sizeof(struct yy_buffer_state*)
                                                                );
                if ( ! (yy_buffer_stack) )
-                       YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
+                       YY_FATAL_ERROR( "out of dynamic memory in parser6_ensure_buffer_stack()" );
 
                /* zero only the new slots.*/
                memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
@@ -4877,7 +4734,7 @@ static void yyensure_buffer_stack (void)
  * 
  * @return the newly allocated buffer state object.
  */
-YY_BUFFER_STATE yy_scan_buffer  (char * base, yy_size_t  size )
+YY_BUFFER_STATE parser6__scan_buffer  (char * base, yy_size_t  size )
 {
        YY_BUFFER_STATE b;
     
@@ -4887,11 +4744,11 @@ YY_BUFFER_STATE yy_scan_buffer  (char * base, yy_size_t  size )
                /* They forgot to leave room for the EOB's. */
                return NULL;
 
-       b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state )  );
+       b = (YY_BUFFER_STATE) parser6_alloc(sizeof( struct yy_buffer_state )  );
        if ( ! b )
-               YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
+               YY_FATAL_ERROR( "out of dynamic memory in parser6__scan_buffer()" );
 
-       b->yy_buf_size = (int) (size - 2);      /* "- 2" to take care of EOB's */
+       b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
        b->yy_buf_pos = b->yy_ch_buf = base;
        b->yy_is_our_buffer = 0;
        b->yy_input_file = NULL;
@@ -4901,37 +4758,37 @@ YY_BUFFER_STATE yy_scan_buffer  (char * base, yy_size_t  size )
        b->yy_fill_buffer = 0;
        b->yy_buffer_status = YY_BUFFER_NEW;
 
-       yy_switch_to_buffer( b  );
+       parser6__switch_to_buffer(b  );
 
        return b;
 }
 /* %endif */
 
 /* %if-c-only */
-/** Setup the input buffer state to scan a string. The next call to yylex() will
+/** Setup the input buffer state to scan a string. The next call to parser6_lex() will
  * scan from a @e copy of @a str.
  * @param yystr a NUL-terminated string to scan
  * 
  * @return the newly allocated buffer state object.
  * @note If you want to scan bytes that may contain NUL values, then use
- *       yy_scan_bytes() instead.
+ *       parser6__scan_bytes() instead.
  */
-YY_BUFFER_STATE yy_scan_string (const char * yystr )
+YY_BUFFER_STATE parser6__scan_string (yyconst char * yystr )
 {
     
-       return yy_scan_bytes( yystr, (int) strlen(yystr) );
+       return parser6__scan_bytes(yystr,(int) strlen(yystr) );
 }
 /* %endif */
 
 /* %if-c-only */
-/** Setup the input buffer state to scan the given bytes. The next call to yylex() will
+/** Setup the input buffer state to scan the given bytes. The next call to parser6_lex() will
  * scan from a @e copy of @a bytes.
  * @param yybytes the byte buffer to scan
  * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
  * 
  * @return the newly allocated buffer state object.
  */
-YY_BUFFER_STATE yy_scan_bytes  (const char * yybytes, int  _yybytes_len )
+YY_BUFFER_STATE parser6__scan_bytes  (yyconst char * yybytes, int  _yybytes_len )
 {
        YY_BUFFER_STATE b;
        char *buf;
@@ -4940,18 +4797,18 @@ YY_BUFFER_STATE yy_scan_bytes  (const char * yybytes, int  _yybytes_len )
     
        /* Get memory for full buffer, including space for trailing EOB's. */
        n = (yy_size_t) (_yybytes_len + 2);
-       buf = (char *) yyalloc( n  );
+       buf = (char *) parser6_alloc(n  );
        if ( ! buf )
-               YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
+               YY_FATAL_ERROR( "out of dynamic memory in parser6__scan_bytes()" );
 
        for ( i = 0; i < _yybytes_len; ++i )
                buf[i] = yybytes[i];
 
        buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
 
-       b = yy_scan_buffer( buf, n );
+       b = parser6__scan_buffer(buf,n );
        if ( ! b )
-               YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
+               YY_FATAL_ERROR( "bad buffer in parser6__scan_bytes()" );
 
        /* It's okay to grow etc. this buffer, and we should throw it
         * away when we're done.
@@ -4967,9 +4824,9 @@ YY_BUFFER_STATE yy_scan_bytes  (const char * yybytes, int  _yybytes_len )
 #endif
 
 /* %if-c-only */
-static void yynoreturn yy_fatal_error (const char* msg )
+static void yynoreturn yy_fatal_error (yyconst char* msg )
 {
-                       fprintf( stderr, "%s\n", msg );
+                       (void) fprintf( stderr, "%s\n", msg );
        exit( YY_EXIT_FAILURE );
 }
 /* %endif */
@@ -4982,14 +4839,14 @@ static void yynoreturn yy_fatal_error (const char* msg )
 #define yyless(n) \
        do \
                { \
-               /* Undo effects of setting up yytext. */ \
+               /* Undo effects of setting up parser6_text. */ \
         int yyless_macro_arg = (n); \
         YY_LESS_LINENO(yyless_macro_arg);\
-               yytext[yyleng] = (yy_hold_char); \
-               (yy_c_buf_p) = yytext + yyless_macro_arg; \
+               parser6_text[parser6_leng] = (yy_hold_char); \
+               (yy_c_buf_p) = parser6_text + yyless_macro_arg; \
                (yy_hold_char) = *(yy_c_buf_p); \
                *(yy_c_buf_p) = '\0'; \
-               yyleng = yyless_macro_arg; \
+               parser6_leng = yyless_macro_arg; \
                } \
        while ( 0 )
 
@@ -5002,43 +4859,43 @@ static void yynoreturn yy_fatal_error (const char* msg )
 /** Get the current line number.
  * 
  */
-int yyget_lineno  (void)
+int parser6_get_lineno  (void)
 {
     
-    return yylineno;
+    return parser6_lineno;
 }
 
 /** Get the input stream.
  * 
  */
-FILE *yyget_in  (void)
+FILE *parser6_get_in  (void)
 {
-        return yyin;
+        return parser6_in;
 }
 
 /** Get the output stream.
  * 
  */
-FILE *yyget_out  (void)
+FILE *parser6_get_out  (void)
 {
-        return yyout;
+        return parser6_out;
 }
 
 /** Get the length of the current token.
  * 
  */
-int yyget_leng  (void)
+int parser6_get_leng  (void)
 {
-        return yyleng;
+        return parser6_leng;
 }
 
 /** Get the current token.
  * 
  */
 
-char *yyget_text  (void)
+char *parser6_get_text  (void)
 {
-        return yytext;
+        return parser6_text;
 }
 
 /* %if-reentrant */
@@ -5048,36 +4905,36 @@ char *yyget_text  (void)
  * @param _line_number line number
  * 
  */
-void yyset_lineno (int  _line_number )
+void parser6_set_lineno (int  _line_number )
 {
     
-    yylineno = _line_number;
+    parser6_lineno = _line_number;
 }
 
 /** Set the input stream. This does not discard the current
  * input buffer.
  * @param _in_str A readable stream.
  * 
- * @see yy_switch_to_buffer
+ * @see parser6__switch_to_buffer
  */
-void yyset_in (FILE *  _in_str )
+void parser6_set_in (FILE *  _in_str )
 {
-        yyin = _in_str ;
+        parser6_in = _in_str ;
 }
 
-void yyset_out (FILE *  _out_str )
+void parser6_set_out (FILE *  _out_str )
 {
-        yyout = _out_str ;
+        parser6_out = _out_str ;
 }
 
-int yyget_debug  (void)
+int parser6_get_debug  (void)
 {
-        return yy_flex_debug;
+        return parser6__flex_debug;
 }
 
-void yyset_debug (int  _bdebug )
+void parser6_set_debug (int  _bdebug )
 {
-        yy_flex_debug = _bdebug ;
+        parser6__flex_debug = _bdebug ;
 }
 
 /* %endif */
@@ -5091,7 +4948,7 @@ void yyset_debug (int  _bdebug )
 static int yy_init_globals (void)
 {
         /* Initialization is the same as for the non-reentrant scanner.
-     * This function is called from yylex_destroy(), so don't allocate here.
+     * This function is called from parser6_lex_destroy(), so don't allocate here.
      */
 
     (yy_buffer_stack) = NULL;
@@ -5103,38 +4960,38 @@ static int yy_init_globals (void)
 
 /* Defined in main.c */
 #ifdef YY_STDINIT
-    yyin = stdin;
-    yyout = stdout;
+    parser6_in = stdin;
+    parser6_out = stdout;
 #else
-    yyin = NULL;
-    yyout = NULL;
+    parser6_in = NULL;
+    parser6_out = NULL;
 #endif
 
     /* For future reference: Set errno on error, since we are called by
-     * yylex_init()
+     * parser6_lex_init()
      */
     return 0;
 }
 /* %endif */
 
 /* %if-c-only SNIP! this currently causes conflicts with the c++ scanner */
-/* yylex_destroy is for both reentrant and non-reentrant scanners. */
-int yylex_destroy  (void)
+/* parser6_lex_destroy is for both reentrant and non-reentrant scanners. */
+int parser6_lex_destroy  (void)
 {
     
     /* Pop the buffer stack, destroying each element. */
        while(YY_CURRENT_BUFFER){
-               yy_delete_buffer( YY_CURRENT_BUFFER  );
+               parser6__delete_buffer(YY_CURRENT_BUFFER  );
                YY_CURRENT_BUFFER_LVALUE = NULL;
-               yypop_buffer_state();
+               parser6_pop_buffer_state();
        }
 
        /* Destroy the stack itself. */
-       yyfree((yy_buffer_stack) );
+       parser6_free((yy_buffer_stack) );
        (yy_buffer_stack) = NULL;
 
     /* Reset the globals. This is important in a non-reentrant scanner so the next time
-     * yylex() is called, initialization will occur. */
+     * parser6_lex() is called, initialization will occur. */
     yy_init_globals( );
 
 /* %if-reentrant */
@@ -5148,7 +5005,7 @@ int yylex_destroy  (void)
  */
 
 #ifndef yytext_ptr
-static void yy_flex_strncpy (char* s1, const char * s2, int n )
+static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
 {
                
        int i;
@@ -5158,7 +5015,7 @@ static void yy_flex_strncpy (char* s1, const char * s2, int n )
 #endif
 
 #ifdef YY_NEED_STRLEN
-static int yy_flex_strlen (const char * s )
+static int yy_flex_strlen (yyconst char * s )
 {
        int n;
        for ( n = 0; s[n]; ++n )
@@ -5168,12 +5025,12 @@ static int yy_flex_strlen (const char * s )
 }
 #endif
 
-void *yyalloc (yy_size_t  size )
+void *parser6_alloc (yy_size_t  size )
 {
                        return malloc(size);
 }
 
-void *yyrealloc  (void * ptr, yy_size_t  size )
+void *parser6_realloc  (void * ptr, yy_size_t  size )
 {
                
        /* The cast to (char *) in the following accommodates both
@@ -5186,9 +5043,9 @@ void *yyrealloc  (void * ptr, yy_size_t  size )
        return realloc(ptr, size);
 }
 
-void yyfree (void * ptr )
+void parser6_free (void * ptr )
 {
-                       free( (char *) ptr );   /* see yyrealloc() for (char *) cast */
+                       free( (char *) ptr );   /* see parser6_realloc() for (char *) cast */
 }
 
 /* %if-tables-serialization definitions */
@@ -5198,7 +5055,8 @@ void yyfree (void * ptr )
 
 /* %ok-for-header */
 
-#line 1662 "dhcp6_lexer.ll"
+#line 1701 "dhcp6_lexer.ll"
+
 
 
 using namespace isc::dhcp;
@@ -5212,7 +5070,7 @@ Parser6Context::scanStringBegin(const std::string& str, ParserType parser_type)
     file_ = "<string>";
     sfile_ = 0;
     loc_.initialize(&file_);
-    yy_flex_debug = trace_scanning_;
+    parser6__flex_debug = trace_scanning_;
     YY_BUFFER_STATE buffer;
     buffer = parser6__scan_bytes(str.c_str(), str.size());
     if (!buffer) {
@@ -5232,7 +5090,7 @@ Parser6Context::scanFileBegin(FILE * f,
     file_ = filename;
     sfile_ = f;
     loc_.initialize(&file_);
-    yy_flex_debug = trace_scanning_;
+    parser6__flex_debug = trace_scanning_;
     YY_BUFFER_STATE buffer;
 
     /* See dhcp6_lexer.cc header for available definitions */
index 8bc17134147eda5d27765483be54f9335d471a99..2ed4810cded3b9ead496508994b777ee316de1a5 100644 (file)
@@ -253,29 +253,29 @@ namespace isc { namespace dhcp {
   {
       switch (that.type_get ())
     {
-      case 173: // value
-      case 177: // map_value
-      case 221: // db_type
-      case 297: // hr_mode
-      case 431: // duid_type
-      case 464: // ncr_protocol_value
-      case 472: // replace_client_name_value
+      case 177: // value
+      case 181: // map_value
+      case 225: // db_type
+      case 305: // hr_mode
+      case 439: // duid_type
+      case 472: // ncr_protocol_value
+      case 480: // replace_client_name_value
         value.move< ElementPtr > (that.value);
         break;
 
-      case 156: // "boolean"
+      case 160: // "boolean"
         value.move< bool > (that.value);
         break;
 
-      case 155: // "floating point"
+      case 159: // "floating point"
         value.move< double > (that.value);
         break;
 
-      case 154: // "integer"
+      case 158: // "integer"
         value.move< int64_t > (that.value);
         break;
 
-      case 153: // "constant string"
+      case 157: // "constant string"
         value.move< std::string > (that.value);
         break;
 
@@ -294,29 +294,29 @@ namespace isc { namespace dhcp {
     state = that.state;
       switch (that.type_get ())
     {
-      case 173: // value
-      case 177: // map_value
-      case 221: // db_type
-      case 297: // hr_mode
-      case 431: // duid_type
-      case 464: // ncr_protocol_value
-      case 472: // replace_client_name_value
+      case 177: // value
+      case 181: // map_value
+      case 225: // db_type
+      case 305: // hr_mode
+      case 439: // duid_type
+      case 472: // ncr_protocol_value
+      case 480: // replace_client_name_value
         value.copy< ElementPtr > (that.value);
         break;
 
-      case 156: // "boolean"
+      case 160: // "boolean"
         value.copy< bool > (that.value);
         break;
 
-      case 155: // "floating point"
+      case 159: // "floating point"
         value.copy< double > (that.value);
         break;
 
-      case 154: // "integer"
+      case 158: // "integer"
         value.copy< int64_t > (that.value);
         break;
 
-      case 153: // "constant string"
+      case 157: // "constant string"
         value.copy< std::string > (that.value);
         break;
 
@@ -356,79 +356,79 @@ namespace isc { namespace dhcp {
         << yysym.location << ": ";
     switch (yytype)
     {
-            case 153: // "constant string"
+            case 157: // "constant string"
 
-#line 229 "dhcp6_parser.yy" // lalr1.cc:636
+#line 233 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< std::string > (); }
 #line 364 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 154: // "integer"
+      case 158: // "integer"
 
-#line 229 "dhcp6_parser.yy" // lalr1.cc:636
+#line 233 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< int64_t > (); }
 #line 371 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 155: // "floating point"
+      case 159: // "floating point"
 
-#line 229 "dhcp6_parser.yy" // lalr1.cc:636
+#line 233 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< double > (); }
 #line 378 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 156: // "boolean"
+      case 160: // "boolean"
 
-#line 229 "dhcp6_parser.yy" // lalr1.cc:636
+#line 233 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< bool > (); }
 #line 385 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 173: // value
+      case 177: // value
 
-#line 229 "dhcp6_parser.yy" // lalr1.cc:636
+#line 233 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 392 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 177: // map_value
+      case 181: // map_value
 
-#line 229 "dhcp6_parser.yy" // lalr1.cc:636
+#line 233 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 399 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 221: // db_type
+      case 225: // db_type
 
-#line 229 "dhcp6_parser.yy" // lalr1.cc:636
+#line 233 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 406 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 297: // hr_mode
+      case 305: // hr_mode
 
-#line 229 "dhcp6_parser.yy" // lalr1.cc:636
+#line 233 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 413 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 431: // duid_type
+      case 439: // duid_type
 
-#line 229 "dhcp6_parser.yy" // lalr1.cc:636
+#line 233 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 420 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 464: // ncr_protocol_value
+      case 472: // ncr_protocol_value
 
-#line 229 "dhcp6_parser.yy" // lalr1.cc:636
+#line 233 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 427 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 472: // replace_client_name_value
+      case 480: // replace_client_name_value
 
-#line 229 "dhcp6_parser.yy" // lalr1.cc:636
+#line 233 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 434 "dhcp6_parser.cc" // lalr1.cc:636
         break;
@@ -630,29 +630,29 @@ namespace isc { namespace dhcp {
          when using variants.  */
         switch (yyr1_[yyn])
     {
-      case 173: // value
-      case 177: // map_value
-      case 221: // db_type
-      case 297: // hr_mode
-      case 431: // duid_type
-      case 464: // ncr_protocol_value
-      case 472: // replace_client_name_value
+      case 177: // value
+      case 181: // map_value
+      case 225: // db_type
+      case 305: // hr_mode
+      case 439: // duid_type
+      case 472: // ncr_protocol_value
+      case 480: // replace_client_name_value
         yylhs.value.build< ElementPtr > ();
         break;
 
-      case 156: // "boolean"
+      case 160: // "boolean"
         yylhs.value.build< bool > ();
         break;
 
-      case 155: // "floating point"
+      case 159: // "floating point"
         yylhs.value.build< double > ();
         break;
 
-      case 154: // "integer"
+      case 158: // "integer"
         yylhs.value.build< int64_t > ();
         break;
 
-      case 153: // "constant string"
+      case 157: // "constant string"
         yylhs.value.build< std::string > ();
         break;
 
@@ -674,133 +674,133 @@ namespace isc { namespace dhcp {
           switch (yyn)
             {
   case 2:
-#line 238 "dhcp6_parser.yy" // lalr1.cc:859
+#line 242 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.NO_KEYWORD; }
 #line 680 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 4:
-#line 239 "dhcp6_parser.yy" // lalr1.cc:859
+#line 243 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.CONFIG; }
 #line 686 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 6:
-#line 240 "dhcp6_parser.yy" // lalr1.cc:859
+#line 244 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.DHCP6; }
 #line 692 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 8:
-#line 241 "dhcp6_parser.yy" // lalr1.cc:859
+#line 245 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.INTERFACES_CONFIG; }
 #line 698 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 10:
-#line 242 "dhcp6_parser.yy" // lalr1.cc:859
+#line 246 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.SUBNET6; }
 #line 704 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 12:
-#line 243 "dhcp6_parser.yy" // lalr1.cc:859
+#line 247 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.POOLS; }
 #line 710 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 14:
-#line 244 "dhcp6_parser.yy" // lalr1.cc:859
+#line 248 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.PD_POOLS; }
 #line 716 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 16:
-#line 245 "dhcp6_parser.yy" // lalr1.cc:859
+#line 249 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.RESERVATIONS; }
 #line 722 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 18:
-#line 246 "dhcp6_parser.yy" // lalr1.cc:859
+#line 250 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.DHCP6; }
 #line 728 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 20:
-#line 247 "dhcp6_parser.yy" // lalr1.cc:859
+#line 251 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.OPTION_DEF; }
 #line 734 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 22:
-#line 248 "dhcp6_parser.yy" // lalr1.cc:859
+#line 252 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.OPTION_DATA; }
 #line 740 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 24:
-#line 249 "dhcp6_parser.yy" // lalr1.cc:859
+#line 253 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.HOOKS_LIBRARIES; }
 #line 746 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 26:
-#line 250 "dhcp6_parser.yy" // lalr1.cc:859
+#line 254 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.DHCP_DDNS; }
 #line 752 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 28:
-#line 251 "dhcp6_parser.yy" // lalr1.cc:859
+#line 255 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.LOGGING; }
 #line 758 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 30:
-#line 259 "dhcp6_parser.yy" // lalr1.cc:859
+#line 263 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); }
 #line 764 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 31:
-#line 260 "dhcp6_parser.yy" // lalr1.cc:859
+#line 264 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as< double > (), ctx.loc2pos(yystack_[0].location))); }
 #line 770 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 32:
-#line 261 "dhcp6_parser.yy" // lalr1.cc:859
+#line 265 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); }
 #line 776 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 33:
-#line 262 "dhcp6_parser.yy" // lalr1.cc:859
+#line 266 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); }
 #line 782 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 34:
-#line 263 "dhcp6_parser.yy" // lalr1.cc:859
+#line 267 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
 #line 788 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 35:
-#line 264 "dhcp6_parser.yy" // lalr1.cc:859
+#line 268 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 794 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 36:
-#line 265 "dhcp6_parser.yy" // lalr1.cc:859
+#line 269 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 800 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 37:
-#line 268 "dhcp6_parser.yy" // lalr1.cc:859
+#line 272 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Push back the JSON value on the stack
     ctx.stack_.push_back(yystack_[0].value.as< ElementPtr > ());
@@ -809,7 +809,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 38:
-#line 273 "dhcp6_parser.yy" // lalr1.cc:859
+#line 277 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -820,7 +820,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 39:
-#line 278 "dhcp6_parser.yy" // lalr1.cc:859
+#line 282 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // map parsing completed. If we ever want to do any wrap up
     // (maybe some sanity checking), this would be the best place
@@ -830,13 +830,13 @@ namespace isc { namespace dhcp {
     break;
 
   case 40:
-#line 284 "dhcp6_parser.yy" // lalr1.cc:859
+#line 288 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 836 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 43:
-#line 291 "dhcp6_parser.yy" // lalr1.cc:859
+#line 295 "dhcp6_parser.yy" // lalr1.cc:859
     {
                   // map containing a single entry
                   ctx.stack_.back()->set(yystack_[2].value.as< std::string > (), yystack_[0].value.as< ElementPtr > ());
@@ -845,7 +845,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 44:
-#line 295 "dhcp6_parser.yy" // lalr1.cc:859
+#line 299 "dhcp6_parser.yy" // lalr1.cc:859
     {
                   // map consisting of a shorter map followed by
                   // comma and string:value
@@ -855,7 +855,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 45:
-#line 302 "dhcp6_parser.yy" // lalr1.cc:859
+#line 306 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(l);
@@ -864,7 +864,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 46:
-#line 305 "dhcp6_parser.yy" // lalr1.cc:859
+#line 309 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // list parsing complete. Put any sanity checking here
 }
@@ -872,7 +872,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 49:
-#line 313 "dhcp6_parser.yy" // lalr1.cc:859
+#line 317 "dhcp6_parser.yy" // lalr1.cc:859
     {
                   // List consisting of a single element.
                   ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
@@ -881,7 +881,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 50:
-#line 317 "dhcp6_parser.yy" // lalr1.cc:859
+#line 321 "dhcp6_parser.yy" // lalr1.cc:859
     {
                   // List ending with , and a value.
                   ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
@@ -890,7 +890,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 51:
-#line 324 "dhcp6_parser.yy" // lalr1.cc:859
+#line 328 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // List parsing about to start
 }
@@ -898,7 +898,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 52:
-#line 326 "dhcp6_parser.yy" // lalr1.cc:859
+#line 330 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // list parsing complete. Put any sanity checking here
     //ctx.stack_.pop_back();
@@ -907,7 +907,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 55:
-#line 335 "dhcp6_parser.yy" // lalr1.cc:859
+#line 339 "dhcp6_parser.yy" // lalr1.cc:859
     {
                           ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
                           ctx.stack_.back()->add(s);
@@ -916,7 +916,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 56:
-#line 339 "dhcp6_parser.yy" // lalr1.cc:859
+#line 343 "dhcp6_parser.yy" // lalr1.cc:859
     {
                           ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
                           ctx.stack_.back()->add(s);
@@ -925,7 +925,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 57:
-#line 350 "dhcp6_parser.yy" // lalr1.cc:859
+#line 354 "dhcp6_parser.yy" // lalr1.cc:859
     {
     const std::string& where = ctx.contextName();
     const std::string& keyword = yystack_[1].value.as< std::string > ();
@@ -936,7 +936,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 58:
-#line 360 "dhcp6_parser.yy" // lalr1.cc:859
+#line 364 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -947,7 +947,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 59:
-#line 365 "dhcp6_parser.yy" // lalr1.cc:859
+#line 369 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // map parsing completed. If we ever want to do any wrap up
     // (maybe some sanity checking), this would be the best place
@@ -960,7 +960,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 68:
-#line 388 "dhcp6_parser.yy" // lalr1.cc:859
+#line 392 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -973,7 +973,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 69:
-#line 395 "dhcp6_parser.yy" // lalr1.cc:859
+#line 399 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // No global parameter is required
     ctx.stack_.pop_back();
@@ -983,7 +983,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 70:
-#line 403 "dhcp6_parser.yy" // lalr1.cc:859
+#line 407 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the Dhcp6 map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -993,7 +993,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 71:
-#line 407 "dhcp6_parser.yy" // lalr1.cc:859
+#line 411 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // No global parameter is required
     // parsing completed
@@ -1002,7 +1002,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 99:
-#line 445 "dhcp6_parser.yy" // lalr1.cc:859
+#line 449 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("preferred-lifetime", prf);
@@ -1011,7 +1011,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 100:
-#line 450 "dhcp6_parser.yy" // lalr1.cc:859
+#line 454 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("valid-lifetime", prf);
@@ -1020,7 +1020,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 101:
-#line 455 "dhcp6_parser.yy" // lalr1.cc:859
+#line 459 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("renew-timer", prf);
@@ -1029,7 +1029,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 102:
-#line 460 "dhcp6_parser.yy" // lalr1.cc:859
+#line 464 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("rebind-timer", prf);
@@ -1038,7 +1038,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 103:
-#line 465 "dhcp6_parser.yy" // lalr1.cc:859
+#line 469 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr dpp(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("decline-probation-period", dpp);
@@ -1047,7 +1047,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 104:
-#line 470 "dhcp6_parser.yy" // lalr1.cc:859
+#line 474 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interfaces-config", i);
@@ -1058,7 +1058,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 105:
-#line 475 "dhcp6_parser.yy" // lalr1.cc:859
+#line 479 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // No interfaces config param is required
     ctx.stack_.pop_back();
@@ -1068,7 +1068,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 106:
-#line 481 "dhcp6_parser.yy" // lalr1.cc:859
+#line 485 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the interfaces-config map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1078,7 +1078,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 107:
-#line 485 "dhcp6_parser.yy" // lalr1.cc:859
+#line 489 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // No interfaces config param is required
     // parsing completed
@@ -1087,7 +1087,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 115:
-#line 501 "dhcp6_parser.yy" // lalr1.cc:859
+#line 505 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interfaces", l);
@@ -1098,7 +1098,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 116:
-#line 506 "dhcp6_parser.yy" // lalr1.cc:859
+#line 510 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1107,7 +1107,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 117:
-#line 511 "dhcp6_parser.yy" // lalr1.cc:859
+#line 515 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("re-detect", b);
@@ -1116,7 +1116,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 118:
-#line 517 "dhcp6_parser.yy" // lalr1.cc:859
+#line 521 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("lease-database", i);
@@ -1127,7 +1127,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 119:
-#line 522 "dhcp6_parser.yy" // lalr1.cc:859
+#line 526 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // The type parameter is required
     ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
@@ -1138,7 +1138,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 120:
-#line 529 "dhcp6_parser.yy" // lalr1.cc:859
+#line 533 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hosts-database", i);
@@ -1149,7 +1149,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 121:
-#line 534 "dhcp6_parser.yy" // lalr1.cc:859
+#line 538 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // The type parameter is required
     ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
@@ -1159,16 +1159,16 @@ namespace isc { namespace dhcp {
 #line 1160 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 137:
-#line 560 "dhcp6_parser.yy" // lalr1.cc:859
+  case 141:
+#line 568 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.DATABASE_TYPE);
 }
 #line 1168 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 138:
-#line 562 "dhcp6_parser.yy" // lalr1.cc:859
+  case 142:
+#line 570 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("type", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
@@ -1176,40 +1176,40 @@ namespace isc { namespace dhcp {
 #line 1177 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 139:
-#line 567 "dhcp6_parser.yy" // lalr1.cc:859
+  case 143:
+#line 575 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); }
 #line 1183 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 140:
-#line 568 "dhcp6_parser.yy" // lalr1.cc:859
+  case 144:
+#line 576 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); }
 #line 1189 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 141:
-#line 569 "dhcp6_parser.yy" // lalr1.cc:859
+  case 145:
+#line 577 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); }
 #line 1195 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 142:
-#line 570 "dhcp6_parser.yy" // lalr1.cc:859
+  case 146:
+#line 578 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("cql", ctx.loc2pos(yystack_[0].location))); }
 #line 1201 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 143:
-#line 573 "dhcp6_parser.yy" // lalr1.cc:859
+  case 147:
+#line 581 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1209 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 144:
-#line 575 "dhcp6_parser.yy" // lalr1.cc:859
+  case 148:
+#line 583 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr user(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("user", user);
@@ -1218,16 +1218,16 @@ namespace isc { namespace dhcp {
 #line 1219 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 145:
-#line 581 "dhcp6_parser.yy" // lalr1.cc:859
+  case 149:
+#line 589 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1227 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 146:
-#line 583 "dhcp6_parser.yy" // lalr1.cc:859
+  case 150:
+#line 591 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr pwd(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("password", pwd);
@@ -1236,16 +1236,16 @@ namespace isc { namespace dhcp {
 #line 1237 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 147:
-#line 589 "dhcp6_parser.yy" // lalr1.cc:859
+  case 151:
+#line 597 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1245 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 148:
-#line 591 "dhcp6_parser.yy" // lalr1.cc:859
+  case 152:
+#line 599 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr h(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("host", h);
@@ -1254,8 +1254,8 @@ namespace isc { namespace dhcp {
 #line 1255 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 149:
-#line 597 "dhcp6_parser.yy" // lalr1.cc:859
+  case 153:
+#line 605 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr p(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("port", p);
@@ -1263,16 +1263,16 @@ namespace isc { namespace dhcp {
 #line 1264 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 150:
-#line 602 "dhcp6_parser.yy" // lalr1.cc:859
+  case 154:
+#line 610 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1272 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 151:
-#line 604 "dhcp6_parser.yy" // lalr1.cc:859
+  case 155:
+#line 612 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr name(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("name", name);
@@ -1281,8 +1281,8 @@ namespace isc { namespace dhcp {
 #line 1282 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 152:
-#line 610 "dhcp6_parser.yy" // lalr1.cc:859
+  case 156:
+#line 618 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("persist", n);
@@ -1290,8 +1290,8 @@ namespace isc { namespace dhcp {
 #line 1291 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 153:
-#line 615 "dhcp6_parser.yy" // lalr1.cc:859
+  case 157:
+#line 623 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("lfc-interval", n);
@@ -1299,8 +1299,8 @@ namespace isc { namespace dhcp {
 #line 1300 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 154:
-#line 620 "dhcp6_parser.yy" // lalr1.cc:859
+  case 158:
+#line 628 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("readonly", n);
@@ -1308,8 +1308,8 @@ namespace isc { namespace dhcp {
 #line 1309 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 155:
-#line 625 "dhcp6_parser.yy" // lalr1.cc:859
+  case 159:
+#line 633 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("connect-timeout", n);
@@ -1317,340 +1317,376 @@ namespace isc { namespace dhcp {
 #line 1318 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 156:
-#line 630 "dhcp6_parser.yy" // lalr1.cc:859
+  case 160:
+#line 638 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("reconnect-wait-time", n);
+}
+#line 1327 "dhcp6_parser.cc" // lalr1.cc:859
+    break;
+
+  case 161:
+#line 643 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("request-timeout", n);
+}
+#line 1336 "dhcp6_parser.cc" // lalr1.cc:859
+    break;
+
+  case 162:
+#line 648 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("tcp-keepalive", n);
+}
+#line 1345 "dhcp6_parser.cc" // lalr1.cc:859
+    break;
+
+  case 163:
+#line 653 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("tcp-nodelay", n);
+}
+#line 1354 "dhcp6_parser.cc" // lalr1.cc:859
+    break;
+
+  case 164:
+#line 658 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1326 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1362 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 157:
-#line 632 "dhcp6_parser.yy" // lalr1.cc:859
+  case 165:
+#line 660 "dhcp6_parser.yy" // lalr1.cc:859
     {
     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 1336 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1372 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 158:
-#line 638 "dhcp6_parser.yy" // lalr1.cc:859
+  case 166:
+#line 666 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1344 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1380 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 159:
-#line 640 "dhcp6_parser.yy" // lalr1.cc:859
+  case 167:
+#line 668 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr ks(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("keyspace", ks);
     ctx.leave();
 }
-#line 1354 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1390 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 160:
-#line 647 "dhcp6_parser.yy" // lalr1.cc:859
+  case 168:
+#line 675 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("mac-sources", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.MAC_SOURCES);
 }
-#line 1365 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1401 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 161:
-#line 652 "dhcp6_parser.yy" // lalr1.cc:859
+  case 169:
+#line 680 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1374 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1410 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 166:
-#line 665 "dhcp6_parser.yy" // lalr1.cc:859
+  case 174:
+#line 693 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(duid);
 }
-#line 1383 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1419 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 167:
-#line 670 "dhcp6_parser.yy" // lalr1.cc:859
+  case 175:
+#line 698 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr duid(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(duid);
 }
-#line 1392 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1428 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 168:
-#line 675 "dhcp6_parser.yy" // lalr1.cc:859
+  case 176:
+#line 703 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("host-reservation-identifiers", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.HOST_RESERVATION_IDENTIFIERS);
 }
-#line 1403 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1439 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 169:
-#line 680 "dhcp6_parser.yy" // lalr1.cc:859
+  case 177:
+#line 708 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1412 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1448 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 175:
-#line 694 "dhcp6_parser.yy" // lalr1.cc:859
+  case 183:
+#line 722 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(hwaddr);
 }
-#line 1421 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1457 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 176:
-#line 699 "dhcp6_parser.yy" // lalr1.cc:859
+  case 184:
+#line 727 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr flex_id(new StringElement("flex-id", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(flex_id);
 }
-#line 1430 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1466 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 177:
-#line 706 "dhcp6_parser.yy" // lalr1.cc:859
+  case 185:
+#line 734 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("relay-supplied-options", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1441 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1477 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 178:
-#line 711 "dhcp6_parser.yy" // lalr1.cc:859
+  case 186:
+#line 739 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1450 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1486 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 179:
-#line 716 "dhcp6_parser.yy" // lalr1.cc:859
+  case 187:
+#line 744 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hooks-libraries", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.HOOKS_LIBRARIES);
 }
-#line 1461 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1497 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 180:
-#line 721 "dhcp6_parser.yy" // lalr1.cc:859
+  case 188:
+#line 749 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1470 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1506 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 185:
-#line 734 "dhcp6_parser.yy" // lalr1.cc:859
+  case 193:
+#line 762 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 1480 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1516 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 186:
-#line 738 "dhcp6_parser.yy" // lalr1.cc:859
+  case 194:
+#line 766 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // The library hooks parameter is required
     ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 1490 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1526 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 187:
-#line 744 "dhcp6_parser.yy" // lalr1.cc:859
+  case 195:
+#line 772 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the hooks-libraries list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 1500 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1536 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 188:
-#line 748 "dhcp6_parser.yy" // lalr1.cc:859
+  case 196:
+#line 776 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // The library hooks parameter is required
     ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 1510 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1546 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 194:
-#line 763 "dhcp6_parser.yy" // lalr1.cc:859
+  case 202:
+#line 791 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1518 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1554 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 195:
-#line 765 "dhcp6_parser.yy" // lalr1.cc:859
+  case 203:
+#line 793 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr lib(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("library", lib);
     ctx.leave();
 }
-#line 1528 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1564 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 196:
-#line 771 "dhcp6_parser.yy" // lalr1.cc:859
+  case 204:
+#line 799 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1536 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1572 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 197:
-#line 773 "dhcp6_parser.yy" // lalr1.cc:859
+  case 205:
+#line 801 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("parameters", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 1545 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1581 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 198:
-#line 779 "dhcp6_parser.yy" // lalr1.cc:859
+  case 206:
+#line 807 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("expired-leases-processing", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.EXPIRED_LEASES_PROCESSING);
 }
-#line 1556 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1592 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 199:
-#line 784 "dhcp6_parser.yy" // lalr1.cc:859
+  case 207:
+#line 812 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // No expired lease parameter is required
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1566 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1602 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 208:
-#line 802 "dhcp6_parser.yy" // lalr1.cc:859
+  case 216:
+#line 830 "dhcp6_parser.yy" // lalr1.cc:859
     {
     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 1575 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1611 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 209:
-#line 807 "dhcp6_parser.yy" // lalr1.cc:859
+  case 217:
+#line 835 "dhcp6_parser.yy" // lalr1.cc:859
     {
     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 1584 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1620 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 210:
-#line 812 "dhcp6_parser.yy" // lalr1.cc:859
+  case 218:
+#line 840 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hold-reclaimed-time", value);
 }
-#line 1593 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1629 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 211:
-#line 817 "dhcp6_parser.yy" // lalr1.cc:859
+  case 219:
+#line 845 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-reclaim-leases", value);
 }
-#line 1602 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1638 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 212:
-#line 822 "dhcp6_parser.yy" // lalr1.cc:859
+  case 220:
+#line 850 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-reclaim-time", value);
 }
-#line 1611 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1647 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 213:
-#line 827 "dhcp6_parser.yy" // lalr1.cc:859
+  case 221:
+#line 855 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("unwarned-reclaim-cycles", value);
 }
-#line 1620 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1656 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 214:
-#line 835 "dhcp6_parser.yy" // lalr1.cc:859
+  case 222:
+#line 863 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("subnet6", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.SUBNET6);
 }
-#line 1631 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1667 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 215:
-#line 840 "dhcp6_parser.yy" // lalr1.cc:859
+  case 223:
+#line 868 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1640 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1676 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 220:
-#line 860 "dhcp6_parser.yy" // lalr1.cc:859
+  case 228:
+#line 888 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 1650 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1686 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 221:
-#line 864 "dhcp6_parser.yy" // lalr1.cc:859
+  case 229:
+#line 892 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Once we reached this place, the subnet parsing is now complete.
     // If we want to, we can implement default values here.
@@ -1672,241 +1708,241 @@ namespace isc { namespace dhcp {
     ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 1676 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1712 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 222:
-#line 886 "dhcp6_parser.yy" // lalr1.cc:859
+  case 230:
+#line 914 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the subnet6 list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 1686 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1722 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 223:
-#line 890 "dhcp6_parser.yy" // lalr1.cc:859
+  case 231:
+#line 918 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // The subnet subnet6 parameter is required
     ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 1696 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1732 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 245:
-#line 923 "dhcp6_parser.yy" // lalr1.cc:859
+  case 253:
+#line 951 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1704 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1740 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 246:
-#line 925 "dhcp6_parser.yy" // lalr1.cc:859
+  case 254:
+#line 953 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr subnet(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("subnet", subnet);
     ctx.leave();
 }
-#line 1714 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1750 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 247:
-#line 931 "dhcp6_parser.yy" // lalr1.cc:859
+  case 255:
+#line 959 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1722 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1758 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 248:
-#line 933 "dhcp6_parser.yy" // lalr1.cc:859
+  case 256:
+#line 961 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interface", iface);
     ctx.leave();
 }
-#line 1732 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1768 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 249:
-#line 939 "dhcp6_parser.yy" // lalr1.cc:859
+  case 257:
+#line 967 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1740 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1776 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 250:
-#line 941 "dhcp6_parser.yy" // lalr1.cc:859
+  case 258:
+#line 969 "dhcp6_parser.yy" // lalr1.cc:859
     {
     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 1750 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1786 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 251:
-#line 947 "dhcp6_parser.yy" // lalr1.cc:859
+  case 259:
+#line 975 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.CLIENT_CLASS);
 }
-#line 1758 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1794 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 252:
-#line 949 "dhcp6_parser.yy" // lalr1.cc:859
+  case 260:
+#line 977 "dhcp6_parser.yy" // lalr1.cc:859
     {
     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 1768 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1804 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 253:
-#line 955 "dhcp6_parser.yy" // lalr1.cc:859
+  case 261:
+#line 983 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.RESERVATION_MODE);
 }
-#line 1776 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1812 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 254:
-#line 957 "dhcp6_parser.yy" // lalr1.cc:859
+  case 262:
+#line 985 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("reservation-mode", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 1785 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1821 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 255:
-#line 962 "dhcp6_parser.yy" // lalr1.cc:859
+  case 263:
+#line 990 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("disabled", ctx.loc2pos(yystack_[0].location))); }
-#line 1791 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1827 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 256:
-#line 963 "dhcp6_parser.yy" // lalr1.cc:859
+  case 264:
+#line 991 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(yystack_[0].location))); }
-#line 1797 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1833 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 257:
-#line 964 "dhcp6_parser.yy" // lalr1.cc:859
+  case 265:
+#line 992 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); }
-#line 1803 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1839 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 258:
-#line 967 "dhcp6_parser.yy" // lalr1.cc:859
+  case 266:
+#line 995 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr id(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("id", id);
 }
-#line 1812 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1848 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 259:
-#line 972 "dhcp6_parser.yy" // lalr1.cc:859
+  case 267:
+#line 1000 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr rc(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("rapid-commit", rc);
 }
-#line 1821 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1857 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 260:
-#line 980 "dhcp6_parser.yy" // lalr1.cc:859
+  case 268:
+#line 1008 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("shared-networks", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.SHARED_NETWORK);
 }
-#line 1832 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1868 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 261:
-#line 985 "dhcp6_parser.yy" // lalr1.cc:859
+  case 269:
+#line 1013 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1841 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1877 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 266:
-#line 1000 "dhcp6_parser.yy" // lalr1.cc:859
+  case 274:
+#line 1028 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 1851 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1887 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 267:
-#line 1004 "dhcp6_parser.yy" // lalr1.cc:859
+  case 275:
+#line 1032 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 1859 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1895 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 286:
-#line 1034 "dhcp6_parser.yy" // lalr1.cc:859
+  case 294:
+#line 1062 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("option-def", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.OPTION_DEF);
 }
-#line 1870 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1906 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 287:
-#line 1039 "dhcp6_parser.yy" // lalr1.cc:859
+  case 295:
+#line 1067 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1879 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1915 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 288:
-#line 1047 "dhcp6_parser.yy" // lalr1.cc:859
+  case 296:
+#line 1075 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 1888 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1924 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 289:
-#line 1050 "dhcp6_parser.yy" // lalr1.cc:859
+  case 297:
+#line 1078 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 1896 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1932 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 294:
-#line 1066 "dhcp6_parser.yy" // lalr1.cc:859
+  case 302:
+#line 1094 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 1906 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1942 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 295:
-#line 1070 "dhcp6_parser.yy" // lalr1.cc:859
+  case 303:
+#line 1098 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // The name, code and type option def parameters are required.
     ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -1914,21 +1950,21 @@ namespace isc { namespace dhcp {
     ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 1918 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1954 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 296:
-#line 1081 "dhcp6_parser.yy" // lalr1.cc:859
+  case 304:
+#line 1109 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the option-def list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 1928 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1964 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 297:
-#line 1085 "dhcp6_parser.yy" // lalr1.cc:859
+  case 305:
+#line 1113 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // The name, code and type option def parameters are required.
     ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -1936,280 +1972,280 @@ namespace isc { namespace dhcp {
     ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 1940 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1976 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 313:
-#line 1117 "dhcp6_parser.yy" // lalr1.cc:859
+  case 321:
+#line 1145 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr code(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("code", code);
 }
-#line 1949 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1985 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 315:
-#line 1124 "dhcp6_parser.yy" // lalr1.cc:859
+  case 323:
+#line 1152 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1957 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1993 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 316:
-#line 1126 "dhcp6_parser.yy" // lalr1.cc:859
+  case 324:
+#line 1154 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr prf(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("type", prf);
     ctx.leave();
 }
-#line 1967 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2003 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 317:
-#line 1132 "dhcp6_parser.yy" // lalr1.cc:859
+  case 325:
+#line 1160 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1975 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2011 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 318:
-#line 1134 "dhcp6_parser.yy" // lalr1.cc:859
+  case 326:
+#line 1162 "dhcp6_parser.yy" // lalr1.cc:859
     {
     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 1985 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2021 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 319:
-#line 1140 "dhcp6_parser.yy" // lalr1.cc:859
+  case 327:
+#line 1168 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1993 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2029 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 320:
-#line 1142 "dhcp6_parser.yy" // lalr1.cc:859
+  case 328:
+#line 1170 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr space(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("space", space);
     ctx.leave();
 }
-#line 2003 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2039 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 322:
-#line 1150 "dhcp6_parser.yy" // lalr1.cc:859
+  case 330:
+#line 1178 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2011 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2047 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 323:
-#line 1152 "dhcp6_parser.yy" // lalr1.cc:859
+  case 331:
+#line 1180 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr encap(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("encapsulate", encap);
     ctx.leave();
 }
-#line 2021 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2057 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 324:
-#line 1158 "dhcp6_parser.yy" // lalr1.cc:859
+  case 332:
+#line 1186 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr array(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("array", array);
 }
-#line 2030 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2066 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 325:
-#line 1167 "dhcp6_parser.yy" // lalr1.cc:859
+  case 333:
+#line 1195 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("option-data", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.OPTION_DATA);
 }
-#line 2041 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2077 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 326:
-#line 1172 "dhcp6_parser.yy" // lalr1.cc:859
+  case 334:
+#line 1200 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2050 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2086 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 331:
-#line 1191 "dhcp6_parser.yy" // lalr1.cc:859
+  case 339:
+#line 1219 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2060 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2096 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 332:
-#line 1195 "dhcp6_parser.yy" // lalr1.cc:859
+  case 340:
+#line 1223 "dhcp6_parser.yy" // lalr1.cc:859
     {
     /// @todo: the code or name parameters are required.
     ctx.stack_.pop_back();
 }
-#line 2069 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2105 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 333:
-#line 1203 "dhcp6_parser.yy" // lalr1.cc:859
+  case 341:
+#line 1231 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the option-data list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2079 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2115 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 334:
-#line 1207 "dhcp6_parser.yy" // lalr1.cc:859
+  case 342:
+#line 1235 "dhcp6_parser.yy" // lalr1.cc:859
     {
     /// @todo: the code or name parameters are required.
     // parsing completed
 }
-#line 2088 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2124 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 349:
-#line 1240 "dhcp6_parser.yy" // lalr1.cc:859
+  case 357:
+#line 1268 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2096 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2132 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 350:
-#line 1242 "dhcp6_parser.yy" // lalr1.cc:859
+  case 358:
+#line 1270 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr data(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("data", data);
     ctx.leave();
 }
-#line 2106 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2142 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 353:
-#line 1252 "dhcp6_parser.yy" // lalr1.cc:859
+  case 361:
+#line 1280 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr space(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("csv-format", space);
 }
-#line 2115 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2151 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 354:
-#line 1257 "dhcp6_parser.yy" // lalr1.cc:859
+  case 362:
+#line 1285 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr persist(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("always-send", persist);
 }
-#line 2124 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2160 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 355:
-#line 1265 "dhcp6_parser.yy" // lalr1.cc:859
+  case 363:
+#line 1293 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("pools", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.POOLS);
 }
-#line 2135 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2171 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 356:
-#line 1270 "dhcp6_parser.yy" // lalr1.cc:859
+  case 364:
+#line 1298 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2144 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2180 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 361:
-#line 1285 "dhcp6_parser.yy" // lalr1.cc:859
+  case 369:
+#line 1313 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2154 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2190 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 362:
-#line 1289 "dhcp6_parser.yy" // lalr1.cc:859
+  case 370:
+#line 1317 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // The pool parameter is required.
     ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 2164 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2200 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 363:
-#line 1295 "dhcp6_parser.yy" // lalr1.cc:859
+  case 371:
+#line 1323 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the pool list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2174 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2210 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 364:
-#line 1299 "dhcp6_parser.yy" // lalr1.cc:859
+  case 372:
+#line 1327 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // The pool parameter is required.
     ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
 }
-#line 2183 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2219 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 373:
-#line 1316 "dhcp6_parser.yy" // lalr1.cc:859
+  case 381:
+#line 1344 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2191 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2227 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 374:
-#line 1318 "dhcp6_parser.yy" // lalr1.cc:859
+  case 382:
+#line 1346 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr pool(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("pool", pool);
     ctx.leave();
 }
-#line 2201 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2237 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 375:
-#line 1324 "dhcp6_parser.yy" // lalr1.cc:859
+  case 383:
+#line 1352 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2209 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2245 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 376:
-#line 1326 "dhcp6_parser.yy" // lalr1.cc:859
+  case 384:
+#line 1354 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr parent = ctx.stack_.back();
     ElementPtr user_context = yystack_[0].value.as< ElementPtr > ();
@@ -2232,19 +2268,19 @@ namespace isc { namespace dhcp {
     parent->set("user-context", user_context);
     ctx.leave();
 }
-#line 2236 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2272 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 377:
-#line 1349 "dhcp6_parser.yy" // lalr1.cc:859
+  case 385:
+#line 1377 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2244 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2280 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 378:
-#line 1351 "dhcp6_parser.yy" // lalr1.cc:859
+  case 386:
+#line 1379 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr parent = ctx.stack_.back();
     ElementPtr user_context(new MapElement(ctx.loc2pos(yystack_[3].location)));
@@ -2269,41 +2305,41 @@ namespace isc { namespace dhcp {
     parent->set("user-context", user_context);
     ctx.leave();
 }
-#line 2273 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2309 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 379:
-#line 1379 "dhcp6_parser.yy" // lalr1.cc:859
+  case 387:
+#line 1407 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("pd-pools", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.PD_POOLS);
 }
-#line 2284 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2320 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 380:
-#line 1384 "dhcp6_parser.yy" // lalr1.cc:859
+  case 388:
+#line 1412 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2293 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2329 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 385:
-#line 1399 "dhcp6_parser.yy" // lalr1.cc:859
+  case 393:
+#line 1427 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2303 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2339 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 386:
-#line 1403 "dhcp6_parser.yy" // lalr1.cc:859
+  case 394:
+#line 1431 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // The prefix, prefix len and delegated len parameters are required.
     ctx.require("prefix", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -2311,21 +2347,21 @@ namespace isc { namespace dhcp {
     ctx.require("delegated-len", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 2315 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2351 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 387:
-#line 1411 "dhcp6_parser.yy" // lalr1.cc:859
+  case 395:
+#line 1439 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the pd-pool list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2325 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2361 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 388:
-#line 1415 "dhcp6_parser.yy" // lalr1.cc:859
+  case 396:
+#line 1443 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // The prefix, prefix len and delegated len parameters are required.
     ctx.require("prefix", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -2333,1046 +2369,1046 @@ namespace isc { namespace dhcp {
     ctx.require("delegated-len", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 2337 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2373 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 401:
-#line 1439 "dhcp6_parser.yy" // lalr1.cc:859
+  case 409:
+#line 1467 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2345 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2381 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 402:
-#line 1441 "dhcp6_parser.yy" // lalr1.cc:859
+  case 410:
+#line 1469 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr prf(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("prefix", prf);
     ctx.leave();
 }
-#line 2355 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2391 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 403:
-#line 1447 "dhcp6_parser.yy" // lalr1.cc:859
+  case 411:
+#line 1475 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("prefix-len", prf);
 }
-#line 2364 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2400 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 404:
-#line 1452 "dhcp6_parser.yy" // lalr1.cc:859
+  case 412:
+#line 1480 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2372 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2408 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 405:
-#line 1454 "dhcp6_parser.yy" // lalr1.cc:859
+  case 413:
+#line 1482 "dhcp6_parser.yy" // lalr1.cc:859
     {
     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 2382 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2418 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 406:
-#line 1460 "dhcp6_parser.yy" // lalr1.cc:859
+  case 414:
+#line 1488 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("excluded-prefix-len", prf);
 }
-#line 2391 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2427 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 407:
-#line 1465 "dhcp6_parser.yy" // lalr1.cc:859
+  case 415:
+#line 1493 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr deleg(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("delegated-len", deleg);
 }
-#line 2400 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2436 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 408:
-#line 1473 "dhcp6_parser.yy" // lalr1.cc:859
+  case 416:
+#line 1501 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("reservations", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.RESERVATIONS);
 }
-#line 2411 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2447 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 409:
-#line 1478 "dhcp6_parser.yy" // lalr1.cc:859
+  case 417:
+#line 1506 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2420 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2456 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 414:
-#line 1491 "dhcp6_parser.yy" // lalr1.cc:859
+  case 422:
+#line 1519 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2430 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2466 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 415:
-#line 1495 "dhcp6_parser.yy" // lalr1.cc:859
+  case 423:
+#line 1523 "dhcp6_parser.yy" // lalr1.cc:859
     {
     /// @todo: an identifier parameter is required.
     ctx.stack_.pop_back();
 }
-#line 2439 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2475 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 416:
-#line 1500 "dhcp6_parser.yy" // lalr1.cc:859
+  case 424:
+#line 1528 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the reservations list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2449 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2485 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 417:
-#line 1504 "dhcp6_parser.yy" // lalr1.cc:859
+  case 425:
+#line 1532 "dhcp6_parser.yy" // lalr1.cc:859
     {
     /// @todo: an identifier parameter is required.
     // parsing completed
 }
-#line 2458 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2494 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 433:
-#line 1531 "dhcp6_parser.yy" // lalr1.cc:859
+  case 441:
+#line 1559 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ip-addresses", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2469 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2505 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 434:
-#line 1536 "dhcp6_parser.yy" // lalr1.cc:859
+  case 442:
+#line 1564 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2478 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2514 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 435:
-#line 1541 "dhcp6_parser.yy" // lalr1.cc:859
+  case 443:
+#line 1569 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("prefixes", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2489 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2525 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 436:
-#line 1546 "dhcp6_parser.yy" // lalr1.cc:859
+  case 444:
+#line 1574 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2498 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2534 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 437:
-#line 1551 "dhcp6_parser.yy" // lalr1.cc:859
+  case 445:
+#line 1579 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2506 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2542 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 438:
-#line 1553 "dhcp6_parser.yy" // lalr1.cc:859
+  case 446:
+#line 1581 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr d(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("duid", d);
     ctx.leave();
 }
-#line 2516 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2552 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 439:
-#line 1559 "dhcp6_parser.yy" // lalr1.cc:859
+  case 447:
+#line 1587 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2524 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2560 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 440:
-#line 1561 "dhcp6_parser.yy" // lalr1.cc:859
+  case 448:
+#line 1589 "dhcp6_parser.yy" // lalr1.cc:859
     {
     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 2534 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2570 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 441:
-#line 1567 "dhcp6_parser.yy" // lalr1.cc:859
+  case 449:
+#line 1595 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2542 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2578 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 442:
-#line 1569 "dhcp6_parser.yy" // lalr1.cc:859
+  case 450:
+#line 1597 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr host(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hostname", host);
     ctx.leave();
 }
-#line 2552 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2588 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 443:
-#line 1575 "dhcp6_parser.yy" // lalr1.cc:859
+  case 451:
+#line 1603 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2560 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2596 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 444:
-#line 1577 "dhcp6_parser.yy" // lalr1.cc:859
+  case 452:
+#line 1605 "dhcp6_parser.yy" // lalr1.cc:859
     {
     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 2570 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2606 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 445:
-#line 1583 "dhcp6_parser.yy" // lalr1.cc:859
+  case 453:
+#line 1611 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("client-classes", c);
     ctx.stack_.push_back(c);
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2581 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2617 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 446:
-#line 1588 "dhcp6_parser.yy" // lalr1.cc:859
+  case 454:
+#line 1616 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2590 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2626 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 447:
-#line 1596 "dhcp6_parser.yy" // lalr1.cc:859
+  case 455:
+#line 1624 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("relay", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.RELAY);
 }
-#line 2601 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2637 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 448:
-#line 1601 "dhcp6_parser.yy" // lalr1.cc:859
+  case 456:
+#line 1629 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2610 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2646 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 449:
-#line 1606 "dhcp6_parser.yy" // lalr1.cc:859
+  case 457:
+#line 1634 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2618 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2654 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 450:
-#line 1608 "dhcp6_parser.yy" // lalr1.cc:859
+  case 458:
+#line 1636 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr ip(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ip-address", ip);
     ctx.leave();
 }
-#line 2628 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2664 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 451:
-#line 1617 "dhcp6_parser.yy" // lalr1.cc:859
+  case 459:
+#line 1645 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("client-classes", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.CLIENT_CLASSES);
 }
-#line 2639 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2675 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 452:
-#line 1622 "dhcp6_parser.yy" // lalr1.cc:859
+  case 460:
+#line 1650 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2648 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2684 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 455:
-#line 1631 "dhcp6_parser.yy" // lalr1.cc:859
+  case 463:
+#line 1659 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2658 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2694 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 456:
-#line 1635 "dhcp6_parser.yy" // lalr1.cc:859
+  case 464:
+#line 1663 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // 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 2668 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2704 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 468:
-#line 1659 "dhcp6_parser.yy" // lalr1.cc:859
+  case 476:
+#line 1687 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2676 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2712 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 469:
-#line 1661 "dhcp6_parser.yy" // lalr1.cc:859
+  case 477:
+#line 1689 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr test(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("test", test);
     ctx.leave();
 }
-#line 2686 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2722 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 470:
-#line 1670 "dhcp6_parser.yy" // lalr1.cc:859
+  case 478:
+#line 1698 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("server-id", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.SERVER_ID);
 }
-#line 2697 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2733 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 471:
-#line 1675 "dhcp6_parser.yy" // lalr1.cc:859
+  case 479:
+#line 1703 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // 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 2708 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2744 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 483:
-#line 1697 "dhcp6_parser.yy" // lalr1.cc:859
+  case 491:
+#line 1725 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.DUID_TYPE);
 }
-#line 2716 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2752 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 484:
-#line 1699 "dhcp6_parser.yy" // lalr1.cc:859
+  case 492:
+#line 1727 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("type", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 2725 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2761 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 485:
-#line 1704 "dhcp6_parser.yy" // lalr1.cc:859
+  case 493:
+#line 1732 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("LLT", ctx.loc2pos(yystack_[0].location))); }
-#line 2731 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2767 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 486:
-#line 1705 "dhcp6_parser.yy" // lalr1.cc:859
+  case 494:
+#line 1733 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("EN", ctx.loc2pos(yystack_[0].location))); }
-#line 2737 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2773 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 487:
-#line 1706 "dhcp6_parser.yy" // lalr1.cc:859
+  case 495:
+#line 1734 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("LL", ctx.loc2pos(yystack_[0].location))); }
-#line 2743 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2779 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 488:
-#line 1709 "dhcp6_parser.yy" // lalr1.cc:859
+  case 496:
+#line 1737 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr htype(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("htype", htype);
 }
-#line 2752 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2788 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 489:
-#line 1714 "dhcp6_parser.yy" // lalr1.cc:859
+  case 497:
+#line 1742 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2760 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2796 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 490:
-#line 1716 "dhcp6_parser.yy" // lalr1.cc:859
+  case 498:
+#line 1744 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr id(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("identifier", id);
     ctx.leave();
 }
-#line 2770 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2806 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 491:
-#line 1722 "dhcp6_parser.yy" // lalr1.cc:859
+  case 499:
+#line 1750 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr time(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("time", time);
 }
-#line 2779 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2815 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 492:
-#line 1727 "dhcp6_parser.yy" // lalr1.cc:859
+  case 500:
+#line 1755 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr time(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("enterprise-id", time);
 }
-#line 2788 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2824 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 493:
-#line 1734 "dhcp6_parser.yy" // lalr1.cc:859
+  case 501:
+#line 1762 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr time(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("dhcp4o6-port", time);
 }
-#line 2797 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2833 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 494:
-#line 1741 "dhcp6_parser.yy" // lalr1.cc:859
+  case 502:
+#line 1769 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("control-socket", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.CONTROL_SOCKET);
 }
-#line 2808 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2844 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 495:
-#line 1746 "dhcp6_parser.yy" // lalr1.cc:859
+  case 503:
+#line 1774 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2817 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2853 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 503:
-#line 1762 "dhcp6_parser.yy" // lalr1.cc:859
+  case 511:
+#line 1790 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2825 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2861 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 504:
-#line 1764 "dhcp6_parser.yy" // lalr1.cc:859
+  case 512:
+#line 1792 "dhcp6_parser.yy" // lalr1.cc:859
     {
     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 2835 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2871 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 505:
-#line 1770 "dhcp6_parser.yy" // lalr1.cc:859
+  case 513:
+#line 1798 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2843 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2879 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 506:
-#line 1772 "dhcp6_parser.yy" // lalr1.cc:859
+  case 514:
+#line 1800 "dhcp6_parser.yy" // lalr1.cc:859
     {
     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 2853 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2889 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 507:
-#line 1780 "dhcp6_parser.yy" // lalr1.cc:859
+  case 515:
+#line 1808 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("dhcp-ddns", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.DHCP_DDNS);
 }
-#line 2864 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2900 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 508:
-#line 1785 "dhcp6_parser.yy" // lalr1.cc:859
+  case 516:
+#line 1813 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // 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 2875 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2911 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 509:
-#line 1792 "dhcp6_parser.yy" // lalr1.cc:859
+  case 517:
+#line 1820 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the dhcp-ddns map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2885 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2921 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 510:
-#line 1796 "dhcp6_parser.yy" // lalr1.cc:859
+  case 518:
+#line 1824 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // 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 2895 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2931 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 530:
-#line 1825 "dhcp6_parser.yy" // lalr1.cc:859
+  case 538:
+#line 1853 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("enable-updates", b);
 }
-#line 2904 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2940 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 531:
-#line 1830 "dhcp6_parser.yy" // lalr1.cc:859
+  case 539:
+#line 1858 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2912 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2948 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 532:
-#line 1832 "dhcp6_parser.yy" // lalr1.cc:859
+  case 540:
+#line 1860 "dhcp6_parser.yy" // lalr1.cc:859
     {
     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 2922 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2958 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 533:
-#line 1838 "dhcp6_parser.yy" // lalr1.cc:859
+  case 541:
+#line 1866 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2930 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2966 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 534:
-#line 1840 "dhcp6_parser.yy" // lalr1.cc:859
+  case 542:
+#line 1868 "dhcp6_parser.yy" // lalr1.cc:859
     {
     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 2940 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2976 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 535:
-#line 1846 "dhcp6_parser.yy" // lalr1.cc:859
+  case 543:
+#line 1874 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("server-port", i);
 }
-#line 2949 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2985 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 536:
-#line 1851 "dhcp6_parser.yy" // lalr1.cc:859
+  case 544:
+#line 1879 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2957 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2993 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 537:
-#line 1853 "dhcp6_parser.yy" // lalr1.cc:859
+  case 545:
+#line 1881 "dhcp6_parser.yy" // lalr1.cc:859
     {
     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 2967 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3003 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 538:
-#line 1859 "dhcp6_parser.yy" // lalr1.cc:859
+  case 546:
+#line 1887 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("sender-port", i);
 }
-#line 2976 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3012 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 539:
-#line 1864 "dhcp6_parser.yy" // lalr1.cc:859
+  case 547:
+#line 1892 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-queue-size", i);
 }
-#line 2985 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3021 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 540:
-#line 1869 "dhcp6_parser.yy" // lalr1.cc:859
+  case 548:
+#line 1897 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NCR_PROTOCOL);
 }
-#line 2993 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3029 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 541:
-#line 1871 "dhcp6_parser.yy" // lalr1.cc:859
+  case 549:
+#line 1899 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 3002 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3038 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 542:
-#line 1877 "dhcp6_parser.yy" // lalr1.cc:859
+  case 550:
+#line 1905 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
-#line 3008 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3044 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 543:
-#line 1878 "dhcp6_parser.yy" // lalr1.cc:859
+  case 551:
+#line 1906 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
-#line 3014 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3050 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 544:
-#line 1881 "dhcp6_parser.yy" // lalr1.cc:859
+  case 552:
+#line 1909 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NCR_FORMAT);
 }
-#line 3022 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3058 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 545:
-#line 1883 "dhcp6_parser.yy" // lalr1.cc:859
+  case 553:
+#line 1911 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ncr-format", json);
     ctx.leave();
 }
-#line 3032 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3068 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 546:
-#line 1889 "dhcp6_parser.yy" // lalr1.cc:859
+  case 554:
+#line 1917 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("always-include-fqdn", b);
 }
-#line 3041 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3077 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 547:
-#line 1894 "dhcp6_parser.yy" // lalr1.cc:859
+  case 555:
+#line 1922 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("override-no-update", b);
 }
-#line 3050 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3086 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 548:
-#line 1899 "dhcp6_parser.yy" // lalr1.cc:859
+  case 556:
+#line 1927 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("override-client-update", b);
 }
-#line 3059 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3095 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 549:
-#line 1904 "dhcp6_parser.yy" // lalr1.cc:859
+  case 557:
+#line 1932 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.REPLACE_CLIENT_NAME);
 }
-#line 3067 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3103 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 550:
-#line 1906 "dhcp6_parser.yy" // lalr1.cc:859
+  case 558:
+#line 1934 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 3076 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3112 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 551:
-#line 1912 "dhcp6_parser.yy" // lalr1.cc:859
+  case 559:
+#line 1940 "dhcp6_parser.yy" // lalr1.cc:859
     {
       yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location))); 
       }
-#line 3084 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3120 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 552:
-#line 1915 "dhcp6_parser.yy" // lalr1.cc:859
+  case 560:
+#line 1943 "dhcp6_parser.yy" // lalr1.cc:859
     {
       yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location)));
       }
-#line 3092 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3128 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 553:
-#line 1918 "dhcp6_parser.yy" // lalr1.cc:859
+  case 561:
+#line 1946 "dhcp6_parser.yy" // lalr1.cc:859
     {
       yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location)));
       }
-#line 3100 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3136 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 554:
-#line 1921 "dhcp6_parser.yy" // lalr1.cc:859
+  case 562:
+#line 1949 "dhcp6_parser.yy" // lalr1.cc:859
     {
       yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location)));
       }
-#line 3108 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3144 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 555:
-#line 1924 "dhcp6_parser.yy" // lalr1.cc:859
+  case 563:
+#line 1952 "dhcp6_parser.yy" // lalr1.cc:859
     {
       error(yystack_[0].location, "boolean values for the replace-client-name are "
                 "no longer supported");
       }
-#line 3117 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3153 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 556:
-#line 1930 "dhcp6_parser.yy" // lalr1.cc:859
+  case 564:
+#line 1958 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3125 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3161 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 557:
-#line 1932 "dhcp6_parser.yy" // lalr1.cc:859
+  case 565:
+#line 1960 "dhcp6_parser.yy" // lalr1.cc:859
     {
     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 3135 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3171 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 558:
-#line 1940 "dhcp6_parser.yy" // lalr1.cc:859
+  case 566:
+#line 1968 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3143 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3179 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 559:
-#line 1942 "dhcp6_parser.yy" // lalr1.cc:859
+  case 567:
+#line 1970 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("Dhcp4", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 3152 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3188 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 560:
-#line 1947 "dhcp6_parser.yy" // lalr1.cc:859
+  case 568:
+#line 1975 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3160 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3196 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 561:
-#line 1949 "dhcp6_parser.yy" // lalr1.cc:859
+  case 569:
+#line 1977 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("DhcpDdns", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 3169 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3205 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 562:
-#line 1954 "dhcp6_parser.yy" // lalr1.cc:859
+  case 570:
+#line 1982 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3177 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3213 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 563:
-#line 1956 "dhcp6_parser.yy" // lalr1.cc:859
+  case 571:
+#line 1984 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("Control-agent", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 3186 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3222 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 564:
-#line 1967 "dhcp6_parser.yy" // lalr1.cc:859
+  case 572:
+#line 1995 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("Logging", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.LOGGING);
 }
-#line 3197 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3233 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 565:
-#line 1972 "dhcp6_parser.yy" // lalr1.cc:859
+  case 573:
+#line 2000 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3206 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3242 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 566:
-#line 1977 "dhcp6_parser.yy" // lalr1.cc:859
+  case 574:
+#line 2005 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the Logging map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 3216 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3252 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 567:
-#line 1981 "dhcp6_parser.yy" // lalr1.cc:859
+  case 575:
+#line 2009 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 3224 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3260 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 571:
-#line 1997 "dhcp6_parser.yy" // lalr1.cc:859
+  case 579:
+#line 2025 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("loggers", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.LOGGERS);
 }
-#line 3235 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3271 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 572:
-#line 2002 "dhcp6_parser.yy" // lalr1.cc:859
+  case 580:
+#line 2030 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3244 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3280 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 575:
-#line 2014 "dhcp6_parser.yy" // lalr1.cc:859
+  case 583:
+#line 2042 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(l);
     ctx.stack_.push_back(l);
 }
-#line 3254 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3290 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 576:
-#line 2018 "dhcp6_parser.yy" // lalr1.cc:859
+  case 584:
+#line 2046 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 3262 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3298 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 586:
-#line 2035 "dhcp6_parser.yy" // lalr1.cc:859
+  case 594:
+#line 2063 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr dl(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("debuglevel", dl);
 }
-#line 3271 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3307 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 587:
-#line 2040 "dhcp6_parser.yy" // lalr1.cc:859
+  case 595:
+#line 2068 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3279 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3315 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 588:
-#line 2042 "dhcp6_parser.yy" // lalr1.cc:859
+  case 596:
+#line 2070 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("severity", sev);
     ctx.leave();
 }
-#line 3289 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3325 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 589:
-#line 2048 "dhcp6_parser.yy" // lalr1.cc:859
+  case 597:
+#line 2076 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("output_options", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.OUTPUT_OPTIONS);
 }
-#line 3300 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3336 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 590:
-#line 2053 "dhcp6_parser.yy" // lalr1.cc:859
+  case 598:
+#line 2081 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3309 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3345 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 593:
-#line 2062 "dhcp6_parser.yy" // lalr1.cc:859
+  case 601:
+#line 2090 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 3319 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3355 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 594:
-#line 2066 "dhcp6_parser.yy" // lalr1.cc:859
+  case 602:
+#line 2094 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 3327 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3363 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 601:
-#line 2080 "dhcp6_parser.yy" // lalr1.cc:859
+  case 609:
+#line 2108 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3335 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3371 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 602:
-#line 2082 "dhcp6_parser.yy" // lalr1.cc:859
+  case 610:
+#line 2110 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("output", sev);
     ctx.leave();
 }
-#line 3345 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3381 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 603:
-#line 2088 "dhcp6_parser.yy" // lalr1.cc:859
+  case 611:
+#line 2116 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr flush(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("flush", flush);
 }
-#line 3354 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3390 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 604:
-#line 2093 "dhcp6_parser.yy" // lalr1.cc:859
+  case 612:
+#line 2121 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr maxsize(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("maxsize", maxsize);
 }
-#line 3363 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3399 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 605:
-#line 2098 "dhcp6_parser.yy" // lalr1.cc:859
+  case 613:
+#line 2126 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr maxver(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("maxver", maxver);
 }
-#line 3372 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3408 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
 
-#line 3376 "dhcp6_parser.cc" // lalr1.cc:859
+#line 3412 "dhcp6_parser.cc" // lalr1.cc:859
             default:
               break;
             }
@@ -3627,111 +3663,113 @@ namespace isc { namespace dhcp {
   }
 
 
-  const short int Dhcp6Parser::yypact_ninf_ = -750;
+  const short int Dhcp6Parser::yypact_ninf_ = -762;
 
   const signed char Dhcp6Parser::yytable_ninf_ = -1;
 
   const short int
   Dhcp6Parser::yypact_[] =
   {
-     406,  -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,
-    -750,  -750,  -750,  -750,  -750,    51,    27,    42,   115,   123,
-     140,   159,   160,   170,   180,   194,   207,   208,   215,   221,
-    -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,
-    -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,
-    -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,
-    -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,    27,   -88,
-      36,    49,    32,   200,   150,    72,   141,   103,    92,   236,
-     -46,   351,   109,  -750,    67,   240,   264,   279,   241,  -750,
-    -750,  -750,  -750,  -750,   285,  -750,    34,  -750,  -750,  -750,
-    -750,  -750,  -750,  -750,  -750,  -750,   303,   319,   329,   339,
-     341,  -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,
-    -750,  -750,  -750,  -750,   342,  -750,  -750,  -750,    40,  -750,
-    -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,
-    -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,
-    -750,  -750,  -750,  -750,  -750,   344,  -750,    54,  -750,  -750,
-    -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,   346,   352,
-    -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,    63,
-    -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,
-    -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,    71,
-    -750,  -750,  -750,  -750,  -750,   359,  -750,   363,   364,  -750,
-    -750,  -750,  -750,  -750,   133,  -750,  -750,  -750,  -750,  -750,
-    -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,
-    -750,  -750,   290,   315,  -750,  -750,  -750,  -750,  -750,  -750,
-    -750,  -750,   347,  -750,  -750,   366,  -750,  -750,  -750,   369,
-    -750,  -750,   370,   368,  -750,  -750,  -750,  -750,  -750,  -750,
-    -750,  -750,  -750,  -750,  -750,  -750,  -750,   371,   373,  -750,
-    -750,  -750,  -750,   372,   378,  -750,  -750,  -750,  -750,  -750,
-    -750,  -750,  -750,  -750,  -750,  -750,  -750,   161,  -750,  -750,
-    -750,   379,  -750,  -750,   380,  -750,   381,   383,  -750,  -750,
-     386,   387,   389,  -750,  -750,  -750,  -750,  -750,   162,  -750,
-    -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,
-    -750,  -750,  -750,  -750,  -750,   183,  -750,  -750,  -750,    27,
-      27,  -750,   242,   390,   398,   400,   405,   407,  -750,    36,
-    -750,   408,   409,   410,   220,   265,   266,   267,   268,   411,
-     413,   414,   421,   424,   427,   428,   429,   430,   431,   432,
-     433,   434,   288,   435,   437,    49,  -750,   439,   289,    32,
-    -750,   440,   442,   443,   445,   446,   302,   295,   451,   467,
-     468,   469,   200,  -750,   473,   150,  -750,   474,   325,   476,
-     327,   328,    72,  -750,   479,   480,   481,   482,   483,   484,
-     485,  -750,   141,  -750,   489,   490,   343,   491,   494,   495,
-     345,  -750,    92,   496,   349,   350,  -750,   236,   498,   499,
-       7,  -750,   353,   503,   504,   356,   507,   361,   362,   513,
-     514,   365,   374,   375,   515,   518,   351,  -750,   519,   109,
-    -750,  -750,  -750,   522,   520,   521,    27,    27,    27,  -750,
-     525,   526,   527,  -750,  -750,  -750,  -750,  -750,   524,   530,
-     531,   536,   384,   554,   555,   556,   557,   558,   559,   560,
-     561,  -750,   562,   563,  -750,   566,  -750,  -750,   567,   568,
-     412,   422,   423,  -750,  -750,   189,   425,   569,   570,  -750,
-     426,  -750,   436,  -750,   438,  -750,  -750,  -750,   566,   566,
-     566,   441,   444,   447,   448,  -750,   449,   450,  -750,   452,
-     453,   454,  -750,  -750,   455,  -750,  -750,  -750,   456,    27,
-    -750,  -750,   457,   458,  -750,   459,  -750,  -750,   -43,   460,
-    -750,  -750,  -750,   116,   461,  -750,   575,  -750,    27,    49,
-     109,  -750,  -750,  -750,    32,    74,    74,   574,   576,   577,
-    -750,  -750,  -750,   578,   -42,    27,    66,   579,   580,    68,
-      96,    58,   351,  -750,  -750,   581,   583,  -750,  -750,  -750,
-    -750,  -750,  -750,  -750,  -750,   585,   511,  -750,  -750,  -750,
-    -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,
-    -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,
-    -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,   588,
-    -750,   205,   227,   243,  -750,  -750,  -750,  -750,   592,   594,
-     595,   600,   609,  -750,  -750,  -750,   244,  -750,  -750,  -750,
-    -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,
-     262,  -750,   610,   612,  -750,  -750,   611,   615,  -750,  -750,
-     613,   617,  -750,  -750,   616,   618,  -750,  -750,  -750,    44,
-    -750,  -750,  -750,   619,  -750,  -750,  -750,   223,  -750,  -750,
-    -750,  -750,   261,  -750,  -750,   620,   621,  -750,   623,   624,
-     625,   626,   627,   628,   263,  -750,  -750,  -750,  -750,  -750,
-    -750,  -750,  -750,  -750,   629,   630,   631,  -750,  -750,  -750,
-    -750,   280,  -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,
-    -750,  -750,  -750,   283,  -750,  -750,  -750,   287,   470,  -750,
-     632,   633,  -750,  -750,   634,   636,  -750,  -750,   635,   639,
-    -750,  -750,   637,  -750,   314,  -750,  -750,  -750,  -750,   640,
-     642,   643,   644,   497,   487,   500,   493,   501,   646,   648,
-      74,  -750,  -750,   200,  -750,   574,    92,  -750,   576,   236,
-    -750,   577,   367,  -750,   578,   -42,  -750,  -750,    66,  -750,
-      37,   579,  -750,   -46,  -750,   580,   502,   505,   506,   508,
-     509,   510,    68,  -750,   649,   653,   512,   516,   517,    96,
-    -750,   654,   657,    58,  -750,  -750,  -750,   659,   664,   150,
-    -750,   581,    72,  -750,   583,   141,  -750,   585,   665,  -750,
-     153,   588,  -750,   321,   523,   529,   532,  -750,  -750,  -750,
-    -750,  -750,   534,   535,  -750,   293,  -750,   660,  -750,   666,
-    -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,
-    -750,  -750,  -750,   294,  -750,  -750,  -750,  -750,  -750,  -750,
-    -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,   667,   669,
-    -750,  -750,  -750,  -750,   297,  -750,  -750,  -750,  -750,  -750,
-    -750,  -750,  -750,   235,   538,  -750,  -750,  -750,  -750,   540,
-     543,  -750,  -750,   548,   301,  -750,   305,  -750,   670,  -750,
-     549,  -750,   673,  -750,  -750,  -750,  -750,  -750,   308,  -750,
-    -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,
-    -750,  -750,  -750,  -750,  -750,  -750,  -750,   367,  -750,   675,
-    -750,    37,  -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,
-    -750,  -750,  -750,  -750,  -750,   680,   564,   705,   153,  -750,
-    -750,   571,  -750,   668,  -750,   572,  -750,  -750,   703,  -750,
-    -750,   322,  -750,    70,   703,  -750,  -750,   708,   709,   711,
-     311,  -750,  -750,  -750,  -750,  -750,  -750,   712,   565,   573,
-     584,    70,  -750,   591,  -750,  -750,  -750,  -750,  -750
+     402,  -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,
+    -762,  -762,  -762,  -762,  -762,    43,    27,    42,    50,    92,
+     119,   146,   150,   158,   166,   167,   174,   190,   214,   215,
+    -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,
+    -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,
+    -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,
+    -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,    27,    26,
+      36,    49,    32,   189,    41,   228,   198,   163,    82,   247,
+     -38,   347,   102,  -762,   251,   265,   296,   308,   314,  -762,
+    -762,  -762,  -762,  -762,   316,  -762,    34,  -762,  -762,  -762,
+    -762,  -762,  -762,  -762,  -762,  -762,   319,   324,   329,   341,
+     344,  -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,
+    -762,  -762,  -762,  -762,   346,  -762,  -762,  -762,    71,  -762,
+    -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,
+    -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,
+    -762,  -762,  -762,  -762,  -762,   349,  -762,    72,  -762,  -762,
+    -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,   352,   359,
+    -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,    74,
+    -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,
+    -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,   100,
+    -762,  -762,  -762,  -762,  -762,   364,  -762,   366,   367,  -762,
+    -762,  -762,  -762,  -762,   126,  -762,  -762,  -762,  -762,  -762,
+    -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,
+    -762,  -762,   317,   370,  -762,  -762,  -762,  -762,  -762,  -762,
+    -762,  -762,   369,  -762,  -762,   371,  -762,  -762,  -762,   374,
+    -762,  -762,   372,   378,  -762,  -762,  -762,  -762,  -762,  -762,
+    -762,  -762,  -762,  -762,  -762,  -762,  -762,   379,   380,  -762,
+    -762,  -762,  -762,   381,   384,  -762,  -762,  -762,  -762,  -762,
+    -762,  -762,  -762,  -762,  -762,  -762,  -762,   127,  -762,  -762,
+    -762,   386,  -762,  -762,   387,  -762,   389,   390,  -762,  -762,
+     391,   398,   405,  -762,  -762,  -762,  -762,  -762,   161,  -762,
+    -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,
+    -762,  -762,  -762,  -762,  -762,   187,  -762,  -762,  -762,    27,
+      27,  -762,   210,   407,   408,   409,   410,   411,  -762,    36,
+    -762,   413,   414,   415,   216,   262,   263,   264,   267,   424,
+     427,   428,   429,   430,   431,   432,   433,   434,   435,   437,
+     438,   439,   286,   441,   442,    49,  -762,   443,   289,    32,
+    -762,   446,   447,   451,   452,   467,   315,   312,   473,   474,
+     475,   476,   189,  -762,   477,    41,  -762,   478,   325,   480,
+     327,   328,   228,  -762,   483,   484,   485,   489,   490,   491,
+     493,  -762,   198,  -762,   494,   495,   342,   497,   498,   499,
+     345,  -762,    82,   502,   348,   350,  -762,   247,   503,   505,
+     -50,  -762,   351,   511,   512,   360,   513,   361,   365,   517,
+     518,   368,   373,   375,   522,   523,   347,  -762,   525,   102,
+    -762,  -762,  -762,   526,   524,   527,    27,    27,    27,  -762,
+     529,   530,   536,  -762,  -762,  -762,  -762,  -762,   554,   555,
+     556,   557,   406,   560,   561,   562,   563,   564,   565,   566,
+     567,  -762,   568,   569,  -762,   572,  -762,  -762,   573,   574,
+     423,   425,   426,  -762,  -762,   176,   436,   576,   577,  -762,
+     440,  -762,   444,  -762,   445,  -762,  -762,  -762,   572,   572,
+     572,   448,   449,   450,   453,  -762,   454,   455,  -762,   456,
+     457,   458,  -762,  -762,   459,  -762,  -762,  -762,   460,    27,
+    -762,  -762,   461,   462,  -762,   463,  -762,  -762,    -8,   464,
+    -762,  -762,  -762,   -15,   465,  -762,   580,  -762,    27,    49,
+     102,  -762,  -762,  -762,    32,   186,   186,   579,   581,   582,
+    -762,  -762,  -762,   584,   -46,    27,    56,   585,   587,   169,
+      46,    44,   347,  -762,  -762,   588,   589,  -762,  -762,  -762,
+    -762,  -762,  -762,  -762,  -762,   591,   486,  -762,  -762,  -762,
+    -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,
+    -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,
+    -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,   592,
+    -762,   188,   191,   197,  -762,  -762,  -762,  -762,   528,   558,
+     583,   596,   599,  -762,  -762,   600,   604,   605,   617,  -762,
+     220,  -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,
+    -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,   227,  -762,
+     618,   620,  -762,  -762,   619,   623,  -762,  -762,   621,   625,
+    -762,  -762,   624,   626,  -762,  -762,  -762,    70,  -762,  -762,
+    -762,   627,  -762,  -762,  -762,    94,  -762,  -762,  -762,  -762,
+     138,  -762,  -762,   628,   629,  -762,   631,   632,   633,   634,
+     635,   636,   229,  -762,  -762,  -762,  -762,  -762,  -762,  -762,
+    -762,  -762,   637,   638,   639,  -762,  -762,  -762,  -762,   230,
+    -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,
+    -762,   239,  -762,  -762,  -762,   268,   487,  -762,   640,   642,
+    -762,  -762,   641,   645,  -762,  -762,   643,   647,  -762,  -762,
+     644,  -762,   160,  -762,  -762,  -762,  -762,   649,   650,   651,
+     652,   500,   471,   501,   504,   507,   653,   656,   508,   509,
+     510,   514,   186,  -762,  -762,   189,  -762,   579,    82,  -762,
+     581,   247,  -762,   582,   363,  -762,   584,   -46,  -762,  -762,
+      56,  -762,     5,   585,  -762,   -38,  -762,   587,   515,   519,
+     520,   521,   531,   532,   169,  -762,   657,   658,   533,   538,
+     539,    46,  -762,   659,   665,    44,  -762,  -762,  -762,   664,
+     648,    41,  -762,   588,   228,  -762,   589,   198,  -762,   591,
+     667,  -762,    35,   592,  -762,   321,   537,   542,   543,  -762,
+    -762,  -762,  -762,  -762,   546,   548,  -762,  -762,  -762,  -762,
+    -762,   293,  -762,   668,  -762,   672,  -762,  -762,  -762,  -762,
+    -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,   294,
+    -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,
+    -762,  -762,  -762,  -762,   673,   669,  -762,  -762,  -762,  -762,
+     295,  -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,   231,
+     551,  -762,  -762,  -762,  -762,   570,   571,  -762,  -762,   575,
+     301,  -762,   303,  -762,   674,  -762,   586,  -762,   671,  -762,
+    -762,  -762,  -762,  -762,   310,  -762,  -762,  -762,  -762,  -762,
+    -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,
+    -762,  -762,  -762,   363,  -762,   679,  -762,     5,  -762,  -762,
+    -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,
+    -762,   680,   578,   681,    35,  -762,  -762,   593,  -762,   682,
+    -762,   601,  -762,  -762,   706,  -762,  -762,   269,  -762,    22,
+     706,  -762,  -762,   684,   710,   717,   311,  -762,  -762,  -762,
+    -762,  -762,  -762,   718,   610,   598,   602,    22,  -762,   608,
+    -762,  -762,  -762,  -762,  -762
   };
 
   const unsigned short int
@@ -3741,141 +3779,143 @@ 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,    70,     7,   106,     9,   222,    11,
-     363,    13,   387,    15,   416,    17,   288,    19,   296,    21,
-     333,    23,   187,    25,   509,    27,   566,    29,    47,    41,
-       0,     0,     0,     0,     0,     0,   418,     0,   298,   335,
+      35,    36,    58,     5,    70,     7,   106,     9,   230,    11,
+     371,    13,   395,    15,   424,    17,   296,    19,   304,    21,
+     341,    23,   195,    25,   517,    27,   574,    29,    47,    41,
+       0,     0,     0,     0,     0,     0,   426,     0,   306,   343,
        0,     0,     0,    49,     0,    48,     0,     0,    42,    68,
-     564,   558,   560,   562,     0,    67,     0,    60,    62,    64,
+     572,   566,   568,   570,     0,    67,     0,    60,    62,    64,
       65,    66,    63,   104,   118,   120,     0,     0,     0,     0,
-       0,   214,   286,   325,   375,   377,   260,   160,   177,   168,
-     451,   179,   198,   470,     0,   494,   507,    98,     0,    72,
+       0,   222,   294,   333,   383,   385,   268,   168,   185,   176,
+     459,   187,   206,   478,     0,   502,   515,    98,     0,    72,
       74,    75,    76,    77,    78,    81,    82,    83,    84,    86,
       85,    90,    91,    79,    80,    88,    89,    96,    97,    87,
       92,    93,    94,    95,   115,     0,   114,     0,   108,   110,
-     111,   112,   113,   355,   379,   245,   247,   249,     0,     0,
-     253,   251,   408,   447,   244,   226,   227,   228,   229,     0,
-     224,   233,   234,   235,   238,   240,   236,   237,   230,   231,
-     242,   243,   232,   239,   241,   373,   372,   369,   368,     0,
-     365,   367,   370,   371,   401,     0,   404,     0,     0,   400,
-     395,   394,   398,   399,     0,   389,   391,   392,   396,   397,
-     393,   445,   433,   435,   437,   439,   441,   443,   432,   429,
-     430,   431,     0,   419,   420,   424,   425,   422,   426,   427,
-     428,   423,     0,   315,   150,     0,   319,   317,   322,     0,
-     311,   312,     0,   299,   300,   302,   314,   303,   304,   305,
-     321,   306,   307,   308,   309,   310,   349,     0,     0,   347,
-     348,   351,   352,     0,   336,   337,   339,   340,   341,   342,
-     343,   344,   345,   346,   194,   196,   191,     0,   189,   192,
-     193,     0,   531,   533,     0,   536,     0,     0,   540,   544,
-       0,     0,     0,   549,   556,   529,   527,   528,     0,   511,
-     513,   514,   515,   516,   517,   518,   519,   520,   521,   522,
-     523,   524,   525,   526,   571,     0,   568,   570,    46,     0,
+     111,   112,   113,   363,   387,   253,   255,   257,     0,     0,
+     261,   259,   416,   455,   252,   234,   235,   236,   237,     0,
+     232,   241,   242,   243,   246,   248,   244,   245,   238,   239,
+     250,   251,   240,   247,   249,   381,   380,   377,   376,     0,
+     373,   375,   378,   379,   409,     0,   412,     0,     0,   408,
+     403,   402,   406,   407,     0,   397,   399,   400,   404,   405,
+     401,   453,   441,   443,   445,   447,   449,   451,   440,   437,
+     438,   439,     0,   427,   428,   432,   433,   430,   434,   435,
+     436,   431,     0,   323,   154,     0,   327,   325,   330,     0,
+     319,   320,     0,   307,   308,   310,   322,   311,   312,   313,
+     329,   314,   315,   316,   317,   318,   357,     0,     0,   355,
+     356,   359,   360,     0,   344,   345,   347,   348,   349,   350,
+     351,   352,   353,   354,   202,   204,   199,     0,   197,   200,
+     201,     0,   539,   541,     0,   544,     0,     0,   548,   552,
+       0,     0,     0,   557,   564,   537,   535,   536,     0,   519,
+     521,   522,   523,   524,   525,   526,   527,   528,   529,   530,
+     531,   532,   533,   534,   579,     0,   576,   578,    46,     0,
        0,    39,     0,     0,     0,     0,     0,     0,    57,     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,    71,     0,     0,     0,
      107,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   223,     0,     0,   364,     0,     0,     0,
-       0,     0,     0,   388,     0,     0,     0,     0,     0,     0,
-       0,   417,     0,   289,     0,     0,     0,     0,     0,     0,
-       0,   297,     0,     0,     0,     0,   334,     0,     0,     0,
-       0,   188,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   510,     0,     0,
-     567,    50,    43,     0,     0,     0,     0,     0,     0,    61,
+       0,     0,     0,   231,     0,     0,   372,     0,     0,     0,
+       0,     0,     0,   396,     0,     0,     0,     0,     0,     0,
+       0,   425,     0,   297,     0,     0,     0,     0,     0,     0,
+       0,   305,     0,     0,     0,     0,   342,     0,     0,     0,
+       0,   196,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   518,     0,     0,
+     575,    50,    43,     0,     0,     0,     0,     0,     0,    61,
        0,     0,     0,    99,   100,   101,   102,   103,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   493,     0,     0,    73,     0,   117,   109,     0,     0,
-       0,     0,     0,   258,   259,     0,     0,     0,     0,   225,
-       0,   366,     0,   403,     0,   406,   407,   390,     0,     0,
-       0,     0,     0,     0,     0,   421,     0,     0,   313,     0,
-       0,     0,   324,   301,     0,   353,   354,   338,     0,     0,
-     190,   530,     0,     0,   535,     0,   538,   539,     0,     0,
-     546,   547,   548,     0,     0,   512,     0,   569,     0,     0,
-       0,   559,   561,   563,     0,     0,     0,   216,   290,   327,
-      40,   376,   378,   262,     0,    47,     0,     0,   181,     0,
-       0,     0,     0,    51,   116,   357,   381,   246,   248,   250,
-     255,   256,   257,   254,   252,   410,     0,   374,   402,   405,
-     446,   434,   436,   438,   440,   442,   444,   316,   151,   320,
-     318,   323,   350,   195,   197,   532,   534,   537,   542,   543,
-     541,   545,   551,   552,   553,   554,   555,   550,   557,     0,
-      44,     0,     0,     0,   137,   143,   145,   147,     0,     0,
-       0,     0,     0,   156,   158,   136,     0,   122,   124,   125,
-     126,   127,   128,   129,   130,   131,   132,   133,   134,   135,
-       0,   220,     0,   217,   218,   294,     0,   291,   292,   331,
-       0,   328,   329,   266,     0,   263,   264,   166,   167,     0,
-     162,   164,   165,     0,   175,   176,   172,     0,   170,   173,
-     174,   455,     0,   453,   185,     0,   182,   183,     0,     0,
-       0,     0,     0,     0,     0,   200,   202,   203,   204,   205,
-     206,   207,   483,   489,     0,     0,     0,   482,   479,   480,
-     481,     0,   472,   474,   477,   475,   476,   478,   503,   505,
-     502,   500,   501,     0,   496,   498,   499,     0,    53,   361,
-       0,   358,   359,   385,     0,   382,   383,   414,     0,   411,
-     412,   449,     0,   575,     0,   573,    69,   565,   105,     0,
+       0,   501,     0,     0,    73,     0,   117,   109,     0,     0,
+       0,     0,     0,   266,   267,     0,     0,     0,     0,   233,
+       0,   374,     0,   411,     0,   414,   415,   398,     0,     0,
+       0,     0,     0,     0,     0,   429,     0,     0,   321,     0,
+       0,     0,   332,   309,     0,   361,   362,   346,     0,     0,
+     198,   538,     0,     0,   543,     0,   546,   547,     0,     0,
+     554,   555,   556,     0,     0,   520,     0,   577,     0,     0,
+       0,   567,   569,   571,     0,     0,     0,   224,   298,   335,
+      40,   384,   386,   270,     0,    47,     0,     0,   189,     0,
+       0,     0,     0,    51,   116,   365,   389,   254,   256,   258,
+     263,   264,   265,   262,   260,   418,     0,   382,   410,   413,
+     454,   442,   444,   446,   448,   450,   452,   324,   155,   328,
+     326,   331,   358,   203,   205,   540,   542,   545,   550,   551,
+     549,   553,   559,   560,   561,   562,   563,   558,   565,     0,
+      44,     0,     0,     0,   141,   147,   149,   151,     0,     0,
+       0,     0,     0,   164,   166,     0,     0,     0,     0,   140,
+       0,   122,   124,   125,   126,   127,   128,   129,   130,   131,
+     132,   133,   135,   136,   137,   138,   134,   139,     0,   228,
+       0,   225,   226,   302,     0,   299,   300,   339,     0,   336,
+     337,   274,     0,   271,   272,   174,   175,     0,   170,   172,
+     173,     0,   183,   184,   180,     0,   178,   181,   182,   463,
+       0,   461,   193,     0,   190,   191,     0,     0,     0,     0,
+       0,     0,     0,   208,   210,   211,   212,   213,   214,   215,
+     491,   497,     0,     0,     0,   490,   487,   488,   489,     0,
+     480,   482,   485,   483,   484,   486,   511,   513,   510,   508,
+     509,     0,   504,   506,   507,     0,    53,   369,     0,   366,
+     367,   393,     0,   390,   391,   422,     0,   419,   420,   457,
+       0,   583,     0,   581,    69,   573,   105,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   119,   121,     0,   215,     0,   298,   287,     0,   335,
-     326,     0,     0,   261,     0,     0,   161,   178,     0,   169,
-     457,     0,   452,     0,   180,     0,     0,     0,     0,     0,
-       0,     0,     0,   199,     0,     0,     0,     0,     0,     0,
-     471,     0,     0,     0,   495,   508,    55,     0,    54,     0,
-     356,     0,     0,   380,     0,   418,   409,     0,     0,   448,
-       0,     0,   572,     0,     0,     0,     0,   149,   152,   153,
-     154,   155,     0,     0,   123,     0,   219,     0,   293,     0,
-     330,   285,   280,   282,   274,   275,   270,   271,   272,   273,
-     279,   278,   281,     0,   268,   276,   283,   284,   277,   265,
-     163,   171,   468,   466,   467,   463,   464,   465,     0,   458,
-     459,   461,   462,   454,     0,   184,   208,   209,   210,   211,
-     212,   213,   201,     0,     0,   488,   491,   492,   473,     0,
-       0,   497,    52,     0,     0,   360,     0,   384,     0,   413,
-       0,   589,     0,   587,   585,   579,   583,   584,     0,   577,
-     581,   582,   580,   574,   139,   140,   141,   142,   138,   144,
-     146,   148,   157,   159,   221,   295,   332,     0,   267,     0,
-     456,     0,   186,   485,   486,   487,   484,   490,   504,   506,
-      56,   362,   386,   415,   450,     0,     0,     0,     0,   576,
-     269,     0,   460,     0,   586,     0,   578,   469,     0,   588,
-     593,     0,   591,     0,     0,   590,   601,     0,     0,     0,
-       0,   595,   597,   598,   599,   600,   592,     0,     0,     0,
-       0,     0,   594,     0,   603,   604,   605,   596,   602
+       0,     0,     0,   119,   121,     0,   223,     0,   306,   295,
+       0,   343,   334,     0,     0,   269,     0,     0,   169,   186,
+       0,   177,   465,     0,   460,     0,   188,     0,     0,     0,
+       0,     0,     0,     0,     0,   207,     0,     0,     0,     0,
+       0,     0,   479,     0,     0,     0,   503,   516,    55,     0,
+      54,     0,   364,     0,     0,   388,     0,   426,   417,     0,
+       0,   456,     0,     0,   580,     0,     0,     0,     0,   153,
+     156,   157,   158,   159,     0,     0,   160,   161,   162,   163,
+     123,     0,   227,     0,   301,     0,   338,   293,   288,   290,
+     282,   283,   278,   279,   280,   281,   287,   286,   289,     0,
+     276,   284,   291,   292,   285,   273,   171,   179,   476,   474,
+     475,   471,   472,   473,     0,   466,   467,   469,   470,   462,
+       0,   192,   216,   217,   218,   219,   220,   221,   209,     0,
+       0,   496,   499,   500,   481,     0,     0,   505,    52,     0,
+       0,   368,     0,   392,     0,   421,     0,   597,     0,   595,
+     593,   587,   591,   592,     0,   585,   589,   590,   588,   582,
+     143,   144,   145,   146,   142,   148,   150,   152,   165,   167,
+     229,   303,   340,     0,   275,     0,   464,     0,   194,   493,
+     494,   495,   492,   498,   512,   514,    56,   370,   394,   423,
+     458,     0,     0,     0,     0,   584,   277,     0,   468,     0,
+     594,     0,   586,   477,     0,   596,   601,     0,   599,     0,
+       0,   598,   609,     0,     0,     0,     0,   603,   605,   606,
+     607,   608,   600,     0,     0,     0,     0,     0,   602,     0,
+     611,   612,   613,   604,   610
   };
 
   const short int
   Dhcp6Parser::yypgoto_[] =
   {
-    -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,
-    -750,  -750,  -750,  -750,  -750,  -750,     6,  -750,   105,  -750,
-    -750,  -750,  -750,  -750,  -750,    82,  -750,  -139,  -750,  -750,
-    -750,   -70,  -750,  -750,  -750,   391,  -750,  -750,  -750,  -750,
-     178,   355,   -72,   -58,   -56,   -55,  -750,  -750,  -750,  -750,
-    -750,   182,   377,  -750,  -750,  -750,  -750,  -750,  -750,  -750,
-     185,   -16,  -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,
-    -750,  -750,    -7,  -750,  -553,  -750,  -750,  -750,  -750,  -750,
-    -750,  -750,  -750,  -750,  -750,   -28,  -544,  -750,  -750,  -750,
-    -750,   -19,  -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,
-     -27,  -750,  -750,  -750,   -15,   333,  -750,  -750,  -750,  -750,
-    -750,  -750,  -750,   -23,  -750,  -750,  -750,  -750,  -750,  -750,
-    -749,  -750,  -750,  -750,     5,  -750,  -750,  -750,     8,   385,
-    -750,  -750,  -746,  -750,  -742,  -750,   -34,  -750,  -741,  -750,
-    -750,  -750,  -739,  -750,  -750,  -750,  -750,     2,  -750,  -750,
-    -147,   694,  -750,  -750,  -750,  -750,  -750,    14,  -750,  -750,
-    -750,    18,  -750,   376,  -750,   -65,  -750,  -750,  -750,  -750,
-    -750,   -60,  -750,  -750,  -750,  -750,  -750,    -6,  -750,  -750,
-    -750,    15,  -750,  -750,  -750,    16,  -750,   360,  -750,  -750,
-    -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,   -21,
-    -750,  -750,  -750,   -18,   393,  -750,  -750,   -48,  -750,   -20,
-    -750,  -750,  -750,  -750,  -750,   -17,  -750,  -750,  -750,   -13,
-     392,  -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,
-    -750,  -750,   -24,  -750,  -750,  -750,   -14,  -750,   395,  -750,
-    -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,
-    -750,  -750,  -750,  -733,  -750,  -750,  -750,  -750,  -750,  -750,
-      21,  -750,  -750,  -750,  -135,  -750,  -750,  -750,  -750,  -750,
-    -750,     9,  -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,
-    -750,  -750,  -750,  -750,     1,  -750,  -750,  -750,  -750,  -750,
-    -750,  -750,  -750,   233,   382,  -750,  -750,  -750,  -750,  -750,
-    -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,
-    -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,
-    -750,  -750,  -750,  -750,  -750,  -750,  -750,  -750,   260,   388,
-    -750,  -750,  -750,   -10,  -750,  -750,  -136,  -750,  -750,  -750,
-    -750,  -750,  -750,  -150,  -750,  -750,  -166,  -750,  -750,  -750,
-    -750,  -750
+    -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,
+    -762,  -762,  -762,  -762,  -762,  -762,     6,  -762,   110,  -762,
+    -762,  -762,  -762,  -762,  -762,   131,  -762,  -139,  -762,  -762,
+    -762,   -70,  -762,  -762,  -762,   385,  -762,  -762,  -762,  -762,
+     194,   377,   -72,   -58,   -56,   -55,  -762,  -762,  -762,  -762,
+    -762,   181,   392,  -762,  -762,  -762,  -762,  -762,  -762,  -762,
+     183,   -32,  -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,
+    -762,  -762,    -7,  -762,  -553,  -762,  -762,  -762,  -762,  -762,
+    -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,   -40,
+    -544,  -762,  -762,  -762,  -762,   -42,  -762,  -762,  -762,  -762,
+    -762,  -762,  -762,  -762,   -41,  -762,  -762,  -762,   -36,   353,
+    -762,  -762,  -762,  -762,  -762,  -762,  -762,   -23,  -762,  -762,
+    -762,  -762,  -762,  -762,  -761,  -762,  -762,  -762,   -28,  -762,
+    -762,  -762,     7,   396,  -762,  -762,  -758,  -762,  -754,  -762,
+     -34,  -762,  -753,  -762,  -762,  -762,  -751,  -762,  -762,  -762,
+    -762,     3,  -762,  -762,  -151,   707,  -762,  -762,  -762,  -762,
+    -762,    13,  -762,  -762,  -762,    18,  -762,   376,  -762,   -65,
+    -762,  -762,  -762,  -762,  -762,   -60,  -762,  -762,  -762,  -762,
+    -762,    -6,  -762,  -762,  -762,    14,  -762,  -762,  -762,    19,
+    -762,   382,  -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,
+    -762,  -762,  -762,   -24,  -762,  -762,  -762,   -19,   416,  -762,
+    -762,   -48,  -762,   -20,  -762,  -762,  -762,  -762,  -762,   -21,
+    -762,  -762,  -762,   -18,   401,  -762,  -762,  -762,  -762,  -762,
+    -762,  -762,  -762,  -762,  -762,  -762,   -16,  -762,  -762,  -762,
+     -17,  -762,   404,  -762,  -762,  -762,  -762,  -762,  -762,  -762,
+    -762,  -762,  -762,  -762,  -762,  -762,  -762,  -745,  -762,  -762,
+    -762,  -762,  -762,  -762,    15,  -762,  -762,  -762,  -133,  -762,
+    -762,  -762,  -762,  -762,  -762,     8,  -762,  -762,  -762,  -762,
+    -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,     2,  -762,
+    -762,  -762,  -762,  -762,  -762,  -762,  -762,   248,   383,  -762,
+    -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,
+    -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,
+    -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,  -762,
+    -762,  -762,   272,   388,  -762,  -762,  -762,   -10,  -762,  -762,
+    -140,  -762,  -762,  -762,  -762,  -762,  -762,  -154,  -762,  -762,
+    -170,  -762,  -762,  -762,  -762,  -762
   };
 
   const short int
@@ -3883,407 +3923,412 @@ namespace isc { namespace dhcp {
   {
       -1,    15,    16,    17,    18,    19,    20,    21,    22,    23,
       24,    25,    26,    27,    28,    29,    83,    39,    40,    69,
-     551,    87,    88,    41,    68,    84,    85,   564,   718,   797,
-     798,   127,    43,    70,    96,    97,    98,   333,    45,    71,
+     551,    87,    88,    41,    68,    84,    85,   564,   726,   809,
+     810,   127,    43,    70,    96,    97,    98,   333,    45,    71,
      128,   129,   130,   131,   132,   133,   134,   135,   341,    47,
       72,   157,   158,   159,   367,   160,   136,   342,   137,   343,
-     626,   627,   628,   739,   908,   629,   740,   630,   741,   631,
-     742,   632,   251,   405,   634,   635,   636,   637,   638,   748,
-     639,   749,   138,   355,   659,   660,   661,   662,   139,   357,
-     667,   668,   669,   670,   140,   356,   141,   359,   675,   676,
-     677,   773,    63,    80,   287,   288,   289,   418,   290,   419,
-     142,   360,   684,   685,   686,   687,   688,   689,   690,   691,
-     143,   349,   642,   643,   644,   753,    49,    73,   179,   180,
-     181,   373,   182,   374,   183,   375,   184,   379,   185,   378,
-     573,   186,   187,   144,   354,   654,   655,   656,   762,   843,
-     844,   145,   350,    57,    77,   646,   647,   648,   756,    59,
-      78,   252,   253,   254,   255,   256,   257,   258,   404,   259,
-     408,   260,   407,   261,   262,   409,   263,   146,   351,   650,
-     651,   652,   759,    61,    79,   273,   274,   275,   276,   277,
-     413,   278,   279,   280,   281,   189,   371,   720,   721,   722,
-     799,    51,    74,   199,   200,   201,   384,   147,   352,   148,
-     353,   192,   372,   724,   725,   726,   802,    53,    75,   214,
-     215,   216,   387,   217,   218,   389,   219,   220,   193,   380,
-     728,   729,   730,   805,    55,    76,   232,   233,   234,   235,
-     395,   236,   396,   237,   397,   238,   398,   239,   399,   240,
-     400,   241,   394,   194,   381,   732,   808,   149,   358,   672,
-     673,   770,   858,   859,   860,   861,   862,   919,   150,   361,
-     701,   702,   703,   784,   926,   704,   705,   785,   706,   707,
-     151,   152,   363,   713,   714,   715,   791,   716,   792,   153,
-     364,    65,    81,   308,   309,   310,   311,   423,   312,   424,
-     313,   314,   426,   315,   316,   317,   429,   600,   318,   430,
-     319,   320,   321,   322,   434,   607,   323,   435,    99,   335,
-     100,   336,   101,   337,   102,   334,    67,    82,   325,   326,
-     327,   438,   734,   735,   810,   898,   899,   900,   901,   937,
-     902,   935,   951,   952,   953,   960,   961,   962,   967,   963,
-     964,   965
+     630,   631,   632,   747,   924,   633,   748,   634,   749,   635,
+     750,   636,   251,   405,   638,   639,   640,   641,   642,   643,
+     644,   645,   646,   756,   647,   757,   138,   355,   667,   668,
+     669,   670,   139,   357,   675,   676,   677,   678,   140,   356,
+     141,   359,   683,   684,   685,   785,    63,    80,   287,   288,
+     289,   418,   290,   419,   142,   360,   692,   693,   694,   695,
+     696,   697,   698,   699,   143,   349,   650,   651,   652,   765,
+      49,    73,   179,   180,   181,   373,   182,   374,   183,   375,
+     184,   379,   185,   378,   573,   186,   187,   144,   354,   662,
+     663,   664,   774,   859,   860,   145,   350,    57,    77,   654,
+     655,   656,   768,    59,    78,   252,   253,   254,   255,   256,
+     257,   258,   404,   259,   408,   260,   407,   261,   262,   409,
+     263,   146,   351,   658,   659,   660,   771,    61,    79,   273,
+     274,   275,   276,   277,   413,   278,   279,   280,   281,   189,
+     371,   728,   729,   730,   811,    51,    74,   199,   200,   201,
+     384,   147,   352,   148,   353,   192,   372,   732,   733,   734,
+     814,    53,    75,   214,   215,   216,   387,   217,   218,   389,
+     219,   220,   193,   380,   736,   737,   738,   817,    55,    76,
+     232,   233,   234,   235,   395,   236,   396,   237,   397,   238,
+     398,   239,   399,   240,   400,   241,   394,   194,   381,   740,
+     820,   149,   358,   680,   681,   782,   874,   875,   876,   877,
+     878,   935,   150,   361,   709,   710,   711,   796,   942,   712,
+     713,   797,   714,   715,   151,   152,   363,   721,   722,   723,
+     803,   724,   804,   153,   364,    65,    81,   308,   309,   310,
+     311,   423,   312,   424,   313,   314,   426,   315,   316,   317,
+     429,   600,   318,   430,   319,   320,   321,   322,   434,   607,
+     323,   435,    99,   335,   100,   336,   101,   337,   102,   334,
+      67,    82,   325,   326,   327,   438,   742,   743,   822,   914,
+     915,   916,   917,   953,   918,   951,   967,   968,   969,   976,
+     977,   978,   983,   979,   980,   981
   };
 
   const unsigned short int
   Dhcp6Parser::yytable_[] =
   {
-      95,   175,   156,   174,   196,   209,   228,   698,   250,   269,
-     286,   305,   666,   837,   271,   176,   838,   177,   178,   272,
-     839,   841,    38,   842,   161,   190,   202,   212,   230,   848,
-     264,   282,    31,   306,    32,   657,    33,   339,   284,   285,
-     197,   210,   340,   365,   154,   155,    89,   765,   366,    42,
-     766,    30,   162,   191,   203,   213,   231,   369,   265,   283,
-     103,   307,   370,   104,   105,    86,   382,   188,   198,   211,
-     229,   383,   270,   328,   385,   113,   244,   598,   599,   386,
-     106,   107,   108,   109,   110,   111,   112,   113,   114,   115,
-     614,   284,   285,   114,   115,   615,   616,   617,   618,   619,
-     620,   621,   622,   623,   624,   114,   115,    94,   243,   852,
-     113,   658,   692,   244,   114,   115,   116,   117,   118,   119,
-     120,   619,    44,   204,   205,   206,   207,   208,   114,   115,
-      46,   244,   121,   245,   246,   122,   392,   247,   248,   249,
-     112,   393,   123,   657,   664,   171,   665,    48,   114,   115,
-     124,   125,   114,   115,   126,   678,   679,   680,   681,   682,
-     683,   708,   709,    90,   420,   436,    50,    52,   837,   421,
-     437,   838,    91,    92,    93,   839,   841,    54,   842,   113,
-      34,    35,    36,    37,   848,    94,   439,    56,   113,    94,
-      94,   440,   244,   693,   694,   695,   696,   114,   115,   195,
-     956,    58,    94,   957,   958,   959,   114,   115,   365,   114,
-     115,    94,   221,   736,    60,    62,   222,   223,   224,   225,
-     226,   227,    64,   171,   666,    94,   768,    94,    66,   769,
-     439,   106,   107,   108,   109,   737,   698,   324,   113,   602,
-     603,   604,   605,   329,   332,    94,   369,   750,   163,    94,
-     164,   738,   751,   570,   571,   572,   114,   115,   165,   166,
-     167,   168,   169,   170,   771,   750,   782,   772,   330,    95,
-     752,   783,   606,   171,   172,   244,   266,   245,   246,   267,
-     268,   173,   891,   789,   892,   893,   793,   331,   790,   338,
-     436,   794,   114,   115,    94,   795,   382,   917,   401,   156,
-     420,   914,   918,    94,   385,   922,    94,   344,   392,   931,
-     175,   938,   174,   932,   971,   196,   939,   811,   402,   972,
-     812,   161,   209,   345,   176,   954,   177,   178,   955,   923,
-     924,   925,   228,   346,   190,   441,   442,   202,   904,   905,
-     906,   907,   250,   347,   212,   348,   362,   269,   368,   162,
-     376,   197,   271,    94,   230,   403,   377,   272,   210,   580,
-     581,   582,   191,   388,   264,   203,   305,   390,   391,   282,
-     406,   412,   213,   410,   453,   414,   188,   415,   411,   198,
-     416,   417,   231,   422,   425,   427,   211,   428,   306,    94,
-     431,   432,   265,   433,   444,   443,   229,   283,   106,   107,
-     108,   109,   445,   111,   446,   113,   244,   114,   115,   447,
-     270,   448,   450,   451,   452,   458,   307,   459,   460,   454,
-     455,   456,   457,   114,   115,   461,   166,   167,   462,   169,
-     170,   463,   464,   465,   466,   467,   468,   469,   470,   472,
-     171,   473,   471,   475,   478,   476,   479,   480,   173,   481,
-     482,   484,   541,   542,   543,   485,   483,   291,   292,   293,
+      95,   175,   156,   174,   196,   209,   228,   706,   250,   269,
+     286,   305,   674,   853,   271,   176,   854,   177,   178,   272,
+     855,   857,    38,   858,   161,   190,   202,   212,   230,   864,
+     264,   282,    31,   306,    32,   665,    33,   339,   284,   285,
+     197,   210,   340,    30,   154,   155,    89,   113,   244,    42,
+     284,   285,   162,   191,   203,   213,   231,    44,   265,   283,
+     103,   307,   700,   104,   105,   114,   115,   188,   198,   211,
+     229,   619,   270,   777,   365,   369,   778,   382,   244,   366,
+     370,   868,   383,   113,   106,   107,   108,   109,   110,   111,
+     112,   113,   114,   115,   195,   114,   115,   780,   243,    46,
+     781,   114,   115,   385,   114,   115,   114,   115,   386,   114,
+     115,   666,   602,   603,   604,   605,   598,   599,   171,    94,
+     116,   117,   118,   119,   120,   244,    48,   245,   246,   392,
+     420,   247,   248,   249,   393,   421,   121,   665,   672,   122,
+     673,   783,   114,   115,   784,   606,   123,   701,   702,   703,
+     704,   716,   717,    50,   124,   125,   972,    52,   126,   973,
+     974,   975,    94,   823,   436,    54,   824,    90,   907,   437,
+     908,   909,   853,    56,    58,   854,    91,    92,    93,   855,
+     857,    60,   858,    86,    34,    35,    36,    37,   864,    94,
+     439,   365,    94,    94,   439,   440,   744,    62,    94,   745,
+     369,    94,   614,    94,   112,   746,    94,   615,   616,   617,
+     618,   619,   620,   621,   622,   623,   624,   625,   626,   627,
+     628,    64,    66,   762,   106,   107,   108,   109,   763,   244,
+     762,   113,   794,   801,   324,   764,   674,   795,   802,    94,
+     113,   163,   805,   164,   570,   571,   572,   806,   706,   114,
+     115,   165,   166,   167,   168,   169,   170,   328,   114,   115,
+     686,   687,   688,   689,   690,   691,   171,   172,   329,    95,
+     113,   436,   970,   221,   173,   971,   807,   222,   223,   224,
+     225,   226,   227,   204,   205,   206,   207,   208,   114,   115,
+     244,   266,   245,   246,   267,   268,   382,   933,   420,   156,
+     330,   930,   934,   938,   385,   171,   392,   114,   115,   947,
+     175,   948,   174,   954,   987,   196,   331,   332,   955,   988,
+     338,   161,   209,   344,   176,   401,   177,   178,   345,   939,
+     940,   941,   228,   346,   190,   441,   442,   202,   920,   921,
+     922,   923,   250,    94,   212,   347,    94,   269,   348,   162,
+     362,   197,   271,   368,   230,    94,   376,   272,   210,   580,
+     581,   582,   191,   377,   264,   203,   305,   443,   388,   282,
+     390,   391,   213,   402,   453,   406,   188,   403,   410,   198,
+     411,   412,   231,   414,   415,    94,   211,   417,   306,   416,
+     422,   425,   265,   427,   428,   431,   229,   283,   106,   107,
+     108,   109,   432,   111,    94,   113,   244,   114,   115,   433,
+     270,   444,   445,   446,   447,   448,   307,   450,   451,   452,
+     454,   455,   456,   114,   115,   457,   166,   167,   458,   169,
+     170,   459,   460,   461,   462,   463,   464,   465,   466,   467,
+     171,   468,   469,   470,   471,   472,   473,   475,   173,   476,
+     478,   479,   541,   542,   543,   480,   481,   291,   292,   293,
      294,   295,   296,   297,   298,   299,   300,   301,   302,   303,
-     304,   486,   487,   488,   156,   625,   625,   490,   492,   493,
-     494,   495,   496,   498,   499,   500,   501,   502,   503,   504,
-     697,   710,   305,   506,   507,   509,   161,   508,   510,   511,
-     514,   512,   518,   519,    94,   515,   516,   522,   523,   521,
-     524,   525,   699,   711,   306,   526,   527,   528,   529,   533,
-      94,   530,   534,   536,   162,   594,   538,   539,   540,   547,
-     531,   532,   544,   545,   546,   548,   549,   552,   633,   633,
-     700,   712,   307,    32,   610,     1,     2,     3,     4,     5,
-       6,     7,     8,     9,    10,    11,    12,    13,    14,   553,
-     554,   555,   556,   557,   558,   567,   550,   559,   560,   561,
-     562,   563,   565,   566,   575,   568,   569,   576,   574,   577,
-     609,   641,   601,   645,   649,   653,   671,   674,   719,   578,
-     723,   579,   727,   731,   583,   733,   743,   584,   744,   745,
-     585,   586,   587,   588,   746,   589,   590,   591,   592,   593,
-     595,   596,   597,   747,   608,   755,   754,   757,   758,   760,
-     761,   764,   763,   796,   775,   767,   774,   776,   777,   778,
-     779,   780,   781,   786,   787,   788,   801,   663,   800,   804,
-     803,   806,   807,   818,   813,   809,   814,   815,   816,   820,
-     822,   817,   823,   873,   819,   821,   866,   874,   879,   867,
-     868,   880,   869,   870,   871,   882,   875,   883,   915,   890,
-     876,   877,   921,   948,   916,   920,   909,   936,   933,   941,
-     625,   175,   910,   174,   943,   911,   250,   912,   913,   269,
-     832,   927,   831,   928,   271,   176,   929,   177,   178,   272,
-     853,   930,   934,   286,   833,   190,   834,   835,   264,   945,
-     950,   282,   968,   969,   846,   970,   973,   611,   944,   697,
-     474,   974,   856,   710,   947,   949,   613,   975,   840,   196,
-     449,   640,   209,   191,   824,   228,   265,   850,   976,   283,
-     894,   699,   847,   633,   978,   711,   477,   188,   865,   851,
-     857,   202,   270,   520,   212,   836,   845,   230,   864,   872,
-     826,   825,   896,   854,   855,   197,   849,   489,   210,   700,
-     940,   242,   828,   712,   827,   829,   830,   517,   491,   203,
-     885,   884,   213,   889,   497,   231,   942,   887,   513,   886,
-     897,   888,   863,   198,   881,   717,   211,   505,   878,   229,
-     612,   903,   946,   895,   966,   977,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   535,     0,
+     304,   482,   484,   483,   156,   629,   629,   485,   486,   487,
+     488,   490,   492,   493,   494,   495,   496,   498,   499,   500,
+     705,   718,   305,   501,   502,   503,   161,   504,   506,   507,
+     508,   509,   510,   511,    94,   512,   514,   518,   515,   519,
+     516,   521,   707,   719,   306,   522,   523,   525,   524,   526,
+      94,   528,   529,   527,   162,   594,   533,   534,   530,   536,
+     538,   539,   751,   531,   540,   532,   544,   545,   637,   637,
+     708,   720,   307,   546,   610,     1,     2,     3,     4,     5,
+       6,     7,     8,     9,    10,    11,    12,    13,    14,   547,
+     548,   549,   752,   552,    32,   553,   554,   555,   556,   557,
+     558,   550,   739,   559,   560,   561,   562,   563,   565,   566,
+     567,   575,   568,   569,   576,   609,   649,   753,   653,   657,
+     601,   661,   679,   574,   682,   727,   731,   577,   735,   741,
+     754,   578,   579,   755,   758,   583,   584,   585,   759,   760,
+     586,   587,   588,   589,   590,   591,   592,   593,   595,   596,
+     597,   761,   608,   767,   766,   769,   770,   772,   773,   776,
+     775,   830,   787,   779,   786,   788,   789,   790,   791,   792,
+     793,   798,   799,   800,   808,   813,   812,   815,   816,   818,
+     819,   899,   821,   825,   826,   827,   828,   834,   829,   831,
+     835,   889,   890,   895,   832,   833,   836,   837,   838,   896,
+     898,   906,   937,   882,   839,   952,   931,   883,   884,   885,
+     932,   936,   949,   957,   959,   961,   671,   964,   984,   886,
+     887,   891,   629,   175,   925,   174,   892,   893,   250,   926,
+     927,   269,   848,   928,   847,   929,   271,   176,   943,   177,
+     178,   272,   869,   966,   985,   286,   849,   190,   850,   851,
+     264,   986,   989,   282,   449,   613,   862,   944,   945,   648,
+     840,   705,   946,   611,   872,   718,   960,   866,   867,   842,
+     856,   196,   474,   950,   209,   191,   881,   228,   265,   880,
+     963,   283,   910,   707,   863,   637,   991,   719,   965,   188,
+     992,   477,   873,   202,   270,   994,   212,   852,   861,   230,
+     990,   888,   841,   520,   912,   870,   871,   197,   489,   865,
+     210,   708,   956,   844,   242,   720,   843,   846,   513,   901,
+     845,   203,   900,   497,   213,   903,   902,   231,   879,   517,
+     904,   491,   913,   905,   958,   198,   505,   897,   211,   894,
+     725,   229,   612,   919,   962,   911,   982,   993,     0,   535,
        0,     0,     0,     0,     0,     0,     0,   537,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   832,     0,   831,     0,     0,
-       0,   853,     0,     0,     0,     0,     0,     0,     0,   833,
-       0,   834,   835,     0,     0,     0,     0,     0,   894,   846,
-       0,     0,     0,   856,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   840,     0,     0,     0,     0,     0,     0,
-     896,     0,     0,     0,     0,     0,     0,   847,     0,     0,
-       0,   857,     0,     0,     0,     0,     0,     0,     0,     0,
-     836,   845,     0,     0,   854,   855,     0,     0,   897,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   895
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   848,     0,   847,     0,     0,     0,   869,     0,     0,
+       0,     0,     0,     0,     0,   849,     0,   850,   851,     0,
+       0,     0,     0,     0,   910,   862,     0,     0,     0,   872,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   856,
+       0,     0,     0,     0,     0,     0,   912,     0,     0,     0,
+       0,     0,     0,   863,     0,     0,     0,   873,     0,     0,
+       0,     0,     0,     0,     0,     0,   852,   861,     0,     0,
+     870,   871,     0,     0,   913,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   911
   };
 
   const short int
   Dhcp6Parser::yycheck_[] =
   {
       70,    73,    72,    73,    74,    75,    76,   560,    78,    79,
-      80,    81,   556,   762,    79,    73,   762,    73,    73,    79,
-     762,   762,    16,   762,    72,    73,    74,    75,    76,   762,
-      78,    79,     5,    81,     7,    77,     9,     3,    84,    85,
-      74,    75,     8,     3,    12,    13,    10,     3,     8,     7,
-       6,     0,    72,    73,    74,    75,    76,     3,    78,    79,
-      11,    81,     8,    14,    15,   153,     3,    73,    74,    75,
-      76,     8,    79,     6,     3,    38,    39,   120,   121,     8,
-      31,    32,    33,    34,    35,    36,    37,    38,    56,    57,
-      16,    84,    85,    56,    57,    21,    22,    23,    24,    25,
-      26,    27,    28,    29,    30,    56,    57,   153,    16,    72,
-      38,   153,    16,    39,    56,    57,    67,    68,    69,    70,
-      71,    25,     7,    51,    52,    53,    54,    55,    56,    57,
-       7,    39,    83,    41,    42,    86,     3,    45,    46,    47,
-      37,     8,    93,    77,    78,    73,    80,     7,    56,    57,
-     101,   102,    56,    57,   105,    87,    88,    89,    90,    91,
-      92,   103,   104,   127,     3,     3,     7,     7,   917,     8,
-       8,   917,   136,   137,   138,   917,   917,     7,   917,    38,
-     153,   154,   155,   156,   917,   153,     3,     7,    38,   153,
-     153,     8,    39,    97,    98,    99,   100,    56,    57,    49,
-     130,     7,   153,   133,   134,   135,    56,    57,     3,    56,
-      57,   153,    71,     8,     7,     7,    75,    76,    77,    78,
-      79,    80,     7,    73,   768,   153,     3,   153,     7,     6,
-       3,    31,    32,    33,    34,     8,   789,   128,    38,   123,
-     124,   125,   126,     3,     3,   153,     3,     3,    48,   153,
-      50,     8,     8,    64,    65,    66,    56,    57,    58,    59,
-      60,    61,    62,    63,     3,     3,     3,     6,     4,   339,
-       8,     8,   156,    73,    74,    39,    40,    41,    42,    43,
-      44,    81,   129,     3,   131,   132,     3,     8,     8,     4,
-       3,     8,    56,    57,   153,     8,     3,     3,     8,   369,
-       3,     8,     8,   153,     3,     8,   153,     4,     3,     8,
-     382,     3,   382,     8,     3,   385,     8,     3,     3,     8,
-       6,   369,   392,     4,   382,     3,   382,   382,     6,    94,
-      95,    96,   402,     4,   382,   329,   330,   385,    17,    18,
-      19,    20,   412,     4,   392,     4,     4,   417,     4,   369,
-       4,   385,   417,   153,   402,     8,     4,   417,   392,   498,
-     499,   500,   382,     4,   412,   385,   436,     4,     4,   417,
-       4,     3,   392,     4,   154,     4,   382,     4,     8,   385,
-       8,     3,   402,     4,     4,     4,   392,     4,   436,   153,
-       4,     4,   412,     4,     4,   153,   402,   417,    31,    32,
-      33,    34,     4,    36,     4,    38,    39,    56,    57,     4,
-     417,     4,     4,     4,     4,     4,   436,     4,     4,   154,
-     154,   154,   154,    56,    57,     4,    59,    60,     4,    62,
-      63,     4,     4,     4,     4,     4,     4,     4,     4,     4,
-      73,     4,   154,     4,     4,   156,     4,     4,    81,     4,
-       4,   156,   446,   447,   448,     4,   154,   106,   107,   108,
-     109,   110,   111,   112,   113,   114,   115,   116,   117,   118,
-     119,     4,     4,     4,   544,   545,   546,     4,     4,   154,
-       4,   154,   154,     4,     4,     4,     4,     4,     4,     4,
-     560,   561,   562,     4,     4,     4,   544,   154,     4,     4,
-       4,   156,     4,     4,   153,   156,   156,     4,     4,   156,
-     154,     4,   560,   561,   562,   154,   154,     4,     4,     4,
-     153,   156,     4,     4,   544,   519,     4,     7,     7,     5,
-     156,   156,     7,     7,     7,     5,     5,   153,   545,   546,
-     560,   561,   562,     7,   538,   139,   140,   141,   142,   143,
-     144,   145,   146,   147,   148,   149,   150,   151,   152,     5,
-       5,     5,     5,     5,     5,   153,   461,     7,     7,     7,
-       7,     5,     5,     5,     5,   153,   153,     7,   153,   153,
-       5,     7,   122,     7,     7,     7,     7,     7,     7,   153,
-       7,   153,     7,    82,   153,     7,     4,   153,     4,     4,
-     153,   153,   153,   153,     4,   153,   153,   153,   153,   153,
-     153,   153,   153,     4,   153,     3,     6,     6,     3,     6,
-       3,     3,     6,   153,     3,     6,     6,     4,     4,     4,
-       4,     4,     4,     4,     4,     4,     3,   555,     6,     3,
-       6,     6,     3,   156,     4,     8,     4,     4,     4,   156,
-       4,   154,     4,     4,   154,   154,   154,     4,     4,   154,
-     154,     4,   154,   154,   154,     6,   154,     3,     8,     4,
-     154,   154,     3,     5,     8,     8,   153,     4,     8,     4,
-     750,   753,   153,   753,     4,   153,   756,   153,   153,   759,
-     762,   153,   762,   153,   759,   753,   153,   753,   753,   759,
-     770,   153,   153,   773,   762,   753,   762,   762,   756,     4,
-       7,   759,     4,     4,   762,     4,     4,   539,   154,   789,
-     365,   156,   770,   793,   153,   153,   544,   154,   762,   799,
-     339,   546,   802,   753,   750,   805,   756,   765,   154,   759,
-     810,   789,   762,   750,   153,   793,   369,   753,   775,   768,
-     770,   799,   759,   420,   802,   762,   762,   805,   773,   782,
-     755,   753,   810,   770,   770,   799,   764,   382,   802,   789,
-     917,    77,   758,   793,   756,   759,   761,   417,   385,   799,
-     801,   799,   802,   807,   392,   805,   921,   804,   412,   802,
-     810,   805,   771,   799,   793,   562,   802,   402,   789,   805,
-     540,   811,   938,   810,   954,   971,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   436,    -1,
+      80,    81,   556,   774,    79,    73,   774,    73,    73,    79,
+     774,   774,    16,   774,    72,    73,    74,    75,    76,   774,
+      78,    79,     5,    81,     7,    81,     9,     3,    88,    89,
+      74,    75,     8,     0,    12,    13,    10,    42,    43,     7,
+      88,    89,    72,    73,    74,    75,    76,     7,    78,    79,
+      11,    81,    16,    14,    15,    60,    61,    73,    74,    75,
+      76,    25,    79,     3,     3,     3,     6,     3,    43,     8,
+       8,    76,     8,    42,    35,    36,    37,    38,    39,    40,
+      41,    42,    60,    61,    53,    60,    61,     3,    16,     7,
+       6,    60,    61,     3,    60,    61,    60,    61,     8,    60,
+      61,   157,   127,   128,   129,   130,   124,   125,    77,   157,
+      71,    72,    73,    74,    75,    43,     7,    45,    46,     3,
+       3,    49,    50,    51,     8,     8,    87,    81,    82,    90,
+      84,     3,    60,    61,     6,   160,    97,   101,   102,   103,
+     104,   107,   108,     7,   105,   106,   134,     7,   109,   137,
+     138,   139,   157,     3,     3,     7,     6,   131,   133,     8,
+     135,   136,   933,     7,     7,   933,   140,   141,   142,   933,
+     933,     7,   933,   157,   157,   158,   159,   160,   933,   157,
+       3,     3,   157,   157,     3,     8,     8,     7,   157,     8,
+       3,   157,    16,   157,    41,     8,   157,    21,    22,    23,
+      24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
+      34,     7,     7,     3,    35,    36,    37,    38,     8,    43,
+       3,    42,     3,     3,   132,     8,   780,     8,     8,   157,
+      42,    52,     3,    54,    68,    69,    70,     8,   801,    60,
+      61,    62,    63,    64,    65,    66,    67,     6,    60,    61,
+      91,    92,    93,    94,    95,    96,    77,    78,     3,   339,
+      42,     3,     3,    75,    85,     6,     8,    79,    80,    81,
+      82,    83,    84,    55,    56,    57,    58,    59,    60,    61,
+      43,    44,    45,    46,    47,    48,     3,     3,     3,   369,
+       4,     8,     8,     8,     3,    77,     3,    60,    61,     8,
+     382,     8,   382,     3,     3,   385,     8,     3,     8,     8,
+       4,   369,   392,     4,   382,     8,   382,   382,     4,    98,
+      99,   100,   402,     4,   382,   329,   330,   385,    17,    18,
+      19,    20,   412,   157,   392,     4,   157,   417,     4,   369,
+       4,   385,   417,     4,   402,   157,     4,   417,   392,   498,
+     499,   500,   382,     4,   412,   385,   436,   157,     4,   417,
+       4,     4,   392,     3,   158,     4,   382,     8,     4,   385,
+       8,     3,   402,     4,     4,   157,   392,     3,   436,     8,
+       4,     4,   412,     4,     4,     4,   402,   417,    35,    36,
+      37,    38,     4,    40,   157,    42,    43,    60,    61,     4,
+     417,     4,     4,     4,     4,     4,   436,     4,     4,     4,
+     158,   158,   158,    60,    61,   158,    63,    64,     4,    66,
+      67,     4,     4,     4,     4,     4,     4,     4,     4,     4,
+      77,     4,     4,     4,   158,     4,     4,     4,    85,   160,
+       4,     4,   446,   447,   448,     4,     4,   110,   111,   112,
+     113,   114,   115,   116,   117,   118,   119,   120,   121,   122,
+     123,     4,   160,   158,   544,   545,   546,     4,     4,     4,
+       4,     4,     4,   158,     4,   158,   158,     4,     4,     4,
+     560,   561,   562,     4,     4,     4,   544,     4,     4,     4,
+     158,     4,     4,     4,   157,   160,     4,     4,   160,     4,
+     160,   160,   560,   561,   562,     4,     4,     4,   158,   158,
+     157,     4,     4,   158,   544,   519,     4,     4,   160,     4,
+       4,     7,     4,   160,     7,   160,     7,     7,   545,   546,
+     560,   561,   562,     7,   538,   143,   144,   145,   146,   147,
+     148,   149,   150,   151,   152,   153,   154,   155,   156,     5,
+       5,     5,     4,   157,     7,     5,     5,     5,     5,     5,
+       5,   461,    86,     7,     7,     7,     7,     5,     5,     5,
+     157,     5,   157,   157,     7,     5,     7,     4,     7,     7,
+     126,     7,     7,   157,     7,     7,     7,   157,     7,     7,
+       4,   157,   157,     4,     4,   157,   157,   157,     4,     4,
+     157,   157,   157,   157,   157,   157,   157,   157,   157,   157,
+     157,     4,   157,     3,     6,     6,     3,     6,     3,     3,
+       6,   160,     3,     6,     6,     4,     4,     4,     4,     4,
+       4,     4,     4,     4,   157,     3,     6,     6,     3,     6,
+       3,     3,     8,     4,     4,     4,     4,     4,   158,   158,
+       4,     4,     4,     4,   160,   158,   158,   158,   158,     4,
+       6,     4,     3,   158,   160,     4,     8,   158,   158,   158,
+       8,     8,     8,     4,     4,     4,   555,     5,     4,   158,
+     158,   158,   762,   765,   157,   765,   158,   158,   768,   157,
+     157,   771,   774,   157,   774,   157,   771,   765,   157,   765,
+     765,   771,   782,     7,     4,   785,   774,   765,   774,   774,
+     768,     4,     4,   771,   339,   544,   774,   157,   157,   546,
+     762,   801,   157,   539,   782,   805,   158,   777,   780,   767,
+     774,   811,   365,   157,   814,   765,   787,   817,   768,   785,
+     157,   771,   822,   801,   774,   762,   158,   805,   157,   765,
+     158,   369,   782,   811,   771,   157,   814,   774,   774,   817,
+     160,   794,   765,   420,   822,   782,   782,   811,   382,   776,
+     814,   801,   933,   770,    77,   805,   768,   773,   412,   813,
+     771,   811,   811,   392,   814,   816,   814,   817,   783,   417,
+     817,   385,   822,   819,   937,   811,   402,   805,   814,   801,
+     562,   817,   540,   823,   954,   822,   970,   987,    -1,   436,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,   439,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   917,    -1,   917,    -1,    -1,
-      -1,   921,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   917,
-      -1,   917,   917,    -1,    -1,    -1,    -1,    -1,   938,   917,
-      -1,    -1,    -1,   921,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   917,    -1,    -1,    -1,    -1,    -1,    -1,
-     938,    -1,    -1,    -1,    -1,    -1,    -1,   917,    -1,    -1,
-      -1,   921,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     917,   917,    -1,    -1,   921,   921,    -1,    -1,   938,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   938
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   933,    -1,   933,    -1,    -1,    -1,   937,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   933,    -1,   933,   933,    -1,
+      -1,    -1,    -1,    -1,   954,   933,    -1,    -1,    -1,   937,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   933,
+      -1,    -1,    -1,    -1,    -1,    -1,   954,    -1,    -1,    -1,
+      -1,    -1,    -1,   933,    -1,    -1,    -1,   937,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   933,   933,    -1,    -1,
+     937,   937,    -1,    -1,   954,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   954
   };
 
   const unsigned short int
   Dhcp6Parser::yystos_[] =
   {
-       0,   139,   140,   141,   142,   143,   144,   145,   146,   147,
-     148,   149,   150,   151,   152,   158,   159,   160,   161,   162,
-     163,   164,   165,   166,   167,   168,   169,   170,   171,   172,
-       0,     5,     7,     9,   153,   154,   155,   156,   173,   174,
-     175,   180,     7,   189,     7,   195,     7,   206,     7,   283,
-       7,   358,     7,   374,     7,   391,     7,   310,     7,   316,
-       7,   340,     7,   259,     7,   448,     7,   483,   181,   176,
-     190,   196,   207,   284,   359,   375,   392,   311,   317,   341,
-     260,   449,   484,   173,   182,   183,   153,   178,   179,    10,
-     127,   136,   137,   138,   153,   188,   191,   192,   193,   475,
-     477,   479,   481,    11,    14,    15,    31,    32,    33,    34,
-      35,    36,    37,    38,    56,    57,    67,    68,    69,    70,
-      71,    83,    86,    93,   101,   102,   105,   188,   197,   198,
-     199,   200,   201,   202,   203,   204,   213,   215,   239,   245,
-     251,   253,   267,   277,   300,   308,   334,   364,   366,   414,
-     425,   437,   438,   446,    12,    13,   188,   208,   209,   210,
-     212,   364,   366,    48,    50,    58,    59,    60,    61,    62,
-      63,    73,    74,    81,   188,   199,   200,   201,   202,   285,
-     286,   287,   289,   291,   293,   295,   298,   299,   334,   352,
-     364,   366,   368,   385,   410,    49,   188,   293,   334,   360,
-     361,   362,   364,   366,    51,    52,    53,    54,    55,   188,
-     293,   334,   364,   366,   376,   377,   378,   380,   381,   383,
-     384,    71,    75,    76,    77,    78,    79,    80,   188,   334,
-     364,   366,   393,   394,   395,   396,   398,   400,   402,   404,
-     406,   408,   308,    16,    39,    41,    42,    45,    46,    47,
-     188,   229,   318,   319,   320,   321,   322,   323,   324,   326,
-     328,   330,   331,   333,   364,   366,    40,    43,    44,   188,
-     229,   322,   328,   342,   343,   344,   345,   346,   348,   349,
-     350,   351,   364,   366,    84,    85,   188,   261,   262,   263,
-     265,   106,   107,   108,   109,   110,   111,   112,   113,   114,
-     115,   116,   117,   118,   119,   188,   364,   366,   450,   451,
-     452,   453,   455,   457,   458,   460,   461,   462,   465,   467,
-     468,   469,   470,   473,   128,   485,   486,   487,     6,     3,
-       4,     8,     3,   194,   482,   476,   478,   480,     4,     3,
-       8,   205,   214,   216,     4,     4,     4,     4,     4,   278,
-     309,   335,   365,   367,   301,   240,   252,   246,   415,   254,
-     268,   426,     4,   439,   447,     3,     8,   211,     4,     3,
-       8,   353,   369,   288,   290,   292,     4,     4,   296,   294,
-     386,   411,     3,     8,   363,     3,     8,   379,     4,   382,
-       4,     4,     3,     8,   409,   397,   399,   401,   403,   405,
-     407,     8,     3,     8,   325,   230,     4,   329,   327,   332,
-       4,     8,     3,   347,     4,     4,     8,     3,   264,   266,
-       3,     8,     4,   454,   456,     4,   459,     4,     4,   463,
-     466,     4,     4,     4,   471,   474,     3,     8,   488,     3,
-       8,   173,   173,   153,     4,     4,     4,     4,     4,   192,
-       4,     4,     4,   154,   154,   154,   154,   154,     4,     4,
+       0,   143,   144,   145,   146,   147,   148,   149,   150,   151,
+     152,   153,   154,   155,   156,   162,   163,   164,   165,   166,
+     167,   168,   169,   170,   171,   172,   173,   174,   175,   176,
+       0,     5,     7,     9,   157,   158,   159,   160,   177,   178,
+     179,   184,     7,   193,     7,   199,     7,   210,     7,   291,
+       7,   366,     7,   382,     7,   399,     7,   318,     7,   324,
+       7,   348,     7,   267,     7,   456,     7,   491,   185,   180,
+     194,   200,   211,   292,   367,   383,   400,   319,   325,   349,
+     268,   457,   492,   177,   186,   187,   157,   182,   183,    10,
+     131,   140,   141,   142,   157,   192,   195,   196,   197,   483,
+     485,   487,   489,    11,    14,    15,    35,    36,    37,    38,
+      39,    40,    41,    42,    60,    61,    71,    72,    73,    74,
+      75,    87,    90,    97,   105,   106,   109,   192,   201,   202,
+     203,   204,   205,   206,   207,   208,   217,   219,   247,   253,
+     259,   261,   275,   285,   308,   316,   342,   372,   374,   422,
+     433,   445,   446,   454,    12,    13,   192,   212,   213,   214,
+     216,   372,   374,    52,    54,    62,    63,    64,    65,    66,
+      67,    77,    78,    85,   192,   203,   204,   205,   206,   293,
+     294,   295,   297,   299,   301,   303,   306,   307,   342,   360,
+     372,   374,   376,   393,   418,    53,   192,   301,   342,   368,
+     369,   370,   372,   374,    55,    56,    57,    58,    59,   192,
+     301,   342,   372,   374,   384,   385,   386,   388,   389,   391,
+     392,    75,    79,    80,    81,    82,    83,    84,   192,   342,
+     372,   374,   401,   402,   403,   404,   406,   408,   410,   412,
+     414,   416,   316,    16,    43,    45,    46,    49,    50,    51,
+     192,   233,   326,   327,   328,   329,   330,   331,   332,   334,
+     336,   338,   339,   341,   372,   374,    44,    47,    48,   192,
+     233,   330,   336,   350,   351,   352,   353,   354,   356,   357,
+     358,   359,   372,   374,    88,    89,   192,   269,   270,   271,
+     273,   110,   111,   112,   113,   114,   115,   116,   117,   118,
+     119,   120,   121,   122,   123,   192,   372,   374,   458,   459,
+     460,   461,   463,   465,   466,   468,   469,   470,   473,   475,
+     476,   477,   478,   481,   132,   493,   494,   495,     6,     3,
+       4,     8,     3,   198,   490,   484,   486,   488,     4,     3,
+       8,   209,   218,   220,     4,     4,     4,     4,     4,   286,
+     317,   343,   373,   375,   309,   248,   260,   254,   423,   262,
+     276,   434,     4,   447,   455,     3,     8,   215,     4,     3,
+       8,   361,   377,   296,   298,   300,     4,     4,   304,   302,
+     394,   419,     3,     8,   371,     3,     8,   387,     4,   390,
+       4,     4,     3,     8,   417,   405,   407,   409,   411,   413,
+     415,     8,     3,     8,   333,   234,     4,   337,   335,   340,
+       4,     8,     3,   355,     4,     4,     8,     3,   272,   274,
+       3,     8,     4,   462,   464,     4,   467,     4,     4,   471,
+     474,     4,     4,     4,   479,   482,     3,     8,   496,     3,
+       8,   177,   177,   157,     4,     4,     4,     4,     4,   196,
+       4,     4,     4,   158,   158,   158,   158,   158,     4,     4,
        4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
-       4,   154,     4,     4,   198,     4,   156,   209,     4,     4,
-       4,     4,     4,   154,   156,     4,     4,     4,     4,   286,
-       4,   361,     4,   154,     4,   154,   154,   377,     4,     4,
-       4,     4,     4,     4,     4,   395,     4,     4,   154,     4,
-       4,     4,   156,   320,     4,   156,   156,   344,     4,     4,
-     262,   156,     4,     4,   154,     4,   154,   154,     4,     4,
-     156,   156,   156,     4,     4,   451,     4,   486,     4,     7,
-       7,   173,   173,   173,     7,     7,     7,     5,     5,     5,
-     175,   177,   153,     5,     5,     5,     5,     5,     5,     7,
-       7,     7,     7,     5,   184,     5,     5,   153,   153,   153,
-      64,    65,    66,   297,   153,     5,     7,   153,   153,   153,
-     184,   184,   184,   153,   153,   153,   153,   153,   153,   153,
-     153,   153,   153,   153,   173,   153,   153,   153,   120,   121,
-     464,   122,   123,   124,   125,   126,   156,   472,   153,     5,
-     173,   197,   485,   208,    16,    21,    22,    23,    24,    25,
-      26,    27,    28,    29,    30,   188,   217,   218,   219,   222,
-     224,   226,   228,   229,   231,   232,   233,   234,   235,   237,
-     217,     7,   279,   280,   281,     7,   312,   313,   314,     7,
-     336,   337,   338,     7,   302,   303,   304,    77,   153,   241,
-     242,   243,   244,   182,    78,    80,   243,   247,   248,   249,
-     250,     7,   416,   417,     7,   255,   256,   257,    87,    88,
-      89,    90,    91,    92,   269,   270,   271,   272,   273,   274,
-     275,   276,    16,    97,    98,    99,   100,   188,   231,   364,
-     366,   427,   428,   429,   432,   433,   435,   436,   103,   104,
-     188,   364,   366,   440,   441,   442,   444,   450,   185,     7,
-     354,   355,   356,     7,   370,   371,   372,     7,   387,   388,
-     389,    82,   412,     7,   489,   490,     8,     8,     8,   220,
-     223,   225,   227,     4,     4,     4,     4,     4,   236,   238,
-       3,     8,     8,   282,     6,     3,   315,     6,     3,   339,
-       6,     3,   305,     6,     3,     3,     6,     6,     3,     6,
-     418,     3,     6,   258,     6,     3,     4,     4,     4,     4,
-       4,     4,     3,     8,   430,   434,     4,     4,     4,     3,
-       8,   443,   445,     3,     8,     8,   153,   186,   187,   357,
-       6,     3,   373,     6,     3,   390,     6,     3,   413,     8,
-     491,     3,     6,     4,     4,     4,     4,   154,   156,   154,
-     156,   154,     4,     4,   218,   285,   281,   318,   314,   342,
-     338,   188,   199,   200,   201,   202,   229,   277,   289,   291,
-     293,   295,   299,   306,   307,   334,   364,   366,   410,   304,
-     242,   248,    72,   188,   229,   334,   364,   366,   419,   420,
-     421,   422,   423,   417,   261,   257,   154,   154,   154,   154,
-     154,   154,   270,     4,     4,   154,   154,   154,   428,     4,
-       4,   441,     6,     3,   360,   356,   376,   372,   393,   389,
-       4,   129,   131,   132,   188,   229,   364,   366,   492,   493,
-     494,   495,   497,   490,    17,    18,    19,    20,   221,   153,
-     153,   153,   153,   153,     8,     8,     8,     3,     8,   424,
-       8,     3,     8,    94,    95,    96,   431,   153,   153,   153,
-     153,     8,     8,     8,   153,   498,     4,   496,     3,     8,
-     307,     4,   421,     4,   154,     4,   493,   153,     5,   153,
-       7,   499,   500,   501,     3,     6,   130,   133,   134,   135,
-     502,   503,   504,   506,   507,   508,   500,   505,     4,     4,
-       4,     3,     8,     4,   156,   154,   154,   503,   153
+       4,   158,     4,     4,   202,     4,   160,   213,     4,     4,
+       4,     4,     4,   158,   160,     4,     4,     4,     4,   294,
+       4,   369,     4,   158,     4,   158,   158,   385,     4,     4,
+       4,     4,     4,     4,     4,   403,     4,     4,   158,     4,
+       4,     4,   160,   328,     4,   160,   160,   352,     4,     4,
+     270,   160,     4,     4,   158,     4,   158,   158,     4,     4,
+     160,   160,   160,     4,     4,   459,     4,   494,     4,     7,
+       7,   177,   177,   177,     7,     7,     7,     5,     5,     5,
+     179,   181,   157,     5,     5,     5,     5,     5,     5,     7,
+       7,     7,     7,     5,   188,     5,     5,   157,   157,   157,
+      68,    69,    70,   305,   157,     5,     7,   157,   157,   157,
+     188,   188,   188,   157,   157,   157,   157,   157,   157,   157,
+     157,   157,   157,   157,   177,   157,   157,   157,   124,   125,
+     472,   126,   127,   128,   129,   130,   160,   480,   157,     5,
+     177,   201,   493,   212,    16,    21,    22,    23,    24,    25,
+      26,    27,    28,    29,    30,    31,    32,    33,    34,   192,
+     221,   222,   223,   226,   228,   230,   232,   233,   235,   236,
+     237,   238,   239,   240,   241,   242,   243,   245,   221,     7,
+     287,   288,   289,     7,   320,   321,   322,     7,   344,   345,
+     346,     7,   310,   311,   312,    81,   157,   249,   250,   251,
+     252,   186,    82,    84,   251,   255,   256,   257,   258,     7,
+     424,   425,     7,   263,   264,   265,    91,    92,    93,    94,
+      95,    96,   277,   278,   279,   280,   281,   282,   283,   284,
+      16,   101,   102,   103,   104,   192,   235,   372,   374,   435,
+     436,   437,   440,   441,   443,   444,   107,   108,   192,   372,
+     374,   448,   449,   450,   452,   458,   189,     7,   362,   363,
+     364,     7,   378,   379,   380,     7,   395,   396,   397,    86,
+     420,     7,   497,   498,     8,     8,     8,   224,   227,   229,
+     231,     4,     4,     4,     4,     4,   244,   246,     4,     4,
+       4,     4,     3,     8,     8,   290,     6,     3,   323,     6,
+       3,   347,     6,     3,   313,     6,     3,     3,     6,     6,
+       3,     6,   426,     3,     6,   266,     6,     3,     4,     4,
+       4,     4,     4,     4,     3,     8,   438,   442,     4,     4,
+       4,     3,     8,   451,   453,     3,     8,     8,   157,   190,
+     191,   365,     6,     3,   381,     6,     3,   398,     6,     3,
+     421,     8,   499,     3,     6,     4,     4,     4,     4,   158,
+     160,   158,   160,   158,     4,     4,   158,   158,   158,   160,
+     222,   293,   289,   326,   322,   350,   346,   192,   203,   204,
+     205,   206,   233,   285,   297,   299,   301,   303,   307,   314,
+     315,   342,   372,   374,   418,   312,   250,   256,    76,   192,
+     233,   342,   372,   374,   427,   428,   429,   430,   431,   425,
+     269,   265,   158,   158,   158,   158,   158,   158,   278,     4,
+       4,   158,   158,   158,   436,     4,     4,   449,     6,     3,
+     368,   364,   384,   380,   401,   397,     4,   133,   135,   136,
+     192,   233,   372,   374,   500,   501,   502,   503,   505,   498,
+      17,    18,    19,    20,   225,   157,   157,   157,   157,   157,
+       8,     8,     8,     3,     8,   432,     8,     3,     8,    98,
+      99,   100,   439,   157,   157,   157,   157,     8,     8,     8,
+     157,   506,     4,   504,     3,     8,   315,     4,   429,     4,
+     158,     4,   501,   157,     5,   157,     7,   507,   508,   509,
+       3,     6,   134,   137,   138,   139,   510,   511,   512,   514,
+     515,   516,   508,   513,     4,     4,     4,     3,     8,     4,
+     160,   158,   158,   511,   157
   };
 
   const unsigned short int
   Dhcp6Parser::yyr1_[] =
   {
-       0,   157,   159,   158,   160,   158,   161,   158,   162,   158,
-     163,   158,   164,   158,   165,   158,   166,   158,   167,   158,
-     168,   158,   169,   158,   170,   158,   171,   158,   172,   158,
-     173,   173,   173,   173,   173,   173,   173,   174,   176,   175,
-     177,   178,   178,   179,   179,   181,   180,   182,   182,   183,
-     183,   185,   184,   186,   186,   187,   187,   188,   190,   189,
-     191,   191,   192,   192,   192,   192,   192,   192,   194,   193,
-     196,   195,   197,   197,   198,   198,   198,   198,   198,   198,
-     198,   198,   198,   198,   198,   198,   198,   198,   198,   198,
-     198,   198,   198,   198,   198,   198,   198,   198,   198,   199,
-     200,   201,   202,   203,   205,   204,   207,   206,   208,   208,
-     209,   209,   209,   209,   209,   211,   210,   212,   214,   213,
-     216,   215,   217,   217,   218,   218,   218,   218,   218,   218,
-     218,   218,   218,   218,   218,   218,   218,   220,   219,   221,
-     221,   221,   221,   223,   222,   225,   224,   227,   226,   228,
-     230,   229,   231,   232,   233,   234,   236,   235,   238,   237,
-     240,   239,   241,   241,   242,   242,   243,   244,   246,   245,
-     247,   247,   248,   248,   248,   249,   250,   252,   251,   254,
-     253,   255,   255,   256,   256,   258,   257,   260,   259,   261,
-     261,   261,   262,   262,   264,   263,   266,   265,   268,   267,
-     269,   269,   270,   270,   270,   270,   270,   270,   271,   272,
-     273,   274,   275,   276,   278,   277,   279,   279,   280,   280,
-     282,   281,   284,   283,   285,   285,   286,   286,   286,   286,
-     286,   286,   286,   286,   286,   286,   286,   286,   286,   286,
-     286,   286,   286,   286,   286,   288,   287,   290,   289,   292,
-     291,   294,   293,   296,   295,   297,   297,   297,   298,   299,
-     301,   300,   302,   302,   303,   303,   305,   304,   306,   306,
-     307,   307,   307,   307,   307,   307,   307,   307,   307,   307,
-     307,   307,   307,   307,   307,   307,   309,   308,   311,   310,
-     312,   312,   313,   313,   315,   314,   317,   316,   318,   318,
-     319,   319,   320,   320,   320,   320,   320,   320,   320,   320,
-     320,   320,   321,   322,   323,   325,   324,   327,   326,   329,
-     328,   330,   332,   331,   333,   335,   334,   336,   336,   337,
-     337,   339,   338,   341,   340,   342,   342,   343,   343,   344,
-     344,   344,   344,   344,   344,   344,   344,   344,   345,   347,
-     346,   348,   349,   350,   351,   353,   352,   354,   354,   355,
-     355,   357,   356,   359,   358,   360,   360,   361,   361,   361,
-     361,   361,   361,   363,   362,   365,   364,   367,   366,   369,
-     368,   370,   370,   371,   371,   373,   372,   375,   374,   376,
-     376,   377,   377,   377,   377,   377,   377,   377,   377,   377,
-     377,   379,   378,   380,   382,   381,   383,   384,   386,   385,
-     387,   387,   388,   388,   390,   389,   392,   391,   393,   393,
-     394,   394,   395,   395,   395,   395,   395,   395,   395,   395,
-     395,   395,   395,   397,   396,   399,   398,   401,   400,   403,
-     402,   405,   404,   407,   406,   409,   408,   411,   410,   413,
-     412,   415,   414,   416,   416,   418,   417,   419,   419,   420,
-     420,   421,   421,   421,   421,   421,   421,   422,   424,   423,
-     426,   425,   427,   427,   428,   428,   428,   428,   428,   428,
-     428,   428,   428,   430,   429,   431,   431,   431,   432,   434,
-     433,   435,   436,   437,   439,   438,   440,   440,   441,   441,
-     441,   441,   441,   443,   442,   445,   444,   447,   446,   449,
-     448,   450,   450,   451,   451,   451,   451,   451,   451,   451,
-     451,   451,   451,   451,   451,   451,   451,   451,   451,   451,
-     452,   454,   453,   456,   455,   457,   459,   458,   460,   461,
-     463,   462,   464,   464,   466,   465,   467,   468,   469,   471,
-     470,   472,   472,   472,   472,   472,   474,   473,   476,   475,
-     478,   477,   480,   479,   482,   481,   484,   483,   485,   485,
-     486,   488,   487,   489,   489,   491,   490,   492,   492,   493,
-     493,   493,   493,   493,   493,   493,   494,   496,   495,   498,
-     497,   499,   499,   501,   500,   502,   502,   503,   503,   503,
-     503,   505,   504,   506,   507,   508
+       0,   161,   163,   162,   164,   162,   165,   162,   166,   162,
+     167,   162,   168,   162,   169,   162,   170,   162,   171,   162,
+     172,   162,   173,   162,   174,   162,   175,   162,   176,   162,
+     177,   177,   177,   177,   177,   177,   177,   178,   180,   179,
+     181,   182,   182,   183,   183,   185,   184,   186,   186,   187,
+     187,   189,   188,   190,   190,   191,   191,   192,   194,   193,
+     195,   195,   196,   196,   196,   196,   196,   196,   198,   197,
+     200,   199,   201,   201,   202,   202,   202,   202,   202,   202,
+     202,   202,   202,   202,   202,   202,   202,   202,   202,   202,
+     202,   202,   202,   202,   202,   202,   202,   202,   202,   203,
+     204,   205,   206,   207,   209,   208,   211,   210,   212,   212,
+     213,   213,   213,   213,   213,   215,   214,   216,   218,   217,
+     220,   219,   221,   221,   222,   222,   222,   222,   222,   222,
+     222,   222,   222,   222,   222,   222,   222,   222,   222,   222,
+     222,   224,   223,   225,   225,   225,   225,   227,   226,   229,
+     228,   231,   230,   232,   234,   233,   235,   236,   237,   238,
+     239,   240,   241,   242,   244,   243,   246,   245,   248,   247,
+     249,   249,   250,   250,   251,   252,   254,   253,   255,   255,
+     256,   256,   256,   257,   258,   260,   259,   262,   261,   263,
+     263,   264,   264,   266,   265,   268,   267,   269,   269,   269,
+     270,   270,   272,   271,   274,   273,   276,   275,   277,   277,
+     278,   278,   278,   278,   278,   278,   279,   280,   281,   282,
+     283,   284,   286,   285,   287,   287,   288,   288,   290,   289,
+     292,   291,   293,   293,   294,   294,   294,   294,   294,   294,
+     294,   294,   294,   294,   294,   294,   294,   294,   294,   294,
+     294,   294,   294,   296,   295,   298,   297,   300,   299,   302,
+     301,   304,   303,   305,   305,   305,   306,   307,   309,   308,
+     310,   310,   311,   311,   313,   312,   314,   314,   315,   315,
+     315,   315,   315,   315,   315,   315,   315,   315,   315,   315,
+     315,   315,   315,   315,   317,   316,   319,   318,   320,   320,
+     321,   321,   323,   322,   325,   324,   326,   326,   327,   327,
+     328,   328,   328,   328,   328,   328,   328,   328,   328,   328,
+     329,   330,   331,   333,   332,   335,   334,   337,   336,   338,
+     340,   339,   341,   343,   342,   344,   344,   345,   345,   347,
+     346,   349,   348,   350,   350,   351,   351,   352,   352,   352,
+     352,   352,   352,   352,   352,   352,   353,   355,   354,   356,
+     357,   358,   359,   361,   360,   362,   362,   363,   363,   365,
+     364,   367,   366,   368,   368,   369,   369,   369,   369,   369,
+     369,   371,   370,   373,   372,   375,   374,   377,   376,   378,
+     378,   379,   379,   381,   380,   383,   382,   384,   384,   385,
+     385,   385,   385,   385,   385,   385,   385,   385,   385,   387,
+     386,   388,   390,   389,   391,   392,   394,   393,   395,   395,
+     396,   396,   398,   397,   400,   399,   401,   401,   402,   402,
+     403,   403,   403,   403,   403,   403,   403,   403,   403,   403,
+     403,   405,   404,   407,   406,   409,   408,   411,   410,   413,
+     412,   415,   414,   417,   416,   419,   418,   421,   420,   423,
+     422,   424,   424,   426,   425,   427,   427,   428,   428,   429,
+     429,   429,   429,   429,   429,   430,   432,   431,   434,   433,
+     435,   435,   436,   436,   436,   436,   436,   436,   436,   436,
+     436,   438,   437,   439,   439,   439,   440,   442,   441,   443,
+     444,   445,   447,   446,   448,   448,   449,   449,   449,   449,
+     449,   451,   450,   453,   452,   455,   454,   457,   456,   458,
+     458,   459,   459,   459,   459,   459,   459,   459,   459,   459,
+     459,   459,   459,   459,   459,   459,   459,   459,   460,   462,
+     461,   464,   463,   465,   467,   466,   468,   469,   471,   470,
+     472,   472,   474,   473,   475,   476,   477,   479,   478,   480,
+     480,   480,   480,   480,   482,   481,   484,   483,   486,   485,
+     488,   487,   490,   489,   492,   491,   493,   493,   494,   496,
+     495,   497,   497,   499,   498,   500,   500,   501,   501,   501,
+     501,   501,   501,   501,   502,   504,   503,   506,   505,   507,
+     507,   509,   508,   510,   510,   511,   511,   511,   511,   513,
+     512,   514,   515,   516
   };
 
   const unsigned char
@@ -4302,54 +4347,55 @@ namespace isc { namespace dhcp {
        3,     3,     3,     3,     0,     6,     0,     4,     1,     3,
        1,     1,     1,     1,     1,     0,     4,     3,     0,     6,
        0,     6,     1,     3,     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,     0,     4,     0,     4,
-       0,     6,     1,     3,     1,     1,     1,     1,     0,     6,
-       1,     3,     1,     1,     1,     1,     1,     0,     6,     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,     0,     4,     0,     4,     0,
-       4,     0,     4,     0,     4,     1,     1,     1,     3,     3,
-       0,     6,     0,     1,     1,     3,     0,     4,     1,     3,
+       1,     0,     4,     1,     1,     1,     1,     0,     4,     0,
+       4,     0,     4,     3,     0,     4,     3,     3,     3,     3,
+       3,     3,     3,     3,     0,     4,     0,     4,     0,     6,
+       1,     3,     1,     1,     1,     1,     0,     6,     1,     3,
+       1,     1,     1,     1,     1,     0,     6,     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,     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,     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,     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,     0,
-       4,     0,     6,     1,     3,     0,     4,     0,     1,     1,
-       3,     1,     1,     1,     1,     1,     1,     1,     0,     4,
-       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,     0,
-       4,     1,     3,     1,     1,     1,     1,     1,     1,     1,
+       4,     0,     4,     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,     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,     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,     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,
-       3,     0,     4,     0,     4,     3,     0,     4,     3,     3,
-       0,     4,     1,     1,     0,     4,     3,     3,     3,     0,
-       4,     1,     1,     1,     1,     1,     0,     4,     0,     4,
-       0,     4,     0,     4,     0,     6,     0,     4,     1,     3,
-       1,     0,     6,     1,     3,     0,     4,     1,     3,     1,
-       1,     1,     1,     1,     1,     1,     3,     0,     4,     0,
+       1,     0,     4,     0,     4,     0,     4,     0,     4,     0,
+       4,     0,     4,     0,     4,     0,     6,     0,     4,     0,
+       6,     1,     3,     0,     4,     0,     1,     1,     3,     1,
+       1,     1,     1,     1,     1,     1,     0,     4,     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,     0,     4,     1,
+       3,     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,     3,     0,     4,     1,
+       1,     1,     1,     1,     0,     4,     0,     4,     0,     4,
+       0,     4,     0,     6,     0,     4,     1,     3,     1,     0,
        6,     1,     3,     0,     4,     1,     3,     1,     1,     1,
-       1,     0,     4,     3,     3,     3
+       1,     1,     1,     1,     3,     0,     4,     0,     6,     1,
+       3,     0,     4,     1,     3,     1,     1,     1,     1,     0,
+       4,     3,     3,     3
   };
 
 
@@ -4366,42 +4412,43 @@ namespace isc { namespace dhcp {
   "\"mysql\"", "\"postgresql\"", "\"cql\"", "\"user\"", "\"password\"",
   "\"host\"", "\"port\"", "\"persist\"", "\"lfc-interval\"",
   "\"readonly\"", "\"connect-timeout\"", "\"contact-points\"",
-  "\"keyspace\"", "\"preferred-lifetime\"", "\"valid-lifetime\"",
-  "\"renew-timer\"", "\"rebind-timer\"", "\"decline-probation-period\"",
-  "\"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\"", "\"comment\"", "\"subnet\"", "\"interface\"",
-  "\"interface-id\"", "\"id\"", "\"rapid-commit\"", "\"reservation-mode\"",
-  "\"disabled\"", "\"out-of-pool\"", "\"all\"", "\"shared-networks\"",
-  "\"mac-sources\"", "\"relay-supplied-options\"",
-  "\"host-reservation-identifiers\"", "\"client-classes\"", "\"test\"",
-  "\"client-class\"", "\"reservations\"", "\"ip-addresses\"",
-  "\"prefixes\"", "\"duid\"", "\"hw-address\"", "\"hostname\"",
-  "\"flex-id\"", "\"relay\"", "\"ip-address\"", "\"hooks-libraries\"",
-  "\"library\"", "\"parameters\"", "\"expired-leases-processing\"",
-  "\"reclaim-timer-wait-time\"", "\"flush-reclaimed-timer-wait-time\"",
-  "\"hold-reclaimed-time\"", "\"max-reclaim-leases\"",
-  "\"max-reclaim-time\"", "\"unwarned-reclaim-cycles\"", "\"server-id\"",
-  "\"LLT\"", "\"EN\"", "\"LL\"", "\"identifier\"", "\"htype\"", "\"time\"",
-  "\"enterprise-id\"", "\"dhcp4o6-port\"", "\"control-socket\"",
-  "\"socket-type\"", "\"socket-name\"", "\"dhcp-ddns\"",
-  "\"enable-updates\"", "\"qualifying-suffix\"", "\"server-ip\"",
-  "\"server-port\"", "\"sender-ip\"", "\"sender-port\"",
-  "\"max-queue-size\"", "\"ncr-protocol\"", "\"ncr-format\"",
-  "\"always-include-fqdn\"", "\"override-no-update\"",
-  "\"override-client-update\"", "\"replace-client-name\"",
-  "\"generated-prefix\"", "\"UDP\"", "\"TCP\"", "\"JSON\"",
-  "\"when-present\"", "\"never\"", "\"always\"", "\"when-not-present\"",
-  "\"Logging\"", "\"loggers\"", "\"output_options\"", "\"output\"",
-  "\"debuglevel\"", "\"severity\"", "\"flush\"", "\"maxsize\"",
-  "\"maxver\"", "\"Dhcp4\"", "\"DhcpDdns\"", "\"Control-agent\"",
-  "TOPLEVEL_JSON", "TOPLEVEL_DHCP6", "SUB_DHCP6", "SUB_INTERFACES6",
-  "SUB_SUBNET6", "SUB_POOL6", "SUB_PD_POOL", "SUB_RESERVATION",
-  "SUB_OPTION_DEFS", "SUB_OPTION_DEF", "SUB_OPTION_DATA",
-  "SUB_HOOKS_LIBRARY", "SUB_DHCP_DDNS", "SUB_LOGGING",
+  "\"keyspace\"", "\"reconnect-wait-time\"", "\"request-timeout\"",
+  "\"tcp-keepalive\"", "\"tcp-nodelay\"", "\"preferred-lifetime\"",
+  "\"valid-lifetime\"", "\"renew-timer\"", "\"rebind-timer\"",
+  "\"decline-probation-period\"", "\"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\"",
+  "\"comment\"", "\"subnet\"", "\"interface\"", "\"interface-id\"",
+  "\"id\"", "\"rapid-commit\"", "\"reservation-mode\"", "\"disabled\"",
+  "\"out-of-pool\"", "\"all\"", "\"shared-networks\"", "\"mac-sources\"",
+  "\"relay-supplied-options\"", "\"host-reservation-identifiers\"",
+  "\"client-classes\"", "\"test\"", "\"client-class\"", "\"reservations\"",
+  "\"ip-addresses\"", "\"prefixes\"", "\"duid\"", "\"hw-address\"",
+  "\"hostname\"", "\"flex-id\"", "\"relay\"", "\"ip-address\"",
+  "\"hooks-libraries\"", "\"library\"", "\"parameters\"",
+  "\"expired-leases-processing\"", "\"reclaim-timer-wait-time\"",
+  "\"flush-reclaimed-timer-wait-time\"", "\"hold-reclaimed-time\"",
+  "\"max-reclaim-leases\"", "\"max-reclaim-time\"",
+  "\"unwarned-reclaim-cycles\"", "\"server-id\"", "\"LLT\"", "\"EN\"",
+  "\"LL\"", "\"identifier\"", "\"htype\"", "\"time\"", "\"enterprise-id\"",
+  "\"dhcp4o6-port\"", "\"control-socket\"", "\"socket-type\"",
+  "\"socket-name\"", "\"dhcp-ddns\"", "\"enable-updates\"",
+  "\"qualifying-suffix\"", "\"server-ip\"", "\"server-port\"",
+  "\"sender-ip\"", "\"sender-port\"", "\"max-queue-size\"",
+  "\"ncr-protocol\"", "\"ncr-format\"", "\"always-include-fqdn\"",
+  "\"override-no-update\"", "\"override-client-update\"",
+  "\"replace-client-name\"", "\"generated-prefix\"", "\"UDP\"", "\"TCP\"",
+  "\"JSON\"", "\"when-present\"", "\"never\"", "\"always\"",
+  "\"when-not-present\"", "\"Logging\"", "\"loggers\"",
+  "\"output_options\"", "\"output\"", "\"debuglevel\"", "\"severity\"",
+  "\"flush\"", "\"maxsize\"", "\"maxver\"", "\"Dhcp4\"", "\"DhcpDdns\"",
+  "\"Control-agent\"", "TOPLEVEL_JSON", "TOPLEVEL_DHCP6", "SUB_DHCP6",
+  "SUB_INTERFACES6", "SUB_SUBNET6", "SUB_POOL6", "SUB_PD_POOL",
+  "SUB_RESERVATION", "SUB_OPTION_DEFS", "SUB_OPTION_DEF",
+  "SUB_OPTION_DATA", "SUB_HOOKS_LIBRARY", "SUB_DHCP_DDNS", "SUB_LOGGING",
   "\"constant string\"", "\"integer\"", "\"floating point\"",
   "\"boolean\"", "$accept", "start", "$@1", "$@2", "$@3", "$@4", "$@5",
   "$@6", "$@7", "$@8", "$@9", "$@10", "$@11", "$@12", "$@13", "$@14",
@@ -4419,6 +4466,7 @@ namespace isc { namespace dhcp {
   "database_map_params", "database_map_param", "database_type", "$@26",
   "db_type", "user", "$@27", "password", "$@28", "host", "$@29", "port",
   "name", "$@30", "persist", "lfc_interval", "readonly", "connect_timeout",
+  "reconnect_wait_time", "request_timeout", "tcp_keepalive", "tcp_nodelay",
   "contact_points", "$@31", "keyspace", "$@32", "mac_sources", "$@33",
   "mac_sources_list", "mac_sources_value", "duid_id", "string_id",
   "host_reservation_identifiers", "$@34",
@@ -4494,67 +4542,68 @@ namespace isc { namespace dhcp {
   const unsigned short int
   Dhcp6Parser::yyrline_[] =
   {
-       0,   238,   238,   238,   239,   239,   240,   240,   241,   241,
-     242,   242,   243,   243,   244,   244,   245,   245,   246,   246,
-     247,   247,   248,   248,   249,   249,   250,   250,   251,   251,
-     259,   260,   261,   262,   263,   264,   265,   268,   273,   273,
-     284,   287,   288,   291,   295,   302,   302,   309,   310,   313,
-     317,   324,   324,   331,   332,   335,   339,   350,   360,   360,
-     375,   376,   380,   381,   382,   383,   384,   385,   388,   388,
-     403,   403,   412,   413,   418,   419,   420,   421,   422,   423,
-     424,   425,   426,   427,   428,   429,   430,   431,   432,   433,
-     434,   435,   436,   437,   438,   439,   440,   441,   442,   445,
-     450,   455,   460,   465,   470,   470,   481,   481,   490,   491,
-     494,   495,   496,   497,   498,   501,   501,   511,   517,   517,
-     529,   529,   541,   542,   545,   546,   547,   548,   549,   550,
-     551,   552,   553,   554,   555,   556,   557,   560,   560,   567,
-     568,   569,   570,   573,   573,   581,   581,   589,   589,   597,
-     602,   602,   610,   615,   620,   625,   630,   630,   638,   638,
-     647,   647,   657,   658,   661,   662,   665,   670,   675,   675,
-     685,   686,   689,   690,   691,   694,   699,   706,   706,   716,
-     716,   726,   727,   730,   731,   734,   734,   744,   744,   754,
-     755,   756,   759,   760,   763,   763,   771,   771,   779,   779,
-     790,   791,   794,   795,   796,   797,   798,   799,   802,   807,
-     812,   817,   822,   827,   835,   835,   848,   849,   852,   853,
-     860,   860,   886,   886,   897,   898,   902,   903,   904,   905,
-     906,   907,   908,   909,   910,   911,   912,   913,   914,   915,
-     916,   917,   918,   919,   920,   923,   923,   931,   931,   939,
-     939,   947,   947,   955,   955,   962,   963,   964,   967,   972,
-     980,   980,   991,   992,   996,   997,  1000,  1000,  1008,  1009,
-    1012,  1013,  1014,  1015,  1016,  1017,  1018,  1019,  1020,  1021,
-    1022,  1023,  1024,  1025,  1026,  1027,  1034,  1034,  1047,  1047,
-    1056,  1057,  1060,  1061,  1066,  1066,  1081,  1081,  1095,  1096,
-    1099,  1100,  1103,  1104,  1105,  1106,  1107,  1108,  1109,  1110,
-    1111,  1112,  1115,  1117,  1122,  1124,  1124,  1132,  1132,  1140,
-    1140,  1148,  1150,  1150,  1158,  1167,  1167,  1179,  1180,  1185,
-    1186,  1191,  1191,  1203,  1203,  1215,  1216,  1221,  1222,  1227,
-    1228,  1229,  1230,  1231,  1232,  1233,  1234,  1235,  1238,  1240,
-    1240,  1248,  1250,  1252,  1257,  1265,  1265,  1277,  1278,  1281,
-    1282,  1285,  1285,  1295,  1295,  1304,  1305,  1308,  1309,  1310,
-    1311,  1312,  1313,  1316,  1316,  1324,  1324,  1349,  1349,  1379,
-    1379,  1391,  1392,  1395,  1396,  1399,  1399,  1411,  1411,  1423,
-    1424,  1427,  1428,  1429,  1430,  1431,  1432,  1433,  1434,  1435,
-    1436,  1439,  1439,  1447,  1452,  1452,  1460,  1465,  1473,  1473,
-    1483,  1484,  1487,  1488,  1491,  1491,  1500,  1500,  1509,  1510,
-    1513,  1514,  1518,  1519,  1520,  1521,  1522,  1523,  1524,  1525,
-    1526,  1527,  1528,  1531,  1531,  1541,  1541,  1551,  1551,  1559,
-    1559,  1567,  1567,  1575,  1575,  1583,  1583,  1596,  1596,  1606,
-    1606,  1617,  1617,  1627,  1628,  1631,  1631,  1641,  1642,  1645,
-    1646,  1649,  1650,  1651,  1652,  1653,  1654,  1657,  1659,  1659,
-    1670,  1670,  1682,  1683,  1686,  1687,  1688,  1689,  1690,  1691,
-    1692,  1693,  1694,  1697,  1697,  1704,  1705,  1706,  1709,  1714,
-    1714,  1722,  1727,  1734,  1741,  1741,  1751,  1752,  1755,  1756,
-    1757,  1758,  1759,  1762,  1762,  1770,  1770,  1780,  1780,  1792,
-    1792,  1802,  1803,  1806,  1807,  1808,  1809,  1810,  1811,  1812,
-    1813,  1814,  1815,  1816,  1817,  1818,  1819,  1820,  1821,  1822,
-    1825,  1830,  1830,  1838,  1838,  1846,  1851,  1851,  1859,  1864,
-    1869,  1869,  1877,  1878,  1881,  1881,  1889,  1894,  1899,  1904,
-    1904,  1912,  1915,  1918,  1921,  1924,  1930,  1930,  1940,  1940,
-    1947,  1947,  1954,  1954,  1967,  1967,  1977,  1977,  1988,  1989,
-    1993,  1997,  1997,  2009,  2010,  2014,  2014,  2022,  2023,  2026,
-    2027,  2028,  2029,  2030,  2031,  2032,  2035,  2040,  2040,  2048,
-    2048,  2058,  2059,  2062,  2062,  2070,  2071,  2074,  2075,  2076,
-    2077,  2080,  2080,  2088,  2093,  2098
+       0,   242,   242,   242,   243,   243,   244,   244,   245,   245,
+     246,   246,   247,   247,   248,   248,   249,   249,   250,   250,
+     251,   251,   252,   252,   253,   253,   254,   254,   255,   255,
+     263,   264,   265,   266,   267,   268,   269,   272,   277,   277,
+     288,   291,   292,   295,   299,   306,   306,   313,   314,   317,
+     321,   328,   328,   335,   336,   339,   343,   354,   364,   364,
+     379,   380,   384,   385,   386,   387,   388,   389,   392,   392,
+     407,   407,   416,   417,   422,   423,   424,   425,   426,   427,
+     428,   429,   430,   431,   432,   433,   434,   435,   436,   437,
+     438,   439,   440,   441,   442,   443,   444,   445,   446,   449,
+     454,   459,   464,   469,   474,   474,   485,   485,   494,   495,
+     498,   499,   500,   501,   502,   505,   505,   515,   521,   521,
+     533,   533,   545,   546,   549,   550,   551,   552,   553,   554,
+     555,   556,   557,   558,   559,   560,   561,   562,   563,   564,
+     565,   568,   568,   575,   576,   577,   578,   581,   581,   589,
+     589,   597,   597,   605,   610,   610,   618,   623,   628,   633,
+     638,   643,   648,   653,   658,   658,   666,   666,   675,   675,
+     685,   686,   689,   690,   693,   698,   703,   703,   713,   714,
+     717,   718,   719,   722,   727,   734,   734,   744,   744,   754,
+     755,   758,   759,   762,   762,   772,   772,   782,   783,   784,
+     787,   788,   791,   791,   799,   799,   807,   807,   818,   819,
+     822,   823,   824,   825,   826,   827,   830,   835,   840,   845,
+     850,   855,   863,   863,   876,   877,   880,   881,   888,   888,
+     914,   914,   925,   926,   930,   931,   932,   933,   934,   935,
+     936,   937,   938,   939,   940,   941,   942,   943,   944,   945,
+     946,   947,   948,   951,   951,   959,   959,   967,   967,   975,
+     975,   983,   983,   990,   991,   992,   995,  1000,  1008,  1008,
+    1019,  1020,  1024,  1025,  1028,  1028,  1036,  1037,  1040,  1041,
+    1042,  1043,  1044,  1045,  1046,  1047,  1048,  1049,  1050,  1051,
+    1052,  1053,  1054,  1055,  1062,  1062,  1075,  1075,  1084,  1085,
+    1088,  1089,  1094,  1094,  1109,  1109,  1123,  1124,  1127,  1128,
+    1131,  1132,  1133,  1134,  1135,  1136,  1137,  1138,  1139,  1140,
+    1143,  1145,  1150,  1152,  1152,  1160,  1160,  1168,  1168,  1176,
+    1178,  1178,  1186,  1195,  1195,  1207,  1208,  1213,  1214,  1219,
+    1219,  1231,  1231,  1243,  1244,  1249,  1250,  1255,  1256,  1257,
+    1258,  1259,  1260,  1261,  1262,  1263,  1266,  1268,  1268,  1276,
+    1278,  1280,  1285,  1293,  1293,  1305,  1306,  1309,  1310,  1313,
+    1313,  1323,  1323,  1332,  1333,  1336,  1337,  1338,  1339,  1340,
+    1341,  1344,  1344,  1352,  1352,  1377,  1377,  1407,  1407,  1419,
+    1420,  1423,  1424,  1427,  1427,  1439,  1439,  1451,  1452,  1455,
+    1456,  1457,  1458,  1459,  1460,  1461,  1462,  1463,  1464,  1467,
+    1467,  1475,  1480,  1480,  1488,  1493,  1501,  1501,  1511,  1512,
+    1515,  1516,  1519,  1519,  1528,  1528,  1537,  1538,  1541,  1542,
+    1546,  1547,  1548,  1549,  1550,  1551,  1552,  1553,  1554,  1555,
+    1556,  1559,  1559,  1569,  1569,  1579,  1579,  1587,  1587,  1595,
+    1595,  1603,  1603,  1611,  1611,  1624,  1624,  1634,  1634,  1645,
+    1645,  1655,  1656,  1659,  1659,  1669,  1670,  1673,  1674,  1677,
+    1678,  1679,  1680,  1681,  1682,  1685,  1687,  1687,  1698,  1698,
+    1710,  1711,  1714,  1715,  1716,  1717,  1718,  1719,  1720,  1721,
+    1722,  1725,  1725,  1732,  1733,  1734,  1737,  1742,  1742,  1750,
+    1755,  1762,  1769,  1769,  1779,  1780,  1783,  1784,  1785,  1786,
+    1787,  1790,  1790,  1798,  1798,  1808,  1808,  1820,  1820,  1830,
+    1831,  1834,  1835,  1836,  1837,  1838,  1839,  1840,  1841,  1842,
+    1843,  1844,  1845,  1846,  1847,  1848,  1849,  1850,  1853,  1858,
+    1858,  1866,  1866,  1874,  1879,  1879,  1887,  1892,  1897,  1897,
+    1905,  1906,  1909,  1909,  1917,  1922,  1927,  1932,  1932,  1940,
+    1943,  1946,  1949,  1952,  1958,  1958,  1968,  1968,  1975,  1975,
+    1982,  1982,  1995,  1995,  2005,  2005,  2016,  2017,  2021,  2025,
+    2025,  2037,  2038,  2042,  2042,  2050,  2051,  2054,  2055,  2056,
+    2057,  2058,  2059,  2060,  2063,  2068,  2068,  2076,  2076,  2086,
+    2087,  2090,  2090,  2098,  2099,  2102,  2103,  2104,  2105,  2108,
+    2108,  2116,  2121,  2126
   };
 
   // Print the state stack on the debug stream.
@@ -4589,8 +4638,8 @@ namespace isc { namespace dhcp {
 
 #line 14 "dhcp6_parser.yy" // lalr1.cc:1167
 } } // isc::dhcp
-#line 4593 "dhcp6_parser.cc" // lalr1.cc:1167
-#line 2103 "dhcp6_parser.yy" // lalr1.cc:1168
+#line 4642 "dhcp6_parser.cc" // lalr1.cc:1167
+#line 2131 "dhcp6_parser.yy" // lalr1.cc:1168
 
 
 void
index 9634f42983df4c1b365c1a3ada5cc154292b42c7..0c16fd1e7000fa491f110e29ddf130a1997ea605 100644 (file)
@@ -375,132 +375,136 @@ namespace isc { namespace dhcp {
         TOKEN_CONNECT_TIMEOUT = 283,
         TOKEN_CONTACT_POINTS = 284,
         TOKEN_KEYSPACE = 285,
-        TOKEN_PREFERRED_LIFETIME = 286,
-        TOKEN_VALID_LIFETIME = 287,
-        TOKEN_RENEW_TIMER = 288,
-        TOKEN_REBIND_TIMER = 289,
-        TOKEN_DECLINE_PROBATION_PERIOD = 290,
-        TOKEN_SUBNET6 = 291,
-        TOKEN_OPTION_DEF = 292,
-        TOKEN_OPTION_DATA = 293,
-        TOKEN_NAME = 294,
-        TOKEN_DATA = 295,
-        TOKEN_CODE = 296,
-        TOKEN_SPACE = 297,
-        TOKEN_CSV_FORMAT = 298,
-        TOKEN_ALWAYS_SEND = 299,
-        TOKEN_RECORD_TYPES = 300,
-        TOKEN_ENCAPSULATE = 301,
-        TOKEN_ARRAY = 302,
-        TOKEN_POOLS = 303,
-        TOKEN_POOL = 304,
-        TOKEN_PD_POOLS = 305,
-        TOKEN_PREFIX = 306,
-        TOKEN_PREFIX_LEN = 307,
-        TOKEN_EXCLUDED_PREFIX = 308,
-        TOKEN_EXCLUDED_PREFIX_LEN = 309,
-        TOKEN_DELEGATED_LEN = 310,
-        TOKEN_USER_CONTEXT = 311,
-        TOKEN_COMMENT = 312,
-        TOKEN_SUBNET = 313,
-        TOKEN_INTERFACE = 314,
-        TOKEN_INTERFACE_ID = 315,
-        TOKEN_ID = 316,
-        TOKEN_RAPID_COMMIT = 317,
-        TOKEN_RESERVATION_MODE = 318,
-        TOKEN_DISABLED = 319,
-        TOKEN_OUT_OF_POOL = 320,
-        TOKEN_ALL = 321,
-        TOKEN_SHARED_NETWORKS = 322,
-        TOKEN_MAC_SOURCES = 323,
-        TOKEN_RELAY_SUPPLIED_OPTIONS = 324,
-        TOKEN_HOST_RESERVATION_IDENTIFIERS = 325,
-        TOKEN_CLIENT_CLASSES = 326,
-        TOKEN_TEST = 327,
-        TOKEN_CLIENT_CLASS = 328,
-        TOKEN_RESERVATIONS = 329,
-        TOKEN_IP_ADDRESSES = 330,
-        TOKEN_PREFIXES = 331,
-        TOKEN_DUID = 332,
-        TOKEN_HW_ADDRESS = 333,
-        TOKEN_HOSTNAME = 334,
-        TOKEN_FLEX_ID = 335,
-        TOKEN_RELAY = 336,
-        TOKEN_IP_ADDRESS = 337,
-        TOKEN_HOOKS_LIBRARIES = 338,
-        TOKEN_LIBRARY = 339,
-        TOKEN_PARAMETERS = 340,
-        TOKEN_EXPIRED_LEASES_PROCESSING = 341,
-        TOKEN_RECLAIM_TIMER_WAIT_TIME = 342,
-        TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 343,
-        TOKEN_HOLD_RECLAIMED_TIME = 344,
-        TOKEN_MAX_RECLAIM_LEASES = 345,
-        TOKEN_MAX_RECLAIM_TIME = 346,
-        TOKEN_UNWARNED_RECLAIM_CYCLES = 347,
-        TOKEN_SERVER_ID = 348,
-        TOKEN_LLT = 349,
-        TOKEN_EN = 350,
-        TOKEN_LL = 351,
-        TOKEN_IDENTIFIER = 352,
-        TOKEN_HTYPE = 353,
-        TOKEN_TIME = 354,
-        TOKEN_ENTERPRISE_ID = 355,
-        TOKEN_DHCP4O6_PORT = 356,
-        TOKEN_CONTROL_SOCKET = 357,
-        TOKEN_SOCKET_TYPE = 358,
-        TOKEN_SOCKET_NAME = 359,
-        TOKEN_DHCP_DDNS = 360,
-        TOKEN_ENABLE_UPDATES = 361,
-        TOKEN_QUALIFYING_SUFFIX = 362,
-        TOKEN_SERVER_IP = 363,
-        TOKEN_SERVER_PORT = 364,
-        TOKEN_SENDER_IP = 365,
-        TOKEN_SENDER_PORT = 366,
-        TOKEN_MAX_QUEUE_SIZE = 367,
-        TOKEN_NCR_PROTOCOL = 368,
-        TOKEN_NCR_FORMAT = 369,
-        TOKEN_ALWAYS_INCLUDE_FQDN = 370,
-        TOKEN_OVERRIDE_NO_UPDATE = 371,
-        TOKEN_OVERRIDE_CLIENT_UPDATE = 372,
-        TOKEN_REPLACE_CLIENT_NAME = 373,
-        TOKEN_GENERATED_PREFIX = 374,
-        TOKEN_UDP = 375,
-        TOKEN_TCP = 376,
-        TOKEN_JSON = 377,
-        TOKEN_WHEN_PRESENT = 378,
-        TOKEN_NEVER = 379,
-        TOKEN_ALWAYS = 380,
-        TOKEN_WHEN_NOT_PRESENT = 381,
-        TOKEN_LOGGING = 382,
-        TOKEN_LOGGERS = 383,
-        TOKEN_OUTPUT_OPTIONS = 384,
-        TOKEN_OUTPUT = 385,
-        TOKEN_DEBUGLEVEL = 386,
-        TOKEN_SEVERITY = 387,
-        TOKEN_FLUSH = 388,
-        TOKEN_MAXSIZE = 389,
-        TOKEN_MAXVER = 390,
-        TOKEN_DHCP4 = 391,
-        TOKEN_DHCPDDNS = 392,
-        TOKEN_CONTROL_AGENT = 393,
-        TOKEN_TOPLEVEL_JSON = 394,
-        TOKEN_TOPLEVEL_DHCP6 = 395,
-        TOKEN_SUB_DHCP6 = 396,
-        TOKEN_SUB_INTERFACES6 = 397,
-        TOKEN_SUB_SUBNET6 = 398,
-        TOKEN_SUB_POOL6 = 399,
-        TOKEN_SUB_PD_POOL = 400,
-        TOKEN_SUB_RESERVATION = 401,
-        TOKEN_SUB_OPTION_DEFS = 402,
-        TOKEN_SUB_OPTION_DEF = 403,
-        TOKEN_SUB_OPTION_DATA = 404,
-        TOKEN_SUB_HOOKS_LIBRARY = 405,
-        TOKEN_SUB_DHCP_DDNS = 406,
-        TOKEN_SUB_LOGGING = 407,
-        TOKEN_STRING = 408,
-        TOKEN_INTEGER = 409,
-        TOKEN_FLOAT = 410,
-        TOKEN_BOOLEAN = 411
+        TOKEN_RECONNECT_WAIT_TIME = 286,
+        TOKEN_REQUEST_TIMEOUT = 287,
+        TOKEN_TCP_KEEPALIVE = 288,
+        TOKEN_TCP_NODELAY = 289,
+        TOKEN_PREFERRED_LIFETIME = 290,
+        TOKEN_VALID_LIFETIME = 291,
+        TOKEN_RENEW_TIMER = 292,
+        TOKEN_REBIND_TIMER = 293,
+        TOKEN_DECLINE_PROBATION_PERIOD = 294,
+        TOKEN_SUBNET6 = 295,
+        TOKEN_OPTION_DEF = 296,
+        TOKEN_OPTION_DATA = 297,
+        TOKEN_NAME = 298,
+        TOKEN_DATA = 299,
+        TOKEN_CODE = 300,
+        TOKEN_SPACE = 301,
+        TOKEN_CSV_FORMAT = 302,
+        TOKEN_ALWAYS_SEND = 303,
+        TOKEN_RECORD_TYPES = 304,
+        TOKEN_ENCAPSULATE = 305,
+        TOKEN_ARRAY = 306,
+        TOKEN_POOLS = 307,
+        TOKEN_POOL = 308,
+        TOKEN_PD_POOLS = 309,
+        TOKEN_PREFIX = 310,
+        TOKEN_PREFIX_LEN = 311,
+        TOKEN_EXCLUDED_PREFIX = 312,
+        TOKEN_EXCLUDED_PREFIX_LEN = 313,
+        TOKEN_DELEGATED_LEN = 314,
+        TOKEN_USER_CONTEXT = 315,
+        TOKEN_COMMENT = 316,
+        TOKEN_SUBNET = 317,
+        TOKEN_INTERFACE = 318,
+        TOKEN_INTERFACE_ID = 319,
+        TOKEN_ID = 320,
+        TOKEN_RAPID_COMMIT = 321,
+        TOKEN_RESERVATION_MODE = 322,
+        TOKEN_DISABLED = 323,
+        TOKEN_OUT_OF_POOL = 324,
+        TOKEN_ALL = 325,
+        TOKEN_SHARED_NETWORKS = 326,
+        TOKEN_MAC_SOURCES = 327,
+        TOKEN_RELAY_SUPPLIED_OPTIONS = 328,
+        TOKEN_HOST_RESERVATION_IDENTIFIERS = 329,
+        TOKEN_CLIENT_CLASSES = 330,
+        TOKEN_TEST = 331,
+        TOKEN_CLIENT_CLASS = 332,
+        TOKEN_RESERVATIONS = 333,
+        TOKEN_IP_ADDRESSES = 334,
+        TOKEN_PREFIXES = 335,
+        TOKEN_DUID = 336,
+        TOKEN_HW_ADDRESS = 337,
+        TOKEN_HOSTNAME = 338,
+        TOKEN_FLEX_ID = 339,
+        TOKEN_RELAY = 340,
+        TOKEN_IP_ADDRESS = 341,
+        TOKEN_HOOKS_LIBRARIES = 342,
+        TOKEN_LIBRARY = 343,
+        TOKEN_PARAMETERS = 344,
+        TOKEN_EXPIRED_LEASES_PROCESSING = 345,
+        TOKEN_RECLAIM_TIMER_WAIT_TIME = 346,
+        TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 347,
+        TOKEN_HOLD_RECLAIMED_TIME = 348,
+        TOKEN_MAX_RECLAIM_LEASES = 349,
+        TOKEN_MAX_RECLAIM_TIME = 350,
+        TOKEN_UNWARNED_RECLAIM_CYCLES = 351,
+        TOKEN_SERVER_ID = 352,
+        TOKEN_LLT = 353,
+        TOKEN_EN = 354,
+        TOKEN_LL = 355,
+        TOKEN_IDENTIFIER = 356,
+        TOKEN_HTYPE = 357,
+        TOKEN_TIME = 358,
+        TOKEN_ENTERPRISE_ID = 359,
+        TOKEN_DHCP4O6_PORT = 360,
+        TOKEN_CONTROL_SOCKET = 361,
+        TOKEN_SOCKET_TYPE = 362,
+        TOKEN_SOCKET_NAME = 363,
+        TOKEN_DHCP_DDNS = 364,
+        TOKEN_ENABLE_UPDATES = 365,
+        TOKEN_QUALIFYING_SUFFIX = 366,
+        TOKEN_SERVER_IP = 367,
+        TOKEN_SERVER_PORT = 368,
+        TOKEN_SENDER_IP = 369,
+        TOKEN_SENDER_PORT = 370,
+        TOKEN_MAX_QUEUE_SIZE = 371,
+        TOKEN_NCR_PROTOCOL = 372,
+        TOKEN_NCR_FORMAT = 373,
+        TOKEN_ALWAYS_INCLUDE_FQDN = 374,
+        TOKEN_OVERRIDE_NO_UPDATE = 375,
+        TOKEN_OVERRIDE_CLIENT_UPDATE = 376,
+        TOKEN_REPLACE_CLIENT_NAME = 377,
+        TOKEN_GENERATED_PREFIX = 378,
+        TOKEN_UDP = 379,
+        TOKEN_TCP = 380,
+        TOKEN_JSON = 381,
+        TOKEN_WHEN_PRESENT = 382,
+        TOKEN_NEVER = 383,
+        TOKEN_ALWAYS = 384,
+        TOKEN_WHEN_NOT_PRESENT = 385,
+        TOKEN_LOGGING = 386,
+        TOKEN_LOGGERS = 387,
+        TOKEN_OUTPUT_OPTIONS = 388,
+        TOKEN_OUTPUT = 389,
+        TOKEN_DEBUGLEVEL = 390,
+        TOKEN_SEVERITY = 391,
+        TOKEN_FLUSH = 392,
+        TOKEN_MAXSIZE = 393,
+        TOKEN_MAXVER = 394,
+        TOKEN_DHCP4 = 395,
+        TOKEN_DHCPDDNS = 396,
+        TOKEN_CONTROL_AGENT = 397,
+        TOKEN_TOPLEVEL_JSON = 398,
+        TOKEN_TOPLEVEL_DHCP6 = 399,
+        TOKEN_SUB_DHCP6 = 400,
+        TOKEN_SUB_INTERFACES6 = 401,
+        TOKEN_SUB_SUBNET6 = 402,
+        TOKEN_SUB_POOL6 = 403,
+        TOKEN_SUB_PD_POOL = 404,
+        TOKEN_SUB_RESERVATION = 405,
+        TOKEN_SUB_OPTION_DEFS = 406,
+        TOKEN_SUB_OPTION_DEF = 407,
+        TOKEN_SUB_OPTION_DATA = 408,
+        TOKEN_SUB_HOOKS_LIBRARY = 409,
+        TOKEN_SUB_DHCP_DDNS = 410,
+        TOKEN_SUB_LOGGING = 411,
+        TOKEN_STRING = 412,
+        TOKEN_INTEGER = 413,
+        TOKEN_FLOAT = 414,
+        TOKEN_BOOLEAN = 415
       };
     };
 
@@ -731,6 +735,22 @@ namespace isc { namespace dhcp {
     symbol_type
     make_KEYSPACE (const location_type& l);
 
+    static inline
+    symbol_type
+    make_RECONNECT_WAIT_TIME (const location_type& l);
+
+    static inline
+    symbol_type
+    make_REQUEST_TIMEOUT (const location_type& l);
+
+    static inline
+    symbol_type
+    make_TCP_KEEPALIVE (const location_type& l);
+
+    static inline
+    symbol_type
+    make_TCP_NODELAY (const location_type& l);
+
     static inline
     symbol_type
     make_PREFERRED_LIFETIME (const location_type& l);
@@ -1440,12 +1460,12 @@ namespace isc { namespace dhcp {
     enum
     {
       yyeof_ = 0,
-      yylast_ = 931,     ///< Last index in yytable_.
-      yynnts_ = 352,  ///< Number of nonterminal symbols.
+      yylast_ = 947,     ///< Last index in yytable_.
+      yynnts_ = 356,  ///< Number of nonterminal symbols.
       yyfinal_ = 30, ///< Termination state number.
       yyterror_ = 1,
       yyerrcode_ = 256,
-      yyntokens_ = 157  ///< Number of tokens.
+      yyntokens_ = 161  ///< Number of tokens.
     };
 
 
@@ -1503,9 +1523,9 @@ namespace isc { namespace dhcp {
      125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
      135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
      145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
-     155,   156
+     155,   156,   157,   158,   159,   160
     };
-    const unsigned int user_token_number_max_ = 411;
+    const unsigned int user_token_number_max_ = 415;
     const token_number_type undef_token_ = 2;
 
     if (static_cast<int>(t) <= yyeof_)
@@ -1538,29 +1558,29 @@ namespace isc { namespace dhcp {
   {
       switch (other.type_get ())
     {
-      case 173: // value
-      case 177: // map_value
-      case 221: // db_type
-      case 297: // hr_mode
-      case 431: // duid_type
-      case 464: // ncr_protocol_value
-      case 472: // replace_client_name_value
+      case 177: // value
+      case 181: // map_value
+      case 225: // db_type
+      case 305: // hr_mode
+      case 439: // duid_type
+      case 472: // ncr_protocol_value
+      case 480: // replace_client_name_value
         value.copy< ElementPtr > (other.value);
         break;
 
-      case 156: // "boolean"
+      case 160: // "boolean"
         value.copy< bool > (other.value);
         break;
 
-      case 155: // "floating point"
+      case 159: // "floating point"
         value.copy< double > (other.value);
         break;
 
-      case 154: // "integer"
+      case 158: // "integer"
         value.copy< int64_t > (other.value);
         break;
 
-      case 153: // "constant string"
+      case 157: // "constant string"
         value.copy< std::string > (other.value);
         break;
 
@@ -1581,29 +1601,29 @@ namespace isc { namespace dhcp {
     (void) v;
       switch (this->type_get ())
     {
-      case 173: // value
-      case 177: // map_value
-      case 221: // db_type
-      case 297: // hr_mode
-      case 431: // duid_type
-      case 464: // ncr_protocol_value
-      case 472: // replace_client_name_value
+      case 177: // value
+      case 181: // map_value
+      case 225: // db_type
+      case 305: // hr_mode
+      case 439: // duid_type
+      case 472: // ncr_protocol_value
+      case 480: // replace_client_name_value
         value.copy< ElementPtr > (v);
         break;
 
-      case 156: // "boolean"
+      case 160: // "boolean"
         value.copy< bool > (v);
         break;
 
-      case 155: // "floating point"
+      case 159: // "floating point"
         value.copy< double > (v);
         break;
 
-      case 154: // "integer"
+      case 158: // "integer"
         value.copy< int64_t > (v);
         break;
 
-      case 153: // "constant string"
+      case 157: // "constant string"
         value.copy< std::string > (v);
         break;
 
@@ -1683,29 +1703,29 @@ namespace isc { namespace dhcp {
     // Type destructor.
     switch (yytype)
     {
-      case 173: // value
-      case 177: // map_value
-      case 221: // db_type
-      case 297: // hr_mode
-      case 431: // duid_type
-      case 464: // ncr_protocol_value
-      case 472: // replace_client_name_value
+      case 177: // value
+      case 181: // map_value
+      case 225: // db_type
+      case 305: // hr_mode
+      case 439: // duid_type
+      case 472: // ncr_protocol_value
+      case 480: // replace_client_name_value
         value.template destroy< ElementPtr > ();
         break;
 
-      case 156: // "boolean"
+      case 160: // "boolean"
         value.template destroy< bool > ();
         break;
 
-      case 155: // "floating point"
+      case 159: // "floating point"
         value.template destroy< double > ();
         break;
 
-      case 154: // "integer"
+      case 158: // "integer"
         value.template destroy< int64_t > ();
         break;
 
-      case 153: // "constant string"
+      case 157: // "constant string"
         value.template destroy< std::string > ();
         break;
 
@@ -1732,29 +1752,29 @@ namespace isc { namespace dhcp {
     super_type::move(s);
       switch (this->type_get ())
     {
-      case 173: // value
-      case 177: // map_value
-      case 221: // db_type
-      case 297: // hr_mode
-      case 431: // duid_type
-      case 464: // ncr_protocol_value
-      case 472: // replace_client_name_value
+      case 177: // value
+      case 181: // map_value
+      case 225: // db_type
+      case 305: // hr_mode
+      case 439: // duid_type
+      case 472: // ncr_protocol_value
+      case 480: // replace_client_name_value
         value.move< ElementPtr > (s.value);
         break;
 
-      case 156: // "boolean"
+      case 160: // "boolean"
         value.move< bool > (s.value);
         break;
 
-      case 155: // "floating point"
+      case 159: // "floating point"
         value.move< double > (s.value);
         break;
 
-      case 154: // "integer"
+      case 158: // "integer"
         value.move< int64_t > (s.value);
         break;
 
-      case 153: // "constant string"
+      case 157: // "constant string"
         value.move< std::string > (s.value);
         break;
 
@@ -1828,7 +1848,8 @@ namespace isc { namespace dhcp {
      375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
      385,   386,   387,   388,   389,   390,   391,   392,   393,   394,
      395,   396,   397,   398,   399,   400,   401,   402,   403,   404,
-     405,   406,   407,   408,   409,   410,   411
+     405,   406,   407,   408,   409,   410,   411,   412,   413,   414,
+     415
     };
     return static_cast<token_type> (yytoken_number_[type]);
   }
@@ -2007,6 +2028,30 @@ namespace isc { namespace dhcp {
     return symbol_type (token::TOKEN_KEYSPACE, l);
   }
 
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_RECONNECT_WAIT_TIME (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_RECONNECT_WAIT_TIME, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_REQUEST_TIMEOUT (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_REQUEST_TIMEOUT, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_TCP_KEEPALIVE (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_TCP_KEEPALIVE, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_TCP_NODELAY (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_TCP_NODELAY, l);
+  }
+
   Dhcp6Parser::symbol_type
   Dhcp6Parser::make_PREFERRED_LIFETIME (const location_type& l)
   {
@@ -2766,7 +2811,7 @@ namespace isc { namespace dhcp {
 
 #line 14 "dhcp6_parser.yy" // lalr1.cc:377
 } } // isc::dhcp
-#line 2770 "dhcp6_parser.h" // lalr1.cc:377
+#line 2815 "dhcp6_parser.h" // lalr1.cc:377